1 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 04:30:21 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.7 の使用をお勧めします】 ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。 1.9 の新機能の一部が利用可能なので初学者にお勧めです。 ※ただし十分安定しているとは言えないので プロダクション環境での利用にはお勧めしません。 関連スレやURLは>>2-8 あたりを見てください。Ruby on Railsの質問はRailsスレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
564 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:14:58 ] >>562 「外来語」の detect と select で悩むくらいなら find と find_all を使うなあ、俺は というかなんでそこで SQL が出てくるんだ?
565 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:21:17 ] 当時の様子は知らないし、同じくキューでない配列にも普通にpop/shiftは使うけど 配列から取り除くことが作用ではなく副作用になる場合以外、 「配列から取り除く(ついでに値を得る)」ではなく 「値を得る(ついでに取り除く)」だと思ってるとミスするという話かと。 def get_first(ary) ary.shift end ary = [1,2,3] put get_first(ary) # aryが破壊される
566 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:35:31 ] >>563 同意 queue じゃなくても、popもshiftも使うよな
567 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:38:04 ] キューでもないのにpopが積極的に必要になる場面が思いつかない イテレータ拒絶派か何かか?
568 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:42:26 ] >>567 split結果の先端や終端にゴミついてるのが確実なときに切り落とすためとか。
569 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:55:45 ] >>568 delete_at(0) 配列先頭のデータが欲しいときに data = arr.delete(0) と書くのが奇妙なのと同程度には # 先頭は不要 arr.shift と書くのは奇妙だと思う shift に関してはコマンドライン引数を順に扱うときに shift コマンドを使った経験が後を引いてるのかもしれないが、 ここは Ruby だし shift は変
570 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:57:55 ] そろそろ誰の何の質問の答えているのかはっきりさせようか
571 名前:デフォルトの名無しさん [2008/12/17(水) 15:58:58 ] じゃあどう書けばRuby的なの?
572 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:19:46 ] 配列を破壊しなければうまくいかないかどうかによって違うんじゃね
573 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:19:54 ] >>570 >質問・要望・雑談などどうぞ。 >>569 奇妙なのはそのコメント文だろうw 代入操作がないことから不要なことは自明。 返値があるものは代入しないといけないなんてルールはないし。 >>565 のように先頭や末尾の要素を配列から取り除くのが主の操作で、 popやshiftにそれ以上の意味(=キュー専用)はないと考えてる。 だからdelete_at使えというのは、firstやlastもat(0)やat(-1)にしろと 言っているように聞こえる。 キューでない配列に対してpopやshiftがよろしくないなら Array#pop #shift #push #unshiftは廃止してQueueクラスを用意するべき。 運用で制限しようとするほうがおかしい。 (threadのものと名前がかぶるけどそれはさておき)
574 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 19:49:45 ] 難しく考えたことねえな ところでその考え方だとpopはキューに使っちゃダメだろ あれはスタックに使うものでは?
575 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:13:20 ] >>569 切り捨てるより、shiftで切り出された結果を使う方が多い param = ARGV.shift line = lines.shift とか
576 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:39:05 ] each でブン回すのが Ruby 的ではあるんだろうな
577 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:54:01 ] >>574 push⇔shift unshift⇔pop これでキューが出来上がる。ただし左がエンキュー、右がデキュー
578 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:59:30 ] 素直にQueueクラス作れよ、というのは昔から言われてはいたな というか、説明もないしキューの概念知らない人もそこそこいるのでは
579 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 22:02:02 ] unshiftだけ遅いから注意が必要
580 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 22:26:23 ] unshift遅くなくね?
581 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 22:33:43 ] >>578 自慢だが知らん popやshiftは配列から1個取る便利メソッドだと思ってる
582 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:47:16 ] >>531 丁寧な解説をありがとうございます。 Rubyの「オブジェクト指向」という考え方が何となく判って来た気がします。 つまり、文字列などの何らかのデータをオブジェクトとして扱い、 その内容に変更を加えたデータ(や当該コード)もオブジェクトにでき、 更にそのオブジェクトに変更を加えたデータも・・・・・ という事が限りなくできる、ということなんですね。 つまり「全てがオブジェクト」なんですよね? そして、そのあらゆる段階でのオブジェクト(データ)に自分で名前を付けることによって、 任意の段階でのデータ(オブジェクト)をコードのどこでも簡単に使い回しできるようにしたものが、 Rubyのオブジェクト指向、だと理解しました。 そして、初心者が常に気を付けるべき点は、 データを処理するためのメソッドが「どのオブジェクトを対象としているのか」という点にある、 というのが>>531 でのアドバイスの要点だと思いました。 基本的な理解はこれで合っているでしょうか? (^^;)
583 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:53:26 ] Rubyは肯定(否定)戻り読みには対応していないんでしょうか? 肯定(否定)先読みには対応しているようですが。 使っているエディターがPerl準拠の正規表現なので 今までは戻り読みが使えて便利だったのです。
584 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:02:13 ] lookbehind は鬼車が要るはず
585 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:29:31 ] >>580 a = []; 50000.times { a.push(0) } と a = []; 50000.times { a.unshift(0) } を比べてみな
586 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:33:16 ] yield
587 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:57:28 ] >>584 ほほう。こういうものがあるんですね。 次期Rubyに搭載予定だそうで凄そうです。 それで鬼車のホームページには、 >* 5.xはUnicode Property/Scriptを提供 >* 2.xはRuby1.6/1.8組込みライブラリとして動作する。 (2006年末で保守を終了) と書いてありますが、どちらをインストールしたら良いんでしょうか。 詳しい方がいらっしゃったら御教示願います。
588 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 08:51:32 ] >>580 じゃないが、試してみて >>585 の優しさを知った。 50000 は絶妙なとこだな。(celeron 1.3GHz)
589 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 09:31:25 ] そんな中古でも売ってないような激遅CPUで話にしゃしゃり出られても困る
590 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 09:47:36 ] 今の平均的なCPU速度ってどのくらいなのかね 自分でちょっと重い処理するライブラリとか公開したときちょっと気になる
591 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 09:51:40 ] >>589 Core2Duoでも相当差が付くぞ
592 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 09:59:23 ] >>589 そのご立派なCPUで500000とか試してみなよ。
593 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 10:05:52 ] 噛み付かれた>>588 カワイソス
594 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 10:09:49 ] >>590 2GHzくらいじゃね
595 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 10:17:43 ] てかPentium4からこっちはよくわからん理由で処理速度が違うから周波数アテにならん
596 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 11:26:59 ] 公開するライブラリの重さなんて気にしなくてもいいんでは? 使う人次第で負荷なんて桁で変わるんだし。 軽く使えるノウハウでもついでに書いとけば喜ばれると思うけど。
597 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:02:34 ] RubyのArrayはリストとかじゃなくてまんま配列なので、 pushと違ってunshiftは必ずメモリのコピーが発生するから ってことかな>速度差
598 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:34:38 ] IronRubyって終わったんでしょうか?
599 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:12:50 ] >>587 どちらもインストールしないでrubyの1.9.1をインストールする。 まだリリースされてないけど。
600 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:13:58 ] >>598 終わったというか、まだ始まってない。 そもそもIronRubyの動作基盤であるDLRがまだリリースされてないし。
601 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:19:49 ] Ruby で「静的 HTML に変換して出力してくれる入力テンプレシステム」って何がありますか? * で始めると見出しとか、 - で始めるとリストとか、そういうので適当な日記的 HTML を楽に書きたいです 日記や Wiki みたいな動的機能はいらないです サーバにアップロードするときに Ruby スクリプトで変換して FTP するとか、そんな感じなんですが
602 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:36:51 ] RD は死んでる? gem でイイのないもんかね
603 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:41:45 ] Hiki に Wiki 書法用のパーサが付いてたような気が
604 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:42:53 ] WikiCreoleパーサをさがしてみるといいんじゃないか? あるかどうか知らんけど。
605 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:48:25 ] RedCloth とか BlueCloth とか。 日本語がちゃんと扱えるかどうかは知らないけど。
606 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 16:08:25 ] つWikiforme 使いやすいとは言えないがかなり面白い。 これとTenjin組み合わせれば・・・とか妄想してる。
607 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 16:09:43 ] rake で sh "command" としたときに、command が画面に表示されないんですが、そんなものでしょうか。 どんなコマンドが実行されているか表示されてほしいんですけど。
608 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:18:08 ] Installing ri documentation Installing rdoc documentation これでバカみたいに遅いのはなぜ? 中で何やってこんなに遅いの?
609 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:21:52 ] ソースコードを解析してドキュメントを作ってるから、だと思う。多分
610 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:29:06 ] ファイルが細かくて多いと死ヌほど時間かかる印象
611 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:30:06 ] あれってなんで事前作成してないんだろ。 環境によって出力結果変わったりするもの?
612 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:31:55 ] >>611 できるものがでかいから。
613 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:35:48 ] まあつまりファイルサイズをケチってるわけだな 実際のドキュメントを見るとわかるがまあ結構デカい デフォルトデザインのドキュメントくらい添付してもいいと思うんだが、 まあ、全パッケージの全バージョンを保持してるわけだし、 それぞれに2種類のドキュメントをさらに保持というのは確かに辛いかもしれず
614 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:53:36 ] 回答サンクス。でも所詮は圧縮効率よさげなテキストでしょ。 パッケージはgzipとかしてるだろうし、試しにzipアーカイブに・・・ rubygems-1.3.1/rdoc/ 2,425,167byte -> zipped 820,211byte 把握したw
615 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 18:16:02 ] 余裕じゃん
616 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 18:45:30 ] >>603 HikiDocか。 >>601 Hikiのは古いから、HikiDocでぐぐって(単体で保守されてる) あとはRakeと連携して細かいところを自分で書けばおっけーじゃね。
617 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 19:17:03 ] >>601 Marukuもあるよ 高機能な割に、いまいち安定しないが
618 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 19:26:32 ] >>611 >あれってなんで事前作成してないんだろ。 事前に作成できるよう指定できるよ。 ようは各gem作者がそれを指定してないだけ。
619 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 20:10:37 ] >>599 鬼車のを今の1.86で組み込んで使うことはできないんでしょうか? 戻り読みの正規表現が使えないと非常に困るのです。 ネットで調べたら「VC++で鬼車をコンパイル云々」と出て来ましたが、 プログラミングはRubyから始めたばかりなので、 別のプログラムが必要とかになるとお手上げなのです。 何とかならないものでしょうか。鬼車の2.x系で構わないので。
620 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 20:18:19 ] 鬼車を使うか旧来のregexエンジンを使うかはコンパイルオプションで 決まっちゃうので、自分でコンパイルがお手上げなら、鬼車を有効に してあるバイナリを探すしかない。あるかどうか知らないけど。 駄目ならRubyでやるのを諦めるしかないと思うけど。
621 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:13:29 ] 鬼車gemもあるな。 リテラルの/.../だと組込の正規表現クラスを使ってしまうので、 全部明示的にメソッド呼んで組み立てる必要があるが。
622 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:29:29 ] gem のライブラリのファイルをどこで誰が読んでるかを調べる方法はある? gem 'package_name', '=1.0.0' でバージョンを指定してるはずなんだけど、 /usr/lib/ruby/1.8/rubygems.rb:142:in `activate': can't activate package_name (>= 1.0.1, runtime), already activated package_name-1.0.0 (Gem::Exception) という例外が出て動作しない 1.0.0 を指定してるんだから 1.0.0 だけ読んでくれよ っていうかバージョン指定でインストールさせるライブラリの作者は安易に require だけすんな氏ね
623 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:32:02 ] >>620 レスありがとうございます。 戻り読みが使えないのは大変に困るので、 素人でもコンパイルと言うものができるなら挑戦してみようと思います。 ええと、ネットで調べたのですが、 Rubyと鬼車のソースを手に入れて解凍し、 鬼車の解凍フォルダをRubyの解凍フォルダに入れて、 Visual C++ Toolkit 2003 Commandでコマンドを入力してコンパイル で、基本的な流れは良いんでしょうか。 鬼車を組み込むために特別なことは必要ないのでしょうか? >>621 できれば他の正規表現と全く変わらないように使いたいので、 鬼車を組み込んだRubyの方がありがたいのです。
624 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:39:26 ] >>623 なんかすごいことしようとしてるなー ちなみに、その戻り読みが必要な正規表現ってどんなの? もしかしたら、戻り読みが必要ないかたちに書き換えられるかもしれないし。
625 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 22:13:45 ] >>624 > なんかすごいことしようとしてるなー そんなに素人には敷居が高いのでしょうか? 確かに戻り読みは全ての正規表現に使うわけではないので、 >>621 さんの鬼車gemというのを使った方が良いのでしょうか。
626 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 22:17:53 ] たぶん、 Object.const_set('Regexp', ORegexp)とかしてしまえば(警告出る)、 Regexp.newで作った後は同じように使える(と思う)から、 /.../と書けない以外はそれなりに使えるんじゃないだろうか。
627 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 22:18:01 ] コンパイルとか一回やっとくと後々役に立つこともあるだろうから やっといてもいいと思うけど。 Cygwinじゃダメなの?
628 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 22:58:02 ] >>607 -v
629 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:06:19 ] >>623 「鬼車を組み込むために特別なこと」は鬼車のドキュメントに書いてある。 それに従えば大丈夫だと思うよ。
630 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:48:15 ] 「ひらがな ←→ カタカナ」の変換ってどうやるんでしたっけ。
631 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:56:38 ] >>630 Ruby単体では難しいな NKFに頼るのが妥当か
632 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:01:56 ] プログラムのlogを自分宛にメールで送りたいと思ったんだがpop before smtpってよくわからん ○行処理完了,×行目失敗,△行目失敗...ぐらいのちょっとしたものなのに
633 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:05:43 ] >>632 そのまんまだよ smtpの前にpopでただアクセスすればいい 履歴はサーバが短時間記憶してくれているから普通にsmtpでアクセスだ メール関連は詳しく説明するとSPAM送るアホが出るからどこも親切にはしてくれないだろうね
634 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:15:20 ] >>631 サンクス
635 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:51:58 ] >>630-631 一方向の変換ならString#trじゃダメ?
636 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 09:48:35 ] aという配列の要素に、正規表現でキャプチャした値を入れたいです。 具体的には a[0]=$1 a[1]=$2 以下同様です。 これを 0.upto(4) do i a[i]=$(j+1) end とかやってもコンパイルエラーがでてしまうのですが、組み込み変数$1,$2・・・に イテレータを利用してアクセスできる方法はありますか?
637 名前:636 mailto:sage [2008/12/19(金) 09:49:51 ] >>636 は書き間違いました。 a[i]=$(i+1) です。
638 名前:636 mailto:sage [2008/12/19(金) 09:54:02 ] 自己解決しました。 0.upto(4) do i a[i]=$~[j+1] end でいけました。一人で何やっとるんだ俺は。
639 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 09:56:11 ] 自己解決ハヤスw
640 名前:636 mailto:sage [2008/12/19(金) 09:59:49 ] >>638 は書き間違いました。a[i]=$~[i+1]です。もう俺は死ね。
641 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 10:06:44 ] 萌えた とりあえず a = $~[1..-1]
642 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 10:07:51 ] $~.capturesオススメ
643 名前:641 mailto:sage [2008/12/19(金) 10:10:44 ] 1.8から追加された便利メソッドか。老害の俺も死んでくる
644 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 11:00:36 ] もちつけ >638
645 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 11:53:42 ] >>631 NKFにそんな機能あったっけ? ていうか、ひらがな←→カタカナなら str.tr 'あいう(略)アイウ(略)', 'アイウ(略)あいう(略)' でどうだろう。「ヴ」をどうするかとか問題はあるけど。
646 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 12:45:16 ] >>645 irb> puts NKF.nkf('--hiragana', 'ルビーは超うんこ').toutf8 るびーは超うんこ nil irb> puts NKF.nkf('--katakana', 'ルビーは超うんこ').toutf8 ルビーハ超ウンコ toutf8は表示用
647 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 12:51:20 ] きれいなプログラムを書くには 箸キプログラミング基礎 ttp://d.hatena.ne.jp/kiyo560808/20081215/1229363279 …4点くらい
648 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 12:54:27 ] このスレの住人はRuby嫌いなのか
649 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 20:18:16 ] File.open と、単なるopenの違いは何ですか?
650 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 20:54:14 ] Ruby1.91はいつ出るのでしょうか? 検索したら、 「Rubyf1.91 2007年12月リリース」とかいうページが出て来るし。
651 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 20:59:17 ] >>649 普通にファイル開いて使ってるぶんにはどっちも同じです File オブジェクトを返します 好きなほう使ってください File.open 派が若干多いような雰囲気はするけど
652 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 21:20:28 ] >>651 同じですか サンクス
653 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 21:26:50 ] >>601 です いろいろフォーマット扱える Webgen に手を出したらもうぜんぜん動きません reStructuredText とか文法いいなーと思うけどこれ Python なんだよね 教えてもらったものいろいろ試します せんきゅです
654 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 21:31:59 ] >>651 の >普通にファイル開いて使ってるぶんには 普通でない場合を勝手に補足。 組み込み関数のほうのopenはPerlのopenみたいに"|cat"みたいなパイプの繋ぎ方を 半端にサポートする。 あと、open-uriを使う場合も違いが出る。
655 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 21:39:11 ] RubyでMatlabの行列ファイルを読みたいんだけどいいライブラリないですか?
656 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 21:56:41 ] 全部Matlabで完結したほうがよくね?
657 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 22:06:19 ] >>656 実は、データファイルを持ってきてシミュレートせよという課題なんですが Matlabがなく、OctaveはまともにWindowsでは動かないので…
658 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 22:24:43 ] そういうのはデータファイルだけもってこいよ
659 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 02:39:59 ] Ruby on railsは、まともなスピードで動かす場合、 月5,000円のレンタルサーバーが必要です。 一方、cakephpなら、月500円のレンタルサーバーで 十分なスピードで動きます。
660 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 08:29:05 ] >>658 1.配布されてるデータがMatlab形式 2.解析方法がワカンネ 3.これを使ってk-NN法の実験をしなくちゃならない(レポートの提出はあさってAM10:40) 4.私はMatlabを持ってない \(^o^)/
661 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 08:42:09 ] >>660 エディタで開け バイナリならMatlabスレで聞けば目で読める形式にしてくれるだろ
662 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 08:53:53 ] >>661 バイナリですよ で、どこの板にありますか?
663 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 09:45:04 ] 見つかりましたがなんか雰囲気が違います
664 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 10:05:56 ] Windows版のOctaveを使ってファイルの変換だけやって テキストファイルにしてしまえ いくらWindows版Octaveが不安定といっても ファイル読んで書くくらいならできるだろう もしくは、仮想マシンにLinuxいれてでもOctaveをつかうとか
665 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 10:44:07 ] >>664 とりあえず書き出し中。ただ、ディスクが逼迫しているのできちんと書き出せるか かなり不安だが。
666 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 10:52:43 ] とりあえず書き出せた。テキスト形式の解析も完了。 さあRubyでがしがし処理するか
667 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 19:08:36 ] 「10日でおぼえるRuby on Rails」と「はじめてのRuby」を読んだばかりの Ruby歴2週間のおれに教えてくれ。 Rails2.2を入れたいのだが、Ruby1.9.0Xでいいの?1.9.1の未完成版は止めた方がいい? 仕事じゃないから人柱でもなんでもいいけど、 慣れない環境であまりにも動かないと何が何だか分からなくなってつらい。 最新版命主義だから1.8.6Xはよほどひどくないと考えていないっす。
668 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 19:12:33 ] Rubyの最新版は1.8.7だよ 1.8.6は古いから、しがらみも資産もない新規さんなら1.8.7でウキウキ新機能をエンジョイしろ Railsも完全に動作するし
669 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 19:22:18 ] >>668 レスサンクス 1.8.7ってあいのこみたいなイメージがあるのだが。 1.9系みたいにマルチバイト文字列を簡単に扱いたいんだけどできる?
670 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 19:51:18 ] 結局速いのがいいから1.9.1系にしちゃった。不具合上等。サンキューな。
671 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 19:54:11 ] さて果たして670がどうなるのか ちょっとワクワクしてきた
672 名前:632 mailto:sage [2008/12/20(土) 20:05:21 ] >>633 gmail使うことにしました 我ながらなんという遅レスか
673 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 20:44:50 ] >>660 Matlab持ってる研究室尋ね歩いて使わせてもらえ
674 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 21:33:35 ] 1.91はまだか。
675 名前:670 mailto:sage [2008/12/20(土) 22:26:30 ] Vista64を使ってるから、1.9.1最新(64bit)入れたけどgemが動かず。 1.9.0最新(64bit)入れたけど動かず。1.9.1最新(32bit)入れてようやくRailsのインストールまで終わった。 落としたバイナリのzlibがだめなのかなと思ったが、疲れたから完璧ということにした。
676 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 22:40:31 ] Vista 64ビット版で1.9.1に挑戦するとは……なんという茨の道 でもそんな根性のあるユーザーは嫌いじゃないぜ
677 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 22:48:29 ] >>676 嫌いになる可能性しかないような気がするんだが 問題切り分けできない状態でなにが勉強か
678 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 23:46:21 ] 32bitや64bitという言葉が出てくるんだから、まるっきりコンピュータの素人というわけでもなかろう。 たぶん誰も助けてやることはできないだろうけど、がんばれ。
679 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 09:12:31 ] >>673 とりあえずなんとかOctaveでテキスト形式に変換完了。 今延々回してるがかなり長くなりそうorz
680 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 09:35:39 ] そもそもRubyは学術計算には向かない
681 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:18:43 ] >>680 何をするかに依るが、簡単な数値計算には俺は使うよ。 一行で書いて答ポンと出す感じのコード。向いてると思う。 ちょっと入り組んでる計算(シミュレーション、微分方程式、FFT etc) だと C++ で書くけど。
682 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:34:26 ] 計算が多少複雑でも、コード書くことだけ考えればRubyで十分扱えると思う むしろ問題なのは処理速度
683 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:35:45 ] 行列演算の結果狂ってるとかいうのなかったっけ
684 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 14:07:22 ] 学術計算にいまどきプログラミング言語か 入り組んでいる計算なら mathematicaとかmatlabのほうが向いてると思うね 簡単な計算ならlinuxについているbcが向いてる
685 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 14:09:34 ] mathematicaも立派な関数型言語搭載のプログラミング環境ですから
686 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 14:10:34 ] はいはい、「汎用の」が抜けてた抜けてた
687 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 14:29:33 ] 巨大な計算をする時はやっぱmathematicaやmatlabは遅い。 とは言え、代替物としてRubyを使うのもどうかとは思うが。
688 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:00:04 ] nokogiriのgemインストールが失敗します。 riの生成に失敗しているようなのですが、これはどのように対処したもんでしょうか? > gem install nokogiri Successfully installed nokogiri-1.0.7-x86-mswin32-60 1 gem installed Installing ri documentation for nokogiri-1.0.7-x86-mswin32-60... ERROR: While executing gem ... (NoMethodError) undefined method `new' for nil:NilClass > ruby -v uby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]
689 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:31:48 ] >>681 計算時間の見積もりが4日とかorz 256次元のベクトルの距離を頻繁に求めるので手間かかりすぎ。 ある1本と別の4000本との距離を求めるだけで45秒。 使ってるクラスはmatrixに入ってるVectorクラス。
690 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 19:55:22 ] >>688 $ gem install --no-ri nokogiri とりあえず。ちなみに gem help install で調べられる。 ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32] gem 1.3.1 では問題は起きなかったっす。
691 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:08:15 ] >>690 rdocもなんか失敗したので、これでいけました。 gem install --no-ri --no-rdoc nokogiri ありがとう。
692 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:10:09 ] ちょいと質問なのですが、 HTMLファイルの一部を書き換えたいのですが、 nokogiriとか使うとパースや部分的なノード置換がすごく楽なのですが、 出力すると(to_html)元のHTMLがかなり崩れてしまいます。 元のHTMLをなるべく維持したい場合はどうしたらよいものでしょうか?
693 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:13:02 ] 見掛けが崩れるだけで、htmlとしては大部分が同じはずだが HTML上の改行位置や空白数なんかも維持したい場合は正規表現で置換するしかないな
694 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:19:33 ] フラットな処理で何とかなるならHTMLSplitとか
695 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:35:38 ] rubygemsのsyntaxってあんじゃん なんていうか、マトモなCSSってどこかにない? vimやEmacsのハイライト意識したやつとか RubyとHTMLのだけあればいいんだけど あのRubyのとか酷過ぎるだろ常識的に考えて
696 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:42:02 ] >>693-694 レスありがとう。 なるたけ維持したかったので、頑張って正規表現でgsubしてみました。 そんなに複雑じゃなかったのでなんとかなったみたいです。 お騒がせしました
697 名前:デフォルトの名無しさん [2008/12/21(日) 22:03:17 ] for i in 1..50 hoge end の 50 を a を Array として for i in 1..(a.size) としたらだめのようでした。 aのサイズだけ for を走らせたい場合、Ruby はどうするのがよいでしょうか?
698 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:07:31 ] 普通はこうする。 a.size.times { |i| p a[i] }
699 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:09:38 ] >>697 a.each do |e| p e end Ruby では for はまず使わない
700 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:10:35 ] >>697 よのどのことがないかぎり、Rubyでは単純ループにforは使わないと慣習があるぞ >>698 でよいかと思う
701 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:10:50 ] インデックスが欲しければこう a.each_with_index { |e, i| }
702 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:11:32 ] ごめん、>>699 だ
703 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:13:40 ] a のサイズ分ループしたいけど、 a の要素を使わない時は >>698 だっしょ。 a の要素を単に順番に使いたいだけの場合は >>699 で、 a の要素とそのインデックスを両方使いたい場合は >>701 だ。
704 名前:デフォルトの名無しさん [2008/12/21(日) 22:17:21 ] >>698-701 みなさま本当にありがとうです。 for をそもそも使わないのか・・・そもそも入門からおかしかったようです。
705 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:19:16 ] もちろん普通はfor使わないのは分かるんだがなんで>>697 が動作しないんだ? 範囲式に制限でもあるのか?
706 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:21:00 ] 0 オリジンじゃないから 配列にアクセスする部分で死んでるとか
707 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:23:11 ] そうだな 50番目の a[i] で nil の NoMethodError でも出てるのだろう
708 名前:705 mailto:sage [2008/12/21(日) 22:33:17 ] なるほど。自分も初心者だが確かにやりそうだ。 まあこういうのを防ぐ為にもforは使わないってことだな。
709 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 23:14:47 ] Rubyを書き慣れてくると、forの書き方はちょっと考えないと 思い出せないようになってくる。
710 名前:デフォルトの名無しさん [2008/12/21(日) 23:17:48 ] freezeしたHashの要素を変更するシンプルな方法はありますか? freezeの意味ないやんってなるけど仕様変更で一か所だけ要素を変更する必要があります freezeしているクラスと同じクラス内なので影響が他のクラスに及ぶことはありません
711 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 23:52:38 ] >>695 「酷すぎる」って言ってるのが syntax-*/data/ruby.css とかのことだったら、あれ以上のもので公開されてるのは多分ない。
712 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 00:08:51 ] >>680-687 遅レスだが(というかなぜか今日は流れ速い)、俺がよく ruby 使うのは 簡単な計算でパラメータ変えて繰り返して使う式ですぐ答が欲しいときかな。 わざわざ Mathematica とか Maple, Maxima 立ち上げる気がしない程度のもの。 あと、これらでもプログラム書けるけど個人的には ruby の coding の方が好き。 3次方程式の解レベルの複雑さ。Ruby で端末でパラメータ入力して結果 すぐ帰ってくる。bc, とかではできない。多少複雑なら C++ で書いてる。 ruby は遅いし、書き捨て的に使ってるし、mma, maple, maxima とかでも 遅すぎることも多い。
713 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 00:45:33 ] >>710 h = {:ary => [1]}.freeze # => {:ary=>[1]} h[:ary][0] = 2 p h # =>{:ary=>[2]} Hashオブジェクトをfreezeしてもその中にあるオブジェクトまでは freezeされてないから、それを直接書き換えるとか。 これ、本来はfreezeの落とし穴だから気をつけて。
714 名前:デフォルトの名無しさん [2008/12/22(月) 01:38:05 ] 要素を変更したいんですー h = {:ary => 1}.freeze h[:ary] = 2
715 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 01:46:09 ] Are you happy?
716 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 02:00:18 ] じゃあdupしてfreezeされてないコピーに差し替えれば? と言いたいけど別のところに参照されちゃってるんだろうなぁ。 そもそもfreezeしてるコードをいじれるならfreezeやめれば いいじゃんと思うんだけど、freezeしないといけない理由を詳しく。
717 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 03:08:37 ] 文字通り邪悪だけど、 evil-ruby gemをインストールして h.unfreeze
718 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 06:52:25 ] >>710 出来ないことはないけど、不可能と考えて別の方法を探すべきだと思われる そもそも、freezeされてるってことはそれなりの理由があるんじゃないのか?
719 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 10:55:22 ] >>710 びみょーに違うけど、こんなん(不完全だけど)をextendして freezeを遅延させるとか…? やっぱ変だな # 一箇所だけ変えたいところのキーは'hoge'決めうち module HashLasyFreeze def []=(key, val) ret = super freeze if key == 'hoge' ret end end
720 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 15:28:52 ] いくつかのサイトの更新状況を取得するプログラム組んでいるのですが、 File::statしてatimeしたいのですが、サイトで公開されているページの最終更新時間など取得する場合どのようにすればいいのでしょうか。
721 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 15:33:54 ] >>720 require 'net/http' Net::HTTP.version_1_2 Net::HTTP.start('www.example.com', 80) {|http| response = http.get('/index.html') puts response['last-modified'] } こんな感じ。
722 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:27:20 ] WindowsXP SP3、OneClickInstaller デスクトップ(や他のアプリケーション上)に文字列を表示させるソフトを作りたいのですが、 それが可能なGUIツールキットってあるのでしょうか? ググってみたところ、ウィンドウの半透明化ができれば可能そうだと思ったのですが、 それが可能なツールキットを探すことができませんでした。 ご存知の方いらっしゃれば教えてください。
723 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:37:03 ] いわゆる付箋ソフトだな Rubyでやるこっちゃないねえ 他のC#とかで作れるようになってからその知識を流用してRuby+GUIでやれ 95パーセントくらいRuby無関係だし
724 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:40:41 ] Win32OLE.rb
725 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:51:05 ] def getWindowLong(hwnd, index) api = Win32API.new('user32', 'GetWindowLong', 'LL', 'L') return api.call(hwnd, index) end def setWindowLong(hwnd, index, gwl) api = Win32API.new('user32', 'SetWindowLong', 'LLL', 'L') return api.call(hwnd, index, gwl) end def setLayeredWindowAttributes(hwnd, crkey, alpha, flags) api = Win32API.new('user32', 'SetLayeredWindowAttributes', 'LLLL', 'L') return api.call(hwnd, crkey, alpha, flags) end gwl = getWindowLong(hwnd, GWL_EXSTYLE) gwl &= ~WS_EX_LAYERED gwl |= ((ratio != 100) ? WS_EX_LAYERED : 0) gwl &= ~WS_EX_TRANSPARENT gwl |= (transparent ? WS_EX_TRANSPARENT : 0) setWindowLong(hwnd, GWL_EXSTYLE, gwl) setLayeredWindowAttributes(hwnd, (ckey ? color : 0), ((255 * ratio) / 100), (LWA_ALPHA | (ckey ? LWA_COLORKEY : 0)) )
726 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:55:22 ] GWL_EXSTYLE = 0xFFFFFFEC WS_EX_LAYERED = 0x00080000 WS_EX_TRANSPARENT = 0x00000020 LWA_COLORKEY = 0x00000001 LWA_ALPHA = 0x00000002
727 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:56:50 ] >>723 うむ、95パーセントくらいRuby無関係だな
728 名前:722 mailto:sage [2008/12/22(月) 21:11:41 ] >>724-726 レスありがとうございます。試してみます! >>723 ,727 既存のrubyプログラムの処理結果をデスクトップに書きたかったんです。 rubyでどう頑張ってもダメならC#覚えるつもりでした。助言ありがとうございます。
729 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:33:18 ] rubyで幾つかのオブジェクトを生成・初期化したかったので、 a=b=c=d=Array.new とかやったら、全部が同じオブジェクトを指してしまうという大惨事に見舞われました。 Cとかなら int a=b=c=d=0; とか書いて複数の変数の生成・初期化が問題なく行われるんですが、rubyでこれをやると 同じオブジェクトが参照されてしまうのってどうなんですか?
730 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:37:50 ] >>729 だってそれは初期化でもなんでもなく、単に同じオブジェクトを指すように指示してるだけだもの そのオブジェクト内容が変化すれば全部が変化するというそんだけの話 オブジェクトという考え方をRubyでは無視せんでくれ a = Array.new b = Array.new c = Array.new d = Array.new こうだな Arrayオブジェクトを生成する使い方をしてるならArray.newではなくnilでもいいかも
731 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:38:46 ] Cでポインタ使ったことある?
732 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:46:33 ] >>729 Array.newが一度しか実行されなければ、Arrayのオブジェクトは一つしか生成されない って見方もできるかと
733 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:47:27 ] a,b,c,d=Array.new*4
734 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:50:15 ] あーはいはい >>729 Ruby は代入文も値を返す a=b=c=d=Array.new は d=Array.new c=d b=c a=b と全く同じだ a が b=c=d= を「透過して」 Array.new を起動することはない
735 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:54:50 ] >>730 たとえば、100個のオブジェクトを生成・初期化したいときには、 a1=Array.new a2=Array.new ・ ・ ・ a99=Array.new a100=Array.new って書かなきゃだめなの? a自体をarrayにしろと言われそうだけど、多数のオブジェクトを生成・初期化したい場合は 一行に一個書くしかないの?
736 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:56:01 ] そのためにもArrayを使えよw
737 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:56:46 ] a = Array.new(100) a.each { |b| b = Array.new }
738 名前:735 mailto:sage [2008/12/22(月) 22:00:14 ] どうやら俺はデータ構造というものについて真剣に考えるべき時期に来たようだ。 Rubyだけですむ話ではなさそうだ。すまん。このスレからは消えることにする。
739 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 22:09:53 ] a1=Array.new a2=Array.new ・ ・ ・ a99=Array.new a100=Array.new まじでこういうソース見たことあるよ 某上場電気メーカーのソフトウェア部門で
740 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 22:13:20 ] そいつの方が給料いっぱいもらって勝ち組みなんですね わかります
741 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 22:30:43 ] 1.upto(100) {|i| eval "a#{i} = Array.new" } 1.9だと外側のbindingをevalに渡す必要があったりするのかな。
742 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 00:30:25 ] >729 その文って、Cで書くとすれば int array[] = {3,4,7,2,9,1}; int *a,*b,*c,*d; a=b=c=d=array; みたいな感じでは?だからCでも全部同じ配列を指してしまうのは変わりないよ Rubyでも、Fixnum同士ならその代入でも問題は起こらん 違うのは構造体やクラスから生成した、実体同士の代入ってのがRubyに無いことかな
743 名前:デフォルトの名無しさん [2008/12/23(火) 02:50:57 ] Dir.glob("./*") で、ディレクトリを含まないリストを得るにはどうやったら良いのでしょうか?
744 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 02:54:55 ] globは糞なのでls, dirを使いましょう
745 名前:デフォルトの名無しさん [2008/12/23(火) 02:59:04 ] なるべく機種依存のコーディングは避けたいんですが・・・
746 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 03:04:57 ] Dir.glob("*").select {|f| !File.directory?(f) } かな。ちなみに "./" は不要。
747 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 03:18:27 ] 少しスレ違いかもしれませんが、特定のファイルをscanした時だけ 500 Internal Server Errorして落ちてしまうのですが、 タグ内で異様にスペースがやたらあるような文字列にscanすると異様に負荷がかかるとか聞いたことありませんか?
748 名前:デフォルトの名無しさん [2008/12/23(火) 04:40:50 ] >>746 なるほど。ディレクトリ判定を入れればいいのですね。ありがとうございます。
749 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 06:41:46 ] >>747 Ruby自体はHTTPのエラーを出さない それは、サーバが実行したコマンドが正規の出力をしなかったという意味しか持たないよ 原因を知りたかったら勝手な推測は止めて、その正規ではない出力が何かを調べる コマンドラインから実行すれば一発だが、どうせコマンドラインから実行できないんだろうから、スクリプト内の実行部分を begin rescue Exception => e File.open('/自分のディレクトリ/error.txt', 'w'){|f| f.print(e)} end で囲んでRubyの出す例外出力を読め
750 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 07:43:45 ] >>600 wikiみろ
751 名前:750 mailto:sage [2008/12/23(火) 07:44:16 ] 誤爆
752 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 08:30:59 ] Windowsで日本語を扱っています。 require 'jcode' $KCODE='SJIS' str = 'aあいbうえおc' 上記のような時に2文字目までを切り出したいんですが、 「str[0, 2]」では2バイト目までということになってしまいます。 下記のような冗長なやり方しか思いつかないのですが、もっとスマートなやり方はないでしょうか? jcodeのリファレンスマニュアルを見てみたのですが使えそうなものが見つかりませんでした。 i = 0 str_part = "" str.each_char do |x| str_part += x if i < 2 i += 1 end
753 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 08:41:38 ] >>752 str.split('')[0,2]*''
754 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 08:50:16 ] すごくスマートですね! Array経由とは考え付きませんでした。
755 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 09:18:23 ] strがめちゃくちゃ長くて 2文字目だけでいいときは もったいない
756 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:06:48 ] 配列内の数値の類似度を求めるのはどうすればいいでしょうか? 偏差なのか、相関係数なのか? スレチですかね・・・・
757 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:23:04 ] >>756 配列の要素にアクセスする方法はRubyだな
758 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:26:20 ] 「類似度」を定義しないことにはどうにも
759 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:33:02 ] >>756 具体例を出してみれば? じゃないと他の人にはわからん
760 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:37:29 ] [1, 2, 3, 4] [16, 8, 4, 2] の二つの類似度は 100% です
761 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:51:47 ] >>758 さんの言うように定義の問題では。定義をすれば解き方は いろいろある。逆に定義が無ければ何したいのかわからん。 偏差でも相関係数でも変数のタイプでも良いが。
762 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:56:24 ] Rubyでスマートな書き方して生産性が上がったためしがないな。 もう何年も使ってるけど相変わらず配列にデータ突っ込んで forかeachでまわしてみたいなBASICと大差ないコードしか書いてないw
763 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 11:02:18 ] >>760 なぜそれが類似度100% ?
764 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 11:03:27 ] Ruby関係ないな
765 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 11:04:53 ] そだな 計算式を持ってきてRubyでの実装方法を聞くとかなら手伝う人が出るかも 計算式の出し方そのものは知らん 教科書なり論文なり読め
766 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 11:19:07 ] Eclipse に RDT を入れて開発しています。 Ruby Explorer で、[Run as]->[Ruby Application] を選択すれば実行できるのですが、 これを、コードを編集するウインドウがアクティブな時に、キーボードショートカットで 実行する方法はないでしょうか? キー割り当てで、[Run Ruby Application] に Binding [F5] When [In Windows] もしくは [Ruby Editor]で割り当てても反応なしでした。 Eclipse のバージョンは 3.4.1 RDT は 1.1.0.200812081651NGT です。
767 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 11:20:22 ] レーベンシュタイン距離でも求めれば?
768 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 13:37:32 ] >>749 自機でやるとエラー吐かないのに、鯖で動かすと特定の文字列を含むファイルだけ 500エラー吐くですよね。テストした結果scanで100パー落ちていましたし。 でも他のファイルなら普通に鯖でも動いている点から見て、作りが悪いのではなくて特定の文字が含まれてるファイルに対してscanの処理がいように重くなったことによる、 負荷の掛かりすぎて500なのではないかと。 >>749 さんの方法も含めつつindexで処理する方法に切り替えや、怪しい文字列の置き換えなど施して処理するなどの方法をやってみたいと思います。 ありがとうございました。
769 名前:768 mailto:sage [2008/12/23(火) 13:47:40 ] 今やってみた所、indexで切り出したら鯖実行で100%コケていた場所を抜けられました。 scanに比べて負荷が緩やかなんでしょうかindex。
770 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 14:00:56 ] 原因を知りたかったら勝手な推測は止めて、その正規ではない出力が何かを調べる
771 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 17:54:55 ] 130MHz駆動の組み込みマシンでrubyプログラムを走らせたら重すぎて笑った。
772 名前:デフォルトの名無しさん [2008/12/23(火) 18:12:34 ] apacheで出してるerror_logみるとか
773 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 18:28:46 ] >>769 できるよ。 以上。 はい次の方。
774 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:06:53 ] 自分用ライブラリです。なので、究極的にはどうでもいいんですけれど。 「ローカルファイルを読み込んで、書いてあるデータを変数とかに取り込むクラス」があります。 変数は外部からそれなりの頻度で参照されますが負荷とかは無視して結構です。 class HogeFile def initialize(path) @path = path ... end attr_reader :mtime, data2, ... def parse file = File.read(@path) @mtime = File.stat(@path).mtime @data1 = file.scan(/.../) end end という、HogeFile.new.parse が必要なタイプと class HogeFile def initialize(path) @path = path @data = File.read(@path) end def mtime; @mtime ||= File.stat(@path).mtime; end def data1; @data1 ||= @file.scan(/.../); end end という、なんというか遅延評価?っぽいのって、どっちをメインに使っていくのがいいもんでしょか。 こういうデータクラスってけっこう作るんですよね。
775 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:13:25 ] ほぼ全ての変数を必要とする(アクセスしない可能性のある変数というのがまず無い)のなら前者 変数をまとめてPStoreとかに保存する可能性があるとかいう場合も前者 っていうか基本は前者 data4 くらいで超ごっつい正規表現処理があって処理の流れが一瞬止まるとかいうことがあるなら後者がいいかも ネットからファイルを適宜取得するタイプのライブラリでは後者を時々見るな 考え方のベースとなるものは君の言う通り遅延評価だ それが有効かどうかだけで決めちゃっていいと思う あるいはカッコイイかどうかだけでもいい (この場合ほぼ全ての自作スクリプトで後者になって、2年くらいして見返して「あーこの頃は遅延評価時代だー」とか懐かしむことになる)
776 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 19:37:02 ] てかデータクラスにparseさせんな それは別のクラスでやって、結果だけをアクセサ経由でデータクラスに登録しろ
777 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 20:00:17 ] >>776 えー めんどい
778 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 21:05:40 ] >>769 その環境かかないとよくわからんぞ 共有レンタルサーバーなら負荷掛けるとかってに落とすところもある。 見れるならerror_logは最低みとかないとな いや多分、個別の環境かかれても俺はなんともいえんと思うけどw
779 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 21:11:45 ] >>776 主張の理由kwsk
780 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 21:18:50 ] いやそれ自体はそのまんまだろ めんどくさいからやんねーというのも反論そのまんまだ
781 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 21:27:09 ] そういう宗教があるんだろう
782 名前:デフォルトの名無しさん [2008/12/23(火) 21:30:16 ] データとパーサを分けるのは設計の常識みたいなものだけど、個人で作るアプリなら分けなくてもいい。 他人に迷惑をかけないという意味でね。
783 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:02:54 ] >>771 むしろ ruby がちゃんと走ること自体結構感心した。130MHz だもの。
784 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:08:05 ] 組み込みでも 130MHz とかいくのか・・・。 8〜9年前は普通にノートパソコンで使ってたぜ・・・。
785 名前:デフォルトの名無しさん [2008/12/23(火) 23:25:22 ] Mechanize で質問です。 agent = WWW::Mechanize.new agent.get(url) form0 = agent.page.forms[0] form1 = agent.page.forms.name('form1') form0.name == form1.name #=>true form0 == form1 #=>false となります。 form0とform1とは同じものを参照していると思ってたのですが, どんな違いがあるのですか? form0.action = 'hogehoge'はうまくいくのに form1.action = 'hogehoge'はエラーになるので疑問が生じました。
786 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:33:45 ] >>784 うちの自宅サーバ、その頃のノートPCだったりする。(Pentium133MHz、メモリ40MB) RubyのCGIが、起動するだけで4秒かかるよ!! 動き始めるとそんなに遅くないんだけどな……。
787 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:40:24 ] >>785 form1は WWW::Mechanize::List だから、= を使った代入は行えない form1.action は form1[0].action の返り値、すなわち action 属性の文字列を返す ttp://d.hatena.ne.jp/kitamomonga/20080402/ruby_www_mechanize_list#www_mechanize_list__method_missing form1.action = 'hogehoge' は文字列に代入するという奇妙なことになっているだけ
788 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:48:58 ] このへんの動作と返り値のオブジェクトの種類を全部把握しないと使えなくて紛らわしいので、 WWW::Mechanize::List は最新版 0.9.0 では削除されてる agent.page.forms.name('form1') と書いたら NoMethodError で動作しない Mechanize のバージョンが 0.8.5 かそれ以降なら form_with が使えるよ それより古いなら、name に限っては agent.page.form('form1') がフォームオブジェクトを返すほぼ同じ動作をする form0 == form1 を true にしたいなら、List からフォームオブジェクトを取り出して比較してくれ form1[0] が WWW::Mechanize::Form クラスのオブジェクトを返して form0 と同じもののはず
789 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 00:04:55 ] う、答えになってね > どんな違いがあるのですか? 「agent.page.forms[0] は WWW::Mechanize::Form クラスのオブジェクトを返しているが、 agent.page.forms.name('form1') は WWW::Mechanize::List クラスのオブジェクトを返してる」 が回答でございます だから、 form1 = agent.page.forms.name('form1')[0] と、List 内の要素を明示的に取り出さないと、WWW::Mechanize::Form オブジェクトそのものにはならないよ 「クラスのメソッドは Object#send で動作するし、返り値も普通に返ってくるけど、目的のクラスのオブジェクトではない」という変な状態 抽出作業が完了したら [0] をつけて特定する癖をつけておかないと、今みたいに変なとこで詰まったりするぞ
790 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 00:19:13 ] 120MHzあればRubyは動くよね rubygems は鬼のように重いけど
791 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 00:22:34 ] >>787 …このサイト作った奴バカだろ せいぜい中堅どころのライブラリのメソッド全解説とか何が楽しいんだよ
792 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 00:29:41 ] >>791 現在のRubyはそのような 「こんなことまでわざわざ書く理由って何よ?」 という人の努力によってなんとかうまく支えられております マニュアル書く人しかり、丁寧な導入記事書く人しかり
793 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 00:49:24 ] >>791 真意は知らないけど個人的感想としては、mechanizeのライブラリ構造も 単純ではないしRubyの勉強方法として良い手だと思った。 「理解した(自称)」以上に理解が進んでないと説明することなんて できないんだよなぁ・・・。説明してる内に薄っぺらさが露呈する。 告白デバッグが気付かせてくれるのはまさにそれ。
794 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 00:58:31 ] 以上ちらうら
795 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 03:08:36 ] hpricotでdiv.entryで取得した記事数分ハッシュを作成するにはどうすればよいでしょうか? Keyはentry_1->entry_nまででvalueは単語数とか他で計算した値を入れようと思うのですが.
796 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 03:27:22 ] mechanizeのデフォルトパーサがHpricotからNokogiriになったな。 いつのまに・・・
797 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 05:57:55 ] Railsを使ってプロジェクトを自動生成して ruby script\generate controller main index を実行したのみのプロジェクトでRubyのテストをしています. webrickを起動して localhost:3000/ のhtmlページは,問題なく表示するのですが 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が移動時,ふたつ目が更新時です どのように対応すればいいでしょうか.
798 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 07:21:44 ] >>795 search メソッドの返り値は Hpricot::Elements で、配列のような動作をするっていうか配列でできることは全部できる これに詰まってる要素に当たるものは Hpricot::Elem だ Hpricot::Elem にはタグに囲まれてる文字列を適当に返す inner_text メソッドや HTMLで整形して返す inner_html メソッドがあるし、 Hpricot::Elem オブジェクトから search でさらに探すこともできる それ以上のもんではないので、普通にどうにかして作れ
799 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 08:43:05 ] >>797 [BUG]と出た場合、Rubyのスクリプトレベルの誤りではないので、 開発サイドに再現コードを教えるくらいしかできることはない。
800 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 08:49:16 ] BUGと出ても、自分がわけのわからんオブジェクトを引数でメソッドに渡してるとか 回避できるものもあるけど
801 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 09:45:55 ] 回避できてもバグはバグなんじゃね?
802 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 10:59:53 ] すいません、ググっても解決できなくてハマっているので教えてください。 ruby1.8にて、ptyとexpectモジュールで、自動sshログインをしようとしているのですが。 cygwin上では、問題なく動かせるものの。 solaris(free10)では、spawn('ssh ***.***.**')の所で > open: pty slave: No such file or directory とでてしまいます。 このspawnの内部をsshのフルパス指定にしたり、lsなど他のコマンドに代えても同じでした。 どうもptyモジュールが上手く動かせてないと考えているのですが。。。 特にptyにはパラメータはなさそうです。 ptyがやろうとしてる仮想tty?という処理がなんなのかが理解できてない.... すみません、どなたか動かすヒントだけでも教えてください。
803 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 11:18:49 ] >>802 Solarisスレで聞く
804 名前:797 mailto:sage [2008/12/24(水) 13:03:37 ] >>799-801 こちらの環境が悪いんじゃなくて Ruby(もしくはRails)開発側が悪いってことでしょうか? 手書きでは,まだコードを一行も書いていないので そんなことないと思いたいのですが... Rubyのダウングレードとかで対応できないか今夜にでもやってみます...
805 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 13:22:51 ] >>804 まずは1.8.7-p72のか、せめて1.8.6の一番新しいp287を試してみるべき。 www.garbagecollect.jp/ruby/mswin32/ja/download/release.html one-click installer使ってるんだろうけどこの際我慢。
806 名前:802 mailto:sage [2008/12/24(水) 14:13:10 ] 1.8.7-p27 のソースからのビルドでしたので。 なにかヒントがないかとざっと眺めると、 ./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の環境がらみの問題なら、海外で聞いた方がよさそうですね。 英語で聞くのは閾が高いなあ...(´・ω・`)
807 名前:802 mailto:sage [2008/12/24(水) 14:14:57 ] >806 s/1.8.7-p27/1.8.7-p72/
808 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 15:34:50 ] >>786 Passenger入れろw っていうほどのメモリもないみたいだがwww
809 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 17:50:42 ] hiddenを入れれば区別出来るんじゃね
811 名前:797 mailto:sage [2008/12/25(木) 00:36:49 ] >805 どちらをインストールしてみても結果は一緒でした... これってRuby開発者側に伝えた方がいいのでしょうか うちの環境のみの再現だと思うのですが...
812 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 01:18:37 ] rakeで、src/**/*.txt から dst/**/*.html に変換するような file タスクを書きたいんですけど、どうかけばいいですか。
813 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 05:11:00 ] a hrefの値の中にABCっていう文字列があるリンクの中身つまりinner_textを取得するにはどうすればいいでしょうか? hpricotやNokogiriで指定しようにも複数のページでXPATHのaの順番が違っていて取得できません。
814 名前:813 mailto:sage [2008/12/25(木) 05:36:00 ] すいません、事故解決です。 doc/"a[text()*='ABC']"でできますね。 Hpricotとかをtagやセレクタでぐるぐる回すものだと勘違いしてました。 お騒がせしました。
815 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 06:04:46 ] >>811 自分のコードかデータにバグを引き起こす原因があるとは思わないの?
816 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 06:44:34 ] >>815 pc11.2ch.net/test/read.cgi/tech/1227123021/l50
817 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 06:51:44 ] >>797 とりあえず該当の行を見て、まずどこて落ちたのかを調べるべき それでも本体のバグっぽかったら諦めて報告 >>809 本題とは関係ないけど、CGIアプリケーションでPStore使うのはオススメしない rubyのバージョンが古くなるとデータ読めないことがあるから 自分しか使わないスクリプトなら問題はないけど 今ならYAML::Storeオススメ
818 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 13:26:33 ] >>810 hiddenを入れて対処できました。ありがとうございました。 >>817 そうなんですね。YAML::Store に書き換えておきました。ありがとうございました。
819 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 13:59:37 ] >>815 >>797 見てそう思う方がおかしくないか?w でもmysql環境を見直してみる価値はありそう。
820 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 15:36:57 ] 某サイトのurlをopenした所、 uninitialized constant StanderdError (NameError) こんなメッセージが出てプログラムが途中で止まることがあるですけど、これって何が原因なんでしょうか。
821 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 15:38:47 ] >>820 >StanderdError StandardErrorと書いたつもりのどっかでスペルミスしてる。
822 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 15:45:45 ] がっちょわるー class MyHogeError < StanderdError end とか書いてあるんだな がっちょわるー >>820 使ってる外部ライブラリの中から「StanderdError」という文字列を探して「StandardError」に直接書き換えとく
823 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 15:51:11 ] > rubyのバージョンが古くなるとデータ読めないことがあるから これをあまり心配してない俺 その時になってから過去のバージョンの pstore で読んで、新しいバージョンの pstore で書き出せばよくね? PStore を YAML で置き換えて常用するなんてブルジョワジョワジョワに過ぎるだろ
824 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 15:57:22 ] どんなデータをどんだけ保存したいかによるね ファイルが数KB程度で収まるなら読みやすいYAMLのほうがよかろう なんかよくわからん大量のデータの数百KBを読み書きしまーすというのならさすがにちょっと うっかり画像を保存したことがあるが遅くて死んだ
825 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 16:06:11 ] バイナリだとクラッシュしたときの復旧がしんどいから ちょっとしたデータのシリアライズにはyaml/storeがお気に入り。
826 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 16:09:07 ] とりあえず一般ユーザーはこれ使っとけ、と言えるほどのものがRubyにはまだないんだ 用途に応じて使って適宜バックアップだの負荷測定だのしなきゃならん
827 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 16:15:51 ] >>826 ガイドみたいなのがあるといいよね ってるびまにあるのか
828 名前:797 mailto:sage [2008/12/25(木) 16:26:27 ] >819 mysql関係ですか, とりあえず今夜は,sqliteで同じように実装してから 再現確認してみます.
829 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 16:51:39 ] >>821 >>822 begin open("***** ") rescue Timeout::Error rescue StanderdError <<<<<某プログからのコピペまんま rescue EOFErro rescue Exception rescue NameError end こんな感じで例外関係の対処法ググっては追加していた中で某ブログからコピペしたものが、 スペルミスしていたとは..。 即回答ありがとうございました。実は昨日からハマってました。
830 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 17:05:59 ] >>829 コピペうんぬんより、エラーメッセージを*よく*見て原因を考えるクセをつけようぜ!
831 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 22:03:26 ] Ruby学習者の「2冊目の本」、買ったやついる?どう?
832 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 22:24:03 ] エロティックランゲージだかなんだか副題がついてたやつか
833 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 22:26:47 ] 今すぐ買ってくるわ
834 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 22:39:08 ] あれはRuby学習者というか、Rubyを使いたい人向けの本だろ 位置的に初学者本の次くらいなんじゃねーかとは言われてないわけでもないが
835 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 22:46:05 ] 隠しても仕方ないか Rubyで作る奇妙なプログラミング言語 〜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
836 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 23:09:53 ] なんかBFスレでは、へんな言語をネタにしたRuby入門本とか言われてたが。 ...GRASS、無いのかw
837 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 23:15:39 ] >>836 GrassとGRASSは違う言語?
838 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 23:27:35 ] あ、Grassです。見えてなかったらしい。すまん。
839 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 23:34:55 ] 新しい「プログラミング言語 Ruby」が来年の1月に出るのか。 1.9.1のリリースが迫って書籍もまた出てきそうだな。
840 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 01:05:48 ] RubyでSQLを用いるときってどういう時ですか? 解析させるデータ数が多いとか相互参照が多いときとかですかね?
841 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 01:11:04 ] リレーショナルデータベースを使うとき...というか、 どういう時にリレーショナルデータベースを使うか、という質問?
842 名前:797 mailto:sage [2008/12/26(金) 05:53:14 ] とりあえず解決したので報告です. 原因はいまだにわかりませんが Railsのヴァージョンを 2.2.2 -> 2.1.2 へとダウングレードすることで正常動作するようになりました. mysql postgres sqlite3 と三つ試しても同じ結果だったので, 諦めかけてましたが, 友人が作ったv2.1.2のプロジェクトを実行したとき 偶然うまくいったのがきっかけでした
843 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 11:31:16 ] >>840 Rubyの「メモリ内でのハッシュ構造+ディスク上でのPStoreのようなもの」ではどうにもならない場合 具体的には>>841
844 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:35:59 ] SQLの方が良い場合も歩けど オブジェクトのままシリアライズした方が良い場合も結構ある 後者だと単純にSQLに置き換えるって訳には
845 名前:デフォルトの名無しさん [2008/12/26(金) 23:20:20 ] 鋸のXPathが期待した結果を出さないのだが,なぜ? url = "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です。
846 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 23:25:17 ] >>845 あ〜、これは誰かがどっかで説明しないといけないんだけど、Nokogiri.new は実は引数を3つとるんだよ 第3引数は文字列の文字エンコードを書く doc = Nokogiri::HTML(open(url), nil, 'SHIFT_JIS') って書いてみ