1 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:26:33 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.6 の使用を強くお勧めします】 関連スレやURLは>>2-8 あたりを見てください。Ruby on Railsの質問はRailsスレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
652 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 01:36:18 ] open-uri を使って ftp にアクセスしたい。 require 'open-uri' uri = URI.parse("ftp://hogehoge.com/bar/") uri.user = 'foo' uri.password = "fu/ha" でエラー。uri/generic.rb の USERINFO(Regexp) が /^(?:[-_.!~*'()a-zA-Z\d;:&=+$,]|%[a-fA-F\d]{2})*$/n になっているのが原因で パスワードに '/' を含む事が出来ない。 URI.escape(password) をしても '/' はエンコードされず。 何か策はないでしょうか? (パスワードは変更できない) open(uri) の uri にパスワードを含めれないのか? net/ftp を使えばログイン出来るのだが、やりたいのは、 Pathname を使って ディレクトリを掘りながら put をしたい。
653 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 01:54:51 ] URI::USERINFO= /^(?:[-_.!~*'()a-zA-Z\d;:&=+$,\/]|%[a-fA-F\d]{2})*$/n とか
654 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 02:11:13 ] まあ基本的には無理だな 自前で書き換えるしかないわ スラッシュって含むことできたっけ?
655 名前:652 mailto:sage [2008/05/25(日) 02:44:45 ] >>653 素敵。 しかし別の新たなエラーが。もう少し調べます。(そもそも 掘って put は出来るのか?) ありがとうございます。
656 名前:652 mailto:sage [2008/05/25(日) 02:57:43 ] わかった。open-uri は ファイルを扱うものなのか。 ディレクトリは扱えないのか。 失礼しました。
657 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 04:48:04 ] まつもとゆきひろがB型肝炎に感染 mamono.2ch.net/test/read.cgi/newsplus/1211364904/
658 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:24:45 ] 質問です。 #!/usr/local/bin/ruby print "Content-type: text/html\n\n" print "<html><body>Hello World</body></html>" この内容の.cgiファイルを land.to/newshiyou.php このレンタルサーバーにアップしたのですが。 500内部サーバエラーになってしまいます。 なぜなのでしょうか?どうすれば動かせるのでしょうか? 回答よろしくお願いします。
659 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:35:52 ] エラーメッセージの意味がわからんです おしえてエロイひと c:/ruby/lib/ruby/1.8/xmlrpc/parser.rb:152:in `fault': wrong fault-structure: {"f aultCode"=>"Client", "faultString"=>"Application failed during request deseriali zation: \nnot well-formed (invalid token) at line 6, column 345, byte 3640 at /h ome/seesaa/cpan/lib/i686-linux-thread-multi/XML/Parser.pm line 187\n"} (RuntimeE rror)
660 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:52:12 ] >>659 文字コードの知識もないspamブロガーさんこんにちは
661 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:56:29 ] >>660 そう見えるよなあ 投稿スクリプトをサンプルとして提供するのは止めたほうがいいと思うぞ で、まあ、seesaaはShift_JISだったはずなのでShift_JISで送れ
662 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:07:16 ] >>658 CGIファイルのパーミッションを実行可能に変更していないのだと予想
663 名前:658 mailto:sage [2008/05/25(日) 16:41:39 ] 解決しました。 ありがとうございました。
664 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 17:38:53 ] 【プログラム】 #! ruby -Ks class Ice def sizeIce(size) print(size) end end class IceName < Ice def initialize(name="未設定") @iceName = name end attr_accessor :iceName end class IceSize < Ice def initialize(size="未設定") @iceSize = size end def sizeIce(size) super(size) print("サイズです。\n") end attr_accessor :iceSize end ice = [IceName.new("メロンソーダ"),IceName.new("レモン&ライム"),IceName.new("スイカバー")] ice2 = [IceSize.new("中"),IceSize.new("小"),IceSize.new("大")] for k in 0..ice.size-1 print(k+1,"個目 ",ice[k].iceName,"は",ice2[k].sizeIce(ice2[k].iceSize)) end
665 名前:664 mailto:sage [2008/05/25(日) 17:44:59 ] 【表示される結果】 中サイズです。 1個目 メロンソーダはnil小サイズです。 2個目 レモン&ライムはnil大サイズです。 3個目 スイカバーはnil 【表示したい結果】 1個目 メロンソーダは小サイズです。 2個目 レモン&ライムは大サイズです。 3個目 スイカバーは中サイズです。 昨日からrubyの勉強を始めました。 初めてのプログラミングなので、わからないことが多々あり苦戦しております・・・。 上記のプログラムを実行するとエラー等は出ないのですが、表示結果が思い通りになりません。 なぜ一番最初に「中サイズです。」が表示されるのかすら理解できません。 一体どの部分に問題があるのでしょうか? わかりにくいプログラムだとは思いますが、もしよろしければ回答お願いします。 ※このプログラムは、練習目的で作っているのでわざわざ面倒なことをしています。
666 名前:664 mailto:sage [2008/05/25(日) 17:46:44 ] 訂正 【表示したい結果】 1個目 メロンソーダは中サイズです。 2個目 レモン&ライムは小サイズです。 3個目 スイカバーは大サイズです。 でした。すいません。
667 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 17:59:29 ] (半分ほど作り変えた時点で悩む) あー、まあいいや print は引数をその場で画面に表示し、返り値として nil を返す 表示部とデータ部を完全に分けて考えるべき 最終的なデータを最後に print で表示するだけ、という考え方な Ice.sizeIce で print を使っているのはよくない
668 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 18:16:52 ] てゆーか、継承の考え方がおーざっぱに間違ってね? 「アイスの価格」が「アイス」というクラスを継承するはずがない 「アイスの名前」や「アイスの価格」は「アイス」というクラスの変数であるべき class Ice def initialize(name=nil, size=nil) @name = name @size = name end attr_accessor :name, :size end data = [ ["メロンソーダ","中"], ["レモン&ライム", "小"], ["スイカバー", "大"] ] products = Array.new data.each do |a| products.push(Ice.new(a[0], a[1])) end products.each_with_index do |ice, i| puts "#{i+1}個目 #{ice.name}は#{ice.size}サイズです" end
669 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 18:22:51 ] 抽象的に「アイス」があって、 「価格のあるアイス」とか「サイズのあるアイス」とか「価格とサイズのあるアイス」と 具体化...と考えているのかもしれないが、そういう継承の使い方はあっさり破綻するので やめたほうがよい。 まずは合言葉「継承は最後の武器だ」かと。
670 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 18:34:03 ] >>664 k == 0 の時の出力 中サイズです。 1個目 メロンソーダはnil k == 1 の時の出力(最初の行は↑の行に続けて出力) 小サイズです。 2個目 レモン&ライムはnil k == 2 の時の出力(は省略) 「?サイズです。」はice2[k].sizeIce(...)メソッド実行時の出力 「?個目 ***はnil」がループ内のprintの出力 最後のnilはice2[k].sizeIce(...)の返却値 # sizeIce(...)最後のprintの返却値 # k== 0 の時 print(1,"個目 ","メロンソーダ","は",nil) になっている 問題は「経験が足りない」事 もっとたくさんソースを書いて実行してデバッグすれ
671 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 18:42:30 ] マニュアルには「返り値」「戻り値」があるけど「返却値」はないな …なんで2種類あるんだ マニュアルくらいどっちかに統一せえ
672 名前:664 mailto:sage [2008/05/25(日) 18:53:18 ] >>667-670 レスありがとうございます。 どうやら自分の言葉足らずだったようです。 現在こちらのサイトさん(www.rubylife.jp/index.html )のRuby入門というところを一番上から進めています。 現在は「Rubyオブジェクト指向プログラミング」の「クラスの継承」の部分まで読み終えています。 ひとつの項目が終わるごとに、その項目で覚えたメソッド等を使ってプログラムを作る練習をしているのです。 なので今回は「クラスの継承」「オーバーライド」「super(引数)」の3つを使ったものを作ろうとしていました。 ・・・と自分で考えたらあんな感じになってしまったのですが、このような使い方はそもそもおかしいようですね。 色々混ぜすぎて自分でも分けがわからなくなってましたし。 次回からはもっと処理を個別に分けてプログラミングするように心がけます。 クラスの継承は結構重要そうな感じだけど、実際はそこまで実用性があるわけじゃないのかな・・・。 一番最初に「中サイズです。」が出てきてしまう理由や、「nil」が表示される問題などは解決しました。 >>668 さんのような配列の書き方は非常にわかりやすい・・・次からはこのように表記したいと思います。 大変わかりやすく解説していただきありがとうございました。
673 名前:デフォルトの名無しさん [2008/05/25(日) 20:35:05 ] すみません、マニュアルみたりしてるんですが、見落としてるのか分からないので、教えてください。 クラスの定義の中にたまに、「:」がでてくるんですが、:の意味を教えてください。 たとえば、 Railsだと、「t.string :title」な表現があったり、 インスタンス変数のアクセサを作るときは、「attr_accessor :x, :y」とかしますよね。 この:の意味が掴めないですorz class CreateArticles < ActiveRecord::Migration def self.up create_table :articles do |t| t.string :title t.text :description t.string :image_url t.decimal :price t.datetime :date t.string :vender t.string :category t.timestamps end end def self.down drop_table :articles end end
674 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:41:49 ] それはシンボルというものだ
675 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 21:18:50 ] というか、Symbol クラスのインスタンスだと説明したほうがいいかも Rubyのメソッド名や変数名は内部的に数値で管理されてる (2455番目に登録されたメソッド、とかそんな感じで、オブジェクトIDとは別物) シンボルは、その数値に文字でアクセスすることができる機構だ 結果として、「文字」でメソッド自体を指し示すことができる 普通に foo と書いたら foo メソッドが動いてしまって「foo というメソッド」を指し示すことができない しかし、そのとき「メソッド foo を示す登録番号」という指定の仕方ができるとしたら、「foo というメソッド」という指定の仕方ができる 腹減ってるので自分でも何書いてるかわからなくなってきた 試しに適当な変数作って、それと同じ名前のシンボルに to_i してみ それが内部整数値だ シンボルを id2name するとシンボルに対応する文字列が返る 時々「シンボルを文字列にする」という表現で説明されるがこれは本当は誤り
676 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 21:26:03 ] 余計わからなくなるので>>675 は読まなくてよし もう遅いかもしれんが
677 名前:デフォルトの名無しさん [2008/05/25(日) 21:31:28 ] >>674 >>675 さきほど、rubyの公式にアクセスできたので、FAQ見てたらシンボルということは分かったところで、余計に理解に苦しんでましたが、、、 >>普通に foo と書いたら foo メソッドが動いてしまって「foo というメソッド」を指し示すことができない >>しかし、そのとき「メソッド foo を示す登録番号」という指定の仕方ができるとしたら、「foo というメソッド」という指定の仕方ができる 神レスありがとうございました!よく分かりました!!
678 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 10:28:13 ] www.ruby-lang.org/ が落ちているような。
679 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 10:32:27 ] 500とかはいつものことだろ、と思ったが router2.netlab.jp で止まっててアクセス自体ができないな
680 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 17:39:26 ] SymbolとStringの違いは「優しいRailsの育て方」本が一番わかりやすかったな。 あのキモいアイドルAAを我慢できればの話だけど。
681 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 20:55:34 ] Rubyで作成したGUI上で動くちょっとしたソフトウェアを windowsクライアントに配布して利用してもらいたいとき、 クライアントのPCにもRubyをインストールしておかないと 実行できないでしょうか?
682 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:04:09 ] >>681 exerbでぐぐってみるとか。
683 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:05:54 ] Ruby/Tk以外で作らないと駄目だな
684 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:18:10 ] >>682 、683 exerbを利用すればいいのですか。 新しいツールは、勉強もかねてRubyで作ることにします。 さっそく、本を買いに行ってきます。 レスありがとうございました。
685 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:20:38 ] rubyscript2exeもどうぞ。
686 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:26:22 ] おいおい、Rubyで自分以外のためにGUIツールを作るなんてアホのすることだぞ 渡されたほうも迷惑だからそういうことはやるな
687 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:37:59 ] じゃあ、何で書くのがいいのさ? C#とか?
688 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:47:19 ] うん、あのね、どうやら 「もともとのGUI対応」 「付け足しのGUI対応」 の区別がつかないらしいんだ、初心者の人
689 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:55:42 ] そんなにも区別すべきなのか、というのも興味深い問題だと思うぜ まあ、とってつけたGUIシステムで火傷したことがある人ばかりだから不評なんだけどさ
690 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 12:27:50 ] Winで動かす物はMSの道具立てでやった方が、楽だし誤解や面倒ごとも少ないのは確かだしな まあ仕方ないさ
691 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 13:10:52 ] これはどういったプロジェクトなのでしょうか? ttp://raa.ruby-lang.org/project/ghdghdgh/
692 名前:デフォルトの名無しさん [2008/05/27(火) 15:14:16 ] 一行が長くなって読みにくい場合、改行したくなるのですが、 どうしたらイイですか?
693 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:19:21 ] >>692 改行すればいいじゃん? バックスラッシュ \ を使えば改行を隠すことができる 他にも「区切れのいいところ」で普通に改行することもできるが、 このへんは他の人のスクリプトを読んで参考にするといい
694 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:00:06 ] 動的メソッドって?
695 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:09:56 ] Rubyの奥義のひとつ(いやRuby以外でもできるけど) 動的に定義されて動的に実行されるメソッドの8割は本当は静的でもなんとかなる
696 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:56:33 ] 実行するまで在るか無いかわからないってこと?
697 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:02:04 ] マクロの代わりに使う例も多いと思う。
698 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:13:30 ] まるごとRuby!のVol.1を眺める ttp://www.amazon.co.jp/dp/4844325795/ …endの連続はLispの閉じカッコの連続っぽくね?というのは それはそれでヒドいと思う 現時点でのRubyの紙媒体のまとまった情報が欲しい人向け スレ的にはちと情報が重いか
699 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:37:44 ] Railsレシピブックのほうに目が行ってしまった
700 名前:デフォルトの名無しさん [2008/05/30(金) 18:24:17 ] #!/usr/bin/env ruby -Ku とファイルの先頭に書いて実行すると、 env: ruby -Ku: No such file or directory と言われてしまいます。 envで-Kuをつけたいのですが、 言われないようにする方法はどのようなものがありますでしょうか? 環境は FreeBSD 6.1-RELEASE-p23 です。
701 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 18:52:34 ] 基本的には小手先では無理 env コマンドは複数の引数をうまく受け取ることを期待できないし、環境によっても動作が違う たとえば、その記述は同じ FreeBSD の 5.x では期待通りに動作する
702 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 18:56:33 ] いやenvがどうこうというよりカーネルが…
703 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 18:59:33 ] あ、どうするかだっけ #!/usr/local/bin/ruby -Ku と書くこと ダウンロードして即実行できないことについて文句言う的外れのアホは無視 実行するスクリプト内容を確認しないような人間をユーザーに引き込むと後々癌になるぞ で、自前で複数環境で使いたい、という場合が問題なんだが
704 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:20:38 ] >>700 shebang行(#! で始まる)に渡せる引数は1つ、という実装が多いから無難なのは、 #!/usr/bin/env ruby $KCODE='u'
705 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:32:52 ] ruby -Ku と $KCODE='u' はカレーとウンコくらい違う ちなみに Ruby1.9 ではカレーとウンコが同じになった
706 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:37:32 ] >>705 あれ? $KCODEは無視されるんじゃなかったか?
707 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:45:49 ] warning: variable $KCODE is no longer effective; 値を参照しても代入しても常に nil という頑なな感じの動作
708 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:48:01 ] end end end end ))))
709 名前:700 [2008/05/31(土) 04:50:05 ] 調べたらFAQ的な質問みたいですね。 解決法 ・フルパスでrubyのパス記述 >>703 ・$KCODEで指定 >>704 パス関係なくするためにenvにしたかったけど、意味ないなあw ところで、$KCODEで指定する場合は、 ファイルが本当にUTF-8の文字列(例えば日本語)を含んでいても大丈夫なんでしょうか?
710 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 06:05:04 ] 大丈夫
711 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 06:11:40 ] >>686 普通に喜ばれたけどw
712 名前:700 [2008/05/31(土) 06:33:23 ] >>710 ありがとうございます。 では、ちょっとずれてくるのですが、>>705 の > ruby -Ku と $KCODE='u' はカレーとウンコくらい違う というのはどういう違いなのでしょうか? どこかに簡単な解説などないでしょうか?
713 名前:700 [2008/05/31(土) 06:34:05 ] いえ、気になったというより、変なところでハマりたくないので知っておきたい、 といった理由からです。
714 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 09:00:31 ] >>709 大丈夫じゃない場合がある リファレンスマニュアルにも記述があるけど $KCODEの指定が効いてくるのは、$KCODEへの代入が実行された後なので 最初に読むファイルに日本語が含まれていると、パースエラーになることがある 詳しくはFAQの10.2 ttp://www.ruby-lang.org/ja/man/html/FAQ_C6FCCBDCB8ECA4CEBCE8A4EAB0B7A4A4.html
715 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 13:57:32 ] 問題になることがあるのはShift_JISの場合。 EUC-JPはUTF-8にはそういう性質はない。 -Kを指定してあれば日本語を識別子に使うこともできるが$KCODEでは無理 という違いもあるが、それは正直お薦めしない。 ちなみに-Kは1.9でもきくが、マジックコメントのほうが推奨。 #!/usr/local/bin/ruby # -*- encoding: ut-f8 -*-
716 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 20:25:40 ] #!/usr/local/bin/ruby # -*- coding: utf-8 -*-
717 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:56:12 ] HOME['ENV'] って何だよ・・・
718 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:12:49 ] >>717 誰か間違えてそうでありそうで無いな
719 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:17:31 ] 図書館にこの本があったので借りてみて一通り目を通してみました www.amazon.co.jp/dp/4894714531 で、次に何かRuby買ってみようと探してみて www.amazon.co.jp/dp/4274066428/ これが本屋さんあったけど・・・ 上のと同じ本?
720 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:07:13 ] 今なら下がお勧め
721 名前:デフォルトの名無しさん [2008/06/01(日) 01:28:02 ] mod_rubyを動かしたいんですが以下のようなエラーが出て動きません。 どうすれば動くようになりますか? apache -t apache: Syntax error on line ??? of C:/〜〜/httpd.conf: Cannot load C:/〜〜/modules/mod_ruby.so into server: \x8ew\x92\xe8\x82\xb3\x82\xea\ x82\xbd\x83v\x83\x8d\x83V\x81[\x83W\x83\x83\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\ xe8\x82\xdc\x82\xb9\x82\xf1\x81B 環境 Windows Vista Apache2.2.8
722 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 09:52:04 ] >>721 あなたの頭とOSが腐ってるのが原因ですね。 頭のほうはもう手遅れなので、OSの方をdebianなどに変えてmod_rubyを apt-get一発でインストールすればどんな馬鹿でも使えるようになります。
723 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 10:07:23 ] >>722 〃∩ ∧_∧ ⊂⌒( ・ω・) はいはいわろすわろす `ヽ_っ⌒/⌒c ⌒ ⌒
724 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 12:35:47 ] 文字化けしてるが、Shift_JISで 「指定されたプロシージャが見つかりません。」 と書いてあるようだな。 mod_ruby 指定されたプロシージャが見つかりません。 でぐぐるとわかるかもよ。
725 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 14:24:14 ] >>724 www.google.com/search?num=50&hl=ja&q=mod_ruby+%E6%8C%87%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%9F%E3%83%97%E3%83%AD%E3%82%B7%E3%83%BC%E3%82%B8%E3%83%A3%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93&lr=lang_ja ググったけどわかりません
726 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 16:52:27 ] 現在実行しているRubyファイル自身のpathを取得できる特殊変数(?)というのはありますか? 宜しくお願いします!
727 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 19:45:03 ] 事故解決しました __FILE__
728 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 21:02:52 ] Rubyを使いたいのだけれど使う機会が無い。どう転べばRubyを日常使用する変人になれるのか。最初にそれを説かなければ信者は増えないだろうと思う。
729 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 21:08:17 ] >>728 君には必要ないよ 必要のないものに固執する必要はない 楽になるといい
730 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 21:34:52 ] >>728 Project Euler とかお勧め。
731 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:17:55 ] >>730 Ruby関係ないというかRubyでやるくらいならSchemeかPythonかC++でやる。
732 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:30:06 ] 目的を達成するのに一番便利な言語を選べばいいじゃん。 別にこだわりはないな。
733 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 00:15:09 ] rails使えば
734 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 01:05:15 ] まあ、みんながみんなプログラマーになる必要はないわな。 Rubyに早くなれたかったらUnixかLinux使いえばいい。シェル操作が日常に なれば、ごちゃごちゃしたものをスクリプトで一気になにかするのが快感になるはず。
735 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:29:00 ] 俺は cmd.exe を使うようになってRubyの使用頻度が格段に増えた しょぼいコマンドプロンプトの補助としては優秀
736 名前:デフォルトの名無しさん [2008/06/07(土) 13:07:20 ] 俺は、バッチファイルで書くのが嫌になったころからだな。 unixではシェル書くのがいやになったころから
737 名前:デフォルトの名無しさん [2008/06/07(土) 13:08:08 ] シェルじゃねえ、シェルスクリプトだ。すまそ。
738 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:12:37 ] rubyの正規表現でhtmlファイルの中から<html>の様に<>で囲まれた 文字列を取り出すにはどのようにすれば良いですか ^<.*>$まではわかったのですが <br>のように直前に文字列が存在するタグはとりだせないのです f = open(ARGV[0].to_s) while line = f.gets if /^<.*>$/ =~ line puts line end end f.close よろしくお願いします。
739 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:15:03 ] ^や$(行頭と行末の位置にマッチ)を付けない。 さらに、.*だと欲張りマッチ(可能な限り長い対象にマッチ)になるので、 <h1>....</h1>に遭遇したときに全体にマッチしてしまう。 これを避けるためには、?を後ろに付けた .*?(欲張りでないマッチ)を使う。
740 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:18:05 ] >>739 ありがとうございます。 しかもアドバイスまで ありがとうございます
741 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:20:11 ] >>739 ああ〜テストしてみた所 a<html> とかが表示されてしまいました こうではなくて a<html>とかの行からも <htm>だけきりだしたいのですが・・・・
742 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:28:58 ] 正規表現の中に()を書くと、括弧の内容を後で利用できる。 /(<.*?>)/ でマッチした後、$1というグローバル変数に<html>とか入ってるはず。
743 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:32:35 ] 実用の上で正しい回答は「自分でコード書かずにhtmlsplit使え」 もちろん学習用としてなら意味はあるけど >>741 行全体(line)をそのまま表示しようとしているのが原因 マッチした部分($&)だけを表示させるようにするか もしくは742の言うとおり、括弧と$1を使う必要がある さらに言うと、そのスクリプトだと一行で一つのhtmlタグしか切り出せない 全てのhtmlタグを切り出すには、もう少し変更が必要
744 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:34:16 ] マッチするかどうかを試験する、ということと マッチした部分を取り出す、ということは違う 方法はいくつかあるが、概念的にめんどくさくないのは文字列に対してscanを使うこと "a<html>b".scan(/<.+?>/){|match| p match } 結果: "<html>"
745 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:41:27 ] >>743-744 まとめるとどのようになるのでしょうか 最終的には htmlファイルを指定すると そのページ内に存在するファイルを 音楽、動画、画像などに仕分けして そのURLをファイルに書き込んでくれてwgetなどで簡単にダウンロードできるようにしたいんです。
746 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:46:14 ] … rubygem の mechanize 使え <a href> で表記されたリンクをすべて抽出してアクセスして適当に保存までしてくれる ネット上にあるページではないローカルにあるHTMLファイルを読み込まなければならない場合若干面倒だが
747 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:47:58 ] とりあえず地道にやってみるならリンクされてるAタグでのhref="〜"部分を切り出して リンク咲の拡張子なりで分類するとか
748 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:52:15 ] だから目的のものが出るまでscan繰り返せばいいじゃんよ scanのマニュアルとか読んでくれたか? 文字列.scan(/タグ抽出/){|タグ変数1| タグ変数1.scan(/httpで始まる半角文字列/){|URLっぽいもの| 動画URL一覧配列.push(URLっぽいもの) if URLっぽいもの =~ /動画拡張子/ 画像URL一覧配列.push(URLっぽいもの) if URLっぽいもの =~ /画像拡張子/ 音楽URL一覧配列.push(URLっぽいもの) if URLっぽいもの =~ /音楽拡張子/ } } File.open('動画.txt','w'){|f| f.puts 動画URL一覧配列} File.open('画像.txt','w'){|f| f.puts 画像URL一覧配列} File.open('音楽.txt','w'){|f| f.puts 音楽URL一覧配列}
749 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:55:11 ] >>746 そういうのが有ったんですね・・・・ なんだか自分が最初のアイデアって今では出せないんじゃないかって 最近思ってるんですよね。 何かアドバイスになる言葉を教えてください。 小学生の頃からプログラミングしていた根っからのプログラミング好きに 慰めの言葉を
750 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:55:19 ] hpricotだとこうか。 require 'hpricot' require 'open-uri' doc = Hpricot(open(URL) {|o| o.read}) puts (doc / 'a').map {|a| a['href']}
751 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:01:18 ] とりあえずは、初心者スレなので正規表現でscanするのが妥当かねえ なんとなくだが、外部ライブラリを利用するための基礎的知識もまだ危ういように見える 便利ライブラリはもうちょい納得してから使え
752 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:02:22 ] 初心者スレであんまり「gemのlibhogeを使え」なんていわないほうが いいんじゃにゃいかな。そりゃ業務的には正解だけど、たぶん牛刀割鶏になってるよ。