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

Rubyについて Part 8

レス数が1000を超えています。これ以上書き込みはできません。
0001親父!俺もやっとスレ立てたよ!NGNG
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
http://www.ruby-lang.org/ja/

= 前スレ
: Rubyについて Part 7
http://pc2.2ch.net/test/read.cgi/tech/1074235226/


= 過去スレ
: Rubyについて Part 6
http://pc2.2ch.net/test/read.cgi/tech/1067623825/
: Rubyについて Part 5
http://pc2.2ch.net/tech/kako/1063/10630/1063028224.html
: Ruby について Part 4
http://pc2.2ch.net/tech/kako/1056/10569/1056944114.html
: Ruby について Part 3
http://pc2.2ch.net/tech/kako/1042/10420/1042004759.html
: Rubyについて Part 2
http://pc3.2ch.net/tech/kako/1028/10289/1028906179.html
: Rubyについて
http://pc3.2ch.net/tech/kako/1012/10120/1012096319.html
0002おかん!見てるか!?NGNG
= 関連リンク
: Matzにっき
http://www.rubyist.net/~matz/
: Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/
: <rubyXML/>
http://www.rubyxml.com/
: ruby-cvs
http://rrr.jin.gr.jp/rwiki?cmd=view;name=ruby-cvs
: Ruby hotlinks 五月雨版
http://znz.jin.gr.jp/samidare/
: リファレンス
http://www.ruby-lang.org/ja/man/

= 関連スレッド
: rubyを語るスレッド 4
http://pc.2ch.net/test/read.cgi/unix/1060537252/
0003デフォルトの名無しさんNGNG
>1乙
0004おとん、おかんNGNG
>>1
よくやった
0005デフォルトの名無しさんNGNG
例の比較サイトにリンク張れや
0006デフォルトの名無しさんNGNG
>>5
自分で張れや知障が
0007いちにんまえのスレ建て人>>1NGNG
>>5
例のってどれだよハゲ
0008デフォルトの名無しさんNGNG
>>1
乙
0009デフォルトの名無しさんNGNG
CGIなので恐縮なのですが、以下のCGIを実行するとrubyが固まります。

具体的には、CGIと同じフォルダに65KBぐらいの大きさの a.dat を用意し、
以下のCGIを実行して現れるボタンを押すと固まります。

#!/usr/bin/ruby
print "Content-Type: text/html\n\n"
if !ENV['CONTENT_TYPE'].nil?
  File.open('./a.dat') do |f|
    while str = f.gets; print str; end
  end
else
  print "<form method=post><input type=text name=a><input type=submit></form>"
end

