■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50



レス数が1000を超えています。残念ながら全部は表示しません。

rubyを語るスレッド

1 :名無しさん@お腹いっぱい :02/04/16 23:24
語ってみましょう

568 :名無しさん@お腹いっぱい。 :02/10/15 04:40
>>567
最凶ってほどでもないがな。悲惨、くらいかな。
実際役立ってるし。

ただ、256倍本の伝統を汚すという意味では悲惨だと思う。
ノリがわるすぎ。

569 :559 :02/10/15 11:51
>>567
これ買いますた。
256本ってartonさん以外では何がお勧めですか?

570 :名無しさん@お腹いっぱい。 :02/10/15 12:56
>>569
個人的には極道編。XPを覚えるきっかけになったから。

571 :名無しさん@お腹いっぱい。 :02/10/16 00:58
Win32OLEとWin32APIの本ってありますか?

572 :名無しさん@お腹いっぱい。 :02/10/16 10:00
>>571 256邪道?


573 :名無しさん@カラアゲうまうま :02/10/16 13:16
>>569
無道編も勧めとこう。
直接焼くに立ったという奴は限られるかも知れんが、木曽教養の一つとでも思へ。

574 :名無しさん@お腹いっぱい。 :02/10/16 19:29
>>573
raccのドキュメントでまともなのはアレしかないからねー
だったら、もっときちんとした本にして欲しかった

無理に256倍本にする必要もなかろうに

575 :名無しさん@お腹いっぱい。 :02/10/16 20:37
無道編の256倍風味は良かったんじゃない


576 :名無しさん@お腹いっぱい。 :02/10/16 23:19
リファンレンスとして使えない罠

577 :名無しさん@お腹いっぱい。 :02/10/17 06:22
>>574
|無理に256倍本にする必要もなかろうに
ソレダ!

578 :名無しさん@お腹いっぱい。 :02/10/18 15:14
ようするに著者のほうが優秀で熱意があれば
そこそこの本は作れるということだな。
あの編集でも。
でも著者が安心して任せたりしたらもうアウト。



579 :名無しさん@お腹いっぱい。 :02/10/18 15:23
金光って今度は自分で本を書くつもりらしいな。
でも技術がないんで質問しまくってなんとかしようとしてるらしい。
そこまでするかね。


580 :名無しさん@お腹いっぱい。 :02/10/18 20:41
CGIのruby256倍本は最悪。間違っても買うな。

581 :名無しさん@お腹いっぱい。 :02/10/18 20:54
>>580
そんな本あったっけ?

582 :名無しさん@お腹いっぱい。 :02/10/18 22:12
>>580
網道編だっけ?
前編はただただしさんのCGI+eRuby、後半はartonさんのdRubyのやつ。
わりといいと思うけど、どこらへんがまずかった?


583 :名無しさん@お腹いっぱい。 :02/10/19 00:19
まあ確かにERubyと分散オブジェクトの話しだから、Perl互換な
CGIの話しを期待して買うとそう思うかもね。
俺は界道編いらないと思うけど・・・。いまさらTkでもないだろ。

584 :名無しさん@お腹いっぱい。 :02/10/19 00:36
俺的にはRUBYライブラリ編が最凶だと思うよ。
他人が書いたドキュメントやらウェブの文章
そのままコピペしただけだもん。

まRUBY本編も内容はともかくチェックがあまあまで酷かったけどな。



585 :名無しさん@お腹いっぱい。 :02/10/19 01:02
>>584
何も考えずに買ってしまって鬱になった本だ。
いわゆるバイブルのミニリファレンスのほうがはるかに役立った。

586 :名無しさん@お腹いっぱい。 :02/10/19 02:30
洋書の訳書とかどう?



587 :名無しさん@お腹いっぱい。 :02/10/19 03:15
訳書は ProgrammingRuby 以外あったっけ?
英語の洋書は一通り買ったけど、
コードがメインのが多いので原書で十分だと思う。

588 :名無しさん@お腹いっぱい。 :02/10/19 05:54
zsh的な表記ですけど、
{1..44}ではなく
{01..44}という番号ってrubyで生成するとけっこう冗長なコードになりませんか?

僕が厨なだけかなぁ…….

589 :名無しさん@お腹いっぱい。 :02/10/19 06:00
>>588
ん?どゆこと?

