1read 100read
2012年6月プログラム26: Ruby 初心者スレッド Part 49 (790) TOP カテ一覧 スレ一覧 2ch元 削除依頼
Ruby で GUI するスレ (378)
Message Passing Interface (MPI) 統合スレ (503)
COBOL vs Java 2戦目 (951)
C++ に未来はあるか??? そんなものはない!!! (213)
こんなコンパイラは嫌だ!7行目 (908)
【早稲田】カブロボコンテスト Part2【ホリエモン】 (808)

Ruby 初心者スレッド Part 49


1 :12/05/09 〜 最終レス :12/07/05
プログラミング言語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元 削除依頼
ネトゲ開発なら俺に聞け! (374)
英語は、訳さずに読もう with 英英辞典 (236)
大震災に対してプログラム技術的に何か出来ること (238)
【会津】パソコン甲子園2004【若松】 (777)
Perlを使って2ちゃんねるにHello Worldを書き込む (213)
音声合成プログラムを作りる (316)
--log9.info------------------
いとしのケイリン (479)
【SPEED CHANNEL】スピーチーズ【CDリリース】 (276)
第2回最強コテ決定戦@共同通信社杯 (753)
282軍団 (597)
懐かしい選手を次々と挙げていくスレ (735)
96期ってどんな感じ? (528)
本当に不要な競輪場ベスト3はどこ? (328)
【必殺!仕事放棄人】兵藤一也3【後閑の横が好き】 (587)
【参上】オレが山賀雅仁だ!【木暮キラー】 (359)
★今年の競輪界を漢字一字で書くと・・★ (543)
GT第25回読売新聞社杯全日本選抜競輪@大垣3 (564)
【弥彦】 阿部 康雄【元トラック運転手】 (308)
【山田】向日町競輪廃止を回避するスレ【】 (412)
【祝・伸GT制覇】岡山W三宅スレ【達也もガンガレ】 (565)
【変幻自在】朝倉佳弘【清嶋二世】 (313)
【人間魚雷】ヒットマン!藤原憲征【キレる刺し脚】 (309)
--log55.com------------------
【フェイク?リアル?】「日本人上司がベトナム人技能実習生を犬に!」動画ツイートに騒然
【朝日新聞】「日韓両国は二卵性双生児」 なぜ歩み寄れないのか★3
【タバコ】葉巻の一種「リトルシガー」増税へ 政府・与党検討 わかばやエコー
【NHK】ペロリストの皆さんへ、お札を数えようと指を「ぺろっ」本のページをめくる時も「ぺろっ」
【中国スパイ集団】政治干渉ねらい立候補画策か 豪首相が懸念示す 中国外務省「でっち上げだ うそはうそだ」
【大阪不明女児保護】真っ暗な道、閉め切った部屋…監禁女児の7日間 ★2
【女系天皇】「慎重に検討すべき」 #自民 #岸田政調会長
【小6女児誘拐】逮捕の伊藤仁士容疑者「助けを求めていた子を助けてあげた。正しいことをした」★5
20140929122727
USA