Ruby 初心者スレッド Part 19at TECH
Ruby 初心者スレッド Part 19 - 暇つぶし2ch910:デフォルトの名無しさん
08/06/21 04:11:42
>>909
READMEに、JRubyのコンパイルにJDK1.5以上が必要って書いてあるからそうなんだろ

911:909
08/06/22 09:47:53
>>910

ネットの記事では1.4.2でも動作するって書いてあったのですが
実際はJDK5.0でないとだめなようですね。

返答ありがとうございました。



912:デフォルトの名無しさん
08/06/22 12:26:13
あるHTMLファイル(何でもいいんですが一般的なWebページの)からリンクしているURLを
取り出そうとしています。ぐぐったらscrapiとかいうので簡単にできたんですがかなり
処理速度が遅いのです。

高速に取り出そうとしたらやはり正規表現で取り出すしかないのでしょうか?
hpricotというのも見つけたのですがいまいちよくわかってません。

robustかつ高速に取得する方法はないものでしょうか?

913:デフォルトの名無しさん
08/06/22 12:43:09
利用者のIT製品に対する基本姿勢は、Microsoftを相手にするときのそれが最も健全であって、
ブーブー言いながら使うのが一番だと思うが、最近は企業ブランド崇拝みたいのができあがっていて、
Apple教団はご愛嬌と思っていたが、何だかこれも同じような感じで、嫌な雰囲気だ。Googleしかり。

特にヘビーユーザーがそういう信者というか、エヴァンジェリストになって
教義に染まない利用者の不満をさえぎる壁になると異様。

そういうのって普及前のファンダムの色が残っているから、と楽観視していたのに。
これだけシェアを拡大しても、いっこうにあらたまらないな。


914:デフォルトの名無しさん
08/06/22 12:46:44
>>912
自力でサイト固有の正規表現考えて抽出してそのサイトの URI に + するのが簡単
正規表現めどいという人に Hpricot

require 'rubygems'
require 'hpricot'
require 'open-uri'

uri = URI.parse('URLリンク(www.ruby-lang.org)')
doc = Hpricot.parse(uri.read)
puts doc.search('a').map{|e| uri + e['href']}.find_all{|e| e.scheme =~ /\Ahttp/}.uniq

実行結果
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)

...

915:デフォルトの名無しさん
08/06/22 12:53:43
('a')がAAに見えた

916:912
08/06/22 13:27:20
>>914
ありがとうございます。
scrapiよりは速そうです。scrapiが今使ってるマシンだと動かない(64bitに対応していない?)みたいなので
直接比較はできませんが。でも、robustという意味ではyoutubeのURL入れるとだめっぽいですね
ex : URLリンク(jp.youtube.com)

サイト固有の正規表現を記述するのは一番確実でしょうが一番汚いやり方だと思うので
スマートかつある程度速くできないものかなぁと試行錯誤中です。

917:デフォルトの名無しさん
08/06/22 13:47:32
URLリンク(jp.rubyist.net)

918:デフォルトの名無しさん
08/06/22 13:51:42
>>863
遅レスでもうみてないかもしれないけど。

Railsはともかく・・・
もし、あなたがVPSの管理もする(専用の管理者があなただけ)のなら、VPSを今すぐ解約しよう。
そのうちクラックされて他人に迷惑をかけるだけですよ。

まずは、ローカルで試す(Windowsでもできる)か、ローカルネットワークで外に公開しないサーバーを建てるなどをして知識を十分にしてからでも遅くはないよ。
VPSの場合、RubyとかRailsとかやる前にサーバーの管理の方法も一通り学んでおく必要がある。

919:デフォルトの名無しさん
08/06/22 13:53:02
>>916
それは、httpじゃなくて、ttpだからでは?

920:912
08/06/22 14:14:22
>>919
単純に貼るときに抜いただけです。httpでやってhpricotで例外吐きます。

921:デフォルトの名無しさん
08/06/22 15:34:31
初めまして、
今回ruby on railsを勉強したいと思って、インストールしようとしとして
$ gem install rails --include-dependenciesを実行したんですが、うまくいきません。
だれか、情報があったら教えてください。

C:\ruby>gem install rails --include-dependencies
INFO: `gem install -y` is now default and will be removed
INFO: use --ignore-dependencies to install only the gems you
Bulk updating Gem source index for: URLリンク(gems.rubyforge.org)
Bulk updating Gem source index for: URLリンク(gems.rubyforge.org)

↑の状態で一時間ぐらい止まってます。別にPCは動くので、フリーズとかでもないです。
URLリンク(www.rubylife.jp)のサイトの手順通りにやったんですが…

ちなみに、ruby及びRubyGemsもちゃんとインストールしてあります。

