[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 22:42 / Filesize : 246 KB / Number-of Response : 911
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 24



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
ありがとうございます。
読んでみますね。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<246KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef