Ruby 初心者スレッド Part 30

このエントリーをはてなブックマークに追加
488名無しさん@そうだ選挙に行こう
初めまして。

質問です。

今やってるプロジェクトが、以前、rubyのMVCフレームワークによって書かれました。
その開発した方が、/public_html/.htaccessで何らかの設定をしました。
今回、/public_html/manage/配下にphpのMVCフレームワークを使用して開発することに
なったのですが、/manage/.htaccessで設定しても親ディレクトリの.htaccessの影響を受けて
/manage/配下のファイルにアクセスしても、404になってしまいます。
/public_html/.htaccessの内容も分からず、なるだけ触りたくないのですが、
サブディレクトリの.htaccessで、親ディレクトリの.htaccessの影響を全く受けないようにすることは可能でしょうか。

お忙しいところ、すみません。
よろしくお願いします。
489名無しさん@そうだ選挙に行こう:2009/08/30(日) 08:28:56
Ruby 関係ねえ
.htaccess の書式勉強しろ
490名無しさん@そうだ選挙に行こう:2009/08/30(日) 08:36:08
Ruby関係ないからスレチ

> .htaccessの内容も分からず、なるだけ触りたくないのですが、

それを晒さないと。というより、せめて自分で読んでみないと。
491488:2009/08/30(日) 10:00:38
ご返信ありがとうございます。
サーバーを見てみたのですが、
/public_html/には、.htaccessがありませんでした。
ただ、404の設定がしてあるので、どこかでそのような設定がなされているものと思います。
/public_html/配下には、rubyのRailsで開発してあるようです。

/public_html/manage/には、今回のPHP開発に必要なcakephpのMVCフレームワークが設定してあります。
その.htaccessは、
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
となっています。
例えば、http://domain.com/manage/css/layout.cssにアクセスした場合は
/public_html/manage/app/webroot/css/layout.cssのファイルが読み込まれる設定にしてあります。
外のサーバー(public_htmlにrubyで設計したファイルが置いてないもの)で試したらちゃんと読み込まれていたので、/public_html/manage/配下は正しく設定してあるはずです。
しかし、http://domain.com/manage/css/layout.cssにアクセスすると、404が返ってきます。

/public_html/には、rubyのMVCフレームワークで設計されたファイルがたくさんあり、
私はrubyを知らないので、何かしらの設定がなっているはずなのですが、どこでどうなっているのか分かりません。

たぶん、http://domain.com/manage/css/layout.cssにアクセスしても
cakephpのシステムは読み込まれず、元々のRuby Railsのシステムで処理されていると思います。
本来、http://domain.com/manage/ooo/xxx/ にアクセスすると処理されるのですが、
これも404に行きます。
でも、http://domain.com/manage/index.php/ooo/xxx/ とアクセスすると処理されます。

もし何かご存知でしたら、教えて頂けないでしょうか。
よろしくお願い致します。
492名無しさん@そうだ選挙に行こう:2009/08/30(日) 11:01:02
可能
493名無しさん@そうだ選挙に行こう:2009/08/30(日) 11:05:08
/public_html/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule manage\/$ manage/app/webroot/ [L]
RewriteRule manage\/(.*) manage/app/webroot/$1 [L]
</IfModule>
494名無しさん@そうだ選挙に行こう:2009/08/30(日) 11:12:58
てか Ruby 全く関係ねーということがわかってなお居座るのってなんなの頭悪いの
495名無しさん@そうだ選挙に行こう:2009/08/30(日) 12:43:36
>>494
自分で正しいことをしていると思っているイタイタイプ
周りでは陰で嫌われているのに気づかないタイプ
496名無しさん@そうだ選挙に行こう:2009/08/30(日) 12:45:40
自分の目的が果たされれば何をしても構わないと思ってるタイプ
497sage:2009/08/30(日) 12:54:11
>>485です。

ActiveRecordで、ひとつのモデルで
複数のデータベースに接続するという
使い方ができるか、あきらめきれずにさらにググったところ、
magic_multi_connectionsというgemが見つかりました。

Magic-MultiConnections:
http://magicmodels.rubyforge.org/magic_multi_connections/

とはいえ、ActiveRecordが当初想定している使い方
ではないということがはっきりしました。

他にちょうどいいO/Rマッパってないですか?
498名無しさん@そうだ選挙に行こう:2009/08/30(日) 12:59:58
ソウダネ、IDナイカラ、ダレガダレダカサッパリワカラナイネ。
499名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:02:53
>>497
自作のORe真っ裸ならあるけど
500名無しさん@そうだ選挙に行こう:2009/08/30(日) 15:59:01
>>491
すげーなー。
そのhtaccessファイルの中身の何がおかしいのかもわからない・調べられないのに、
Webアプリケーションを開発しようなんて。

恐ろしくて使いたくないぜ。
501名無しさん@そうだ選挙に行こう:2009/08/30(日) 16:29:07
>>497
テーブルの差異を調べるプログラム位、数十分で書けるだろ
二度と使わないかもしれないORMの調査に無駄な時間を費すの?

dbs = [file1,file2].map {|fn| SQLite3::Database.new(fn) }
dbs[0].tables.each do |table| # tablesなんてメソッドがあるとして
 results = dbs.map {|db| db.execute("select * from #{table}") }
 # results を比較
 :
end
502名無しさん@そうだ選挙に行こう:2009/08/30(日) 16:37:20
SQLを書きたくないんじゃなくて
書けないの間違いだろうな。。
503名無しさん@そうだ選挙に行こう:2009/08/30(日) 16:42:22
クエリに文字列埋め込みステキです
504名無しさん@そうだ選挙に行こう:2009/08/30(日) 16:43:44
何を言ってるの
ユーザーがSQLを直接発行するだなんて悪手中の悪手じゃないか

適当にうまくやるよボタンを押すだけで内部でSQLが組み立てられて
結果のデータのみがユーザーに返ってくるというのが正しいありかただろう
505名無しさん@そうだ選挙に行こう:2009/08/30(日) 16:48:36
>>504
そうなんだよねえ
結局SQLを書かせなければならないことになって深く絶望したわ
なんとかならんもんかね
506名無しさん@そうだ選挙に行こう:2009/08/30(日) 16:52:28
> SQLite3::Database.new(file)で両方のデータベース開いて
> テーブル毎にレコードの比較した方が楽な気がする

答えでてるじゃん。
終了
507名無しさん@そうだ選挙に行こう:2009/08/30(日) 17:05:53
Ruby使うまでもなくdumpしてdiffとればいいんじゃない。
508デフォルトの名無しさん:2009/08/30(日) 21:07:16
なんだろう。
>>501を信じてそのままドンってやって、ガツンと応答不能になり得たりしそうなこの不安感。

初心者スレでこれはありなんだろうか。
>>501の論旨からいうならもうちょっと、丁寧に逐次的に例を出す文脈ではなかろうか。
509501:2009/08/30(日) 21:41:49
>>508
俺に遠慮する必要は無い、君が教えてあげてくれ
510sage:2009/08/30(日) 22:44:10
>>485です。

ActiveRecordではなくてSequelというのが
良さそうというのがわかりました。

Sequel:
http://sequel.rubyforge.org/

こんな感じで書けます。

DBLeft = Sequel.sqlite("./left.sqlite")
left_table_foo = DBLeft[:table_foo]

DBRight = Sequel.sqlite("./right.sqlite")
right_table_foo = DBRight[:table_foo]

left_table_foo.each do |left_rec|
# right_tableのレコードと比較する
end

なんかしつこく質問してしまったみたいですみません。
でも回答してくれて助かりました。では。
511デフォルトの名無しさん:2009/08/31(月) 01:39:52
WinXPで1.8.6です。
文字列を16進ダンプしたものの中に、2バイト文字が含まれているか
どうかを判定するにはどうしたら良いでしょうか?

変換コードは下記の通りです。
arr0 = dataStr.unpack("H*")[0].scan(/[0-9a-f]{2}/)
arr1= arr0.to_s + "\n"

対象のdataStrが Rec の場合 arr1 が 52,65,63 になりますが、
Rク では 52,83,4e です。この場合、真ん中の16進数の83を元に
判定するのでしょうか?
512デフォルトの名無しさん:2009/08/31(月) 01:47:10
>>511
文字コード決めないと「2バイト文字」を定義できなくないか?
513デフォルトの名無しさん:2009/08/31(月) 02:29:10
>>512
ク で 83,4e です
514デフォルトの名無しさん:2009/08/31(月) 02:36:12
zenkaku=false
arr0.each do |c|
 if c>128 do
  zenkaku=true
 end
end
515デフォルトの名無しさん:2009/08/31(月) 03:04:38
>>511
NKF.guess
516デフォルトの名無しさん:2009/08/31(月) 03:32:36
globってなんであんな低機能なまま放置されてんの?
517デフォルトの名無しさん:2009/08/31(月) 05:32:46
cgiてなんであんな低能なまま放置されてんの?
518デフォルトの名無しさん:2009/08/31(月) 06:20:02
cgiは酷いね。参考にも成らない。
いい加減、政権交代の様に入れ替えるべき。
519デフォルトの名無しさん:2009/08/31(月) 06:29:17
cgiに関しては、政権交代!ばかりいってるだけだし民主党よりヒドイw
520デフォルトの名無しさん:2009/08/31(月) 08:48:25
>>518
ヒント:安定した候補者がいない
521デフォルトの名無しさん:2009/08/31(月) 09:06:31
候補者はいるだろ。その候補者を使えるレベルまでもっていくやつがだれもいないだけで。
WEBrickのcgiライブラリのことなんだけど。
522デフォルトの名無しさん:2009/08/31(月) 09:14:12
WEBrick::Sessionがないのはある意味象徴的
523デフォルトの名無しさん:2009/08/31(月) 09:19:35
これは何度でも言うが、作るだけなら立候補は何人もいるしいくつも作品があるんだよ
作るということとメンテナンスを引き受けるということとは全く違う

スレ違いだが
524デフォルトの名無しさん:2009/08/31(月) 09:22:23
>>523
>作るだけなら立候補は何人もいるしいくつも作品があるんだよ

いくつもあるとは知らなかった。
ぜひ紹介してくれ。
525デフォルトの名無しさん:2009/08/31(月) 09:24:01
ネット関連のライブラリは魔界だ
バージョン0.3まで行かずに放置されるのばっかじゃん
526デフォルトの名無しさん:2009/08/31(月) 09:43:34
Rackがバージョン1.0になって有力候補か? と思いきや
CGIで動かすと落ちるバグがあり、しかもなかなか修正リリースが出ないというオチ
527デフォルトの名無しさん:2009/08/31(月) 09:48:25
そんなに悪いところがわかってるなら自分で作ればいいじゃん
528デフォルトの名無しさん:2009/08/31(月) 10:01:21
みんな忙しい。
529デフォルトの名無しさん:2009/08/31(月) 10:11:30
出したコードにはコミュニティ上の責任もたんといかんのでな
書きっぱで後は知らん、というような人はどの世界でもノーサンキューだ
530デフォルトの名無しさん:2009/08/31(月) 12:13:02
口だけじゃないかw
531デフォルトの名無しさん:2009/08/31(月) 12:16:14
みんな忙しい。
みんな忙しい。




みんな忙しい。
532511:2009/08/31(月) 13:04:08
>>512-515
有難うございます。
514さんの方法を採用しました。
533デフォルトの名無しさん:2009/08/31(月) 13:20:40
Perl や Python の CGI ライブラリを移植するのはどうだろうね
534デフォルトの名無しさん:2009/08/31(月) 13:52:18
それは新しい実に新しい
535デフォルトの名無しさん:2009/08/31(月) 14:36:41
じゃあわかりやすいところで Perl の CGI.pm から始めようぜ
536デフォルトの名無しさん:2009/08/31(月) 14:46:39
(ぐるぐるぐる)
CGI.rb ができましたー

新しいスクリプトが欲しいんじゃなくて、スクリプトを継続的にメンテナンスできる人材が欲しいのよ
新機能をガンガン盛り込む人材ってのはとりあえずはコア近辺には要らないんだ
537デフォルトの名無しさん:2009/08/31(月) 15:00:06
だれだよお前
538デフォルトの名無しさん:2009/08/31(月) 15:13:23
>>536
>新しいスクリプトが欲しいんじゃなくて、スクリプトを継続的にメンテナンスできる人材が欲しいのよ

それどうやって判断するの?人材がいたとして、そいつがおまえのいう条件を満たしているかどうかって、だれがどうやって判断するのさ?
だいたい、CGI.rbなんてtDiaryでもHikiでもつかってるんだろうが。それだけユーザ数が多いのに担当できるだけの人材がいない/いなかったのかよ?
ほんとうに人材が欲しいなら、公式にアナウンスしろよ。このライブラリのメンテな求めてます、条件はこうこうです、と公式サイトに載せればいいだろ。
ろくに求人活動もせずに人がいないだの条件はどうのこうの、言い訳がましいわ。
539デフォルトの名無しさん:2009/08/31(月) 15:16:54
スレ違いの内容で長文とか勘弁
他でやってね
540デフォルトの名無しさん:2009/08/31(月) 15:28:35
>>538
じゃあお前やれよ。
541デフォルトの名無しさん:2009/08/31(月) 17:45:00
>>511

>>514 c>128 -> c>=128
542デフォルトの名無しさん:2009/08/31(月) 17:47:00
CGI.rbの上位互換wrapperがあればいいんだよね
oreoreCGIなら作ったけど
543デフォルトの名無しさん:2009/08/31(月) 17:58:11
>>542
あんまりよくないと思う
Rackの修正リリースが出て、標準添付になれば一番いい
544デフォルトの名無しさん:2009/09/01(火) 17:55:47
配列A1, A2, A3, ... Anから要素を1個ずつ取り出した結果を網羅した配列Xを作る。
・・・やってくれるメソッドなかったっけ?
545デフォルトの名無しさん:2009/09/01(火) 18:06:46
>>544
Array#transposeのこと?
546デフォルトの名無しさん:2009/09/01(火) 18:16:27
ありがとう、調べてみました。近いけど、違う。

p [[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]]
547デフォルトの名無しさん:2009/09/01(火) 18:27:24
data = [[1,2],[3,4],[5,6]]
p data[0].product(*data[1..-1])
548デフォルトの名無しさん:2009/09/01(火) 18:38:41
てゆーか初心者はきちんとeach使え
小手先だけだと詰まるぞ
549デフォルトの名無しさん:2009/09/01(火) 18:58:34
>>548
そうかproductか!1.8.7から入ったんですね。それっぽいキーワードで
ググってもなかなか見つからなかった。どうもです。
550デフォルトの名無しさん:2009/09/01(火) 19:11:53
>>548
行列的操作関連はeach使ったほうがややこしくなりそうな気がする
転置行列は転置行列でしかないわけだし
551デフォルトの名無しさん:2009/09/01(火) 19:40:28
すまん網羅って見落としてた
それにしてもdata.productって書けそうで書けないのかw

>>548
eachで実装した方法を提示するならともかく
初心者に書かせるレベルにならないと思うぞ
552デフォルトの名無しさん:2009/09/02(水) 01:25:47
>>551
>eachで実装した方法を提示するならともかく
>初心者に書かせるレベルにならないと思うぞ
+1
553デフォルトの名無しさん:2009/09/02(水) 02:34:28
def cartesian_product(*data)
    raise if data.size < 2
    data.inject([[]]) do |product, items|
        product.inject([]) do |r, elem|
            r += items.map {|i| elem + [i] }
        end
    end
end
554488: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に設定してあることが
有効になりません。

