Ruby 初心者スレッド Part 23at TECH
Ruby 初心者スレッド Part 23 - 暇つぶし2ch809:デフォルトの名無しさん
08/12/24 16:20:13
以下のようなフォームデータを cgi クラスで受け渡したいと思っています。
<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 的にエレガントな方法はあるのでしょうか?
配列やハッシュなどを使ってスマートに書く方法があったら教えていただけませんでしょうか。

810:デフォルトの名無しさん
08/12/24 17:50:42
hiddenを入れれば区別出来るんじゃね

811:797
08/12/25 00:36:49
>805
どちらをインストールしてみても結果は一緒でした...
これってRuby開発者側に伝えた方がいいのでしょうか
うちの環境のみの再現だと思うのですが...

812:デフォルトの名無しさん
08/12/25 01:18:37
rakeで、src/**/*.txt から dst/**/*.html に変換するような file タスクを書きたいんですけど、どうかけばいいですか。


813:デフォルトの名無しさん
08/12/25 05:11:00
a hrefの値の中にABCっていう文字列があるリンクの中身つまりinner_textを取得するにはどうすればいいでしょうか?
hpricotやNokogiriで指定しようにも複数のページでXPATHのaの順番が違っていて取得できません。

814:813
08/12/25 05:36:00
すいません、事故解決です。
doc/"a[text()*='ABC']"でできますね。
Hpricotとかをtagやセレクタでぐるぐる回すものだと勘違いしてました。
お騒がせしました。

815:デフォルトの名無しさん
08/12/25 06:04:46
>>811
自分のコードかデータにバグを引き起こす原因があるとは思わないの?


816:デフォルトの名無しさん
08/12/25 06:44:34
>>815
スレリンク(tech板)l50

817:デフォルトの名無しさん
08/12/25 06:51:44
>>797
とりあえず該当の行を見て、まずどこて落ちたのかを調べるべき
それでも本体のバグっぽかったら諦めて報告

>>809
本題とは関係ないけど、CGIアプリケーションでPStore使うのはオススメしない
rubyのバージョンが古くなるとデータ読めないことがあるから
自分しか使わないスクリプトなら問題はないけど

今ならYAML::Storeオススメ

818:デフォルトの名無しさん
08/12/25 13:26:33
>>810
hiddenを入れて対処できました。ありがとうございました。

>>817
そうなんですね。YAML::Store に書き換えておきました。ありがとうございました。

819:デフォルトの名無しさん
08/12/25 13:59:37
>>815
>>797見てそう思う方がおかしくないか?w
でもmysql環境を見直してみる価値はありそう。

820:デフォルトの名無しさん
08/12/25 15:36:57
某サイトのurlをopenした所、

uninitialized constant StanderdError (NameError)

こんなメッセージが出てプログラムが途中で止まることがあるですけど、これって何が原因なんでしょうか。

821:デフォルトの名無しさん
08/12/25 15:38:47
>>820
>StanderdError
StandardErrorと書いたつもりのどっかでスペルミスしてる。

822:デフォルトの名無しさん
08/12/25 15:45:45
がっちょわるー

class MyHogeError < StanderdError
end

とか書いてあるんだな
がっちょわるー

>>820
使ってる外部ライブラリの中から「StanderdError」という文字列を探して「StandardError」に直接書き換えとく

823:デフォルトの名無しさん
08/12/25 15:51:11
> rubyのバージョンが古くなるとデータ読めないことがあるから
これをあまり心配してない俺
その時になってから過去のバージョンの pstore で読んで、新しいバージョンの pstore で書き出せばよくね?
PStore を YAML で置き換えて常用するなんてブルジョワジョワジョワに過ぎるだろ

824:デフォルトの名無しさん
08/12/25 15:57:22
どんなデータをどんだけ保存したいかによるね
ファイルが数KB程度で収まるなら読みやすいYAMLのほうがよかろう

なんかよくわからん大量のデータの数百KBを読み書きしまーすというのならさすがにちょっと
うっかり画像を保存したことがあるが遅くて死んだ

825:デフォルトの名無しさん
08/12/25 16:06:11
バイナリだとクラッシュしたときの復旧がしんどいから
ちょっとしたデータのシリアライズにはyaml/storeがお気に入り。

826:デフォルトの名無しさん
08/12/25 16:09:07
とりあえず一般ユーザーはこれ使っとけ、と言えるほどのものがRubyにはまだないんだ
用途に応じて使って適宜バックアップだの負荷測定だのしなきゃならん

