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



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

rubyを語るスレッド

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

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'
でちゃんと説明が出ますか?


668 :名無しさん@お腹いっぱい。 :02/10/29 14:34
なんかperlより遅いんですけど、こんなもんですか?

669 :名無しさん@お腹いっぱい。 :02/10/29 14:47
>>668
釣り師ですか?

670 :名無しさん@お腹いっぱい。 :02/10/29 15:20
どういう処理を ruby のどういうコードで書いたときに perl のこのコードよりこれだけ遅いと言わないと意味をなさない

671 :名無しさん@お腹いっぱい。 :02/10/29 15:33
>>670
ブルーギルですか?

672 :名無しさん@お腹いっぱい。 :02/10/29 15:37
>>671 ??

673 :名無しさん@お腹いっぱい。 :02/10/29 15:38
あぁ、釣り師につられた ブルーギルってことね
釣ってこよ…

674 :名無しさん@お腹いっぱい。 :02/10/29 18:19



  遅 い の は さ ほ ど 問 題 で は な い




675 :名無しさん@お腹いっぱい。 :02/10/29 19:33
Apache1.3、mod_rubyな環境で、
erubyなhtmlをmod_rubyで処理させて、幸福になりたいのだが、
以下のhttp.conf(抜粋)で、OKでしょうか?

<IfModule mod_ruby.c>
RubyRequire apache/ruby-run
RubyRequire apache/eruby-run
<Files *.rhtm>
SetHandler ruby-object
RubyHandler Apache::ERubyRun.instance
</Files>
</IfModule>

676 :名無しさん@お腹いっぱい。 :02/11/01 06:34
Ruby以外の言語は糞

677 :名無しさん@お腹いっぱい。 :02/11/01 07:06
ruby を ruby で書き直す、真の rubyist はいないのか?

678 :名無しさん@お腹いっぱい。 :02/11/01 07:51
>ruby ruby.rb hoge.rb

679 :名無しさん@お腹いっぱい。 :02/11/01 10:11
>>677
%cat ruby.rb ~/w
eval(ARGF.readlines.join("\n"))
%ruby ruby.rb <<END ~/w
puts 'voke'
END
voke
% ~/w

680 :679 :02/11/01 10:12
わ。zshのrpromptが入っちまった。

681 :名無しさん@お腹いっぱい。 :02/11/01 12:37
>>677

rubyって Cで書かれているところが良いんじゃないか?
ソースコードも整理されていて拡張しやすいし。
10%のスピードの必要なところを、C で書いて、
残りの部分を ruby で書くととっても楽だよ。
(すいません、まじれすで)


682 :名無しさん@お腹いっぱい。 :02/11/01 13:04
>>677
matjuのmetarubyとか


683 :名無しさん@お腹いっぱい。 :02/11/01 21:57
いい加減、ムカついてきたな>金光タン

684 :名無しさん@お腹いっぱい。 :02/11/01 23:18
金光またruby-listに戻ってきた。
あいつはrubyを食い物にしてるだけだな。





685 :名無しさん@お腹いっぱい。 :02/11/01 23:20
あの無神経さは、ちょっぴりうらやますぃ。

686 :名無しさん@お腹いっぱい。 :02/11/01 23:50
金光また誰かに怒られないかな(ウヒ

>>684
最近は食い物にも出来てなさそうだぞ
http://www.masao-k.net/tDiary/index.rb?date=20021101#p03


687 :名無しさん@お腹いっぱい。 :02/11/02 01:06
>>686
O社の編集者ともりきゅう。。。やるな!!
そもそも奴は真面目に編集なんてしてねぇんだろうし当然だな。



688 :名無しさん@お腹いっぱい。 :02/11/02 01:50
ねえ、半可通で本って出せるもんなの?
ねえ、金光さん。

おれのほうがよっぽど詳しいと思うぞ。
それでも本を書けるレベルじゃないと思ってるので書いたりしないが。
とにかく「金光著」の本は絶対買わない。
まわりにもそう触れ回ることにしよう。


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

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