590 :名無しさん@お腹いっぱい。 :02/10/19 06:36
>>588
こういうこと?
('01'..'44').to_a

591 :588 :02/10/19 13:59
>>590
おお、出来ました。
ついでに、質問。
「空行を区切りにファイル分割スクリプト」を書いてるのですが、

ファイル名indexの配列がなくならないように下のようにやろうとしても
うまくいかないんですけど、他の方法何かありませんか?


initial_endidx=10
arr=("01".."#{initial_endidx}").to_a
num=11
while chunk = gets("") 
    arr.push num.to_s
    i = arr.shift
    File.open("xxx-#{i}.xls", "w") do |f|
    f.puts chunk
    num = num +1
    end
end


592 :591 :02/10/19 14:06
さっきのコード、少しへんでした。

下の方法でも動くんですが、余分な配列を常に作ってしまっているので、
もう少しメモリ効率上げたいなぁ、とか言って見るテスト。



 File.open("xxx-#{i}.xls", "w") do |f|
      f.puts chunk
    end
    num += 1 


593 :名無しさん@お腹いっぱい。 :02/10/19 16:20
>>591
num = 1

while chunk = ARGF.gets("")
idx = sprintf("%02d", num)
File.open("xxx-#{idx}.xls", "w") do |f|
f.puts chunk
end
num += 1
end


594 :通行人さん@無名タレント :02/10/19 17:13
>>591
num = '00'

while chunk = ARGF.gets("")
File.open("xxx-#{num.succ!}.xls", "w") do |f|
f.puts chunk
end
end


595 :591 :02/10/19 18:38
>>594
どうも有難うございました。勉強になりました。

596 :名無しさん@お腹いっぱい。 :02/10/19 20:26
>>591
% ruby -00e 'ARGF.each_with_index{|e,i|open("xxx-%02d.xls"%i,"w")<<e}' input


597 :名無しさん@お腹いっぱい。 :02/10/19 22:32
ed氏の続刊はないの?

598 :名無しさん@お腹いっぱい。 :02/10/20 00:00
>>596
open("xxx-%02d.xls"%i,"w")<<
を翻訳してください。




599 :名無しさん@お腹いっぱい。 :02/10/20 00:16
>>598 何に?


600 :通行人さん@無名タレント :02/10/20 00:16
>>598
ruby -y -e 'open("xxx-%02d.xls"%i,"w")<<'

601 :名無しさん@お腹いっぱい。 :02/10/20 01:18
"xxx-%02d.xls"%i は String#%(args) という sprintf 似のメソッド。
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=String#self+%25+args

602 :名無しさん@お腹いっぱい。 :02/10/20 11:15
>>601
ぬお! はじめてしった!

603 :598 :02/10/20 13:17
open("xxx-%02d.xls"%i,"w")<<
             ^^^
<<
を翻訳してほしかったのだが……


604 :名無しさん@お腹いっぱい。 :02/10/20 13:20
IO#<<

605 :名無しさん@お腹いっぱい。 :02/10/20 16:02
>>591
$ ruby -00ne'open("xxx-%02d.xls"%$.,"w")<<$_' input


606 :名無しさん@お腹いっぱい。 :02/10/20 16:10
<< は Array, IO, String で定義されていてレシーバの幅が広いのでお薦め。


607 :名無しさん@お腹いっぱい。 :02/10/20 16:17
<< はレシーバをかえすのでこういうことも
ruby -rsocket -e'(TCPSocket.new("www.example.com",80)<<"GET /\n").read.display'


608 :名無しさん@お腹いっぱい。 :02/10/20 16:30
>>605 591は実はこっちをやりたいのかも
$ ruby -00ne'open("xxx-%02d.xls"%$.,"w")<<sub(/\n+\z/m,"\n")' input


609 :名無しさん@お腹いっぱい。 :02/10/20 18:35
>>608
もっと短くしてください。よろしくお願いします。

610 :608 :02/10/20 20:09
>>609
思いつかん


611 :608 :02/10/20 20:15
思いついた。漏れにはこれが限界。
$ ruby -00ne'open("xxx-%02d.xls"%$.,"w")<<sub(/^\n/,"")' input


612 :591 :02/10/20 21:07
>>レスつけてくださったミナタン。