827:デフォルトの名無しさん
08/12/25 16:15:51
>>826
ガイドみたいなのがあるといいよね
ってるびまにあるのか

828:797
08/12/25 16:26:27
>819

mysql関係ですか,
とりあえず今夜は,sqliteで同じように実装してから
再現確認してみます.

829:デフォルトの名無しさん
08/12/25 16:51:39
>>821
>>822

begin
open("URLリンク(*****)")
rescue Timeout::Error
rescue StanderdError <<<<<某プログからのコピペまんま
rescue EOFErro
rescue Exception
rescue NameError
end

こんな感じで例外関係の対処法ググっては追加していた中で某ブログからコピペしたものが、
スペルミスしていたとは..。
即回答ありがとうございました。実は昨日からハマってました。

830:デフォルトの名無しさん
08/12/25 17:05:59
>>829
コピペうんぬんより、エラーメッセージを*よく*見て原因を考えるクセをつけようぜ!

831:デフォルトの名無しさん
08/12/25 22:03:26
Ruby学習者の「2冊目の本」、買ったやついる?どう?

832:デフォルトの名無しさん
08/12/25 22:24:03
エロティックランゲージだかなんだか副題がついてたやつか

833:デフォルトの名無しさん
08/12/25 22:26:47
今すぐ買ってくるわ

834:デフォルトの名無しさん
08/12/25 22:39:08
あれはRuby学習者というか、Rubyを使いたい人向けの本だろ
位置的に初学者本の次くらいなんじゃねーかとは言われてないわけでもないが

835:デフォルトの名無しさん
08/12/25 22:46:05
隠しても仕方ないか
Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~
URLリンク(www.amazon.co.jp)

> 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

836:デフォルトの名無しさん
08/12/25 23:09:53
なんかBFスレでは、へんな言語をネタにしたRuby入門本とか言われてたが。

...GRASS、無いのかw

837:デフォルトの名無しさん
08/12/25 23:15:39
>>836
GrassとGRASSは違う言語?


838:デフォルトの名無しさん
08/12/25 23:27:35
あ、Grassです。見えてなかったらしい。すまん。

839:デフォルトの名無しさん
08/12/25 23:34:55
新しい「プログラミング言語 Ruby」が来年の1月に出るのか。
1.9.1のリリースが迫って書籍もまた出てきそうだな。

840:デフォルトの名無しさん
08/12/26 01:05:48
RubyでSQLを用いるときってどういう時ですか?
解析させるデータ数が多いとか相互参照が多いときとかですかね?

841:デフォルトの名無しさん
08/12/26 01:11:04
リレーショナルデータベースを使うとき...というか、
どういう時にリレーショナルデータベースを使うか、という質問?

842:797
08/12/26 05:53:14
とりあえず解決したので報告です.

原因はいまだにわかりませんが
Railsのヴァージョンを
2.2.2 -> 2.1.2
へとダウングレードすることで正常動作するようになりました.

mysql postgres sqlite3
と三つ試しても同じ結果だったので,
諦めかけてましたが,
友人が作ったv2.1.2のプロジェクトを実行したとき
偶然うまくいったのがきっかけでした

843:デフォルトの名無しさん
08/12/26 11:31:16
>>840
Rubyの「メモリ内でのハッシュ構造+ディスク上でのPStoreのようなもの」ではどうにもならない場合
具体的には>>841

844:デフォルトの名無しさん
08/12/26 12:35:59
SQLの方が良い場合も歩けど
オブジェクトのままシリアライズした方が良い場合も結構ある
後者だと単純にSQLに置き換えるって訳には

845:デフォルトの名無しさん
08/12/26 23:20:20
鋸のXPathが期待した結果を出さないのだが,なぜ?
url = "URLリンク(bit.sikkou.jp)"
doc = Nokogiri::HTML(open(url))
puts doc.xpath('//b[text()="公告日"]')

「<b>公告日</b>」になるはずなのだが,

結果は空白(要するに検索できてない)
エンコードの問題でしょうか?
ちなみにスクリプト自体はUTF-8です。


846:デフォルトの名無しさん
08/12/26 23:25:17
>>845
あ~、これは誰かがどっかで説明しないといけないんだけど、Nokogiri.new は実は引数を3つとるんだよ
第3引数は文字列の文字エンコードを書く
doc = Nokogiri::HTML(open(url), nil, 'SHIFT_JIS')
って書いてみ


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