1read 100read
2012年5月プログラム7: Ruby 初心者スレッド Part 49 (431)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
【node.js】サーバサイドjavascript【Rhino】 (755)
マルチスレッドプログラミング相談室 その8 (978)
雑談スレ 4 (370)
【SICP】計算機プログラムの構造と解釈 Part3 (345)
JavaScriptスレ2 (367)
くだすれAjax(超初心者用) (320)
Ruby 初心者スレッド Part 49
1 :12/05/09 〜 最終レス :12/05/30 プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお RoRはスレ違いよ 前スレ Ruby 初心者スレッド Part 48 http://toro.2ch.net/test/read.cgi/tech/1328648447/ るりまサーチ (リファレンス検索) http://rurema.clear-code.com/ Rubyist Magazine - るびま http://jp.rubyist.net/magazine/ 逆引きRuby http://www.namaraii.com/rubytips/
2 : 【RoR】Ruby on Rails Part14 http://kohada.2ch.net/test/read.cgi/php/1329492840/ 【ActiveScript】RubyをWindowsで使うスレ【GUI】 http://toro.2ch.net/test/read.cgi/tech/1155031689/ 書籍:ほぼ公式 「たのしいRuby 第3版 Rubyではじめる気軽なプログラミング」 (プログラミング自体が初めてでない人向け) http://www.amazon.co.jp/dp/4797357401/ 「初めてのRuby」 (同上) http://www.amazon.co.jp/dp/4873113679/ 書籍:紙のマニュアルに相当 「Rubyレシピブック 第3版 303の技」(脱初心者向け基礎テクニック集、1.9対応) http://www.amazon.co.jp/dp/4797359986/ 「プログラミングRuby 第2版 言語編」(初心者向け参考書) http://www.amazon.co.jp/dp/4274066428/ 現在、1.8 系列の最新である Ruby 1.8.7 と 1.9 系列の最新である Ruby 1.9.3 の2系統が存在。 肝心な部分がわりと違い、プログラムはそのままでは動作せず、予備知識も別個。 1.8 用のスクリプトやライブラリは 1.9.3 では動作しないので注意。 1.9.3 用の教科書があるなら 1.9.3 から始めても構わない。 Windows用Rubyは、Ruby以外のものもあらかた入っているActiveScriptRubyと http://www.artonx.org/data/asr/ RubyだけインストールされるRubyInstallerの2種類存在。 http://rubyinstaller.org/downloads/ Rubyリファレンスマニュアル chm版リミックス http://ruby.morphball.net/refm-remix.html
3 : Ruby 1.9.3-p194 リリース http://www.ruby-lang.org/ja/news/2012/04/20/ruby-1-9-3-p194-is-released/
4 : ・ いつものエディタとターミナルという普段着でお越し下さい ・ エディタ初めてならRubyスクリプトをを着色してくれる(できればオートインデントの)エディタ好きなの選べ ・ いわゆるIDEはRubyの学習に際しては恐ろしくコスパが悪いのでRubyのためだけに新規導入するのはお勧めしない Q. XXX を使ってるんですが Ruby も覚えたほうがいいんでしょうか? A. 好きにしろ
5 : ※RubyやRuby使いに対する不満や愚痴などは本スレやバトロワスレなどをご利用下さい
6 : Cで作ったDLLライブラリで double型を返す関数や、double型の引数を取る関数を Rubyから呼び出すにはどうすればいいんでしょうか?>< INTしか受け取れません p Win32API.new("Lib.dll", "_RadToDeg", "i", "i").call 30
7 : Ruby/DLを使えばいいんでは。
8 : ありがとうございます 読めました
9 : クラスでインスタンスした時のものなんだが #<Hoge:0x0000000c9c12e0> 0x0000000c9c12e0ってアドレスの値ですか?
10 : Object#to_s のデフォルトは sprintf("#<%s:%p>", cname, (void*)obj) みたいな感じなので、ポインタ値。 大抵のポインタの実装はアドレス丸出しなのでアドレスと思ってよいでしょう。
11 : 数値を'hoge'に変換(例:2=>'hoge')するんだけど、ただし<>内に含まれている数値は 対象外にする。 変換対象の文字列は13<aa12><444>1なかんじで 正規表現でhogehoge<aa12>hogeにしたい。 そのような正規表現はどう作ればいいのですか? うまくいかない
12 : すいません上の例は 13<aa12><444>1 の文字列を hogehoge<aa12><444>hoge に変換です。 宜しくお願いします。
13 : '13<aa12><444>1'.gsub(/<.*?>|(\d)/){$1 ? 'hoge' : $&} => "hogehoge<aa12><444>hoge" <>のネストが無いならこうかな?
14 : File::statで質問です。 File::stat#modeでファイルモードが返ってきますが, 6桁の数字のうち上位3桁の意味が分かりません。 「040755」となっている場合,多分下3桁はいわゆるrwxのことだと思うのですが, 040についてどうやって調べればいいのか。 おこたえいただけるとうれしいです。
15 : >>14 man stat(2) って言ったらわかる?
16 : >>15 ありがとうございました。わかりました。 6桁ではなく7桁でしたね。040はディレクトリということがわかるようになりました。
17 : Googleで「ぬるぽ」と検索するスクリプトを書いてみたのですがうまくいきません ここからどうすればいいのでしょうか? # encoding: utf-8 require "net/http" require "uri" require 'nkf' uri = URI.parse('http://www.google.co.jp/') res = Net::HTTP.post_form(uri, 'q' => 'ぬるぽ') puts NKF.nkf("-sm0W8x", res.body)
18 : >>17 ガッ
19 : メッセージがわかりにくいとはよく言われるが、Rubyはそこまで意地悪ではない こちらから聞きさえすれば、いちおうのヒントは教えてくれる p res #=> #<Net::HTTPMethodNotAllowed 405 Method Not Allowed readbody=true> ということで、http://www.google.co.jp/ は POST を受け付けていない(というかURL間違ってる)。/search に対して GET 送れ あと、net/http は uri ライブラリを既に呼んでいるので require 'uri' は不要 Ruby1.9.x 専用なら NKF もたぶんいらない # encoding: utf-8 require "net/http" uri = URI.parse(URI.encode('http://www.google.co.jp/search?q= ぬるぽ&ie=utf-8&oe=shift_jis')) res = Net::HTTP.get(uri) res.force_encoding('CP932') puts res.scan(/<title>(.+?)<\/title>/).flatten[0] Hash で書くだけで適当に GET 用の URL エンコード(www-form-urlencodedではない)してくれる方法は誰か偉い人が教えてくれるはず
20 : ありがとうございました。 「ぬるぽ」だとinvalid multibyte charが出たので「nullpo」にしてみたら nullpo - Google 検索 と出てきました
21 : >>20 なぜShift_JISで保存した
22 : # encoding: utf-8 は、このファイル「が」 UTF-8 で書かれているという意味の指示記述 UTF-8 「を」読み込むとか UTF-8 「で」表示するという意味ではない このファイル「が」 UTF-8 で書かれていないのなら、UTF-8 以外を指定するべきだな Windwos のようだから、 CP932 が妥当なのか
23 : Windows-31Jディスってんの?
24 : マジレスするとわざわざrequire "net/http" でやりたいとかじゃなければ Mechanizeでやったほうが999999999倍マシ
25 : 将来iconvを使う羽目になったときに、CP932という名前ならほぼ確実にどこででも使えるけどWindows-31Jは使えないことがある さらにWindows-31Jは若干名前の筋が悪くて、Encoding::CP932 はそのまま書けるんだけど Encoding::Windows-31J は定数としてそのままアクセスできない irb> Encoding::CP932 => #<Encoding:Windows-31J> irb> Encoding::Windows-31J SyntaxError: (irb):2: syntax error, unexpected tCONSTANT, expecting $end irb> Encoding::Windows31J NameError: uninitialized constant Encoding::Windows31J irb> Encoding::Windows_31J => #<Encoding:Windows-31J> だから少なくとも初心者スレでは一貫してCP932という言葉を使う 本来のShift_JISとCP932とWindows-31Jの差異については、歴史的経緯を紐解かなければならなくなったら自分で調べるだろう
26 : ttp://takobouzu.la.coocan.jp/index.php/2012/01/競馬時計分析のアプローチ(3)/ この解説のスクリプトを起動したいのですが 下部のソースコードを起動しても :2: syntax error, unexpected '<' <p> </p> ^ :3: unknown regexp option - p :4: syntax error, unexpected '<' <p> log.info("時計抽出開始")</p> :5: unknown regexp option - p :6: syntax error, unexpected '<' <p>outfile1 = open(outdirectory + "\\" + "時計.txt", "w")</p> ^ :7: syntax error, unexpected $undefined, expecting $end ...[0-9][0-9][0-1][0-9][0-3][0-9]\.lzh$/ =~ |hafi|ename then ... と出てうまく起動しません エラー文を調べたところ構文エラーらしいのですが どう直せばよいのでしょうか?
27 : つまりRubyの知識ゼロの状態ってことか なんかlzhのデータファイルが別途必要なんだけどそれはあるのね lzhコマンドも必要だけどインストールしてあるのね HTMLの<p>タグを取り除いてRubyスクリプトとして適切に改行を揃えればいいんだけど、たぶんそれを自力でできるほどの知識がないのよね レスとして貼るには長いな
28 : とりあえず <p> </p> を全部消せ。話はそれからだ。
29 : >>27 大学でCなんかはかじったレベルなんですが Rubyは触った事無いです・・・これを機に少し勉強しようかなとも思ってます。 lzhはデータファイルはinフォルダに格納してあります。 解凍にLHAが必要ということでLHA32をダウンロードしています。 コマンドプロンプトで実行したところ解説ページと同バージョンでした。 >>28 ありがとうございます。 とりあえずTerapadで<p>タグを消して改行して揃えてみます。
30 : >>28 やってみるとわかるけど、それだけでは動かない コメント避けて改行つけないといけない
31 : <p>タグを消して改行したところ エラーは消えました。 今度は3行目でsyntax error, unexpected tIDENTIFIER, expecting $endと出ました。 改行コードがダメらしいんですね。 難しいです
32 : # -*- coding: cp932 -*- require 'logger' log = Logger.new(STDOUT) log.level = Logger::DEBUG log.info("時計抽出開始") indirectory = "C:\\時計分析\\in" workdirectory = "C:\\時計分析\\work" outdirectory = "C:\\時計分析\\out" outfile1 = open(outdirectory + "\\" + "時計.txt", "w") Dir::foreach(indirectory) {|lhafilename| next if lhafilename == "." or lhafilename == ".." if /^kd3_hb[0-9][0-9][0-1][0-9][0-3][0-9]\.lzh$/ =~ lhafilename then #KOLデータパックファイルをLHA解凍 cmd = "lha32 x -nc " + indirectory + "\\" + lhafilename + " " + workdirectory + "\\" system(cmd) open(workdirectory + "\\" + "kol_den2.kd3") {|file| while line = file.gets record = line.force_encoding('ASCII-8BIT') #レースID組み立て case record[0,2] when "00" then raceid = record[12,8] + "08" + record[6,6] + record[23,2] #京都 when "01" then raceid = record[12,8] + "09" + record[6,6] + record[23,2] #阪神 when "02" then raceid = record[12,8] + "07" + record[6,6] + record[23,2] #中京 when "03" then raceid = record[12,8] + "10" + record[6,6] + record[23,2] #小倉 when "04" then raceid = record[12,8] + "05" + record[6,6] + record[23,2] #東京 when "05" then raceid = record[12,8] + "06" + record[6,6] + record[23,2] #中山 when "06" then raceid = record[12,8] + "03" + record[6,6] + record[23,2] #福島 when "07" then raceid = record[12,8] + "04" + record[6,6] + record[23,2] #新潟 when "08" then raceid = record[12,8] + "01" + record[6,6] + record[23,2] #札幌 when "09" then raceid = record[12,8] + "02" + record[6,6] + record[23,2] #函館 end
33 : #追切情報格納位置の確定 tp = 256 if record[490,1] == "1" then tp = 490 else if record[373,1] == "1" then tp = 373 else if record[256,1] == "1" then tp = 256 end end end #追切情報の取得 baba = record[tp + 25, 2] #馬場 basho = record[tp + 17, 6] #場所 course = record[tp + 23, 2] #コース ashiiro = record[tp + 70, 6] #脚色 time_5f = record[tp + 45, 6] #5F #時計レコードの組み立て outrec1 = " " + basho #場所 outrec1 = outrec1 + " " + course #コース outrec1 = outrec1 + " " + ashiiro #脚色 outrec1 = outrec1 + " " + baba #馬場 outrec1 = outrec1 + " " + time_5f #5F #時計レコードをファイル出力 outfile1.puts(raceid + "," + outrec1) end } end }
34 : #終了処理 outfile1.close log.info("時計抽出終了") # この上の空行まで >>32-34 のスクリプト部分をてきとうにエディタにコピペ
35 : >>32-34 ありがとうございます! 早速実行しましたが :16: in `initialize' : No such file or directory - C:\時計分析\work\kol_den2.kd3 (Errno::ENOENT) と出ました。自分なりに色々しらべてみようと思います。
36 : 調べたら inフォルダにあるlzhファイルを解凍 解答したファイルをworkフォルダに格納 これが出来てないんですね・・・ この場合どこを見ればいいんでしょうか?
37 : 全部がみっちり結合してるからテストできないんだな こんなスクリプト作ったらいかんよ system(cmd) を p cmd; system(cmd) に書き換えて、文字列 cmd が lha32 のコマンドラインとして妥当かどうか確かめるのが妥当かなあ
38 : >>37 同じエラー文が返って来ました。 コマンドラインとして妥当ではないということなのでしょうか?
39 : 関数的メソッド p は引数のオブジェクトを適当に表示する p cmd で変数 cmd の内容が標準出力に表示されたはずだ system() は引数の文字列をそのままシェルに渡す シェルに渡されるはずだった cmd はコマンドラインとして妥当なものだったか? ディレクトリ指定などは誤ってないか? ということを聞きたかったのだと思われる
40 : lzhファイルが置けてないとか?これ実行して出力貼ってみ # -*- coding: cp932 -*- require 'pathname' indirectory = "C:\\時計分析\\in" workdirectory = "C:\\時計分析\\work" outdirectory = "C:\\時計分析\\out" abort "エラー [#{indirectory}]がない" unless Pathname(indirectory).directory? abort "エラー [#{workdirectory}]がない" unless Pathname(workdirectory).directory? abort "エラー [#{outdirectory}]がない" unless Pathname(outdirectory).directory? lzhfound = false Dir.foreach(indirectory) do |file| if file =~ /.*\.lzh$/ lzhfound = true if file =~ /^kd3_hb[0-9][0-9][0-1][0-9][0-3][0-9]\.lzh$/ p "lha32 x -nc " + indirectory + "\\" + file + " " + workdirectory + "\\" else puts "エラー [#{file}] は名前がおかしいかも" end end end puts "エラー lzhファイルが[#{indirectory}]に入ってない " unless lzhfound puts `lha32` rescue abort "エラー lha32がちゃんとインストールされてない"
41 : >>39 "lha32 x -nc C:\\時計分析\\in\\kd3_hb110105.lzh C:\\時計分析\\work\\" というコマンドラインが出力されました。 解凍する対象のlzhファイルと 解凍後のフォルダの格納位置を指定していると思うのですが このフォルダ指定は合ってます。 ということはうまく解凍されていないということなんでしょうか・・・?
42 : >>40 エラー lha32がちゃんとインストールされてない と出ました。インストールミスのようですね・・・もういっかい確認してきます
43 : 解説ページに コマンドプロンプトから「LHA32」を実行してバージョンが2.67.00であることを確認する。 という一文があって 実際にLHA32を入力するとLHA32 version 2.67.00 for test と出ます。 もしかしてこれだけではインストールされていないんでしょうか?
44 : コマンドプロンプトからだけパスが通ってることってあるのかな? OS再起動したら直るかもしれない 手元のマシンにはlha32インストールできないから俺はこれ以上ワカンネ
45 : 実際にはパス通ってないんだろ lha32.exe のあるディレクトリで lha32 と入力すればそりゃ動く インストール後はコマンドプロンプト流用せずに一旦全部閉じろ
46 : >>44 再起動してみました上手くいきませんでした・・・ >>45 すいませんやり方を詳しくお願い出来ますか?
47 : lha32って普通に落としてEXEクリックでインスコされなかったっけ?
48 : Lhaz使わない奴なんていんの
49 : CENTOSのruby 1.9.3p194で、gem install rvm をやると /usr/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>': It seems your ruby installation is missing psych (for YAML output). To eliminate this warning, please install libyaml and reinstall your ruby. ERROR: Could not find a valid gem 'rvm ' (>= 0) in any repository ERROR: Possible alternatives: rvm, rVM ってなる。 yaml-0.1.4はインストールしてるんだけど・・ なんで?
50 : Rubyが糞だから 答えは簡単
51 : >>49 libyaml-devel 相当が必要 CentOS 標準では提供されてないので、epel を有効にしないといけない openssl-devel と zlib-devel と readline-devel と gdbm-devel あたりも入れとけ
52 : >>47 lha32はいろいろバージョンがあるからなあ 自動でパス設定しないものもあるかもしれん どのディレクトリでもlha32が使えるのなら、Rubyからでもlha32は使えるはず 最悪な場合はlha32.exeを直接ダブルクリックしてるのかもしれんし
53 : >>46 です。 環境変数でpathをちゃんと指定しなかったのがどうやら原因だったみたいです。 設定後は無事スクリプトが起動しました。 お手数をかけて申し訳ありませんでした。 スクリプトを見て頂いたり原因を探ってくれた方々本当にありがとうございました!
54 : ハッシュに複数ハッシュを追加したいんですけど storeだと1個ずつしか追加できません 何かいい方法あればおしえてください (ちなみにaのハッシュをbで上書きしたいです) a={ x:2 , y:8 } b={ x:3 , y:4 , z:6}
55 : uy君ほどの人がupdateやmergeを知らないってどういう事なの
56 : >>55 すみません ボケていました marge使った事ありました 知らないわけではなかったです ありがとうございました
57 : mergeな
58 : uyはだからしょうがない
59 : >>51 最新のlibyamlを自前コンパイルしてしまうというパターンも多いみたいね
60 : >>51 有難う、でけた
61 : お前ら初心者スレなのに高度すぎ。
62 : nokogiriとかanemoneとか便利だけど、 これってRubyの開発者が用意したプラグインみたいなもんなの?
63 : 第三者が勝手に作って公開しているライブラリ 個々にやると使うのめんどくさいのでgemという系統立てたシステムに乗っけるのが主流 "信用できない"のなら使うべきではない、特にバイナリ
64 : なるほど、公式じゃないのに簡単に取り込めるとは便利ですな。 WordPressのプラグインみたいにネットにアクセスしてダウンロードする機能があったら、 ソフト自体も軽くなって更に便利だろうに。バージョンアップも対応できるし。
65 : 何を言ってるの?
66 : Array#indexメソッドで * などの正規表現を使うことはできないようなのですが、 配列から正規表現を使って一致する要素を抽出したい時は each などを使って1つずつチェックしていく方法が普通なのでしょうか?
67 : なんか毎回書いてる気がするが、とりあえずArrayとHashとStringとEnumerableのメソッドは1行の動作説明だけでも読んでおくといい 「そういえばどっかにそんな処理のできるメソッドがあった気がする」とわかるだけでかなり違う というわけで Array#grep か Array#find_all あたりを使え
68 : >>67 Array#grepなんて便利なのがあったのですね。 ありがとうございます。
69 : rubyをフルパス指定した時と、ただrubyとした時で動作が違うって事ある? 同じコンソール(同一ユーザ、同一環境)で、ruby -vと/usr/bin/ruby -vだと ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]で同じ結果。 Hello worldのtest.rbを動かすと、「ruby test.rb」では正常にHello world出力。 フルパスで「/usr/bin/ruby test.rb」だとLoadErrorになるけど、 何回かやるとメッセージを変化させながら最後は正常に動く。 /usr/bin/ruby: No such file or directory -- Dg (LoadError) /usr/bin/ruby: No such file or directory -- -ggdb (LoadError) /usr/bin (LoadError)ch file or directory -- DW 一回動くとまたLoadErrorになって何回かやるとメッセージが少しづつ変化しながら最後は動くの繰り返し。 フルパスでなく、「ruby test.rb」なら何の問題もない(ように見える) こんな事ってあるの?
70 : Rubyのマジックコメントについて質問なんですが open("file.rb","w"){|f| f.print "test".toutf8 } こんな感じにファイルを保存した時って、文字コードはUTF-8Nになっていますが ここで保存したfile.rbをそのまま実行しようとすると invalid multibyte char (US-ASCII) などとでてしまいます なので後からエディタで開いて文字コードをUTF-8NからUTF-8にすると、動きます それか、または書かれてる文字コードはUTF-8N だとしても、以下のようなマジックコメントを入れるだけでも動くんですけどこれでも平気ですか? # -*- encoding: UTF-8 -*- あとRubyは結局、UTF-8NじゃなくてUTF-8でソースコードを書くんですよね? .toutf8メソッドがUTF-8Nに変換してしまうのは何故ですか?
71 : ある 平気
72 : 少し自分で調べなおしてみました >>70 で言ってたのは逆でした、RubyはUTF-8Nで書くんですね Rubyの # -*- encoding: UTF-8 -*- は、暗黙的にutf-8nをさしていて、 UTF-8Nで保存したソースファイルでマルチバイト文字を使う為には 絶対に # -*- encoding: UTF-8 -*- を入れないとエラーになるって事でいいのでしょうか? ここでまた1個疑問が出てきてしまったんですけど、 UTF-8で保存した時に、マジックコメントなしでもマルチバイト文字が使えちゃうのは、 何か意味があるんでしょうか?
73 : UTF-8Nという表現自体が不適切だ UTF-8にはもともとBOMは存在しない UTF-8とBOMつきUTF-8という列挙が妥当 BOMつきUTF-8をUTF-8と呼ぶのは意思疎通上たいへん危険
74 : 了解です それじゃBOMつきのUTF-8は気にしない事にします
75 : dgってなんだろうと思ったらグラフィックのGDのライブラリか なんかの関係で直接rubyを呼ぶとGEMPATHかなにかの環境変数がセットされないんだろう
76 : Haskellと比較用にRubyでlength関数作ろうとしたら配列はeachメソッドで各要素にアクセスできるが、文字列はeachは行単位で、文字単位にはeach_charを使わないといけないのが分かったんだが、それだと配列と文字列で別々にlength関数作らんといかんの? ダックタイピング出来るのがLLの利点じゃなかったのかと言いたい (しかも、1.9からは文字列のeachも廃止になるのでeachの構文糖衣であるfor文が文字列で使えない) 以下のコードは配列だと正しい結果を返すが、文字列だと1.8系だと正しくない結果を返し、1.9系だとエラーになる(eachメソッドが無いぞゴラァ!と怒られる) def mylength (str) sum = 0 for i in str sum += 1 end return sum end Ruby詳しくないとは言え、この動作がおかしいのだけは理解できる
77 : >>76 ・Rubyは基本的にforを使わない ・Rubyにおいて文字列と配列には全く関連性がない ・そもそもRubyの文字列は文字の集合ではない なので、ダックタイプとかの問題ではなくて文字列を文字の集合と扱うか否かの問題
78 : >>76 Haskellでマルチバイト文字列のlengthやってみて
79 : mylength([0, 1, 2]) #=> 3 mylength('あいう'.chars) #=> 3 mylength('あいう'.bytes) #=> 6 mylength('あいう'.lines) #=> 1 文字列・バイト列・行の集合等複数の見方が有るからちゃんと指定しましょうってことよね
80 : UTF8のバイト数じゃないんだ
81 : 集合は順序がないぞ
82 : そうだった でも行列とか言うと別の物に聞こえるからなあw 行の列?これもあんまり言わない気がする
83 : >>74 Ruby1.9はBOM付きUTF-8に対応していて、マジックコメントを付けたのと同じ効果がある BOM付きUTF-8はトラブルの元なのであまりお勧めはしないけど
84 : gem install hogehoge の、インストール先ディレクトリを指定することはできますか。 できれば環境変数で export GEM_HOME=... とか指定できるとうれしい。
85 : nokogiriすごすぎワロタw なにこの超絶機能。 …ところでみんなRubyで何やってんの?w
86 : 初歩過ぎて申し訳ないんですが、 <table> <tbody> <tr> <td class="hoge">いらない</td> <td>ここが欲しい01</td> </tr> <tr> <td class="hoge">いらない</td> <td>ここが欲しい02</td> </tr> <tr> <td class="hoge">いらない</td> <td>ここが欲しい03</td> </tr> </tbody> </table> こんな感じで並んでるものを、 text = doc.xpath("//descendant::table[@class='hoge']//td[2]").first.text print (text) このように書くと「ここが欲しい01」が取れるのはいいんですが、 「ここが欲しい02」が欲しい時はどうすればいいですか? lastだと最後になっちゃうし、secondなんてのはないし・・・? よろしくお願いします
87 : あ、クラスの付け方間違えたorz <table class="hoge"> <tbody> <tr> <td>いらない</td> <td>ここが欲しい01</td> </tr> <tr> <td>いらない</td> <td>ここが欲しい02</td> </tr> <tr> <td>いらない</td> <td>ここが欲しい03</td> </tr> </tbody> </table> この場合です。すいません
88 : >>85 趣味で構文解析器(GLR)を作ってたらハッシュ値のバグ(仕様?)でハマった 異なるオブジェクトのハッシュ値が同じ値になる… p [-610054458, 111138, 1, 7].hash #=> -976846141 p [-610054458, 111138, 3, 3].hash #=> -976846141 ハッシュ値が偶然ぶつかるほど大量のオブジェクトを扱ったつもりはないのに…
89 : >>88 バグだとしても、扱うときには基本的に衝突する可能性を考慮しなきゃいけないのがハッシュなんだから ハマったのはある意味幸いじゃね?
90 : RPGツクールのスクリプトで以下のコードについて質問があるのですが #-------------------------------------------------------------------------- # ● セーブ内容の作成 #-------------------------------------------------------------------------- def self.make_save_contents contents = {} contents[:system] = $game_system -----略-------------- contents[:map] = $game_map contents[:player] = $game_player contents end 「end」の上の「contents」はどういった意味があるのでしょうか? 初歩的な質問ですみません。 よろしければ御教授下さい。
91 : >>87 doc.xpath("//tr/td[2]") >>90 そのメソッドを呼びだした側に値(contents)を返してる Rubyでは関数の最後の式(の値)を呼びだした側に返す
92 : >>90 Rubyのメソッドは、とにかく最後の処理の値がメソッドの戻り値として利用される 最後の行に唐突に変数が1個だけ書いてあったとしたら、それは他の言語で言うところの return var だ Ruby では「さいごの return」は通常書かない(もちろん、処理構造から途中で抜ける場合は書く) てことで、「特異メソッドmake_save_contentsの戻り値はcontents」という意味
93 : >>87 ごめんぼけた。doc.xpath("//tr/td[2]")[1].text
94 : >>91 ご回答ありがとうございます。 C言語のreturnなのですね。 凄く省略されててビックリです。
95 : >>93 ありがとうございます。できました。 ググっても初歩すぎるのか方法がわからずに困ってました。 ありがとうございました!
96 : >>92 丁寧な説明ありがとうございます。 凄く難しい言語ですね。 Cのポインタより難しいです。
97 : [2, 8, 3].hash #=> 41 [2, 8, 1, 1].hash #=> 41 これは配列をキーとしたハッシュは使うなということだろうか
98 : 使ってもいいけどfreezeはしておくべきよ
99 : 質問させてください。 hoge huga piko peta 改行 という、半角スペースが1つの場合も2つの場合もある文字列を カンマ区切りにする方法は無いでしょうか? 「hoge,huga,piko,peta」 最終のイメージはこんな感じです。
100read 1read 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
【SecondLife】リンデンスクリプト【LSL】 (276)
Perl忍者最終決戦〜ゲスッ復活プロジェクト (438)
お前らってwinnyみたいなのつくれんの?無理なの? (194)
PHPを使って2ちゃんねるにHello Worldを書き込む (172)
P2P型の完全匿名掲示板はまだ出来ないの?その2 (691)
【node.js】サーバサイドjavascript【Rhino】 (755)
--log9.info------------------
龍谷SPIRITSファン集まれ☆ (270)
【走れ☆】Mito Holy's【ホーリーホック】 (319)
第79回都市対抗野球大会 (240)
チアは何故自意識過剰で自己顕示欲が強いの? (246)
【大阪】bt【エヴェッサ】 (131)
聖和大学チアガール部について (452)
【JCA】クラブチームチア【限定ね】 (100)
富士通チア (192)
立命館宇治高校 チアリーディング部 (241)
★東京六大学応援団マーOカラーガード★ (184)
明治神宮野球大会チアリーディング (155)
慶應義塾女子高等学校バトン部ユニコーンズ (107)
第80回都市対抗野球大会チア (463)
AA保管庫inチア板 (114)
【応援が】第3回全板人気トナメinチア 3【本分だ!】 (250)
全日本学生チアリーディング選手権大会 (166)
--log55.com------------------
彡゚ω゚ミ【ドメサカ板でもどっこいしょの3】ミ゚ω゚彡
【楽しい ≡ 走戉】辛斤 シ写 糸冬 単戈【糸冬w】
そろそろJリーグは越境ホームタウンを認めても良いのではないか
(・へ・)こじまこ 本スレ(・へ・)
ガンバ大阪情報総合スレ Part3
グランパスくん
サッカー選手の話題
△▲ モンテディオ山形情報総合スレPart4 ▲△