Ruby について Part 3
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGRuby Home Page
http://www.ruby-lang.org/ja/
<前スレ>
Rubyについて Part 2
http://pc3.2ch.net/test/read.cgi/tech/1028906179/
<過去スレ>
Rubyについて
http://pc3.2ch.net/test/read.cgi/tech/1012096319/
0002デフォルトの名無しさん
NGNGrubyを語るスレッド 2
http://pc.2ch.net/test/read.cgi/unix/1040496222/l50
goRua(Ruby/Gtkによる2chブラウザ)ってどうよ。
http://pc.2ch.net/test/read.cgi/unix/1008120213/l50
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNGどうよ?
0005IP記録実験
NGNGhttp://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を提出することがある。
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNGすでに・・・すでに!?
0009IP記録実験
NGNGhttp://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を提出することがある。
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG田舎者の煽りは酷い。
0013デフォルトの名無しさん
NGNGメガビだからって安心なわけじゃないような。
0014デフォルトの名無しさん
NGNG2ch壊れたのか?
0015デフォルトの名無しさん
NGNGで結局IP記録に賛成なの?
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0018デフォルトの名無しさん
NGNGちょっと淋しいねえ。
いいかげん 1.8 も出してもらいたいし。
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNGそういう状況なってみないと分からんよ。
0021デフォルトの名無しさん
NGNGJRuby触ってみたけど、結構いい感じ。
まだまだ細かいところで未完成の部分はあるけどな。
でも、起動がスゲー重いよ。
Javaの遅さにRubyの遅さがプラスされて…。
$ jruby -e "puts 'hello, world'"
だけで、数秒かかるのはJRubyの所為というよりやっぱJavaの所為かな…。
でも、何となく期待している。
Jythonに負けるな!
まあ、本家Rubyにほぼ完全対応って感じでないと、
パーサとして使うのは難しいかも知れないね。
0022デフォルトの名無しさん
NGNGirb・rtags・RDocのパーサー(と言えるか怪しいけど)は
Rubyの文法に完全対応していないけど、そこそこ使える。
JRubyは完全対応しないといけないだろうけど、
結局、適材適所じゃないかな。
ちなみに、Rubyのパーサーに本当に完全対応させるのはかなり面倒だと思う。
Rubyではローカル変数等に日本語が使えるので、そこまでやりはじめると…。
0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNGむしろ懐かしさすら覚えるよ。
0026デフォルトの名無しさん
NGNGこんな面白い遊び場作ってくれたんだから・・・何とかしてやろ〜ぜ!
0027デフォルトの名無しさん
NGNGはいっはい、日本生命の時からみんな、
その場でぎゃーぎゃー騒いでばかりで
何も勉強しようとしないよね、2ちゃんねらーって。
┏ ┓
http://www.geocities.co.jp/Technopolis-Mars/6820/hoken/
┗ ┛
ここがよくまとまているから、熟読して出てこい。
読んで理解するのに3時間かかるかもしれんが
それだけの価値はあるぞ。できたら
┏ ┓
http://cocoa.2ch.net/hoken/kako/987/987605232.html
┗ ┛
批判要望板で「2ch以外も含めて、俺が見たなかで最高のスレだ。」
と絶賛されたスレだ。ジオの元スレだからな。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG誰かが他の掲示板で密告→第三者が2chでスレ建て→祭り
0030デフォルトの名無しさん
NGNGruby本体にparser API みたいなのが欲しいねえ
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNG仕事紹介してくれ
0033デフォルトの名無しさん
NGNG捕まるときは捕まるし
別に今までと大して変わらんと思われ。
ただ、今はちと過渡期なので
まわりが様子見な感じだけど
すぐに元に戻ると思われる
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNGアングラな内容も1ジャンルって感じだし。
昔はカテごとに雑談できるのも(目に付くところでは)珍しかったし
いち早くUG系から離れたのもあるんでない?
0036デフォルトの名無しさん
NGNGもし実現しても回線細そうですしね。。。
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNGまつもと氏はRiteでは用意するとか言っていた気がする。
この辺のライブラリの整備のされ方はpythonと大きく違うよね。
今はFreeRIDEのようにripperを使うのが一番良い気がする。
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNG./ ゚∀~・:ヽ、
ι、,,,,、,,,,,,、,,,,ゝ
0041デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNG10桁トリップの時に、トオルさんとマァヴさんが、話してましたわね、
0044デフォルトの名無しさん
NGNGここは快速スレですよ
0045デフォルトの名無しさん
NGNGC/C++統合開発環境 WideStudio が
「Ruby 言語(v3.20から)」も使えるようになったようですな。
誰か使ってみた人いる?
ちょっと試したけど、Rubyのサンプルが見あたらないので訳わからん。
0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNG国内サッカー板が見れない…
0048デフォルトの名無しさん
NGNG前に見たときは Linux 版しか対応してなかったけど、
Windows 版も出てるようだから試してみるね。
0049デフォルトの名無しさん
NGNGおなじく ruby によるサンプルをはげしく希望
0050デフォルトの名無しさん
NGNG「これ言っていいですか?」 「これ言うとヤバイですか?」 って他人に聞いてるだけw
寝るのがイヤなら、教えて厨は初心者板に逝ってねw
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNGださくないか?
(笑)もザサイから、(^^)がナウイよ。
0053デフォルトの名無しさん
NGNGなわけねーだろ。
ネット初心者がこーゆーとこに来るのは、どうかと思うぞ。
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNG俺素人だからよくわからないが
アク禁にしないのは何か理由るのかな・・?
0056名無しrubyist
NGNG>>45
ガイシュツだったような気がする。
つか、WideStudioって結構使われているの?
使いやすい?
005745
NGNGすみませぬ。
#これ荒らしなの? 2chがイカレタのかと思ってた。
0058case 名無し:
NGNG> 荒らしというより、スクリプトのバグでは?IP実験を始めた途端に他のスレの
> 書き込みがPC板全般に流れてきてるみたい。
という噂が。
0059名無しrubyist
NGNGうん、荒らしらしい。
詳しくは自治スレ見るとわかるよ。
プログラム板自治スレッド
http://pc3.2ch.net/test/read.cgi/tech/1029122103/
0060デフォルトの名無しさん
NGNGこれと比較するとruby-listはおとなしめだな。
興味を持った話題。
Win32Serial Extension Library for Ruby
WindowsのシリアルポートをRubyで使うライブラリ。
ttp://grub.ath.cx/win32serial/
Rubyで制御とかできるのかな。
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNG実質的には上告はもう無理らしい。
うれしいなぁ。
0063デフォルトの名無しさん
NGNG徹底できるわけがないから無駄なことやめて unix 板へでも逝け。
ここはもう人いないよ。
0064名無しrubyist
NGNGそれもそうだな。
俺、窓使いだけどおじゃまさせてもらいます。
0065デフォルトの名無しさん
NGNG久しぶりに笑ったよ!
0066デフォルトの名無しさん
NGNGわざわざ使う人いないと思うけど…
どこで公開されてるの?そんな糞トリップ公開されてもねぇ
同じ人が串でも使っているんじゃ?
0067デフォルトの名無しさん
NGNG0068山崎渉
NGNG0069irbについて
NGNG自前のモジュール(関数郡)を組み込んだり
一度プロセスを終了しても変数の値を保存しておいたりすることはできますか?
0070デフォルトの名無しさん
NGNG2. Marshal や PStore
0071山崎渉
NGNG0072irbについて
NGNG使った変数すべてを自動的に保存復旧したいのです。
a=3
exit
再起動
p a
3
みたいに。
0073デフォルトの名無しさん
NGNGirb で打ち込んだのを全て保存しておいて、
起動時に読ませるようにすれば?
0074デフォルトの名無しさん
NGNGirb を終了させなければいいのでは?
0075デフォルトの名無しさん
NGNGlocal_variables()を使えばいけそう。
と思ったが、ローカル変数だと、ちいと辛いな・・
bindingでうまくいかないかな?
ちと、やってみます。
007675
NGNGclass VarsStore
def initialize(storefile)
@store = PStore.new(storefile)
end
def save(bind)
hash = {}
eval("local_variables", bind).each do |name|
val = eval("#{name}", bind)
if val.equal?(self)
next
end
hash[name] = val
end
@store.transaction do
@store["local"] = hash
end
end
-----
つづく
007775
NGNG-----
def load(bind)
hash = nil
@store.transaction do
hash = @store["local"]
end
hash.each do |key, val|
$varsstore_val = val
eval("#{key} = $varsstore_val", bind)
end
end
end
007875
NGNGセーブ
VarsStore.new("hoge").save(binding)
ロード
VarsStore.new("hoge").load(binding)
とする、今のところBindingを指定しないとだめ。
ローカル変数にダンプできないオブジェがあるとエラーを吐く。
保存できるクラスは限定させた方がいいかな?(NumericかStringのみとか、、、)
あとは、適当に改造してみてね。>>72
0079デフォルトの名無しさん
NGNGWin32API.new に関するリファレンスは
どっかに転がってないでしょうか?
0080デフォルトの名無しさん
NGNGほれ。
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Win32API
0081デフォルトの名無しさん
NGNGここのページのファイルって拡張子が.gzだけど、どうして?
(ダウソして中身みてみたらアーカイブになってなかったけど)
0082デフォルトの名無しさん
NGNG君がダウンロード時に自動的にgzip展開するブラウザを使ってるんだろう。
0083デフォルトの名無しさん
NGNGhttp://www.ruby-lang.org/ の設定がヘボいから。
0084デフォルトの名無しさん
NGNGサンプルコードとして以下のようなものが添付されてます。
-- tc_adder.rb
class class TC_Adder < Test::Unit::TestCase
..
--
ファイル名、クラス名なんですけども、もはや
ファイル名の頭に「tc_」、クラス名の頭に「TC_」っていうのは、
業界標準なんでしょうか。
0085デフォルトの名無しさん
NGNGよいのでしょうか。
0086デフォルトの名無しさん
NGNGTestCaseの略では。
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG漏れは RubyUnit(runit) の表記の方が好き。
Adder -> AdderTest のように suffix をつける。
0089デフォルトの名無しさん
NGNGAdder -> TestAdderって付ける漏れは標準でないのか…。
そして、ファイル名はtestadder.rbだし。
ファイル名とクラス名を同じにするのは普通なんじゃないの?
それとも漏れがJavaなんかやっている所為でそれになれているから?
0090デフォルトの名無しさん
NGNGどうにも違和感がある。RubyUnit からの移行は、Ruby の動的な言語仕様のおかげで、移行のための
コードもそんなに書かなくて済むけど(今後、XML::Dom だの出てくるだろう)ちょっとな。
(メソッド名でも assert_equals, assert_equal という違いがある なんで統一しない? < Test::Unit)
今更、Rubyにライブラリのネーミング規則云々っていうのは似合わないような気がしてる。
0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNGRuby+GtkとかeRubyとかRuby+XMLとか…
あんなんでよく本が1冊も書けるなあ、っていうか、買う人いるの?
他の言語の開発者だったら、あんなの1冊ずつ買ってたら絶対置き場所なくなる。
0093デフォルトの名無しさん
NGNGそっか? Amazonで、Javaあたりで検索すれば、Swingで、Appletで、DBで、XMLで、
Webサービスで、……という具合なんだが。アプリケーションドメイン毎に本が出る
のは当然じゃないだろか?
0094デフォルトの名無しさん
NGNG入門書だけで10冊や20冊ぐらいある言語を見ると、
そっちの方がある意味おかしくないかい?
まあ、256本のやつは確かに異常だけどさ…。
でも、極道編は俺にとって面白かったぞ。
UnitTestの入門書としては。
0095デフォルトの名無しさん
NGNG寂しげですね。素直にZope使ってはいかがですか?
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNGHTMLはStrictじゃないと許さん、みたいな。
0098デフォルトの名無しさん
NGNGローカルで見るようにしよと思ってドキュメントをダウソして解凍してみたら
形式がRDでやんの。
HTMLの形式でも配ってくれればいいのに。
HTMLのやつもあったけど、リンク切れがあちこちにあるし、
ひとつのファイルに連結されてるからIEじゃ重くて使いにくいし。
0099Rubist@田中ノーベル賞
NGNGhttp://www.vsl.gifu-u.ac.jp/freeman/misc/ruby-docs-1.6.7/refm-ja/
0100デフォルトの名無しさん
NGNGHTMLはStrictにしる!ドキュメントはRDにしる!!
Windows、Mac OSは消去してLinux/BSDにしる!
スローガン:
欲 し が り ま せ ん 勝 つ ま で は
0101デフォルトの名無しさん
NGNG0102Rubist@カラアゲ
NGNGんこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
0103Rubist@カラアゲ
NGNG俺のようなマイルドな奴もいるぜ、ヒヒヒ。。
010498
NGNGよくさがしてみたら、Windows版のHTML Helpってのがあった。
0105デフォルトの名無しさん
NGNGごめん, 厨のこと忘れてた。
0106デフォルトの名無しさん
NGNG美的感覚といえば、Ruby はインデントの主流が2なのもどうかと思う。
正直見づらい。
(RDフォーマットは賛美両論ありながらも、俺は気に入ってる)
0107デフォルトの名無しさん
NGNG賛否、だろ。
賛美なら一論。
0108デフォルトの名無しさん
NGNG何の言語でもインデント 2 で書きますが何か?
…趣味で作るやつは、だけど。
0109デフォルトの名無しさん
NGNG原理主義者だから、GNUスタイルのインデント 2なのね。
0110デフォルトの名無しさん
NGNGC あたりは4
0111デフォルトの名無しさん
NGNGindex()を使ったほうが速いだろうと思っていて、いままで全部index()
を使ってきたけど、念のために速さを調べてみたら正規表現のほうが
速かった。
ちょっとショック。
if str.index('hoge') ...
if str =~ /hoge/ ... # こっちのほうが速い
0112デフォルトの名無しさん
NGNGあれ、linux カーネルは tab の 8 で書かれてなかったっけ。
0113デフォルトの名無しさん
NGNG0114デフォルトの名無しさん
NGNG違う環境に持っていってもインデントが崩れないのが好き。
0115デフォルトの名無しさん
NGNGえ?ほんとう?
0116デフォルトの名無しさん
NGNGString#indexをBM searchでも使って書き直して送るべし。
0117デフォルトの名無しさん
NGNG調べなおしてみたら、文字列が短いときとか最初のほうでマッチするとき
は、index()のほうが速かった。
0118デフォルトの名無しさん
NGNGif text =~ /^hogehoge$/i
大文字小文字無視して等しいか調べるときも、正規表現が速かった。
1.7ではcasecmpというのがあるみたいだけど、入れるのが面倒だから
調べられない。
0119名無しさん
NGNGにrubyのコーディングスタイルについての文章がある。
俺も3スペースインデントしてたけど、最近は2スペースだな。
ま、どんな言語でもその標準ライブラリが何で書かれてるかに
従ったほうがいいと思う。あんまり変なスタイルだと、それだけ
で気も悪がられる気がする。
だからCで外部モジュール書くときもついK&Rで書いてしまう。
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNGインデントをタブ文字で抽象化しないのは何故だ?
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNG0126Rubist@カラアゲマイルド
NGNGHTML>>>>>>>>>>>>>>>>>>rd
0127デフォルトの名無しさん
NGNGで検索できる地形図から2.5万、5万、20万の地形図を合成
して作ろうと思っています。
例えば、5339は東京(20万分1地勢図)で、
5339??(??は00〜77)が東京(1/20万地勢)に含まれる1/2.5万地形図で、計64枚あります。
(メッシュコードの概念はhttp://www.biodic.go.jp/kiso/col_mesh.html参照)
Web上からは以下で落とせます。
for j in {1..4}
do
for i in {00..77}
do
wget -q "http://mapbrowse.gsi.go.jp/mapimagef25k/5339/5339${i}${j}.png"
done
done
このpng画像は1/2.5万地形図を約*4分割したもので、
1→南西、2→南東、3→北西、4→北東となっていて、4枚合わせて2.5万になります。
(*:実は少しダブって分割されています。)
0128デフォルトの名無しさん
NGNG% convert -crop (ca)x(db)+a+b orange.gif blue.gif
の機能を使って、
png画像→1/2.5万
1/2.5万→1/5万
1/2.5万→1/20万
1/5万→1/20万
とする方法が考えられます。
この変換スクリプト、誰か書いてくださいませんでしょうか。
僕にはそこまでできません。
す み ま せ ん が 誰 か 助 け て く だ さ い 。
0129デフォルトの名無しさん
NGNGrubyには無いのでしょうか?
(flockくらいしか方法は無いのでしょうか?)
0130127
NGNGhttp://nlftp.mlit.go.jp/ksj/mesh.html
の方がわかりやすいかも。
% convert -crop
を使うのは2.5万の4分割がダブっているからです。
きれいに分割できればあとはタイルのようにくっつけるだけですが
僕にはできませんでした‥‥‥
0131デフォルトの名無しさん
NGNG↓このように書いてたものを
while true
text.index('hoge')
end
↓このように書き直してみたら、正規表現とほぼ同じ速さになりました。
t = hoge
while true
text.index(t)
end
リテラルがあると遅くなるのかなぁ?
0132デフォルトの名無しさん
NGNGhttp://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Mutex
これでいいか?thread.rbにあるので、
require 'thread'
して、使ってね。
0133デフォルトの名無しさん
NGNGそれはプロセス内でしか使えないのでは?
0134デフォルトの名無しさん
NGNGRAAで、semaphoreとかSysV IPCとか入れて探してみれば。
0135デフォルトの名無しさん
NGNGあ、勘違いスマソ。
プロセス間ね、スレッド間だと思っていた。
0136デフォルトの名無しさん
NGNG>>134さんが言っているのはたぶん、
http://www.ruby-lang.org/raa/list.rhtml?name=sysvipc
これのことでしょ。
でもプラットフォームによっては使えなさそう…。
flockもプラットフォームによるので、、まあ、UNIX系なら問題ないか。
つか、簡単に使えるのがあったら、CGIがめちゃくちゃ楽になるな〜。
0137デフォルトの名無しさん
NGNG> リテラルがあると遅くなるのかなぁ?
構文解析結果のノードの中の文字列をそのまま使用できないので、
毎回、'hoge'文字列のコピーが行われます。
変数を使用する場合は、その変数の値の文字列が
そのまま使用されます。
0138山崎渉
NGNG0139デフォルトの名無しさん
NGNG> 構文解析結果のノードの中の文字列をそのまま使用できないので、
> 毎回、'hoge'文字列のコピーが行われます。
補足すると、文字列自体はStringオブジェクトの間で共有されるので、
文字列のコピーというよりは、Stringオブジェクトのコピーが
毎回行われるということです。
0140デフォルトの名無しさん
NGNGの|i|を省略可能にしてくれ。
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNGもっと簡潔に書けないでしょうか?
open("log", "w"){|f|
lines.each{|s|
f.puts s
}
}
0143デフォルトの名無しさん
NGNGf.puts lines.join("\n")
0144デフォルトの名無しさん
NGNG★こんなサイト見つけました★
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGjoinはいらないのでは?
f.puts lines
0147デフォルトの名無しさん
NGNG厨な質問でスマソ
0148デフォルトの名無しさん
NGNG読み込みならそれが終わるまででいいんでないの。
書き出しなら先に終了されたらエラーになるでそ。
どうしてもやりたきゃ pid をとって waitpid。
0149デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNGRubyで実装されたWikiを利用するとしたら、
* Tiki
* asWiki
どちらをオススメしますか? パッと見、似たような感じだけど……。
# RWikiはdaemonが必要だからちょっと敬遠。
amritaを使っているのでaswikiかなあ、とは思っているんですが、
「Tikiのほうがイイってば!」ってなポイントがあれば知りたい。
0151デフォルトの名無しさん
NGNG今月もお小遣いすくなってきたよ・・・トホホ。
そんなあなたにこのサイト!!あなたのお小遣いを
1円でも多くして見せます!!
損はさせません!!早速アクセスをどうぞ!
↓ ↓ ↓
http://finito-web.com/kanemou/index.html
☆★▼▽▲△●○■□◆◇◇◆□■○●△▲▽▼★☆
0152デフォルトの名無しさん
NGNGHikiっていうのもあるよ
http://www.namaraii.com/hiki/
0153デフォルトの名無しさん
NGNGtDiaryのプラグインが使えるってのがちょっと面白い。
0154デフォルトの名無しさん
NGNG合成するって、めちゃくちゃにでかい画像ファイルができそうだが。
Ruby でグラフィックを扱うなら Ruby/GD を使うのがいいよ。
0155デフォルトの名無しさん
NGNG慣れたら簡単やね
0156デフォルトの名無しさん
NGNGオブジェクト(イメージ)の埋め込みが出来てほしい
PODに乗り換えようかと思ったけど、
RDの方が分かりやすかった。
この仕様だけなんだけど。
0157デフォルトの名無しさん
NGNGもともとはテキストの為のフォーマットなので、
画像を扱うというのは考えられていないと思われ。
RWikiとかみたいに自分で拡張する分には自由でしょう。
0158デフォルトの名無しさん
NGNGまつもとさんは以前RDをこれ以上複雑にしたくない、
という趣旨の発言をしていたんで、RDという枠組みでは無理じゃないかな。
んで、拡張するのならRDという名前は捨ててくれ、ということだった。
だから、欲しいのなら君が拡張してRDじゃない名前をつけて発表すれ(w
0159牛丼うまうま
NGNGhttp://ha9.seikyou.ne.jp/home/sweetbasil/topography-get-from-web
rubyとは関係ないので、他スレへ。
0160デフォルトの名無しさん
NGNGサーバー[1] <- クライアント[多]
クライアント(送信がわ)のデータが512バイト以下であれば、
データは交じり合わない(アトミック)であるということは調べたのですが、
RubyのIOバッファはどのくらいの大きさなのでしょうか?
512バイトの書き込みをして、2回に分けて書き込みがなされることはないと
考えてもよいのでしょうか?
data = 512バイト以下のデータ
open('パイプのパス', 'w') do |f|
while ...
f.print data
f.flush
end
end
↑このようにして、手元の環境で、複数のプロセスからパイプに書き込んで、
実験したところ、データが混じりあうことは無かったのですが…
0161160
NGNGsyswrite()でやればOKそうな気がするので、syswrite()でやります。
0162デフォルトの名無しさん
NGNGそういえば、以前、index を速くするパッチ投げたんですけど、
$= 見てなかったりいまいちだったんで、その後放置してたのを思い出しました。
あの頃から実装変わってるのかな?まあどうでもいいか。
0163デフォルトの名無しさん
NGNG-------------------------------
c:/src/hello.rb(↓中身)
def hello()
print("Hello ruby.\n")
end
-------------------------------
c:/src/call.rb(↓中身)
require "hello"
hello()
-------------------------------
c:/bat/hello.bat(↓中身)
ruby c:/temp/call.rb
-------------------------------
上記のような状態で3ファイル有り、
c:/bat>hello.bat(←コマンドプロンプト)
のような状態でバッチファイルを実行するとエラーになります。
そこで次のような形でとりあえず解決しました。
-------------------------------
c:/bat/hello.bat(↓中身)
cd c:
cd temp
ruby call.rb
-------------------------------
もしこれをRubyのみで解決する場合どのようにするのが賢いでしょうか?
どうか教えてください。
よろしくお願いします。
0164デフォルトの名無しさん
NGNGいつもいつも言われることだが、エラーの中身を書け、と。
あと、ruby -vの結果も。ついでにWindows(だよな?)のバージョンも。
ついでなので、環境変数PATHの中身とrubyがインストールされている
場所も書くとなおよいだろう。
0165デフォルトの名無しさん
NGNG環境変数 RUBYLIB に hello.rb のあるディレクトリを記述しる
0166デフォルトの名無しさん
NGNGcall.rbの先頭に次の一行追加する。
$:.unshift(File.dirname($0))
これで、call.rbと同じディレクトリにあるファイルを
requireするようになる。
0167デフォルトの名無しさん
NGNGhello.batの中身を
ruby -IC:/temp C:/temp/call.rb
とするか、
ruby -CC:/temp call.rb
とする。
って、結局、*.rbはC:/srcとC:/tempとどっちにあるんだよ!
0168デフォルトの名無しさん
NGNG0169163
NGNG昨晩の時点でレス無くてあきらめてたんで、なおさらでした。
まず、 >>164-168 皆様回答ありがとうございます。
んで、回答ですが、私の求めていた形は >>166さんのものでした。
私の作った*.rbを他者が使用する場合、
各環境によってbatやPATHを変更するのがどうにも具合が悪かったためです。
たくさん回答していただきありがとうございました。ホント感激です。
2chなめててスマソ。
>>164
まず質問の書き方を知りませんでした。
以後気を付けます。
>>167さん
srcです。tempじゃ無いです。
ごめんなさい、逝ってきます…
>>168さん
Exerbの存在を知りませんでした。
こういう方法もあるのですね。
勉強になります。ありがとうございました。
0170デフォルトの名無しさん
NGNG> そういえば、以前、index を速くするパッチ投げたんですけど、
どこにあるの?
0171デフォルトの名無しさん
NGNG$0より__FILE__の方が良いかも。
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGhttp://ruby-talk.com/60221
http://home.nownuri.net/~phasis/popen/win32_popen_1.6.8.zip
http://home.nownuri.net/~phasis/popen/win32_popen_1.8.0.zip
0174デフォルトの名無しさん
NGNGなんで?
0176デフォルトの名無しさん
NGNG$0は最初に与えられたスクリプトファイル名、
__FILE__は現に実行中のファイル名(この場合はcall.rb)。
call.rbを基準にロードしたいなら、>>171のいう通りFile.dirname(__FILE__)。
はっきりいって散々外出。
0177デフォルトの名無しさん
NGNGwin32 環境で rttool を利用する手順です。
(1) rttool をインストール
(2) win32_popen をインストール
(3) rd/tree.rb:20 を以下のように書き換える
TMP_DIR = ENV["TEMP"] || ENV["TMP"] || "/tmp"
0178172 iなので2分割
NGNG#pipe[0] .close だとブロックしてうまくいかなかった。。。
def external_filter (prog)
require "win32_popen"
pipe = IO.win32_popen3(prog)
pipe[0] .print self
pipe[0] .print "\C-z"
pipe[1] .read
end
(5) rt2 を実行する rt2.bat を作る
ruby %YOUR_RUBY_HOME%/bin/rt2 %*
0179デフォルトの名無しさん
NGNGたとえば、a.txtっていうファイルを作って、
そこに I have a pen って内容を書きたかったらどうしたらいいですか?
次の様に書いたら動きませんでした。
new_file = File.new("a.txt")
new_file.print("I have a pen")
new_file.close
0180デフォルトの名無しさん
NGNG> new_file = File.new("a.txt")
open modeを省略すると"r"(読み込み)と解釈されるんで、当然書けない。
0181デフォルトの名無しさん
NGNGこれで2時間悩んでました。
ありがとうございました。
0182デフォルトの名無しさん
NGNG> #pipe[0] .close だとブロックしてうまくいかなかった。。。
win32_popen3は三つのIO全部にpidをセットしてるので、どれかをcloseしよう
とすると子プロセスの終了を待ってしまう。
> def external_filter (prog)
> require "win32_popen"
> pipe = IO.win32_popen3(prog)
stderr垂れ流しでもいいんなら、1.8.0ではIO.popen(prog, "r+")でいけるよ
うになってるはず。
makeの時わざとconfigure消してautoconfigしたらreadlineの所で
エラーになったんだけど、これってreadlineが古いから?(1.??使用)
ちなみに、元々入ってるConfigreで、./configre、make、make test
だと問題無い。
0184デフォルトの名無しさん
NGNGrubiの話は専用スレへ。
autoconfのバージョンとエラーの内容は?
0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNGmingwでコンパイルできるはずだが、rbconfig.rbをいじらんと無理だろうな。
0188デフォルトの名無しさん
NGNG0189名無しさん
NGNG#!/usr/bin/env ruby
system('nkf -Ws #{ARGV[0]}')
0190デフォルトの名無しさん
NGNG激しくすれ違い。
java.nio.charsetパッケージのリファレンスを読んで自分で調べろ。
0191デフォルトの名無しさん
NGNGそりゃrubyでやってるとはいわんだろ。
せめてuconvかiconv
0192デフォルトの名無しさん
NGNGしょうがないのでmingw版のバイナリをもってきて、バイナリエディタでruby-mingw32.dllにリンクしている情報をmswinに書き替えちゃったよ。
0193デフォルトの名無しさん
NGNG素直にmingw版を使えばいいのにとは思うが、
1.8ではmingwとmswinは拡張ライブラリを共有できるようになってる。
0194質問スレではスルーされた
NGNGプログラミングなんていう高等技術をやったことがありません。
初心者Rubyプログラマーのポータルサイトなど御座いますでしょうか?
0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNG入門って入れればいいのか・・・
何やってんだろう、ずっと初心者とかで検索してた。
すいませんでした。今度から徹底的に検索してから参ります。
0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNGExtractFileName: File::basename
ExtractFileExt: File::extname
0201MoonWolf
NGNG使ったことないけど、こんなのもある。
http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/rough/lib/pathname.rb
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNGもうしばらく待つが吉。
0205202
NGNGヒジョーに期待しています。
って、ここに書かないでHikiに書いたほうがいいのかもしれないが、
向こうではガイシュツだからここに書こう。
0206デフォルトの名無しさん
NGNGひとつだけ気になったのが、画像URLがデフォルトで<img>にされて
しまうこと。コピペしたテキストとかの中身に注意を払わないと、
含まれてた画像URLが意図せず埋め込まれちゃいそう。
0207>>Hiki
NGNG0208デフォルトの名無しさん
NGNGSJISのファイル名をちゃんと処理できないんですか?
0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNGつかぬことをお聞きしますが、'r+'で開いたファイルを操作する時に、
いままでそのファイルに記述してあったところの途中で、ファイルを終わらせたい場合には、
どのようにすればよいのでしょうか。
部分的に削除をしたいのです。
0211デフォルトの名無しさん
NGNG0212210
NGNGなんとかできたようです。
ありがとうございました。
0213デフォルトの名無しさん
NGNG基本的に、UNIX系の標準ライブラリやシステムコールを知ってると類推できる
ことが多い。
0214デフォルトの名無しさん
NGNGオブジェクト指向っていっても、rubyのは単に .でつなぐだけでしょ?
0215デフォルトの名無しさん
NGNGそうだよ。 Perl にはそれすらできないんだってさ。
0216デフォルトの名無しさん
NGNG日本語変換モジュールのJcodeは
Jcode->new($str, 'sjis')->euc;
みたいにできるのに
同じ作者のEncodeは
encode('euc', decode('sjis', $str));
みたいな仕様にしたのかな?
->を使ってOOっぽく見せるのはやめて
関数型でやるのがPerl的には美しいの?
0217デフォルトの名無しさん
NGNG> Jcode->new($str, 'sjis')->euc;
対応するエンコーディング名があらかじめ決まってないといけないからじゃないの。
0218デフォルトの名無しさん
NGNGEncode->decode($str, 'sjis')->encode('euc')
0219デフォルトの名無しさん
NGNGですです
関数型の方が語順が英語と似るからかな。
ruby本に書いてありましたよね。
0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNGどういうとこが失敗だったと思う?
0222デフォルトの名無しさん
NGNG個々のメソッドのインターフェイスがバラバラ。
例えば、下の例の前者は問題なくて後者は実行時エラー
print Jcode->new('文字列')->h2z()->sjis();
print Jcode->new('文字列')->sjis()->h2z();
文字列化演算子をオーバーロードするのなら、
両方の構文をサポートしてもよかったのではないかと思うのだが。
更に、convert()のエンコーディング指定文字列も、
正式名称"EUC-JP"などを受け付けるようにしていれば、もっと便利だったはずだ。
0223デフォルトの名無しさん
NGNGなるほど。
しかしそれはOO風にしたための失敗とはいえないのでは?
0224デフォルトの名無しさん
NGNGいや、まあ、元々不満だったのは「Jcodeのインターフェイス」であって、
「OO風インターフェイス」だから不満だったわけじゃないのだ。
Encode.pmはというと、インターフェイスこそ手続き型だけど、
その実装はOO無しには語れず、ただの関数を多態的に動作させるようになってる。
にもかかわらずあえて公開OOインターフェイスを備えていないのは、
関数の方が楽だから、だと思う。これは想像だが。
Encode->find('EUC-JP')->encode($str); # タイプが面倒
Encode->encode("EUC-JP", $str); # 悪くないが、まだ長い
encode("EUC-JP", "文字列"); # 短い。楽だ。
0225デフォルトの名無しさん
NGNGどうsplitすればいいのでしょうか?
0226デフォルトの名無しさん
NGNG聞く前にRAAとかGoogleを検索しろよ。
cols = text.split(/,/)で駄目なら
http://raa.ruby-lang.org/list.rhtml?name=csv 使えば?
0227デフォルトの名無しさん
NGNGなるほどね。
> Encode->find('EUC-JP')->encode($str); # タイプが面倒
Rubyでいうと、iconvがこのスタイルだな
Iconv.new("shift_jis", "euc-jp").iconv(str)
> Encode->encode("EUC-JP", $str); # 悪くないが、まだ長い
これもあるようだが。
Iconv.iconv("shift_jis", "euc-jp", str)
0228デフォルトの名無しさん
NGNGIconv はストリームを処理する状態機械だから str を引数に渡すのは派生だな
0229デフォルトの名無しさん
NGNG派生?
0230202
NGNGマークアップがぐちゃぐちゃなHTMLをwell-formedなXHTMLに変換してくれ
るようなものを探しています。
html-parser.rbがそうかな?と思ったんですが、
探しているのとちょっと違うような気がするんです……。
0231デフォルトの名無しさん
NGNGつい最近ruby-extにその話題が([ruby-ext:02143]から)
Ruby-TidyLib: http://arika.org/ruby/tidylib
0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNGああ「strを引数に渡すの」じゃなくて「クラスメソッド」だったyo
0234202
NGNGありがとうございます。ruby-extはsubscribeしてませんでした。
tidy.rbのAgeが4hoursとはこれまたホットですね。ヲチしたいと思います。
0235202
NGNGttp://www.namaraii.com/hiki/hiki.cgi?%28Hiki%29%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9
0236デフォルトの名無しさん
NGNG教えてね♥
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGclass Foo; p self; end
0239デフォルトの名無しさん
NGNG1.8なら標準
0240デフォルトの名無しさん
NGNGshim 入れろ。
ていうか、HTML を自分でパースしようと思ったら、strscan ってめっちゃ便利よ。
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG仕様はイデアである。実装はその影に過ぎない。
従って、イデアを求めて実装は変化するのである。
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNGstrscan って ML みてるとインストールのトラブルがあったりで印象が悪いんだよね。
それに strscan を使わなくても じゅうぶん速く parse できるよ。
pure ruby の xml parser だってあるし。
0246デフォルトの名無しさん
NGNGだから1.8かshimを使えと。
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNG/#{"[\xa1\xa1-\xa2\xfe]"}/eo
かな。
0249デフォルトの名無しさん
NGNGありがとうございます。
これってそのままPerlでも通用するのでしょうか?
0250デフォルトの名無しさん
NGNG独自なのでそのままは動かない。
0251デフォルトの名無しさん
NGNG/[ -◯]/
0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNGjperl なら通用するかもしれない。と後ろ向きなアドバイス。
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG安全で使いやすいのは、
BASIC認証? ruby-shadow? ruby-password?
それともこんな程度のセキュリティでOKなの?
http://www5e.biglobe.ne.jp/~access_r/hp/cgi/rb_light.html
0256デフォルトの名無しさん
NGNG思いっきりスレ違いやんけ!
0257デフォルトの名無しさん
NGNGruby-password は統計的に弱過ぎるパスワードをつける不注意から守る。
BASIC認証は盗聴されない前提で比較的低頻度の総あたり攻撃から守る。
盗聴の危険が高い回線なら、SSLでBASIC認証を使い、
ruby-password で検査するくらいで適当。それでも弱いと思うなら、
BASIC認証を使わず、POSTでより長いパスワードを提供するしかない。
その場合はクッキーなどでセッションを維持することになる。
しかし通常のBBSならSSLでBASIC認証を使えば十分だと思うし、
SSLでなくてもBASIC認証だけでも構わないと思う。
0258_
NGNG0259デフォルトの名無しさん
NGNG他にやり方があるかもしらんが
class Mona
@@val
def val=(v)
@@val = v
end
def val
@@val
end
end
0260デフォルトの名無しさん
NGNGクラス変数をインスタンスメソッドで変更するのはキモくないか?
class Mona
@@val
def self.val=(v)
@@val = v
end
def self.val
@@val
end
end
0261デフォルトの名無しさん
NGNG確かにキモいと思いつつ書いてた。
0262初心者
NGNG文字から文字コードを得るのって、どうすればいいですか?
0263デフォルトの名無しさん
NGNG文字というのがStringオブジェクトだとして
Integer#chr
String#[](index)
を使う
p 64.chr # '@'
p '@'[0] # 64
0264初心者
NGNG0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNG一瞬どういうネタだ? と思ったよ(w
0268デフォルトの名無しさん
NGNG0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNGprintf('<p class="%s">%d<p>', ck, num)
print '<input name="'+name+'"' 〜
上記のような処理を下記のように全部書き直したら、
表示に6秒ほどかかってたのが3秒ほどになって、ちょっと感動しますた。
print '<p class="',ck,'">',num.to_s,'<p>'
print '<input name="',name,'"' 〜
文字列の連結とか時間がかかるんだなぁ。
0272デフォルトの名無しさん
NGNG前者のprintfはいちいち書式指定文字列をパースしているから。
前者のprint は余計な文字列オブジェクトを生成しているから。
0273デフォルトの名無しさん
NGNG前者だと演算子のたびに新しい文字列オブジェクトを生成するからね。
ま、ふつうは
print %Q(<p class="#{ck}">#{num}<p>)
print %Q(<input name="#{name}"〜)
とか書くわけだが。
0274デフォルトの名無しさん
NGNG実際には DB への問い合わせを行っているものとします。
DB の host 名や user や password などの設定を /etc/personrc に記述したい場合、
Person クラスへこの設定をくべるには、どのような設計にするのが良いでしょうか?
>>273
"#{num}" は新しい String オブジェクトを生成しないんでしょうか?
それとも生成してしまう?
0275デフォルトの名無しさん
NGNG> "#{num}" は新しい String オブジェクトを生成しないんでしょうか?
> それとも生成してしまう?
そこだけは新しいStringオブジェクトを生成する。num.to_sと同じ。
今までそんな文字列はどこにも存在しないんだから当然。
0276デフォルトの名無しさん
NGNG「くべる」って薪かよ。
すべてのPersonオブジェクトは単一のDBを共有するわけ?
最初にコネクションを張るときに読めばいいんじゃないの。
""ってだけでも常に新しいStringオブジェクトを生成するわけだが、
"#{num}"は(1.8では)""<<num.to_sと等価。
0277デフォルトの名無しさん
NGNGインタビュー:Rubyの まつもとゆきひろ に聞け!
http://slashdot.jp/articles/03/03/07/0413248.shtml?topic=86
0278デフォルトの名無しさん
NGNG0279デフォルトの名無しさん
NGNGttp://www.asahi.com/kansai/030308a.html
0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNG> でも,なんでもお好きな名前に自由に読み換えてください.
ってなんだかなあ…
0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNGという点で、Perl や Python に完全に負けてると思う。
Larry Wall や Tim Peters みたいにシャレの効いた言い回しのできる人がいない。
これけっこう重要なことだと思う。
0286デフォルトの名無しさん
NGNGしかし、日本人のプログラマでユーモアのセンスがある人って見たことない。
0287デフォルトの名無しさん
NGNGnamazuの高林さんてどう?
ユーモアのセンスありすぎだと思うけど、
ちょっと方向性が違うか。
0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNGもうシャレが通じないっていうか...。
0290デフォルトの名無しさん
NGNG>--- 僕の前にBugはない。
>--- 僕の後ろにBugはできる。
っての俺好きだなぁ。
初めて見たときニヤリとしたよ。
0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNG人によっていろいろ解釈があるみたい
0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNGそういう化け方は見たことないが
0296デフォルトの名無しさん
NGNGん、どんな解釈?
0297デフォルトの名無しさん
NGNG僕の書いたコードにバグはないが、後から続く者がバグを産む。
僕が書く前にはバグはないが、僕が書いた後にはバグを産む。
0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNGhttp://sourceforge.net/mailarchive/message.php?msg_id=1349966
化けるので引用
> 「バグばっかりつくってごめんなさい」
> というのが、いちばん単純な解釈でしょうが、
> 謝ることができるということの裏には、
> 実際にコードを書いて働いていることや、
> 誤りを自ら認める心の広さが表現されているように
> 思えます。あるいは、「Bugはない」というのは
> 「コードそのものがない」ということを意味するとすれば、
> 開拓者魂の表現のようにも見えます。
> いずれにせよ、Bugの理由を、「コードは一般的にBugを
> 含むものだ」と「単に中田さんの技量の問題だ」の
> どちらの立場で解釈するかが、最初の分れ道ですね。
0300デフォルトの名無しさん
NGNG>299 を攻めてるんじゃなくてそのリンク先の人ね。
笑えりゃOK、笑えなければポイでいいと思うんだがなぁ。
0301デフォルトの名無しさん
NGNGo = open('|gzip -c > a','r+')
o.print 'aaaaaaaaaaaaaaaaaaaaaa'
o.close
それをファイルに書き出さないで、メモリに読み込む方法はありますか?
↓こういうイメージです(このコードは動かない)
o = open('|gzip -c','r+')
o.print 'aaaaaaaaaaaaaaaaaaaaaa'
data = o.read
o.close
リファレンスのIO.popenのサンプルで、catを使ってそういう
ことをやっているので、なにか方法がありそうなのですが。
0302デフォルトの名無しさん
NGNG「stableでなければ生きていけない。unstableでなければ生きてる意味がない」
ってのが好き
0303デフォルトの名無しさん
NGNG_人
ノ⌒ 丿 うんこ〜♪
_/ ::(
/ :::::::\ うんこ〜♪
( :::::::;;;;;;;)_ うんこ〜♪
\_―― ̄ ̄::::::::::\
\ ノ ̄ ::::::::::::::::::::::) /うんこ〜♪
\( ::::::::::::::;;;;;;;;;;;;人/
/ ̄――――― ̄ ̄::::::::\
( ● \__/::●:::::::::::::)
\__::::::::::\/;;;;;;;;;;;;;;;;;;;;;;ノ
うんこ〜♪
0304301
NGNG検索してたら解決方法がわかりました。
(こんなことに一日かかってしまった…)
0305デフォルトの名無しさん
NGNGhttp://www6.big.or.jp/~beyond/bbsnews/
0306デフォルトの名無しさん
NGNGhttp://qwerqwer1234.hp.infoseek.co.jp/mudah/mudah.swf?Target=%82%E9%82%D1%82%AB%82%BF%82%B3%82%F1
0307デフォルトの名無しさん
NGNG次の変形はどうやるの?
str = "123"
#=> "1,2,3"
0308デフォルトの名無しさん
NGNGp "123".gsub(/(.)(?=.)/, "\\1,")
p "123".split(//).join(",")
0309デフォルトの名無しさん
NGNGこんなのはどう?
p "123".scan(/\d/).join(',')
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNGこんなのにウケてしまうのが、自分で悔しい。
0312デフォルトの名無しさん
NGNGアハハ
0313デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNG標準化する必要がないです。
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNGこれまでのPythonがダメダメだったんでいいんでないかい
0321デフォルトの名無しさん
NGNGえ?そうなん?
どのへんがパクられたのか、どっかでまとめられてたりするかな?
0322デフォルトの名無しさん
NGNGをすっきり書くには
foo ||= 7
が定石だけど,
foo = (foo ? foo.to_i : 7)
はなんかうまく書けないでしょうか?
foo を 3 回も書くのがいやすぎ.
-s オプションお手軽で好きなんだけど…
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNGPerl じゃなくてよかったと思えるね。
0325デフォルトの名無しさん
NGNGうようなオペレータがかつて議論にのぼったことがあったような気がするが、
どうなったんだろう。
最近追い掛けてないのでage.
0326デフォルトの名無しさん
NGNG立ち消え状態だと思うが、こんなのはどうよ?
module Kernel
def ifnil?
self
end
end
class NilClass
def ifnil?
yield
end
end
catch(:nil) {
hoge.foo.ifnil?{throw :nil}.bar.ifnil?{throw :nil}.zot
}
0327デフォルトの名無しさん
NGNGこんなのは?
class Object
BLACKHOLE = Object.new
def BLACKHOLE.to_s() "()" end
def BLACKHOLE.method_missing(*x,&y) self end
def default(v=BLACKHOLE,&b) self or BLACKHOLE end
def and() default end
end
class NilClass
def default(v=BLACKHOLE,&b) block_given? ? yield : v end
end
puts ARGV.shift.and.hex
puts ARGV.shift.default("0").hex
0328デフォルトの名無しさん
NGNG> def default(v=BLACKHOLE,&b) self or BLACKHOLE end
def default(v=BLACKHOLE,&b) self or v end
0329デフォルトの名無しさん
NGNG0330デフォルトの名無しさん
NGNG用途は、XML文章を操作するというのかなんというかDOMやらSAX
が使いたいんです(まだどっちがどうなのかよくわかっていませんが)。
配布する環境はUNIXなんですが、開発はWindowsなんで、
どちらでも使えるとうれしいです。
0331デフォルトの名無しさん
NGNG余裕があるなら xmlscan をいじってみると面白いと思う。
0332デフォルトの名無しさん
NGNGオープンソースって同一機能の複数実装が魅力なわけ。
標準なんてあるわけない。
もしも標準なんてあってそこを精密爆撃で狙われたら
標準が消滅しちゃうでしょ。
そのリスクを回避するために一見無駄な冗長性を持たせてるわけ。
0333デフォルトの名無しさん
NGNGRuby であるテキストファイル中の特定の語句を置換したいとします。
例: いぬ いぬ いぬ ねこ -> いぬ いぬ いぬ いぬ (ねこをいぬに置換)
(要するに sed みたいなことがやりたい)
単純に File.open して each_line で置換したい語句があるかどうか調べていき、
マッチしない場合にはそのままの行を、マッチした場合には置換した行を一時ファイルに書き出し、
最終的に一時ファイルを元のファイルに rename する、ということを考えました。
この例だと一時ファイルを使ってしまいますが、一時ファイルを使わずに each_line で
見ていきながら、マッチする部分を直接書き換える、ということってできますか?
もしあれば、コード例を示していただけると助かります。
0334デフォルトの名無しさん
NGNGよくわからんが、ruby の -i オプションを使えば解決されるような話?
0335デフォルトの名無しさん
NGNG[-0-9]
のような表現って多用しませんか?
いまさら
[\-0-9]
と書けって言われても、って感じ。
0336デフォルトの名無しさん
NGNGデカいファイルを突っ込むとメモリ馬鹿食いするけどこんなの。
TEXTFILE = 'inuneko.txt'
if (s = IO.readlines(TEXTFILE).map!{|line| gsub(/ねこ/, 'いぬ')})
open(TEXTFILE, 'w').print(s)
end
0337336
NGNGif (s = IO.readlines(TEXTFILE).map!{|line| gsub(/ねこ/, 'いぬ')}) # ×
if (s = IO.read(TEXTFILE).gsub!(/ねこ/m, 'いぬ')) # ○
0338デフォルトの名無しさん
NGNGこれならデカいファイルでも安心。
どんな場合でも書いちゃうし非 unix 環境でちゃんと動くかは知らないけど。
File.open(file) { |src|
File.unlink(file)
File.open(file, 'w') { |dest|
src.each_line { |line|
dest << line.gsub(/ねこ/, 'いぬ') }}}
0339デフォルトの名無しさん
NGNGじゃだめ?
0340デフォルトの名無しさん
NGNG正直いやん
0341デフォルトの名無しさん
NGNGtext = <<-AHYA
fooTEXTboo
AHYA
hoge = '\1000yen'
p text.sub(/TEXT/, hoge)
このスクリプトで出力が
foo\1000yenboo\n
となるのを期待してるのですが\1が消えてしまいます。
消えないようにするにはどうしたらいいのでしょうか?
0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNGperlとかでも多用されているもんな。
0344341
NGNGそんな一休さんみたいな答えじゃなくて他の案をお願いします・゚・(ノД`)
0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNGtext.sub(/TEXT/) {hoge}
0348デフォルトの名無しさん
NGNGhoge = '\\\\1000yen'
0349デフォルトの名無しさん
NGNG誰かがまとめてたの見たことあるよ
本家マニュアルサイトの「落し穴」あたりをあたってみては
0350デフォルトの名無しさん
NGNGそれは直感的にわかりにくい。
>>346 のほうが新婦瑠でわかりやすいから、暗号的なプログラムを書きたい
のでないかぎり、ブロックを使ったほうが良いと思う。
0351デフォルトの名無しさん
NGNGPOSIX regex で許されてる表現はそのまま通って欲しいな。
0352not333な初心者
NGNGの解説キボウ。お願いします。
なぜ、これなら、でかいファイルでもメモリを浪費しないんでしょうか?
2行目のunlinkが関係してるようなんですが。。
openしたブロックの中でunlinkって??
0353338
NGNG1. each_line なので全行をいっぺんにメモリに格納しません。
2. ファイルを open した状態で unlink してもファイルの中身は消えません。
(open したプロセスが一個も無くなってから消えます)
unlink 後に同名のファイルを open しても旧ファイルの中身に触れることはできません。
0354not333な初心者
NGNGじゃあ、メモリを浪費しないのは、each_lineを使ってるからで、
処理前と処理後を、同名のファイル名にしたい今回のような場合は、
一行ごと、each_lineするためには、unlinkして、
旧ファイルの内容と、新ファイルの内容を別々に扱ってるってことですね。
ありがとうございました。
0355デフォルトの名無しさん
NGNGだから結局一時ファイルを使っているのと変わらないのよ。
0356333
NGNG338 さん、プログラムリストと解説ありがとうございました。
0357デフォルトの名無しさん
NGNG少なくともDOSISH(mswin32, mingw32, bccwin32, djgpp, たぶんhuman68kも)
ではopenしているファイルを削除することはできない。
それ以外は分からん。
0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNG倍精度の浮動小数点数使うにはどうしたらいいの?
0362デフォルトの名無しさん
NGNG0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNG本当にオリジナルな言語なんて数えるほどしかないだろうし、
これからさらに減っていくのでは。
0365デフォルトの名無しさん
NGNGRubyオリジナルなのは、モジュールを使ったMix-inあたりかなあ。
0366デフォルトの名無しさん
NGNGLispじゃ常套手段だしな。
変数のスコープをprefixで区別するのはRubyオリジナルかな?
0367デフォルトの名無しさん
NGNGというか倍精度しか提供されてないのだが
0368デフォルトの名無しさん
NGNGmodule ORE_NAME_SPACE
class Main
end
end
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNGhttp://www.ruby-lang.org/~rubikitch/
http://rubyist.net/~rubikitch/
我、詳細求む
0371デフォルトの名無しさん
NGNG「ついに」って、いままでなんかあったの?
0372370
NGNGるびきち氏
http://enya-mp3.tripod.com
Ruby撲滅スレ part 2
http://pc.2ch.net/tech/kako/1009/10091/1009193707.html
撲滅スレ内をキーワード"るびきち"で辿っていきますと...
0373デフォルトの名無しさん
NGNGhttp://www.pink-angel.jp/betu/linkvp2/linkvp.html
0374デフォルトの名無しさん
NGNGhttp://www.rubyist.net/~rubikitch/
つーか単純にURLが変わっただけ。
0375デフォルトの名無しさん
NGNG糠喜びさせやがって。まぁあの粘着君が閉めるわきゃねーわな。
0376デフォルトの名無しさん
NGNG(´・ω・`)ショボーン
0377デフォルトの名無しさん
NGNG0378デフォルトの名無しさん
NGNGC/C++ はライブラリ無いと何も出来ないし。
0379デフォルトの名無しさん
NGNG結局メジャーかどうかだな。
0380デフォルトの名無しさん
NGNGrubyなんかの比じゃない。
0381デフォルトの名無しさん
NGNGだから使うの止めたとか聞かないし。
0382デフォルトの名無しさん
NGNGもっと簡単な方法はないのでしょうか??またはこう書いた方が速いとか。
それとネーミングセンスがないので、良い名前がありましたら教えてください (^^;
class Integer
def fixedByte(byte)
fixedByte_(byte, self.abs, 1, (self < 0 ? 0b10000000 : 0b00000000))
end
private
def fixedByte_(byte, target, count, flg)
nexttarget = target / 256
if count != 1
str = (target % 256).chr
else
str = ((target % 256) | flg).chr
end
if byte > count
str = fixedByteS_(byte, nexttarget, count + 1, flg) << str
end
str
end
end
0383デフォルトの名無しさん
NGNGdef b_to_i
ssize = self.size - 1
i = 0
for x in 0..ssize
y = 1
for z in 1..(ssize - x)
y *= 256
end
if x != ssize
i += self[x] * y
else
flg = ((self[x] & 0b10000000) > 0 ? -1 : 1)
i += (self[x] & 0b01111111) * y
i *= flg
end
end
i
end
end
0384デフォルトの名無しさん
NGNG0385デフォルトの名無しさん
NGNG0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNGMarshal.dump
0391デフォルトの名無しさん
NGNGfixedByteS_ってのがないがfixedByte_のtypoか?
任意のバイト数のビッグエンディアンで書き出そうという意図に見えるが、
最下位に符号をつけるのはまずかろう。
0392デフォルトの名無しさん
NGNG吉田 和弘 (著)
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06515-4
http://www.amazon.co.jp/exec/obidos/ASIN/4274065154/
0393382
NGNGビッグエンディアン‥そうですねそのようです。
その用語はじめて触れました (^^;
はじめ、符号なしを書いて、上で書いていたメソッド名にして、
そのあと、符号つきを書いてその名前の後ろに'S'を付けてました。
バグありましたね。符号つきを書くとき、あまり考えず、テストをしないでいたようです (^^;
ここにカキコする際に、符号つきを'S'を取り払った状態でカキコしたつもりでそうなりました。
pack unpackは〜機能を限定すればスッキリ書けるようですね。同等の機能を持たせるには複雑になりそうな予感‥
Marshalは〜、そもそも使いたくありません。すみません。
取り敢えず、方法としては、あまり間違ってないんですね??
ところで、メソッド名とかいい名前はありませんかね‥
0394デフォルトの名無しさん
NGNG> 取り敢えず、方法としては、あまり間違ってないんですね??
方向としては間違ってないが、再帰を使う必要はないだろう。
> ところで、メソッド名とかいい名前はありませんかね‥
うーん、いい名前があればなぁ。前からこういうのは提案しようとは思ってる
んだけど。
# ワンライナー版
class Integer
def to_bin(width = self.size)
n = self
(0...width).inject([]) {|a,i| a << (n & 0xff); n >>=8; a}.reverse.pack("cC*")
end
def self.from_bin(s)
s.unpack("cC*").inject(0){|i,j| (i<<8)|j}
end
end
0395デフォルトの名無しさん
NGNGまだ、ruby2perlないですか?
0396393
NGNGわー短くてカッコイイなァ〜 (笑
そもそも私が用いた方法では、マイナスの表現方法がダサイしね (苦笑
はじめinjectでひっかかりましたが、それを使える方法で置き換えたらばっちりでした!
0397395
NGNG0398デフォルトの名無しさん
NGNGhttp://www.google.co.jp/
0399393
NGNG文字列から数字に変える変換で、ちょっと複雑になりそうな感じです‥
0400395
NGNGぐぐってきたけど、ない。
みんなhttp://pluto.im.uec.ac.jp/~sekita-n/jdocs/perl2ruby.htmlへの
リンク。これ見てrubyべんきょしますだ。a2pなんかもだめだったしさ、
どうせさんこにならないだろとはおもてますたがね。
0401デフォルトの名無しさん
NGNGRuby で Perl をエミュレートするライブラリを使うかくらいなので、
速度が糞遅くなることを考えれば、手で移植した方がまし。
0402デフォルトの名無しさん
NGNG問題はライブラリなんじゃないかと。
おれは興味ないが。
0403デフォルトの名無しさん
NGNG仕様がよく分からないのだけど、これであってる?
class Integer
def dump(w) f = f(self,w); (1..w).map{|i|(f>>(8*(w-i)))&255}.pack("C*") end
private; def f(x,w) n = 2**(8*w); (x+n)%n; end
end
class String
def undump(w) g(unpack("C*").inject(0){|i,j| (i<<8)|j},w) end
private; def g(b,w) n = 2**(8*w); (b+n/2)%n-n/2; end
end
20.times do
w = rand(10)+1
x = (-1)**rand(2)*rand(256**(w-1))
d = x.dump(w)
u = d.undump(w)
p [x == u, d.size == w, w, x, d.unpack("H*")[0].scan(/../).join(" ")]
end
0404393
NGNG私のinjectの分解方法が悪かったです。
injectをArrayに実装して、そのままで動かしたら、
394さんのもので、符号付きでしっかり動きました。
ありがとうございました。
符号付きでしたら、文字(?)から数字に変えるときはunpackを使ったほうが速そうですが、
そうでない場合はもunpackを使わないほうが速かったりするのでしょうか。
packは使わないほうが速そうです。
あまりまともには速度のテストしてませんけど (^^;
0405デフォルトの名無しさん
NGNGそりゃコードによるがたいていは組み込みメソッドが早い。
0406デフォルトの名無しさん
NGNGstr2 = 'abcd'
str = str + str2
より
str = 'efgh'
str2 = 'abcd'
str << str2
のほうが遅いのですが、どうしてでしょうか??
ruby 1.6.7 (2002-03-01) [i586-mswin32]
です。
0407デフォルトの名無しさん
NGNGhttp://www1.u-netsurf.ne.jp/~brew/mine/ja/ruby/optimize.html
0408デフォルトの名無しさん
NGNGどうやって計ったかを書くべし。これで計ったらどうよ?
N=1000000
t0=Time::times; N.times{str='efgh';str2='abcd';str=str+str2}; t1=Time::times
u,s=t1.utime-t0.utime,t1.stime-t0.stime
printf("%-2s user %7.4f, system %7.4f, total %7.4f\n", "+", u,s,u+s)
t0=Time::times; N.times{str='efgh';str2='abcd';str<<str2}; t1=Time::times
u,s=t1.utime-t0.utime,t1.stime-t0.stime
printf("%-2s user %7.4f, system %7.4f, total %7.4f\n", "<<", u,s,u+s)
0409デフォルトの名無しさん
NGNG[分かったこと]
・ オレの環境では << の方が少々早い。
・ その差は1ケタパーセント。これが大きいのか小さいのかよーわからん。
・ 1.8 の方がちょい遅い。そんなもん?
・ 1.8 では Time::times が obsolete。
% ruby -v ~/hoge.rb
ruby 1.6.8 (2002-12-24) [i686-cygwin]
+ user 3.6150, system 0.0000, total 3.6150
<< user 3.3850, system 0.0000, total 3.3850
% ruby-18 -v ~/hoge.rb
ruby 1.8.0 (2003-03-03) [i386-cygwin]
./hoge.rb:2: warning: obsolete method Time::times; use Process::times
./hoge.rb:2: warning: obsolete method Time::times; use Process::times
+ user 3.7350, system 0.0100, total 3.7450
./hoge.rb:5: warning: obsolete method Time::times; use Process::times
./hoge.rb:5: warning: obsolete method Time::times; use Process::times
<< user 3.4750, system 0.0000, total 3.4750
0410デフォルトの名無しさん
NGNG> ・ 1.8 では Time::times が obsolete。
ちょっとワロタ
同じく406ではないがやってみた。
ruby 1.6.8 (2003-03-11) [i386-netbsdelf1.6]
+ user 3.4000, system 0.0200, total 3.4200
<< user 3.2600, system 0.0100, total 3.2700
ruby 1.8.0 (2003-04-04) [i386-netbsdelf1.6]
+ user 3.6600, system 0.0000, total 3.6600
<< user 3.6200, system 0.0100, total 3.6300
全然変わらねぇ…
0411デフォルトの名無しさん
NGNGfor i in 0..10000000
1+1
end
と
b)
for i in 0..10000000
2
end
ではb)の方が早い。
a)10.21s user 0.03s system 100% cpu 10.208 total
b)5.85s user 0.00s system 100% cpu 5.802 total
rubyは毎回のループごとに1+1をいちいち計算してるわけか…
0412デフォルトの名無しさん
NGNG> rubyは毎回のループごとに1+1をいちいち計算してるわけか…
その手の最適化って一切しないのけ?
0413デフォルトの名無しさん
NGNGFixnum#+が再定義されないとも限らないので、「最適化」しちゃうわけにはいかない。
この議論はdevでもtalkでも繰り返し出てるんで、検索してみるのがよろしいかと。
0415デフォルトの名無しさん
NGNGstr='efgh';str2='abcd' を N.times の外に出したら変わるのかも
0416デフォルトの名無しさん
NGNGこれでレンタル鯖にRubyインスコされてなくてもCGI書けるね。
http://search.cpan.org/author/NEILW/Inline-Ruby-0.02/lib/Inline/Ruby.pod
0417デフォルトの名無しさん
NGNG#define BEGIN {
とかいうのとあんまり変わらないような気もする(そんなこともないかな)
0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNG多いようで、少し安心した。
0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNG同じく406ではないがやってみた。
$ ruby -v ./time.rb
ruby 1.6.4 (2001-06-04) [i586-linux]
+ user 9.3900, system 0.0500, total 9.4400
<< user 10.1600, system 0.0400, total 10.2000
何故だ......_| ̄|○
0422デフォルトの名無しさん
NGNG<< の測定前にGCしたら変わったりして
N=1000000
t0=Time::times; N.times{str='efgh';str2='abcd';str=str+str2}; t1=Time::times
u,s=t1.utime-t0.utime,t1.stime-t0.stime
printf("%-2s user %7.4f, system %7.4f, total %7.4f\n", "+", u,s,u+s)
GC.start
t0=Time::times; N.times{str='efgh';str2='abcd';str<<str2}; t1=Time::times
u,s=t1.utime-t0.utime,t1.stime-t0.stime
printf("%-2s user %7.4f, system %7.4f, total %7.4f\n", "<<", u,s,u+s)
0423421
NGNG>>422
変わらなかったっす。
くっだらねーイージーミスであることを恐れてソースを>>422からコピペして動かしてみましたが結果変わらず。
+ user 9.0300, system 0.0800, total 9.1100
<< user 9.7100, system 0.0800, total 9.7900
ちなみに
$ rpm -qi ruby
Name : ruby Relocations: (not relocateable)
Distribution: Kondara MNU/Linux 2.0(Mary) Vendor: (none)
Version : 1.6.4 Option: (none)
Release : 2k Build Date: 2001年06月07日 13時12分4
時代に取り残された環境です(〃▽〃)♪
0424デフォルトの名無しさん
NGNG(σ・∀・)σゲッツ!!
0425デフォルトの名無しさん
NGNG1.6.4ってえらく古いな
kondaraの動向は知らんがmomongaに乗り換えたら新しいrpmが使えるのかな
0427デフォルトの名無しさん
NGNGGD::Image.newFromJpeg(file)でimage instanceを作りたいのですが
ファイルを作らずにStringから直接image instanceを作れないでしょうか?
0428デフォルトの名無しさん
NGNGN=1000000
t0=Time::times; N.times{'efgh'+'abcd'}; t1=Time::times
u,s=t1.utime-t0.utime,t1.stime-t0.stime
printf("%-2s user %7.4f, system %7.4f, total %7.4f\n", "+", u,s,u+s)
GC.start
t0=Time::times; N.times{'efgh'<<'abcd'}; t1=Time::times
u,s=t1.utime-t0.utime,t1.stime-t0.stime
printf("%-2s user %7.4f, system %7.4f, total %7.4f\n", "<<", u,s,u+s)
$ ruby-1.6 -v /tmp/s.rb
ruby 1.6.8 (2003-03-26) [i686-linux]
+ user 4.7000, system 0.0300, total 4.7300
<< user 4.6700, system 0.0300, total 4.7000
0429デフォルトの名無しさん
NGNGgdImageCreateFrom*Ctx()はサポートしてないみたいだな。
作者にリクエスト汁。
0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNGPreview releaseが出てるのに気が向いたらも糞もあるか
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNG0436初心者
NGNGdef mini_sort(index,array)
i = index
unsorted_array = array
judge = true
while judge
if unsorted_array[i - 1] > unsorted_array[i] || i != 1
tmp = unsorted_array[i - 1]
unsorted_array[i - 1] = unsorted_array[i]
unsorted_array[i] = tmp
i--
else
judge = false
end
end
end
def Insertionsort.sort(unsorted_array)
i = 1
while i < (unsorted_array.size)
mini_sort(i,unsorted_array)
i++
end
sorted_array = unsorted_array
return sorted_array
end
end
test_array = [2,4,45,6,3,677,32,64,453,1,3,56,7,0]
p Insertionsort::sort(test_array)
0437初心者436
NGNG上のように書いたら次のようなメッセージで動きません。
test3.rb:12: parse error
test3.rb:22: parse error
test3.rb:29: parse error
p Insertionsort::sort(test_array)
^
Ruby始めたばっかりで、どこがおかしいか検討がつきません。
endの閉じ忘れとかは注意したはずなんですが。。
なにかおかしなところ指摘してください。
動かない理由以外でも、書き方のへんなところとか教えて下さい。
0438デフォルトの名無しさん
NGNG0439初心者436
NGNGそこを直すと、違うエラーメッセージがでてきて進みそうです。
よくみたらクラス名もおかしかった。。
もうちょっと自分でやってみます
アドバイスありがとうございました
0440できた436
NGNGdef self.mini_sort(index,array)
i = index
unsorted_array = array
judge = true
while judge
if unsorted_array[i-1] > unsorted_array[i] && i != 0 then
tmp = unsorted_array[i - 1]
unsorted_array[i - 1] = unsorted_array[i]
unsorted_array[i] = tmp
i -= 1
else
judge = false
end
end
return unsorted_array
end
def self.sort(unsorted_array)
i = 1
while i < unsorted_array.size do
unsorted_array = mini_sort(i,unsorted_array)
i += 1
end
sorted_array = unsorted_array
return sorted_array
end
end
test_array = [2,4,45,6,3,677,32,64,453,1,3,56,7,0]
p Insertion_sort::sort(test_array)
0441デフォルトの名無しさん
NGNGこれだと破壊的だがそれで良い?
例えば
test_array = [2,4,45,6,3,677,32,64,453,1,3,56,7,0]
p test_array.sort, test_array # Array#sort は test_array を破壊しない
p Insertion_sort::sort(test_array), test_array # Insertion_sort::sort は破壊的
結果
[0, 1, 2, 3, 3, 4, 6, 7, 32, 45, 56, 64, 453, 677]
[2, 4, 45, 6, 3, 677, 32, 64, 453, 1, 3, 56, 7, 0]
[0, 1, 2, 3, 3, 4, 6, 7, 32, 45, 56, 64, 453, 677]
[0, 1, 2, 3, 3, 4, 6, 7, 32, 45, 56, 64, 453, 677]
0442デフォルトの名無しさん
NGNGbreakというものを教えて上げたいような上げたくないような。
0443436
NGNGもとのsortメソッドの名前をsort!に改めて
新しく次のようにsortメソッドを作りました。
普段、あまり破壊的、非破壊的ということを意識してませんでした。
単純にcloneメソッドを使ってつくりました。
def self.sort(unsorted_array)
i = 1
cloned_unsorted_array = unsorted_array.clone
while i < cloned_unsorted_array.size do
cloned_unsorted_array = mini_sort(i,cloned_unsorted_array)
i += 1
end
sorted_array = cloned_unsorted_array
return sorted_array
end
0444436
NGNGbreakを使うとしたら、mini_sortのwhile文中でしょうか?
loopとbreakを使うとすっきりしました。
def self.mini_sort(index,array)
i = index
unsorted_array = array
loop{
if unsorted_array[i-1] > unsorted_array[i] && i != 0 then
tmp = unsorted_array[i - 1]
unsorted_array[i - 1] = unsorted_array[i]
unsorted_array[i] = tmp
i -= 1
else
break
end
}
return unsorted_array
end
0445デフォルトの名無しさん
NGNGmodule InsertionSort
module_function
def insertion_sort!(array)
modified = nil
for n in 0..array.size-1
n.downto(1) do |i|
break unless array[i-1] > array[i]
array[i-1], array[i], modified = array[i], array[i-1], true
end
end
modified and array
end
def insertion_sort(array)
insertion_sort!(copy = array.dup) or copy
end
end
0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNGmodule Enumerable
def insertion_sort
array = []
each do |a|
if array.each_with_index {|b, i|
if b > a
array[i, 0] = [a]
break
end
}
array << a
end
end
array
end
end
0449デフォルトの名無しさん
NGNGかちゅで読むとインデントされてないから無茶苦茶読みにくい
0450デフォルトの名無しさん
NGNGttp://pc.2ch.net/test/read.cgi/unix/1046402063/360
0451デフォルトの名無しさん
NGNG殺してしまい、ワトソンくんが出現します。(スタックオーバーフロー)
rubyは1.6.7のmswinです。
あと意味はないですが、CGIの先頭行に#!を記述しています。
もし何か知っている方いられましたら教えてください。
0452デフォルトの名無しさん
NGNGRubyでCGIがうんぬんというより、そもそもスクリプトがスタック食いまくりとか
だったりしませんか?
0453デフォルトの名無しさん
NGNGApacheに汁!
0454デフォルトの名無しさん
NGNGそりゃ悪かった。かちゅーしゃって行頭の空白消しちゃうのか。
module Enumerable
def insertion_sort
array = []
each do |a|
if array.each_with_index {|b, i|
if b > a
array[i, 0] = [a]
break
end
}
array << a
end
end
array
end
end
0455デフォルトの名無しさん
NGNGもしそうならWindowsはスタックサイズの上限を指定できないの?
0456デフォルトの名無しさん
NGNGできまっせ。
標準で1メガはあるはずだけど。
でもスタックオーバーフローを起こす様なプログラムは
アルゴリズム修正した方がいいんじゃねえの?
0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNGIISでmod_rubyって使えるんだっけ?
0459デフォルトの名無しさん
NGNGただのRubyプロセスでIISがシニマス。
プロセス空間を別にしてもシニマス。
CGIスクリプトは最後まで完了していて、その後もRubyがガリガリしていて
まもなくIISがシニマス。
自分のちびマシンのAN HTTPDでは問題なく動作します。
Apache+Linuxでも問題なく動作します。
仕事の都合上IISしか使えません。
ということでマイっています。
0460デフォルトの名無しさん
NGNGスタックオーバーフローって出るのはrubyに対して、それともIIS?
サーバを殺してしまうということだと、吐いてるデータに問題があるような気
がするが、nphモードにしてみるとどうなる?
0461デフォルトの名無しさん
NGNG451です。
IISに対してオーバーフローが発生します。
そのときRubyは終了しています。
一時的に標準出力に出さないようにしてテストしてみます。
勉強不足ですみませんが、nphモードって何でしょうか?
0462デフォルトの名無しさん
NGNGttp://CGI-Spec.Golux.Com/draft-coar-cgi-v11-03-clean.html#7.0
IISではCGIスクリプトを nph- で始まるファイル名にすることでNPHモードになる。
NPHスクリプトは最初に "HTTP/1.0 201 Created\r\n" を出力しなければならない。
またヘッダの改行コードは \r\n にする。
0463デフォルトの名無しさん
NGNG451です。
詳細にありがとうございます。月曜日に試してみます。
HTTPヘッダでの方法でやってみます。
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNGやってみましたが、結果は同じでした。
RubyプロセスがIISを殺せるなんてやっぱりおかしいので、IISのバグあたりが
妥当ではないかと思っています。
0466デフォルトの名無しさん
NGNGAN HTTPDでは動くってことは、その可能性が高いと思われ。
rubyを使わずに、固定のデータを送るようなCGIにしても同じかな?
0467デフォルトの名無しさん
NGNG使うのやめたら、10秒以上掛かってた処理が1秒を切ったよ。
これに限らず、Rubyの添付ライブラリは玉石混淆過ぎ
つか、地雷原(w
0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNG0470デフォルトの名無しさん
NGNG煽りではなく、参考にさせてもらいたいので。
0471デフォルトの名無しさん
NGNGプロファイラに掛けたら、URI.parseも遅かったが、
URI#+は失禁するぐらい遅かった。
URIライブラリは、UriValidatorとUriUtilに分けたらどうだ?
CGIライブラリもなぁ、なんか使いにくいよ。
Ruby唯一の処理系に付属するオフィシャルな
おまけライブラリにしては、実装者のアクが強すぎ。
なんつーか、ツブシの効かない感じ。
0472デフォルトの名無しさん
NGNGプロファイラの結果見たい。遅いのはどのへん?
# URI::Generic#mergeあたりかな。
0473デフォルトの名無しさん
NGNGxml-parserでできますっけ。
0474デフォルトの名無しさん
NGNGhttp://raa.ruby-lang.org/cat.rhtml?category_major=Library;category_minor=XML
libxmlとかかねぇ。
0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNGX ターミナルの表示可能なカラム数を Ruby から得るにはどうしたらいいですか?
やりたいことは、Debian や RedHat の apt-get を実行したときに、画面右端に出る
[38%] などのパーセント表示を右端ぴったりに出したい、ということなのですが。
0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNG安直でよければ
columns = (columns.to_i if columns = ENV["COLUMNS"])
ウィンドウリサイズに追従したければcursesでも使うべきだろう。
$ ruby -rcurses -e 'Curses.init_screen;l,c = Curses.lines,Curses.cols; Curses.close_screen;puts "#{c}x#{l}"'
100x50
0480山崎渉
NGNG0481デフォルトの名無しさん
NGNGprint文でいいんじゃねえの?
0482デフォルトの名無しさん
NGNGCGIでRubyがIISを落とす件です。
なんとなくわかりました。
httpdはIIS4です。フォームからCGIにデータを送信して、CGIの中で
Locationヘッダを使って自分のCGIに戻すことをしています。
掲示板なんかでの再読み込み防止策としてやったのですが、
これがなぜか無限ループに陥ってしまうのです。
リクエスト内容を見るとLocationにはクエリを渡していないのに
その前のフォームのデータが流れてきています。
そしてまたLocation。
ちなみにただLocationでループさせても適度な回数でたたききられます。
0483デフォルトの名無しさん
NGNGRFC2616 の
10.3 Redirection 3xx
14.30 Location
をよく読んだら何か分かるかも。
0484デフォルトの名無しさん
NGNGのマッチのあと、$1 が 'a' ではなく '' になるのはなぜでしょうか?
0485デフォルトの名無しさん
NGNG0486デフォルトの名無しさん
NGNGつまりスレ違いだったわけでつね
空文字列にマッチするから。
0488山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0489デフォルトの名無しさん
NGNGそれじゃあ説明になってないんじゃ?
普通に考えると、a* が貪欲に 'a' にマッチすると思うんだけど。
/((a*)*)/.match('a').to_a # => ["a", "a", ""]
↑これは、ちょっと理解し難いです。
(a*) が空文字にマッチしてるのに、
どうしてその外側の ((a*)*) が 'a' にマッチし得るの?
0490デフォルトの名無しさん
NGNGだから内側のカッコは2回マッチしてるんだってば。
最終的な $~ は最後のマッチが有効になる。
これなら分かる?
$ ruby -e 'p /((ba*)*)/.match("bab").to_a'
["bab", "bab", "b"]
0491デフォルトの名無しさん
NGNGでも、なぜ(a*)が2回マッチするのかが分かりません。
1回目のマッチで文字列全部を取ってしまってるので、それで終了にはならないのですか?
0492デフォルトの名無しさん
NGNG.{0,0} は空文字列に最低一回マッチする。
0493489 (not (484 or 491))
NGNGあぁ、なるほど。理解できました。
(a*) は、1回目のマッチで 'a' を食べて、
2回目のマッチで '' を食べたところで繰り返しが終了し、
その時点のマッチの状態ってことで $1 = '' がセットされたってわけですね。
0494デフォルトの名無しさん
NGNGまあこういうのはマニュアルなんかにはあまり詳しく書かれてないから
Friedl の Mastering regular expressions でも買って読むのが吉
0495491
NGNG2回目のマッチが行われれば $1 に '' が入るのは分かるのですが、
1回目のマッチですべての文字列を食べ終わっているのに
2回目のマッチを行おうとするというのがどうも理解できません。
文字列の最後に仮想的な空文字を想定して、
1回目のマッチ後ではそれがまだ残っているというふうに考えるのでしょうか。
0496デフォルトの名無しさん
NGNGまあそうなんだが「仮想的な空文字を想定して」というのはよく分からん。
まず空文字ではなくて空文字列というべきだろう。
そして仮想的に想定しているのでなく実際にある。
0497デフォルトの名無しさん
NGNGirb(main):008:0> t = File.stat('foo').mtime.to_s
=> "Fri Jul 26 23:01:14 GMT+9:00 2002"
irb(main):009:0> Time.parse t
=> Sat Jul 26 23:01:14 UTC 2003
0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNGそういうTZってありだっけ?
begin-base64 644 tz.diff.gz
H4sIAAAAAAACA71Ry2rbQBRde77iLAKRMh7r4dgmA0IJKZQssknclWWKLI3C
gCyZGdmkxvTbM3rFSeqmi0LuQvcx95xzxbkrUvHMkcuVk8aVcLJSreNqpFYk
+P8gD7ePyGQuOJxkpx21Xf1ytEra4k/N4Y4oUSkpdrJ4gjJJy7KAN5qSVGYZ
2BbMB9uAKTPD8VbG2IlfGPhXuI8VfNcdw53y8RWfuGCuiUHNSSk9iRrjZtOh
fJ/7U+52KHJ9bQ64nAxnoG0ygySPtcY3w0EwGACI9EVXWYQ1GVjEbL+kVsgj
TVNd2WG0IrR7M9OndXXYVokdLhhdRmm9yEOT7Y7ocCT6uEA/UWjBLYkdkruj
15Vciy8zuRP7q7ued8Jez0N/ZO9u139uqyHrfX3d/2DojHuXbwyducMJaPN9
tXNuoARtlOa0AIXM+8G+LISZ1Gm03SSxFoS1LzKDE91YC8qWthWlUWrzsM3R
3kHwu8EQ+m455N/v54cf81s7/BcQeHeSdeYhCHDOzhGCeeDwbFyYsT+qyp/S
lFMXFGfjprWbvucQuW71a8la6K3OCx+CUAoVBAAA
====
0501デフォルトの名無しさん
NGNG0502デフォルトの名無しさん
NGNG実行結果、「123aaa456789」を期待していたのですが、
「123aaa789」となってしまいました。ファイルの途
中に追加書き込みするには、どうしたらよいのですか。
f = open("text","w")
f.print("123456789")
f.close
f = open("text", "r+")
f.seek(3, IO::SEEK_SET)
f.print("aaa")
f.close
0503デフォルトの名無しさん
NGNG直接的な手段はない。
ファイルの途中に直接挿入はできないので、
挿入したい位置から先を後ろへずらす必要がある。
0504デフォルトの名無しさん
NGNGファイルがそれほど大きくなければ
f = open("text", "r+")
img = f.read # 全部読んで
img[3,0] = "aaa" # ファイルイメージを文字列として編集して
f.truncate(0) # ファイルを切り詰めて
f << img # 書き出すのが頭を使わなくて楽
f.close
0506デフォルトの名無しさん
NGNGそのTZフォーマットの典拠を明示できるなら、
bugs-jaにでも投げといてくれるとありがたい。
0507502
NGNGどうもありがとうございます。
ファイルが大きく、編集箇所も多いので、
結局、以下のようにしました。
f_read = open("text1","w+")
f_read.print("123456789")
f_read.rewind
f_write = open("text2", "w")
f_write.print f_read.read(3)
f_write.print ("aaa")
f_write.puts f_read.gets
f_read.close
0508デフォルトの名無しさん
NGNGdef random_permutation(n,k) (0..n-1).sort_by{rand}[0,k] end
sort_by は便利だ
0509デフォルトの名無しさん
NGNG(0..n-1).sort_by{rand}
(0..n-1).sort{rand<=>0.5}
確率的な違いをどう表現したらいい?
0510デフォルトの名無しさん
NGNG(0..n-1).sort_by{rand} が以下と等価かどうかすら分からん
def perm(a, k=0, v = [])
n = (a = a.to_a).size-1
n == k ? v<<a : (k..n).each{|i| perm((b=a.dup;b[k],b[i]=b[i],b[k];b),k+1,v)}
v
end
perm(0..n-1)[rand((1..n).inject(1){|v,x|v*x})]
0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNGどれ?と聞く以上は選択肢を出していただきたい。
0513デフォルトの名無しさん
NGNGqsortの平均コスト評価で想定している分布って
(1) (0..n-1).sort_by{rand} # n個の一様乱数の順序
(2) (0..n-1).sort{rand<=>0.5} # ランダムな2分割による入れ換え?
(3) >>510 # 順列上の一様分布
(4) 上記以外
のどれ?
0514デフォルトの名無しさん
NGNGそれは (3) だが (1) や (2) が (3) と等価なのかは知らん。
0515デフォルトの名無しさん
NGNGそいういったことをしてくれるツールが検索しても見当たりませんでした。
こんなツールがあるよといった情報や、他の Ruby 用 Unit Test ツールでは実装
されているという情報がありましたら、教えてください。
0516デフォルトの名無しさん
NGNGcronの方はどうとでもなるとして、htmlのそれっぽい出力はないんじゃないかな。
ui/gtk/やui/fox/のtestrunner.rbを参考に書いてみては?
0517デフォルトの名無しさん
NGNGRubyUnitはTest::Unitに統合されてるのでそっちを使ったほうがいいかも。
HTMLでの出力というのがどういうものを求めてるのかよく分からんが、
test/unit/ui/html/testrunner.rbを他のtestrunnerを参考に書いてくれると
嬉しい人が増えると思われ。
0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNGスクリプトファイルはじまり
#!/ruby
if なんとか
i = 10 #ここではじめてiが出てくる
end
print "#{i}\n" # 10
おわり
ifの中で初めて使う変数が、ifの外でも使えます。
これってあり!?
0520デフォルトの名無しさん
NGNGhttp://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=trap%3A%3A%A5%B9%A5%B3%A1%BC%A5%D7%A1%A2%C0%A9%B8%E6%B9%BD%C2%A4
0521デフォルトの名無しさん
NGNGb=a["3"]
b[4] = b[4].to_i + 1
で、a["3"][4] が1になって欲しいんですがならないのはどーして?
0522デフォルトの名無しさん
NGNGただし、多分意図している動作とは異なる。
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=trap%3A%3AHash
0523521
NGNGほんとだ、a["3"][4]は1を返しますね。
でも、 a.inspect => {} となってしまいます。
a.each do |key,val| とかなにも返って来ませんし、、、
Ruby 1.6.7 です。
0524デフォルトの名無しさん
NGNG調べればあちこちに書いてあると思うけど、
Hash.new(obj) の引数 obj は Hash#default の値として保持され、
このオブジェクトは存在しないキーへの参照があったときに返される。
h = Hash.new("Go Fish")
h["a"] = 100
h["b"] = 200
h["a"] #=> 100
h["c"] #=> "Go Fish"
h.default #=> "Go Fish"
h["c"] << "pond"
h["c"] #=> "Go Fishpond"
h.default #=> "Go Fishpond"
h["c"] = 300
h["c"] #=> 300
h.default #=> "Go Fishpond"
h["d"] #=> "Go Fishpond"
0525デフォルトの名無しさん
NGNG>>522のリンクを読めよ。
0526デフォルトの名無しさん
NGNG「デフォルトオブジェクト」とかにすれば勘違いしづらいかも。
0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNG↑これ読んだ人、乾燥キボンヌ。
0529デフォルトの名無しさん
NGNG乾いてたよ。
0530デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNGクラスのインスタンス変数をインスタンスのインスタンス変数として使っちゃだめ?
0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNGでは、クラスのインスタンスのインスタンス変数として使っちゃ駄目?
つまり「クラスのインスタンス変数」と「そのクラスのインスタンスのインスタンス変数」
の使い分けを教えて欲しいのれす。
0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNGそれは全然違うと思うけど。
クラスのインスタンス変数は、継承したくなくて(クラス変数じゃ駄目)、
公開もしたくない(定数も駄目)が、クラスに所属させたい名前じゃないかな。
例えば特異メソッドで使う値とか。
0537533
NGNG--(コード)--
class Person
@name
def initialize(name)
@name = name;
end
def say
p @name
end
end
p1 = Person.new("foo");
p2 = Person.new("bar");
p1.say();
p2.say();
--(結果)--
"foo"
"bar"
--
両方とも "bar" ってなってほしかったのですが、、
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNG> class Person
> @name
この@nameと
> def initialize(name)
> @name = name;
この@nameは別物。
前者はPersonというClassオブジェクトのインスタンス変数。
後者はPersonクラスのオブジェクトの持つインスタンス変数。
0540デフォルトの名無しさん
NGNGclass C
@n = 0
def self.n() @n end
def self.new() @n += 1; super end
end
class S<C
@n = 0
end
S.new; C.new; C.new; C.new; S.new;
p [C.n, S.n] #=> [3, 2]
0541デフォルトの名無しさん
NGNGファイル無しでimage instance作りたいってこと? フツーに new すりゃいいし
0542デフォルトの名無しさん
NGNGイマイチどんなつかいでがあるのかわかんない。
サブクラスでの変更がスーパークラスへ反映されなければいいのに、
と思うことが多い。
0543デフォルトの名無しさん
NGNGつかってるよ。例えばなんかのデフォルト値とか。
サブクラスでも同じデフォルト値を使いたいからね。
定数でもいいんだけど、デフォルト値を変更したいときもあるから。
目的に応じて、クラス変数とクラスインスタンス変数を
つかいわければいいんじゃない?
サブクラスでの変更を親クラスへ反映させたければクラス変数、
させたくなければクラスインスタンス変数。
0544デフォルトの名無しさん
NGNGおお、クラスインスタンス変数ってのがあるんですね (←節穴野郎) 。
>>540 みたいに使うのか。
なんか漏れにもうまいこと使い分けれそうです。ども。
0545sage
NGNG正しい読み方ってどういう風に呼ぶのでしょうか??? > @、@@
クラスのインスタンスが持つ変数を「インスタンス変数」
クラスが持つ変数を「クラス変数」
という風に覚えていたのですけど、違ったのですか???
0546デフォルトの名無しさん
NGNGsage間違えた‥
0547デフォルトの名無しさん
NGNGあってる
@instance_variable オブジェクト毎
@@class_variable クラス毎
クラスはそれ自身がオブジェクトでもあるので両方持てる
0548デフォルトの名無しさん
NGNGhttp://jarp.jin.gr.jp/win32/aは知っているのだけれど、gdbm.soはないです。
Makefile が妙でnmake失敗してしまうです。
0549デフォルトの名無しさん
NGNG0550デフォルトの名無しさん
NGNG0551548
NGNGありがとうございました。
0552デフォルトの名無しさん
NGNGって事を知らない人、結構いるね。
この板だと話が通じない事多い。
0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNG0555デフォルトの名無しさん
NGNG>>553みたいに
話が通じない事多い。
0556Rubyist@553
NGNGしらなかったんだよシラネーよ知って根ーよシラララララララネネネネネネネシラネー
ヨヨヨヨヨヨヨヨヨヨヨヨヨヨヨヨ
ブァベブチャグチャグハアァァアアアアァァブァァアアァアアウアウアアウアウウウウウアウウアウウアあうアウアアウアウガアアアアアウゥァウガアカカカガ゙カクククセゼグギ
0557デフォルトの名無しさん
NGNGをダウンロードし、
\bin\gdbm.dll 21,504 03/04/22
を、gdbm.soとリネームし、
require 'gdbm' したところ、
\hage.rb:1:in `require': 127: 指定されたプロシージャが見つかりません。 - Init_gdbm (LoadError)
./gdbm.so
が出てしまいました。
ruby 1.6.8 (2002-12-24) [i586-mswin32] です。
0558デフォルトの名無しさん
NGNGまあ、元の聞き方が悪いから仕方がないけど。
それはrubyから(gdbmモジュールを通して)使うgdbmライブラリ本体だよ。
それくらいzipファイルの中身を見て見当つけなさい。
0559デフォルトの名無しさん
NGNGというのはいかがなものか。
0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNG後学のためにどう聞けば良かったか教えてください。
0562デフォルトの名無しさん
NGNG558じゃないけど。
Makefileがどう妙なの?
どうやってMakefileを作ったの?
rubyのバージョンは?(557に書いてあるけど)
あたりは最低限必要かと。
それがわかれば、もうちょっとましな質疑応答になると思われ。
ちなみに、今回の場合は、550が嘘で552は本当だけどミスリーディング。
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNGunix板の情報整理スレでも「メモはRDで書いてる」ってのが
何度か挙げられていたから、良いモノなのかも。
0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNGttp://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=Google+UTF-8+%E6%A4%9C%E7%B4%A2%E6%96%87%E5%AD%97%E5%88%97+Ruby&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
のq=???の日本語部分のデコードができなくて困っています。
CGI.unescape や NKF してたんですが、うまくいきません。
UTF-8だからかな?
できればポインタなどお願いします。
0568デフォルトの名無しさん
NGNGUTF-8は現nkfでは扱えない(nkf自体Unicode制定前のものだから当然だが)ので、
uconv,iconv,unkfあたりを使う。在処は
uconv: RAA
iconv: 1.8では標準、1.6ならshim
unkf: rough
0569デフォルトの名無しさん
NGNGさがしてやってみます。
0570567
NGNGunkfをインストールして、
require "cgi"
require "unkf"
q="%93%FA%96%7B%8C%EA"
NKF.nkf("-e", CGI.unescape(q))
で、EUCの文字列が取得できました。
どうもありがとうございます。
0571デフォルトの名無しさん
NGNGとすると、nilと表示されてしまうのですが、これを何も表示されないようにしたい。
class NilClass
def to_s
''
end
end
としても、
def nil.to_s
''
end
としても、nilと出力されてしまう。
どうすればよいか、知恵を拝借したい。
printを再定義しないとだめ?
0572デフォルトの名無しさん
NGNGつか、print 対象に nil がこないようなロジックにすべきじゃないかと。
0573デフォルトの名無しさん
NGNG諦めてprintを再定義してくれ。
>>572
inspectをどれだけ変えても無駄では?
なにしろ、printのソースが
case T_NIL:
rb_io_write(out, rb_str_new2("nil"));
だ。
0574デフォルトの名無しさん
NGNGあ、ほんとだ。早とちりだった。
0575デフォルトの名無しさん
NGNGまじで?ソースコード埋め込みだったのか。
質問の背景を説明すると、RubyでCGIを作成してて、
cgi = CGI.new
user, = cgi['user']
mail, = cgi['mail']
print user, "<br/>\n"
print mail, "<br/>\n"
としてるんだけど、このときuserやmailがnilと表示されるので
どうにかしたかった。いちいち
user ||= ''
mail ||= ''
とするのもうざったいし。
こんなとき、みんなはどうしてるの?
0576デフォルトの名無しさん
NGNGもっといい方法がありそうだが、
user = cgi['user'].first || ''
なんてのはどうだろう。一行で書けるし。
0577デフォルトの名無しさん
NGNGprint "#{mail}<br/>\n"
0578デフォルトの名無しさん
NGNG576+577で脳内idiom化済み。
0579デフォルトの名無しさん
NGNG最初はこうしてたんだけど、
http://localhost/login.rbx
と
http://localhost/login.rbx?username=&password=
とを区別したかったので(前者ではcgi['username'][0]はnil、
後者では "" )、使わないことにした。
>>577
これ、うまくいくね。ありがとう。
でもなんで?もし仕組みをしってたら教えてください。
0580デフォルトの名無しさん
NGNGもちろん明示的に
print user.to_s, "<br/>\n"
としても望み通りになる。
0581デフォルトの名無しさん
NGNGうー、そういうことか。
def nil.to_s() とか class NilClass; def to_s() ... とか
していたおれはアホやね。すでにそうなっていたのか。
さんきうです。
0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNG現実のコードが複雑なら、質問するときは本質部分だけをとりだした
簡単なものを示すのが普通では?
0584デフォルトの名無しさん
NGNGその「簡単なもの」が571だというならそれはそれで納得なんだけど。
575のようにCGIの入力を無加工でprintに渡すわけはないので、
それまでに別のところでnil問題に遭遇するだろう、ということだよ。
なので、575でいう「こんなとき」はありえない。
0585デフォルトの名無しさん
NGNGソース取ってきて自分でビルドするのと比較して何が嬉しいの?
0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNGソース取ってくるほど熱心でないユーザも使う可能性が増える。
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNGだとしたら、使ったバイナリをビルドした設定を記録するのがちょっとは楽になるかな。
0591デフォルトの名無しさん
NGNG???
今いち言いたいことが分からないけど、Un*x と変わらないよ?
0592デフォルトの名無しさん
NGNG0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNGでも動かない。
0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNG0597デフォルトの名無しさん
NGNG機能限定でいいから軽い YAML 実装ってないですかね?
無きゃ自分で書くしかないんだけど・・・
0598デフォルトの名無しさん
NGNGCygwin入れてない環境でも、Cygwin DLLさえあれば使える。
…mswin32版との具体的な差が気になるところではあるけれども。
0599デフォルトの名無しさん
NGNG「これは見とけ」とか言うサイトや本ある?
もう、馬鹿でも分かるような。
0600デフォルトの名無しさん
NGNG「たのしいruby」あたりはどうかね。
0601名無しさん@xyzzy
NGNGhttp://www.ruby-lang.org/ja/
ユーザーズガイド
http://www.ruby-lang.org/ja/uguide/uguide00.html
リファレンスマニュアル
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Ruby%A5%EA%A5%D5%A5%A1%A5%EC%A5%F3%A5%B9%A5%DE%A5%CB%A5%E5%A5%A2%A5%EB
0602599
NGNGRubyのオフィシャルサイトはもちろん見ましたよー。
でもRubyって、どのサイトも
「プログラミングそこそこ理解できる」が前提みたいな感じで、
まるっきりの初心者対象にしたようなページはあまり見つからないんですよね。
その点で多少敷居が高いと感じたり…。
0603デフォルトの名無しさん
NGNGかばんなぁ。
ところで、「プログラミング初心者」であっても「コンピュータの初心者」じゃ
あないよな?
0604597
NGNGしかし、-ryaml するだけで重いんですよね。
そもそも Racc 自体が重いのかしら・・・?
0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNG結城 浩で「Ruby言語プログラミングレッスン」キボン
いや、Rubyはプログラミング初心者にはやさしいつくりではあるが、
解説書で初心者(他言語経験者を除く)にやさしいのはっていうとちょっと?だったりする。
他言語のいい初心者本からRubyにきたほうがいいかもって、本末転倒。
ひと頃と比べるとRuby本の出るペースも落ちてきてちょっとさびしい。
0608597
NGNGほかにも気になるところが沢山あるのですぐには使えないな・・・
もうちょっと調べてみよう。
0609デフォルトの名無しさん
NGNG詳しくレポートきぼん。
量が多ければruby-bugsかruby-devへ。
0610599
NGNGどのくらいの知識と経験を積めば「コンピュータの初心者」から脱出できるのか
分からないので何とも言えませんが、少なくとも、
PCを昨日今日買ってきたというレベルではありません。
以前、まつもとゆきひろ氏の「Rubyプログラミング入門」を入門書として購入しましたが
余計な注釈や、読みづらい本文で(゚Д゚)ポカーン
この本では「楽しいRuby」は無理だと感じました。
0611デフォルトの名無しさん
NGNG注釈云々からすると「オブジェクト指向スクリプト言語Ruby」(通称Ruby本)じゃ
ないかと思うが、あれはまったく初心者向けじゃないよ。
0612デフォルトの名無しさん
NGNGつーことね。
0613デフォルトの名無しさん
NGNG個人的経験からいうと、初心者向けのサイトを作ると覚えるよ。
0614599
NGNGスマソ、今見直したら
「原信一郎 著 まつもとゆきひろ 監修」と書かれてますた。
「著 まつもとゆきひろ」部分だけ見て激しく勘違い。
本の名は間違い無く「Rubyプログラミング入門」。
0615名無しさん@xyzzy
NGNG目的がないからおぼえないんだよきっと。tdiaryとか導入していま流行の
bloggerになってみれば?tdiaryのpluginをかくためにrubyを覚えたひと
もいるよ。
0616デフォルトの名無しさん
NGNG0617597
NGNGsyck-0.15 とかいうのだとダメだったんで、
CVS 最新を取り寄せて試してみたところ、問題なさそうでした。
また何か問題が見つかったら適宜報告するようにします。
0618597
NGNGYAML もっと普及するといいなぁ。
0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNGこれ読むまで、
オブジェクト?はぁ?クラス?はぁ?インスタンス?はぁ?
って感じの漏れだったが、これ読んだら概念がちょこっとわかったよ。
ちなみに「たのしいRuby」を読んでもオブジェクト指向がなんなのか
全然理解できなかった。これを読んだあとも
オブジェクト?はぁ?クラス?はぁ?インスタンス?はぁ?
の状態に変わりはなかった。
けど、超基礎から説明してるので、
プログラム自体が初心者の人は「たのしい」から読むべきだろうね。
「Rubyプログラミング入門」はUNIXの基礎とか、プログラムの基礎とか知らないと、
わけの分からん用語の連続になっちゃうよ。
0621デフォルトの名無しさん
NGNGRubyに興味を持ち、先日初めてオフィシャルページを
みてきました。Rubyはvariable declarationがいら
ないようなんですが、そこで質問です。
functionがinteger valueにreturnするときなんか
はどうなるのでしょう?例えばc++で
int function(int i, int j)
{
return i+j;
}
これをRubyでかくと、どうなるのでしょうか?
簡単すぎる質問ですみません。
0622Ruby知らない
NGNG0623621
NGNGすみません。海外在住なのです。
日本の本が手に入らない僻地にいるので、webだけが
たよりなのですが、なかなか簡単なサンプルがないの
で、ここで聞きました。
0624_
NGNG( ・∀・)/< こんなのみつけたっち♪
http://www.hiroyuki.zansu.com/hankaku/jaz03.html
http://hiroyuki.zansu.com/hankaku/jaz10.html
http://www.hiroyuki.zansu.com/hankaku/jaz08.html
http://hiroyuki.zansu.com/hankaku/jaz09.html
http://www.hiroyuki.zansu.com/hankaku/jaz06.html
http://hiroyuki.zansu.com/hankaku/jaz05.html
http://www.hiroyuki.zansu.com/hankaku/jaz01.html
http://hiroyuki.zansu.com/hankaku/jaz02.html
http://www.hiroyuki.zansu.com/hankaku/jaz07.html
http://hiroyuki.zansu.com/hankaku/jaz04.html
0625デフォルトの名無しさん
NGNGdef function(i,j)
return i+j;
end
とも書けるけど、大半のヤシは
def function(i,j)
i+j
end
と書くだろう。
0626デフォルトの名無しさん
NGNGYAMLは、現在開発中の新バージョンは拡張ライブラリになって
おり、これはとっても速いらしい。まだα状態だろうけど。
0627デフォルトの名無しさん
NGNGdef function(i,j) i+j end
p function(1,2) #=> 3
p function("foo"+"bar") #=> "foobar"
型を指定するための方法というのはない
どうしても検査したければ obj が Klass のインスタンスであることを
obj.is_a? Klass によって検査することはできるがあまり使わない
0628デフォルトの名無しさん
NGNG> p function("foo"+"bar") #=> "foobar"
p function("foo","bar") #=> "foobar"
0629621
NGNG夜12時のshowだったのですが、すごい混雑ぶりでした。
>>625, 627
どうもありがとうございます。
本当に型がないのですね。(笑) javaとC++しかしらな
い私にとっては、とても不思議です。
0630デフォルトの名無しさん
NGNG> 本当に型がないのですね。
変数にはない。オブジェクトが型を持っている。
0631_
NGNG( ・∀・)/< こんなのみつけたっち♪
http://www.hiroyuki.zansu.com/hankaku/jaz03.html
http://hiroyuki.zansu.com/hankaku/jaz10.html
http://www.hiroyuki.zansu.com/hankaku/jaz08.html
http://hiroyuki.zansu.com/hankaku/jaz09.html
http://www.hiroyuki.zansu.com/hankaku/jaz06.html
http://hiroyuki.zansu.com/hankaku/jaz05.html
http://www.hiroyuki.zansu.com/hankaku/jaz01.html
http://hiroyuki.zansu.com/hankaku/jaz02.html
http://www.hiroyuki.zansu.com/hankaku/jaz07.html
http://hiroyuki.zansu.com/hankaku/jaz04.html
0632デフォルトの名無しさん
NGNG開発中のYAML次期バージョンは拡張ライブラリとして実装
されているため、とても速いらしい。
0633( ´w`)
NGNGここの管理人は『2chに行くヤツは全員オタクだ。
2ch用語発言したボケはアク禁』などとほざくゴミだ。
これはひろゆき氏及び全ての2ちゃんねらーに対する侮辱である。
ここに行って2ch用語を連発して頂きたい。
0634デフォルトの名無しさん
NGNG藻前一人でいきがってれば?
0635デフォルトの名無しさん
NGNG藻前
konnnakotobadukaisuruyatuniiwaretakunaiyona.
0636デフォルトの名無しさん
NGNG開発中の次期バージョンの Ruby は拡張ライブラリとして
現在とても速いα実装をしており、とても YAML らしい。
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNG0639638
NGNGclass Array
def shuffle
src, dst = self.dup, []
while not src.empty?
dst << src.delete_at(rand(src.size))
end
dst
end
end
0640デフォルトの名無しさん
NGNGclass Array
def shuffle!
size.downto(2) do |i|
j = rand(i)
self[i], self[j] = self[j], self[i] unless (i -= 1) == j
end
self
end
def shuffle
dup.shuffle!
end
end
0641デフォルトの名無しさん
NGNGdef shuffle!
size.downto(1){|i|
push delete_at(rand(i))
}
self
end
end
0642デフォルトの名無しさん
NGNGそれと、delete_atはそれ以降を全部ずらすから、大きいArrayに対しては効率
が落ちる。
0643デフォルトの名無しさん
NGNGおまけ(実用性はたぶんない)
class Array
def shuffle!
sort!{
rand - 0.5
}
end
end
0644デフォルトの名無しさん
NGNGいや、もちろんなんだかぐちゃぐちゃになりそうだなってのは分かるけど
ちゃんとn!通りの並びの全てが等確率で出るのかどうかよく分からない。
0645デフォルトの名無しさん
NGNG0646デフォルトの名無しさん
NGNGソートのアルゴリズムも知らない中学生ですか?
0647デフォルトの名無しさん
NGNG試してみるとわかると思うが、終わらない。
0648デフォルトの名無しさん
NGNG% ruby -e 'class Array; def shuffle!() sort!{ rand - 0.5 } end end ; a=[0
,1,2,3,4,5,6,7,8,9]; a.shuffle!; p a'
[1, 7, 9, 3, 5, 0, 8, 6, 2, 4]
%
終わるけど?
0649デフォルトの名無しさん
NGNGdef shuffle!(&block)
if block
1.upto(size-1){|i| j = block[i+1] ; self[i],self[j] = self[j],self[i]}
else
1.upto(size-1){|i| j = rand(i+1) ; self[i],self[j] = self[j],self[i]}
end
self
end
end
上の方法だとrand(n)かblock[n]が0,…,n-1を等確率で返すことを仮定すれば
すべての要素が異なるときにそれぞれの順列が等確率になることを証明できるが
他の方法はどう?
0650デフォルトの名無しさん
NGNG中央値はランダムに決定されることは自明だと思うので省略。
残りの要素はランダムに振り分けられるので、左右どちらに行くかは等確率。
これを再帰的に繰り返せば全体も等確率と考えていいんじゃないかな。
ただ、最後はselection sortを使ってるんで、これは等確率じゃないような気がする。
n個の要素から最小値を選び出す場合、最初に比較された要素が選ばれる確率は
2**(1-n)だけど、最後に比較されたものが選ばれる確率は1/2。
おまけ
def tossup
rand(2)*2-1
end
0651デフォルトの名無しさん
NGNGswap(arr[i], arr(rand(length(arr))));
0652デフォルトの名無しさん
NGNGdef hist(n,k)
a, h = 1..n, Hash.new(0)
(a.inject{|i,j|i*j}*k).times{ h[yield(a)]+=1 } ; h
end
n, k = (ARGV[0]||3).to_i, (ARGV[1]||100).to_i
h = hist(n,k){|a|a.sort{rand-0.5}}
h.sort_by{|i,j| [j*10/k,i]}.each{|i| p i}
>>650 スマン、最後はselection sortってどういうこと?
それは抜きにしても左右に振られるのがランダムであることから
等確率であることをいうのは飛躍が大きいと思われ。
0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNG> >>650 スマン、最後はselection sortってどういうこと?
勘違い。ruby_qsort()は切替えたりしてないな。
> それは抜きにしても左右に振られるのがランダムであることから
> 等確率であることをいうのは飛躍が大きいと思われ。
というか、順次比較して行くから等確率じゃないな。
0657デフォルトの名無しさん
NGNG>>643の場合、停止確率は1だが停止しない場合もあると言いたかったんだろう。
それならば正しい。
しかし>>647は間違いだな。確率0の事象を実際にみることはないに等しい。
0658デフォルトの名無しさん
NGNG>>643については正しいが、確率1だからといって見ることができるとは限らないので
「確率0の事象を実際にみることはないに等しい」は言い過ぎかと。
class Array
def shuffle!()_=self;1.upto(size-1){|i|j=rand(i+1);_[i],_[j]=_[j],_[i]};_ end
def shuffle() o = dup ; o.shuffle! ; o end
def sorted?() empty? or !! inject{|i,j| i <= j ? j : break} end
def bogosort!() until sorted? do shuffle! end ; self end
def bogosort() o = dup ; o.bogosort! ; o end
end
100.times do |i|
STDERR.printf("%2d: ", i)
a = (1..i).to_a.shuffle ; t0 = Time.now ; b = a.bogosort ; t1 = Time.now
STDERR.printf("%f sec [%s] --> [%s]\n", t1-t0, a.join(","), b.join(","))
end
0659デフォルトの名無しさん
NGNG> というか、順次比較して行くから等確率じゃないな。
それも明らかじゃないと思う。難しい。
0662デフォルトの名無しさん
NGNG0663デフォルトの名無しさん
NGNGttp://rrr.jin.gr.jp/doc/http-access2/
の rdoc の出力は、rdoc-0.9.0 の標準 (Squeak のクラスブラウザみたいに、上半分に
クラス階層やメンバが表示されているやつ) とは違って、左半分にクラス階層やメンバが
表示されているんだけど、
これって rdoc の CVS 版使うとこうなるのかな?誰か知っている人いますか?
0664663
NGNGすいません、自己解決しました。
ttp://rrr.jin.gr.jp/doc/Makefile
をみたら、--template kilmer っていうオプションが rdoc にあるみたいね。
0665デフォルトの名無しさん
NGNGそれ以外では偽という条件を書くとき、
if str=='aaa' || str=='bbb' || str=='ccc' then
...
end
としているのですが、もっとうまい書き方はありますか?
case str
when 'aaa', 'bbb', 'ccc'
...
end
でもよかったんだけど、if修飾子としても使いたいので
できればif文での書き方を希望。
0666デフォルトの名無しさん
NGNGRubyスレをあげないでください。
0667デフォルトの名無しさん
NGNGif %(aaa bbb ccc).include?(str)
0668667
NGNGif %w(aaa bbb ccc).include?(str)
0669デフォルトの名無しさん
NGNGなるほど、配列の要素として含むかどうかで判断するのね。
ちなみにこれ、実行するたびに配列が作成されるのかな?
erubyやmod_rubyで使用すると、実行するたびにオブジェクトが
増えてしまう?
(仕方ないか)
0670667
NGNG実行のたびに配列は生成されちゃうだろうね。
それがいやだったら、配列を定数に入れとくとか。
ifの評価が終わったら参照されない配列になるから、
gcされちゃうんで増え続けることはないだろう。
0671デフォルトの名無しさん
NGNGif /\A(?:aaa|bbb|ccc)\z/ =~ str
0672669
NGNGいろんなやりかたがあるのね。
0673デフォルトの名無しさん
NGNGなるほど。正規表現のリテラルだったら毎度同じオブジェクトなのか。
$ ruby -e '2.times do p /hoge/.id end'
538146270
538146270
$ ruby -e '2.times do p ["hoge"].id end'
538146160
538146130
VALUE * を使い回す話とごっちゃになってた。
0674デフォルトの名無しさん
NGNG> VALUE * を使い回す話とごっちゃになってた。
何それ?
0675デフォルトの名無しさん
NGNGたぶんC言語レベルでのソースコードの話。
VALUEって型があって、それへのポインタのことでは?
0676デフォルトの名無しさん
NGNGそうとも限らないんだけどね。
ruby -e '2.times do |i| p /mona/.id end'
ruby -e '2.times do |i| p /#{i}/.id end'
ruby -e '2.times do |i| p /#{i}/o.id end'
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNGそれは分かるんだけど、「使い回す」ってのが何の話だかが。
0680デフォルトの名無しさん
NGNG# 最近fj.lang.cでフレームになってたような気もするが。
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG0686山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0687デフォルトの名無しさん
NGNGにあるグラフはどっからのデータのグラフなんだ
もしかしてmatzが主観で書いたグラフか?
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNGRubyからアクセスしたいのですが、どうしたらいいでしょうか。
0690デフォルトの名無しさん
NGNGlist = `"zipinfo #{archive}"`.split(/\n/)[1...-1]
0691デフォルトの名無しさん
NGNGArray#uniq も比較関数をブロックで渡せたら…と思いませんか?
0692デフォルトの名無しさん
NGNG思わないなぁ。めんどくさいと思うよ。
それなら俺様 uniq を作った方が早いと思う。
0693デフォルトの名無しさん
NGNGどうも。
書庫内のファイルの中身も見たいので、DLLのAPIヘルプを見ているところです。
0694デフォルトの名無しさん
NGNG環境はWindowsなのか?
なら「Ruby+統合アーカイバ+DLL」でぐぐるとなんか出てくる。
zlibを使ったRubyZipってのもあったはず。
0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNG情報どうもです。いろいろ試してみます。
0697デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNG遅延評価に対応した ruscheme というのを試してみたいのですが、
どこかダウンロード可能なところは無いでしょうか?
0699デフォルトの名無しさん
NGNGぐぐれ。ちなみに綴りが間違ってる。 Rucheme だ。
0700デフォルトの名無しさん
NGNGrucheme003 はまだ遅延評価に対応していないみたいなんです。
もっと新しいのはダウンロードできないんでしょうか?
0701デフォルトの名無しさん
NGNG頼 む か ら ソ ケ ッ ト の g e t c で デ ッ ド ロ ッ ク す る の 直 し て く れ
これじゃネットワーク全然使えねーよ
0702デフォルトの名無しさん
NGNG再現出来る短いコードを書き環境を明示して晒してみたら?
0703デフォルトの名無しさん
NGNGでもスレッドは止まる。timeoutも効かん。
再現?簡単だYO!
TCPServerとTCPSocketで試してみ。
ソケットオープソ
↓
接続
↓
getc (getsでもreadでも何でもいいが)
↓
受信データを送らない
↓
あぼーん
0704デフォルトの名無しさん
NGNGだから、再現コードと再現環境を晒せっての。
どんなコードや環境でも再現するようなら
今頃 Ruby なんか使ってる香具師なんかいねえよ。
0705デフォルトの名無しさん
NGNGワカタ。ゴメン。ちょと待ってろ
0706703
NGNG書き込めねえよ
でけえとかなげぇとか言うなよ
>>704スマソ
環境だけ書かせてもらうわ
Ruby1.6.8 無印とCVS版200304全般
mswin32、mingwは全滅。Cygwinは送信だか受信のどっちか×だった。
1.8pre2のLinux版では問題なし。
0707デフォルトの名無しさん
NGNGこれってまだ直ってないんだっけ
0708703
NGNG0709デフォルトの名無しさん
NGNG> mswin32、mingwは全滅。
winsockの呼び出しは中断できないから。
ついでにいっとくと、Windows対応はまつもとさんにいっても無意味。
0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNGそれともMD5使っとけばいいんですかね。
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNGネットワークプログラミングをするのが流行っているようです。
0714デフォルトの名無しさん
NGNG〜〜 完 〜〜
0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNG0717デフォルトの名無しさん
NGNG701 名前: デフォルトの名無しさん [sage] 投稿日: 03/06/05 02:18
まつもっちゃんよ・・・
頼 む か ら ソ ケ ッ ト の g e t c で デ ッ ド ロ ッ ク す る の 直 し て く れ
これじゃネットワーク全然使えねーよ
0718デフォルトの名無しさん
NGNGdef self.append_features(mod)
mod.module_eval do
alias lt < ; def <(x) lt(x) && x end
alias gt > ; def >(x) gt(x) && x end
#ailas le <= ; def <=(x) le(x) && x end
alias ge >= ; def >=(x) ge(x) && x end
alias eq == ; def ==(x) eq(x) && x end end end end
class FalseClass
def <(x)false end; def >(x)false end; def <=(x)false end; def >=(x)false end
end
[Fixnum, Bignum, Float, String, Module].each do |k|
k.class_eval do include ComparisonChainable end end
p 1<2<3
p 1<2<2
文法スレ読んでてこういうの考えたんだけど、
コメントアウト外すと parse error になるのはバグ?
0719デフォルトの名無しさん
NGNGselectはできるかな。
0720デフォルトの名無しさん
NGNGHash#indexes をつかうと 1.8 だと warning がでます。
Hash#values_at をつかうと 1.6 では動きません。
どうすればよいですか?
0721デフォルトの名無しさん
NGNGalias values_at indexes unless self.instance_methods.include? "values_at"
end
こう?なんか違ってそう。
0722デフォルトの名無しさん
NGNGつーかshim使えよ。
0723デフォルトの名無しさん
NGNGソケットに対しては使える。
0724デフォルトの名無しさん
NGNGailas
ruby-mode.elとか、強調表示できるエディタを使え。
0725デフォルトの名無しさん
NGNGshim は嫌
0726デフォルトの名無しさん
NGNGなんかかっこ悪いなあ。1.8 でも indexes で warning を出さないべきだと思うのは
漏れだけ?
warning を出したければ 1.9 以降にして欲しい。
0727デフォルトの名無しさん
NGNGいまさらそんなこと言っても...
0728デフォルトの名無しさん
NGNG1.8はまだ出てないじゃん。
次のレスの予想:
ここでそんなこと言っても...
0729デフォルトの名無しさん
NGNG10人が受講する科目Aの成績平均を計算するため
「氏名,成績点」をキーボードから入力して,
連想配列に格納する.得られたデータから平均値を算出し,
最後に,氏名,素点,平均からの偏差を画面出力したい.
という問題があり
dt = ArrayScore.new(10);
dt.inputData();
dt.meanCalc();
dt.outputData();
と実行するみたいなんですけどうまくできません.
リファレンスマニュアル見ながら作ってみたんですが
エラーが直りません.どなたか直してもらえませんか.
次に全文載せます.
0730デフォルトの名無しさん
NGNG@hash = {}; @num = 0; @mean;
def new n
@num = n; return self;
end
def inputData
@hash.clear;
for i in 1..@num
gets;
tmp = split(",");
@hash.store(tmp[0],Integer(tmp[1]));
end
end
def meanCalc
@mean = 0;
@hash.keys.each do |key|
@mean += @hash[key];
end
@mean /= @hash.size;
end
def outputData
@hash.keys.each do |key|
p key, ",", @hash[key], ",", @mean - @hash[key];
end
end
end
0731729
NGNGdt.inputData();
dt.meanCalc();
dt.outputData();
これで全文です.
0732デフォルトの名無しさん
NGNG+ def initialize n
0733729
NGNGありがとうございます
最初のエラーが消えました.
ただ次に
`inputData': undefined method `clear' for nil (NameError)
と出てきてしまいました.
リファレンスマニュアルのHashのところには
たしかメソッドとしてclearがあったと思うんですが
これはどういうことでしょう.
hashを使うのに最初になにか宣言がいるんでしょうか.
0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNG1.7 で既に出ている warning を 1.8 で出すなとおっしゃるのですか?
0736デフォルトの名無しさん
NGNG@hash = {}; @num = 0; @mean;
を initialize メソッドの中に。
どのスコープの中にいるかをよく考えてね。
0737デフォルトの名無しさん
NGNG1.7は開発途上のバージョンだし、最初のほうと今では仕様が違っている点は
いくらでもあるし、別に関係ないんじゃない?
0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNGなんでんかんでんMeadowでよかとよ。
0741デフォルトの名無しさん
NGNGとくにおすすめはしないがMeadow。
おれはとても便利に使ってるが、
windowsアプリケーションとして見たら癖ありすぎだもんで。
0742デフォルトの名無しさん
NGNGどうもです。探してみます。
0743デフォルトの名無しさん
NGNG0744740
NGNG0745740
NGNGemacsのwin版 = Meadow
0746デフォルトの名無しさん
NGNG0747デフォルトの名無しさん
NGNGもしMeadowを使うことに決めたのなら、
rubyのパッケージについてくるruby-mode.elを使うようにしなよ。
これを使わないとMeadowを使う意味が半減だ。
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNG0753デフォルトの名無しさん
NGNGESC キーの方が遠くないか?
0754デフォルトの名無しさん
NGNG0755デフォルトの名無しさん
NGNG昨日ウェブを巡回していたらしいたけ皮膚炎という病気の存在を知った。
0756デフォルトの名無しさん
NGNG変換/無変換をCtrlに割り当てる。これ最強。
0757デフォルトの名無しさん
NGNGそのどっちかをshiftに割り当てようよw
0758デフォルトの名無しさん
NGNGいや、shiftよりCtrlの方が使用頻度高いし。
代わりにカタカナひらがなをshiftに割り当ててみたんで、しばらくこれで試してみよう。
0759デフォルトの名無しさん
NGNGdef +=(i)
end
def -=(i)
end
def *=(i)
end
def /=(i)
end
がsyntax errorになります。
これらの実装はどうやんの?
0760デフォルトの名無しさん
NGNG独立して定義することはできません。
0761デフォルトの名無しさん
NGNG上(ESC)は届くけど、下(Ctrl)はホームポジションから離れないと届かないよぉ ちなみにノートPCのキーボード
0762デフォルトの名無しさん
NGNG0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNGsucc!のaliasにすればいいんだよ>++
0765デフォルトの名無しさん
NGNG…ってこのての議論はもう飽き飽きw
0766デフォルトの名無しさん
NGNGだから誰か++を実装したRubyをブランチしなよ。名前はRuby++w
0767デフォルトの名無しさん
NGNGAltIME等でCtrlとCapsLockを入れ替えたほうがなにかと左手小指にやさしいかと。
保存やコピペなど,Ctrlキーを使う機会は多いから。
ついでに"Ctrl+["でESCを押したのと同じだからviユーザにとっても
押しやすいCapsLockの位置にCtrlがあったほうが幸せでしょう。
0768デフォルトの名無しさん
NGNGAの隣にCtrlがあったほうがいいか、というとそうでもないらしい。
おれはそっちのほうがいいんでmayuで設定しているが。
一般的な106とか109キーボードのCtrlの位置(左Shiftの手前)に
あったほうが使いやすいという意見もある。
それはそれでうなずける主張だと思うんだな。
0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNG車輪の再発明?
0772デフォルトの名無しさん
NGNGそういう批判をするならばCOBOLでも使ってろw
0773デフォルトの名無しさん
NGNGこの間の読書会ではこれでかなり盛り上がってた。
0774デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNGハァハァ(°д°;)ハァハァ
0776デフォルトの名無しさん
NGNGメソッドの実体は実装しなくていいから、せめて演算子として ++ 使わして欲しい。
0777デフォルトの名無しさん
NGNG++i
とかやって、無限ループになってはまった。
0778デフォルトの名無しさん
NGNG0779デフォルトの名無しさん
NGNG| 次でボケて! |
|_________|
∧∧ ||
( ゚д゚) ||
/ づΦ
0780デフォルトの名無しさん
NGNG0781名無しさん@xyzzy
NGNG0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNG0784デフォルトの名無しさん
NGNGいいんですかぁ。
環境が Meadow + ruby 1.6.8 (2002-12-24) [i386-mingw32] なので
(refe-call-process t "*") の * を ruby が自前で展開して
refeに*が渡らないのが原因だと思うのですが・・・
* を '*' にして展開しないようにしてもだめでした。
0785デフォルトの名無しさん
NGNGM-x refe して * を指定するとrefeのusageが出て
'*'だとno such class or method: '*'になりまちた。
微妙にスレ違いですけど、どなたか・・・たすけて・・・
0786デフォルトの名無しさん
NGNGまず、ReFeのバージョンは0.7だよね?
それが大丈夫なら、refe '*[#,]*' でやってみ。
0787デフォルトの名無しさん
NGNGReFe 0.71でつ。
M-x refe '*[#,]*'の結果は
not match: '*[##]*'だそうです。
0788784
NGNG(defvar refe-program-args
'("-e" "puts ARGV"))
と書き換えてみると
M-x refe * の結果は refe.elをおいてるディレクトリのファイル一覧が出ました(゚Д゚)
'*'だと'*'と出ました。
もしかしてワイルドカードの展開ってmeadowさんがやってるの???
0789デフォルトの名無しさん
NGNGわかった。ruby を経由するのは潔くあきらめよう。
ReFe のデータベースディレクトリに method_document_comp という
ファイルがあるから、それを elisp を使って読み込んでくれ。
構造は中を見れば一瞬でわかるから。
0790デフォルトの名無しさん
NGNG(refe-call-process t "*")
を
(refe-call-process t "")
にしたらどうなるん?
0792784
NGNG> (refe-call-process t "*")
> を
> (refe-call-process t "")
no such class or method: ""
です。というか最初は""だったけどruby-listでWindowsでうごかねーよ
ってなって"*"になったんです。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/37546
>>789
こんなナイスなものがあったんですね。ありがとうございます。
・・・でも、なにがだめなんだろう。
xyzzyではうまくいくのになぁ。meadowさんがなにかごにょごにょしてるのかな。
まあいいやmeadowつかわねーし。
0793784
NGNG> no such class or method: ""
> です。というか最初は""だったけどruby-listでWindowsでうごかねーよ
> ってなって"*"になったんです。
> http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/37546
スマソ。勘違いだった。
最初は引数なしだったんですね。
0794デフォルトの名無しさん
NGNG他のスクリプトから load 'foo.rb' されたのかを,
foo.rb の中で見分けるにはどうしたらいいんでしたっけ?
0795デフォルトの名無しさん
NGNG0796デフォルトの名無しさん
NGNG「値」で降順ソートして「キー」と「値」を出力するのに
簡単な方法ありませんか?
valuesで全値の配列を返してもらって
それをsortメソッドでソートして
次にkeysで全キーの配列を返してもらって
そのキーに対応する値を順に見ていって
ソートした値の配列の前から順に対応してるのが
見つかったら出力していくって方法しかないでしょうか
これは一つ一つのキーで毎回値の配列を
全部確認するので効率悪い気がします
値は重複しているものもあるので
index(val)は使えなさそうです
0797デフォルトの名無しさん
NGNG0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNG1.8ならこうもできる。
hash.sort_by{|k, v| v}.reverse_each{|k, v| puts "#{k} => #{v}"}
0800デフォルトの名無しさん
NGNGhash = {'a' => 3, 'b' => 1, 'c' => 2}
p hash.sort {|a,b| b[1] <=> a[1]}
----------------
[["a", 3], ["c", 2], ["b", 1]]
0801デフォルトの名無しさん
NGNG0802デフォルトの名無しさん
NGNG0803デフォルトの名無しさん
NGNGhttp://raa.ruby-lang.org/list.rhtml?name=pseudohash
これかな。使ったことがある。
でもvalueに重複があってしかもinvertした結果、
つまりkeyが重複するようなのにつかえんだろう。
0804デフォルトの名無しさん
NGNGう。意味がとおらねえ。
valueに重複がある場合invertして果たしてそれが使い物になるかどうかわからん、
といいたかった。
0805デフォルトの名無しさん
NGNGInteger から size_t に入れたいときはどうすればよろしいの?
NUM2ULONG でいい?
0806デフォルトの名無しさん
NGNGp hash[key]
end
0807デフォルトの名無しさん
NGNG値でソートしたいならすりゃいいじゃんってこった。
0808796
NGNGありがとうございます.
やりたかったことは>>799>>806です.
おかげでできました.
hashにmapなんてのがあるんですね
http://www.ruby-lang.org/ja/man-1.6/index.cgi?cmd=view;name=Hash;em=hash
ここにあるHashのメソッドしか知りませんでした.
0809デフォルトの名無しさん
NGNG> hashにmapなんてのがあるんですね
> ここにあるHashのメソッドしか知りませんでした.
漏れもよくはまるんだけど、Array や Hash は Enumerable を include してるので、
そっちのメソッドもチェックしる。
0810デフォルトの名無しさん
NGNGそうね。Hashに限らず何を継承(include含む)してるか見ないとね。
おれの場合マニュアル見るときFileを見るべきかIOを見るべきか
迷うことがよくあるw
0811デフォルトの名無しさん
NGNGオブジェクトが持ってるメソッド全部を
列挙できなかったっけ?
まあ列挙しただけじゃ使い方はわからないから
結局リファレンスを見ないとダメか。
0812デフォルトの名無しさん
NGNGできるしそういうブラウザもある。
でもやっぱり Hash や Array の場合、Enumerable のメソッドもマニュアルに
書いておいたほうが親切だと思うなあ。
0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNG0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNG0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNG0822デフォルトの名無しさん
NGNG電卓代わりならPerlとどっちがいいかな?
俺Perlつかってるけど
0823デフォルトの名無しさん
NGNGの方が強力だよ。
0824デフォルトの名無しさん
NGNG0825デフォルトの名無しさん
NGNG0827デフォルトの名無しさん
NGNG電卓というにはちとオーバースペックな気もする
俺はちょっとした計算は
emacsの*scratch*バッファでelisp使ってます。
0828デフォルトの名無しさん
NGNG0829デフォルトの名無しさん
NGNG0830デフォルトの名無しさん
NGNG0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNG0835デフォルトの名無しさん
NGNGつまようじ最強
0837デフォルトの名無しさん
NGNG0838デフォルトの名無しさん
NGNG0839デフォルトの名無しさん
NGNGelispって、(/ 3 2)が1になっちゃうんですけど、
その程度でいいってこと?
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNGrubyって 3/2 が1になっちゃうんですけど(ry
0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNG必要に応じて
require "mathn"
0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNG0849デフォルトの名無しさん
NGNGstarttime = Time.now.to_f
for i in 1..1000000;end
p [Time.now.to_f - starttime]
と、
def bench
starttime = Time.now.to_f
yield
p [Time.now.to_f - starttime]
end
bench {for i in 1..1000000;end}
では 1割くらい前者のほうが速いのですが、何故でしょう?
0850デフォルトの名無しさん
NGNG0851デフォルトの名無しさん
NGNGで、かなり差があるように見えるんだけど、何か勘違いしている?
0852849
NGNGfor i in 1..1000000;end
end
starttime = Time.now.to_f
forloop
p [Time.now.to_f - starttime]
だとさらに結果が違うよう。わけわからん。
0854デフォルトの名無しさん
NGNG後者はiがブロックローカル変数になるから。
0855デフォルトの名無しさん
NGNGだから、そんな面倒なことしてちゃ、今の時代生き残れないよってこと言いた
かったんよ。
rubyでcalc作ってる。自分用のoptionもたくさんあって、これ最強。
0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNGおまえは生き残れない
0858デフォルトの名無しさん
NGNGで、伊良部とrubyのつながりはどこにあるのだろうか?
わからない
0859デフォルトの名無しさん
NGNGではCに合わせてるとみてよろしいか
0861デフォルトの名無しさん
NGNGお金があるならmathematicaとかmatlabを使えばいいわけで。
分数計算で十分なら irb -m でもいいだろうが変数の入った式は扱えない。
0862デフォルトの名無しさん
NGNGXyzzyなら (/3 2) => 3/2 だよ。
有理数のまま計算していって、答えを出す手前で + 0.0 して実数に直すと
丸め誤差が少なくてイイ!
0863862
NGNG誤: Xyzzyなら (/3 2) => 3/2 だよ。
正: Xyzzyなら (/ 3 2) => 3/2 だよ。
0864デフォルトの名無しさん
NGNGなるほど。たしかにbench {...} の前に i=nil を入れると速度差は誤差の範囲になりました。
しかしブロックローカルの変数って何で遅いんだろ?
0865デフォルトの名無しさん
NGNGselect文で取得したレコードの、日本語の部分が化けてしまうのです。
原因・解決方法など教えてもらえませんか・・・?
0866865
NGNGテスト
\245\306\245\271\245\310
こんなかんじです。
0867デフォルトの名無しさん
NGNGpの多バイト文字の出力はそんな感じになる。
print/putsあたりを使えば?
0869デフォルトの名無しさん
NGNGあるいは$KCODEを指定しとく。
0870デフォルトの名無しさん
NGNGメソッドスコープのローカル変数は配列になってるのに対して、
ブロックローカルはIDとVALUEのlinked listになってるから、
それをたどる分だけ遅くなる。
0871デフォルトの名無しさん
NGNGやっぱり Ruby Hacking Guide を読まなきゃならんか。
0872デフォルトの名無しさん
NGNGあんたすげーよ。勉強になった。
0873デフォルトの名無しさん
NGNG使うことで簡単に定義できる。
では、クラスインスタンス変数へのaccessorはどうすればよい?
今は
class Foo
def self.v1=(v)
v1=v
end
def self.v1
@v1
end
end
とチマチマ定義している。
これをもっと簡単に定義したい。
0874デフォルトの名無しさん
NGNGclass Foo
class << self
attr_accessor :v1,:v2,:v3
end
end
0875デフォルトの名無しさん
NGNG次はRuby.netがVS.NETで使えるようにして欲しい。
0876デフォルトの名無しさん
NGNGごっつさんくす。
かなーりたすかった。
今度おごるよ。
0877デフォルトの名無しさん
NGNGこの書き方だとRubyスクリプトとしてはまったく問題ないけど、
RDocがうまく解釈してくれないね。惜しい。
(RDocのバージョン:RDoc Vbeta-2: 2002/07/22 21:07:31 (1.67))
0878874
NGNGclass Foo
class << self
# v1 - Foo's instance variable
attr_accessor :v1
end
# v1 - Foo's attribute
attr_accessor :v1
end
みたくコメントを工夫するしかなさそうだね。
0879デフォルトの名無しさん
NGNGあれー、それでうまくいった?
試したけど、どちらもインスタンス変数へのアクセッサと
してしか認識されなかったよ。
RDocのバージョンが古いのかな?
0880デフォルトの名無しさん
NGNG引数が Struct 使う場合にどうすればいいのかよくわからないんです。
0881デフォルトの名無しさん
NGNG配列をpackした文字列を渡す。
0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNGRite では直すのかな?
0884デフォルトの名無しさん
NGNGindex.rhtml:1:missing end delimiter (ERuby::CompileError)
こういうエラーがでてしまう。
何が悪いのだろうと調べて、キーワという文字列を抜くと動く。
日本語を含んだ文を書き出すには、なにか必要なのでしょうか。
0885デフォルトの名無しさん
NGNGrequire "kconv"
s = "ーワ".toeuc
d = ""
s.each_byte{|c| d << (c&0x7F)}
$KCODE = "n"
p s # "\241\274\245\357"
p d # "!<%o"
$KCODE を変えてみれば動くかも
0886デフォルトの名無しさん
NGNG引数の数だから、1 になるんじゃないかと思うんだけど、
なんで -1 になるのか誰か教えてー。
0887デフォルトの名無しさん
NGNGで、ブロック引数は多重代入と同じセマンティクスを持つので、
a = 1, 2, 3 # => a == [1,2,3]
と任意の個数の引数を取れるということ。
だったんだが、1.8.0 preview3ではそれは1になる模様。
0888デフォルトの名無しさん
NGNGRubyが採用された市販アプリって有るのか?
まぁ、PSPは米国製だからってのもあるんだろうが。
つか、Rubyを採用しようにも、簡単に組み込めるようなライブラリが
無いよな? Pythonにはそれが有るらしいが(伝聞)。
そのへんどうにゃのよ?
0889デフォルトの名無しさん
NGNG最近の俺的には、ネイティブスレッドに対応してないのでRubyは選べないけど。
0890886
NGNGわかりやすい説明どうもありがとう。
> で、ブロック引数は多重代入と同じセマンティクスを持つので、
はじめて知りますた。。。
なるほど納得です。
> だったんだが、1.8.0 preview3ではそれは1になる模様。
ふむ!こっちのほうが俺にはわかりやすいです。
ためになる情報ありがとうございました。
0891デフォルトの名無しさん
NGNG> だったんだが、1.8.0 preview3ではそれは1になる模様。
lambda{|x|}[] とか def f() yield end ; f{|x|} が出来なくなるということ?
0892デフォルトの名無しさん
NGNG> lambda{|x|}[] とか def f() yield end ; f{|x|} が出来なくなるということ?
できるけど、警告が出る。
$ ruby -ve 'lambda{|x|}[]'
ruby 1.8.0 (2003-06-21) [i686-linux]
-e:1: warning: multiple values for a block parameter (0 for 1)
任意個の引数を取るときには|*x|、一個だけなら|x,|と書けば、1.6以前でも問題ない。
ちょうど同じ話題が出てる
ttp://jarp.jin.gr.jp/diary/200306c.html#200306211
0893デフォルトの名無しさん
NGNGBecky!用のRuby pluginってのはある。
あとtalkではたびたびアプリケーションに組込むって話がでてるけど、
具体的な製品名は分からない。
0894デフォルトの名無しさん
NGNGできれば、Win版とUNIX版両方で。
0895デフォルトの名無しさん
NGNGttp://metaeditor.sourceforge.net/embed/
0896デフォルトの名無しさん
NGNGああ、それなら知ってるけど、どうしていまさら後方互換性をなくす方向に
動き出したんだろ。2.0への布石?
0897デフォルトの名無しさん
NGNG> 動き出したんだろ。2.0への布石?
そんなとこだと思うけど。
arityに関しては、たしかに分かりにくいという声が以前からあったし。
0898デフォルトの名無しさん
NGNG一時期の出版ラッシュのついでに出しておいてくれれば良かったのに。
0899デフォルトの名無しさん
NGNGCマガあたりに記事がなかったっけ?
Web上でも読めた気がする。
0900デフォルトの名無しさん
NGNG本じゃないが、erubyなんかはいい例にならないかな。
0901デフォルトの名無しさん
NGNG0902784
NGNG>ruby -ve "File.open '-'"
ruby 1.6.8 (2002-12-24) [i386-mingw32]
-e:1:in `open': No such file or directory - "-" (Errno::ENOENT)
from -e:1
0903デフォルトの名無しさん
NGNG0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNG具体的に質問します。
コマンドラインでファイル名が指定されたらそれを、
指定されなければ標準入力を開くって処理をしたいんです。
Perl だと
push(@ARGV, "-") if no @ARGV
foreach (my $file @ARGV) {
open(F, $file);
#ほげほげ
}
とかできて楽なんですけど、Rubyだとどう書くんですか。
ファイル単位で(ファイル名を意識して)処理したいんで、ARGFは却下です。
0906デフォルトの名無しさん
NGNGなんかいろいろ間違ってる・・・Perl久しぶりとはいえ・・・欝だ。
0907デフォルトの名無しさん
NGNGf = (file == '-' ? STDIN : open(file))
begin
# ほげほげ
ensure
f.close unless f == STDIN
end
end
0908デフォルトの名無しさん
NGNGif file == '-'
yield STDIN
else
open(file, &block)
end
end
ARGV.each do |file|
reading(file) do |f|
# ほげほげ
end
end
0909デフォルトの名無しさん
NGNG>ファイル単位で(ファイル名を意識して)処理
ARGF.file や ARGF.filename 使えば。
0910デフォルトの名無しさん
NGNGtar だって cat だって UnixTool はみんな - が標準入力じゃないか。
なんで STDIN を特別扱いしなきゃいけないだ。
めんどくさいだけじゃないか。
#ほげほげ
そうか、いろんな - がありえるんだ
- が標準入力じゃなくてもいいんだ。
Perl がやりすぎなんだ・・・
ボクは Ruby が好きなんだ!
ボクはここいいたい!!
ボクはここにいてもいいんだ!!!
ところで amrita って便利ですね。
0911デフォルトの名無しさん
NGNG> ARGF.file や ARGF.filename 使えば。
うーん。そうなんですけど、なんかうまくいかなくて。
やりたいのはファイル名とファイルの全内容を
もとに処理をしたいのです。
def hogehego(filename, content)
# ほげほげ
end
↑こんな感じ。で・・・
while not ARGF.eof?
puts ARGF.filename
puts ARGF.file.readlines.size
end
こうすると最初のファイルしか処理されなくて、
じゃあ while not ARGV.empty? ってすると
標準入力から読み込んでしまってわけわからん。
ARGFの挙動が理解できないんですけど。
0912784
NGNGこうすれば全ファイル処理された。
while not ARGF.eof?
puts ARGF.filename
puts ARGF.file.readlines
ARGF.skip
end
でもファイルを指定しなかった場合の挙動がいや・・・
というか誰か↓を解説してくれ。まじでわかんねぇ。
>ruby -e "puts ARGF.filename" hoge.rb
-
>ruby -e "ARGF.eof?; puts ARGF.filename" hoge.rb
hoge.rb
0913デフォルトの名無しさん
NGNG$ ruby -e '%w(foo bar).each{|f| File.open(f,"w") << "1\n1\n"}'
$ ruby -ne 'BEGIN{p ARGF.filename}; p ARGF.filename' foo bar
"-"
"foo"
"foo"
"bar"
"bar"
$ awk 'BEGIN{print FILENAME}; {print FILENAME}' foo bar
foo
foo
bar
bar
$
0914デフォルトの名無しさん
NGNGARGVで指定されたファイルを触るのをぎりぎりまで先送りにしたいからでは?
ファイルを開かないことには eof? の真偽を知ることが出来ないから
eof? のあとでは指定された名前のファイルの存在も分かる。
しかしfilenameを知るために(詳しくいえばfilenameで返される名前のファイルの
存在を保証するためだけに)ファイルを開くのは許せないとか。
存在を保証するためなら File::readable?(ARGV.first) という手もあるが、
readable? では実際に読みにいったときにファイルがまだあることを保証できない。
もっともこれだけでは最初にSTDINをさしている理由は説明できないがね。
0915R
NGNGいま、自分で考えているオンラインゲームがありまして
それの実現に、Rubyを使ったサーバプログラムを考えているので
第1歩として、多人数向けのチャットサーバを作ろうと思い作り始めたのですが
多人数向けのエコーサーバは「Rubyライブラリ編」を参考に(ほとんどそのまま)で
つくり、うまくいったのですが、ある端末から他の端末へ文字を送る方法で
悩んでいます。
配列を使い、TCPServerのインスタンスを配列の中に入れようと考えたのですが
どうも、うまくいきません。
先輩方、どうかアドバイスをお願いいたします。
0916デフォルトの名無しさん
NGNG「どこまでやって、どこでつまづいたか」を具体的に書いた方が
回答を得やすいと思われ。
0917R
NGNGはい、了解しました。
エコーサーバを改造してこんな風に書いてみたんです。
require "socket"
gs = TCPServer.open(8888)
online = []
while TRUE
ns = gs.accept
print(ns, " is accepted\n")
Thread.start {
s = ns
online.push(ns)
while str = s.gets
x = 1
while x <= online.size do
online[x].write(str)
x+=1
end
end
print(s, " is gone\n")
s.close
}
end
うまくいけば、接続している人全部にメッセージを送ることが
できるはずなんですが、誰にもメッセージが帰ってこないのです。
自分なりに調べたところでは、配列の中身がいつの間にか
無くなっているっぽいのです。
0918デフォルトの名無しさん
NGNGとりあえず、while str = s.gets ... end の中がよくわかんないんだけど、
こんなんでどう?
online.each do |c|
c.write(str)
end
あとは、s.close のあとで online.delete(s) とか。
0919R
NGNGうまくいきました、ありがとうございます。
while str = s.gets ... end の中が間違っていたってことなんですよね
どこが良くなかったのだろ?
でも、online.each使ったほうが簡潔で解りやすいですね。
またお世話になるかもしれません。そのときは皆様よろしくお願いいたします。
0920デフォルトの名無しさん
NGNGクライアントが一つだけ接続に来たとき、そのソケットは online[0] のはずだが、
x = 1 から始まるので online[1] を参照にいき、online[1] == nil であるから、
nil.write(str) が実行される。この時点でそのスレッドは死ぬが、
デフォルトでは Thread 内で例外が起こっても黙っているので分かりにくい。
ruby -d server.rb のように -d つきで実行すると上の状況が分かるだろう。
0921デフォルトの名無しさん
NGNG> Thread.start {
> s = ns
> online.push(ns)
もし online.push(ns) する前にメインスレッドに切り替わって
ns = gs.accept が成立すると、ns は予期しないものになっている。
よってこうした方が良い
Thread.start(ns) { |s|
online.push(s)
あるいはロジックは少し変わるがこれでも良い
online.push(ns)
Thread.start(ns) { |s|
0922R
NGNG配列は、0からはじまるのですか。
だからnilを参照してたのですね。
自分の間違えが、わかりすっきりしました。
>921
了解しました。
仰るとおりに、タイミングしだいではnsは
不定になります。
下のほうが、より確実っぽい気がするので
これでいってみたいと思います。
みなさま、ありがとうございました
0923デフォルトの名無しさん
NGNGaa = 111 #0
return binding
end
def f1(bb, a_bind) #1
cc = 222 #2
eval "p aa, bb, cc", a_bind #3
end
f1(333, f0)
上のスクリプトで、#3 の eval のとき、aa(#0), bb(#1), cc(#2)
の指すオブジェクトを eval に評価させる式の中でいっしょに使い
たいのですが、よい方法はあるでしょうか? この場合の結果は
111
333
222
が欲しいということになります。
質問の意図がわかりにくいかと思いますが、誰か教えてくれるとうれしい。
0924デフォルトの名無しさん
NGNGdef f0
aa = 111 #0
return binding
end
def f1(bb, a_bind) #1
aa = eval("aa", a_bind)
cc = 222 #2
eval "p aa, bb, cc" #, a_bind #3
end
f1(333, f0)
0925923
NGNG解答ありがとう。でもそれではだめなんです。923で説明が足りなくてスマソ。
f1の定義の時点で a_bind のコンテキストに存在する変数aaについては知らんのです。
#3 のところでやりたいことは、a_bindにメソッドf1の定義で出てきたローカル変数を
追加したコンテキストで #3 の行の評価をする、ということです。以下のスクリプト
の方が923のより多少は意図が伝わりやすいかも…
def f0
aa = 111 #0
return binding
end
def f1(bb, expr, a_bind) #1
cc = 222 #2
eval expr, a_bind #3
end
f1(333, "p aa, bb, cc", f0) #4
0926923
NGNGいませんでした、すまそ。以下のスクリプトみたいな方法で、とり
あえず問題は解決できそうです。
class Data
attr_accessor :aa
end
def hoge(bb, expr, bind)
data = eval("self", bind)
cc = 111
data.instance_eval(expr)
end
d = Data.new
d.aa = 222
bind = d.instance_eval { binding }
hoge(333, "p aa, bb, cc", bind)
0927デフォルトの名無しさん
NGNGdef empty_binding
binding
end
def marged_binding(*bindings)
dst = empty_binding
bindings.each do |src|
eval("local_variables",src).each do |var|
id = eval(var, src).id
eval("#{var} = ObjectSpace._id2ref(#{id})", dst)
end
end
dst
end
def f0
aa = 111 #0
return binding
end
def f1(bb, expr, a_bind) #1
cc = 222 #2
eval expr, marged_binding(binding, a_bind)
end
f1(333, "p aa, bb, cc", f0) #4
0929デフォルトの名無しさん
NGNGDataは標準の組込みクラスで、new(1.6)やallocate(1.8)は定義されてない。
0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNGまぁそうだろうな。
ともあれDataのインスタンスは作れないし、拡張ライブラリ使うならDataはい
じらんほうが身のため。
0932デフォルトの名無しさん
NGNG名前が一般的過ぎてよくないよね。
0933デフォルトの名無しさん
NGNGつか、漏れは obj.id とか obj.hash とかでハマったことあり・・・
0934デフォルトの名無しさん
NGNGidははまったなあ。hashは知ってたんで、はまったことないけど。
0935デフォルトの名無しさん
NGNG__id__かobject_idならかぶらんだろ。
0936デフォルトの名無しさん
NGNG0937デフォルトの名無しさん
NGNG1.
while $in = STDIN.gets
$in.chomp!
print $in + "\n"
end
2.
while $in = "11"
print $in + "\n"
end
なぜ1のプログラムは動いて、2のプログラムは
動かないのでしょうか?
僕が考えると、1が動く方が不思議なんですが。
というのも、while文というのがwhileのうしろが
trueの時に処理を行なっているのなら、
上のプログラムのように、whileの後で代入をおこなっている(つまり、なにも値を返していない)
ような場合は、ともにエラーがでると思います。
どう考えればいいのでしょうか?
0938デフォルトの名無しさん
NGNGとは言え、Dataという名前のクラスは作りそうで作らない気がする。
0939デフォルトの名無しさん
NGNG0940デフォルトの名無しさん
NGNG0941937
NGNGプログラミング自体、畑違いなので
聞ける人がまわりにいません。
教えてください。お願いします。
0942デフォルトの名無しさん
NGNG2のほうも動くだろ。
0943デフォルトの名無しさん
NGNG0944デフォルトの名無しさん
NGNG次の二点を確認して、放課後までに職員室に来なさい。
・代入は値を返さない?
・偽はfalseとnil。では真は?
0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNGC言語の質問?
0947デフォルトの名無しさん
NGNGrubyの質問なんですが・・・?
0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNGhoge1.rb:
class Hoge
def hoge
"ほげ1"
end
end
hoge2.rb:
class Hoge
def hoge
"ほげ2"
end
end
があるとき、自前でファイルを開いて
require 'hoge1'
module A; end
File.open("./hoge2.rb"){|f|
A.module_eval f.read
}
p Hoge.new.hoge #=>"ほげ1"
p A::Hoge.new.hoge #=>"ほげ2"
のようにやっているのです、もっとシンプルにTop Levelではなくユーザの導入した名前空間への
requireやloadのようなことを行う方法はありますか?
0951デフォルトの名無しさん
NGNGもしも「C の rint と log に相当するのはRubyでは何?」ってことなら、
log(x) は Math::log(x) で rint(x) は x.round
ちなみに rint は C の標準関数じゃないよ。
0952デフォルトの名無しさん
NGNG句読点の使い方
0953デフォルトの名無しさん
NGNG今んとこ、ない。loadの第二引数にModuleを使えるように、という話はtalkで
ちょっとだけ出てるようだ。
0954デフォルトの名無しさん
NGNG作れないわけじゃないよ。
消しちゃうなり、Object以外を継承させれば別物になる。
class Object;remove_const(:Data);end
class Data < NilClass;end
0955945
NGNG> log(x) は Math::log(x) で rint(x) は x.round
ご教示ありがとうございます。
0956デフォルトの名無しさん
NGNG1.CのrintとlogにあたるものはRubyではどんな関数なんでしょう?
2.CではRubyのrintとlogにあたるものはどんな関数なんでしょう?
1だろうか、と思いきや2だったか。
0957デフォルトの名無しさん
NGNG0958デフォルトの名無しさん
NGNG0959デフォルトの名無しさん
NGNGrequire "tk"とすると見つからないようです。
/usr/lib/ruby/1.6/tk.rb:7:in `require': No such file to load -- tcltklib (LoadError)
from /usr/lib/ruby/1.6/tk.rb:7
from ./btn:3:in `require'
from ./btn:3
0960945
NGNG(snip)
準拠
rint() 関数は BSD 4.3 に準拠する。その他の関数は C99 から導入された。
(snip)
失礼しました。
0961デフォルトの名無しさん
NGNG(snip)
HISTORY
A rint() function appeared in Version 6 AT&T UNIX.
(snip)
失礼こきます
0962デフォルトの名無しさん
NGNG[A,B0,B1,C0,C1,D]を
foo.a #->A
foo.b[0] #->B0
foo.b[1] #->B1
foo.c[0] #->C0
・
・
と代入する方法を教えてください
0963962
NGNG言葉足らずなところもあると思いますが、よろしくお願いします。
0964デフォルトの名無しさん
NGNGfoo.a = A
foo.b[0] = B0
foo.b[1] = B1
foo.c[0] = C0
・
・
0965デフォルトの名無しさん
NGNG0966デフォルトの名無しさん
NGNGハイハイ、とりあえず、rintはPOSIXやC99にはない環境依存な関数だってことはわかったからね。
0967デフォルトの名無しさん
NGNG最近さびしいので。
0968デフォルトの名無しさん
NGNG書いてくれ。
0969967
NGNG0970デフォルトの名無しさん
NGNG0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNG0975デフォルトの名無しさん
NGNGモジュールを名前空間独立に書くっていつでもできるの?
例えば、以下の状況で A#bar() がこの A::foo() を
呼ぶことを保証できるんだろうか?
module A
def A::foo() end
def bar() A::foo() end
end
0976デフォルトの名無しさん
NGNG> module A
> def A::foo() end
> def bar() A::foo() end
> end
この後でA.fooを再定義されたら、当然「この A::foo()」が呼ばれることはないけど、
クラス/モジュールやメソッドの定義時の名前空間のネストは実行時に再現される。
0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNGhttp://ttsky.net/ruby/ruby-dl.html
>>980
次スレよろ
0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNG0981980
NGNGRubyの実装に疑問あり!
http://pc2.2ch.net/test/read.cgi/tech/1004873294/
0982980
NGNG【Ruby】RubyでCGI
http://pc2.2ch.net/test/read.cgi/php/988948655/
0983デフォルトの名無しさん
NGNGRuby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/index.html
0984デフォルトの名無しさん
NGNGhttp://www.rubyxml.com/
0985デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/unix/1045705000/
【UNIX板】goRua(Ruby/Gtkによる2chブラウザ)ってどうよ。
http://pc.2ch.net/test/read.cgi/unix/1008120213/
【プログラム板】Ruby について Part 3
http://pc2.2ch.net/test/read.cgi/tech/1042004759/
【プログラム板】Rubyの実装に疑問あり!
http://pc2.2ch.net/test/read.cgi/tech/1004873294/
【WebProg板】【Ruby】RubyでCGI
http://pc2.2ch.net/test/read.cgi/php/988948655/
【WebProg板】ゲームを作ろう!【PHP】【Perl】【Ruby】【ASP】
http://pc2.2ch.net/test/read.cgi/php/1030267927/
【WebProg板】/*Perl.Ruby.php以外でCGI*/
http://pc2.2ch.net/test/read.cgi/php/1004107967/
0986980
NGNGオブジェクト指向スクリプト言語Rubyについて扱うスレッドです。
Ruby Home Page
http://www.ruby-lang.org/ja/
= 前スレ
* Ruby について Part 3
http://pc2.2ch.net/test/read.cgi/tech/1042004759/
= 過去スレ
* Rubyについて Part 2
http://pc3.2ch.net/tech/kako/1028/10289/1028906179.html
* Rubyについて
http://pc3.2ch.net/tech/kako/1012/10120/1012096319.html
0987980
NGNG== [UNIX板]
* rubyを語るスレッド 3
http://pc.2ch.net/test/read.cgi/unix/1045705000/
* goRua(Ruby/Gtkによる2chブラウザ)ってどうよ。
http://pc.2ch.net/test/read.cgi/unix/1008120213/
== [プログラム技術板]
* Rubyの実装に疑問あり!
http://pc2.2ch.net/test/read.cgi/tech/1004873294/
== [WebProg板]
* 【Ruby】RubyでCGI
http://pc2.2ch.net/test/read.cgi/php/988948655/
* ゲームを作ろう!【PHP】【Perl】【Ruby】【ASP】
http://pc2.2ch.net/test/read.cgi/php/1030267927/
= その他リンク
* Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/
* <rubyXML/>
http://www.rubyxml.com/
0988980
NGNG0989デフォルトの名無しさん
NGNGそれよりこっちのがじゅーよー。
Matzにっき
http://www.rubyist.net/~matz/
0990980
NGNG0991980
NGNGRuby について Part 4
http://pc2.2ch.net/test/read.cgi/tech/1056944114/
0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNGC99 は BSD 4.3 より新しいんだから >>960 からは「rint がC99 にない」と
いう結論は出ないと思うんだが。
というかrintはC99にあるよ。(7.12.9.4)
0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNGじゃあ埋めるわ
0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。