トップページ⇒tech
1001コメント292KB

Ruby について Part 3

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby 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デフォルトの名無しさんNGNG
<関連スレ>

rubyを語るスレッド 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デフォルトの名無しさんNGNG
3げっと
0004デフォルトの名無しさんNGNG
ttp://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=Ruby+in+2002
どうよ?
0005IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0006デフォルトの名無しさんNGNG
age
0007デフォルトの名無しさんNGNG
>>315答えは出てるけど。
0008デフォルトの名無しさんNGNG
>467
すでに・・・すでに!?
0009IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0010デフォルトの名無しさんNGNG
名スレの予感
0011デフォルトの名無しさんNGNG
漏れ達がひろゆきを愛したように、ひろゆきも漏れ達を愛してほしい!
0012デフォルトの名無しさんNGNG
IP表示すればいいじゃん。
田舎者の煽りは酷い。
0013デフォルトの名無しさんNGNG
>>138
メガビだからって安心なわけじゃないような。
0014デフォルトの名無しさんNGNG
なんか誤爆が激しいが、
2ch壊れたのか?
0015デフォルトの名無しさんNGNG
>>139
で結局IP記録に賛成なの?
0016デフォルトの名無しさんNGNG
前スレの RDT だけど、JRuby のパーサを使おうという話は出てないのかな。
0017デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0018デフォルトの名無しさんNGNG
去年は2回しか新バージョンがリリースされなかったんだが、
ちょっと淋しいねえ。
いいかげん 1.8 も出してもらいたいし。
0019デフォルトの名無しさんNGNG
被ってる上にかなり出遅れてるし。
0020デフォルトの名無しさんNGNG
>>567
そういう状況なってみないと分からんよ。
0021デフォルトの名無しさんNGNG
>>16
JRuby触ってみたけど、結構いい感じ。
まだまだ細かいところで未完成の部分はあるけどな。
でも、起動がスゲー重いよ。
Javaの遅さにRubyの遅さがプラスされて…。
$ jruby -e "puts 'hello, world'"
だけで、数秒かかるのはJRubyの所為というよりやっぱJavaの所為かな…。
でも、何となく期待している。
Jythonに負けるな!

まあ、本家Rubyにほぼ完全対応って感じでないと、
パーサとして使うのは難しいかも知れないね。
0022デフォルトの名無しさんNGNG
>>21
irb・rtags・RDocのパーサー(と言えるか怪しいけど)は
Rubyの文法に完全対応していないけど、そこそこ使える。
JRubyは完全対応しないといけないだろうけど、
結局、適材適所じゃないかな。

ちなみに、Rubyのパーサーに本当に完全対応させるのはかなり面倒だと思う。
Rubyではローカル変数等に日本語が使えるので、そこまでやりはじめると…。
0023デフォルトの名無しさんNGNG
某○○は相手が事実を認識しえたと判った段階でレス汁w
0024デフォルトの名無しさんNGNG
某○○は相手が事実を認識しえたと判った段階でレス汁w
0025デフォルトの名無しさんNGNG
>>65
むしろ懐かしさすら覚えるよ。
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デフォルトの名無しさんNGNG
うわ、まじだよ。
0029デフォルトの名無しさんNGNG
こんなスタイルになるのかな?