(1..1000).each{
print "どうもありがとうございました\n"
}




613 :591 :02/10/20 21:08
こっちか。
1000.times{
print "どうもありがとうございました\n"
}


614 :591 :02/10/20 21:09
なんどもスマソ
print "どうもありがとうございました\n"*1000


615 :名無しさん@お腹いっぱい。 :02/10/20 21:35
改行するならputsの方が1文字短い。仕様かどうかは知らんけど空白もいらない。
puts"\n"*3


616 :名無しさん@お腹いっぱい。 :02/10/20 22:18
よくhttp://www.taiyaki.org/diary/?20021017見てます。

http://www.taiyaki.org/diary/?xxxxxxa
http://www.taiyaki.org/diary/?xxxxxxb
http://www.taiyaki.org/diary/?xxxxxxc
みたく、

今度は、
200110a
200110b
200110c
 ・
 ・
200112c
200201a
200201b
 ・
 ・
200208a
200208b
200208c
が欲しくなったっすね。


617 :名無しさん@お腹いっぱい。 :02/10/20 22:55
require "date"
d = Date.new(2001,10)
while d <= Date.new(2002,8)
for t in %w(a b c)
str = "%04d%02d%s" % [d.year,d.month,t]
puts(str)
end
d >>= 1
end


618 :通行人さん@無名タレント :02/10/20 23:00
>>617
それでは、「短く書くコンテスト」を始めます。

619 :名無しさん@お腹いっぱい。 :02/10/21 02:10
>>618
問題がそそられない。


620 :名無しさん@お腹いっぱい。 :02/10/21 03:27
zsh的に
Range{A-C}{1..5}【TAB押し】
 ↓
RangeA1 RangeA2 RangeA3 RangeA4 RangeA5 RangeB1 RangeB2 RangeB3 RangeB4 RangeB5 RangeC1 RangeC2 RangeC3 RangeC4 RangeC5
という手軽さ、短さを実現するrubyコードがもう直ぐ
POSTされるという噂。

621 :620 :02/10/21 03:32
要するに、これくらいの短さでおながいします。
% foreach i ({A-C}{1..5});echo $i;end
A1
A2
A3
A4
A5
B1
B2
B3
B4
B5
C1
C2
C3
C4
C5


622 :名無しさん@お腹いっぱい。 :02/10/21 03:43
>>621
ttp://www.ruby-lang.org/en/raa-list.rhtml?name=product


623 :名無しさん@お腹いっぱい。 :02/10/21 07:14
>>620
ふつーに
% ruby -e 'for i in "Range1" .. "Range5" do puts i end'
でいいんじゃないの?

624 :名無しさん@お腹いっぱい。 :02/10/21 07:17
>>623
ああ、なんか勘違いしてますた。ごめんなちゃい

625 :名無しさん@お腹いっぱい。 :02/10/21 09:36
>>621
ruby -e'for i in "A".."C" do for j in "1".."5" do puts "Range"+i+j end end' COOL

>>616
ruby -rproduct -e'puts(([1,2]*("01".."12")*("a".."c")).map{|i|"200#{i}"}[27...-12])'


626 :名無しさん@お腹いっぱい。 :02/10/21 13:07
require 'product'
code="\t"
for i,j in (1..2)*[:A, :B, :C] do print j,i,code end
の出力を
A1 B1 C1 A2 B2 C2
ではなく
A1 B1 C1
A2 B2 C2
にするには?
iが1の時はcode→TABを
iが2の時はcode→改行をつけるようにしたい。



627 :名無しさん@お腹いっぱい。 :02/10/21 13:19
require 'product'
code="\t";print( (("A".."C")*("1".."3")).map{|i| "#{i}#{code}"})


628 :627 :02/10/21 13:20
誤操作。無視してチョ。

629 :名無しさん@お腹いっぱい。 :02/10/21 17:33
>>626
普通にこうすればいいのでは?
for i in 1..2 do puts([:A,:B,:C].map{|j|"#{j}#{i}"}.join("\t")) end


630 :名無しさん@Emacs :02/10/21 20:20
Ruby って、java でいう、JITのような仕組はありますか?

631 :名無しさん@お腹いっぱい。 :02/10/21 22:16
>>630
むかし作った人がいますが今もメンテナンスされているかどうかは知りません。
メーリングリストのログを検索してみては?


