2 :
デフォルトの名無しさん :02/08/10 00:16
__ /〃 ┼‐┼〃__ /\ ノ __ __ , -――-、 /\ノ ヽ/\l::::::::::::::::::::\ /: : / ,..-―-、/) |: : :|::::::::::::::::::::::/: : / /⌒Y (_ノ /) |: : :|:::::::::::::::::::::|: : : /  ̄l ̄l、 ) /`〉 ヽ:: :|::::::::::::::::::::l: : :/ l: : :`ー--‐'‐'´: :/ \|∧ハ/l/: ::〈 \: : : : : : : : : :く |: : : : : : : : : : `ー-┐ ,.、 l: : : : : : : : : :`ー―┐ ,、 |: : : : : : : : : : : : : : |二lニノ ヽ.: : : : : : : : : : : : : :|ニノ |: : : : : : : : : : : : : : | ヽ: : : : : : : : : : : : :| ヽ: : : : : : : : : : : / \: : : : : : : : :/ \ : : : : : : /  ̄ ̄ ̄ ̄ ノ|  ̄ ̄ ̄ ノ) ノしノ し'( ノ)__ノ (ノ(
他にもアンチが立てたスレがありますが、ここが仕切りなおしの 本スレということでよろしくお願いします。
4 :
デフォルトの名無しさん :02/08/10 00:17
Riteの、名前の由来は?
囃蔓ママホム件��ネ.........囃蔓ママヘム件��セ...nワ......囃蔓ママフム件��,ソ..;ワ......囃蔓ママヒム件��g... ......囃蔓ママノム件��ウT........囃蔓ママネム件��・1..・......囃蔓ママヌム件��....」.......椁頃ママホム件� エX......椁頃ママフム件��オ).7W......椁頃ママヒム件��$.........椁頃ママハム件��.H4.fX......椁頃ママノム ム件��7.>.TJ......椁頃ママヌム件��畿D.ムg......許裏ママホム件��\ュI.J.......許裏ママヘム件��ヲイM.D....... ....許裏ママヒム件��・U.g.......許裏ママハム件��cテY.\.......許裏ママノム件��ソネ].........許裏ママネム件��Y f.......猪権ママホム件��メ緤.tャ......猪権ママヘム件��F刃.uャ......猪権ママフム件��サ<s.少......猪権ママヒム 件��.處.擣......猪権ママノム件��キE..z・......猪権ママネム件��1・.ャ......猪権ママヌム件��+・.リキ......捲 ...捲蔵ママヘム件��wd..ェ.......捲蔵ママフム件��!z..R.......捲蔵ママヒム件��s騒.A.......捲蔵ママハム件��エァ ......捲蔵ママネム件��?ミァ.R......捲蔵ママヌム件��胎ォ.V.......捲蔵ママニム件��銷ッ.タア......・箱マ マヘム件��.桓.........・箱ママフム件��lセ........・箱ママヒム件��信ツ.E.......・箱ママハム件��ユ0ニ.y... ...・箱ママネム件��..クユ......・箱ママヌム件��ラネム.0.......忽蔓ママホム件��.エユ.4ノ......忽蔓ママヘム件��;} ン.ーネ......忽蔓ママヒム件��....(ヒ......忽蔓ママハム件��ュレ..5ネ......忽蔓ママノム件��笋..ラネ......忽蔓ママネ ママヌム件��.5..慚......註頃ママホム件��ェ...クm......註頃ママヘム件��bq..7n......註頃ママヒム件��听..コp... ..註頃ママネム件��汰..mq......註頃ママヌム件���0..&p......刳腹ママホム件��$。..<.......刳腹ママヘム件��`・.
8 :
デフォルトの名無しさん :02/08/10 18:33
なぜオブジェクトを作らないでメソッドが呼ばれるのですか? class Foo def Foo.test print "a" end end Foo.test
クラスオブジェクトがあるからです。
10 :
デフォルトの名無しさん :02/08/11 02:55
>>10 確かめずに書いてるが、最近そんな話がMLでなかったっけ?
13 :
デフォルトの名無しさん :02/08/11 17:10
Arrayクラスのfilterメソッドって今はないのですか? 実行すると何か warning: Array#filter is deprecated; use Array#collect! と叱られるんですけど.....
英語嫁。 Array#filterは推奨されていないからArray#collectを使え って書いてあるだろうが、このハゲ。
くそ、マルチかよ。槍田氏脳
16 :
デフォルトの名無しさん :02/08/11 21:50
うぇーん、なんでクラスがオブジェクトなんだよ。 型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂 型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂 型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂 型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂 型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂 型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂 型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂 型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂 型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂 型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂 型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂 型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂型だ呂
17 :
デフォルトの名無しさん :02/08/11 23:00
ソニーのインターンの申込みてたらちょっとrubyが要求されてた。 国産Rubyは海外でも使われてるの?
次期PS2にはRubyか?
>>16 Smalltalk なども勉強しとけ。
>>17 すでにユーザ人口は海外の方が多いような。
ML調べても解決できず。。。
>>19 なんでnewしないでクラスのメソッドが呼ばれるのかが納得いかないんだけど。
squeakはインストールしてあるけど、今の所使ってない。
黙れよカスが。
なんだよ、しらねーなら知らないですっていえよ。 俺はいまオブジェクトのシリアライズに萌えてんだから邪魔寸名。
おい、なんだよ!、かってに増殖させるなよ。 オリジナルは俺だからな。
25 :
shigeの義理弟 :02/08/12 01:33
またshige兄があちこちで翻訳ソフト使ってあそんでるよ。もうハゲかかってる オヤジなのに。 Rubiを進めてくれてるshigeさんには悪いけど、僕はCOBOLerになろうと決めました。
おお!――義弟よ! COBOLerになることは悲惨です。 それが遅くないので、今からさえ返ってください。 あなたの親はCOBOLerになったために厳しく悲しく感じています。 真実を知らないことは問題です、それ、将来などのないCOBOLerより尊敬すべきルビーの方向、徐行100、また、それはよい。 Iは糞を食べることが好きです。 言われていることが聞かれない場合、それはあなたに排泄物を投げるために遂行するでしょう。 それは悲しすぎます。 大きな大きな天才Rubyist shige。
ruby-extじゃなくてruby-listに同じ質問見つけて、
それを参考に、最新パッケージをビルドし直して解決しました。
とりあえずありがとうです
>>11
28 :
shigeの義理弟 :02/08/12 01:57
やっぱり・・・。
>>16 クラスオブジェクトがあるからです。
class Foo を実行した時点で。
class Foo; end は、 Foo = Class.new と同じ。
じゃ、クラスは型じゃないの?
Class.newだと名前が付かないからclass Fooとは少し違う。 Class#nameというメソッドで名前を得ることができる。 型にメタな型があると思えば?
35 :
デフォルトの名無しさん :02/08/12 15:37
あ a 1 ぃ b 3 い c 5 ぅ d 7 う e 9 ぇ f 11 え g 13 ぉ h 15 お i 17 か j 19 が k 21 き l 23 ぎ m 25 く n 27 ぐ o 29 け p 31 げ q 33 こ r 35 ご s 37 さ t 39 excelを使わずに、上のような表を即興でサンプルのを作りたいのです。 ruby -e '"あ".upto("わ"){|x| print x, "\n" }' として、一列目だけは生成できるけど、一度にバァーっと出して、 周りのみんなを驚かしたいけど、うまくいかない。 イテレータの使い方が甘いのでしょーか?
36 :
デフォルトの名無しさん :02/08/12 15:38
あ a 1 ぃ b 3 い c 5 ぅ d 7 う e 9 ぇ f 11 え g 13 ぉ h 15 お i 17 か j 19 が k 21 き l 23 ぎ m 25 く n 27 ぐ o 29 け p 31 げ q 33 こ r 35 ご s 37 さ t 39
37 :
デフォルトの名無しさん :02/08/12 16:37
これではどう?長すぎ? ruby -e '("あ".."さ").each_with_index {|v,i| printf "%s\t%s\t%d\n", v, (?a+i).chr, (i*2)+1 }'
38 :
デフォルトの名無しさん :02/08/12 16:38
こっちの方がちょっと短かかった。 ruby -e '("あ".."さ").each_with_index {|v,i| puts "#{v}\t#{(?a+i).chr}\t#{(i*2)+1}" }'
39 :
デフォルトの名無しさん :02/08/12 19:12
>>37 と
>>38 有難うございました。
【あ〜さ】をindexにする使い方は便利です。
しかし、本来は【あ〜わ】までをindexにすると
ローマ字の列と奇数の列が途中で変になります。
もう少し頑張ってみます。
あ a 1
ぃ b 3
い c 5
略
く n 27
ぐ o 29
け p 31
げ q 33
こ r 35
ご s 37
さ t 39
略
略
つ 69
づ
71
て
73
で 75
と 77
ど 79
な 81
に 83
ぬ 85
ね 89
は ケ1
ば $(D93(B
ぱ 95
ひ 97
40 :
デフォルトの名無しさん :02/08/12 19:22
判りにくくてすみません。 つまり、やりたいことは、 ローマ字列と奇数列はindexが「わ」になるまで 繰り返していくので、最後のあたりは め l 27 も m 29 ゃ n 31 や o 33 ゅ p 35 ゆ q 37 ょ r 39 よ s 41 ら t 43 り u 45 る v 47 れ w 49 ろ x 51 ゎ y 53 わ z 55 となります。
41 :
デフォルトの名無しさん :02/08/12 19:26
【補足】奇数は99の次は1からまた始まる数列なんです。 a〜zはあ〜わのインデックスの丁度1/3なので、 わ z とそろいます。
法が 26 や 99 ということか。それぞれ mod してやれば。
43 :
デフォルトの名無しさん :02/08/12 21:12
こういうこと? ruby -e '("あ".."わ").each_with_index {|v,i| puts "#{v}\t#{(?a+(i%26)).chr}\t#{((i*2)+1)%100}" }'
44 :
デフォルトの名無しさん :02/08/12 21:58
Java とかじゃ for( int x = offsetX; x<width; x += grid){ # 何がしの処理 } なんて書く処理なんですけども、Ruby じゃこういう繰り返しはどう書くもんなの? x = offset_x while( x < width) # 何がしの処理 x += grid end とか? これ冗長過ぎやしないか。
45 :
デフォルトの名無しさん :02/08/12 22:17
>44 その例だと Integer#stepを使って offsetX.step (width-1, grid) do |x| # 何がしの処理 end みたいに書けるよ。 けれども私の場合、実際にstepを使ったことはほとんどないです。
46 :
デフォルトの名無しさん :02/08/12 22:47
47 :
デフォルトの名無しさん :02/08/12 22:59
>>43 有難うございました。
これで後輩に、excelよりrubyを使えって
実例をもって説得できそうです。
>>47 いや、この場合は Excel でいいんじゃないかなあ。
適材適所だよ。
というか Excel と ruby って比べられるもんじゃないが。
49 :
デフォルトの名無しさん :02/08/13 14:35
Ruby はじめたんですが、(自分にとっては)他のどの言語とも 違う感じでなかなか習得できません。 ところで、Ruby には Sun の java API ドキュメントみたいな のはないんですか?
51 :
デフォルトの名無しさん :02/08/13 18:03
>50 ありがとうございます。 とりあえずrefe見てみます。 Ruby勉強するのはかなりしんどいのですが、みなさんは どうやって習得したのですか? 自分はいま"オブジェクト指向スクリプト言語Ruby"使ってます。
52 :
デフォルトの名無しさん :02/08/13 20:45
>51 『オブジェクト指向スクリプト言語Ruby』 は入門書としては、お薦めできないね。 入門書としては、 『たのしい Ruby』 >>>> 『Rubyプログラミング入門』 >> 『プログラミングRuby』 という感じで、初心者向きかな・・・
ruby使ってたら馬鹿にされました。 もうruby使うのやめます。
54 :
デフォルトの名無しさん :02/08/13 21:36
自分はOO大好きで、Perlでもハッシュやらリファレンスやら 使ってOO(というより構造体?)っぽい書き方するのですが、 Rubyはお勧めですか?
カシオのスマートエッグ(ミニプリンター)はお勧めです。
>>53 おれPerlでOOなスクリプトを書いたことがないけど、
PerlのOOのソースを見ていると辛くなってくる。
Rubyの変数はCのポインター的なもの(参照)だけど、
それに馴れていれば、それほど移行は面倒ではないと思う。
一応、Perlっぽい書き方もできるし。
PerlでOOするのに挫折した人がRubyに移行することも
あるみたいなので、一度試してみてはどうだろう?
(もっともPerl6になるとまったく話は変わるかもしれない。)
57 :
デフォルトの名無しさん :02/08/13 23:11
前スレの948れす Ruby/Gtkにて、 button = Gtk::Button.new("ボタンのラベル") で設定したラベルを後で変える方法ってあります?
>>57 ちょっとは調べた?
Ruby-GNOMEメモあたりをみたら?
>>54 あなたは ruby を使うために生まれてきたような人です。
なんでハッシュっていうの?リストでは?
62 :
デフォルトの名無しさん :02/08/14 01:42
63 :
デフォルトの名無しさん :02/08/14 02:43
システムコール呼んだことはありますか? mod_rubyでroot用のプログラム動かしたい。 setuidをどのようにして呼ぶべきか教えをたれてください
>>63 ファイル一つ開くにもシステムコールは必要ですが、何か?
65 :
デフォルトの名無しさん :02/08/14 03:26
>63 そりゃ組み込み関数だろが
違った。>64。鬱氏。
67 :
デフォルトの名無しさん :02/08/14 06:38
>54 わたしはまさに、あなたと同じ様な感じで Perl を使ってて、 Perl のリファレンスの使いにくさに嫌気がさして、 Ruby を 使うように成りました。
69 :
デフォルトの名無しさん :02/08/17 14:38
>>68 ruby-devでsuidrubyのパッチを見た覚えがあるな。
1:1 全ての始まりの前に、原始のバイナリーの海があった。そこは機械語が支配 する世界である。 1:2 始めにRubyの神は天地を創造された。それはコマンドラインでruby,irb である。 1:3 地は混沌であって、闇が深淵の面にあり、Rubyの精神はunixに動いていた。 1:4 神は言われた。「Rubyに光りあれ、目覚めよプロセスよ」こうして 原始Rubyプロセスはあった。 1:5 神はRubyを見てよしとされた。
1:6 そして終わりに、神は御自分にかたどってクラスとオブジェクトを 創造された。 1:7 そして神の姿として作られたオブジェクトを次のように祝福された。 「クラス達よバイナリー空間に満ちてトークンをObjectのサブクラスとせよ、 自らのタイプを認識し、全てのコンピュータ空間に満ちよ。全ての物をオブジェクト として支配せよ」 1:8 故に、トークン(1)はオブジェクトであり、(1.type)とすると自ら整数であり 、("a".type)とすると文字列であり、(1.23.type)とするとFloatである ことを知っているのである。 1:9 そして最後に、神は御造りになった全てのものをご覧になった。見よ、 それは極めて良かった。
1:10 Rubyの神が地と天を創られた時、木も草もはえていなかった。神が クラスを御造りにならなかったからである。 1:11 神はクラスで人を創り、そのクラスに命を吹き込んだ。それは class Adam def aruku print "あるきます" end def neru print "ねます" end def okiru print "おきます" end end Human_Adam=Adam.new Human_Adam.okiru である。こうして人は生きるものとなった。
1:12 神は言われた。「人が独りでいるのは良くない。彼に合う助ける者を造ろう」 1:13 そこで神は野のあらゆる獣、空のあらゆる鳥をクラスで形作り、人の所へ もってきた。人がそれぞれどう呼ぶか見ておられた。 だが自分に合う助ける者は見つける事が出来なかった。神はそこで人を深い 眠りに落とされた。人が眠ると人の肋骨の一部を抜き、クラスを継承しその 後を肉でふさがれた。そして、人から継承したクラスで女を作り上げられた。 その名をEveと呼んだ。Human_Eveである。 class Eve def aruku print "あるきます" end def neru print "ねます" end def okiru print "おきます" end def aisatu print "こんにちは" end end Human_Eve=Eve.new Human_Eve.okiru 1:14 イブクラスにはメソッドaisatuが加わった。人がそれぞれどう呼ぶか見てお られた。人が「Human_Eve.aisatu」と呼ぶのを神は目撃された。ゆえに(.)を介し たオブジェクトのアクセスを"レシーバ形式"や"メッセージを呼ぶ"というのであ る。
1:15 次にRubyの神は人に従うクラスを創造された。 神は言われた。 「クラスたちよ、演算子をもクラスのメソッドにせよ。すべてのクラスに満ちて オブジェクトに対する(+)(-)(*)はメソッドとせよ」神は数値に対する加算演算子 たち、減算演算子たちをそれぞれにメソッドとして祝福された。 1:16 故にオブジェクト(1)は、演算子としての(+)(-)(*)(/)はメソッドとして 理解し、自らが整数である事を知っているのと同時に自らがどの様な演算をする べきなのかをも知っているのである。
1:17 神は言われた。「Stringクラスよ、スーパークラスObjectを継承し、 文字列を数値に変換するメソッドを備えよ、Stringに対する演算は文字列 の連結とし、文字列の操作メソッドを備えよ。」そのようになった。 1:18 故に、文字列("3.14")は、("3.14".to_i)という整数への変換 メソッドを理解し、("3.14".to_f)というFloat型への変換を理解し、 ("pi"+"3.14")という演算子(+)はメソッドとして文字列を連結し、 ("abcdef".length)というメソッドで文字列の長さを理解し、 ("abcdef".reverse)で文字列を逆さまにし、("abcdef".empty?)で 文字列が空かを知り、("abcdef".swapcase)で小文字を大文字に変換し、 ("abcdef".sub("abc","xyz"))で検索した文字列を置換し、 ("abcdef".rindex(/cd*/))で正規表現により一致した文字列の位置を返す 事を知っており、さらに、文字列の暗号化までをも知っているのである。 神はこれを見てよしとされた。
1:19 主なる神はまた、オブジェクト指向的ではない記述も可能なように 配慮なされた。それはPerlの様に記述可能にされるためである。 それはコマンドラインで(Integer(123.456))に現れた。(Integer)があり (Float)があった。 これは真のオブジェクト指向の神秘の姿をそれとなく現した。 1:20 見よ、真の表記は(Kernel.Integer(123.456))である事を。
class Man def aruku print "あるきます" end def neru print "ねます" end def okiru print "おきます" end end Adam=Man.new Adam.okiru class Woman < Man def aisatsu print "こんにちは" end end Eve=Woman.new 言いたいこともよくわからんがこうじゃないのか?
>> 72 rubyとirbを同じレベルで扱うのは変じゃないか?
82 :
デフォルトの名無しさん :02/08/18 14:36
ヘビがアダムを誘惑しました 「endなんて今どきはやらないよ。 インデントでブロック構造を表現しようよ」 「でも、one-liner書けなくなっちゃうからな」 アダムは誘惑にのりませんでした 「それよか、イテレータ(ブロック引数)ってどう?」 「お、それかっこいいね」 アダムが逆にヘビを誘惑すると、 ヘビはまんまと誘惑にのってGENERATORまで実装してしまいました
83 :
デフォルトの名無しさん :02/08/18 14:44
>>82 これを見ていた主は怒りました。
「ポストperlを目指すオブジェクト指向スクリプト言語同士で
争うとは何たることだ。
これより永遠にRubyは呪われ、
ム板の全てのRuby関連スレは荒れるであろう。
ネストしたブロック構造のスコープの問題は
永遠に解決されないであろう
Rubyの世代別GCは末代まで効果を表さず
ネイティブスレッドが導入される日は絶対に来ないだろう」
だれか Linux Zaurus で Ruby/Qt を動かそうというツワモノはいないのか?
>>83 ワラタ
そうか、スコープもGCもスレッドもそこが問題だったんだな。
主にパッチきぼんぬ。
>>68 なぜ Unix ではシェルスクリプトなどを setuid してはいけないことに
なっているのでしょうか?
88 :
デフォルトの名無しさん :02/08/19 00:31
>>82 失敬な!
pythonのGENERATORは、RubyのインチキITERATORと違って、
筋のいいきちんとした仕様だよ
当然、Rubyの真似をしたわけではない
誰ですか 僕の反復子を勝手に持ち出したのは。
90 :
デフォルトの名無しさん :02/08/19 00:38
>>88 のようなことを言う奴が多いので、
主なる神はpythonにも宣告しました
「これよりpythonは呪われ、
いかなるカットアンドペーストもインデントがずれるであろう。
機能強化のたびに互換性は微妙に失なわれ、
全ての拡張モジュールはリファレンスカウントを間違うだろう。
そして、お前たちの子孫は呪いのためにself. self. self.と死ぬまで書き続けるのだ」
91 :
デフォルトの名無しさん :02/08/19 00:49
>>90 そして、全てのpython関連スレは呪いのためにさびれ
廃虚と化し、永遠に1000に到達することはないのだ!
>>87 セキュリティ的に危険だから。スクリプトはプログラムでありながら、プロセ
スの生成と実際の読み込みのタイミングに差がある。その間に、suidスクリプ
トへのsymlinkを別のスクリプトで置き換えるということが(理屈としては)可
能になってしまう。
他にも、シェルスクリプトは他のプログラムを呼び出すことが多いし、すべて
のプログラムでsuid状態を考慮してあるとは限らないというのもある。
>>92 へ追加。
あと、バイナリなら実行中は排他ロックされるが、スクリプトはされないとい
うのもある。まぁ、パーミッションが適切なら問題ないし、通常書き込むと
suidフラグはクリアされるんで一回しかトライできないから、これによる改竄
はlinkによるすり替えよりもさらに難しいし、重要度は低いけどね。
>82 Python=パイソン=大蛇=ヘビ、ですか?
>>78 Integer(1.23)=>Kernel.Integer(1.23)
Integerクラスのコンストラクタにより(1.23=>1)になり整数オブジェクトと
なって帰ってきた。
print=>Kernel.print=>STDOUT.print
puts=>Kernel.puts=>STDOUT.puts
2つはIOクラスのインスタンスであるがSTDOUTを書かないとモジュールKernel
が呼ばれるので結局STDOUTが無くてもよい。
これでよろしいのか?
97 :
デフォルトの名無しさん :02/08/22 00:08
100 :
デフォルトの名無しさん :02/08/25 22:00
RubyでWEB(http)ページを巡回するプログラムを作ろうとしています。 httpのgetでページを取得する個所を以下のように書きました。 テストに幾つかのサイトを試していたら、あるサイトでは転送に圧縮を かけているらしく、 「うちは圧縮かけてるからブラウザの設定を確認してね。」 ってなメッセージが出ます。 どうやれば圧縮した転送に対応できるのでしょうか。 どなたか教えてください。よろしくお願いします。 require 'net/http' Net::HTTP.start('xxx.yyy.zzz',80){|http| response = http.get('/cgi-bin/index.cgi') tmp_file.print response }
>>100 がんばれば。
ってのはダメ?
Ruby/zlibあたりが助けになってくれる気がするですね。
102 :
デフォルトの名無しさん :02/08/25 23:58
accept-encoding: gzip をハッシュにいれてやらなきゃだめでしょ。 response = http.get('...', ['accept-encoding'=>'gzip']) かな。忘れたけど。
Ruby では main メソッド(?)をクラスの中に書かないのですか?
105 :
デフォルトの名無しさん :02/08/27 02:26
Dir.foreach( '/' ) do |file| if File.directory?( file ) puts( File.directory?( file ).to_s( ) + " " + file ); end end で、. と .. しか出ないのはなぜですか?
>>105 file はファイル名しか入らない。
そのコードだと、「カレントディレクトリ/file」 を調べる。
file の前にパスを付けてやらないとダメ。
>>104 何にも包まないで書けばそれが main。
その辺がスクリプト言語。
>106 サンクス子
rubyでCGI書くときってやっぱオブジェクト指向にこだわらないほうがいいのかなぁ?
標準添付より、もっとまともな cgi ライブラリはないですか?
>> 111
そこで紹介されているライブラリをCGIで気軽に使うのは難しいと思う。
IOWAは開発者がsmalltalkに流れて開発が止まっている。
DivとWalrusはdRubyが必要で、CGIでソケットを使わなければならない。
Facetも開発が止まっているように見える。
http://www.moonwolf.com/ruby/ でCGIライブラリを開発しているらしいけど、どういう感じなんだろうか?
結局 cgi.rb は使わず、自前で作りました。GET,POSTメソッドに対応してパラメータの 解析程度なら簡単だし。
116 :
114じゃないけど :02/08/31 00:15
HTTPReqeust を受け取り HTTPResponse を作って返す クッキー・セッションを扱う HTTPResponseはbodyの内容に関与しない これだけできれば充分なので、HTML生成支援機能みたいなのは 無しにするか別にした方がいいのではないかと思いマスタ
cgi.params のデフォルト値が [] になっていることとか。 あとでかくて遅い。気がする。
つーか、cgi.rbはソースがキモい。
121 :
先生、質問です! :02/08/31 02:30
蛇厨キタ━━━━━━(゚∀゚)━━━━━━ !!!!! [ruby-talk:48705] Ruby aesthetics > Hello. I've been checking into python lately quite a lot, and I > like its clean syntax. > > Then comes Ruby, which I find is inferior to python aesthetically.
日本は2chがあるから平和なんだな。
>>126 俺は藁ってヲチしてるんだけど、マジレスしてるのがいるなぁ。
アメリカ人かな。ちなみに48705の香具師はドメインからするとフィンランド。
まぁ煽りを楽しめる程英語はうまくないので、適当にやってくれってこった。
>>127 あれくらいの反応なら別に良いんじゃない?
おれは論争になるんじゃないかと思ってたんだが、
ruby-talkのみなさん大人だねえ。
>>129 同意。
しかし、48725、48725あたりはあっさり受け流してるようだけど、
48716がよくわからん。「お前はトロールか?」っていってんのか、
「釣ろうとしてる?」っつってんのか。
131 :
デフォルトの名無しさん :02/09/02 19:57
ERb で生成する htmlなんだけど。 Model と View を分離するため、変数だけ渡す方法はないだろうか。 eruby ファイルに、変数を追加してやるとか。 Marshal をうまく使って、html を生成するメソッドでも作ろうかと思ったんだけど もう少しスマートな方法があれば教えてほしい。
-hoge.rhtml <body> <h1><%= title %></h1> <ul> <% list.each { |item| %> <ul> <% list.each { |i| %> <li><%= i %> <% } %> </ul> </body> --hoge.rb title = 'title' list = ['a','b'] erb = erb('hoge.rhtml') erb.add_val('list', list) erb.add_val('title', title) erb.gene たとえばこんなやつ
Copy & Paste ミスッタ
puts ERbLight::new(File.readlines( hoge.rhtml).join).result(binding)
135 :
デフォルトの名無しさん :02/09/02 20:45
>>132 Walrus/OBAQのamritaを使う。
136 :
デフォルトの名無しさん :02/09/03 09:10
>>132 アムリタで書いてみた
-------------------------------
require "amrita/template"
include Amrita
t = TemplateText.new <<END
<body>
<h1 id="title"></h1>
<ul>
<li id="list">
</ul>
</body>
END
data = {
:title => 'タイトル',
:list => [ 'aaa', 'bbb' ]
}
t.expand(STDOUT, data)
-------------------------------
結果
<body>
<h1>タイトル</h1>
<ul>
<li>aaa</li><li>bbb</li></ul>
</body>
----------------------------------
>>134 あっさりできた。すげぇ。
>>136 それの考え方一回ウェブサイトで見て面白いと思ったんだけど。どうせなら
--
<ul id="list">
<li>Test Message 1</li>
<li>Test Message 2</li>
</ul>
↓
<ul><li>aaa</li><li>bbb</li></ul>
--
ってしたほうがさらに作りやすいんじゃないかと思った。
138 :
デフォルトの名無しさん :02/09/04 16:14
rubyを勉強してみようと思うんだけど、正直なところ速度的な所は Javaと比較してどうでしょうか?
カンタンなベンチマークでもしてみれば?
pythonは糞ぢょおも得!
pyてょんは糞だと思う一手を挙げて!
144 :
デフォルトの名無しさん :02/09/04 21:33
速度 Ruby >>> Java > Python
>>144 うそばっかり。
書いててむなしくないの?
146 :
デフォルトの名無しさん :02/09/04 22:29
はぁ? 試してみればぁ? Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Java > Python
Java>>>>>>>>>>>>>>>>>>>>>>>>Python>>>>>Ruby
なぜJavaと比較したいのか。
149 :
デフォルトの名無しさん :02/09/04 23:29
>>144 ,146,147
○○>>>××>>>>>△△みたいな表現がでてくると
糞スレになりそうなので控えようよ。
それよりも助けてください!
カレントディレクトリのフルパスを得ようと思って
下のようなコードを書いたら、NameErrorが返ってきました。
d = Dir.new("/home/")
puts d.pwd
結果
test.rb:4: undefined method `pwd' for #<Dir:0x401c6bf8> (NameError)
これってメソッドが無いっていわれてるんですよね?
試しに
p d.public_methods
をしてみたんですけどpwd、getwdのふたつの単語は存在しませんでした。
これはRubyのインストール時に問題があったのでしょうか?
環境は下記のとおりです。
Ruby 1.6.7
SerioWare GNU/Linux
>>149 Dir::pwd
or
Dir.pwd
>>145 あなた、釣られてます。144 は Ruby厨を装っている粘着アンチなんで、反応してると
恥ずかしいですよ。
で、実際のところの速度は、ruby や perl などのスクリプト系言語は、ほとんどの場合
Java より遅いでしょう。ruby は Java よりずっと動的な言語仕様なのでどうしてもそう
なりますが、どちらが悪いわけではなく必要に応じて使い分けるべきものです。
>>149 >>150 が書いているけど、pwdはDirクラスのクラスメソッドだから、
Dirのインスタンスに対してpwdを呼ぼうとしてもエラーになってしまうよ。
153 :
デフォルトの名無しさん :02/09/04 23:51
151は良識派を装ったアンチRubyです。 Rubyの速度がJavaに劣るわけがありません。 ましてPythonなんかに
>>150 ,152
ありがとうございます。
そうか、クラスメソッドとインスタンスメソッドの違いだったのか。
まだまだ理解が足りないな > 自分
よーし、がんばるぞ!
mercuryがゲキソクなのはワラタ
awkも速いな。機能が絞られてるからか?
クラスメソッドってのがいまいちピンとこないのです。。インスタンスメソッドとの違いも わかりにくいし。別に Dir のインスタンスメソッドで pwd 使えたっていいじゃん、とか。
>>160 ともかく、インスタンスメソッドとクラスメソッドは別物で、
それぞれ存在する理由もありますので、そのうち使い分けられるように
なればいいでしょう。それまでは、呪文を覚えるようにDir.pwdを使ってても
良いと思います。
えらそうに書いてスマソsage。
>>160 pwdってのはプロセス全体で共有するもので、複数存在しうるインスタンスに
所属するものではない。
という説明では納得できないか?
>>162 ということはインスタンスに依存しない全体に関係するようなメソッドがクラスメソッドと
ってことでしょうか。モジュール関数と同じような。
>>163 おれは
publicなクラスメソッド = モジュール関数
と理解している。クラスメソッドがインスタンスに依存するかどうかは
実装によると思うが、普通は全体に関するメソッドが多いな。
個人的にはクラスメソッドやモジュール関数という言葉は
Rubyに関して言えばあまり良い言葉ではない気がする。
165 :
デフォルトの名無しさん :02/09/07 01:50
>>164 クラスメソッドって、Smalltalk 由来?
>154 Perl>Javaと言っておきながら下では Java>Perlになってますよ。
167 :
デフォルトの名無しさん :02/09/07 21:51
168 :
デフォルトの名無しさん :02/09/07 23:13
169 :
デフォルトの名無しさん :02/09/12 11:51
erubyネタって何処で聞けばいいでしょうか?
170 :
デフォルトの名無しさん :02/09/12 12:26
#!/usr/bin/env ruby
pr = IO.popen("w3m -dump
http://chat.yahoo.co.jp/?myHome ","r")
pr.each_line do |line|
# print if line =~ /現在の参加人数/
if (line =~ /Yahoo/){
if (line =~ /-/){
if (line =~ /:/){
print
}
}
}
end
pr.close
yahooチャットの現在の参加人数を取得するrubyスクリプト を作ろうと、作ってみましたが、 if文の基本的な使い方が判りません。 上記のものを実行すればエラーが出ます。 どなたか、マチガイを指摘していただけませんか。
C 言語じゃないので {} は要らない
上のif文は解決しました。
こんどはw3mのクッキーの設定で叱られます。
以下のようにerubyとして実行させようとしてもクッキーが有効に
なりません。
どなたか、マチガイを指摘していただけませんか。
<%
pr = IO.popen("w3m -cookie /home/hishiura/.w3m/cookie -dump
http://chat.yahoo.co.jp/?myHome ","r")
pr.each_line do |line|
# print if line =~ /現在の参加人数/
if line =~ /Yahoo/
if line =~ /:/
print line
end
end
end
pr.close
%>
>172 どうもありがとうございました。
るびきちがム板から逃げたことで、ム板Rubyスレの進み具合が衰えてるね 1日中張り付いてたんだろうなぁ〜、オマエモナーとか言いながら ププ
177 :
デフォルトの名無しさん :02/09/14 04:08
rubyをつかって、 line1 line2 line3 line4 line5 lien6 ってなデーターに 1 line1 1 line2 2 line3 2 line4 3 line5 3 line6 という番号をつけるワンライナーってかけますか? 書けるのでしたら。
$ruby -n -e 'printf "%d %s", ($.+1)/2, $_' < any.txt
extend と include の違いが良くわかりませぬ。 というか extend ってどういうときに使うの?
>>182 perlishって正規の英語でしゅか
Rubyに対してはrubyish?rubish:rubysh?
>>183 あ、署名間違え
38 -> デフォルトの名無しさん
>>183 俗語かな。-ish で -っぽい
全言語のページからperlishを検索しました。 約6,550件中1 - 50件目 ・検索にかかった時間0.09秒
全言語のページからrubyishを検索しました。 約199件中1 - 39件目 ・検索にかかった時間0.09秒
>>185 おぉ、ありがとござました
これで2つ英語の単語力が増えたぞ
しかも皆知らんもな
187 :
デフォルトの名無しさん :02/09/16 01:32
Win32APIの構造体はRubyからどのように利用されてますか? class使うわけにも行かないし。
C言語でモジュール作らないと使えないんじゃない?
>>187 つーか、pack/unpackで詰め込むのが簡単っぽいな。
正しいかどうかのチェックができないのが致命的だけど。
そうですね、もしかするとCでインターフェースとる必要がありそうですね。 func=Win32API.new()でやると引数のタイプで問題がでるようです。 int,long,lpstr,void以外だとだめみたいですね。 StructクラスかArrayクラスとして構造体が利用できるのかと思ったのですが 現状まだむつかしいようですね。 >190 pack/unpackってなんですか?
ああ、わかりました。要するにCのpack関数を作って構造体のメンバーをpack/unpack してバイナリーでRubyとやり取りせよということですか。 オブジェクトのシリアライズのように。 ・・・。難しいテクニックですねぇ。
Win32APIの影に隠れがちだけどRuby/DLには構造体のためのクラスが付いてるようだけど?
195 :
デフォルトの名無しさん :02/09/16 14:36
質問です -- Ruby FAQ 5.5 privateとprotectedの違いが分かりません privateの意味は、メソッドを関数形式でだけ呼び出せるようにし、レシーバー形式では呼び出せないようにするという意味です。 -- この レシーバー形式っていったいなんですか。
>>195 普通に、インスタンスのメソッドを呼び出すときの
インスタンス + '.' + メソッド名
のような形式。例えば f.print みたいな。
オブジェクト(インスタンス)に対して、メソッドという命令を送りつけるというイメージから
受け取るほうをレシーバと言う。
>>193 Cで書く必要はない。
rubyist!あたりからWin3APIで検索してみ。
198 :
デフォルトの名無しさん :02/09/17 20:52
1.7のnet/ftp.rbを真似て付け足せば?
筆者自身自戒を込めて言うのだが、RubyユーザーはとかくRubyだけの世界に閉じこもりがちで、 そういう傾向が強まると「Rubyがすべて、Ruby以外は全部ゴミ」という「Ruby教信者」の性格を 帯びてくるようだ。コンピュータ関係の書籍といえば、Rubyの本しか読まず、ネットでもRuby 関係のニュースはするどくチェックを入れてるが、その他の情報にはまったく興味を示さない。 Ruby以外の情報から隔離されている状況なのだ。 もちろん、Rubyは充分に魅力的だし、「Rubyが使えたらそれでいいんだ、おれは(わたしは)」と あなたが考えていたとしても不思議はない。だけど、狂信的な世界に入り込み、まるでアメリカの 片田舎の新興宗教みたいに最後は集団自決、という道をたどらないためにも(……)、Ruby以外の 情報に身をさらすことも多少は必要ではないかと思うのだ。 コラム・Ruby関係「井の中の蛙」より
>>199 そのまま 1.7 の ftp.rb が動いたりしない?
動いても不思議はないと思うんだけど。
>>193 pack/unpack って、rubyのメソッドでしょ。
「Rubyライブラリ編」にNet::SMTPの説明ってないの?
今月の ASCII で話だけ出ていた WideStudio の ruby 版が出るといいなあ。
205 :
デフォルトの名無しさん :02/09/19 05:59
Perlerが死滅すると嬉しい
206 :
デフォルトの名無しさん :02/09/19 05:59
Perlユーザって臭いんだよな。 どんどんPerlスレを荒らそうぜ!
でも死滅しないので悲しい
208 :
デフォルトの名無しさん :02/09/19 06:02
209 :
デフォルトの名無しさん :02/09/19 06:04
Perlスレッドの削除依頼を出し続ければPerlスレッドを消し去ることも可能だ
こんな朝っぱらからジサクジエンでつか。
211 :
デフォルトの名無しさん :02/09/19 06:06
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>> Perl 良貨が悪貨を駆逐する
212 :
デフォルトの名無しさん :02/09/19 06:06
とは限らないのが現実
Rubyは最高言語 Perlなんかもともと眼中にありません。糞野郎
最後の一言で悔しさを表してみました。
Perlユーザが憎くてならない。こいつらを抹殺する方法はないものだろうか。
憎しみからは何も生まれない
>>205-215 そんなにPerlを死滅させたいなら、
「Perlって死滅しちゃうの?」スレでも勝手に立てて、そこで喚いてろ。
誰か立ててくれ。糞パーラーを殲滅したい
219 :
デフォルトの名無しさん :02/09/19 18:13
おいたが過ぎるとどうなるかわかってるよね? あまりひどいようなら削除依頼してください。
222 :
デフォルトの名無しさん :02/09/20 08:52
何のためにRubyを勉強したかというと、Perlユーザを馬鹿に出来る権利が欲しかったから。
>>222 なんだか「僕は馬鹿です」って書いてあるみたいだね。
てか、もーちょい大人になろーぜ。 ちゃんとした Ruby についての話はできんのか。 これじゃ、Ruby ユーザーは誇りばかり高くて糞っていわれてもしゃーないわな。 マジレスしてしもた…、逝ってきます。
226 :
デフォルトの名無しさん :02/09/20 13:26
実はPerlerの方が大人気ないという罠。
(脳内パーサ) だいにんき→誤変換→バックトラック→おとなげ
>>226 PerlとRubyのユーザー年齢層の割合を調べれば、
Perlの方が低年層の割合が多そうだな。
こんな感じで、、、
厨房or工房がホームページを作る→CGIに挑戦したくなる
→CGIと言えばPerl(藁。というよりPerl以外でCGIを組める鯖少なすぎ!
→Perlの勉強をする→僕も私も今日からPerler!
でも、彼らが将来、その言語の担い手になっていくことを考えると、
Rubyは若者獲得に向けてもっと頑張る必要があると思うの俺だけ?
Rubyに将来なんて、ない
粘着基地外荒らしは放置でお願いします。 粘着基地外は Ruby ユーザのふりして Perl を攻撃することで Ruby が反感をかう ように仕向けています。また自作自演で話を大きくしようとしています。 相手をしないでください。
でもrubyユーザってruby以外の言語を軽蔑してrubyの世界に閉じこもっちゃってるよね。 色んな言語触って見たらもっと世界が広がるのに。 マジレススマソ。
>>233 ああ、やっぱり基地外一人のせいで、そんな印象をもたれてるのかいな。
実際のユーザはいろんな言語を触ったりし、状況に応じて言語を使い分けて
いる人が多い。逆に Ruby だけ、なんて人は少ないんじゃないか。
>>233 他言語を軽蔑なんかしていない。そう思わせようと仕向けている粘着がいるだけ。
236 :
Ruby歴5時間 :02/09/21 02:58
C++厨ですが改宗を決めました。 えーと、あるクラスのメソッドをoverrideするとき、例えば下記ですが、 class Foo < File def each_line(sep) aProc = Proc.new super(sep, &aProc) end end と、わざわざProc.newしないで super(sep) と書くだけで上にブロックまで もが渡されるのはなんでですか?そういうものですか? 手元に「プログラミングRuby」と「オブジェクト指向スクリプト言語Ruby」が あるんですが、説明ってどっかにありますかねえ…。 是非おしえてくださいませ。。
>>133 SmalltalkやLisp好きも多いよ!
もちろん、Perlは先輩だし。
関数型言語は...
どうやらsage進行でしたね…スマンコ。
もういっこ質問なんですが、attr_accessor はクラス変数には使えないんですか? 自分で代入演算子をかかなければならない??
程度の低い書き込みは余所でやれ。
うーん。冷めた。
>>239 クラス名がFuga,変数名がhogeならFuga.hoge=(var)を書く。読む方のアクセサも適当に書く。
>>240 答える優しさがない奴はヨソのperlスレでも荒らしてれば?(藁
布教の邪魔というわけか。
245 :
デフォルトの名無しさん :02/09/21 09:04
>>236 なんでって
もともとブロックは暗黙に引数として渡されるのだから
そのほうが自然だと思うけど
>>236 そういうもの。
superだけでなく、あるメソッドから別のメソッドを呼び出すときにブロックは引き継がれる。
馬鹿ばっか 低級者を甘やかすな
>>243 ということは、クラス変数には attr_accessor は使えないってことですか?
いや、別にほとんど必要ないからいいけど。
>>246 引き継ぎたくない場合はブロックを&引数で受けて、別のメソッドにはそれを
渡さなければいいんかね
>>251 引き継ぎたくない場合ってどんな場合?
>>250 荒らしは無視してマターリいきましょう。
>引き継ぎたくない場合ってどんな場合? いや、漏れも初心なので言語仕様が知りたかったのです。スマソ。
ブロックを引き継ぐのは、245もいってるけどそのほうが自然だし便利だから バグじゃなくそういう仕様でしょ。tk のライブラリ関係で多用されていたような 気もする。
>>246 superはともかく普通のメソッド呼び出しでは引き継がれないんじゃないの?
低レベルな話で盛り上がってるな。このスレも終わりか。
>低レベルな話で盛り上がってるな。このスレも終わりか。 で、240よ…お前は何ができるんだ?(藁
perl
ruby-list:33212
260 :
デフォルトの名無しさん :02/09/21 14:10
バグだったのか… 1.6.5を使っていたので、最新にしてみます。
どうもありがとう
>>259 ,249 その他の方。
で、super はどうなのよ?
>>259 すまん、そうだったのね。今は引き継がれるのは super のときだけかな。
あとブロックを渡されたメソッドの中で、引数なしで Proc.new すると、
そのブロックが使われるみたいね。
>>262 1.6.7にしてみました。superには渡るように見えますね。練習で書いたんですが
以下で検証できてますか?
class Foo < File
def each_line(sep)
super(sep)
end
end
if __FILE__ == $0
a = Foo.new("/etc/passwd")
a.each_line(" ") do |l|
p l
end
end
>>264 良いんじゃないでしょうか。
しかし ruby を使い始めたばかりでここまで理解できるのはすごいなあ。
266 :
デフォルトの名無しさん :02/09/21 15:40
君のレベルが低いだけ。 みんなでPerlスレッドを荒らそう!
>>266 >君のレベルが低いだけ。
>
>みんなでPerlスレッドを荒らそう!
このスレでは、スレ荒らし=レベル高いのか?
やっぱり rubyユーザ は最低だな。 Perlなんかほっといても衰退するのに。 弱い者いじめカコワルイ
perl消えろ!
一人だけ何を議論してるのかわからずに騒いでるヤシがいるスレはここですか?
>>248 一応使える。
class Hoge
class << self
attr_accessor :fuga
end
end
Hoge.fuga = "hoge"
p Hoge.fuga
272 :
デフォルトの名無しさん :02/09/22 00:05
勘違いしていた。 クラス変数を使いたい場合は上のソースはおかしい。 上のソースはクラスのインスタンス変数の場合。 $ ruby -e ' class Hoge class << self attr_accessor :hoge end end Hoge.hoge = "hoge" p Hoge.hoge Hoge.instance_eval{ p @hoge p @@hoge }' "hoge" "hoge" -e:12: uninitialized class variable @@hoge in Object (NameError) from -e:10:in `instance_eval' from -e:10:in `instance_eval' from -e:10
クラスメソッドのaliasは作成できますか?
275 :
デフォルトの名無しさん :02/09/22 09:59
>>274 class Hoge
def Hoge.hero
"moemoe"
end
class <<self
alias :moe :hero
end
end
class <<Hoge
alias :nae :hero
end
puts Hoge.hero
puts Hoge.moe
puts Hoge.nae
やっていることは同じだけど、一応二種類。
Hogeのメタクラスで宣言すればいいのさ。
276 :
デフォルトの名無しさん :02/09/22 16:09
オブジェクトの深いコピーってこれ意外に何か方法ありますか? newobj = Marshal.load(Marshal.dump(obj))
>>276 再帰的な dup なら instance_variables や instance_eval などで書ける。
しかし、すべての要求を満たす万能な方法は原理的に存在しない。例えば
class X; def initialize() @x = X end end; deepcopy(X.new)
が @x の値を dup すべきかどうかは目的次第。
結局、目的により自分でコピーメソッドを書くしかない。
278 :
デフォルトの名無しさん :02/09/22 22:34
279 :
デフォルトの名無しさん :02/09/23 00:19
下のperlのプログラム @string = <STDIN>; print @sting; Rubyだとどう書くのでしょうか?
>>279 string = STDIN.readlines
print string
>>275 ありがとう。
selfがどこで何になっているか、いまいち把握できてないな漏れ
トップレベルでは main という特殊なオブジェクトが self。
irb で self と打ってみれば分かる。
2行目の print は main の private method。
private method はレシーバを省略した形でしか記述できないので、
あたかも関数呼び出しのようになる。
クラス定義の文脈ではクラスが self。
>>275 氏ので二種類が同じ働きをするのを見れば分かると思う。
メソッド定義の文脈ではインスタンスが self。
>>282 > クラス定義の文脈ではクラスが self。
>
>>275 氏ので二種類が同じ働きをするのを見れば分かると思う。
ちょっと違う。275 は特異クラス定義なので alias してるところの
self は特異クラス。また alias は文法要素であってメソッドではないため、
self との関連は間接的。もっとも 281 には些細な違いかも。
285 :
デフォルトの名無しさん :02/09/24 23:07
現在、日本人で、ruby/GoogleAPIを使って 何かソフトを作っている人っていますか? いたら、教えれ。 どこで聞いたらいいのやら。
Perlをののしり、Perlスレの進行を妨害している粘着基地外のRubyユーザがいます。騙されたり煽られたりした人がたくさん出ています。同調しないようお願いします。
>>285 > どこで聞いたらいいのやら。
Ruby/Google を知ってる人は日本人でも ruby-talk を読んでそうだし
ここよりは ruby-talk で聞くのがよさげ
質問です。 %ls ~/map-data tokyo/ tiba/ totigi/ fukushima/ %ls ~/map-data/tokyo/ 20020920.map 20020921.map 20020922.map 20020923.map 20020924.map 20020925.map のように階層化された気象データ(Tab区切りCSVファイル)があります。 例えば tokyo/ と fukushima/ フォルダ内の 20020923.map だけを取り出し、 「43行目の8列〜10列」と 「44行目の8列〜10列」のデータを 地域 43行 44行 tokyo 12 11 88 12 10 90 fukushima 15 9 70 13 10 78 のようにTab区切りで出力したいです。 先輩に質問すると、awkとPerlでやればできるよ、と 言われましたが、rubyでどうにかならないもんでしょうか。 ぼくはawkとPerlもrubyも同程度に「低レベル」なのです。
289 :
デフォルトの名無しさん :02/09/25 13:27
290 :
デフォルトの名無しさん :02/09/25 14:01
package Foo; use overload '+' => \&addFoo; sub addFor { #処理内容 }
>>288 def pick(locate, time, rows, columns)
locate.each do |where|
fn = File.expand_path("~/map-data/#{where}/#{time}.map")
data = open(fn).readlines.map{|line| line.split("\t")}[*rows]
value = data.map{|r| r[columns].map{|c| "%4s" % c}.join}.join
print locate, "\t", value, "\n"
end
end
pick(["tokyo", "fukushima"], "20020923", 43..44, 8..10)
# 未テスト
>>288 > (Tab区切りCSVファイル)
ムジューン
293 :
デフォルトの名無しさん :02/09/26 00:10
UNICODEのファイルを処理したいんですが、UnixのNKFコマンドでは できません。rubyを使えばできると聞いたのですが、 どうやってやるのでしょうか。osiete。
コード変換についてはUnixならRuby1.7に標準添付のIconvを使う手も。
>>292 Tab区切りのテキストでした。 >>291 有難うございます。 print locate, "\t", value, "\n" ↓ printf("%10s %10s\n",where,value) に変更すれば、うまく動作しました。 実は、この 20020920.map 20020921.map ……というのはとあるプログラムの 出力データなのですが、検算や精度比較のため他のアルゴリズムで計算させた 出力データも同時に一覧出力できればと考えています。 ~/prog1nd/map-data/ ~/prog2nd/map-data/ 以下にそれぞれ吐き出された[日付].map ファイルを 20020923: 地域 43行 44行 -------------------------------------------------------------------------------------------------------- tokyo(prog1nd) 12 11 88 12 10 90 tokyo(prog2nd) 12 11 88 12 10 90 fukushima(prog1nd) 15 9 70 13 10 78 fukushima(prog2nd) 15 9 70 13 10 78
のように見やすく、同じファイルに出力したいです。 def pick(version, locate, time, rows, columns) version.each do |vnum| locate.each do |where| fn = File.expand_path("./#{vnum}/#{where}/#{time}.map") data = open(fn).readlines.map{|line| line.split("\t")}[*rows] value = data.map{|r| r[columns].map{|c| "%4s" % c}.join}.join printf("%10s %10s\n",where,value) end end end pick(["prog1nd", "prog2nd"], ["tokyo", "fukushima"], "20020923", 43..44, 8..10) のみたいにするとすれば、printf("%10s\(%s\)\t\t\t%10s\n", where, vnum, value) でつまずきます。 どなたか何かよいアドバイスはないでしょうか。
>>297 data = の末尾の [*rows] は [rows] じゃないとマズそう
出力を見ないとデータが手元にないからデバグが面倒
出力できるなら、printf() の代わりに p sprintf() にしたものキボン
300 :
デフォルトの名無しさん :02/09/26 21:30
もう少し判りやすいデータで示します。 def pick(version, locate, time, rows, columns) version.each do |vnum| locate.each do |where| fn = File.expand_path("./#{vnum}/#{where}/#{time}.map") data = open(fn).readlines.map{|line| line.split("\s")}[*rows] value = data.map{|r| r[columns].map{|c| "%4s" % c}.join}.join printf("%10s\(%s\)\t\t\t%10s\n", where, vnum, value) #p sprintf("%10s\(%s\)\t\t\t%10s\n", where, vnum, value) end end end pick(["prog1nd", "prog2nd"], ["tokyo", "fukushima"], "20020926", 42..43, 2..3) は tokyo(prog1nd) 1274327 1304430 1334534 fukushima(prog1nd) 1288107 1318300 1348493 tokyo(prog2nd) 1274327 1304430 1334533 fukushima(prog2nd) 1288107 1318300 1348493 です。
301 :
デフォルトの名無しさん :02/09/26 21:33
見えづらいですが、データーが Red[53118]% tail prog1nd/tokyo/20020926.map prog1nd/fukushima/20020926.map ==> prog1nd/tokyo/20020926.map <== 36 388 106 3606 37 399 109 3709 38 410 112 3812 39 421 115 3915 40 432 118 4018 41 443 121 4121 42 454 124 4224 43 465 127 4327 44 476 130 4430 45 487 133 4534 ==> prog1nd/fukushima/20020926.map <== 36 596 107 6756 37 613 110 6949 38 630 113 7142 39 647 116 7335 40 664 119 7528 41 681 122 7721 だとして、 p sprintf の出力は ------------------------------------ " tokyo(prog1nd)\t\t\t 1274327 1304430 1334534\n" " fukushima(prog1nd)\t\t\t 1288107 1318300 1348493\n" " tokyo(prog2nd)\t\t\t 1274327 1304430 1334533\n" " fukushima(prog2nd)\t\t\t 1288107 1318300 1348493\n" ------------------------------------ となります。
あ、頂いたプログラムは pick(["prog1nd", "prog2nd"], ["tokyo", "fukushima"], "20020926", 42..43, 2..3) のように、 42..43, 2..3) 変更しました。 ^^^^^^ printfだと、レコード値が二つひっついて出力されます。 ------------------------------------------------------- tokyo(prog1nd) 1274327 1304430 1334534 fukushima(prog1nd) 1288107 1318300 1348493 tokyo(prog2nd) 1274327 1304430 1334533 fukushima(prog2nd) 1288107 1318300 1348493
データーが途切れてました。すみません。何度も。 Red[53118]% tail prog1nd/tokyo/20020926.map prog1nd/fukushima/20020926.map ==> prog1nd/tokyo/20020926.map <== 36 388 106 3606 37 399 109 3709 38 410 112 3812 39 421 115 3915 40 432 118 4018 41 443 121 4121 42 454 124 4224 43 465 127 4327 44 476 130 4430 45 487 133 4534 ==> prog1nd/fukushima/20020926.map <== 36 596 107 6756 37 613 110 6949 38 630 113 7142 39 647 116 7335 40 664 119 7528 41 681 122 7721 42 698 125 7914 43 715 128 8107 44 732 131 8300 45 749 134 8493
>>302 "%4s"%c したのを join してるからね その辺適当に変えるしか
"%8s"%c にするとか join(" ") にするとかあるいはいっそ↓こんなんとか
マニュアルみながらいろいろやってみるべし
data = open(fn).readlines.map{|line| line.split("\s")}[rows]
value = data.flatten.join("\t")
>>304 どうもありがとうございました。頑張ってみます。
xoopsのruby版みたいなのはないっすかね? esehttpdで動かしてみたいんですが。
307 :
デフォルトの名無しさん :02/09/27 23:06
WIN32OLEについて誰か教えてください。 IEが別のページに飛ばないようにしたいのですが、DWebBrowserEventの BeforeUpdateでうまくキャンセルできません。 参照渡し引数のCancelをtrueにして返すにはどうするのでしょうか? どうやらRubyのfalseを値渡しされていて、変更できていない気がします。 代案としてHTMLFormElementEventsのonsubmitを使うこと考えたのですが、 戻り値にVariant_Boolを返す方法が分かりません。 試しにRubyのtrue,falseを返してもみたものの、やはり駄目でした。 環境はWindowsXPにIE6.0です。 どなたか分かる方がいらっしゃいましたらご教授ください。
>>307 >>308 が書いてるページの2月あたりに、その件についてのやり取りがあるよ。
どうもハッシュで返すみたいだ。
310 :
ruby/GoogleAPI :02/09/28 18:28
現在、日本人で、AmazonAPIをrubyから使って 何かソフトを作っている人っていますか? いたら、教えれ。 どこで聞いたらいいのやら。
311 :
perl厨房 :02/09/28 19:13
発売ほやほやの「らくだ本3版」より。 sub color_font { my $color = shift; return "<FONT COLOR='$color'>@_</FONT>"; } と定義して、 sub red { color_font("red", @_) } sub green { color_font("green", @_) } sub blue { color_font("blue", @_) } sub purple { color_font("purple", @_) } と呼び出すのは面倒なので、 @colors = qw(red blue green yellow orange purple violet); for my $name (@colors) { no strict 'refs'; *$name = sub { "<FONT COLOR='$name'>@_</FONT>" }; } とする方法がらくだ本3版にありましたが、 rubyだと、関数を生成してながら実行するコードってどのようなサンプルが ありますか?なんかいい例ないかな。探してます。
>>311 Rubyでかくと、
def color_font(color,str)
"<FONT COLOR='#{color}'>#{str}</FONT>"
end
def red(str); color_font("red", str) end
def green(str); color_font("green", str) end
def blue(str); color_font("blue", str) end
def purple(str); color_font("purple", str) end
を
colors = %w(red blue green yellow orange purple violet)
colors.each do |name|
eval(<<-END)
def #{name}(str)
"<FONT COLOR='#{name}'>\#{str}</FONT>"
end
END
end
と書くことかな?
この方法は、cgi.rbで俺は見つけた。
313 :
デフォルトの名無しさん :02/09/28 23:36
cgiというより一般の話なのでこっちでききます。 % ruby 【ここから標準入力に入る。】 require "cgi" cgi = CGI.new("html3") # add HTML generation methods cgi.out { CGI.pretty ( cgi.form { cgi.hidden{} + cgi.text_field{} + cgi.submit{} } ) } 【Ctrl-D】 としてCGIの雛型を作ってから、エディターを立ち上げることが多いのですが、 最初の4行っていつも固定なので、もっと短くする方法ってどのような方法が 適していますか?初心者なので、クラスを作るべきか、あるいは メソッドを作るべきかの判断が出来ませんでしたので、 質問しました。 クラスか?それともメソッドか? 短く書ける方法が知りたいっす。
>>312 こうすると eval を使わなくて済むので $SAFE == 3 でも使えたり
cgiで使うならxssを考慮して x.tainted? の検査もした方がいいかも
でも動的定義ってrdocとかと相性悪いしあんま好きくない
class Object
colors = %w(red blue green yellow orange purple violet)
colors.each do |name|
define_method(name){|x| %Q(<FONT COLOR="#{name}">#{x}</FONT>)}
private name
end
end
>>313 そういうファイルを吐くエイリアスとかシェルスクリプトを作っとくとか、
その状態でスタートするエディタのマクロを定義しとくのはどう?
エディタマクロならカーソルの位置まで指定できるし。
どれだけ頻繁にやるかの問題かも。
ライブラリ化するのは管理するものが増えて面倒な気がちょびっとする。
>>315 つーかRuby内で解決できないのかyo!
>>316 別にrubyだけで解決しなくてもいいだろ。
こういうの用意して、cgi.rb の代わりに require してもいいけど、
cgi なだけにインストール先とか悩むこともあるだろってこと。
require "cgi"
require "delegate"
def cgi(lv = "html3")
obj = SimpleDelegator.new(CGI.new(lv))
class <<obj
alias __out out
def out(*a) __out(*a){CGI.pretty(html{yield})} end
end
obj
end
>>317 引数を () でなくて call() か [] で渡す必要があるのはともかくとして
スコープを越えるには定数かグローバル変数にしないといけないとか
320 :
デフォルトの名無しさん :02/09/29 09:24
>>318 有難うございました。現状では、エディタのマクロよりも
zsh% </var/www/html/ruby/my-skel-form.rb
require "cgi"
require "delegate"
def cgi(lv = "html3")
obj = SimpleDelegator.new(CGI.new(lv))
class <<obj
alias __out out
def out(*a) __out(*a){CGI.pretty(html{head{cgi.title{'myform'}}+body{form('GET'){yield}}})} end
end
obj
end
として、
ruby -r/var/www/html/ruby/my-skel-form.rb -e 'puts cgi.out(){ cgi.text_field('q'){} + cgi.submit('ok'){} }'
みたいにするのが一番いいと感じてます。
この方法だと、もう少し工夫してちょっとしたjavascriptなど埋め込んでも支障なし、
でかなり使えそうです。
だけど、この場合、特に outって名前をわざわざ使うメリットって何かあるのでしょうか?
def myout(*a) __out( 〜 と大差ないような……
require "cgi" require "delegate" def cgi(lv = "html3") obj = SimpleDelegator.new(CGI.new(lv)) class <<obj alias __out out def out(*a) __out(*a){ CGI.pretty( html{ head{ cgi.title{'myform'} + cgi.script('language' =>'JavaScript'){ 'document.write();' # ココにJavascriptを埋め込むためにyield を使いたい。 } } + body{ form('GET'){yield} } } ) } end end obj end 上の定義で、cgi.script のブロック 内 でもyield で定義したいのですが、 form(){yield} で既に使われているために、他の解決法が思いつきません。 これでは全く教えて君ですが……
>>321 それは本当に楽なのかと小一時間
例を一応示しとくけどマクロが欲しいならm4でも使えといいたい
% cat foo.rb
require "cgi"
require "delegate"
@@mycgi = nil
def cgi(lv = "html3")
return @@mycgi if @@mycgi
obj = SimpleDelegator.new(CGI.new(lv))
class <<obj
attr_accessor :js
def main(*a)
content = html{
head{ title{'myform'} + script('language' =>'JavaScript'){js} } +\
body{ form('GET'){yield} }
}
out(*a){ CGI.pretty(content) }
end
end
@@mycgi = obj
end
% ruby -r foo -e 'cgi.js="document.write();" ; cgi.main{cgi.p{"hello"}}'
323 :
デフォルトの名無しさん :02/09/30 09:27
>>321 遅くてよければ、こんな手もある
require 'amrita/template'
include Amrita
t = TemplateText.new <<END
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>myform</TITLE>
<SCRIPT language="JavaScript" id=js></SCRIPT>
</HEAD>
<BODY>
<FORM id=form METHOD="GET" ENCTYPE="application/x-www-form-urlencoded"></FORM>
</BODY>
</HTML>
END
t.expand(STDOUT, { :js=>"document.write();", :form=>noescape { "<p>hello</p>"} })
どうもです。これらで問題は解決できそうです。 m4やamritaもしばらく使ってみます。
irbをirb-0.9-02.09.03にしたら % cat ~/.irbrc require "irb-history" require "irb/completion" % irb /usr/lib/ruby/1.6/irb/completion.rb:187: undefined method `completion_append_character=' for Readline:Module (NameError) from /home/hishiura/.irbrc:2:in `require' from /home/hishiura/.irbrc:2 from /usr/lib/ruby/1.6/irb/init.rb:198:in `load' from /usr/lib/ruby/1.6/irb/init.rb:198:in `run_config' from /usr/lib/ruby/1.6/irb/init.rb:196:in `each' from /usr/lib/ruby/1.6/irb/init.rb:196:in `run_config' from /usr/lib/ruby/1.6/irb/init.rb:195:in `catch' from /usr/lib/ruby/1.6/irb/init.rb:195:in `run_config' from /usr/lib/ruby/1.6/irb/init.rb:21:in `initialize' from /usr/lib/ruby/1.6/irb.rb:55:in `start' from /usr/bin/irb:13 となってirbが起動せんぞー。 補完って仕様変わったの?
rand/srandを使って独立した乱数オブジェクトって出来ないのかな? old = srand(@seed) r = rand @seed = srand(old) こんな風に種(@seed)をローカルに持ってみたけど、 種はまったく変化していかない事に気づいた。
リテラル病 literal literal literal literal
>>328 1.6.6のソース見たけど、srandが返す古いseedは前回srandした時のseedみたいね。
普通にrandが呼び出された場合は一切無視して、こんな感じでどうよ?
class Random
attr_reader :seed, :times
def initialize(seed = 0)
@seed = seed
@times = 0
end
def next_num(max = 0)
srand(@seed)
@times.times do
rand()
end
@times += 1
rand(max)
end
end
nest_numが何度も呼び出された場合、
かなりいらない処理が多くなってしまうので全然実用的ではないけどね。
繰り返し呼び出される場合は工夫するように変えてみればいいと思う。
あと、マルチスレッドなんてしたら、それこそダメダメだな…。
>>328 Cレベルで random() を呼ぶたびに前回の状態を復帰しないと無理っぽい
状態をとるには BSD 4.3 に由来する setstate() があるところだと出来るかも?
自力でやるには libc のソース見ながら Ruby で non-linear additive feedback
random number generator を実現してみるとか
>>330 その方法も考えたんだけど、どんどん付加が、
大きくなっていくから止めとこうと思った(w
素直に独自実装したほうがよさそうですね。
>>333 作るって言っても数行のRubyのコードを
書くだけなんで…そんなに気合い入ってません。
もし1.7で乱数オブジェクト化出来るように
なるんならそっち使お。
rubyの配列って何次元まで作れるんですか?
>>335 メモリが許せば好きなだけ。
ただし単に配列の中に配列があるだけなので次元といっていいのかわかんないけど。
いわゆる多次元数値配列を扱うにはRAAにあるNArrayが良いかも。
irbの補完が恋酢ぃーYO!!だって今つかえないんだもん。 みなさんふつーにirb-0.9-02.09.03にアプ できますたか?
>>327 -list だか -dev だかに投げた方がよさげ
仮にここでパッチが出ても本家に伝わるまでに時間かかりそうだし
339 :
デフォルトの名無しさん :02/10/03 10:57
べき乗演算子の存在を知らずにMath.expを常用していたうっかり者の数→1
●●●●●●●●「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●● /| | |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ | | | ̄ ̄ ̄ /| || | | | / /|TTTTTT TTTTTTTTTT||TTTTT | /\ | /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^ | / / |// / /| | / / |_|/|/|/|/| | / / |文|/ // / |/ /. _.| ̄|/|/|/ Λ_Λ /|\/ / / |/ / (___) /| / / /ヽ /〔 非OO 〕〕つ | | ̄| | |ヽ/l `/二二ヽ | | |/| |__|/ Λ_Λ / /(_) | |/| |/ ( ´∀`) (_) Λ_Λ | | |/ // / ^ ̄]゚ (` ) | |/ ゚/ ̄ ̄_ヽ ⊂〔〔 非OO 〕
ruby基地外の荒らしに遭って「Perlについての質問箱」が潰された。 rubyユーザって最低だな。
>>341 めんどくさい上に整数の場合いらん誤差までつくという…悲劇(w
ははは
モジュールMで参照可能な定数Cがどのモジュールで定義されたか知る方法ってあります?
>>347 自己レス なんとなく分かりました
name.split(/::/)とancestorsを歩きながらconst_defined?で調べていけば良いみたい
ム板の「Perlについての質問箱」がruby基地外によって潰されました。 心ある人は、rubyスレにお礼参りしてください。
Rubyのホームのトップページは情報を整理して解りやすく 1ページに納めてユーザーにスクロールを強制させないように しようという配慮がまったく感じられない。 とかいまさら言ってみるテスト
そう思うなら
>>350 がデザインを提案するとか志願して代わりにやってやるとか。
管理者に出来るもんならそうしてあるだろうから、出来ないからやってないと思われ。
あるクラスから現時点で、どれだけインスタンスが生成されているかを 知る方法ってありますか?
>>352 コンストラクタが呼ばれるたびに、クラス変数のカウンタをインクリメントすればいいんでは。
>>352 353のやりかたがすなお
require "thread"
class Foo; @@c = 0; def initialize(); Thread.exclusive{@@c+=1}; end; end
ちからわざだとこう
def n(klass) c=0; ObjectSpace.each_object{|i| i.class==klass && c+=1}; c; end
互いに関連するオブジェクトを大量に生成する必要があるのですが、 例えば、 sony_humanResource = HumanResource.new("sony") sony_finance = Finance.new("sony") sony_activeField = ActiveField.new("sony") sony_convention = Convention.new("sony") sony_participant = Participant.new("sony") sony_newCommer = NewCommer.new("sony") sony_oldCommer = OldCommer.new("sony") sony_purpose = Purpose.new("sony") のように連続的にオブジクトを作って、出来上がったsony_XXXXってオブジェクトを グループ化させたいんですが、どのような方法がありますか。 ------------------------------------------------------------------------ 厨な方法: store(HumanResource, sony_humanResource) store(Finance, sony_finance) store(ActiveField, sony_activeField) store(Convention, sony_convention) store(Participant, sony_participant) store(NewCommer, sony_newCommer) store(OldCommer, sony_oldCommer) store(Purpose, sony_purpose)
>>355 その「グループ」に対するインターフェイスによりけりかと
Struct使えば? Group = Struct.new(:humanResource, :finance, :activeField, ...以下略) def group(name) group = Group.new group.humanResource = HumanResource.new(name) group.finance = Finance.new(name) group.activeField = ActiveField.new(name) <略> group end sony = group("sony")
>>353 >>354 有難うございます。
>>357 便利そうですね。Struct。これをしばらく使ってみます。
ついででなんですが、このStructの実装例か何かご存知ですか?
RAAとかでもいいんです。
>>358 実装例? 標準ライブラリにおける利用例なら以下が出力する
require "rbconfig"
require "find"
Find.find(Config::CONFIG["rubylibdir"]){|fn|
next if /\.rb\z/ !~ fn
g = open(fn).read.grep(/\bStruct\b/)
print g.join.gsub(/^/,fn+":") unless g.empty?
}
>>359 >実装例? 標準ライブラリにおける利用例なら以下が出力する
有難うございました。標準ライブラリにおける利用例で結構なんです。
# しかし、他の人はこうして勉強してたのか……
どうもでした。
361 :
デフォルトの名無しさん :02/10/05 03:04
MS-Windows版のrubyをW2kにインストールして使っているんだけどコマンドプロンプトで c:> hoge.rb foo bar とした場合、ARGVでコマンドの引数が取れない。 c:> ruby hoge.rb foo bar ならOK…ってこんなもん?せっかくrubyって省略できるんだったら引数も取ってほしいんだけど・・・。
>>361 cygwin版ではこうなる。
$ cat foo.rb
#!/usr/local/bin/ruby
p ARGV
$ ./foo.rb foo bar
["foo", "bar"]
>>366 とりあえず p でテストするのがいいかと
$ ruby -ruri -e'p("start",ENV["hogeserch"].to_s+"+"+URI::escape(ARGV[0]))' 日本語
>>357 ><略>
>group
>end
>
>sony = group("sony")
このグループ構造体オブジェのsonyと
引数の"sony"との間の違いはどうやって区別されるのでしょう。
irb(main):001:0> sony.type
とした場合。
新しく出た正規表現のruby本はどうよ。
>>369 とりあえず、日本語勉強してから質問すれ
意味分からん
irb(main):001:0> sony.type
の結果が
#<Class:0x1019dc38>
となるが、気にするな、区別する必要なんてねーよ
372 :
デフォルトの名無しさん :02/10/06 02:47
金光って奴の質問がうざい。
>>371 とりあえず
>>369 のききたいことが何か分からんのには同意するけど、
> irb(main):001:0> sony.type
> の結果が
> #<Class:0x1019dc38>
これマジ?無名クラスの name は最初に見つかった名前になるんじゃなかったっけ?
>>357 を真似て得たのは↓なんだけど。
% irb
irb(main):001:0> X = Struct.new(:a,:b,:c)
X
irb(main):002:0> def x(a,b,c)
irb(main):003:1> x = X.new
irb(main):004:1> x.a = a
irb(main):005:1> x.b = b
irb(main):006:1> x.c = c
irb(main):007:1> x
irb(main):008:1> end
nil
irb(main):009:0> x = x(4,5,6)
#<X a=4, b=5, c=6>
irb(main):010:0> x.type
X
irb(main):011:0> RUBY_VERSION
"1.6.7"
もしかして名前が全く見つからない場合?
irb(main):012:0> Struct.new(:x,:y).new
#<#<Class 0lx80b8d74> x=nil, y=nil>
Ruby で閉じてるのは
>>359 の通りだけど、普通はこうするんじゃないかなあ
% cd /usr/local/lib/ruby/1.6
% grep -r '\bStruct\b' .
zsh ならこれ↓でもよし
% grep '\bStruct\b' **/*.rb
考えてみればRubyのglobも **/*.rb を理解するから、
>>359 もこうできるな
require "rbconfig"
Dir[Config::CONFIG["rubylibdir"]+"/**/*.rb"].each{|fn|
g = open(fn).read.grep(/\bStruct\b/)
print g.join.gsub(/^/,fn+":") unless g.empty?
}
>>374 は普通(?)こう書くと思う
irb(main):001:0> X =Struct.new(:a,:b,:c)
X
irb(main):002:0> def x(a,b,c) X.new(a,b,c) end
nil
irb(main):003:0> x = x(4,5,6)
#<X a=4, b=5, c=6>
irb(main):004:0> x.class
X
def と new は同じ行にしなくても良いが。
そういや Object#type() がなくなるそうだが、#class() はレシーバ必須という罠
377 :
デフォルトの名無しさん :02/10/06 09:26
perlスレはウザイが、潰すのも面倒くさい
RubyでCGIは板違いですよね。 すみません。帰ります。
each_with_index があるのに map_with_index が無いのは、 使用頻度が少ないし、そんなことしてたら全てのイテレータに xxx_with_indexを用意する羽目になる。欲しかったら自分で書け。 って解釈はあってる?
また「Perlについての質問箱」がお宅の坊やに荒らされ始めました。 親として責任を取ってもらわないと、rubyスレの削除依頼を出します。
この板で今までRubyがどんな目にあって来たかを考えると、 Perlのスレが荒されるのは必然の結果だろう。
Ruby is nanbar one!
>>385 ....nanber? Was the number meant?
Ruby is one of the best scripting languages, but Ruby users have the worst moral.
Ruby users have the worst English competence, too.
>>380 あってるかどうかは分からんけど、他のイテレータで each の替わりに
each_with_index とか myeach とか呼ぶ方法があるといいのにねえ。
map(:each_with_index){|e,i| ... } とかさ。
[ruby-list:36109] 書籍への購買意欲なくなりました。 彼に頼まれた著者はどう思っているのか?
>>379 別に帰んなくてもいいんじゃーねの。
CGIもRubyもよく知らねーならCGIの問題かRubyの問題か切り分けられないのは
当然なんだし、的確に板を使い分けることは無理と思われ。
違ったら誘導されんじゃねーか。
i hAve a rubYYYY.
新しい呼び方を必要としています。 継承したインスタンス = レプリカント これしか思い付きません。他に何がありますか?
>>395 「継承したインスタンス」って何? コードで例をみせれ
>>392 うわ、それいいねえ。
いいけどわざわざそんなことしなくても、特異メソッドでeachを
上書きすればいいだけのような気もする(w
strを操作したいのに、enum.mapってやんなきゃならんのもなんかわかりづらいし。
str = "xyz"
class <<str
def each(&f)
each_byte &f
end # def
end # class
p str.map {|b| '%02x' % b } #=> ["78", "79", "7a"]
>>397 毎回そういうのを書くのが糞めんどいってことじゃないの?
それにオブジェクト単位とはいえ each を変えたらマズいこともよくある。
>>398 うん、確かにeachみたいに重要なメソッドを書き換えるのはまずいというか、
普通やらないしやりたくもない。やっぱ、
str.map(:each_byte) {}
みたいに呼べたらいいな。これならお手軽だし。
そういうわけでこんなのはどうだ、って既にどっかに出てるような気もするが。
module Each
def map(e = :each, &block)
r = []
send(e) { |elem|
r << block.call(elem)
}
r
end # def
end
str = "xyz"
str.extend(Each)
p str.map(:each_byte) {|b| '%02x' % b } #=> ["78", "79", "7a"]
ちょい改良。これで
>>389 のいうこともできるかな。
module Each
def map(e = :each, &block)
r = []
send(e) { |*elem|
r << block.call(*elem)
}
r
end # def
end
str = "xyz"
str.extend(Each)
p str.map(:each_byte) {|b| '%02x' % b } #=> ["78", "79", "7a"]
arr = [1, 2, 3]
arr.extend(Each)
p arr.map(:each_with_index) {|elem, idx| elem * idx} #=> [0, 2, 6]
>>400 injectみたいに引数をとるメソッドはどうする?
403 :
デフォルトの名無しさん :02/10/07 01:21
>396 スーパーから継承したクラスのインスタンスをすべてレプリカントと呼びます。 イテレータはコードの短縮化によりマイクローンと呼びます。 そしてクラス変数、インスタンス変数などをエレメントと呼びます。レプリカント 内のエレメントです。 広義には、定数や定数等を含めますとスラング的にフィフスエレメントと呼びます。 ガベージコレクタは別名定義でターミネータと呼びます。したがってガベージコレクション の動作名称はターミネイションです。オブジェクトは使用後ターミネーターにより ヒープからターミネイションされます。カベージコレクションはOS側の視点であり ターミネイションは言語上からの視点です。 そしてクラスという言葉はマトリクスと呼び直します。言語は抽象空間の思考活動を必要と し、バーチャルです。オブジェクト志向言語ではすべてがクラス=マトリクスによって 記述されるので、マトリクスはあらゆる場所にあるのです。 そしてrubyを使うユーザーはすべて隠語で「ネオ」と呼びます。 さらにさらにmatzはジェダイです。
ゆんゆん?
>>403 「スーパーから継承したクラス」って何?
「スーパーから継承したクラス」とそうでないものの例を1つずつ
実行可能なコードで見せれ
100% Pure Ruby な zip ツール、tar_gz ツールって、ありますか? プログラムの中で使えるものがあれば欲しいです。(無ければ無いで、作ってみたい)
基底から継承しないクラスはあると思いますか? 上位クラスのメソッドを機能拡張のため設計を無視しコードレベルで勝手に オーバーライドしてよいのですか?goto文を知っていますか? perlerですか?
408 :
デフォルトの名無しさん :02/10/07 13:49
ルビチュウサンタチ ネタニマジレスカコイイ
>>406 zlib のラッパライブラリの ruby/zlib と、
ruby/zlib を使った zip ライブラリの ruby-zip はあるよ。
ruby-zip は pure ruby。
tar は知らない。
( ´,_ゝ`) プッ
∧ @@@ /●ヽ/ (___)
↑まさおさん某氏の日記で怒られてたね・・・。
> 基底から継承しないクラスはあると思いますか?
まずObjectがある.それからRubyにはClassとクラスメソッドがあるため
継承は
>>407 が思っているよりずっと複雑かもしれない.例えば,
オブジェクトoの特異クラスの特異クラスのスーパークラスは,
オブジェクトoの特異クラスのスーパークラスの特異クラスに必ずしも一致しない.
例えば
オブジェクトoの特異クラスsの特異クラスの特異クラスのスーパークラスは,
オブジェクトoの特異クラスsの特異クラスのスーパークラスの特異クラスではない.
これは
クラスkの特異クラスの特異クラスのスーパークラスが,
クラスkの特異クラスのスーパークラスの特異クラスに一致しないことによるようだ.
ただし
クラスkの特異クラスのスーパークラスは
クラスkのスーパークラスの特異クラスに一致する.
class Object; def s;class<<self;self;end; end; end; # 特異クラス
o = Object.new ; p o.s.s.superclass == o.s.superclass.s #=> true
s = Object.new.s ; p s.s.s.superclass == s.s.superclass.s #=> false
k = Class.new ; p k.s.s.superclass == k.s.superclass.s #=> false
p k.s.superclass == k.superclass.s #=> true
> 上位クラスのメソッドを機能拡張のため設計を無視しコードレベルで勝手に
> オーバーライドしてよいのですか?
設計を無視するのは良くない.だが設計を無視せずに再定義するのは構わないだろう.
いずれにせよRubyに限らずほとんどの再定義は利用者の責任において勝手に行なわれる.
それがいやなら上位のクラスの提供者はフックと文書で再定義を禁止するべきだ.
>>415 知っての通りクラスkのクラスメソッドとは,kの特異クラスのインスタンスメソッドだ.
k.superclass == j を満たすkのクラスメソッドとして,jのクラスメソッドが使える
すなわちjのクラスメソッドがkに継承されるということは,
クラスkの特異クラスのスーパークラス k.s.superclass が
クラスkのスーパークラスの特異クラス k.superclass.s つまり j.s と一致する
という規則に基づいている.しかし,特異クラスがクラスの一種であるにも関わらず,
kがあるクラスの特異クラスだと上の規則はもはや成り立たないというのが
>>414 だ.
k.s.s.s.... を再現なく許すと k.s.s.superclass のインスタンス k.s.superclass を,
(a) k.s.s.superclass を評価した時点で生成するのか,
(b) k.s.superclass が初めて評価されたときに生成するのか
に依存しない形で,lazyな(b)を実現することの難しさがこの制限の理由のようだ.
417 :
デフォルトの名無しさん :02/10/08 01:37
気にしちゃダメだ。なかったことにしよう。
>>400 うーん、便利そうだけどいちいち extend するのがめんどいというのは不精杉?
メソッドチェーンの途中で使おうとすると、そこに extend をはさむ必要があって、
それなら
>>392 が挙げた方法と手間はあんまり変わらない気がしました。
しかも Each だと文字数で負けてるから勝つにはモジュール名を E にするしか…
p "extend(Each).map(:each_byte)".size -
"enum_using(:each_byte).map".size #=> 2
( ´,_ゝ`) プッ
( ´,_ゝ`) プッ
$ cat pu ( ´,_ゝ`)プッ = ( ´,_ゝ`)プッ ; p ( ´,_ゝ`)プッ $ ruby -Ke pu nil nil $
>>419 400をファイルに書いておく。たとえば、each.rbとか。
んで、each.rbの中に、
class String; include Each; end
とか書いておく。使うときはrequireすればよい。
一応、400のは、パラメータを与えないときの挙動は既存のmapと
同じになるようになってるし(ただし速度は落ちるだろう)、問題ないと思う。
普通のmapを使いたかったら、
'abc'.map {|line| 〜}
でいいし、
'abc'.map(:each_byte) {|c| 〜}
としても使える。
ただ、これをやっちゃうとStringのmapメソッドをグローバルに変えることになるんで、
どのような場面でもmapの速度は低下してしまうだろう。
どうだろう、これでも面倒か。
>>392 も
>>400 も(・∀・)イイ!!
でも enumerator が標準で入ってないのは(・A・)イクナイ!!
#an Array of Hashes @AoH = ( { husband => "barney", wife => "betty", son => "bamm bamm", }, { husband => "george", wife => "jane", son => "elroy", }, { husband => "homer", wife => "marge", son => "bart", }, ); #---------------------------------------------- perlではハッシュが集って配列を作ることが出来ますが、rubyで同じ事を 表現する時に選択すべきデーター構造って何がありますか?
>>425 まんま、ハッシュの集まりを配列に入れればよいと思う。
AoH = [
{
:husband => "barney",
:wife => "betty",
:son => "bamm bamm",
},
{
:husband => "george",
:wife => "jane",
:son => "elroy",
},
{
:husband => "homer",
:wife => "marge",
:son => "bart",
},
]
何か、判りにくいですが、 push @AoH, { husband => "fred", wife => "wilma", son => "junior" }; でどんどん作れるやつです。 $AoH[0]{husband} = "fred"; のように、husband,wife,sonが固定で、配列でアクセス可能。 今までに乗った車: 乗車順 ブランド 乗車年数 値段 1台目 xxxx xxxx xxxx 2台目 xxxx xxxx xxxx 3台目 xxxx xxxx xxxx みたいな構造です。
>>424 おお、すみませんでした。427は無視してください。
>>426 有難うございました。
table={}
AoH.collect{|r|r.to_s.scan(/(husband|wife|son)(.*)[^(husband|wife|son)]/){|role,name| table[role]=name}}
みたいにやって
husband =>値
wife =>値
son =>値
としたいのですが、何処がいけないのでしょうか?
>>429 何から何が作りたいのかを具体的に書くべし。
aoh = [{:a => "xa", :b => "xb", :c => "xc"},
{:a => "ya", :b => "yb", :c => "yc"},
{:a => "za", :b => "zb", :c => "zc"}]
から
table = {:a => ["xa", "ya", "za"],
:b => ["xb", "yb", "zb"],
:c => ["xc", "yc", "zc"]}
を作りたいということでよろしいか? ならば例えばこうだ
table = {} ; [:a,:b,:c].each{|role| table[role] = aoh.map{|elm| e[role]}}
429は解決しました。 p AoH.each{|a| p a.shift p a.shift p a.shift } ですね。
>>430 有難うございました!!!
以後、もう少し身長にカキコします。
こんにちはマサオチャンです。
今日見たら66部もはっこうされていたよ。
うれしいよ。マサオチャン涙チョチョギレそう。
今日の夕飯の納豆丼も美味しくかんじちっゃた。納豆をかき混ぜる回転数も
2000回転/rpmって感じ★
それじゃあお休み。うふ。
-マサオメルマガ-
http://www.mag2.com/m/0000098213.htm みんなのマサオより。
>414 すごいネタだなぁ。 singletonはsingletonであってsingleton以外の何者でもないよろしいか?
435 :
デフォルトの名無しさん :02/10/09 01:59
以前質問させていただいた者です。現在、以下のようなデータ構造(syntaxはperl)を
>>357 のようにStructを使って、
格納しようと思っています。
ファイルにデータを格納してから、動的にオブジェクトを構築したいのですが、
ファイルのフォーマットはどのようにしたらいいでしょうか。卒論のアンケートの集計
をrubyでするという試みでして、そのために、事前にデータ構造を定義しておこういう心積もりです。
今後も必要に応じて、ハッシュをハッシュのハッシュに拡張したりすると思いますが、
何かよい発想はないでしょうか。それとも無茶な試みでしょうか?
%Org = (
org1 => {
public => "A山の森を守る会",
activeday => [ "monday", "thursday", "friday" ],
members => [
{ name => "田中", role => "会長", age => 36, },
{ name => "渡辺", role => "書記", age => 31, },
{ name => "新城", role => "議長", age => 41, },
],
},
org2 => {
public => "ブナの森を愛する会",
・
・
・
org1〜org20ぐらいまで、続く。
>>436 うーん、どう拡張するつもりなのかわからんからなんともアドバイスのしようがないなあ。
XMLを使ってみるとか。おれ、あんまりXMLには詳しくないんだけど、こういうときに使えないかな。
あとそうだな、そういうふうに複雑な構造になってくると、生のHashやらArrayやらを使うより
クラスにしちゃったほうが見通しがよくないか。
>414 >いずれにせよRubyに限らずほとんどの再定義は利用者の責任において勝手に行なわれる ということは再定義を日夜利用している方々はComplexやDateのような新たな クラスorクラスライブラリを日々作成されているわけだ。
>>436 卒論のアンケートなら内部では学籍番号をキーとするのがいいと思う。
グループを中心に据えて考える意義は分からないけど、なんにせよ
グループオブジェクトはあとで生成した方がいいと思うよ。一次的には
キーがグループ名でその情報(ただし構成員は含まない)が値であるようなハッシュと
キーが学籍番号でその人の情報が値であるようなハッシュをそれぞれ作り
そこから必要なデータ構造に変換していくのがおすすめ。
入力はRubyコードにこだわらず適当に決めた方が打つのが楽なんじゃないかな。
手分けして入力する必要があるならファイルで与えず、CGIにするという手もある。
とにかくこういう話は規模に依存して解法を決めるべきだと思う。
しかしよほどデータが小さくない限り、入力と永続化は別ものと考えた方がいい。
文字列が主体のデータは、"文字列" のように引用符をわざわざ打つのが面倒だし、
リテラルで書ける範囲にデータ構造が制限されると内部で使いにくい。
>>438 意味がよく分からなかったが,再定義という言葉の勘違いによるのだろうか.
念のため確認すると,再定義というのは既存のメドッドを定義し直すことを指す術語だ.
例えば,次のコードは Object から継承された initialize を再定義している.
class Foo; def initialize() end end
これは利用者の責任において勝手に行なわれることの一例である.
ただし,__id__ と __send__ だけは利用者が再定義すると警告される.
>>434 一言でいえば「現実的にはクラスの特異クラスにクラスメソッドは必要ない」
という判断であろう.
ところで特異クラスを単に singleton と呼ぶのは混乱の元になるので注意されたい.
通常 singleton はデザインパターンの名称として使われる.特異クラスという名前が
良くないという指摘もあるが良い代案が見つかっていないようだ.メタクラスという
呼び名も使われいるが,通常はクラスのクラスを指す名称であるのが紛らわしい.
Rubyでは少なくとも表面的にはクラスのクラスは Class だからだ.
少し詳しく説明します。卒論ですので作業は私一人で行います。アンケートはorg1〜org20に出し、回収したものを humanResource 、 finance 、 activeField 、 newCommer 、 purpose 、activeDay 等のディレクトリにそれぞれ、excelブックを用意し、 質問をグルーピングしたものを格納します。ワークシート一枚にorg一つが対応するようなブックを作成するのですが、メインの集計は Spreadsheet::ParseExcelでUnix上に取り寄せて行います。その際、フラットなテキストデータを一旦オブジェクトに格納して、 irbとpstoreを使おうと思い、その際のデータ構造を考えるところで躓いた、という意味です。もちろん def org(name) org = Org.new org.humanResource = HumanResource.new(name) ・ org.purpose = Purpose.new(name) end のような作業はやや後半(グラフ作成やまとめの段階)になって必要となる作業でして、まずは例えば、 activeFieldディレクトリ:場所関連回答.xls:org3シート: 問22:貴団体は特定の活動場所をお持ちですか? 問32:都市近郊で活動される場合の山地、里地をお答えください。 場所 活動時期 活動内容 ←key 場所1 value value 場所2 value 場所3 のような回答集めたexcelブックの問32の項目をハッシュの配列として表現すべきなのか、という話です。 Spreadsheet::ParseExcelにどのようなフォーマットで出力させれば、ruby側でobjを構築しやすいかというのが 436でお聞きしたかったことです。xmlでガッチリ構築するほどの時間的余裕はなく(提出が終われば是非やってみたいですが……)、 社会人の方とかですと、複雑である程度の分量のデータから動的にobjを作るような経験をされた方はいるのではと憶測しています。
>440 それは知ってる。ただ単純にどれ位の人が新規にクラスを作っているのかな、と。 実際どれくらいなんだろ?特異メソッドや特異クラスを利用することも考えられれる でしょ。
>>442 水を差すようで悪いけど、出力にRubyのリテラルのような複雑な文法を
持ち込んだり、入力を読むところで複雑なことをするのもお勧めできないなあ。
入出力部と集計部やperlスクリプトとの依存性が高くてコードの変更が面倒になるよ。
それにファイルフォーマットを考えるのは難しいから考えないで済む方法がいい。
例えばワークシート毎に1ファイルにして、各行をタブ区切り(TSV)で出すのはどう?
TSVなら吐くのも簡単だしRubyからは次のように読めるしね。
for fn in filenames
data[fn] = open(fn).read.map{|i| i.chomp.split(/\t/)}
end
data["fx"][9].indices[23,31] ##=> ファイルfxの10行目の24,32カラムめの値
ハッシュリテラルで書くと簡単に見えるかも知れないけど、仕様の固まってない
ネストしたデータ構造のアクセス手段を作るのは多次元配列のとたいして変わらない。
どっちの方法も仕様の変更を吸収するところがどこかで必要になるからね。
それとxmlがガッチリというのは間違った認識かも。マーシャルの一形式と思えばいい。
パーザを書かなくて済むのも大きな利点じゃない?xmlといってもいろいろあるよ。
>>444 確かにおっしゃると通りです。
それと、友達に相談したら、セル範囲Range(" ")に名前を付けて、名前とoffset(i,j)でアクセスしてExcelだけで、
処理しろよ、とあっさりと言われました。
確かに、自分でも遠回りな方法だと思っていますが……
しばらく考えます。
>>442 CSVなりTSVなりでExcelから書き出して、awkあたりで集計しちゃだめかな?
このawkびょーモノメ
アルゴリズム講座その1 array.sort{|a,b,c| ここになんて書くのかな。}
>>449 $ ruby -e 'p [4,3,1,2].sort{|a,b,c|a<=>b}'
[1, 2, 3, 4]
>>454 def f
yield(1,2)
end
f{|i,j,k| p [i,j,k]} #=> [1, 2, nil]
ということか…
しかしそれはアルゴリズムの問題なのか?
>>449 ary.sort{|i,j,k|$bogo||=callcc{|$c|:bogo};1-2*rand}.inject($bogo=nil){|i,j|(i)?((i[-1]<=j&&i<<j)||$c.call(:bogo)):[j]}
今なら聞けそう……。upto,time,eachなど使ってるんだけど…… a1 a2 a3 b1 b2 b3 c1 c2 c3 と a1 b1 c1 a2 b2 c2 a3 b3 c3 の二つがワンライナーで出来ません。どうやるのでしょう。
ruby -e '("a".."c").each{|i|("1".."3").each{|j| puts i+j}}' と ruby -e '("1".."3").each{|i|("a".."c").each{|j| puts j+i}}' ってことか?
サブクラスで必ずメソッドを実装して欲しい場合って スーパークラスで def foo; fail; end とかやる以外に 何かカッコいい方法ないかな? こういうのを望むのはRubyの思想と外れていると思うんだけど。
>>460 Classクラスのprivateメソッドにinheritedというのがある。
こいつはなにかというと、サブクラスが定義されたときに、
そのサブクラスを引数に呼び出されるものだ。
それで実験してみた。
class Super
def Super.inherited(subclass)
p subclass.instance_methods
end # def
end # class
class Sub < Super
def foo
end # def
end # class
実行結果は
[]
だった。ダメじゃん…
instance_methodsが取れれば(結果が["foo"]だったら)、
かっこよさげな方法でチェックできたのに。
このフックってサブクラスが生成されたよ、名前はこうだよ、
くらいの情報しかないみたいだ。
実行速度が遅くなってもよいのなら、Superのinitializeメソッドのなかで
instance_methodsを取って比べるというのでもチェックは可能だけど、
Subオブジェクトが生成されるたびにチェックするんで、
そんなアホなことはしないほうがいいだろう。
以上、役立たずでした。
>>452 基本的な質問ですが、このWIN32OLEっていうクラスについてなのですが
作者のホームページにもある通り、WIN32OLE#each {|i|...}を実装したから
for item in collection の構文が使えるとありますが、私自身そのあたりの仕組み
(何がprimitiveなのかということ)がまだよく判っていないからかもしれませんが
どこまでrubyの構文がつかえるかが謎です。だからなかなか使う気になれないです。
下に貼ったように、win32ole.cに色々追加されているようですが、機能がよく判らない
関数が多いっす。まだこの手の分野については、あんまし情報多くないのかな。
% grep "^fole_" win32ole.c |sed -e 's/fole_//'
s_allocate(klass)
s_connect(argc, argv, self)
s_const_load(argc, argv, self)
s_reference_count(self, obj)
s_free(self, obj)
s_show_help(argc, argv, self)
initialize(argc, argv, self)
invoke(argc, argv, self)
invoke2(self, dispid, args, types)
getproperty2(self, dispid, args, types)
setproperty2(self, dispid, args, types)
setproperty(argc, argv, self)
getproperty(self, property)
each(self)
missing(argc, argv, self)
methods( self )
get_methods( argc, argv, self )
put_methods( argc, argv, self )
func_methods( argc, argv, self )
obj_help( self )
method_help( self, cmdname )
>>461 inherited は class 文の先頭で呼ばれるので無理。
class 文の終りで呼ばれるフックが必要。matz にリクエストしてみれば?
とりあえずは実装されてないないことを明示するとそれっぽいかも。
class Foo
def foo()
raise NotImplementedError, "not implemented method for `#{inspect}'"
end
end
class Bar<Foo; end
Bar.new.foo
>>461 そのタイミングでとれても余り意味がない。
メソッドは後からいくらでも追加できるから。
それでもやりたきゃ、コンストラクタで未だチェックしていないク
ラスの場合のみチェックするとかやりようはある。
> Subオブジェクトが生成されるたびにチェックするんで、
> そんなアホなことはしないほうがいいだろう。
>
> 以上、役立たずでした。
頭は使い様。
>>461 自分も inherited は、この為に用意してくれているんだと、
思って同じように組んでたら予想外の結果になった(w
やっぱり
>>463 さんのように書くのがいいかな。
で、メソッドが多い場合はevalで一気に生成すると。
でもevalなんか使いだすと汚らしいな…
>>462 Ruby自体に関してだけ答えると、for は each を使って実現される。
for i,j in x do .... end は x.each do |i,j| .... end とほぼ同じ。
違いは for の場合は end 以降でも i,j が使えるのに対して、
each の場合は i,j がそのスコープで初出なら end 以降では使えない点。
Windows 固有のことについては Win32OLE API について書かれた本を探して読むが吉。
Win32OLE API について知らなければサンプル以上のことをするのは難しい。
作者の掲示板を通読したり使ったり ruby-list なども検索すると良さそう。
>>465 inherited はユーザによる継承の手間を軽減するのに便利あるよ
実例は標準添付の singleton.rb 参照するよろし
>>460 それは抽象クラスという意味なんだろうけど、
抽象クラスのサブクラスとしてさらに抽象クラスを作るやつもいるかも。
その場合は定義しなくてもよいこともあるわけで、
「これは抽象クラスだよ」っていう意志を伝えるのには文書が必要やろうね。
>>463 の方法を併用するのは悪くはないと思う。
weakref ってどういう場合に使うのですか?
>>458 2つをどうするのかがわからんが、
a=[1,2,3];[0,1].each{|b| p a.collect{|i| a.collect{|j| (i+96).chr + j.to_s}}.flatten.sort{|i,j| i[b] <=> j[b]}}
こういう感じ?
>>468 うちのは1.6系なんで、Enumerable#injectないの(w
# 実はArrayクラスに細工して、inject呼ばれる回数数えて、
# モンテカルロ法で計算しようとしたのは、みんなにはナイショだよ。
>>443 組み込みクラスをわずかに改造したその場しのぎのクラスが欲しい場合に,
継承するかモジュールで extend するかは単に好みの問題であることも少なくない.
それから日々の思いつきで作るちょっとした小道具というのも,時にはありそうだ.
ちょうど
>>468 を眺めていると,キーを複数指定できるハッシュのようなものがあれば
多変数再帰関数をそこそこ効率良くきれいに定義できることに気がついた.
class RecursiveFunction
def initialize(&block)
@f = block ; @memo = Hash.new { |s,k| x,*y = k ; s[k] = @f.call(x,*y) }
end
def [] (*a) @memo[a] end
def []=(*a) @memo[a] = a.pop end
end
A = RecursiveFunction.new{|m,n| # Ackermann function A[m,n]
if m == 0 then n+1 elsif n == 0 then A[m-1,1] else A[m-1,A[m,n-1]] end
}
def A(m,n) # straightforward version
if m == 0 then n+1 elsif n == 0 then A(m-1,1) else A(m-1,A(m,n-1)) end
end
p A[3,4], A[3,8]
p A(3,4), A(3,8)
こういうものを思いつく機会は頻繁にあるわけではないが,誰でもたまにはあるだろう.
またなにかのプロジェクトの初期の段階ではメモをとりながらいくつものクラスを
書いては捨てることを繰り返すのではなかろうか.それが典型的な設計過程のはずだ.
結局どれくらいクラスを作るかはその人の嗜好や置かれている状況によると思われる.
cols = [ "ID", "Name", "Born" ] [ [ 1, "東京太郎", "東京" ], [ 2, "千葉次郎", "千葉" ], [ 3, "山梨三郎", "山梨" ], ].each {|id , name , born| print id,"\t",name,"\t",born,"\n"} の出力結果の 1 東京太郎 東京 2 千葉次郎 千葉 3 山梨三郎 山梨 に cols = [ "ID", "Name", "Born" ]で表題をつけたい ID Name Born 1 東京太郎 東京 どうやんのですか?
>>477 [ [ 1, "東京太郎", "東京" ],
[ 2, "千葉次郎", "千葉" ],
[ 3, "山梨三郎", "山梨" ],
].unshift(cols).each{|id , name 以下同文
$ ruby -e "p (1000**8).type" 1000000000000000000000000 $ ruby -e "p ((1000**8).type)" Bignum $ ruby -v ruby 1.6.7 (2002-03-19) [i386-linux] 最初の .type が効いてないのはなんで?
>>479 p (1000**8) #=> nil
nil.type #=> NilClass
1.7 では仕様変更されて、
上の書き方でも下と同じ結果になっている。
そういえば 1.7 だと class を使えとうるさい。 $ ruby -e 'p(1).type' 1 -e:1: warning: Object#type is deprecated; use Object#class $ ruby -e 'p(1).class' 1 $
rubyの例外処理ってやっぱすごいんですか? 作者さんは「ruby本」でも例外の解説に注力されてましたが、 「こいつぁ、すっきり書けるよ」 と思えるようなサンプルって何かご存知ありません?
Java と比較すれば、 ・デフォルトで throw ・実際に例外が上がるまでどの例外があがるのかわからない くらいでそう変わりないような。
そだよね。Rubyと同程度の例外機構はあって当然って気がする。 あと、Ruby だと例外は raise と rescue のペアでやるんだけど、 それとは別に catch と throw も用意されてる。
JAVAは何故メソッド名、関数名があんなに長いのでしょうか? Win32も長いけど……
ここはrubyスレでした。すみませぬy。
短い名前を考えてるといつまでたっても機能が追加できないから。
>>486 Smalltalk をいじっていると慣れると思われ。
rubyの作者って日本人ですよね。 ならば、 A→A B→B のように全角英数字に置換する機能って持ってるんですかぁ? それができるならruby始めよっかなー
>>489 なぜSmalltalk? Javaで慣れると思われ。
>>490 しちゃいけないってことはないけど、言語の機能ではなくてそういうのはライブラリで実装する。
文字列操作ができればどの言語でもやればできるよ。
>>490 Ruby/KAKASIつかってくださぁい
require "kakasi"
puts Kakasi::kakasi('-osjis -aE',gets)
オプションはKAKASIのドキュメントを読んでねぇぇ
"a".upto("z")はあるのに "z".downto("a")はないのは何故ですか?
>"z".downto("a")はないのは何故ですか? ありますた
File.chown(nil, nil, "testfile") #=> 1 変更してないのに1になるのは仕様ですか?
変更した数というよりchown(2)が成功した数を返すんだね。
498 :
デフォルトの名無しさん :02/10/14 15:40
馬鹿には分からないよ。当たり前だけど。
>>498 > Ruby。何のための言語なんだか。
作者が作ってみたかったら。オブジェクト指向プログラミングを広めるため。
読みやすいのはそのコードを書いた人のおかげも大きいと思う。
RubyにしろPythonにしろそれで書けば読みやすくなるわけじゃない。
>>498 ネタで言っているんだろうけど、遅いに決まってるよなあ。
もし同等だったら C++ こそ何のための言語なんだかわからん。
>>498 Perl や Ruby でざっくり書いて動くものができたら
C/C++ にするというプロトタイピング開発。
>>502 どんなプログラムも早くする必要があるわけじゃないしな。
それに早くしたいとこだけCで書いてもいいし。
でもスクリプト言語はアルゴリズムの性能評価には
使えないことはあるかも。ホットスポット以外で時間を
食ってる場合もある。測り方には気をつけれっとことかな。
cols = [ "ID", "Name", "Born" ] と1 ,3,13があるとき、 1_ID 1 1_Name 3 1_Born 13 2_ID 1 2_Name 3 2_Born 13 ・ ・ ・ 11_ID 1 11_Name 3 11_Born 13 と11まで繰り返すには、どうすればいいでしょうか。 度々すんません。
>>504 そのくらい自分で考えられんのか、おまえ覚えるつもりないだろう
と思いながら
hoge = [1,3,13].map {|i| "_#{cols.shift.ljust(6)}#{i}" }
11.times {|i| hoge.each {|j| puts "#{i+1}#{j}" } }
508 :
デフォルトの名無しさん :02/10/15 09:25
colsを壊したくないなら hoge = cols.dup hoge = [1,3,13].map {|i| "_#{hoge.shift.ljust(6)}#{i}" } 11.times {|i| hoge.each {|j| puts "#{i+1}#{j}" } } とでもしておけよ。これはこれで突っ込みどころがある わけだがな。オレもなかなかの優しいインターネットだ ろう?
そういや ljust ってときどき使うわりにめんどいから、 sprintf("_%s%d", str.ljust(6), i) が sprintf("_%<6s%d", str, i) と書けるというのはどうだろう と、ふと思った。cjust は > ね。%s 限定かな。
>>509 あれば便利かもしれないけどなくても別に困らないかな
each_with_index を使うと 負 け た 気分になるときがある。
それより each_byte_with_index がなくて残念に思うことが。
必要なら言われなくてもやってると思うけど module EachByteAddition def each_byte_with_index cnt = 0 each_byte {|v| yield(v,cnt) ; cnt += 1 } end end こういうの作っておいて [ String, IO ].each {|k| k.module_eval { include EachByteAddition }} とかすれば‥
>>513 こういうのを場あたり的になんとかするんでなくて、
既存のイテレータをその場で組み合わせられる枠組がよいなと
irb(main):001:0> Math.log(-1.0) NaN irb(main):002:0> require 'narray' true irb(main):003:0> Math.log(-1.0) Complex(0.0, 3.141592654) なんでじゃ?
e^(x*i) = cos(x) + sin(x)*i のxにπを代入するば?
>>515 narray.c で rb_require("complex") してるから。
narray じゃなくて標準の complex.rb が定義してる。
>>516 それを計算すると NaN ってのになるの?
つーか、complex が何なのか全然わかってません(恥
んで、なんで narray を入れて Math の挙動が変ったのかと
不思議に思ってたら内部で require 'complex' されたからだった
お騒がせしますた
>>518 NaN は Not a Number の略で
不定や未定義を表すために IEEE754 で規定された浮動小数点数の特別な値。
exp(x) = -1.0 を満たす x は実数には存在しないので log(-1.0) は
未定義であり NaN になるが、複素数なら exp(πi) = -1.0 が満たされる。
詳しくいえば複素数の対数は一意には定まらない(exp(3πi) = -1.0等)。
0.0/0.0 #=> NaN
1.0/0.0 #=> Infinity
1.0/0.0 - 1.0/0.0 #=> NaN
0.0/0.0 == 0.0/0.0 #=> false
>>512 iterate する単位に byte がないオブジェクトは多いと思うけど。
>>520 each_byte だけじゃないという話なのよん
% grep -r 'def \+each_' src/ruby/lib
% ruby -e 'ObjectSpace.each_object{|o|
Module === o and
puts o.instance_methods.map{|m| o.name+"#"+m}.grep(/each_/),
o.singleton_methods.map{|m| o.name+"::"+m}.grep(/each_/)}'
ああ、勘違いしてた。 each 系メソッドそれぞれに _with_index のメソッドもほしいということか。
523 :
デフォルトの名無しさん :02/10/16 13:14
>>409 > zlib のラッパライブラリの ruby/zlib と、
> ruby/zlib を使った zip ライブラリの ruby-zip はあるよ。
> ruby-zip は pure ruby。
結局どっちも pure ruby じゃないやん。(zlib 使うんでょ?)
>>523 現状を答えたんだけど。
圧縮ルーチンとファイルフォーマットのどちらを指しているのか曖昧だったし。
>>509 > そういや ljust ってときどき使うわりにめんどいから、
> sprintf("_%s%d", str.ljust(6), i) が
> sprintf("_%<6s%d", str, i) と書けるというのはどうだろう
sprintf("_%-6s%d", str, i)
手持ちのCのライブラリのドキュメントを読んでみろ。
> と、ふと思った。cjust は > ね。%s 限定かな。
rjust ?
>>525 さんくす!
知らんかったよ。2.9.1 BSD にはすでにあったらしい。1983年だ…鬱
もしかしてK&R1の頃からあったのか
> rjust ?
しまった center のつもりだった。
>>526 あなたは礼儀正しいインターネットですね
>>526 まさかCでいちいちstrncpy()とかmemset()とか使ってたんじゃ…(゚Д゚;)
> > rjust ?
> しまった center のつもりだった。
たしかに中央揃えはprintfにはないな。でも%>sはやだな。
>>528 > まさかCでいちいちstrncpy()とかmemset()とか使ってたんじゃ…(゚Д゚;)
その通り。逝ってきます。
> たしかに中央揃えはprintfにはないな。でも%>sはやだな。
中央そろえは滅多にやらないからなくてもいいや。
530 :
デフォルトの名無しさん :02/10/18 15:05
なんか金光って本を書いてるみたいだな。 それであちこちで質問しまくってるらしい。 そんなんで出版できるのか? 出版社も何考えてるんだか。
531 :
デフォルトの名無しさん :02/10/18 15:10
40過ぎで編集者とは思えんあの文章だし、 CGIの本書こうってのにCGI.RBの作者もしらんとは。
>>529 > 中央そろえは滅多にやらないからなくてもいいや。
なんだ。%^dって作ってみたのに。
>>532 うーん、つーか幅と具の奇偶が違うと1カラム分の右左が不定だし。
まあどっちかってことに決めるわけだけど。
>>533 それは単純に左がwidth/2にしたんでやや左より。
ついでだから貼っとく。 begin-base64 644 centering.diff.gz H4sIAAAAAAACA61W+2/iRhD+2fwVc6lK7LOd2OYRwCW6E+UuqCGJSHKVepdG YOzEKgFkE+5yDf97Z2a9fvAoJ7WWMLuz387OfPNY96Zj/1sL4nkUThfBkVdq //enNOhcQxBO/BYce8v4OHoevRzHkZcM5FHGshT5iyj0l+H0ASL8i8PZFOwj p14ah0EA5jOYDphzMCMS5ow0TTObKXYdLr0FOJblgF1pVastuwmmhY/CynRd z6MbGdpqtCynZSXo0rt3YNYd4wR0fDcBp5H/NFv693H4ML0fhYtYjReRAaNh 7Gsl+GnsB+HUhw+/9369OYOKkxNdDbodgHq1pKeiTvfipjsA22mUIEN2zrqd 39SJBuMZ/P2lZAI+Xx+RPFBHE38KOtDiaRtGcfhdI4hOEHQGfx4h2oRwE3lx a4LI7waFhm/bDu6gDbD6wn7bVtOogm7btoFU73N9JQ+ycJL5eP6hd36ufg3H i0fpUGotJsSEjLWkqWEAajAZPsRQluSghRImtRyD46YTsy3UuKtEhz+JfVb0 JlPV713cXmuoCtZ0ZXrIioKKUeQP/yoYxltPwUI96MjoOfhMnOr6HW4+hENX EmCaDNVYX54WPaNlsIuWILHoxw5KvPi3g7qCRxU1GLD9QEFUOWW8XEYZ4jX4 RfKjiTxT8mFT0xgAo0VkCNXv9vuXn7pqObWd99wZkEpw7D0OMX3EVt725D/F /kLNY9BdAxI6CbIRdhLmyZQR26QEPr0/v+2WIBrdB/dJ8avD6MEzAN9LTeR8 w6Kcd6xqUu27wKDQKQ+zxQyoZb24lPQo87Aa4PDPwxbPAEQOvrZlPruJfK7r cphXorNiocRCJbCm5I/u4NJlS526Zdg2mtpoGnZtj60KcQ0eGWkqyvbqoJVc v0iSi/OQlpSr2+sz9QAODLA1l3ViDlzc9p3exY26HGJLKoP1LQhcQjO47Aks zncopfOKenVhXmocN1JMPlogdKLBlXPRLJPYS2G+6aTCYh15qXywDl7Ri3tA emrBHYaIwMh/0SxEXBonBl4/esWxjMa+sChF80kiCML8RlOZuny4ylkr46Vc vHifacoVZbNtpDtWPGI3lSJVZABWoTd/KVTh4Ppm0Lv4SP1eM0/n1PWpagVe XCxr9has/d+MHWwYmxAPEksRqDYryLxesxuGfbIvAmTsPPI9bHXc8XicOAO5 aJDcXSuessr1+JoGBRtn/Nm6gzfow9FhkrW0YVO6eQdKJ4opYW7j7dSSzG0h TirfepcyjfJM4Rw1bRanvorOKhWt5GD9Zl13f6v6vGr2cl3r+tXK+B+7X7Ow A2UIxb5m1Ywaxr7SNPb2RHn6fBZj3GcxJfFcBn61u1FmYc3WVLH4KplmVHKG 6L0yPCDsxHsG7azbVWNvioqEmPr+WLgsYfkKDXCMb2rDnDOyKLFicZSDiv5F 4dmxlH4wpJ8LLJYKmZ0dra9uM/n1mi3ID54W93ihP89Vtg59YroSvQbXlCY+ OQvZen31vtPV4C3uwu/0lDdzA5hdDsVPGQ4IL2YBgXY7twFSFtm0g5/HB5m7 QGWVYw9nKP0HfSB1xRgNAAA= ====
>>535 すげー。せっかくだから commit キボン
漏れですら滅多に使わんので言いくるめる自信なし トムソーヤのふりをして要求してくれる人募集
ラクダ本引っ張りだして「フォーマット」を調べてみたら、中央揃えは'^'じゃ なくて'|'だった。記憶違い。 しかし、perlのwriteって使ったことないなぁ。
rubyは日本語に対応した正規表現。 vimの:rubydoなどで、「ひらがな三文字の行だけ消したい」ときって :rubyd gsub(/^\S{,3}$/,"") 見たいな感じで、出来ないんでしょうか?$KCODE="e"みたいなものが必要ですか?
>>540 /^\S{,3}$/ はEUC-JP非空白高々3文字だけからなる行にマッチ擦る
>>541 間違えた
/^\S{,3}$/e はEUC-JP非空白高々3文字だけからなる行にマッチ擦る
>>541 なぬ?
じゃあ、単純に
:rubyd gsub(/^[あ-ん]{,3}$/,"")
っていう式がコンパイルされるような
rubyの拡張機能ってご存知ですか?
知ってたら教えてください。御願いします。困っています。
>>543 :ruby $KCODE='e'
:rubyd gsub(/^[あ-ん]{,3}$/,"")
あーん
[ぁ-ん]
SEの卵ですが、 \x0D\x0A って何を表すコードか直ぐにわからなければなりませんか?
はい
むしろ、その区点を何の体系で解釈すべきかを示してないあたりが問題。
perlで1行をn行に変換するスクリプト書いたですが、 rubyバージョンキボンヌ。 ------------ $coln=3; while(<>) { chop; if ($. % $coln) { s/\r//; printf "%s\t",$_; } else { printf "%s\n",$_; } } print "\n";
coln=3; while gets chop; if ($. % coln != 0) sub(/\r/,""); printf "%s\t",$_; else printf "%s\n",$_; end end print "\n";
あはーん
もう十分渓谷の意味理解したので warning: parenthesize argument(s) for future version ってのがいちいちウザイんですけど、このメッセージ消せますか?
自分の書いたスクリプトを直すか、 ライブラリのソースを直すか、 Ruby のソースをいじって警告を出なくする。
>>553 本当に理解した?その警告のいいたいことは、
「将来のバージョンでは動作が変更されるからいまのうちにカッコで囲んどけ」
って意味なんだけど。それが分かっているなら554。
人の書いたライブラリが原因なら作者に問い合わせてみる。
その作者の手が空いたら何とかしてくれるかもしれない。
堂でもいいことだが、最近、肉体仕事やスポーツ後にPCの前に座ってRubyと遊ぶ瞬間 が至福の時間となりつつある。 いつものように仕事サボりつつ、Ruby触りだすとどうも後ろめたくて、憂鬱になるので いかんが……
ruby_talkの最新のリストruby-talk/53601-53800.shtml#latest みたいなものを取得するにはどういう方法がありますか? ruby-talk/index.shtml#ruby_talkからリンクをたどるってやつです。 テーブルの <TBODY> <TR> <TD align=right><A href="53601-53800.shtml#latest">53601-53800</A></TD> <TD align=right><A href="1-200.shtml">1-200</A></TD> <TD align=right><A href="201-400.shtml">201-400</A> を正規表現でたどるしかないのかな?何かいい案ありませんか?
>人の書いたライブラリが原因なら作者に問い合わせてみる。 >その作者の手が空いたら何とかしてくれるかもしれない。 いや、そんな大げさなことじゃなくてですね、 rubyのバージョナップしてから、 emacsのcall-processとrubyスクリプトがおかしくなったので、 いちいち修正ウザイんです。 めんどー。
>>557 相対URLだからURI.extractではとれないね。となると正規表現が典型的な解決かな。
HTMLの解析ツールはRAAにいくつか転がってるからそれを使うとか。
>>558 この際、気合いで一気に片付けるのもいいかもね。こんな感じで探せるはず。
# /\.rb\z/ ? $_ = `#$OPT_i -c #$_` : next でも文句いうのか・・・鬱
require "find"
require "getopts"
require "rbconfig"
getopts("", "i:#{Config::CONFIG['RUBY_INSTALL_NAME']}")
ARGV.each do |your_lib_dir|
Find.find(your_lib_dir) do |rb|
if /\.rb\z/ =~ rb then msg = `#$OPT_i -c #{rb}` else next end
puts msg if /Syntax OK/ !~ msg
end
end
あんまし見てないけど、貰ったやつ試しましたが、 何にもおきませんでした。
>>561 じゃ、もうないんじゃない?
念のため確認しとくと引数はライブラリのあるディレクトリ名ね。
% ruby-1.7 560.rb /home/your/ruby/dir/yourscript/
>>558 > rubyのバージョナップしてから、
> emacsのcall-processとrubyスクリプトがおかしくなったので、
ruby-mode.elではObject#typeは使ってないと思うが。
>
>>560 それで引っかかるのはsyntax errorだろう。STDERR拾って/\#type/とかでマッ
チさせないと。
>>562 一応1.7添付のは全部修正したはず。
>>563 > 一応1.7添付のは全部修正したはず。
いや、添付物以外の話
有名どころでは migemo rdindex を修正しました。 違う解決法もあったこもしれませんが…….
ち、厨ですみません。 535ってどうやってデコードするんですか? 出来なかった。
>>566 begin-base64 644 centering.diff.gz の次から ==== の前までを
ファイル foo.txt に保存し以下を実行する。
ruby -e 'print ARGF.read.unpack("m*")[0]' foo.txt > centering.diff.gz
gzip -d centering.diff.gz
このパッチが流れた時のCVS先端には当てることができた。今は確認してない。
>>567 > このパッチが流れた時のCVS先端には当てることができた。今は確認してない。
sprintf.cは変わってないから大丈夫。
570 :
デフォルトの名無しさん :02/10/23 02:48
デジカメで使われている Exif ファイルのヘッダを扱うような ライブラリとかありませんでしょうか?
ファイルの中身を変更して、EUCにする方法は簡単ですが、 Windowsで作られた日本語ファイル名のファイルをUnix側で ls --show-control-chars でみるとSJISファイル名は??????????みたいになります。 いちいち kterm -km sjis & して見てるんですが、 いっそのことrubyなんかでファイル名を変更したいのです!! どうやるのでしょうか? やり方説明しているHPありませんか?
日本語のファイル名使うってのもどうかと思うが、 x = "a" Dir.glob("*") do |file| File.rename("file","x") a.succ! end とかでアスキーな名前に変えるとか?
577 :
to:sage :02/10/26 21:42
あ、ごめんsageそこなった
578 :
bloom :02/10/26 21:42
576,577ですが・・・。 何回もすんまそ。久々に書き込んだのですっかりsage方忘れてた。
perlのithreadのような機能をrubyは将来的に導入する予定はあるんですか? あと1.8で実装させる予定のM17Nとはなんですか?
死ねョ馬鹿
___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
>>575 意味はマニュアル確認しる
$ ruby -rkconv -e'3.times{|i|open("XXX\x82\xd9\x82\xb0#{i}","w")}'
$ ls -1
XXX????0
XXX????1
XXX????2
$ ruby -ruri -e'Dir["*"].each{|i|File.rename(i,URI.escape(i))}'
$ ls -1
XXX%82%D9%82%B00
XXX%82%D9%82%B01
XXX%82%D9%82%B02
$ ls -1 | ruby -ruri -pe'$_=URI.unescape($_)' | nkf -e
XXXほげ0
XXXほげ1
XXXほげ2
$
>>580 言語レベルでm17n機能が1.8に登場する予定は無いはず
ithreadってどんなの?
perlのPerlIOのような機能をrubyは将来的に導入する予定はあるんですか?
糞言語に染まる必要なんてねーよ。低脳野郎
[]~$ perl -pe 's/(.)/\1\t/g;' ahoki a a b b c Sun Oct 27 (01:31:44) []~$ ruby -pe 'gsub(/\(.\)/,"\1\t")' ahoki aabbc Sun Oct 27 (01:31:55) []~$ cat ahoki aabbc Sun Oct 27 (01:32:01) []~$ 何故でしょう?
>>580 >m17n-ruby
組み込みクラスライブラリで多言語に対応するためのフレームワーク
内部 Unicode にすることの弊害については自分で調べて。
>>584 よくわからんがこんなのらしい。
in Thread.pm
|In Perl 5.6 a new model was introduced in which all is was thread
|local and shared access to data has to be explicitly declared.
|This model is called "ithreads", for "interpreter threads".
>>585 IO/File クラスで十分じゃん。
>>588 ruby -pe 'gsub(/(.)/, "\\1\t")'
>>589 > IO/File クラスで十分じゃん。
PerlIOみたいなものというのはstdioに依存しないIOを作る話と思うが?
スケジュールもされていないが将来そうなること自体は何度もいわれている。
かなりの大仕事になるので実現していないだけ。
馬鹿か。PerlIOなんてsfioとstdioのラッパに過ぎないだろ 糞言語にはお似合いだがな。
いや、Rubyは糞言語
>>591 なるほど了解。
単に IO 系の関数を再編成しているだけなのかと思った。
>>580 もともとRubyのスレッドはユーザレベルスレッド。
$1のようなマッチ情報などはすべてスレッドローカル。
逆にpthreadなどを使ったスレッドの実現は未対応。
今後の課題のはず。
596 :
デフォルトの名無しさん :02/10/27 05:02
おならぷー=3
>>595 ブロッキングI/Oだと止まるってアレね。
598 :
rubyist@カラアゲうまうま :02/10/27 11:01
お前ら、rubyの悪口言うと承知せんぞ
>>597 止まる場合はあるが、ブロッキングI/O ではない。
さぁ、探してみよう!!
やれやれ、「rubyist@カラアゲうまうま」のハンドルはすっかり盗られちまったなぁ。
M17N機能とは具体的に何なんですか。
曰 | | ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ノ__ヽ(〃´Д`)_ < まあ落ち着けよ ||黄||/ .| ¢、 \__________ _ ||金||| | .  ̄丶.) \ ||水||L二⊃ . ̄ ̄ ̄ ̄\ ||\`~~´ (<二:彡) \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ . || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
曰 | | ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ノ__ヽ(〃´Д`)_ < Perlは最高! ||黄||/ .| ¢、 \__________ _ ||金||| | .  ̄丶.) \ ||水||L二⊃ . ̄ ̄ ̄ ̄\ ||\`~~´ (<二:彡) \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ . || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
/ ) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ./ / | Perlくん! / / \ / ̄ ̄ ̄ / /  ̄|/ ̄ ̄ ̄ ̄| Rubyくん! ./ /_Λ , -つ \ / / ´Д`) ./__ノ  ̄∨ ̄ ̄ ̄ ̄ / \ / / ⊂_ヽ、 .| へ/ / .\\ Λ_Λ | レ' /、二つ \ ( ´Д`) | /. . > ⌒ヽ / / / へ \ / / / / \\ / / レ ノ ヽ_つ / ノ / / _/ / / /| ノ / ( ( 、 ⊂ -' | |、 \ . | / \ ⌒l | | ) / ノ ) し' (_/
>>605 CLUやSmalltalk、Eiffel、Sather、Pythonの立場は?
曰 | | ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ノ__ヽ(〃´Д`)_ < ||水||/ .| ¢、 \__________ _ ||道|| | .  ̄丶.) \ ||水||L二⊃ . ̄ ̄ ̄ ̄\ ||\`~~´ (<二:彡) \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ . || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
_,-―-、-ー 、 / \ . / "〃 ハ ハ イ /'''''‐'''ヘ | | / ! | J. / リト-、、 、-‐ヤノ |.(ゝ ゙fiウァ fウァ'!' ゙| { ´ ` .} |. ゝ ' /! |. 个 、  ̄ ,イリ イ ム `  ̄i !ー-、 i / \ ヽノ ! / ` ー-‐'´ ヽ Perlなんでダサイわ。これからはRubyよ。でもクラスを使わないRubyistは もっと最悪。Perlとコード一緒じゃない。それならPerl使ってなさいよって かんじ。
"Pj42MDikz1Blcmyk4lJ1Ynmk4qS3pOmkyqSkCg==". unpack("m"). display
rubyにscplitコマンドみたいな仕事させるにはどのようにすればいいでしょうか? Kernel#gets([rs])のrsは行の区切り文字なので正規表現ではないし…… 例えば、bigfileから 2002.1.3 2002.3.8 とかを区切りにファイル分割したいです。 % csplit bigfile /2002/ /2002/ /2002/ …… を模倣するrubyコードはどんな感じになるでしょうか?
例がアホだった…… % csplit bigfile "/^2002.[0-9]+.[0-9]+/" {100} でした。
byte code interpriterにすれば実行速度上がると思うんだけどなあ
しっつもーん。 みなさんは自分用に定義した def〜end ばっか 入ったファイルを何処において、どのように使ってますか?
>>613 export RUBYLIB=~/lib/ruby
>609 "pMSkq6SopPOkwKToobykwKGipNKk0qTS\n"
>>617 "abbbbbbbbbbcdddddddddefffffffghhhhhh\n"
ここはsage進行か。
>>619 eval 系はどうするの?
%q[9/CXV,3<*YJVCYYNTXX&,XX&CXX&+XX**"@``]
明らかにすれ違いだけど、 まつもとさんがつかってたキーボード配列ってなんだっけ? まえ、雑誌で紹介されたけど、名前わすれちゃった。
このなかのどれでしょうか?
∧∧ ! ガバッ! / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ___(;゚Д゚)___ < うぉ?! | 〃( つ つ | \_________ |\ ⌒⌒⌒⌒⌒⌒\ | \^ ⌒ ⌒ \ \ |⌒⌒⌒⌒⌒⌒| \ |________.|
┌┐ (゚Д゚)<rubyー ┗┛
628 :
デフォルトの名無しさん :02/10/30 22:54
ttp://www.hokto-kinoko.co.jp/chokusoubin/music/song.rm きのこっのっこーのこ げんきのこっ♪
γ ⌒ ヽ
(二二ニつ m从m (___)
ヽ´_ゝ`( ミM川M彡 |゚Д゚,, |
(/ ヽ) |゚ー゚*| (/ ヽ)
| | (/| .|ヽ) | |
ヽ_ノ ヽ_ノ ヽ_ノ
(/ ヽ) (/ ヽ) (/ ヽ)
\ エリン〜ギ♪ マイタケ♪ ブナシメジ♪/
(二二ニニつ ミ彡ミ彡ミ γ'⌒"ヽ
ヽ / / ヾミ彡ミゞ (___)
| (,,゚Д゚) | (,,゚Д゚) | (,,゚Д゚)
|(ノ |) |(ノ |) |(ノ |)
ヽ_ノ ヽ_ノ ヽ_ノ
U"U U"U U"U
>>576 576さん!
どうも有り難うございました!!
さらに質問していいでしょうか?
ほげ.txtのようなファイルを一旦、日本語→asciiにした後、
もう一度ascii→日本語にするようにしたいです。
ファイルの一行目とか使って構わないので、
そういうことできますか?
% cat ほげ.txt
aho
boke
% cat a.txt
ほげ.txt
aho
boke
のように日本語→asciiの時はx.succ!で逆の時は
「ファイルの一行目」→ファイル名
のようにしたいのです。
どうすればいいでしょうか?
>>576 576 さんどうも有り難うございました。
もひとつ質問していいですか?
日本語→asciiはできましたが、ascii→日本語は可能でしょうか?
%cat ほげ.txt
aho
beke
【ほげ.txt→a.txt】
%cat a.txt
ほげ.txt
aho
beke
【a.txt→ほげ.txt】
%cat ほげ.txt
a.txt
aho
beke
のようにするツールです。
あ、あれ??!!! 前のヤツ、書き込まれてたんだ……。
rubyの以下の現象は理解できません。 >> puts a.tr('a-z','a-z') ・aabbW というのではなく、 >> puts a.tr('a-z','a-z') aaaabbbb となってホスィ >> require 'kconv' => false >> KCONV='e' => "e" >> a='aaaabbbb' => "aa\243\341\243\341\243\342\243\342bb" >> puts a.tr('a-z','a-z') ・aabbW => nil >> puts a aaaabbbb => nil >>
$ruby -Ke -rjcode -e 'a="aaaabbbb"; puts a.tr("a-z","a-z")'
=(・∀・∀・) プッピラポ〜
>>629 ファイル名のようなメタデータを持たせるのはどうかと・・・
ファイル名を書き換えるんでなくてシンボリックリンクにしたら?
File::open("ほげ.txt","w"){|f|f<<"foo\n"}
File::symlink("ほげ.txt", "hoge.txt")
puts File::open("ほげ.txt").read #=> foobar
puts File::open("hoge.txt").read #=> foobar
puts File::symlink?("hoge.txt") #=> true
puts File::readlink("hoge.txt") #=> ほげ.txt
puts File::symlink?("ほげ.txt") #=> false
637 :
デフォルトの名無しさん :02/11/01 19:19
age
638 :
デフォルトの名無しさん :02/11/02 12:36
ruby-gtkで各メソッドの説明があるマニュアルって無いの?
それぐらいCのAPIから推測しろ馬鹿
640 :
デフォルトの名無しさん :02/11/02 12:43
やっぱ、無いのか。
CのAPIから推測して探してた関数は signal_emit_by_name() っぽいんだが、 肝心のRuby/Gtkにインプリメントされてなかった罠
つーかCのgtkライブラリそのままロードできないの?
Gtk::Object#signal_emit_by_name じゃなくて? ruby-gtk-0.30
>>642 Ruby/DL 使えばできるよ。
激しく面倒だけど。
>>643 0.28 => 0.30に上げたけど組み込まれてなかった(´・ω・`)ショボーン
Gtk::Object#signal_emit_by_name はあるけど使うと、
>The signal_emit_by_name() function is unimplemented on this machine (NotImplementedError)
になる。
rp-pppoe-3.5を./goするとpppoe.oでエラーがでてmakeできないのですが、バージョン下げれば makeできるのでしょうか。
こんなことrubyでできますか? 内容: UNIXのuniqやsortなどのフィルターコマンドを uniq ファイル > ファイル.uniqed sort ファイル > ファイル.sorted のように単独で使うことが多いんですけど、 rubyの-iオプションみたいに引数のファイルを書き換えたいですが、 あらゆるUNIXコマンドで引数ファイルの書き換えを実現する ラッパーRUBYスクリプトってどのようなものがありますか? なにかサンプルとか知っている人いませんかぁ?
>>648 #! /usr/bin/env ruby
cmd, fn = ARGV.shift, ARGV.last
if ARGV.empty? or !test(?f, fn)
STDERR.printf("usage: %s command [options] filename\n", $0)
exit!
end
newfn = fn+"."+cmd
r, w = IO::pipe
if fork()
w.close
open(newfn, "w").write(r.read)
r.close
Process.wait
else
r.close
$stdin.close
$stdout = w
exec(cmd, *ARGV)
end
if $? == 0 and ENV["MY_WRAPPER_OVERWRITE"]
File::delete(fn)
File::rename(newfn, fn)
end
650 :
デフォルトの名無しさん :02/11/04 18:33
emacsのruby-modeで自動インデントをさせたいのですが (autoload 'ruby-mode "ruby-mode" "alternate mode for editing ruby programs") (setq auto-mode-alist (append ' (("\\.rb$" .ruby-mode)) auto-mode-alist)) (setq interpreter-mode-alist (append '(("^#!.*ruby" . ruby-mode)) interpreter-mode-alist)) 以外に.emacs記述するべきことはありますか。この記述だけではruby-modeは起動しても 自動インデントは機能しません。
>>650 確認だがその.emacsで C-x C-f foo.rb してデフォルトキーバインドで
下の★の位置でC-jを叩いても■の位置にカーソルが来ない?
来ないなら C-hkC-j では何と出る?
if a★
■
>>651 さんの指摘どおりにすればカーソルはその位置にきます。
ありがとうございます。
>>649 wrapというファイル名として
$ wrap uniq url.txt
みたいに使うんですよね?
実行しても、url.txtは変更されてなかったですよ。
654 :
デフォルトの名無しさん :02/11/04 22:42
金光ruby-listで大暴れだな。
>>653 まずマニュアル引きながらプログラムを完全に理解してほすぃ
>>653 もしかしてプログラム読めない人?
環境変数 MY_WRAPPER_OVERWRITE を定義しておくか、
if $? == 0 and ENV["MY_WRAPPER_OVERWRITE"]
を
if $? == 0
にすればいい。
657 :
デフォルトの名無しさん :02/11/05 10:09
金光,どうしてあそこまでアホになれるの?真性? るびきちの誤爆もかなりwarata
660 :
デフォルトの名無しさん :02/11/05 21:43
Rubyのためなら死ねる!
>るびきちの誤爆もかなりwarata ど う か ん で す
二人は付き合ってるの?
>>663 そうなんちゃう?
つか、凄いこと言いまくっているね、そこ。
<matz (continued)> Don't fight with python people. And Perl people,
they will move to Ruby when Perl 6 comes out.
なんて、言っているし、、、強気だな〜。
それとwin32に関する質問とか多いな。
matzは興味なさそうだが、
Rubyが普及するにはwin32でどう使われるかは重要なのかもね。
と言う俺もwin32ユーザーなんだが…。
Ruby 本体の Windows サポートはかなり積極的に行なわれていると思うけどね。 VisuaRuby のような GUI ライブラリがもう少しこなれてくるといいのかなあ。
RubyはWin厨なんかに迎合する必要はないね。 なんか汚れていくような気がして嫌だし。
@sorted_by_mtime= map{$_->[0]} sort{$a->[1] <=> $b->[1] } map{ [$_, -M $_ ] } @files;
irbsh を 貶 し て く だ さ い 。
>>669 sorted_by_mtime = files.map{ |f| [File::mtime(f),f] }.sort.map{ |i| i[1] }
Ruby 1.7:
sorted_by_mtime = files.sort_by{ |f| File::mtime(f) }
うう、二重レススマソ…。
def strip_headers? @strips; end; ソース見てたら最後に?がついてるんですけどこれ何ですか?
>>676 Rubyではメソッドの名前に使える文字の中に「?」があります。
おれとしてはいちいちセミコロンつけてるのが気になる。
>>677-678 ありり。
何か文法かと思ってマニュアル読んでますた。
?とかだと検索も役に立たないよう(´・ω・`)ショボーン
> おれとしてはいちいちセミコロンつけてるのが気になる。
そういえば全部にセミコロンがついてる。
なんでだろ・・・。
当り前のことを今さらですが、Rubyは、すばらしい言語です。 ところが、あのコンピュータ界の癌細胞というべきアニオタの白豚Larryが作成したPerlは何でしょうか。 あまりにも、醜悪かつ悪質かつ脆弱ではありませんか、欠点だらけで、もはや言語としての体をなしていません。 また、Perlコミュニティの対応は、完全秘密主義かつ傲慢ではないでしょうか。 できれば、Perlような粗悪品を使いたくはありません。 しかし、まわりを見渡すとみんなPerlです、そうなると粗悪品を使わざるえないです。(特に仕事ですと) なぜでしょうか? Perlは、書籍の数が多いのです、簡単に使えるのです、たいしたことをしなければですが(わら Perlは、Linuxでいえばタコ以下の人々に広く使われているのです。 Perlユーザを嘲弄し、排除してゆくのがわれわれRubyistの務めではないでしょうか? そのための場として2chにおいて長らく活動してきた結果、「Perlは糞」 「Ruby以外の言語は糞」という認識は定着し始めてきたように思います。 同時に、GUIがなければ何もできない窓厨房の玩具であるDelphiスレッドにも執拗な攻撃を加え、 Delギコという生意気な固定を追い出すことにも成功しました。(かなり前ですが これからもRubyの輝かしい未来のために活動を続けて行きたいと思いますので、さらなる声援と愛顧をお願いします。
>>677 ? のほかに ! も使えますが、これらはメソッド名の末尾にしか使えないですよね?
>>680 Ru..Why? 今なんていったんだい?RPG?
>>681 ? は boolean を返すメソッドに、
! はレシーバを変更する破壊的メソッドにつける。
ただし、String#sub! に対する String#sub ような
破壊的でないバージョンを用意している場合に限る。
>>678 結構このスレ、色んな人に見られているのね…。
あまり、下手な発言できんな…。
>>684 >ただし、String#sub! に対する String#sub ような
>破壊的でないバージョンを用意している場合に限る。
そんなのビミョースギ
def foo() o = dup ; o.foo! ; o end するときはむしろ foo! が先だし。
「foo!はfooより破壊的」ってことがいいたかったのね。
>>686 !はやや危険なカホリのするものにつける
688 :
デフォルトの名無しさん :02/11/08 12:05
読んだらビックリさせられるメソッドには!をつける
よくわかんないメソッドには?をつけて、定義の最後にtrueといれる。
exit!も危険なカホリ〜ン つか、最近は!でないメソッドも速くなってきていて、 後はGCを改良したら、 !なメソッドの速度面のメリットがほとんど無くなるって聞いたんだけど、 ほんと?
>>691 まぁ、目指してはいる。
ちょっとケの生えてるメソッドには!。
ruby-listで ruby2とVMの話題や議論(?)を少し読んで見たいのですが、 なんかキーワードが引っかからないんですけどぉー なんというキーで検索すればいいのでしょう?
Rite list ではほとんど話題になっていないよーな。 1.x 系を枯らす方が優先なのかな。
listで開発版つーか未発表版の話題が少ないのはしかたないのでは? devかtalkへ行きなされ>693
696 :
デフォルトの名無しさん :02/11/09 20:06
Rubyは書籍の数ではPerlを超えた!!!!!!! 万歳!!!!!!!!!!1
別に超えなくていいから、良質の本を出して欲しいものだ。 RHGとか王道編には期待してるんだが。 金光が関わってると思うと鬱。
少なくとも金光が書いた本はカウントしないでくれ。
RHGとは? あほな質問、スマソ
701 :
デフォルトの名無しさん :02/11/09 22:41
金光ってそんなにヘタレなのか? その語録を教えて欲しいんだが。
>>701 ruby-list. たくさんありすぎ。
WinXPにActiveRubyScriptを入れています。 ExcelのVBAからc:\test.rbを実行する方法を、 どなたか教えて頂けないでしょうか。
あおのすぉpqhrくぇr
>>699 金光は書いちゃいないだろ。
あぁ。コンパイル結果を延々と載っけていた本はあったっけ。
RHGっていつ発売?
711 :
デフォルトの名無しさん :02/11/13 21:01
これより簡単な書き方ないですか? n = hash[foo] if n == nil n = hash[foo] = MyClass.new end n = hash.fetch(foo){|key| hash[key] = MyClass.new }
>>711 n = hash[foo] || (hash[foo] = MyClass.new)
これはだめ?
n = hash[foo] ||= MyClass.new
714 :
デフォルトの名無しさん :02/11/17 04:36
rubycentralってどうなってんの?
Rubyのページの英語版にrubycentralについて書いてあるよ。 DNSが問題があってうまく行かないらしい。 直接IPアドレスで逝けってさ。
717 :
デフォルトの名無しさん :02/11/17 23:18
Rubyで、質問があります。 Rubyで数秒間処理待ちをしたいのです。 1.ネットワーク経由で端末Aに信号を送る。 2.数秒おきにその実行終了を確認しに行く。確認できるまで繰り返し。 3.次の処理を行う。 といった具合にです。 ただのループで実装すると負荷が大きいので他の手段を考えましたが 判りませんでした。いい方法ってありますか?ちなみにプラットフォ ームはWin2KでCygwinで利用してます。
ぽll
>>717 > Rubyで数秒間処理待ちをしたいのです。
sleep
> 1.ネットワーク経由で端末Aに信号を送る。
> 2.数秒おきにその実行終了を確認しに行く。確認できるまで繰り返し。
何の実行終了? 端末は実行はしないだろう。
720 :
デフォルトの名無しさん :02/11/18 06:40
>>719 どもー。感謝です。
端末に常駐プロセスを置いて、ftpを間にかましてI/Fにファイルの有無と
かを用い、再起動を多端末に掛けていくってなです。原始的で危なかっし
くてかっこ悪いですが・・。
pingが切れる→復活するのを待て。ってやりたいなと。
もひとつお尋ねしたいんですが、常駐ってのはどうしてますか?考えたのが、
1.ただのループ
2.他のプログラム(cronとか)から起動。
です。
Ruby的にクールな、もしくは当たり前な方法ってのはどんなんでしょうか。
. : ,ノ キ、 : . -----‐=========´,. , == ,. -- .、 ,./ !|l´. : ,r:':;ノレヘvヽ ,.r'.::1 i l| /;:::f (0 r;'i::! ,.r'´:::::::;! i |l ,i:i::::l. ,....,~'゙i:! ,r.'´:::::::::::::i l' l| ,!::!:::l '、,ノ ノ:l ,.-'´::::::::::::::::;r'゙ ,' |l /;::l::::ト、'┬::':´::l ,.r'´::::::::::::::::::::::::i / ll /´`i,:i,:::! /'ヾ;、i;:::l ,.-'´:::::::::::::::::::::::;:- '゙ / .ll ,ノ !:ヾ!´;;;;l.!;;;;;}::;! ,.-'´:::::::::::::::::::::::::::::/ / l! ム-.、 /;;;;;;;;;;;;;l !;;;;;;;ヽ,.-'´:::::::::::::::::::::::::::::;:- ' , ' l ,}'´ ヽ/;;;;;;;;;;;;;;;;;l,l;;;;:-'´:::::::::::::::::::::::::::::::::;f´ , ' ! / /';;;;;;;;;;;;;;;;;;;;-'´::::::::::::::::::::::::::::::::;;;;;ノ ,:' / ,i゙ ;;;;;;;;;;;;;;:-'´::::::::::::::::::::::::::::::::::;f´ / / ! ;;;;;;;;;-'´:::::::::::::::::::::::::::::::::;:- '゙ / / ./. ;:-'´:::::::::::::::::::::::::::::::::;;;ノ ,. '´ ,/ ./-'´:::::::::::::::::::::::::::::::::::ノ´ , '´
>>720 > 端末に常駐プロセスを置いて、ftpを間にかましてI/Fにファイルの有無と
> かを用い、再起動を多端末に掛けていくってなです。原始的で危なかっし
> くてかっこ悪いですが・・。
> pingが切れる→復活するのを待て。ってやりたいなと。
端末=クライアントってことかな? 再起動ってシステムごと?
どういうことを意図してるのかいまいちよく分からないんだが。
> もひとつお尋ねしたいんですが、常駐ってのはどうしてますか?考えたのが、
> 1.ただのループ
> 2.他のプログラム(cronとか)から起動。
> です。
> Ruby的にクールな、もしくは当たり前な方法ってのはどんなんでしょうか。
どっちでもいいんじゃん。運用形態次第かな。ruby-talkなんかだと、何日も
動かし続けたらバグを見つけた、なんていってる猛者もいるようだが。
漏れ的には、cvsup->compile->installしたら全部立ち上げ直しなんて面倒な
ので、同じプロセスがずっと居座ってしまうのは避けたいけど。
723 :
デフォルトの名無しさん :02/11/18 12:38
クラスの名前って動的に取得できますか?
ObjectSpace.each_object{|i|p i if i.type == Class}
>>723 あるクラスklassの名前ならklass.name。
>>724 それは名前の取得とはちょっと違うし、each_objectの引数を使ったほうがよい。
ObjectSpace.each_object(Class) {|i|p i}
726 :
デフォルトの名無しさん :02/11/18 20:40
RHGの出版社ってどこ? 予約できるの? 作者のページ見てたら、あんまり出回らないかもとか 書いてたから確実に入手したいのですが。
Rubyだけで書かれたブロック崩しキボンヌ
730 :
デフォルトの名無しさん :02/11/21 18:38
モジュール内で、そのモジュールが提供するメソッドだけ から呼び出せるサブルーチンのようなものを作りたいのですが、 メソッドの可視性はどうすればよいですか? module Foo def foo puts 'foo' end def bar foo end module_function :bar end というモジュールで Foo::bar とやれば 'foo' が出力され、 Foo::bar という呼び出しはできないようにしたいのです。
どのスコープで >Foo::bar とやれば 'foo' が出力され、 どのスコープで >Foo::bar という呼び出しはできない の?
>>730 Foo::fooが呼び出されないようにしたいんだよね。(好意の原理[principle of charity]に従って解釈…)
つまり、Fooモジュールの中以外からはfooメソッドにアクセスさせたくないと…。
それなら、これでどうよ?
module Hoge
module_function
def moe
puts "moemoe!"
end
def hero
moe
end
class <<self
private :moe
end
end
Hoge.hero
begin
Hoge.moe
rescue Exception => e
puts e
end
-----------------------------------
moemoe!
private method `moe' called for Hoge:Module
うーん、何か違うような…。
説明がヘタですみません。
>>732 のようなことをやりたいわけです。
確かに
>>732 のような書き方で実現可能ですが、それって、
特異メソッドにしてる、ってことですよね?
なんとか、もうちょっとすっきりとは書けないんでしょうか…。
『オブジェクト指向スクリプト言語 Ruby』P.189 によると、
private メソッドは
- レシーバを省略した形式でしか呼び出せない
- 関数的に使われるメソッド
- 一般公開しない作業用のメソッド
とあるので、まさにこれだぁ、と思ったのですが上手く行かない。
そのモジュール内のメソッドが共通に使える作業用関数的なメソッド
なので、Foo::foo という形で外に見せたくないのです。
もう、見えちゃっていいじゃん。 減るもんでもないし。
>>734 まぁ、そうなんだけど(^^;
class だと private で上手くいくのに、module だとダメなんだなぁ、
と思って。
>>730 だと bar が Foo のインスタンスメソッドでもあるけど、
その必要はあるの?
その必要がなくて、Javaでいうところのstaticメソッドでありさえ
すればいいなら、
module Foo
class << self
def foo
puts 'foo'
end
private :foo
def bar
foo
end
end
end
でいいんじゃないの?
多分クラスメソッドと特異メソッドを誤解していると思う。
Rubyのクラスメソッドは、そのClass or Moduleの特異メソッドだよ。
738 :
デフォルトの名無しさん :02/11/23 11:09
str = "It is automatic potato" match = Regexp.new(/uto|ati|ato/) というような条件で、正規表現にマッチする t の位置を知りたいのですが、 どうすればよろしいでしょうか。 上の例では、9,13,21 です。
たまに for i in 10 ensure ... end とか書きたくなる。begin/endブロックなら defだろうがforだろうが全て統一的に書けたのにね。
>740 情報ありがとうございます。 以下のようにやって、とりあえず目的は果たせたのですが、 なんか、一括してやる方法がありそうです。 もしご存知でしたら教えてください。 str = "It is automatic potato" /(uto)/ =~ str puts $~.begin(1) /(ati)/ =~ str puts $~.begin(1) /(ato)/ =~ str puts $~.begin(1)
/uto|ati|ato/ は uto ati ato のうち_どれか一つ_にマッチングさせる正規表現だよ。 pat = ["uto", "ati", "ato"] str = "It is automatic potato" pat.map{|i| str.index(i)} #=> [7, 11, 19]
あるいは。 /(uto).*(ati).*(ato)/ =~ str Regexp.last_match.begin(1) Regexp.last_match.begin(2) Regexp.last_match.begin(3)
>742,743 どうもです。 正規表現はそれだけで一冊の本が書けるわけだ、と思いました。 使いこなせるように勉強します。
たびたびすみません。 puts "automatic".scan(/((au|ma)t[io])/)で auto au mati ma とマッチしますが、 auto と mati だけにマッチする方法はあるでしょうか。
/auto|mati/ じゃだめ? 自動ジャガイモってなんなんだ・・・・
745の例だと、マッチさせたいのは二箇所だけなので手間ではないのですが、 実際は t より左側の部分を複数指定したいのです。 全ての組み合わせを記述するのは面倒でやだなぁ、という状況です。 puts "caution automatic potato action".scan(/((ac|po|ta|au|ma)t[io])/) auti au auto au mati ma tato ta acti ac で、au, au, ma, ta, ac にはマッチしてほしくないのですが、 そうすると以下のように書くしかないのですかね。 puts "caution automatic potato action".scan(/acti|acto|poti|poto|tati|tato|auti|auto|mati|mato/) auti auto mati tato acti あ、ジャガ芋は気にしないでください。 今日はカレーでした。
>>747 puts "caution automatic potato action".scan(/((?:ac|po|ta|au|ma)t[io])/)
>>747 本当は何をしたいのか、すっかり全部話してごらん?
>>748 puts "caution automatic potato action".scan(/(?:ac|po|ta|au|ma)t[io]/)
全体を囲む括弧はいらないかな。
最初(?: )を知らなくて
hoge = []
"caution automatic potato action".gsub(/(ac|po|ta|au|ma)t[io]/){|x| hoge.push x}
puts hoge
なんてのを書いてしまった。
>750 (?:)が使えるとは気づきませんでした。ありがとうござます。 実は、英語の発音変化を表示するプログラムを作るのが目的です。 例えば、母音に挟まれた t は音が変化するのですが、 automatic の t は母音に挟まれていて、音が変化します。 けど、caution は単語だけ見ると uti で t が母音に挟まれているようですが、 実際は、tio の部分は子音で、t の音がそもそもありません。 というわけで、発音辞書を参照する必要があります。 その発音辞書は、 automatic => AO2 T AH0 M AE1 T IH0 K caution => K AA1 SH AH0 N というような書式になっています。(数字はアクセント) で、やっているのは、母音に挟まれたt というパターンに AO2 T AH0 と AE1 T IH0 の部分がマッチするので、 この t は音が変化するということです。 今は単語内だけを見ているのですが、次の課題は文全体も見ることです。 It is automatic という文だと、It is の t も母音に挟まれています。 で、2, 9, 13 と t の位置を得たいわけです。 発音辞書では It => IH1 T is => IH1 Z automatic => AO2 T AH0 M AE1 T IH0 K となっています。
>>736 >
>>730 だと bar が Foo のインスタンスメソッドでもあるけど、
> その必要はあるの?
module はインスタンスを持てないので、Foo のインスタンスメソッド
ってのは無いと思っていたのですが、違うのでしょうか?
class に include された場合に、その class のインスタンスメソッド
として利用可能、という意味でしょうか?
>>752 > class に include された場合に、その class のインスタンスメソッド
> として利用可能、という意味でしょうか?
そう。あるいはextendされたインスタンスの特異メソッド。
Rubyで巨大なHashを使いたいんだけど、どうするのが簡単でしょうか。 大きさはギガバイトクラスです。普通にやったらスワップしまくりで使い物に なりませんでした。ディスクにマップして、適度にキャッシュしてくれるものが あると良いのですが。
>>754 Ruby/Cache を参考にしてみたら?
756 :
デフォルトの名無しさん :02/11/26 14:50
文字列をキーとした Hash を読み取り用メソッドとして定義したいです。 例えば、以下のようなクラスなんですが class A def initialize @hash = {} i = 0 ['a','b','c'].each { |k| hash[k] = i+=1 } end end これを、以下のクラスと同じように動くようにしたいです。 class A def initialize @a = 1 @b = 2 @c = 3 end attr_reader :a, :b, :c end 何かよい方法ありますか。
>>755 あるいはキー数からして巨大ならdbmとか。
>>756 class A
%w[a b c].each {|k| eval "def #{k}; @hash['#{k}']; end"}
end
>>756 ちょっと重くなるが、method_missingを再定義するって手もある。
class A
#......initializeなど
def method_missing(methId)
@hash[methId.id2name]
end
end
この場合、初めからhashのキーにシンボルを使った方がいいかも。
あとは、自分でエラーとかを用意しろ。
>>759 キーをシンボルにしていいならOpenStructを流用するってのは。
require 'ostruct'
class A < OpenStruct
def initialize
super(:a=>1, :b=>2, :c=>3)
end
def to_hash
@table
end
end
Perlもできるけど敢えてRubyで書くときってどんなとき? このスレの人はRubyしか使わない?
すぐにメインがRubyになって、Perlの方が「敢えて」になる。 んでたまにしか使わないもんだから色々忘れてて時間がかかる。
>>760 そんなのがあったのね…。しらなかった。
まあ、ostruct.rbをみると同じ事をやっているだけだから、
流用せずに独自でやるならostruct.rbのソースを参考にしてみて下さい。>756
Hashに項目数120000, サイズが3.5Mのテキストファイルを 登録しました。 これを、プログラムを起動するたびにHashに登録するのではなく、 Hashをファイルなりに保存して起動時に読み込むということは 可能でしょうか。
>766 情報ありがとうございます。 当方、ActiveScriptRuby を使っていますが、 require 'dbm' に対して、 1:in `require': No such file to load -- dbm (LoadError) なるエラーが出ます。 ざっとWebを調べたのですが、もしかすると Windows でサポートされてない機能なのではないでしょうか。
>>767 ruby 1.6.7 (2002-03-01) [i686-cygwin]
では、ちゃんと動いたよ。
バージョンが古いとかはないか?
それか、mswin32版とcygwin版の違いというのもあるかも知れない。
ActiveScriptRubyじゃなきゃいけない理由がないのなら、
制限が少ないcygwin版を使った方がいいかも。
>>767 require 'sdbm'じゃどう?
Marshal使ったほうが良いんじゃ?
>>739 提案してみれば?
do/endでもrescue/ensureを使えるようにしてほしいってのがrubygardenにあっ
たけど、あれもどうなってるんだか。
>>770 データが結構大きいから、Marshalで読むのもやや重いような気がするんだが。
>>772 3.5Mぐらいならたいしたことない。
って思うけど。
120000件のほとんどをランダムアクセスとか、他には大したものが動いてなく て一度読み込んだらずっとプロセスが動いてるとか、メモリが余りまくってる とかならHashがベストなんだけどね。 まぁ使い方次第。
>768 cygwin版Ruby DBM が動くことを確認しました。 でも、cygwin版だと win32ole や Exerb が使えないようですね。 あちら立てればこちら立たずです。
775の書き込みの時、更新していなかったので769以降を見ていませんでした。 >769 おぉ、さくっと動きました。ありがとうございます。 リファレンスマニュアルに、 >SDBM >DBMと同じですが、外部のライブラリに依存しないのでどの環境でも実行できるという利点があります。 とありますね。 誰かの参考になるかもしれないからコードを書いておきます。 require 'sdbm' text=open("C:\\ProDic.txt") prnDct = SDBM.open("ProDic") while line = text.gets element = line.chop.split(/,/) prnDic[element[0]] = element[1] << "," << element[2] end prnDct.close() text.close >770, 772-774 Marshal ですか。いろいろ勉強になります。
>>777 > element = line.chop.split(/,/)
> prnDic[element[0]] = element[1] << "," << element[2]
element = line.chomp.split(/,/, 2)
prnDic[element[0]] = element[1]
mswin32 でも sdbm は使えると思うけど。 dbm/gdbm が使いたいなら mingw32 版かな。
すまん。ログ更新しないで書いた。
781 :
デフォルトの名無しさん :02/12/02 17:41
おい!1.8はいつ出ますか?
来年のクリスマス
1997/12/25 1.1b3 1998/12/24 1.3 1999/12/25 -- 2000/12/25 1.6.2 2001/12/25 1.6.6 2002/12/25 なんだろう?
ファイルパスを受け取るメソッドは ~ をなぜ展開してくれないんだろ。 File.exist?(File.expand_path("~/foo.txt")) とかめんどくさいんだけど。
実際に"~"というディレクトリがあるときに困るから。
>>786 実際やってみたら ~ ってディレクトリ作れるんだなぁ。
まぎらわしいから作れなくていいのに。
>>787 どの環境で試してるのか知らないけど、WindowsなんてSFNで~使いまくりですが。
>>785 shellが、もしくはユーザからの入力を受け付ける時点で解釈すべき
もので、その後は考慮すべきではないから。
鬱だ春菊sage
Ruby では双曲線関数(ハイパボリックサインとか)や 逆双曲線関数は使えないんでしょうか? 自分で作らないといけないんでしょうか?
shim って何?
>>789 *nixよくわからんけどさ、つまり、
>>785 みたいなニョロ付きのパス指定は、shellの入ってない
アカウントではやっちゃいけないってこと?
それともその場合はデフォルトで立ちあがるshellみたいなのが
あるのかな?
>>796 アカウント? ユーザが存在すればshellの指定は関係ないが…。
~(チルダ)指定は元々shellの機能だから、コマンドラインで渡すときにはすで
に展開されているもの。
内部的に使いたいときには、
>>785 のようにFile.expand_pathを使う。
799 :
RHG発売記念age :02/12/10 13:35
買ったヤシいる? レビューきぼんぬ
800!
>>799 知らない間に、また何冊か本が出てるな。
RHG, The Ruby Way日本語版, eRuby本。
>>801 学生さんが書いた XML の本まで、、、
これらの本の中では、普通に ruby を使うんなら The Ruby Way を買うのが良いかな。 RHG はきちんと読んでないけど、読み物としてはなかなか面白い。こういう本は好き。
RHG、今日届いたのでちょっとだけ目を通してみた。 一言でいうと「すごい」。 ここまで綿密に書き込んでるとは、予想を上回っていた。 つーか、売れんのかこの本。
>>804 この本おもしろいねえ。しかし題材は ruby だが、一般 ruby ユーザ向けじゃ
ないな。むしろ C プログラマか、言語処理系を作っている人向きな気が。
>>805 うん、Rubyを題材にしたHacking Guideだな、あれはまさしく。
でもYahoo!でいきなり5位ってのは予想外に売れてる。
807 :
Rubist@部長 :02/12/12 18:14
ExcelをRubyから使うのよりDAOみたいなデータベースを扱うのできる? 金光クンによろしく言っておいてくれよ。
部長! 日本語で書いてくだちい。
Ruby MLじゃいまいち反応が薄いな… > RHG
まだみんな読み終ってないと思われ。
>>810 漏れもまだ読みきってない。密度高すぎだよこれ。
aokiさんって若いのですか? プログラミング暦はどれくらいなのでしょう。 少し嫉妬しました。
>>812 若いでしょう。
Rubyで留年した大学生ってくらいですから。
監修者前書きに「著者はRubyがほぼ最初のプログラミング言語で、 パーサジェネレータのRaccがほぼ最初の自作プログラム」と書いて ある。
新Rubyサイト赤過ぎて目が疲れる人の数→(88)
>>815 つーか、どこかしこに見え隠れするtDiaryっぽさがやるせない。
>>818 Rubyのスレなんだから、
sub(/どこかしこ/, "そこかしこ")
と書いて欲しいポ…
>818 (*゚▽゚)当たり前だろ
先週から、rubyの勉強スタートしました。 GNU calで3ヶ月表示(cal -3)して cal -3 | sed "s/^\(.\{21,42\}\) \(`date +%_d`\) \(.*\)$/\1 ^[[44m\2^[[0m \3/" でハイライト表示なのですが、 これをrubyでやる場合、どんなコードになるでしょうか? 参考: % cat position.rb #!/usr/local/bin/ruby POS=15 while gets() $_[0,POS]=$_[0,POS]+'|' print $_ end
822 :
デフォルトの名無しさん :02/12/18 16:12
tab_index = line.rindex("\t") tab_index = 0 unless tab_index tab を探して、無かったら 0 を返してほしいんだけど、nil が帰るみたいだ。 コレを一行でプログラムする手はないですか
823 :
デフォルトの名無しさん :02/12/18 16:29
突然なんですがperlのプログラムをrubyのプログラムに 変換できる便利なツールなんてないですか? Cをrubyに変換できるとかその逆でもいいんんですが・・・。 知ってる方いたらアド教えてください。
>>822 > tab_index = line.rindex("\t")
> tab_index = 0 unless tab_index
「||」を使えばいい。次のどっちか好きなほう使って。
tab_index = (line.rindex(/\t/) || 0)
tab_index = line.rindex(/\t/) || 0
質問とは関係ないとこだけど、文字列探索メソッドの引数には
正規表現を渡しといたほうが無難。実は正規表現にコンパイル
されます〜とかいうことがあるから。
>>822 tab_index = line.rindex(/\t/).to_i
>>821 > GNU calで3ヶ月表示(cal -3)して
> cal -3 | sed "s/^\(.\{21,42\}\) \(`date +%_d`\) \(.*\)$/\1 ^[[44m\2^[[0m \3/"
> でハイライト表示なのですが、
今日の日付をハイライトしたいってこと?
d = "%2d" % Time.now.day
IO.foreach("|cal -3") do |l|
puts l.sub(/^(.{21,42} )(#{d})\b/) {$1+"\e[44m"+$2+"\e[0m"}
end
>>823 無理。
>>824 つか、\t で始まる文字列と \t がない文字列の区別がつかないような。
>>826 どうもです!勉強になりました。
今、さらに勉強のため、
@2000/7/3は何曜日であったか?
AWEB上の7/3(火)という情報は何年のものか?
の機能をつ付け加えたものを考えています。
ところで、@のような機能は考え方としては
7月 2000
日 月 火 水 木 金 土
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
という出力から3をマッチさせて、上の「月」を出力する
という方法は一般的ですか?
ほかに簡単な方法ありそうですがどうでしょう。
ところでさー、明らかにすれ違いだけど、 ------------ % cal 11 2 2002 使い方: cal [-mjyV] [日 月 年] ------------ の[日 月 年]の、「日」って何なの? 日まで指定できないよね?
>>828 > という出力から3をマッチさせて、上の「月」を出力する
> という方法は一般的ですか?
一般的ではない。
require 'date'
puts %w[日 月 火 水 木 金 土][Date.new(2000, 7, 3).wday]
そろそろ、赤狩りが必要なようでつね。
RubyでWideStudioな本でないかな。
833 :
デフォルトの名無しさん :02/12/20 05:07
WideStudioがRubyもサポートしたとは・・・。 んで使用感はどうなんでしょ?
834 :
デフォルトの名無しさん :02/12/20 06:43
突然で申し訳ないのですがperlのプログラムをC言語に変換出来るツールとかってありますか? perlがRubyに変換できたらもっとうれしいんですが・・・。どーしようもない質問ですいません。
835 :
デフォルトの名無しさん :02/12/20 06:47
ごめんなさい。上のカキコした者です。最近Rubyやりだしたんですが どうも理解出来ずに・・・。C言語はそこそこ自信あるんで、もしそんな ソフトがあればもう少しRubyも理解できるんじゃないなと・・・。 言い訳かな?
836 :
デフォルトの名無しさん :02/12/20 06:53
最近RubyやりだしてC言語はそこそこ自信があるのと perlのプログラムをCに変換する事に何の関係があるのだろうか…
彼から学んだのは、「ドイツ語にはドイツ語の約束事がある」ということでした。 この言葉の意味を広げると、ほかの言語から Ruby に移ってくる人への有用な助言になります。 Ruby には Ruby の約束事があります。Ruby に Perl と同じものを求めないでください。 Ruby は Perl ではないからです。また、LISP や Smalltalk と同じものも求めないでください。 ただし、Ruby にはこれら3つの言語と共通の要素があります。 まず、自分の予想どおりになっているかどうか試してください。 けれども、予想が外れた場合には(Matz が変更に同意しない限り)それが Ruby の決まりなのです。
>>835 > C言語はそこそこ自信あるんで
君のその自信は単なる過信だ。
>>839 > それ ruby-talk で見たような。
最近のあのネタスレへのreplyの一つだったかと。
842 :
デフォルトの名無しさん :02/12/20 15:47
どーしようもない質問なんですが、例えば 名前、住所、電話番号 名前、住所、電話番号 というデータが入ったtxtファイルがあって、そのファイルを読み込んで、 指定した名前に合っている人がいたら住所だけ表示とか電話番号だけ表示 したい時はどうしたらいいんでしょうか? ファイルをオープンして読み込むところからよくわからないです。 名前があったらその一行を表示するプログラムは多分 $KCODE = "s" str = ARGV.shift reg = Regexp.new(str) ARGF.each do |line| if reg =~ line print line end end こんな感じでいいかと思うのですが・・・。よろしくお願いします。
843 :
デフォルトの名無しさん :02/12/20 17:45
"hoge aaaaaa vvvvvv bbbbb" このようにスペースで区切られた文字列を、最初のスペースで 二つに分けようと思います。 "hoge","aaaaaa vvvvvv bbbbb" それで、下のようなコードを書きました。 str =~ /(\w+) (.*)/ cmd = $1 arg = $2 "hoge" のように、スペースが含まれない文字列の場合、 "hoge",""(もしくは"hoge",nil)のように分けたいのですが、 上のコードでは対応できません。 なにかスマートな書き方はありませんか?
>>843 if /\A(\w+)\s*/ =~ str
cmd, arg = $1, $'
end
再度、rubyスレで聞きます。 谷口 腕太 タニグチ ワンタ 1977年生まれ を 谷口 腕太,タニグチ ワンタ,1977年生まれ に置換したいです!!! "2つめの全角スペース"→"," "4つめの全角スペース"→"," という風に置換するにはどうすればいいのでしょうか? そんなことできますか??
if(str == '谷口 腕太 タニグチ ワンタ 1977年生まれ') str = '谷口 腕太,タニグチ ワンタ,1977年生まれ' end
a = "谷口 腕太 タニグチ ワンタ 1977年生まれ" a =~ /([^ ]+ [^ ]+) ([^ ]+ [^ ]+) ([^ ]+)/ puts "#{$1},#{$2},#{$3}" ひねりなし。
>>848 エンコーディングオプションを忘れないこと。
flag = ',' puts "谷口 腕太 タニグチ ワンタ 1977年生まれ".gsub(/ /){ flag = (flag == ',' ? ' ' : ',') }
仕事で表計算をたくさんしなければならず、困っています。 この際だから、rubyでも覚えようかな…… 現在の目前の課題は、 1997,00157 1998,00014 1998,00265 1998,00335 1998,17304 1999,00339 1999,00385 1999,00388 1999,00392 1999,17321 1999,17346 1999,2510109491313 を 1997,00157 1998,00014, 00265, 00335, 17304 1999,00339, 00385, 00388, 00392, 17321, 17346, 2510109491313 に変更することです。 これにはどのようなアルゴリズムが適当でしょうか?
>>851 table=readlines.map{|l|l.chomp.split(/,/)}
keys=table.map{|a|a[0]}.uniq
keys.each { |k| print "#{k},",table.select{|a,b|a==k}.map{|a,b|b}.join(','),"\n"}
ハッシュ大好き。 h={} ARGF.each do |str| year, val = str.chomp.split(/,/) next unless year or val if h[year] then h[year] << val else h[year] = [val] end end h.to_a.sort{|a,b|a[0]<=>b[0]}.each do |year, vals| print "#{year},#{vals.join(',')}\n" end
>>852 それは違うだろ
古典的なやり方。キーブレークとかいうことが多いような。
k = nil
v = nil
while l = gets
a, b = l.chomp.split(/,/)
unless a == k
puts v.join(",") if v
v = [k = a]
end
v << b
end
puts v.join(",") if v
おまいらには失望しました
乗るなら早くするだよもん。乗らないなら返るだよもん。
859 :
デフォルトの名無しさん :02/12/23 00:16
256倍の本 入道、王道、番外編っていつでるの?
>>855 そう書くと後から順番ばらばらなデータが持ち込まれて泣く泣く書き直すことに・・・
って五分もかからないんだけどさ。
sort を通せばいいだけじゃない
オンメモリでログ解析は不味いだろ。
>>854 ,863
1.7限定になるが。
h = Hash.new {[]}
ARGF.each do |str|
year, val = str.chomp.split(/,/)
next unless year or val
h[year] <<= val
end
h.sort.each do |year, vals|
print "#{year},#{vals.join(', ')}\n"
end
あとHashもEnumerableなのでto_aする必要はないし、キーが一意なことは保証
されてるからブロックも不要。
あと、valsのカンマの後には空白が入るのな。最初気づかなかった。
865 :
デフォルトの名無しさん :02/12/23 07:47
yieldってもしかすると、schemeでいうlambda渡しみたいなもんですか?
>>854 配列のハッシュのこと?こうかな?ruby書けません。
while (<>){
my($val,$year)=split /:/;
chomp $year;
push @{ $years{$year} }, $val;
}
for $year (sort keys %years){
print "$year,",join(", ",@{$years{$year}}),"\n";
}
>>866 > my($val,$year)=split /:/;
順序逆だよ。しかもなぜか区切り文字が変わってるし。
>>865 似てるけど違う。lambdaはブロックをオブジェクト化するための関数として別
にある。
よく判りませんが、pushで配列に貯めていく書き方は出来ないのですか?
ひらがなって、 1.あ、い、……か、き、……ら、り、……ん 2.あ、か、さ、た、な、…… 3.お、こ、そ、と、の、…… のように、色んな抜き出し方があると思います。 単純すぎるのかもしれませんが、 ruby -e '"あ".upto("ん"){|x| print x, " " }; print "\n"' のようにすると、「ぃ」とか「ゑ」とかまで出ます。 これらを微妙に調整することは出来ないのでしょうか? あ行 か行 …… わ行 をrubyにはかせたいのですが……
>>870 下手な小細工より、テーブルで持ってしまうことをお勧め。
そうですか
XP懐疑編読んでたら、2箇所ほどで Ruby が言及されてるね。 主要な開発手法/形態の概要を述べている章で、オープンソース開発の一形態として一節のスペースが割かれていた。 また、ユニットテストの概要とその普及度を述べている節で、 ユニットテストツールが標準添付されており、Rubicon なんてのもあると紹介。 特定のプログラミング言語について言及されている場面がほとんどない本なので、ちょっとびっくり。
>>868 block = Proc.new { |...| ... }
(define block (lambda (...) ...))
だと似てる?
>>874 ある意味似てるけど、Schemeだと関数の定義自体もそれじゃなかったっけ?
Rubyではそのblockはメソッドと全く同じように扱うことはできない。
876 :
デフォルトの名無しさん :02/12/24 19:42
1.6.8リリースage
文法上、というよりは、用途として似ているか、といえばどうでしょう?
用途はどう使いたいかによるけど。 ローカル変数を共有するところなんかは、たぶん似てると思う。
ずっと ruby ばっかりやってて久しぶりに C をやったが、 関数から値が帰ってこなくて悩んでたら return するのを忘れていた
あーぁ elif else if elseif elsif
>>881 予約語はエディタでハイライトされるから、そんなに間違えることないんだけど。
最後に計算した値がそのままレジスタに載ってて戻り値に見えちゃって、 return抜けてるのにしばらく気付かなかったりするんだよな。 コンパイルは通るし。 インラインにしたりとか最適化するとバグが顕在化してしばらく悩む。
>>883 gccなら-Wreturn-typeとか
-Wall
886 :
デフォルトの名無しさん :02/12/26 16:07
Visualu Rubyを使っている人はいますか? 以下のコードで、エディットボックスを左クリックすると、 クリックしたボックスに"clicked"が追加されるのですが、 ed2のボックスをクリックしたら、ed1のボックスに "clicked"が追加されるようにするにはどうしたらよいでしょうか。 require 'vr/vruby' require 'vr/vrcontrol' require 'vr/vrhandler' class MyEdit < VRText include VRMouseFeasible def self_lbuttondown(shift,x,y) self.text += "clicked" end end class MyForm < VRForm include VRMouseFeasible def construct addControl(MyEdit, 'ed1', 'ed1', 3, 3, 100, 60) addControl(MyEdit, 'ed2', 'ed2', 3, 90, 100, 60) end def eb1_lbuttondown(shift,x,y) messageBox "clicked" end end VRLocalScreen.showForm(MyForm, 200, 200, 120, 200) VRLocalScreen.messageloop
こんなんでいいかい? そのまんまだけど。 class MyEdit < VRText include VRMouseFeasible @out = nil def self_lbuttondown(shift,x,y) if @out.nil? self.text += "clicked" elsif @out.text += "clicked" end end def set_out(sib) @out = sib end end class MyForm < VRForm include VRMouseFeasible def construct ed1 = addControl(MyEdit, 'ed1', 'ed1', 3, 3, 100, 60) ed2 = addControl(MyEdit, 'ed2', 'ed2', 3, 90, 100, 60) ed2.set_out(ed1) end end
おぉ、素早いお返事ありがとうございます。 ところで、本家 VisualuRuby計画(仮称)以外で、 Visualu Rubyの参考になるサイトってありますかね?
889 :
デフォルトの名無しさん :02/12/26 18:20
Rubyをインストールしたいんですがやり方がわかりません。 教えて下さい。
1.8 preview が出ましたけど、 1.6 から 1.8 にアップデートするときって、 サードパーティのライブラリ(site-ruby/1.6にあるやつ)はまた入れなおした方がいいんでしょうか? 単純に 1.6 を 1.8 にコピーするだけじゃダメですよね?
1.8ってなにがかわるの?
893 :
デフォルトの名無しさん :02/12/26 20:32
Zopeみたいなの、Rubyにありませんかね。いまからPhython覚えるのもなぁ.. Warlusとか、生き残るかどうかいまいち信用ならんので。 eRubyレベルでしこしこアプリ書くのもしんどいし。 みなさん、Webアプリどうやって作ってますか?
PHPは?
>>895 IOWAはSmalltalkに移って、Seasideになっている。
作者はRubyに移植する気はあまりないらしい。
narfはcgi.rbのインターフェースの部分(HTMLの生成以外)は
良いけど、テンプレートのライブラリとしては疑問。
ruby-talkで言ってたけど、amrita + narfくらいが
良さそうかな(遅いけど)。
今のところWalrusがWebアプリのライブラリとしては
一番整っているだろうけど、個人的に
RDっぽい文法が好きになれない。
897 :
デフォルトの名無しさん :02/12/27 10:36
dRubyもeRubyもそれぞれはすごくヨイと思うのだけれど、 それらをインテグレートしたソリューションみたいなのが Warlus以外にも欲しい。 J2EEコンテナみたいな、Rubyコンテナがあれば もっと企業でも使いやすいと思うんだけど……。
898 :
デフォルトの名無しさん :02/12/28 00:29
visualu rubyで思い出したけど、 FormDesignerの更新って止まってるよね。 なにか他にいいRADツールある?
900 :
デフォルトの名無しさん :02/12/28 10:45
メソッド呼び出しの括弧省略ガイドラインってありますか? Ruby覚えたての頃に作ったスクリプトでは括弧が省略できるのが、 なんとなくうれしくて省略してました。んでそのスクリプトを 改訂しようと考えているのですが、括弧をどうしようかなと思って・・・。 というのも、RHGを読んでいたら、Ruby2の予定のところに、 「ネストしたメソッド呼び出しの括弧の省略ができなくなるかも」といった感 じのこと書いてあったのですが、たぶん、↓みたいなのが廃止になるってこと ですよね?たぶん。 Ruby2はまだ先のことですが、なんか慣例があればそれに従いたいなと思って。 def f x; print "f() = #{x}\n"; end def g y; print "g() = #{y}\n"; y; end f g 10
901 :
デフォルトの名無しさん :02/12/28 11:11
Windows で Ruby から C:\hoge.exe を実行する方法はありますかね?
>>899 あれ?
1.8 系列は 1.8.0-1.8.2 の開発系列と
1.8.1-1.8.3 の安定系列になるんだったっけ?
>>902 system('c:/hoge.exe')
>>900 そだね。省略の規則としては、(省略したければ) 一番外側の
括弧だけ省略、でいいんじゃない。漏れは返り値を使わない
ときは省略、ということにしてるよ。
lvar = m(arg) # 省略しない
m arg # 省略する
lvar = m(m2(arg)) # 省略しない
m m2(arg) # 省略する
# メソッドの中では
def function
calc(arg) # 返り値が重要な場合は省略しない
end
lvar = function()
def procedure
print arg # 返り値が重要でなければ省略
end
procedure # 必然的に呼び出しでも省略することになる
>>903 > 1.8 系列は 1.8.0-1.8.2 の開発系列と
> 1.8.1-1.8.3 の安定系列になるんだったっけ?
いや。開発系列はずっと1.8.0。安定系列は1.8.1, 1.8.2, ...。
1.8.1が出た時点で開発系列は1.9.0に移行。
つまり開発版ではTEENYは0固定になる。
puts ' ' * 4 + 'hoge'
>903 どうもです。
>>895 情報どうも。narfを見てみたけど、unit testをやるためのものか。
amrita, warlusのサブセットとしてよさそうだけど、warlusとの関係は?作者は別?
909 :
デフォルトの名無しさん :02/12/28 21:03
>>893 はっきりいって、ruby における Web 開発環境は壊滅状態。
そこらへんの解決策として Ruby + Eclipse + 各種プラグイン に求めたいなと俺は思ってる。
開発環境というなら、他のスクリプト言語でも大体同じようなものだけれども、 (Macromedia Dreamweaver とか使うと、今のオープンソースなスクリプト言語を取り巻く 開発環境が以下に情けないか分かる) 基礎的な技術のほかに、それを便利に扱えるようにするためのツールも共にあってこそ意味があると 俺は思う。
>>909 最近この手のML読んでなかったので助かる。
EclipseってIDEか。
うーん、IDEよりもWebアプリのコンテナというかプラットフォームが先だなあ。
いくらクリッククリックでプログラム作れても、
ソースがMVCごちゃまぜになるんではたまらん。
ちゃんとした標準ができるまで、
Amritaなどでなるべくシンプルに保っておくのが、自作業務アプリを長生きさせる秘訣かなあ。
Ruby自体はいい言語なのに、こんなところで Perl/Python/PHPに負けてしまうのは痛恨だ。
Ruby Webプログラマよ、団結しよう!
912 :
デフォルトの名無しさん :02/12/29 11:22
>>911 微妙なのが、Amrita が最適な場合と、そうでない場合がある。Amrita で済ませられるものは全部 Amrita でやるのが
美しい感じはするけど、複雑な HTML を吐き出すなら ERB でやったほうがいい場合もある。
--
Amrita を単純にデータを動的にHTMLを書き出すためのツールとして利用しようとしたとき、
プレビューするのにいちいちスクリプト起動させなきゃならんのか、という話にもなっちゃう。
CGI インターフェース作ってプログラムすれば、即座にプレビューする環境も作れるけど、
何か一本貫いたコンセプトを持ったツールがあってもいいはず。(Dreameweaver 用の Ruby Extension 作るってのも、必要かも。)
>>912 amritaよりもeRubyの方が良いというのは具体的にどういう時?
もうひとつ。プレビューするにはeRubyでもamritaでも
スクリプトを起動せざるを得ないと思うんだけど、
912はどういう用途を考えているの?
Ruby/qt2 で日本語が表示できないよお。フォントの指定の仕方を教えて。 FreeBSD 4.7R で packages で入れた ruby-qt2 を使っています。
915 :
デフォルトの名無しさん :02/12/29 18:39
>>912 俺の用途としては、フツーのホームページの作成で、それにちょっとしたデータを埋め込んで、HTML として書き出して
FTP でアップロード、みたいなことやろうかと思った。
(更新日時とか、メニューとかはどのページでも使うから BasePage クラスにソレを定義して、これを継承して各種
ページを定義して云々・・・とかやっていたんたけど、別にメニューとか更新履歴とか載せるだけなら Dreamweaver
でも余裕で可能だった。しかもそっちのほうが圧倒的に効率的作れると思った)
RDEってどうよ?つかVisual Studio.NETに組み込めたりしないの?
917 :
デフォルトの名無しさん :02/12/29 22:03
>>916 やれるんでないか? Ruby IDE を組み込むだけなら。
しかし、それを阻む要因としては、やっぱ忙しいのかね。IDE に興味ある人ってのは。
919 :
デフォルトの名無しさん :02/12/29 23:17
>>918 マジかよ。Extension 作って感謝してもらいたいくらいなのに、金を取るとは。
(Visual Studio を利権の一つとでも考えているんだろうか。全く世の中を見誤ってるとしか思えん)
じゃあやはり、Eclipse の他手は無いな。
Rubyは.NET上でこそ最も効果的に使えると思うんだけどな。 ライブラリはMSに作らせてそれを簡単に使えればこれほどうれしい事はない。
>>914 うちではほぼ同じ環境で
setenv LANG ja_JP.eucJP
して、example の codec.rb を実行したらちゃんと漢字出てる。
LANGの設定がないと駄目。
artonとか言う人が言ってた .NETライブラリを使うのはC#で十分。てかC#すげーって
924 :
デフォルトの名無しさん :02/12/31 00:09
rubyを始めようと思いRDEv9.90をインストールしたんだが、 日本語できる風なのに思いっきり英語だったので面食らった。 言語ファイルを外部に用意する必要があるのか、 それともデフォでオプションから変更できるのかおせーてくらはい。
>>924 質問スレにするべきだったかも。
TranslationsフォルダにJapanese.xmlがあるから、
Option>other2のTranslationに、それを指定しる!俺
やっぱZOPEみたいなアプリケーションサーバーがほしい。。 ぅおるらすもいいけど、apacheの設定がめんどくさいでつ。 ZOPEまでいかなくても、ページじゃなくてサイト全体を管理する アプリケーションが必要じゃない? あむりたってページ吐くだけだよね?
>>927 おお。
そういえば前に噂を聞いたはずなのに、すっかりわすれていました。
ためしてみることにします。
ありがとう。
amrita使っている人教えてください。 &をサニタイズ(?)したくないのですが、どうするのでしょうか。 以下の参考になりそうな例があったけど、どう使うのか良く分かりません。 t = TemplateText.new '<p id="a">sample_text</p>' t.expand(STDOUT, { :a=>SanitizedString["<xxx>"] }) 文字列全体に対してやりたいのです。
自己レスです。 ようするに、str="&hoge"に対して、 SanitizedString[str]とやれば良かったのでした。
>>926 Warlusの開発コミュニティってどれくらい大きいの?そもそもオープン?
なんかZopeみたいな安心感がないんだよな。
>>931 コミュニティとしては小さいと思う。
(でも、最初はどこも小さい。)
ひとりは商用のアプリケーションを作っているみたいだけどね。
ソースはGPLにライセンスされているから、オープンだけど、
GPL3が出たら、誤解されそうだな。
ところで、Zopeって安心か?
バージョンアップのたびに互換性がなくなるって話を聞くんだが。
(あと、2.6では日本語がぼろぼろらしい。日本の人が文句を
言って修正してもらっているところみたい)
Windows 2000 などのシステムログやアプリケーションログにイベントを書き込む 方法を教えていただきたいのですが。お判りになる方はいますか?
>>933 Windows API自体分からないというのなら、スレ違い。
APIとしては分かるけどRubyでのやり方が分からないというなら、
CかC++のサンプルコードを示してくれ。
require 'win32ole' wsh = WIN32OLE.new("WScript.Shell") wsh.logEvent 1, "エラーだよ" #1 .. エラー, 2 .. 警告, 4 .. 情報
WSHのスクリプトエンジンとして使っているので単純に WshShell = WScript.CreateObject("WScript.Shell") WshShell.LogEvent(0, "OK") でいけました。
937 :
デフォルトの名無しさん :03/01/05 17:55
system("c:\hoge.exe")でファイルを実行できることを学びましたが、 Windowsの関連づけ実行をRubyからする方法はあるでしょうか? tako.html をタブブラウザで見たいです。
一番単純なのは cmd.exe /c tako.html でなきゃ Win32API で ShellExecute
>938 ありがとうございました。
940 :
デフォルトの名無しさん :03/01/06 10:01
>>940 Eclipse対応(・∀・)イイッ!
盛り上がって欲しいけど日本ではWindows対応以上に
玄人受けのしなさそうなプロジェクトだなぁ・・・
942 :
デフォルトの名無しさん :03/01/06 11:50
>>942 ダメかなあ。漏れは仕事ではJavaなのでEclipse使ってるんだけど、
この設計思想は(・∀・)イイ!と思ってRDTにも貢献したいんだけど、
Eclipse*の*開発ってちょっと敷居高いんだよな……。
GUIプログラミングはあんまり詳しくないし。
なので、ニッポンのRuby強者の降臨を待ちつづける日々です。
(自分でも少しずつ勉強はしてるんだけど)
eclipseには個人的には盛り上がって欲しいが、 その可能性は低いと思う。 日本でのeclipseの知名度って(Java以外のIDEとしては)そんなに 高くないと思うんだけど。 ruby-talkではFreeRIDEのRich KilmerかCurt Hibbsあたりが最初に eclipseのRubypluginを最初に作ろうとしていたんだけど、 途中でFreeRIDEに変わってしまった。 (ちなみに日本でFreeRIDEがまともに使われるようになることは当分ないでしょう) それ以降ruby-talkではEclipseよりもFreeRIDEの方が主流 のような感じを受ける。 簡単なRubyスクリプトパーサーとデバッガがあるかどうかが RDTのpointになる気がする。その辺をsupportできれば SWTとEclipseの既存の機能を使って、良いIDEになる可能性も…。
ttp://www.rubyide.org/cgi-bin/wiki.pl をちょっと読んでみたんだけど、
> /PerspectiveFeature -- Implement eclipse-like perspectives.
とか
> * Plug-ins: the IDE should follow the Eclipse model of implementing features through plug-ins.
とか、他にもEclipseへの言及がみられたりして、
なんとなくyet another Eclipseな匂いもするけれど、この場合、
FOXで実装してるというのがRubyistの矜持か。
JavaでRubyのIDEを実装するというのは確かに隔靴掻痒かもしれないけれど……
RDTにきちんとしたRubyパーサとデバッガがないからその点キビシイ。
PHPなんかはEclipseでの開発環境も整っているだけに歯痒い思いしてます。
>>944 > (ちなみに日本でFreeRIDEがまともに使われるようになることは当分ないでしょう)
理由は?
公式サイトの新デザイン、かっこ悪いと思うのは俺だけ? 技術系のサイトだから「デザインはそれほど気にしてない」という スタンスだったらまだいいのだけど、カッコよくしようとして失敗した という感じだから、どうにも痛々しいのだけど。
ちょっと前に新デザインに移行したと思ったら、 今アクセスしたら旧デザインだった。 戻したのか?
>>949 旧デザインではなくて、新デザインをすこし改良したのでは?
FreeRIDEのメインの開発者のCurt Hibbsは最初にEclipseの
Rubyプラグインを作ろうとしたんだから、
その影響があって当然だろう。
今のFreeRIDEはFOXのせいで日本語等が使えないので、
将来的に他のGUIツールキットに置き換わることになっていたはず。
(確かwxWindowsのバインディングをCurt Hibbsが書いていたはず。)
PHPって商用IDE(名前忘れた)のEclipseベースをしたものがあった気がするけど、
FreeのIDEはこれ?
ttp://webstudio.japansite.org/
>>951 FreeRIDEのgtk+バインディングがあるとかないとか、
どこかで見なかった?
次のスレはどうする?
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
ZAQ規制解除ヽ(´ー`)ノ
最高裁への上告は認められなくなったから、これで事実上判決確定だよ。
逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。
二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm ようするに上告しても今の制度では100%無駄。 これで完全終了ってことか。
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
記念カキコ
書き込まないのが一番という事で。
961 :
デフォルトの名無しさん :03/01/10 10:05
なにこれ。
//| /ヽ / ヽ //| | ヽ / ヽ /\ //| | ヽ / ヽ |\ / \ //| | ヽ / ヽ | \ / \ // | ヽ / | | | \ / \ / | ヽ / / \! | | \/ \ / | /\ V / ヾ、∠___| / ∠ \ / _-― ̄`\ // | ̄ -ヽ \ / /  ̄| \ // | | \ \ | / / / / ハーハッハッハ!!!! ///| ヽ、_ (\\_ |__/ /◯ _,.-' / /// | ._ ` ‐-‐' ヽ!.l|, l__/ヽ‐-‐‐'´ __,. / ザマあないな!!!! ////|  ̄=≡/ =i i= ヽ≡=== ̄ \ //// | | 「 -┐ \ ひろゆきさんよぉ!!!! //// | /| , ヘ /ー \ /////| __ヽ| ヽ / /| / / ///// | |‐--二二二二 =-イ / / / /| ///// | Y´ `、/ / / / | /\ ////// \ | / / / / | / \ ////////\ | / / / / | / \ /////////ヽ !二二二二/ / / // | / \ //////////ヽ ━== / / |/ \ ///////////\_____/ / //////////
ふぁーすと せかんど さーど ふぉんど ふぁいぶんど
■「T動物病院は削除ルールに従ったのか! 2ちゃんには削除ルールがちゃんとあるんだ!」 2ちゃん独自の削除ルールに従わねばならない法的根拠はありません。 また、2ちゃんの削除ルール自体、判決では不十分なものとされています。 ■「名誉毀損を知りえた時点で削除しろなんて無茶苦茶だ!」 今回、T動物病院側は内容証明郵便でひろゆきに10日以内の削除要求しました。 2ちゃんの削除ルールに則らずとも、社会通念上においても、法的にも、これは十分な通知です。
>>448 現在の仕様でもブラウザで閲覧可能ですが
リロードしてなかったですよ。 個人的には別に良いと思いますけど。 まとめの話とか勉強になるんじゃないかなぁって。 すでに移動されたようなのでこれ以上言いません。 逃げるほうです。
石川県 北國新聞より(30ページ) 県内児童の殺人予告 ネット掲示板「2ちゃんねる」に 県教委がが安全確保通知 今朝、保護者付き添い 悪質ないたずらか インターネットのフリー掲示板「2ちゃんねる」に石川県内の小学生の大量殺人を 予告する書き込みが9日までに見つかった。県教委は悪質ないたずらと見ており、 万一に備え児童の安全確保を促す通知を全小中高校に出した。各警察署も管内の 小学校周辺をパトロールする。 県教委によると、殺人予告は「キラー」の名前で八日深夜から九日午前零時過ぎまで、 「あしたの朝、登校途中の小学生を狙って大量殺人を実行します。車で小学生に 突っ込むことも計画してます」などと五回にわたって記された。 県教委の通知では、不審車両を見かけた場合は警察署に連絡するよう促している。 小学校の中には十日朝の登校時間帯に、教員や地域住民が通学路に立って 児童を見守るほか、保護者が児童に付き添うなどの警戒態勢を敷くところもある
俺もそう思う。高い金自腹で払って掲示板を運営してて 何処の誰かも知らん奴が勝手なこと書いた事によって 自分に火の粉が飛んで来たら、秘密を守ってやる義理は ないよなひろゆきにしたら。
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
WinnyやFreenetを利用して超多段串の先から書き込めるようにならないかな…。
ログ公開が,司直の正当な要請のみによって行われるなら, 批判の対象となった団体が個人を特定することはできないでしょ。
内部告発リスクがありすぎるっての・・
出すだろう、当然。っつうか、今でも出してるんだろうよ。
北朝鮮も平和だよ
半角系板では、業者が書き込むとリモホが表示させられてるみたい
そろそろ 1000取りやってもいいですか?
まだまだ我慢
あ〜あ2ちゃんもこんなアホばっかになっちまったか これも時の流れかね もうだめぽ
つーか、すげー基本的なことなんだけど 「自己責任で書け」(^_^;)つーことやね。 何が大丈夫かどうかってのも、自己責任で考えましょう。 誰々が大丈夫って言ったからなんてー言い訳はもう通用しないんで・・・
↓ はい、それでは 1000 取りどうぞ
チョト(略
生け贄って何ぞや?
988
俺あしたどっかで何かするし。 地球上全部警戒しれ。
■基礎知識■ ■「言論の自由はどうなった!」 言論の自由は、名誉毀損には適用されません。 批評・批判といった言論だと証明するのは、発言者の責任です。 ■「最高裁があるじゃないか! 高裁差し戻しだ! 反訴しろ!」 最高裁は憲法に絡まない限り、受理してもらえません。今回の件では不受理はほぼ確定でしょう。 高裁差し戻しの可能性はひじょうに低いのはひろゆきも承知で、だから、最高裁にもっていこうとしています。 反訴についても、誰を訴えるかという特定が困難。これまた不受理の可能性がひじょうに大。 ■「T動物病院は削除ルールに従ったのか! 2ちゃんには削除ルールがちゃんとあるんだ!」 2ちゃん独自の削除ルールに従わねばならない法的根拠はありません。 また、2ちゃんの削除ルール自体、判決では不十分なものとされています。
本当にそう、IP皆さん解ってる? 泉ピン子の略ってこと。
スマソ。良かったらオレにも教えてくれ。 オレも同じの付けて遊びたい・・・。
game鯖終わってるよ。
(^^)
埋め
埋め立て。
埋め立て。
埋め立て。産め立て。
埋め立て。産め立て。生め立て。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。