どなたか情報お願いします。
OS: Windows Vista です。

922:デフォルトの名無しさん
08/06/22 16:15:27
>>921
マシンスペックにもよるが、Rails 新規インストール時に数時間返答がないのは普通
1日以上待った例もあるからそのまま放っておけ

923:デフォルトの名無しさん
08/06/22 16:19:26
>>921
Debianの例で悪いけど、回避策もやはりあるみたいよ。

URLリンク(d.hatena.ne.jp)

924:デフォルトの名無しさん
08/06/22 16:36:28
めんどくさいなあ

>>916
どうして例外が起こったかはわかる?
残念だけど、Web のスクレイピングは文字通り例外との戦いだぞ
サイトごとに調整しなければならないと思ってくれていい
HTML や HTTP の知識はあるかな?
たとえば以下の方法だと 142 のリンクが抽出されてるけど、本当に必要なのは数個だろ?

require 'rubygems'
require 'hpricot'
require 'open-uri'

uri = URI.parse('URLリンク(www.ruby-lang.org)')
doc = Hpricot.parse(uri.read)
puts doc.search('a').map{|e| e['href']}.compact.map{|e| uri + e}.find_all{|e| e.scheme =~ /\Ahttp/}.uniq


925:デフォルトの名無しさん
08/06/22 16:46:58
uri が前のままだった

本質的には puts doc.search('a').map{|e| e['href']} だけでいい
でも、それだと相対 URL で書かれているリンクがわけわからなくなるのでわざわざ uri に join してる
http:// と https:// 以外を取得しても意味がないことが多いからわざわざ http:// と https:// 以外を除いてる
で、Youtube では「onclick で JavaScript 起動しかさせないリンク」という href 自体がない <a> タグがあるのでわざわざ href が nil な場合を compact で除いてる
他のサイトでは「欲しいリンクだと思ったら実は画像貼り付けのボタンでPOST」とかにも対処しなければならないかもしれない

require 'rubygems'
require 'hpricot'
require 'open-uri'

uri = URI.parse('URLリンク(jp.youtube.com)')
doc = Hpricot.parse(uri.read)
puts doc.search('a').map{|e| e['href']}.compact.map{|e| uri + e}.find_all{|e| e.scheme =~ /\Ahttp/}.uniq


926:デフォルトの名無しさん
08/06/22 16:58:19
HTML の知識はないとダメだよね
後出しで youtube 出してきたけど、欲しいのは動画ファイルのURLや各種一覧にあるURLだろうし
これからまた絞らないといけないだろうな(おそらくはCSSセレクタとかXPathとかあのへんの知識が要る)

927:デフォルトの名無しさん
08/06/22 17:01:13
リンクされてるURLを抜き出すライブラリを作ってるというならともかく、
無駄にあれこれ悩むよりさっさと正規表現使って抜き出せばいいと漏れは思う。

928:デフォルトの名無しさん
08/06/22 17:03:18
そういう意味では>>914の1行目の時点で回答は出てるんだよな

929:デフォルトの名無しさん
08/06/22 17:32:00
うっかり汎用性を求めてしまうのはRubyスクリプトの悪い癖
初期ではそのノリで標準ライブラリになってしまったりしたが

930:デフォルトの名無しさん
08/06/22 17:33:53
>>921
rubygems 1.2 で劇的に改善されたらしい。
URLリンク(rubyforge.org)


931:930
08/06/22 17:38:48
gem 1.2.0 にしたら、gem が笑っちゃうぐらい高速になったよ。

932:デフォルトの名無しさん
08/06/22 18:19:17
RubyKaigがニコ動うpされまくってるぜ

タグ検索 RubyKaigi2008‐ニコニコ動画(SP1)
URLリンク(www.nicovideo.jp)

933:デフォルトの名無しさん
08/06/22 18:24:58
>>931
メチャメチャ速くなってる気がするwwww
gem updateがさっくりオワタww

934:デフォルトの名無しさん
08/06/22 18:58:55
>>932
お、今年はうpが早いな。
あとで見る。

935:デフォルトの名無しさん
08/06/22 19:27:22
標準の関数的メソッド以外で引数のカッコ省略するのやめようぜ

936:912
08/06/22 21:47:13
>>924-925
遅くなりましたがありがとうございました。
やはり例外との戦いなんですね。参考にします。

>>926
youtubeはたまたまブラウザで開いてるURL全部入れて試しただけです。
youtubeから抜き出したいというわけではなかったのです。

937:デフォルトの名無しさん
08/06/23 14:10:30
gem1.2は爆速w
>>930ありがとう