どなたか知っていたら教えて頂けないでしょうか。
よろしくお願いします。
555デフォルトの名無しさん:2009/09/03(木) 06:29:57
556デフォルトの名無しさん:2009/09/03(木) 06:37:34
日本語もまともに掛けないのばかか
557デフォルトの名無しさん:2009/09/03(木) 07:42:35
弁護するわけじゃないが普通に分かる
おまえがRailsを分かってないだけだろ
558デフォルトの名無しさん:2009/09/03(木) 11:00:02
>>556
自己紹介乙
559newbie:2009/09/03(木) 12:46:12
たのしいRubyを読み終わったんだが、謎が一つあります。

count = Hash.new(0)
...カウントにkeyとvalueを設定する処理(省略

count.sort{|a,b|
a[1] <=> b[2]
}.each{|key,value|
print "#{key}: #{value}¥n"
}

とあったとして、「<=>」という演算子が左右のオブジェクトを比較して、
<は-1
=は0
>は1
と返してくるのはわかったのだが、どうやってソート処理されているの謎。

内部のsortメソッドでイテレータが並び替えのアルゴリズムで処理してるのでしょうか。
詳しい解説求む。

ちなみに今まで並び替えのアルゴリズムには目をつぶって生きてきたので、
何種類かあってそれぞれに特徴と効率があるというぐらいしか、あまりよくわかってない。
560デフォルトの名無しさん:2009/09/03(木) 12:56:51
-1と0と+1というそれそのものには深い意味はないよ

「今持ってるものが挿入先と比べて大きいか小さいか同じか」を調べてるだけ
手に持ってるものが大きかったら“上”に置いて、小さかったら“下”に置いて、同じだったら“横”に置く

普通にリアルに手元で何かを大きさ順に手動で並べ替えるのと同じ処理をしている
実際はもちろん事前グループ分けとか処理順とかにテクニックがあって単純ではないが、
並べ替えの行為そのものに着目した場合、理屈自体は「大きいか小さいか同じか」と一緒
561デフォルトの名無しさん:2009/09/03(木) 13:07:55
sortメソッドに与えるブロックは「大小の判断基準」
人間に天秤を与えれば重さの大小になるし、ものさしを与えれば長さの大小になるようなもの

その判断基準を元に実際に並べ替えるのはsortメソッドの内部で行われる

sortメソッドは少量のデータを手軽にソートしたいような
ソート手段にこだわる必要のない場合に向いている(大抵は事足りる)

もし速度的に不足するような場合はアルゴリズムを選ぶ必要があるし
それを自分で実装するかライブラリを使う必要がある
562newbie:2009/09/03(木) 13:08:25
>>560
並べ替えのアルゴリズムに処理をわたす黒魔術ってことでいいですか?
563newbie:2009/09/03(木) 13:12:40
>>561
なるほど、判断基準を渡しているってことか。

イテレータの章で判断基準を渡すってのが書いてあった。
「メソッドがどういう比較処理をおこなうかを渡して欲しい場合がある」と。

その処理がブロックで囲まれた a <=> b ってことか。
謎とけたー。気がする。
564デフォルトの名無しさん:2009/09/03(木) 13:13:43
なるほど
sort{|a, b| a <=> b }


 {|a, b| a <=> b } ってなんだよ! いきなり b とか出てくんじゃねえよ!

というとこですな
565デフォルトの名無しさん:2009/09/03(木) 13:17:54
irb> p [5, 4, 3, 2, 1].sort{|a, b| p "a:#{a}, b:#{b}"; a<=>b}
"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]
566デフォルトの名無しさん:2009/09/03(木) 13:45:19
0が偽じゃない言語だから、perlみたいに、比較 or 比較 or 比較 みたいに書けなくて嫌だね
なんでもいいなら、-1,nil,1 でよかったんじゃないのか
567デフォルトの名無しさん:2009/09/03(木) 13:46:07
Cの標準ライブラリにあるqsortも、「比較方法」だけを別関数で
作っておいて、その関数(のポインタ)を引数として渡すような造りになっている。

Strategyパターンですかな。
568デフォルトの名無しさん:2009/09/03(木) 13:50:31
判断基準を別に設けると、ひとつの枠組みを用意するだけで好きに扱えるからいいよね。
人間配列.sort{|a,b| a.身長 <=> b.身長}だとか、体重に変えてみるとか、逆順にソートしてみるとか。
569デフォルトの名無しさん:2009/09/03(木) 14:18:53
>>566
(a.身長 <=> b.身長).nonzero? or (a.体重 <=> b.体重)
570デフォルトの名無しさん:2009/09/03(木) 14:43:53
変数に型がない言語の場合、""や0が偽じゃないことで得られる恩恵の方が多い気がするな

無効値は偽であってほしいけど、正常値を数値や文字列で返す関数などは
0や""も正常値として扱うケースが多い。なので、これらが偽だと、戻り値をそのままブール式につかえない

Perlなんかだと、0も""も偽だから、これらも正常値として返す関数の戻り値をチェックするときは、
die "エラ〜" unless defined get_string()
とかやって、""のケースを除外しなくちゃならない。|| とか && も有効活用できないし
571デフォルトの名無しさん:2009/09/03(木) 14:51:51
>>570
//演算子じゃダメなの?
572デフォルトの名無しさん:2009/09/03(木) 14:57:24
>>569
それって身長が不一致のときにtrueが返らない?

・・・返値はselfかnilなのか、よくできてるなぁ
573デフォルトの名無しさん:2009/09/03(木) 15:00:24
0を偽にしろと言ってるのではなくて、0が返ってきてもうれしくないよねってことでしょ
574デフォルトの名無しさん:2009/09/03(木) 15:07:10
>>573
あぁ、そっか。骨髄反射してた。さーせん
575デフォルトの名無しさん:2009/09/03(木) 15:18:53
["foo", "Bar", "baZ"].uppereach{|i| puts i}

FOO
BAR
BAZ

みたいなマイ繰返子って作れんの?
576newbie:2009/09/03(木) 15:46:30
>>565
黒魔術解明!!ありがと。スッキリしたぁ。
577デフォルトの名無しさん:2009/09/03(木) 15:46:43
def uppereach
hoge.each do |x|
yield x.upcase
end
end
みたいな?(Arrayに組み込むのってどうやるんだっけ)
578デフォルトの名無しさん:2009/09/03(木) 15:49:30
class Array
def uppereach
self.each do |s|
yield s.upcase
end
end
end
579デフォルトの名無しさん:2009/09/03(木) 15:50:03
newbie氏はブロックがわかってないとみた。
別に黒魔術でもなんでもない。
580デフォルトの名無しさん:2009/09/03(木) 15:59:53
黒魔術というとevil-rubyみたいな。(よいこは検索しないように)

581newbie:2009/09/03(木) 17:23:30
>>579
今回の場合、yieldに与える処理ってことですよね?

yield自体、今日、たのしいRubyを読んで知ったばかりなので…。
わかってないといわれれば、わかってないはず。

間違ってますか?
582デフォルトの名無しさん:2009/09/03(木) 17:44:22
yieldって文脈次第でいろんな日本語になるんだな。
イテレータの場合は何だろ。「任せる」?
583デフォルトの名無しさん:2009/09/03(木) 18:10:50
つまり
yield (newbieさん.理解度)
てことか
584デフォルトの名無しさん:2009/09/03(木) 18:15:22
産むかと。
585デフォルトの名無しさん:2009/09/03(木) 18:29:16
14歳から始めるruby買ったが外した
標準命令の説明あんま書いてないし
内容が詳しくない
586デフォルトの名無しさん:2009/09/03(木) 19:38:52
「14歳からはじめるC」なら買ったんだけど
587デフォルトの名無しさん:2009/09/03(木) 19:50:10
標準命令って何?
588デフォルトの名無しさん:2009/09/03(木) 19:55:19
え、なにこいつ標準命令も知らんののかwwwwバカスwwwwww
mesとかfontとかboxfとかくらい使えるようにしとけwwwwwwww

HSPの
589デフォルトの名無しさん:2009/09/03(木) 20:01:00
まあ言いたいことはそれなりに伝わっては来る

お勧め本以外をいきなり買っても自己責任でよろしこ
590デフォルトの名無しさん:2009/09/03(木) 20:11:40
高っかい金出して最初のデカいRuby本を買った初心者の人に比べればどうということはない
591デフォルトの名無しさん:2009/09/03(木) 20:17:12
オライリーファン登場
592デフォルトの名無しさん:2009/09/03(木) 20:18:32
Rubyを始めようと思っただけのプログラミング初心者の人には荷が勝ちすぎた薀蓄本だったな

知識さえあれば面白い本なんだけどね
593newbie:2009/09/03(木) 23:11:34
>>583
どう処理されるのか自分が知りたい(w
594デフォルトの名無しさん:2009/09/03(木) 23:28:59
>>593
自分の努力しだいだよ。
基本的なアルゴリズムをすっぽかしてきたみたいだけど
一度自分で手を動かして実装しておくと後の理解が断然楽になる。
バブルソートとか簡単なものだけでもやっとくのがオススメ。
595デフォルトの名無しさん:2009/09/04(金) 03:44:50
いまどき、ソートのアルゴリズムを自分で書いてるような
コーディングなんてしてたら、全面的に見直して作り直したほうがいい。
596デフォルトの名無しさん:2009/09/04(金) 04:28:47
なんだ、まだそんなこと言ってる人がいるのか
自力でのソートの実装は並び替えをさせるために書くんじゃねえよ
書けるだけの抽象化知識と基礎的な実装力があることが重要

自作のソートのコードを利用する奴は95%までバカだが、
ソートのコードを書けないのは100%ただのバカ
597デフォルトの名無しさん:2009/09/04(金) 05:22:19
>>569
nonezero?ってながいなあ。nz? くらいでよくない?
598デフォルトの名無しさん:2009/09/04(金) 06:04:23
よくない
599デフォルトの名無しさん:2009/09/04(金) 09:11:11
ブロック付きのsortってほとんど使わんよな
大抵sort_byで済む
600デフォルトの名無しさん:2009/09/04(金) 09:51:09
>>597
本気でそう思うならredmineにfeature request
601デフォルトの名無しさん:2009/09/04(金) 11:13:11
ソートの基準が2段階のとき
sort{|o1,o2|
if o1.a != o2.a
o1.a <=> o2.a
else
o1.b <=> o2.b
end
}
みたいに使ってるな
602デフォルトの名無しさん:2009/09/04(金) 11:35:19
rubyの場合は、配列にして比較するんでしょ。効率の善し悪しは知らないが
603デフォルトの名無しさん:2009/09/04(金) 11:38:50
Enumerable#sort の場合は Ruby スクリプトに降りてこないから遅いわけではないよ
604デフォルトの名無しさん:2009/09/04(金) 11:42:04
俺もほとんど.sort_byだなあ
605デフォルトの名無しさん:2009/09/04(金) 11:42:06
>>596
> 自作のソートのコードを利用する奴は95%までバカだが、
> ソートのコードを書けないのは100%ただのバカ
うむ

説明からソートをコードに起こせない人は時々いて、そういう人は例外なくアレ
ソートをコードにする練習はソートくらいでしかうまく鍛えられないから、
初心者のままでいいと思ってないのなら文句言わず今自分の手を動かしてやるべき
606newbie:2009/09/04(金) 16:39:29
>>601
なるほど。配列引数便利だ!
607デフォルトの名無しさん:2009/09/04(金) 18:37:40
>>601
> ソートの基準が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]}}
こんなんでいいのかな?
608デフォルトの名無しさん:2009/09/04(金) 18:39:12
アルゴリズムの勉強していたら夏休み終わってたんだが。
609デフォルトの名無しさん:2009/09/04(金) 19:07:19
>>608
ユークリッドの互除法を理解しただけで夏が終わった俺よりマシだ
気にすること無いぞ
610デフォルトの名無しさん:2009/09/04(金) 20:14:34
Ruby 1 初めてのプログラミング(arton/宇野るいも 著)を買ったらRuby1.9.1が付いて来たんだが。
具体的に不便なところ(使えないもの)を教えてもらえないだろうか?
あと、このサイト(http://www.rubylife.jp/ini/)にある、
『オプション指定をプログラム内に記述』というソース内で文字コードを指定する方法が実行できないのだが、
1.9.1では使えないということなのだろう?
誰か頼む。
611デフォルトの名無しさん:2009/09/04(金) 20:21:33
英文テキストを送って翻訳サイトで日本語化してstdoutに文字列表示するサンプルどっかにない
612デフォルトの名無しさん:2009/09/04(金) 21:36:47
613デフォルトの名無しさん:2009/09/04(金) 21:38:56
>>610
> あと、このサイト(http://www.rubylife.jp/ini/)にある、
> 『オプション指定をプログラム内に記述』というソース内で文字コードを指定する方法が実行できないのだが、
> 1.9.1では使えないということなのだろう?
使えるよ。具体的にどう書いてどうなった?
614デフォルトの名無しさん:2009/09/04(金) 22:07:07
使えないだろ。嘘言うな
615デフォルトの名無しさん:2009/09/04(金) 22:12:13
>>612
すげ〜。ありがとう。

いい加減CGIも勉強した方がいいのかな。
あとまだ10年くらいは通用する技術なんだろうか。
616デフォルトの名無しさん:2009/09/04(金) 22:16:09
誰かruby-1.8.6-p383をgcc4.4.0のmingwでビルドしてない?
make 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

って感じでエラー。
617デフォルトの名無しさん:2009/09/04(金) 22:21:21
>>615
CGIもできないヤツがHTTPでなにかできるとは思えないから
通用云々よりまずできるようにしとけ
618デフォルトの名無しさん:2009/09/04(金) 23:37:02
PerlのURI::Fetchに相当するような、CacheつきWebクライアントはないでしょうか?
619デフォルトの名無しさん:2009/09/04(金) 23:58:40
vim-rubyをインストールしたのですが、vim-ruby-install.rbのセットアップが上手くいきません。

$ gem install vim-ruby
>WARNING: Installing to ~/.gem since /usr/lib/ruby/gems/1.8 and /usr/bin aren't both writable.
>WARNIG: You don't have /home/****/.gem/ruby/1.8/bin in your PATH,
> gem executables will not run.
>Successfully installed vim-ruby-2007.05.07
>1 gem installed

$ sudo vim-ruby-install.rb
>Can't find source directory.

上のように出力されてvim-rubyのセットアップができません。
気になるのが、/usr/bin/vim-ruby-install.rbファイルは存在するのに/usr/lib/ruby/gems/1.8/gemsディレクトリにvim-rubyが無いのです。(gemからインストールした他のgemパッケージは全てここにある)
しかしgem listコマンドを叩くと他のgemパッケージとともにvim-rubyが出力される。
何か分かる方がいましたら教えてください。よろしくお願いします。
620デフォルトの名無しさん:2009/09/05(土) 00:11:12
>>615 >>617
ajax で javascript が開発の中心になっても CGI は細々と生き残るだろう
ただし HTML は javascript の単なる loader になり
CGI はバックエンドとしての RDB - XML translator になり下がる
621デフォルトの名無しさん:2009/09/05(土) 00:14:18
>>615
CGIっつーよりwebAPIだよ
622デフォルトの名無しさん:2009/09/05(土) 00:14:33
ぽかーん。
623デフォルトの名無しさん:2009/09/05(土) 00:27:34
>>620-621
わかってないならレスしなくていいよ・・・
624デフォルトの名無しさん:2009/09/05(土) 01:09:33
pythonのようにコンソール上でコマンド1つ1つ実行させて
動作を確認させることはできないのですか?
625デフォルトの名無しさん:2009/09/05(土) 01:12:26
つirb
626デフォルトの名無しさん:2009/09/05(土) 04:24:09
RubyでCGI(笑)
627デフォルトの名無しさん:2009/09/05(土) 05:26:51
>>619
眠いから論理的に読んでないが、
gem は sudo したとき(/usr に書き込み権限があるとき)と
一般ユーザーで使用したとき(/usr に書き込み権限がないとき)とで使用するディレクトリが違う
完全自動で /usr/bin にインストールして欲しいなら最初から sudo gem install しろ
gem install すると gem は $HOME/.gem/ruby/1.8 とかに入る

昔は全員が sudo しまくってたんだが、最近は sudo しないインストール方法が市民権を得ている
いまだに Rakefile で sudo ベタ書きしてるライブラリがあるがとっとと死んでくれてよい
628デフォルトの名無しさん:2009/09/05(土) 06:16:17
>>619
何が起きたのか書いてあるじゃん
629デフォルトの名無しさん:2009/09/05(土) 06:17:49
へ?なんで?意味がわからない。
630610:2009/09/05(土) 06:37:13
>>613
そのサイトの該当部分は、正確には『Ruby入門 >日本語と文字コード >オプション指定をプログラム内に記述』だった。
すまん、言葉が足りんかった。
プログラムだが、これ↓を実行すると、
#! ruby -Ku
print("KCODE=", $KCODE);
こう↓なる。
test.rb:2: warning: variable $KCODE is no longer effective
KCODE=
631デフォルトの名無しさん:2009/09/05(土) 06:55:01
いやそれはメッセージがそのまんまだが

っていうかこれの経緯の解説が無いならその本投げ捨てろ
$KCODE が動作するのは 1.8 までで、1.9 からは別な方法で指定する
632デフォルトの名無しさん:2009/09/05(土) 07:06:23
633デフォルトの名無しさん:2009/09/05(土) 07:18:33
こういう場合大抵その本に罪はないw
634610:2009/09/05(土) 08:48:43
>>631-632
答えてくれてありがとう。
632のリンク先は自分が勉強不足なせいで何言ってるか半分も理解できなかったがw
本にはマジックコメントを使うと書いてあったんだが、ネットで調べてみたら別の事が書いてあったんで混乱したんだ。

やっぱり別の本買えばよかった(´;ω;`)
635デフォルトの名無しさん:2009/09/05(土) 09:29:21
>>632はまだ理解できなくても問題ない
これは Ruby1.8 をある程度修めてて
なおかつエンコーディングの日常的知識があることを前提としている一次文書だ

Ruby 1.9.1 で初めてプログラミング言語に触れる人だとか
文字エンコーディングってナンデスカという人だとか
そういう人向けの文書ではない

そういう人向けの解説はこれをもとに出てくる…はずなんだが、ばあさんやまだかいのう
636デフォルトの名無しさん:2009/09/05(土) 09:29:45
637デフォルトの名無しさん:2009/09/05(土) 11:19:17
>>615
CGIというか、HTMLを使った基本的なWebアプリが作れるようになれば便利
あと10年ぐらいは、HTMLやHTTPが無くなることはないだろう
638デフォルトの名無しさん:2009/09/05(土) 11:29:25
今さすがにCGIはなあ、とか思うんだけど、
で、まあwebアプリを初心者に勧めるとして何するのが(どんなライブラリ使うのが)いいんだろ。

Railsはでかいは、デプロイ面倒だわ、慣れるとすごくいいいんだけど、初心者がいきなりやるには…。

Sinatra辺りだろうか?
639デフォルトの名無しさん:2009/09/05(土) 11:46:14
CGIが書けずにフレームワーク扱いだす新人PGって、
交通ルール知らずに車運転するようなもんじゃないだろうか
640デフォルトの名無しさん:2009/09/05(土) 11:50:33
どこぞのフレームワークと違って
やって無駄になるような技術ではまったくないね
641デフォルトの名無しさん:2009/09/05(土) 11:50:51
比喩は嫌いだ
642デフォルトの名無しさん:2009/09/05(土) 11:56:56
webアプリ初心者が序盤に作ったモノはひどいデキになって当たり前なんだから
まずはライブラリなしの生CGIでいいんだよ
薄っぺらい仕様だからとっかかりにはちょうどいい

セキュリティはこの際忘れろ、ローカルでやるかbasic認証でもかけて隠しとけ
セキュリティやらフレームワークやらはCGIの基礎がわかってから考えろ
643デフォルトの名無しさん:2009/09/05(土) 12:11:04
KENTととほほを知ったことには感謝しなければならない
>>642で納得していただろうから
644デフォルトの名無しさん:2009/09/05(土) 12:26:40
「考えない」んだよな
そりゃそうだ、今の時点で「動作してる」のに、何を付け加える理由があろう

むしろ、安全じゃない文字の基本的テストが標準付属していて、
それを通さないとそもそも動作しないとかそういうフレームワークがあれば
645デフォルトの名無しさん:2009/09/05(土) 17:31:11
Railsの話題なのですが、rubyに共通する話なのでこちらで聞いてみます。
スクリプトのデバッグにruby-debugを使ってみているのですが、
b(break)コマンドでブレイクポイントを表示してくれず、現在行がブレイクポイントに追加されてしまいます。

ブレイクポイントを表示するにはどうしたらよいのでしょうか?

下記を見ると、breakでブレイクポイントの表示のはずなのですが・・・???
debug - Rubyリファレンスマニュアル
http://www.ruby-lang.org/ja/man/html/debug.html


ruby-debug 0.10.3
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
Ubuntu 9.04 (coLinux)
646645:2009/09/05(土) 17:54:55
どうも、ruby-debug 0.10でコマンドが変わっていたみたいです。

下記サイトが参考になり申した
Ruby On Rails ピチカート街道 - Rails 2.0・その10(ruby-debugコマンドマニュアルv.0.10.0 デバッグの方法が簡単に) -
http://rubist.blog77.fc2.com/blog-entry-114.html


具体的には、b(break)ではなく info breakpointsでブレイクポイントを表示できるみたいです。って面倒くさいくなっとるやん!!


とにかく解決しました。ありがとうごっざいました。
647610:2009/09/05(土) 18:40:01
>>636
これは……RoRをやれ、ということか?
いずれRoRをやろうと思ってたからありがたいのだが、これでRubyも勉強できる?
嗚呼、RoRはRuby1.8.7対応か。畜生、4000円パーだ。
648デフォルトの名無しさん:2009/09/05(土) 19:58:33
>>647
それは著者がarton氏+初心者にRoRを進めるというギャグ

まずは一冊目をじっくり勉強してみたらいいんじゃないか
それから1.8前提の既存サイトで勉強しても全く問題ないよ
649デフォルトの名無しさん:2009/09/05(土) 20:14:55
650デフォルトの名無しさん:2009/09/05(土) 22:24:07
>>610は「初めてのRuby」(オライリー)を買っておけ。
あれ一冊読んでおけば今回のようなつまらないことで迷うことはない。
651デフォルトの名無しさん:2009/09/05(土) 22:32:29
yugui本か。
公式の愛称はキリン本らしいけど……

他の言語の経験があれば、よい本。
652デフォルトの名無しさん:2009/09/05(土) 23:03:03
>>649
サンクス。
こっちでした。GCC4.4.0の最適化はダメってことかな。
http://redmine.ruby-lang.org/issues/show/1735
653619:2009/09/05(土) 23:10:49
>>627
ありがとうございます。
アドバイス頂いたとおりsudoコマンドでインストールしてみましたが、 それでも$HOME/.gem/ruby/1.8以下に入ってしまうようです。
sudoではなく、suコマンドでrootになってからgem install vim-rubyとすると、/usr/lib/ruby/gems/1.8/gems以下にvim-rubyディレクトリが作成されました。

一般ユーザーでgem installすると$HOME/.gem以下にパッケージが配置されるだけで、uninstallコマンドも効かず自力でディレクトリ削除するしか無いようですが、これが一般的な方法なのでしょうか?
654デフォルトの名無しさん:2009/09/06(日) 00:11:20
データ書き込み用にカレントディレクトリに temp.txt を作成する。すでに有るなら失敗する。
という処理をアトミックに書く方法を教えてください。
openじゃ無理ですか?

ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32]
655デフォルトの名無しさん:2009/09/06(日) 00:26:34
unix系ならこれで行けるけどWindowsはわからんなあ
open('temp.txt',File::EXCL|File::CREAT|File::RDWR)
656デフォルトの名無しさん:2009/09/06(日) 00:41:20

一発1行で書きたいなら>>655がそのまんまだが、これはちとわかりにくい
普通に長々と条件分岐させたほうが得策かもしれない
657デフォルトの名無しさん:2009/09/06(日) 00:46:31
……
658デフォルトの名無しさん:2009/09/06(日) 00:46:50
アトミックが要求される場面で長々とは書けないんじゃ?
659デフォルトの名無しさん:2009/09/06(日) 00:51:47
アトミックとかもう初心者スレの話題じゃないだろう
660デフォルトの名無しさん:2009/09/06(日) 00:53:04
わかりにくい以前に
File::EXCL|File::CREAT|File::RDWR
の意味を調べる術がないという
661デフォルトの名無しさん:2009/09/06(日) 01:05:03
>>654
ロック処理をきちんと書くべきだと思う
もしくは、ロック処理をやってくれるライブラリを探すか

適当でいい(とりあえず動けばいい)ならflockでOK
662デフォルトの名無しさん:2009/09/06(日) 01:14:49
>>660
ただの数字だぞ
663デフォルトの名無しさん:2009/09/06(日) 01:15:15
>>659
このスレで扱う「初心者」がRubyなのかプログラミングなのかだなw
664デフォルトの名無しさん:2009/09/06(日) 01:15:41
いや、やりたいことからしたら>>655しかないだろ
初心者スレだからって何をとんちんかんなことばかり
665デフォルトの名無しさん:2009/09/06(日) 06:51:57
↓ここでお手本になるような排他制御のサンプルを一つ
666デフォルトの名無しさん:2009/09/06(日) 08:04:06
シンプルに、追記でopenして読み込んでからの分岐だけではいかんのか?
目的がわからんのでなんとも言えんが。
667デフォルトの名無しさん:2009/09/06(日) 08:56:43
……
668デフォルトの名無しさん:2009/09/06(日) 09:05:35
>>664
ヒント:リファレンスにFile::EXCLの意味が載ってない
669デフォルトの名無しさん:2009/09/06(日) 09:06:54
RubyとPythonはどっちが強いですか?
670デフォルトの名無しさん:2009/09/06(日) 09:07:08
Rubyのドキュメンテーションのダメさは異常
671デフォルトの名無しさん:2009/09/06(日) 09:31:43
ハイレベルPythonユーザーのアプリケーション製作能力は異常
が、その下の層が薄い印象

Rubyはハイレベルユーザーの数が多くない代わり、中級ユーザー層が厚い感じ

Python自体は凄いんだが、高次に使いこなすための敷居があまりに高すぎる
672デフォルトの名無しさん:2009/09/06(日) 10:34:50
Pythonは具体的にどうすごいんだ?全く知らんのだが
673デフォルトの名無しさん:2009/09/06(日) 10:37:58
endを書かないことで最大1.5倍程度ソース密度が高まる
674デフォルトの名無しさん:2009/09/06(日) 10:47:24
それで敷居が高いのかw
675デフォルトの名無しさん:2009/09/06(日) 10:59:16
Pythonにはギッチリよりスカスカをよしとする哲学と78文字制があってだな
676デフォルトの名無しさん:2009/09/06(日) 10:59:49
CentOS release 5.3 (Final)
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux]

gem install hpricotで、hpricotをインストールしようとしているのですが、
ビルドエラーが出てインストール出来ません。
どのようにしたらインストールできるでしょうか。
よろしくお願いします。

Building native extensions. This could take a while...
ERROR: Error installing hpricot:
ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb
checking for main() in -lc... yes
creating Makefile

make
gcc -I. -I. -I/usr/local/lib/ruby/1.8/i686-linux -I. -D_FILE_OFFSET_BITS=64 -fPIC -g -O2 -c hpricot_css.c
hpricot_css.c: In function ‘hpricot_css’:
hpricot_css.c:3399: warning: comparison between pointer and integer
gcc -I. -I. -I/usr/local/lib/ruby/1.8/i686-linux -I. -D_FILE_OFFSET_BITS=64 -fPIC -g -O2 -c hpricot_scan.c

cc1: out of memory allocating 481668 bytes after a total of 13987840 bytes
make: *** [hpricot_scan.o] Error 1


Gem files will remain installed in /usr/local/lib/ruby/gems/1.8/gems/hpricot-0.8.1 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.8/gems/hpricot-0.8.1/ext/hpricot_scan/gem_make.out


677デフォルトの名無しさん:2009/09/06(日) 11:09:41
>>670
Perlのドキュメントのなさほどひどくはない
678デフォルトの名無しさん:2009/09/06(日) 11:14:59
>>677
なにいってんだか
679デフォルトの名無しさん:2009/09/06(日) 11:17:33
これわひどい

ウェブ
検索ツールを閉じる検索ツールを表示

excl ruby に一致する日本語のページ 約 1,180,000 件中 1 - 50 件目 (0.44 秒)

もしかして: excel ruby
検索結果

1.
Rubyist Magazine - Win32OLE 活用法 【第 2 回】 Excel
2.
Rubyist Magazine - RegionalRubyKaigi レポート (01) 東京 Ruby 会議 01
3.
Take it easy!: Ruby とエクセル
4.
はてなブックマーク - { B!} - excel - Ruby on Rails
5.
はてなブックマーク - kedmブクマ - excel - ruby
6.
RubyでExcel - Ruby/Rails・Web系プログラム情報まとめ
680デフォルトの名無しさん:2009/09/06(日) 11:24:08
ごめんなさい。再起動したらいけました。
681デフォルトの名無しさん:2009/09/06(日) 11:31:14
>>679
excl ruby -excel
682デフォルトの名無しさん:2009/09/06(日) 11:41:38
>>668
See man open(2) for more information.
683デフォルトの名無しさん:2009/09/06(日) 11:44:08
ここに書く暇あったらwiki直せよw
684デフォルトの名無しさん:2009/09/06(日) 11:47:55
rdocで定数の説明ってどこに書くんだっけ
685デフォルトの名無しさん:2009/09/06(日) 11:49:28
これでR**yを殲滅できるぞ!
ttp://d.hatena.ne.jp/wasisan/20090905
686デフォルトの名無しさん:2009/09/06(日) 12:02:47
こっちには一通り載ってるんだな
http://doc.okkez.net/192/view/class/File=Constants
687デフォルトの名無しさん:2009/09/06(日) 12:32:04
>>685
この方、あんまり、物事を嫌い嫌い言うのって敵作るだけだから止めた方がいいと思うんだけどね。
webに不満をぶちまけること自体はかまわんと思うが。

しかし、schemeが日の目を見ないって嘆いているのが、現実を見れていないようなのだし、
前述の件もあるからあまり関わるのはよしたほうがよさそうw
688デフォルトの名無しさん:2009/09/06(日) 12:37:05
まあでも世の中はどう転ぶかわかんないから
なにそれおいしいのだったOOPも今や知ってて当たり前だし
689デフォルトの名無しさん:2009/09/06(日) 12:38:13
>>670
っていうか、明らかに「日本人のドキュメンテーションのダメさは異常」なんだよな。
日本人のタッチするところ、ドキュメントの無い世界が広がるってなもんで。
690デフォルトの名無しさん:2009/09/06(日) 14:12:10
それは、外国人の書いたもので日本で使われるようなものは、
ドキュメントがあるものだけだからな。視野に入ってないだけ。
691デフォルトの名無しさん:2009/09/06(日) 15:26:00
>>687
いや、個人の好き嫌いを述べるのは別に構わんと思うが。

「海外のブログでは批判記事も目にする(そして、その筆者も知らないのに叩く
なと逆に叩かれる)ことが結構あるのに、日本ではこれが非常に少ない。」
と書いてる通り、叩かれることも自ら望んでるんだろうし。
692デフォルトの名無しさん:2009/09/06(日) 15:32:24
そろそろ隔離スレ行こうね
693デフォルトの名無しさん:2009/09/06(日) 18:42:30
>>690
I got it!
694デフォルトの名無しさん:2009/09/06(日) 18:44:10
913 nobodyさん [sage] Date:2009/09/06(日) 14:23:30  ID:??? Be:
    >>905-907
    本当だ。なんだこれ?

    mswin32版のRuby 1.8.7-p160が遅すぎる件 - 那由多屋 開発日誌
    http://d.hatena.ne.jp/nayutaya/20090601/1243848756

    L'eclat des jours(2009-04-22)
    http://www.artonx.org/diary/20090422.html

    (コメ欄)
695デフォルトの名無しさん:2009/09/06(日) 19:00:23
>>691
このBlog書いてるの誰?
696デフォルトの名無しさん:2009/09/06(日) 19:11:53
>>691
批判とかツッコミはやめたほうがいいよ。スルー推奨。
過去の記事を読めばわかるけど、実は極度に打たれ弱い。
697デフォルトの名無しさん:2009/09/06(日) 19:24:49
> 実は極度に打たれ弱い。
叩き甲斐があるってもんじゃないか
698デフォルトの名無しさん:2009/09/06(日) 19:26:10
いや全然
オモチャが極端に少ない生活してるんだな
699デフォルトの名無しさん:2009/09/06(日) 19:26:43
>>697
> 叩き甲斐があるってもんじゃないか

叩き甲斐とは、叩かれ強い人を精神病院送りにした時感じるもの。
700デフォルトの名無しさん:2009/09/06(日) 20:06:46
>>696
本人乙
701デフォルトの名無しさん:2009/09/06(日) 20:12:45
うざい
702デフォルトの名無しさん:2009/09/06(日) 20:13:41
マジで本人乙
703デフォルトの名無しさん:2009/09/06(日) 20:45:32
うざい
704デフォルトの名無しさん:2009/09/06(日) 20:49:45

             ,.、   .,r.、
            ,! ヽ ,:'  ゙;.
            !  ゙, |   }
            ゙;  i_i  ,/
             ,r'     `ヽ、
|  ,.、  ,r.、    ,i" _,    ._   ゙;
| ,! ヽ,:'  ゙;.     !. ・     ・  ,!
| !   ,!  }     ヽ、 x    _,r''
|二゙;  i二二二(⌒ノ"''`''''''''''''"´`ヽ.
| ,r'      `ヽ、 ´ヾ、      l  l
,i"   _,   _ ゙;    !      i___|
!.  ・     ・,!   |       t,ノ
|ゝ_    x _::'    !、、、、、、、、、、!
|,/"`''''''''''''''"´';,     |   |    |
(,;!         !)       |   |   |
|゙''::r--、::--;r'        |____|_____|
|―゙'ー-‐゙ー-゙'―┐   (,,,__(,,,____)
705697:2009/09/06(日) 20:54:13
>>699
うん、オモチャで遊ぶときは今のオモチャを壊してから次のオモチャで遊ぶもんでね
一つのオモチャで2回遊んだことないんだ。
706デフォルトの名無しさん:2009/09/06(日) 21:03:29
ほんとに基地外スレ・・・
707デフォルトの名無しさん:2009/09/06(日) 21:08:40
そんなにほめてくれなくても(赤面)
708デフォルトの名無しさん:2009/09/06(日) 21:17:00
なにそれこわい
709デフォルトの名無しさん:2009/09/06(日) 22:08:16
MoonGiftだっけ?
710デフォルトの名無しさん:2009/09/06(日) 23:38:46
Ruby上でPythonを走らせる実装にRuby/Pythonがありますが
逆にPython上でRubyを走らせる実装ってありますか?

BlenderでRubyを使いたいです・・・
711デフォルトの名無しさん:2009/09/06(日) 23:42:50
ruby-1.8.6-p383をgcc4.4.0のmingwでビルドする場合は、
ルートのMakefileのCFLAGから-O2を外してmakeすれば良いみたい。testとtest-all通った。

ruby-1.8.7-p174はtestは通ったがtest-allするとtestが全然始まらない。重いだけかな?
712デフォルトの名無しさん:2009/09/07(月) 00:09:02
>>709
MoonWolf
713デフォルトの名無しさん:2009/09/07(月) 02:25:13
確かな匂い
714デフォルトの名無しさん:2009/09/07(月) 07:32:47
次のエントリもひどいな。これは、もはや才能。
715デフォルトの名無しさん:2009/09/07(月) 08:58:22
本人のブログに突撃するのはかわいそうだからやめようね。
突っ込みたい人はここでどうぞ。好きなだけ突っ込んであげて。
716デフォルトの名無しさん:2009/09/07(月) 09:03:05
RubyのeachへProc渡し
p = Proc.new {|x|
  print(x)
  if (x == 2)
    return
  end
  print(', ')
}
717デフォルトの名無しさん:2009/09/07(月) 09:18:35
本人はココに常駐してるのかw
718デフォルトの名無しさん:2009/09/07(月) 09:34:31
もう触れるなよ
エントリ更新するたびに出てくるようになるぞ
719デフォルトの名無しさん:2009/09/07(月) 10:36:34
MoonwolfってRubyistだったと思ってたけど、いつの間にRubyぎらいになったんだ
720デフォルトの名無しさん:2009/09/07(月) 10:47:11
Headius: Introducing Surinx
http://blog.headius.com/2009/08/introducing-surinx.html


JRubyの人が新しい言語作るってよ。

Duby = Rubyの見た目+Javaの型システム+静的型、型推論
Surinx = Rubyの見た目+Javaの型システム+動的言語
721デフォルトの名無しさん:2009/09/07(月) 10:55:43
>>720
スレ違い
722デフォルトの名無しさん:2009/09/07(月) 10:57:09
dailsとか出てくるのかな
723デフォルトの名無しさん:2009/09/07(月) 10:59:43
anarchy golf - hello world
http://golf.shinh.org/p.rb?hello+world#Ruby

おいいいいい、RubyでHello worldが12バイトとかどうやんだよ。解説よろ
724デフォルトの名無しさん:2009/09/07(月) 12:17:18
>>722
juby on jails
725デフォルトの名無しさん:2009/09/07(月) 12:31:00
Hello world
726デフォルトの名無しさん:2009/09/07(月) 12:32:17
変なのが消えて、また過疎スレ化するのかな・・・
そういえば夏も終わりだねぇ
727デフォルトの名無しさん:2009/09/07(月) 13:14:56
実は自分がその「変なの」だったっていうオチって怖くね?
728デフォルトの名無しさん:2009/09/07(月) 13:30:20
何その林先生案件
729デフォルトの名無しさん:2009/09/07(月) 15:11:26
>>727
ありきたり過ぎてあくびが出る
730デフォルトの名無しさん:2009/09/07(月) 15:51:32
>>723
さっぱりわからん。頑張っても14Bしか出来んかった
731デフォルトの名無しさん:2009/09/07(月) 17:11:34
>>723
gorubyじゃないよね……?
732デフォルトの名無しさん:2009/09/07(月) 17:18:53
Hello world だけで 11 バイトだからなぁ。
PHP なら 11 バイト可能だけどw
733デフォルトの名無しさん:2009/09/07(月) 17:29:33
Hello, world!
お題がこれだから13byteでPHPでも無理
734デフォルトの名無しさん:2009/09/07(月) 17:30:34
「単純なやり方では」無理、だ
なにかしらの圧縮かけてんだろうけど・・・
735デフォルトの名無しさん:2009/09/07(月) 17:37:24
短縮系golfは初心者の得るものはないので他スレでやっとくれ
736デフォルトの名無しさん:2009/09/07(月) 17:45:07
>>731
gorubyはむしろhだけだった記憶がw
737デフォルトの名無しさん:2009/09/07(月) 18:17:40
exec禁止じゃないから、gorubyを呼び出してるんじゃないかと思うが。
738デフォルトの名無しさん:2009/09/07(月) 19:34:17
s = "aaaaaaaaa[hoge]piyopiyo"
r = "[hoge]piyo"

if s =~ /#{r}piyo/
 puts $&
end

今日こんな感じのコード書いてマッチしねえってことで
しばらくはまってた
739デフォルトの名無しさん:2009/09/07(月) 19:54:27
>>738
気持ちは分かるw

p /#{r}piyo/ #=> /[hoge]piyopiyo/
p /#{Regexp.escape r}piyo/ #=> /\[hoge\]piyopiyo/
740デフォルトの名無しさん:2009/09/07(月) 19:59:26
putsとかpとかprint以外のメソッドに括弧をつけない男の人って
741デフォルトの名無しさん:2009/09/07(月) 20:15:22
自作メソッドにしか付けねーよ
742デフォルトの名無しさん:2009/09/07(月) 20:44:24
括弧は出来るだけ付けるのがナウいんですか?
今までその逆をしてました・・・ごめんなさい
743デフォルトの名無しさん:2009/09/07(月) 21:33:39
カッコがない場合は「わざと」外してる
それは p だったり puts だったり DSL っぽく書く意図だったり
カッコの有無で動作が変わることを経験した人はカッコつけるのを基本にすると思う
744デフォルトの名無しさん:2009/09/07(月) 21:35:00
引数無しメソッドでもつけるのが最近のマイブーム
ああ、これ関数だなって一発でわかるし
745デフォルトの名無しさん:2009/09/07(月) 21:39:13
普段はまあどっちでも好きなようにしろ、が回答
紛らわしいときに ( ) が使われているのなら普段が ( ) ありでもなしでも構わない

問題は、普段からカッコつけない奴の多くは「紛らわしいとき」を全く意識しないということ
たまたま動いてるのを普通にスルーしやがる

普通逆だろ、カッコ常につけまくってる奴のほうがカッコの有無に無頓着であるべきだろ
746デフォルトの名無しさん:2009/09/07(月) 21:47:12
kimoi
747デフォルトの名無しさん:2009/09/07(月) 22:13:24
obj.method arg とか死ぬほどキモイな
748デフォルトの名無しさん:2009/09/07(月) 22:26:46
メソッドチェーンがない言語の因習だと思う
749デフォルトの名無しさん:2009/09/07(月) 22:56:44
Moonwolf説はガセ
750デフォルトの名無しさん:2009/09/07(月) 23:12:59
railsのソースコード読んでruby覚えた俺はカッコ無しの方がしっくりくる
メソッドの戻り値も変数に格納しない
751デフォルトの名無しさん:2009/09/08(火) 00:11:01
1.9.2で、mingw32の4.4.0のpthreadってdisableしてビルドした方が良いのかな?
752デフォルトの名無しさん:2009/09/08(火) 00:12:52
>>751
あ、1.9.1だった。スマン。
753デフォルトの名無しさん:2009/09/08(火) 05:40:43
>>751
よくはないが、別にそんなクリティカルな用途で使うわけでもないだろうし別にいいんじゃね
754デフォルトの名無しさん:2009/09/08(火) 07:59:59
Perlでいうところの関数のリファレンスを変数に格納して実行するにはどうすればいいのでしょうか?

--- Perl ---
sub func { print 'func' }

$func_ref = \&func;
$func_ref->();

--- Ruby ---
def method
print 'method'
end

method_ref = ????
method_ref.call??


こうするしかないのかな?

method_ref = proc { method }
method_ref.call
755デフォルトの名無しさん:2009/09/08(火) 08:24:37
>>754
Kernel#__send__(文字列 or シンボル, 引数...)
Method#call(引数...)
UnboundMethodをbindして#call(引数...)
など。
756デフォルトの名無しさん:2009/09/08(火) 08:40:35
>>754
Object#method # >>755の真ん中の奴

def func ; puts 'func' ; end
func_ref = method(:func)
func_ref.call
757デフォルトの名無しさん:2009/09/08(火) 09:07:43
>>755-756
サンクス
758デフォルトの名無しさん:2009/09/08(火) 09:33:53
>>751
--disable-pthreadでconfigureするかどうかってこと?
意味ないからどっちでも同じ結果になるよ。
759デフォルトの名無しさん:2009/09/08(火) 12:04:10
>>758
サンクス
そうするとstruct timespecが二重定義って怒られるのはどうしよう
760デフォルトの名無しさん:2009/09/08(火) 15:12:36
>>759
redmineで報告すればいいんじゃないかな。
761デフォルトの名無しさん:2009/09/09(水) 13:16:21
Rubygemパッケージを作るための色々なファイルの雛型あきこしてくれるライブラリとかありませんか
762デフォルトの名無しさん:2009/09/09(水) 13:41:05
トップレベレと言うのか、どこのクラスにも属さず、
いきなり書いた一行の文って、どう考えればいいの?

Cで言うmain関数みたいなのに暗黙のうちになってるとか、
Javaで言うmainメソッドみたいなのに暗黙のうちになってるとか、
・・・どう解釈したらいいのだ?
763デフォルトの名無しさん:2009/09/09(水) 13:51:50
>>761
$ jeweler --rspec hogeeee
    create .gitignore
    create Rakefile
    create LICENSE
    create README.rdoc
    create .document
    create lib
    create lib/hogeeee.rb
    create spec
    create spec/spec_helper.rb
    create spec/hogeeee_spec.rb
Jeweler has prepared your gem in hogeeee
$ ls hogeeee/
LICENSE README.rdoc Rakefile lib spec
764デフォルトの名無しさん:2009/09/09(水) 13:59:55
>>762
http://i.loveruby.net/ja/rhg/book/minimum.html
コンテキストとしてのself とか main とか
765デフォルトの名無しさん:2009/09/09(水) 14:01:25
>>762
トップレベルにも self として参照できるオブジェクトがある。
ほとんど単に Object.new したものだが、文字列化すると main
と返すようになっている点だけちょっと違う。
puts self
#=> main
p self
#=> main
puts self.class
#=> Object
766デフォルトの名無しさん:2009/09/09(水) 14:07:31
>>763
これ知ったとき、spec_helper をどっかの rubygem からコピペして
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
を全ファイルの先頭に自力で書いてた俺超涙目
767デフォルトの名無しさん:2009/09/09(水) 15:20:22
メソッド内部で print とかされて標準出力に表示されている結果を
rspec でチェックすることはできませんか?
768デフォルトの名無しさん:2009/09/09(水) 15:36:33
putsはObjectがincludeしているKernelのメソッド。

putsを呼ぶ時点のselfにspecからアクセスできるなら
ソレ.should_receive(:puts).with(出力)
などで可能だと思う。
769デフォルトの名無しさん:2009/09/09(水) 15:38:36
>>767
$stdout = StringIO.new
で溜め込むとか
770デフォルトの名無しさん:2009/09/09(水) 16:12:05
>>768
「メソッド内部」と断ってるし普通アクセスできないと思う
771デフォルトの名無しさん:2009/09/09(水) 16:43:30
>>770
class Greeter
def hello(name)
puts "hello, #{name}"
end
end

このような位置のputsはspecで
@greeter.should_receive(:puts).with('guest')
でテストできるけど、さらに奥深くだと無理だろうってことね。
772デフォルトの名無しさん:2009/09/09(水) 17:01:10
内部ってどのくらいなん、というのに依存するな

汎用的なのは$stdoutねじ曲げる>>769
これ使ったことあるけど、なんかrspecで書いてる気がしないんだよな
stdout マッチャとか display マッチャとか作るべき
773デフォルトの名無しさん:2009/09/09(水) 17:18:54
そりゃまあ、らしく書くのに実装の隠蔽は欠かせない
774デフォルトの名無しさん:2009/09/09(水) 17:21:07
lambda{ @obj.greeting }.should display('hello!')

こんな感じ?
Proc オブジェクト使うのはこれはこれで微妙に不評なんだよね
775デフォルトの名無しさん:2009/09/09(水) 17:51:58
>>763
ジュエラーか。ジュエリストのほうがかっこいいな。
最近ご無沙汰なんだが、hoeとかnewgemはもう古いの?
776デフォルトの名無しさん:2009/09/09(水) 18:10:42
hoe がイヤ過ぎるから newgem や jeweler が出てきたのでは…
777デフォルトの名無しさん:2009/09/09(水) 18:55:17
hoeとかrubyforgeとかって基本的にgemを作るときに要るもので、
配布物を使う人には無用のものだと思っていたのだけど、
なんで依存しているgemがあるんだろう、という疑問。

778777:2009/09/09(水) 18:59:06
自己レス。
作者がadd_development_dependencyを知らないだけなのかな。

779デフォルトの名無しさん:2009/09/09(水) 22:29:32
ある文字列をN文字ずつに分解するのはどうやりますか。
たとえば 'abcdef' を2文字ずつに分解して ["ab", "cd", "ef"] のようにします。
よろしくお願いします。

780デフォルトの名無しさん:2009/09/09(水) 22:37:38
N = 2
'abcdef'.scan(Regexp.new('.{%d}' % N))
781デフォルトの名無しさん:2009/09/09(水) 23:44:39
すごく初歩的な質問なのですが、Rubyのドキュメントはどこにあるのでしょうか?皆さんは何を参照していますか?
公式HPを見ましたが、Rubyの文法を簡単に説明しているだけで、標準ライブラリの細かい仕様を調べたい時などには役に立たないと感じました。
たとえばgemにインストールしたライブラリであればgem serverコマンドでRDocリファレンスが見れますが、標準ライブラリのRDocのようなものは無いのでしょうか?
バージョンは1.8でも1.9でも構いません。よろしくお願いします。
782デフォルトの名無しさん:2009/09/09(水) 23:55:43
>>781
http://www.ruby-lang.org/ja/documentation/
とそのリンク先は見た?
783781:2009/09/10(木) 00:50:23
>>782
ありがとうございます。
そのドキュメントは見ましたが、文法の解説という感じなので自分が求めてるものと少し違いました。
言語が違いますがたとえばhttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/のように
各クラスにどんなメソッドとフィールドがあって各メソッドの引数は何か、というのが一目で分かるようなAPI的なものを探しています。
784デフォルトの名無しさん:2009/09/10(木) 00:55:42
785デフォルトの名無しさん:2009/09/10(木) 01:02:58
>文法の解説という感じ
何を言ってるんだおまえは
http://doc.okkez.net/static/187/library/_builtin.html
786デフォルトの名無しさん:2009/09/10(木) 01:05:47
www.ruby-doc.org/core でいいんじゃね?
787デフォルトの名無しさん:2009/09/10(木) 01:18:47
職場の頭の悪いJava厨が>>783と同じようなこと言ってたな
788デフォルトの名無しさん:2009/09/10(木) 02:03:14
Rubyって連結リストみたいなListのデータ構造はないのでしょうか?
配列とハッシュしかみあたらないのですが。。。
789デフォルトの名無しさん:2009/09/10(木) 02:05:35
>>781
体裁が gem の rdoc に一番近いのはここの Core API のところかなあ
http://www.ruby-doc.org/

書籍だと内容的にはちと古いがピッケル本のライブラリ編とか
790デフォルトの名無しさん:2009/09/10(木) 02:15:16
>>788
Arrayでおk
791デフォルトの名無しさん:2009/09/10(木) 02:30:57
>>788
連結リストを何に使うの?
キューやスタックなら配列で十分だぞ(#shift, #unshift, #push, #pop)

Lispの処理系を作るとかいう話なら自分で作るべき
792デフォルトの名無しさん:2009/09/10(木) 04:25:14
>>779
str.scan(/../n)
Nが毎回可変なら>>780
793デフォルトの名無しさん:2009/09/10(木) 06:01:01
>>779
5文字を2文字ずつとかしたとき余った文字って捨てていいの
794デフォルトの名無しさん:2009/09/10(木) 07:05:14
>>792
/../n の、n オプションって何?調べたけど見つからない

>>793
str.scan(/..?/)
Nが正の整数で可変なら、

r = '.' + ('.?' * (N-1))
str.scan(Regexp.new(r))

でいける?
うーん。正規表現よくわからん。
795デフォルトの名無しさん:2009/09/10(木) 07:05:58
どうなんだろうね
端数出ないと仮定してもよさそうだが

require 'enumerator'
"12345".split(//n).each_slice(2).to_a.map{|a| a.join}

["12", "34", "5"]
796デフォルトの名無しさん:2009/09/10(木) 07:22:47
>>794
> Ruby は日本語化されているので、$KCODE の値に従って正規表現中の日本語文字を正しく扱います。
> $KCODE = "n" の場合、日本語文字を一切認識せずにバイト列として扱います。これはデフォルトの動作です。
> オプションとして n, e, s, u のいずれかを指定することで
> 正規表現の文字コードを $KCODE の値に関係なく個々の正規表現リテラルに指定することもできます。

irb> $KCODE = 'u'
irb> p 'うんこ'.split(//)
["う", "ん", "こ"]
irb> p 'うんこ'.split(//n)
["\343", "\201", "\206", "\343", "\202", "\223", "\343", "\201", "\223"]

文字列が完全にASCIIの範疇しか使われないならぶっちゃけいらない
ASCII 文字の処理だからと n をつけまくってる人は時々見るが、つけないほうがいい時のほうが多いと思うんだ
797デフォルトの名無しさん:2009/09/10(木) 07:28:24
thx
文字コードの指定ですか
1.9以降はどうなるんだろ
798デフォルトの名無しさん:2009/09/10(木) 07:43:01
無指定の場合は対象文字列の encoding と同じだとみなす

irb1.9> p "しふとじす".encode('Shift_JIS').split(//)
["??", "??", "??", "??", "??"]
irb1.9> p "しふとじす".encode('Shift_JIS').split(//).map{|e| e.encode('UTF-8')}
["し", "ふ", "と", "じ", "す"]

split(//n) と同じことをするのはやや手間

irb1.9> p "しふとじす".encode('Shift_JIS').dup.force_encoding('BINARY').split(//)
["\x82", "\xB5", "\x82", "\xD3", "\x82", "\xC6", "\x82", "\xB6", "\x82", "\xB7"]

each_byte の結果を文字列にしたほうがたぶん妥当
あるいはなんか凄い人が凄い簡単な手法見せてくれるかもしれない
799デフォルトの名無しさん:2009/09/10(木) 07:46:43
余った文字も入れたけりゃ
N = 2
'abcde'.scan(Regexp.new('.{1,%d}' % N))
=> ["ab", "cd", "e"]
800デフォルトの名無しさん:2009/09/10(木) 09:44:20
>>772はカスタムマッチャ作ればすぐじゃん、と思ったが
「そのメソッドからの $stdout への出力」というのを限定して取れないことに気づいた
$stdout を曲げてる期間に他の何かからも $stdout に出力があれば混じってしまう

や、「テスト中にはそんなこと起こらない」ということにすればいいんだけども
801デフォルトの名無しさん:2009/09/10(木) 10:03:31
module MyCustomMatchers
class MatcherDisplay
def initialize(expected); @expected = expected; end

def matches?(proc)
old = $stdout.dup; out = StringIO.new
$stdout = out; proc.call; $stdout = old
out.rewind
@actual = out.read
return (@actual == @expected)
end

def failure_message
"expected stdout is #{@expected.inspect} but was #{@actual.inspect}"
end

def negative_failure_message
"stdout #{@expected.inspect} should not be same"
end
end

def display(expected)
MatcherDisplay.new(expected)
end
end

describe "Test" do
include MyCustomMatchers
it "say hello" do
lambda{print "hello!"}.should display('hello!')
end
end
802デフォルトの名無しさん:2009/09/10(木) 10:08:20
あ、$stdout を dup する必要ないや
そのへん適当に
あとメッセージも適当
failure_message が should が失敗したときのメッセージ
negative_failure_message が should_not が失敗したときのメッセージ
モジュール作って include 形式にはしなくても構わないがこうしたほうがきっとあとで楽
803デフォルトの名無しさん:2009/09/10(木) 11:01:01
>>785
>何を言ってるんだおまえは
おまえこそ何を言っているんだ。
Ruby初心者では、782で紹介されたページから、ライブラリのドキュメントまでたどり着けないことがあるという事実がわかったんだから、
初心者でも簡単にたどり着けるようなページデザインにするにはどうしたらいいかを話し合ったほうが建設的ではないか?

たとえば
ttp://doc.okkez.net/static/188/doc/index.html
のページを見ると、言語仕様の目次がずらーっと並んでいて、ライブラリのドキュメントへのリンクは後ろのほうにあるだけ。
これだと、>>783のような勘違いが生まれても仕方ない。
そうじゃなくて、このページから目次をなくして、
「言語仕様」「組み込みライブラリ」「標準添付ライブラリ」「その他」
の4つの大きなアイコンが並んでいるだけにすれば、>>783のような勘違いもなくなると思うんだけど、どうだろうか。

・・・という感じで、初心者が必要なドキュメントにたどり着けるようにするにはどうしたらいいかを話し合ってほしい。
せっかくの初心者スレだし。
804デフォルトの名無しさん:2009/09/10(木) 11:22:14
>>803
そこはサイトを作ってる奴が○○○ので仕方ないかと。

いいじゃん、ruby-doc.orgの英語ドキュメント充実してるんだから、そこを見れば。
805デフォルトの名無しさん:2009/09/10(木) 11:39:19
> 初心者でも簡単にたどり着けるようなページデザインにするにはどうしたらいいかを話し合ったほうが建設的ではないか?

こんなチラ裏掲示板で話し合っても全く建設的ではありません。

プロジェクトに提案があるならメーリングリストへ。
806デフォルトの名無しさん:2009/09/10(木) 12:17:33
>>798
unpack("C*").map(&:chr)
807デフォルトの名無しさん:2009/09/10(木) 12:18:13
>>781の時点で見つけられないのはわからないでもない
でも回答があったにも関わらず目に付いた部分しか見ずに探そうとしない>>783ようなのはただのバカだろ
バカの世話までしていたらキリがない
808デフォルトの名無しさん:2009/09/10(木) 12:20:26
each_byteのほうが短かった
809デフォルトの名無しさん:2009/09/10(木) 12:33:10
>>802
テストで標準出力奪うのはやめといたほうが…
テスト自体の出力が混ざるぞ
810デフォルトの名無しさん:2009/09/10(木) 12:43:02
>>809
おう、今まさに混じってるぞ
何が辛いってうっかりメソッド側で p とかしてオブジェクトの中身確かめようとしたら
標準出力に p の結果が混じってテストが失敗すること

warn obj.inspect で逃げてるが display マッチャのコンセプト自体が間違ってたとしか思えん(w
811デフォルトの名無しさん:2009/09/10(木) 13:22:41
>>779
BioRubyを入れるとString#stepが拡張されて
require 'bio'
'abcdef'.step(2){|a| puts a}
ab
cd
ef
とできる。割り切れなければ最後に余りが返ってくる。
まあ、これだけのために使うようなライブラリじゃないし、
マルチバイト文字も使えないけど。
812デフォルトの名無しさん:2009/09/10(木) 14:05:36
>>805
ここだから書き込むやつがいるんじゃないか
わざわざメーリングリストに入って発言なんかするかよ
どうせたいした議論なんかしないんだから。
813デフォルトの名無しさん:2009/09/10(木) 14:11:51
現状このチラ裏でいろいろ書かれているわけだから
それを無視しているメーリングリストの人たちのほうが非建設的
814デフォルトの名無しさん:2009/09/10(木) 14:13:27
>>813
うわぁ
815デフォルトの名無しさん:2009/09/10(木) 14:16:07
本買えばいいじゃんとしか思わない
816デフォルトの名無しさん:2009/09/10(木) 14:25:25
本なんて邪道と思ってるやつもいるからな
おれには理解できんが
817デフォルトの名無しさん:2009/09/10(木) 14:48:21
ri にキャッシュ機能を付加したフロントエンドを被せるとそこそこ快適

refe というリファレンサもあることは知ってるけど使ったことないや。
使ってる人いる? インストールめんどくせ、というイメージなんだが
818デフォルトの名無しさん:2009/09/10(木) 14:54:17
>>817
refe使ってるけど、アーカイブを展開してパス通すだけじゃね?
819デフォルトの名無しさん:2009/09/10(木) 15:42:14
RubyでHTTP caching proxyを作ろうと思うのですが、PerlのHTTP::Proxyに
相当するようなライブラリはないでしょうか?
820デフォルトの名無しさん:2009/09/10(木) 15:51:25
webrickにhttpproxyというのがあるけど、希望に沿えてるかはわからない
821デフォルトの名無しさん:2009/09/10(木) 16:04:16
>>819-820
http://jp.rubyist.net/magazine/?0002-WEBrickProxy
http://doc.okkez.net/static/187/class/WEBrick=3a=3aHTTPProxyServer.html
通信後へのフックしか用意されてないようだから、これを基に手を加える必要がありそう
822デフォルトの名無しさん:2009/09/10(木) 16:23:06
rubyのMLってオナニーメールばかりで気持ち悪い
823デフォルトの名無しさん:2009/09/10(木) 16:43:14
日本語のは、メール自体が少ないから
824デフォルトの名無しさん:2009/09/10(木) 17:39:42
>>772
newgemでbinつき、rspecつきで出力したのが参考になるかも

binのスクリプトのスペックファイルがこんなのになってる
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
require 'tweetswget/cli'

describe Tweetswget::CLI, "execute" do
 before(:each) do
  @stdout_io = StringIO.new
  Tweetswget::CLI.execute(@stdout_io, [])
  @stdout_io.rewind
  @stdout = @stdout_io.read
 end
 
 it "should print default output" do
  @stdout.should =~ /To update this executable/
 end
end
825デフォルトの名無しさん:2009/09/10(木) 17:40:26
あらアプリ名でちゃった。はずかすぃ!
826デフォルトの名無しさん:2009/09/10(木) 17:43:12
>>824
要は出力対象を差し替え可能にしておけってことじゃね

class C
 def initialize(out = $stdout)
  @out = out
 end
 def exec
  @out.print "message"
 end
end
827デフォルトの名無しさん:2009/09/10(木) 17:57:11
どうでもいいけど○○wgetとかwget○○とかってセンスないよね
Wgetクラスとか作っちゃうのもセンスないよね
system("wget #{url}")するよりはマシだけどね
828デフォルトの名無しさん:2009/09/10(木) 18:01:04
ほぼ全員が作ったことがある黒歴史っぽい感じでセンス無くて恥ずかしいよな
OptParserの練習にもなっていいんだぞ、多分
829デフォルトの名無しさん:2009/09/10(木) 18:02:30
センスっていう言葉を使う奴って語彙が乏しいよね
830デフォルトの名無しさん:2009/09/10(木) 18:38:19
open-uri.rbに記述されてる説明なんだけど、誰か訳してもらえませんか。
respond toの意味するところが分かりません。

makes possible to open various resources including URIs.
If the first argument respond to 'open' method,
the method is called with the rest arguments.
831デフォルトの名無しさん:2009/09/10(木) 18:43:05
832デフォルトの名無しさん:2009/09/10(木) 18:50:55
>>831
ありがとうございます!なるほどrespond_toメソッドのことでしたか。
ruby(というかプログラミング)特有の言い回しは慣れないと難しいですね。。
833デフォルトの名無しさん:2009/09/10(木) 18:57:01
下記のような、Item.find(params[:id]).hogehoge という部分だけが違うメソッドがあります。

  def move_lower
   Item.find(params[:id]).move_lower
   
   flash[:notice] = '並びかえました。'
   respond_to do |format|
    format.html { redirect_to :action => 'index' }
    format.xml { head :ok }
   end
  end

  def move_higher
   Item.find(params[:id]).move_higher
   
   flash[:notice] = '並びかえました。'
   respond_to do |format|
    format.html { redirect_to :action => 'index' }
    format.xml { head :ok }
   end
  end

  def move_to_bottom
   :
  def move_to_top
   :

(うつく)
834デフォルトの名無しさん:2009/09/10(木) 19:01:56
メソッドのことっていうか、組み込みクラスの名前はそれなりに練られているし
ドキュメント書く人もある程度従うから、メソッド一覧が辞書的・用語的に使える場合があるという感じ

というわけだからその部分は「第一引数がopenメソッドに応答するなら」で、いわゆるduck typing
http://ja.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0
835デフォルトの名無しさん:2009/09/10(木) 19:12:11
(うつき)

DRYしたくて、この場合、どのような書いたものでしょうか?
例えば、以下のような感じにしたいのですが、Item.find(params[:id]).methodのところがうまく行きません (´・ω・`)

  def move_lower
   do_move(:move_lower)
  end
  def move_higher
   do_move(:move_higher)
  end
  def move_to_bottom
   do_move(:move_to_bottom)
  end
  def move_to_top
   do_move(:move_to_top)
  end

  def do_move(method)
   Item.find(params[:id]).method # ←?????
   
   flash[:notice] = '並びかえました。'
   respond_to do |format|
    format.html { redirect_to :action => 'index' }
    format.xml { head :ok }
   end
  end
836デフォルトの名無しさん:2009/09/10(木) 19:17:02
>>835
Item.find(params[:id]).__send__(method)
837デフォルトの名無しさん:2009/09/11(金) 00:00:27
あまりDRYに見えない気が。
838デフォルトの名無しさん:2009/09/11(金) 01:08:11
>>836
いけますね

Item.find(params[:id]).send(method)
ではダメなんで書馬、
839デフォルトの名無しさん:2009/09/11(金) 01:20:39
>>838
Object#__send__は原則として書き換えてはいけない
Object#sendは上書きされることが予想(許容)される

http://doc.okkez.net/static/187/class/Object.html
>send が再定義された場合に備えて別名 __send__ も用意されており、ライブラリではこちらを使うべきです。また __send__ は再定義すべきではありません。

じゃあsendはなんで存在するのかというと・・・俺も聞きたいw
840デフォルトの名無しさん:2009/09/11(金) 01:26:07
微妙に書き方間違えた、Object由来の__send__とsendの話
class C
 def send; end # Cの都合に合わせたsendに書き換えてOK
 # def __send__; end # __send__の再定義はマナー的にNG
end

Itemの中身は(ほぼ)間違いなくObject由来のオブジェクトだからsendも__send__も使えるけど
sendが再定義されたクラスの可能性もあるから
Object#sendの機能が使いたいなら__send__のほうが確実ということ
841デフォルトの名無しさん:2009/09/11(金) 02:52:17
ごめんちょっとテスト
-スペース×2
 -全角スペース
 - 
842デフォルトの名無しさん:2009/09/11(金) 03:05:49
失礼しました
nbspな書き込みが多かったから2ch側で自動的に置き換えてくれるようになったのか、
と思ったけど違ったみたいだ
843デフォルトの名無しさん:2009/09/11(金) 05:30:26
send は利用専用
再定義のないプレーンな状態では send が使えてしかるべき
object_id と __id__ の関係に近い

個人的には __class__ もあってしかるべきだったと思うのだが
あんま __ つきメソッド作ると Python ぽく動作しなければならない気分になるかも
844デフォルトの名無しさん:2009/09/11(金) 05:32:33
>>842
navi2ch は文頭から始まるスペースを &nbsp; に書き換える
本来はやってはいけないことなんだがまあそれはそれで
845デフォルトの名無しさん:2009/09/11(金) 05:35:48
目茶初心者的な質問です。

RubyのThreadでの引数の役割りって、何ですか?
(どういう場面で役立つのか分からない)

関数なら y = f(x) で引数xを元にyが決定されプロット
できますが、Threadも左右されるのでしょうか?

すいません、ググっても分かりませんでした。
846デフォルトの名無しさん:2009/09/11(金) 06:19:04
引数なんだからルーチン実行に必要な明示的外部因子だろ
という話ではなさそうだな

Thread.new の引数の話なら、これはそのまんまだ
説明読んで実際に動かしてみてわからんのなら、きっとまだ早い
1ヵ月後くらいに再読すると結構わかるので今は諦めれ
847833:2009/09/11(金) 06:34:05
>>836-843
ありがとうございます。
本当だ、Railsだとsend上書きしてたりしますね。

ちょっとした使い分けですね。上書きされるような挙動を許したければsend、
そうでないなら、__send__

使ってみます。ありがとうございました。
848デフォルトの名無しさん:2009/09/11(金) 06:44:42
メッセンジャー機能として上書きするために残ってるんじゃないぞ

「送る」メソッドとして名称が被ってもいいように __send__ がある
たとえばメール用ライブラリでは送信用のメソッドがどう考えても send になるが、
そういうクラスで send を作っても元の send の機能が失われないように __send__ がある
他の Object のメソッドはまあ上書きで消えちゃっても仕方ないかなあと思えるものが多いが、
send の機能だけは特別
この機能が使えない状態のクラスは Ruby としてヤバい
849デフォルトの名無しさん:2009/09/11(金) 06:56:46
>>844
インライン要素に囲まれた空白文字は空白として保存する、みたいな仕様になっていれば
今ごろ世界中ハッピーだったと思うんだ
850デフォルトの名無しさん:2009/09/11(金) 09:10:15
>>847-848
RailsだけじゃなくてSocket#sendなんてのもあるしな
851833:2009/09/11(金) 09:34:56
>>850
あー、ほんとうだ。
Railsのsend(ActiveRecord)と、Socket#sendは全然意図が違いますね。

前者はフックして処理追加みたいな感じですが(superよんでるし)、
後者は、__send__関係ねえw
上の方で教えていただいた事柄は、後者のことですね、たぶん。

別の意味のsendが定義されてる場合、__send__よべと。そりゃそうだ。
Railsの場合は、むしろ、sendとしてsendが呼ばれるのを期待しているみたいなので、
__send__直接でなく、sendを呼んでやらないととおかしなことになりますね。
852デフォルトの名無しさん:2009/09/11(金) 09:39:13
ソケットにrecvとsendがなかったらアルェーってなるだろう
853デフォルトの名無しさん:2009/09/11(金) 11:26:06
class クラスのインスタンスを「足し算」することはできませんか?

bar = Foo::Bar.new
baz = (bar.class + Class.new('Baz')).new
p baz.class #=> Foo::Bar::Baz

eval するしかないとしたら、なにかより安全な方法はありますか?
854デフォルトの名無しさん:2009/09/11(金) 11:43:37
何がしたいかわからん。
Foo::Barのスコープ下に可変な名前の新クラスを定義したいという意味?
855デフォルトの名無しさん:2009/09/11(金) 11:47:59
>>853
できね
文字列としてクラス名を適当に作ってからevalしろ
定数になる書式しか受け取らないevalはあれば楽しいが多分無い
856デフォルトの名無しさん:2009/09/11(金) 11:49:54
>>854の意味なら
new_class_name = 'Baz'
Foo::Bar.const_set(new_class_name, Class.new)
857デフォルトの名無しさん:2009/09/11(金) 15:36:36
ドキュメント表記でFoo::Hogeと書かれている場合のFooとHogeの関係は、

○HogeはFooの内部クラス
○HogeはFooの内部モジュール
○HogeはFooで定義された定数

のいずれかと思っていれば間違いないでしょうか?
ドキュメントを見て自分で調べた限りではこのような使われ方がされているようです。
継承したクラスや、インクルードしたモジュールなどは、Hoge::Fooのような書き方をしていないようなのですが、継承・インクルード用の表記法はあるのでしょうか?
858デフォルトの名無しさん:2009/09/11(金) 15:42:06
意味的にはそれであってる、実装的には三つ目に集約される
というのもクラスもモジュールも、ClassインスタンスやModuleインスタンスが定数に代入されているだけに過ぎないから

継承はC < Object
モジュールにお約束はないと思うけど、リファレンスでは継承と同じように書いてるね
C < Enumerable < Object
859845:2009/09/11(金) 15:50:03
>>846
レスどうも。
理解の助けになるようなサンプルがググっても見つかりません。
(手元の本のサンプルはやたら行数が多いし)

適当なサンプルコードってありますか?
860857:2009/09/11(金) 15:52:25
>>858
ありがとうございます。すっきりしました。
モジュールのインクルードもHoge::Moduleと書きたくなっちゃうけど違うんですね。
公式HP見たら、ご指摘どおり、Array < Enumerable < Object < Kernelとなってました。
Java厨の自分にはObject < Kernelはとっても違和感がw
861デフォルトの名無しさん:2009/09/11(金) 15:56:46
>>859
x = 1; t = Thread.new(x){ sleep 1; p x }; x += 1; t.join #=> 2
x = 1; t = Thread.new(x){|y| sleep 1; p y }; x += 1; t.join #=> 1
こういう話?
862デフォルトの名無しさん:2009/09/11(金) 15:58:14
一個目まちがえた
x = 1; t = Thread.new{ sleep 1; p x }; x += 1; t.join #=> 2
863デフォルトの名無しさん:2009/09/11(金) 16:00:41
>>860
公式のどこ?その書き方おかしいだろ
モジュールは何個でもincludeできるから一つの流れでObjectまで辿り着けるわけじゃないし
864デフォルトの名無しさん:2009/09/11(金) 16:07:39
>>863
http://doc.okkez.net/static/187/class/Array.html

p Array.ancestors #=> [Array, Enumerable, Object, Kernel]
いくつでもincludeはできるけど、優先順位はきっちり存在する
865デフォルトの名無しさん:2009/09/11(金) 16:16:07
String < Comparable < Enumerable < Object < Kernel
p String.ancestors #=> [String, Enumerable, Comparable, Object, Kernel]

矛盾してるぞ
866デフォルトの名無しさん:2009/09/11(金) 16:22:56
それは知らん、書いたヤツに聞いてくれw
867デフォルトの名無しさん:2009/09/11(金) 16:26:59
Comparable < Enumerableはさすがに意味不明だね。無関係のモジュール同士だし。
あまり階層を意識しないでとりあえずincludeしてるモジュールが分かればいいって程度の表記なんじゃない?
868デフォルトの名無しさん:2009/09/11(金) 17:12:56
ライブラリの「ファイル名の区切り」ってハイフンとアンダースコアとキャメルケースのどれがいい?
既存のHogeというライブラリがあって、それの非公式エクステンションぽい感じなんだけど

require 'hoge-ext'
require 'hoge_ext'
require 'hogeext'
require 'hogeExt'

どれになるのがそれっぽいかな
869デフォルトの名無しさん:2009/09/11(金) 17:18:20
>>868
OpenURIにPOST機能をつけた場合

module OpenURIPost
require 'open-uri-post'

これがフツーだと思う
というか、require名はハイフンになるようにライブラリ作れというお達しがどっかに…
870デフォルトの名無しさん:2009/09/11(金) 17:59:10
>>868
その中ならhogeextかhoge-extかな
個人的にはこっちのほうが良いと思う

require 'hoge/ext'
871デフォルトの名無しさん:2009/09/11(金) 18:07:41
本家でもないのにディレクトリ切るとな

いや、見栄えもいいのはわかるんだが
本家 hoge の下に foo とか bar とかあった場合ちょっと微妙に
872デフォルトの名無しさん:2009/09/11(金) 18:35:19
実装上は、includeはスーパークラスと自クラスの間にダミーのクラスを
挿入してそこに指定モジュールからメソッドを追加する感じ(てきとう)。
別のモジュールのincludeではその結果出来る階層にさらに別のダミー
クラスを挿入するので、内部的にはモジュール(ダミークラス)が線形に
階層を成している。

ドキュメントにそれを意識して反映してるかはシラネ。
873デフォルトの名無しさん:2009/09/11(金) 18:49:21
ext という別途存在して見慣れてるディレクトリ名なのがよくない

require 'hoge/plus' とかそういうのにすれば違和感が
874デフォルトの名無しさん:2009/09/11(金) 18:57:17
Railsのスレが過疎ってるのでこちらで質問させてください。
ruby script/generate scaffold book title:string author:string
これでbooksテーブルを作成するmigrationファイルが出来るのは分かるのですが、
NOT NULL制約やstringの長さの制限などを指定することはできないでしょうか?
generate scaffoldでテーブルを作ると全てのカラムでNULL可、文字列は255文字になってしまいます。

仕方なく、作成されたmigrateファイルを修正することで対応していますが、これは正しいやり方でしょうか?
875デフォルトの名無しさん:2009/09/11(金) 19:15:40
>>874
WebProg板のなら、最終投稿10日だし、別に過疎ってないと思う。

やりかたはそれでOK
全くカラム情報を与えずに作って空のmigrationに一から手で書いても
構わない。

そもそもmodelのgenerator templateの中身は
t.<%= attribute.type %> :<%= attribute.name %>
だし。
876874:2009/09/11(金) 19:37:46
>>875
http://pc12.2ch.net/test/read.cgi/tech/1216829388/このスレのことを言いました
WebProg板の存在は知りませんでした。誘導ありがとうございます。次からはそちらで質問します。

migrationに手を加えるやり方でよかったのですね。railsの精神に反する気がして少し躊躇してました。
ありがとうございました。
877デフォルトの名無しさん:2009/09/11(金) 19:43:18
任意次元の多次元配列を初期化するには、どう書くのがスマート
でしょうか?

たとえば

size = [2, 3, 4]

というサイズ指定配列を渡されたら、

a = Array.new(2).map{Array.new(3).map{Array.new(4, 0)}}

と等価なことをしたいです。
878デフォルトの名無しさん:2009/09/11(金) 19:50:04
Rubyには多次元配列は存在しない
単なるネストした配列だ

ということで、ネストしてるだけなのでネストしてnewする
a = Array.new(2).map{Array.new(3).map{Array.new(4, 0)}}
879デフォルトの名無しさん:2009/09/11(金) 19:53:46
pdfファイルを読み込み表示させようと思って以下のコードを書いたのですがうまくいきません。

open("010.pdf", "r") do |f|
f.gets
end

pdfファイルを読み込むには何か正しい方法があるのでしょうか。
最初はpdftotextでtextファイルに変換してから読み込もうと思ったのですが、
pdftotextを使う方法が分からなかったので直接読み込む方法を探しています。

環境はwindowsです。よろしくお願いします。
880デフォルトの名無しさん:2009/09/11(金) 19:58:51
PDFファイルをテキストエディタで直接開いてみるとなんかわかるかも
というかそのエディタで開くということと同じことしかしてないわけだが
881デフォルトの名無しさん:2009/09/11(金) 20:01:55
Windows なら open は r ではなく rb だろ
そのへんの説明はあるはずなんだが

とりあえず gets ではどうにもならんと思うんで
素直に read してその pdftotext なりなんなりで解析してもらえ
882デフォルトの名無しさん:2009/09/11(金) 20:04:48
>>878
> a = Array.new(2).map{Array.new(3).map{Array.new(4, 0)}}

それじゃダメなので質問してるんですが。

size が必ず [2, 3, 4] と指定されるのでしたら

def foo(size)
return Array.new(2).map{Array.new(3).map{Array.new(4, 0)}}
end

で OK なんでしょうけど、渡される size は [5, 4, 3, 2] だったり
[2, 3, 4, 5, 6, 7] だったりとサイズも次元も可変なのです。
883デフォルトの名無しさん:2009/09/11(金) 20:09:19
本当にWindowsは糞だな。
Mac OSX最新版のSnow Loepardなら
テキスト、画像、動画、PDF、MS Officeをプラグインなしで統一的に扱えるのに。
884デフォルトの名無しさん:2009/09/11(金) 20:12:26
>>882
Rubyの配列に次元は存在しない
お帰りください
885デフォルトの名無しさん:2009/09/11(金) 20:26:18
rubyのコレクションフレームワークって配列とハッシュしかないの?
886デフォルトの名無しさん:2009/09/11(金) 20:27:16
def make_nested_array(*sizes)
  case sizes.size
  when 0
    []
  when 1
    Array.new(sizes[0], 0)
  else
    Array.new(sizes[0]){
      make_nested_array(*sizes[1..-1])
    }
  end
end
887デフォルトの名無しさん:2009/09/11(金) 20:36:09
>>885
Stack、ListはArrayで間に合うだろう。
Queueは、優先度が付かないならArrayを使え。
このへんは大クラス主義。

標準では、他にSetが付いてくるが、組み込みではないので要require。
Treeは標準にはない。
888デフォルトの名無しさん:2009/09/11(金) 20:37:35
>>883
Rubyで? すごいねー
889デフォルトの名無しさん:2009/09/11(金) 20:54:07
>>886
なるほど。
*size を size に替えてうまく動きました。
ありがとうございました!
890デフォルトの名無しさん:2009/09/11(金) 21:17:37
>>880
テキストエディタで開くと文字化け?してしまいます。

>>881
pdftotext.exeは実行ファイルなのですが、Rubyのスクリプトから使用する方法が分かりません。
何度も申し訳ないのですが、教えて頂けないでしょうか。。
891デフォルトの名無しさん:2009/09/11(金) 21:22:12
`pdftotext hoge.pdf`?
892デフォルトの名無しさん:2009/09/11(金) 21:22:58
>>889
横からだけど
make_nested_array([2, 3, 4])
よりは
make_nested_array(2, 3, 4)
のほうが素直というかRuby的だと思う

ary = [2, 3, 4]
で渡された時のことを考えているんだろうけど
make_nested_array(*ary)
とやれば引数を展開できる

>>890
pdftotext.exeは知らないけど、コンソールでできることなら大抵system関数でできる
コマンドラインを関数に渡せばいい
893デフォルトの名無しさん:2009/09/11(金) 21:53:15
system関数でできました。本当にありがとうございました!
894デフォルトの名無しさん:2009/09/11(金) 22:00:33
rubyでpdfを作るにはどうすればいいですか?
895デフォルトの名無しさん:2009/09/11(金) 22:03:58
>>894
ruby pdfでググると色々出てくるので好きに選べばいいじゃない
896デフォルトの名無しさん:2009/09/12(土) 07:51:58
>>894
ぶっちゃけ、基本ただのテキストファイル。仕様どおりに作ればいい。

適当に一部分だけgzipかけてみたりフォント埋め込んでみたり暗号化してみたり
してる部分もあるが、それは全部付加的なものだし。

現実的には、>>895。RubyならHaruでいいんじゃね?
897デフォルトの名無しさん:2009/09/12(土) 08:33:37
>>879
ハイハイ、マルチポスト、マルチポスト

Rubyでpdfファイルを読み込む方法 -OKWave
http://okwave.jp/qa5281984.html

こっちで、解決したらあっちのも答え書いとけよ
898デフォルトの名無しさん:2009/09/12(土) 09:15:54
RubyでPDFをgrepできたら便利だな
簡単にできるのならやってみようかな
899デフォルトの名無しさん:2009/09/12(土) 09:35:10
PDFを読んでるわけじゃないぞ
PDFをプレーンテキストにする外部プログラムにファイルを渡して
標準入力から受け取って文字列にしてるだけ
900デフォルトの名無しさん:2009/09/12(土) 15:15:55
中括弧 { } を付けても付けなくても同じ結果になるのですが、これらに違いはあるのでしょうか?

def hoge arg
p arg
end

hoge( :a => 1, :b => 2 ) #=> {:a=>1, :b=>2}
hoge( {:a => 1, :b => 2} ) #=> {:a=>1, :b=>2}
901デフォルトの名無しさん:2009/09/12(土) 15:24:48
>>900の場合は同じ意味。

{}はHashを意味している。
メソッド引数の最後のものがHashである場合に限り、{}を省いてよい。
902デフォルトの名無しさん:2009/09/12(土) 15:28:06
>>901
そうなんですか。
d
903デフォルトの名無しさん:2009/09/12(土) 16:44:49
rubyとpythonはどっちが強いですか?
904デフォルトの名無しさん:2009/09/12(土) 17:03:01
ruby
905デフォルトの名無しさん:2009/09/12(土) 19:24:56
たしかにruby厨はpython厨よりしつこいな
906デフォルトの名無しさん:2009/09/12(土) 21:54:36
>>903
何を以って強さとするかによる
907デフォルトの名無しさん:2009/09/12(土) 22:09:19
実行速度
書きやすさ
読みやすさ
インストールのしやすさ
ライブラリの使い勝手
リファクタリングの効率
配布
どれをとっても(ry
908デフォルトの名無しさん:2009/09/12(土) 22:43:51
議論してもどうせ荒れる方向にしか行かないんだから初心者スレでこうゆうネタ出すの止めて
909デフォルトの名無しさん:2009/09/12(土) 23:27:50
どうせたいていは釣りなんだからボケの腕の見せ所かと
910デフォルトの名無しさん:2009/09/13(日) 00:19:22
rubyスレはこういうときにもボケで返すセンスのある香具師が多いが
pythonスレではまじめにレスするかスルーされるケースが多い
よってruby埼京
911デフォルトの名無しさん:2009/09/13(日) 00:23:54
2chってどこ行ってもごみレスつけるおっさんばっかりになってるな
そんなに寂しいのか彼らは
912デフォルトの名無しさん:2009/09/13(日) 02:08:10
>>910
おまえはボケのセンスがないんだな
913デフォルトの名無しさん:2009/09/13(日) 12:39:10
すいません質問させてください

(@@connections ||= []) << self

上記のコードの
@@がクラス変数, << が配列への要素の追記ということはわかったのですが
||= の記号の意味がうまく調べられませんでした
どなたか教えていただけないでしょうか?
914デフォルトの名無しさん:2009/09/13(日) 12:42:56
@@connections = @@connections || []
915デフォルトの名無しさん:2009/09/13(日) 13:08:12
>>913
||=は左辺がnil、falseでないときは何もしない
もしnil、falseなら右辺を代入する。
916デフォルトの名無しさん:2009/09/13(日) 13:29:01
このページ全部に目を通しておくといいよ
http://doc.okkez.net/static/187/doc/spec=2foperator.html
917デフォルトの名無しさん:2009/09/13(日) 14:10:48
>>913
foo ||= []

foo = [] unless foo
とおなじ。
(foo ||= []) << "aaa"

foo = [] unless foo
foo << "aaa"
とだいたい同じ。
918デフォルトの名無しさん:2009/09/13(日) 15:18:56
foo = [] unless defined?(foo) じゃないと動作しないだろ、というツッコミは
これはこれで面倒な話でありましてですな
919デフォルトの名無しさん:2009/09/13(日) 15:34:47
まあ、

irb> (p "ok") if foo
NameError: undefined local variable or method `foo' for main :Object
     from (irb):1
     from :0

がエラーで

irb> (foo = "ok") if foo
nil

が OK というのは不条理っちゃ不条理ではある
ちなみに (foo = "ok") if foo のあと、 foo は nil を返す
920デフォルトの名無しさん:2009/09/13(日) 15:42:16
へえ!そんな違いあるのか 初めて知った
どういう基準で分かれてるんだろう?
921デフォルトの名無しさん:2009/09/13(日) 16:11:24
>>920
FAQ にもあるんだが、ローカル変数は、構文解析で代入が見つかるかどうかだけが鍵
実際に(いつ)実行されるかどうかは関係がない

if false
foo = "OK"
end
foo

上記は NameError を起こさないが、以下は foo が NameError を起こす

for e in [1, 2 ,3]
if e == 2 then
foo
else
foo = "OK"
end
end

動作は同一なはずの unless で 代入記述の順番を変えると NameError は起こらない
for 構造はスコープを作らないことに注意

for e in [1, 2 ,3]
unless e == 2 then
foo = "OK"
else
foo
end
end
922デフォルトの名無しさん:2009/09/13(日) 16:15:42
FAQはこちら
ttp://www.ruby-lang.org/ja/man/html/FAQ_CAD1BFF4A1A2C4EABFF4A1A2B0FABFF4.html#a2.2e3.20.a5.ed.a1.bc.a5.ab.a5.eb.ca.d1.bf.f4.a4.cf.a4.a4.a4.c4.bb.b2.be.c8.b2.c4.c7.bd.a4.cb.a4.ca.a4.eb.a4.ce.a4.c7.a4.b7.a4.e7.a4.a6.a4.ab
長い長すぎる

FAQでは昔ながらに「nil で初期化しとけ」と書いてあるが、
こんな繰り返しのスコープを意図的に利用するスクリプトを書くことのほうがヤバい兆候であることがわかってる
素直に他の方法を考えるのがよい
そもそも一般的な each ではスコープが毎回切れるからこれの再現すらできないしな
923デフォルトの名無しさん:2009/09/13(日) 16:16:02
これ、実際改良する気ないのかな。Rubyの実装もいろいろ出てきてるんだし。
気持ち悪くないのかな。それとも、別に実装の都合ではなくてポリシーなのか?
924デフォルトの名無しさん:2009/09/13(日) 16:31:24
もともとそういうポリシー。
ブロックでスコープをわけないようにするという話もあったりするので、
遠い未来の2.0あたりでは>>921の例も動くようになるかも。
925デフォルトの名無しさん:2009/09/13(日) 16:41:10
スタックに積まれるローカル変数は明示的に初期化すべしってのはrubyに限ったことじゃない。
926913:2009/09/13(日) 16:46:38
>>914-919
ご丁寧にありがとうございます。
ソース読んでいてここだけわからなくて困っていたのですが助かりました。
927デフォルトの名無しさん:2009/09/13(日) 16:48:29
>>925
if ARGV
 opt1 = ...
end
opt1_runner(opt1) if defined?(opt1)

これが期待通り動作しないということなんだぜ
たかがローカル変数で

opt1 = nil
if ARGV
 opt1 = ...
end
opt1_runner(opt1) if opt1

とか書かなければならないのは流石にバカっぽい
928デフォルトの名無しさん:2009/09/13(日) 17:13:36
バカっぽいか?すごく素直な書き方でいいと思うけど。
929デフォルトの名無しさん:2009/09/13(日) 17:15:13
Rubyのifはスコープを作らないだろ

いわんとすることはわかるが
930デフォルトの名無しさん:2009/09/13(日) 17:18:18
そんな小さな労力のために仕様変更してたらぐちゃぐちゃになるわ。
ローカル変数を初期化不要にしてしまうと、フィールド変数を参照してるつもりでスペルミスしてもエラーにならなくなる。
あらゆる場所で意図しないローカル変数が勝手に生成される可能性があるわけで何とも気持ち悪い。

フィールドはオブジェクトの属性という意味合いから初期値があるのは自然だけど、
ローカル変数はちょっと値を保存しておく場所って意味合いしかないから、ソースコードを簡略化するために初期値を設けるってのも設計上美しくない
931デフォルトの名無しさん:2009/09/13(日) 17:37:53
質問です
下記のように@flagを判別して
@flagがtrueの場合, testのputs "test"が実行され
@flagがnilの場合,testを中断させputsは実行されない
という処理を書きたいのですが可能でしょうか?
flag_ok?でfalseを返してもいいのですが、
test2,test3と他にも最初にフラグをチェックして@flagがnilの場合、処理を中断したいメソッドが複数あるので、シンプルに書く方法を模索してます

@flag = nil

def test
flag_ok?
puts "test"
end

def test2
flag_ok?
puts "test2"
end

def flag_ok?
if @flag
return true
else
return "testの実行を中断させるなにか"
end
end

932デフォルトの名無しさん:2009/09/13(日) 17:45:10
@flag = nil

def test
 return if @flag
 puts "test"
end

def test2
 return if @flag
 puts "test2"
end

これじゃなんかダメなん
933デフォルトの名無しさん:2009/09/13(日) 17:51:15
>>932
条件逆
934931:2009/09/13(日) 19:08:11
>>932
ありがとうございます参考に直してみました。
ちょっとエラー時に処理をいれたかったのと
うまいこと1行で書きたかったのですが
すっかり if,unlessのこの書き方を失念してました

@flag = nil

def test
return unless flag_ok?
puts "test"
end


def flag_ok?
if @flag
return true
else
puts "処理"
return false
end
end
935デフォルトの名無しさん:2009/09/13(日) 21:25:21
フィールド変数って何?
936デフォルトの名無しさん:2009/09/13(日) 21:32:13
>>935
@hoge = 1234
の@hogeのこと。

Rubyだとインスタンス変数かな?
フィールド変数はJava用語だったかも?Delphiでも聞いたな。
C++だとメンバ変数だっけか。
937デフォルトの名無しさん:2009/09/13(日) 21:33:51
>>935
Rubyで言うインスタンス変数

逆か、他の言語で言うフィールド変数はRubyではインスタンス変数で扱う
938デフォルトの名無しさん:2009/09/13(日) 22:56:49
Smalltalk流だな、インスタンス変数という呼び名は。
939デフォルトの名無しさん:2009/09/13(日) 23:24:18
フィールド=インスタンス変数
じゃないぞ
フィールド=メンバ変数=インスタンス変数&クラス変数
が正しい
940デフォルトの名無しさん:2009/09/14(月) 10:52:05
普通にネストしてるクラス定義があります

class A
class B
class C
end; end; end

A B C を模したモジュール M があります

module M
module A; def hoge; end
module B; def hoge; end
module C; def hoge; end
end; end; end; end

で、M を適度に include して A.new.hoge も B.new.hoge も C.new.hoge も有効にしたいんですが、
次のような書き方しかできないような気がします

class A; include M::A
class B; include M::A::B
class C; include M::A::B::C
end; end; end

なんというかこー、せっかく模したので「一発」でできるようにしたいのですが、なんかうまい方法ないですか
941デフォルトの名無しさん:2009/09/14(月) 11:04:18
include M しただけで A::B::C.new.hoge が有効にならないのはなんでとかそういう質問?
942デフォルトの名無しさん:2009/09/14(月) 13:13:31
>>940
標準機能にはないし、ライブラリもなさそうだから、自分でつくるしかないかなあ。

def get_module_object(name)
 mod = Object
 name.split(/::/).each do |s|
  mod = mod.const_get(s) or raise NameError.new("#{name}: not found.")
 end
 return mod
end

get_module_object('M::A::B::C')

def include_recursively(klass, namespace)
 mod = get_module_object("#{namespace.name}::#{klass.name}")
 klass.class_eval { include(mod) } if mod
 for name in klass.constants
  c = klass.const_get(name)
  include_recursively(c, namespace) if c.is_a?(Class)
 end
 nil
end

include_recursively(A, M::A)
p A.ancestors    #=> M::A が含まれている
p A::B.ancestors   #=> M::A::B が含まれている
p A::B::C.ancestors #=> M::A::B::C が含まれている

実行効率はあんまりよくないけど許して。
943デフォルトの名無しさん:2009/09/15(火) 01:18:30
このスレの人で、RubyをPSPで動かした経験のある方いますか?
ググりましたが、断片的に
ttp://www.rubyist.net/~matz/20070130.html
ttp://www.javaeye.com/topic/50494(中国語)

があるくらいです。
何か役に立ちそうなサイトがありましたらお教え下さい。
944デフォルトの名無しさん:2009/09/15(火) 09:29:00
StringIOを読むときってrewind必須?
昔のテープメディアみたいでなんかヤなんだけど
945デフォルトの名無しさん:2009/09/15(火) 09:50:31
>>944
IO自体がテープメディアみたいなもんなんだけどw
946デフォルトの名無しさん:2009/09/15(火) 10:21:36
to_s で最初から最後までが文字列として返ってこなかったっけか

同名モジュールの include で疑問があったことを思い出した

module A
 def hoge; B.new; end
end
module B; end

class A; include A; end
classB; include B; end

これで、A.hoge すると モジュール B の new メソッド(無論ない)を呼ぼうとするんだよ
全く以って書いてある通りに動いてるだけなんでございまするが、
module A を作る時点で、include 先から見た B クラスを使うように指定することはできんもんかね
947デフォルトの名無しさん:2009/09/15(火) 10:42:03
>>946
できない…と思う
include したらたまたま同名の自作クラス B があったためにモジュールが動作しませんとかモジュールの意味ねえよ
モジュール内部で呼ぶ B はモジュールが定義されたときに(モジュール内部に)存在する B だ

:: で始まる「フルパス」で書くしかないな
include されるクラス名が不定なのならお隣クラス B を呼ぶことはそもそもできないので諦めるべし
948デフォルトの名無しさん:2009/09/15(火) 10:47:53
>>946
module A
def hoge ; self.class.const_get(:B).new ; end
:
949デフォルトの名無しさん:2009/09/15(火) 11:17:23
コード中で、あるライブラリがrequireされているかどうか判断することはできますか?
擬似コードですが、こんな感じで書けたらと思ってます
if nkfがrequireされていたら; ・・・
elsif uconvがrequireされていたら; ・・・; end

現在はbeginブロックに入れてNameErrorで判断しています
950デフォルトの名無しさん:2009/09/15(火) 11:49:19
>>949
そのライブラリが何か定義するなら
defined? NKF
とか。

あと、$LOADED_FEATURES ($") というグローバル変数もあるが、
ファイル名べったり依存になるのであまり推奨したくないな。
951デフォルトの名無しさん:2009/09/15(火) 12:09:44
require自体がファイル単位を扱うメソッドなんだからファイル名依存になるのは当たり前だろ
952949:2009/09/15(火) 12:17:34
>>950
ありがとうございます!どちらも気づきませんでした・・・
プログラムを書き換えてみての動作確認もうまくいきました。
953デフォルトの名無しさん:2009/09/15(火) 12:38:57
>>951
requireされてるかわからないということは自分以外がrequireしたってことだから
ファイル名を知らないし知る必要もないと思う

require 'lib/example'
require './lib/example'
$LOAD_PATH << "lib/"
require 'example'
とりあえず実際問題として、$"ではこれらが区別されるから(requireも二重ロードをする)
>>950のようなduck type的アプローチのほうがよいかと
954デフォルトの名無しさん:2009/09/15(火) 13:12:18
Rubyでよく言うダックタイピングってJavaなんかで言うポリモーフィズムのことですか?
実装の違いは別として機能的には。
955デフォルトの名無しさん:2009/09/15(火) 13:22:04
アドホック
956デフォルトの名無しさん:2009/09/15(火) 13:44:37
>>954
だいたい合ってる

あえて区別するなら、ポリモーフィズムはクラスC1とC2に何かしらの関係性が産まれる
(スーパークラスが同じとか、インターフェイス/モジュールに同じモノを使うとか)
ダックタイプはメソッドに応答するだけでいい

「共通であるから同じに扱う」と「同じに扱えたから共通だと見なす」という感じ
957デフォルトの名無しさん:2009/09/15(火) 13:48:21
・・・とは言ったものの、ポリモーフィズム自体にそういう定義はないと思う
たぶん、関係性が産まれている場面でばかり使われていたから
関係性がないことを強調した言葉として派生させたのがダックタイプなんじゃないかな
958デフォルトの名無しさん:2009/09/15(火) 15:42:31
>>953
あと、require だと拡張子が省けるが、$" の中には拡張子込みで
入るので、実装を気にする必要も出てくる。
959デフォルトの名無しさん:2009/09/15(火) 16:58:31
拡張子込みとは言っても ".rb" か ".so" のどちらかじゃない?
960デフォルトの名無しさん:2009/09/15(火) 17:49:11
Macだと nkf.bundle になってたりする。
961デフォルトの名無しさん:2009/09/15(火) 17:56:21
>>948
self.class::B.new
962デフォルトの名無しさん:2009/09/15(火) 19:54:22
>>961
それだと A::B と解釈されるからダメ
963デフォルトの名無しさん:2009/09/15(火) 20:01:34
>>960
えーそれってMRI(YARV)? それともRubyCocoaとか?
964デフォルトの名無しさん:2009/09/15(火) 20:11:43
そもそも>>946の設定からしてわかりにくいんだよな、定数かぶりまくってるし
module M
 module A; end
 module B; end
end
class C
 class A; include M::A; end
 class B; end
end
こういうことなんだろうか

つーかこの状況だとModule.nesting使えないのか・・・
泥臭い方法以外でC::AのインスタンスからCを得る方法ってあるの?
965デフォルトの名無しさん:2009/09/15(火) 20:47:47
>>963
$ uname -a
Darwin aries.local 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386 i386 iMac9,1 Darwin
$/usr/bin/ruby -v -rnkf -e 'p $"'
ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
["nkf.bundle"]
966デフォルトの名無しさん:2009/09/15(火) 20:52:36
こっちも一応。

$ /usr/local/bin/ruby -v -e 'p $"'
ruby 1.9.2dev (2009-09-08 trunk 24795) [i386-darwin9.8.0]
["enumerator.so",
"/usr/local/lib/ruby/1.9.1/i386-darwin9.8.0/enc/encdb.bundle",
"/usr/local/lib/ruby/1.9.1/i386-darwin9.8.0/enc/trans/transdb.bundle",
"/usr/local/lib/ruby/1.9.1/rubygems.rb" ]

-rnkfすると enc/euc_jp.bundle とか混ざって長くなるので省いた。
967デフォルトの名無しさん:2009/09/15(火) 22:12:09
>>963
基本的にシステム固有のsuffixが使われる。
例外は、ライブラリにlibなどのprefixをつける慣習がないWindows等DOSISH系。
たとえば、libiconvのiconv.dllと拡張ライブラリのiconv.dllが区別つかなく
なるという事態を避けるため、後者を.soにしている。
968デフォルトの名無しさん:2009/09/15(火) 22:48:23
>>966
なんで enumerator.bundle じゃないんだろう。
969デフォルトの名無しさん:2009/09/16(水) 02:31:22
requireをロックするため突っ込んである
実際に探索したわけでもないパスだから。
970デフォルトの名無しさん:2009/09/16(水) 04:32:19
ume
971デフォルトの名無しさん:2009/09/16(水) 04:47:18
どうしてルビーなの?
なんでpythonじゃなくてルビーなの?
開発者が日本人だから?愛国心ってやつ?ねえ?
972デフォルトの名無しさん:2009/09/16(水) 05:42:56
あなたがPerlでもPHPでもSchemeでもなくPythonを使っているのと同じようなレベルの理由です
973デフォルトの名無しさん:2009/09/16(水) 06:59:09
>>971
煽りに使えそうな反論が出たらpythonスレに張り付けに行くんだろ?
974デフォルトの名無しさん:2009/09/16(水) 08:11:47
yes i do
975デフォルトの名無しさん:2009/09/16(水) 09:57:02
class C
def initialize
hoge
hoge = Array.new
hoge
end

def hoge
puts "参照メソッド呼ばれましたん"
end

def hoge=(arg)
puts "代入メソッド呼ばれましたん"
@hoge=arg
end
end

C.new

これはやっぱり

参照メソッド呼ばれましたん
代入メソッド呼ばれましたん
参照メソッド呼ばれましたん

であるべきなんじゃないかと思う今日この頃
っていうかこのへんの動作に依存したスクリプト作るのやめれ紛らわしいわぼけーうおー
976デフォルトの名無しさん:2009/09/16(水) 10:01:11
Pythonスレから刺客が来たと聞いて
977デフォルトの名無しさん:2009/09/16(水) 10:30:57
ローカル変数代入だけはちょっと特別なんだよね
代入の形したメソッドがある場合はどっち使うのか注意
978デフォルトの名無しさん:2009/09/16(水) 10:35:22
識別名がまずローカル変数、でなければインスタンスメソッドと
決定されるのは自然な発想では

ただ確かに紛らわしいから、結局
>このへんの動作に依存したスクリプト作るのやめれ
じゃなかろうか
979デフォルトの名無しさん:2009/09/16(水) 10:41:58
間違ってる人がいそうだから注釈するが、>>975は代入メソッド1回も呼ばれてないぞ
hoge= というインスタンスメソッドがあっても、hoge=Array.new はローカル変数への代入だ
= つきのインスタンスメソッドを呼びたい場合はレシーバが必須になる
この場合は self をつけて self.hoge=Array.new だな

これに def hoge; @hogeを処理して返す; end が加わってると混迷を増す
980デフォルトの名無しさん:2009/09/16(水) 12:00:21
ローカル変数の方がメソッドよりスコープ狭いんだから、ローカル変数が最優先で名前解決されるのは当然のように思える。
981デフォルトの名無しさん:2009/09/16(水) 13:23:01
>>978
呼び出しはそれでいいんだけど、>>977も言うようにキモは代入でしょ
ローカル変数とインスタンスメソッドに同じ名前さえ付けなければ
この手の問題は起きないと思ってる人はわりといるはず、つーか俺

>>980
存在するローカル変数と存在するインスタンスメソッドなら同意
まだ存在しないローカル変数と存在するインスタンスメソッドだったら、存在する方が優先に思える

「代入もメソッド呼び出しである」と考えると
変数hogeがないときにself.hogeが呼ばれる動作と対称的ではないのが違和感の原因
「疑わしきはローカル変数と見なす」も理解はできるけどね
982デフォルトの名無しさん:2009/09/16(水) 13:57:45
まあ世の中にはいろんなバックボーンを持った人がいるから、Rubyのルールが気持ち悪い/気にくわない/落ち着かないという人も大勢いるだろう。
それは仕方ない。そういうもんです、慣れてくださいとお願いするしかない。

ただまあ、代入に関して言えば、
・foo = 123 は変数への代入
・obj.foo = 123 は setter メソッドの呼び出し
というルールが分かっていれば、そう混乱することはないように思う。
問題は、それを明確に教えていない本やドキュメントのほう。
983デフォルトの名無しさん:2009/09/16(水) 14:06:39
問題は

hoge というインスタンスメソッドが定義されているとき、 hoge(123) とすると hoge メソッドに 123 が渡される
hoge! というインスタンスメソッドが定義されているとき、 hoge!(123) とすると hoge! メソッドに 123 が渡される
hoge? というインスタンスメソッドが定義されているとき、 hoge?(123) とすると hoge? メソッドに 123 が渡される
[] というインスタンスメソッドが定義されているとき、 [](123) とすると [] メソッドに 123 が渡される
[]= というインスタンスメソッドが定義されているとき、 []=(123) とすると []= メソッドに 123 が渡される

とここまで来ておきながら

hoge= というインスタンスメソッドが定義されているとき、 hoge=(123) とするとローカル変数 hoge に 123 が代入される

になること
984デフォルトの名無しさん:2009/09/16(水) 14:38:32
着眼点はおもしろいな。
ただ、それは
・代入のほうが優先される
というルールで簡単に説明できるんじゃね?
これなら十分わかりやすい。
985デフォルトの名無しさん:2009/09/16(水) 15:58:47
ルヴィーっておもしろいですか?ルヴィー使ってる友達が、開発者が日本人だから誇らしいと言ってました
986デフォルトの名無しさん:2009/09/16(水) 16:02:12
hoge= が hoge = と書いても動作するのが原因のひとつのような気がしてきた
987デフォルトの名無しさん:2009/09/16(水) 16:17:07
クラス変数が@@var
インスタンス変数が@var
なんだから
ローカル変数にも命名規約を作ればよかっただけ
#varとか

設計者の脳みそが足りなかった
988デフォルトの名無しさん:2009/09/16(水) 16:18:50
つまり認識の順番が逆なんだよ

 ・ obj.hoge = や obj.hoge= とあったとき、それは必ず obj のメソッド hoge=() である
 ・ hoge = や hoge= とあったとき、それは必ず変数 hoge への代入である
 ・ 末尾に = がついたメソッドはいわゆる関数形式では呼べないので諦めろ

こう覚える
989デフォルトの名無しさん:2009/09/16(水) 17:00:32
ルールの一貫性なんかより普段書いてて使いやすいかのほうが重要
990デフォルトの名無しさん:2009/09/16(水) 17:14:11
冗長な接頭辞なんかいらんつーの
991デフォルトの名無しさん:2009/09/16(水) 17:57:10
>>989
ふだん書いてて使いやすいように、一貫したルールが必要なんだろ
マニュアル見ながらだと書きやすいが暗記しにくいルールなんて糞だ
992デフォルトの名無しさん:2009/09/16(水) 18:25:45
> マニュアル見ながらだと書きやすいが暗記しにくいルールなんて糞だ

Perl の $ と @ が脳裏をよぎったw
993デフォルトの名無しさん:2009/09/16(水) 18:31:03
ruby厨無理スンナ
994デフォルトの名無しさん:2009/09/16(水) 18:55:03
>>982や988で十分わかりやすいと思うけどな。
アンチさんたちは何が不満なのかな。
995デフォルトの名無しさん:2009/09/16(水) 19:24:17
>>994
アンチってどれよ
996デフォルトの名無しさん:2009/09/16(水) 20:57:58
これどっちなんだっけ、と迷うようなコードは書かないのが定石だろうに
997デフォルトの名無しさん:2009/09/16(水) 21:01:30
今更そんな当たり前のこと言われても
998デフォルトの名無しさん:2009/09/16(水) 23:18:44
雑魚乙ということで埋め
999デフォルトの名無しさん:2009/09/16(水) 23:19:59
雑魚乙ということで埋め
1000デフォルトの名無しさん:2009/09/16(水) 23:21:35
雑魚乙ということで埋め
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。