1 名前: 【大吉】 mailto:sage [2009/01/01(木) 13:13:22 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.7 の使用をお勧めします】 ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。 1.9 の新機能の一部が利用可能なので初学者にお勧めです。 ※ただし十分安定しているとは言えないので プロダクション環境での利用にはお勧めしません。 関連スレや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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
116 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 17:37:08 ] 0終端じゃなくて$終端だったような
117 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 17:57:59 ] >>116 それはファンクションコール9番の特殊仕様。 たしかキルドールが「その仕様の理由をゲイツに訊いてみな、答えられないから」と 言ってるという話を読んだ記憶がある。ソース忘れた。
118 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 18:14:47 ] >>117 俺もその話聞いたことがある。 同じくソース忘れたけど。
119 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:19:49 ] スレ眺めてたら自分の質問が初歩的過ぎて申し訳ないんですが、質問です。 [23,6,58,345]みたいな配列をコピペしてgetsなどで入力させるとき、 "[23,6,58,345]"となってしまって、これ自体が1つのオブジェクトとして認知されてしまうのですが、 23,6,58,345のように4つのオブジェクトとして一度に認識させる方法はあるのですか?
120 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:23:04 ] eval でも他所様からの入力はevalしたら死ねるので注意
121 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:24:23 ] ありがとうございます 早速ためして見ます
122 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 22:06:48 ] >>120 おかげで完成しました。 ありがとうございます!
123 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 22:58:42 ] >>120 他所様の入力をevalの前に正規表現で (\[[\d\,]+\]) とかしてからevalしても死ぬ?
124 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:02:02 ] >>123 入力がその正規表現に限定できるならそれでもいいんじゃない?
125 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:02:24 ] >>123 安全と確信できるパターンなら大丈夫いいのだが、 そのパターンだと [,,,,,,,] みたいなのを受け入れてしまわんか? あと、$SAFEおよびtaint/untaintについても調べておくとよい。
126 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:05:03 ] >>123 数値だけなら自分でscanとかsplitととかした方が安心な気がする
127 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:40:58 ] inspect な記述を数値か文字列のどちらかの配列かハッシュに変換するライブラリとか作ったら それなりに人気が出ると思う
128 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:45:14 ] >>127 こういうことじゃなくて? eval({5 => 8.5, :a => 'b'}.inspect)
129 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:48:03 ] 今回の記法に限れば YAML.load('[1, 2, 3]') => [1, 2, 3] とかもありかな。
130 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:50:36 ] JSONやYAMLとしてパースしてもいいんじゃない?
131 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 00:03:16 ] "[-1,0,1,2,3]".scan(/-?\d+/).map(&:to_i) こんな感じでいいんじゃなかろうか
132 名前:デフォルトの名無しさん [2009/01/07(水) 01:43:30 ] インスタンス変数の値を、GDBMを使ってDBへ書き込みがしたくて こんな風に記述した。 GDBM.open(dbfile, 0644, GDBM::NEWDB){|db| line = @number, "," ,@name, "," ,@age, "," ,@address, "," ,@tel, "," ,@grade, "," ,@department, "\n" db[@number] = line } db[@number] = lineの部分で in `[]=': can't convert Array into String (TypeError) とエラーが出力される。 授業ではインスタンス変数の値ではなく、 CSVファイルから読み込み→DBファイルへ登録としてて、 カンマ区切りのデータならそのままDBへ書き込めるのかと解釈 したんだがそこから間違ってるのか…orz 長文スマソ
133 名前:デフォルトの名無しさん [2009/01/07(水) 01:44:45 ] >>132 sage忘れた…ゴメンorz
134 名前:デフォルトの名無しさん [2009/01/07(水) 01:48:28 ] いや、質問者はむしろageろ
135 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 01:58:50 ] >>132 >line = @number, "," ,@name, "," ,@age, "," ,@address, "," ,@tel, "," ,@grade, "," ,@department, "\n" これは多重代入の怪しいルールでlineには配列が入るんだ で,多分GDBMには文字列しか保存できないからこんなことになってる だからインスタンス変数の値が全部文字列なら+でつなげるといいと思う
136 名前:デフォルトの名無しさん [2009/01/07(水) 02:11:51 ] >>135 試したら先ほどのエラーは消えました! でも + でつなげるってことはカンマ区切りなしの文字列しか DBへ書き込みできないってことになりますか?
137 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 02:14:36 ] line=@number + "," + @name + "," + (以下略 こうだよこう
138 名前:デフォルトの名無しさん [2009/01/07(水) 02:17:09 ] >>137 素で勘違いしてましたorz そして出来ました! 助かりました…ありがとうございました!
139 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 06:41:18 ] 勉強用なら、一旦配列にして結合用文字でjoinするのがスクリプトとしてもわかりやすいんじゃね、と思うぞ data = [@number, @name, @age, @address, @tel, @grade, @department] GDBM.open(dbfile, 0644, GDBM::NEWDB){|db| db[data[0]] = data.join(',') } この場合はDBから読むときには data = db[no].split(',') とかして取り出す 結合用文字はカンマを選んだが、インスタンス変数の中に存在しない文字なら @ でも # でも ^ でも何でもいい
140 名前:デフォルトの名無しさん [2009/01/07(水) 13:54:35 ] '\0' がマジおすすめ
141 名前:デフォルトの名無しさん [2009/01/07(水) 15:09:26 ] >>139 ,140 重ね重ねありがとう! おかげで課題出来そう
142 名前:デフォルトの名無しさん [2009/01/07(水) 18:37:38 ] >>132 の者です DB関連の問題は解決したんですが、 s1 = Student.new(引数) s2 = Student.new(引数) とインスタンスを生成した場合、Studentクラスのクラスメソッド内で 引数の値を判断してインスタンスを返す(s1とs2どちらのインスタンスなのか判断して返す) という処理は出来ますか?
143 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 18:45:53 ] >>142 そのコードの目的も含めてもうちょっと詳しく
144 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 18:50:54 ] そのクラス名は正直どうよと思わなくもない 生徒のもつ個人情報という意味ならふつーに StudentData とかでいいじゃんね >>142 回答は 「クラスメソッドは @@hoge 形式のクラス変数が読めるので インスタンスメソッドの中(今回はinitializeの中)で先頭に@を2つつけたクラス変数に値を入れておけばOK」 だけど、たぶんクラスメソッドの使い方間違ってる でも、間違ってるということが自覚できるのはずっと先なのでまずはどんどん変な構造のスクリプト作れ
145 名前:デフォルトの名無しさん [2009/01/07(水) 18:53:04 ] >>143 課題で学生クラスを生成する課題があって、 ・パラメータ7つ保持(これを引数にして渡してる、7つすべて文字列) ・学生クラスのインスタンス1つは、学生1人を表す ・クラスメソッドfindによって、文字列が一致する引数を持つ 学生インスタンスを取得できること 与えられた条件はこんな感じです
146 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 18:56:00 ] 宿題スレ向けではあるね Rubyの宿題教えてください。2限目 pc11.2ch.net/test/read.cgi/tech/1200175247/ このスレの連中は基本ヒマで、宿題スレも見てる人はいるから答はもらえるとは思うが
147 名前:デフォルトの名無しさん [2009/01/07(水) 18:59:20 ] >>146 課題では他にも色々条件が与えられていて、 他の部分はほぼ実装できてるんだけど 向こうでは>>145 みたいな部分的なこと聞いてもおkなんですか?
148 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:06:08 ] むしろこの初心者スレが、前提条件とか無関係な部分的なことを聞くスレだと思う クラスメソッドというのは、クラスで定義されたメソッドとかそういう意味ではなくて、たとえば見かけで言うと Student.find で動作するタイプのメソッドということでいいのだよね? s1.find s2.find find で動くタイプのメソッドを指してるつもりの言葉ではないのだよね?
149 名前:デフォルトの名無しさん [2009/01/07(水) 19:08:33 ] >>148 Student.findの方です 言葉足らずですみません…
150 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:12:31 ] インスタンスを引数にとるユーティリティなメソッドとしてクラスメソッドにまとめろという課題にも思えるけど、違うんだろうな >>149 Student.find の引数には具体的にどんなものを指定するのが妥当で、 それによってメソッドの返り値としてどんなものが返ってくるべきだと思う?
151 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:14:23 ] class Student @@list = {} attr_reader :name def initialize(name) @name = name @@list[name] = self end def Student.find(name) @@list[name] end end Student.new("foo") puts Student.find("foo").name こんな感じか。
152 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:18:07 ] >>151 initialize の引数はたぶん7つだと思うよ っていうか、それだと個々のインスタンス生成する意味がねえ
153 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:20:39 ] >それだと個々のインスタンス生成する意味がねえ でも課題の内容からすると、まさにその方法を想定してるんだよな、たぶん…
154 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:20:41 ] >>152 そこまで面倒見る気はないw クラスが自分のインスタンスのサーチをするサンプルを示しただけ。
155 名前:デフォルトの名無しさん [2009/01/07(水) 19:24:07 ] >>154 サンプルありがとうございます。 でも最終的に欲しい値は>>142 でいう"s1"か"s2"なんですorz
156 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:31:20 ] >>155 ( ゚Д゚)<えっ インスタンスを入れた変数の名前を文字列として知ってどうするの? まさかevalするわけじゃないよね。 >>151 で s1 = Student.new("foo") としたあとに p s1 p Student.find("foo") このふたつが等しくなるんだけど、それでも変数名が必要? (Class.newやStruct.newは代入した変数名に依存した処理をしてるけど あれってスクリプトレベルでできたっけ?)
157 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:36:22 ] >>155 >>150 に答えて これがしっかりしてないと外部の人間はメソッドが作れないよ 課題の一部だっていうんだから、きっとfindメソッドを他のどこかで使うんじゃないかい?
158 名前:デフォルトの名無しさん [2009/01/07(水) 19:39:55 ] s1 = Student.new(引数7つ) s2 = Student.new(引数7つ) s3 = (ry Student.find("引数に対して検索文字列") # ↑ここで検索文字列を引数に持つのがs1〜s3のどれか判定 s●.他の処理 としたかったんです… 最初からこう聞いてれば良かったですねorz
159 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:43:34 ] >>158 じゃあもうひとつ その find メソッドを作ろうと決めたのはもしかしてあなた自身? 「Studentクラスのインスタンスの集団から該当するモノを抽出する」というのが本来必要な処理だったりしない? そのために必要だと「あなたが思ったもの」が、「Student クラスにあるべきだと考えた find メソッド」だったりしない?
160 名前:デフォルトの名無しさん [2009/01/07(水) 19:45:01 ] >>157 見落としてましたorz 返ってくるべき…ということは>>158 に示したのが答えでは ダメですよね?;
161 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:45:46 ] >>158 selfっていうのはnewされたオブジェクト本体で そのあとに代入される変数の中身そのものだから s = Student.find("引数に対して検索文字列") s.他の処理 これでいい。変数名は知る必要がない。 s1をひっぱりだす検索をすれば、sの中身はs1と合致する。
162 名前:デフォルトの名無しさん [2009/01/07(水) 19:47:09 ] >>159 findメソッドを作るというのは課題の条件です
163 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:57:42 ] >>162 こういうのは、ふつーに作ると、こういう処理になる s1 = Student.new(arg1) s2 = Student.new(arg2) s3 = Student.new(arg3) ... students = [s1, s2, s3, ...] hit = students.find{|s| s.name = 'なまえ'} と書きかけて、ちょっと思う もしかして、データの検索って>>132 みたいなDBで行う?
164 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 20:03:25 ] 質問者は名前に一貫したレス番入れてくれないか カオスすぎる
165 名前:デフォルトの名無しさん [2009/01/07(水) 20:03:32 ] >>163 >>161 で出来ました! レスくださった皆様、長々とすみませんでしたorz
166 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 20:18:19 ] まさに初心者スレだな。 エスパー衆、おつ
167 名前:初心者 mailto:sage [2009/01/07(水) 22:26:54 ] rubyで画像サイトを巡回して画像を保存したいです よろしくおねがいします
168 名前:初心者 mailto:sage [2009/01/07(水) 22:27:33 ] 失礼しました。 環境はシグウィンです
169 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:28:49 ] コマンドラインで動作するWebクローラをシェルスクリプト的にRubyで制御するのが近道です ゼロまたはイチから作ることもできるけれど、おそらくそのための知識は無いことでしょう
170 名前:デフォルトの名無しさん [2009/01/07(水) 22:31:35 ] >>169 それだっ(・∀・)!
171 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:31:58 ] >>169 そういや、完全初心者だった4年くらい前の頃に作った画像フェッチャは中でwgetが動いてるな いいかげん書き換えたいんだが、問題なく動作してるし別にいいか、みたいな HTMLとHTTP(と、情緒的Webサーバ管理)に関する知識がないと作れないからねえ
172 名前:初心者 mailto:sage [2009/01/07(水) 22:33:33 ] ユーザエージェントとかクッキーを使わなくてはいけなくて なおかつ画像URLがリンクになっていないので自前で 解析しなくてはいけないのですが、クローラ的なものは使えますか? wgetで挑戦したのですがサーバにはねられました。 ちなみにC++はプロです。
173 名前:デフォルトの名無しさん [2009/01/07(水) 22:35:11 ] >ちなみにC++はプロです。 ならドキュメント嫁、で終了。
174 名前:初心者 mailto:sage [2009/01/07(水) 22:37:22 ] >>173 Rubyは変なキツネの漫画を読んだだけなので どういうモジュールがあるのかとか、どういう作りにすれば いいのかとかわけわかめです
175 名前:初心者 mailto:sage [2009/01/07(水) 22:39:50 ] Net::HTTPなるモジュールがぐぐれたので使ってみようと思います。
176 名前:初心者 mailto:sage [2009/01/07(水) 22:43:01 ] Net::HTTP.version_1_2 # おまじない Net::HTTP.start('www.yahoo.co.jp', 80) {|http| response = http.get('/index.html') puts response.body } これでなんかアクセスできたっぽいのですが、 構文が意味不明です。 解説きぼんぬ
177 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:43:53 ] open-uri使えば。
178 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:46:20 ] Mechanizeというのがある。 Hpricotとopen-uriで満足したから使ったことないんだけれど。
179 名前:デフォルトの名無しさん [2009/01/07(水) 22:46:37 ] ほんとうにC++のプロなの?
180 名前:初心者 mailto:sage [2009/01/07(水) 22:49:30 ] なるほど、open-uriもつ変えそうですね ありがとうです
181 名前:初心者 mailto:sage [2009/01/07(水) 22:52:52 ] ブロック付きメソッド呼び出しという構文があるんですね 新しい言語は刺激的です
182 名前:デフォルトの名無しさん [2009/01/07(水) 22:54:46 ] そっからかよw
183 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:55:20 ] >>178 ちゃんとリンクになってるならMechanizeも楽だけどね。 Mechanizeのメソッドを上書きして、 取得してきたHTML書き換えてリンクにしてからパースさせるという手もできそう。
184 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:58:41 ] http://で始まって.jpgとか.pngとか.gifとかで終わる文字列探すとかでも それなりになんとかなりそうなならなそうな
185 名前:初心者 mailto:sage [2009/01/07(水) 23:07:24 ] open-uriではStringIOオブジェクトが渡されて・・・ StringIOの中味をダンプ松本したいのですが printメソッド読んでもなにも表示されないです
186 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:08:36 ] IOはとりあえずreadだ
187 名前:初心者 mailto:sage [2009/01/07(水) 23:13:56 ] >>186 ありがとうございます。 print f.read でいけました。
188 名前:初心者 mailto:sage [2009/01/07(水) 23:16:57 ] 処々でみかける p って組み込み関数なんですね。 これはちょっと受け入れがたい衝撃でした。 タイプ量減らすためでしょうかね
189 名前:初心者 mailto:sage [2009/01/07(水) 23:25:10 ] ハ・・・ッシュ??
190 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:25:44 ] p はデバッグ用の出力関数。 タイプ量を減らすためなのは確実。
191 名前:デフォルトの名無しさん [2009/01/07(水) 23:31:51 ] >>189 連想配列のこと。と言えばいいのかな。
192 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:33:18 ] まとめサイトのurl渡すと画像DLしてzipに固めるってのを以前作ったなぁ
193 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:33:58 ] 根拠がないくせに「確実」だってさwwwwww 開発者がpって打ったとき冷蔵庫にザッハトルテがあることを思い出して食べてたら うっかり忘れちゃってたのが今でもそのままになってるに決まってるんだぜ
194 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:35:29 ] だから外部プログラムのwget使え wgetを使ったこともないような人間はそもそもまともなものを作れない Webブラウザを使ったことのない人間がWebブラウザを作れるか?
195 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:37:23 ] 最初のwebブラウザを作った人はどうしたんだ
196 名前:初心者 mailto:sage [2009/01/07(水) 23:38:12 ] std::map の特殊版みたいなもんですね > ハッシュ metaにレスポンスヘッダが格納されているはず・・・ でもSet-Cookieが見つからない・・・
197 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:40:31 ] >>195 通信に必要な仕様を読んだ 他人に聞かないと作れないってことは、仕様の知識がないということ 仕様の知識がないのなら、他人が作ったお着せのプログラムを使い倒すことから始めるべき それで不満が出てきてから勉強を始めても遅くはない
198 名前:初心者 mailto:sage [2009/01/07(水) 23:42:12 ] f.meta.each_key { |key| p key } でみたら"set-cookie"で入ってました。。。 ブロックつきなんたら構文、便利ですね
199 名前:デフォルトの名無しさん [2009/01/07(水) 23:42:36 ] >>193 根拠がないくせに 「決まってるんだぜ」 ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / | | l||l 从人 l||l l||l 从人 l||l ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
200 名前:デフォルトの名無しさん [2009/01/07(水) 23:48:16 ] >最初のwebブラウザを作った人 だれだっけ 事務クラーク?
201 名前:初心者 mailto:sage [2009/01/07(水) 23:48:55 ] グローバルスコープで変数宣言したいのですが、 cookie だけだとundefined local variableとか怒られて cookie = '' だと通ったのですが、Why?
202 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:49:30 ] アラン・ケイ
203 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:53:54 ] >>201 ruby-lang.org/ja/man/
204 名前:デフォルトの名無しさん [2009/01/07(水) 23:54:16 ] >>200 ティム・バーナーズ・リー氏だと思う。
205 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:55:51 ] undefined local variableすら読めないのにC++ではプロって あまりに恥ずかしい 仕事して金もらってれば一応プロではあるが、実力はアマチュア未満じゃないか
206 名前:204 [2009/01/07(水) 23:56:13 ] いや、彼はHTTP、URL、HTMLの設計だけかもしれない。。。
207 名前:204 [2009/01/07(水) 23:58:16 ] いや、あってた。 # 1990年11月 - ティム・バーナーズ=リーが最初のWebサーバとウェブブラウザを試作する。 # 1991年2月 - バーナーズ=リーが開発したウェブブラウザであるWorldWideWebをインターネットに公開する。 ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6#.E6.AD.B4.E5.8F.B2 >>205 釣りじゃねーの?
208 名前:初心者 mailto:sage [2009/01/08(木) 00:11:06 ] >>205 Rubyでは未初期化での変数定義は許されないんですか? C/C++では許されるので、そのあたりに疑問を抱いただけですが・・・ ちなみに私の書いたプログラムのユーザは全世界で数千万単位です。
209 名前:初心者 mailto:sage [2009/01/08(木) 00:19:47 ] Cookie偽装でむふふ画像のありかをしめすhtmlの取得まで たどりつけました。 みなさまのご指導のおかげです。 画像取得&Zip化は明日にします。 どうもありがとうございました。
210 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:29:39 ] >>197 >他人に聞かないと作れないってことは、仕様の知識がないということ >仕様の知識がないのなら、他人が作ったお着せのプログラムを使い倒すことから始めるべき >それで不満が出てきてから勉強を始めても遅くはない 仕様の知識がないのはRubyについてで、 wgetとかHTTPの仕様には詳しそうじゃん。 wgetがRubyで実装されてるっていうなら別だが。 てかお前の読解力がなさすぎ
211 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:39:45 ] 他の言語経験があるなら、仕様については人に聞かなくても ドキュメント読めばいいだけの話じゃん。 仕様を理解するのが面倒だから人に聞いたのかも知れないけど。
212 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:20:21 ] wgetよりcurlを使ってください
213 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:26:49 ] そうそう連番jpgを落すならcurlに限る
214 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 02:33:53 ] Hpricotでsearchした要素から再度searchするにはどうすればいいでしょうか? class Blog def chk_aaa(site) content = Array.new site.search("div.AAA").each { |entry| content << entry.to_s.toutf8 } return content end end site = Hpricot(open("hogehoge.net ").read) aaa =Blog.new.chk_aaa(site) 上ので言えばdiv.AAAの中にdiv.BBBという要素があるときに aaaからsearchするにはどうすればいいでしょうか?
215 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 02:37:07 ] >>214 entry.search
216 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 02:38:23 ] 質問の意図がわからなくなってきた。こっちかも? site.search("div.AAA").search("div.BBB").each