938:日立バキバキ高野くん祭り
08/06/23 20:00:05
1.日立製作所社員の高野くん(高野光弘)が会社を誹謗中傷して機密も漏洩
2.日立のユーザーにも「キチガイ」との障害者差別発言
3.日立製作所の企業イメージをバキバキにする
4.自身のサイトの『32nd diary』に掲載
5.日立製作所に通報される
6.あせって似顔絵削除
7.火に油を注ぐだけで所属する日本UNIXユーザ会にも通報祭り勃発
8.「給料泥棒」と説教される
9.「殺します」と殺人予告をして警察に事情を聞かれる←イマココ

高野光弘の行動
現在は、過去の記事を閲覧できなくして、「本日の日記はツッコミ数の制限を越えています」としています。
まずは、不愉快な思いをされた方々に謝罪するべきなのではないでしょうか。

高野光弘の発言
「まぁ、どこの団体もそんなにヤワじゃないので、平気なんですけども。
日本UNIXユーザ会が一番対応に慣れてる感じ。」

日本UNIXユーザ会が対応に慣れているか、みなさん確認してみてください。

連絡先
URLリンク(www.net.intap.or.jp)

939:デフォルトの名無しさん
08/06/24 00:00:05
postgresql にdbiを使って接続しようとしたんですが、うまく行きません。

