1 名前: 【大吉】 mailto:sage [2009/01/01(木) 13:13:22 ] プログラミング言語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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
654 名前:デフォルトの名無しさん [2009/01/21(水) 18:46:15 ] データが文字列の内容に数字をふったものを対象にして 数字でソートする場合どんな感じでやればいいでしょうか。 文字数字のままやると小さい数字が後にきたりして、ソートがおかしくなるのですが。
655 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:01:10 ] 全部同じ桁にする
656 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:02:29 ] sort メソッドの説明は気の利かない書き方をしてるからね あれはブロックの結果がどうなるかでソートされるんだ irb> puts ['30歳', '2歳', '10歳'].sort 10歳 2歳 30歳 irb> ['30歳', '2歳', '10歳'].each{|a| puts a.scan(/\d+/)[0].to_i} 30歳 2歳 10歳 irb> puts ['30歳', '2歳', '10歳'].sort_by{|a| a.scan(/\d+/)[0].to_i} 2歳 10歳 30歳
657 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:05:00 ] >>654 数字を振るというのが文字列と別枠なら hash = {3=>"c",2=>"b",1=>"a"} hash.sort.map{|v| v.last}
658 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:12:11 ] irb> ['30歳', '2歳', '10歳'].each{|a| puts a.scan(/\d+/)[0].to_i} 30歳 2歳 10歳
659 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:25:19 ] >>658 あ、すまんね そこのへんだけ直前に書き換えたんだ 案の定間違ってるな irb> ['30歳', '2歳', '10歳'].each{|a| p a.scan(/\d+/)[0].to_i} 30 2 10 ってことで、ブロック内で数字部分を抜き出して整数にしてるんだということがわかってもらえればよかった それぞれの要素に対して「数字部分を抜き出して整数にしたもの」で比較してソートすれば、おそらくうまくいく
660 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 01:31:38 ] >>600 とりあえずC#(.NET3.5)では int j = 1; Thread t = new Thread(new ThreadStart(() => { while (j < 100) { Thread.Sleep(1000); Console.WriteLine(j); j += 1; } })); t.Start(); while (j < 100) { String i = Console.ReadLine(); j += Convert.ToInt32(i); } これが動いたから、IronRubyなら動くかもよw
661 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 04:51:23 ] >>659 そこまで書いたなら最後まで書けばいいのに。 ['30歳', '2歳', '10歳'].sort_by {|a| a.scan(/¥d+/)[0].to_i } または ['30歳', '2歳', '10歳'].sort_by {|a| a =~ /¥d+/; $&.to_i }
662 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:26:38 ] ['30歳', '2歳', '10歳'].sort_by {|a| a[/\d+/].to_i }
663 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:40:21 ] いや短くすることに意味はないから そんなこと言ったら %w.30歳 2歳 10歳..sort_by{|l|l.to_i} が標準で最短だぞ
664 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:45:30 ] たぶん単位とかだと思うけど、そういうのデータの中に含めるのってどうなんだろう 「1.5メートル」より「90センチ」の方が大きくなったりするんだろ? さすがに「2メートル」と「5キロ」とかは混在していないと思うが
665 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:51:57 ] 生のデータを生のまま極力取り込んでおきたいという需要はそこそこあると思うよ 数値だけとかに正規化しとけというのはいやもう全くその通りではあるんだが
666 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:58:56 ] >>665 そういうのはラッパクラス作って都合の良い方でアクセスできるようにしとく
667 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:11:59 ] >>664-665 の見てる世界と>>666 の見てる世界は違うな
668 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:20:43 ] データがアクセスされるのは一つの言語からだけとは限らないぞ 3つ言語使ってたら全部の言語でラッパークラスを実装するのか?
669 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:32:09 ] それはまんどくさい(´・ω・`)
670 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:34:58 ] >>668 1つの言語からだけのことのほうが圧倒的に多いと思うがどうかね 君は移植性の高いC言語を使うべきだと思うよ
671 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:46:13 ] >君は移植性の高いC言語を使うべきだと思うよ うむ
672 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:10:58 ] データきたないと前の担当者に殺意を抱いたりするよなw
673 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:24:45 ] >>667 全くだ 汎用DBソフトに格納される業務データしか扱ったことがないのだろう
674 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:33:35 ] ほんとにどうでもいい話なんだけど >>673 そういう人って稀にいるよね 業務でしかプログラミングに関わってない人 それはそれで仕事として効率もいいし好ましいことも多いが、話が全然合わんので困る
675 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 20:13:33 ] 仕事でやっててプログラミングを好きな人はまだ良いが 好きでもなく仕事だからってやってる奴のソースはだいたい汚い。 そういう時は殺意抱くなwww
676 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 01:33:48 ] >>664 >たぶん単位とかだと思うけど、そういうのデータの中に含めるのってどうなんだろう Measureというライブラリを使うと単位系を操ることができる ttp://d.hatena.ne.jp/mrkn/20081025/sappororubykaigi01
677 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 02:30:36 ] >>675 たしかに a1=1 a2=2 a3=3 ... と延々と書かれていたことがある 配列+ループにするとか考えろと思ったが 行数で単価計算されるなら上の方が正解なのかも知れない
678 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 03:00:00 ] 配列として保持するコストを嫌ったのかもしれない
679 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 03:09:40 ] 世の中には虚しいこともあるんだね
680 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 03:57:53 ] >>678 がたぶん正解だと思う 行数稼ぎか配列利用法が理解できなかった(または利用禁止)な可能性も充分あるが
681 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:01:09 ] つか、言語と実行環境に強く依存するな 配列にしてしまうと保持と参照コストが妙に高くなる言語というのはなんかどっかにあったはず
682 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:39:18 ] array=[a,b2c,d2e,f,g]を[a,[b,c],[d,e],f,g]に分解するにはどうすればいいですか?
683 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:46:41 ] >>682 標準的な方法はないから、まあ好きにやれ 要素ごとに正規表現で分割して自力で配列を作るしかないな
684 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:55:12 ] >>682 split("2")とpushでOKじゃね?
685 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:18:20 ] [a,b2c,d2e,f,g] は ['a','b2c','d2e','f','g'] という意味なのか?
686 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:23:33 ] >>685 この文脈ではそう考えるのが自然じゃね 配列の要素が参照している変数名の英字部分を ネストした配列の要素の参照の変数名に反映したいという込み入った希望かもしれんが
687 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:34:30 ] こうですか?わかりません >> ['a','b2c','d2e','f','g'].map{ |e| /2/ =~ e ? e.split(/2/) : e } => ["a", ["b", "c"], ["d", "e"], "f", "g"]
688 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 06:33:01 ] EOFにマッチする正規表現、または"末尾"がEOFであることを手短にチェックする方法ないですかね キー1: 値1 キー2: 値2[EOF]
689 名前:227 mailto:sage [2009/01/23(金) 07:22:40 ] 昔のことになりますが、カテゴリ取得に関して質問したものです。 ログを見ていたら同じようなことが質問されていたのでまた、質問をさせていただきます。 search('a').select{|a| /cat_/ =~ a['href']}.map{|a| a.inner_text} カテゴリが一つだけ指定されている場合は上のものでうまく言っていたのですが、 一つの記事で二つ以上指定されている場合にうまくいきません。 理想としてはcategory=["A",["A","B"],"A","B",["A","B","C"]] のようにしたいのですが
690 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 07:50:36 ] rubyってhtmlspecialcharsあるの?
691 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 07:52:37 ] >>689 もっと具体的なhtmlの例を出してくれないと答えられないような…
692 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 07:58:05 ] >>689 selectってなんだっけ、findだっけfind_allだっけ …allのほうか カテゴリってのは一番下にあるやつだな、他のブログではタグとか言われてるものだ >>246 では例が悪いので、適当な大手のアルファルアモザイク例に出すぞ ttp://alfalfa.livedoor.biz/archives/cat_50026947.html これから [ ["ネット・PC・技術", "短レス"], ["ネット・PC・技術", "短レス"], ["ネット・PC・技術", "知識・薀蓄"], … ] という配列を抽出したいという要望でいいか? 「記事単位でsearchかけてから、それの返り値のHpricot::Elemなどに対してmapを使う」が答 なにをどうやって記事単位とみなすかはそのサイトのHTML構造読め
693 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:11:05 ] >>690 あるよ
694 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:17:26 ] >>691 >>692 さんが例に上げたサイトのようなものです。 >>692 さんが書かれたような配列です。記事単位はデザインの雛形によって変わってくるので調査済みです。 今移動中なんで確認できませんが, 記事単位.search('a').select{|a| /cat_/ =~a['href']}.map{|a|a.inner_text}みたいなものですか?
695 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:17:35 ] require 'rubygems' require 'hpricot' require 'open-uri' require 'kconv' doc = Hpricot.parse(URI.parse('blog.livedoor.jp/dqnplus/ ').read) result = doc.search('div.hentry').map{|div| [div.at('h3.title%20entry-title').inner_text, div.search('a').find_all{|e| /archives\/cat_/ =~ e['href']}.map{|e| e.inner_text}] } result.each do |post| puts "#{post[0]}[#{post[1..-1].join(', ')}]".toutf8 # 画面表示のエンコードに合わせること end けっか: FF11、バグを利用してアイテムを複製した500人の廃人を強制退会処分に [びっくりニュース, ゲーム] 次期ロシア正教会総主教のネット人気投票、日本人大主教がダントツ1位に…「日本アニメのファンが原因」とロシアマスコミ [びっくりニュース, 国際] 「孫悟空」の起源は韓国のサルだった…韓国教授が主張 [痛いニュース, 韓国・北朝鮮] パッケージに萌えキャラが描かれた「ツンデレカレー」「萌カレー」他が馬鹿売れ [おバカなニュース, 食生活] 「若者、結婚が遅い…どんな恋愛してるのか」「日本はなぜ子供産むのが難しいのか」など、小渕大臣が少子化分析チーム [痛いニュース, 政治・経済] … タグのネスト云々はこういうことをやりたいのだと推測 タグが1個しかない場合も要素1の配列になるので注意
696 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:23:21 ] >>695 ありがとうございます。すぐに確認できませんが,帰宅したら確認します!
697 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:27:31 ] スクリプト作るの早いな
698 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:30:58 ] >>697 過去に似たようなの作った経験があれば見当つくから あとはサイトの特徴調べるだけでこんなもんよ 早い人はもっと早いはず というか、このスクリプトは見たままの処理しかしてないので泣きたくなるほど遅い なんかスゴい人がXPathとか駆使して爆速に仕上げてくれることを期待
699 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:32:08 ] >>693 名前は?
700 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:42:52 ] >>699 def CGI::escapeHTML(string) string.gsub(/&/n, '&').gsub(/\"/n, '"').gsub(/>/n, '>').gsub(/</n, '<') end ということで CGI::escapeHTML require 'cgi' して使ってね シングルクオートをエスケープすることはありません
701 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:50:58 ] 今なら cgialt/util を薦めた方が良いのでは
702 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:52:46 ] 標準でなくていいのならたくさんあるよそりゃ 4つgsubするだけだから自前でやれというのもありだろうし cgiライブラリがCGI作成に最早使われてないのは公然の暗黙
703 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:56:32 ] 最近は文字列エスケープユーティリティと化してるな
704 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 09:39:17 ] ここでスモーカー抜けるのは痛いな
705 名前:704 mailto:sage [2009/01/23(金) 09:43:02 ] ごめんなさい
706 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:01:47 ] >>699 ttp://www.ruby-lang.org/ja/man/html/cgi.html 結構いろいろそろってる
707 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:03:15 ] 揃ってるも何も(PHPの)htmlspecialcharsの動作をするのは CGI.escapeHTML だけだぞ
708 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:12:43 ] >>707 全然知らんようだからほかにもいろいろあるって紹介したのだが URLエンコードするのありますか?とか追加質問されたらバカバカしいだろ リロードしてなかったから>>700 は気づかなかった
709 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:18:11 ] Ruby1.9が入っていないと端末に「アナログ」と表示する.bashrc - aikeの日記 d.hatena.ne.jp/aike/20090118
710 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:24:50 ] Rails1.2.6を使って作成しているのですが、selectを動的に変化させようとすると ActionView::TemplateError (undefined method `number_select' for #<HashWithIndifferentAccess:0xb722adf0> というのが出てしまいます。回避策があればご教授ください。 <やっていること> index.rhtmlの中を次のようにしています。 <div id="all"> <table> <tr><td id="first"><%= render :partial => 'first_info' %></td id="first"></tr> <tr><td id="second"><%= render :partial => 'second_info' %></td id="second"></tr> <tr><td id="third"><%= render :partial => 'third_info' %></td id="third"></tr> </table> </div id="all"> _first_info.rhtmlには次のような selectがあります。 <%= select(:first_info, :number_select, @numbers, {:selected => @select_value}, {:onchange => remote_function(:submit => :first_info, :url => { :action => :change_select }}) %> @numbersはコントローラー側で @numbers = ActiveSupport::OrderedHash.new してデータベースから値を格納しています。 _second_info.rhtml のテキストボックスに値を入力し、ボタンを押したら、その値をDBに登録し、_first_info.rhtmlの selectのリストに入力値を追加しようと以下のように処理しています。 1.コントローラーの_second_info.rhtmlから次の関数が呼ばれる def second データベースへ登録 @numbers = ActiveSupport::OrderedHash.new @numbers へデータベースの値を格納 @select_value = 1 end 2. second.rjsは _first_info.rhtmlを更新するため、次のようになっている page[:first_info].replace_html :partial => 'first_info'
711 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:28:02 ] >>710 【Ruby】Ruby on Rails Part6 pc11.2ch.net/test/read.cgi/php/1224838013/
712 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:42:15 ] instance_variable_set の 変数名に指定する文字列って、ユーザの入力そのまま渡しても大丈夫?
713 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:51:53 ] >>712 そのクラスでありえそうな変数名用文字の集合(おおむね英数字とアンダースコア)にマッチしないものは 事前に弾いとくとかしておいたほうがいいと思う あるいはアクセサの提供を条件にしておいて instance_methods に指定文字列があるかどうかチェックするとか 中のほうでevalしてるんじゃないかという疑問に答える知識はない
714 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 11:58:26 ] >>712 既存のインスタンス変数をどうされてもかまわないなら、大丈夫。 >>713 内部でevalとかはしてない。
715 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 12:19:33 ] >>710 >ActionView::TemplateError (undefined method `number_select' for #<HashWithIndifferentAccess:0xb722adf0> エラーの意味は分かってる? HashWithIndifferentAccess のオブジェクトに対して number_select メソッドを呼び出して、それで undefined method になっている。 呼び出すメソッド名を間違っていないなら、呼び出す対象となるオブジェクトを確認してみてはどうだろうか。 もしそれであっているなら、Railsのバグかもね。
716 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 19:59:53 ] 継承したクラスのオブジェクトの配列で困ってるんだけど class SuperClass def <=> other true end end class Class1 < SuperClass end class Class2 < SuberClass end arry = [] array << Class1.new array << Class2.new array.sort で、『Class1 と Class2 は比較できねぇよゴラ!』 といわれてしまうんだけど。 どうにかなんないかな? C++の SuperClassVecter* array = new SuperClassVecter() Class1* c1 = new Class1() array.push((SuperClass*)c1); Class2* c2 = new Class2() array.push((SuperClass*)c2); みたいなことがやりたいんだけど、よくわからんちん。
717 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:10:23 ] エラーメッセージを勝手に訳す人間に発展の未来はないのでよく覚えておくとええぞ あとマニュアルくらい見れ ttp://www.ruby-lang.org/ja/man/html/String.html#self.20.3c.3d.3e.20other > self <=> other > self と other を ASCII コード順で比較して、self が大きい時に正、等しい時に 0、小さい時に負の整数を返します。 ということで、<=> メソッドは整数を返すように作らなければ sort で比較できない
718 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:13:46 ] >>716 Comparableメソッドをインクルードしましょ
719 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:42:21 ] というか、基本的にはクラスが違うと比較はできないよ でもそれだと困るので (10 < 11.1 だとエラーで、いちいち明示的に 10.to_f < 11.1 しなければならないとか超困る) Rubyではcoerceのようなメソッドを作って汎用的なデータ構造に変換を依頼するというのが普通らしい でもめんどいので、スーパークラスで自分のデータの大きさを規定するというのはどうだろう class SuperClass def initialize(data); @data=data; end def <=>(other); self.length - other.length; end def length; @data.length; end end class Class1 < SuperClass; end class Class2 < SuperClass; end arr = [Class2.new('second'), Class1.new('first')] p arr.sort 結果 [#<Class1:0xb7c415f0 @data="first">, #<Class2:0xb7c41618 @data="second">]
720 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:53:57 ] >>719 標準の配列に入ってる状態で標準の sort をすると Class1 のオブジェクトが Class2 より前に出るとか そういうほのかに邪悪の香りがする処理をしたいのでは class SuperClass def <=>(other); self.class::PN - other.class::PN; end end class Class1 < SuperClass; PN=1; end class Class2 < SuperClass; PN=2; end class Class3 < SuperClass; PN=3; end arr = [Class3.new, Class2.new, Class1.new] p arr.sort [#<Class1:0xb7d0ce94>, #<Class2:0xb7d0cea8>, #<Class3:0xb7d0cebc>]
721 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:04:30 ] rubyのスレって親切に教えてくれるよね。 PHPは気持ち悪い連中ばっかりで寒気がする
722 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:15:30 ] どの言語も人気が出て使う人が増えてコモディティに接近するとああなるよ このへんの待遇は単にユーザーの数の少なさの裏返しというだけに過ぎない
723 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:36:47 ] ドキュメントが完備されていないから、まだまだまともな質問が来るので、 答える方もまだブチ切れてなわけだ。
724 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:49:05 ] でもオンラインリファレンスに乗ってることでもみんな寛容に答えてるよね。 新規参入促進にはいいのかな? 俺はまだ初心者だけどrubyは書いてて楽しいね
725 名前:716 mailto:sage [2009/01/23(金) 22:55:11 ] みんなありがとう。 継承クラスのどっからでも比較できるようになったよ! あと、ドキュメントって読みにくいよね。 せめて単語で引けるインデックスがあれば・・・ 月曜にRuby始めたばっかりなんだけど ドキュメント調べてる時間が9割以上ってどういうことなのさ! しかも知りたいことにはほとんどたどり着けない。
726 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 22:58:55 ] ソース嫁ってことなのか。
727 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:04:07 ] プログラミングなんて8割くらいは調べものだと思うよ 始めたばかりならなおさら でまあそれとは別にRubyのドキュメントは機能的に非常に貧弱だ どうにかしないといけないという話は出るが、本当にマシになったことはまだ一度もない
728 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:21:48 ] >>727 > プログラミングなんて8割くらいは調べものだと思うよ > 始めたばかりならなおさら おまいは時代に追い付け
729 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:25:03 ] >>728 打鍵時間以外はほとんど全部調べ物だと思うんだが 仕様書読んだりマニュアル読んだりRFC読んだりネットの事例読んだり
730 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:27:03 ] >>725 >ドキュメント調べてる時間が9割以上ってどういうことなのさ! 初心者はまず入門書から始めることをオススメする Webのドキュメントだけで済まそうとするのは、他の言語に精通している人だけにしとけ
731 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:30:16 ] 半分はテストじゃないのか?
732 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:32:38 ] そんな時間かかるか? っていうか、テストやらデバッグってプログラミング作成時間とは別にとって考えるもんなんじゃね?
733 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:36:59 ] Rubyのドキュメントががっかり品質なのはどう言い訳しても事実
734 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:44:52 ] どこに言い訳が?
735 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:47:03 ] 思春期後期の症例の一つです<言い訳してる人を見出したい
736 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:52:26 ] じゃあ>>733 は見えない人を相手してるだけか、失礼
737 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:55:50 ] >>732 「テスト駆動開発(TDD)」「振る舞い駆動開発(BDD)」「継続的インテグレーション」あたりでぐぐれ。
738 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 00:57:16 ] >>725 ドキュメントはchm版を見るのがおすすめ ちゃんとキーワードでインデックスされてるのでメソッドを調べたりするのが早い
739 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 01:57:46 ] >>737 それだってカウントしないと思うぞ
740 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 06:56:49 ] 慣れないうちはchm版リファレンスマジおすすめ つーかRubyリファレンスががっかり品質だって言われるけど 他の言語のドキュメントってそんなに充実してたっけか? >>739 テストコード→アプリコード→テストコード→アプリコード→… の手順で進めるなら 両方ともプログラミング時間に含めるべきだろう
741 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 07:30:00 ] Ruby ドキュメントといえば Dave Thomas と Andy Hunt の Programming Ruby の Web 版が 見れたときは感動した。 日本語訳が出たときは、お布施のつもりで買った。
742 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 09:00:21 ] >>721 最近、php使い始めたんでphpの質問スレもいってるんだけど、 何故かみんな少しカリカリしているイメージw ただ、やぱphpはリファレンスマニュアルがしっかりしている(特に公式がすばらしい) のがいいわ。 マニュアルにコメントがつけられるらしくて(細かいところは知らん) FAQが補足されてることも多々ある >>740 chm使ってるけど、がっかり品質ということはないな・・・ サンプルコード的なのをものとか、メソッドに関するFAQとかをもっと載せて欲しいと思うことはあるが Rubyに慣れるまでは使いにくかったけど、慣れてからはそこそこ使えると思った。 まあ、リファレンスだしね
743 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 12:09:14 ] 見て、使い方を理解するのに時間がかかる感じだな。 書いてるほうは、こんなの一目見りゃ分かるだろ的ノリなんだろうけど、見てるほうはそうでもないギャップがある。 お腹いっぱいに成るほどにサンプル手繰れてもいいと思うけどね。 でもオブジェクト指向自体が、ある日突然閃くまでは意味不明の苦痛の日々だしなあ。 そういう意味で教典読んでも、修行の後、悟り開けないと付いて行けない感じ。 phpのほうは、思想的な物は無くてどうとでも使える節操無い所があるからな。結果的に出来りゃなんでもいいじゃんみたいな。 便利そうな機能も無節操に突っ込みまくってるし、実際便利ではある。rubyだと便利そうなライブラリを探して読み込む所から始まるし。
744 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 12:30:50 ] >でもオブジェクト指向自体が、ある日突然閃くまでは意味不明の苦痛の日々だしなあ。 はぁ?
745 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 17:22:24 ] >>744 閃く遥か前の段階で「自分は既に悟っている」と勘違いしてる馬鹿には 縁のない次元の話だから、無理に関わろうとしなくていいです。
746 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 18:02:39 ] うわぁ・・・
747 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 19:12:20 ] もうやめようぜ!おまいらの好きなアイドルはだれだ? 俺は長島海輝だぜ!
748 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 19:31:42 ] ここ↓にあるように、数字を日本語表記にするようなモジュールはありますでしょうか? そろそろ FizzBuzz に飽きた blog.livedoor.jp/nipotan/archives/50985988.html
749 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 19:42:31 ] >>748 特にないと思う たぶん、世界中で何十回も生産されてるコードだ どっかであってもいいのにね
750 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:29:35 ] >>746 俺もネットやりたての中二病真っ盛りの頃、 グウの音も出ないけどそれでも何か「相手に痛いところがある」風に装いたいとき、 よくそういうの書き込んだなー。
751 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:31:30 ] calコマンドのようにカレンダーを表示したいのですが、定石みたいなのってありますか?
752 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:49:58 ] 宿題スレに書き込んだのが残ってた calコマンドのように表示するように作ったのは確かなんだが、 ぶっちゃけ表示部で何やってんだかわからん #!/usr/bin/ruby require 'date' ### Usage: ./cal.rb [YYYY MM] ### ./cal.rb 2007 3 #=> Mar 2007 calender ### ./cal.rb 3 2007 #=> Mar 2007 calender ### ./cal.rb #=> this month's calender if ARGV.empty? then t = Date.today else argv = ARGV[0,2].map{|s| s.to_i} t = Date.new(argv.max{|a,b| a <=> b}, argv.min{|a,b| a <=> b}, 1) end (d_one, d_last) = Date.new(t.year, t.month, 1), Date.new(t.year, t.month, -1) cal = "#{Date::MONTHNAMES[d_one.month]} #{d_one.year}".center(3*7) << "\n" cal << Date::ABBR_DAYNAMES.inject(''){|days,name| days << name.chop.rjust(2) << ' '} << "\n" (d_one-d_one.wday).upto(d_last+6-d_last.wday) do |d| (cal << ' ';next) unless d.month == d_one.month cal << d.day.to_s.rjust(2) << ' ' << "\n"*(d.wday / 6) end puts cal
753 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:55:45 ] >>749 自分で作ってみて、宿題スレにでも行きます
754 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:55:53 ] >>752 ありがとうございます。 読んでみますね。