1 :
デフォルトの名無しさん :
2009/03/28(土) 07:52:30
テンプレここまで、かな。
乙
乙ぱい
前スレの話題の続きだけど… marcでruby-list,ruby-devのミラーやってくれないかなぁ
bladeはスレッド表示が深くなりすぎないように工夫してるところがいいんだよ
今1.9.1覚えようとしてるのですが、文字コードについて分かる方教えてください 参考にしてるテキストは「初めてのRuby」で、 5.5.1で外部エンコーディングについて、 読み書きしようとする外部リソースのエンコーディングであって、 リソースに文字列データを書き込む際には外部エンコーディングに変換されます。 と説明があります。 しかし、実際に異なるエンコーディングで試してみると以下の(2)のように文字化けします。 これは書き方が悪いのでしょうか、それとも仕様でしょうか #encoding: Shift_JIS require 'stringio' p Encoding.default_internal #=> nil p Encoding.default_external #=> #<Encoding:Windows-31J> s = gets() # "日本語"を入力 p '1:'+s #=> 1:日本語 p s.encoding #=> #<Encoding:Windows-31J> e = s.encode('euc-jp') p '2:'+e #=> 2:(文字化け) p e.encoding #=> #<Encoding:EUC-JP> buffer = "".encode('Shift_JIS') sio = StringIO.new(buffer) $stdout = sio puts '3:'+s #=> 3:日本語 puts '4:'+e #=> 4:日本語 (StringIOを経由するとエンコード変換される) $stdout = STDOUT puts buffer OS: Vista version: ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-mswin32]
>>11 Encoding.default_external は
「外部から File.open などでファイルを読み込むときにとりあえず使われるファイルのエンコーディング」だ
EUC-JP な文字列を SHIFT_JIS に自動変換して表示するご利益はない
>>12 ありがとう、了解です
では、本の説明にある
「文字列データを書き出すときには外部エンコーディングに変換されます。」
の説明自体が適切でない、のか、執筆時点で仕様がゆれてたか、ということで理解しておきます
あー、すまん、それバグっていうか 1.9.1 の仕様なんだ $stdout と $stderr は IO の仲間だが、特別に external_encoding (や、ruby -E)の影響を受けない 画面表示時に自動変換されてしまうと困るから、このへんだけ意図的に仲間外れになってる Ruby 1.9.2 では違ったことになるかもしれないけどね すくなくとも 1.9.1 では、画面表示するときは従来のように文字コードを変換しておくれ これ以外の IO オブジェクト(のようなもの)は Encoding.default_external と同じものが設定される
ごめん、ちょっと訂正 > すくなくとも 1.9.1 では、画面表示するときは従来のように文字コードを変換しておくれ $stdout.set_encoding(Encoding.default_external) $stderr.set_encoding(Encoding.default_external) とすることで、お望みのことはできる これが自動で行われないのが 1.9.1 ただ、これはグローバルな変更なので、ほかのライブラリに悪影響を及ぼす可能性はあるので注意 (実際的な悪影響は無いとは思う)
16 :
11 :2009/03/28(土) 23:34:34
>>14 ,15
追加の情報ありがとうございます
どうしても自動変換したいというわけでもなくて、
Yuguiさんの本は嘘が少ないと聞いていたので、本の説明と実際の
挙動が違うように見えたのが気持ち悪くて質問しました
で、1.9.1の挙動詳細と標準入出力だけが特別扱いされてることが分かったので、
スッキリしました
ありがとうございました
17 :
デフォルトの名無しさん :2009/03/31(火) 21:21:57
Ruby 1.8.6-p368 アゲ
何年か前のエイプリールフールで、
Ruby の資格試験ができると、ウソをついたけど。
Ruby技術者認定試験 公式ガイド (単行本(ソフトカバー))
伊藤忠テクノソリューションズ (著), ITpro (編集), Rubyアソシエーション (監修)
価格: ¥ 2,100
単行本(ソフトカバー): 256ページ
出版社: 日経BP社; A5版 (2009/3/25)
ttp://www.amazon.co.jp/dp/4822234304/
>>19 あれ?この間松江でやってたのはなんだったの?
blade直ったー
中の人乙であります
うぉおおおよっしゃああああ復活乙!!
最新版スナップショットで教祖様がthread.cを書き換えてるのはいいのだが WIN32でmake通りませんよ?
ここに書けばフィードバックされると思うなよ
>>26 25程度の件はMLやredmineに書き込む価値はないよ
別に書いてもいいよ
MLに比べてredmineは敷居が高い気がするな。
簡単な報告ならircをお勧めする 開発者も常駐してリアルタイムに見てくれる
現代においてはIRCというもの自体が異常に敷居が高いと思うんだがどうか いや、IRCがイッパンに対して気軽だった時代なんてついぞ来なかったが…
Webページを見るとIRCに繋がるプロキシみたいなのなかったっけ。 そもそもRubyのチャンネルがIRCNetにあるのかどうかが問題だが。
>>32 ・LimeChatを入れる
・ircnetに繋ぐ
・#ruby:*.jpに入る
他に煩雑な手順ってあったっけ?
>>30 redmineに登録すればMLにも流れるんだが…って逆か。
MLの方が敷居が低いなら、Subjectの頭に[BUG:1.9]ってつけてruby-devに投げればいいよ。
ネラーもrubyに期待しているってことで Rubyist@2chマンセー
ircは、挨拶は「こん」とか、敬称は「○○さ」とかいまだにそんな感じでしょうか。
挨拶は「もいん」
つーか挨拶する暇があったら要件を言え
yugui!俺だー!!け(ry
ここが一番敷居が低くてええわ
>>35 #ruby:*.jp って今もありますか?
ChatZilla で ruby で検索しても見当たらないのですが。
>>43 IRCNetではチャンネル検索できない(しようとすると切れる)ので注意。
チャンネルは今まさに生きている(つかなぜこれが終了してるなどと思ってるのかがわからんが)ので、
そのまま入っちゃってOKです。
>>43 あとChatZillaのデフォルトではUTF-8になっててIRCNetでは文字化けするので、ISO-2022-JPに変えてください。
>>40 ネチケット(死語)にやたらとうるさい古参がいたりとかしない?
もしそんな人がいても、人がいることに対して喜べばいいと思うんだ
>>46 態度が悪い奴はどこへ言っても嫌われるが、常識の範囲内であれば文句は言われない。
ねーよw
ifを式と呼んだほうがよいというのは否定しない。 あくまで「ifを文と呼ぶのが間違い」という主張を否定してる。 厳密に言えば文の返値を利用した時点で全体が文になり 文だった部分は式に成り下がるだろうから 「返値を持つ文」は存在し得ないかもしれない。 ただそれでも概念としては式⊂文。 用語重要なのは同意。文章書く側に「if式と書け」と言うのもわかる。 でも読み手に対して「文は返値を持たない」と言い切ってしまうのはよろしくないかと。 一般論的にも「文」にそこまで明確な定義はないはず・・・ないよね?
alias とかは文(stmt)だけど、nil という値がある。
Rubyでは文であろうが値がある。 Rubyにおいて、何が文で何が式かという定義は、 parse.y で stmt になってるものが文で、expr になってるものが式、 としか言いようがない。確かRHGの頃と今とでは結構変わってた 気がするけど。
おまえらこういうことになると盛り上がるよな
自転車置場の議論ですから。
それが楽しいんじゃないか
>>58 Railsを完全駆逐するわけでもないみたいだよ。
9日遅れで笑いに来たつもりとは笑わせる。
スラドJも反応速度落ちたなw
IRCの話があったけど,rubyのチャンネルとかって別にみんないちいち挨拶なんてしてなくない?
時々このスレでの話題タレコむ香具師いるけどいちいち挨拶しないしな
__send__ を使うか、send を使うか、の件
>>63 挨拶する暇があれば本題を言え、っていう空気
もう __self__ を笑えなくなってしまったな。
>>68 いや全然
というかあのプギャーの本質わかってなかったのか?
初心者スレの続きならもうちょっと前置きなり誘導なりしろよ
>>65 1.8.5でSEGVは出したことないな
何をやってそうなったのか見てみたいけどソースないの?
73 :
デフォルトの名無しさん :2009/04/16(木) 08:27:43
ruby-1.8.7-p160 アゲ
Rubyのリファレンスってさ、どうなってんの? 公式サイトのは3年以上放置されてるし、 新しい奴もRDのままでしかもファイル多杉、chmとかいらないし、 普通のHTML形式も無いのかよ あと新しい奴のテーブル状のレイアウト正直見にくい 長いメソッド定義折り返されてごちゃごちゃになる ダメダメだろ
今更なにを・・・
春休みに書いてくれれば暇な人が出たかも 出ないかも というかナニがダメでナニがネックになってるのかの調査すらないからな 「俺ら」は使わないからかなりひどい状態だ
メソッド一覧が無いから使い難いんだよな すぐ Programming Ruby の方しか見なくなった
>>78 ローカルに落としてPDAで見たかったんだ
wgetで落としたらすげえ時間がかかった…
金出すからもう本でいいよ
> 普通のHTML形式も無いのかよ BitClustのToDoに入ってるんだよな。
これたまに使うのだが、 「Classes」をクリックしても「Methods」が変わらないよな
Methods は全クラスのメソッド一覧だからだろ クラスのメソッド一覧は Classes からクラスを選択したときに 当のクラスのページ頭にある
あ〜、あれか、真ん中の Classes をクリックすると右上の Methods が更新されて クリックしたクラスの持つメソッドが一覧になるとかか んな洒落た機能はねえ
>84 俺もそれに激しく違和感を感じる。 普通、あのレイアウトになってりゃ、Smalltalkのそれと同じようになっていると 期待するもんだろ?
どっちにしてもあの3ペイン+1のRDoc形式は時代遅れ
そうそう
時代は Darkfish-RDoc
ttp://rdoc.rubyforge.org/RDoc/Generator/Darkfish.html 小奇麗なCSSとJavaScriptで読む気にさせてくれてソース表示とクリックしたメソッドを強調表示し
ドキュメントを書いてないメソッドに至っては赤枠で目立たせて ( N o t D o c u m e n t e d ) と煽ってくれる親切機能つき
rdoc の実行ファイルのバージョンが古いと rdoc -f darkfish hoge.rb したときに
uninitialized constant RDoc::Error (NameError) で落ちることがあるので
その場合は 2.x の rdoc (/usr/bin/rdoc とかにあるはず)を明示的に使ってくれ
Darkfishは確かに綺麗だが、以前の3ペインの方が利便性は上だし 全メソッドの一覧がないのが致命的だから使う気になれん
hannaはどうか?
>>92-93 これいいな
綺麗だし探しやすいし、RDoc標準とほぼ同じ感覚で使える
YARVって何だったんだろうね。
98 :
96 :2009/04/18(土) 01:11:17
YARV結局捨てられたじゃん
>>98 え。
そうなの?
よければkwsk
実は俺、ささださんファンだったんだ・・・
YARVはrubyになりました
捨てられたって、おれのサーバーでいきいき動いてるんだが
YARVはRuby本体に取り込まれて、Yet AnotherではないThe VMになりましたが。
それなら捨てられてないじゃん
それならいいんだが(?)、
>>98 はガセでおk?
ChangeLogより
Mon Jan 1 00:00:00 2007 Koichi Sasada <
[email protected] >
* Merge YARV
当時は、狙ってコミットしやがったなとツッコミまくりだった。
もしかしてJavaみたいに、.classファイルにコンパイルする方式になるとか、 Pythonみたいに.rbcファイルが作られるとか、そういうのを期待していた? 予定は無くは無いらしいが。
jrubyつかえ
プリコンパイルは、CGIアプリケーションだと真剣に欲しくなるな あとはごく小さなツールとかの起動が早くなるのも期待できる
Pythonで書かれたMercurialは、バイトコンパイルしてないと、 遅くて使い物にならない。
>>107 Rubyスクリプトは(まあ、最近はRubyに限らないんだけど)大量のライブラリファイルを読み込んでるのがちょっとイヤ
インストール時にライブラリ1ファイルとかにまとめてくれればいいのに
まとめたファイルは require 'hoge' で、個々のファイルだけでいいときには require 'hoge/foo' とかさー
LLもう飽きた。 やみくもに柔軟性追うんじゃなく即時実行もできるけど基本コンパイルを前提にして 記述性と動作速度を両立しつつも後者寄りな言語がそろそろ出てきて欲しい。 IDEとの親和性がよくないことのデメリットももっと強調されるべき。 初プログラミングがEclipse/Visutal Studio/Xcodeでemacs/vimどっぷりじゃない若い人に期待。
それをMSが作ろうとしてるんじゃないの?
Scalaがその辺を狙ってる感じはする あとは、オプショナルな型指定で動作速度を補強するというと、 まあCommon Lispとか?
Emacsで文字列としての単純な略語展開を使ってるのは速いからに過ぎない IDEの文脈補完がEmacs並に速ければ世界はまた違うと思う PCの処理速度に関係なく一定に遅いとかなんなの
>>113 CPU1個の人はプログラミング禁止とかになんねーかなーと思うことはある
開発したい人はCPU2個以上必須
CPU1個のマシンは実行専用機
なんかもう富豪的に超スゴイんだけど並のマシンでは全く動きゃしねえというプログラミング環境が欲しい
PCゲームだって推奨PCがあるんだし、プログラミング推奨PCとかあってもよくね
デュアルディスプレイが欲しいと思う デュアルじゃなくてもいいけど、とにかく「2画面分」欲しい Alt+Tabとかで画面切り替えるとかもうありえん
デュアルディスプレイは勝手に買えばいいじゃんw Rubyとはもはや関係ないし
>>109 無駄なもの読み込むか、それを嫌って結局一つずつ読み込むことになりそうだけど
>>114 昔のgemみたいに低スペックマシンでまともに動かないものができあがるぞw
>>110 俺も静的型付が好み。
Booにちょっと期待。
高度に補完の効くIDEが好きな若者がハッカーになるわけないだろ
>>117 コンピュータ界で3番目に遅いと称されるファイル読み書きの回数が減ることはいいことだと思う
ちなみに2番目が画面出力で、1番遅いのが人間の入力
>>110 最後の行が「GUIじゃないと死んじゃう若い人に期待」とも読める件
実際問題としてGUIメインとCUIメインは両の車輪だろ これが混ざったら世界がマジで変わるパラダイムシフトだ
JavaなんてWindowsで開発して、Webブラウザからwarファイルを登録するだけだからな。 昨今はどこもかしこも開発端末と実行端末が別々でも問題ない状態にあると思う。
>>118 俺はF#かな
Rubyでちょっと大きめのツール書いたとき動的の限界を感じた
遅いところを見つけては拡張ライブラリ化…を繰り返してると
不毛な気分になってくる
>>110 の飽きた、という気持ちもなんとなく分かる
なんでもかんでもRubyでやってしまう状態の人は稀に見る お前は何のためにRubyを学んだのかと小一時間
>>126 memcache-client以外は ~> だからとりあえずセーフだな。
>>129 日本語勉強中?
「そうだったのか!それは知らなかった」
この「だった」と同じ用法だけど、ニュアンス分かる?
どうでも良い
>>132 「た」は過去・完了・確認・存続の4つに分けられることになっているらしい。
「Ruby 1.9.1って安定版だったよね?」
これは確認の助動詞としての「った」だ。
なんでどこの初心者スレもバカが暴れるんだ?
>>134 そう思うのはあなたが年をとって忘れっぽくなって昔を思い出せないだけ
どうでも良い
イテレーターを習得した!
補助呪文 効果:ほかの呪文を連続でかけられるようになる
>>126 r23208 でなかださんが当ててくれたっぽ。
ruby1.9になってからhelpがつかえなくなっています。 mona@2ch:~$ irb irb(main):001:0> help "String" NameError: undefined method `execute' for module `IRB::ExtendCommand::Help' from (eval):4:in `instance_method' from (eval):4:in `irb_help' from (irb):1 from /home/mona/app/bin/irb:12:in `<main>' irb(main):002:0>
むしろ help というのを今知った irb> help "String" TypeError: invalid subclass from /usr/lib/ruby/1.8/yaml.rb:133:in `transfer' from /usr/lib/ruby/1.8/yaml.rb:133:in `node_import' from /usr/lib/ruby/1.8/yaml.rb:133:in `load' from /usr/lib/ruby/1.8/yaml.rb:133:in `load' from /usr/lib/ruby/1.8/rdoc/ri/ri_descriptions.rb:72:in `deserialize' from /usr/lib/ruby/1.8/rdoc/ri/ri_reader.rb:54:in `get_class' from /usr/lib/ruby/1.8/rdoc/ri/ri_reader.rb:54:in `open' from /usr/lib/ruby/1.8/rdoc/ri/ri_reader.rb:54:in `get_class' from /usr/lib/ruby/1.8/rdoc/ri/ri_reader.rb:52:in `each' from /usr/lib/ruby/1.8/rdoc/ri/ri_reader.rb:52:in `get_class' from /usr/lib/ruby/1.8/rdoc/ri/ri_driver.rb:68:in `report_class_stuff' from /usr/lib/ruby/1.8/rdoc/ri/ri_driver.rb:104:in `get_info_for' from (eval):3:in `irb_help' from (eval):9:in `send' from (eval):9:in `help' from (irb):1 from :0irb> ぬう
help String
メールはよく読めこのやろう
それってもしかして ruby-list の鋭敏な人の話?w
櫟本で「いちのもと」って読むのか。 「くぬぎ」かと思った。
Rack 1.0 リリース記念 sage
今ごろ「鋭敏な人」の意味を理解した俺。
いまだに理解できてないおれに説明を。
しゃーぷ。 あとは最近のruby-listのアーカイブを参照。
『Rubyによるデザインパターン』立ち読みしてきた ターゲットは脱初心者〜中級者ぐらいまでだろうと思われる デザインパターンの概略・Rubyの基礎から始まり、GoFの一部をRuby流に解説、 その後Ruby特有のパターンについて さすがピアソンだけあって悪くない 読んだ限りでは良解説で、変なことは書いてなかったと思う ただ、もしかしたら上級者の方は物足りないと感じるかもしれない
ピア村は昔いい本出してたけど、最近は縮小傾向だったな 久しぶりに買ってみようかな Amazonで見る限り、純粋なRubyのGoF本ってわけじゃないのだろうか
表紙とか紙の質とかが残念だけど良書だと思う。
>>151 Rubyで純粋なGoFって無駄多すぎじゃない?
Ruby自体が旧来言語から見たデザインパターンの塊だからな
>>154 そうなんだけど、
「GoFにそってコーディングするとこうなるけど、
Rubyの機能(Singletonとかイテレーターとか)を使うとこうなります」
みたいな感じのもいいかなと思って。
Rubyのよさもわかるし、コーティングするのはRubyだけとは限らないし。
まあGoFをやりたかったら、Javaの本でも読めと言われればそうなんだが。
そこで The Design Patterns Smalltalk Companion ですよ。 余力があれば、Ruby 向けに書き直すのもよし。
いつのまにか、るりまのクラスリファレンスの表示形式が変わって見やすくなってるな (旧リファレンスのような一括表示になってる) るりまチームの人お疲れ様です
if (a = foo) != nil end を if a <- foo end って書ける様にしてくれ。 イコールで代入とか全国の数学者が混乱するだろ。
は?
それより//演算子だろ
>>160 その記法、俺には foo が a を参照している、という状態を表しているように見え、
代入という操作を表現しているようには見えない。
代入は a := foo でいいよもう
>>160 > イコールで代入とか全国の数学者が混乱するだろ。
だとしたら、この世に存在する殆ど全ての言語を作り直す必要が発生するね。
Cもそうだしネ!
ここは寧ろ混乱して困っている数学者氏にご登場願いたいくらいだ。
数学者は計算機を計算に使わない。
数学者はRubyを計算機での計算に使わない。
使うよw 四色定理の証明とか
数学なんて定義を明確にして積み上げていくシロモノなんだから 数学者は、むしろ適応早いと思うんだが
> if (a = foo) != nil なんでこんな無駄なこと書いてるんだ?
>>172 自分の成功体験で「若し変数 a に foo を代入した結果が nil でないならば」と読み下せるからだろう
なんでわざわざ新しい言語を覚えようと思ったのかが理解不能だ
>>172 if文ブロック内で、aがそのまま使えるからじゃね
いや、 if (a = foo) とか unless (a = foo).nil? とかあるじゃん? という話だと思う
foo が false だったら 真として扱いたいんじゃないか?
fooがfalseだったら偽だろ unless (a = foo).nil は気持ち悪い
if a == false と if a == nil を区別したいんだろ
>>174 と
>>178 は同じやつで、最初のレスのやつだったりしてな
どう見ても素人まるだし
!= nil
== nil
Rubyでこんなこと書くやつはそうそういない
a.nil? はともかく、 !a.nil? は字面がなんか嫌だ
>>179 RubyなんてPerlとかからの移行が多いんだから、普通に一杯いるだろ
unlessやnil?を無理やり使ってこそ真のRubystだろうが
>>172 の「なんで」から始ったレスなのに、
レスした奴まで素人扱いかよw
というか、その程度のことで素人認定するお前はRubyしか知らない素人なんじゃねーの?
こっちのほうが初心者スレになってきた件
if not obj.nil? then はまれに使うな
>>184 ソースは言葉よりはるかに雄弁
あとやたら「w」つけるやつで優秀な奴はまずいない(おれ個人の経験則だが)
変ながんばり方だなw
unless obj.nil? != false とか。
190 :
デフォルトの名無しさん :2009/05/14(木) 16:35:24
rspecで、fixture をキャッシュさせない方法はないでしょうか fixtures :product で product.yml でデータを products テーブルに投入しますが、 *_spec.rb を単発で実行するときはテストが通るけど、 rake test 等でまとめて実行するとき、Aという機能のspecファイルで :product を投入し、 次に Bという機能の specファイルで、:product というシンボル名だけど別のディレクトリにある product.yml を 投入したいのですが、名前が同じだと2回目は読んでくれないようです。 言い方を変えると、describe ごとに fixtures で入れたデータをロールバックしてほしい spec_helper.rb で config.use_transactional_fixtures = true を falseにすると、ロールバックされるようになったが、逆にテストメソッドの中で実行した insert や delete は コミットされるようになってしまった
>>190 別のディレクトリにあるproduct.ymlっていうのがよくわからない。
AとBで読み込んでるfixtureは同じじゃないのか?
とりあえずfixtureを読み直してくれないという意味で捕えるけど
データベースエンジンがMySQLのMyISAMだったらロールバックしない。
InnoDBだったらロールバックするよ。
fixtureを読み直したりはしてないんじゃないかね。
ロールバックよりは遅そうだし。
>>191 レスどうもありがとうございます。
> 別のディレクトリにあるproduct.ymlっていうのがよくわからない。
> AとBで読み込んでるfixtureは同じじゃないのか?
たとえば Rails で二つコントローラがあって、
RAILS_ROOT/app/controllers/foo_controller.rb
RAILS_ROOT/app/controllers/bar_controller.rb
それぞれの spec ファイルは以下の通り。
RAILS_ROOT/spec/controllers/foo_controller_spec.rb
RAILS_ROOT/spec/controllers/bar_controller_spec.rb
それぞれの spec で異なるテストデータを使いたいので、以下のようにfixtureのymlファイルを配置し、
RAILS_ROOT/spec/fixtures/controllers/foo/product.yml
RAILS_ROOT/spec/fixtures/controllers/bar/product.yml
それぞれのスペックファイルの describe の先頭で、以下のようにやっています。
self.fixture_path = RAILS_ROOT + '/spec/fixtures/controllers/foo/'
fixtures :product
> とりあえずfixtureを読み直してくれないという意味で捕えるけど > データベースエンジンがMySQLのMyISAMだったらロールバックしない。 > InnoDBだったらロールバックするよ。 こちらでも MySQL を使っていて、InnoDBです。 で、テストを動かす前にテーブルの中身を全て truncate した後、テストを動かして、 もう一度テーブルの中身を覗くと、fixture でいれたデータが残っている。 自分のビジネスロジックで insert したり delete したトランザクションはロールバックされるようです。 spec_helper.rb では以下のようにしています。 config.use_transactional_fixtures = true config.use_instantiated_fixtures = false 私が思うに、fixtures :product のシンボル名でキャッシュするようで、 foo_controller_spec.rb が動いた後、 bar_controller_spec.rb が動くときに、 bar_controller_spec.rb で指定した fixture :product が再読込されないようです。 だから spec コマンドで foo_controller_spec.rb や bar_controller_spec.rb を 単発で動かすときはきちんとテストが通るけど、rake spec してテストを全て実行した場合、 bar_controller_spec.rb のテストが失敗する。これを何とかしたい。 lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/fixtures.rb に reset_cache というクラスメソッドを見つけたが、*_spec.rb の中に Fixtures.reset_cache と書いてもうまくいかなかった。 みなさんは、rake spec して全部のテストを通すとき、全ての spec ファイルで 整合性がとれるような fixture のテストデータを用意しているのでしょうか?
controller の spec では mock してる。
NetBeans新バージョンってRubyサポート周りでなんか改善あった?
なんだよ、未だにsqlite3-rubyって1.9対応になってねえのかよ だせえなあ
そういやみんなはなんでPerlやPythonじゃなくてRuby使ってるの? 漏れはPerl使ってたら、研究室の先生にRubyを猛プッシュされたからなんだけど。 ちょうどPerlになんか嫌気がさしてたころだったし。
198 :
デフォルトの名無しさん :2009/05/17(日) 22:56:32
Ruby Rubyしようよって上司に言われまして。 キモかったので渋々使うようになりました。
むかし(15年くらい前)はPerl使ってた。OOで書けるスクリプト言語は ないもんかなーと思いはじめた頃にPerl5が登場して、似非OOできるように なった。少し遅れてPythonを知り習得。selfのウザさとスコープの貧弱さに 面倒を感じはじめた頃にRubyがfjで発表され、飛びついた。
やっぱり上からプッシュはそこそこあるのかね。
仕事ならまあ仕方ないんだろうけど。
>>199 さんはRubyへの飛びつきはええw
数年前に、RPGツクールに搭載されてたRGSSから飛びついたような記憶がある
>>199 とちょっと似たような感じだが、Pythonは通らなかった。
Perl4->Perl5->Ruby
RGSS という文字列を見ると○motiを思い出してしまう…。 かなり俺の心に深い傷となって残ったようだ。
少し前に MoonW○lf の投稿を見て、ああ、と思った
最近見ないのは鬱期なのかな。お大事に。
いや普通は「忙しい」が来るもんだと思うんだが 他にすることもあるだろうしRubyコミュニティにかまけてばかりでもなかんべ
普通じゃないから
WBSに出演したときは割と普通だった
World Baseball ...Senior ?
>>208 よく言えば、やり手の経営立て直し屋だな
Hashのキーをタプルしたいけどできません なんでですかね?
>>213 「タプルしたい」とは?
「できない」とは?
タプルという言葉はわかる。
>>213 h = {'a'=>'aaa', 'b'=>'bbb'}
h.each do |t|
p t #=> ['a', 'aaa'] ...
end
こういうこと?違うならkwsk
>>215 それだとキーだけじゃないだろ。
Hash#keysじゃないかとESP。
デフォルトイテレータ変数いつになったら付くんだよぅ
なんだそりゃ。 推測で言うと100年経っても付かない方に10**20 ZWD。 …と思ったら今流通してないのか、ZWD。
要素が多いEnumerableなオブジェクトがあったとして、 最初の1つを除いた残りを配列作らずにイテレーションしたい場合、 どう書いたらいいですか Lisp の cdr 的な何かというか drop(1) の Enumerator 版? でも enum_for(:drop, 1) はダメだし、 each_cons(2) {|_, i| ... } とかかなあ
「最初」があるならそれは普通に配列だと思います
素直にフラグを立ててもいいと思います
Rubyにまともな外部イテレータがあればよかったのに
自分はEnumeratorというかFiberで事足りてるけど 今どこがまともじゃなくて、どうなるとまともになるの?
そんなことばかり言ってるやつは、 何を提供されてもまともなものなんて一つも作れない
まあなんだ、
Rubyユーザーがあんまり計算量のこと考えてないのはわかった
>>220 それは違うだろ
Enumerable#first は配列でなくても使えるわけで
しかしEnumerableのメソッドってブロックの有無で
イテレートor配列返す、イテレートorEnumerator返す、ブロック無視して値を返す
とバラバラなんだな…
Rubyにどういう風に外部イテレータを実装すれば、 どのように計算量的に良いのか説明してもらおうか。
インデックスが「0」の場合に、 IFで分岐させるなり読み飛ばすなりするのはコストが高いと考えてるのか?
34329487億回ループするとしたら相当なコストになるな
>>228 そんだけ回せるのかどうかは置いておいて・・
全部やっちゃって最初の1回を捨てろよw
うわ、るびきちかよ。パスパス。
マイコミでいいな
>>228 試してみたの?この手のコストなんて、
ネットワークやディスクアクセス(特にランダムアクセス)に比べたら無視できる程度だよ。
あと描画もコストが高いね。3Dに比べれば2Dは低いけど、それでも相当。
***** 1億ループの簡単なプログラム ***** puts begin_time = Time.now increase = 0 1.upto(100000000) do |index| #if index == 1 then # puts 'start' #else increase += 1 #end end puts "result:#{increase}" puts end_time = Time.now puts (end_time - begin_time) コメントなしはIFあり、コメントありはIF文なしになる
+++++結果+++++ ■IF文あり 2009-05-21 21:39:23 +0900 start result:99999999 2009-05-21 21:39:31 +0900 8.213671268 ***** ここ ***** 2009-05-21 21:39:33 +0900 start result:99999999 2009-05-21 21:39:41 +0900 8.093124567 ***** ここ ***** 2009-05-21 21:39:43 +0900 start result:99999999 2009-05-21 21:39:51 +0900 7.639575222 ***** ここ ***** 2009-05-21 21:39:53 +0900 start result:99999999 2009-05-21 21:40:01 +0900 7.589390724 ***** ここ ***** 2009-05-21 21:40:06 +0900 start result:99999999 2009-05-21 21:40:13 +0900 7.058708883 ***** ここ *****
■IF文なし 2009-05-21 21:40:33 +0900 result:100000000 2009-05-21 21:40:40 +0900 7.123794219 ***** ここ ***** 2009-05-21 21:40:43 +0900 result:100000000 2009-05-21 21:40:50 +0900 7.459420084 ***** ここ ***** 2009-05-21 21:40:53 +0900 result:100000000 2009-05-21 21:40:59 +0900 6.4174587 ***** ここ ***** 2009-05-21 21:41:04 +0900 result:100000000 2009-05-21 21:41:11 +0900 6.222126519 ***** ここ ***** 2009-05-21 21:41:13 +0900 result:100000000 2009-05-21 21:41:19 +0900 5.950009081 ***** ここ *****
結論 1億ループでIF文あるなしは、1秒ほど差が出る (おれ環境では。メモリ1G割り当てのVirtualBoxでCentOS利用。Ruby1.9.1。別件でEclipseも立ち上げてた) これが許容できなかったらRubyはやめた方がいい。 3000万ループとかコンピュータにとってはそれほど大したことないから。 3000万がものすごいっていうのは日常の感覚だから、感覚を修正した方がいいよ。
benchmark.rb 使ってやれよw
>> 34329487億回ループするとしたら相当なコストになるな おっと、すまん。「億回」かよ。 「億」にするなら「兆」にしてくれ。 それならRubyを使うことの方がおかしいと思う。
>>238 今調べた。便利なものを教えてもらった。サンクス
Rubyを使うのがおかしいつーか億は書きミスだろ 1日で86400秒なのに分散処理したとしてもどんだけかかんのよw
プログラマならせめてCPUクロックで例えろよ 秒って
個人的にRubyで作るかどうかを決めるときに100万回以上ループするかを基準にしてる。
>>240 むしろ、それだけループさせるデータの、最初の特別な一つに
なりうる何かに非常に興味がある。
コストのことはさておき enum.inject {|_, x| ... } というのを思いついた
cookbook系より使いやすいライブラリリファレンス出してくれ
>>245 それはCSVファイルでタイトル行とかだろ
>>245 スクリプト言語って効率気にしたら負けだから、
仮にそうなら open('|sed 1d < hoge') とかしちゃいそうな俺。
>>248 一レコード10byteとして、30PBのCSVファイルとか
おそらくいままで存在したこと無いと思う
俺の世界が狭いのか
>>243 RISCとかCISCとかはもう死語か。ボトルネックとかも死語かもな
クロック数だけならPen4系のCeleronでも最新のマシンと遜色ないな
プログラマなら既にクロックとかFLOPSがもうあまり信用できるもの じゃないことは皆知ってるはずだが。時間で測るのが一番信頼できる。
盛り上がってるなw 最初レスしたやつはさくっと「next if 〜」とかやって寝てるんだろうな
>>219 > でも enum_for(:drop, 1) はダメだし、
ダメってどういう意味で?
>配列作らずに
Enumeratorだから配列は作らん。
結論としてはLisp使っておけば万事解決ってことでいいのかな。
Rubyって効率より「こんな風に書けると便利」って理由で
メソッドが増えて行ってるような気がしないでもない
>>254 drop(1) がイテレータメソッドじゃないからかと。
実際に (1..10).enum_for(:drop, 1).to_a とかやってみればわかる。
つか、Enumerable にブロックつき slice があればいいんじゃね?
>>219 ,234
これでOK?
a = (1..10**8).map
#if index == 1 then
# a.next
#end
increase = 0
puts begin_time = Time.now
begin
while a.next
increase += 1
end
rescue
puts end_time = Time.now
puts (end_time - begin_time)
puts "result:#{increase}"
end
わざわざmapする理由を書いてくれなきゃOKかどうかわからん。 遅そうだなと思って試したら2分ほどかかるね。こうした意味はなんなの?
>>261 意味不明
Rubyとその島根?っていう県は関係ないだろ
Ruby関係でその島根っていう県のことを聞いた記憶は全くない
どうでもいいがきちんと確定してくれ 島根? とかいらん 島根だ
島根県を知らないというのは日本で発言するのは少し恥ずかしいことかと 思いますので、勉強をお勧めいたします。
まあ、本スレだしどう遊んでもいいけど…
そんなことより鳥取しようぜ
>>265 > 他人に島根を強制
美しい日本語乙w
47都道府県の位置とおおざっぱな形と県庁所在地くらい、小学校でならうだろ。 覚えてないやつの方が異常。
習ったこと全部覚えてたら苦労しねーよ・・・orz
>>262 が本当にそうかどうかは置いておいて、それでも大学入って卒業できたりするんだぜ
教養がないのはまだしも、その自覚もないと恥をかくっていう見本でいいじゃないか
なるほど、ふいんきを得意満面で訂正するアホはこういう人間か
そんな俺文化を押しつけられても
「鳥取って何ですか?」ネタが知識不足の話になってしまうあたりに隔世の感があるな
>>262 ,265がそれなの?
えらく高度なネタだと思うが、本当に世代のせいだけか?w
「鳥取県は存在しない」とかかな 結局あれどうなったんだ
ネットでの鳥取いじりはもうマジに取られるご時世なのか うへえおっかねえ
鳥取≠島根
たいして変わらんと思う
もういっそまとめてRuby県にしようぜ 確かどっちかが作者の出身県でどっちかが住んでる県でどっちかが自治体で推進してるんだったはず
鳥取と島根、荻原と萩原は、どっちで呼んでも、 正しいってことにしました。
本当に鳥取と島根を混同してた奴がいそうな気配
一応言っておくが、 出雲大社とか宍道湖とか玉造温泉とか加茂岩倉遺跡とか石見銀山とかある方が島根で、 ・・・えーっと、梨とか西瓜とかで有名なのが鳥取だからなw
砂丘があるのが鳥取、無いのが島根。
オープンCMSを作ってから偉そうなこと言えよ>鳥取
20世紀なしと同程度にはメジャーな特産品作ってから 口をきこうな>島根
Android携帯そろそろ出るね Ruby使って何か面白いことできないかな
>>259 map じゃなくて each の間違いかな
>と思ったら、私、ビジネス分野で成功してないじゃん。書けないじゃん。 ww Linusみたいな自伝書くしか
Rack で Errno::ESPIPE の例外が出るバグの FIX まだー CGI 用途舐めると痛い目見るよシュッシュだよシュッシュ
rack 使ったフレームワーク(まあ、最近の全部だな)が CGI として動作させられないってバグだっけか 報告あったのずいぶん昔だし 1.0.0 で直ってんじゃねえの
イテレータで使う局所変数が、外部変数と衝突するというマヌケ極まる仕様が放置されてるのが信じられない。
1.9でそのへんのスコープ変わらなかったっけ
変わった
変わったのはブロックのパラメータの仕様であって、
>>295 が恨んでる仕様は
そのままじゃないか?
Matzの本は漏れみたいなへたれではたたかえないぜ・・
なんか変わったらしいね。まだよく理解してないが
x = 0 100.times{ x = 100 } p x これが 100 で 100.times{ x = 100 } p x これが NameError (つまり x 未定義)なのがヘボいってことだろうな
アホか
なんでそれがヘボいんだ? NameErrorにならん方が気持ち悪いと思うんだが。 スコープを理解してないだけじゃねえの?
このどびっくり仕様擁護しちゃうのかw
スコープが狭いことに文句言う人初めて見た
自分もいまいち必然性がわからないけど これは実装上の都合なの? 実装的にはどっちも簡単に出来るけど 仕様はこうあるべきという判断でこの挙動になってるの?
仕様はこうあるべきでこうなってる。 わからなけりゃCのスコープ勉強しろって。
>>302 たまにこのNameErrorでハマることはあるし、不満ではあるけど
これって何かいい解決方法あるの?
(まだCとRubyしか触ったことないから、他の言語がどうやってるのかよく知らないんだが)
Cの仕様に準じているからというのは無理ありすぎ
・ 前者は0を返し、後者はNameError ・ 前者は100を返し、後者も100を返す やっぱどっちかで統一されてたほうが見た目わかりやすいよな
ブロックを実行し終えて、そのためにスタックに積んでたフレームごと 片付けられる、みたいなイメージを後者からは受ける ので NameError がいい
ていうか「ブロックの下の層」に対してはブロック内からはリードオンリーにしようぜ 前者が100になるってやっぱりおかしいだろ 素直にメソッド作れって話ではあるんだけどさ
>>315 ブロック内でブロック外と同名のローカル変数を定義した場合の動作が変ということであって、
そのへんを下手にいじると
h = Hash.new
data.each do |e|
h[e] = make_value(e)
end
このタイプの処理ができなくなるぞ
ブロック内で好き勝手にローカル変数を命名出来ないと。 x = 0 100.times{|; x| x = 100 } p x #=> 0 1.9でその辺が直された。
ブロック内外で変数名が被ったときの動作が気になるよ問題は Rubyが有名になり始めたころに海外で議論されてたような気がする
外の変数を読み書きできるってのはクロージャとしては普通な挙動だと思う
>>319 ブロックがサブルーチンのように使われてることもあるってことじゃね
どっかで読んでからずっと気になってたんだけど
>>298 > グローバル変数を置こうとするともうダメ。
> これまではオブジェクトの属性に代入できたり、配列のスライスを呼び出せたのも、できなくなりました。
こういうのをブロックパラメータでどうにかするって具体的にどんな処理?
PowerShell 1..10 | %{ $a += $_ } $a 55 やっぱこれが直感的かつ自然だな
ブロックローカルなスコープは無しにして、外で定義しようが中で定義しようが
一緒くたに扱ってしまうのが、統一感もあって一番いいんじゃないだろうか
つまり
>>313 でいう
>・ 前者は100を返し、後者も100を返す
の動作
ブロックローカルなスコープがないと困る場合って、どんな場合があるだろう
ブロックローカルな変数が使いたいとき
逆になんでブロックローカルの概念を忌み嫌うんだかわからない。 普段どんなコード書いてるんだ?と勘ぐってしまう。
ブロックローカルが無いと、ブロックをマルチスレッドで 並列に動かそうとすると悲惨なことになりそうだ
>>321 こんなの
require 'optparse'
require 'ostruct'
opt = OptionParser.new
opt.on('-v') {|$verbose| }
o = OpenStruct.new
opt.on('-f') {|o.force| }
キモーイ
初期のごちゃ鍋Rubyっぽい
>>294 $ cat public_html/cgi-bin/test.cgi
#!/usr/local/bin/ruby -Ku
# -*- mode: ruby; coding: utf-8 -*-
require 'rubygems'
require 'sinatra'
Rack::Handler.register 'Webrick', 'Rack::Handler::WEBrick' # damn
set(:run => false, :environment => :cgi)
get '' do
"hello!"
end
Rack::Handler::CGI.run Sinatra::Application
$ w3m
http://localhost/~my/cgi-bin/test.cgi $ sudo tail -n 2 /var/log/apache2/error.log
Errno::ESPIPE - Illegal seek:
/home/my/public_html/cgi-bin/test.cgi:14127.0.0.1 - - [27/May/2009 05:47:25] "GET HTTP/1.0" 500 30 0.0072
>>324 ブロックローカルな変数って、(ブロックパラメータ以外で)そんなに必要になることある?
>>325 別に忌み嫌ってはないし、今でもそれほど困っているわけではない
でも統一感がないように感じるのは確か
覚えたての頃にはよくハマったしな
334 :
333 :2009/05/27(水) 08:08:24
焦りすぎスマソ そんなこと=ブロックが外側のローカル変数を参照することを禁止しちゃう
> ブロックが外側のローカル変数を参照することを禁止しちゃう 何を見てこの結論になったの?
>>331 Rack1.0.0 のほうでは直したって言ってるけど、 Rack1.0.0 を利用するライブラリ経由では直ってないってとこらしいな
一時変数って、別にブロックローカルでなくてもあまり困らないような
バッティングの心配がないという点でおれは好きだが
そりゃ、たとえば、全ての変数を変数表で管理するのなら 変数のスコープ制限なんていらんよ、そりゃあね
それなんてCOBOLw
ブロックの外側を参照する場合は ../x ですべて解決
トークン被らないし、面白いかなあとか一瞬思ってしまったw
正規表現と被るよ
それに多重にネストした場合は ../../x か?
ブロックを深くした場合はすべて ../ を追加してくのか?
というかruby-coreあたりで散々あきるほど議論された話で、
>>342 に類するものも当然出ている。
文法論議をしたいならruby-devとruby-core位は全読してから出直せってことだ。
そんなことより a++ の話しようぜ
>文法論議をしたいならruby-devとruby-core位は全読してから出直せってことだ。 ハードル高けーよ。
えーとつまりRubyのうんこ仕様はずっと放置というのが結論なの?
うんこ仕様とか思ってる方がおかしいというのが結論。
ブロックローカルがうんこ仕様なら大半の言語がうんこだろ 例外はCOBOLとかBASICとか?
例外はあと関数ローカルまでしかやってないLL系か? javascriptも関数ローカルまでしか実装してないはず。
クロージャがあるからいいんじゃね
C言語もブロックローカルじゃないぞ
1.8までの、ブロックパラメータがローカルじゃない、というのが仰天仕様。 「驚き最小の法則に反する」と断言して問題ない珍しい例だ。
ローカルだよ ただ、ブロック外にある変数と同じ名前の場合はそれが再利用されるだけ a = 0 [1,2,3].each{|a| a} p a #=> 3 [1,2,3].each{|b| b} p b #=> NameError これが適用されない「独立した」スコープになるendつき構造はメソッド定義とクラス定義くらい メソッド定義とクラス定義(とモジュール定義)の終端は end 以外にしたほうが スコープ区別的によかったんじゃねーかという話は思い出したように聞く
たとえば、Perlだったらこんな感じなんだが、これはどういう理屈でそうなってるの? (あえて、forの一時変数$aの my を省略してみた場合) んで、Rubyでこれをすると具合が悪いのだろうか。 詳しい人解説してくれたら嬉しい #! perl use strict; use warnings; my $a = 'a'; my $b = 'b'; for $a (1..10){ # ← ここの$aがよくわからん(自動的にmy?) print $a, "\n"; #=> 1, 2, 3, ... print $b, "\n"; #=> 'b' } print $a, "\n"; #=> 'a' print $b, "\n"; #=> 'b'
ブロックの外の変数が読め、つまりはブロック内変数が共有され、なおかつブロック内スコープを作る(each) ブロックの外の変数が読め、つまりはブロック内変数が共有されるが、ブロック内スコープは作らない(if) ブロックに見かけが似ているがブロックではないのでブロック外は読めずブロック内スコープのみ(def) まあめんどくさいっちゃめんどくさい
てかCのブロックと違ってRubyのブロックはクロージャだからなぁ
どう見ても不自然で不統一なのに これこそ完璧な驚愕最小の仕様!と言い張るから絡まれるだけという気がしてきた。 問答無用で覚えろ。とだけ言っておけばいいんだよ。
そうなんだよね、Rubyは 「従来言語の○○に見えるが実は全く違う××で実装されておりそれゆえ挙動も微妙に違う」 というのがどうにも多い 最初からフェイスフルオープンで教えられれば違うものの擬態だと認識できるのかもしれないけど 「いわゆる○○ですよー」と教えた後で「でも実はちょっと違います」というのはまあ若干卑怯っぽくもあり
>>360 驚き最小うんちゃらーは物凄く昔に破棄された概念です
久しぶりに聞いたよね
matz驚き最小の法則で上書きされたんだっけ それも破棄された?
最初からオレオレ驚き最小の法則だったからな。 話が噛み合なくて当然。
367 :
デフォルトの名無しさん :2009/05/28(木) 21:17:07
ruby1.8.6です。win32oleで質問です。
ttp://d.hatena.ne.jp/elm200/20071006/1191661248 を実行してセルの内容を
取得しようとしていますがエラーになります(下記)。
C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require':
no such file to load -- win32/clipboard (LoadError)
from C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
目的は、上記HPにあるように
a\tb\r\n
c\t\d\r\n
の形での(タブ区切りか何かの形での)取得です。 ※特にHPの記述に拘りません。
現在のところ、下記の方法で列の取得は成功しております。
require 'win32ole'
xl = WIN32OLE.new('Excel.Application')
fso = WIN32OLE.new('Scripting.FileSystemObject')
book = xl.Workbooks.Open(fso.GetAbsolutePathName("Book1.xls"))
sheet = book.Worksheets(1)
cells = sheet.Range("A1:A5") # セルA1〜A5を取得
cells.each {|cell|
puts cell.Value
}
これはひどいまちがいさがし
>>370 そうか。外人にはnokogiriは覚えにくいのかw
karaokeやharakiriやkaroushiが憶えられて nokogiriが憶えられないってこともあるまいに きっと趣味だろ。そのうち萌えキャラになるに違いない
けぶんりっじに通じるものがあるな
>>374 ぶっちゃけnokogiriもこれでいいんじゃないか?
nokogiriが日本語由来だという認識がないんだろう 日本のnokogiriだという紹介が一般的になりまくればそう思ってもらえるはず (子音+母音)+(子音+母音)+(子音+母音)+(子音+母音) だからこれもしかして日本語なんじゃね、 という推測ができるのはマニアだけ
というかiとl間違えてるだけじゃん。。 日本語とか関係ないし(むしろ日本人のほうがよく間違える)
sudoka とか sudoko でググれ
harikari て harakiri だったか 前にどこかで見て ??? だった記憶がある
まあなんでノコギリなんだというそもそもの問題を感じないわけでもない フランク・シナトラが出てくるSinatraよりはマシだが
Rubyに言われたくはないだろうけどな RubiとかRubieとかShimaneとかの実在しないようなものにすればよかったのに
島根非存在説
Rubyが誕生した時点ではmatzと島根には特別な接点ないしなあ
>>386 いやNokogiri作者が日本語をカタコトで知っているのは知ってるし
MLに誰も望んでなゲフ折に触れたメールを作者が流してるのも知ってる
Nokogiriを使う人がNokogiriを日本語だと思ってないんじゃねーかなーという話だ
よく知らんのだが、欧米圏のPCに漢字や日本語のフォントとか普通に入ってるものなの?
>>385 そういや米子だったな。
あらかじめいっとくと、米子は鳥取県で鳥取は島根の右、兵庫の左、岡山の上だ
鳥取じゃないのが島根で、 島根じゃないのが鳥取と覚えておくだけで十分。
米子って言ってもお前らは糞田舎の一つとしか認識してないのかもしれないが、 山陰ワールドの中では米子とか津山は、トーキョー、ニューヨーク並みの 大都会だから。
県同士は仲が悪いけど、テレビ局は相乗りしてるのがうらやましいな、とテレ朝系が写らない富山県民は思うのであった
>>391 たぶん津山の人は山陰扱いされるのを嫌がると思う。
どう見ても山陽ではないけど。
>>388 普通入ってない。外国人が大勢いる対都市圏のネットカフェなら結構入ってる。
>>381 ノコギリなのか、ノコジリなのかわかんなかったんじゃないかな。
https://grp03.id.rakuten.co.jp/rms/nid/vc ↑のサイトに自動でID、パスワードを入力して
ログインする処理を行いたいのですが、どうすれば
よいのでしょうか?色々検索してhttpclientやopen-uriで
試行錯誤してみたのですが、ダメでした。
やりたいこととしては、みんなの就職活動日記という
サイトから書き込みを検索&抽出をしたいです。
しかしそのためには上記のサイトにログインしなければ
いけないのです・・・
そのURLにアクセスすると見つかりませんと言われるので様子がわからん。 HTTPのBASIC認証ならopen-uriで :http_basic_authentication = [ user, password ] オプションを付けるのが簡単。 ログインフォームなら、要求されているパラメータを付けてセッションクッキーを得るなどする。 HTTPSだが、ホスト証明書を検証するためには、 OpenSSL::X509::DEFAULT_CERT_FILE で指されるパスにルート証明書を一式置いておく。
ブラウザ操作感覚で使えるMechanizeというのもある。
>>398 FirefoxのLive HTTP Headersとかでブラウザと鯖のやりとりを見て真似すればいい
じゃあMechanizeをすすめます。
ありがとうございます Mechanize検索してみましたがなかなか良さそうですね ためしてみます!
>>392 テレ朝系が見れるのは、DAIGOのじっちゃのおかげだって、
ばっちゃが言ってた。
気に入ってるソフトウェアのRDocが次々とDarkfishになってて Darkfish嫌いの俺としては非常に哀しい やっぱり人気あるのかな、あれ
レイアウトはCSSが標準になって、フレーム自体がもう流行らない
409 :
404 :2009/05/30(土) 01:35:43
自分で解決する気ゼロだな。それは初心者スレがいいと思う。
WebProg板の方がいいとか思ったが、あっちにはRubyの適当なスレ無いのな Railsのが一つだけ? これでは汎用エロ動画収集スクリプトの名が泣くじゃないか
えっ、おまえらそんなことに使ってたの?・・・
>>410 ニコニコやgoogleで試した限りではできたのですが、
このサイトだけはできなかったんです。
問題を削っていった結果、
>>409 のagent.getの時点で取得出来ていないことが分かりました。
HTMLソースには「&SERVICE_ID=1」なるものがついてるのだが、それはいらないの? これないと普通のブラウザでもはじかれるのだが。
おれはシェルスクリプトと正規表現と wget のオプションは エロ画像ダウンローダを自作していて覚えたぞ。 気がついたら、超パフォーマンスの悪い HTML パーサーができあがっていた。
別にHTML全部を解析してたわけじゃなくて、エロいとこだけだろ それはエロパーサーだw
wget を Ruby スクリプトから呼び出すのは初期のデフォだろ 動作のログを元に何かしようとして wget のログを読もうとするものの 読む方法がそもそもわからんなにこれというのもデフォだ
>>400 >>403 WWW::Mechanizeは日本語の処理がうんこなので勧めたくないなあ
ASCII以外は基本化けるとかいつの時代のライブラリだよ
いろいろとあれなのは知ってる。 代替があるなら教えてほしいのだが。
git と github を勉強すればスクリプト作るの便利そうだと思った
バージョン管理システムは便利だと思う 全く導入してないなら個人ででも導入お勧め
リリースして 2ヶ月も経ってるのに test スクリプトに動かないのあんじゃねーかなめんなオラっていうか誰か気づけ
* どうしても気付いてほしいなら報告しろよ。 * プラットフォームは? Debian以外は、いくつかテストが通らなくても構わないと明言されている。
開発版使ってると推測
>>414 こちらの環境ではSERVICE_IDはあってもなくても関係ないようです。。
IEコンポーネントを用いて目的の機能は達成したものの、mechanizeの
便利さに感動したのでなんとかこれを使って目標を達成してみたい。。
>>426 なんか、その記事読んでたら使うのをちょっとためらうな。
まあHTTPヘッダのエンコード指定さえあれば問題なさそうに見えるけど
その次の記事の冒頭がイカしてる
(RubyのWWW::Mechanizeの次バージョン0.9.3とcharset)
> 迷走しまくって使用に支障があるレベル(穏当な表現)だった、Ruby の
> WWW::Mechanize ライブラリの charset と encoding の問題が解決に向かいます。
かなり入れこんでたんだなあw
よしんばやむを得ず文字コードの自動判別をするとして、 現状NKF.guess以外に選択肢は無いのか? 思ったよりこの辺進んでないのな
NKFは、選択候補が日本語用という前提のロジックだからなー。 数多あるエンコーディングから推測するのは無茶じゃなかろうか。
>>427 > HTTPヘッダのエンコード指定さえあれば問題なさそう
つまり使い物にならないってことだな
あれは最初に Apache 作った人が悪いんだよ 「クライアントは、HTML について文字エンコードの手がかりが何もないときは iso-8859-1 として処理をする」 というクライアントの仕事を 「サーバーは、charset トークンが空のときはとりあえず iso-8859-1 にセットして HTML を送出する」 というサーバの仕事に置き換えてしまった とか言っていまどき charset を空にしてると XSS で引っかかるからなんか書け死ぬぞという話もあったな めんどいのー
RFC2068から: The "charset" parameter is used with some media types to define the character set (section 3.4) of the data. When no explicit charset parameter is provided by the sender, media subtypes of the "text" type are defined to have a default charset value of "ISO-8859-1" when received via HTTP. Data in character sets other than "ISO-8859-1" or its subsets MUST be labeled with an appropriate charset value. charsetが無いときは、ISO-8859-1として扱う。 Some HTTP/1.0 software has interpreted a Content-Type header without charset parameter incorrectly to mean "recipient should guess." Senders wishing to defeat this behavior MAY include a charset parameter even when the charset is ISO-8859-1 and SHOULD do so when it is known that it will not confuse the recipient. charsetが無いときにエンコーディングを推測する不正な動きをしてしまう ソフトウェアに対抗するために、本来必要じゃなくてもISO-8859-1を 指定してもよいし、混乱がないならばそうすべきだ。 Apacheはこのへんの挙動やデフォルトを変更することやMultiviewsなんかの 対応もちゃんとできているので、非難される謂われはないよ。
一本釣り
>>434 わかってる人に説明してもらえるんだからいいことだよ
最近はRFCもまともに読まれないのか。
ま、あんだけ莫大になりゃな どのRFCがいつどこでどう上書きされてるかとか却下されてるかとかちょっと見ただけではよくわからんし
RFC読むより2ちゃんで聞いたほうが早い ちょっと釣りっぽく書けばお人好しのアホが答えてくれるしw
お人好しに答えてもらうつもりなら普通に聞けばよくね? 釣りっぽく書けばアホが答えてくれるというのは否定しないが
普通に聞いたら本当に何も知らん人が偉そうに「ぐぐれ」だのと答える それが2ch
まー、正誤判定とキーワードくらいはもらえるからな 疑問があるってことはそもそもがよく知らなかったってことだし、 経緯は酷くても最終的に知見が増えるなら世界は少しだけ賢くなると思う
文字コードを自作すればよい
rdocはそろそろattr_*の特別視をやめるべき あれはただのメソッドだ
>>444 でも
attr_reader 10個くらい
attr_accessor 10個くらい
とか書くと、あーこれプロパティだな、と思うことがないわけでもない
これが30個全部メソッドとしてマニュアルで分解記述されたらたぶん吐く
どっちかというと、「変数アクセスメソッド」というカテゴリを追加する記述がないのがダメなんだと思う
def value=(v) # :writer:
@v = if v then v else 0 end
end
と書いたら Attributes に value [w] として追加されるとかそういうの
attr_ってあたたリーダとかあたたアクセサって読んでるの俺だけ?
あなただけ
頭の中では"あっとる"または"あとぅる"って読んでる なぜ"ぅ"なのか自分でも謎
あたー りーだー あたー あくせさー どうでもいいけど、 char → 「ちゃー」 varchar →「 ばーちゃー」 「ばーきゃら」という人も多いね C言語でも、char は「ちゃー型」
コードの世界って読む価値あるか誰か答えてくれ
小学校の頃は国語の教科書の朗読でいつも「感情がこもっている!」と 先生に褒められていたのを最近はずっと忘れていた。 そうか、初心に返ってコードを読むときも気持ちを込めなくては。 りた〜ん りざるとでりーとぬるじょいんたぶ! えんどえんど。
おまいらRubyKaigiのチケット買ったか?
Nice Kayakが出たけど、買えた。
「きゃら(くたー)」がなんで「ちゃー」になるんだ?
pronounce char でぐぐるといっぱいでてくるぞ とりあえず「キャラと読め」派は無視してよさそうだ
おれも「ちゃー」ってすごい違和感あるんだが。 もとの単語の発音おもいっきり無視じゃん。 別にRoRみたいに頭文字を組み合わせたとかでもないのに。
intは?
ちゃーほど崩れてない
height→ヘイトが圧倒的優勢でワロタw
>>460 それは首尾一貫していないよ。
charaならともかくaが抜けたcharまでキャラと読みうるのは、元の
characterという単語の発音に従っているからでしょう。
であればinteのみならずintだってintegerの発音に従って「インテ」
と読むべきでしょ。
元の単語の発音に忠実であるべきならキャラ・インテ。
単に表記のアルファベットの並びに従うならチャー・イント。
この話題定期的に出るNE!
つまり、発音記号に従えばrubyは「ルービ」だよな
>>462 頭の発音が同じなら省略されても割とわかる。
全く違う発音になるとcharはもう慣れたが普通わからない。
言葉は意思疎通ができるかどうかが重要であって、それゆえ多くのルールや例外がある。
それにchaを「ちゃ」と読むのはローマ字の発音だしね。
>>466 うん。目的が意思疎通なのだから、要はその発音がどれだけ
共通認識として普及しているかが問題。
ちゃ〜は十分普及の域に入っていると思うよ。問題なし。
>それにchaを「ちゃ」と読むのはローマ字の発音だしね。
色々あるけど、例えばchartは?
末尾のtを外せば殆どそのまま「ちゃ〜」だよ。
どうでもいいよ
rubykaigi チケット買いそびれた。。。 朝まで覚えていたのに帰って風呂は言ったらすっかり頭から抜け落ちていたわ。
もう売り切れ?
抽選終わったって聞いた
そんなに盛況なのか。なめてたわ
追加チケットない? ustはあるよね?
蒸し返して悪いけどw きゃら → 日本語脳 ちゃー → 英語脳
脳内で「きゃー」と呼んでいる俺涙目
Mechanize→めちゃないずw
..... ('A`)
伸びてるから何かホットな話題かなと思えばおまいらは・・・
strは「すとら」だよな。すとらこんぷにすとらこぴー。
いや「すとあ」だろう。
蒸し返すなよ。なんとか脳の根拠もわからんし
>>480 話題がないから仕方ないよ。
住人の10割が1.9には金輪際触れない、1.8と心中するって決心しちゃったことだし。
いやいや、おれは使ってるぞ ただ初心者スレもそうだけど書き込むとからまれるから書かないだけで
そうそう、
>>484 みたいに1.9アンチがいる状況で1.9の話題振っても仕方がない
chaはチャ、キャ発音が多いよ。 カ、キャ発音の方がまれと言えばまれ。
うるせーよ
chaでカと読む単語はmocha以外に思いつかない。
>>457 そりゃそうなんだけど。「キャ」で行こうとすると、最後に母音つけないと発音しにくいがそうすると
今度はcharというスペルとの間に違和感が生じる。強いて説明するとすればそんな感じ。
というわけで俺もチャーと言ってしまう。
>>491 がcharmをなんと読むのか聞いてみたい
きゃーんぅ><
おっさんたちはつまらない事で楽しめるねぇ。 脳細胞が死滅してくると幼児化が進んでくるってことなのか。 後何年か経つと笑点眺めてゲラゲラ笑う能力を獲得できそうだ。
496 :
484 :2009/06/02(火) 13:28:02
>>493 はめそっどちゃいんを使ってないようだな
個別でそんなこと言ってきりがないの分からないの?バカなの?
はっきり言って気持ち悪い
1.8と1.9をそれぞれ北斗の拳に例えるとどうなりますか?
めでたく 1.3.0 が公開された Nokogiri の開発に近い人いる? irb> p Nokogiri::HTML.parse('<html></html>', nil, 'ISO-8859-1').encoding nil これって意図した挙動? 引数で文字エンコーディングを陽に指定した場合は その値が Nokogiri::XML::Document#encoding で返るべきだと思うんだけどどうだろ。
なんでメイリングリストじゃなくてここにそういうことを書くかなぁ...
そんな個々のプロジェクトのローカルルールなんて知らんよ。 RubyForgeに共通のBTSがない時点で開発参加には興味がない
あれはGitHub型の開発手法と果てしなく相性が悪いからなあ IRCとGitHubによるブランチどさーチャットどわーコミットどばーマージもさーの開発にはちょう不適
Nokogiriは動作マニュアルがないからさっぱりわからんのだ 仕方なくソースみても確実にCの部分にぶつかる RubyForgeに降ろすときくらいはマニュアル整備して欲しいなと思う
Ruby開発者でこのスレ見ていない人はいないから 報告はここで大丈夫だよ。
_,,..r'''""~~`''ー-.、 ,,.r,:-‐'''"""~~`ヽ、:;:;:\ r"r ゝ、:;:ヽ r‐-、 ,...,, |;;;;| ,,.-‐-:、 ヾ;:;ゝ :i! i! |: : i! ヾ| r'"~~` :;: ::;",,-‐‐- `r'^! ! i!. | ;| l| ''"~~ 、 i' | i! ヽ | | | ,.:'" 、ヽ、 !,ノ ゝ `-! :| i! .:;: '~~ー~~'" ゙ヾ : : ::| r'"~`ヾ、 i! i! ,,-ェェI二エフフ : : :::ノ~|`T <イエーイ tenderlove 見てるー? ,.ゝ、 r'""`ヽ、i! `:、 ー - '" :: : :/ ,/ !、 `ヽ、ー、 ヽ‐''"`ヾ、.....,,,,_,,,,.-‐'",..-'" | \ i:" ) | ~`'''ー---―''"~ ヽ `'" ノ
あーろんなら見て読めないことはないから一概に否定できんな。
日本語のスラングでなければ読めてそうな気もするね 書き込めなくてもアクセスだけならできるはずだし
久しぶりに大きい本屋に行ったからうろうろ本を覗いたが、 「Rubyでつくる検索エンジン」ってものすごいクソ本だな。 ソースコードをプリントアウトして本にしたみたいな感じ。 タイトルが面白そうだったから、 あやうく中身を確認しないでAmazonでぽちっとするところだったぜ。 あぶね〜
ソースが物凄く読みやすくて特にコメントする必要がないのなら興味ある
>>511 興味があったので、買ってみたよ。
とりあえずサンプルが動く環境を整えたところまでやったけど、
ソースの中身はまだ見てない。
この本の内容がそのまま実用になるとは思わないので、
実際に検索エンジン作ろうとするなら、
クロールの戦略とテーブル構成とかを参考にしつつ
自分でアレンジする方向になるんだろうね。
うへあ、このご時世にわざわざクローラ併用タイプの検索エンジンかよ データは自前で持ってて検索API/CGIだけ提供するタイプじゃないのか
クローラーとかマジ基地だろw 著者はドアホだなw
# 字句の読み込み def token() # コメントおよび空白文字をスキップ # 最初の文字が'<'か? n = @buf.getc() if n == nil return false end c = n.chr if c == '<' @str = c # 最初の文字が'<'の場合 # '>'が見つかるまで、読み込みを続ける # 最初の文字が'<'ではない場合 # '<'が見つかるまで、読み込みを続ける end # Log : ログクラス class Log # Url : URL解析クラス # URLを host, port, abs_path, query, fragment に分解する # "http:" "//" host [ ":" port ] [ abs_path ] [ "?" query ] [ "#" fragment ] …そ、そっから全部作るのかよ手作りかよ
立ち読み吟味必須の微妙本ということでよろしいか まあ理論面や実践面でいいこと書いてあるかもしれないしさー
1.9 専用の本は何になるだろうね
検索エンジンの基本的な作り方を通してRubyを学ぼうというコンセプト ならありじゃね
でも、標準添付されてるライブラリを無視して車輪の再発明するのはどうなんだろ 今回に限って言えば回り道してるようにしか見えない
逆だろ、学習本なんだから今回に限って言えば回り道したほうがおk、 実アプリなら標準添付ライブラリを使え、でいい
>>522 ごく普通には、悪
Rubyのコンセプトから言っても、既存ライブラリ同等のフルスクラッチは完全に悪
初心者への教育上は、もうみなぎる感じに悪
初心者に教えるべきなのはクラスの作り方ではなくクラスの探し方と使い方
メジャーなライブラリがないとき、機能が足りないときに新規クラスを作る
そんな機会はウンコのごとく大量に訪れるのに、わざわざ既存クラスで勉強させる理由はない
「URLを操作するクラスを作ってみましょう」は不可
そこはとっととURIライブラリを使うべきで、たとえば、その次の、
「URLへのアクセス情報を保存管理するクラスを URIライブラリを利用して作ってみましょう」
みたいなものに労力を割くべき。そっちのほうが Ruby の勉強になる
うーん。例えばURIの処理ならその専門の必要な処理があるわけで、 それを同時に勉強させるという観点なら悪くないかも。 と思ったが、それをRFCも引かずに中途半端にやるくらいなら、 きっちりやってるライブラリを使い、「これくらいきっちりやるもんだよ」って いうのを最初に印象づける方がよりいいかも知れない、とも思う。
そだな、 Log クラスを作るくらいなら Logger の使い方覚えたほうが潰しが利く 完全にゼロから Log クラスを考え付いて実装したならともかく、 なんらかのテキストからお着せで渡されても学習効果はゼロかもしれない
これを自力で作った人は勉強になったと感じたことだろう が、それを人に渡した時点で、それは勉強にまったく役立たない
まあライブラリ呼ぶだけの本にしたところで 結局同じくらい文句言ってただろうけどなw
なんか盛り上がってる。元レスはおれだがたぶん文句言うと思う。 ろくに説明もなく黙々と作者が作ったプログラムと同じものを打ち込むだけだもん。 検索エンジンを作るのに必要な技術とか考え方とか背景とか、 そういうのが詰まってるものを期待したのだが。 あれはRuby関連に限らず今年最低の技術書になると思う。ひどすぎ。
なんか去年、図書館で似たような本を見たな…… 「誰が入れたんだこんな本」と思ったものだったが
書籍になったくらいだから見るものがあるんだろう、という幻想が破られるいい時代になったと思った っていうか編集の人とか何やってんの 文字としての誤植のチェックしかしないの
「編集」の仕事のクオリティはここ何年か下がりっぱなしです。
たくさん本出さないと食べていけなくなったからねえ 傍から眺める限りでは、誰も嬉しくない状態に陥ってるという感じに見える
かといって他に検索エンジン関係でめぼしい本もないしなぁ…
あまりにナチュラルなのでしばらくご利益に気づかなかったが、RSpecのエラー時の表示方法が expexted: "ほげらほげらほげらむげむげ", got: "ほげらほげらほげらむげらむげ" という1行詰め込み式から expexted: "ほげらほげらほげらむげむげ", got: "ほげらほげらほげらむげらむげ" という複数行に変わってるな ステキだ
expectedな。
>>502 なにこれ激烈に重い
閲覧だけプレーンなHTMLでできるとかそういうのないの
これをこんだけキラキラさせる意味ってなんかあんの
JavaScript切ったらお約束のように閲覧すらできないなw
>>539 時代はweb2.0なんだよ
スタバでMacBookを開いてSafariを使ってない非ギョーカイ人はgithub使うな
気が付いたら初期JavaScript並みに嫌がられてましたとさ
ギョーカイ人(笑
544 :
デフォルトの名無しさん :2009/06/04(木) 23:07:22
「Rubyでつくる検索エンジン」って本、前のスレみて興味が わいたので読んでみた。この本にのってるソフトにはちょっと 驚いた。 net/http、MySQL、Chasenなどを使って書かれているが、 それ以外の部分はクローラーなんか、全部いちから コーディングされていて、ブラックボックス的な部分が まるでない。 それなのに、ダウンロードしたプログラムのライン数を カウントしてみると、全部合計してもたったの5500行ほど しかない(コメント込みで)。 こんな小さな規模のプログラムで、検索エンジンが動くとは 予想外。基本的なものなら、思ったよりも簡単に作れる もんなんだ。
なんせRubyだから
5500行なら550行×10枚とか、1100行×5枚とか考えると・・・ そんなに小さくもなくね? 使ってるライブラリの行数は入ってないだろうし。
chasenにぶん投げてる時点で小さいもないもんだ、と思う
まあ中程度の典型的規模のライブラリだよね この形にまとめたのはいいことだが、これを小さいと評価するのはなんか違う
if cond で、比較演算子または述語のようなものが必須なのが若干不評なもよう
551 :
550 :2009/06/05(金) 08:02:11
書いてから気付いたけど、「0がtrueとして判定されてしまう」とかそういう話?
実際サンプルを検索してみたが、ひどい精度だな。 これならNグラムでインデックスを全部なめて、 最新のページを表示させるだけの方がマシな気がする。 スコアなるものがあるようだが、どういう計算だ?
ライブラリというよりは、1つのアプリケーションだった。この種の アプリケーションのソースコードって初めてみたけど。 5500行ほどのRubyのプログラムのうち、全文検索のフロントエンド (検索用の画面)が600行、管理者用の画面が意外とあって2300行、 画面用の共通ルーチンが300行。でも、これらは所詮よくあるCGIの プログラムで、本質的なものではない。 本当の検索エンジンのコア部分は、クローラーが1200行、全文検索 エンジンが600行、それらの共通ルーチンが500行。随分とコンパクト に思えたが、そうでもない? テキストデータの処理ってRubyの得意分野だからと思ったのだが。
>>499 は結局報告されたの?
それともLibXML2のバージョン固有の問題とかそういうので放置?
> LibXML2のバージョン固有の問題とかそういうので放置 そういうのやだなあ… 複数バージョンのサポートもめんどくさいだろうなとは思うんだけどね
てか、この報告システムってどうやって使うの? ここの部分の解説サイトとかない?
V2が到達点か。 v1.9.9の後はv1.9.10と言う手もあるし、 v1.9.99の後はv1.9.100もあるわな。 構造化なんとか、なんてのは30年くらい昔からあるんだが、完成しない。 ソフトのバージョン上げても、金物の処理が追いつかないからね。 マーフィーの法則も怪しくなって久しいし。 でもまぁ、1.9はちょっと良さそう。 加減乗除の比較はまだだけど、代入はとても速くなった。 頭が大文字の、定数なんて、とても速くなった。(前の(v1.8.7)が遅すぎ) でも(1.9でも)、速いのが良い人は、0とか0.0とかをコードに埋め込んだのが良いみたい。 変数名は短いのが良い。
え
頭ではなく心で理解した
峠を攻めたりするような人たちの中の「達人」みたいなにおいは感じる
マーフィーの法則w
1.9の次は、普通1.10だよな。 2.0のベータが1.99になることが多いような気がする。 まあ、共通のルールがあるわけじゃないから、メンテナの気分次第だが。
理解者、現る
いい加減1.9系を2.0って名乗っちゃえばいいのに。 毎年+1.0するくらいの方が勢いが感じられるよ。
こだわりがあるんだろ 「2.0」はそれまでのRubyの欠点を補いかつさらに進歩した、 すばらしいものでなければならない!みたいな
周回遅れのさらに周回遅れかよw
>>567 一桁を越えるとソートがうまくいかなくなるので
番号は大切に使いたいらしい
総統もソートに相当苦労しているようで(笑)
Rubyに下品な男などいらん。
早々にRuby2.0をリリースしてWeb2.0との親和性をアピールするといった戦略練る マーケティングアドバイザーがRubyコミュニティに必要だと痛感する今日この頃。
575 :
559 :2009/06/08(月) 02:11:48
>>564 うけてくれて、ありがとう。
マーフィーは別のやつだった。
>>559 は変数の代入をン万回して、その Process.timesをン百個集めて、
分散分析とクラスカル・ウォリス分析をした結果です。
Bartlett による等分散の検定で棄却されるので、
クラスカル・ウォリス分析すると、それでも有意な差があると出ました。
検定の多重性については、よそでやってね。
linuxと比べると、winは何故か分散が大きい。
今日は、Rのpnormを移植するのに忙しくて、他は何もしていない。
うちのqnormはpnormに依存してるのだが、やってみるとqnormの精度があがってない。
来週は、qnormの移植かと。
やだ。
>>575 >今日は、Rのpnormを移植するのに忙しくて、他は何もしていない。
エーッ、Ruby で統計数学が使えるようになるのか
wktk
複数言語のRDocを管理するようなプロジェクトってない?
578 :
デフォルトの名無しさん :2009/06/09(火) 14:19:25
それは英語と日本語と中国語と・・・という意味? 聞いたことないけど、きっと要望としてはあがってると思う。
とりあえずは、英語とサブ言語の2つだけあればなんとかなりそうだ オリジナルのスクリプトから何種類もの言語のhtmlを生成できる必要はあんめえ オリジナルは英語のRDocで、jaファイルやjaディレクトリに日本語マニュアルが書いてあって、 rdoc -lang ja とすると通常の代わりに ja のマニュアルが使われる(足りないところはオリジナルを参照)みたいな感じ
rubyforgeとかgithubのgemを.deb化してる商用サイトあったよね(使うのは確か無料) 自分はソースから入れる派だから使わないけど
>>579 特定のファイルやディレクトリを特別扱いにするのは
後々面倒なことになりそうな気がする(ja/foo.rbとか)。
代わりに複数の言語を併記するのではだめかな。
# @ja ほげほげ
# @en hogehoge
みたいな。
UTF-8強制計画ですね。わかります。
>>581 ひとつのメソッドに対して何種類もの言語のマニュアルコメントがつく状態を避けたいんだよ
スクリプトソース本体のマニュアルコメントは英語、または作成者の母国語(日本語とか)
class Foo
# do hoge and returns hage
def hoge
...
で、どっかのファイルに
Foo => ...
:"#hoge" =>
:ja => "hoge します。hage が返ります。" ,
:cn => "アイヤーhogeアルネソシテhageアルヨ"
こんな感じで書いてあって、rdoc --lang ja を指定すると
"do hoge and returns hage" の代わりに "hoge します。hage が返ります。" が使われるとかさー
ドキュメントはソースから離れるほどメンテされず放置になるの法則。
いいんだよ、マニュアルファイルの形式でわかると思うけど、これ自動生成だから ドキュメント書く人は自分の言語でスクリプト内にマニュアルコメントを書けばいい マニュアルファイルへの登録とマージは(言語指定をした)コマンドがやってくれる なんというか、国別マニュアルがライブラリごとにデータベースになってて、rdoc でHTML等を生成するときに クラス名&メソッド名と希望言語をキーにしてマニュアル文字列を大量に取ってくる形になるとかそんな感じ
で、できなきゃ諦めもつくかと思って一応やろうと思って、 RDoc の処理に割り込むのが近道だと思ったんだよ でも、RDoc が メソッド => マニュアル文字列 の対応をどこでつけてるのか俺の実力ではよくわからなくてやめた RDoc のマニュアルがわかりにくいって本末転倒のアホっぽくていいよね
>>586 がRDocのマニュアルをリライトするスレがあると聞いて
他の言語ではどうしてるんだろうね。 JavaDocでも複数言語での記述はできなかったはず。
589 :
デフォルトの名無しさん :2009/06/10(水) 19:10:33
この世界には英語しか存在しません。 映画を見て見なさい。宇宙人もみな英語を話しています。 というsolution
オッス、オラ悟空。 オラの映画みたら、インディアンっぽいのが日本語しゃべってた。 でもおっぱいに気をとられて台詞は聞いてなかった。
朝から、「たのしいRuby」を読み始めて、先ほど読了。 こういう言語を発明できる人は、すごいなw
>>591 いやいや、1冊読んだくらいで洗脳されちゃダメだってw
そうやって簡単に「Rubyすげえ Matzすげえ」とか思い込んじゃう人が
的外れな他言語批判とか始めて結果迷惑だったりするので一応釘刺し。
良い所もあるんだろうけど、微妙なところが放置されてたりして 結構あれでなに。まぁ、発展途中なんだろうけどね。 というか公開されてから、もう10年以上たってんだなー
そんなに言語仕様で微妙な所ってあったっけ? まあ確かに、多重代入の辺りとかは怖くて触れないけど
へ?
仕様だけはいいけど、実装と文書がクソ Matzは英語圏で活躍すべきだった
>>591 おまえ読むの早いな。1ページ2分くらいで読むのか。
本を書くって意味かとオモタ
実装によって実現されているものが仕様
>>592 でも的外れなRuby批判と、本当のPythonユーザが喜ばないPython礼賛は許されている不思議
>>602 「的外れなRuby批判」って言うけど、間違ってることを言わない限りは
批判は常に歓迎されるもんだろう。
たまにキチガイも沸くけど、病気は許す許さないじゃなくて受け入れる
しかないしな。
Python礼賛はよその話だから知ったこっちゃねえ。
>>602 >本当のPythonユーザが喜ばないPython礼賛は許されている不思議
kwsk
スレチだろ、詳しくとかいらんわ どうしてもやりたいなら他でやってくれ
知識が要らない話題には、知識を持たない奴らが、喜んで食い付いてくる。 これは何処のスレでも、普遍の法則w
初心者スレの痛いやつがここまできたか こっちまで荒らしにくるなよ
逆だ逆
プログラミングには知識も必要だが、考え方の方が重要だと思うが。 今の言語は覚えること多いけど。
ふつーのコーダには、知性も知能も実はそんなにいらないってことで。 上の方の人は、知能にふさわしい知識と知性があるからあんまり問題に ならんことが多いんだろけど、私ら中流以下はとりあえず知識か根性が 多少あればなんとかなるので、そこにいろいろな人種がいるわけです。
PHPだとEC系を含め、結構CMSが充実してるのだがRubyって少ないよな。 あっても機能的な面で考えると完成度が低かったり。 XoopsくらいのCMSがあればうれしいのだが、なんかないかな? もうPHPやりたくないんだけど、結局PHPをやっちゃってる。 EC系のプラグインとかあるやつだとうれしいのだが。
Rubyスクリプトの配布パッケージっていうと、HikiとtDiaryと影舞とRedmineしか知らない。 というか、未だにMySQLやSQLiteのドライバが定着・安定せずうんちゃらかんちゃら 言ってるような言語でお手軽CMSは不可能だと思う。
>>612 サンクス。やはりtDiaryになるのか。さびしいなあ。
Rubyは大規模プロジェクトには向かないというのはもう共通認識でいいと思うんだが、 別言語の大規模ソフトウェアをサポートするようなプログラムってRubyで作れませんかね
でもRubyで作るのは簡単なんだから、大規模でも安定するように改良するほうが プログラマとしては正しい。他人がつくったものを無料で利用してるくせに、 使いこなせないときはブーブー豚みたいにわめくってのは・・・いやいや、世の中は豚だらけだから仕方ないか
その共通認識はおれにはないが、サポートするようなプログラムってどんなものだ? 漠然としすぎてイメージがわかないのだが
>>614 何をもって大規模といってるのかわからん。
どんなターゲットを想定してるのかもわからん。
こんな漠然とした定義で「向かないというのはもう共通認識でいい」って、あんたバカ?
タイプセーフでない言語は大規模開発には向かないよ
コンパイル通ってもバグだらけで火を噴いてるJavaプロジェクトは山ほどあるわけだが。 結局は作ってるやつらの腕次第だろ。 負荷的にJavaじゃないとさばけないというのなら分かるが。
>>619 つまり、大規模開発が破綻する例はどの言語でも非0である、
だから言語そのものの大規模開発に対する向き不向きはすべて等価なのだ、
という意見?
621 :
550 :2009/06/12(金) 07:07:51
そもそも「大規模開発」と「大規模アプリ」とは別だろう Rubyで大規模開発が難しかったとしても、大規模アプリが難しい理由にはならん さらに言うと「タイプセーフでないと大規模開発が困難」って節からしてかなり怪しい
だから大規模の定義をしろよ。 開発人数なのか 画面数なのか 機能数なのか 利用者数なのか 分野によって大規模の意味が全然違うだろ。
>>622 とりあえず、そのどれについてもRubyは向いてないな。
「非0である」←ちゃっかり一般的なことを、さも例外的なことであるように置き換えるな
Rubyは書いて楽しむものであって 有効なソフトウェアを作るためのものではないから 作るという作業においてどう不向きだって別にいいんだよ
>>622 開発人数→柔軟すぎるRubyは大人数だと厳しいかも
画面数→問題なし
機能数→素早く追加できるので、むしろRuby有利
利用者数→?
分野→速度が非常に重要なアプリや、GUIアプリは厳しい。それ以外ならおおよそOK
>>625 全然よくない
言語の魅力は、有効なソフトウェアが作れてこそのものだろう(教育用言語などを除けば)
Rubyの価値は「楽しく、しかも有効なソフトウェアが作れる」ところにある
>>624 >>619 の一行目の詭弁を剥がしただけでしょ。
「バグだらけで火を噴いてるJavaプロジェクトは山ほどある」
これは、アメリカは日本より凶悪犯罪に出会いやすい、という話をしている時に、
「日本でも凶悪犯罪に巻き込まれた人は山ほどいる」
って返すようなもの。
最も少ない部類に属していても十分「山ほど」と言えてしまう「何か」があって、
その上でその「何か」の程度の違いについて語っているとき、
「あっちにだって山ほどあるぞ!」という返しには何の意味ないわけ。
食べログはRails製。 という事は、Rubyで同時接続数や速度の面も立派にスケールできている。と言える。 俺も難点は開発者数が100人以上のときに問題になる、Rubyの記述の柔軟性だけだと思う。
>>628 どうでもいいけど普通に多いから
PHPやRubyは工数がでかいプロジェクトにあまり採用されないから比べられないだろ
PHPでコンソールアプリケーションを作るようなむず痒さを感じる
食べログってRailsだったのか。知らんかった
> どうでもいいけど普通に多いから 朝からワロタw
プログラム以外の話になると加速するスレ
どういう場面でRubyを使うのがいいのかって、 仕事でやるならそういう話題も大切だよ。 ひたすらプログラムを打ち込むだけじゃないし。
>>611 www.ruby-lang.orgが使ってるRadiantがあるじゃない。
>>628 >「バグだらけで火を噴いてるJavaプロジェクトは山ほどある」
やー、これはほんとだろ。
Javaは型があるから大規模開発に向くといわれても、これだけJavaのプロジェクトで失敗しているものが多いと、
型があったところで大規模プロジェクトには関係ないんじゃないのと思う。
Javaの失敗プロジェクトに関わった経験からそう思う。
型の効果がないわけじゃないんだけどさ、なんつーの、車持ってたらモテる!ぐらいの効果しかない。
その山ほどある火を噴いているプロジェクトの原因のすべてが Java ではないと思う でかい案件だから上流工程で失敗していることも多い →要件定義がいつになっても終わらない →仕様がどんどんふくらむ、設計が終わらない など。 あと、大規模 → Spring + Hibernate とか ibatis を使う → フレームワーク知らないけど Java 経験ありと履歴書に書かれたスキルの低い要員が集められる → アーキテクトが綺麗な方式を作っても、業務側が使いこなせない → よれる というのはあるかな。
いや、車があるのとないのとでは、モテ方にかなり差があるぞ
大規模プロジェクトっつたらふつー開発人数の事だろ、画面数=人月、機能数=人月
利用者数が多いのは大規模プロジェクトなんて呼ぶかね?
秀丸の利用者数は半端無いけど、大規模プロジェクトとは呼ばんだろ
で、開発人数が多ければ技術レベルはピンキリになるわけで
開発環境が支援しやすいタイプセーフな言語が選択されるのは明らか
あと、プロジェクトレベルで失敗するなんてのは言語じゃなくて
>>638 みたいな設計とか組織とか人間関係とかの方に問題があるんだと思う
最も火を噴きやすい言語xと、最も火を噴きにくい言語yがあったとして、 x.火の噴きやすさ - y.火の噴きやすさ の値が、火を噴くという現象全体にとってどれくらい大きい(あるいは小さい)のか、 という各人の経験と皮膚感覚についての話題だよな、つまりこれ。
未だにtypoと戦ってるrubyには関係のない話ですな
うん、だから大規模開発で本当に問題なことをおざなりのままにして、 「Javaは大規模開発に向く」とかいってるのがおもしろおかしいよねという話。 型がある・ないってのは、プロジェクトが成功するかどうかに大した影響はもたない。 車があってもキモオタはモテないし、車がなくてもイケメンやさわやか君はモテる。 ほんとに大事なポイントには触れず、些細なことを一生懸命議論しているのがかわいい。
千言万語費やしたところで Rubyは大規模開発には向かないし Javaは大規模開発にも耐えうるという現実は変わらないんだけどね。
千言万語費やしたところで、そんな証明は不可能というほうが現実なんだけどなw
>>643 > うん、だから大規模開発で本当に問題なことをおざなりのままにして、
> 「Javaは大規模開発に向く」とかいってるのがおもしろおかしいよねという話。
別にそこはおもしろおかしくないよ。だってここ言語スレだもの。
大規模開発を語るスレ、なんて名前のスレがあって、そこでこの話題が延々続いているなら、
そりゃー確かに「もっと重要な物事を差し置いて、言語ばかり語ってもなぁ」って感想になるけれども、
そうじゃなくて、さてRubyの話をしよう、今のお題は何だ? なるほど「大規模開発」か、って状況なわけね。
大規模開発における言語の差の意味の大小が、話題の成立・不成立に関わることは無い。
> ほんとに大事なポイントには触れず、
ほんとに大事なポイントはRubyだから、「大規模開発において真に重要なのは・・・」云々の理屈で
言語ごとの差に一所懸命触れまいとする人のほうが「かわいい」と思う。
よっぽど言語の差の話を進めて出てくるであろう結論を見たくないのかな、とか、色々想像しちゃうよね。
また暴れてるのか。 「色々想像しちゃうね」とか妄想がどんどんひどくなっていくな。
何も反論できない人に煽られるのは気分が良いや。もっと泣いて。
おれは今帰ってきたのだが・・・
お前の生活なんて知らんよ、そんなこと。 まさか、他の誰かであると認定されたとでも思ってるのか? もしそうなら、そういうのを「妄想がひどい」っていうんだよ。 他人が自覚的に想像してるのを妄想と言い換えて煽る前に、 自分の無自覚な、ほんまもんの妄想を何とかしたほうがいい。もしそうなら、ね。
俺の妄想の方がひどいぜ
香ばしいな。
>>646 何言ってるのかわかんないんだけど、大規模プロジェクトが成功する要因として型の有無はあんまし関係ないという事実がスレによって変わるのか。
>よっぽど言語の差の話を進めて出てくるであろう結論を見たくないのかな
その結論は知りたいねえ。ぜひ語ってくれたまえ。スレ違いとか気にするな。
スレのみんなも、ちょっとばかりすれ違いになるかもしれんが、許してあげてくれ。
オナニー理論はブログでやってくれ。 URL貼り付けりゃ見に行ってやるから。
優しいな、いちおう見に行ってあげるなんて。
>>654 > 何言ってるのかわかんないんだけど、
何言ってるかわかんない人が無理して絡まなくていいのでは。
> 大規模プロジェクトが成功する要因として型の有無はあんまし関係ないという事実が
> スレによって変わるのか。
どのくらいの割合の人が、何を事実だということにしたいのか、がスレによって変わるのでは。
> その結論は知りたいねえ。ぜひ語ってくれたまえ。
会話の結論は、会話を続行しなくては辿り着けないし、会話は一人でするものではないから、
ろくに物を言わず他力本願で待ちモードに入るのは違うのでは。
じゃあやめようぜw
>>644 大規模開発よりも
中小規模開発の方がずっとパイがでかい訳だが(´∀` )9im プゲラッチョwwwwwwww
>>657 わかりにくい文を書いたのはそちらなんだが。
自分でわかりにくい文を書いておきながら、読み手を非難されてもなあ。
>会話の結論は、会話を続行しなくては辿り着けないし、会話は一人でするものではないから、
>ろくに物を言わず他力本願で待ちモードに入るのは違うのでは。
いやだから、型があってもプロジェクトの成否にはあんまり関係ないよと言ったでしょ。
なんでろくに言わずとなるんだろうか。
きみがいう "言語の差の話を進めて出てくるであろう結論" というのが知りたいからぜひ語ってくれとお願いしただけなんだな。
場所も用意したし、思う存分語ってくれたまえ。
>>659 わらうとこなのか?
中小規模開発がどんなに多くても、数×金額で考えれば、大規模開発のほうが合計金額は大きいだろうよ。
それに、数が多いことはここじゃ別に重要じゃないだろ。
悔しかったらRubyで人工衛星の姿勢制御プログラム作ってみろや
>>662 大量にメモリを喰うベンチマークを走らせた時の、メモリ消費内訳か何か?
以前に、「Rubyのメモリ戦略では、なかなかメモリを解放しない!」
とか問題になってた記憶が
>>665 いや、横軸のgc.cのオブジェクトってのはすぐわかるんだが
問題は縦軸だろ・・・
>>664 そんなの、サッカーでホームラン打ってみろやって言う様な物
適材適所って言葉しらんのかね?
ゆとり乙
>>663 成熟した知的な大人なら、おっぱいのことだとすぐわかるはずだよな。
>>667 > 適材適所って言葉しらんのかね?
Rubyは大規模開発に向かないっていう適材適所の話なんだから、
知らんのかねも何も、むしろ適材適所の概念を強調したいレスでしょ。
そもそもRubyで大規模開発って実例がほとんど無いんではないか (最近は数百万行級のプロジェクトもあるという噂だが) 言語仕様として、Rubyが大規模開発を支援しようとしているようには見えない しかしRubyのメリットってのも確かにあるわけで、 それがどう相互作用するかは「やってみないと分からない」に近いと思うんだが
"言語の差の話を進めて出てくるであろう結論" マダー?
ここは役に立たない
うは!これから彼を「Ruby暴威」と名付けよう
Rubyにはひとの脳を破壊する物質があるって婆っちゃがいってた
夢にMatzが出てきそうだ
牧師は信用できません
ほんとだ。脳を破壊されたやつがわいてきた。
まあ、言語によらずプロジェクトが大規模な人月の開発になった時点で、そのプロジェクトはほぼ失敗なわけだが。
>>679 妄想ならちらしの裏にでも書いとけ
ハイ次の方
失敗=リリースできない、ではないだろう。 PMBOK風に言えば、主にTime、Cost、Quality面で、 当初の目標を達成できない場合の方が多いんじゃないだろうか。 目標を大きく下回った時点でプロジェクトとしては失敗と言っていいと思う。 たとえばリリースできても金がかかり過ぎて、最悪赤字だったり、 リリースがものすごく延期になったりしたらとても成功とは言えない。品質面もしかり。 失敗の率は8割を超えるように思う。ものすごく適当だが。 Scopeは大抵譲れないから、そこだけは死守するんだけどね。
もっと暴威が理解できるように書けよ
rubyの良い点って何?
Perlよりプログラム書いたときの見た目がなんかしっくりくるところ。
柔軟だけど厳格さもある点が気に入ってる PHPみたいに「とりあえず0ということにする」みたいなことはない Javaみたいに目の前のコンビニに行きたいだけなのに、 近所をぐるっと回らされるようなのも嫌だ
Ruby=ママチャリ Python=タケコプター
>>687 それは、Pythonの方が高性能ってこと?
rubyがなんか楽とういか庶民的に読めるけど…
メソッドチェーンでずるずる書けるとこ
rubyがママチャリならpythonもママチャリだし pythonがタケコプターならrubyもタケコプターだ どっちで作っても同じ動作をする成果物は作れる、実装の仕方が違うだけ あー、rubyは少し動作が遅いかもしれん
ruby2.0には高速性も考慮するとか書いてたよね。 って、rubyってそんな遅いの? もうちょっとこう、PHP程度にドキュメント充実してほしいな。
>>691 他のスクリプト言語と比べて、言われてるほどには遅くない
ソフトウェアの種類にもよるが、遅過ぎて死ぬようなことはそうそうないはず
書き方にもよるな Cを逐語訳したようなのは概して遅い
たとえば、332546行のApacheのログがあって、この中からGooglebotにマッチする行を カウントする処理をRubyとPerlで書いてみた。 -- Ruby -- s = Time.now count = 0 File.open(ARGV[0]){|f| while(line = f.gets) line.chomp! if line =~ /Googlebot/ count += 1 end end } e = Time.now puts "count=#{count} (#{e - s}sec)"
695 :
694 :2009/06/14(日) 10:13:30
-- Perl -- use strict; use warnings; my $s = time(); my $count = 0; open(LOG, $ARGV[0]); while(my $line = <LOG>) { chomp($line); if($line =~ /Googlebot/) { $count++; } } close(LOG); my $e = time(); printf("count=%d (%fsec)\n", $count, $e - $s);
696 :
694 :2009/06/14(日) 10:14:21
実行結果はこんな感じ。 Perl :count=52948 (0.000000sec) Ruby:count=52948 (0.422137sec) 案の定、Rubyのほうが遅いけど、 気になるほど、遅くはないかなと個人的には思う。
乙、できればそれぞれのバージョンとプラットフォームも書いてけろ もしWinなら"rb"で開くだけで全然違うんじゃないかと それとPerlの方、0secだとあれなんで適当にループさせてみてほしいな
ていうか、ファイルにアクセスして改行ごとに読み込んで正規表現で比較したのに 経過時間が0ミリ秒という時点で何かおかしいと思って欲しい
>>694-696 面白いな。
Rubyはもっと簡潔に書けるけど。つかchompいらんだろ。
count = 0
File.open(ARGV[0]){|f|
while(line = f.gets)
count += 1 if line =~ /Googlebot/
end
}
Enumerable のメソッドを使えばさらに簡潔に。
count = nil
File.open(ARGV[0]) do |f|
count = f.count {|line| line =~ /Googlebot/ } # 1.8
#count = f.each_line.count {|line| line =~ /Googlebot/ } #.19
end
うわああああ、countへの代入なんかいらんかった。 count = File.open(ARGV[0]) do |f| f.count {|line| line =~ /Googlebot/ } # 1.8 #f.each_line.count {|line| line =~ /Googlebot/ } # 1.9 end すみませんすみませんすみません
701 :
694 :2009/06/14(日) 10:51:28
>>698 sleep(1);
my $e = time();
printf("count=%d (%fsec)\n", $count, $e - $s);
こうすると、ちゃんと1秒と表示されるから単純に処理が早いのではないか?と考えてる
count=52948 (1.000000sec)
time()の精度が秒単位なんだろうな。
Perl久しぶりに触ったからこのへんよく分からない。
ミリ秒単位で速度図るようにちょっと修正してみる。
702 :
694 :2009/06/14(日) 10:54:58
>>697 Ruby 1.8.7-p72
Perl 5.8.8
Redhat 5.3 (64bit)
CPU Core(TM)2 Duo CPU T8100 2.10GHz
メモリ 4GB
>>701 sleep(0.0001)
とかしてみたら?それで0.0になるようならtimeの精度じゃないかな
timeコマンド使ったら? 後1.9も試して欲しいな
705 :
694 :2009/06/14(日) 11:06:52
>>701 timeの精度のようです。
とりあえず、
use Time::HiRes qw(time);
としたら、ミリ秒単位で取れるようになった。
再実行結果
Perl count=52948 (0.343007sec)
Ruby count=52948 (0.479245sec)
706 :
デフォルトの名無しさん :2009/06/14(日) 11:07:34
アンカミス。750は703への返信です。
707 :
694 :2009/06/14(日) 11:08:39
>>704 1.9か。しばらく使う予定ないけど、とりあえずコンパイルして入れてみる。
普通メモリが十分にあるなら、 ガツンと一括読み込み ↓ 改行コードでスプリット ↓ ループ の方が圧倒的に速いわけだが、 Rubyは内部的にそれをやってくれてるのか? 差を試してみたいがいま死んでてできん。 余裕があったら試してほしいな。
>>707 たぶん1.9のほうが遅くなるんじゃないかな。
理由は、このスクリプトならIO処理と正規表現がメインだから。
>>708 やってないというか、それをやらないとRubyは遅い
メモリを潤沢に使うことでCPU時間を減らすのがRuby
よって、
s = Time.now
count = 0
File.open(ARGV[0]).readlines do |line|
count += 1 if line =~ /Googlebot/
end
e = Time.now
puts "count=#{count} (#{e - s}sec)"
が Ruby では妥当
711 :
694 :2009/06/14(日) 11:17:51
>>709 とりあえず、実行しました。
>>709 の予想通りになってますね。
Ruby1.8.7-p72 0.491655sec
Ruby1.9.1-p129 0.600195sec
Perl 5.8.8 0.345018sec
712 :
694 :2009/06/14(日) 11:20:06
>>710 のソースでも実行してみた。
たしかに早くなった。
Ruby1.8.7-p72 0.367141sec
Ruby1.9.1-p126 0.378081sec
ほんとにIO遅いんだな1.9 ここまでわかりやすいと泣けてくる ネイティブスレッドの関係だっけ?
>>710 Rubyに限らず大抵の言語で共通じゃないかな?
逐次データを取ってくるのが遅いのは、ディスクIOの問題だから。
おれがこのやり方を覚えたのは10年くらい前にVBをやってた頃だし。
>>711 サンクス参考になった。想像したより差が出ないなあ。
データが多いほど差が顕著になるのだが、今のコンピュータは速いな。
正規表現は遅いというイメージがあるのだが、
include?とかの方が高速というのはないのかね。さりげなく要求して申し訳ないのだが。。。
>>714 include?というのは、
if line.include?("Googlebot")という事?
1.8.7-p72 0.631488sec
1.9.1-p129 0.706928sec
さらに遅くなった・・・
>>710 のソースでも
1.8.7-p72 0.360617sec
1.9.1-p129 0.393522sec
>>715 たびたびサンクス。
鬼車速いなあ。
シーケンシャルアクセスの方は速度低下が顕著だけど、
スプリットさせてる方はほとんど変わらないから、
なんかあるのかもね。
ではおれは心置きなく死に続けることにするよ。
Excelで開発とかさっぱりわからん。全然進まない・・・
>>710 >やってないというか、それをやらないとRubyは遅い
んなわけない。思い込みよくない。
>が Ruby では妥当
んなことない。readlines使うなら
File.open(ARGV[0]).readlines.count {|line =~ /Googlebot/ }
が妥当。
>>700 のソースは以下のようなエラーで動かない。
せめて動く状態で貼り付けてほしい
Invalid char `\343' in expression
Invalid char `\200' in expression
Invalid char `\200' in expression
Invalid char `\343' in expression
Invalid char `\200' in expression
Invalid char `\200' in expression
>>710 のソースの結果
1.8.7-p72 0.645904sec
1.9.1-p129 0.580029sec
面倒なので、どちらも#1.8の行の処理で試した。
f.count {|line| line =~ /Googlebot/ } # 1.8
#f.each_line.count {|line| line =~ /Googlebot/ } # 1.9
>>719 アハハハハハハ
初心者にはこのエラーメッセージじゃわからないんだ。気をつけよう。
724 :
722 :2009/06/14(日) 12:53:33
>>723 初心者で申し訳ない。
しかし、大笑いされるほどの事なのか?
自分でミスして、人に実行させといてその言いぐさはないだろう 頭おかしいんじゃねーか?
>>725-726 2chってホワイトスペースの変換処理してないから、HTML仕様に則って1つにまとめられるんだ
だからコードの読みやすさ優先で、スレに貼り付けるときに
わざとインデントを全角スペースにすることはけっこう一般的
つまり誰のミスかと言えば、コード貼った人ではなくてスレからコピペした人
いわゆる全角英数字で書いて実行できないというのと同じようなものだと思う
そりゃエラーメッセージみりゃすぐわかることを >せめて動く状態で貼り付けてほしい なんて書いてるんだから、笑われてもしょうがない
貼るほうは半角スペース一個+&nbsp; x2に変換しろ count = File.open(ARGV[0]) do |f| f.count {|line| line =~ /Googlebot/ } # 1.8 #f.each_line.count {|line| line =~ /Googlebot/ } # 1.9 end
まあ2ch特有の問題だから、知らないと対応できないかもしれん エラーメッセージも見慣れないだろう 何にせよ。枝葉末節 次から気をつければいいだけの話
>>730 マンドクセーよ
動かす前にエディタで全角→半角変換してくれ
私女だけど全角空白も見抜けない男の人って…
また暴威だろ。 自分では理屈が通ってると思ってるんだろうけどもはや基地外。 聞いてきたから教えたってわけでもないのに。 しかも速度遅くなってるのが笑えるw(1.9は誤差の範囲っぽい) なぜあれが速くなると考えたのか理由を聞いてみたい
>>730 実体参照されるとJaneStyleからコピペしたときに
&nbsp;だらけになって嫌
これはもう何度でも何度でも言うが、 は Ruby が許可する「空白」ではない C2A0 を空白として使うのは全角空白を使うのと何も変わらない C2A0 はきちんとした非空白の文字だ
738 :
725 :2009/06/14(日) 14:22:04
いろいろ教えてくれてありがとう。
今回の事で覚えたから、次は大丈夫だ。
しかし、同じようにエラーで実行できないと考える人は出てくるだろうから、
その時は
>>720 のように一言教えてあげるようにする。
少なくとも笑う必要はない。
元々は
>>691 のRubyってそんなに遅いの?という発言に対して、
実行結果を示すだけのつもりだったのが、思ったより長くなった。
書き方を工夫すれば、Rubyでもある程度の速度を出せるという事でどうだろうか。
740 :
725 :2009/06/14(日) 14:33:07
741 :
735 :2009/06/14(日) 14:45:17
スプリットとinclude?を頼んだのがおれだが
>>740 は大人だな。おれも見習わないといかんな。
で、何でinclude?の方が遅いの?
>>742 include? は律儀に先頭から一文字ずつ比較するからだと思う。
正規表現がどんな魔法を使ってるかはしらない。
File.open(ARGV[0]).grep(/Googlebot/).count が速かったりしないかな。
>743 じゃ、何でrubyは、アルゴリズム本に載ってるようなBM法とかを実装しないの?
ruby遅いと聞いたからphpと対比してみた。 ruby starttime = Time.now for i in 1..10000 end time2 = Time.now p endtime.to_f - starttime.to_f --------- php $start = microtime(); for($i=1; $i<=10000; $i++) { } $end = microtime(); echo $end - $start; ---- ruby -> 0.05 php -> 0.02 - 0.03位
うわ、ミスってるし俺 time2 -> endtimeね…ダメポ
microtime(true)で実数として取得しないと結果がおかしな事になる場合があるよ。
>>744 >File.open(ARGV[0]).grep(/Googlebot/).count
それは厳密には行ごとのカウントじゃなくなるから。
今回の場合なら該当文字列は1行に1回しかでてこないと期待できるだろうけど。
CGIでとりあえず何かしたい、ってだけならinclude 'cgi'しとけ。 railsはWebアプリフレームワークだ。時代遅れなんてことはないが。
>>752 じゃあ2.3.2対応の解説ページください
rubyでCGI自体がオススメではない。
CGI ライブラリで大量の何か(訪問者、データ等)を素早く捌くというのは Ruby はあんまり得意ではないな CGI という状態でないならまだ我慢できるレベルなんだが 1分に 1回くらいしか使われないような裏方 CGI とかそういうのにはまだ向いてる
せっかくRubyやんだからRailsやっとけ。 流行りものだし、まあそれなりに作りやすいし、「Railsで作りました!(キリッ」 って言っとけばハッカー受けはいいからアクセスは稼げるし IT企業にヘッドハントされるかもしれない。 どちらにせよ今時CGIはない。せめてramazeとかにしとけ。
>>756 らめぇもシナトラも CGI としてきちんと動くようになってから代替を口にしてください
あれは Rack がいけないんだよ Rack がきちんと CGI に対応さえすれば薔薇色の未来が
>>753 何から何まで解説してあるページが最新のブツにあるわけないだろ。
何から何まで解説してあるページがほしいならPerlでも使ってなさい。
>>750 > それは厳密には行ごとのカウントじゃなくなるから。
1.8のIO#eachは行ごとにyieldするから、行ごとのカウントだよ。
>File.open(ARGV[0]).grep(/Googlebot/).count
それとは別に、ファイルをオープンしっ放しでGCまかせというスタイルは非常にお勧めしない。
railsのscaffoldって楽だけど、ただの雛形だよね? それに、メソッドとテンプレートが対応してるのはいいんだけど 制約という風に受け取ってしまうんだが…やりようがあるのかな
流れ見て思い出した、やむを得ずCGI使うとしてCGIAltってどう? ニコ動も使ってるらしいしcgi.rbにダメだしするようなるびま記事書いてるぐらいだから 少し期待してるんだけど、まだ出番が無くて
>>763 使いたかったら使えばいい。多少改善さているけどそう大きな違いはない。
>ニコ動も使ってるらしいし
さすがにこれはガセだろ。あそこがCGIスクリプト使ってたら大笑いだわ。
>>762 >railsのscaffoldって楽だけど、ただの雛形だよね?
うんそう。
>制約という風に受け取ってしまうんだが…やりようがあるのかな
routerの設定でいかようにもできる。デフォルトがそうなっているというだけ。
ごめん、メソッドとテンプレートの対応だったね。 それこそ使いたいテンプレート名をrenderの引数で指定できる。
ニコニコ大百科の記事見た なんでもオブジェクトって言うのもうやめようぜ ifもendも括弧も変数もブロックもオブジェクトじゃないじゃん
変数に代入できるものはなんでもオブジェクトなので、 (例えばJavaなんかはそうじゃない) first class object == 「オブジェクト」ってのは、一応Rubyの特徴と言っていいと思うんだけど。
>>769 「carとcdrとconsとcondとatom、あとquoteとeqとdefunさえあればLispは記述できるっていったのに
これだけじゃ肝心のカッコが書けないじゃないか!」
とかそういうのと似たようなニオイを感じなくもない
まあ基本はどうでもいいんだが
オブジェクト以外は全部オブジェクトです、というような微妙なアレを感じるのは確かだ if とかの制御構造もオブジェクトだったらよかったのに、と思うことはある 動作遅いと思うけど
> if とかの制御構造もオブジェクトだったらよかったのに、と思うことはある これ例えばどうだったらよかったの?
Kernel#if(cond, lambda{then}, lambda{else}) こんなん? これだとメソッドか
>>771 正直言うと俺もどうでもいいし、そんな所を厳密にして遅くなられるのはごめんだけどさ
ブロック=Procだと思ってたり、変数にメソッド付ければ++できるんじゃねとか思ったり
そういうことが初心者のときにあったもんでつい書いちゃった
Smalltalkがまさにifもメソッド呼び出しだったとおもったけど、 あれって速度的には動なんだっけ?
cond.if(then, else) これなら勝つる (NOW < time).if { puts "timeは新しいです" },{ puts "timeは古いです" }
>>768 CGIAltとcgiextは同じものだっけ?
>>778 別物
階層の/と見間違えるけど、組み合わせ的な意味じゃないかな
>>776 Smalltalkでは実際にはifでメソッドを呼び出してはいないわけだけれど(コンパイル時に
条件付きGOTO文に置き換えている)、Matzによればちゃんとメソッド呼び出しにしても
さほど速度面での違いはないらしい。もっともMatzの言うことだから話半分ということで。
メソッド名の付け方で質問です。 true/falseを返すメソッドは最後に?を付けるのがRubyの慣習ですが、 同時にtrue/falseを設定できるものの場合、?を付けるのか付けないのか。 標準ライブラリを調べたところ、foo?/foo=という組み合わせは存在せず、 GCモジュールとThreadクラスにfoo/foo=というのはありました。 true/falseを返すのに?を付けないのは正しいのでしょうか。 例えば両方ある場合はfoo/foo=にするのが望ましいのなら、 先にfoo?を作ってしまった場合、あとからfoo=を追加したくなったら どうすればいいのでしょうか。 慣習であり明確なルールが見当たらないので解釈や感覚の話になるとは思いますが、 みなさんの考えをお聞かせ願えればと思います。
なんでもいい いわゆる述語はメソッドの動作を一切規定しない 末尾が ? だからといって真偽に関わる値を返さなくてもいいし 末尾が = だからといって変数に代入を行わなくてもいい foo= というメソッドだからといって @foo への代入を行わなければならないというわけでもない 値のセットはありうるが外部提供はしそうにないのなら foo= だけ作って foo はなくてもいい どこで聞いても名前重要と言われるだけだと思うから、そのとき自分がわかりやすいと思うルールで作ればそれでいい 慣習というほどの強い何かがあるわけじゃない 好きにするといい
784 :
782 :2009/06/16(火) 05:28:46
>>782 です。
書き忘れておりました。
自分で作って自分で使うスクリプトならどんな名前でもいいとは思いますが、
オープンに公開する拡張ライブラリの場合はそうも言ってられないと思うのです。
Rubyの慣習からかけ離れた自分ルールで作ってしまうと非常に使いにくくなりそうで、
とはいえその慣習に従おうと思っても、実際どうすればいいのかな?と。
従うも何も慣習なんてねえって
慣習は接尾子の役割だけだな それをどう運用するかは自由だ どっちかってえとメソッドの名前自体のほうがウェイトが大きい 接尾子は些細な問題に過ぎん
>>782 俺の意見では
foo
foo?
foo=
の3つを全て定義するのがベスト
? つきメソッドは立ち位置が微妙すぎて困る 少なくとも、ユーザーに提供するために ? つきメソッドで作るのはかなりビミョー というかそもそもそういう条件分岐を内包したメソッドを提供しろ
>>782 foo? と foo= の両方を提供していいと思います。
foo? を定義したら foo= は定義しないなんて規約は特に存在しません。
> というかそもそもそういう条件分岐を内包したメソッドを提供しろ ?
真偽値を返すのではなく、その真偽値を使用する処理も メソッド自体にかいて、真偽値以外を返せってことだろ
>>788 そうは言っても、真偽値も普通に必要になるし
とりあえず、foo?というメソッドを作るのであれば、真偽値を返してほしい。 それ以外のfoo=/fooは必要に応じて定義すればいいんじゃないの?
真偽値が必要ということは「切り出された判断」が必要だとみなされたってことだけど、 それの多くは「真偽判断だけを切り出したことが間違い」だと思う よっぽどプリミティブな汎用ライブラリなら問題ないかもしれんが、おそらくそんなライブラリは作らんだろう
ユーザーに if 文を書かせるライブラリは糞ライブラリだという思想には賛成する が、そんなライブラリ作るのは手間がかかって面倒じゃのう 全メソッドpublicにするから適当に見繕って改造したり継承したりして使ってくれってのじゃ駄目かいね
>>794-795 ウインドウシステムを組んだとして
あるWindowが表示されてるかどうか、どうやって判断するんだ
普通は Window#shown? とかそんな風に書くだろう
さらに言えば、設定をまとめるためのConfigクラスを作ったときは?
こういうクラスのメソッドは、真偽値を返すものだらけだぞ
IF文書かせてクソならActiveRecordなんてクソ中のクソだな
>>796 Window#shown?で判定するなら
Window#showとWindow#hideで状態を変化させる
Window#shown=とするのが間違っているのではあるまいか。
個別例で言えば、
>>798 の言ってることは納得がいくな。
背景抜きでfoo?/foo/foo=と抽象化されてしまうと、必要なものを定義しろとしか言いようがないが。
> ユーザーに if 文を書かせるライブラリは糞ライブラリ モノによるというつまんない結論をすっ飛ばすなら、まあ間違ってはいないな それくらいは最大限の努力でもって遮蔽しろということなのだろう ユーザー任せが多すぎるなあとは思わなくもない
>>782 Hash#compare_by_identity
Hash#compare_by_identity?
というのがあるっぽい
>>798 それは画面の描写という副作用を伴うよね。
(変数への代入以外の)そういう副作用はなしに
apartment.pet_allowed = true
apartment.pet_allowed?
というようなのもあっていいんじゃない?
apartment.allow_pet / apartment.disallow_pet
はなんか不自然。
メソッドじゃなくて予約語だがdefined?はtrueじゃなくて名称を返す。
Numericクラスのnonzero?はゼロの時にnil、ゼロ以外でselfが返るな。
>>804 defined?は特殊だからいいけど nonzero? はちょっと違和感があるなあ
807 :
782 :2009/06/16(火) 23:41:06
>>782 です。
色々な回答をありがとうございます。
Rubyのユーザーの方々がどんなイメージを持っているのかが、なんとなくわかってきました。
そういったイメージの集合体が、いわゆる慣習というものなんでしょうね。
なるべく違和感なく自然に扱えるようなメソッド構成、メソッド名にしていけるよう、
よく考えてみます。
あ、特に話題がなければそれなりに面白い話だと思うので引き続きどうぞ。
ケントベックとか超久しぶりに聞いたな。 最近は何か別のネタでもあるのかな。
1.8.7 のパッチレベル増えたなあ 俺まだ p72 だ
え?
github で fork ボタンを押した てきとうに手元で commit して git push "Your Clone URL" おー history に俺の名前ばっかだ 無理した感じの英語で書いたコミット説明がずらっと並んで痛々しい ところで fork ボタンを押すと fork されたよって連絡が行くって本当ですか 怖くて fork しにくいじゃないか
blade で UTF-8 メールが化けちゃうのはなんとかならんのか ruby-list:46090 とかのアナウンスが読めなくて悲しい
UTF8はWindows界隈で広く使われているので全力で妨害します。
>>816 いじる前にはforkする必要ないよ。
怖いんならいじり終わってmergeしてもらいたいときだけforkすればよろし。
>>818 さっさとそうなっていてくれていいのに…っていうドザの願いを踏みにじる無神経なレスだなw
Windows界隈で広く使われてるのが本当にUTF-8だったらよかったのに… と思ってるWindows使いは星の数ほど居る。
俺SJISでしか使ったことないや
MS様の庇護を離れた場所で使う場合、 ・よっぽど知り尽くして使うか、 ・よっぽどてけとーに使うか、 どちらかでない限り必ず間違いなく絶対にいつか "理不尽な"トラブルに出くわす、それがSJIS・CP932クオリティ
まっつんはeucが廃れつつあることに腹を立て それならばいっその事とascii以外の全ての文字コードを切り捨て 一方Guidoは90%のユーザーの利便性を考えUTF-8を採用した。
切り捨てたんじゃないよ平等に扱うことにしたんだよ 文字列って言ったって所詮はバイト列さ! エンコーディングなんつまりはバイト列の付加情報さ!
デフォルトのスクリプトエンコーディングはUTF-8でいいと思うんだ ファッキンなSJISとか使いたい奴だけマジックコメント書けよ
デフォルトのエンコーディングを決めといてくれればよかったのに。 とは思うなー
デフォルトはASCIIだろ
デフォルトがないっていうのは「エンコーディング情報がありません」と言って 読み込み時にFATALで死ぬような状態を言う 嘘でも冗談でもスクリプトは読み込まれて実行されるんだから、デフォルトエンコーディングは一応存在はしているぞ
なーなー gemライブラリで書いたテストをRuby1.9で実行するとEncodingの関連でエラーが出るんだよー 1.9用のテストだけ別ディレクトリ掘って作っていいよなー
それやると 「1.8用の文字列関連のテストファイル」と 「1.9用の文字列関連のテストファイル」と 「文字列関連のテストが入ってそうだが実際は取り除かれているテストファイル」 の3つを管理しなければならなくなって苦痛だぞ
test_hogehoge.rb test_hogehoge_encoding_18.rb test_hogehoge_encoding_19.rb の3つを作って、test_hogehoge.rb の先頭で if RUBY_VERSION >= '1.9.0' then require 'test_hogehoge_encoding_19.rb' else require 'test_hogehoge_encoding_18.rb' end とか書くのか めんどっちいのう
それだと 1.8 で「test/test_* を全部実行」みたいな一斉テストをしたときに Ruby1.9 用の test_hogehoge_encoding_19.rb を読んでしまってエラーになる気がする
require じゃなく、でっけぇ if 文を test_hogehoge.rb の中に入れるのが無難なのか
うっひょー Nokogiri を Ruby1.9 で動かしたらコアダンプした
CでRuby1.9.1用の文字列を作る場合、エンコード情報を付加する関数を 呼ばないといけないんだけど、1.8.xにはそんな関数無いよね。 1.8.x/1.9.1でソースを共通にしたかったら、どんなふうに書けばいいんだろう。 1.9でversion.hが無くなってちょっと困ってる。
ヒント: でっけぇ if 文
1.9拡張の話はあまり出てないね 世界中で困ってるんじゃないかな …いや、世界の人は困ってないか
GitHubのpull requestって「自信作だけ見てもらう」ってできないの? 世界で自分くらいしか喜ばないような魔改造を含んだ 大量のcommitを作者にぶんなげるのは心苦しいんだがっていうか邪魔じゃん?
>>842 あー、うん、いますぐブランチ切れ
git branch makaizou
git checkout makaizou
git-emacs では M-x git-branch で makaizou を選べば読んでるファイルが makaizou ブランチのものになる
保存してないファイルがどうなるかは知らんので
ブランチ切る前に Emacs で保存だけはしておけ(コミットする必要はない)
このへんの迷惑かけないような使い方って解説あんまないよね
>>843 おー
っていうかgitの使い方はスレ違いだな
でもgithubにもう送っちゃったんだよね
今からでもこの最初の3つくらいの変なコミット取り消せないかな
まあいいや
ありがとう
>>841 Linuxの最近のディストリビューションとか、日本語でインストールしたらデフォルトで
LANG=ja_JP.UTF-8 になってるんじゃないの? 知らんけど。
Eric入れましたよ いいですねこれ ウヒヒ
Ruby会議の追加販売、昨日の昼からスタートしたけど、まだ残っているよ 初回販売だと2時間半で終わったのに、まだ残っているんだな
>>845 日本でLinuxを日本語を使う環境として使ってる奴って何人いるんだ、
という話なのかもしれない。
>>838 have_func("rb_enc_str_new")
#ifdef HAVE_RB_ENC_STR_NEW
>>850 なるほど・・・なんだかすごい仕組みだなあ
ともかくこれでできそう。
ありがとう!
ところで、Hash に値をセットして self を返すメソッドがないのはなんでなんだぜ? というか、(1..3).inject {|h, x| h.store(x, true) } みたいにやってハマった [].push(1).push(2).push(3) はできるんだから、 {}.store(1, true).store(2, true).stoe(3, true) ができてもいいと思う
>>852 つ
(1..3).inject({}) {|h, x| h.merge(x => true) }
{}.merge(1 => true, 2 => true, 3 => true)
で我慢してくれ。
854 :
デフォルトの名無しさん :2009/06/19(金) 10:05:46
2つめ間違えた。 {}.merge(1 => true).merge(2 => true).merge(3 => true) がより元のコードに近いか
>>852 Hashはimutableなモデルを模倣することをハナから放棄しているからじゃないかな。
素直にeachで破壊的にやれと。
や、これはruby-devにでも投げて見るといいんじゃない? obj['hoge'] = val を評価した値が #[]= の実装に依存していた ころならともかく、今だったらself返すようにしてくれって言っても通るかも。
>>852 1.9系では、
(1..3).each_with_object(h){|x, memo| memo.store(x, true) }
858 :
852 :2009/06/19(金) 12:33:24
>>853 いや…代用にはならんでしょ
require 'benchmark'
N = 10000
Benchmark.bm do |r|
r.report('store') { (1..N).inject({}) {|h, x| h.store(x, 0); h } }
r.report('merge') { (1..N).inject({}) {|h, x| h.merge(x => 0) } }
end
user system total real
store 0.015000 0.000000 0.015000 ( 0.015625)
merge 71.547000 1.391000 72.938000 ( 72.968750)
話にならん
merge!/update で
>>859 おお、そうだった。merge! 使わないとフェアじゃないね。
より正確に bmbm でやってみた。
user system total real
store 0.032000 0.000000 0.032000 ( 0.031250)
update 0.047000 0.000000 0.047000 ( 0.046875)
merge! 0.047000 0.000000 0.047000 ( 0.046875)
update と merge! は実体同じだから一緒。
引数で毎回 Hash 作るコストはそんなでもないのかな。
>>857 これいいね。ちょっと記述量は増えるけど。
1.9.1p129 で、inject 版とまったく同じタイムになった。
1.9.1あたりから、小さいArrayやHashを生成するときの処理が 軽くなったという話をどこかで聞いたような
863 :
デフォルトの名無しさん :2009/06/19(金) 16:38:13
Ruby作者のいる会社の社長って きっとさらにすごい経歴の持ち主なんだろうけど どういう経歴の人なの?
866 :
デフォルトの名無しさん :2009/06/21(日) 20:56:43
>>863 東大卒、東大助教授を止めて松江に戻って起業したら松本さんが
社長と一緒に働くために松江にやってきた。
これくらいしか知らん。
またか。至る所で見るなその流れ。 マジで社長の自演じゃないかと思ってしまう。
>>867 ヒント:全部age・「東大卒」「東大助教授」
これで理解できなければ2chから今すぐ離れたほうがいい
869 :
デフォルトの名無しさん :2009/06/22(月) 15:21:45
ソースは無いみたいだな
情報処理学会誌にMatzが書いてたコラムがあったが、 確かまだ売れっ子でない時代に「言語開発者」って肩書きで 雇ったんじゃなかったか?先見の明があったのか何なのか
なんという自演
自演乙とか本人乙とか言われてそうだった試しがない
873 :
デフォルトの名無しさん :2009/06/22(月) 19:50:19
>>873 実際はどうでもいいんだろ
評判が落ちればそれで問題ない
はっきり言え
東大っつったって、毎年3000人から卒業してるんだ(昭和27年からで累計15万人) そんなに珍しくないぜ?
どうでもいいよ
京大も同程度のものだと考えれば、むやみに否定してかかるほど 希少価値のあるもんでもないわな
昔は東大卒というのは特別の価値があったんだよ。競争率も今とは違うしね。 長く会社にいると分かるけど大学卒業という学歴に対する評価がすごく変わった。 最近じゃうちのような中小企業でも東大卒の子を普通に落とすけど昔じゃあり得んかった。 まぁ景気の問題もあるけどね。
879 :
デフォルトの名無しさん :2009/06/23(火) 15:50:15
あるサイトをMechanizeでクロールしたのですが, checkboxをうまくパースできないようなので(サイトの方の問題だと思います) checkboxを追加したいのですが,やり方がわかりません。 fieldの場合はadd_field!のメソッドがあるのですが,checkbox(radiobutton)にもそのようなものはありませんか? ためしてみたのはつぎのようなものです。 agent.get(SOMEURL) form = agent.page.forms[0] WWW::Mechanize::Form::CheckBox.new('chkA', '01', true, form) WWW::Mechanize::Form::CheckBox.new('chkA', '02', true, form) ruby 1.8, mechanize 0.9.3です。 よろしくアドバイスをお願いします。
>>879 つまりその例だと
agent.get(SOMEURL)
form = agent.page.forms[0]
form.add_field!('chkA', '01')
form.add_field!('chkA', '02')
で動くと思われ
882 :
879 :2009/06/23(火) 17:34:54
Mechanizeに関しては
>>880 のサイトでなんとかなるだろ
ライブラリ本体は便利なのにオフィシャルマニュアルがうんこだという典型的Rubyライブラリだ
誰かが解説しないとソース読み込める奴以外誰も使えないから流行らないというネガティブスパイラル
>>878 >昔は東大卒というのは特別の価値があったんだよ。競争率も今とは違うしね。
法学部と、他の学部に格差が
GitHubで公開されてるそこそこ人気のライブラリをforkしました なんかすっごい注目されたりとかしたらどうしよう、みたいに思ってましたが 1週間経ってもwatchersは自分1人のままです 世の中そんなもんだと思うので気軽にforkして公開するのがいいと思います
Rubyのライブラリに限らないけど、 注目されるプログラムとかソフトの割合はかなり低いと思うよ。 ベクターとかでも大量にソフトがあるけどほとんどはたいして使われない。 ベクターか窓の杜にはおれが10年くらい前に作った残骸があるかも。 注目してくれたら当たりくらいに思った方がいいよ。 アップするときは注目される気マンマンなんだけどね。
887 :
デフォルトの名無しさん :2009/06/24(水) 22:57:11
CSVに10万件のデータを書き込もうと思うのですが、以下の方法でメモリはパンクしないですか? いったんファイルに書いたほうがよいでしょうか? report = '' CSV::Writer.generate(report, ',') do |csv| csv < < ['項目1', '項目2', '項目3'] Mydata.find(:all).each do |mydatas| csv << [mydatas.field1, mydatas.field2, mydatas.field3] end end send_data(NKF.nkf('-U -s -Lw', report), :type => ‘text/csv; charset=shift_jis; header=present’, :filename => “report-#{Time.now.strftime(’%Y%m%d’)}.csv\")
そもそも付属の csv.rb では1万超したら処理が遅いと思う fastercsv とかインストールしてそっち使えと思ったがこれ Ruby1.9 か まあ若干メモリ圧迫するとは思うがそのかわり速いぞ
>>887 csv生成よりもsend_dataの方が問題な気がする
>>887 一件あたりのデータサイズがどのくらいになるのかわからないからなんともいえない。
でもいったんファイルに書いた方が安心だとは思う
891 :
デフォルトの名無しさん :2009/06/25(木) 06:59:14
>>887 ちょうど1万件ちょっとでやってみたことがあるが、
上半分(csv につめるところ)は、速度は気にならなかった。
ただしあなたがきにしているのはメモリがパンクするかどうかなので、その検証はあまりしていない。
#
>>887 の例だとカラムが3つぐらいなので、そのカラムの長さにも寄るけど、10万件ぐらいだったら大丈夫な気もするけど
よく fastercsv の方が速いというが、すでにある CSV をパースするときはそうかも知れないけど、
既存のデータを csv 煮詰めるところは、あまり変わらないように思う。
fastercsv の方がオプションが充実してる
894 :
デフォルトの名無しさん :2009/06/26(金) 16:16:17
ちょっとおたずねしますが Ruby作者のいる会社って女性はノースリーブで通勤は可ですか?
すいません。無職板の誤爆でした。
ノースリーブ禁止のとこなんてあるのか?
俺の勤務先(N11ズ)は禁止だよ
俺の会社はなぜか夏になると皆短パンになることを推奨してる リラックスして肩の力を抜こう、ということらしいが…
NaclはMatz以外全員六尺角刈り
>>900 冷房を弱めるから服装も、とかそういう意味でなくて?
>>901 寝言はおごちゃん(辞めたけど)の髪を見てから言え。
rubyの実装はどうしてこんなに汚いんだ… 外から見ると綺麗に見えるのに中身はごっちゃごちゃ もう一度練り直してほしいなぁ
つまり全員六尺角刈りは冷房を弱めるためなんですね!
>>904 たぶん練り直しが2.0.0になるんだろうな
>>904 はすぐに自分でやらないといけないことに気づき、やがてヒーローとなる。
Rubyが遅いって言われてるのも、処理系の実装が悪いから? JRubyの方が速いなんて言われてるし。
>>904 どうせなら仕様もなんとかしてほしい.
変数の種類だけで五種類もあるなんて、無駄すぎる。CやLISPは一種類だぜ。
あとスコープが関数と変数で違っていて意味不明。
>>909 rubyはインタープリタとしてはそんなに遅くはないだろ。むしろ頑張ってる方。
>>912 メソッドやらサブルーチンやらプロシージャやらと同類の処理の固まりです。
言語によって呼び方も定義も中身も違いますので、単にそれらっぽいものの
総称で使われることもある便利な言葉です。少し頭やわらかくして下さい。
>>913 みたいな人がRubyの仕様固めろとか言ってるのが笑える
おれは思いつくまま好き勝手に書き散らすからお前らが正しく解釈しろ
>変数の種類だけで五種類もある そりゃそれぞれ役割が違うから
別に変数の種類1個にしてもいいけど、そうするとコンテキスト依存性が最強になるぞ どこで変数が最初に定義されたかでスコープが決まるんだからな それでもよければ
そんなん、全ての変数にブロックつければいいんだよ str=('Hello'){ puts str #=> Hello } 略記 str = hello { puts str #=> Hello }
> 変数の種類だけで五種類もあるなんて、無駄すぎる。CやLISPは一種類だぜ。 Cの場合はグローバル、ファイルローカル、関数ローカル、静的ローカル、 さらにRubyのインスタンス変数に相当する、構造体メンバ、... どこから見ても1種類じゃありませんが。
そもそもおれは「変数の種類」という意味がわからん 具体的に五種類はなんだ?
こういうのはどうせマニュアルしか見てないんでマニュアルから引こう ・ ローカル変数 ・ インスタンス変数 ・ クラス変数 ・ グローバル変数 ・ 疑似変数(selfやtrueや__FILE__など) の5種類だと思われる
他言語からRubyに来たらシンプルさに驚くと思うのだけど
関数厨は放っておけ
Rubyがシンプルって何の冗談だ。
>>921 そういうことかよ!それを一種類ってバカじゃないのか?
これを言ったやつのプログラムソースが見てみたい。
シンプルって何を見てシンプルって言ってんだ。 少なくともrubyより実装が複雑な言語を見たことがない。 素人同然が作った言語を計画性無しに拡張しまくったからもう後戻りできない感じ。 基本的に他言語のパクリの繰り返しなのでスタイルも糞もない
>>921 ローカル、インスタンス、クラス、グローバル、定数、だと思う
var @var @@var $var VAR
で、@ や $ を外すためには変数宣言時に変数の種類を指定する必要が出てくるわけだが
きっと
>>910 はそんなこと考えてないんだろうな
全くの素人なんだけど、実装ってどうやったら読めるの? Rubyをインストールしても中身を見れるのはインタプリタではなくてライブラリだけですよね。 そもそもインタプリタ自身は何の言語で書かれてるの?やっぱりC言語かな?
クラスライブラリのC実装部分(StringとかArrayとか)はかなり読みやすい。 メソッドと1:1対応に近い感覚で読めたりする。 言語のコア部分は、RHGに沿って読むなら1.9だと全く違ってくるので 1.8系かそれ以前のがいいかな。
おおありがとうございます。気合入れて読んでみます。 たぶん無理だけどw
実装の部分はやり方を変えて整えたのが1.9なんじゃないの?
1.9の実装も複雑なのか?
まあ玄人な
>>926 にすこぶる美しい実装を期待したいな。
部分的に見るだけなのと、膨大な全体を作るのとでは全く勝手が違うことに気づくだろう。
>>926 PerlがRubyよりシンプルなところを5点以上挙げよ
・ソースコード ・ソースコード ・ソースコード ・ソースコード ・ソースコード
Perlのソースコードほど、わかりやすくダメ出しされた例を、俺は知らない
一応補足すると、開発者に向かって 「あんたはPerlのソースを書くな」って言われたっていう例でってことでね。 大半の人は知ってると思うから蛇足だけど。
>>933 1.9はYARVを使ってるから、RHGと照し併せては読めない部分がある。
939 :
デフォルトの名無しさん :2009/06/27(土) 14:44:26
変数のスコープ云々は、宣言出来るようにすれば見通し良くなるのに
>>933 抽象構文木の生成までは複雑すぎるので触らずに
バイトコードを吐かせるようにしたのが1.9だったと思う
Ruby言語(とリファレンス実装でもあるMRI)は複雑だと言われていたが、
最近ではJRubyを初め雨後の筍のごとく多数の実装が出てきたのを見ると、
言語処理系の専門家でも手に負えないというレベルではないようだ
× バイトコード ○ ワードコード
def tenpre926(lang_name) print <<EOS シンプルって何を見てシンプルって言ってんだ。 少なくとも#{lang_name}より実装が複雑な言語を見たことがない。 素人同然が作った言語を計画性無しに拡張しまくったからもう後戻りできない感じ。 基本的に他言語のパクリの繰り返しなのでスタイルも糞もない EOS end tenpre926 'C++' tenpre926 'Java' tenpre926 'Perl' tenpre926 あなたの好きな言語名
なんでローマ字と英語が中途半端に混ざってるんだよw
「プロ」が作った言語を挙げてみようか。
C#
Java
Action Script
自作データクラスにHashを継承するな 後々改造する人がめんどくさいから Hashでなくてもよくなったときに、Hash時代との互換性のために Hashクラスにある全部のメソッドを新クラスに定義する羽目になるぞ
>>945 javaのジェネリクス機能はプログラミング言語を専門にする研究者が開発した、理論的にも美しい機能。
しかもそれは日本人。
日本が世界に誇る言語はもしかしてjavaなんじゃなかろうか。
953 :
926 :2009/06/27(土) 20:29:06
なんかわけのわかんないことになってるけど…
>>927 >>933 そんなもんは俺なんかに頼らなくても元々の開発者たちが意識していないといけないこと。
>>934 あんたに5点挙げろとか指図されるいわれはない。
一言だけ言わせてもらえれば、Perlはバージョンアップごとに仕様もソースコードも慎重に整理されてる。
Rubyと比べれば利用率が半端ないし、開発者もその自覚があるからね。
>>951 GJの理論付けは日本人だけど、デザインはWadlerだろ。
とりあえず953が、説明しようとせずに主張だけをする人間だというのは分かった
>>950 いきなりだれに言ってるんだよ。
そんなことしないし、しようと思ったこともない。
>>953 > 俺なんかに頼らなくても
おまえだれだよ。わけわからんのはおまえだ。
なんでいきなり変のがウヨウヨわいてくるんだ?
>>950 は面白いからOK
>>953 は文句言うだけで何もできないから×
できるのかもしれないけど、やらないよね。絶対。
できないのとやらないのは同じ。
>>926 >少なくともrubyより実装が複雑な言語を見たことがない。
・・・はぁ?
PerlやC++のほうがよっぽど複雑なんだけど。
海外では「Rubyの実装はシンプルすぎる(高速化の工夫が足りない)」と言われているのに。
ちなみにどのへんの実装が他の言語より複雑なのさ?具体的に指摘してみようぜ。
>>953 >一言だけ言わせてもらえれば、Perlはバージョンアップごとに仕様もソースコードも慎重に整理されてる。
>Rubyと比べれば利用率が半端ないし、開発者もその自覚があるからね。
だからどうした?慎重に管理されているから複雑じゃないとでもいうのか?
>>958 必死なのはわかりますが、人に根拠や具体性を求めたかったら
まず持論に根拠や具体性を持たせましょう。
rubyに工夫が足りないなんて分かりきってること。 シンプルの意味を勘違いしてるんじゃね? たとえ1000行のコードでもスキル無い奴が書けばすごく複雑になる。
Ruby派もアンチもいい加減抽象的な議論はやめてください
議論するならちょっぴりでもプログラムソースでも貼り付けて、 どこがどうとかまともにやってくれ。水掛け論じゃんかよ。 流れを図におこしてPerlと比較するとか。どうせできないんだろ?
偉そうなこと言う前にお前がまず具体的なソースを出せば?
ああ、やっぱできないんだね。 そ れ す ら w
th->cfp->lfp[0]みたいなむき出しの記述がそこかしこにあったり PUSH_TAGが散在しすぎだったりで、ソース整理して欲しいと思うことはある こういうのは複雑というのとはちょっと違うか
コーディングスタイルも統一されてないしね
そんなズバリ言うと、いかに今が自分のターンではないかという 大演説が始まっちゃうよw
rubyも->演算子あんの?
その程度のことで複雑だの素人だの言ってたのか。 得意げに「お前の番だよ」とかすげー笑えるw どこが複雑なのかさっぱりわからんし、 どうすればいいかも書いてない。レスしようにもレスできないw
理解できないなら口出さない方がいいのでは?
なんだこいつw
>>971 > レスできない
ああ、やっぱりできないんだね。
>>971 お前はよく頑張った。もう休んで良いぞ。
肥大した自意識に知恵がまるで追いついてない子が 必死のやりくりで「俺はお利口設定」を維持しようとしている時の 言動見てる時って、不思議なワクワク感があるよねw
どっちかというとおなか痛くなる流れだ。 人の記憶の暗黒面をつっつくような、痛がゆい醜さと既視感と。
Rubyの処理系の全体を把握してるようなやつが、 こんなところでくだを巻いてるわけがない。 そういう人は自分で作ったり、Rubyのメンテナとかをやって、 ある程度不満をどうにかできるからな。 あと、連続投稿ならやめてほしい。うっかりチェックしてしまう。
自転車置き場の話はいいよ
おまえら、はじめは日本経済について高らかに論じてたくらいだったのに、 いざ具体的な話になると行きつけのコンビニ店員の態度に 文句をつける程度になるとはどういうことだ。
それはただの認識不足だろ。 終始文句をつけてるだけだ。
意味分からん。 rubyのスレだからrubyについて各自思うことを論じ合えばいい。 無知な馬鹿ほど外から文句付けたがるのは仕方ないこと。
2chがそもそも「外」だからな。 外から文句を付けたがる無知な馬鹿同士、もっと仲良くしようぜ。
Javaスレでも似た流れがあったなぁ アノテーションの意義が話題になってて 内容を理解できない馬鹿がソースコードで示せって喚いてたっけ
Railsのスレが無いんですけど… Rubyスレ量産するぐらいならRailsスレ作りません? 作っても需要無い?
「意義」が話題ならコードはいらんが、「実装」が話題ならコードは必要だろ。 まあきりがないから別の話題で。特に振るものもないが。
負け犬ほどよく吠える
吠え返せてないのは誰でしょう 自分で「具体的に」なんて話題振っておきながら。
もう埋めようぜ
次スレはなしでいいよね
994
995
なんだこりゃ?またRuby暴威か?
997
998
>>991 > 吠え返せてないのは誰でしょう
あなたですね。
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。