/usr/local/lib/ruby/site_ruby/1.8/dbi.rb:368:in `load_driver':
Could not load driver (no such file to load -- /usr/local/lib/ruby/site_ruby/1.8/dbd/Pg) (DBI::InterfaceError)

というエラーがでてきます。

$ echo 'export PATH=/usr/local/psql/lib:$PATH' >> ~/.bash_profile

でライブラリへのパスは通っていると思うんですが、
解決策をお教えいただければと思います。

940:デフォルトの名無しさん
08/06/24 00:44:50
>>939
/usr/local/lib/ruby/site_ruby/1.8/dbd/Pg.rb
は存在するの?

941:デフォルトの名無しさん
08/06/24 06:51:08
UNIXにおいては、ライブラリパス(というか、soの在処)は
LD_LIBRARY_PATH
あたりで設定すると記憶しているが。

942:デフォルトの名無しさん
08/06/24 14:23:27
linuxではldconfig とかも使う。

943:デフォルトの名無しさん
08/06/24 21:12:24
Solarisならcrleとかね

944:デフォルトの名無しさん
08/06/24 21:14:08
ldd でlib全部リンクできてるか確認するとかね

945:デフォルトの名無しさん
08/06/24 21:35:17
Macならotool -L だな。


946:デフォルトの名無しさん
08/06/24 21:54:40
939です

皆さんご丁寧にありがとうございます。

>>940

/usr/local/lib/ruby/site_ruby/1.8/dbd/Pg.rb は存在しなくて、
/usr/local/lib/ruby/site_ruby/1.8/dbd/Pg/Pg.rb があります。

PATHやLD_LIBRARY_PATHはOKな筈なんですが、うまく行かないです。
こちらの環境は、macなのでotool -L などでもう少し格闘してみます。

947:デフォルトの名無しさん
08/06/24 23:14:53
>>946
ruby-pg はインストールしてる?

ruby -rpg -e0
を実行して何も出なければ入っているって事なんだが。

それにしても分かりにくいエラーメッセージだな>dbi
真の原因を隠すなよ。

948:デフォルトの名無しさん
08/06/25 04:05:46
Rubyでシューティングゲームつくってるんですけど

949:デフォルトの名無しさん
08/06/25 04:08:31
ごめ 途中でカキコしちゃった
Rubyでシューティングゲームつくってるんですけど 弾が当たってゲームオーバーになった時に画面全体を赤っぽくしたいんですけど なにかいい方法ありませんか?

一応予定としては
画面全体を赤で塗る 
透過する 
って考えているんですけどがんばっていろいろ探ってみてもやり方がわかりませんorz どうかよろしくおねがいします。

950:デフォルトの名無しさん
08/06/25 04:33:13
>>949
手順
1.Rubyをアンインストール
2.HSPをインストール
3.「シューティングゲームビルダー」でぐぐる。
4.HSPをアンインストール

わざわざRubyで作る意味がわからない

951:デフォルトの名無しさん
08/06/25 05:02:34
ん十年前の質問を思い出すなぁ

C言語でゲームを作りたいんですがどうすればいいですか?



しるかーぼけー

952:デフォルトの名無しさん
08/06/25 07:11:46
Rubyかんけえねえw

953:デフォルトの名無しさん
08/06/25 07:12:54
少し質問があるのですが、数値的なシミュレーションをして
結果を分布図(正規分布の図みたいなの)として出力したいのですが、
適したグラフライブラリはどんなものがありますでしょうか?

954:デフォルトの名無しさん
08/06/25 07:20:52
Excelとかw

955:デフォルトの名無しさん
08/06/25 07:35:18
数値だけ出力して、グラフはgnuplotに任せるとかはダメかな?

956:デフォルトの名無しさん
08/06/25 07:59:27
gnuplotのラッパあったよな、確か。
後は

Rubyist Magazine 0006 号
Ruby Library Report 【第 5 回】 数値計算と可視化
URLリンク(jp.rubyist.net)

とか。

957:デフォルトの名無しさん
08/06/25 09:04:23
>>954-956
ありがとうございます。

ああ、gnuplotでもいいか。

GnuplotのRuby用のインターフェースはこれですね。
URLリンク(rgplot.rubyforge.org)
gemにもありました。Windowsでもつかえるかな?

あとは、テキストのとかw
Histogram class for ruby(Kodama's tips page)
URLリンク(www.math.kobe-u.ac.jp)

かっこいいグラフとか、
Gruff Graphs for Ruby | Ruby on Rails for Newbies
URLリンク(nubyonrails.com)

>>956
数値計算のライブラリの詳しい紹介、助かります。

うまく画像化できそうです。一通り試してみようと思います。
ありがとうございました。

958:デフォルトの名無しさん
08/06/25 09:07:44
ちょっとした疑問なのですが、srandとかrandって
何故、クラス化かモジュール化されてないのでしょうか?
徹底的にOOPしているRubyにおいてrandは不思議な存在に思えます。

MLのログなど見てみたのですが、過去にクラス化の議論はされているようで↓
URLリンク(blade.nagaokaut.ac.jp)

パッチが作られていて、1.9で当てられるようなことになっているのですが、
SVNのtrunkや1.9.2とかのソースを見ても当たってないようです???

959:デフォルトの名無しさん
08/06/25 09:22:20
>>949
どんなライブラリを使ってるのかが分からないと、助言のしようがない

960:デフォルトの名無しさん
08/06/25 09:56:07
ArgumentErrorエラーメッセージのことで質問させてください。
wrong number of arguments(1 for 0)
このとき「引数の数が間違えてる」のは文字通りわかるのですが、
(1 for 0)はどう読んだらいいんでしょうか?
引数なし(0)のところに1つ(余計に?)渡してる、みたいなニュアンスでしょうか?

今、あるライブラリを使っていてこのエラーが出ているのですが
引数の数は間違えておらず(関数側にもデフォルト値も設定されている)
原因を探しているところです。

961:デフォルトの名無しさん
08/06/25 10:10:38
>>960
お前英語苦手だろ

962:デフォルトの名無しさん
08/06/25 10:53:50
Rubyの入門書はエラーメッセージに 2~3節割くべきだと思う

>>960
1 for 0 は「0 個の代わりに 1個得た」と読む
日本人にはまだわかりにくいな
(got 1, required 0) とでも書いてくれればわかりやすいんだが
引数総数しか問題にしてない記述で、引数 0個のメソッドなのに引数が 1個渡されてるというエラーだ
このメソッドに引数を渡してはいけないってことだな

irb> 'abc'.downcase('param')
ArgumentError: wrong number of arguments (1 for 0)



963:960
08/06/25 11:03:15
>>962
ありがとうございます。
直接呼び出しているメソッド内から呼ばれていたメソッドで
引っかかっていたようでした。
構文が古いのか(?)マニュアル見て書き直してみたらうまくいきましたm(_ _)m

964:デフォルトの名無しさん
08/06/25 12:14:18
>>958
URLリンク(doc.loveruby.net)


965:デフォルトの名無しさん
08/06/25 12:30:57
>>950 一応Rubyの書き方覚えつつ作ろうかなぁと思ってちまちまつくってます。

ライブラリはSDLとfpstimerはいってます。

966:デフォルトの名無しさん
08/06/25 12:55:07
>>964
んーたぶんそれと違うような。Mersenne Twisterをラップしたのなんだけど・・・

>>965
Rubyでゲーム制作ならこっちのスレの方がよいかと思う
【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
スレリンク(gamedev板)

967:デフォルトの名無しさん
08/06/25 13:03:33
>>966
普通の乱数ジェネレータのオブジェクト化ね。
多分やってない、やる気がないだけだと思うけど。

確か、過去の議論で、うまい名前とうまいAPIがあれば、みたいな
話になってたかな。

968:デフォルトの名無しさん
08/06/25 13:10:11
>>966 スレちソマソ 誘導サンクスー

969:958
08/06/25 13:20:17
MLのその後のRandomパッチの議論を見つけました。
URLリンク(blade.nagaokaut.ac.jp)

なんかグダグダのまま頓挫してますね・・・。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch