これだからRubyistは素晴しいコードを書くなんて言われるんだよな
実際、他の言語より読むのはラクだ。 ソフトの内容の割に行数が少ないと感じる。
ものすごくポジティブな切り返しだな。
>>953 >実際、他の言語より読むのはラクだ。
>ソフトの内容の割に行数が少ないと感じる。
はたして、読みやすさと、ソフトの割りに行数が少ないことは共存するのだろうか?
するでしょ
ソフトってなんじゃらほいという話にはなるが、 Rubyスクリプトは高等な(w動作をさせられる場合でも 読み下しやすい短さで書けることが多いとは感じる
pythonで定積分。 def integrate (f, a, b, n): def subinte (f, a, b, n): if a < b : return f(a) + subinte (f, (a + n), b, n) else: return 0.0 return n * subinte(f, a, b, n) integrate((lambda x: x*x), 0.0, 1.0, 0.01) rubyで書くとどうなるの? つうか、rubyで、関数を引数にするにはどうするの?
いくら短くても inject 使われてたらあほな俺にはそれ以降読めん。
>>958 pythonのコードでインデントが消えるのって致命的だなあ。
それはともかく、こんな感じかと。
コピペするなら全角スペースは適当に置換してね。
def integrate (a, b, n, &block)
def subinte (a, b, n, &block)
if a < b
return block.call(a) + subinte((a + n), b, n, &block)
else
return 0.0
end
end
return n * subinte(a, b, n, &block)
end
p integrate(0.0, 1.0, 0.01){|x| x*x}
961 :
958 :2006/09/24(日) 11:36:08
p integrate(0.0, 1.0, 0.01){|x| x*x} の二番目の引数を増やしていくと SEGVする件について。
3.72まで大丈夫だった
>935-936 あいや、再現条件が間違ってました。 cmd.exeのカレントディレクトリがc:\windows\system32だと、ワンライナーでこけてしまいます。 こちらの環境依存でしょうか? c:\windows\system32>ruby -e"puts [22]" #=> [BUG] cross-thread violation on rb_gc() c:\windows\system32>ruby -e"puts 2/2" #=> 1 c:\windows\system32>ruby -e"puts 2**2" #=> [BUG] cross-thread violation on rb_gc()
折れは1.38で落ちた。mswin32。(Pythonは9.0でもOKだった)
>>932 Enumerable を include しておきながら collect は Array でオーバーライドしてるとすると、
それは Array#collect のドキュメントに明記しておかないとまずくね?
話が見えない。
つまりこういうことさ。 Rubyだってソフトウェアなんだから、I/Fをドキュメントに書き、カプセル化された内部実装は参照する必要をなくすべき、って奴と、オプソなんだからソース嫁、って奴の意見が割れてるのさ。
>>969 そんなことまで言ってないよ。
継承してるなら継承元のドキュメントだけあれば良いけど、
継承していながらオーバーライドしてるメソッドがあるなら、
サブクラスのドキュメントにはそう明記すべき。
ハナっからドキュメントがなければないで「ソース嫁」でもいいけどね。
ドキュメントがありながら、それがミスリードするようなものであるならそれはまずい。
ソースが仕様だと、仕様とバグの区別がつかなくなる希ガス
第二引数をいくら増やしてもSEGVしなかった。 あと、Rubyには関数内関数なんてのはないから 内側のdefは外に出すべき。
>>965 system32ディレクトリの中に、違うバージョンの
msvcrt-ruby18.dllとかがはいってるんじゃない?
>>967 ---------------------------------------------------------- Array#collect
array.collect {|item| block } -> an_array
array.map {|item| block } -> an_array
------------------------------------------------------------------------
Invokes _block_ once for each element of _self_. Creates a new
array containing the values returned by the block. See also
+Enumerable#collect+.
a = [ "a", "b", "c", "d" ]
a.collect {|x| x + "!" } #=> ["a!", "b!", "c!", "d!"]
a #=> ["a", "b", "c", "d"]
>>974 refe やリファレンスマニュアルには載ってないよ。
エポック(1970/01/01)からの経過秒数が既知の場合に 日付と時刻を出力するにはどうすればよいですか? input : 10 (数字) output : 1970/01/01 00:00:10 (文字列)
リファレンスマニュアルのTimeクラスについてよく読め。
978 :
976 :2006/09/24(日) 21:08:44
>>976 自己解決
Time.at()で可能。ただし指定する秒数があまり大きいとNGを返す。
:in `at': bignum too big to convert into `long' (RangeError)
Windowsで、数MBから数百MBのテキストを変換するスクリプトを 作ったのでWxRubyで簡単なGUIを作りました、が、 実行するとCPUの使用率が100%になって、ウィンドウが応答不能に なります。一応、処理が完了すれば復帰します。 少々処理速度を犠牲にしても、きれいにGUIから実行できるよう にしたいのですが、もしあればノウハウをご教示いただけませんでしょうか。 GUIとは別のThreadで処理させるなどしてみたのですが、そうしたら 今度は待てど暮らせど変換が終わらなくなってしまいました・・・。
>>979 うーん。普通に、他の言語で作っても、そうなると思うけど(GUIが固まる)
別スレッドにしないと。Threadが上手く行かないのは、技術力の問題では?
foreach = flip mapM_ というのに気づいて腹が立った
982 :
981 :2006/09/24(日) 22:16:36
誤爆
>>980 技術力、全くもってその通りだと思います・・・。
で、申し訳ないんですが、もうちょっとだけ質問。
ものすごく基本的なことかもしれませんが、スレッドには
優先順位はつけられるけど、リソース配分みたいなことは
できないんですよね?
あと、馬力のいる処理をさせるときCPU使用率が100%に
ならないようにするいい方法はあるでしょうか。とりあえず
sleepをはさんだりしているんですが、それってありですか?
>>983 Windowsしかしらんが、優先順位はつけられなかったとおも。
適時sleepして、CPUに処理返すのは有効手段かと。
> 優先順位はつけられなかったとおも。 優先順位しかつけられなかったとおも。
http-access2で、http-clinentオブジェクトが勝手にクッキーを処理するのを やめさせたいんですが
>>985 やっぱりそうですか。
とりあえずsleepで微調整していこうと思います。
ありがとうございました。
Windows、ActiveScript-RubyにMeCabのバインディングを入れているには、 どのようにインストールすれば良いのでしょうか。
>>988 前にいっぺんCygwin版でやったけど、結構めんどくさいんだよねー
今はあきらめてChaSenをWin32APIで呼び出して使ってる
(『恋するプログラム―Rubyで作る人口無能』を参考にした)
MeCabも同じような方法で呼び出せるかも知れんけど
俺も初心者なので、あんまり詳しいところはよくわからない
# ruby -v ruby 1.8.5 (2006-08-25) [i386-freebsd5] なのに、<%= RUBY_VERSION %>が 1.8.4 なのはがい出? 気持ち悪いんだけどどこ直せばいいんでしょうか?
>>992 ごめんなさい
/usr/bin/env ruby -e "p RUBY_VERSION"
してみたら 1.8.5 だったので、調べてみたところ tdiary のキャッシュのせいでした
<%= RUBY_VERSION %>って eval されないのね。お騒がせしてすみませんでした
>>990 レスありがとうございます。茶筅ためしてみます。
995 :
デフォルトの名無しさん :2006/09/28(木) 14:42:47
apt-get install `apt-cache search -n ruby1.8 | cut -d ' ' -f 1` irb1.8 rdoc1.8 ri1.8 をしたところ、 E: パッケージ irb1.8 が見つかりません、となるのですが、どうしたらインストールできますか? ubuntuです。
>>995 お、俺もubuntu使い。奇遇だね。
apt-cache search irb
で、ちゃんと見つけてくれてる?
997 :
sage :2006/09/28(木) 14:51:12
ruby1.8 - Interpreter of object-oriented scripting language Ruby 1.8 と表示されました。
>>997 それだけ?ズラズラいくつか表示された中に
irb1.8 - Interactive Ruby (for Ruby 1.8)
って、無い?
もしくは、 irb - Interactive Ruby (irb) でもいいや。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。