632 :名無しさん@Emacs :02/10/21 23:54
>>631
情報ぬりがと。
JIT はi686-Linux のみみたいね。
同時に、rb2c というのを見つけたけど、
これ最近メンテナンスされてないみたいね。残念。
でも、rb2c があんまり速くない理由が書いてあり、またまた残念。

633 :名無しさん@お腹いっぱい。 :02/10/22 03:58
Ruby本に「94/11にまつもとさんがNetNewsを通じて、協力者を募った」とありますが、
その記事って何処で読めますか?
fj.sourcesに投稿されたやつも見たいかも。

634 :名無しさん@お腹いっぱい。 :02/10/22 04:54
rbbr_with_docが使えないじょ〜。なんでぇ〜。

635 :名無しさん@お腹いっぱい。 :02/10/22 06:45
>>633
おれも読んでみたいな。

636 :名無しさん@お腹いっぱい。 :02/10/22 07:17
>>633
queenには97年からしかないのか。archive.orgをぐぐれれば楽なんだが。


637 :名無しさん@お腹いっぱい。 :02/10/22 07:26
やい、お前ら str == eval(str) な最短の str って何ですか?
とりあえず古典を一つあげておきマス

str = 's="s=%c%s%c;sprintf(s,34,s,34)";sprintf(s,34,s,34)'
str == eval(str) and p str.size #=> 50


638 :名無しさん@お腹いっぱい。 :02/10/22 10:52
>>637
最短ではないだろうが短くしてみた
str = 's="s=%c%s%c;s%%[34,s,34]";s%[34,s,34]'
str == eval(str) and p str.size #=> 37


639 :名無しさん@お腹いっぱい。 :02/10/22 13:43
http://slashdot.jp/article.pl?sid=01/07/09/0352225&mode=thread
に、
-----------------------------------------
 hash.keys.sort.print
 ハッシュのキーをソートしてプリント(日本語)
Perlだと
 print sort keys %hash
 print sorted keys of %hash(英語)
-----------------------------------------
という比較が出てたけど、なるほど確かにそうかもと思った。
日本語向けだったんだねーRubyって。
Perlの方がすっきりする(暗号的な表記は別)って言う人の気持が
少しはわかったよー。




640 :名無しさん@お腹いっぱい。 :02/10/22 14:14
Perl って「英語として読み下せる」ことにかなり注力して設計されてるけど、
Ruby が日本語として読み下しやすくなってるのは偶然の一致だと思う。

#!/usr/local/bin/ruby -Ke
class Hash
alias キー keys
end
class Array
alias ソート sort
alias 表示 print
end
ハッシュ = {"foo"=>1,"bar"=>2}
p ハッシュ.キー.ソート.表示


641 :名無しさん@カラアゲうまうま :02/10/22 14:25
Array#printなんてない。とツッコんでみるテスト。

alias 表示 display

642 :名無しさん@お腹いっぱい。 :02/10/22 15:42
>>634
エラーメッセージをちゃんと書いてください。
riかReFeが入ってないとドキュメントは出ないよ。


643 :634 :02/10/22 20:01
>>642
あ、作者さんですか?
エラーメッセージというか、クリックしても説明でないんですよぉ〜。
使い方良くわかってないんで…… ^^;

あ、riとReFeはちゃんと入ってます。




644 :名無しさん@お腹いっぱい。 :02/10/23 17:27
>>634
あと、ri や ReFe に説明が入ってないもの(拡張ライブラリなど)については、
説明は表示できません。もしかするとこれかもしれませんね。



645 :634 :02/10/23 18:40
メジャーなメソッドで試してます。
そもそも、このソフト、動作がよく判らないのですが、
クリックしていけば、
Object→String→scanのように追っていけますが、
「scanをクリックした時に説明が表示される」
といったツールではないんですか?
scanまでは見えて、その先の説明が見れないです。

646 :名無しさん@お腹いっぱい。 :02/10/26 20:33
makeスレってのがあったら、いいのに〜

しつもん内容は、例えば、

nkf-e:
>---ruby -i"" -rnkf -ne 'euc= NKF::nkf("-e" ,$_);print "#{euc}"' $(in)

というようなrubyの変数、$_ を Makefileの中で使いたい時、
どのようにクオートしてもマクロが置換してしまいやがる!!

