Ruby 初心者スレッド Part 23
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/11/20(木) 04:30:21【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
【最新安定版の Ruby1.8.7 の使用をお勧めします】
※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。
1.9 の新機能の一部が利用可能なので初学者にお勧めです。
※ただし十分安定しているとは言えないので
プロダクション環境での利用にはお勧めしません。
関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・モジュール名やエラーメッセージでググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0792デフォルトの名無しさん
2008/12/24(水) 00:29:41現在のRubyはそのような
「こんなことまでわざわざ書く理由って何よ?」
という人の努力によってなんとかうまく支えられております
マニュアル書く人しかり、丁寧な導入記事書く人しかり
0793デフォルトの名無しさん
2008/12/24(水) 00:49:24真意は知らないけど個人的感想としては、mechanizeのライブラリ構造も
単純ではないしRubyの勉強方法として良い手だと思った。
「理解した(自称)」以上に理解が進んでないと説明することなんて
できないんだよなぁ・・・。説明してる内に薄っぺらさが露呈する。
告白デバッグが気付かせてくれるのはまさにそれ。
0794デフォルトの名無しさん
2008/12/24(水) 00:58:310795デフォルトの名無しさん
2008/12/24(水) 03:08:36Keyはentry_1->entry_nまででvalueは単語数とか他で計算した値を入れようと思うのですが.
0796デフォルトの名無しさん
2008/12/24(水) 03:27:22いつのまに・・・
0797デフォルトの名無しさん
2008/12/24(水) 05:57:55ruby script\generate controller main index
を実行したのみのプロジェクトでRubyのテストをしています.
webrickを起動して
http://localhost:3000/
のhtmlページは,問題なく表示するのですが
http://localhost:3000/main
でindexページを見ようとすると
1度目は正常に表示されますが,
更新ボタン(もしくは,アドレスバーの移動ボタン)を押すとWebrickが次のようなエラーを出して終了していしまいます.
127.0.0.1 - - [24/Dec/2008:05:44:28 東京 (標準時)] "GET /main HTTP/1.1" 200 283
- -> /main
127.0.0.1 - - [24/Dec/2008:05:44:33 東京 (標準時)] "GET /main HTTP/1.1" 200 283
- -> /main
C:/Ruby/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/connection_adapters/mysql_adapter.rb:196: [BUG] Segmentation fault
ruby 1.8.6 (2007-09-24) [i386-mswin32]
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
ひとつ目の-->/mainが移動時,ふたつ目が更新時です
どのように対応すればいいでしょうか.
0798デフォルトの名無しさん
2008/12/24(水) 07:21:44search メソッドの返り値は Hpricot::Elements で、配列のような動作をするっていうか配列でできることは全部できる
これに詰まってる要素に当たるものは Hpricot::Elem だ
Hpricot::Elem にはタグに囲まれてる文字列を適当に返す inner_text メソッドや
HTMLで整形して返す inner_html メソッドがあるし、
Hpricot::Elem オブジェクトから search でさらに探すこともできる
それ以上のもんではないので、普通にどうにかして作れ
0799デフォルトの名無しさん
2008/12/24(水) 08:43:05[BUG]と出た場合、Rubyのスクリプトレベルの誤りではないので、
開発サイドに再現コードを教えるくらいしかできることはない。
0800デフォルトの名無しさん
2008/12/24(水) 08:49:16回避できるものもあるけど
0801デフォルトの名無しさん
2008/12/24(水) 09:45:550802デフォルトの名無しさん
2008/12/24(水) 10:59:53ruby1.8にて、ptyとexpectモジュールで、自動sshログインをしようとしているのですが。
cygwin上では、問題なく動かせるものの。
solaris(free10)では、spawn('ssh ***.***.**')の所で
> open: pty slave: No such file or directory
とでてしまいます。
このspawnの内部をsshのフルパス指定にしたり、lsなど他のコマンドに代えても同じでした。
どうもptyモジュールが上手く動かせてないと考えているのですが。。。
特にptyにはパラメータはなさそうです。
ptyがやろうとしてる仮想tty?という処理がなんなのかが理解できてない....
すみません、どなたか動かすヒントだけでも教えてください。
0803デフォルトの名無しさん
2008/12/24(水) 11:18:49Solarisスレで聞く
0804797
2008/12/24(水) 13:03:37こちらの環境が悪いんじゃなくて
Ruby(もしくはRails)開発側が悪いってことでしょうか?
手書きでは,まだコードを一行も書いていないので
そんなことないと思いたいのですが...
Rubyのダウングレードとかで対応できないか今夜にでもやってみます...
0805デフォルトの名無しさん
2008/12/24(水) 13:22:51まずは1.8.7-p72のか、せめて1.8.6の一番新しいp287を試してみるべき。
http://www.garbagecollect.jp/ruby/mswin32/ja/download/release.html
one-click installer使ってるんだろうけどこの際我慢。
0806802
2008/12/24(水) 14:13:10なにかヒントがないかとざっと眺めると、 ./ext/pty を発見。
ダメ元でpty.c をのぞいて、問題点を探してみると、
どうも"TIOCSCTTY "の定義が無い事がまずいんじゃないかと推測。
この情報を元にググってみると
去年の8月、ruby-lang に "Bug in ruby extension" というスレを発見
> I noticed that Solaris 10 does not support TIOCSCTTY so in function
> establishShell() the child process closes the slave device and reopens it to ...
どうやらSolaris 10 において、ptyの問題が指摘されている模様。
TIOCSCTTY がキーワードみたいだが。 私では何がまずいか理解できない(汗)
このスレで問題対応パッチが登場し、最後にmatzさんが"そのパッチをコミットしてくれー"と書いている。
これが今回の私の問題点と同じであるなら、最新版なら動くはずじゃん。と思い・・・.
あ、でも、1.8.7-p27 が 1.8系の最新版ですよねぇ。
うぐぐ、この問題と関係がないのかなあ。。。。(´・ω・`)ショボーン
>803
レスサンクス。
推測通りsolarisの環境がらみの問題なら、海外で聞いた方がよさそうですね。
英語で聞くのは閾が高いなあ...(´・ω・`)
0807802
2008/12/24(水) 14:14:57s/1.8.7-p27/1.8.7-p72/
0808デフォルトの名無しさん
2008/12/24(水) 15:34:50Passenger入れろw
っていうほどのメモリもないみたいだがwww
0809デフォルトの名無しさん
2008/12/24(水) 16:20:13<form action="" method="post">
<input type="text" name="server" value="#{server}" />
<input type="text" name="name" value="#{name}" />
<input type="submit" value="更新" />
</form>
それも同じ形式のフォームを何個か繰り返しおいて、しかもその個数も可変にしたいと思っています。
さらにそのデータは pstore に保存したいと思っています。
古い CGI での方法ならば変数名 server などに番号をつけて server1, server2 などという変数名として
ループで 1..max をまわして処理するというのが思いつくのですが、Ruby 的にエレガントな方法はあるのでしょうか?
配列やハッシュなどを使ってスマートに書く方法があったら教えていただけませんでしょうか。
0810デフォルトの名無しさん
2008/12/24(水) 17:50:420811797
2008/12/25(木) 00:36:49どちらをインストールしてみても結果は一緒でした...
これってRuby開発者側に伝えた方がいいのでしょうか
うちの環境のみの再現だと思うのですが...
0812デフォルトの名無しさん
2008/12/25(木) 01:18:370813デフォルトの名無しさん
2008/12/25(木) 05:11:00hpricotやNokogiriで指定しようにも複数のページでXPATHのaの順番が違っていて取得できません。
0814813
2008/12/25(木) 05:36:00doc/"a[text()*='ABC']"でできますね。
Hpricotとかをtagやセレクタでぐるぐる回すものだと勘違いしてました。
お騒がせしました。
0815デフォルトの名無しさん
2008/12/25(木) 06:04:46自分のコードかデータにバグを引き起こす原因があるとは思わないの?
0816デフォルトの名無しさん
2008/12/25(木) 06:44:34http://pc11.2ch.net/test/read.cgi/tech/1227123021/l50
0817デフォルトの名無しさん
2008/12/25(木) 06:51:44とりあえず該当の行を見て、まずどこて落ちたのかを調べるべき
それでも本体のバグっぽかったら諦めて報告
>>809
本題とは関係ないけど、CGIアプリケーションでPStore使うのはオススメしない
rubyのバージョンが古くなるとデータ読めないことがあるから
自分しか使わないスクリプトなら問題はないけど
今ならYAML::Storeオススメ
0818デフォルトの名無しさん
2008/12/25(木) 13:26:33hiddenを入れて対処できました。ありがとうございました。
>>817
そうなんですね。YAML::Store に書き換えておきました。ありがとうございました。
0819デフォルトの名無しさん
2008/12/25(木) 13:59:37>>797見てそう思う方がおかしくないか?w
でもmysql環境を見直してみる価値はありそう。
0820デフォルトの名無しさん
2008/12/25(木) 15:36:57uninitialized constant StanderdError (NameError)
こんなメッセージが出てプログラムが途中で止まることがあるですけど、これって何が原因なんでしょうか。
0821デフォルトの名無しさん
2008/12/25(木) 15:38:47>StanderdError
StandardErrorと書いたつもりのどっかでスペルミスしてる。
0822デフォルトの名無しさん
2008/12/25(木) 15:45:45class MyHogeError < StanderdError
end
とか書いてあるんだな
がっちょわるー
>>820
使ってる外部ライブラリの中から「StanderdError」という文字列を探して「StandardError」に直接書き換えとく
0823デフォルトの名無しさん
2008/12/25(木) 15:51:11これをあまり心配してない俺
その時になってから過去のバージョンの pstore で読んで、新しいバージョンの pstore で書き出せばよくね?
PStore を YAML で置き換えて常用するなんてブルジョワジョワジョワに過ぎるだろ
0824デフォルトの名無しさん
2008/12/25(木) 15:57:22ファイルが数KB程度で収まるなら読みやすいYAMLのほうがよかろう
なんかよくわからん大量のデータの数百KBを読み書きしまーすというのならさすがにちょっと
うっかり画像を保存したことがあるが遅くて死んだ
0825デフォルトの名無しさん
2008/12/25(木) 16:06:11ちょっとしたデータのシリアライズにはyaml/storeがお気に入り。
0826デフォルトの名無しさん
2008/12/25(木) 16:09:07用途に応じて使って適宜バックアップだの負荷測定だのしなきゃならん
0827デフォルトの名無しさん
2008/12/25(木) 16:15:51ガイドみたいなのがあるといいよね
ってるびまにあるのか
0828797
2008/12/25(木) 16:26:27mysql関係ですか,
とりあえず今夜は,sqliteで同じように実装してから
再現確認してみます.
0829デフォルトの名無しさん
2008/12/25(木) 16:51:39>>822
begin
open("http://*****")
rescue Timeout::Error
rescue StanderdError <<<<<某プログからのコピペまんま
rescue EOFErro
rescue Exception
rescue NameError
end
こんな感じで例外関係の対処法ググっては追加していた中で某ブログからコピペしたものが、
スペルミスしていたとは..。
即回答ありがとうございました。実は昨日からハマってました。
0830デフォルトの名無しさん
2008/12/25(木) 17:05:59コピペうんぬんより、エラーメッセージを*よく*見て原因を考えるクセをつけようぜ!
0831デフォルトの名無しさん
2008/12/25(木) 22:03:260832デフォルトの名無しさん
2008/12/25(木) 22:24:030833デフォルトの名無しさん
2008/12/25(木) 22:26:470834デフォルトの名無しさん
2008/12/25(木) 22:39:08位置的に初学者本の次くらいなんじゃねーかとは言われてないわけでもないが
0835デフォルトの名無しさん
2008/12/25(木) 22:46:05Rubyで作る奇妙なプログラミング言語 〜Esoteric Language〜
ttp://www.amazon.co.jp/dp/4839927847/
> 1-2 サンプルプログラムに特化した言語、HQ9+
> HQ9+とは
> HQ9+インタプリタを作ってみよう
> 1-3 8つの命令ですべてを記述する言語、Brainf*ck
> 1-4 決して印刷できない言語、Whitespace
> 2 Esoteric Languageを作る
> Esoteric Languageの設計と実装
> Starry言語の設計
> 付録 Esoteric Language傑作選
> Befunge、 Wierd、Shakespeare、Chef、Unlambda、Grass
> False、NULL、AAAAAAAAAAAAAA!!!!、INTERCAL、Malbolge、KEMURI、Taxi
0836デフォルトの名無しさん
2008/12/25(木) 23:09:53...GRASS、無いのかw
0837デフォルトの名無しさん
2008/12/25(木) 23:15:39GrassとGRASSは違う言語?
0838デフォルトの名無しさん
2008/12/25(木) 23:27:350839デフォルトの名無しさん
2008/12/25(木) 23:34:551.9.1のリリースが迫って書籍もまた出てきそうだな。
0840デフォルトの名無しさん
2008/12/26(金) 01:05:48解析させるデータ数が多いとか相互参照が多いときとかですかね?
0841デフォルトの名無しさん
2008/12/26(金) 01:11:04どういう時にリレーショナルデータベースを使うか、という質問?
0842797
2008/12/26(金) 05:53:14原因はいまだにわかりませんが
Railsのヴァージョンを
2.2.2 -> 2.1.2
へとダウングレードすることで正常動作するようになりました.
mysql postgres sqlite3
と三つ試しても同じ結果だったので,
諦めかけてましたが,
友人が作ったv2.1.2のプロジェクトを実行したとき
偶然うまくいったのがきっかけでした
0843デフォルトの名無しさん
2008/12/26(金) 11:31:16Rubyの「メモリ内でのハッシュ構造+ディスク上でのPStoreのようなもの」ではどうにもならない場合
具体的には>>841
0844デフォルトの名無しさん
2008/12/26(金) 12:35:59オブジェクトのままシリアライズした方が良い場合も結構ある
後者だと単純にSQLに置き換えるって訳には
0845デフォルトの名無しさん
2008/12/26(金) 23:20:20url = "http://bit.sikkou.jp/servlet/xxw.XxWServlet?O_sale_unit_id=00000006772&O_court_cd=31131&O_thing_cls=2&O_tender_flg=1&PAGEID=XxW04_jp_0130&ACTION=anchor"
doc = Nokogiri::HTML(open(url))
puts doc.xpath('//b[text()="公告日"]')
「<b>公告日</b>」になるはずなのだが,
結果は空白(要するに検索できてない)
エンコードの問題でしょうか?
ちなみにスクリプト自体はUTF-8です。
0846デフォルトの名無しさん
2008/12/26(金) 23:25:17あ〜、これは誰かがどっかで説明しないといけないんだけど、Nokogiri.new は実は引数を3つとるんだよ
第3引数は文字列の文字エンコードを書く
doc = Nokogiri::HTML(open(url), nil, 'SHIFT_JIS')
って書いてみ
0847845
2008/12/26(金) 23:47:25お〜、そうでしたか。
一応、RDocのRead Meを参考にしたのだが,,,
さんくすです。
0848デフォルトの名無しさん
2008/12/27(土) 11:12:05それってオラ本(米)の翻訳? 旧版なんてあったの?
0849デフォルトの名無しさん
2008/12/27(土) 15:00:57すまん。オームのサイトで見つけたもんだから「プログラミングRuby 第○版」と間違えた。
あっちも1.9系で次版を出すみたいだから。
0850デフォルトの名無しさん
2008/12/27(土) 16:26:07オブジェクト指向スクリプト言語 Ruby、だったか。
今確認するまであれの2版が出るのかと思ってた。
0851デフォルトの名無しさん
2008/12/27(土) 16:29:520852デフォルトの名無しさん
2008/12/27(土) 20:52:59あるのに比べりゃマシだろう。
0853デフォルトの名無しさん
2008/12/27(土) 20:59:030854デフォルトの名無しさん
2008/12/27(土) 21:26:010855デフォルトの名無しさん
2008/12/27(土) 21:33:39徹夜3日目
0856デフォルトの名無しさん
2008/12/27(土) 21:57:350857デフォルトの名無しさん
2008/12/28(日) 00:26:50わかっててその突っ込みなのか? ><
Amazon.co.jp: はじめてのPython (I・O BOOKS)
http://www.amazon.co.jp/dp/4777513211/
Amazon.co.jp: 初めてのPython
http://www.amazon.co.jp/dp/487311022X
の二つだよ。
0858東日本かわいいものを集める会 会長
2008/12/28(日) 00:44:25オライリー本も表紙を見て、買う気がうせる。
他方、Ruby は名前で得している。
0859デフォルトの名無しさん
2008/12/28(日) 01:15:13見かけという意味では Python は indentation に意味を持たせるという
ところも損してるな。今時の他の言語を使ってる人からすると、ちょっと
敷居が高くなる。Ruby は特に多言語の経験がある人に始めやすいところで得してる。
0860デフォルトの名無しさん
2008/12/28(日) 01:17:15amazonのレビューがやたら高評価なので期待してる
設計者が著者の一人ってことで、やっぱりバイブル扱いされるのだろうか
0861デフォルトの名無しさん
2008/12/28(日) 01:20:53> 見かけという意味では Python は indentation に意味を持たせるという
> ところも損してるな。
これは初学者向けの言語と言う意味では利点だと思うのだが。これでちゃんとインデントを打てるようになると、他の言語にいっても大丈夫だし。
0862デフォルトの名無しさん
2008/12/28(日) 01:37:54どうせインデントが無いとロクに読めないのに、
強制されるのは嫌という意見は意外なほど多い
そういえば、Lispのカッコ山盛りも見た目で損してるような
初めはうげぇだったが、慣れると意外に快適だった
0863デフォルトの名無しさん
2008/12/28(日) 02:11:290864デフォルトの名無しさん
2008/12/28(日) 02:25:18> そういえば、Lispのカッコ山盛りも見た目で損してるような
開き括弧はともかく、閉じ括弧の連続を見て抵抗感持つのは誤解だよね。
Lispコードの閉じ括弧は基本的には「見ないもの」で、
だからああやってまとめて、視覚的な存在感を少しでも小さくしようとするわけで。
0865デフォルトの名無しさん
2008/12/28(日) 02:34:34「見ないもの」 ということになかなか気付かないよね。
俺は実際に書いてみて分かった。
0866デフォルトの名無しさん
2008/12/28(日) 02:41:480867デフォルトの名無しさん
2008/12/28(日) 02:47:510868東日本かわいいものを集める会 会長
2008/12/28(日) 03:03:510869デフォルトの名無しさん
2008/12/28(日) 08:11:17あ、了解。同じとこで扱ってるのが似たタイトルだと紛らわしいね。
もう予定が出てる『プログラミング言語 Ruby』の訳者が長尾高弘氏になってるけど、
『The Art of UNIX Programming』読んだ印象はあまり良くないなあ。直訳調すぎて
この人ちゃんと内容理解して書いてんのかな?みたいな。
ところでオーム社のページ、『初めてのRuby』の著者のYugui氏の名前が間違って
るね。
0870デフォルトの名無しさん
2008/12/28(日) 09:00:27長尾氏の本はペゾルト本を原著と比べてみたことがあるけど、
至って素直な訳だった。少なくとも日本語になってない
直訳調ではなかったので俺的には全然OK。
0871869
2008/12/28(日) 09:05:21いっそのことmatzが訳せば良かったのに、と無茶言ってみるテスト。
"Programming Ruby: The Pragmatic Programmers' Guide" 3rd edは
2009年3月らしい。
0872デフォルトの名無しさん
2008/12/28(日) 09:35:16たぶんCOBOLを連想してるんでしょ
1文字目から6文字目が行識別で7文字目が行タイプで8文字目から11文字目が
A領域で12文字目から72文字目がB領域で73文字目以降は無視されるとか
はっきり言っていちいち覚えてられない。どれがA領域でどれがB領域だか
分からないと作業にならない。まあ、Pythonはまだ穏やかだからましだけど。
0873デフォルトの名無しさん
2008/12/28(日) 09:55:24どんなに素晴らしいかと思ったり。後者は全否定されそうだが。
0874デフォルトの名無しさん
2008/12/28(日) 10:17:26http://pc11.2ch.net/test/read.cgi/tech/1169473442/l50
0875デフォルトの名無しさん
2008/12/28(日) 10:52:13たしかFORTRANはそうだったけどCOBOLもおなじなの?
0876デフォルトの名無しさん
2008/12/28(日) 10:59:35(defun factorial (n)
(if (<= n 1)
1
(* n (factorial (- n 1)))))
が
(defun factorial (n)
(if (<= n 1)
1
(* n (factorial (- n 1))
でも動く
0877デフォルトの名無しさん
2008/12/28(日) 11:30:50俺は賛成側に回るぞ。
0878デフォルトの名無しさん
2008/12/28(日) 11:32:360879デフォルトの名無しさん
2008/12/28(日) 11:34:040880デフォルトの名無しさん
2008/12/28(日) 12:12:23そうかぁ? 個人的な感想は、他の言語とそう変わらんな、だったんだが。
0881デフォルトの名無しさん
2008/12/28(日) 13:34:43一応ソース
COBOL入門 東海大学出版会出版 西尾 出監修 1988年 ISBN4-486-01004-3
この本の50ページから54ページ
0882デフォルトの名無しさん
2008/12/28(日) 13:37:05すぐに参照できないのは(少なくとも2ちゃんでは)ソースとは言わない
0883デフォルトの名無しさん
2008/12/28(日) 13:40:19その世界の中ではどんなマトモな本もソースにならないんだよな
0884デフォルトの名無しさん
2008/12/28(日) 13:44:50四六時中ネットに張り付いている無能な俺でも
さすがにそれはないと思った
0885デフォルトの名無しさん
2008/12/28(日) 13:55:06それどこの2ちゃん?
0886デフォルトの名無しさん
2008/12/28(日) 13:55:16よっ、社会不適合者の鑑!
0887デフォルトの名無しさん
2008/12/28(日) 14:02:19即座に参照できないソースを掲げて勝利宣言するアホは一定数いるからな
小学生かっつーの
0888デフォルトの名無しさん
2008/12/28(日) 14:25:54ソースを確認するためにわざわざ本を買うのか
>>883-886のバカどもはw
0889デフォルトの名無しさん
2008/12/28(日) 14:26:570890デフォルトの名無しさん
2008/12/28(日) 14:27:200891デフォルトの名無しさん
2008/12/28(日) 14:28:28ご苦労なこったw
0892デフォルトの名無しさん
2008/12/28(日) 14:29:40根本的に理解できていないバカが多すぎるんだよな。
■ このスレッドは過去ログ倉庫に格納されています