Ruby 初心者スレッド Part 30
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/08/08(土) 08:21:23★注意★ Ruby 1.9.1 は初心者には時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
(理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に未対応であるためです。)
なお 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 で勉強すれば将来スムーズに 1.9 系に移行できるでしょう。
関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・モジュール名やエラーメッセージでググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0519デフォルトの名無しさん
2009/08/31(月) 06:29:170520デフォルトの名無しさん
2009/08/31(月) 08:48:25ヒント:安定した候補者がいない
0521デフォルトの名無しさん
2009/08/31(月) 09:06:31WEBrickのcgiライブラリのことなんだけど。
0522デフォルトの名無しさん
2009/08/31(月) 09:14:120523デフォルトの名無しさん
2009/08/31(月) 09:19:35作るということとメンテナンスを引き受けるということとは全く違う
スレ違いだが
0524デフォルトの名無しさん
2009/08/31(月) 09:22:23>作るだけなら立候補は何人もいるしいくつも作品があるんだよ
いくつもあるとは知らなかった。
ぜひ紹介してくれ。
0525デフォルトの名無しさん
2009/08/31(月) 09:24:01バージョン0.3まで行かずに放置されるのばっかじゃん
0526デフォルトの名無しさん
2009/08/31(月) 09:43:34CGIで動かすと落ちるバグがあり、しかもなかなか修正リリースが出ないというオチ
0527デフォルトの名無しさん
2009/08/31(月) 09:48:250528デフォルトの名無しさん
2009/08/31(月) 10:01:210529デフォルトの名無しさん
2009/08/31(月) 10:11:30書きっぱで後は知らん、というような人はどの世界でもノーサンキューだ
0530デフォルトの名無しさん
2009/08/31(月) 12:13:020531デフォルトの名無しさん
2009/08/31(月) 12:16:14みんな忙しい。
みんな忙しい。
0533デフォルトの名無しさん
2009/08/31(月) 13:20:400534デフォルトの名無しさん
2009/08/31(月) 13:52:180535デフォルトの名無しさん
2009/08/31(月) 14:36:410536デフォルトの名無しさん
2009/08/31(月) 14:46:39CGI.rb ができましたー
新しいスクリプトが欲しいんじゃなくて、スクリプトを継続的にメンテナンスできる人材が欲しいのよ
新機能をガンガン盛り込む人材ってのはとりあえずはコア近辺には要らないんだ
0537デフォルトの名無しさん
2009/08/31(月) 15:00:060538デフォルトの名無しさん
2009/08/31(月) 15:13:23>新しいスクリプトが欲しいんじゃなくて、スクリプトを継続的にメンテナンスできる人材が欲しいのよ
それどうやって判断するの?人材がいたとして、そいつがおまえのいう条件を満たしているかどうかって、だれがどうやって判断するのさ?
だいたい、CGI.rbなんてtDiaryでもHikiでもつかってるんだろうが。それだけユーザ数が多いのに担当できるだけの人材がいない/いなかったのかよ?
ほんとうに人材が欲しいなら、公式にアナウンスしろよ。このライブラリのメンテな求めてます、条件はこうこうです、と公式サイトに載せればいいだろ。
ろくに求人活動もせずに人がいないだの条件はどうのこうの、言い訳がましいわ。
0539デフォルトの名無しさん
2009/08/31(月) 15:16:54他でやってね
0540デフォルトの名無しさん
2009/08/31(月) 15:28:35じゃあお前やれよ。
0541デフォルトの名無しさん
2009/08/31(月) 17:45:00>>514 c>128 -> c>=128
0542デフォルトの名無しさん
2009/08/31(月) 17:47:00oreoreCGIなら作ったけど
0543デフォルトの名無しさん
2009/08/31(月) 17:58:11あんまりよくないと思う
Rackの修正リリースが出て、標準添付になれば一番いい
0544デフォルトの名無しさん
2009/09/01(火) 17:55:47・・・やってくれるメソッドなかったっけ?
0545デフォルトの名無しさん
2009/09/01(火) 18:06:46Array#transposeのこと?
0546デフォルトの名無しさん
2009/09/01(火) 18:16:27p [[1,2],
[3,4],
[5,6]].transpose
# => [[1, 3, 5], [2, 4, 6]]
これが下のようになってくれたら期待通りなのです。
# => [[1, 3, 5], [1, 3, 6], [1, 4, 5], [1, 4, 6], [2, 3, 5], [2, 3, 6], [2, 4, 5], [2, 4, 6]]
0547デフォルトの名無しさん
2009/09/01(火) 18:27:24p data[0].product(*data[1..-1])
0548デフォルトの名無しさん
2009/09/01(火) 18:38:41小手先だけだと詰まるぞ
0549デフォルトの名無しさん
2009/09/01(火) 18:58:34そうかproductか!1.8.7から入ったんですね。それっぽいキーワードで
ググってもなかなか見つからなかった。どうもです。
0550デフォルトの名無しさん
2009/09/01(火) 19:11:53行列的操作関連はeach使ったほうがややこしくなりそうな気がする
転置行列は転置行列でしかないわけだし
0551デフォルトの名無しさん
2009/09/01(火) 19:40:28それにしてもdata.productって書けそうで書けないのかw
>>548
eachで実装した方法を提示するならともかく
初心者に書かせるレベルにならないと思うぞ
0552デフォルトの名無しさん
2009/09/02(水) 01:25:47>eachで実装した方法を提示するならともかく
>初心者に書かせるレベルにならないと思うぞ
+1
0553デフォルトの名無しさん
2009/09/02(水) 02:34:28raise if data.size < 2
data.inject([[]]) do |product, items|
product.inject([]) do |r, elem|
r += items.map {|i| elem + [i] }
end
end
end
0554488
2009/09/03(木) 05:40:09自分なりに色々調べた結果、Passenger/mod_railsを使っているため、
/manage/の.htaccessが、それによって上書きされているようです。
/public_html/フォルダはRuby railsで開発されており、
今回、/public_html/manage/にPHPで開発することになりました。
私は、Rubyを全く知らない&.htaccess初心者なので、このような事態に陥っています。
RailsAllowModRewrite On
を使えば、なおるようなのですが、
/manage/.htaccessでそのように設定しても、/manage/.htaccessに設定してあることが
有効になりません。
どなたか知っていたら教えて頂けないでしょうか。
よろしくお願いします。
0555デフォルトの名無しさん
2009/09/03(木) 06:29:57板違い
http://pc11.2ch.net/test/read.cgi/php/1241100447/
0556デフォルトの名無しさん
2009/09/03(木) 06:37:340557デフォルトの名無しさん
2009/09/03(木) 07:42:35おまえがRailsを分かってないだけだろ
0558デフォルトの名無しさん
2009/09/03(木) 11:00:02自己紹介乙
0559newbie
2009/09/03(木) 12:46:12count = Hash.new(0)
...カウントにkeyとvalueを設定する処理(省略
count.sort{|a,b|
a[1] <=> b[2]
}.each{|key,value|
print "#{key}: #{value}¥n"
}
とあったとして、「<=>」という演算子が左右のオブジェクトを比較して、
<は-1
=は0
>は1
と返してくるのはわかったのだが、どうやってソート処理されているの謎。
内部のsortメソッドでイテレータが並び替えのアルゴリズムで処理してるのでしょうか。
詳しい解説求む。
ちなみに今まで並び替えのアルゴリズムには目をつぶって生きてきたので、
何種類かあってそれぞれに特徴と効率があるというぐらいしか、あまりよくわかってない。
0560デフォルトの名無しさん
2009/09/03(木) 12:56:51「今持ってるものが挿入先と比べて大きいか小さいか同じか」を調べてるだけ
手に持ってるものが大きかったら“上”に置いて、小さかったら“下”に置いて、同じだったら“横”に置く
普通にリアルに手元で何かを大きさ順に手動で並べ替えるのと同じ処理をしている
実際はもちろん事前グループ分けとか処理順とかにテクニックがあって単純ではないが、
並べ替えの行為そのものに着目した場合、理屈自体は「大きいか小さいか同じか」と一緒
0561デフォルトの名無しさん
2009/09/03(木) 13:07:55人間に天秤を与えれば重さの大小になるし、ものさしを与えれば長さの大小になるようなもの
その判断基準を元に実際に並べ替えるのはsortメソッドの内部で行われる
sortメソッドは少量のデータを手軽にソートしたいような
ソート手段にこだわる必要のない場合に向いている(大抵は事足りる)
もし速度的に不足するような場合はアルゴリズムを選ぶ必要があるし
それを自分で実装するかライブラリを使う必要がある
0563newbie
2009/09/03(木) 13:12:40なるほど、判断基準を渡しているってことか。
イテレータの章で判断基準を渡すってのが書いてあった。
「メソッドがどういう比較処理をおこなうかを渡して欲しい場合がある」と。
その処理がブロックで囲まれた a <=> b ってことか。
謎とけたー。気がする。
0564デフォルトの名無しさん
2009/09/03(木) 13:13:43sort{|a, b| a <=> b }
の
{|a, b| a <=> b } ってなんだよ! いきなり b とか出てくんじゃねえよ!
というとこですな
0565デフォルトの名無しさん
2009/09/03(木) 13:17:54"a:5, b:3"
"a:3, b:1"
"a:4, b:3"
"a:2, b:3"
"a:4, b:5"
"a:1, b:2"
[1, 2, 3, 4, 5]
0566デフォルトの名無しさん
2009/09/03(木) 13:45:19なんでもいいなら、-1,nil,1 でよかったんじゃないのか
0567デフォルトの名無しさん
2009/09/03(木) 13:46:07作っておいて、その関数(のポインタ)を引数として渡すような造りになっている。
Strategyパターンですかな。
0568デフォルトの名無しさん
2009/09/03(木) 13:50:31人間配列.sort{|a,b| a.身長 <=> b.身長}だとか、体重に変えてみるとか、逆順にソートしてみるとか。
0569デフォルトの名無しさん
2009/09/03(木) 14:18:53(a.身長 <=> b.身長).nonzero? or (a.体重 <=> b.体重)
0570デフォルトの名無しさん
2009/09/03(木) 14:43:53無効値は偽であってほしいけど、正常値を数値や文字列で返す関数などは
0や""も正常値として扱うケースが多い。なので、これらが偽だと、戻り値をそのままブール式につかえない
Perlなんかだと、0も""も偽だから、これらも正常値として返す関数の戻り値をチェックするときは、
die "エラ〜" unless defined get_string()
とかやって、""のケースを除外しなくちゃならない。|| とか && も有効活用できないし
0571デフォルトの名無しさん
2009/09/03(木) 14:51:51//演算子じゃダメなの?
0572デフォルトの名無しさん
2009/09/03(木) 14:57:24それって身長が不一致のときにtrueが返らない?
・・・返値はselfかnilなのか、よくできてるなぁ
0573デフォルトの名無しさん
2009/09/03(木) 15:00:240574デフォルトの名無しさん
2009/09/03(木) 15:07:10あぁ、そっか。骨髄反射してた。さーせん
0575デフォルトの名無しさん
2009/09/03(木) 15:18:53FOO
BAR
BAZ
みたいなマイ繰返子って作れんの?
0577デフォルトの名無しさん
2009/09/03(木) 15:46:43hoge.each do |x|
yield x.upcase
end
end
みたいな?(Arrayに組み込むのってどうやるんだっけ)
0578デフォルトの名無しさん
2009/09/03(木) 15:49:30def uppereach
self.each do |s|
yield s.upcase
end
end
end
0579デフォルトの名無しさん
2009/09/03(木) 15:50:03別に黒魔術でもなんでもない。
0580デフォルトの名無しさん
2009/09/03(木) 15:59:530581newbie
2009/09/03(木) 17:23:30今回の場合、yieldに与える処理ってことですよね?
yield自体、今日、たのしいRubyを読んで知ったばかりなので…。
わかってないといわれれば、わかってないはず。
間違ってますか?
0582デフォルトの名無しさん
2009/09/03(木) 17:44:22イテレータの場合は何だろ。「任せる」?
0583デフォルトの名無しさん
2009/09/03(木) 18:10:50yield (newbieさん.理解度)
てことか
0584デフォルトの名無しさん
2009/09/03(木) 18:15:220585デフォルトの名無しさん
2009/09/03(木) 18:29:16標準命令の説明あんま書いてないし
内容が詳しくない
0586デフォルトの名無しさん
2009/09/03(木) 19:38:520587デフォルトの名無しさん
2009/09/03(木) 19:50:100588デフォルトの名無しさん
2009/09/03(木) 19:55:19mesとかfontとかboxfとかくらい使えるようにしとけwwwwwwww
HSPの
0589デフォルトの名無しさん
2009/09/03(木) 20:01:00お勧め本以外をいきなり買っても自己責任でよろしこ
0590デフォルトの名無しさん
2009/09/03(木) 20:11:400591デフォルトの名無しさん
2009/09/03(木) 20:17:120592デフォルトの名無しさん
2009/09/03(木) 20:18:32知識さえあれば面白い本なんだけどね
0594デフォルトの名無しさん
2009/09/03(木) 23:28:59自分の努力しだいだよ。
基本的なアルゴリズムをすっぽかしてきたみたいだけど
一度自分で手を動かして実装しておくと後の理解が断然楽になる。
バブルソートとか簡単なものだけでもやっとくのがオススメ。
0595デフォルトの名無しさん
2009/09/04(金) 03:44:50コーディングなんてしてたら、全面的に見直して作り直したほうがいい。
0596デフォルトの名無しさん
2009/09/04(金) 04:28:47自力でのソートの実装は並び替えをさせるために書くんじゃねえよ
書けるだけの抽象化知識と基礎的な実装力があることが重要
自作のソートのコードを利用する奴は95%までバカだが、
ソートのコードを書けないのは100%ただのバカ
0597デフォルトの名無しさん
2009/09/04(金) 05:22:19nonezero?ってながいなあ。nz? くらいでよくない?
0598デフォルトの名無しさん
2009/09/04(金) 06:04:230599デフォルトの名無しさん
2009/09/04(金) 09:11:11大抵sort_byで済む
0600デフォルトの名無しさん
2009/09/04(金) 09:51:09本気でそう思うならredmineにfeature request
0601デフォルトの名無しさん
2009/09/04(金) 11:13:11sort{|o1,o2|
if o1.a != o2.a
o1.a <=> o2.a
else
o1.b <=> o2.b
end
}
みたいに使ってるな
0602デフォルトの名無しさん
2009/09/04(金) 11:35:190603デフォルトの名無しさん
2009/09/04(金) 11:38:500604デフォルトの名無しさん
2009/09/04(金) 11:42:040605デフォルトの名無しさん
2009/09/04(金) 11:42:06> 自作のソートのコードを利用する奴は95%までバカだが、
> ソートのコードを書けないのは100%ただのバカ
うむ
説明からソートをコードに起こせない人は時々いて、そういう人は例外なくアレ
ソートをコードにする練習はソートくらいでしかうまく鍛えられないから、
初心者のままでいいと思ってないのなら文句言わず今自分の手を動かしてやるべき
0607デフォルトの名無しさん
2009/09/04(金) 18:37:40> ソートの基準が2段階のとき
でも条件が単純ならば大抵sort_byですむ
ブロック付sortなんてsort_byが出来てから使ったこと無いなぁ
A=Struct.new(:a,:b)
a = [A.new(2,4),A.new(2,1),A.new(1,5),A.new(1,1)]
p a.sort_by{|o| [o.a,o.b] }
文字列中の数字を数としてソートするなんかだとどう書くんだろう?
a = %w(3a 20a 100a b9 b80 b700 a9b100 a10b100)
p a.sort_by{|e| e.scan(/\d+|\D+/).map{|e| e[/\d/] ? ['0',e.to_i] : [e]}}
こんなんでいいのかな?
0608デフォルトの名無しさん
2009/09/04(金) 18:39:120609デフォルトの名無しさん
2009/09/04(金) 19:07:19ユークリッドの互除法を理解しただけで夏が終わった俺よりマシだ
気にすること無いぞ
0610デフォルトの名無しさん
2009/09/04(金) 20:14:34具体的に不便なところ(使えないもの)を教えてもらえないだろうか?
あと、このサイト(http://www.rubylife.jp/ini/)にある、
『オプション指定をプログラム内に記述』というソース内で文字コードを指定する方法が実行できないのだが、
1.9.1では使えないということなのだろう?
誰か頼む。
0611デフォルトの名無しさん
2009/09/04(金) 20:21:330612デフォルトの名無しさん
2009/09/04(金) 21:36:470613デフォルトの名無しさん
2009/09/04(金) 21:38:56> あと、このサイト(http://www.rubylife.jp/ini/)にある、
> 『オプション指定をプログラム内に記述』というソース内で文字コードを指定する方法が実行できないのだが、
> 1.9.1では使えないということなのだろう?
使えるよ。具体的にどう書いてどうなった?
0614デフォルトの名無しさん
2009/09/04(金) 22:07:070615デフォルトの名無しさん
2009/09/04(金) 22:12:13すげ〜。ありがとう。
いい加減CGIも勉強した方がいいのかな。
あとまだ10年くらいは通用する技術なんだろうか。
0616デフォルトの名無しさん
2009/09/04(金) 22:16:09make testしたらエラー出るんだけど。
not ok float 1 -- ./sample/test.rb:1172
not ok float 2 -- ./sample/test.rb:1173
not ok float 3 -- ./sample/test.rb:1174
って感じでエラー。
0617デフォルトの名無しさん
2009/09/04(金) 22:21:21CGIもできないヤツがHTTPでなにかできるとは思えないから
通用云々よりまずできるようにしとけ
0618デフォルトの名無しさん
2009/09/04(金) 23:37:02■ このスレッドは過去ログ倉庫に格納されています