こんな時、rubyの側で工夫して、$_ などを使わないようにする方法って
どういうものがあるでしょうか?


647 :名無しさん@お腹いっぱい。 :02/10/26 21:17
いまさら refe を知りました。
便利ですね。

648 :名無しさん@お腹いっぱい。 :02/10/26 22:00
>>646
$$var

649 :名無しさん@お腹いっぱい。 :02/10/26 22:20
>>646
お前、くだ質とFreeBSDにいた丸血だろ。

650 :648 :02/10/26 22:24
くそぅ、マルチだったのかよ!

651 :名無しさん@お腹いっぱい。 :02/10/27 07:26
File.open("hoge.txt","r+"){
処理
}

は読み書きが同じファイル名ですけど、
例えば、以下のような場合、

open LOG, "ほげ.log";
open OUT, ">結果.csv";
while(<LOG>){
     print OUT "変数, ・・・\n";
}
close OUT;
close LOG;

rubyだとイテレータ使って簡単にopen,closeできないのですか?


652 :名無しさん@お腹いっぱい。 :02/10/27 09:44
vim+rubyの使い方が分からぬ。

653 :名無しさん@お腹いっぱい。 :02/10/27 10:45
>>651
ブロックを入れ子にすれば?

654 :名無しさん@お腹いっぱい。 :02/10/27 10:46
>>652
:help ruby

655 :名無しさん@お腹いっぱい。 :02/10/27 13:17
>>654
サンクスコ。マジで悩んでた。。。。

656 :651 :02/10/28 15:30
>>653
そうか……
やはりそうするしかないのか……

657 :名無しさん@お腹いっぱい。 :02/10/28 15:45
Rite の全貌か概要が語られているサイトってありますか?
ML を拾い読みしてるだけだと、
実装先送りの言い訳のための小人さんのたくさん入った魔法のスタックらしい、
というようなことが伺えるだけで、なんのことやらさっぱりです。

658 :名無しさん@お腹いっぱい。 :02/10/28 15:49
>>656
ブロックを使ったopenは短い場合に有効だけど
長いとネストが深くなって読みにくい気がする。
読み書きがいつもペアでよく使うなら
メソッドにするのもよいかも。

def in_out(ifn,ofn)
i,o = open(ifn,"r"),open(ofn,"w")
begin
yield(i,o)
ensure
i && !i.closed && i.close
o && !o.closed && o.close
end
end

in_out("hoge.log", "hoge,cvs") do |infile,outfile|
.....
end

それとflushするタイミングがシビアじゃないなら
明示的にcloseしなくてもいい。
どのみちGCとexitのときにはcloseされる。


659 :名無しさん@お腹いっぱい。 :02/10/28 15:51
>>657
大部分は作者の脳内とノートにのみ存在すると思われ


660 :656 :02/10/28 18:30
>>658


なるほど、そう書けばよかったのか!

どうもです〜。

661 :名無しさん@お腹いっぱい。 :02/10/28 18:49
>>659
某linux雑誌、matzの連載にRite情報が小出しされてるよな。

662 :名無しさん@お腹いっぱい。 :02/10/28 18:58
>>658
>どのみちGCとexitのときにはcloseされる。
exitの時ってログインセッションのことですか?

closed

closed?

663 :657 :02/10/28 19:02
>>659
うーん、勿体ない話ですね。

>>661
「某」と伏せられているのは何か深い理由があるのでしょうか?
できれば何という雑誌か教えていただきたいのですが。

664 :名無しさん@お腹いっぱい。 :02/10/28 21:35
>>663
matz連載は Linux Magazine しかないんでは?
ttp://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=Media+Watch

665 :名無しさん@お腹いっぱい。 :02/10/28 21:48
Linux Magazine.

666 :名無しさん@お腹いっぱい。 :02/10/28 21:50
>>664-665
ありがとうございます、Linux Magazine 読んでみます。

667 :名無しさん@お腹いっぱい。 :02/10/29 14:04
>>645
動作はその通りです。

うーん、rbbr.rbはどこから持ってきたやつでしょうか?
あと、
% ri 'String#scan'
でちゃんと説明が出ますか?



掲示板に戻る 全部 前100 次100 最新50

read.cgi ver5.26+ (01/10/21-)