誰かが他の掲示板で密告→第三者が2chでスレ建て→祭り
0030デフォルトの名無しさんNGNG
>>22
ruby本体にparser API みたいなのが欲しいねえ
0031デフォルトの名無しさんNGNG
なるほど
0032デフォルトの名無しさんNGNG
ひろゆき
仕事紹介してくれ
0033デフォルトの名無しさんNGNG
IP取ろうが取るまいが
捕まるときは捕まるし
別に今までと大して変わらんと思われ。
ただ、今はちと過渡期なので
まわりが様子見な感じだけど
すぐに元に戻ると思われる
0034デフォルトの名無しさんNGNG
ぼすけて
0035デフォルトの名無しさんNGNG
切っ掛けは匿名だったかもしれないけど、今ではそんなに重要性ないでしょう。
アングラな内容も1ジャンルって感じだし。
昔はカテごとに雑談できるのも(目に付くところでは)珍しかったし
いち早くUG系から離れたのもあるんでない?
0036デフォルトの名無しさんNGNG
我ながら好き勝手にほざいてしまいますた・・(汗
もし実現しても回線細そうですしね。。。

0037デフォルトの名無しさんNGNG
新しいwww.ruby-lang.org、python.jpの後追いみたいで何だか...。
0038デフォルトの名無しさんNGNG
>>30
まつもと氏はRiteでは用意するとか言っていた気がする。
この辺のライブラリの整備のされ方はpythonと大きく違うよね。

今はFreeRIDEのようにripperを使うのが一番良い気がする。
0039デフォルトの名無しさんNGNG
氏ね
0040デフォルトの名無しさんNGNG
   /⌒∞、 ずさー♥
  ./ ゚∀~・:ヽ、 
  ι、,,,,、,,,,,,、,,,,ゝ
0041デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0042デフォルトの名無しさんNGNG
快速たん(・∀・)イイ!!
0043デフォルトの名無しさんNGNG
さん
10桁トリップの時に、トオルさんとマァヴさんが、話してましたわね、
0044デフォルトの名無しさんNGNG
スレ違いのレスはよくないな。
ここは快速スレですよ
0045デフォルトの名無しさんNGNG
Vector 見てたら、
C/C++統合開発環境 WideStudio が
「Ruby 言語(v3.20から)」も使えるようになったようですな。

誰か使ってみた人いる?
ちょっと試したけど、Rubyのサンプルが見あたらないので訳わからん。
0046デフォルトの名無しさんNGNG
何で前スレスレストかかってんの?
0047デフォルトの名無しさんNGNG
sports3鯖死んでる??
国内サッカー板が見れない…
0048デフォルトの名無しさんNGNG
>>45
前に見たときは Linux 版しか対応してなかったけど、
Windows 版も出てるようだから試してみるね。
0049デフォルトの名無しさんNGNG
>>45
おなじく ruby によるサンプルをはげしく希望
0050デフォルトの名無しさんNGNG
お前のは議論じゃないよw
「これ言っていいですか?」 「これ言うとヤバイですか?」 って他人に聞いてるだけw

寝るのがイヤなら、教えて厨は初心者板に逝ってねw
0051デフォルトの名無しさんNGNG
もしこれが実行されたらにちゃんは閉鎖だな、きっと
0052デフォルトの名無しさんNGNG
wって2ちゃん発祥なの?
ださくないか?
(笑)もザサイから、(^^)がナウイよ。
0053デフォルトの名無しさんNGNG
>>52
なわけねーだろ。
ネット初心者がこーゆーとこに来るのは、どうかと思うぞ。
0054デフォルトの名無しさんNGNG
吉と出るか凶と出るか
0055デフォルトの名無しさんNGNG
レスありがとう。
俺素人だからよくわからないが
アク禁にしないのは何か理由るのかな・・?
0056名無しrubyistNGNG
荒らしと見分けるために、名前欄に何か入れるようにしない?

>>45
ガイシュツだったような気がする。

つか、WideStudioって結構使われているの?
使いやすい?
005745NGNG
今検索したら、前スレ666で既出でしたね。
すみませぬ。

#これ荒らしなの? 2chがイカレタのかと思ってた。
0058case 名無し:NGNG
http://pc3.2ch.net/test/read.cgi/tech/1040297337/110
> 荒らしというより、スクリプトのバグでは?IP実験を始めた途端に他のスレの
> 書き込みがPC板全般に流れてきてるみたい。
という噂が。
0059名無しrubyistNGNG
>>57
うん、荒らしらしい。
詳しくは自治スレ見るとわかるよ。

プログラム板自治スレッド
http://pc3.2ch.net/test/read.cgi/tech/1029122103/
0060デフォルトの名無しさんNGNG
昨日、ruby-talkに登録してみたら、本日分だけで70通以上来てびびった。
これと比較するとruby-listはおとなしめだな。

興味を持った話題。
Win32Serial Extension Library for Ruby
WindowsのシリアルポートをRubyで使うライブラリ。
ttp://grub.ath.cx/win32serial/

Rubyで制御とかできるのかな。
0061デフォルトの名無しさんNGNG
だれかに突っ込むの手伝ってくだいよぉ
0062デフォルトの名無しさんNGNG

実質的には上告はもう無理らしい。

うれしいなぁ。


0063デフォルトの名無しさんNGNG
>>56
徹底できるわけがないから無駄なことやめて unix 板へでも逝け。
ここはもう人いないよ。
0064名無しrubyistNGNG
>>63
それもそうだな。
俺、窓使いだけどおじゃまさせてもらいます。
0065デフォルトの名無しさんNGNG
あーっはっは!
久しぶりに笑ったよ!
0066デフォルトの名無しさんNGNG
公開トリップ?そんな魅力も何にもないトリップなんて
わざわざ使う人いないと思うけど…
どこで公開されてるの?そんな糞トリップ公開されてもねぇ
同じ人が串でも使っているんじゃ?
0067デフォルトの名無しさんNGNG
お疲れさまでした〜
0068山崎渉NGNG
(^^)
0069irbについてNGNG
irbを電卓代わりに使いたいのですが
自前のモジュール(関数郡)を組み込んだり
一度プロセスを終了しても変数の値を保存しておいたりすることはできますか?
0070デフォルトの名無しさんNGNG
1. 普通に require すればいい
2. Marshal や PStore
0071山崎渉NGNG
(^^)
0072irbについて NGNG
>2. Marshal や PStore
使った変数すべてを自動的に保存復旧したいのです。
a=3
exit
再起動
p a
3
みたいに。
0073デフォルトの名無しさんNGNG
>>72
irb で打ち込んだのを全て保存しておいて、
起動時に読ませるようにすれば?
0074デフォルトの名無しさんNGNG
>>72
irb を終了させなければいいのでは?
0075デフォルトの名無しさんNGNG
>>72
local_variables()を使えばいけそう。
と思ったが、ローカル変数だと、ちいと辛いな・・
bindingでうまくいかないかな?

ちと、やってみます。
007675NGNG
require 'pstore'

class 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

-----
つづく
007775NGNG
つづき
-----

  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
007875NGNG
requireして、
セーブ
VarsStore.new("hoge").save(binding)
ロード
VarsStore.new("hoge").load(binding)

とする、今のところBindingを指定しないとだめ。
ローカル変数にダンプできないオブジェがあるとエラーを吐く。
保存できるクラスは限定させた方がいいかな?(NumericかStringのみとか、、、)
あとは、適当に改造してみてね。>>72
0079デフォルトの名無しさんNGNG
Win32APIを使う必要が出てきたのですが、
Win32API.new に関するリファレンスは
どっかに転がってないでしょうか?
0080デフォルトの名無しさんNGNG
>>79
ほれ。
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Win32API
0081デフォルトの名無しさんNGNG
http://www.ruby-lang.org/~rubikitch/refm/
ここのページのファイルって拡張子が.gzだけど、どうして?
(ダウソして中身みてみたらアーカイブになってなかったけど)
0082デフォルトの名無しさんNGNG
>>81
君がダウンロード時に自動的にgzip展開するブラウザを使ってるんだろう。
0083デフォルトの名無しさんNGNG
>>81
http://www.ruby-lang.org/ の設定がヘボいから。
0084デフォルトの名無しさんNGNG
RubyUnit の Ruby 標準添付バージョン Test::Unit では、
サンプルコードとして以下のようなものが添付されてます。

-- tc_adder.rb

class class TC_Adder < Test::Unit::TestCase
..

--

ファイル名、クラス名なんですけども、もはや
ファイル名の頭に「tc_」、クラス名の頭に「TC_」っていうのは、
業界標準なんでしょうか。
0085デフォルトの名無しさんNGNG
ruby-modeでC-jをenterでできるようにしたいのですが、.emacsにどのような設定をすれば
よいのでしょうか。
0086デフォルトの名無しさんNGNG
>>84
TestCaseの略では。
0087デフォルトの名無しさんNGNG
C-m
0088デフォルトの名無しさんNGNG
>>84
漏れは RubyUnit(runit) の表記の方が好き。
Adder -> AdderTest のように suffix をつける。
0089デフォルトの名無しさんNGNG
>>84
Adder -> TestAdderって付ける漏れは標準でないのか…。
そして、ファイル名はtestadder.rbだし。

ファイル名とクラス名を同じにするのは普通なんじゃないの?
それとも漏れがJavaなんかやっている所為でそれになれているから?
0090デフォルトの名無しさんNGNG
ちゅうか、RubyUnit じゃなくて Test::Unit をRuby の標準添付ライブラリに採用するっていうのが
どうにも違和感がある。RubyUnit からの移行は、Ruby の動的な言語仕様のおかげで、移行のための
コードもそんなに書かなくて済むけど(今後、XML::Dom だの出てくるだろう)ちょっとな。

(メソッド名でも assert_equals, assert_equal という違いがある なんで統一しない? < Test::Unit)

今更、Rubyにライブラリのネーミング規則云々っていうのは似合わないような気がしてる。
0091デフォルトの名無しさんNGNG
eaocf-18p157.ppp15.odn.ne.jp
0092デフォルトの名無しさんNGNG
Rubyって最近、すごい分野の狭い話題で1冊の本になってるのが多いですよね。
Ruby+GtkとかeRubyとかRuby+XMLとか…
あんなんでよく本が1冊も書けるなあ、っていうか、買う人いるの?
他の言語の開発者だったら、あんなの1冊ずつ買ってたら絶対置き場所なくなる。
0093デフォルトの名無しさんNGNG
>>92
そっか? Amazonで、Javaあたりで検索すれば、Swingで、Appletで、DBで、XMLで、
Webサービスで、……という具合なんだが。アプリケーションドメイン毎に本が出る
のは当然じゃないだろか?
0094デフォルトの名無しさんNGNG
>>92
入門書だけで10冊や20冊ぐらいある言語を見ると、
そっちの方がある意味おかしくないかい?

まあ、256本のやつは確かに異常だけどさ…。
でも、極道編は俺にとって面白かったぞ。
UnitTestの入門書としては。
0095デフォルトの名無しさんNGNG
www.ruby-lang.orgもやっと最近流行のWeblog風になりましたけど、なんだかまだ
寂しげですね。素直にZope使ってはいかがですか?
0096デフォルトの名無しさんNGNG
確かに他の言語と比べたらアート的な部分に関して(RWiki といい)今ひとつモダンな感じがしないね。
0097デフォルトの名無しさんNGNG
そーだね。Ruby界隈はカタい雰囲気ある。
HTMLはStrictじゃないと許さん、みたいな。
0098デフォルトの名無しさんNGNG
オンラインでリファレンスを見てると、たまにやたらと重いときがあるんで、
ローカルで見るようにしよと思ってドキュメントをダウソして解凍してみたら
形式がRDでやんの。
HTMLの形式でも配ってくれればいいのに。

HTMLのやつもあったけど、リンク切れがあちこちにあるし、
ひとつのファイルに連結されてるからIEじゃ重くて使いにくいし。
0099Rubist@田中ノーベル賞NGNG
そんなチミにはミラーサイトをお勧めする

http://www.vsl.gifu-u.ac.jp/freeman/misc/ruby-docs-1.6.7/refm-ja/
0100デフォルトの名無しさんNGNG
オブジェクト指向原理主義、オープンソース界のアルカイーダ
HTMLはStrictにしる!ドキュメントはRDにしる!!
Windows、Mac OSは消去してLinux/BSDにしる!

スローガン:
 欲 し が り ま せ ん 勝 つ ま で は
0101デフォルトの名無しさんNGNG
rd2 で HTML に変換すれば?
0102Rubist@カラアゲNGNG
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
0103Rubist@カラアゲNGNG
>97
俺のようなマイルドな奴もいるぜ、ヒヒヒ。。
010498NGNG
http://www7.tok2.com/home/misc/ruby.html
よくさがしてみたら、Windows版のHTML Helpってのがあった。
0105デフォルトの名無しさんNGNG
>103
ごめん, 厨のこと忘れてた。
0106デフォルトの名無しさんNGNG

美的感覚といえば、Ruby はインデントの主流が2なのもどうかと思う。
正直見づらい。

(RDフォーマットは賛美両論ありながらも、俺は気に入ってる)
0107デフォルトの名無しさんNGNG
>>106
賛否、だろ。
賛美なら一論。
0108デフォルトの名無しさんNGNG
>>106
何の言語でもインデント 2 で書きますが何か?
…趣味で作るやつは、だけど。
0109デフォルトの名無しさんNGNG
>>108
原理主義者だから、GNUスタイルのインデント 2なのね。
0110デフォルトの名無しさんNGNG
ruby は2がしっくりくるなぁ
C あたりは4
0111デフォルトの名無しさんNGNG
文字列にある文字列が含まれてるか判断するのに正規表現より
index()を使ったほうが速いだろうと思っていて、いままで全部index()
を使ってきたけど、念のために速さを調べてみたら正規表現のほうが
速かった。
ちょっとショック。

if str.index('hoge') ...

if str =~ /hoge/ ... # こっちのほうが速い
0112デフォルトの名無しさんNGNG
>>109

あれ、linux カーネルは tab の 8 で書かれてなかったっけ。
0113デフォルトの名無しさんNGNG
インデントにスペース使う奴はドキュソ
0114デフォルトの名無しさんNGNG
オレはスペース派。
違う環境に持っていってもインデントが崩れないのが好き。
0115デフォルトの名無しさんNGNG
>>111
え?ほんとう?
0116デフォルトの名無しさんNGNG
>>111
String#indexをBM searchでも使って書き直して送るべし。

0117デフォルトの名無しさんNGNG
>>115
調べなおしてみたら、文字列が短いときとか最初のほうでマッチするとき
は、index()のほうが速かった。
0118デフォルトの名無しさんNGNG
if text.upcase == 'HOGEHOGE'
if text =~ /^hogehoge$/i

大文字小文字無視して等しいか調べるときも、正規表現が速かった。
1.7ではcasecmpというのがあるみたいだけど、入れるのが面倒だから
調べられない。
0119名無しさんNGNG
http://i.loveruby.net/ja/ruby/codingstyle.html
にrubyのコーディングスタイルについての文章がある。
俺も3スペースインデントしてたけど、最近は2スペースだな。

ま、どんな言語でもその標準ライブラリが何で書かれてるかに
従ったほうがいいと思う。あんまり変なスタイルだと、それだけ
で気も悪がられる気がする。
だからCで外部モジュール書くときもついK&Rで書いてしまう。
0120デフォルトの名無しさんNGNG
2スペースだと、年とってから苦労しますよ。4ぐらいにしときなさい。
0121デフォルトの名無しさんNGNG
普段、抽象化抽象化と煩い奴に限って、
インデントをタブ文字で抽象化しないのは何故だ?
0122デフォルトの名無しさんNGNG
環境依存だからです。
0123デフォルトの名無しさんNGNG
スクリプト言語でタブインデントする根拠は希薄
0124デフォルトの名無しさんNGNG
スクリプト言語でオブジェクト指向する根拠は希薄
0125デフォルトの名無しさんNGNG
動的オブジェクト指向は書き捨てでも役に立つぞ
0126Rubist@カラアゲマイルドNGNG
Rubyyyy>>>>>>>>>>>>>>>perl.
HTML>>>>>>>>>>>>>>>>>>rd
0127デフォルトの名無しさんNGNG
http://mapbrowse.gsi.go.jp/mapsearch.html
で検索できる地形図から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
一気に合成する方法として、例えば、ImageMagick の
% 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デフォルトの名無しさんNGNG
winのmutexみたいに、プロセスをまたいで排他処理を行う方法は
rubyには無いのでしょうか?

(flockくらいしか方法は無いのでしょうか?)
0130127NGNG
メッシュコードの概念は
http://nlftp.mlit.go.jp/ksj/mesh.html
の方がわかりやすいかも。

% convert -crop
を使うのは2.5万の4分割がダブっているからです。
きれいに分割できればあとはタイルのようにくっつけるだけですが
僕にはできませんでした‥‥‥










0131デフォルトの名無しさんNGNG
>>111でindex()より正規表現が速いって書いたものです。

↓このように書いてたものを
while true
text.index('hoge')
end

↓このように書き直してみたら、正規表現とほぼ同じ速さになりました。
t = hoge
while true
text.index(t)
end

リテラルがあると遅くなるのかなぁ?
0132デフォルトの名無しさんNGNG
>>129
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Mutex
これでいいか?thread.rbにあるので、
require 'thread'
して、使ってね。
0133デフォルトの名無しさんNGNG
>>132
それはプロセス内でしか使えないのでは?
0134デフォルトの名無しさんNGNG
>>129
RAAで、semaphoreとかSysV IPCとか入れて探してみれば。

0135デフォルトの名無しさんNGNG
>>133
あ、勘違いスマソ。
プロセス間ね、スレッド間だと思っていた。
0136デフォルトの名無しさんNGNG
勘違いばかりなので責任感じて…

>>134さんが言っているのはたぶん、
http://www.ruby-lang.org/raa/list.rhtml?name=sysvipc
これのことでしょ。
でもプラットフォームによっては使えなさそう…。

flockもプラットフォームによるので、、まあ、UNIX系なら問題ないか。
つか、簡単に使えるのがあったら、CGIがめちゃくちゃ楽になるな〜。
0137デフォルトの名無しさんNGNG
>> 131
> リテラルがあると遅くなるのかなぁ?

構文解析結果のノードの中の文字列をそのまま使用できないので、
毎回、'hoge'文字列のコピーが行われます。
変数を使用する場合は、その変数の値の文字列が
そのまま使用されます。
0138山崎渉NGNG
(^^)
0139デフォルトの名無しさんNGNG
>>137
> 構文解析結果のノードの中の文字列をそのまま使用できないので、
> 毎回、'hoge'文字列のコピーが行われます。

補足すると、文字列自体はStringオブジェクトの間で共有されるので、
文字列のコピーというよりは、Stringオブジェクトのコピーが
毎回行われるということです。
0140デフォルトの名無しさんNGNG
arr.each{|i|...}
の|i|を省略可能にしてくれ。
0141デフォルトの名無しさんNGNG
その場合決め打ちで i になるわけ? そんなのヤだ。
0142デフォルトの名無しさんNGNG
文字列linesをファイルに書き出したいのですが
もっと簡潔に書けないでしょうか?
open("log", "w"){|f|
lines.each{|s|
f.puts s
}
}
0143デフォルトの名無しさんNGNG
>>142
f.puts lines.join("\n")
0144デフォルトの名無しさんNGNG
★http://jsweb.muvc.net/index.html★
 ★こんなサイト見つけました★
0145デフォルトの名無しさんNGNG
>>144 ブラクラ
0146デフォルトの名無しさんNGNG
>>143
joinはいらないのでは?

f.puts lines
0147デフォルトの名無しさんNGNG
IO.popenで起動したプロセスが終了したのを認識するのってどうすればいいんでしょうか?
厨な質問でスマソ
0148デフォルトの名無しさんNGNG
>>147
読み込みならそれが終わるまででいいんでないの。
書き出しなら先に終了されたらエラーになるでそ。

どうしてもやりたきゃ pid をとって waitpid。

0149デフォルトの名無しさんNGNG
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Process
0150デフォルトの名無しさんNGNG
スレ違いかもしんないですが、
Rubyで実装されたWikiを利用するとしたら、

* Tiki
* asWiki

どちらをオススメしますか? パッと見、似たような感じだけど……。
# RWikiはdaemonが必要だからちょっと敬遠。

amritaを使っているのでaswikiかなあ、とは思っているんですが、
「Tikiのほうがイイってば!」ってなポイントがあれば知りたい。
0151デフォルトの名無しさんNGNG
☆★▼▽▲△●○■□◆◇◇◆□■○●△▲▽▼★☆

今月もお小遣いすくなってきたよ・・・トホホ。
そんなあなたにこのサイト!!あなたのお小遣いを
1円でも多くして見せます!!
損はさせません!!早速アクセスをどうぞ!
↓   ↓   ↓
http://finito-web.com/kanemou/index.html

☆★▼▽▲△●○■□◆◇◇◆□■○●△▲▽▼★☆
0152デフォルトの名無しさんNGNG
>>150
Hikiっていうのもあるよ
http://www.namaraii.com/hiki/
0153デフォルトの名無しさんNGNG
>>152
tDiaryのプラグインが使えるってのがちょっと面白い。
0154デフォルトの名無しさんNGNG
>>127

合成するって、めちゃくちゃにでかい画像ファイルができそうだが。
Ruby でグラフィックを扱うなら Ruby/GD を使うのがいいよ。
0155デフォルトの名無しさんNGNG
やっとrubyがわかってきますた。
慣れたら簡単やね
0156デフォルトの名無しさんNGNG
RDのフォーマットってもうこれ以上変わらんのかな?
オブジェクト(イメージ)の埋め込みが出来てほしい
PODに乗り換えようかと思ったけど、
RDの方が分かりやすかった。
この仕様だけなんだけど。
0157デフォルトの名無しさんNGNG
>>156
もともとはテキストの為のフォーマットなので、
画像を扱うというのは考えられていないと思われ。
RWikiとかみたいに自分で拡張する分には自由でしょう。
0158デフォルトの名無しさんNGNG
>>156
まつもとさんは以前RDをこれ以上複雑にしたくない、
という趣旨の発言をしていたんで、RDという枠組みでは無理じゃないかな。
んで、拡張するのならRDという名前は捨ててくれ、ということだった。
だから、欲しいのなら君が拡張してRDじゃない名前をつけて発表すれ(w
0159牛丼うまうまNGNG
>>127
http://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

↑このようにして、手元の環境で、複数のプロセスからパイプに書き込んで、
実験したところ、データが混じりあうことは無かったのですが…
0161160NGNG
>>160
syswrite()でやればOKそうな気がするので、syswrite()でやります。
0162デフォルトの名無しさんNGNG
>>111
そういえば、以前、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
>>163
いつもいつも言われることだが、エラーの中身を書け、と。
あと、ruby -vの結果も。ついでにWindows(だよな?)のバージョンも。

ついでなので、環境変数PATHの中身とrubyがインストールされている
場所も書くとなおよいだろう。
0165デフォルトの名無しさんNGNG
>>163
環境変数 RUBYLIB に hello.rb のあるディレクトリを記述しる
0166デフォルトの名無しさんNGNG
>>163
call.rbの先頭に次の一行追加する。

$:.unshift(File.dirname($0))

これで、call.rbと同じディレクトリにあるファイルを
requireするようになる。
0167デフォルトの名無しさんNGNG
>>163
hello.batの中身を
ruby -IC:/temp C:/temp/call.rb
とするか、
ruby -CC:/temp call.rb
とする。

って、結局、*.rbはC:/srcとC:/tempとどっちにあるんだよ!
0168デフォルトの名無しさんNGNG
Exerb 使って単一ファイルにすれ。
0169163NGNG
こんなまともな回答が来るとは思ってなかったので、正直ビビっております。
昨晩の時点でレス無くてあきらめてたんで、なおさらでした。

まず、 >>164-168 皆様回答ありがとうございます。

んで、回答ですが、私の求めていた形は >>166さんのものでした。
私の作った*.rbを他者が使用する場合、
各環境によってbatやPATHを変更するのがどうにも具合が悪かったためです。
たくさん回答していただきありがとうございました。ホント感激です。
2chなめててスマソ。

>>164
まず質問の書き方を知りませんでした。
以後気を付けます。

>>167さん
srcです。tempじゃ無いです。
ごめんなさい、逝ってきます…

>>168さん
Exerbの存在を知りませんでした。
こういう方法もあるのですね。
勉強になります。ありがとうございました。
0170デフォルトの名無しさんNGNG
>>162
> そういえば、以前、index を速くするパッチ投げたんですけど、
どこにあるの?
0171デフォルトの名無しさんNGNG
>>166
$0より__FILE__の方が良いかも。
0172デフォルトの名無しさんNGNG
Windows(not cygwin)でrdrt2使うとOpen3.popenでforkが実装されていないよとエラーになるのですが解決策があればおしえてください。
0173デフォルトの名無しさんNGNG
>>172
http://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
>>171
なんで?
0175166NGNG
>>174
call.rbが更に別ディレクトリにある他のスクリプトからrequireされると、
File.dirname($0)では困るからとか?
0176デフォルトの名無しさんNGNG
よいかどうかというより、意味が違う。
$0は最初に与えられたスクリプトファイル名、
__FILE__は現に実行中のファイル名(この場合はcall.rb)。
call.rbを基準にロードしたいなら、>>171のいう通りFile.dirname(__FILE__)。

はっきりいって散々外出。
0177デフォルトの名無しさんNGNG
ありがとうございます。
win32 環境で rttool を利用する手順です。

(1) rttool をインストール
(2) win32_popen をインストール
(3) rd/tree.rb:20 を以下のように書き換える
TMP_DIR = ENV["TEMP"] || ENV["TMP"] || "/tmp"
0178172 iなので2分割NGNG
(4) ~/.rd2rc の external_filterを以下のように書き換える

#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
>>179
> new_file = File.new("a.txt")
open modeを省略すると"r"(読み込み)と解釈されるんで、当然書けない。
0181デフォルトの名無しさんNGNG
>>180
これで2時間悩んでました。
ありがとうございました。
0182デフォルトの名無しさんNGNG
>>178
> #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+")でいけるよ
うになってるはず。
0183 NGNG
rubi-1.6.7で
makeの時わざとconfigure消してautoconfigしたらreadlineの所で
エラーになったんだけど、これってreadlineが古いから?(1.??使用)
ちなみに、元々入ってるConfigreで、./configre、make、make test
だと問題無い。
0184デフォルトの名無しさんNGNG
>>183
rubiの話は専用スレへ。

autoconfのバージョンとエラーの内容は?
0185デフォルトの名無しさんNGNG
mswin32版で拡張ライブラリをmakeするばあいVC++が必須なん?
0186デフォルトの名無しさんNGNG
VC++くらい買えよ
0187デフォルトの名無しさんNGNG
>>185
mingwでコンパイルできるはずだが、rbconfig.rbをいじらんと無理だろうな。
0188デフォルトの名無しさんNGNG
javaでunicodeからshiftJisへの変換ってどうやるの〜????
0189名無しさんNGNG
できません。rubyを使いましょう。

#!/usr/bin/env ruby
system('nkf -Ws #{ARGV[0]}')
0190デフォルトの名無しさんNGNG
>>188
激しくすれ違い。
java.nio.charsetパッケージのリファレンスを読んで自分で調べろ。
0191デフォルトの名無しさんNGNG
>>189
そりゃrubyでやってるとはいわんだろ。
せめてuconvかiconv
0192デフォルトの名無しさんNGNG
>>187 やっぱそうなんだ。
しょうがないのでmingw版のバイナリをもってきて、バイナリエディタでruby-mingw32.dllにリンクしている情報をmswinに書き替えちゃったよ。
0193デフォルトの名無しさんNGNG
>>192
素直にmingw版を使えばいいのにとは思うが、
1.8ではmingwとmswinは拡張ライブラリを共有できるようになってる。
0194質問スレではスルーされたNGNG
Rubyプログラミングを大学でやるらしいのですが、こちとら生まれて此の方
プログラミングなんていう高等技術をやったことがありません。
初心者Rubyプログラマーのポータルサイトなど御座いますでしょうか?
0195デフォルトの名無しさんNGNG
http://www.google.com/search?q=ruby+%93%FC%96%E5&hl=ja
0196名無しさんNGNG
>>194
教授に聞けよ。授業料払ってんだろ。
0197デフォルトの名無しさんNGNG
つーか授業でRuby使うって、島根大学?
0198デフォルトの名無しさんNGNG
>>195-197
入門って入れればいいのか・・・
何やってんだろう、ずっと初心者とかで検索してた。
すいませんでした。今度から徹底的に検索してから参ります。
0199デフォルトの名無しさんNGNG
DelphiのExtractFileExt/Pathのようなパス操作関数ってないですか?
0200デフォルトの名無しさんNGNG
ExtractFileDir: File::dirname
ExtractFileName: File::basename
ExtractFileExt: File::extname
0201MoonWolfNGNG
>>200
使ったことないけど、こんなのもある。
http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/rough/lib/pathname.rb
0202デフォルトの名無しさんNGNG
hikiのソースって、まだダウンロードできないのかな?
0203デフォルトの名無しさんNGNG
まだっぽい。早く公開してくれないかねぇ。
0204デフォルトの名無しさんNGNG
2/9「変更点は以下の通り。あと、プラグイン周りを見直してページの凍結を作り込んだら細々と公開させてもらいます。 」
もうしばらく待つが吉。
0205202NGNG
文法がWardCunninghamっぽい、tDiaryの匂いがする、ってことで
ヒジョーに期待しています。
って、ここに書かないでHikiに書いたほうがいいのかもしれないが、
向こうではガイシュツだからここに書こう。

0206デフォルトの名無しさんNGNG
Hiki 良さそうですね。

ひとつだけ気になったのが、画像URLがデフォルトで<img>にされて
しまうこと。コピペしたテキストとかの中身に注意を払わないと、
含まれてた画像URLが意図せず埋め込まれちゃいそう。
0207>>HikiNGNG
あまりあれこれ機能を足さず、シンプルなまま公開してほすい
0208デフォルトの名無しさんNGNG
Windows版ってパス名をC:\RUBY\HELLO.RBみたいに指定したり
SJISのファイル名をちゃんと処理できないんですか?
0209デフォルトの名無しさんNGNG
DOSISH 対応は漸進的に進められているので 1.8-cvs を使って。
0210デフォルトの名無しさんNGNG
すみません。
つかぬことをお聞きしますが、'r+'で開いたファイルを操作する時に、
いままでそのファイルに記述してあったところの途中で、ファイルを終わらせたい場合には、
どのようにすればよいのでしょうか。
部分的に削除をしたいのです。
0211デフォルトの名無しさんNGNG
File#truncate
0212210NGNG
truncateなんてあったのですね。
なんとかできたようです。
ありがとうございました。
0213デフォルトの名無しさんNGNG
>>212
基本的に、UNIX系の標準ライブラリやシステムコールを知ってると類推できる
ことが多い。
0214デフォルトの名無しさんNGNG

オブジェクト指向っていっても、rubyのは単に .でつなぐだけでしょ?
0215デフォルトの名無しさんNGNG
>>214
そうだよ。 Perl にはそれすらできないんだってさ。
0216デフォルトの名無しさんNGNG
perlの話でもうしわけないんだけど、

日本語変換モジュールのJcodeは
Jcode->new($str, 'sjis')->euc;
みたいにできるのに
同じ作者のEncodeは
encode('euc', decode('sjis', $str));
みたいな仕様にしたのかな?
->を使ってOOっぽく見せるのはやめて
関数型でやるのがPerl的には美しいの?
0217デフォルトの名無しさんNGNG
>>216
> Jcode->new($str, 'sjis')->euc;
対応するエンコーディング名があらかじめ決まってないといけないからじゃないの。
0218デフォルトの名無しさんNGNG
あ、なんでこうしなかったかってことか。

Encode->decode($str, 'sjis')->encode('euc')
0219デフォルトの名無しさんNGNG
>>218
ですです
関数型の方が語順が英語と似るからかな。
ruby本に書いてありましたよね。
0220デフォルトの名無しさんNGNG
Jcode.pmのOO風変換インターフェイスは失敗だったと思うから、採用しなくて良かったと思う。
0221デフォルトの名無しさんNGNG
>>220
どういうとこが失敗だったと思う?
0222デフォルトの名無しさんNGNG
>>221
個々のメソッドのインターフェイスがバラバラ。
例えば、下の例の前者は問題なくて後者は実行時エラー
print Jcode->new('文字列')->h2z()->sjis();
print Jcode->new('文字列')->sjis()->h2z(); 
文字列化演算子をオーバーロードするのなら、
両方の構文をサポートしてもよかったのではないかと思うのだが。

更に、convert()のエンコーディング指定文字列も、
正式名称"EUC-JP"などを受け付けるようにしていれば、もっと便利だったはずだ。
0223デフォルトの名無しさんNGNG
>>222
なるほど。
しかしそれはOO風にしたための失敗とはいえないのでは?
0224デフォルトの名無しさんNGNG
>>223
いや、まあ、元々不満だったのは「Jcodeのインターフェイス」であって、
「OO風インターフェイス」だから不満だったわけじゃないのだ。

Encode.pmはというと、インターフェイスこそ手続き型だけど、
その実装はOO無しには語れず、ただの関数を多態的に動作させるようになってる。
にもかかわらずあえて公開OOインターフェイスを備えていないのは、
関数の方が楽だから、だと思う。これは想像だが。
Encode->find('EUC-JP')->encode($str); # タイプが面倒
Encode->encode("EUC-JP", $str); # 悪くないが、まだ長い
encode("EUC-JP", "文字列"); # 短い。楽だ。

0225デフォルトの名無しさんNGNG
スマートにコンマ区切りのCSVを処理したいのですが
どうsplitすればいいのでしょうか?
0226デフォルトの名無しさんNGNG
>>225
聞く前にRAAとかGoogleを検索しろよ。

cols = text.split(/,/)で駄目なら
http://raa.ruby-lang.org/list.rhtml?name=csv 使えば?
0227デフォルトの名無しさんNGNG
>>224
なるほどね。

> 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デフォルトの名無しさんNGNG
>>227
Iconv はストリームを処理する状態機械だから str を引数に渡すのは派生だな
0229デフォルトの名無しさんNGNG
>>228
派生?
0230202NGNG
TidyみたいなライブラリのRuby実装ってご存知の方、いらっしゃいますか?
マークアップがぐちゃぐちゃなHTMLをwell-formedなXHTMLに変換してくれ
るようなものを探しています。

html-parser.rbがそうかな?と思ったんですが、
探しているのとちょっと違うような気がするんです……。


0231デフォルトの名無しさんNGNG
>>230
つい最近ruby-extにその話題が([ruby-ext:02143]から)
Ruby-TidyLib: http://arika.org/ruby/tidylib
0232デフォルトの名無しさんNGNG
htmlrepair に手を入れて使うとか。
0233デフォルトの名無しさんNGNG
>>229
ああ「strを引数に渡すの」じゃなくて「クラスメソッド」だったyo
0234202NGNG
>>230
ありがとうございます。ruby-extはsubscribeしてませんでした。
tidy.rbのAgeが4hoursとはこれまたホットですね。ヲチしたいと思います。

0235202NGNG
キタ━━━━(゚∀゚)━━━━ッ!!
ttp://www.namaraii.com/hiki/hiki.cgi?%28Hiki%29%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9
0236デフォルトの名無しさんNGNG
http://pc.2ch.net/test/read.cgi/unix/1040496222/990-996
教えてね♥
0237デフォルトの名無しさんNGNG
amritaはしょうがないとして、strscan前提ってのはやめてもらえないかねえ。
0238デフォルトの名無しさんNGNG
>236
class Foo; p self; end
0239デフォルトの名無しさんNGNG
>>237
1.8なら標準
0240デフォルトの名無しさんNGNG
>>237
shim 入れろ。

ていうか、HTML を自分でパースしようと思ったら、strscan ってめっちゃ便利よ。
0241デフォルトの名無しさんNGNG
現在の1.8の安定度ってどんなもん?
0242デフォルトの名無しさんNGNG
仕様の安定度なら、かなり低い
0243デフォルトの名無しさんNGNG
Ruby の仕様と実装の関係はイデア理論で説明できる。
仕様はイデアである。実装はその影に過ぎない。
従って、イデアを求めて実装は変化するのである。
0244デフォルトの名無しさんNGNG
実装の過程でイデアも変化したりするがな。
0245デフォルトの名無しさんNGNG
>>240
strscan って ML みてるとインストールのトラブルがあったりで印象が悪いんだよね。
それに strscan を使わなくても じゅうぶん速く parse できるよ。
pure ruby の xml parser だってあるし。
0246デフォルトの名無しさんNGNG
>>245
だから1.8かshimを使えと。
0247デフォルトの名無しさんNGNG
RubyでJISX0208の記号(EUCで\xA1\x??〜\xA2\x??)にマッチするような正規表現を教えて下さい
0248デフォルトの名無しさんNGNG
EUCで?
/#{"[\xa1\xa1-\xa2\xfe]"}/eo
かな。
0249デフォルトの名無しさんNGNG
>>248
ありがとうございます。
これってそのままPerlでも通用するのでしょうか?
0250デフォルトの名無しさんNGNG
最近のPerlのI18N動向はよく知らないんだが、少なくとも#{}というのはRuby
独自なのでそのままは動かない。
0251デフォルトの名無しさんNGNG
あ、-Keつければ直接書けるよ。
/[ -◯]/
0252デフォルトの名無しさんNGNG
10執念あげ。
0253デフォルトの名無しさんNGNG
>>249
jperl なら通用するかもしれない。と後ろ向きなアドバイス。
0254デフォルトの名無しさんNGNG
[ruby-talk:65710]はなかなかお茶目だな。
0255デフォルトの名無しさんNGNG
BBSとか作るときに管理者パスワードとかはどうすればいいのかな。
安全で使いやすいのは、
BASIC認証? ruby-shadow? ruby-password?

それともこんな程度のセキュリティでOKなの?
http://www5e.biglobe.ne.jp/~access_r/hp/cgi/rb_light.html
0256デフォルトの名無しさんNGNG
>>255
思いっきりスレ違いやんけ!
0257デフォルトの名無しさんNGNG
ruby-shadow は後ろに立っている人から守る(ブラウザからは利用できない)。
ruby-password は統計的に弱過ぎるパスワードをつける不注意から守る。
BASIC認証は盗聴されない前提で比較的低頻度の総あたり攻撃から守る。

盗聴の危険が高い回線なら、SSLでBASIC認証を使い、
ruby-password で検査するくらいで適当。それでも弱いと思うなら、
BASIC認証を使わず、POSTでより長いパスワードを提供するしかない。
その場合はクッキーなどでセッションを維持することになる。

しかし通常のBBSならSSLでBASIC認証を使えば十分だと思うし、
SSLでなくてもBASIC認証だけでも構わないと思う。
0258_NGNG
クラス変数をpublicにしたいのですが、どうしたらできますか?
0259デフォルトの名無しさんNGNG
>>258
他にやり方があるかもしらんが

class Mona
 @@val
 def val=(v)
  @@val = v
 end
 def val
  @@val
 end
end
0260デフォルトの名無しさんNGNG
>>259
クラス変数をインスタンスメソッドで変更するのはキモくないか?

class Mona
 @@val
 def self.val=(v)
  @@val = v
 end
 def self.val
  @@val
 end
end
0261デフォルトの名無しさんNGNG
>>260
確かにキモいと思いつつ書いてた。
0262初心者NGNG
文字コードから、文字を得るのと
文字から文字コードを得るのって、どうすればいいですか?
0263デフォルトの名無しさんNGNG
>>262
文字というのがStringオブジェクトだとして
Integer#chr
String#[](index)
を使う

p 64.chr # '@'
p '@'[0] # 64
0264初心者NGNG
なるほど、ありがとうございました。
0265デフォルトの名無しさんNGNG
2.8.0preview2が出たというのに、静かだなぁここは。
0266デフォルトの名無しさんNGNG
違う、1.8.0preview2だ。鬱。
0267デフォルトの名無しさんNGNG
>>266
一瞬どういうネタだ? と思ったよ(w
0268デフォルトの名無しさんNGNG
「ここだけ時間が5年進んでいるスレ。」からの誤爆とか。
0269デフォルトの名無しさんNGNG
previewはもういいよ。早く2.0出してくれ。
0270デフォルトの名無しさんNGNG
まだやること山のように残ってんので無理。
0271デフォルトの名無しさんNGNG
rubyでCGIを書いているのですが、

printf('<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
>>271
前者のprintfはいちいち書式指定文字列をパースしているから。
前者のprint は余計な文字列オブジェクトを生成しているから。
0273デフォルトの名無しさんNGNG
>271
前者だと演算子のたびに新しい文字列オブジェクトを生成するからね。
ま、ふつうは

print %Q(<p class="#{ck}">#{num}<p>)
print %Q(<input name="#{name}"〜)

とか書くわけだが。
0274デフォルトの名無しさんNGNG
Person オブジェクトには、Person#name や Person#addr といったメソッドがあり、
実際には DB への問い合わせを行っているものとします。
DB の host 名や user や password などの設定を /etc/personrc に記述したい場合、
Person クラスへこの設定をくべるには、どのような設計にするのが良いでしょうか?

>>273
"#{num}" は新しい String オブジェクトを生成しないんでしょうか?
それとも生成してしまう?
0275デフォルトの名無しさんNGNG
>>274
> "#{num}" は新しい String オブジェクトを生成しないんでしょうか?
> それとも生成してしまう?

そこだけは新しいStringオブジェクトを生成する。num.to_sと同じ。
今までそんな文字列はどこにも存在しないんだから当然。
0276デフォルトの名無しさんNGNG
>>274
「くべる」って薪かよ。

すべてのPersonオブジェクトは単一のDBを共有するわけ?
最初にコネクションを張るときに読めばいいんじゃないの。

""ってだけでも常に新しいStringオブジェクトを生成するわけだが、
"#{num}"は(1.8では)""<<num.to_sと等価。
0277デフォルトの名無しさんNGNG
/.J が珍しく面白いことをやってる。

インタビュー:Rubyの まつもとゆきひろ に聞け!
http://slashdot.jp/articles/03/03/07/0413248.shtml?topic=86
0278デフォルトの名無しさんNGNG
趣味は聞くまでもないだろう。と思った。
0279デフォルトの名無しさんNGNG
「ケサランパサラン」って、どんな生物?
ttp://www.asahi.com/kansai/030308a.html
0280デフォルトの名無しさんNGNG
truncate ってどこで区切って、なんて読むんですか?
0281デフォルトの名無しさんNGNG
普通の英単語なんだが
0282名無しさんNGNG
>>280
「とらんかて」という関西弁のアルファベット表記です。
0283デフォルトの名無しさんNGNG
> お気に召さない場合は「インライン・コールバック」でも「ケサラン・パサラン」
> でも,なんでもお好きな名前に自由に読み換えてください.
ってなんだかなあ…
0284デフォルトの名無しさんNGNG
インタビューおもしろかった。
0285デフォルトの名無しさんNGNG
まつもとさんのインタビュー読んで思ったのだけど、Ruby はギャグ、ユーモア
という点で、Perl や Python に完全に負けてると思う。
Larry Wall や Tim Peters みたいにシャレの効いた言い回しのできる人がいない。
これけっこう重要なことだと思う。
0286デフォルトの名無しさんNGNG
うーん。
しかし、日本人のプログラマでユーモアのセンスがある人って見たことない。
0287デフォルトの名無しさんNGNG
>>286
namazuの高林さんてどう?
ユーモアのセンスありすぎだと思うけど、
ちょっと方向性が違うか。
0288デフォルトの名無しさんNGNG
高林さんっていうか、ソニーCSL絡みの人はみんな面白いですね。
0289デフォルトの名無しさんNGNG
こういうのをまじめくさって話す時点で
もうシャレが通じないっていうか...。
0290デフォルトの名無しさんNGNG
ML によく投稿してる中田さんの
>--- 僕の前にBugはない。
>--- 僕の後ろにBugはできる。
っての俺好きだなぁ。
初めて見たときニヤリとしたよ。
0291デフォルトの名無しさんNGNG
ユーモアの感想をいうことほど面白くないものはない
0292デフォルトの名無しさんNGNG
>>290
人によっていろいろ解釈があるみたい
0293デフォルトの名無しさんNGNG
「ふえろ! わかめちゃん作戦ですえ但」は今年に入って消えたのな
0294デフォルトの名無しさんNGNG
「え但」って?
0295デフォルトの名無しさんNGNG
ハートマークが化けた状態か?
そういう化け方は見たことないが
0296デフォルトの名無しさんNGNG
>>292
ん、どんな解釈?
0297デフォルトの名無しさんNGNG
>>296
僕の書いたコードにバグはないが、後から続く者がバグを産む。
僕が書く前にはバグはないが、僕が書いた後にはバグを産む。
0298デフォルトの名無しさんNGNG
道程なんだから前者ってことはなかろう
0299デフォルトの名無しさんNGNG
>>296
http://sourceforge.net/mailarchive/message.php?msg_id=1349966
化けるので引用
> 「バグばっかりつくってごめんなさい」
> というのが、いちばん単純な解釈でしょうが、
> 謝ることができるということの裏には、
> 実際にコードを書いて働いていることや、
> 誤りを自ら認める心の広さが表現されているように
> 思えます。あるいは、「Bugはない」というのは
> 「コードそのものがない」ということを意味するとすれば、
> 開拓者魂の表現のようにも見えます。
> いずれにせよ、Bugの理由を、「コードは一般的にBugを
> 含むものだ」と「単に中田さんの技量の問題だ」の
> どちらの立場で解釈するかが、最初の分れ道ですね。
0300デフォルトの名無しさんNGNG
まさに >291 の言うとおりユーモアの解説は無粋だ。
>299 を攻めてるんじゃなくてそのリンク先の人ね。
笑えりゃOK、笑えなければポイでいいと思うんだがなぁ。
0301デフォルトの名無しさんNGNG
↓こういう感じで書けば圧縮ファイルができます。
o = 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
Warlus のひとの
「stableでなければ生きていけない。unstableでなければ生きてる意味がない」
ってのが好き
0303デフォルトの名無しさんNGNG

                         _人
                      ノ⌒ 丿  うんこ〜♪
                   _/   ::(
                  /     :::::::\ うんこ〜♪
                  (     :::::::;;;;;;;)_  うんこ〜♪
                  \_―― ̄ ̄::::::::::\
              \  ノ ̄     ::::::::::::::::::::::)  /うんこ〜♪
                \(     ::::::::::::::;;;;;;;;;;;;人/
                / ̄――――― ̄ ̄::::::::\
               (    ● \__/::●:::::::::::::)
                \__::::::::::\/;;;;;;;;;;;;;;;;;;;;;;ノ
   うんこ〜♪
0304301NGNG
http://www.tcn.zaq.ne.jp/sheepman/diary/200108.htm#23
検索してたら解決方法がわかりました。
(こんなことに一日かかってしまった…)
0305デフォルトの名無しさんNGNG
Rubyで作られているらしい
http://www6.big.or.jp/~beyond/bbsnews/
0306デフォルトの名無しさんNGNG
Rubyで作られているらしい
http://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デフォルトの名無しさんNGNG
>307
p "123".gsub(/(.)(?=.)/, "\\1,")
p "123".split(//).join(",")
0309デフォルトの名無しさんNGNG
>307
こんなのはどう?
p "123".scan(/\d/).join(',')
0310デフォルトの名無しさんNGNG
p("1,2,3") if str == "123"
0311デフォルトの名無しさんNGNG
>>310
こんなのにウケてしまうのが、自分で悔しい。
0312デフォルトの名無しさんNGNG
>>310-311
アハハ
0313デフォルトの名無しさんNGNG
RubyがANSIとかで標準化されるのはいつですか?
0314デフォルトの名無しさんNGNG
松本がアメリカに帰化するとき
0315デフォルトの名無しさんNGNG
その前に、JISで標準化されます。
0316デフォルトの名無しさんNGNG
RubyがJISとかで標準化されるのはいつですか?
0317デフォルトの名無しさんNGNG
マツモトの偽者、Rubyのルイジ貧が出てこない限りは、
標準化する必要がないです。
0318デフォルトの名無しさんNGNG
俺はそんなものは望まない!
0319デフォルトの名無しさんNGNG
すでに大部分の機能をPythonにパクられているわけだが
0320デフォルトの名無しさんNGNG
>>319
これまでのPythonがダメダメだったんでいいんでないかい
0321デフォルトの名無しさんNGNG
>>319
え?そうなん?
どのへんがパクられたのか、どっかでまとめられてたりするかな?
0322デフォルトの名無しさんNGNG
foo = 7 if !foo
をすっきり書くには
foo ||= 7
が定石だけど,
foo = (foo ? foo.to_i : 7)
はなんかうまく書けないでしょうか?
foo を 3 回も書くのがいやすぎ.

-s オプションお手軽で好きなんだけど…
0323デフォルトの名無しさんNGNG
foo = (foo || 7).to_i
0324デフォルトの名無しさんNGNG
ちょっと話しずれるけど、foo = 0 にもできるようにしたい場合を考えると、
Perl じゃなくてよかったと思えるね。
0325デフォルトの名無しさんNGNG
メソッドチェインで、途中でnilになったらそこでエラーにせずに止める、とい
うようなオペレータがかつて議論にのぼったことがあったような気がするが、
どうなったんだろう。
最近追い掛けてないのでage.
0326デフォルトの名無しさんNGNG
>>325
立ち消え状態だと思うが、こんなのはどうよ?

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
>>326
こんなのは?

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
>>327
>  def default(v=BLACKHOLE,&b) self or BLACKHOLE end
 def default(v=BLACKHOLE,&b) self or v end
0329デフォルトの名無しさんNGNG
もっともだ
0330デフォルトの名無しさんNGNG
Ruby界で標準のXMLライブラリってどれですか?

用途は、XML文章を操作するというのかなんというかDOMやらSAX
が使いたいんです(まだどっちがどうなのかよくわかっていませんが)。
配布する環境はUNIXなんですが、開発はWindowsなんで、
どちらでも使えるとうれしいです。
0331デフォルトの名無しさんNGNG
REXML
余裕があるなら xmlscan をいじってみると面白いと思う。
0332デフォルトの名無しさんNGNG
標準って何?
オープンソースって同一機能の複数実装が魅力なわけ。
標準なんてあるわけない。
もしも標準なんてあってそこを精密爆撃で狙われたら
標準が消滅しちゃうでしょ。
そのリスクを回避するために一見無駄な冗長性を持たせてるわけ。
0333デフォルトの名無しさんNGNG
すごい簡単なことかもしれないけど、質問させてください。

Ruby であるテキストファイル中の特定の語句を置換したいとします。
例: いぬ いぬ いぬ ねこ -> いぬ いぬ いぬ いぬ (ねこをいぬに置換)
(要するに sed みたいなことがやりたい)

単純に File.open して each_line で置換したい語句があるかどうか調べていき、
マッチしない場合にはそのままの行を、マッチした場合には置換した行を一時ファイルに書き出し、
最終的に一時ファイルを元のファイルに rename する、ということを考えました。

この例だと一時ファイルを使ってしまいますが、一時ファイルを使わずに each_line で
見ていきながら、マッチする部分を直接書き換える、ということってできますか?

もしあれば、コード例を示していただけると助かります。
0334デフォルトの名無しさんNGNG
>>333
よくわからんが、ruby の -i オプションを使えば解決されるような話?
0335デフォルトの名無しさんNGNG
なんか正規表現の変更の話が出ているみたいだけど、

[-0-9]

のような表現って多用しませんか?
いまさら

[\-0-9]

と書けって言われても、って感じ。
0336デフォルトの名無しさんNGNG
>>333
デカいファイルを突っ込むとメモリ馬鹿食いするけどこんなの。

TEXTFILE = 'inuneko.txt'

if (s = IO.readlines(TEXTFILE).map!{|line| gsub(/ねこ/, 'いぬ')})
 open(TEXTFILE, 'w').print(s)
end
0337336NGNG
あ。だめだ。これだとどんな場合でも書いてしまう。

if (s = IO.readlines(TEXTFILE).map!{|line| gsub(/ねこ/, 'いぬ')}) # ×
if (s = IO.read(TEXTFILE).gsub!(/ねこ/m, 'いぬ')) # ○

0338デフォルトの名無しさんNGNG
>>336
これならデカいファイルでも安心。
どんな場合でも書いちゃうし非 unix 環境でちゃんと動くかは知らないけど。

File.open(file) { |src|
 File.unlink(file)
 File.open(file, 'w') { |dest|
  src.each_line { |line|
   dest << line.gsub(/ねこ/, 'いぬ') }}}
0339デフォルトの名無しさんNGNG
ruby -i -pe 'gsub(/ねこ/, "いぬ")' *.txt
じゃだめ?
0340デフォルトの名無しさんNGNG
>>335
正直いやん
0341デフォルトの名無しさんNGNG
rubyさわっててつまってます。

text = <<-AHYA
fooTEXTboo
AHYA

hoge = '\1000yen'
p text.sub(/TEXT/, hoge)

このスクリプトで出力が
foo\1000yenboo\n
となるのを期待してるのですが\1が消えてしまいます。
消えないようにするにはどうしたらいいのでしょうか?
0342デフォルトの名無しさんNGNG
\を¥にする
0343デフォルトの名無しさんNGNG
>>335
perlとかでも多用されているもんな。
0344341NGNG
>>342
そんな一休さんみたいな答えじゃなくて他の案をお願いします・゚・(ノД`)
0345デフォルトの名無しさんNGNG
hoge = "('1000yen'.to_i / 10 - 10 + 10 / 10).chr.succ" + "1000yen"
0346デフォルトの名無しさんNGNG
>>341

text.sub(/TEXT/) {hoge}
0347341NGNG
>>346
ありがとうm(__)m

>>345
わからないです…_| ̄|○
0348デフォルトの名無しさんNGNG
>>341
hoge = '\\\\1000yen'
0349デフォルトの名無しさんNGNG
>>347
誰かがまとめてたの見たことあるよ
本家マニュアルサイトの「落し穴」あたりをあたってみては
0350デフォルトの名無しさんNGNG
>>348
それは直感的にわかりにくい。

>>346 のほうが新婦瑠でわかりやすいから、暗号的なプログラムを書きたい
のでないかぎり、ブロックを使ったほうが良いと思う。
0351デフォルトの名無しさんNGNG
>>335
POSIX regex で許されてる表現はそのまま通って欲しいな。
0352not333な初心者NGNG
>>338
の解説キボウ。お願いします。
なぜ、これなら、でかいファイルでもメモリを浪費しないんでしょうか?
2行目のunlinkが関係してるようなんですが。。
openしたブロックの中でunlinkって??
0353338NGNG
>>352
1. each_line なので全行をいっぺんにメモリに格納しません。

2. ファイルを open した状態で unlink してもファイルの中身は消えません。
(open したプロセスが一個も無くなってから消えます)
unlink 後に同名のファイルを open しても旧ファイルの中身に触れることはできません。
0354not333な初心者NGNG
>>353
じゃあ、メモリを浪費しないのは、each_lineを使ってるからで、
処理前と処理後を、同名のファイル名にしたい今回のような場合は、
一行ごと、each_lineするためには、unlinkして、
旧ファイルの内容と、新ファイルの内容を別々に扱ってるってことですね。

ありがとうございました。
0355デフォルトの名無しさんNGNG
>>354
だから結局一時ファイルを使っているのと変わらないのよ。
0356333NGNG
どうも、ファイル書き換えについて質問させていただいた 333 です。

338 さん、プログラムリストと解説ありがとうございました。
0357デフォルトの名無しさんNGNG
>>338
少なくともDOSISH(mswin32, mingw32, bccwin32, djgpp, たぶんhuman68kも)
ではopenしているファイルを削除することはできない。
それ以外は分からん。
0358デフォルトの名無しさんNGNG
RUBYってSmalltalkのぱくりだったんですね
0359デフォルトの名無しさんNGNG
んなこと言ったら、Rubyにオリジナルなとこなんて無い
0360デフォルトの名無しさんNGNG
色んな言語の良いとこ取りですよ?
0361デフォルトの名無しさんNGNG
mswin版のruby使ってるんですけど、
倍精度の浮動小数点数使うにはどうしたらいいの?
0362デフォルトの名無しさんNGNG
Float で間に合わないときは BigFloat
0363デフォルトの名無しさんNGNG
今ならBigdecimal。
0364デフォルトの名無しさんNGNG
>オリジナル
本当にオリジナルな言語なんて数えるほどしかないだろうし、
これからさらに減っていくのでは。
0365デフォルトの名無しさんNGNG
>>359
Rubyオリジナルなのは、モジュールを使ったMix-inあたりかなあ。
0366デフォルトの名無しさんNGNG
イテレータの柔軟な扱いは他の言語にはない・・・こともないか。
Lispじゃ常套手段だしな。

変数のスコープをprefixで区別するのはRubyオリジナルかな?
0367デフォルトの名無しさんNGNG
>>361
というか倍精度しか提供されてないのだが
0368デフォルトの名無しさんNGNG
名前空間ってこんな感じでいいの?

module ORE_NAME_SPACE
 class Main
 end
end
0369デフォルトの名無しさんNGNG
>368いい
0370デフォルトの名無しさんNGNG
るびきち氏ついにHP閉鎖?
http://www.ruby-lang.org/~rubikitch/
http://rubyist.net/~rubikitch/
我、詳細求む
0371デフォルトの名無しさんNGNG
>>370
「ついに」って、いままでなんかあったの?
0372370NGNG
>>371
るびきち氏
http://enya-mp3.tripod.com
Ruby撲滅スレ part 2
http://pc.2ch.net/tech/kako/1009/10091/1009193707.html

撲滅スレ内をキーワード"るびきち"で辿っていきますと...
0373デフォルトの名無しさんNGNG
★賞金が当たる★彼女が出来る★未成年クリック禁止★
http://www.pink-angel.jp/betu/linkvp2/linkvp.html
0374デフォルトの名無しさんNGNG
>>370
http://www.rubyist.net/~rubikitch/

つーか単純にURLが変わっただけ。
0375デフォルトの名無しさんNGNG
>>370
糠喜びさせやがって。まぁあの粘着君が閉めるわきゃねーわな。
0376デフォルトの名無しさんNGNG
Rubyなんて言語仕様がころころ変わるもんは使えないと上司に言われてしまいました。
(´・ω・`)ショボーン
0377デフォルトの名無しさんNGNG
バージョン番号振ってある様な言語は信用できんな。
0378デフォルトの名無しさんNGNG
正直バージョン番号の無い言語って何だろう。
C/C++ はライブラリ無いと何も出来ないし。
0379デフォルトの名無しさんNGNG
C も C++ も Perl も言語仕様が結構変わっているわけだが。
結局メジャーかどうかだな。
0380デフォルトの名無しさんNGNG
確かにC++なんて初期のころと比べたら仕様は変わりまくってる。
rubyなんかの比じゃない。
0381デフォルトの名無しさんNGNG
Windows も API が突然使えなくなったりとかしてるけど、
だから使うの止めたとか聞かないし。
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デフォルトの名無しさんNGNG
class String
  def 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デフォルトの名無しさんNGNG
pack unpack じゃだめなの?
0385デフォルトの名無しさんNGNG
お仕事の場合はゴルァって電話をかける先があるかどうかが問題じゃないかね
0386デフォルトの名無しさんNGNG
end読みにくいなあ。LISPみたい
0387デフォルトの名無しさんNGNG
今日は釣りが多い気がする。
0388デフォルトの名無しさんNGNG
lispのほうが256倍読みやすいYO
0389デフォルトの名無しさんNGNG
(・∀・)イイヨイイヨ-
0390デフォルトの名無しさんNGNG
>>382
Marshal.dump
0391デフォルトの名無しさんNGNG
>>382
fixedByteS_ってのがないがfixedByte_のtypoか?
任意のバイト数のビッグエンディアンで書き出そうという意図に見えるが、
最下位に符号をつけるのはまずかろう。
0392デフォルトの名無しさんNGNG
PealユーザーのためのRuby入門
吉田 和弘 (著)
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06515-4
http://www.amazon.co.jp/exec/obidos/ASIN/4274065154/
0393382NGNG
こんばんは〜。
ビッグエンディアン‥そうですねそのようです。
その用語はじめて触れました (^^;
はじめ、符号なしを書いて、上で書いていたメソッド名にして、
そのあと、符号つきを書いてその名前の後ろに'S'を付けてました。
バグありましたね。符号つきを書くとき、あまり考えず、テストをしないでいたようです (^^;
ここにカキコする際に、符号つきを'S'を取り払った状態でカキコしたつもりでそうなりました。

pack unpackは〜機能を限定すればスッキリ書けるようですね。同等の機能を持たせるには複雑になりそうな予感‥
Marshalは〜、そもそも使いたくありません。すみません。

取り敢えず、方法としては、あまり間違ってないんですね??
ところで、メソッド名とかいい名前はありませんかね‥
0394デフォルトの名無しさんNGNG
>>393
> 取り敢えず、方法としては、あまり間違ってないんですね??
方向としては間違ってないが、再帰を使う必要はないだろう。

> ところで、メソッド名とかいい名前はありませんかね‥
うーん、いい名前があればなぁ。前からこういうのは提案しようとは思ってる
んだけど。

# ワンライナー版
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
>>392
まだ、ruby2perlないですか?
0396393NGNG
394さんありがとうございます!
わー短くてカッコイイなァ〜 (笑
そもそも私が用いた方法では、マイナスの表現方法がダサイしね (苦笑
はじめinjectでひっかかりましたが、それを使える方法で置き換えたらばっちりでした!
0397395NGNG
ちがた。ほすぃのは、perl2ruby
0398デフォルトの名無しさんNGNG
どぞ
http://www.google.co.jp/
0399393NGNG
うっ、ばっちりと思っていましたら、
文字列から数字に変える変換で、ちょっと複雑になりそうな感じです‥
0400395NGNG
>>398
ぐぐってきたけど、ない。
みんなhttp://pluto.im.uec.ac.jp/~sekita-n/jdocs/perl2ruby.htmlへの
リンク。これ見てrubyべんきょしますだ。a2pなんかもだめだったしさ、
どうせさんこにならないだろとはおもてますたがね。
0401デフォルトの名無しさんNGNG
現実的には、Perl 処理系を Ruby から使うか、
Ruby で Perl をエミュレートするライブラリを使うかくらいなので、
速度が糞遅くなることを考えれば、手で移植した方がまし。
0402デフォルトの名無しさんNGNG
perl2ruby程度なら作れそうだけど、
問題はライブラリなんじゃないかと。
おれは興味ないが。
0403デフォルトの名無しさんNGNG
>>393
仕様がよく分からないのだけど、これであってる?

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
0404393NGNG
すみません。
私のinjectの分解方法が悪かったです。
injectをArrayに実装して、そのままで動かしたら、
394さんのもので、符号付きでしっかり動きました。
ありがとうございました。

符号付きでしたら、文字(?)から数字に変えるときはunpackを使ったほうが速そうですが、
そうでない場合はもunpackを使わないほうが速かったりするのでしょうか。
packは使わないほうが速そうです。
あまりまともには速度のテストしてませんけど (^^;
0405デフォルトの名無しさんNGNG
>>404
そりゃコードによるがたいていは組み込みメソッドが早い。
0406デフォルトの名無しさんNGNG
str = 'efgh'
str2 = 'abcd'
str = str + str2

より

str = 'efgh'
str2 = 'abcd'
str << str2

のほうが遅いのですが、どうしてでしょうか??

ruby 1.6.7 (2002-03-01) [i586-mswin32]
です。
0407デフォルトの名無しさんNGNG
>>406
http://www1.u-netsurf.ne.jp/~brew/mine/ja/ruby/optimize.html
0408デフォルトの名無しさんNGNG
>>406
どうやって計ったかを書くべし。これで計ったらどうよ?

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
406ではないがやってみた。

[分かったこと]
・ オレの環境では << の方が少々早い。
・ その差は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
>>409
> ・ 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デフォルトの名無しさんNGNG
a)
for 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
>>411
> rubyは毎回のループごとに1+1をいちいち計算してるわけか…

その手の最適化って一切しないのけ?
0413デフォルトの名無しさんNGNG
>>412
Fixnum#+が再定義されないとも限らないので、「最適化」しちゃうわけにはいかない。
この議論はdevでもtalkでも繰り返し出てるんで、検索してみるのがよろしいかと。
0414デフォルトの名無しさんNGNG
>>404
http://raa.ruby-lang.org/list.rhtml?name=shim-ruby16_18
0415デフォルトの名無しさんNGNG
>>409 >>410
str='efgh';str2='abcd' を N.times の外に出したら変わるのかも
0416デフォルトの名無しさんNGNG
PerlのInline::Ruby使ってる人いる?
これでレンタル鯖にRubyインスコされてなくてもCGI書けるね。
http://search.cpan.org/author/NEILW/Inline-Ruby-0.02/lib/Inline/Ruby.pod
0417デフォルトの名無しさんNGNG
うーんしかしこういうのはいかがなものか

#define BEGIN {
とかいうのとあんまり変わらないような気もする(そんなこともないかな)
0418デフォルトの名無しさんNGNG
つーか Ruby が入って無いと使えないんじゃないのか?
0419デフォルトの名無しさんNGNG
正規表現の互換性を無くす話だけど、ruby-talk側には常識的な人が
多いようで、少し安心した。
0420デフォルトの名無しさんNGNG
頭が逝かれてるのは作者と一部の信者だけだろ
0421デフォルトの名無しさんNGNG
>>408-410
同じく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
>>421
<< の測定前に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)
0423421NGNG
406ではな(ry

>>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
http://www.k-514.com/
(σ・∀・)σゲッツ!!
0425デフォルトの名無しさんNGNG
>423
1.6.4ってえらく古いな
kondaraの動向は知らんがmomongaに乗り換えたら新しいrpmが使えるのかな
0426 ◆hMJAPH9PWA NGNG
一見<<演算子のほうが速いように思えるが…どういう実装なんだろう。
<<の実装と+の実装が同じなのかな。
0427デフォルトの名無しさんNGNG
jpegのデータを読み込んだStringから
GD::Image.newFromJpeg(file)でimage instanceを作りたいのですが
ファイルを作らずにStringから直接image instanceを作れないでしょうか?
0428デフォルトの名無しさんNGNG
ローカル変数のアクセスが微妙に影響してるような。

N=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デフォルトの名無しさんNGNG
>>427
gdImageCreateFrom*Ctx()はサポートしてないみたいだな。
作者にリクエスト汁。
0430デフォルトの名無しさんNGNG
1.8はいつ出るの?
0431デフォルトの名無しさんNGNG
作者の気が向いたら。
0432デフォルトの名無しさんNGNG
>>431
Preview releaseが出てるのに気が向いたらも糞もあるか
0433デフォルトの名無しさんNGNG
子供の日とかじゃないの?
0434デフォルトの名無しさんNGNG
もう一回くらいはpreview必要だろ。五月でもどうかなぁ。
0435デフォルトの名無しさんNGNG
作者はイラクに人間の盾に行ったので、戻ってきません。
0436初心者NGNG
class Insertion_sort
def 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初心者436NGNG
配列とし渡した、数字の並びを挿入ソートしたいのですが
上のように書いたら次のようなメッセージで動きません。
test3.rb:12: parse error
test3.rb:22: parse error
test3.rb:29: parse error
p Insertionsort::sort(test_array)
^
Ruby始めたばっかりで、どこがおかしいか検討がつきません。
endの閉じ忘れとかは注意したはずなんですが。。
なにかおかしなところ指摘してください。
動かない理由以外でも、書き方のへんなところとか教えて下さい。
0438デフォルトの名無しさんNGNG
i++やi--はないのでi+=1やi-=1とかいてください
0439初心者436NGNG
>>438
そこを直すと、違うエラーメッセージがでてきて進みそうです。
よくみたらクラス名もおかしかった。。

もうちょっと自分でやってみます
アドバイスありがとうございました

0440できた436NGNG
class Insertion_sort
def 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
>>440
これだと破壊的だがそれで良い?

例えば
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デフォルトの名無しさんNGNG
>>440
breakというものを教えて上げたいような上げたくないような。
0443436NGNG
>>441
もとの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
0444436NGNG
>>442
breakを使うとしたら、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デフォルトの名無しさんNGNG
なんで>>443でwhile使っときながら>>444ではloop&breakになっちゃうんだよ。
0446 NGNG
私だったこう書く

module 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デフォルトの名無しさんNGNG
しまった、ら抜き言葉を発明してしまった
0448デフォルトの名無しさんNGNG
漏れだったこう書く(w

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
0449デフォルトの名無しさんNGNG
>>448
かちゅで読むとインデントされてないから無茶苦茶読みにくい
0450デフォルトの名無しさんNGNG
>>446 もしnavi2ch使ってたら
ttp://pc.2ch.net/test/read.cgi/unix/1046402063/360
0451デフォルトの名無しさんNGNG
RubyでCGIを作ってIISで実行するとrubyプロセスがIISサービスを
殺してしまい、ワトソンくんが出現します。(スタックオーバーフロー)
rubyは1.6.7のmswinです。
あと意味はないですが、CGIの先頭行に#!を記述しています。
もし何か知っている方いられましたら教えてください。
0452デフォルトの名無しさんNGNG
>451
RubyでCGIがうんぬんというより、そもそもスクリプトがスタック食いまくりとか
だったりしませんか?
0453デフォルトの名無しさんNGNG
>>451
Apacheに汁!
0454デフォルトの名無しさんNGNG
>>449
そりゃ悪かった。かちゅーしゃって行頭の空白消しちゃうのか。

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
>>452
もしそうならWindowsはスタックサイズの上限を指定できないの?
0456デフォルトの名無しさんNGNG
>>455
できまっせ。
標準で1メガはあるはずだけど。
でもスタックオーバーフローを起こす様なプログラムは
アルゴリズム修正した方がいいんじゃねえの?
0457デフォルトの名無しさんNGNG
それはそうだがサーバプロセスが死ぬような設定もよろしくない
0458デフォルトの名無しさんNGNG
サーバプロセスを殺せるってことはmod_rubyなのか?
IISでmod_rubyって使えるんだっけ?
0459デフォルトの名無しさんNGNG
451です。
ただのRubyプロセスでIISがシニマス。
プロセス空間を別にしてもシニマス。
CGIスクリプトは最後まで完了していて、その後もRubyがガリガリしていて
まもなくIISがシニマス。
自分のちびマシンのAN HTTPDでは問題なく動作します。
Apache+Linuxでも問題なく動作します。
仕事の都合上IISしか使えません。
ということでマイっています。
0460デフォルトの名無しさんNGNG
>>459
スタックオーバーフローって出るのはrubyに対して、それともIIS?
サーバを殺してしまうということだと、吐いてるデータに問題があるような気
がするが、nphモードにしてみるとどうなる?

0461デフォルトの名無しさんNGNG
>>460
451です。
IISに対してオーバーフローが発生します。
そのときRubyは終了しています。
一時的に標準出力に出さないようにしてテストしてみます。
勉強不足ですみませんが、nphモードって何でしょうか?
0462デフォルトの名無しさんNGNG
No Parse Header mode の略。CGIスクリプトの吐くヘッダを鯖が解釈しないモード。
ttp://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デフォルトの名無しさんNGNG
>>462
451です。
詳細にありがとうございます。月曜日に試してみます。
HTTPヘッダでの方法でやってみます。
0464デフォルトの名無しさんNGNG
pai...
0465デフォルトの名無しさんNGNG
>>462
やってみましたが、結果は同じでした。
RubyプロセスがIISを殺せるなんてやっぱりおかしいので、IISのバグあたりが
妥当ではないかと思っています。
0466デフォルトの名無しさんNGNG
>>465
AN HTTPDでは動くってことは、その可能性が高いと思われ。
rubyを使わずに、固定のデータを送るようなCGIにしても同じかな?
0467デフォルトの名無しさんNGNG
添付ライブラリのURIクラスがあんまり遅いんでワラタ
使うのやめたら、10秒以上掛かってた処理が1秒を切ったよ。

これに限らず、Rubyの添付ライブラリは玉石混淆過ぎ
つか、地雷原(w
0468デフォルトの名無しさんNGNG
どういう使いかたしてたんだ?
0469デフォルトの名無しさんNGNG
漏れも実例が見てみたい
0470デフォルトの名無しさんNGNG
>>467の玉と石の分類を見てみたい。
煽りではなく、参考にさせてもらいたいので。
0471デフォルトの名無しさんNGNG
URI使う所の多くで、URIのインスタンスを使ってたの。
プロファイラに掛けたら、URI.parseも遅かったが、
URI#+は失禁するぐらい遅かった。

URIライブラリは、UriValidatorとUriUtilに分けたらどうだ?

CGIライブラリもなぁ、なんか使いにくいよ。
Ruby唯一の処理系に付属するオフィシャルな
おまけライブラリにしては、実装者のアクが強すぎ。
なんつーか、ツブシの効かない感じ。
0472デフォルトの名無しさんNGNG
>>471
プロファイラの結果見たい。遅いのはどのへん?
# URI::Generic#mergeあたりかな。
0473デフォルトの名無しさんNGNG
XMLを出力したいのですが、適当なライブラリって何になるのでしょうか?
xml-parserでできますっけ。
0474デフォルトの名無しさんNGNG
parserってんだから入力じゃないの。使ったことないので分からんけど。
http://raa.ruby-lang.org/cat.rhtml?category_major=Library;category_minor=XML
libxmlとかかねぇ。
0475デフォルトの名無しさんNGNG
そも「るるる」とは何ぞや?
0476デフォルトの名無しさんNGNG
単純な質問ですが、しばらくわからないままなので教えてください。

X ターミナルの表示可能なカラム数を Ruby から得るにはどうしたらいいですか?
やりたいことは、Debian や RedHat の apt-get を実行したときに、画面右端に出る
[38%] などのパーセント表示を右端ぴったりに出したい、ということなのですが。
0477デフォルトの名無しさんNGNG
age
0478デフォルトの名無しさんNGNG
>>476
安直でよければ
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
0479476NGNG
>>478
ありがとうございました!その方法でやってみます。
0480山崎渉NGNG
(^^)
0481デフォルトの名無しさんNGNG
>>473
print文でいいんじゃねえの?
0482デフォルトの名無しさんNGNG
>>465
CGIでRubyがIISを落とす件です。
なんとなくわかりました。
httpdはIIS4です。フォームからCGIにデータを送信して、CGIの中で
Locationヘッダを使って自分のCGIに戻すことをしています。
掲示板なんかでの再読み込み防止策としてやったのですが、
これがなぜか無限ループに陥ってしまうのです。
リクエスト内容を見るとLocationにはクエリを渡していないのに
その前のフォームのデータが流れてきています。
そしてまたLocation。
ちなみにただLocationでループさせても適度な回数でたたききられます。
0483デフォルトの名無しさんNGNG
>>482
RFC2616 の
10.3 Redirection 3xx
14.30 Location
をよく読んだら何か分かるかも。
0484デフォルトの名無しさんNGNG
'a' =~ /(a*)*/
のマッチのあと、$1 が 'a' ではなく '' になるのはなぜでしょうか?
0485デフォルトの名無しさんNGNG
"a" に (a*) が2回マッチするからじゃないかのう。
0486デフォルトの名無しさんNGNG
>>482
つまりスレ違いだったわけでつね
0487 ◆hMJAPH9PWA NGNG
>>484
空文字列にマッチするから。
0488山崎渉NGNG
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0489デフォルトの名無しさんNGNG
>>487
それじゃあ説明になってないんじゃ?
普通に考えると、a* が貪欲に 'a' にマッチすると思うんだけど。

/((a*)*)/.match('a').to_a # => ["a", "a", ""]

↑これは、ちょっと理解し難いです。
(a*) が空文字にマッチしてるのに、
どうしてその外側の ((a*)*) が 'a' にマッチし得るの?
0490デフォルトの名無しさんNGNG
>>489
だから内側のカッコは2回マッチしてるんだってば。
最終的な $~ は最後のマッチが有効になる。

これなら分かる?
$ ruby -e 'p /((ba*)*)/.match("bab").to_a'
["bab", "bab", "b"]
0491デフォルトの名無しさんNGNG
$~ が最後にマッチしたデータになるというのは分かります。
でも、なぜ(a*)が2回マッチするのかが分かりません。
1回目のマッチで文字列全部を取ってしまってるので、それで終了にはならないのですか?
0492デフォルトの名無しさんNGNG
>>491
.{0,0} は空文字列に最低一回マッチする。
0493489 (not (484 or 491))NGNG
>>490
あぁ、なるほど。理解できました。

(a*) は、1回目のマッチで 'a' を食べて、
2回目のマッチで '' を食べたところで繰り返しが終了し、
その時点のマッチの状態ってことで $1 = '' がセットされたってわけですね。
0494デフォルトの名無しさんNGNG
>>493
まあこういうのはマニュアルなんかにはあまり詳しく書かれてないから
Friedl の Mastering regular expressions でも買って読むのが吉
0495491NGNG
えっと、.* が空文字にヒットするのは分かるので、
2回目のマッチが行われれば $1 に '' が入るのは分かるのですが、
1回目のマッチですべての文字列を食べ終わっているのに
2回目のマッチを行おうとするというのがどうも理解できません。

文字列の最後に仮想的な空文字を想定して、
1回目のマッチ後ではそれがまだ残っているというふうに考えるのでしょうか。
0496デフォルトの名無しさんNGNG
>>495
まあそうなんだが「仮想的な空文字を想定して」というのはよく分からん。
まず空文字ではなくて空文字列というべきだろう。
そして仮想的に想定しているのでなく実際にある。
0497デフォルトの名無しさんNGNG
Time#to_s をそのまま Time.parse しても元に戻らないってのは不便じゃないですか?

irb(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デフォルトの名無しさんNGNG
Time#to_s のフォーマットは好きに変えられるんだからいいじゃん?
0499デフォルトの名無しさんNGNG
Time#to_s って %Z とかあるからOS依存なのでは
0500デフォルトの名無しさんNGNG
>>497
そういう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デフォルトの名無しさんNGNG
あ、lib/time.rbのほうは不要だった。
0502デフォルトの名無しさん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
>>502
直接的な手段はない。
ファイルの途中に直接挿入はできないので、
挿入したい位置から先を後ろへずらす必要がある。

0504デフォルトの名無しさんNGNG
>>502
ファイルがそれほど大きくなければ
f = open("text", "r+")
img = f.read       # 全部読んで
img[3,0] = "aaa"   # ファイルイメージを文字列として編集して
f.truncate(0)      # ファイルを切り詰めて
f << img           # 書き出すのが頭を使わなくて楽
f.close
0505497NGNG
OS依存というのは知りませんでした。
>>497はWindows2000のcygwin環境です。

>>500 どうもありがとうございます。
0506デフォルトの名無しさんNGNG
>>505
そのTZフォーマットの典拠を明示できるなら、
bugs-jaにでも投げといてくれるとありがたい。
0507502NGNG
>>503,504
どうもありがとうございます。

ファイルが大きく、編集箇所も多いので、
結局、以下のようにしました。

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デフォルトの名無しさんNGNG
>>http://pc2.2ch.net/test/read.cgi/tech/1045074808/721
def random_permutation(n,k) (0..n-1).sort_by{rand}[0,k] end

sort_by は便利だ
0509デフォルトの名無しさんNGNG
>>508
(0..n-1).sort_by{rand}
(0..n-1).sort{rand<=>0.5}
確率的な違いをどう表現したらいい?
0510デフォルトの名無しさんNGNG
>>509
(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デフォルトの名無しさんNGNG
qsortが平均n・log(n)っていうときの平均ってどれ?
0512デフォルトの名無しさんNGNG
>>511
どれ?と聞く以上は選択肢を出していただきたい。
0513デフォルトの名無しさんNGNG
>>512
qsortの平均コスト評価で想定している分布って
(1) (0..n-1).sort_by{rand} # n個の一様乱数の順序
(2) (0..n-1).sort{rand<=>0.5} # ランダムな2分割による入れ換え?
(3) >>510 # 順列上の一様分布
(4) 上記以外
のどれ?
0514デフォルトの名無しさんNGNG
>>513
それは (3) だが (1) や (2) が (3) と等価なのかは知らん。
0515デフォルトの名無しさんNGNG
RubyUnit で自動テストを cron 等で行い、テスト結果を html で出力したいのですが、
そいういったことをしてくれるツールが検索しても見当たりませんでした。

こんなツールがあるよといった情報や、他の Ruby 用 Unit Test ツールでは実装
されているという情報がありましたら、教えてください。
0516デフォルトの名無しさんNGNG
>>515
cronの方はどうとでもなるとして、htmlのそれっぽい出力はないんじゃないかな。
ui/gtk/やui/fox/のtestrunner.rbを参考に書いてみては?
0517デフォルトの名無しさんNGNG
>>515
RubyUnitはTest::Unitに統合されてるのでそっちを使ったほうがいいかも。
HTMLでの出力というのがどういうものを求めてるのかよく分からんが、
test/unit/ui/html/testrunner.rbを他のtestrunnerを参考に書いてくれると
嬉しい人が増えると思われ。
0518デフォルトの名無しさんNGNG
ちゃんと>>516が書いてるじゃん。なんで見落とすかな。
0519デフォルトの名無しさんNGNG
rubyのスコープがわかりません


スクリプトファイルはじまり
#!/ruby

if なんとか
 i = 10 #ここではじめてiが出てくる
end

print "#{i}\n" # 10
おわり

ifの中で初めて使う変数が、ifの外でも使えます。
これってあり!?
0520デフォルトの名無しさんNGNG
制御構造はスコープを導入しないよ。

http://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デフォルトの名無しさんNGNG
a=Hash.new([])
b=a["3"]
b[4] = b[4].to_i + 1

で、a["3"][4] が1になって欲しいんですがならないのはどーして?
0522デフォルトの名無しさんNGNG
それで、a["3"][4]は1を返すよ。
ただし、多分意図している動作とは異なる。
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=trap%3A%3AHash
0523521NGNG
>522
ほんとだ、a["3"][4]は1を返しますね。
でも、 a.inspect => {} となってしまいます。
a.each do |key,val| とかなにも返って来ませんし、、、

Ruby 1.6.7 です。
0524デフォルトの名無しさんNGNG
>>523
調べればあちこちに書いてあると思うけど、
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
>>523
>>522のリンクを読めよ。
0526デフォルトの名無しさんNGNG
>>522 のリンクの説明、「デフォルト値」っていう表現が良くない気がする。
「デフォルトオブジェクト」とかにすれば勘違いしづらいかも。
0527デフォルトの名無しさんNGNG
そう思ったら直せばいい。
0528デフォルトの名無しさんNGNG
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06515-4
↑これ読んだ人、乾燥キボンヌ。
0529デフォルトの名無しさんNGNG
>>528
乾いてたよ。
0530デフォルトの名無しさんNGNG
乾いて候
0531デフォルトの名無しさんNGNG
「クラスのインスタンス変数」って何に使うんですか?
クラスのインスタンス変数をインスタンスのインスタンス変数として使っちゃだめ?
0532デフォルトの名無しさんNGNG
クラスのインスタンスのインスタンス変数してなら使えるけど?
0533デフォルトの名無しさんNGNG
>>532
では、クラスのインスタンスのインスタンス変数として使っちゃ駄目?
つまり「クラスのインスタンス変数」と「そのクラスのインスタンスのインスタンス変数」
の使い分けを教えて欲しいのれす。
0534デフォルトの名無しさんNGNG
テンプレ
0535デフォルトの名無しさんNGNG
JaMing/Ruby って面白そうね。
0536デフォルトの名無しさんNGNG
>>533
それは全然違うと思うけど。
クラスのインスタンス変数は、継承したくなくて(クラス変数じゃ駄目)、
公開もしたくない(定数も駄目)が、クラスに所属させたい名前じゃないかな。
例えば特異メソッドで使う値とか。
0537533NGNG
この結果を見ると、どうもクラスに所属してない気がしてしまうのですが、なぜこうなるのでしょう。
--(コード)--
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デフォルトの名無しさんNGNG
@name じゃなくて @@name
0539デフォルトの名無しさんNGNG
>>537
> class Person
> @name
この@nameと
> def initialize(name)
> @name = name;
この@nameは別物。

前者はPersonというClassオブジェクトのインスタンス変数。
後者はPersonクラスのオブジェクトの持つインスタンス変数。
0540デフォルトの名無しさんNGNG
ありがちなクラスのインスタンス変数の使い方

class 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
>>427

ファイル無しでimage instance作りたいってこと? フツーに new すりゃいいし
0542デフォルトの名無しさんNGNG
クラス変数使いこなしてるってひといますか?
イマイチどんなつかいでがあるのかわかんない。
サブクラスでの変更がスーパークラスへ反映されなければいいのに、
と思うことが多い。
0543デフォルトの名無しさんNGNG
>>542
つかってるよ。例えばなんかのデフォルト値とか。
サブクラスでも同じデフォルト値を使いたいからね。
定数でもいいんだけど、デフォルト値を変更したいときもあるから。

目的に応じて、クラス変数とクラスインスタンス変数を
つかいわければいいんじゃない?
サブクラスでの変更を親クラスへ反映させたければクラス変数、
させたくなければクラスインスタンス変数。
0544デフォルトの名無しさんNGNG
>>543
おお、クラスインスタンス変数ってのがあるんですね (←節穴野郎) 。
>>540 みたいに使うのか。
なんか漏れにもうまいこと使い分けれそうです。ども。
0545sageNGNG
あのーすみません。なんか呼び名がごちゃごちゃしているのですけど、
正しい読み方ってどういう風に呼ぶのでしょうか??? > @、@@
クラスのインスタンスが持つ変数を「インスタンス変数」
クラスが持つ変数を「クラス変数」
という風に覚えていたのですけど、違ったのですか???
0546デフォルトの名無しさんNGNG
はうっ。
sage間違えた‥
0547デフォルトの名無しさんNGNG
>>545
あってる
@instance_variable オブジェクト毎
@@class_variable クラス毎
クラスはそれ自身がオブジェクトでもあるので両方持てる
0548デフォルトの名無しさんNGNG
mswin用gdbm.so バイナリを公開している所はないですかね。
http://jarp.jin.gr.jp/win32/aは知っているのだけれど、gdbm.soはないです。
Makefile が妙でnmake失敗してしまうです。
0549デフォルトの名無しさんNGNG
ttp://jarp.jin.gr.jp/win32/ でした。
0550デフォルトの名無しさんNGNG
gdbm.dllを.soにリネーム
0551548NGNG
ぐわっ、こんな簡単なことだったなんて。
ありがとうございました。
0552デフォルトの名無しさんNGNG
windowsの.dll=*nix系の.so
って事を知らない人、結構いるね。
この板だと話が通じない事多い。
0553デフォルトの名無しさんNGNG
同じだったの?ELFとCOFFとかって違わないの?
0554デフォルトの名無しさんNGNG
同じと思っててイイヨ
0555デフォルトの名無しさんNGNG
この板だと
>>553みたいに
話が通じない事多い。
0556Rubyist@553NGNG
ウゼェェェェェエエェェェーーーーーーェェーェーェ>>>>>>>>>>>>>555
しらなかったんだよシラネーよ知って根ーよシラララララララネネネネネネネシラネー
ヨヨヨヨヨヨヨヨヨヨヨヨヨヨヨヨ
ブァベブチャグチャグハアァァアアアアァァブァァアアァアアウアウアアウアウウウウウアウウアウウアあうアウアアウアウガアアアアアウゥァウガアカカカガ゙カクククセゼグギ
0557デフォルトの名無しさんNGNG
http://jarp.jin.gr.jp/win32/gdbm-1.8.3-1-mswin32.zip
をダウンロードし、
\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
嘘を嘘と見抜けない人は……(ry

まあ、元の聞き方が悪いから仕方がないけど。
それはrubyから(gdbmモジュールを通して)使うgdbmライブラリ本体だよ。
それくらいzipファイルの中身を見て見当つけなさい。

0559デフォルトの名無しさんNGNG
つーか、jarpのwin32ディレクトリの存在を知ってるのにその意味を知らない
というのはいかがなものか。
0560デフォルトの名無しさんNGNG
Ruby のスレで嘘を付かれるなんて、信じていたのにッ。
0561デフォルトの名無しさんNGNG
>558
後学のためにどう聞けば良かったか教えてください。
0562デフォルトの名無しさんNGNG
>>561
558じゃないけど。

Makefileがどう妙なの?
どうやってMakefileを作ったの?
rubyのバージョンは?(557に書いてあるけど)

あたりは最低限必要かと。
それがわかれば、もうちょっとましな質疑応答になると思われ。

ちなみに、今回の場合は、550が嘘で552は本当だけどミスリーディング。
0563デフォルトの名無しさんNGNG
RDってHTMLと比べて何が嬉しいんですか?
0564デフォルトの名無しさんNGNG
生でも読みやすいところ?

unix板の情報整理スレでも「メモはRDで書いてる」ってのが
何度か挙げられていたから、良いモノなのかも。
0565デフォルトの名無しさんNGNG
タグが少ないからうちやすい
0566デフォルトの名無しさんNGNG
RD って plain2 と比べて何が嬉しいんですか?
0567デフォルトの名無しさんNGNG
Apacheのログの解析してるんですが、
ttp://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デフォルトの名無しさんNGNG
>>567
UTF-8は現nkfでは扱えない(nkf自体Unicode制定前のものだから当然だが)ので、
uconv,iconv,unkfあたりを使う。在処は

uconv: RAA
iconv: 1.8では標準、1.6ならshim
unkf: rough

0569デフォルトの名無しさんNGNG
>>568
さがしてやってみます。
0570567NGNG
できました。
unkfをインストールして、
require "cgi"
require "unkf"
q="%93%FA%96%7B%8C%EA"
NKF.nkf("-e", CGI.unescape(q))
で、EUCの文字列が取得できました。

どうもありがとうございます。
0571デフォルトの名無しさんNGNG
print nil
とすると、nilと表示されてしまうのですが、これを何も表示されないようにしたい。

class NilClass
def to_s
''
end
end
としても、
def nil.to_s
''
end
としても、nilと出力されてしまう。

どうすればよいか、知恵を拝借したい。
printを再定義しないとだめ?
0572デフォルトの名無しさんNGNG
inspect を再定義。
つか、print 対象に nil がこないようなロジックにすべきじゃないかと。
0573デフォルトの名無しさんNGNG
>>571
諦めてprintを再定義してくれ。

>>572
inspectをどれだけ変えても無駄では?
なにしろ、printのソースが
 case T_NIL:
  rb_io_write(out, rb_str_new2("nil"));
だ。

0574デフォルトの名無しさんNGNG
>>573
あ、ほんとだ。早とちりだった。
0575デフォルトの名無しさんNGNG
>>573
まじで?ソースコード埋め込みだったのか。

質問の背景を説明すると、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
>>575
もっといい方法がありそうだが、
user = cgi['user'].first || ''
なんてのはどうだろう。一行で書けるし。
0577デフォルトの名無しさんNGNG
print "#{user}<br/>\n"
print "#{mail}<br/>\n"
0578デフォルトの名無しさんNGNG
>>575
576+577で脳内idiom化済み。
0579デフォルトの名無しさんNGNG
>>576
最初はこうしてたんだけど、
http://localhost/login.rbx
と
http://localhost/login.rbx?username=&password=
とを区別したかったので(前者ではcgi['username'][0]はnil、
後者では "" )、使わないことにした。

>>577
これ、うまくいくね。ありがとう。
でもなんで?もし仕組みをしってたら教えてください。
0580デフォルトの名無しさんNGNG
#{} は String 以外は to_s で String に変換するから。

もちろん明示的に
print user.to_s, "<br/>\n"
としても望み通りになる。
0581デフォルトの名無しさんNGNG
>>580
うー、そういうことか。
def nil.to_s() とか class NilClass; def to_s() ... とか
していたおれはアホやね。すでにそうなっていたのか。
さんきうです。
0582デフォルトの名無しさんNGNG
そもそも、CGIの入力を無加工で出力するなんて考えられないのだが。
0583デフォルトの名無しさんNGNG
だって、質問のためのサンプルだもん。
現実のコードが複雑なら、質問するときは本質部分だけをとりだした
簡単なものを示すのが普通では?
0584デフォルトの名無しさんNGNG
>>583
その「簡単なもの」が571だというならそれはそれで納得なんだけど。

575のようにCGIの入力を無加工でprintに渡すわけはないので、
それまでに別のところでnil問題に遭遇するだろう、ということだよ。
なので、575でいう「こんなとき」はありえない。
0585デフォルトの名無しさんNGNG
Cygwinにpackage: ruby-1.6.8-1が出たわけだけど、
ソース取ってきて自分でビルドするのと比較して何が嬉しいの?
0586デフォルトの名無しさんNGNG
ソース取ってきて自分でビルドしなくてもいい
0587デフォルトの名無しさんNGNG
ruby捨てるのが簡単に
0588デフォルトの名無しさんNGNG
>>585
ソース取ってくるほど熱心でないユーザも使う可能性が増える。
0589デフォルトの名無しさんNGNG
そしてリリースがますます慎重に
0590デフォルトの名無しさんNGNG
cygwinのバイナリをビルドした設定って後から参照できるように記録されているの?
だとしたら、使ったバイナリをビルドした設定を記録するのがちょっとは楽になるかな。
0591デフォルトの名無しさんNGNG
>>590

???
今いち言いたいことが分からないけど、Un*x と変わらないよ?
0592デフォルトの名無しさんNGNG
Cygwin 環境だと configure につけるオプションって --enable-shared くらいじゃ。
0593デフォルトの名無しさんNGNG
yamlインポートage
0594デフォルトの名無しさんNGNG
>>593
でも動かない。
0595デフォルトの名無しさんNGNG
インポート?
0596デフォルトの名無しさんNGNG
addだな。いやそういうことはどうでもいいんだが。
0597デフォルトの名無しさんNGNG
YAML.rb って Racc で真面目にフル実装しようとしてるせいか、かなり重くないですか?
機能限定でいいから軽い YAML 実装ってないですかね?
無きゃ自分で書くしかないんだけど・・・
0598デフォルトの名無しさんNGNG
>>585
Cygwin入れてない環境でも、Cygwin DLLさえあれば使える。
…mswin32版との具体的な差が気になるところではあるけれども。
0599デフォルトの名無しさんNGNG
プログラミング自体初心者なんだけど、
「これは見とけ」とか言うサイトや本ある?
もう、馬鹿でも分かるような。
0600デフォルトの名無しさんNGNG
ruby本で?
「たのしいruby」あたりはどうかね。
0601名無しさん@xyzzyNGNG
Ruby ホームページ
http://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
0602599NGNG
ありがとうございます。
Rubyのオフィシャルサイトはもちろん見ましたよー。
でもRubyって、どのサイトも
「プログラミングそこそこ理解できる」が前提みたいな感じで、
まるっきりの初心者対象にしたようなページはあまり見つからないんですよね。
その点で多少敷居が高いと感じたり…。
0603デフォルトの名無しさんNGNG
やっぱり「たのしいruby」とか「Rubyプログラミング入門」くらいしか思い浮
かばんなぁ。

ところで、「プログラミング初心者」であっても「コンピュータの初心者」じゃ
あないよな?
0604597NGNG
結局 YAML.rb 使わないことにしますた。
しかし、-ryaml するだけで重いんですよね。
そもそも Racc 自体が重いのかしら・・・?
0605デフォルトの名無しさんNGNG
1.8に入ったsyckはracc使ってないと思う。
0606デフォルトの名無しさんNGNG
高橋 麻奈で「やさしいRuby」か
結城 浩で「Ruby言語プログラミングレッスン」キボン
いや、Rubyはプログラミング初心者にはやさしいつくりではあるが、
解説書で初心者(他言語経験者を除く)にやさしいのはっていうとちょっと?だったりする。
他言語のいい初心者本からRubyにきたほうがいいかもって、本末転倒。
ひと頃と比べるとRuby本の出るペースも落ちてきてちょっとさびしい。
0607597NGNG
>>605
どうもです。ちょうどさっき Syck の存在を知って調べ始めたところでつ。
# 1.6 ユーザなので流行に乗り遅れてますね・・・
0608597NGNG
Syck でつが、コメントの扱いとかダメダメな悪寒。
ほかにも気になるところが沢山あるのですぐには使えないな・・・
もうちょっと調べてみよう。
0609デフォルトの名無しさんNGNG
>>608
詳しくレポートきぼん。
量が多ければruby-bugsかruby-devへ。
0610599NGNG
>>603
どのくらいの知識と経験を積めば「コンピュータの初心者」から脱出できるのか
分からないので何とも言えませんが、少なくとも、
PCを昨日今日買ってきたというレベルではありません。

以前、まつもとゆきひろ氏の「Rubyプログラミング入門」を入門書として購入しましたが
余計な注釈や、読みづらい本文で(゚Д゚)ポカーン
この本では「楽しいRuby」は無理だと感じました。
0611デフォルトの名無しさんNGNG
「Rubyプログラミング入門」は原先生のはずだが。

注釈云々からすると「オブジェクト指向スクリプト言語Ruby」(通称Ruby本)じゃ
ないかと思うが、あれはまったく初心者向けじゃないよ。
0612デフォルトの名無しさんNGNG
Rubyの初心者向けであって、(オブジェクト指向)プログラミングの初心者向けじゃない。
つーことね。
0613デフォルトの名無しさんNGNG
>>610
個人的経験からいうと、初心者向けのサイトを作ると覚えるよ。
0614599NGNG
>>611
スマソ、今見直したら
「原信一郎 著 まつもとゆきひろ 監修」と書かれてますた。
「著 まつもとゆきひろ」部分だけ見て激しく勘違い。
本の名は間違い無く「Rubyプログラミング入門」。
0615名無しさん@xyzzyNGNG
>>599
目的がないからおぼえないんだよきっと。tdiaryとか導入していま流行の
bloggerになってみれば?tdiaryのpluginをかくためにrubyを覚えたひと
もいるよ。

0616デフォルトの名無しさんNGNG
オレも「たのしいRuby 」に一票。
0617597NGNG
>>609
syck-0.15 とかいうのだとダメだったんで、
CVS 最新を取り寄せて試してみたところ、問題なさそうでした。
また何か問題が見つかったら適宜報告するようにします。
0618597NGNG
つーか、 Syck は全然重くないっすね。快適快適。
YAML もっと普及するといいなぁ。
0619デフォルトの名無しさんNGNG
結城 浩(の本)に−1票
0620デフォルトの名無しさんNGNG
Perlをちょっとやったことあるなら「Rubyプログラミング入門」がいいね。
これ読むまで、
オブジェクト?はぁ?クラス?はぁ?インスタンス?はぁ?
って感じの漏れだったが、これ読んだら概念がちょこっとわかったよ。
ちなみに「たのしいRuby」を読んでもオブジェクト指向がなんなのか
全然理解できなかった。これを読んだあとも
オブジェクト?はぁ?クラス?はぁ?インスタンス?はぁ?
の状態に変わりはなかった。
けど、超基礎から説明してるので、
プログラム自体が初心者の人は「たのしい」から読むべきだろうね。
「Rubyプログラミング入門」はUNIXの基礎とか、プログラムの基礎とか知らないと、
わけの分からん用語の連続になっちゃうよ。
0621デフォルトの名無しさんNGNG
プログラムスーパー初心者です。
Rubyに興味を持ち、先日初めてオフィシャルページを
みてきました。Rubyはvariable declarationがいら
ないようなんですが、そこで質問です。
functionがinteger valueにreturnするときなんか
はどうなるのでしょう?例えばc++で
int function(int i, int j)
{
return i+j;
}
これをRubyでかくと、どうなるのでしょうか?
簡単すぎる質問ですみません。

0622Ruby知らないNGNG
関数(とは言わない?)の書き方くらいマニュアルや初心者本でも載っているんじゃなかろうか。
0623621NGNG
>>622
すみません。海外在住なのです。
日本の本が手に入らない僻地にいるので、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デフォルトの名無しさんNGNG
>>621

def function(i,j)
 return i+j;
end

とも書けるけど、大半のヤシは

def function(i,j)
 i+j
end

と書くだろう。
0626デフォルトの名無しさんNGNG
>>597
YAMLは、現在開発中の新バージョンは拡張ライブラリになって
おり、これはとっても速いらしい。まだα状態だろうけど。
0627デフォルトの名無しさんNGNG
>>621
def function(i,j) i+j end
p function(1,2) #=> 3
p function("foo"+"bar") #=> "foobar"

型を指定するための方法というのはない
どうしても検査したければ obj が Klass のインスタンスであることを
obj.is_a? Klass によって検査することはできるがあまり使わない
0628デフォルトの名無しさんNGNG
>>627
> p function("foo"+"bar") #=> "foobar"
p function("foo","bar") #=> "foobar"

0629621NGNG
マトリックスを観てきて、今帰ってきました。
夜12時のshowだったのですが、すごい混雑ぶりでした。

>>625, 627
どうもありがとうございます。
本当に型がないのですね。(笑) javaとC++しかしらな
い私にとっては、とても不思議です。
0630デフォルトの名無しさんNGNG
>>629
> 本当に型がないのですね。
変数にはない。オブジェクトが型を持っている。
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
>>597
開発中のYAML次期バージョンは拡張ライブラリとして実装
されているため、とても速いらしい。
0633( ´w`)NGNG
http://www13.big.or.jp/~fubuki/
ここの管理人は『2chに行くヤツは全員オタクだ。
2ch用語発言したボケはアク禁』などとほざくゴミだ。
これはひろゆき氏及び全ての2ちゃんねらーに対する侮辱である。
ここに行って2ch用語を連発して頂きたい。
0634デフォルトの名無しさんNGNG
>>633
藻前一人でいきがってれば?
0635デフォルトの名無しさんNGNG
>>634
藻前
konnnakotobadukaisuruyatuniiwaretakunaiyona.
0636デフォルトの名無しさんNGNG
>>597
開発中の次期バージョンの Ruby は拡張ライブラリとして
現在とても速いα実装をしており、とても YAML らしい。
0637デフォルトの名無しさんNGNG
人工無能のテスト中なのか…?
0638デフォルトの名無しさんNGNG
Array を shuffle したいのですが、スマートな方法はありますか?
0639638NGNG
試しに自分でも書いてみた。非破壊的バージョン。でもいまいちだよなぁ。

class Array
def shuffle
src, dst = self.dup, []
while not src.empty?
dst << src.delete_at(rand(src.size))
end
dst
end
end
0640デフォルトの名無しさんNGNG
古いのが出て来た。

class 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デフォルトの名無しさんNGNG
class Array
 def shuffle!
  size.downto(1){|i|
   push delete_at(rand(i))
  }
  self
 end
end
0642デフォルトの名無しさんNGNG
rand(1)は常に0だから1までdowntoするのは無駄。

それと、delete_atはそれ以降を全部ずらすから、大きいArrayに対しては効率
が落ちる。
0643デフォルトの名無しさんNGNG
要素数がトランプの枚数くらいだったら>>641のが速い(Ruby1.6.8)…が、それくらいならそもそも速度気にしない罠

おまけ(実用性はたぶんない)
class Array
 def shuffle!
  sort!{
   rand - 0.5
  }
 end
end
0644デフォルトの名無しさんNGNG
sort{ rand - 0.5 } がランダムな入れ替えになるというのがいまだによく分からない。

いや、もちろんなんだかぐちゃぐちゃになりそうだなってのは分かるけど
ちゃんとn!通りの並びの全てが等確率で出るのかどうかよく分からない。
0645デフォルトの名無しさんNGNG
しかも終わらなさそーだし。
0646デフォルトの名無しさんNGNG
>>645
ソートのアルゴリズムも知らない中学生ですか?
0647デフォルトの名無しさんNGNG
>>646
試してみるとわかると思うが、終わらない。
0648デフォルトの名無しさんNGNG
>>647
% 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デフォルトの名無しさんNGNG
class Array
  def 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
>>643の場合を、quick sortで考えてみる。
中央値はランダムに決定されることは自明だと思うので省略。
残りの要素はランダムに振り分けられるので、左右どちらに行くかは等確率。
これを再帰的に繰り返せば全体も等確率と考えていいんじゃないかな。
ただ、最後はselection sortを使ってるんで、これは等確率じゃないような気がする。
n個の要素から最小値を選び出す場合、最初に比較された要素が選ばれる確率は
2**(1-n)だけど、最後に比較されたものが選ばれる確率は1/2。

おまけ
def tossup
  rand(2)*2-1
end
0651デフォルトの名無しさんNGNG
for i := 0 to length(arr)-1 do
 swap(arr[i], arr(rand(length(arr))));
0652デフォルトの名無しさんNGNG
>>644 ダメポ
def 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デフォルトの名無しさんNGNG
ary.sort_by { rand }
0654デフォルトの名無しさんNGNG
Enumeration#sort_by の実装の話?
0655デフォルトの名無しさんNGNG
Enumerable の typo だとしても、何を言いたいか分からない。
0656デフォルトの名無しさんNGNG
>>652
> >>650 スマン、最後はselection sortってどういうこと?
勘違い。ruby_qsort()は切替えたりしてないな。

> それは抜きにしても左右に振られるのがランダムであることから
> 等確率であることをいうのは飛躍が大きいと思われ。
というか、順次比較して行くから等確率じゃないな。
0657デフォルトの名無しさんNGNG
>>645の意図が分かった気がする。
>>643の場合、停止確率は1だが停止しない場合もあると言いたかったんだろう。
それならば正しい。
しかし>>647は間違いだな。確率0の事象を実際にみることはないに等しい。
0658デフォルトの名無しさんNGNG
>>657
>>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
>>656
> というか、順次比較して行くから等確率じゃないな。

それも明らかじゃないと思う。難しい。
0660653NGNG
>>653って何かおかしい? スマートな実装だと思ったんだけど……。
0661653NGNG
つーか、>>508 あたりから既出なのか。スマソ。
0662デフォルトの名無しさんNGNG
[ruby-dev:20209] からのスレッドを見ると、>>491 のような疑問は尤なような。
0663デフォルトの名無しさんNGNG
rdoc なんだけど、ここ
ttp://rrr.jin.gr.jp/doc/http-access2/
の rdoc の出力は、rdoc-0.9.0 の標準 (Squeak のクラスブラウザみたいに、上半分に
クラス階層やメンバが表示されているやつ) とは違って、左半分にクラス階層やメンバが
表示されているんだけど、

これって rdoc の CVS 版使うとこうなるのかな?誰か知っている人いますか?

0664663NGNG
>>663
すいません、自己解決しました。

ttp://rrr.jin.gr.jp/doc/Makefile
をみたら、--template kilmer っていうオプションが rdoc にあるみたいね。
0665デフォルトの名無しさんNGNG
rubyで、文字列が'aaa', 'bbb', 'ccc'のどれかであれば真、
それ以外では偽という条件を書くとき、
if str=='aaa' || str=='bbb' || str=='ccc' then
 ...
end
としているのですが、もっとうまい書き方はありますか?

case str
 when 'aaa', 'bbb', 'ccc'
 ...
end
でもよかったんだけど、if修飾子としても使いたいので
できればif文での書き方を希望。
0666デフォルトの名無しさんNGNG
>>665
Rubyスレをあげないでください。
0667デフォルトの名無しさんNGNG
>>665
if %(aaa bbb ccc).include?(str)
0668667NGNG
うおお、ミスった。
if %w(aaa bbb ccc).include?(str)
0669デフォルトの名無しさんNGNG
>>668
なるほど、配列の要素として含むかどうかで判断するのね。
ちなみにこれ、実行するたびに配列が作成されるのかな?
erubyやmod_rubyで使用すると、実行するたびにオブジェクトが
増えてしまう?
(仕方ないか)
0670667NGNG
>>669
実行のたびに配列は生成されちゃうだろうね。
それがいやだったら、配列を定数に入れとくとか。

ifの評価が終わったら参照されない配列になるから、
gcされちゃうんで増え続けることはないだろう。
0671デフォルトの名無しさんNGNG
漏れならこっち
if /\A(?:aaa|bbb|ccc)\z/ =~ str
0672669NGNG
どうもありがとう。
いろんなやりかたがあるのね。
0673デフォルトの名無しさんNGNG
>>671
なるほど。正規表現のリテラルだったら毎度同じオブジェクトなのか。

$ 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
>>673
> VALUE * を使い回す話とごっちゃになってた。
何それ?
0675デフォルトの名無しさんNGNG
>>674
たぶんC言語レベルでのソースコードの話。
VALUEって型があって、それへのポインタのことでは?
0676デフォルトの名無しさんNGNG
>>673
そうとも限らないんだけどね。

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デフォルトの名無しさんNGNG
真中のは厳密にはリテラルと言わないような気もする。
0678デフォルトの名無しさんNGNG
真中のは言わなくても最後のは言うの?
0679デフォルトの名無しさんNGNG
>>675
それは分かるんだけど、「使い回す」ってのが何の話だかが。
0680デフォルトの名無しさんNGNG
>677 はリテラルとは何か定義してみれ。
# 最近fj.lang.cでフレームになってたような気もするが。
0681デフォルトの名無しさんNGNG
fj.lang.cだと最近じゃないわけだが。
0682デフォルトの名無しさんNGNG
文脈によっては、たとえ100年前でも最近ていうからなぁ。
0683デフォルトの名無しさんNGNG
で、そういう文脈なの?
0684デフォルトの名無しさんNGNG
俺様のニュースサーバで expire されてなければ最近。
0685デフォルトの名無しさんNGNG
で、あなた様のニュースサーバはどこにあるんですか?
0686山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0687デフォルトの名無しさんNGNG
http://www.rubyist.net/~matz/slides/ipsj-hi103/index.html
にあるグラフはどっからのデータのグラフなんだ
もしかしてmatzが主観で書いたグラフか?
0688デフォルトの名無しさんNGNG
客観データだとしたらむしろびっくりだ
0689デフォルトの名無しさんNGNG
lzhやzipなどの書庫ファイルの中身を
Rubyからアクセスしたいのですが、どうしたらいいでしょうか。
0690デフォルトの名無しさんNGNG
list = `"lzh lq #{archive}")`.split(/\n/)
list = `"zipinfo #{archive}"`.split(/\n/)[1...-1]
0691デフォルトの名無しさんNGNG
Array#sort が比較関数をブロックで渡せるんだから、
Array#uniq も比較関数をブロックで渡せたら…と思いませんか?
0692デフォルトの名無しさんNGNG
>>691
思わないなぁ。めんどくさいと思うよ。
それなら俺様 uniq を作った方が早いと思う。
0693デフォルトの名無しさんNGNG
>>690
どうも。
書庫内のファイルの中身も見たいので、DLLのAPIヘルプを見ているところです。

0694デフォルトの名無しさんNGNG
>>693
環境はWindowsなのか?
なら「Ruby+統合アーカイバ+DLL」でぐぐるとなんか出てくる。

zlibを使ったRubyZipってのもあったはず。
0695デフォルトの名無しさんNGNG
というか、RAA。
0696デフォルトの名無しさんNGNG
>>694
情報どうもです。いろいろ試してみます。
0697デフォルトの名無しさんNGNG
pythonマンセ〜
0698デフォルトの名無しさんNGNG
http://pc2.2ch.net/test/read.cgi/tech/1047970129/782 に出ている、
遅延評価に対応した ruscheme というのを試してみたいのですが、
どこかダウンロード可能なところは無いでしょうか?
0699デフォルトの名無しさんNGNG
>>698
ぐぐれ。ちなみに綴りが間違ってる。 Rucheme だ。
0700デフォルトの名無しさんNGNG
綴り間違い失礼。

rucheme003 はまだ遅延評価に対応していないみたいなんです。
もっと新しいのはダウンロードできないんでしょうか?
0701デフォルトの名無しさんNGNG
まつもっちゃんよ・・・

頼 む か ら ソ ケ ッ ト の g e t c で デ ッ ド ロ ッ ク す る の 直 し て く れ

これじゃネットワーク全然使えねーよ
0702デフォルトの名無しさんNGNG
>>701
再現出来る短いコードを書き環境を明示して晒してみたら?
0703デフォルトの名無しさんNGNG
ごめ。スレッド使えばデッドロックにはならないぽい。
でもスレッドは止まる。timeoutも効かん。

再現?簡単だYO!
TCPServerとTCPSocketで試してみ。

ソケットオープソ
↓
接続
↓
getc (getsでもreadでも何でもいいが)
↓
受信データを送らない
↓
あぼーん
0704デフォルトの名無しさんNGNG
>>703
だから、再現コードと再現環境を晒せっての。
どんなコードや環境でも再現するようなら
今頃 Ruby なんか使ってる香具師なんかいねえよ。
0705デフォルトの名無しさんNGNG
>>704
ワカタ。ゴメン。ちょと待ってろ
0706703NGNG
uwaaaaaaan

書き込めねえよ

でけえとかなげぇとか言うなよ

>>704スマソ
環境だけ書かせてもらうわ

Ruby1.6.8 無印とCVS版200304全般
mswin32、mingwは全滅。Cygwinは送信だか受信のどっちか×だった。

1.8pre2のLinux版では問題なし。
0707デフォルトの名無しさんNGNG
ttp://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=trap%3A%3Atimeout
これってまだ直ってないんだっけ
0708703NGNG
少なくとも上の環境では無理ぽ
0709デフォルトの名無しさんNGNG
>>706
> mswin32、mingwは全滅。
winsockの呼び出しは中断できないから。

ついでにいっとくと、Windows対応はまつもとさんにいっても無意味。
0710デフォルトの名無しさんNGNG
つか、デッドロックの意味がわかってない悪寒
0711デフォルトの名無しさんNGNG
Rubyでcrc32を求める一番無難な方法は何でしょう?
それともMD5使っとけばいいんですかね。
0712デフォルトの名無しさんNGNG
単なるブロックをデッドロックと言うのは最近の流行か何かですか?
0713デフォルトの名無しさんNGNG
ネットワークプログラミングをするべきでない人たちが
ネットワークプログラミングをするのが流行っているようです。
0714デフォルトの名無しさんNGNG
こうしてRubyは消えていったとさ。



     〜〜 完 〜〜
0715デフォルトの名無しさんNGNG
まだ粘着がはりついてるのか(藁
0716デフォルトの名無しさんNGNG
藁って久々に見ました。
0717デフォルトの名無しさんNGNG


701 名前: デフォルトの名無しさん [sage] 投稿日: 03/06/05 02:18
まつもっちゃんよ・・・

頼 む か ら ソ ケ ッ ト の g e t c で デ ッ ド ロ ッ ク す る の 直 し て く れ

これじゃネットワーク全然使えねーよ

0718デフォルトの名無しさんNGNG
module ComparisonChainable
def 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デフォルトの名無しさんNGNG
>>709
selectはできるかな。
0720デフォルトの名無しさんNGNG
ruby 1.6 と 1.8 の両方で動作するプログラムを書こうとしていますが、
Hash#indexes をつかうと 1.8 だと warning がでます。
Hash#values_at をつかうと 1.6 では動きません。
どうすればよいですか?
0721デフォルトの名無しさんNGNG
class Hash
alias values_at indexes unless self.instance_methods.include? "values_at"
end

こう?なんか違ってそう。
0722デフォルトの名無しさんNGNG
method_defined?
つーかshim使えよ。
0723デフォルトの名無しさんNGNG
>>719
ソケットに対しては使える。
0724デフォルトの名無しさんNGNG
>>718
ailas

ruby-mode.elとか、強調表示できるエディタを使え。
0725デフォルトの名無しさんNGNG
>>722
shim は嫌
0726デフォルトの名無しさんNGNG
>>721-722
なんかかっこ悪いなあ。1.8 でも indexes で warning を出さないべきだと思うのは
漏れだけ?
warning を出したければ 1.9 以降にして欲しい。
0727デフォルトの名無しさんNGNG
>>726
いまさらそんなこと言っても...
0728デフォルトの名無しさんNGNG
>>727
1.8はまだ出てないじゃん。

次のレスの予想:
ここでそんなこと言っても...
0729デフォルトの名無しさんNGNG
Rubyの質問スレがないようなので,ここに投稿させてもらいます.

10人が受講する科目Aの成績平均を計算するため
「氏名,成績点」をキーボードから入力して,
連想配列に格納する.得られたデータから平均値を算出し,
最後に,氏名,素点,平均からの偏差を画面出力したい.

という問題があり
dt = ArrayScore.new(10);
dt.inputData();
dt.meanCalc();
dt.outputData();
と実行するみたいなんですけどうまくできません.
リファレンスマニュアル見ながら作ってみたんですが
エラーが直りません.どなたか直してもらえませんか.
次に全文載せます.
0730デフォルトの名無しさんNGNG
class ArrayScore
@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
0731729NGNG
dt = ArrayScore.new(10);
dt.inputData();
dt.meanCalc();
dt.outputData();

これで全文です.
0732デフォルトの名無しさんNGNG
- def new n
+ def initialize n
0733729NGNG
>>732
ありがとうございます
最初のエラーが消えました.
ただ次に
`inputData': undefined method `clear' for nil (NameError)
と出てきてしまいました.
リファレンスマニュアルのHashのところには
たしかメソッドとしてclearがあったと思うんですが
これはどういうことでしょう.
hashを使うのに最初になにか宣言がいるんでしょうか.
0734デフォルトの名無しさんNGNG
頭悪すぎ……。メッセージよく読めよ。
0735デフォルトの名無しさんNGNG
>>728
1.7 で既に出ている warning を 1.8 で出すなとおっしゃるのですか?
0736デフォルトの名無しさんNGNG
>>733
@hash = {}; @num = 0; @mean;
を initialize メソッドの中に。

どのスコープの中にいるかをよく考えてね。
0737デフォルトの名無しさんNGNG
>>735
1.7は開発途上のバージョンだし、最初のほうと今では仕様が違っている点は
いくらでもあるし、別に関係ないんじゃない?
0738729NGNG
>>736
ありがとうございます.
やっと動きました.
メソッドの中に入れたら
他のメソッドで使えないとか思ってました.
0739デフォルトの名無しさんNGNG
Ruby用の、Windowsで使えるおすすめエディタってどんなのがありますか?
0740デフォルトの名無しさんNGNG
>>739
なんでんかんでんMeadowでよかとよ。
0741デフォルトの名無しさんNGNG
>>739
とくにおすすめはしないがMeadow。
おれはとても便利に使ってるが、
windowsアプリケーションとして見たら癖ありすぎだもんで。
0742デフォルトの名無しさんNGNG
>>740
どうもです。探してみます。
0743デフォルトの名無しさんNGNG
Emacsみたいなエディタかぁ
0744740NGNG
Linuxやるときに、CUIでエディタ使えるようになるから一石二鳥。
0745740NGNG
>>743
emacsのwin版 = Meadow
0746デフォルトの名無しさんNGNG
Ctrlキーに指が届かないからvi使っている。。。
0747デフォルトの名無しさんNGNG
>>742
もしMeadowを使うことに決めたのなら、
rubyのパッケージについてくるruby-mode.elを使うようにしなよ。
これを使わないとMeadowを使う意味が半減だ。
0748デフォルトの名無しさんNGNG
xyzzy用のruby-mode.lもあったよな。
0749デフォルトの名無しさんNGNG
RDEも挙げてみる。使ったことないけど。
0750デフォルトの名無しさんNGNG
自分自身の言動を「〜していたらしい」と書く人がいるが何度見てもキモい
0751デフォルトの名無しさんNGNG
Eclipse はどうなん?
0752740NGNG
>>746 余談だが・・・
Ctrlキーを指ではなく、手のひら(小指の付け根よりちょっと下)
で押すと良いらしぃ。
0753デフォルトの名無しさんNGNG
>>746
ESC キーの方が遠くないか?
0754デフォルトの名無しさんNGNG
窓使いの憂鬱で CapsLock と Ctrl を変えれば。
0755デフォルトの名無しさんNGNG
>>750
昨日ウェブを巡回していたらしいたけ皮膚炎という病気の存在を知った。
0756デフォルトの名無しさんNGNG
>>752
変換/無変換をCtrlに割り当てる。これ最強。
0757デフォルトの名無しさんNGNG
>>756
そのどっちかをshiftに割り当てようよw
0758デフォルトの名無しさんNGNG
>>757
いや、shiftよりCtrlの方が使用頻度高いし。
代わりにカタカナひらがなをshiftに割り当ててみたんで、しばらくこれで試してみよう。
0759デフォルトの名無しさんNGNG
あるクラスの中で、

def +=(i)
end

def -=(i)
end

def *=(i)
end

def /=(i)
end

がsyntax errorになります。
これらの実装はどうやんの?
0760デフォルトの名無しさんNGNG
+=などは+などから自動的に定義されます。
独立して定義することはできません。
0761デフォルトの名無しさんNGNG
>>753
上(ESC)は届くけど、下(Ctrl)はホームポジションから離れないと届かないよぉ ちなみにノートPCのキーボード
0762デフォルトの名無しさんNGNG
++も自動的に定義してくれよ。
0763デフォルトの名無しさんNGNG
++ など必要ではありません。
0764デフォルトの名無しさんNGNG
はっちゃけた!!
succ!のaliasにすればいいんだよ>++
0765デフォルトの名無しさんNGNG
実際のところ++があったとしてRubyで使う場面てそんなにないような。
…ってこのての議論はもう飽き飽きw
0766デフォルトの名無しさんNGNG
まつもとさんは確か++を実装しないと言ってたと思った。
だから誰か++を実装したRubyをブランチしなよ。名前はRuby++w
0767デフォルトの名無しさんNGNG
Emacs系エディタを使うか使わないかに関わらず,
AltIME等でCtrlとCapsLockを入れ替えたほうがなにかと左手小指にやさしいかと。
保存やコピペなど,Ctrlキーを使う機会は多いから。
ついでに"Ctrl+["でESCを押したのと同じだからviユーザにとっても
押しやすいCapsLockの位置にCtrlがあったほうが幸せでしょう。
0768デフォルトの名無しさんNGNG
>>767
Aの隣にCtrlがあったほうがいいか、というとそうでもないらしい。
おれはそっちのほうがいいんでmayuで設定しているが。

一般的な106とか109キーボードのCtrlの位置(左Shiftの手前)に
あったほうが使いやすいという意見もある。
それはそれでうなずける主張だと思うんだな。
0769デフォルトの名無しさんNGNG
CapsLockはCapsLockとして使うよ
0770デフォルトの名無しさんNGNG
つまらない話題ですね。
0771デフォルトの名無しさんNGNG
rubyって何に使うの?
車輪の再発明?
0772デフォルトの名無しさんNGNG
>>771
そういう批判をするならばCOBOLでも使ってろw
0773デフォルトの名無しさんNGNG
>>770
この間の読書会ではこれでかなり盛り上がってた。
0774デフォルトの名無しさんNGNG
ルビ基地に逢いたい
0775デフォルトの名無しさんNGNG
マツモト ユキヒロ どっかの店みたい・・・
ハァハァ(°д°;)ハァハァ
0776デフォルトの名無しさんNGNG
>>766
メソッドの実体は実装しなくていいから、せめて演算子として ++ 使わして欲しい。
0777デフォルトの名無しさんNGNG
まだ ruby 初心者だった頃、++演算子はあるもんだと思って

++i

とかやって、無限ループになってはまった。
0778デフォルトの名無しさんNGNG
ょぅι゙ょ
0779デフォルトの名無しさんNGNG
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 |  次でボケて!    |
 |_________|
    ∧∧ ||
    ( ゚д゚) ||
    / づΦ
0780デフォルトの名無しさんNGNG
goto >>778
0781名無しさん@xyzzyNGNG
だれかLL Saturday行く人いる?
0782デフォルトの名無しさんNGNG
郁代。
0783デフォルトの名無しさんNGNG
ょぅι゙ょ
0784デフォルトの名無しさんNGNG
refe.elの最初の補完リストを作るのに失敗するのですがどうすれば
いいんですかぁ。

環境が Meadow + ruby 1.6.8 (2002-12-24) [i386-mingw32] なので
(refe-call-process t "*") の * を ruby が自前で展開して
refeに*が渡らないのが原因だと思うのですが・・・
* を '*' にして展開しないようにしてもだめでした。
0785デフォルトの名無しさんNGNG
>>784 追記
M-x refe して * を指定するとrefeのusageが出て
'*'だとno such class or method: '*'になりまちた。
微妙にスレ違いですけど、どなたか・・・たすけて・・・
0786デフォルトの名無しさんNGNG
>>784
まず、ReFeのバージョンは0.7だよね?
それが大丈夫なら、refe '*[#,]*' でやってみ。
0787デフォルトの名無しさんNGNG
>>786
ReFe 0.71でつ。
M-x refe '*[#,]*'の結果は
not match: '*[##]*'だそうです。

0788784NGNG
さらに実験。
(defvar refe-program-args
'("-e" "puts ARGV"))
と書き換えてみると
M-x refe * の結果は refe.elをおいてるディレクトリのファイル一覧が出ました(゚Д゚)
'*'だと'*'と出ました。

もしかしてワイルドカードの展開ってmeadowさんがやってるの???
0789デフォルトの名無しさんNGNG
>>787
わかった。ruby を経由するのは潔くあきらめよう。
ReFe のデータベースディレクトリに method_document_comp という
ファイルがあるから、それを elisp を使って読み込んでくれ。
構造は中を見れば一瞬でわかるから。
0790デフォルトの名無しさんNGNG
>>784
(refe-call-process t "*")
を
(refe-call-process t "")

にしたらどうなるん?
0791789NGNG
>>790
あ、そうか。そっちのほうが賢いな。すまん。
0792784NGNG
>>790
> (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つかわねーし。
0793784NGNG
> > (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
スマソ。勘違いだった。
最初は引数なしだったんですね。
0794デフォルトの名無しさんNGNG
ruby foo.rb みたいに直接呼ばれたのか
他のスクリプトから load 'foo.rb' されたのかを,
foo.rb の中で見分けるにはどうしたらいいんでしたっけ?
0795デフォルトの名無しさんNGNG
if __FILE__ == $0
0796デフォルトの名無しさんNGNG
Hashの中身を表示する際に
「値」で降順ソートして「キー」と「値」を出力するのに
簡単な方法ありませんか?

valuesで全値の配列を返してもらって
それをsortメソッドでソートして
次にkeysで全キーの配列を返してもらって
そのキーに対応する値を順に見ていって
ソートした値の配列の前から順に対応してるのが
見つかったら出力していくって方法しかないでしょうか

これは一つ一つのキーで毎回値の配列を
全部確認するので効率悪い気がします

値は重複しているものもあるので
index(val)は使えなさそうです

0797デフォルトの名無しさんNGNG
Hash 使うの止めれば。
0798デフォルトの名無しさんNGNG
Hash#to_a
0799デフォルトの名無しさんNGNG
hash.map{|k, v| [v, k]}.sort.reverse_each{|v, k| puts "#{k} => #{v}"}

1.8ならこうもできる。
hash.sort_by{|k, v| v}.reverse_each{|k, v| puts "#{k} => #{v}"}
0800デフォルトの名無しさんNGNG
よくわかんねーけど、こういうこと?

hash = {'a' => 3, 'b' => 1, 'c' => 2}
p hash.sort {|a,b| b[1] <=> a[1]}
----------------
[["a", 3], ["c", 2], ["b", 1]]
0801デフォルトの名無しさんNGNG
あ、800ゲト
0802デフォルトの名無しさんNGNG
ordered_hashみたいなのって誰か作ってなかったっけ
0803デフォルトの名無しさんNGNG
>>802
http://raa.ruby-lang.org/list.rhtml?name=pseudohash
これかな。使ったことがある。
でもvalueに重複があってしかもinvertした結果、
つまりkeyが重複するようなのにつかえんだろう。
0804デフォルトの名無しさんNGNG
>>803
う。意味がとおらねえ。
valueに重複がある場合invertして果たしてそれが使い物になるかどうかわからん、
といいたかった。
0805デフォルトの名無しさんNGNG
拡張ライブラリについて質問!
Integer から size_t に入れたいときはどうすればよろしいの?
NUM2ULONG でいい?
0806デフォルトの名無しさんNGNG
hash.keys.sort {|a, b| hash[a] <=> hash[b]}.each do |key|
  p hash[key]
end
0807デフォルトの名無しさんNGNG
<=> の両辺が反対か。
値でソートしたいならすりゃいいじゃんってこった。
0808796NGNG
>>798>>799>>800>>806
ありがとうございます.

やりたかったことは>>799>>806です.
おかげでできました.

hashにmapなんてのがあるんですね
http://www.ruby-lang.org/ja/man-1.6/index.cgi?cmd=view;name=Hash;em=hash
ここにあるHashのメソッドしか知りませんでした.
0809デフォルトの名無しさんNGNG
>>808
> hashにmapなんてのがあるんですね
> ここにあるHashのメソッドしか知りませんでした.

漏れもよくはまるんだけど、Array や Hash は Enumerable を include してるので、
そっちのメソッドもチェックしる。
0810デフォルトの名無しさんNGNG
>>809
そうね。Hashに限らず何を継承(include含む)してるか見ないとね。
おれの場合マニュアル見るときFileを見るべきかIOを見るべきか
迷うことがよくあるw
0811デフォルトの名無しさんNGNG
リフレクションかなんか使って
オブジェクトが持ってるメソッド全部を
列挙できなかったっけ?
まあ列挙しただけじゃ使い方はわからないから
結局リファレンスを見ないとダメか。
0812デフォルトの名無しさんNGNG
>>811
できるしそういうブラウザもある。

でもやっぱり Hash や Array の場合、Enumerable のメソッドもマニュアルに
書いておいたほうが親切だと思うなあ。
0813796NGNG
>>809
なるほど
今後はもっとチェックしまつ
0814デフォルトの名無しさんNGNG
irb使ってるか?
0815デフォルトの名無しさんNGNG
irbってもっとカッコイイ名前だったらいいのになー。
0816デフォルトの名無しさんNGNG
iRuby?
0817デフォルトの名無しさんNGNG
ょぅι゙ょ
0818デフォルトの名無しさんNGNG
ムーア
0819デフォルトの名無しさんNGNG
伊良部でいいよ
0820デフォルトの名無しさんNGNG
irbと書いて I love Ruby と読む。これ最強。
0821デフォルトの名無しさんNGNG
電卓代わりに使ってる
0822デフォルトの名無しさんNGNG
>>821
電卓代わりならPerlとどっちがいいかな?
俺Perlつかってるけど
0823デフォルトの名無しさんNGNG
電卓代わりだったら、MAXIMAかSciLab、Risa/asirあたり
の方が強力だよ。
0824デフォルトの名無しさんNGNG
irb をログインシェルに使ってる香具師の数 →
0825デフォルトの名無しさんNGNG
0だな。
0826822NGNG
>>823
全部知らないや・・・調べてみよ―っと
0827デフォルトの名無しさんNGNG
>>823
電卓というにはちとオーバースペックな気もする
俺はちょっとした計算は
emacsの*scratch*バッファでelisp使ってます。
0828デフォルトの名無しさんNGNG
俺はbcだな。
0829デフォルトの名無しさんNGNG
ちょっとした計算なら俺は M-: だな。
0830デフォルトの名無しさんNGNG
俺はexprだな。
0831デフォルトの名無しさんNGNG
俺はRだな。
0832デフォルトの名無しさんNGNG
俺は電卓だな
0833デフォルトの名無しさんNGNG
俺はcalcだな
0834デフォルトの名無しさんNGNG
俺は指だな。
0835デフォルトの名無しさんNGNG
俺は爪楊枝です
つまようじ最強
0836822NGNG
>>835
計算してるときにケガしないように気をつけてね
0837デフォルトの名無しさんNGNG
俺は算木だな
0838デフォルトの名無しさんNGNG
俺はおなーにだな
0839デフォルトの名無しさんNGNG
>>827

elispって、(/ 3 2)が1になっちゃうんですけど、
その程度でいいってこと?
0840デフォルトの名無しさんNGNG
晒しあげ。
0841デフォルトの名無しさんNGNG
俺は計算尺だな。
0842デフォルトの名無しさんNGNG
俺は脳内妄想電卓だな。
0843デフォルトの名無しさんNGNG
>>839
rubyって 3/2 が1になっちゃうんですけど(ry
0844デフォルトの名無しさんNGNG
exprって 3 / 2 が1になっちゃうんですけど(ry
0845デフォルトの名無しさんNGNG
俺は gosh だな。
0846デフォルトの名無しさんNGNG
>>843
必要に応じて
require "mathn"
0847デフォルトの名無しさんNGNG
int/int が rational なのは結局Cプログラマが多いせいなんだろうな
0848デフォルトの名無しさんNGNG
間違えた逆だw
0849デフォルトの名無しさんNGNG
100万回ループの所要時間を調べようと思ったのですが

starttime = 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デフォルトの名無しさんNGNG
$ruby -rprofile hoge.rb
0851デフォルトの名無しさんNGNG
Range#each の速度が、トップレベルで使う場合と yield で呼び出された中で使う場合
で、かなり差があるように見えるんだけど、何か勘違いしている?
0852849NGNG
def forloop
for i in 1..1000000;end
end

starttime = Time.now.to_f
forloop
p [Time.now.to_f - starttime]

だとさらに結果が違うよう。わけわからん。
0853827NGNG
>>839
847 で答え出てるけど一応教えておく。
C でも 3 / 2 は 1 になるだろ!
小数値がほしかったら (/ 3.0 2.0) にしろや、ボケ。
0854デフォルトの名無しさんNGNG
>>849
後者はiがブロックローカル変数になるから。
0855デフォルトの名無しさんNGNG
>>853
だから、そんな面倒なことしてちゃ、今の時代生き残れないよってこと言いた
かったんよ。
rubyでcalc作ってる。自分用のoptionもたくさんあって、これ最強。
0856デフォルトの名無しさんNGNG
訳の分からないことを言いたがらないでください。
0857デフォルトの名無しさんNGNG
>>855
おまえは生き残れない
0858デフォルトの名無しさんNGNG
なるほど!伊良部の略だったのか、なるほど。
で、伊良部とrubyのつながりはどこにあるのだろうか?

わからない
0859デフォルトの名無しさんNGNG
>>853
ではCに合わせてるとみてよろしいか
0860855NGNG
>>857
俺は生きる、生き抜いてやる。
0861デフォルトの名無しさんNGNG
計算機が欲しければ普通にmaximaとかmupad使うのがいいと思うけど。
お金があるならmathematicaとかmatlabを使えばいいわけで。
分数計算で十分なら irb -m でもいいだろうが変数の入った式は扱えない。
0862デフォルトの名無しさんNGNG
Emacsじゃ(/ 3 2) => 1 かもしれないけど
Xyzzyなら (/3 2) => 3/2 だよ。
有理数のまま計算していって、答えを出す手前で + 0.0 して実数に直すと
丸め誤差が少なくてイイ!
0863862NGNG
/ と 3 がくっついてしまった。
誤: Xyzzyなら (/3 2) => 3/2 だよ。
正: Xyzzyなら (/ 3 2) => 3/2 だよ。
0864デフォルトの名無しさんNGNG
>>854
なるほど。たしかにbench {...} の前に i=nil を入れると速度差は誤差の範囲になりました。
しかしブロックローカルの変数って何で遅いんだろ?
0865デフォルトの名無しさんNGNG
Rubyの勉強にruby-dbiとPostgresを利用してるのですが、
select文で取得したレコードの、日本語の部分が化けてしまうのです。
原因・解決方法など教えてもらえませんか・・・?

0866865NGNG
化けた文字は

テスト
\245\306\245\271\245\310

こんなかんじです。
0867デフォルトの名無しさんNGNG
>>866
pの多バイト文字の出力はそんな感じになる。
print/putsあたりを使えば?
0868865NGNG
>>867
なるほど。print/putsは日本語表示されました。
pはprintの略なのかなぁと思ってました。
ありがとうございあす。
0869デフォルトの名無しさんNGNG
>>868
あるいは$KCODEを指定しとく。
0870デフォルトの名無しさんNGNG
>>864
メソッドスコープのローカル変数は配列になってるのに対して、
ブロックローカルはIDとVALUEのlinked listになってるから、
それをたどる分だけ遅くなる。
0871デフォルトの名無しさんNGNG
>>870
やっぱり Ruby Hacking Guide を読まなきゃならんか。
0872デフォルトの名無しさんNGNG
>>870
あんたすげーよ。勉強になった。
0873デフォルトの名無しさんNGNG
インスタンス変数へのaccessorは attr_accessor :v1, v2, ... を
使うことで簡単に定義できる。
では、クラスインスタンス変数へのaccessorはどうすればよい?
今は
class Foo
def self.v1=(v)
v1=v
end
def self.v1
@v1
end
end
とチマチマ定義している。
これをもっと簡単に定義したい。
0874デフォルトの名無しさんNGNG
>>873
class Foo
class << self
attr_accessor :v1,:v2,:v3
end
end
0875デフォルトの名無しさんNGNG
ようやくwww.cygwin/setup.exeにrubyが標準搭載されたので
次はRuby.netがVS.NETで使えるようにして欲しい。
0876デフォルトの名無しさんNGNG
>>874
ごっつさんくす。
かなーりたすかった。
今度おごるよ。
0877デフォルトの名無しさんNGNG
>>874

この書き方だとRubyスクリプトとしてはまったく問題ないけど、
RDocがうまく解釈してくれないね。惜しい。

(RDocのバージョン:RDoc Vbeta-2: 2002/07/22 21:07:31 (1.67))
0878874NGNG
>>877
class Foo
 class << self
  # v1 - Foo's instance variable
  attr_accessor :v1
 end
 # v1 - Foo's attribute
 attr_accessor :v1
end

みたくコメントを工夫するしかなさそうだね。
0879デフォルトの名無しさんNGNG
>>878

あれー、それでうまくいった?
試したけど、どちらもインスタンス変数へのアクセッサと
してしか認識されなかったよ。
RDocのバージョンが古いのかな?
0880デフォルトの名無しさんNGNG
win32api の SendInput() を使いたいんですが、誰か書いてませんか。
引数が Struct 使う場合にどうすればいいのかよくわからないんです。
0881デフォルトの名無しさんNGNG
>880
配列をpackした文字列を渡す。
0882デフォルトの名無しさんNGNG
ブロックローカル変数をローカル変数と同様の実装にできないのはなんでだろ
0883デフォルトの名無しさんNGNG
>>882
Rite では直すのかな?
0884デフォルトの名無しさんNGNG
eRubyをはじめて使ってみたんだけど
index.rhtml:1:missing end delimiter (ERuby::CompileError)

こういうエラーがでてしまう。
何が悪いのだろうと調べて、キーワという文字列を抜くと動く。
日本語を含んだ文を書き出すには、なにか必要なのでしょうか。
0885デフォルトの名無しさんNGNG
よくは分からんがこういうことかな

require "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
Proc.new {|a|}.arity => -1 になるのが俺の悪い頭では理解できません。
引数の数だから、1 になるんじゃないかと思うんだけど、
なんで -1 になるのか誰か教えてー。
0887デフォルトの名無しさんNGNG
arityが-Nってのは、N-1個以上の引数を取れるって意味ってとこまではOK?
で、ブロック引数は多重代入と同じセマンティクスを持つので、

a = 1, 2, 3 # => a == [1,2,3]

と任意の個数の引数を取れるということ。

だったんだが、1.8.0 preview3ではそれは1になる模様。
0888デフォルトの名無しさんNGNG
Paint Shop Pro 8のマクロ言語としてPythonが採用されたそうだ。
Rubyが採用された市販アプリって有るのか?
まぁ、PSPは米国製だからってのもあるんだろうが。

つか、Rubyを採用しようにも、簡単に組み込めるようなライブラリが
無いよな? Pythonにはそれが有るらしいが(伝聞)。
そのへんどうにゃのよ?
0889デフォルトの名無しさんNGNG
Rubyも組み込むのはそんなに難しくないよ。
最近の俺的には、ネイティブスレッドに対応してないのでRubyは選べないけど。
0890886NGNG
>>887 さん
わかりやすい説明どうもありがとう。

> で、ブロック引数は多重代入と同じセマンティクスを持つので、
はじめて知りますた。。。
なるほど納得です。

> だったんだが、1.8.0 preview3ではそれは1になる模様。
ふむ!こっちのほうが俺にはわかりやすいです。

ためになる情報ありがとうございました。




0891デフォルトの名無しさんNGNG
>>887
> だったんだが、1.8.0 preview3ではそれは1になる模様。

lambda{|x|}[] とか def f() yield end ; f{|x|} が出来なくなるということ?
0892デフォルトの名無しさんNGNG
>>891
> 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デフォルトの名無しさんNGNG
>>888
Becky!用のRuby pluginってのはある。
あとtalkではたびたびアプリケーションに組込むって話がでてるけど、
具体的な製品名は分からない。
0894デフォルトの名無しさんNGNG
Rubyを自作アプリに組み込むHowToマニュアル出して欲しいな。
できれば、Win版とUNIX版両方で。
0895デフォルトの名無しさんNGNG
C++用だけどこういうのがあることはある。
ttp://metaeditor.sourceforge.net/embed/
0896デフォルトの名無しさんNGNG
>>892
ああ、それなら知ってるけど、どうしていまさら後方互換性をなくす方向に
動き出したんだろ。2.0への布石?
0897デフォルトの名無しさんNGNG
>>896
> 動き出したんだろ。2.0への布石?
そんなとこだと思うけど。
arityに関しては、たしかに分かりにくいという声が以前からあったし。
0898デフォルトの名無しさんNGNG
>>894
一時期の出版ラッシュのついでに出しておいてくれれば良かったのに。
0899デフォルトの名無しさんNGNG
>自作アプリへの組み込み
Cマガあたりに記事がなかったっけ?
Web上でも読めた気がする。
0900デフォルトの名無しさんNGNG
>>899
本じゃないが、erubyなんかはいい例にならないかな。
0901デフォルトの名無しさんNGNG
1.8.0 preview3出ますた。
0902784NGNG
標準入力ってなんでopenできないの。

>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デフォルトの名無しさんNGNG
- は標準入力ではないです。
0904デフォルトの名無しさんNGNG
標準入力は $stdin
0905デフォルトの名無しさんNGNG
あぁ。すんません。
具体的に質問します。

コマンドラインでファイル名が指定されたらそれを、
指定されなければ標準入力を開くって処理をしたいんです。

Perl だと
push(@ARGV, "-") if no @ARGV
foreach (my $file @ARGV) {
open(F, $file);
#ほげほげ
}

とかできて楽なんですけど、Rubyだとどう書くんですか。
ファイル単位で(ファイル名を意識して)処理したいんで、ARGFは却下です。
0906デフォルトの名無しさんNGNG
>>905
なんかいろいろ間違ってる・・・Perl久しぶりとはいえ・・・欝だ。
0907デフォルトの名無しさんNGNG
ARGV.each do |file|
f = (file == '-' ? STDIN : open(file))
begin
# ほげほげ
ensure
f.close unless f == STDIN
end
end
0908デフォルトの名無しさんNGNG
def reading(file, &block)
if file == '-'
yield STDIN
else
open(file, &block)
end
end

ARGV.each do |file|
reading(file) do |f|
# ほげほげ
end
end

0909デフォルトの名無しさんNGNG
>>905
>ファイル単位で(ファイル名を意識して)処理
ARGF.file や ARGF.filename 使えば。
0910デフォルトの名無しさんNGNG
なんで場合わけしなきゃいけないの。
tar だって cat だって UnixTool はみんな - が標準入力じゃないか。
なんで STDIN を特別扱いしなきゃいけないだ。
めんどくさいだけじゃないか。

#ほげほげ

そうか、いろんな - がありえるんだ
- が標準入力じゃなくてもいいんだ。
Perl がやりすぎなんだ・・・
ボクは Ruby が好きなんだ!
ボクはここいいたい!!
ボクはここにいてもいいんだ!!!

ところで amrita って便利ですね。
0911デフォルトの名無しさんNGNG
>>909
> 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の挙動が理解できないんですけど。
0912784NGNG
>>911
こうすれば全ファイル処理された。

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
>>911
$ 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デフォルトの名無しさんNGNG
>912
ARGVで指定されたファイルを触るのをぎりぎりまで先送りにしたいからでは?
ファイルを開かないことには eof? の真偽を知ることが出来ないから
eof? のあとでは指定された名前のファイルの存在も分かる。
しかしfilenameを知るために(詳しくいえばfilenameで返される名前のファイルの
存在を保証するためだけに)ファイルを開くのは許せないとか。
存在を保証するためなら File::readable?(ARGV.first) という手もあるが、
readable? では実際に読みにいったときにファイルがまだあることを保証できない。
もっともこれだけでは最初にSTDINをさしている理由は説明できないがね。
0915RNGNG
ルビー初めて2週間目の初心者です。
いま、自分で考えているオンラインゲームがありまして
それの実現に、Rubyを使ったサーバプログラムを考えているので
第1歩として、多人数向けのチャットサーバを作ろうと思い作り始めたのですが

多人数向けのエコーサーバは「Rubyライブラリ編」を参考に(ほとんどそのまま)で
つくり、うまくいったのですが、ある端末から他の端末へ文字を送る方法で
悩んでいます。

配列を使い、TCPServerのインスタンスを配列の中に入れようと考えたのですが
どうも、うまくいきません。
先輩方、どうかアドバイスをお願いいたします。
0916デフォルトの名無しさんNGNG
>>915
「どこまでやって、どこでつまづいたか」を具体的に書いた方が
回答を得やすいと思われ。
0917RNGNG
>916
はい、了解しました。
エコーサーバを改造してこんな風に書いてみたんです。
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
>>917
とりあえず、while str = s.gets ... end の中がよくわかんないんだけど、
こんなんでどう?

online.each do |c|
c.write(str)
end

あとは、s.close のあとで online.delete(s) とか。
0919RNGNG
>918
うまくいきました、ありがとうございます。
while str = s.gets ... end の中が間違っていたってことなんですよね
どこが良くなかったのだろ?
でも、online.each使ったほうが簡潔で解りやすいですね。

またお世話になるかもしれません。そのときは皆様よろしくお願いいたします。
0920デフォルトの名無しさんNGNG
>>919
クライアントが一つだけ接続に来たとき、そのソケットは online[0] のはずだが、
x = 1 から始まるので online[1] を参照にいき、online[1] == nil であるから、
nil.write(str) が実行される。この時点でそのスレッドは死ぬが、
デフォルトでは Thread 内で例外が起こっても黙っているので分かりにくい。
ruby -d server.rb のように -d つきで実行すると上の状況が分かるだろう。
0921デフォルトの名無しさんNGNG
>>917 もう見てないかも知れんが、
> 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|
0922RNGNG
>920
配列は、0からはじまるのですか。
だからnilを参照してたのですね。
自分の間違えが、わかりすっきりしました。

>921
了解しました。
仰るとおりに、タイミングしだいではnsは
不定になります。
下のほうが、より確実っぽい気がするので
これでいってみたいと思います。

みなさま、ありがとうございました
0923デフォルトの名無しさんNGNG
def f0
aa = 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デフォルトの名無しさんNGNG
これじゃあかん?

def 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)
0925923NGNG
>>924
解答ありがとう。でもそれではだめなんです。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
0926923NGNG
923のスクリプトは、私のやりたいことの意図を正確にあらわして
いませんでした、すまそ。以下のスクリプトみたいな方法で、とり
あえず問題は解決できそうです。

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デフォルトの名無しさんNGNG
なにー!せっかく考えたから送る

def 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
0928923NGNG
>>927
なんかすげー。理解するのにちょっと時間がかかりそうだけど、使えそうな予感。
ありがとう!
0929デフォルトの名無しさんNGNG
>>926
Dataは標準の組込みクラスで、new(1.6)やallocate(1.8)は定義されてない。
0930デフォルトの名無しさんNGNG
Data って Ruby API だけ使ってる人は知らない罠
0931デフォルトの名無しさんNGNG
>>930
まぁそうだろうな。
ともあれDataのインスタンスは作れないし、拡張ライブラリ使うならDataはい
じらんほうが身のため。
0932デフォルトの名無しさんNGNG
そりゃそうなんだけどDataってそれほど存在が知られてない割に
名前が一般的過ぎてよくないよね。
0933デフォルトの名無しさんNGNG
なんか、知らずに Data ってクラス作って(使って)ハマりそう・・・

つか、漏れは obj.id とか obj.hash とかでハマったことあり・・・
0934デフォルトの名無しさんNGNG
>>933
idははまったなあ。hashは知ってたんで、はまったことないけど。
0935デフォルトの名無しさんNGNG
Kernel#idは廃止予定。
__id__かobject_idならかぶらんだろ。
0936デフォルトの名無しさんNGNG
Data -> ExternalData とかに変更してほしい
0937デフォルトの名無しさんNGNG
まずは、二つのプログラム
1.
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ってクラスは作れないのか。初めて知った。
とは言え、Dataという名前のクラスは作りそうで作らない気がする。
0939デフォルトの名無しさんNGNG
さて、まず>>937が釣か否かが問題となるわけだが
0940デフォルトの名無しさんNGNG
「>>937は釣りである」の値はtrueとなるので問題ないと思います。
0941937NGNG
釣りでないです。
プログラミング自体、畑違いなので
聞ける人がまわりにいません。
教えてください。お願いします。
0942デフォルトの名無しさんNGNG
>>937
2のほうも動くだろ。
0943デフォルトの名無しさんNGNG
↓↓↓釣りにマジレス
0944デフォルトの名無しさんNGNG
>>937
次の二点を確認して、放課後までに職員室に来なさい。

・代入は値を返さない?
・偽はfalseとnil。では真は?
0945デフォルトの名無しさんNGNG
C言語の関数で、rintとlogに成り代わる関数ってなんでしょう?
0946デフォルトの名無しさんNGNG
>>945
C言語の質問?
0947デフォルトの名無しさんNGNG
>>946
rubyの質問なんですが・・・?
0948デフォルトの名無しさんNGNG
まず日本語の勉強を・・・
0949デフォルトの名無しさんNGNG
ライブラリ同士の名前空間の重複を回避したいのです、例えば、

hoge1.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のようなことを行う方法はありますか?
0950945NGNG
>>948
私の発言のなにが解らないのか教えてもらえますか?
0951デフォルトの名無しさんNGNG
「C言語の関数で、」なら答えはC言語の関数でなければならないのだが…

もしも「C の rint と log に相当するのはRubyでは何?」ってことなら、
log(x) は Math::log(x) で rint(x) は x.round

ちなみに rint は C の標準関数じゃないよ。
0952デフォルトの名無しさんNGNG
>>950
句読点の使い方
0953デフォルトの名無しさんNGNG
>>949
今んとこ、ない。loadの第二引数にModuleを使えるように、という話はtalkで
ちょっとだけ出てるようだ。
0954デフォルトの名無しさんNGNG
>>938
作れないわけじゃないよ。

消しちゃうなり、Object以外を継承させれば別物になる。
class Object;remove_const(:Data);end
class Data < NilClass;end
0955945NGNG
伝わっていることが解って安心しました。

> log(x) は Math::log(x) で rint(x) は x.round
ご教示ありがとうございます。
0956デフォルトの名無しさんNGNG
> C言語の関数で、rintとlogに成り代わる関数ってなんでしょう?

1.CのrintとlogにあたるものはRubyではどんな関数なんでしょう?
2.CではRubyのrintとlogにあたるものはどんな関数なんでしょう?

1だろうか、と思いきや2だったか。
0957デフォルトの名無しさんNGNG
rintがRubyにはないことから推理。まあCにもないわけだが。
0958デフォルトの名無しさんNGNG
推理してまで答える必要なし
0959デフォルトの名無しさんNGNG
質問!OSXでTk使えるようになりませんか?
require "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
0960945NGNG
man rint
(snip)
準拠
rint() 関数は BSD 4.3 に準拠する。その他の関数は C99 から導入された。

(snip)
失礼しました。
0961デフォルトの名無しさんNGNG
man rint
(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
・
・
と代入する方法を教えてください
0963962NGNG
競馬のデータ(固定長レコード形式)から構造体を作成するときに躓いてしまいました
言葉足らずなところもあると思いますが、よろしくお願いします。
0964デフォルトの名無しさんNGNG
>>962
foo.a = A
foo.b[0] = B0
foo.b[1] = B1
foo.c[0] = C0
・
・
0965デフォルトの名無しさんNGNG
foo.a, foo.b[0], foo.b[1], foo.c[0] = [A,B0,B1,C0,C1,D]
0966デフォルトの名無しさんNGNG
>>960-961
ハイハイ、とりあえず、rintはPOSIXやC99にはない環境依存な関数だってことはわかったからね。

0967デフォルトの名無しさんNGNG
Rubyの本はもう出ないんですか?
最近さびしいので。
0968デフォルトの名無しさんNGNG
>>967
書いてくれ。
0969967NGNG
どんな本がいい?
0970デフォルトの名無しさんNGNG
walrus
0971デフォルトの名無しさんNGNG
rubyでOSを作る本
0972デフォルトの名無しさんNGNG
rubyでrubyを作る本
0973デフォルトの名無しさんNGNG
RUNIX
0974デフォルトの名無しさんNGNG
rubyが必要なくなる本
0975デフォルトの名無しさんNGNG
>>949
モジュールを名前空間独立に書くっていつでもできるの?
例えば、以下の状況で A#bar() がこの A::foo() を
呼ぶことを保証できるんだろうか?

module A
def A::foo() end
def bar() A::foo() end
end
0976デフォルトの名無しさんNGNG
>>975
> module A
> def A::foo() end
> def bar() A::foo() end
> end
この後でA.fooを再定義されたら、当然「この A::foo()」が呼ばれることはないけど、
クラス/モジュールやメソッドの定義時の名前空間のネストは実行時に再現される。
0977デフォルトの名無しさんNGNG
dlopen関係を使って、動的にsoライブラリの関数を呼び出す方法ってありませんか?
0978デフォルトの名無しさんNGNG
>>977
http://ttsky.net/ruby/ruby-dl.html

>>980
次スレよろ
0979デフォルトの名無しさんNGNG
RHGの第二版が欲しい。
0980デフォルトの名無しさんNGNG
Riteが出てからじゃないか?
0981980NGNG
これも<関連スレ>に入れる?

Rubyの実装に疑問あり!
http://pc2.2ch.net/test/read.cgi/tech/1004873294/
0982980NGNG
あとこういうのもあるんだが。

【Ruby】RubyでCGI
http://pc2.2ch.net/test/read.cgi/php/988948655/
0983デフォルトの名無しさんNGNG
ついでにこれもよろ。
Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/index.html
0984デフォルトの名無しさんNGNG
<rubyXML/>
http://www.rubyxml.com/
0985デフォルトの名無しさんNGNG
【UNIX板】rubyを語るスレッド 3
http://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/
0986980NGNG
<title>Ruby について Part 4</title>

オブジェクト指向スクリプト言語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

0987980NGNG
= 関連スレ

== [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/
0988980NGNG
でいいかな? RD風味。
0989デフォルトの名無しさんNGNG
あぁ、すまん、<rubyXML/> は半分冗談。
それよりこっちのがじゅーよー。

Matzにっき
http://www.rubyist.net/~matz/
0990980NGNG
りょーかい。「その他」でOK?
0991980NGNG
異論はないものとみなしてたてますた。

Ruby について Part 4
http://pc2.2ch.net/test/read.cgi/tech/1056944114/
0992デフォルトの名無しさんNGNG
乙であります。
0993デフォルトの名無しさんNGNG
>>966

C99 は BSD 4.3 より新しいんだから >>960 からは「rint がC99 にない」と
いう結論は出ないと思うんだが。

というかrintはC99にあるよ。(7.12.9.4)


0994デフォルトの名無しさんNGNG
ルビー世水楽ね?
0995デフォルトの名無しさんNGNG
ああ、次スレあるのね
じゃあ埋めるわ
0996デフォルトの名無しさんNGNG
996
0997デフォルトの名無しさんNGNG
a
0998デフォルトの名無しさんNGNG
書くことがない
0999デフォルトの名無しさんNGNG
まいいや
1000デフォルトの名無しさんNGNG
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。