環境はOS Windows、Ruby 1.8.1mswin32、Apacheで発生しました。
ちなみにLinuxだとうまくできてしまいました。
どうにかしてちょ(´・ω・`)
0010デフォルトの名無しさんNGNG
>>9
a.datって中に改行ある?

なんとなく、
  File.open('./a.dat', 'rb') do |f|
    while str = f.read(1024); print str; end
  end
とすればいいような気がするが、試してないし根拠もない。
0011デフォルトの名無しさんNGNG
Tabの幅が8文字分じゃないときってどんなとき?
そんな設定をするやつの気が知れんのだが。
なぜそんな設定をするやつのことを考慮しなきゃいけないのか。
0012デフォルトの名無しさんNGNG
>>11
もうちょっと世界を知れ。
0013デフォルトの名無しさんNGNG
blade止まってるの?
0014デフォルトの名無しさんNGNG
>>11は池沼か?
0015デフォルトの名無しさんNGNG
>>13
ヲレもそれおもった。
MLはとらずに、いつもblade見ている人間なので。
0016デフォルトの名無しさんNGNG
>>10
改行あります。
a.datは2ちゃんのdatファイルを想定してます。
今試しているdatでは167行目を超えると反応なしに。

改行ばっかりのファイルを作成してみたら8000行くらいで反応なしになりました。
(ファイルサイズは56KBくらい)

>>10のコードも試してみましたが駄目でした。
Linux上でテストしようかなぁ(´・ω・`)
0017デフォルトの名無しさんNGNG
なんとなく、print するたびに STDOUT.flush すればいいような気がするが、試して(ry
0018デフォルトの名無しさんNGNG
IO.foreach じゃダメなの?
0019デフォルトの名無しさんNGNG
def hoge(buf)
sjis = Regexp::compile("[\x82\x9f-\x82\xaa]", nil, 's')
buf.each do |str|
if ($sjis == 1) # 無駄なループを減らす
break
end
case str
when sjis
$sjis = 1
end
end

buf.each do |str|
if ($sjis == 1)
なんとか
end
かんとか
end
end
今こんな感じに、処理すべきテキストがSJIS の場合$sjis に1 が
代入されるようにしているのですが、ものすごく非効率的な感じがします
もう少しきれいに書けないでしょうか?
0020デフォルトの名無しさんNGNG
ああ、tabのインデントが消えてしまった..
0021デフォルトの名無しさんNGNG
>>20
ネタかよ!
0022デフォルトの名無しさんNGNG
こんなんとか。
# グローバル変数やめれ。

require "nkf"

def hoge(buf)
sjis = (NKF::guess == NKF::SJIS)

buf.each do |str|
なんとか if sjis
かんとか
end
end
0023デフォルトの名無しさんNGNG
def hoge(buf)
sjis = Regexp...
jis = Regexp...

buf.each do |str|
if ($ja == 1) # 無駄なループを減らす
break
end
case str
when sjis, jis
$ja = 1
end
end

buf.each do |str|
if ($ja == 1)
str = NKF::nkf('-e', str)
end
なんとか
end

19は簡略化して書いたんですが、本当はこんな感じのことがやりたかったんです。
nkfがもの凄く重いので事前に日本語だとわかってるときだけ動いて欲しい。
上の日本語判定のところがどうにも無駄なような気がして
0024デフォルトの名無しさんNGNG
NKF::guess は NKF と言いながらも nkf の機能は一切使ってないので、
そんな重くないかも知れないし重いかも知れない。
しかし nkf ってそんな重いかね?
0025デフォルトの名無しさんNGNG
そろそろ女の子の落書き希望
002616NGNG
>>17-18
返信ありがとうございます。
flush と each を試してみましたが、やはりファイルが大きいと固まります。

ただ、テスト環境でWindows使ってるだけで、最終的にはLinux上で使うので、
50KBぐらいの小さいファイルでテストすれば動作するようなのでそれでやります。
0027デフォルトの名無しさんNGNG
>>23
$ja = 1のところですぐにbreakしないのはなぜ?
0028デフォルトの名無しさんNGNG
guessが重いってどういう場合なんだろ。
ほかの部分がほとんど何にもしてないような場合なんじゃないかな。
0029デフォルトの名無しさんNGNG
しょーがねーなー>>25の期待にこたえてオネエ口調でスレを展開しますわよ!

nkfってCで書かれたやつだろ。あっ、ですわよね。
Rubyで判定コード書くより相当早いんじゃねーの?あっ
0030デフォルトの名無しさんNGNG
>>27
buf.each do |str|
case str
when なんとか
$ja = 1
break #ここでbreakしてもcase~whenを抜けるだけだと思ってたから
end
かんとか
end

あれからしばらくしてbreakですぐ抜けるよう書き直しました
0031デフォルトの名無しさんNGNG
で、なんでグローバル変数なんだ
0032デフォルトの名無しさんNGNG
>>31
undefined local variable or method `ja' for #<Probability:0x402881d0> (NameError)
こういうエラーが出るから
0033デフォルトの名無しさんNGNG
これよんだらローカル変数の使い方わかった
最初に0代入しとかなきゃならんのか
http://www.ruby-lang.org/ja/uguide/uguide22.html
0034デフォルトの名無しさんNGNG
宣言なり初期する方が普通な気も?
つか、グローバル使うくらいならインスタンス使う方が普通な気も?
0035デフォルトの名無しさんNGNG
34.each do { |line| sub("初期する", "初期化する言語の") }
0036デフォルトの名無しさんNGNG
>>35
それやっても34は変わらないぞ。
34.sub!(/初期化する/, '\1言語の')
0037デフォルトの名無しさんNGNG
だから\1を使うなと(ry
0038デフォルトの名無しさんNGNG
>>37

え、じゃ、何使うの?
0039デフォルトの名無しさんNGNG
sub の第2引数使うの禁止
0040デフォルトの名無しさんNGNG
There's more than one way to do it.
ですよ。
0041デフォルトの名無しさんNGNG
>>38
一目では理解できないスクリプト用。
0042デフォルトの名無しさんNGNG
というか、 line.sub だろ。
0043デフォルトの名無しさんNGNG
tabでインデントしないってことは、
じゃあtabって一体何のためにあるんだ
0044デフォルトの名無しさんNGNG
tab移動するためだな
0045デフォルトの名無しさんNGNG
>>44
tab コードの話と tab キーの話がごちゃまぜになってない?
0046デフォルトの名無しさんNGNG
8tabにして空白の多いテキストの簡易圧縮に使ったり、
エクセルでタブ区切りでcsvに吐かせたり、
まあいろいろある。
0047デフォルトの名無しさんNGNG
REXML の Encodings に "UNILE" ってのがあるんだけど、これ一体何者?
0048デフォルトの名無しさんNGNG
UNIcode Little Endian 略して UNILE ですかね?
0049デフォルトの名無しさんNGNG
>>43
補完
0050デフォルトの名無しさんNGNG
>>49
いや、だから、「tab キー」の話をここでするのは混乱するからやめたほうが。
0051デフォルトの名無しさんNGNG
じゃ、0x09 はエディタ等で補完に使う。
0052デフォルトの名無しさんNGNG
>>38
34.sub!(/(初期化する)/) do $1+'言語の'; end

ブロックと$1をつかう。かな?
>>37じゃないからわからn
0053デフォルトの名無しさんNGNG
3インデント推進委員会の結成を今ここに発表致します。
0054デフォルトの名無しさんNGNG
なんでもいからMatzに宣言させとけ。
そうすれば黙っておとなしく従うよ。
もともとインデントサイズ・キャラクタコードなんて何の必然性もないんだからな。
0055デフォルトの名無しさんNGNG
RGSS は似てるだけの別実装かと思ってたら Ruby ベースか。
ネイティブスレッドと相性が悪い問題とかどう解決したのか知りたいね。
0056デフォルトの名無しさんNGNG
3インデント推進委員会の結城を、に一瞬見えた。
0057デフォルトの名無しさんNGNG
>>52
なぜ $& を使わないのかと
0058デフォルトの名無しさんNGNG
rubyってややこしいんだな
perlにするか。
005952じゃないけどNGNG
>57
へぇー $& って知らなかった。
$1 よりもわかりにくくない?
俺は可読性をとくに高めたいときは
Regexp.last_match[0] とか Regexp[0] って
冗長にタイプするときもあるよ。
でも余計なリテラル増えるし。
0060デフォルトの名無しさんNGNG
>>59 sed/awk/Perlで常識<$&
# 更にPerlだと遅いから使うなというのも常識
## Rubyでは $&, $', $` は遅くない
0061デフォルトの名無しさんNGNG
>>52
なぜブロック引数を使わないのかと

個人的には、ブロック付き sub, gsub(あと scan)は
ブロックに MatchData を渡して欲しいかも。
0062デフォルトの名無しさんNGNG
MatchData が来ても便利だけど、
あえて言うけど「一般的な」用途向けには、
String が来たほうが便利というかタイプ数が少なくなると思う。
MatchData だとリテラル増えるし、別に Regexp.last_match でアクセスできるし。
そのへんのバランスはよく考えられてると思う。角度とか。
0063デフォルトの名無しさんNGNG
>>62
何の「角度」?


まあ、ruby は「統一性」優先よりも「使用感」優先だもんな。
0064デフォルトの名無しさんNGNG
if str =~ /regexp/ then ... end
では返り値0の時困るんですが
どう書けばいいですか?
できればperlから離れ過ぎない書き方がいいです
0065デフォルトの名無しさんNGNG
>>60
> # 更にPerlだと遅いから使うなというのも常識
> ## Rubyでは $&, $', $` は遅くない

$ time perl -e 'for(1..1000000){/(\d+)/;$s+=$1}print "$s\n"'
500000500000
1.79user 0.00system 0:01.79elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k

$ time perl -e 'for(1..1000000){/\d+/;$s+=$&}print "$s\n"'
500000500000
1.68user 0.00system 0:01.68elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k

「Perlだと$&が遅いという常識」はデマだと分かりました
0066デフォルトの名無しさんNGNG
RubyもPerlのバッドノウハウ大量に受け継いでるんだよな。
ていうかRuby自身が新規のバッドノウハウ撒き散らしててウザ杉。
0067デフォルトの名無しさんNGNG
>>62
 ttp://www.media-k.co.jp/jiten/wiki.cgi?%A1%E3%A4%AB%A1%E4#i23
0068デフォルトの名無しさんNGNG
ごめん、>>63 だった (角度の話ね)
0069デフォルトの名無しさんNGNG
>>68
よく分かったよ。
0070デフォルトの名無しさんNGNG
>>59=62?
> MatchData だとリテラル増えるし
何の話だ? コードに書いた以上のリテラルができることはないぞ。
0071デフォルトの名無しさんNGNG
おそらく「リテラル」の意味するモノが違うんだと思われ
0072デフォルトの名無しさんNGNG
MatchData#[] とかで使うリテラル増えるだろ。
String#gsub に渡すブロックの引数が
String になる場合と比べてね。
0073デフォルトの名無しさんNGNG
ひょっとしてMatchData#[]の引数のことをいってるのか?
0074デフォルトの名無しさんNGNG
>73
そうそう
0075デフォルトの名無しさんNGNG
KDevelopってRubyサポートしてるらしいけどどの程度のことをしてくれるの?
0076デフォルトの名無しさんNGNG
クラス定義ではないところでインスタンスメソッドを使うことはできますか?
やりたいことは、ERB::Util#escape_html()ってのがあるんだけど、これをCGIスクリプトで使いたいの。
でも暮らすメソッドじゃないから、CGI.escapeHTMLのようには使えない。
importeかextendでなんとかなるのかと思ったけどできないし。
0077デフォルトの名無しさんNGNG
インスタンスメソッドをインスタンスを作らずに使うことはできない。
インスタンスに対して作用するか、インスタンスの情報が必要かだか
らこそインスタンスメソッドにするわけだ。もしインスタンスが必要
でないなら、クラスメソッドにしてそれを使うか、module_function
にしたほうがいい。

ところで、標準のerb.rbにはERB::Utilなんてないようなんだが。
0078デフォルトの名無しさんNGNG
>>77
あるよ。
$ grep Util /usr/lib/ruby/1.8/erb.rb
# ERB::Util
module Util
あと
http://www2a.biglobe.ne.jp/~seki/ruby/erbway.html
とか。

いや、Rubyなら特異メソッドなりを使えばなんだってできるような気がしたもんだから。
やっぱ無理っすか。
ERB::Util.h()はクラスメソッドもつけて欲しかった。require 'cgi' するしかないか。
0079デフォルトの名無しさんNGNG
escape_html じゃなくて、html_escape な。
とりあえず自分で module_function したら?

module ERB::Util
 module_function :html_escape
end

p ERB::Util.html_escape("&") #=> "&"
0080デフォルトの名無しさんNGNG
>>76

% ruby -rerb -e 'include ERB::Util; p html_escape("<p>")'
"<p>"
% ruby -v
ruby 1.8.1 (2003-12-25) [i686-linux]

という話ではなく?
008180NGNG
すまそ。出力は、
"&lt;p&gt;"
0082デフォルトの名無しさんNGNG
>>80
あれーなんでできるの?おれはぜんぜん出来なかったのに・・・
と思ったら
>>79
メソッド名を間違えてただけでした。真できます。
0083デフォルトの名無しさんNGNG
>>82
本題は解決したようですが。
これって明らかにクラスメソッドであるべきだと思わない? >all
もしそう思ったら、ぜひメンテナ(咳さん)に報告してあげてよ >>79

こういう細かい改良の報告を積み重ねる事こそ、バザールモデルの
力の源だと思うのだけれど。
# やけに高尚になってスマソ
0084デフォルトの名無しさんNGNG
>>83
クラスメソッドにしてしまうとクラス名つけないと使えなくなるのでそれはそれで不便だろう。
どちらの形でも使えるようにモジュール関数にすべきだという意見なら賛成だな。

自分で>>76のようにすれば今のままでもいいといえばいいが、はじめからそうなってた方が
なにかと便利だろうし。
0085デフォルトの名無しさんNGNG
手持ちのログは以上です。
>>64-67 には、流れを切ってしまってスマンかった。

それと、>>72, >>74 の名前は以下になってました。
>>59=>>62
変更しわすれますた……ごめんなさい。
008683NGNG
>>84
そうそう、それが言いたかった。(汗

>>85
お疲れさまっす。
0087デフォルトの名無しさんNGNG
>>84の本文の中の「>>76のようにすれば」は「>>79のようにすれば」ですな。
0088○| ̄|_NGNG
>>87
修正どうも
0089デフォルトの名無しさんNGNG
class FooTest < Test::Unit::TestCase
def test_1
end

def test_2
end
end

とあって、test_2 だけ実行したいときはどうすればいい?
コマンドライン引数でやれるとのことでしたが:

$ ruby footest.rb test_2

cygwin rubyではできませんでした
他でも多分、できないと思うんですけども
0090デフォルトの名無しさんNGNG
>>89
ruby -r footest -e 'footest = FooTest.new; footest.test_2'
0091デフォルトの名無しさんNGNG
Rubyがいつまでもマイナーな原因の一つが判明しました。
それはRWikiがぜんぜん広まらないからです。
RWikiは、インストールの難しさもあるけど、それ以上に見た目のデザインがダメすぎます。
英語ばっかりで恐いし、色も気持ち悪いです。
こんなんじゃ一般プログラマは誰も使う気にならないでしょう。
Rubyの未来のためになんとかしてください。

PukiWiki
http://pukiwiki.sourceforge.jp/pukiwiki1.4/pukiwiki.php?FrontPage

RWiki
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=top
0092デフォルトの名無しさんNGNG
つーかなぜRWiki?Hikiでいいじゃん。あとBitChannel。
0093デフォルトの名無しさんNGNG
そんなのあったのか、HikiもBitChannelもいいねー
Rubyを使っていることを全面に押し出してもらいたい。
0094デフォルトの名無しさんNGNG
個人的にはBitChannelに期待
0095デフォルトの名無しさんNGNG
コミュニティとかなんとかしろとか言ってる奴は、いろいろと勘違いしてるんじゃなかろうか。
0096デフォルトの名無しさんNGNG
>>95
短く書きすぎ。

「どう」なんとかしろとか言っている奴が、「何を」いろいろと勘違いしている
のかを言わないと。
0097デフォルトの名無しさんNGNG
コミュニティとかなんとかしろとか言って(〜中略〜)ろと勘違いしてるんじゃなかろうか。
0098RPI ◆3x0ES2jpL2 NGNG
RPIC のお知らせ。

Ruby Professional Institute は、Ruby の専門家それぞれのレベルを測るために、
各国共通の基準となる認定制度 RPIC の創設を計画中です。
# RPIC は「アルピック」と発音します。
Ruby の専門家の雇用主や契約先といった団体組織や専門家自身のニーズを満たす
技術者資格を目指しています。
資格は、Level 1 (初級)、Level 2 (中級)、Level 3 (上級) の3つに
分かれる予定です。
Level 1 の試験内容は、逐次、このスレで発表があります。
0099デフォルトの名無しさんNGNG
>>95
さらに短く書くと。

「クレクレ君うざい」
0100デフォルトの名無しさんNGNG
Rubyってまだやってたんだね。いや、煽りじゃなくて。
どんなところで使われてるの?
0101デフォルトの名無しさんNGNG
>>100
Javaの代わりに決まってるだろ?
煽りはドトネトすれいってやれよ。
0102デフォルトの名無しさんNGNG
>>98
なんじゃこりゃー
Rubyもなんか認定試験がつくようになったんだね
0103デフォルトの名無しさんNGNG
>>98
知らなかった、Rubyの資格ができるとは。
やっぱりスクリプト言語が社会的に認知されるようになって来た、ということかな?
参考になりました。サンクス。
0104デフォルトの名無しさんNGNG
コピペ失礼。



まつもとひろゆき氏は4月1日、自身が開発するオブジェクト指向スクリプト言語の次世代実装、通称Liteのβバージョンを発表した。
LiteのLはLispを意味し、LiteはすべてEmacs Lispによって書かれている。このため移植性は非常に高い。

この他のLiteの優れた特徴としては
・動作の重量感
・「;;」によるコメントアウトの実現
・新標準ライブラリ「psychiatrist」
・Kernel#car・Kernel#cdrなどを実装
・処理系自身がGCの恩恵を受けるため、segmentation faultとは無縁
・「)」を文の終端とし不要な「(」を無視することによって、カッコまみれのLisp風新文法を実現
・いちいちEmacsを立ち上げる必要があり、思考が寸断され同氏の掲げる「苦しいプログラミング」を体感できる
・新正規表現処理エンジン「Onigoroshi」により、Emacs Lisp由来のバックスラッシュを多用した分かり辛い表記に対応
などが挙げられる。

ダウンロード開始時期は未定。
0105デフォルトの名無しさんNGNG
質問です。
load と require の違いって何ですか?
load も require もロード&実行するみたいなんですが。
0106デフォルトの名無しさんNGNG
>>105
前スレでもあったな。その質問。
requireは同じものを1度しか読まない。
loadは呼ばれたら必ず読む。

で、合ってる?
0107デフォルトの名無しさんNGNG
>>105
何か最近おんなじ話をどこかで見たな。
デジャブュか?
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=FAQ%3A%3A%A5%AF%A5%E9%A5%B9%A1%A2%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB#a6.2e11.20load.a4.c8require.a4.cf.a4.c9.a4.a6.b0.e3.a4.a4.a4.de.a4.b9.a4.ab
0108デフォルトの名無しさんNGNG
>>105
リファレンスマニュアルのFAQにあるから読んできなされ。
ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby+FAQ
次からは質問する前にこことマニュアルをチェックしてくだされ。

わかんなかったら require だけ使ってれば問題ないと思うよ。
0109105NGNG
>106-108
ありがとうございます。
FAQだったようですみません。
マニュアルは読んだのですが、「load が必ず読む」ということが
明記されていなかったので、両者の違いがみいだせず
混乱したしだいでございます。
以後、FAQ を気をつけて読むように致します。
0110デフォルトの名無しさんNGNG
>>109
誰かが書き直してくれたよ(君かもしれんが)。
0111デフォルトの名無しさんNGNG
今年は上出来なRubyジョークはあったのかな。
0112デフォルトの名無しさんNGNG
>>111は騙されたことに気づいてないだけ。
0113デフォルトの名無しさんNGNG
>>98, >>104
明白に april fool って分かるな…。
0114102NGNG
>>113
なにぃー。確かに >>98 がgoogleに引っかからない…。騙された orz
0115デフォルトの名無しさんNGNG
マジで騙されたのかよ?
正直なところ >>104 はつまらなかった。
0116スクリプト未経験者NGNG
Rubyって将来性あるの?
0117デフォルトの名無しさんNGNG
>>116
あんたよりはある。
0118デフォルトの名無しさんNGNG
>>116
おれよりもある。
0119デフォルトの名無しさんNGNG
もっと必死こいてRubyで金儲けするやつがいればいいのに。
0120デフォルトの名無しさんNGNG
>>119
何を必死こくの?

RZope とか、RCSV とか、RSubversion とか?
0121デフォルトの名無しさんNGNG
256倍シリーズとかボッタクリにしてもひどすぎると思うけどな。
0122デフォルトの名無しさんNGNG
アフォか。
Zend社のようなことを言ってんだよ。
0123デフォルトの名無しさんNGNG
なんだ妄想か。
0124デフォルトの名無しさんNGNG
Zendは金儲けになってるのか?
0125デフォルトの名無しさんNGNG
256倍シリーズ… あれはあれで役に立った
0126デフォルトの名無しさんNGNG
暇潰しの読み物としてな
0127デフォルトの名無しさんNGNG
RaccとRubyUnitは普通に役に立ったけどな。
網道は後半がビミョー。場外乱闘は買って損した。
0128デフォルトの名無しさんNGNG
256倍を読んでRuby/Tk覚えて、さあ実戦投入だと思ったら
リファレンスが尻切れトンボだった罠。
DBIのやつ買おうと思って立ち読みしたら、
半分以上違う話で、さすがに金を出そうとは思えんかった。
0129デフォルトの名無しさんNGNG
>>128
> DBIのやつ

買っとけよ!話のネタになるだろ!
0130デフォルトの名無しさんNGNG
>>115
まあ、好意的に書くと、
「Emacs由来のバックスラッシュ多用正規表現」というのにはそれなりに同情。
0131デフォルトの名無しさんNGNG
Rubyでいい本ってなんかないの?
前 UnixUserで連載してたやまだあきらってひとは、
なかなかいい記事書いてたから彼の本買ってみたいんだけど
0132デフォルトの名無しさんNGNG
>>131
http://www.amazon.co.jp/exec/obidos/search-handle-url/index=books-jp&field-author=%E3%82%84%E3%81%BE%E3%81%A0%20%E3%81%82%E3%81%8D%E3%82%89
ruby way は訳書だが、初心者向き。
rubyアプリケーションプログラミングは、もうちょっと中級向き。
0133デフォルトの名無しさんNGNG
SWS/SDSって無くなっちゃった?
0134デフォルトの名無しさんNGNG
>>132
あとはリファレンスに「プログラミングRuby」かね。
これくらいあれば十分かな。
0135デフォルトの名無しさんNGNG
>>131
Rubyプログラミング入門
http://www.amazon.co.jp/exec/obidos/ASIN/4274063852/249-5918135-2015557
0136デフォルトの名無しさんNGNG
>>132 >>134 >>135
ありがとうございます。
Ruby way は探したんですけど、なかった(´・ω・`)。
0137131NGNG
あっ。 >>136 は >>131 です
0138デフォルトの名無しさんNGNG
Ruby/Tkが働かなくて困っています
環境:Windows98 + Ruby1.8.0(mswin32版)

このアプリケーションの実行に必要なライブラリファイルの1つが見つかりません
-D:/DEVELOP/Ruby/lib/ruby/1.8/i386-mswin32/tcltklib.so (LoadError)

と怒られてしまいます。ですが
D:\DEVELOP\RUBY\lib\ruby\1.8\i386-win32\tcltklib.so
は所定の場所に見つけることができました。

Tcl/Tkを D:\Develop\Tcl以下に導入したので
RUBY_TCL_DLL=D:\Develop\Tcl\bin\tcl84.dll
RUBY_TK_DLL=D:\Develop\Tcl\bin\tk84.dll
で環境変数を与えています。
Tcl/Tkのデモスクリプトが実行できたのを確認しました。

ためしに同じスクリプトをmingw版で実行するときちんと通ります。
cygwin版はmswin32版と同じでLoadDrrorが出てしまいました。

インストールしたファイルは
ftp://ftp.ruby-lang.org/pub/ruby/binaries/
から落としたバイナリ版です。

これはmingw版を使えってことなのでしょうか。
何かよきアドバイスをお願いします
0139デフォルトの名無しさんNGNG
D:/DEVELOP/Ruby/lib/ruby/1.8/i386-mswin32/tcltklib.so (LoadError)
D:\DEVELOP\RUBY\lib\ruby\1.8\i386-win32\tcltklib.so

よーく比べてみよう
0140138NGNG
すいません、タイプまちがえました。

D:/DEVELOP/RUBY/lib/ruby/1.8/i386-mswin32/tcltklib.so (LoadError)
D:\DEVELOP\RUBY\lib\ruby\1.8\i386-mswin32\tcltklib.so
0141デフォルトの名無しさんNGNG
>>133
ttp://www.starware.one.pl/software/sws/index.html
それか、おとなしくCGIKitつかっとけ。どっちも似たようなもんだ。
0142デフォルトの名無しさんNGNG
>>138
よくわからんが、D:\Develop\Tcl\binにPATHを通してみては?
0143138NGNG
D:\Develop\Tcl\binにPATHを通してみましたが
やっぱりLoadErrorと言われました。
win32版はあきらめて
動いてくれているmingw版を使うことにします。
0144デフォルトの名無しさんNGNG
>>141

WebObjectsを参考にしているだけあって、生産性の向上はかなり微妙だが
何も使わないほうがよいと漏れは思うよ
0145デフォルトの名無しさんNGNG
アナルバクバクおじさん = るびきち
0146デフォルトの名無しさんNGNG
musya たんと食い歩きオフ会のようなものは開催しないのでつか?
花見もいいのだけど。
0147デフォルトの名無しさんNGNG
「duck type」ってどういう意味?
0148デフォルトの名無しさんNGNG
>>147
http://c2.com/cgi/wiki?DuckTyping
0149デフォルトの名無しさんNGNG
>>148
サンクスコ
0150デフォルトの名無しさんNGNG
musya たんって誰だ?
ちょんまげが乱れた落ち武者を想像してしまったぞ。
0151デフォルトの名無しさんNGNG
>>150
knuタンだ。FreeBSD界ではportupgradeの作者として高名かな。
0152デフォルトの名無しさんNGNG
http://www.enterbrain.co.jp/digifami/products/rpgxp/shinkinou.html

RPGツクールでRubyが使えるようになるんだってさ。一ヶ月近く昔のニュースだけど。
0153デフォルトの名無しさんNGNG
>>150
本人の表記に従うなら"musha"のはず。
0154デフォルトの名無しさんNGNG
>>152
スレ立つたびに宣伝レスするのやめれ。
0155デフォルトの名無しさんNGNG
knuセソセイの日記
http://www.musha.org/~akinori/diary/
0156デフォルトの名無しさんNGNG
>>155
だから、そのアドレスは 301 (Moved Permanently) だって。
正しくはこっち
http://d.akinori.org/
0157デフォルトの名無しさんNGNG
>>154
前スレにあったの?
スマソ
01589NGNG
>>9 です。今さらですが現象報告です。
ruby が固まると書きましたが、同じようなコードをperlで書いても固まったので、
ruby ではなくapacheとか環境が問題っぽいことがわかりました。
お騒がせしました。
0159デフォルトの名無しさんNGNG
>>152
 ┌-┴-┐   l             l
 ├──┤   |  _  l        -┼─
 ├──┘  ̄| ̄ ヽ |   _    | ─-
  |  l /     |   │   ̄   ヽ   |
 ⊥-ーヽ、_    |   ヽl     _ノ  |  ヽ__ o
0160デフォルトの名無しさんNGNG
File.basename ってOSによって動作違うんですか?
Windows:
  File.basename('d:\kirai\demo\suki') #=>sukiが得られる
Linux:
  File.basename('d:\kirai\demo\suki') #=> d:\kirai\demo\sukiが得られる
できれば動作を一緒にしてもらいたかった…。
0161デフォルトの名無しさんNGNG
どっちにあわせろと?
0162デフォルトの名無しさんNGNG
>>160
OS によって同じ動作にしたければ、普通はこうすると思うけど。
File::basename('d:/kirai/demo/suki')
0163デフォルトの名無しさんNGNG
つーか、touch d:\kirai\demo\suki で d:kiraidemosuk 作れるし
ls d:\kirai\demo\suki で引っかかるし
0164デフォルトの名無しさんNGNG
>>161
どっちかというとこっち。
File.basename('d:\kirai\demo\suki') #=>sukiが得られる
>>162
ありがとうございます。やっぱりその方法ですか。trでもしときます。
>>163
それはいいんですが、File.basenameではベース名が取得できてほしいんです。
今作ってるものはCGIなんですが、その中で \ 区切りパス文字列をブラウザが送ってくるもので…。
いちいちtrするのも・・・。
0165デフォルトの名無しさんNGNG
Linuxでは\はパス区切り文字じゃないんだからしょうがねーじゃん。無茶言うな。
0166デフォルトの名無しさんNGNG
>>164
> その中で \ 区切りパス文字列をブラウザが送ってくるもので…。

そのへん詳しく教えれ。
0167デフォルトの名無しさんNGNG
>>164
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=DOSISH+%C2%D0%B1%FE
0168デフォルトの名無しさんNGNG
正直、2ch向けのレスは書いてて疲れますね。「wait(2) くらい知っとけよ!」って思ってしまう。
0169デフォルトの名無しさんNGNG
書けるやつが書きたいときに書けばいい。
自分がいなくてもスレは回る、地球は回る…('・ω・`)ショボーン
0170デフォルトの名無しさんNGNG
ばーかばーかばーか
0171デフォルトの名無しさんNGNG
>>165 正直スマンカッタ
>>166
CGIなんで微妙にスレ違いですが、multipart/form-data のfilenameの部分です。
↓の filename="D:\data\ruby\a.rb" の部分です。

-----------------------------7d45c21102aa
Content-Disposition: form-data; name="uploadfile1"; filename="D:\data\ruby\a.rb"
Content-Type: application/octet-stream

print File.basename("http://www.2ch.net/2ch.htm"), "\n"
print File.dirname("http://www.2ch.net/2ch.htm"), "\n"

-----------------------------7d45c21102aa--
>>167 うーん、unix系でも同じような動きがいいんだが。正直スマンカッタ
>>170 正直スマンカッタ
0172デフォルトの名無しさんNGNG
>>171
File.basename とは別に CGI::XXX.basename みたいなのを作って、
そっちはプラットフォームにかかわらず DOSISH 対応、ってのがいいやり方なのかなあ。

うpろだ作るなら避けて通れない問題っぽいけど、普通はどうしてるんだろうか。
ちらっと調べたら、
File.basename(params['foo'][0].original_filename.gsub(/\\/, '/'))
みたいなことしてるのを発見したけど。
0173デフォルトの名無しさんNGNG
テキストファイルかバイナリファイルか判別する方法ある?
perl の -T -B みたいな機能。
0174デフォルトの名無しさんNGNG
>>173
ないと思う。

……っていうか、perl にはそんな演算子があることを始めて知った。
「テキストファイル」と「バイナリファイル」の定義を知りたいものだ。
0175デフォルトの名無しさんNGNG
NKF を使えばいいんじゃない?
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=NKF
0176デフォルトの名無しさんNGNG
>>172の言うとおり、CGIクラスが持つべきだろうね。
0177デフォルトの名無しさんNGNG
>>174
ファイルの先頭の数百バイトを見て判断してるらしい。
ちなみに日本語入りファイルはバイナリファイル。
0178デフォルトの名無しさんNGNG
Rubyのmd5生成ってバグ持ち?
オフィシャルのサンプル使ってもmd5、md5sumとかで生成した値と一致しないんだけど?
0179デフォルトの名無しさんNGNG
「オフィシャルのサンプル」って具体的にはどれ?
0180デフォルトの名無しさんNGNG
>>171
> うーん、unix系でも同じような動きがいいんだが。

UNIX だと '\' もファイル名に使えるからあまりよろしくないんじゃないかと。
'/' なら UNIX でも DOSISH でもファイル名に使えないので、
'/' に path 区切りを揃えてから File::basename に食わせるという方が良いと思う。
0181デフォルトの名無しさんNGNG
>178
D:\WINNT\system32>ruby -rmd5 -e "p Digest::MD5.hexdigest( ARGF.read() ) " NTOSKRNL.EXE
"ab349b95d62bf9770a17959c00a8b022"

D:\WINNT\system32>ruby -rmd5 -e "ARGF.binmode;p Digest::MD5.hexdigest( ARGF.read() ) " NTOSKRNL.EXE
"dccb693e32ca945462bf4f12185a1e82"

D:\WINNT\system32>\\tpi\d$\cygnus\bin\md5sum.exe NTOSKRNL.EXE
dccb693e32ca945462bf4f12185a1e82 *NTOSKRNL.EXE

というオチ?
0182178NGNG
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Digest%3A%3ABase
の
> require 'digest/md5'
> p Digest::MD5.hexdigest(File.read("ruby-1.8.0.tar.gz"))
です。
同じファイルをこのスクリプト(ファイル名の部分だけ変更)とmd5とかmd5sumでmd5値を作ると合致しないんです
0183178NGNG
>>181
もろにそれが原因でした…_| ̄|○
ありがとうございました
0184171NGNG
>>180
おお。納得。そういえば \ ってつかえますもんね。
path 区切り揃える方向でつくります。

そう考えると確かに >>172 のようなものを用意して、
それを使うようにする方がいいですね。
0185171NGNG
そうかそれで、>>165は無茶いうなと言っていたわけですか。正直スマンカッタ_| ̄|○
0186デフォルトの名無しさんNGNG
真性だな。
0187デフォルトの名無しさんNGNG
flockのように共有ロックと排他ロックの両方ができる
Mutex風のクラスはありませんか?
0188デフォルトの名無しさんNGNG
>>187
require 'sync'
0189173NGNG
>>175
ありがと。使ってみた。
ただ、wavやmpgがテキストとみなされることが多かったんで
仕方なく拡張子で判別するコードも加えることにしたよ。
0190デフォルトの名無しさんNGNG
>>173
印字できないバイトが入ってたらバイナリファイル、ってくらいでいいなら自分で作れるだろ。
0191デフォルトの名無しさんNGNG
つーかrubyでやることかよ
0192デフォルトの名無しさんNGNG
filemagic でも使えば。
http://raa.ruby-lang.org/list.rhtml?name=filemagic
0193デフォルトの名無しさんNGNG
print "hoge\n"と書いたときに表示される改行を、あらかじめ便利な感じで
全部CR+LFにそろえることはできますか?
$KCODE="s"としておくと全部表示がShift_JISになるような。

Rubyスクリプトと生成データをLinuxとWindowsで使いまわすもので…
0194デフォルトの名無しさんNGNG
>>193
回答になってないけど、ふつー print "hoge\n" でなくて puts "hoge" 。
0195デフォルトの名無しさんNGNG
>>194
WindowsでputsするとCR+LFになるの?
0196デフォルトの名無しさんNGNG
>>195
やってみほ。Windowsが周りに無いの?
0197デフォルトの名無しさんNGNG
なんかInteger/Integerの話題、mathnとかquoとかの存在が無視されてない?
0198デフォルトの名無しさんNGNG
Integer/Integer=Rationalって、ブロックじゃ駄目なんかねぇ。
 precision do
  《Rationalになる演算》
 end
みたいな。面倒か。
0199デフォルトの名無しさんNGNG
>>198
漏れもそんな感じが良いと思ってた。
0200デフォルトの名無しさんNGNG
>>195
Windwos版Ruby(mingw32、mswin32、bccwin32、djgpp)では出力される改行は全てCR+LF。
UNIXのようなもの版Rubyでは出力される改行は全てLF。
Cygwin版Rubyでは出力される改行は全てLF。

Rubyに限らず3番目でハマる人が時々います。
cygwin向けにコンパイルされたプログラムをcygwin外でも使おうとする人ね。

>>193
つーことで多分できません。生成されたデータファイルの改行を適宜再加工してください。
0201デフォルトの名無しさんNGNG
結局selector namespaceを入れましょうっていう話になるのかな
0202デフォルトの名無しさんNGNG
>>200
Cygwin って、text mode で mount してる時も LF になるんだっけ?
0203デフォルトの名無しさんNGNG
>>202
うーん、mount -tで明示的にマウントされた場合は
改行がファイルに書き込まれた時にCR+LFに変換されるっぽい。
マウントポイントごとに設定しわけることはできるけど…めんどいね。

Cygwin環境用にコンパイルされたプログラムをCygwinシステム外の
普通のWindowsプログラムとしてこっそり使うときはどういう処理になるんだろう。
よくわかめ。
0204デフォルトの名無しさんNGNG
いい加減意地を張るのをやめてPythonに統一しようよ。
リソースの分散はあまりにももったいない。
Pythonに対する明確なアドバンテージを示せないなら今すぐ開発をやめるべきだと思うがいかがかな?
0205デフォルトの名無しさんNGNG
文字列の長さを得るメソッドが str.len になったら考えてもいいよ
0206デフォルトの名無しさんNGNG
>>204
Pythonに対する明確なアドバンテ−ジは、わしが使ってること。
0207デフォルトの名無しさんNGNG
>>204
統一厨が宗教戦争を仕掛けるスレはここでつか?
0208デフォルトの名無しさんNGNG
ずいぶん釣られてるなぁ。
0209デフォルトの名無しさんNGNG
    \   ∩─ー、    ====
      \/ ● 、_ `ヽ   ======
      / \( ●  ● |つ
      |   X_入__ノ   ミ    こんな餌で俺がクマーーーーー!!
       、 (_/   ノ /⌒l
       /\___ノ゙_/  /  =====
       〈         __ノ  ====
       \ \_    \
        \___)     \   ======   (´⌒
           \   ___ \__  (´⌒;;(´⌒;;
             \___)___)(´;;⌒  (´⌒;; 
                          (´⌒; (´⌒;;
0210デフォルトの名無しさんNGNG
いずれParrotが完成すれば、Perl,Python.Rubyのそれぞれの資産をそれぞれの言語で使えるようになるだろうから、
今更別の言語に移る価値はないだろ。
0211デフォルトの名無しさんNGNG
本当に完成するのかな(ワラ
0212デフォルトの名無しさんNGNG
現実問題としてC#とVB Scriptでプログラミング領域の98.774%はカバーできるから
Rubyはいらないんだけどな。
0213デフォルトの名無しさんNGNG
>>211
Riteよりは(ry
0214デフォルトの名無しさんNGNG
>>212
うちの会社は UNIX 上のサーバサイドアプリしか作らないので
.NET に縁がありません。
0215デフォルトの名無しさんNGNG
まー世の中には「ハック価値」という物がある訳で。
でなきゃIntercalなんて生まれてない。
0216デフォルトの名無しさんNGNG
>193
$/ を使うのはどうですか。
0217デフォルトの名無しさんNGNG
>>148
自分は147ではないけれど、
リンク先を読んでも、言わんとするところがよく分からなかったっす。
よかったらもうちょい解説お願いします。
# 「もしそれがアヒルのように歩き、アヒルのように鳴くなら、それはアヒルに違いない。」??
0218デフォルトの名無しさんNGNG
英語が読めるならまずググるくらいのことはしたら?
0219デフォルトの名無しさんNGNG
>>217
自分は >>147 ですけれど、
「もしそれが String と同じメソッドを持ち、String のようにふるまうなら、
 それは String の duck type に違いない」
と読みました。
0220デフォルトの名無しさんNGNG
彼はいまだにテストを書いていないのかな?
テストを書かずにリファクタリングってどうやってるんだろうか?
0221デフォルトの名無しさんNGNG
>>220
彼って、matz? テスト書いてるよ。
http://www.rubyist.net/~matz/20040309.html#p01
0222デフォルトの名無しさんNGNG
Dir.globの人の事じゃない?
0223デフォルトの名無しさんNGNG
>>222
ああ、そっちの人か。
誰か勝手に CVS にテストを突っ込んどいたら。
0224RPI ◆3x0ES2jpL2 NGNG
RPIC のお知らせ。

Ruby Professional Institute は、Ruby の専門家それぞれのレベルを測るために、
各国共通の基準となる認定制度 RPIC を創設しました。
# RPIC は「アルピック」と発音します。
Ruby の専門家の雇用主や契約先といった団体組織や専門家自身のニーズを満たす
技術者資格を目指しています。
資格は、Level 1 (初級)、Level 2 (中級)、Level 3 (上級) の3つに
分かれています。

Level 1
101 試験 Ruby 基本文法
102 試験 標準ライブラリ

Level 2
201 試験 オブジェクト設計
202 試験 ライブラリ

Level 3
作成中。

試験は、ピアソンVUE、アール・プロメトリックで受けられます。
0225デフォルトの名無しさんNGNG
>>224
もう2週間も前の話だろ。遅すぎ。
0226デフォルトの名無しさんNGNG
>>224
学生の漏れには、15000 円は高すぎる。
学割とかないのか?
0227デフォルトの名無しさんNGNG
>>226
学割あるよ。
Level 1 取った。
認定カードがピンクだぞ。
なんでピンクなんだ?
0228デフォルトの名無しさんNGNG
Level 1 ピンク
Level 2 橙色
Level 3 赤
0229デフォルトの名無しさんNGNG
101 試験落ちた。
引っ掛け問題多すぎ。
15000円がパー。
RPIC 対策本は、翔泳社の赤本しかないのでつか?
0230デフォルトの名無しさんNGNG
101 試験の範囲

1. 組み込み型
2. 式
3. メソッド
4. 正規表現
5. クラス、モジュール
6. 基本入出力
7. 例外
8. スレッド、プロセス
9. デバッガ
0231デフォルトの名無しさんNGNG
Ruby暦2年だが、>>224 これとろうかな。
まだ学生なんで、就職時使おうと思っています。
0232デフォルトの名無しさんNGNG
>>229
マジでか?
101 は Ruby を普通に使っていたら絶対受かるぞ。
0233デフォルトの名無しさんNGNG
漏れも 101 落ちた。
もうだめぽ。
0234デフォルトの名無しさんNGNG
>>231
アホか。
国家資格にしろ。
学生なら情報処理技術者試験の方を受けた方がはるかに良い。

プログラミング言語の試験だったら
Sun Certified Programmer for the JAVA
にしておけ。
Ruby に将来なんてない。
0235デフォルトの名無しさんNGNG
一応旧通産天下り団体主催だよ。
0236デフォルトの名無しさんNGNG
Rubyをメイン言語としたWEBアプリ開発会社を作りたいんだけど、
貯金が数万しかありません。どうしたらいいんでしょうか。
0237デフォルトの名無しさんNGNG
>>236
確か1円でも起業できるんじゃなかったっけ?
0238デフォルトの名無しさんNGNG
>>234
うちの会社では、Ruby でプロトタイプを作る。
最後に Java で作る。
移植しやすいように Ruby で Java スタイル。
attr_reader/writer ではなく、セッターゲッターを使う。
ヘビ式でなく、ラクダ式の命名規則に従う。
0239デフォルトの名無しさんNGNG
>>238
蛇式って?
0240デフォルトの名無しさんNGNG
>>239
_ で繋げる命名法じゃない?
bar_obj.foo_method() みたいな。
0241デフォルトの名無しさんNGNG
レベル1受かりました。
101 は 620 点、102 は 640 点でした。
普通に Ruby を使っていて、翔泳社の対策本をやれば受かります。
102 の Complex クラスとか、普段使わないので
対策本は必要です。
0242デフォルトの名無しさんNGNG
だまれ業者。
0243デフォルトの名無しさんNGNG
 ☆チン     マチクタヒ゛レタ〜
                        マチクタヒ゛レタ〜
    ☆ チン  〃 ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ヽ ___\(\・∀・) < レベル2合格記まだ?
      \_/⊂ ⊂_)   \________
     / ̄ ̄ ̄ ̄ ̄ ̄/|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
       | 三ヶ日みかん |/
0244デフォルトの名無しさんNGNG
こいつ AA に慣れていないのがバレバレ。
でも面白い。
めげずに、もっとふざけてみ。
0245デフォルトの名無しさんNGNG
こんなオリジナリチィーもなにもないAAの使い方のどこがおもろいのやら。
0246デフォルトの名無しさんNGNG
>>245
尋常でないずれ方だろ。
0247デフォルトの名無しさんNGNG
>>246
うん、おれもそこが面白いと思った。
0248デフォルトの名無しさんNGNG
スレの流れが不自然過ぎる…。
いかにも2ちゃん初心者が宣伝しにきたって感じがします。
まぁどうでもいいけど。
0249デフォルトの名無しさんNGNG
趣味レベルでウェブを運営してるのですが、その場合、Rubyを勉強する利点はありますか?
それとも無難にPerlにしておく方がいいですか?
0250デフォルトの名無しさんNGNG
あなたがPerlをすでに習得しているとして。

(利点)
・あなたのプログラム感が広がる
・あなたのプログラミング技術が広がる
・あなたの選択肢がひとつ増える(このときにはRubyを使おう)
・あなたの宣伝文句がひとつ増える(Rubyも使えます)
・Perlに比べるとライブラリが少ないので、自作する機会が増える
・rubyを使える人とのコミュニケーションの機会が増える

(欠点)
・新しい言語を覚えるための時間的、経済的コスト
・Perlに比べるとライブラリが少ないので、自作する機会が増える
・「まだPerlを使ってるの?」と言ってもらえる機会が減る
・Perlで悪戦苦闘する機会が減る

くらいかな。
0251249NGNG
>>250
分かり易い回答ありがとうございます。
時間があればやってみてもいいって感じで受け止めました。
0252デフォルトの名無しさんNGNG
>>246
わざとずらしているように見える。
0253デフォルトの名無しさんNGNG
利点
変数に$をつけなくて良い
文末に;をつけなくて良い良い

欠点
他の言語で書いたときに付け忘れるようになる
0254249NGNG
>>253
サンクス。
プログラムを書くのが楽しいっていう触れ込みですよね。
余分な文字を書かなくてもいいっていうのもその一環なんでしょうね。
0255デフォルトの名無しさんNGNG
>>249
いまさら Perl なんてやる必要ないと思うけど。
せめてPHPにしたら?
0256249NGNG
>>255
そうなんですか?
でもCGIを考えるとPerlが主流ですよね?
0257デフォルトの名無しさんNGNG
>>256
もうCGIそのものが主流じゃないと思われ。

それに、あなたは自分の趣味としてウェブを運営しているのではなかったのですか?
趣味ならば、世の中の多勢に従う必要はありません。
まあ、ruby も十分多勢になりつつありますが。
0258デフォルトの名無しさんNGNG
漏れなら、どれか一個でとりあえずはじめてみる。
そのうちある程度スキルが上がったころになれば、
嫌でもその言語のダメなところや各言語毎の利点欠点がわかってくるので、
そうなったら一番自分にしっくりきそうな言語に乗り換える。

そのときには、それまでに書き貯めたコードは無駄になるかもしれないが、
それまでに身に付けた知識は無駄にならない。
0259249NGNG
>>257
CGIはもうすたれてるのですか?
何故、Perlにしようと思ったかというと、Perlは過去の遺産が多いからです。

だから、自分の作ろうと思うCGIに似たCGIを容易に探せますよね。
後は自分用にカスタマイズすればいい訳ですから。

>>258
自分的にはrubyをしてみたいのですが、すぐに恩恵を受けられる実益(遺産が多いということ)を
考えると、Perlかなと思ったわけです。

PHPも結構、流行ってるみたいなので(あるサイトにはPHPの出現でPerlを学ぶ利点がなくなった
と書いてあった)結構、悩みます。
0260デフォルトの名無しさんNGNG
以後249は放置の方向で。
0261デフォルトの名無しさんNGNG
>>259
いやあ、もうそこまで考えてるなら、あとは自分で決めるだけっしょ。
決めることは、自分で出来るよね?
0262249NGNG
>>261
レスどうもです。

最初はPerlをやろうと思います。
その後、情勢を見極めて次の言語を決めたいと思います。

どうもありがとうございました。
0263デフォルトの名無しさんNGNG
ruby1.6で、
・成功するまで3回試行する
・3回試行してダメならあきらめる
の時、

result = nil
RETRY = 3
i = 0
begin while ( i < RETRY && ! result )
 i += 1
 puts "Try: " + i.to_s
 result = do_something()
rescue
 retry
end
puts "end."

と、ruby-lang.orgのrubyリファレンスマニュアルにある"while 修飾子"に
従って書いたつもりなんですが、rescueの行とputs "end."の行でparse error
で叱られます。
自分にはなぜparse errorになるのかがわからないのです。
どうすればうまく行くのでしょうか?
0264デフォルトの名無しさんNGNG
while修飾子になってねーし。
0265263NGNG
自己解決。

begin
while ( i < RETRY && ! result )
 i += 1
 puts "Try: " + i.to_s
 result = do_something()
end
rescue
...

なのね。
まだ文法が壊滅的だ...
0266デフォルトの名無しさんNGNG
>>65
古い話でスマンが
> 「Perlだと$&が遅いという常識」はデマだと分かりました
$1を使っても遅い。
0267デフォルトの名無しさんNGNG
>>263
「成功する」ってのはdo_smoethingがnil/false以外を返すってことなのか?
retryを使ってるあたりは例外が発生しなけりゃ、とも取れるんだが。
>>265だと、例外のときは試行せずに終るだろうし。
「成功」の定義と例外の扱いをどう考えてるのがよくわからん。
0268デフォルトの名無しさんNGNG
>>266
ていうか、「$&を使うと他のマッチが巻き添えで遅くなる」なので65のベンチじゃわからんよ。

プログラムのある部分に出現した$&が「どのマッチの$&なのか?」を静的に決定するのが
カナーリ難しいので、プログラム中に$&が出てきたら全てのマッチについてとりあえず$&を
毎回保存しとくモードにしといて参照されたときに最新のを返すって実装にしちゃったから。

パターンマッチが1つしかなければ$&を使うのもカッコでくくって$1で取り出すのも同程度。
0269デフォルトの名無しさんNGNG
>>268
こゆことかな?

% time perl -e '$&;for(1..1000000){//}'
perl -e '$&;for(1..1000000){//}' 1.11s user 0.00s system 99% cpu 1.110 total
% time perl -e '$1;for(1..1000000){//}'
perl -e '$1;for(1..1000000){//}' 0.76s user 0.02s system 100% cpu 0.768 total

デマじゃなさそう。
0270デフォルトの名無しさんNGNG
ライブラリのファイル名を、
"foo-bar.rb" か "foo_bar.rb" のどちらにするかの基準ってありますか?
0271デフォルトの名無しさんNGNG
>>270
"foo/bar.rb"

e.g. net/ftp.rb digest/mdg.so
0272デフォルトの名無しさんNGNG
>>271
そういう意味ではなくて、ファイル名が 2語以上で構成されている場合のはなしです。
標準添付のライブラリを見てみたら、結構いい加減ですね。

irb/input-method.rb
rdoc/generators/html_generator.rb
soap/netHttpClient.rb

好きにしる、ってことでしょうか。
0273デフォルトの名無しさんNGNG
>>272クラス名を downcase しただけが基本。getoptlong とか prettyprint のように。
0274デフォルトの名無しさんNGNG
$?って、真偽値じゃなくて数値でしたっけ?

msg = `command -opt args`
result = $?

でresultにtrue/falseが格納されてることを期待しちゃダメ?
0275デフォルトの名無しさんNGNG
>>274
$?はProcess::Statusオブジェクト。
0276デフォルトの名無しさんNGNG
>>274
ttp://www.ruby-lang.org/ja/のリファレンスマニュアル→組み込み変数に
1.6以前は整数。1.7からProcess::Statusオブジェクトだって明記してある
じゃん。
よく読め。
0277デフォルトの名無しさんNGNG
最新リファレンスマニュアルのオフライン版ってないですか?
最新がなければ、例えば ruby 1.8.0 版のリファレンスマニュアルとか。
0278デフォルトの名無しさんNGNG
いろいろ試してて気づいた。これってまずいんじゃないの?
x = 1
x.taint
x.tainted? # => false
0279デフォルトの名無しさんNGNG
>>278
1.taint.tainted? # => false
1.0.taint.tainted? # => true
(10**100).taint.tainted? # => true

Fixnum だけか。まあ、「Fixnum は汚染さないという仕様だ」と主張されれば、
納得できるけど。
# その場合は Fixnum#taint は undef して欲しいが。

それよりも
"1".taint.to_f.tainted? # => false
の方が気持ち悪い。

ちなみに ruby 1.8.1 (2003-12-25) [i386-cygwin]。
以降で変更されてるのならスマソ
0280デフォルトの名無しさんNGNG
C++ から Ruby 使うにはどしたらいいの?
C++ から スクリプトとデータを char の配列で渡して、結果を自作の Tree クラスで返してもらいたいんですが、
その辺について解説したホームページとかあったら教えてもらえないでしょうか?
ちなみに C++ Builder 使ってるんですけど、Visual C++ でも全然問題ないです。
0281デフォルトの名無しさんNGNG
>>280
ruby.hに"#if defined(__cplusplus)"とか書いてあるし、そのまま普通にやればいいんじゃない? なにか問題があるなら具体的に書いた方がよいと思います。
「どうしてももっとC++らしく書きたい」という理由なら、ttp://rubyxx.sourceforge.jp/でもどうぞ。
0282デフォルトの名無しさんNGNG
>>279
いろいろ突っ込みたいところはあるけど、とりあえず一箇所だけ。
> Fixnum は汚染さないという仕様だ
揚げ足を取りたいわけじゃないんだけど、脳内補完がうまくいきませんでした。
どういう意味っすか? もう一度書き直してもらえるとありがたい。
0283280NGNG
>>281
え〜っと C++ / C の違いについて知りたいわけではなくて、
C から Ruby(の変数) にどうアクセスしたらいいか知りたいです。
どっかにそういうドキュメントがあったような気がしてるんですが、
思い出せないので;;
0284デフォルトの名無しさんNGNG
>>283
README.EXT.jaの事でしょうか。
0285デフォルトの名無しさんNGNG
>>277
マニュアルの表紙の下のほう、付録「HTML Help版と分割HTML」
http://www.ruby-lang.org/ja/man/
http://www7.tok2.com/home/misc/ruby.html
http://www7.tok2.com/home/misc/files/ruby/refm/temp/list.html
0286279NGNG
>>282
スマソ。「汚染さない」→「汚染されない」

現在のRubyの仕様は
・任意のオブジェクトは Object#taint で汚染することができる。
だと、オレは理解している。

でも実際に試してみると、Fixnum, Symbol, {Nil,True,False}Class は
:foo.taint.tainted? # => false
などとなる。

これは上に書いた仕様と違うのでマズイ。これの解決策は二つある。
(a) Fixnumなども、ちゃんと汚染できるようにする
(b) 「Fixnumなど、一部のオブジェクトは汚染できない」という仕様に変更する

普通に考えると(a)なんだけど、このケースでは(b)を選択しても、特に問題は
起きないような気がする。それだったらエラい人の好きな方に決めてもらって
いいよ……というのが>>279の前半で書きたかった事。

でも再考してみると、Bignum と Fixnum の関係だとか、よく分かんなく
なってきたので、その主張は保留。

後半の話は、オレが Ruby の汚染モデル(というか、汚染状態の伝搬モデル)を
勘違いしてそうな気もする。「foo.tainted? == true の時、foo を元にして
作ったオブジェクトは全て自動的に汚染される」という理解は合ってる?

リファレンス「セキュリティモデル」
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%BB%A5%AD%A5%E5%A5%EA%A5%C6%A5%A3%A5%E2%A5%C7%A5%EB
0287デフォルトの名無しさんNGNG
>>283
RubyExtensionProgrammingGuide も参考になるかも。
ttp://i.loveruby.net/w/RubyExtensionProgrammingGuide.html
0288デフォルトの名無しさんNGNG
>>284 >>287
>>283 のやりたいのは逆じゃない?
0289デフォルトの名無しさんNGNG
>>286
immutable なオブジェクトは汚染され得ない、ってことじゃないの?
0290デフォルトの名無しさんNGNG
>>289
ごめん。「immutable なオブジェクト」ってのがよく分かってない。
Fixnum は immutable だけど、Bignum は immutable でない?

実装上の理由(VALUE にポインタじゃなくて即値が入ってる)から
taint のフラグが保持できないんだろうな、と想像はつくけど、
実装と immutable とは別の話だと思う。
0291280NGNG
>>284
>>287
>>288
「え〜、それって拡張ライブラリ作る時に読むやつちゃうん?」と思いましたが、
よく読むと、アプリケーションから ruby の機能を使うのも同じインターフェースなんですね^^;
1.8.x だとコンパイルエラーになっちゃってだめだったんですけど、
1.6.8 だとちゃんと動きました。
これでやりたいことが実現できそう。これから研究してみるっす。
ありがとう!
0292277NGNG
>285
ありがとうございます。
HTML Help 版だと内容が古いようですので
ttp://www.ruby-lang.org/ja/man/man-rd-ja.tar.gz
↑これをダウンロードして使うことにしました。
0293277NGNG
あ、HTML Help 版も 1.8.1 対応ですね。失礼。
そちらを使わせていただくことにしました。
0294デフォルトの名無しさんNGNG
Fixnum(とかSymbolとかtrueとかfalseとかnil)で汚染が伝播しないことが困るのってどういう時?
たしかに現在の実装は美的完全性を損ねているが、実用上は問題ないのと違うか
0295278==282NGNG
>>286
どうもです。
> 「foo.tainted? == true の時、foo を元にして作ったオブジェクトは全て自動的に汚染される」
自分もそういう理解でいます。

>>294
自分も最初はそう思っていました。
しかし例えば正の数を仮定しているところで負の数を指定されると困るとか、考えようと思えばいくらでも考えられると思うんです。
抽象的なのを承知で書くとすれば、「オブジェクトの意味を決定するのはスクリプト次第」ではないでしょうか。
だとすれば、どんなオブジェクトでも汚染が伝播しないとおかしいと思います。
0296デフォルトの名無しさんNGNG
>>295
294が「実用上は問題ない」と言ってるのにそれに対する反論として「抽象的なのを
承知で書」いても弱いんじゃないかな?
おそらく294も「どんなオブジェクトでも汚染が伝播しないとおかしい」とは思っている
のだろうが、理想と実装のトレードオフを考えた結果、現状の実装で実用上は問題
ないだろう、と述べているのだろうし。
0297デフォルトの名無しさんNGNG
>>294で挙げられてるオブジェクトはsingleton/multitonなので、一ヶ所で
汚染されたからって他のまったく関係ないところまで影響されちゃうのはまず
いんよ。

このモデル自体が問題だというかも知れないけれど、しかし、1+1の2と5-3の2、
あっちのtrueとこっちのtrueを区別したいかといわれると、俺なら区別したく
ない。
0298デフォルトの名無しさんNGNG
結局286がリンクをだしてた「セキュリティモデル」にそのあたりのことが
全く触れられてないので読む方は混乱するわけで。

最初の「オブジェクトの汚染」のところに一言注釈なりありゃいいだけの
ことのような気がする。
0299デフォルトの名無しさんNGNG
class X
def initialize(a,b,c)
end
end

p X.method(:new).arity
p X.method(:initialize).arity
p X.new(1,2,3).class.method(:new).arity
p X.new(1,2,3).class.method(:initialize).arity
////////////////////////////////////////////////
-1
-1
-1
-1

コンストラクタの引数の数を数えるにはどうすればよいですか
0300デフォルトの名無しさんNGNG
X.instance_method(:initialize).arity
X.new(1,2,3).method(:initialize).arity

その initialize はクラスX のインスタンスメソッド。
クラスX はクラスクラスのインスタンス。
new は クラスクラスのインスタンスメソッド。
0301デフォルトの名無しさんNGNG
つーかそろそろFixnumを無くすべきなんじゃないかと。

Fixnumが即値である限り絶対に汚染に対応できないわけで。
汚染されているべき危険な値でも素通りでシステムコールに渡せるってのは正直どうかと。
Symbolやnilといったオブジェクトはともかく、頻繁に使うであろうFixnumはヤバイよ。
この辺matzはどう思ってるんだろう?「仕様です」だけ?
0302デフォルトの名無しさんNGNG
>>301
つーよりも、外部からどうやって Fixnum を取り入れて、そんな危険なことをしたがるのかが分からん。
実際にやって見せてよ。
0303デフォルトの名無しさんNGNG
>>301
・「Symbol や nil がオッケーだけど、Fixnum が特にヤバい」という
シチュエーションがよく分からない。

・Fixnum などが汚染できないことに関して、公式なコメントは出てないと思う。
(調べ足りないだけかもしれないので情報キボンヌ)

・即値でも、汚染用に1ビット割り当てれば対応できそう。
バイナリ互換はなくなるが(・∀・)キニシナイ!!
「汚染された1」と「汚染されてない1」という2つの singleton オブジェクトが
存在するイメージ。
0304デフォルトの名無しさんNGNG
つーかただのバグ
0305デフォルトの名無しさんNGNG
>>298 に同意。
Fixnum を汚染したりされたりするときに warning 出ればよいんじゃないのかな。
$SAFE によっては SecurityError になるのもよいかと。
0306デフォルトの名無しさんNGNG
全ての値について汚染が伝播するならば、$SAFE=1で危険な操作が
汚染エラーにならなければ、少なくとも危険な値をuntaintせずに渡して
はいないということが保証される。untaint操作の場所は特定しやすいし
きれいに書けば妥当なチェックをしてからuntaintしていることを確認する
こともたやすい。即値をはさむとそれが言えなくなるので、同じことを
保証するにはプログラムを追いかけるしかなくなるだろう。

もっともエラーがでたら出た場所にその都度.untaintを足していく
香具師には全く関係ないことだがな(笑)

0307301NGNG
cgi = CGI.new
value = cgi["value"].to_i

とか、普通にしてそうだが。
ああ、だがFixnumが特にヤバイ、ってことはないか。to_symとかやるしな。


1bit割り当てるってのは思いつかなかったな。これは漏れの考えが浅かった。
0308デフォルトの名無しさんNGNG
VALUEをキャストしてそのままポインタとして使えるってところがrubyの速度とか拡張ライブラリの作りやすさとかに非常に影響を与えてると思うのだが。
1bit割り当てるってことは毎回ビットシフトしなきゃいけないってことだろ?
0309デフォルトの名無しさんNGNG
ビットシフトなんてのは動的型を採用している時点で必ず
何回も発生するので今更その回数を気にしてもあまり意味がない。
まあ減るにこしたことないが、せこいチューンと同じ。

それよりは実行コード断片化によるキャッシュミスヒット・
ページフォルトの方が深刻なんでね。
0310301NGNG
いや、VALUEに1bit割り当てるという話は即値(Fixnum, Symbol, nil...)のみの話。
ビットシフトはFixnum, Symbolは値を得る為に既にしている。
問題があるとすれば、Fixnumが30bitになってBignumに変化しやすくなるくらいなもんだろう。
0311デフォルトの名無しさんNGNG
そういえばbignumは汚染されるので、数字がでかいときだけ汚染により
操作が禁止されてうまく動かないバグを仕込みそうだな。fixnumが
汚染されないという仕様なら他の数も汚染されない方がいいような
気がする。


0312デフォルトの名無しさんNGNG
>>253
>他の言語で書いたときに付け忘れるようになる

俺もそれある。最近、CやJavaで ; のつけ忘れが多い。
C言語しか知らなかったときはこのミスはほとんどしなかったのに
0313デフォルトの名無しさんNGNG
operator () がホスィ…

o = Object.new
def o.()(s)
puts s
end

o("OK") #-> OK
0314デフォルトの名無しさんNGNG
>>312
慣れの問題かと。漏れも以前はそうだったけど、最近は無くなった。
むしろ、コードをパッと見たとき、 ; や変数名の $ の有無で、
今どの言語を見てるかのスイッチが切り替わるようになってきた。

>>313
def o(s); puts s; end とどう違うの?
0315デフォルトの名無しさんNGNG
>>313
[] で我慢する、ではダメ?
0316デフォルトの名無しさんNGNG
>>315
その「我慢」をしたくない、って意味でね

operator() があれば
・[]のもつ意味を単純化できる。つまりプログラムを読みやすくする。
・ProcやMethodの呼び出しを自然に出来る。
0317デフォルトの名無しさんNGNG
self.o を呼ぼうとして o#() になる悪寒。
0318280NGNG
racc 使ってる人いますか?
racc で作られたパーサってエラーが発生すると、エラーの原因となった文字列を
表示してくれますが、その文字列のある行番号は表示してくれません。

スキャナいじったり、文法ファイルを修正してみましたがなかなか思う結果が得られません。

だれか解決策知りませんか?
0319デフォルトの名無しさんNGNG
self.age
0320デフォルトの名無しさんNGNG
>>318

パーサには行番号の情報がないので出せない。
自分でパーサの on_error メソッドをオーバーライド
して出すしかないね。現在読み込み中の行番号は
だいたいトークンかスキャナのどっちかから得られるはず。
0321280NGNG
>>320
速攻レス、感謝。
自前で処理する方法を、もうちょっと検討してみます。
0322デフォルトの名無しさんNGNG
昔それやったなぁ。
StringScanner 使ってたから pos しかわからんもんでさ、
on_error でもう一度スキャナ回して pos までの改行数えたよ。
0323デフォルトの名無しさんNGNG
% ruby -v
ruby 1.8.1 (2003-12-25) [i386-cygwin]

% ruby -e '"0" > 0'
-e:1:in `>': comparison of String with 0 failed (ArgumentError)
from -e:1

% ruby -e '0 > "0"'
-e:1:in `>': comparison of Fixnum with String failed (ArgumentError)
from -e:1

メッセージを統一しる!ヽ(`Д´)ノ
0324デフォルトの名無しさんNGNG
>>323
そうはいくか!ヴォケ!
0325デフォルトの名無しさんNGNG
>323

ん? 統一したら、まずいんじゃない?
0326デフォルトの名無しさんNGNG
まずいかな?
0327325NGNG
>326

まずいっしょ。
0328デフォルトの名無しさんNGNG
Float だとどっちも Float って出る。
Fixnum にそろえるとどこがまずいかな?
0329デフォルトの名無しさんNGNG
>>323
「統一」って、前者を「String with Fixnum」にしる、ってことか?
それならなんとなく納得。
0330デフォルトの名無しさんNGNG
前者で Fixnum じゃなくて 0 って出るのがイヤって話なのでは。
% ruby -e '"0" > 1000000000'
-e:1:in `>': comparison of String with 1000000000 failed (ArgumentError)
from -e:1
% ruby -e '"0" > 10000000000'
-e:1:in `>': comparison of String with Bignum failed (ArgumentError)
from -e:1
0331デフォルトの名無しさんNGNG
なるほろ
0332323NGNG
あーまぎらわしくてスマソ。0 を Fixnum にしるってことね。

もういっちょ。

% cat ~/hoge.rb
def foo(args)
args.min
end
foo(["0", 0])
% ruby ~/hoge.rb
/home/ore/hoge.rb:4:in `min': comparison of Fixnum with String failed (ArgumentError)
from /home/ore/hoge.rb:2:in `each'
from /home/ore/hoge.rb:2:in `min'
from /home/ore/hoge.rb:2:in `foo'
from /home/ore/hoge.rb:4

4行目に min なんてないよヽ(`Д´)ノ
0333デフォルトの名無しさんNGNG
matzさんの家って、PC が何台もごろごろしているものなの?
それともハードには余り興味が無くて、言語にしか興味がないとか、、、
0334デフォルトの名無しさんNGNG
>333
あなたの、他人に対する興味の持ち方に
興味がある。
0335デフォルトの名無しさんNGNG
>>333
実際のところは知らんけど、MLなどでのやり取りを見てる範囲では、
ご自身の環境(ノートPCにdebianだったか)以外についてのrubyの動作の検証とかは、
(自分で環境を用意してするのは)かなり億劫のようなので、PCがゴロゴロというのは創造できないです。

まあ、会社とかでいろんな環境に触れる機会はあると思うのですが。
「言語にしか興味ない」というのは当たってると思います。

まったく他人の私が思うには。
0336デフォルトの名無しさんNGNG
>>335
「想像できない」
0337デフォルトの名無しさんNGNG
これどうよ?

http://www.hirax.net/pukiwiki/pukiwiki.php?AmetPerl#content_1_6
0338デフォルトの名無しさんNGNG
>>337
ぐおぉ…すげえなそれ。ATOKが欲しくなってきたよ。
0339デフォルトの名無しさんNGNG
すごいとは思うが、便利な使い方が思いつかない。
誰か教えてくれ。
0340デフォルトの名無しさんNGNG
クリップボードの内容をワンライナーや作り置きのスクリプトで
ざっくり加工できるっぽいところが便利そう。
たとえばエディタとしては貧弱なブラウザのフォーム内で、
置換処理ができるようになるわけだし。

ランチャーとしても十分便利そうだけどね。
HTTPで天気予報を引っ張ってくるスクリプトを書いておいて、
「てんき」でその場に出力されるってのとか。
メモしたい内容をクリップボードに放り込んでから「めも」で、
メモツールに記録されるとか。
0341デフォルトの名無しさんNGNG
なんかrubyって車輪の再発明つか、
既存のもののrubyへの置き換えが多いような気がするのは気のせい?
資産が少ないので作らなならんというのは分かるけど。
穿った見方をすると、rubyの美しいコードになんでも
書き換えようとする言語ヲタのナルチシズムに見える気もする。
0342デフォルトの名無しさんNGNG
ライブラリの充実が必要だけど、
移植で済むなら一から設計することもないってことかと。
0343デフォルトの名無しさんNGNG
>>341
「何が出来るのか」の確認と、
「何が出来ないのか(何が必要か)」の
洗い出しになってイイんじゃないかな。
0344デフォルトの名無しさんNGNG
たぶん、341 は覚えたばかりの「車輪の再発明」って言葉を
使ってみたかっただけなのではないかと。
0345デフォルトの名無しさんNGNG
Microsoft Visual C++ Toolkit 2003 でrubyをコンパイルしたいのだけど
どうすりゃいいんかい。
lib と dumpbinがないみたい?でも、win64/にはある???よーわからん。
0346デフォルトの名無しさんNGNG
> 例によってwindows.hとかそれに関するライブラリは Microsoft Windows
> Platform SDKのCore SDK(ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/)を
> インストールする必要あり。
らしい。ハズしてたらスマソ。
0347デフォルトの名無しさんNGNG
まあ、いろんな人が言語を使うので。
「perlじゃコレがあるのに、なぜrubyでは無いのか」という人も多いし。

あとそれと、同じようなものが必要になったときには、
既にあるものの仕様を参考にすることが多いので、
そういう意味では再発明とも言えるかな。
0348デフォルトの名無しさんNGNG
>>347
Core SDK とdebug SDKは入れたんですけど lib.exe と dumpbin.exe
は入ってきませんでした。
ほかの SDK もいるのかなぁーと。

Internet Development SDK
IIS SDK
MDAC SDK
Windows Installer SDK
WMI SDK
Tablet PC SDK

・・・関係ないよなぁぁぁ。
0349デフォルトの名無しさんNGNG
ところで、なんで「車輪の再発明」という言葉になったんだろう?
0350デフォルトの名無しさんNGNG
人類最古の発明の一つってことじゃないかな
電球の再発明じゃ新しすぎる感じ
0351デフォルトの名無しさんNGNG
電話の再発明
0352デフォルトの名無しさんNGNG
xmlparser-0.6.8 は make 通らないなあ (FreeBSD & BSD/OS) 。
0353352NGNG
あ、GCC 3 とかだとこれでも make 通るのかな。

GET_PARSER(recv, parser);
VALUE content = makeContentArray(parser, model);

を

VALUE content;
GET_PARSER(recv, parser);
content = makeContentArray(parser, model);

にしたら通った。
0354デフォルトの名無しさんNGNG
>>345
lib.exe/dumpbin.exe は .NET Framework SDK に入っている。(ランタイムじゃないぞ)
それから,byacc と sed が必要なので ttp://gnuwin32.sourceforge.net/ からGET。
bisonを使いたければ同じく GET して YACC=bison -y を Makefile に追加。
0355デフォルトの名無しさんNGNG
ま、再発明でも便利なら万事OK。
多様性は保険だ。
0356デフォルトの名無しさんNGNG
port や(新規性の乏しい)派生はそもそも"発明"ですらないよ。
0357デフォルトの名無しさんNGNG
>>355
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=9b3a2ca6-3647-4070-9f41-a333c6b9181d
↑入れたんですけど、入ってなかった・・・_no _no _no _no _no
0358デフォルトの名無しさんNGNG
rubyというかアルゴリズム全般の話な気もしますけど質問させてください。
ポーカーで任意の枚数を捨てて、出来得る役を全部表示するのを考えてます。
トランプ1枚は1から52の通し番号で識別してます。

def koukan(ary,rej)
if ary.size >= 5
puts ary.join(',')
return
end
for i in 1..52
next if (ary + rej).include?(i)
ary.push i
koukan(ary,rej)
ary.pop
end
end
myAry = [1,2,3] # 残すカード
myRej = [4,5] # 捨てるカード
koukan(myAry,myRej)

これで、一応動くんですけど、[1,2,3,6,7]と[1,2,3,7,6]みたいな
同種別配置を排除することができないかなと考えましたが、分かりません。
何かいい方法ないでしょうか。
0359デフォルトの名無しさんNGNG
>>358
Array じゃなくて Set (順番や重複の無い集合を扱うクラス) を使ってみるとか。
0360デフォルトの名無しさんNGNG
for i in 1..52
を
for i in ary.last..52
にするのは?
0361デフォルトの名無しさんNGNG
レスありがとうございます。
>>359
Setクラスは初耳ですが、リファレンス見たところ、
この場合はこっちの方が速そうですね。
できた役をぶちこんでいけば勝手に重複は削除されると。で、

irb(main):016:0> set1 = Set.new [1,2]
=> #<Set: {1, 2}>
irb(main):017:0> set2 = Set.new [2,1]
=> #<Set: {1, 2}>
irb(main):018:0> sset1 = Set.new [set1,set2]
=> #<Set: {#<Set: {1, 2}>, #<Set: {1, 2}>}>

あれ?重複してるはずなのに削除されない?
なんか使い方間違ってますかね?

>>360
うーん、それだと、[1,2,3,5]で[6]捨てる場合とかで
4が無視されてしまうような…
0362デフォルトの名無しさんNGNG
あぁ、sset1 みたいな使い方もしたいのか。
すると、 Set#eql? と Set#hash を再定義してやらないとダメかも。
ちょっと漏れにはすぐには思い付かない。
0363デフォルトの名無しさんNGNG
>>353
gcc3.3はC99デフォルトだからな。
まぁ、バグだろう。作者にレポートするよろし。
0364359NGNG
>>361
考えてみた。イマイチだなぁ・・・

class CardSet < Set
def eql?(oth); self == oth; end
def hash; self.size; end
end

set1 = CardSet::new([1, 2])
set2 = CardSet::new([2, 1])
set3 = CardSet::new([2, 3])

sset1 = Set::new
sset1 << set1
sset1 << set2
sset1 << set3
p sset1
0365デフォルトの名無しさんNGNG
議論を巻き戻して悪いが、結局taintの件はどうなったのだろう。
ここ見てくれてた人のおかげで、現在のリファレンスは>>298氏の言うとおり
> * 実装の都合上、Fixnum・Symbol・true・false・nil は汚染されない。
> なお Bignum・Float は汚染されることは注意が必要。
と追加されているが(青木さんありがとう)、BignumとFloatを汚染する意味があるのか・ないのか、自分ははっきりと読み取れなかった。
もし「本来は汚染させるべき」ということなら、大量のOBJ_INFECT()忘れが発覚するわけだが。
0366デフォルトの名無しさんNGNG
>>365
続きは ML でやった方が良いのでは?
0367デフォルトの名無しさんNGNG
>>363
ほんとだ、知らなかった。
ていうか-std=c89とかしても通る。なんじゃこりゃ…
0368デフォルトの名無しさんNGNG
WindowsでRuby/DBI+SQLite使いたいのですが、
どっかにバイナリあるでしょうか?
0369デフォルトの名無しさんNGNG
__END__ 以下のデータってバイナリで読み取れないの?

DATA.binmode
data = DATA.read

こうしたけど駄目でした。助けてドラエもん
0370デフォルトの名無しさんNGNG
>>369
ばーじょんは?
0371デフォルトの名無しさんNGNG
>>369
DATA.binmode
DATA.seek(0, 0)
data = DATA.read
でどうよ?

msvcrt版だと、改行コードはstdioでバッファリングされた時点ですでに変換
されてたと思った。seekすりゃ一度バッファを捨てるはず。
0372デフォルトの名無しさんNGNG
マルチスレッドなスクリプトを書いているのですが「〜押したらスクリプトを終了」
みたいな処理をしたいのですがどうしたらいいでしょうか?
$<、ARGF、から取得しようとするとそこでスクリプトが止まっちゃうので…
0373369NGNG
>>370
C:\>ruby -v
ruby 1.8.0 (2003-08-04) [i386-mswin32]

>>371
おおおお!さすがドラエもん。できました。
ただ、DATA.seek(0, 0) とすると__END__の前の部分(スクリプト部分)まで出てきてしまいました。

DATA.seek(DATA.tell, IO::SEEK_SET ) # ←の一行加えたら__END__以降のデータが取得できました。
DATA.binmode
data = DATA.read

ありがとうございました。
0374デフォルトの名無しさんNGNG
プログラム書いている時に、ちゃんと動くようになるまでは、
とりあえず最初の5行くら動かしながらテストするってのを
よくやるので、

while gets
  break if $.>=5 ###
  # なんかの処理
  print
end

なんてコードを書いて動くようになったら ### の行を削除
ってのをよくやります。
これと同じことを。 イテレータでやる場合、

c=0
vec = readlines
vec.each do |i|
  break if (c+=1)>=5
  # なんか処理
end

と書くしかないでしょうか?いちいち変数cを宣言するのが
めんどうなんですけど、なんかいいほうほうあったら
教えてちょんまげ。
0375デフォルトの名無しさんNGNG
>>374
each_with_index使ったらどう?
0376374NGNG
勉強不足でした。
正直スマンかった。
0377デフォルトの名無しさんNGNG
車輪の再発明するならせめて、既存のものよりマシなものでなければいけないわけで、
rubyはマシどころかものすごく使いやすいのでいいのではないかなと。
0378デフォルトの名無しさんNGNG
「車輪の再発明をするな」=「既存の良いものを積極的にパクれ」
という意味では、Ruby はそれを地で行って (そして成功して) いると思うのだが。
0379358NGNG
>>364
遅レスですいません。ありがとうございます。
$ ruby cardset.rb
#<Set: {#<CardSet: {1, 2}>, #<CardSet: {1, 2}>, #<CardSet: {2, 3}>}>
うーん、重複削除されませんね。
sset1をCardSetクラスにしてみてました
#<CardSet: {#<CardSet: {1, 2}>, #<CardSet: {1, 2}>, #<CardSet: {2, 3}>}>
やっぱり削除されません。
ちょっとクラス定義について勉強してみます。

あと、Cのアルゴリズム事典でビット演算使った、
テクニカルで爆速な組み合わせ生成が載ってたので
こいつをrubyで試してみようと思います。

0380358NGNG
>379で書いたビット演算のが意外にrubyで簡単に書き直せました。
枚数が31枚を超えるとfixnumからbignumの変換の関係でバグるみたいですが
とりあえず、26枚で実行。rubyで書いても結構爆速で感動しました。

$ time ruby koukan_array.rb > /dev/null ←358のヤツ
real 3m12.084s
$ time ruby koukan_bit.rb > /dev/null ←ビット演算
real 0m6.705s
0381358 koukan_bit.rbソースNGNG
N = 26; K = 5
def first(n); (1 << n) - 1; end
def nextset(x)
smallest = x & -x; ripple = x + smallest
new_smallest = ripple & -ripple
ones = ((new_smallest / smallest) >> 1) - 1
ripple | ones
end

def printset(s)
for i in 1..N
printf(" %d", i) if ((s & 1) != 0)
s >>= 1
end
print "\n"
end

i = 1; x = first(K)
while((x & ~first(N)) == 0)
printf("%4d:", i); printset(x)
x = nextset(x); i += 1
end
0382358NGNG
fixnumとbignumの変換が一定の条件でなされてないのか
N>30で変な所で止まったり、5枚以上選択して止まらなくなったり。

fixnumを使わないでbignumのみ使うような
整数クラスって定義できないんでしょうか?
0383デフォルトの名無しさんNGNG
>>382
bigdecimal?
0384358NGNG
bigdecimalは多倍長の浮動小数点数なんで、
| & ^ << >> ~ みたいなビット演算をサポートしてませんでした。
0385デフォルトの名無しさんNGNG
>>375
ヽ(`Д´)ノウワァァァン
そんなのあったのかYO!!
0386358NGNG
mswin32版の1.8.1と1.6.8だと >381 を N=52 にしても、
正常に動いているみたいです。
どうやらcygwin版固有のバグみたいですた。
0387デフォルトの名無しさんNGNG
ruby 1.8.1 (2003-12-25) [i386-cygwin] で Nを大きくして >>381 を動かしたら
確かにアヤシい動きするな。空行の有無で出力が違ったりするし……。
0388358NGNG
>>387
ですよね。再現条件が特定できんのですよ。
0389358NGNG
mswin32版の1.6.8も1.8.1も、
nCk (n=52,k=5) = 2598960 通りを吐き出して無事終了。
これで逝くとします。
0390デフォルトの名無しさんNGNG
>>387
> 空行の有無で出力が違ったりするし……。
そういうのはおおむねGC関連のバグ。
最新版だとどう?
0391デフォルトの名無しさんNGNG
いつになったらRubyの主要ライブラリからLGPL物がなくなりますか?
0392デフォルトの名無しさんNGNG
1.9じゃもうないはず。
0393デフォルトの名無しさんNGNG
>>392
まじっすか!!
regexやgcは置き換えできたのか
この辺がクリアされていれば組み込みが楽になりそうで嬉しい限り
0394デフォルトの名無しさんNGNG
>>393
regexはとっくの昔にOnigurumaになってる。
GCのどこにLGPLなコードがあるんだか、自分は知らないんだけれど。
0395デフォルトの名無しさんNGNG
LGPL ならべつに商用利用でもなんでもいいんじゃなかったっけ?
組み込みの障害になんかなるの?
0396デフォルトの名無しさんNGNG
>>395
単語が欠けすぎてて何言ってんだか分からない。

プロプライエタリなコードがLGPLなコードにダイナミックリンクをするのは、OK。
LGPLなコードをプロプライエタリなコードと混ぜて使うのは、(プロプライエタリ的には)NG。
0397デフォルトの名無しさんNGNG
プロプライエタリって何?
0398デフォルトの名無しさんNGNG
>>396
用語がいい加減で何言ってんだかわかんない。
「混ぜて」ってスタティックリンクのことを言いたいんだろうか・・・・
0399デフォルトの名無しさんNGNG
>>398
コードを混ぜるというのは、同一のソフトウェアの中に出身ライセンスの異なるコードを入れるということ。
同一のファイル内であろうが、異なるファイル同士をスタティックリンクさせようが、変わらない。
これくらいの日本語も読めないのか?
0400デフォルトの名無しさんNGNG
>>399
あなたの同僚は苦労しますね。
0401デフォルトの名無しさんNGNG
gc.cはたしかスクラッチだと思ったぞ。
まぁ組み込みのためには、まだまだ技術的な課題も残ってるんだが。
0402デフォルトの名無しさんNGNG
Rubyで、ネストしたループから脱出するにはどうしたらいいですか?
0403デフォルトの名無しさんNGNG
catch(:hoge) {
 loop {
  while true
   throw :hoge, some, value
  end
 }
}
0404デフォルトの名無しさんNGNG
catch & throw
0405デフォルトの名無しさんNGNG
catch & release
0406デフォルトの名無しさんNGNG
catcher in the rye
0407デフォルトの名無しさんNGNG
age
0408デフォルトの名無しさんNGNG
            ____| ̄ ̄|____           ________
            |               |\        /           |\
            |____    ____|:::::|      /   , ───    /\|
             \::::::::::::::::|   |:::::::::::::::::::::::\|    /   <:::::/ /   /:::::/
  ┏┓  ┏━━┓  | ̄ ̄ ̄      ̄ ̄ ̄|\ ̄  ./     \._/    /:::::/         ┏┓
┏┛┗┓┃┏┓┃  |_________|:::::|   <    /\      /:::::/           ┃┃
┗┓┏┛┃┗┛┃┏|   ○      ○   |:::::|━━ \/:::::/ >   / ̄ ̄ ̄ ̄ ̄ ̄|\.━┓┃┃
┏┛┗┓┃┏┓┃┃|    \──/    |:::::|      ̄  ̄/   /    ___    |:::::|  ┃┃┃
┗┓┏┛┗┛┃┃┗|      \/      |:::::|━| ̄ ̄ ̄ ̄   /    /::::, '━|   |:::::|━┛┗┛
  ┃┃     ┃┃  |____ ____ |:::::|  |_____/    <:::::/ /    |:::::|   ┏┓
  ┗┛     ┗┛  \  \:::::::::::::/   /\l  \:::|           \ . /    /\.|   ┗┛
          | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||______/\        /:::::/
          |_______________|\::::::::::::::::::::\/ \    ./:::::/
          \:::::::::::|             |\:::::::::::::\| ̄ ̄ ̄ ̄   /   /:::::/
            ̄ ̄|  ┌────┐  |:::::| ̄ ̄ ̄        /   /:::::/
              |  └────┘  |:::::|    | ̄ ̄ ̄ ̄ ̄   /:::::/
               |_________|:::::|   |______/:::::/
              \:::::::::::::::::::::::::::::::::::::::::\|     \::::::::::::::::::::::::::::\/
0409デフォルトの名無しさんNGNG
何がやねん
0410デフォルトの名無しさんNGNG
春が。頭に。>>408の。
0411デフォルトの名無しさんNGNG
>>395
上司を説得するのに障害になる…
0412デフォルトの名無しさんNGNG
Ruby/DBIについて質問です。
以下のプログラムで、プログラム実行中はtestdbが有効なのですが、
プログラムが終了するとtestdbのファイルサイズは0になってしまい、
その後読み込めません。何が原因でしょうか?

また、
データを入れるのに
ary=Array.new
ary[0]=123,"abc"
ary[1]=456,"def"
while data = ary.shift
#gonyogonyo
end
を使って一括して入れる方法はあるでしょうか?
0413412NGNG
require "dbi"
def create_table(dbi)
dbi.do(<<EOF)
CREATE TABLE R (
r1 INT,
r2 CHAR)
EOF
end
def test(dbi)
dbi.do(<<EOF, 123, "abc")
INSERT INTO R VALUES (?, ?)
EOF
dbi.do(<<EOF, 456, "def")
INSERT INTO R VALUES (?, ?)
EOF
end
dbi = DBI.connect("dbi:SQLite:testdb", "test", "test")
create_table(dbi)
test(dbi)
row = dbi.select_all(<<EOF)
SELECT * FROM R
EOF
print row
0414デフォルトの名無しさんNGNG
>>412
commit してないからかな。

DBI:SQLite はアヤシイので、SQLite/Ruby を使うのがオススメです。
0415デフォルトの名無しさんNGNG
DBIダメポ? なんだか悲しいオススメ
0416デフォルトの名無しさんNGNG
>>415
はい、私も悲しいんですけど、
UNIX 板の Ruby スレの 325 で報告したような感じなのです。
0417デフォルトの名無しさんNGNG
>>416
普段はdbh['AutoCommit'] = trueにしておいて、transaction開始時に
falseにする、とかして逃げられないのかなーと思った。かなり姑息
だし試してもいませんが。
0418412NGNG
情報どうもです。
もう少し、DBI:SQLite試して見ます。
#ようやく環境整えたのに...
0419デフォルトの名無しさんNGNG
SQLite/Ruby使ってdbd_sqlite書き直せばいいのかな。
0420デフォルトの名無しさんNGNG
[ruby-list:39589] ってなんなんだろう?煽ってるのかなあ?
0421デフォルトの名無しさんNGNG
>>419
どうでしょうね。件の記事 ([ruby-talk:75057]) を読んだ感じだと、
そもそも DBI がクソだから直すのはしんどいよ、ってことのようなのですが。
# 誤読していたらすいません。
0422デフォルトの名無しさんNGNG
Ruby/DBIで正規表現は使えますか?
使えるとしたら、サンプルはあるでしょうか。
0423デフォルトの名無しさんNGNG
>>422
ageるな
0424デフォルトの名無しさんNGNG
>423
>423
0425デフォルトの名無しさんNGNG
>>424
>>423
0426デフォルトの名無しさんNGNG
>>422
どういう意味?具体的に何がやりたいの?
0427デフォルトの名無しさんNGNG
>425
>423
0428デフォルトの名無しさんNGNG
>>426
SQLにはLIKE式があるようですが、
Rubyの正規表現をLIKE式の代わりに使えないかなー、と。
0429デフォルトの名無しさんNGNG
ぽかーん
0430デフォルトの名無しさんNGNG
>>428
結局 DBMS に渡すときに SQL になるんだが。
0431デフォルトの名無しさんNGNG
>>428
折角「SQL」で検索オペレーションが抽象化されてるんだから、
あんまり姑息なこと考えずに SQL でがんがれ。
0432デフォルトの名無しさんNGNG
CでARGVにあたるのって、gets()しかないのですか?
0433デフォルトの名無しさんNGNG
>>432
はぁ?
0434デフォルトの名無しさんNGNG
>>432
おまへは既に答えを知っているはずだ
0435デフォルトの名無しさんNGNG
ARGFも便利なんでヨロシク
0436デフォルトの名無しさんNGNG
こんなことできないの?

module M
 v = 0
 def get() v end
 module_function :get
end

M::get

NameError: undefined local variable or method `x' for M:Module
0437デフォルトの名無しさんNGNG
>>436
module M
 @@v = 0
 def get() @@v end
 module_function :get
end

http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%CA%D1%BF%F4%A4%C8%C4%EA%BF%F4
0438デフォルトの名無しさんNGNG
module M
 v = 0
 define_method(:get) {v}
 module_function :get
end
p M.get
0439デフォルトの名無しさんNGNG
>>420
煽ってるんでしょう。
0440デフォルトの名無しさんNGNG
単に親切だって話でないの?
0441デフォルトの名無しさんNGNG
あのやりとりで癒される香具師はどこかがおかしい。

というか、あの引用でSubjectに関係ない質問を付け加えてるんだから
煽りだろう。
元のメールも相当の煽りだが。
0442デフォルトの名無しさんNGNG
Net::HTTP の get クラスメソッドで、サイトのデフォルトのページを取得したい場合、
どうすればいいでしょうか?
たとえば、http://www.yahoo.co.jp/ にアクセスしたいとき、
Net::HTTP.get('www.yahoo.co.jp',[???])
[???]の部分に何を入れればいいんでしょうか?
よろしくお願いします。
0443デフォルトの名無しさんNGNG
"/"
0444デフォルトの名無しさんNGNG
>>403
遅れましたが、どうもありがとうございます。
raise - rescue とはべつに、throw - catch なんてのもあるんですね。
勉強になりました。
両者の違いはこれから調べてみます。
0445デフォルトの名無しさんNGNG
>>443
・・・それは、気がつかなかったよ;-)
0446デフォルトの名無しさんNGNG
str="昔(2000年前)、あるところ(北海道)でうんこした。\nおわり\n"
str.gsub!(/\(.+?\)/) {$&.tr!('\w', ' ')}
print str

で
昔、あるところでうんこした。
おわり
となってしまうんですが、
昔( )、あるところ( )でうんこした。
おわり
としたいのですが、どうすればいいのですか。
ruby 1.8.1 (2003-12-25) [i386-mswin32]
0447デフォルトの名無しさんNGNG
str="昔(2000年前)、あるところ(北海道)でうんこした。\nおわり\n"
str.gsub!(/\(.+?\)/) {$&.tr!('\w', ' ')}
print str

で
昔、あるところでうんこした。
おわり
となってしまうんですが、
昔(            )、あるところ(      )でうんこした。
おわり
としたいのですが、どうすればいいのですか。
ruby 1.8.1 (2003-12-25) [i386-mswin32]
0448デフォルトの名無しさんNGNG
こんなんどうよ?

p "昔(2000年前)、あるところ(北海道)でうんこした。\nおわり\n".gsub(/\((.*?)\)/m){|m|
  s = '('
  m.length.times{s << ' '}
  s << ')'
}
0449デフォルトの名無しさんNGNG
* tr! じゃなくて tr
* ていうか tr で \w は使えない

やり方はいろいろありそうだけど、とりあえずオレなら
str.gsub!(/\(.+?\)/) { "(#{' '*($&.size-2)})" }
かな。他の人のコードもみてみたい。
0450448NGNG
>449
あなたのコード方がよっぽどスマートだ・・。
0451デフォルトの名無しさんNGNG
目的に沿った動きになりました。感激です。
>>447のstrがalphabetだと動くんで、アホーな頭が混乱してしまいます。
0452デフォルトの名無しさんNGNG
汚ない文章だと思考回路が働きにくい事に気付いた。
0453デフォルトの名無しさんNGNG
良かれと思ってやった事が裏目に出る事があります。
便所の落書き2chに相応しいなぁーと思ったのですが。
便所の水で顔洗って出直してきます。
0454デフォルトの名無しさんNGNG
>>449
size-2 ってのが気持ち悪いので、俺なら+?をくくって$1かな。

>>428
素直にSQLの正規表現マッチを使うべし
0455デフォルトの名無しさんNGNG
>>431>>458
わかりました、SQLでやります。
0456デフォルトの名無しさんNGNG
win32oleでエクセルの操作をしていんですが、
すでに開かれてるエクセルのブックにアクセスするには、どうすればいいでしょうか?

つまり
エクセルファイルとして存在してるブックを開いて、編集っていうののやり方はわかったのですが、
編集中のエクセルファイルを、rubyから操作する方法がわかりません。
どうすればいいでしょうか?
0457デフォルトの名無しさんNGNG
>rubyから
VBS での書き方を調べれば自ずとわかるはず。
0458デフォルトの名無しさんNGNG
perlで
@arr=();
while(<>){ push(@arr,$_);}
print $#arr+1, ": end\n";
rubyで
arr=[]
while gets
arr << $_
end
puts "#{arr.size} : end"

10万行位のテキストデータを食わせると圧倒的に
Perl君の方が速いんですが、改善できるですかねえ。
0459デフォルトの名無しさんNGNG
改善も何も parrot になれば同じだろ
0460デフォルトの名無しさんNGNG
ParrotってIOStreamやArray等基本データは各言語共通なんかな。
だとしたら全く同じコードが生成されるかもしれないが。
0461デフォルトの名無しさんNGNG
readlines使うだろ
0462デフォルトの名無しさんNGNG
>>458
うちでやったら、大差ない(rubyの方が微妙に速かった)けど環境キボンヌ

$ wc data
100000 100000 10588890 data

$ time ruby hoge.rb data
100000 : end
real: 0.69s(user: 0.51s, system: 0.18s)
$ ruby -v
ruby 1.8.1 (2003-12-25) [i386-cygwin]

$ time perl hoge.pl data
100000: end
real: 0.77s(user: 0.54s, system: 0.18s)
$ perl -v | grep "This is perl"
This is perl, v5.8.2 built for cygwin-thread-multi-64int
0463デフォルトの名無しさんNGNG
>>461 のいってることはもっともだな
それからmacがわるいのかも。
データサイズを増やして露骨にわかるようにした以下を動かした。

perl -e'foreach $i (0..1000000){ printf("%07d\n", $i); }' > data ;\
uname ;\
perl -v | head -2; time perl -e '$a=(); while(<>){push(@arr,$_); }' < data ;\
ruby -v; time ruby -e 'arr=[]; while gets; arr << $_; end;' < data ;\
echo "readlines" ; time ruby -e 'arr=readlines' < data

その結果orz
Darwin

This is perl, v5.8.1-RC3 built for darwin-thread-multi-2level
4.840u 0.730s 0:06.41 86.8% 0+0k 0+0io 0pf+0w
ruby 1.8.1 (2004-04-16) [powerpc-darwin]
22.590u 2.290s 0:47.20 52.7% 0+0k 0+0io 0pf+0w
readlines
13.100u 2.060s 0:30.78 49.2% 0+0k 0+0io 0pf+0w
0464デフォルトの名無しさんNGNG
Array#pushって、配列の最後まで毎回リンクたどるんかな。
0465デフォルトの名無しさんNGNG
>>464
んなこたない。
0466デフォルトの名無しさんNGNG
つうかRubyのArrayはCレベルでも配列。リンクリストじゃないよ。
0467デフォルトの名無しさんNGNG
くすこ
0468デフォルトの名無しさんNGNG
配列だってリンクリストだ。
次要素へのアドレスが算出可能だから省略されているだけの話。
0469デフォルトの名無しさんNGNG
>>468
> 配列だってリンクリストだ。
勉強いちからやり直してね。
0470デフォルトの名無しさんNGNG
>>468
アドレスが決まった後のアクセスが同じってこと?
リンクではないようだが。
0471デフォルトの名無しさんNGNG
>>468
それCのこと?

0472デフォルトの名無しさんNGNG
>>470-471
放っとけよ。屁理屈だろ。
0473デフォルトの名無しさんNGNG
>>469
はて、rubyはぜろオリジンだったはずだが。
0474デフォルトの名無しさんNGNG
Array は C レベルでも配列なので、追加のときに毎度 realloc してるという
話を RHG で読んだ気がする。ある程度は先読みして確保してるかもしれない
けど。だからそんな風に毎度毎度 Array に追加するコードは書かない方がい
い。

Perl の実装がどうなのか知らないんだけど、そのあたりの差なんじゃないか
と思われ。行数カウントなら IO#lineno を使うとかでしょうね。
0475デフォルトの名無しさんNGNG
とりあえず手元にあったRuby1.6.1のソース見たけど、
Arrayのサイズが不足している場合、
現在のサイズ/2 か、 ARY_DEFAULT_SIZE(16) のうち大きい分だけ
増やすようになってるよ。毎度reallocしているというのは嘘。
0476デフォルトの名無しさんNGNG
rubyはループそのものが遅かったりするかもな。
0477デフォルトの名無しさんNGNG
じゃあ駄目駄目じゃん
0478デフォルトの名無しさんNGNG
ちょっと Ruby/Gtk2 について質問をさせてください。

ruby-1.8.1, ruby-gtk2-0.9.1 の環境で GUI の勉強をしています。
API References と rbbr-0.6.0 を参考にして
文字列検索のために下のように TextIter#forward_search を使おうとしました。

text_buf.start_iter.forward_search("Hello", Gtk::TextIter::SEARCH_TEXT_ONLY)

このとき

`forward_search': GtkTextSearchFlags is not a GEnum (TypeError)

というエラーが出てしまうのですが、これはどこに問題があるのでしょうか?
0479デフォルトの名無しさんNGNG
>>475
+2: 参考になる
0480デフォルトの名無しさんNGNG
2ch にこそ モデレート が欲しい
0481デフォルトの名無しさんNGNG
(1)あいうえお。
かきくけこ。

(2)さしすせそ。
たちつてと。

↓

(1)あいうえお。かきくけこ。
(2)さしすせそ。たちつてと。

という風に整形するプログラムなんですが

filename = ARGV[0]
file = open(filemname)

while text = file.gets.do

if /^(/ =~ text

elsif /\s/ =~ text

text.chomp!

end

これじゃどう考えてもダメだよね・・・
手元の本は初心者向きじゃないからわかんねえ。
0482デフォルトの名無しさんNGNG
>>481
filename = ARGV[0]
file = open(filename)
txt = file.readlines
txt = txt.join("")
txt.gsub!( "\n","")
txt.gsub!( "(","\n")
puts txt
0483デフォルトの名無しさんNGNG
listitems = ARGF.read.sub(/.*?(?=^\()/m, '').split(/(?=^\()/)
puts listitems.map {|item|
    item.map {|line| line.strip }.join('')
   }.join("\n")
0484483NGNG
stripで十分だった

listitems = ARGF.read.strip.split(/(?=^\()/)
puts listitems.map {|item|
    item.map {|line| line.strip }.join('')
   }.join("\n")
0485デフォルトの名無しさんNGNG
Apollo でユーザー定義のメッセージを受け取るにはどうすれば
よいのでしょうか?タスクトレイを扱いたい(Win32API ごり押し^^;)
と思ってみたものの、メッセージループがどこにあるのやら。
TForm なら WndProc をオーバーライドするらしいのだけども、
Phi.Form にそれっぽいのはないし。
0486デフォルトの名無しさんNGNG
>>482-484
ありがとうございます。やっぱネットがあると、学習速度が上がります。

0487デフォルトの名無しさんNGNG
>>481
手抜きだけど、
ARGF.read.gsub(/\n(?!\n)/m,'').display
じゃだめ?
0488デフォルトの名無しさんNGNG
win32oleについての質問です。

なぜ、プロパティの取得や設定の式が
p book.title
でなく、わざわざ
p book["title"]
としてあるんでしょうか?(わざわざというのは、もとのVBAがbook.titleでアクセスしてるから)

http://homepage1.nifty.com/markey/ruby/win32ole/win32ole03.html#propaty

Winのpropertyっていうのは、そんな特別なもの(?)なんですか?
僕的には、Workbookオブジェクトのtitleインスタンス変数とみた方がわかりやすい気がするのですが。。
単にカプセル化ってことですかね??

みなさん、どう思います?
0489デフォルトの名無しさんNGNG
>488
インスタンス変数にしたら、COM インターフェイスのラッパクラスとして
効果的に働かないと思います。
アクセッサとして定義しない理由は、メソッドとプロパティを区別したい
という意図かと思います。
0490デフォルトの名無しさんNGNG
この文字化けはどうやれば解決できるでしょうか?
$KCODE = 's'
puts "予約" => 蘭
puts "予定" => 嵐
ruby 1.8.1 (2003-12-25) [i386-cygwin]
0491デフォルトの名無しさんNGNG
-Ks
0492デフォルトの名無しさんNGNG
ありがとうございました。
0493デフォルトの名無しさんNGNG
>478
試してみたけどエラーは出なかった。
エラーの出る例全体希望。

# エラーにならなかった例:
require 'gtk2'
text_buf = Gtk::TextBuffer.new
p text_buf.start_iter.forward_search("Hello", Gtk::TextIter::SEARCH_TEXT_ONLY)
text_buf.text = "Hello"
p text_buf.start_iter.forward_search("Hello", Gtk::TextIter::SEARCH_TEXT_ONLY)
0494デフォルトの名無しさんNGNG
x = ARGV[0].to_i
y = ARGV[1].to_i
z = x + y

p z

これのフローチャートなんですが、
コマンドラインから数値を入力
↓
数値を変数に代入
↓
画面に出力

という書き方でいいのですか?
0495デフォルトの名無しさんNGNG
>494

 どこまで細かく書くかによるのだろうけど。

第1引数を整数に変換したものを変数 x で指し示す
↓
第2引数を整数に変換したものを変数 y で指し示す
↓
x と y の和を変数 z で指し示す
↓
z を出力する

 こんな感じ?
0496デフォルトの名無しさんNGNG
フローチャートなど書くな
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.3.3.html

> フローチャートに、代入文とかをいちいち書くものではありません。
> それでは、プログラム設計ではなく、コーディングをフローチャートを使ってしているだけです。
> これはフローチャート以前のことで、そもそもプログラム設計とは何かということが理解できていないようです。
0497デフォルトの名無しさんNGNG
「フローチャート」という言葉に脊髄反射しただけと見た。

自分はフローチャートは絶対書かないが、前任者が残しておいてくれると
助かることもある(フローチャートがなければ理解できない、スパゲティ
ソースコード書かれた場合の話だけど)
フローチャート書いてるヒマがあったら、わかりやすいコード書くほうに
時間かけろと言いたい。
0498デフォルトの名無しさんNGNG
他人に見せるためのフローチャートなんて最近は書かないよなぁ。
思考の手助けのために自分用としてなら、まれに書くことはあるけど。

で、個人的には「他人に見せるためのフローチャート」は
プログラムソースの読解の手助けになれば十分だと思ってるから、
>>494 程度の書き方で十分だと思われ。
入力ってところに違和感は感じるけどね。コマンドラインはそのプログラム
ではないから、入力するってよりはプログラム自身が引っ張り出してくる
イメージがある。>>495 みたくね。

それと、足し算は省略しちゃダメ。
それはこのプログラムの本質であり目的でしょう?
冗長な部分は省く。大切なところはきちんと残す。
文章を要約するみたいなもんさ。
0499デフォルトの名無しさんNGNG
>>496-497
授業でやらされてるんじゃないの?
0500デフォルトの名無しさんNGNG
プログラム全く初めての人にいきなりプログラミング言語教えて
みたいなシチュエーションだとたとえばwhile構文とはなにかを
示すのに流れ図あったほうが教えやすそうってのはもはや
考えが古いのかな。iteratorとかあるしなぁ...
0501デフォルトの名無しさんNGNG
class OuterHoge
def initialize(str); @msg = str; end
def sayHello; puts "hello, #{str}"; end
def createInner; InnerHoge.new; end
class InnerHoge
def method
OuterHogeの sayHelloを呼ぶ
end
end
end

obj1 = OuterHoge.new("obj1").createInner()
obj2 = OuterHoge.new("obj2").createInner()

というコードで以下のようにしたいのですが、
obj1.method #==> hello, obj1
obj2.method #==> hello, obj2

こんなクラスがあるときjavaだとstaticでない内部クラスなら
OuterHoge.this.sayHello
で自分が関連付けられている外側のクラスのインスタンスメソッドにアクセスできますよね?
rubyだとどうするんですか?
InnerHogeをnewするときにselfを明示的に渡してやらないと駄目?
0502478NGNG
>>493
レスありがとうございます。
そのコードを試してみたのですが、手元ではエラーになってしまいます。
こちらの環境の問題でしょうか?
0503デフォルトの名無しさんNGNG
>>499
YEAH!
0504デフォルトの名無しさんNGNG
>>501
ruby では、ネストの外側のクラスは名前空間くらいの意味しかないよ。

javaは全く詳しくないんでカンが働かないんだけど、
javaでそんな感じのコードを書いて実現したい事ってのは、
Ruby では(ネストしたクラスじゃなくて)もっと別のやり方で実現するのが
普通なんじゃないかな。

「自分が関連付けられている外側のクラスのインスタンスメソッドにアクセス」じゃなくて
「自分が生成されたコンテキストで評価(実行)」でよければ↓みたいにやる手はあるけど。

class OuterHoge
def initialize(str); @msg = str; end
def sayHello; puts "hello, #{@msg}"; end # <== @msg だよね
def createInner; InnerHoge.new{}; end # <== block付けた
class InnerHoge
def initialize(&block); @binding = block.binding; end # <== 追加
def method
eval("sayHello", @binding) # <== blockが生成されたコンテキストで評価
end
end
end

OuterHoge.new("obj1").createInner().method #==> hello, obj1
OuterHoge.new("obj2").createInner().method #==> hello, obj2
0505デフォルトの名無しさんNGNG
>>501
OuterHoge.this ってなに?
0506デフォルトの名無しさんNGNG
>>505
Javaで、内部クラスのインスタンスから外部クラスのインスタンスを参照する書き方
0507デフォルトの名無しさんNGNG
クラス名指定して、インスタンスをどうやって区別すんの?
それとも obj1.OuterHoge.this ってこと?
0508デフォルトの名無しさんNGNG
RAA の XML-RPC の I/F って無くなっちゃった?
0509デフォルトの名無しさんNGNG
>>507
全然違う。わからんのなら自分で調べろよ、低脳。
0510デフォルトの名無しさんNGNG
じゃあいいや。

「クラスの中のクラス」という構文は似てるけど、Java と Ruby では
全然別物って結論みたいだよ>>501
0511デフォルトの名無しさんNGNG
>InnerHogeをnewするときにselfを明示的に渡してやらないと駄目?
それが正解。OuterHogeとInnerHogeでは、両者のクラスは外・内の関係があるけど
両者のインスタンスはまったく関係がない。
0512デフォルトの名無しさんNGNG
>両者のクラスは外・内の関係があるけど
Class としてじゃなくて、Class の親クラスである Module として、だね。
0513デフォルトの名無しさんNGNG
Ruby の内部クラスは、 Java の static 内部クラスと同じ?
0514デフォルトの名無しさんNGNG
何を以って「同じ?」と聞いているのかよくわからない。
それに Ruby の内部クラスって何を指しているの?
(俺言葉を使われても困る)

非建設的で乱雑な比較を行い、低質な質問を浅墓に繰り返しても
答える人の時間がもったいないだけ。

比較サイトでも覗いてみたら。
http://www.google.co.jp/search?num=100&hl=ja&oe=UTF-8&q=ruby+java+%E6%AF%94%E8%BC%83
0515デフォルトの名無しさんNGNG
浅墓
0516デフォルトの名無しさんNGNG
深墓
0517デフォルトの名無しさんNGNG
深揺籃
0518デフォルトの名無しさんNGNG
一人でスレッド伸ばしてることに疑問を感じないのかなあ。>ruby-dev
0519デフォルトの名無しさんNGNG
ruby -0777 -n -e 'p $_' foo
とやったら foo の中身が表示されるのを期待したのですが、
なぜか空文字列が無限に出続けて終了しません。
間違ってますでしょうか?
0520デフォルトの名無しさんNGNG
>>519
$/ = nil な状態だと、終端に来ても gets などが nil を返してくれないみたい。
なんとなく実装ミスっぽい気がする。
ruby 1.8.1 (2003-12-25) [i386-mswin32]

とりあえずこんな感じで。一つしかファイルを与えられないのが難点だけれど。
ruby -0777 -e "p gets" foo
0521デフォルトの名無しさんNGNG
class A
@a="abc"
def initialize
@b="def"
end
def p_a
p @a
end
end

irb>a=A.new
irb>a.p_a
nil

"abc"って結果を期待していたんですが、代入されてないのはなぜ?

irb>A.instance_variables
["@a"]
irb>a.instance_variables
["@b"]

@aと@bは同じインスタンス変数なのに扱いが違うのはなぜ
なんでしょう?上のプログラムの場合、@aは何に属する
インスタンス変数なんでしょう?
0522デフォルトの名無しさんNGNG
>>521
Class クラスに属する、A という名前がつけられたインスタンスの変数。
だから A クラスに属する a という名前がつけられたインスタンスからは
直接は参照できない。
0523デフォルトの名無しさんNGNG
>>521
class A
@a = "abc"
def self.a; @a; end
def p_a; p self.class.a; end
end
0524デフォルトの名無しさんNGNG
Matz日記のコメント欄の議論ウゼェ
0525デフォルトの名無しさんNGNG
と Matz さんが申しております。
0526デフォルトの名無しさんNGNG
>>522 >>523
すばやいレスありが�d。
なんとなくわかってきたよ。もうちょいいじくりまわしてみます。
0527デフォルトの名無しさんNGNG
文字列で、ある正規表現にマッチする部分から別の正規表現にマッチする部分まで削除したい場合ってどうすればいい?
イメージ的には str.gsub(regexp1..regexp2, '') なんだけど。
str.gsub(/#{regexp1.source}(?:.*)#{regexp2.source}/, '') かしら。
もっとスマートな方法ない?
0528デフォルトの名無しさんNGNG
str1=regexp1.match(str).pre_match
str2=regexp2.match(str).post_match
str=str1+str2
0529デフォルトの名無しさんNGNG
>>528
それだと sub はできても gsub は無理なような。
0530デフォルトの名無しさんNGNG
regexp1 より前に regexp2 があった場合にダメです
0531RPI ◆3x0ES2jpL2 NGNG
str='012345vwxyz012345vwxyz012345vwxyz0'
from=/123/
to=/xyz/

mm=nil
i=-1
arr=[]
str.gsub!( from ){ |mm|
i+=1; arr[i]=mm; "\x00from#{i}\x00";
}
str.gsub!( to ){ |mm|
i+=1; arr[i]=mm; "\x00to#{i}\x00";
}

# from - to, \x00 は間にないと見なす。
str.gsub!(/\x00from\d+\x00[^\x00]*\x00to\d+\x00/, '')

# from - to , ペアになっていないものを戻す。
str.gsub!(/\x00(?:from|to)(\d+)\x00/){ arr[$1.to_i] }

puts str
# 0000 になる。
# str='0xyz012345vwxyz012345vwxyz012345vwxyz0' ならば
# 0xyz0000 になる。
# 例は簡単すぎるが。
0532RPI ◆3x0ES2jpL2 NGNG
あっ、そっか。
1from2from3to4 は 1234 にしていいのね。
0533デフォルトの名無しさんNGNG
>>532
1from2from3to4   はどうする。
1from2to3to4    はどうする。
1from2from3to4to5 はどうする。

from にマッチする文字列集合と
to  にマッチする文字列集合の関係も気になります。
たとえば、完全同一の from==to はどうします。
設問が一般的すぎ。個別具体的でないと。

str.gsub(/#{regexp1.source}(?:.*)#{regexp2.source}/, '')
str.gsub(/#{regexp1.source}(?:.*?)#{regexp2.source}/, '')
で終了。
0534508NGNG
XML-RPC なんか捨てて SOAP を使えということですかそうですか。
0535デフォルトの名無しさんNGNG
>>534あるじゃん。http://raa.ruby-lang.org/project/xml-rpc/http://www.ntecs.de/downloads/xmlrpc4r/xmlrpc4r-1.8.1.tar.gzあと、1.8からは標準添付な。
0536508NGNG
>>535
あなたには聞いてませんよ。

raa のエントリのデータを取得する API として、以前は、
http://raa.ruby-lang.org/xmlrpc/1.0/
という XML-RPC のエンドポイントが用意されていたのですが、
現在は 404 Not Found になっているようなのです。

SOAP のエンドポイントは、現在もあるようです。
http://raa.ruby-lang.org/soap/1.0/
http://raa.ruby-lang.org/soap/1.0.2/
0537デフォルトの名無しさんNGNG
Windows2000上でRuby/Tkを使いたいなぁと思っている者です。
Tcl/TkはActiveTclを三日前にダウンロードしてインストールしました。

で、以下のスクリプトを実行したのですが。。。

=========================================
require 'tk'

x = TkVariable.new('適当な文字列を入れてください')
TkEntry.new(nil, 'textvariable'=>x).pack
TkButton.new(nil, 'text'=>'値を表示', 'command'=>proc{p x.value}).pack

Tk.mainloop
========================================

Entryを書き換えずにそのまま「値を表示」ボタンを押すと、以下のような出力になり、日本語が出力されません。

========================================
"\223K\223\226\202\310\225\266\216\232\227\361\202\360\223\374\202\352\202\304\202\255\202\276\202\263\202\242"
========================================

何か設定ができてないためだろうと推察しているのですが、どうすればきちんと日本語が出力できるようになるでしょうか?

ちなみに、普通のRubyスクリプトではきちんと日本語がDOSプロンプトに出力されます。
0538537NGNG
>>537
自己レスです。

「proc中のpをputsにする」という解決方法を教えて頂き、これでうまくいきました。
0539デフォルトの名無しさんNGNG
>>538
p (ていうか String#inspect) は、
$KCODE か -K オプションで出力する文字列の文字コードをセットしないと、
日本語の文字列はバイナリとみなして出力しちゃうね。
0540デフォルトの名無しさんNGNG
>>502
text_buf.start_iter.forward_search("foo", "bar")
のように意図的に違うものを渡しても
TypeError: not a Gtk::TextIter::SearchFlags
にしかならないからruby-gtk2のインストールがなんか変なのかも。
0541デフォルトの名無しさんNGNG
質問です。

要素が 1000 個ぐらいの Array があって、それぞれの要素は
['apple', 'orange', 'mango'] とか ['kiwi', 'banana', 'apple'] みたいな単語からなる Array だとします。

1000 個の要素のうち、以下のようにすくなくとも一度だぶっている要素、を抽出したいんですが、
1000 個の全体全で & をとっていく方法以外に、なにかうまい方法はあるでしょうか?

['apple', 'orange', 'mango'] ['kiwi', 'banana', 'apple'] ['kiwi', 'melon']
-> ['apple', 'kiwi']
0542デフォルトの名無しさんNGNG
>>541
配列をなめつつ単語をキーにしたハッシュで出現回数を数えて
最後に出現回数>=2なものを抜きだすといったあたりじゃないですかね。

0543デフォルトの名無しさんNGNG
>>542
ワオーそれでできました大変ありがとう!
0544デフォルトの名無しさんNGNG
考えてみた。

dict, result = {}, {}
[
['apple', 'orange', 'mango'],
['kiwi', 'banana', 'apple'],
['kiwi', 'melon'],
].each { |set|
set.each { |word|
if dict[word]
result[word] = true
else
dict[word] = true
end
}
}
p result.keys # -> ['apple', 'kiwi']
0545デフォルトの名無しさんNGNG
これはどう?

ary=[
['apple', 'orange', 'mango'],
['kiwi', 'banana', 'apple'],
['kiwi', 'melon'],
]
ary0=ary.flatten
ary1=ary0.uniq
ary1.each{|x|
ary0.delete_at(ary0.index(x))
}
p ary0.uniq # => ["apple", "kiwi"]
0546デフォルトの名無しさんNGNG
(ary.flatten - ary.flatten.uniq).uniq

…と、つい書きたくなるけど、これはダメ。
0547デフォルトの名無しさんNGNG
一つの要素に二つ以上入ってる場合があるからってこと?
0548デフォルトの名無しさんNGNG
>>547
あぁ、それだと漏れの >>544 もダメか。
元の各要素は Array じゃなくて Hash か Set にするか uniq しとくべきだな。
0549デフォルトの名無しさんNGNG
self - other
集合の差演算。self から other の要素を取り除いた内容の新しい配列を返します。重複する要素は取り除かれます。

この「重複する要素は取り除かれます]は直観的でないよね。
0550デフォルトの名無しさんNGNG
>>549
たぶんみんなそう思ったらしく

ruby 1.8 feature: 重複した要素は保持されます。

だって。しかしこの文、オレは読んだだけじゃどういう意味なのか
さっぱりわからなかった。

ruby 1.8 featureの変更点一覧には例があるけどね。

p([1, 2, 1, 3, 1, 4, 1, 5] - [2, 3, 4, 5])
=> ruby 1.6.8 (2002-12-24) [i586-linux]
[1]
=> ruby 1.8.0 (2003-02-16) [i586-linux]
[1, 1, 1, 1]
0551デフォルトの名無しさんNGNG
[2, 2, 2] - [2, 2] は [2] だろうよと思わなくもなくなくない。
0552デフォルトの名無しさんNGNG
result = Hash.new(0)
[
['apple', 'orange', 'mango'],
['kiwi', 'banana', 'apple'],
['kiwi', 'melon'],
].each {|set|
set.uniq.each {|word| result[word] += 1}
}
result.reject! {|key, cnt| cnt == 1}
p result.keys # -> ['apple', 'kiwi']
0553デフォルトの名無しさんNGNG
俺も考えてみた。



なにも浮かばなくて涙が出た。
0554デフォルトの名無しさんNGNG
>>551
[1, 2, 1, 2] - [1] #=> [2, 2]
確かに中途半端な感じだね……。

array.c の 1.108 -> 1.109 で以前の仕様から変更されてるみたいだけど、
2003-02-03 前後の ChangeLog や ruby-{dev,list,talk} を見ても、現在の仕様に
なった経緯について触れてないっぽい。

Array#- を使ったことなかったけど、↓こんな動作するんだと思ってた。
class Array
def -(other)
occur = Hash.new(0)
other.each{|elm| occur[elm] += 1}

result = []
self.each do |elm|
if occur[elm] == 0
new_ary << elm
else
occur[elm] -= 1
end
end
result
end
end
0555デフォルトの名無しさんNGNG
0556デフォルトの名無しさんNGNG
Ruby からシェルスクリプトのように、コマンド群を実行したいのですが、
たんに system とかから実行するのではなく、以下のようなことがしたいと思っています。

* 実際にはコマンドを実行しないモード(dry run)みたいのがある。
* シェルスクリプト中の各コマンドについて、エラーハンドリングができる。
* そのほかシェルスクリプトから呼び出される各コマンド・プロセスの仮想化

いろいろぐぐってみたんですが、warlus プロジェクトの OBAQ というライブラリがそれっぽいことをやってくれそうです。
http://walrus-ruby.hp.infoseek.co.jp/pfm/func.html
とりあえず、ここにある pfm をインストールしようとしたんですが、以下のエラーで失敗します。

/usr/lib/ruby/1.6/pfm/pfmsupp.rb:15: uninitialized constant Resource at LocalResourceBase (NameError)
from /usr/lib/ruby/1.6/pfm/pfmmodel.rb:3:in `require'
from /usr/lib/ruby/1.6/pfm/pfmmodel.rb:3
from /usr/lib/ruby/1.6/pfm/pfmjob.rb:3:in `require'
from /usr/lib/ruby/1.6/pfm/pfmjob.rb:3
from /usr/bin/pfm:5:in `require'
from /usr/bin/pfm:5

メーリングリスト等は止まっているみたいなので、作者の中島@ブレーンさんに直メールでうかがったところ、
このプロジェクトは開発途中で終了とのことでした。。。
(中島さん、もしこのスレッド見てたら、お返事ありがとうございました)

OBAQ を今も使用してる方はいらっしゃいますか?
もしくは、上記のような目的をみたすライブラリってなにかあるでしょうか?
0557デフォルトの名無しさんNGNG
>>556
> Ruby からシェルスクリプトのように、コマンド群を実行したいのですが、
> たんに system とかから実行するのではなく、以下のようなことがしたいと思っています。

外部のコマンドを実行するには、fork&execとかsystemとか1.9ならspawnとか
IO.popenとか``とか使うしかないんだが。

> * 実際にはコマンドを実行しないモード(dry run)みたいのがある。

単なるフラグの処理だろ。

> * シェルスクリプト中の各コマンドについて、エラーハンドリングができる。

例外処理? それとも$?.exitstatusについて?

> * そのほかシェルスクリプトから呼び出される各コマンド・プロセスの仮想化

意味が分からない。
0558デフォルトの名無しさんNGNG
こわーい
0559デフォルトの名無しさんNGNG
こわいこわい
0560デフォルトの名無しさんNGNG
関数型言語の知見に基づくビルドツール DRMake
http://spa.jssst.or.jp/2003/program/papers/03007.pdf
0561デフォルトの名無しさんNGNG
なるほどと思って読んでたんだがここでワラタ。
|Ruby ユーザにとって新しい言語の習得の必要がない
0562デフォルトの名無しさんNGNG
PHP普及の原因は、イスラエル・Zend社のマーケティングの成功にある。
�@Perlでは別インストールで多くの人が知らないデーターベース利用を標準で使用できるようにし、「データーベースが簡単に取り扱える」というイメージを特に強く植えつけた。
�Aウェブサイト作成への特化。例えば、セッション管理がそうだ。
�Bソースの隠蔽による著作権保護を可能にした。
データーベースを使いたいが、使い方がわからない。そこに、PHPなら使えるという情報が先に入る。これで、PHPに入った人もかなり多いはず。
PHPの言語仕様はZendに大きく左右される。
二年ほど前、PHPが出始めた頃には、変数のスコープがPerlとまったく同じ仕様だった。
もともと、Perlのソースコードを改編して作成されたPHP。
↓PHPの歴史
http://php.planetmirror.com/manual/ja/history.php
PHPには、Perlコードの退行による高速化の意図が言語のいたるところに見える。
マイクロソフトは、オブジェクト指向への対応というのが大義にVB6.0からVB.NETに言語仕様を大幅に変えた。
今後も大きく言語仕様が変わることはないのか?
オープンソースとは言っても、Zend社の
http://www.zend.com/management.php
の数人のスタップによって大きく左右される。
再帰的定義とされる「PHP:Hypertext Preprocessor」という名前にも理由がある。これは、要するに、正確には、「Perl Hypertext Preprocessor」としたいところだが、GNUの「GNU is Not UNIX」という再帰的な定義をもじったものだ。
要するに、「GPLのフリーソフトのライセンスには違反していませんよ!」と一つには主張し、また、一つには、「PHP is Not Perl」とでも言って、Zendの社としての姿勢を、先人の「Perl開発者たち」から擁護する意図があったのだろう。
Nではなく、Hなのが、そのための味噌だ!Perl開発者たちは、当然、面白くないはずだ。
PHP信奉者は、六芒星(hexagram)マークのユダヤ教にでも、入信せよ!


0563デフォルトの名無しさんNGNG
>>562 って元ネタはどのコピペ?
0564デフォルトの名無しさんNGNG
リファレンスマニュアルに open-uri って無い?
0565デフォルトの名無しさんNGNG
>>564
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=open-uri.rb
0566デフォルトの名無しさんNGNG
>>565
節穴でした。しょうもない質問してしまってスマソ。
0567デフォルトの名無しさんNGNG
いろいろ調べましたが無理でした。

大変お忙しい中お手数ですが、
Ruby/Tkをmswin32かmingwで動かす方法を丁寧に教えて頂けないでしょうか。
0568デフォルトの名無しさんNGNG
>>567
インストールするだけでOK
http://rubyforge.org/frs/?group_id=167
0569567NGNG
簡単に動きました。ありがとうございます。
0570デフォルトの名無しさんNGNG
>>556
warlus 開発終了なの?お疲れ様でした。

…自作アプリ、warlus使わなくてよかった。
…… amrita の行く先は大丈夫かな。
0571デフォルトの名無しさんNGNG
Rubyで文字列を記述する場合、シングルクォートとダブルクォートの2種類があるのはなぜでしょう?
ダブルクォートだけでは困るケースがあるのでしょうか?
0572デフォルトの名無しさんNGNG
>>571
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%EA%A5%C6%A5%E9%A5%EB
0573デフォルトの名無しさんNGNG
シェルスクリプトからの伝統でしょ。
また実際、""で書いた方が楽な場面もあれば、''で書いた方が楽な場面もある。
a = 1
p "#{a}" # => "1"
p '#{a}' # => "#{a}"
とか。
0574デフォルトの名無しさんNGNG
>>571
\ が混じるとめんどい。特に Win のファイルパスを貼り付けた時。
0575デフォルトの名無しさんNGNG
あいぼーん
0576デフォルトの名無しさんNGNG
Ruby1.6.7 + rss-0.0.8 で RSS1.0 の dc_date が拾えない。もう1.8系しかだめなのかな。
0577デフォルトの名無しさんNGNG
rdoc の国際化がどうなってるか、追っかけている方はいますか?
納品せにゃならんプログラムの各に英語/日本語のコメントをつけるとき、
私は↓のように併記してますが、なにかうまいやりかたあるでしょうか?

#
# Returns current rcs timestamp.
#
# 現在の RCS タイムスタンプを返す
#
def rcs_date
...
end

0578デフォルトの名無しさんNGNG
>>577
Rubyで仕事。
イイナー、イイナー。
0579デフォルトの名無しさんNGNG
俺なんかPerlしかまわってこないぞ。
まあいいんだけど。
0580デフォルトの名無しさんNGNG
rdocの多言語対応はまだなんも決まっちゃいないはず。
javadocな人はどうやってんだろ。
0581デフォルトの名無しさんNGNG
仕事でヘタにrubyで書いちゃうと
会社辞める時の引継ぎが大変
普通使わねって。
0582素人NGNG
mod_rubyについて教えてください
何故エラーが出てるのかわかりません


[Tue May 25 20:15:31 2004] [error] mod_ruby: error in ruby
\n/usr/local/apache2/htdocs/ruby/test/TestMain.rb:2:
in `load': ./TestTool.rb:12: dynamic constant assignment (SyntaxError)
\n\t\tAAA1=CGI.escape(szEucKey)\n\t\t ^
\n\tfrom /usr/local/apache2/htdocs/ruby/test/TestMain.rb:2
\n\tfrom /usr/local/lib/ruby/1.8/apache/ruby-run.rb:53:in `load'
\n\tfrom /usr/local/lib/ruby/1.8/apache/ruby-run.rb:53:in `handler'\n

とapacheのerror_logに出力されてしまいます
0583デフォルトの名無しさんNGNG
SyntaxErrorって書いてあるじゃん
馬鹿?
0584素人NGNG
ソースです

TestMain.rb
------------
require "cgi"
load "./TestTool.rb"

szEucKey="&&"

AAA1=CGI.escape(szEucKey)
print "1:",AAA1,"\n"

TestTool.testMethod()
--------

0585素人NGNG
TestTool.rb
-------------
require "cgi"
require "uri"
require "kconv"

class TestTool

def TestTool.testMethod()
cgi=CGI.new
keyword=cgi["keyword"]
szEucKey=Kconv.toeuc(keyword)
p szEucKey
AAA1=CGI.escape(szEucKey)
print "2:",AAA1,"\n"
end

end
-------------
0586素人NGNG
>>583

TestMainの
AAA1=CGI.escape(szEucKey)は
うまくいくのですが

TestTool.rb だとエラーになってしまいます

全然わからなくて、困ってます。
0587デフォルトの名無しさんNGNG
in `load': ./TestTool.rb:12: dynamic constant assignment (SyntaxError)
って書いてあるじゃん
0588デフォルトの名無しさんNGNG
>582-586
dynamic constant assignment - 動的な定数への代入

定数への代入はメソッドの外でなくてはならない。
定数のじゃなくて変数を使うこと。
0589素人NGNG
あ・・・
すみません

気づきました
「AAA1」が駄目だったのですね
小文字にしたら旨くいきました

ありがとうございました、とても感謝しています。
0590デフォルトの名無しさんNGNG
rubyわかりにくいよね>素人
やめちゃえ
0591デフォルトの名無しさんNGNG
>>589-590
俺たちが悪かった。
どうか使ってやってくれ。
0592デフォルトの名無しさんNGNG
例えば、今回素人が全然わからなくて困っていた、
「小文字にしなかったのが原因」
という結論は、*nixでshとか使ってるやつなら直感的にわかる様な事だろうか。
そうだとしても、shも妙な仕様を抱えている言語の1つでもあるし、
ここは考察すべきところであると思う。

rubyがめざす言語ポリシーとして正しい道を歩んでいるのかどうか。
0593デフォルトの名無しさんNGNG
第一に、 *nix とか sh とかで把握できるようなものではないだろう(環境変
数が大文字というネタくらいか。でもこれって慣例だよね)。

たとえばメンバ変数が @ から開始される、とかいった決まりとほとんど同じ
だと思うし、大文字と小文字というのは区別としてはわかりやすいと思うなぁ。
ruby-mode ならかなり目立つ色になってくれるし。定数と覚えなくても「大文
字はクラス名という慣習である」という程度の理解でも、回避する役には立つ。

現実問題としては、これをやめた場合に Class や Object といった定数をど
う保護するか、というのが問題となる気はする。
そういうわけで、けっこう妥当な方針だと思うけど。
0594デフォルトの名無しさんNGNG
ん〜
そんなの Ruby のちゅーとりあるナナメ読みすれば
わかることじゃん。

自分でコーディングして、自分で調べるのが面白い、
それがプログラミングの楽しさと私は考えてます。

初学者でも、マニュアル読むくらいの丁寧さというか
学ぶ積極性というか周到さというか、そういうのは必ず持っているハズ。
そういった謙虚さが足りないと、学ぶスピードが落ちるし、
自分にとって大きなマイナスになる。

トライアル&エラーだけでコーディングを学ぼうとする人は
面倒臭がりすぎというか、頭のネジとか肛門とか、どこかゆるんでると思う。
0595デフォルトの名無しさんNGNG
プリーズ ティーチ ミーーーー
小数点4位以下を丸める方法はどうするのが一番簡単ですか?
0596デフォルトの名無しさんNGNG
(f * 1000).to_i / 1000.0
0597デフォルトの名無しさんNGNG
puts(Float(sprintf("%.4f", 0.123456)))
0598デフォルトの名無しさんNGNG
>>592は頭のかわいそうな人
0599デフォルトの名無しさんNGNG
>>595
「丸める」の意味次第で、>>596の to_i の部分を
ceil, floor, round のどれかに置き換える必要があるかもしれない。

0600595NGNG
(f * 1000).round / Float(1000)
で、いくことにします。ありがとうございました。
0601デフォルトの名無しさんNGNG
Float に四捨五入メソッドとかあったほうがよくないかな
0602デフォルトの名無しさんNGNG
>>601
四捨五入にもいろいろ種類があるんだぞ。
0603デフォルトの名無しさんNGNG
>>602
ごめん、よければ詳しく教えて。
0604デフォルトの名無しさんNGNG
602じゃないので想像で。

負数で .5ちょうどの場合に、正の無限大側に切り上げる(-1.5 -> -1.0)のか、
絶対値で考える(-1.5 -> -2.0)のか、とかかな。

あと、一つ上の桁の数字が奇数か偶数かで、.5の扱い(切り上げ・切り捨て)を
変えるような方式もあった気がするけど、これは「四捨五入」じゃないかも。
0605デフォルトの名無しさんNGNG
そのへんの仕様を決めるのに一悶着、メソッド名決めるのにもう一悶着。
0606602NGNG
http://www.google.co.jp/search?q=%E5%9B%9B%E6%8D%A8%E4%BA%94%E5%85%A5+ISO&ie=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
なんだ、情報処理に関係してる人には割と有名だと思ってたんだけど、そうでもないのか。
0607デフォルトの名無しさんNGNG
んなもん全部パラメータで指定すればいい。
メソッド名はaliasばら撒いて解決。
0608デフォルトの名無しさんNGNG
>>606
そういう数値演算とかの話って、知らなくていいひとは全然知らない気がする。
0609606NGNG
>>608
なるほど、そんなもんかな。
で、「1.0/2 != 1/2」の話へ繋がっていくとか。
0610デフォルトの名無しさんNGNG
そこでグローバル変数eの導入ですよ。
0611デフォルトの名無しさんNGNG
切り上げと切り捨てだけなら揉めずにすむか?
0612デフォルトの名無しさんNGNG
なんで四捨五入がないんだゴルアってもめる。
0613デフォルトの名無しさんNGNG
じゃあround()とiso_round()か。
それともsort()みたいに、round()にブロックを渡すとか。そりゃやり過ぎ。
0614デフォルトの名無しさんNGNG
>>592
変数命名の仕様は、知ってさえいれば十分に直観的。
そして今回の場合は、エラーメッセージを読めば十分に原因の見当は
つく(定数のつもりはないのにconstantとか言われてる)のだから、
こんなところで直感なんて使うなと。

>rubyがめざす言語ポリシーとして正しい道
とりあえずこれ嫁。特に2番目あたり。
http://slashdot.jp/articles/03/03/14/0258247.shtml
0615デフォルトの名無しさんNGNG
「Stringの連結が * であるべきだ」なんて言ってるやつがいるの?
わけ分からん。
0616デフォルトの名無しさんNGNG
Ruby1.6.4上でCGIを作っているのですが、File::unlink の際に奇妙な事が
起こり、困っています。

---
p Dir::entries(hoge + '/')
Dir::entries(hoge + '/').each {|filename|
path = hoge + '/' + filename
next if FileTest::directory?(path.untaint)
p Dir::entries(hoge+ '/')
File::unlink(path)
}
p Dir::entries(hoge + '/')
Dir::rmdir(hoge)
---
これを実行すると
---
(下の行のようなファイル名の配列がずらずら消えてゆく)
[".", "..", "body", "style", "lock"]
[".", "..", "style", "lock"]
[".", "..", "lock"]
[".", "..", ".nfs0c3e6b4700000d9a"] ←これ
./lib/Database.rb:50:in `rmdir': Directory not empty - "./database/bc9189406be84ec297464a514221406d" (Errno::ENOTEMPTY)

なぜ、突然 .nfs0c3e6b4700000d9a のようなファイルが作成されるのが
不思議です。 そして、そのファイルのおかげでディレクトリを削除できな
いのですが。 理由をご存知の方、いらっしゃいませんか?
0617デフォルトの名無しさんNGNG
>>616
http://www.que.ne.jp/tech/nfsfile.html
0618616NGNG
>>617
ありがとうございます。 ようやく納得できました。
まさか作業ディレクトリがNFS上だとは知りませんでした…。

.nfs* が File::unlink の後に残っているということは、クローズ処理なるものが
完了していないという事ですよね。 仮にそうだとすると、プログラムが終了
するまで、そのファイルは消えない事になりますよね。

そうすると、ディレクトリを削除するには、別のプロセスを立ち上げて消すしか
方法はないものでしょうか。 意外とNFSって曲者ですね。
0619デフォルトの名無しさんNGNG
>>615
数学屋
0620デフォルトの名無しさんNGNG
標準のCGIライブラリって使わないほうがいいんですか?
0621616NGNG
自己レス。
何か勘違いしてるかも。
出直してきます。
0622デフォルトの名無しさんNGNG
>>592
まあ確かに素人が↓のエラーを見たときに、
in `load': ./TestTool.rb:12: dynamic constant assignment (SyntaxError)
大文字が定数になるから。なんてわかるわけないよなぁ。

正直、定数は const 修飾子みたいなのがほしかった。
大文字小文字で区別するのはちょっとなぁ。
0623デフォルトの名無しさんNGNG
>>622
そお? どーせ、ハンガリアンうんたらで大文字で記述されたりするんだから
それを言語仕様に組み込むのってのは、いいアイディアじゃね?

大文字小文字関係なしにクラスだの変数たの定数だのがでてきたら、それだけで
コードを追う手間が増える。 部分を見ただけで、一発でそれが何かわかるってのは
すごく重要だと思うんだけどなー。

まつもと氏の「初心者はいつまでも初心者に甘んじるべきではない」ってのに一票。
0624デフォルトの名無しさんNGNG
初心者は大文字小文字の区別がつかないバカが多いからなあ。
0625デフォルトの名無しさんNGNG
>なんてわかるわけないよなぁ
調べてないんでしょ?わかるわけがないよ。
手持ちの知識と勘だけでいつでもどうにかなるなんて大間違い。
「なんで定数になってるの?」という疑問から、ふつうは言語仕様を調べる。
ていうかコーディングする前に、言語仕様ぐらいざっとでも目は通す。

素人に優しく玄人にも便利、っていうならかまわんけど。
でも素人とか初心者(≠初級者)なんぞのために、とっつきやすくも
不便な仕様に変えるようなら、きっと自分はrubyを見限る。
…優しい独裁者はそんな決断をしないと、信じてるけどね。
0626デフォルトの名無しさんNGNG
>>616
ああぁ、そのスクリプト、ホームディレクトリで実行しちまったよ・・・
なんかスッキリしたみたいだよ。鬱死・・・
0627デフォルトの名無しさんNGNG
rubyのCGIが動かせて無料で広告無しのホームページ作れるとこってない?
0628デフォルトの名無しさんNGNG
自宅鯖
0629デフォルトの名無しさんNGNG
用途は限られるがRubyForgeとか。RubyForgeって無料だよな?
0630デフォルトの名無しさんNGNG
>>615
"kyonkyon" は "kyon"*2 ではなくて "kyon"**2 じゃねえの?って話みたい。
0631デフォルトの名無しさんNGNG
>>624
DOS/Windowsのファイル名の仕様で慣れてるってのがあるかもね < 初心者
そういや、VBって区別するのかな?
0632デフォルトの名無しさんNGNG
"kyon"=="k"*"y"*"o"*"n"=="k"*"n"*"o"*"y"=="knoy"
0633デフォルトの名無しさんNGNG
行列とかやったこと無い?
加算で交換法則が成り立たないことはないはずだけど、
乗算では成り立たないケースがあるんだよ。
その習慣に倣えば、文字列結合は乗算となる。

言い分はいちおう理解はできるんだけど、そもそも文字列で
数学やってるのが間違いなんだよなぁ。
0634デフォルトの名無しさんNGNG
pdumpfsの質問です。

LAN上のPC1から、PC2へバックアップを取ろうとすると、
>pdumpfs.exe C:\temp \\PC2\backup
pdumpfs:444:in `main': undefined method `fprintf' for #<IO:0x8ce980> (NoMethodError)
from pdumpfs:462
なるエラーが出るのですが、LAN経由でのバックアップはできないのでしょうか。
PC1 XP NTFS
PC2 2000 NTFS
0635デフォルトの名無しさんNGNG
>>634
ruby 的な解法じゃないけど、ネットワークドライブを割り当てたらどう?
0636デフォルトの名無しさんNGNG
>>634
エラー嫁。
>pdumpfs:444:in `main': undefined method `fprintf' for #<IO:0x8ce980> (NoMethodError)

fprintf なんてメソッドあるのか?
ネットワークには関係なさそうだけどな。
0637デフォルトの名無しさんNGNG
>>636
ちなみにそこのまわりは

 if windows?
  fstype = get_filesystem_type(dest)

  if fstype !~ /ntfs/i
   STDERR.fprintf("pdumpfs: only NTFS is supported but %s is %s.",
        dest, fstype)
   exit 1
  end
 end

てな感じだった。fprintfは単にprintfの間違いだと思うけど結局NTFSじゃ
ないってエラーはいて終わるだけだね。とりあえずprintfに直して走らせ
ればそこが何になってるか調べることができると思う。windowsはよくわか
らんけど、LANで共有した奴はNTFSにはならないのかな?

0638634NGNG
ネットワークドライブ割り当てでうまくいきました。
ありがとうございました。
0639デフォルトの名無しさんNGNG
>>631
初心者だけってわけじゃなさそうですよ。どざの多くはそうなのかも。

ttp://linux.ascii24.com/linux/allascii/ascii/1999/07/30/176000-009.html
> ファイル名の大文字小文字を識別するのも生理的に受け入れ難い。
0640デフォルトの名無しさんNGNG
文字列中の^Hにマッチする正規表現って何ですか?
あと文字列中の
_____^H^H^H^HTEXT
みたいなのは何を意味しているんでしょうか?
0641デフォルトの名無しさんNGNG
/\x08+/ もしくは /(?:\^H)+/
ホンモノのデータを見ないとどっちかはわからん。
とりあえず「コントロールコード」について調べてみ。

>_____^H^H^H^HTEXT
HTML で表現するとこんな感じ。
<del>_____</del>TEXT
0642デフォルトの名無しさんNGNG
/\b/
0643デフォルトの名無しさんNGNG
>>637
ネットワークドライブに割り当てられたドライブは SMBFS になると思うぞ。
その先がNTFSだろうとFAT32だろうと、リモートホスト側で変換するはず。
NFSでも相手のファイルシステムいかんに依らず、NFSとして扱えるだろ?

以上、想像でした。
0644デフォルトの名無しさんNGNG
>>641 違う。HTMLで表現するなら <u>TEXT</u> だろ。
roffベースの man か何かのエスケープシーケンスだな。
0645デフォルトの名無しさんNGNG
パスワードに使えて、どの環境でも同じ結果を出す
暗号のライブラリってありますか?
0646デフォルトの名無しさんNGNG
crypt
0647デフォルトの名無しさんNGNG
>>646
環境によって違うからダメでしょ。md5 とかにした方がマシ。
0648デフォルトの名無しさんNGNG
捨てっちまえ > bcc
0649デフォルトの名無しさんNGNG
1.8 で、

class Foo; end
class Foo::Bar; end

こう書けるようになったのは嬉しいのだが、

class Foo; class Bar; end; end
class Foo::Baz < Bar; end

これがエラーになるのはちょっと悲しい。
0650デフォルトの名無しさんNGNG
>>643
unix 系の場合はそうかもね。

ちなみにエクスプローラのプロパティを見ると、ネットワークドライブ
の場合はしっかり NTFS と認識してる。元が FAT32 の場合はシラネ。
0651デフォルトの名無しさんNGNG
>>649
class Foo::Bar; end は
class Foo; class Bar; end end の省略記法では*ない*からな。
0652デフォルトの名無しさんNGNG
>>649
class Foo::Bar; end は
class Foo; class Bar; end end の省略記法では*ない*からな。
0653デフォルトの名無しさんNGNG
というかスコープの話じゃない?
Foo::Baz の定義は main で行われているのだから、当然 ::Bar を探しに
行くわけだ。Foo::Bar と指示してやらないと。
0654デフォルトの名無しさんNGNG
スコープの話じゃない?
Foo::Baz の定義は main で行われているのだから、それだと当然
::Bar を探しに行くわけだ。Foo::Bar と指示してやらないと。
0655デフォルトの名無しさんNGNG
スマソ。pc5 重すぎ&反映遅すぎ。orz
0656デフォルトの名無しさんNGNG
ふかわりょうスレですか?というのはともかくとして。

だとすると、 class Foo::Bar; end と書けてもあまり嬉しいことないなあ。
class Foo; class Bar; end; end のままでいった方が良さげだなあ。
0657デフォルトの名無しさんNGNG
>>649
class Foo::Bar; end は
class Foo; class Bar; end end の省略記法では*ない*からな。
0658デフォルトの名無しさんNGNG
>>649
class Foo::Bar; end は
class Foo; class Bar; end end の省略記法では*ない*からな。
0659デフォルトの名無しさんNGNG
>>649
class Foo::Bar; end は
class Foo; class Bar; end end の省略記法では*ない*からな。
0660デフォルトの名無しさんNGNG
>>656
ライブラリの再定義をするときとかに便利だよ。
特に名前空間が深い時ね。
 module Foo; class Bar; end; end
 class Foo::Bar; def baz; end; end

あと class Foo::Bar は、クラス Foo そのものには影響を
与えないことが明瞭になる。
 class Foo; end
 class Foo; class Bar; end; def baz; p 'Foo#baz'; end; end
0661デフォルトの名無しさんNGNG
>>657-659
これ全部俺か? ケイタイだとよく分からん。
スマソ逝ってくる。orz
0662デフォルトの名無しさんNGNG
>>657-659
これ全部俺か? ケイタイだとよく分からん。
スマソ逝ってくる。orz
0663デフォルトの名無しさんNGNG
>662
その調子で1000までたのむよ
0664デフォルトの名無しさんNGNG
www.ruby-lang.orgメンテ中。
CVS周りのアップデート中か?
0665デフォルトの名無しさんNGNG
>>663 も二重書き込みだったらおもしろかった。
0666デフォルトの名無しさんNGNG
>>664
このタイミングだと、namazu.orgやらmozilla.gr.jpやらの話
http://slashdot.jp/article.pl?sid=04/05/27/1453244&topic=92&mode=thread
を思いだしてしまうのだけど。やっぱクラックされたんじゃ?
0667デフォルトの名無しさんNGNG
>>666
やっぱり。
0668デフォルトの名無しさんNGNG
本当にクラックされてたとは
0669デフォルトの名無しさんNGNG
helium.ruby-lang.orgがクラックされました
http://www.ruby-lang.org/announce-ja.txt
0670デフォルトの名無しさんNGNG
やっぱりオープンソースって怖くて使えないね。
0671デフォルトの名無しさんNGNG
ラビーて無料?なら教えれ
0672デフォルトの名無しさんNGNG
>>671
もみあげを伸ばすのか?
0673デフォルトの名無しさんNGNG
クラックされました
ttp://www.rubyist.net/~matz/20040529.html
0674デフォルトの名無しさんNGNG
http://www.namazu.org/ の orz はなんなんだ?ワラタぞ
0675デフォルトの名無しさんNGNG
このまま消える言語に一票。
0676デフォルトの名無しさんNGNG
これか。

【オフィシャル】Rubyはこのまま消えていく言語にノミネートされました 【サイト消滅】
http://pc5.2ch.net/test/read.cgi/php/1060009605/
0677デフォルトの名無しさんNGNG
>>673
ツッコミわろた
0678デフォルトの名無しさんNGNG
これでオプソプロジェクト全滅してくれると非常にうれしいよね!>ALL
これからはクローズド・ソース!
0679デフォルトの名無しさんNGNG
>>626
いまさらだが、あまりの感動に泣いた。( ´Д⊂ヽ
0680デフォルトの名無しさんNGNG
よーし、パパも質問のふりして、さりげに危険なコード貼っちゃうぞ!
0681626NGNG
兄さん。
あれからというもの、コツコツあちこちから設定ファイルの断片をかき集めて、
最近ようやく普通の暮らしになれてきたところです。
バックアップは重要、そんな平凡であたりまえな言葉の、
本当のありがたみが身にしみてきている、
そんな今日この頃です。
0682デフォルトの名無しさんNGNG
…そんなあなたのために、pdumpfs。
ttp://namazu.org/~satoru/pdumpfs/
0683デフォルトの名無しさんNGNG
s.split(/(,)/).each{|ss|
 if ss =~ /,/
  print ss
 else
  print "\"" + ss + "\""
}
これはカンマで区切られた文字を""で囲むコードなんですが、
二度も/,/でチェックしていて無駄な感じです。
ssがsplitの引数にマッチしたのか、マッチしていないのかは
どこかに保存されていないのでしょうか?
0684デフォルトの名無しさんNGNG
orgも下半身のふくよかなorzに見えないことはない
0685デフォルトの名無しさんNGNG
>>683
splitの正規表現にカッコを使わないのはどうよ
print s.split(/,/).map{|ss| '"' + ss + '"'}.join(',')

あるいはgsub使うとか
print '"' + s.gsub(/,/,'","') + '"'
0686デフォルトの名無しさんNGNG
URI って file は解釈してくれないでしょうか?
ruby -ropen-uri -e "puts URI::parse('file:///tmp/hoge').read"
みたいな。
0687デフォルトの名無しさんNGNG
あんまruby本体に機能詰め込むと起動が遅くなると思うんですが。
その辺どういう見解ですか?>開発者ども
0688デフォルトの名無しさんNGNG
こんな見解でどうですか。

$ time ruby16 -ep

real 0m0.047s
user 0m0.030s
sys 0m0.010s

$ time ruby18 -ep

real 0m0.030s
user 0m0.020s
sys 0m0.010s
0689デフォルトの名無しさんNGNG
>>687
自分で外してビルドすれば。
0690デフォルトの名無しさんNGNG
そういえば、ruby で Robocode みたいなことをやりたいんですが
ruby 本体を埋め込みして、不特定多数のデベロッパが作った
ruby スクリプトをネットワークでやりとりするんです。

セキュリティ上、埋め込みした ruby からは File などを
はずしておきたいんですが、そういう ruby のソースコードの腑分けを
解説してくれてるサイトってないですかねぇ。

ttp://i.loveruby.net/ja/rhg/index.html
↑こちらとかは、とても参考にさせていただいてます。

できれば Thread ははずしたくないんですが、これは残しておいて
大丈夫ですかね?
0691デフォルトの名無しさんNGNG
>>690
$SAFE = 4 じゃだめなの?
0692デフォルトの名無しさんNGNG
>691
なるほど、目からウロコです!
それでいけそうですね。
とりあえずセキュリティはセーフレベルにゆだねる形で
作っていって、なにか不具合があったら、また検討したいと思います。
ありがとうございました。
(こういうスレで聞いてみるもんだなぁ・・)

ついでに質問で恐縮なのですが
私は embedded ruby はまるきり初心者なのですが、
みなさんはどういう風に勉強されましたか?
トライアル&エラーでしたか?
0693デフォルトの名無しさんNGNG
>>690
RubyRobots?
0694デフォルトの名無しさんNGNG
>693
なんと、もうあったのですね…。
まぁ勉強にはなりますので助かります。
参照させていただきます。
0695デフォルトの名無しさんNGNG
設定ファイルをRubyで書いてもらってそれを読み込みたいんだけど、
本体スクリプトとのデータの受け渡しはどうやるのがいい?
わざわざ設定用のAPIを作るほどでもなくて、いくつかの変数に
代入してもらう程度なんだけど。
0696デフォルトの名無しさんNGNG
load とか require とか YAML とか Marshal とか PStore とか・・・
0697デフォルトの名無しさんNGNG
☆★☆★ 日本語プログラミング言語『ひまわり』 ☆★☆★

日本語で『こんにちはと、言う。』と入力すれば
ダイアログに『こんにちは』と出るプログラミング言語登場!!
PNGもサポートしてるので、かなりおすすめです!!
また、【『http://www.xxxx.xx/』を、『index.htm』へ、HTTPダウンロード。】
とすれば自動的にダウンロードできる優れ物です!!

↓日本語プログラミング言語『ひまわり』
http://hima.chu.jp/index.htm
↓日本語プログラミング言語『ひまわり』スレッド
http://pc5.2ch.net/test/read.cgi/tech/1083053283/l50
0698デフォルトの名無しさんNGNG
>>695
>Rubyで書いてもらってそれを読み込み
この時点で、
* load
* 読み込んで eval する
のどっちかじゃないかな。
require はムダに再読込を防止されちゃうから使わない方がよさげ。

たとえば tDiary は load してる。

>>696
Marshal(PStore) は手書きできないし、互換性も保証されない
んじゃなかったっけ?
0699デフォルトの名無しさんNGNG
>>698
tDiary は load じゃなくて eval してる。

$ ident tdiary.rb ; grep -n \"tdiary.conf\" tdiary.rb
tdiary.rb:
$Revision: 1.190 $
471: eval( File::open( "tdiary.conf" ){|f| f.read }.untaint, binding, "(tdiary.conf)", 1 )
0700695NGNG
うーん、なにかいいライブラリがあるわけじゃないのね。
サンクス
0701デフォルトの名無しさんNGNG
>>688
他と比較してない時点で無駄なデータ
0702デフォルトの名無しさんNGNG
>>699
ぅげぇ
0703デフォルトの名無しさんNGNG
>>701
バージョン上がって機能が増えると遅くなるんじゃないか、
という話とは違うのん?
0704デフォルトの名無しさんNGNG
おしえてください。

以下のような、現在の時刻を表す文字列を生成したいのですが、
(用途は Debian の debian/changelog ファイルなどの生成)
、
'Wed, 2 Jun 2004 10:48:57 +900'
こういう形式の文字列って Time クラスだけで作ることできるでしょうか?

自分がやってみたのは、
t = Time.new
t.strftime("%a, %d %b %Y %X %Z")
=> 'Wed, 02 Jun 2004 10:48:57 JST'

となり、自分が求めているフォーマットと比べると、
日付 2 -> 02
タイムゾーン +900 -> JST
となってしまい、いまいちでした。。。



0705デフォルトの名無しさんNGNG
time.rbのTime#rfc2822を参考に数行書き替えるとできるんじゃないかな。
0706デフォルトの名無しさんNGNG
% ruby -e 't=Time.new; p t.strftime("%a, %e %b %Y %X %z")'
"Wed, 2 Jun 2004 13:35:14 +0900"
0707デフォルトの名無しさんNGNG
>>706
%z が使えるかどうかは環境依存と思われ。
0708デフォルトの名無しさんNGNG
リファレンスだけでも復活させてよヽ(`Д´)ノ
0709デフォルトの名無しさんNGNG
>>708
漏れは手元にダウンロードしてきて見てる。
http://www7.tok2.com/home/misc/ruby.html
0710デフォルトの名無しさんNGNG
すいません、プログラムを実行すると標準出力に出力があるんだけど
それがどこのコードによるものかがわからない場合
どうしたらいいんでしょう?
0711デフォルトの名無しさんNGNG
ラビーって何?ひまわりと同じ言語?
0712デフォルトの名無しさんNGNG
Ruby

Ru by


普通Ruを’ラ’とは読まんよなあ・・
狙ったボケだったりしたら萎えるなあ・・
寒いよなあ・・
0713デフォルトの名無しさんNGNG
>>712
メール欄よく読もうね。
0714デフォルトの名無しさんNGNG
なんでそんなのが釣りになりうると思えたんだろう。
0715デフォルトの名無しさんNGNG
ユダヤ教の司祭だろ?
0716デフォルトの名無しさんNGNG
ttp://i.loveruby.net/d/20040516.html#p04
レシピブック、早いとこ項目見出しも公開して欲しい。
田舎なんで本屋に置いてないから中身確かめることもできんよ。
0717デフォルトの名無しさんNGNG
>>710

とりあえず、きれいな方法でなくても良いなら。

set_trace_func(

Proc.new {|event, file, line, id, binding, classname|

if event == 'c-return' and id = :puts
puts ['trace:', file, line, classname].join("\t")
end

}

)
0718デフォルトの名無しさんNGNG
>>710
grep で関連コードを絨毯爆撃か、デバッガで追うのがふつうかな。
ruby ならではということで >>717 と同様に STDOUT.print を
書き換えることも考えたけど、出力のメソッドが print とも puts
とも限らないのが悩みどころなんだよね。
たぶん print か write あたりが比較的低レベルだと思うんだけど、
調べる気力が今はない :-)


どーでもいいけど、デーモンだからって、モジュールの使い回しをする
関係で出力してしまうことがあると思うんだけどな。
出力しないように作り直すのもめんどくさいし。
個人的には、IO 派生のログ出力クラスを作ってそこに繋いどく。
0719デフォルトの名無しさんNGNG
>>718
そんな糞モジュール(ry と言いたいところだけど、そういうのは意外と多いのかね?
そんなの漏れなら全部 /dev/null 行きにしちゃうんだけど、
でも、Ruby 本体の例外終了時のエラー出力だけはどうしようもない、
というかどうにかして欲しいんだけど、どうにか拾わないとメチャメチャ困るので、
STDOUT, STDIN, STDERR は /dev/null 行きにしつつも、
$stderr はどっかのファイルかログ出力用クラスに繋ぐ、くらいはやるかな。
0720710NGNG
>>717,718
ありがとうございます。解決しました。
メソッドの名前をdataにしていたのが原因でした。
名前を変えたら直りました。
けど、dataって特別なメソッドでしたっけ?
0721デフォルトの名無しさんNGNG
>>712

俺は北米系の英語しかわからんが、 u は、日本語だと「う」じゃなくて「あ」に近いね。
南の方いくと「う」に近い感じになってくるかもしれん。 特にスペイン語系の奴らは。

まあ、どうでもいいね。
0722デフォルトの名無しさんNGNG
長い u のどこが「あ」に近いと言えるのか理解に苦しむ
0723デフォルトの名無しさんNGNG
雲丹が兄になっちゃうのはイヤだなぁ
0724デフォルトの名無しさんNGNG
>>722
長いって何?
よくわからんが、一応、ありふれた単語で例をあげておく

Urgent -> あーじぇんと(×うーじぇんと)
Upload -> あっぷろーど(×うっぷろーど)
Cut -> かっと(×くっと)
Curry ->かりー(×くりー)
Tully's -> たりーず(△とぅりーず)
Starbucks -> すたーばっくす(×すたーぶっくす)
Fuck -> ふぁっく(×ふっく)
Suck -> さっく(×すっく)

さ、カタカナ英語の時間はおしまい。 オフトピsage
0725デフォルトの名無しさんNGNG
rúːbi
0726デフォルトの名無しさんNGNG
>>720
> けど、dataって特別なメソッドでしたっけ?
違う。

そのコードやSTDOUTに出てたっていう出力でも見ないことには何もいえん。
0727デフォルトの名無しさんNGNG
で、この言語はルビーなのかね?ラビーなのかね?
0728デフォルトの名無しさんNGNG
ルービ
0729デフォルトの名無しさんNGNG
>>724は真性バカ決定
0730デフォルトの名無しさんNGNG
already initialized constant

が出てくるんだけど、原因がさっぱりわからない

このwarningで例外投げるようにしてほしいのだけど、どうすればよいですか
0731デフォルトの名無しさんNGNG
Walk は ワルク と読みます
Netscape は ネッツカーペ と読みます
Builder は ブイルデー と読みます
0732デフォルトの名無しさんNGNG
ではRubyは ルァゥヴィ- と読みましょう

>>730
変数名のはじめに大文字つかってるっぽいな
変数名のはじめが大文字の場合は定数扱いになるから。

だからょお、constとか作ろうze
0733デフォルトの名無しさんNGNG
>>729
ならば>>724をみて納得した俺も真性バカ決定
0734デフォルトの名無しさんNGNG
>>730
たしか ruby-list に要望があがってたはず。

とりあえず >>717 を if event == "line" then に書き換えて、
代入を全て追いかけるとかは?
やたら冗長だけど、目星をつける役には立つんじゃないかな。
0735デフォルトの名無しさんNGNG
メソッドを引数の数でオーバーロードって出来ないの?
0736デフォルトの名無しさんNGNG
def a(x, y=1)
x-y
end
puts a(10) # => 9
puts a(10, 2) # => 8

0737デフォルトの名無しさんNGNG
定数の再代入禁止が採用されないのは組み込みで困るとかいう話じゃなかったかな。
0738デフォルトの名無しさんNGNG
だからインタープリタのインスタンスを複数持てるようにしてくれ、と。
0739デフォルトの名無しさんNGNG
evalじゃまずいの?
0740デフォルトの名無しさんNGNG
インタプリタのインスタンスがあったとして、制御とIOはどんなAPIになるの?
0741デフォルトの名無しさんNGNG
スマソ、記憶の片隅にあったのはクラス再定義(Class オブジェクト再代入)
の話だった。[ruby-list:39567]

>>737
デフォルトはともかく、strict なモードがあってもよいと思われ。
0742デフォルトの名無しさんNGNG
>>741
グローバルなモード(?)ならやっぱり組み込みで困るような。
0743デフォルトの名無しさんNGNG
>>736
それはオーバーライドなんでわ?
0744736NGNG
うぉ、素で間違えた。いつまで経ってもどっちがどっちだか覚えられんので
す……スマソ。
メソッドを引数の数でオーバーライドって、こんな感じ?
class A
def a(x, y); x + y; end
end
class B < A
def a(x); x ** 2; end
end
B.new.a(10) # => 100
B.new.a(10, 1) # => 11
これはできないと思うけど。
0745デフォルトの名無しさんNGNG
>>743
ハァ?
0746735NGNG
自分が意図していたのはこんなのでした。

class C
 def initialize(str)
  # 文字列から生成
 end

 def initialize(a, b, c, d)
  # パラメータを与えて生成
 end
end

デフォルト引数を駆使するか、メソッド名を変えるしかない?

def C.parse(str)
 # ...
 new(a, b, c, d)
end
0747デフォルトの名無しさんNGNG
>>733
チミは無害なので仮性
0748デフォルトの名無しさんNGNG
影舞結構よさげな感じ。
ただIISだとぽろぽろCGIエラーや警告が出る。
ところで運用中にフィールド削ったらいけないの?
担当者削ってレス書き込んだらassignedが無いとか怒られた。
0749デフォルトの名無しさんNGNG
>>746
こんな感じとか?
漏れはメソッド名変えた方がおすすめするけど。

def initialize(*arg)
if arg.size == 1
# 文字列から生成
else
# パラメータを与えて生成
end
end
0750デフォルトの名無しさんNGNG
>>742
$DEBUG みたいなものをイメージしてたけど、
$SAFE のようにスレッドローカルなら問題ないのでは?

>>746
def initialize(a, b=nil)
 if b == nil
  init_a(a)
 else
  init_b(a,b)
 end
end
protected
def init_a(a)
 :
こんな感じの方法もあるけど、nil を渡せない欠点あり。
でも一般的に、メソッド変える方がわかりやすいコードになるんじゃないかな。

そーいや modruby.net もヤラれてたんだね。
あっちもこっちもで前田さん大変だ。
http://modruby.net/ja/announce.txt
0751デフォルトの名無しさんNGNG
>>748
フィールド削除でエラーは、影舞の BTS:154 だな。
Win32 での動作は BTS:190 あたり。
CVS の release-0_8-branch を取得するのがベストかも。
Win32 まわりの修正もコミット済みっぽいし。

つーかそろそろバグ修正をまとめてリリースして欲しいんだが。
0752デフォルトの名無しさんNGNG
>>733
大丈夫、キミはズルムケだ。

>>724 は>>712 の Ru に対して言ったんだろ?
きっと、>>729 はアメリカの国防長官の名前を「ルムズフェルド」とか発音してるはずだ。
酒場に行っても「ルム・コーク」。 さすが真性。
0753デフォルトの名無しさんNGNG
rubyでコンソールアプリを作ってるんですが
方向キーを押した瞬間、なんらかの動作をする
みたいなことはできるのでしょうか?

Enterだけなら

if STDIN.gets == "\n"
do_something
end

とかでできそうですが… 他のキーだとやり方が思いつかないです。
0754デフォルトの名無しさんNGNG
>>753
curses とか使った方が良さげ。
0755753NGNG
>>754
お、これは便利そうですね。解決しそうです。
やっぱりRubyはおもしろい

ありがとうございました。
0756デフォルトの名無しさんNGNG
手元のジーニアスでは [ru:bi](uにアクセント)で
わざわざ赤で <発音注意> と書いてあるんだけど。

http://dictionary.goo.ne.jp/search.php?MT=ruby&kind=ej&mode=0&base=1&row=1
の音声も、上記のようにしか聴こえないのだが...
0757デフォルトの名無しさんNGNG
>>756
おいおい、そこまで引っ張るネタかよ!?
0758デフォルトの名無しさんNGNG
cygwin版でputsしたときの改行コードを"\r\n", "\n"に切り替えるにはどうすればいいですか?
0759デフォルトの名無しさんNGNG
>>758
改行コードが入ってるグローバル変数なかったっけ?
いま、ドキュメントが見れんからわからんが・・・。
いつ、公式サイトは復活するんだ?

>>768 さんよ、必死なのはわかったが、どこで掛け違えてるのか、俺はすぐにわかったよ。
Ru は、一般的にどう読めるかって話だろ? 別にラビーが正しいなんて、誰も言ってないが。
0760デフォルトの名無しさんNGNG
>>768
本当オマエ必死だな
0761デフォルトの名無しさんNGNG
>>768
開音節と閉音節の区別ぐらいつけろと
0762デフォルトの名無しさんNGNG
>>758
putsは再定義しないと無理ぽ。printなら$\ = "\r\n"
0763デフォルトの名無しさんNGNG
無学だなあ >>768
0764デフォルトの名無しさんNGNG
>>768
公式復活させたってホント?
0765デフォルトの名無しさんNGNG
>>768
お前がクラッカーだったって聞いたけどどうやったの?
0766デフォルトの名無しさんNGNG
>>774
おおお!!!そんな技があったとは目から鱗です。勉強になります。
ありがとうございました。
0767デフォルトの名無しさんNGNG
>>768
ラ・・・ラビー・・・なのか・・・?
0768デフォルトの名無しさんNGNG
…な〜んてね♥
0769デフォルトの名無しさんNGNG
>>768
まぁこういうので期待に応えたレスなんて見たとき無いしな
よく頑張ったよお前は
0770デフォルトの名無しさんNGNG
       ________∩_∩
     /   ノ ヽ (  ノ⊂ ̄))) ̄⊃
     /|ヽ  (_ノ  ._ ̄  0'ヽ 0'
    / |ノ  .)    (_)  ヽ  i (   むしゃむしゃしていた。
 ∋ノ |  /――、__  ./(∩∩)  草なら何でもよかった。
      / /| ヽ__ノ   | / ./     今はモー反芻している。
    | ( | ( ’’’    | ( /
    |__ヽ.L_ヽ        Lヽ_ヽ
''" ""''"" "'''''" ""''"" ''" ""''"" ''" ""''"" ''" ""''"" "'''.
0771デフォルトの名無しさんNGNG
rubyとは余り関係ないんだが、rbファイルをFFFTPでlinuxにASCII転送
してやると、なぜか改行コードが変換されない・・・。なぜ・・
0772デフォルトの名無しさんNGNG
>>771
「オプション」→「転送1」の「転送モード」と「アスキーモードのファイル名」の
設定を確認しる。
おそらく激しくスレ違いなので、それでダメなら、以後はソフトウェア板あたりへ。
0773デフォルトの名無しさんNGNG
オーバーライドとオーバーロードの区別が付かない人がいます
0774デフォルトの名無しさんNGNG
strongtyping を使えば、引数の型や数に基づいたオーバーロードができるよ
0775デフォルトの名無しさんNGNG
>>773 と得意気な顔したオーバー30がいます。
0776デフォルトの名無しさんNGNG
Don't trust ( )
0777デフォルトの名無しさんNGNG
OpenHtmlHelp.vbs

' HTMLヘルプを開き、単語を検索する
dim searchword
'if WScript.Arguments.Count = 1 then
'searchword = WScript.Arguments(1)
'end if
searchword = "sleep"

set ws = WScript.CreateObject("WScript.Shell")
ws.Run "C:\Ruby\docs\rubymanjp.chm", 1, False
WScript.Sleep 100
ws.SendKeys "%n"
WScript.Sleep 100
ws.SendKeys searchword
WScript.Sleep 100
ws.SendKeys "{ENTER}"
0778デフォルトの名無しさんNGNG
プログラミング言語は何種類も知ってるけど、
スクリプト言語は詳しく無い(UNIXのBシェルとDOSのバッチファイル位)ので、
PerlとRubyはどっちが強いか分かりません。

今からはじめるならどっち?
0779デフォルトの名無しさんNGNG
文法の汚さが気にならなければ(あるいはC++のような汚物を積極的に好むなら)、
あるいは仕事で使うならPerlにしとけ。
0780778NGNG
C++のような汚物とか、使いやすいDelphiは好きです。

画面をちょこちょこ作れて、
クラスをふつーに記述できるスクリプト言語が欲しいなー、と思いまして。

Rubyのホームページみたら、なんか今止まってますね。
0781デフォルトの名無しさんNGNG
>>775
残念、27でした。
0782デフォルトの名無しさんNGNG
仕事に使うにしても、今からPerlっておすすめできないなあ。
Perl5の末期に来た今始めても、腐った知識をたくさん詰め込んだころには他の言語(あるいはPerl6)が主流になってそう。
0783デフォルトの名無しさんNGNG
今、仕事で使うというのならPerlだろうけどね。
でも、
* delphi知っててwinのGUIもやりたい
* クラスをふつうに記述したい
ならRubyでしょ。
VCLのラッパがあるし、Perl5のクラスはひどすぎるし。
0784デフォルトの名無しさんNGNG
>VCLのラッパがあるし
これってどのくらい実用的なの?
apolloだっけ。
0785778NGNG
RubyでGUIをちょこちょこっと書けるんなら自分のツール開発として即Ruby導入。
VCLのラッパは使わないかも。
昔はVBとDLLの組み合わせで開発したことあるけど、今はクラスの時代でしょ。

MACのアプリをRubyから操作出来たりしたら、仕事でも使いまつ。
0786デフォルトの名無しさんNGNG
どっちが Pでどっちが R?
どちらなりと。
0787デフォルトの名無しさんNGNG
Rubyのホームページずっとこのままだったりして
まぁ、それでもいいと思うけどね。管理、大変そうだし
0788デフォルトの名無しさんNGNG
正規表現が苦手な者です。
レシピブックに出てきた例なんですが、

レシピ 57 で、
/(.*?)\t/n って正規表現が出てくるんですけど、これって/(.*)\t/n と
どう違うんでしょうか?

なにか具体的な違い(マッチする String)などがあればおしえてください。
0789デフォルトの名無しさんNGNG
>>788
"FOO\tBAR\tBAZ" とかでマッチしてみそ。
普通はできるかぎり長い文字列にマッチしようとするんだけど、
? を付けるとマッチする最短の文字列のところでマッチをやめちゃう。
0790デフォルトの名無しさんNGNG
>>788
マッチするしないという意味ではどちらもマッチする文字列は同じ。
ただし、.*?は最短マッチ,.*は最長マッチなので、文字列のどの部分
にマッチするかは異なることがある。

% ruby -e 'a="a\tb\tc"; a.match(/(.*?)\t/n); p $1'
"a"
% ruby -e 'a="a\tb\tc"; a.match(/(.*)\t/n); p $1'
"a\tb"
0791788NGNG
>>789, 790 さん
なるほど。。。
ご説明と具体例ありがとうございます。
とってもよくわかりました!ありがとう!
0792デフォルトの名無しさんNGNG
> ? を付けるとマッチする最短の文字列のところでマッチをやめちゃう。
最短だと".*"は必ず空列にマッチするから、
そうすると、/(.*?)ABC/は/ABC/と等しくなって意味なしのような。
最短マッチって仕様的な矛盾感じるなぁ。
0793デフォルトの名無しさんNGNG
最短マッチと便宜上呼ぶ人もいるがもちろん最短ではないぞ。
通常の貪欲マッチに対応した非貪欲マッチなだけだ。
0794789NGNG
>>792
「マッチを *やめちゃう*」ってのがミソで、マッチを *始める* のは同じとこからなのね。
0795デフォルトの名無しさんNGNG
空文字列は長さを持たないから"最短"にはならない、という解釈じゃダメ?
長さ 0 に対して「長い短い」を比較するのに違和感がある。
「大きい小さい」なら数学的な感じだから、「最小マッチ」なら 0 を
含んでもしっくりくるんだけど。
0796デフォルトの名無しさんNGNG
>>795
perl本で見た「最左最短」という説明がオレ的にはいちばん
わかりやすかった。
0797デフォルトの名無しさんNGNG
>>795
まるで駄目。
/(.*?)ABC/ を "123ABC" にマッチさせた場合、ヒットするのは
0("ABC")でも1("3ABC")でも2("23ABC")でもない。

おまいの思考は数学的じゃない、というか論理的じゃないよ。(・д・)
0798デフォルトの名無しさんNGNG
メソッドローカルなスタティック変数ってどうやって作るんでしょう?
0799デフォルトの名無しさんNGNG
>>798
まず、なぜstatic変数にしたいか、そこからだ。
0800デフォルトの名無しさんNGNG
>>799
例えばメソッドが呼ばれた回数を記録したり、
メソッド内で複雑な計算をする場合にキャッシュしたり。

インスタンス変数でもできるけれど、そのメソッド内でしか使わない場合
メソッドローカルなスタティック変数が欲しい。
0801デフォルトの名無しさんNGNG
シングルトンクラスを作って
そのクラスのシングルトンメソッドからクラス変数を使うとか。
0802デフォルトの名無しさんNGNG
そもそもデータがメソッドに属しているっていう状況がOOP的に異常なんだよ。
だいたい呼ばれた回数を記録したって外から観測できなきゃ意味ないのと違うか?
0803デフォルトの名無しさんNGNG
>>802
オレも同じようなレスを書こうとしたけど、
>>800にある「メソッド内キャッシュ」みたいなのは、
メソッドに属するデータなんじゃないかと思えてきた。
OO的には、メソッドオブジェクトのインスタンス変数、って感じか。

--[思い付いたけどダメな例]--
def func_with_cache(x)
name = caller(0)[0].match(/`(.*)'/)[1] #メソッド名取得
m = method(name) #メソッドオブジェクト取得
m.instance_variable_set(:@cache,{}) unless m.instance_variable_get(:@cache)
cache = m.instance_variable_get(:@cache)
unless cache[x]
cache[x] = func(x)
end
cache[x]
end

--[ダメな理由]--
def foo() end
foo1 = method(:foo)
foo2 = method(:foo)
p foo1 == foo2 #=> true

foo1.instance_variable_set(:@var,1)
p foo1 == foo2 #=> true

p foo1.instance_variable_get(:@var) #=> 1
p foo2.instance_variable_get(:@var) #=> nil <= 1 を期待してた

というか、メソッドオブジェクトの位置付けがよーわからん。
0804デフォルトの名無しさんNGNG
少し前に-talkでも出てたけど、Kernel#methodは毎回新しいオブ
ジェクトを返す。これを同一のオブジェクトにするには、すべての
Methodオブジェクトを覚えておかなきゃならない。
0805デフォルトの名無しさんNGNG
>>800
コンテキストを離れたキャッシュなんてナンセンス。
インスタンスから独立なら、クラス変数でも使え。
0806デフォルトの名無しさんNGNG
全てのMethodオブジェクトを覚えておく、というのはそんなに無理な前提なのかなあ。
0807デフォルトの名無しさんNGNG
そこでメソッドオブジェクトをキャッシュしておいて返すメソッドの実装ですよ。
0808デフォルトの名無しさんNGNG
マイナー OS 使ってるんで [ruby-dev:23681] を試したいんだが、
CVS でソース取ってこれねー。
nightly snapshot みたいなのってどっかにありましたっけ?
0809デフォルトの名無しさんNGNG
>>806
もちろん不可能じゃないが、単に必要とは思われてないだけだろう。
>>807
class Method
 orig = instance_method(:method)
 cache = {}
 fin = cache.method(:delete).to_proc
 define_method(:method) do |*args|
  m = orig.bind(self).call(*args)
  cache.fetch(id = m.object_id) do
   ObjectSpace.define_finalizer(m, fin)
   cache.store(id, m)
  end
 end
end
0810デフォルトの名無しさんNGNG
こんなのはどうかな。メソッド内だけでローカルではないけれども
すぐ外のブロックだけでスコープが終わるので、クラス変数みたいに
どっかからこっそりいじられる心配からは解放されるんじゃないかと。

class A
end

catch (:foo) {
sum = 0
A.__send__(:define_method, :f) { |x| sum += x; sum }
A.__send__(:public, :f)
}

a = A.new
p a.f(10)
p a.f(10)

catchは無引数のブロックを1回だけ実行する関数として使ってる
だけです。
0811デフォルトの名無しさんNGNG
オレは 1.times {} を使う。
0812デフォルトの名無しさんNGNG
現在プログラム板にはHSP関連スレに凶悪な荒らしどもが住みついています。

・HSPに関係の無い話題でスレッドを上げまくる
・HSPオフィシャルサイトの住人を名指しで誹謗中傷する
・重複スレを乱立させる

などの荒らし行為を行っています。
みんなで団結してム板のゴミどもを追い出しませんか?

【HSP関連スレ】
【皆のレイプ魔】HSP初質P25【WWEヲタ=ハゲ】
http://pc5.2ch.net/test/read.cgi/tech/1086878505/
HSP>>>>>>>>>>>>>C=糞w
http://pc5.2ch.net/test/read.cgi/tech/1071899663/
今日もどこかでHSP初心者が質問ですP19
http://pc5.2ch.net/test/read.cgi/tech/1084089079/
HSPについて
http://pc5.2ch.net/test/read.cgi/tech/1085149790/
0813キャッシュだけならばNGNG
def get_fib()
 hash = Hash.new{|h,k|
  k < 0 ?
   k:
   h[k] = h[k-2] + h[k-1]
 }
 hash[0],hash[1] = 1,1
 return hash
end
f = get_fib
p f[10]
0814810NGNG
>>811
1.times {}の方が1回だけやるぞって感じがするので、
次からはそうしよう。
0815デフォルトの名無しさんNGNG
>>810
こんなことできるんですね。
でも、びっくりしたというか、どこか心地が悪いかも。
ブロックが閉じた時点で、ライフラインが切れたように思えるからかな。
0816デフォルトの名無しさんNGNG
RubyでHTTPSで接続するコード書いたんだけど、SSLのセッション全然保存されない・・・
どうしたらセッション保持できるの?
0817デフォルトの名無しさんNGNG
差し支えなければ書いたコードを見せて
0818デフォルトの名無しさんNGNG
Net::HTTP.version_1_1
http = Net::HTTP.new( ADDRESS , 443)
http.use_ssl = true

http.get2(PATH1) { |resp|
  puts resp.body
}


http.get2(PATH2) { |resp|
  puts resp.body
}
0819デフォルトの名無しさんNGNG
>>818

http.use_ssl = true
http.start {
 http.get2(....) {....}
 http.get2(....) {....}
}

とする
0820デフォルトの名無しさんNGNG
>>819
2つ目のget2で
/usr/lib/ruby/1.8/net/protocol.rb:199:in `sysread': SSL_read:: (OpenSSL::SSL::SSLError)
っていうエラーが出る・・・
0821デフォルトの名無しさんNGNG
差し支えなければRubyとOpenSSLのバージョンやOSなんかの環境を教えて
0822デフォルトの名無しさんNGNG
Ruby: 1.8.1-7
OpenSSL: 0.9.7d-3
OS: Debian sid
0823デフォルトの名無しさんNGNG
ここはド素人な質問もしていいスレ?
0824デフォルトの名無しさんNGNG
>>823
ウホッ
0825デフォルトの名無しさんNGNG
>>823
まあとりあえず書いてみろ
0826デフォルトの名無しさんNGNG
ループをbreakで抜けたかどうかによって分岐する構文はないの?
Pythonにはループにelse節をつけられるんだけど。
http://www.python.jp/pub/doc_jp/tut/node6.html#SECTION006400000000000000000
0827デフォルトの名無しさんNGNG
Rubyのbreakは値が持てるから、構文なんか使わなくてもループ式の値を見ればbreakで抜けたかは判断可能。
% ruby -e'
(2..10).each do |n|
 print n.to_s, (2..n).inject(" is in prime¥n") {|r,x|
  if n != x and n % x == 0 then
   break " == #{x} * #{n/x}¥n"
  else
   r
  end
 }
end
'
2 is in prime
3 is in prime
4 == 2 * 2
5 is in prime
6 == 2 * 3
7 is in prime
8 == 2 * 4
9 == 3 * 3
10 == 2 * 5
0828デフォルトの名無しさんNGNG
>>827
サンクス。
いまいち明示的じゃないのが気になるけどね…
0829デフォルトの名無しさんNGNG
"aa'aa'aa" を "aa\'aa\'aa" に置換したのですが、
良い方法がみつかりません。 gsub(/\'/,\\\')を試して
みましたが、エラーが出てしまいます。
0830デフォルトの名無しさんNGNG
>>829
String#gsub(pattern, replace) は使っちゃダメ。絶対。
String#gsub(pattern) {|matched| .... } の方を使いましょう。

puts "aa'aa'aa".gsub(/\'/) { "\\'" }
0831デフォルトの名無しさんNGNG
>String#gsub(pattern, replace) は使っちゃダメ。絶対。
どうして?
そこらへんどっかにまとまってたりするの?
0832736NGNG
gsub(/'/, "\\'") じゃなくて?
といっても、何故か漏れのところでも不思議な置換のされ方をする。\\' って何かあったっけ?
そういうわけで、
"aa'aa'aa".gsub(/'/) { |s| "\\'" } # => "aa\\'aa\\'aa"
だった。
0833デフォルトの名無しさんNGNG
>>830
ありがとうございました。
0834830NGNG
>>831
初心者は絶対 '\' でハマるから。
もちろん、理解できてて使う分には構わないんだけど、
「どうして?」とか言ってる香具師は理解できてないはず。
リファレンスマニュアルだと「Ruby の落し穴」の「\の影響」のところとか。
0835デフォルトの名無しさんNGNG
XML のパースライブラリっていくつかありますけれども、
XML を出力するのに何か定番というかおすすめツールやライブラリはありますか?
0836デフォルトの名無しさんNGNG
>>834
おまいの自信満々に乾杯
0837830NGNG
>>836
だって ruby-list で同じようなやりとりを何度見たことか。

つーか、漏れもこの落し穴にハマるんだよね・・・
0838デフォルトの名無しさんNGNG
文字列受け取るようにする仕様が悪い
0839デフォルトの名無しさんNGNG
\ を正規表現置換文字列のメタ文字にしたのが失敗なんでは。
「#」とか「$」にすればよかったのにね。
0840デフォルトの名無しさんNGNG
その仕様はperlからパクってきたものなので今更変えられません。
0841デフォルトの名無しさんNGNG
>>835
クラスに to_xml というメソッドでも作って適当に生成。
0842デフォルトの名無しさんNGNG
>>840
perlよりはむしろelispでしょ。

とりあえず、subst/gsubst みたいな新しいメソッドを作って
sub/gsub から徐々に移行すれば何も傷は残らない気がする。

する価値があるかはしらん。
0843デフォルトの名無しさんNGNG
gsub(pattern, replace) と gsub(pattern){replace} の挙動が逆だったら
よかった気がする。
0844デフォルトの名無しさんNGNG
>>841
いや、その to_xml の中で使うのに便利なライブラリはありますか、
という質問なわけのですが・・・
皆さん手でゴリゴリ XML を書いてるんでしょうかね?
0845デフォルトの名無しさんNGNG
>>843
逆ってどういう意味で?
0846デフォルトの名無しさんNGNG
>>845
今は
gsub(pattern, replace) #=> replace の '\\' はメタ文字
gsub(pattern){replace} #=> replace の '\\' は普通の文字
なんだけど、
gsub(pattern, replace) #=> replace の '\\' は普通の文字
gsub(pattern){replace} #=> replace の '\\' はメタ文字
のほうが嵌りにくそう。
0847デフォルトの名無しさんNGNG
>>846
s.gsub!(/foo(.+)boo/) { $1.strip.downcase } があるから逆にできなかった。
ごめん、忘れて。
0848デフォルトの名無しさんNGNG
「俺」に都合が悪いという事ね。
0849デフォルトの名無しさんNGNG
gsub('hoge', 'fuga') なんてのは第2引数を使うな。
こういうのはいちいちブロックで書いてたらめんどくさい
0850デフォルトの名無しさんNGNG
web 復活おめ&乙
0851デフォルトの名無しさんNGNG
TOPページってblogなの?
0852デフォルトの名無しさんNGNG
blogにも使えるツールで作ってあることは事実だが、だからといって必ずしもblogであるとは限らない。
0853デフォルトの名無しさんNGNG
Rubyってインストールしないで使えないですか?
フラッシュメモリにRubyのバイナリをいれて、
Rubyがインストールされてないパソコンで使うとか。。

dllとかsoとか、よくわからないけど、関係してる気がするんですが
その辺の知識がなくて、よくわかりません。
教えてください。
0854デフォルトの名無しさんNGNG
>>853
インストールって・・・
0855デフォルトの名無しさんNGNG
>>853
使える状態にすることをインストールといいます。
0856デフォルトの名無しさんNGNG
この後葬式かよ
0857デフォルトの名無しさんNGNG
>>853
--enable-shared なしで作れ
ということではありませんか?
0858デフォルトの名無しさんNGNG
enumってないんですか?
Enum1=1
Enum2=2
...
と根性でやるしかないですかね
0859デフォルトの名無しさんNGNG
>>858
引数のためかな?
0860デフォルトの名無しさんNGNG
>>859
とりあえずは状態を表すフラグとしてcase/whenで使いたいです。
0861デフォルトの名無しさんNGNG
単に1,2,3,...を書くのが面倒だというのなら

module Enum
def define_enum(*symbols)
n = 1
symbols.each {|s| const_set(s, n); n+=1}
end
end

class C
extend Enum

define_enum(:Enum1, :Enum2)
end

2つぐらいじゃよっぽどこっちの方が面倒だが(笑)
0862デフォルトの名無しさんNGNG
>>861
直接enumをサポートしてないということすよね。了解です。

追加モジュールなしの標準で
enum(
 :Enum1,
 :Enum2
)
とでも書けたら使いたいけど字面がRubyっぽくないか・・・

ありがとうございます。
0863デフォルトの名無しさんNGNG
>>862
自分で正解にカスってる。
状態を表わす定数が欲しかったら、単にシンボルを使えばいい。

@state = :OPEN

case @state
when :OPEN
 ...
when :CLOSE
 ...
when :UNKNOWN
 ...
end

タイプミスで未定義のシンボルを使ってしまうというリスクはあるけど
0864デフォルトの名無しさんNGNG
ENUM_ARY=[NAME=0,ITEM=1,BODY=2,TAIL=3,TERM=5]
0865デフォルトの名無しさんNGNG
utf8へ変換できるRubyスクリプトってないですか?
uconvだと自分でコンパイルしないといけないですよね?
0866デフォルトの名無しさんNGNG
nkf
0867デフォルトの名無しさんNGNG
>>866
それを言うなら、unkf でしょ?

環境依存になっても良いなら、iconv。
レシピブックに詳しく載ってたよん。

0868デフォルトの名無しさんNGNG
>>865
Pure Ruby で utf8 へ変換するのは聞いたことないな。
uconv も unkf も iconv も lv も自分でコンパイルしなきゃダメだし、
観念して自分で uconv コンパイルしる。
0869868NGNG
ああそうか、1.8.1 以降なら iconv が標準添付だから、
環境によっては最初から使える、ということを >>867 は言ってたのか。
0870デフォルトの名無しさんNGNG
>>853
システム次第。

例えばLinuxなら、LD_LIBRARY_PATHとRUBYLIBを指定すればできるはず。
*BSDだとRPATHが固定されるので無理かも知れない。
Windowsなら最初から位置独立になってるのでそのまま使えるはず。

もちろんPATHを追加するのは前提。
0871デフォルトの名無しさんNGNG
>>868
> Pure Ruby で utf8 へ変換するのは聞いたことないな。
RbUconvを知らんのか?
http://www.yoshidam.net/Ruby_ja.html#rbuconv
0872865NGNG
iconvでできました。ありがとうございました。
0873デフォルトの名無しさんNGNG
>>871
スマソ。無知だった・・・
0874デフォルトの名無しさんNGNG
てゆーか時代はutf8デフォだろ
0875810NGNG
従来の文字コードとのマッピングを何とかして欲しい。
0876デフォルトの名無しさんNGNG
>>875
ん?それは Ruby の問題?
0877デフォルトの名無しさんNGNG
# デバッグ中は↓のヒアドキュメントを標準入力とみなしたいんですがそんなことは可能ですか?
<<STDIN
aaa
bbb
ccc
STDIN

while gets ...
0878デフォルトの名無しさんNGNG
input = $debug ? <<STDIN : STDIN
aaa
bbb
ccc
STDIN

while input.gets ...
0879デフォルトの名無しさんNGNG
と思ったら String に gets はなかった。

require 'stringio'
input = $debug ? StringIO.new(<<STDIN) : STDIN

かな。あるいは input.each { |line| ... } か。
0880デフォルトの名無しさんNGNG
$stdio = StringIO.new(<<EOS) if $debug
aaa
bbb
ccc
EOM

while gets

じゃあだめだっけ?
0881デフォルトの名無しさんNGNG
すまん、終端間違えた。
0882デフォルトの名無しさんNGNG
cygwin/MinGWでSDLを使った拡張ライブラリを作ろうとしているのですが
extconf; make すると
undefined reference to `_rb_w32_fclose`
となってしまいます。これはRubyの方のものだと思うのですが
何をリンクすればいいんでしょうか?
0883デフォルトの名無しさんNGNG
>>880
ruby 1.8.1 (2003-12-25) [i386-cygwin]
で試したけど駄目でした。普通に標準入力からになってしまいます。
0884デフォルトの名無しさんNGNG
>>883
$stdio は $stdin の間違い。
0885デフォルトの名無しさんNGNG
うは。申し訳ない。>>883-884
0886デフォルトの名無しさんNGNG
$stdin = $-d ? DATA : STDIN

p $_ while gets

__END__
foo
bar
baz
0887デフォルトの名無しさんNGNG
>>882
make -n の結果は?
0888デフォルトの名無しさんNGNG
Unicode->SJIS変換をするために変数の内容をnkfの標準入力に渡してその結果を受け取るにはどうしたらいいですか?
0889デフォルトの名無しさんNGNG
質問があります.
ruby は全ての変数がオブジェクト(インスタンス)で、
変数の代入は参照渡しなので
「メソッドに変数(インスタンス)の参照を渡して,
メソッドの中でそのインスタンスの内容を変えてもらう」が
できると思います. 実際できますね.

とろこが, 以下の code で, 変数の内容が変わってくれないのはなぜでしょうか?
Java とかと違い Integer もオブジェクトで, 参照渡しなのでできると期待していました.
しかし, 以下のメソッド inc で, 引数にもらったインスタンスの内容を変えることができませんが,
なぜでしょうか?
#--------
def inc i # Integer 型のインスタンスの参照をもらう
i += 1 # もらったインスタンスの中身を変えてしまう
end

j = 7
print j, "\n" # これは 当然 7 と表示される.
inc j
print j, "\n" # これは 8 と表示されて欲しいが, 7 と表示される.
#--------
0890889NGNG
これは, C言語で言うところの以下のコードと同じ振る舞いを期待しています.
/*--------*/
void inc(int *i){
(*i)++;
}
void main(){
int j =7;
printf("%d\n", j); /* 7 と表示される */
inc(&j);
printf("%d\n", j); /* 8 と表示される */
}
/*--------*/


上記 Ruby の inc メソッドの中の挙動ですが,
メソッド開始時は, i と j は同じインスタンスを参照しているのだと思いますが,
i += 1
を行うと, 内容が ``8''である新しい Integer 型 Object が作成され,
i は その新しいオブジェクトへを参照するようになるだけで,
元々のオブジェクト(j が参照しているオブジェクト)に変更が加わっていないように見えますが,
それは正しい認識でしょうか?
(私は, i が "+= 1" のメッセージの レシーバになると期待していました)
def inc i
i += 1
print i # 8と表示される
end
では 8 と表示されます.

また, 上記の C 言語と同じ挙動を ruby で実装するにはどうしたら良いでしょうか?
0891889NGNG
補足ですが,
一応 こんな感じにラッパーで囲ったら
インクリメントできまた.
つまり, Integer 型のインスタンスに "+= 1" の様なメッセージを受けさせて
そのインスタンスの内容が変わってもらうことは無理なのでしょうか?
#--------
class IntWrapper
def initialize n
@i = n
end
def get
return @i
end
def set n
@i = n
end
end

def w_inc i
i.get
i.set(i.get+1)
end

j = 7
w_j = IntWrapper.new j
print w_j.get, "\n" # 7 と表示される
w_inc w_j
print w_j.get, "\n" # 8 と表示される
#--------
0892デフォルトの名無しさんNGNG
i += 1 ってどういう意味かわかってる?
i = i + 1 って意味でしかないんだよ。
i + 1 という新しいオブジェクトを代入によって i で指し示すようにしただけ。
+= というメソッドを起動したんではない。
0893デフォルトの名無しさんNGNG
>>888
Open3 使うと良いよ。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Open3

でも、変換には Iconv か Uconv を使うのがおすすめ。
0894889NGNG
Ruby は 1.8.1 を使用しています.
ruby 1.8.1 (2003-12-25) [i686-linux]
0895デフォルトの名無しさんNGNG
>>891
>つまり, Integer 型のインスタンスに "+= 1" の様なメッセージを受けさせて
>そのインスタンスの内容が変わってもらうことは無理なのでしょうか?

(1)よく勘違いされるんだけど、変数それ自身はオブジェクトではない。
(2)整数オブジェクトはその値それ自身によってアイデンティティを定義されているわけ。つまり、7と8は別のオブジェクト。

ようするに
(3)内容が違うのに同じオブジェクトであるような整数は存在し得ない。
(4)変数の指すオブジェクトを弄ることは=以外では不可、なぜなら変数はオブジェクトじゃないから。

結論として
(5)Rubyに++はない。(*i)++みたいなことはできない。理由は上記(1)から(4)。
0896デフォルトの名無しさんNGNG
> (2)整数オブジェクトはその値それ自身によってアイデンティティを定義されているわけ。

Fixnum はそうだけど、 Bignum は違うよね?

このへんの事情ってどこかにまとめて説明してないかな?
このスレでも頻出問題だし、ここ読め、みたいなのが欲しいところ。
0897889NGNG
>>891
>つまり, Integer 型のインスタンスに "+= 1" の様なメッセージを受けさせて
>そのインスタンスの内容が変わってもらうことは無理なのでしょうか?

(1)よく勘違いされるんだけど、変数それ自身はオブジェクトではない。
(2)整数オブジェクトはその値それ自身によってアイデンティティを定義されているわけ。つまり、7と8は別のオブジェクト。

ようするに
(3)内容が違うのに同じオブジェクトであるような整数は存在し得ない。
(4)変数の指すオブジェクトを弄ることは=以外では不可、なぜなら変数はオブジェクトじゃないから。

結論として
(5)Rubyに++はない。(*i)++みたいなことはできない。理由は上記(1)から(4)。


お返事ありがとうございましたm(_ _)m

まず, 多分(1)に勘違いは無いと思います.
ここが本質の様なので, ここに勘違いがあったら話が通じなくなってしまうので
もし, 勘違いがあったらご指摘頂けると幸いです.
私の理解は,
インスタンス:メモリ上にあり実際にデータを保持している.
変数:インスタンスへの参照情報だけ. Cの様な即値は存在しない.
という感じです.
0898889NGNG
「変数が参照するインスタンス」と書いたのはその様な意味を出したつもりでした.

次に, (2)もかなり本質的なことのようですね.
このようなことは知りませんでした.
値が変わったら絶対に「別のインスタンスになる」のですね.
となると,「メソッドに Integer 型のインスタンスへの参照を渡して,
メソッド側でそのインスタンスの値を変えてもらう」は不可能っぽいですね...

(4)ですが, ご指摘を受けて自分のひどい勘違いに気がつきました.
"+=" はてっきり メソッドであり, Integer クラスライブラリの実装で処理しているのかと思っていました.
今 調べたところ, "+=" は 演算子( x = x + y の省略形)で, 言語仕様だったのですね_| ̄|○
(2),(3)より, = 演算子("変数の指すオブジェクトをいじる")では 絶対に不可能ですね.
理解致しました. ありがとうございましたm(_ _)m

"Integer 型も即値でない"ので何かしら方法があると期待していたのですが,
となると, 私の希望は Java のように ラッパークラスを作成する様な方法でしか解決できないのでしょうか?
0899889NGNG
>>897
うは. >>895さんの書き込みを全文引用してしまいました.
ごめんなさい.
0900デフォルトの名無しさんNGNG
まぁ、結論から言えばラッパ書くのが一番簡単だわな。
[Ruby-list:126]によると「++を使うためだけに言語仕様としてラッパを(暗黙に)生成するのはコストが大きすぎて、やめた」みたいなことが書いてある。
0901デフォルトの名無しさんNGNG
>>889
-inc j
+j = inc j
じゃだめっすか? カコワルイ?
0902デフォルトの名無しさんNGNG
Rubyの多言語と比較した際の具体的なメリットを教えてください
0903892NGNG
>>889
892は無視かい
0904デフォルトの名無しさんNGNG
>>903
おうよ
0905デフォルトの名無しさんNGNG
Rubyのいろんなテクノロジって草の根的に、何の後ろ盾も無い個人が物凄い貢献してたりするよね。
例えば関将俊氏のプロフィールは分からないけど、大きな企業が支援してくれないと惜しすぎる気がする。

趣味だからとか、これがオープンソースだからとか、それはそうなのかもしれないが、
これが正しい状況なのかはかなり謎。理想的なテクノロジが受け入れられるかは、
わからない。今から数年たったときにようやく理解されそうな気は漏れはしてるが、
クソなテクノロジ選んでソフト作る香具師がどんどん増えてる今の状況どうにかしなきゃ
いかん。
0906デフォルトの名無しさんNGNG
>>905
糞なテクノロジとは具体的に何?
某MSILとか?
0907デフォルトの名無しさんNGNG
>>906
いやぁ、それもそうだが、例えばPHPとかね
0908デフォルトの名無しさんNGNG
あるいは、サーバサイドJavaとか
0909デフォルトの名無しさんNGNG
PHPの仕様しらねーや
PERLのパチモンという印象しかなくて仕様すら知らないw
0910デフォルトの名無しさんNGNG
微妙に重複表現だな
1行目に何かいたか忘れるとは、俺も老いた・・・
0911デフォルトの名無しさんNGNG
結局のところ、何か組織力とか、後ろ盾が無いといいテクノロジもスルーされて終るってことを
証明しているんだよな。テクノロジを選択する立場にある人が結局いかに下請けに出すかってこと
しか考えてないところに問題がある気がする。誰もが使えそうで事例がなんとなくでもあるものを選択する。
クソなプログラマ大量に使ってモノ作るより、少数でも経験豊かでソフトウェア設計に理解がある
人たちを使ったほうが安いってことに気づかないといけない。プログラマも少数精鋭で働ける場所を
しっかり選ばないといけない。
0912デフォルトの名無しさんNGNG
>>911
> プログラマも少数精鋭で働ける場所をしっかり選ばないといけない。
選べない上に自己修練する暇も与えられない可能性ありw
0913デフォルトの名無しさんNGNG
まぁ労使問題はそれはいいとしてだ


やっぱ、キソ技術作る人には後ろ盾が要ると思うんよ
KDE と Gnome の違いを見ても思うが、資金援助。これ重要

Ruby Foundation とか設立できないか
しっかりしたプログラミング言語が発展することで得する企業は探せば沢山あると思う
0914デフォルトの名無しさんNGNG
FTPサイトが激重でドキュメントすら落とせない・・・
0915デフォルトの名無しさんNGNG
>>913
企業相手に延々とロビー活動する人が何人か必要になるが
そういう人材はなかなかいない。
0916デフォルトの名無しさんNGNG
>>915

いないのかな
そういうの大好きな人たくさんいると思ってた
0917デフォルトの名無しさんNGNG
>>915-916
るびべんだったりして。
禿しく却下。
0918デフォルトの名無しさんNGNG
.NETってRubyが乗りうるプラットフォームでは最大の規模のライブラリを備えてるんだから
早く乗せて欲しいな。ライブラリが同じなら言語仕様の優位性が際立つと思うんだけど。
正直UNIX信者(作者含めて)置いてきぼりにしてWindows上で栄えて欲しいよ。
0919デフォルトの名無しさんNGNG
栄えるってどういう状態だよ。
0920889NGNG
みなさまありがとうございます.
>>892>>903
すみません. 見落としていました.
失礼をお詫びいたしますm(_ _)m
ご指摘の通りです. 意味分かっていませんでした(>>898参照)..
新しいオブジェクトが生成されて, その新しい方を指すようになるんですね.
ここに, 大きな勘違いが一個がありました.
今更ですが, 重要なご指摘ありがとうございます

i.plus(1) とかで,「i が指しているインスタンスの中身が変わる」メソッドでもあればまた違ったと思いますが,
>>895 の (2), (3) の理由により, 不可能っぽいですね.


>>900
了解です. では ラッパを書く手法で行きたいと思います.

>>901
すみません.
"-inc" という表現も,
"+j =" という表現も 知らない表現方法です.
今から ちょっと試してみます.
0921デフォルトの名無しさんNGNG
>>918
 rubyって、”スクリプト”ってイメージが強すぎて、windows上で栄えてるところが
想像できないなー。
0922デフォルトの名無しさんNGNG
>>921
WSHが流行ってない時点でねw
しかもその存在自体ActivePerl入れたずっと後だったし(遅っ
0923889NGNG
>>901
すみません. 手元で実行してみましたが,
"syntax error"
になってしまいました. 何か基本的な知識が足りてないのかな?orz

これは,
#--------
def inc i
return1
end

j = 3
print j, "\n"
j += inc j
print j, "\n"
#--------
という 感じで「戻り値」を使用するという感じに理解してよろしいのでしょうか?

私が使用している局面が「これが戻り値になるのは, 意味的に変」なのもありましたが,
変更を加えたいインスタンスが2個以上あるとダメなので採用しませんでした.
(もちろんメソッドが配列を返してきて, 受け取り側で全部処理すれば問題ないわけですが)
0924デフォルトの名無しさんNGNG
>>920
inc j の部分を、j = inc j にしてはどうすか? という意味でした。
行頭の + とか - とかは diff -u の形式のつもりだったニダ。
0925デフォルトの名無しさんNGNG
>>889
ほかの人も書いてるけどIntegerはimmutableだから
状態を変更するメソッドはありえない。
mutableなオブジェクト、たとえばArrayを使えば
似たようなことは出来なくもない。

def inc(x) x[0] += 1 end

x = [3]
p x #=> [3]
inc(x)
p x #=> [4]
0926889NGNG
>>925
すみません. しつこく i.plus() とか話題を振ってしまいましたが(笑)
immutable なので状態を変更できないのは 理解致しました.
ありがとうございます.

あぁ, 確かにラッパーを作るにしても Array でやるのがお手軽ですね.
(Array の中に入れるのも一種のラッパーと考えて)
これは 良いアドバイスをいただきました.
感謝ですm(_ _)m
0927デフォルトの名無しさんNGNG
++を+=のようにシンタックスシュガーとして実装する手もあったんじゃないだろうか。
ていうか、これだけシンタックスシュガーてんこもりの言語なのに、
++だけ気に入らないのか。
0928デフォルトの名無しさんNGNG
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/119?help
0929デフォルトの名無しさんNGNG
>>928
へえー。そうなのかぁ。
0930889NGNG
>>924
すみません. またしても見落としていました. お返事をいただいていたのですね.
了解です. 私の理解で良かったのですね.
diff だったのか. 気がつきませんでした(^^;

>>928
>10に「1増えろ」というメッセージを送っても意味無いんですよね.
なるほど. 分かりやすいです.
++が無いことよりも, >>897の
>(2)整数オブジェクトはその値それ自身によってアイデンティティを定義されているわけ。つまり、7と8は別のオブジェクト。
が, ことの本質っぽいですね.
0931デフォルトの名無しさんNGNG
モデル的にどう説明してるのか抜きで実装の観点からみると、
結局fixnumは効率のために即値になっていて、変数には
オブジェクトへのポインタではなくて、値+これはfixnumだという
印が入ってるだけなのよね。
0932デフォルトの名無しさんNGNG
だな。整数型はオブジェクトでなくて即値という側面もある。
0933デフォルトの名無しさんNGNG
Windows上もクソも、RubyはOS非依存じゃん
0934デフォルトの名無しさんNGNG
RDってそろそろ標準添付にしてもいいんじゃないの
amstd/rbparamsとかいうしょうもないパッケージに依存しない形にしてさ
0935デフォルトの名無しさんNGNG
>>933
.NETのクラスをそのまま利用したいってことだろ。
今あるクラスだけではなく将来新しいクラスが提供されても自動的に使えるようにしたいと。
0936デフォルトの名無しさんNGNG
>>934
作者がやる気ないからな>RDtool
いちおう
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/38903
を適用すればamstd非依存になるはず。
0937デフォルトの名無しさんNGNG
ポータビリティの面からすると、Pure Rubyでやれるところに意味があると思うんだけどねぇ

一体.NETの何にそんなに惹かれるのか わからん
0938デフォルトの名無しさんNGNG
>>936

なんで適用したものを配布しないのだろうか
0939デフォルトの名無しさんNGNG
RDToolをWindowsで使いたいってときに、この面倒くささはたまらんね。
バイナリも誰も、難しすぎて作れないのかどうなのか。win32版配布してないし。
Rubyの標準ドキュメント形式といわれているくせにこのていたらくぶりはなんだろうか。
0940デフォルトの名無しさんNGNG
誰も面倒見ないってことはRDは形式としては良くないってことに気づいちゃったのかな

漏れは悪くないと思うんだけど
0941デフォルトの名無しさんNGNG
まぁ、あの((の連発とか、そんなに見やすいとはいえんな

分かった RDは捨てる
0942デフォルトの名無しさんNGNG
現状、 Ruby のライブラリとか書いた場合に、
ドキュメントはどんな形式で書いておくのがおすすめですか?

海外のライブラリとかだと、 Web 上にあがってるドキュメントは、
Smalltalk のクラスブラウザみたいなフレームのページになってることが多いですが、
あれも元ファイルは何か特殊な共通フォーマットで書かれてるんでしょうか?
0943デフォルトの名無しさんNGNG
>>942
RDOC
0944デフォルトの名無しさんNGNG
>>943
ありがとうございます。これはいいっすね。
0945デフォルトの名無しさんNGNG
ドキュメント作成なんて、商用のちゃんとした
プロジェクトじゃないとほとんどやらないしね。

そういう市場を狙っていないRubyには本来不要なものかも知れないけど、
やっぱりマニアのおもちゃとしてははずせない仕様だね。

コメントとドキュメント関連の文法・仕様はそろそろ全言語統一して欲しい。
0946デフォルトの名無しさんNGNG
> 全言語統一して欲しい

非現実的

無茶いうなよ
0947デフォルトの名無しさんNGNG
>>939
RDtoolのバイナリってどんなもんだ?
0948デフォルトの名無しさんNGNG
一応UMLが統一ドキュメントなのでは?
0949デフォルトの名無しさんNGNG
>>947
バイナリというのは間違いだった
raccはコンパイルいるけど、これは配布されてる。

しかし、rdtoolにmake要るってところで、どうも
最近のLinuxディストリには入ってないのも多いんじゃないかしら
0950デフォルトの名無しさんNGNG
>>946
コメント開始記号とコメント内で使うドキュメント用の
タグなり記号なりを統一すればいいだけじゃね?
それで無理が出るのってネタで作られた言語くらいだろ。
共通のツールで処理できるようになればjavadocやらRDやら再発明しなくていいし。
0951デフォルトの名無しさんNGNG
RDって使ったこと無いんだけど、もしかしてPerlでも使えたりするのか。
0952デフォルトの名無しさんNGNG
>>950
本気で言ってるとすればあなたはとてもおめでたい方ですね。
0953デフォルトの名無しさんNGNG
夢を見るのもほどほどにな。
0954デフォルトの名無しさんNGNG
パラダイムとパラダイスは紙一重。
重要さが世間に認められれば成らんとも限らんよ。
0955デフォルトの名無しさんNGNG
RPGツクールのHP見てきた。
Rubyっぽいマクロでかなり細かく制御できるっぽい。

やべぇちょっと欲しくなってきたよ。
0956デフォルトの名無しさんNGNG
>>945
>コメントとドキュメント関連の文法・仕様はそろそろ全言語統一して欲しい。
.NETならXMLDocで統一されている上にNDoc通せばいろんなフォーマットに出力できるのにね。
相変わらずオプソプロジェクトって多様性と非効率性を混同してるよね。
0957デフォルトの名無しさんNGNG
>>955
スレ立つたびに宣伝レスするのやめれ。
0958デフォルトの名無しさんNGNG
>>957
そだねURL書いてないのはよくないよね。

RPGツクールXP体験版、ダウンロード開始!!
ttp://www.enterbrain.co.jp/digifami/index.html

『Ruby』を『RPGツクール』専用にカスタマイズ
した言語『Ruby Game Scripting System(以下、『RGSS』)』が採用
0959デフォルトの名無しさんNGNG
>>958
スレ立つたびに宣伝レスするのやめれ。
0960デフォルトの名無しさんNGNG
while True
 if "foo" =~ /bar/ ...
という行は毎回正規表現をコンパイル?してるんですか?
それとも最初に一度だけですか?
前者だとしたらオブジェクトを明示的に生成して使いまわしたほうが速くなるんですか。
0961デフォルトの名無しさんNGNG
% time ruby -e '1000000.times do if "hoge" =~ /foo/ then end end'
ruby -e '1000000.times do if "hoge" =~ /foo/ then end end' 0.89s user 0.05s system 104% cpu 0.898 total

% time ruby -e 'r = /foo/; 1000000.times do if "hoge" =~ r then end end'
ruby -e 'r = /foo/; 1000000.times do if "hoge" =~ r then end end' 1.06s user 0.08s system 102% cpu 1.105 total
0962デフォルトの名無しさんNGNG
正規表現が固定なら1度しかコンパイルしないし、下手に変数に入れる
よりそのまま書いたほうが速いってことになるのかな。
0963960NGNG
わざわざありがとうございます。
rubyでは最適化してくれるんですね。
コンパイラな言語で正規表現オブジェクトを毎回作ろうか
あらかじめ作って変数に代入しようか悩んでいたところで
ふと疑問に思ったので聞いてみました。

パターン文字列をキーにハッシュにオブジェクトをぶら下げておこうかな・・・
0964デフォルトの名無しさんNGNG
>905の話を読んでだが、、、、
ドキュメントの整備と、あと他の人が作ったライブラリなどの取り扱いを考え
て欲しいな、と思う。例えばRAAとか。
perlではppmがあるけど、phpにも似たものがあってこれは便利。rubyにも同じ
ような仕組みがあったら良いなと思う。pythonのライブラリやschemeならば
SRFIとか。
簡単なインストールというだけではなくて豊富なライブラリがある事で安心感
すら憶える。スクリプト言語らしい環境が整う。
オープンソースなのだから誰が資金的な援助を考える前に、そうした草の根
で作ったライブラリをもっと活用する"仕組み"が必要ではないだろうか。

>907
の意見は私は反対。phpは糞とは思わない。phpの概念はある意味stdioを介すcgiとは
異なるし特殊だから始めはこの習慣を理解するのには困難だろうけれど、
Webアプリケーションの立場からすると非常に面白いと思う。それとデータベース
との連携がとてもよい。これは宣伝(marketing?)の効果かもしれないけれど。
よくLAMP(Linux,Apache,MySQL,Php)と聞く。
php5になってからはコードはJava風にも書けるようになった。完全なオブジェクト指向になった
のでphp5では大規模なシステム開発例が出てくるかもしれない。
eRubyがphpのコンセプトに近いですね。
0965デフォルトの名無しさんNGNG
http://www.loveruby.net/w/OptimizingRubyProgram.html
http://www.notwork.org/~gotoken/mag/cmagazine/gokudo/8th/
似た話としてはこのへんかな。けど 1.8 でだいぶ状況が変わった気がする。

>いつでも通用する鉄則
必見。それにせっかくの LL なんだし、我慢できる範囲の遅さは無視して
よいかと。
0966デフォルトの名無しさんNGNG
>>964
PHPがクソなのは埋め込み言語な点ではなく安易な言語仕様。
参照渡しの不完全な実装方法とか
関数名が大文字小文字区別しないとか
ファーストクラスの関数オブジェクトがないとか
配列とハッシュが混ざってるとか
行き当たりばったりで同じよーなのがいくつもある配列関連の関数群とか
可変引数関数の実装方法とか…
0967デフォルトの名無しさんNGNG
>>966 は PHP 仕事で相当苦労してる香具師と見た。

漏れもなんだよう、 Ruby で仕事してえよう・・・
0968デフォルトの名無しさんNGNG
PHP って Ruby と正反対だよなぁ。
言語が悪くても環境はよさそう。インストールも楽そうだし。

ところであまり PHP 使わないからよく知らないんだけど、
Ruby + mod_ruby + eRuby + Ruby/DBI でPHP と機能的に同等に
なれるもの?
0969デフォルトの名無しさんNGNG
for ループで1から120までの整数を出力する。二重ループは使わない。
24の倍数を出力した直後に改行を入れる。
それぞれの数値は4桁(あるいは空白+3桁)の幅で出力される。

for i in ????
???
end

このプログラムを教えていただけないでしょうか。。本当にわからなくて・・


0970デフォルトの名無しさんNGNG
>>969
宿題は自分でやろうな
0971デフォルトの名無しさんNGNG
すいません・・どうしてもわからないんです・・。
0972デフォルトの名無しさんNGNG
1.for ループで1から120までの整数を出力する。二重ループは使わない。
2.24の倍数を出力した直後に改行を入れる。
3.それぞれの数値は4桁(あるいは空白+3桁)の幅で出力される。

1.だけのプログラム, 1.2.だけのプログラム。1.2.3.を満たしたプログラム
と順番に拡張しながら作っていけばいいよ。で、どこが分からないんだ?
0973デフォルトの名無しさんNGNG
>>968

drubyで簡単にアプリケーションサーバ立てられるところがよいと思う
クラスタリングも自由自在
ウェブ層の分離ができているとテストしやすいしメンテナンスしやすい
Javaよりはるかにによいと思うよ
0974デフォルトの名無しさんNGNG
さすがにインタプリタがJITコンパイラよりいいって事はないよ
0975デフォルトの名無しさんNGNG
>>974
それは「いい」の基準によると思うけど。
処理速度しか頭に無くない?
0976デフォルトの名無しさんNGNG
>969 Rubyだと 「1から120までループ」のような処理に for 文はあんまり使われないような
0977デフォルトの名無しさんNGNG
マジで?
0978969NGNG
実は全然わからないのです・・
for i in 1 . . 120
�@はでいいのでしょうか??
どの記号を入れればいいのかも全然わかりません・・
0979デフォルトの名無しさんNGNG
いいかどうか聞く前に自分で試してみろよ、と。
0980デフォルトの名無しさんNGNG
学校でruby教えるの?
0981969NGNG
rubyを学んでるのですが、先生の作ったテキストなので、何が何だかさっぱり。
�A�Bの意味が全然わからないので、試しようもなくて・・
0982デフォルトの名無しさんNGNG
今まで貰ったテキストがあれば出来るでしょ
ここは宿題スレじゃないから煽られないうちに移動した方がいい
0983デフォルトの名無しさんNGNG
それくらい教えてあげればいいだろ。
お前みたいなへそ曲がりがRubyコミュニティの評判を貶めていることに気づけよ。
0984デフォルトの名無しさんNGNG
>>983
そういいながら教えないお前はちんこでも曲がってるの?
0985デフォルトの名無しさんNGNG
>>969

for i in 1..120
printf "%4d%s", i , i%24==0 ? "\n" : ""
end

こんなんでいいのかな。
全然面白くも楽しくもないな。
0986デフォルトの名無しさんNGNG
授業中寝てた分をここで補講してやる必要はないな
0987969NGNG
>>985
ありがとうございます。
クラスメートに質問スレでは983のように煽ると答えが出てきやすいと
教わったのですがうまくいきました。
0988デフォルトの名無しさんNGNG
>>987 こっちの方がお勧めだ。
for i in [false]
 a = Array.new(5) {|i| Array.new(24){|j| i*24 + j + 1 } }
 s = a.map{|i| i.map{|j| '%4d' % j }.join('') }.join("¥n")
 print s
end
0989969NGNG
皆さんありがとうございました。。私が本物の969です。
私のせいでご迷惑かけてすいませんでした。。
0990デフォルトの名無しさんNGNG
D言語の組み込みスクリプトとしてサポートされたら面白いだろうな
他のスクリプト言語が既にポーティングされてるらしいけど、愛称はこっちのが良さそう
0991デフォルトの名無しさんNGNG
疑問が2つあるのだが、
1. どっかの学校では Ruby で授業があるのだろうか。
2. その学校では Ruby でわざわざ for を使わせてるのだろうか。

1.だけだと羨ましいが、2.も込みならそんなでもないな。
0992デフォルトの名無しさんNGNG
ここ最近forなんて使ってないな・・・
0993デフォルトの名無しさんNGNG
おれforのが好きだなイテレータって字面が醜い
0994デフォルトの名無しさんNGNG
言語依存で教える方がきもいだろ
0995デフォルトの名無しさんNGNG
言語依存のない言語の関発キボンヌ
0996デフォルトの名無しさんNGNG
~$ruby -e '(1 .. 120).each { |v| print sprintf("%03d ", v); puts if v % 24 == 0 }'
0997デフォルトの名無しさんNGNG
for をありがたく使ってるうちはまだ子供
inject を使いこなすようになればズルムケ
0998デフォルトの名無しさんNGNG
レスだけみると教育には向かない言語だなとわかる
WSHとか使ったほうが良かったんじゃねーのかなw
0999デフォルトの名無しさんNGNG
inject が好きだが、2つのブロック引数の
どっちがどっちだかなかなか覚えられないのがつらい
1000デフォルトの名無しさんNGNG
ム板で丸付き数字使うな。
しかし、こんなしょーもないレスでこのスレも終了か。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。