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

Ruby 初心者スレッド Part 23

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/11/20(木) 04:30:21
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

   【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
   【最新安定版の Ruby1.8.7 の使用をお勧めします】
    ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。
      1.9 の新機能の一部が利用可能なので初学者にお勧めです。
    ※ただし十分安定しているとは言えないので
      プロダクション環境での利用にはお勧めしません。

関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
 ・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0409デフォルトの名無しさん2008/12/12(金) 07:12:17
to_sは1.9系からinspectっぽくなるからおすすめしない。
0410デフォルトの名無しさん2008/12/12(金) 07:37:25
ブロックの存在忘れ去られている scan (´・ω・) カワイソス

aa = bb.scan(/.+/){|match| match.gsub(/m/,"")}
0411デフォルトの名無しさん2008/12/12(金) 12:39:25
tDiaryとHikiを使ってるんですけど、これはRuby1.9に対応していますか。
0412デフォルトの名無しさん2008/12/12(金) 12:59:52
Ruby1.9はまだ使わないでください。
0413デフォルトの名無しさん2008/12/12(金) 13:04:54
エラーが出ても自力で対処できないしな…
Ruby側が修正されるかライブラリ側が修正されるかするまで全く動作しないとかいうのは
ただ利用したいだけの一般ユーザーの身ではやってられん

が、開発とか覗いてみたいなーと考えてる人なら、1.9上で動かしてみてエラーのレポートとかしてみるといいかも
1ヶ月くらいじーっとROMってれば雰囲気はわかるしさ
0414デフォルトの名無しさん2008/12/12(金) 13:05:51
>>412
いやいや、rc2なんだから使ってもらうべきだろ。
0415デフォルトの名無しさん2008/12/12(金) 13:06:24
>>405
一つの変数には一つのオブジェクトしか入れられない。
だから複数のオブジェクトを入れられるArrayオブジェクトを器にするか
結合して一つのStringオブジェクトにするしかない(>>408)。

gsubしたあとにまたバラバラの文字列である必要があるなら
結合すると分割がめんどうだから
aa = bb.scan(/.+/)
cc = aa.map{|s| s.gsub(/m/,"")}
で配列の各要素に対してgsubをする。
やってることは結果的に>>410と同じだけど、Array#map(Enumerable.map)は
覚えておいて損はない。
0416デフォルトの名無しさん2008/12/12(金) 13:19:55
>>414
お前のような奴がいるからFirefoxは
0417デフォルトの名無しさん2008/12/12(金) 13:22:09
Rubyはバグ報告サポートがまだヘナチョコだからなー
SEGVが出た時点でエラー情報送信ウィンドウが出るくらいじゃないと開発者以外に勧めたらあかんと思う
0418デフォルトの名無しさん2008/12/12(金) 13:35:43
一般ユーザーは偶数安定バージョンの2.0待ちが無難だよ。
0419デフォルトの名無しさん2008/12/12(金) 13:59:05
>>417
dumb端末で使ってるやつもいるんだぞ!
0420デフォルトの名無しさん2008/12/12(金) 14:03:05
>>419
本当? ふつう端末エミュレータかコンソールじゃないの?
今どきシリアル端末なんて管理者だって使わないだろ。

つうか vt100 だって、ダム端じゃねーぞ。
0421デフォルトの名無しさん2008/12/12(金) 14:10:07
cursesが動かない環境はとりあえず切り捨てていい
そんなの使ってる人は自力で何とかすると思われ
0422デフォルトの名無しさん2008/12/12(金) 15:56:53
「44133」を「12時間15分33秒」(の表示に必要な数値)に直してくれるライブラリとかないですかね
0423デフォルトの名無しさん2008/12/12(金) 16:09:20
>>422
標準でありそうだが、ないな
というか時間オブジェクトってないよね
Time::Period クラスとかになるのかな
0424デフォルトの名無しさん2008/12/12(金) 16:16:30
>>422
難しく考えなくても、Time.at(44133)のTimeオブジェクトからhms拾えばおk。
0425デフォルトの名無しさん2008/12/12(金) 16:21:13
あ、タイムゾーン影響を受けるからTime#utcを忘れずに。
0426デフォルトの名無しさん2008/12/12(金) 16:23:19
こんな感じかな?
Time.at(44133).getgm.strftime("%H:%M:%S")
0427デフォルトの名無しさん2008/12/12(金) 16:40:14
24時間を超えたらどうすんの。
0428デフォルトの名無しさん2008/12/12(金) 16:51:05
>>427
どうしようもないな
日の部分が1を超すかどうかをチェックするしかあんめえ
0429デフォルトの名無しさん2008/12/12(金) 16:54:14
そうなると秒数を割り算したほうがわかりやすそうだ
0430デフォルトの名無しさん2008/12/12(金) 16:57:59
>>407
>>408
>>410
joinで解決しました。ありがとうございます。
aa = bb.scan(/.+/){|match| match.gsub(/m/,"")} もいいですが、今一ブロック処理って理解しきれない部分があって。

0431デフォルトの名無しさん2008/12/12(金) 17:02:03
>>415
勉強してみます。ありがとうございます。
0432デフォルトの名無しさん2008/12/12(金) 19:18:43
あるオブジェクトのインスタンス変数に File オブジェクトがセットされてるとして、
そのオブジェクトが GC されるタイミングでその File オブジェクトは close される?
0433デフォルトの名無しさん2008/12/12(金) 19:22:38
あ、それで、もし close されてくれないとして、その場合に、
GC のタイミングで close する
finalizer のようなことをする方法があれば教えてください。
0434デフォルトの名無しさん2008/12/12(金) 19:30:47
>>432
http://www.ruby-lang.org/ja/man/html/FAQ_C1C8A4DFB9FEA4DFA5E9A5A4A5D6A5E9A5EA.html#a7.2e11.20.a5.d5.a5.a1.a5.a4.a5.eb.a4.f2close.a4.b7.a4.ca.a4.a4.a4.ce.a4.cf.b5.a4.bb.fd.a4.c1.a4.ac.b0.ad.a4.a4.a4.ce.a4.c7.a4.b9.a4.ac
> 参照されなくなったFileオブジェクトは、GCで自動的にクローズされます

>>433
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/3465

require 'finalize'
Finalizer.add(obj)
でobjがGCされるときにobj.finalizeがコールされる

はずだけど使ったこと無いw
0435デフォルトの名無しさん2008/12/12(金) 19:37:48
忘れてた。これも参照のこと。
http://www.ruby-lang.org/ja/man/html/trap_IO.html

それと「objがGCされたとき」にobj.finalizeを呼ぶことはできないのか。
Finalizer.add(file, obj)
0436デフォルトの名無しさん2008/12/12(金) 19:48:00
>>434 >>435
ありがとうございます。
明示的に close しないのはあまり行儀が良くないとは思いますが、
それほど扱うファイルが多くない場合には GC に期待しても良さそうですかね。
Finalizer はリファレンスマニュアルに説明が無いですが、
これは使うなという無言の圧力でしょうか・・・
0437デフォルトの名無しさん2008/12/12(金) 19:50:26
いや、明示的に閉じろよ
なんでこの機能に依存するんだよ
0438デフォルトの名無しさん2008/12/12(金) 20:00:19
「ガベコレされる時のフック」はいろいろとヤバい代物だから、
使うのは本当に必要なとき(ってどんなときだろ)のみにすべき。

ファイルのクローズのような処理はガベコレに頼るべきではない。
0439デフォルトの名無しさん2008/12/12(金) 20:19:45
ガベージコレクションはプログラム作成者が意識したらダメよ
いい意味でも悪い意味でもな
オブジェクトの自動回収だけをさせるべき
0440デフォルトの名無しさん2008/12/12(金) 20:28:12
>>437 >>438
自分が一から設計するならそうしたいんですけどね。

hash_table.delete obj

みたいなコードがあって、今まで obj はメモリ内で完結するオブジェクトでしたが、
あるとき機能追加で File を持つ obj も扱うようになりました。
これを真面目に close するとすると delete する直前の箇所で、

obj.close if obj.respond_to? :close
hash_table.delete obj

としたり、 hash_table の初期化をする箇所で

class << hash_table = Hash.new
alias :__delete :delete
def delete obj
obj.close if obj.respond_to? :close
self.__delete obj
end
end
...
hash_table.delete obj

と hash_table を拡張するのは思い付いたんですが、
hash_table 側のコードを変更するよりは、
機能追加する側の obj の方でどうにか (あわよくば GC で勝手に) close できれば
そっちの方が変更としてはスマートかな、と思いました。

何か良い方法ありますかね?
0441デフォルトの名無しさん2008/12/12(金) 20:31:31
いや、だから、openが終わったときにcloseするか、ユーザーのcloseを受け付けるように作れよ
0442デフォルトの名無しさん2008/12/12(金) 20:42:56
Fileオブジェクトを使う人が、そのファイルオブジェクトの責任を持つ

ということで、この場合は勝手に消していいと思う
obj.open だけして放置する人がいたのなら、それはその人が悪いんじゃないかな
0443デフォルトの名無しさん2008/12/12(金) 20:48:32
ど田舎富山DQN男の家族消えろ ど田舎富山DQN男の親消えろ ど田舎富山DQN男の子供消えろ ど田舎富山DQN男の親戚消えろ
ど田舎富山DQN男の家族消えろ ど田舎富山DQN男の親消えろ ど田舎富山DQN男の子供消えろ ど田舎富山DQN男の親戚消えろ
ど田舎富山DQN男の家族消えろ ど田舎富山DQN男の親消えろ ど田舎富山DQN男の子供消えろ ど田舎富山DQN男の親戚消えろ
ど田舎富山DQN男の家族消えろ ど田舎富山DQN男の親消えろ ど田舎富山DQN男の子供消えろ ど田舎富山DQN男の親戚消えろ
ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
死ぬとき このレスの事思い出してから地獄へ行けよ
ニヤ(・∀・)ニヤ(・∀・)
0444デフォルトの名無しさん2008/12/12(金) 20:59:19
Rubyで特定のファイル群を、
OSで関連付けされたアプリケーションで開きたいのですが、
どうすればよいでしょうか。
一種のとして使いたいのです。
0445デフォルトの名無しさん2008/12/12(金) 21:06:56
>>444
Windowsなら、start が使えるはず
system('start hoge.txt')

cmd.exe の内部コマンドなので注意
0446デフォルトの名無しさん2008/12/12(金) 21:14:40
>>440
> 何か良い方法ありますかね?
腐った設計を見直すのが一番いい方法だな

>>444
start とか open とか、そのOSで用意されてるコマンドを使う
0447デフォルトの名無しさん2008/12/12(金) 21:15:44
>>445
できました!
なんという素早く的確なレス!
本当にありがとうございます。ありがとうございます!
0448デフォルトの名無しさん2008/12/12(金) 23:47:41
rubyでcgiの掲示板みたいな物を
作ろうとしているのですが、

テンプレートとなるHTMLを別に用意して
その中の項目などを置き換えて
最終的に表示を行いたいと考えています。

Amrita2 というライブラリが良さげなんですが
サンプルなどが少ないんですよね。
(メインのページ?が404で見れない)

他に、同様な機能を持ったライブラリで
お勧めなどはありますでしょうか。

0449デフォルトの名無しさん2008/12/12(金) 23:56:17
めんどいからrdでやっとけ
0450デフォルトの名無しさん2008/12/13(土) 00:08:10
>>448
Tenjin ってのが速いらしいけど、使ったことないから別にお勧めってわけでもない。
http://www.kuwata-lab.com/tenjin/
0451デフォルトの名無しさん2008/12/13(土) 07:29:20
>>448
俺のオススメはTenjinだけど
この辺のライブラリはかなり数があるので、いくつか試して目的に合った奴を使うと良いんじゃないかな
Rubyist Magazine最新号あたりの記事も参考に

ちなみに普通のCGIアプリで使うなら、Amrita2はRubyGemsとHpricotを使っているためオススメできない
(というか普通のレンタルサーバ環境ではまず動かない)
amrita-alteredの方が良いと思う。ただし動作がかなり重いことには注意
0452デフォルトの名無しさん2008/12/13(土) 07:53:50
RDとかではめんどいからテンプレートエンジンが隆盛なんだと思う
決定版がないんだよねという話は5年くらい前からしてる気がするが
0453デフォルトの名無しさん2008/12/13(土) 08:07:15
そもそもテンプレートエンジンに「ただ一つの決定版」って要るのか?
今の状況はけっこう理想的だと思うけど
0454デフォルトの名無しさん2008/12/13(土) 10:35:39
元のファイルを読み込んで新規にファイルを作成し、
その内容を置換する作業を一括してやりたいと思っています。
色々と実験しているのですが通常の置換はできても正規表現による置換ができません。
試している元のファイル「 in.txt 」の内容は、

 |青空文庫《あおぞらぶんこ》
 へのへの

です。この内容を出力して置換するために書いた「 test.rb 」の内容が次です。

open("in.txt","r"){ |元ファイル|
 open("out.txt","w"){ |出力と置換後のファイル|
  while line = 元ファイル.gets
    line.gsub!("(|)(.+?)(《)(.+?)(》)","\4\3\2\1") #正規表現による置換。変化なし。
    line.gsub!("へのへの","もへじ")             #通常の置換。OK。
    出力と置換後のファイル.puts line
  end
 }
}

これによって出力された「 out.txt 」の内容が次のものです。

 |青空文庫《あおぞらぶんこ》
 もへじ

通常の置換は成功していますが、正規表現による置換に変化がありません。
どうすれば良いのでしょうか。
0455デフォルトの名無しさん2008/12/13(土) 10:41:01
あんちゃん、praggerに関するスレってないん?
0456デフォルトの名無しさん2008/12/13(土) 10:42:49
>>454
line.gsub(/(|)(.+?)(《)(.+?)(》)/,"\4\3\2\1") じゃまいか
0457デフォルトの名無しさん2008/12/13(土) 10:47:15
'\4\3\2\1' こうだろ
0458デフォルトの名無しさん2008/12/13(土) 11:03:27
>>448
ふつうにERBでええやん
ttp://jp.rubyist.net/magazine/?0017-BundledLibraries
Tenjinは日本語の解説がないからこのレベルの初心者にはムリだと思う
0459デフォルトの名無しさん2008/12/13(土) 11:08:08
>>458
erb より eruby の方が手軽じゃない?

1行目に #!/usr/bin/env eruby って書いておいて、
拡張子を cgi にしておけば普通のCGIと変わらず動くし。
0460デフォルトの名無しさん2008/12/13(土) 11:09:49
>>456
>>457
ありがとうございます。

 line.gsub!(/(|)(.+?)(《)(.+?)(》)/,'\4\3\2\1')

で出来ました!
正規表現はスラッシュで、
後方参照はシングルクォートで囲む必要があるんですね。
すごく勉強になりました。

このスレの皆さんのおかげで本当に助かります。
あらためて感謝します。
0461デフォルトの名無しさん2008/12/13(土) 11:47:48
� 出来ました!
懿「ォ めくらっぽう滅茶苦茶やってたらたまたま動作しました
0462デフォルトの名無しさん2008/12/13(土) 13:05:38
gsubでブロック紹介しない時点でなあ…
0463デフォルトの名無しさん2008/12/13(土) 13:37:05
strscanらぶ
0464デフォルトの名無しさん2008/12/13(土) 13:42:35
>>458
今ならERbよりErubisの方が良くないか?

>>459
まず、erubyのインストールが厄介なのでは
0465デフォルトの名無しさん2008/12/13(土) 14:00:56
各行の先頭に連番を振ることはできませんか。
「行数=挿入する数字」で良いんですが。
0466デフォルトの名無しさん2008/12/13(土) 14:01:26
あのへんはサーバ上で動かすための設定やインストールが面倒でなあ…
ローカルでスクリプトとして使うならそれほどでもないんだが
0467デフォルトの名無しさん2008/12/13(土) 14:03:07
>>465
各行に対して、正規表現の文頭を数字で置換しれ
改行区切りで配列にしてしまうのが簡単だと思う
joinでくっつけるときの改行コードは元の改行にしておくこと
0468デフォルトの名無しさん2008/12/13(土) 14:09:35
str = "a
bb
ccc
dddd"
lines = Array.new
str.to_a.each_with_index do |e, n|
lines.push(e.sub(/^/){"#{n+1}: "})
end
print lines.join


結果

1: a
2: bb
3: ccc
4: dddd

このまま使うと2桁3桁のとき数字表示が汚くなるが、そのへんは自分で考えれ
0469デフォルトの名無しさん2008/12/13(土) 17:17:48
>>467>>468
親切にありがとうございます。

>各行に対して、正規表現の文頭を数字で置換しれ

これはよく分かるのですが、

>改行区切りで配列にしてしまうのが簡単だと思う

というのがよくわからないのです。

str="●●●"の●●●の部分に連番を振りたいファイルの内容を
全部コピーして貼り付けて実行すれば良い、ということなのでしょうか?
確かにそれなら実現できました。

ただ、手間がかかるので
連番を振りたいファイルを指定して、
中身を直接書き換えられれば有難いのです。
そのような方法はありませんでしょうか。

ひょっとして初心者丸出しの質問なのかもしれませんが、
御教示頂ければ幸いです。
0470デフォルトの名無しさん2008/12/13(土) 17:46:04
プログラミングとクラスの考え方がまだ身についてないっぽい
必要なのはString オブジェクトだ
つまり文字列

ファイルパスを指定するとファイル内容を文字列で返すメソッドを持つクラスがあるからそれ使え
ファイル内容を文字列で取得できたら文字列内を置換しれ
んで書き込みたい文字列を作れたら、同じ名前でファイルに書き込め
0471デフォルトの名無しさん2008/12/13(土) 18:02:44
・ スクリプト内の変数の文字列を置換する
・ スクリプト内で指定したファイル内容を読み込んで表示してみる
・ 読み込んだファイル内容を置換して表示してみる
・ 置換した内容を別ファイル名で保存してみる
・ あらかじめ元ファイルをバックアップしておき、置換した内容を元と同じ名前で保存してみる
・ あるフォルダ(ディレクトリ)のファイル一覧を取得して表示してみる
・ 自分の欲しいファイル名だけを抽出する方法を考えてみる
・ 一覧のひとつひとつに対してファイル名だけを表示させてみる
・ ファイル名の表示の部分を「ファイル内容を読み込んで表示」に切り替えてみる
・ 「ファイル内容を読み込んで表示」の部分を「読み込んで置換して同名で保存」に置き換える

こんな感じ?
0472デフォルトの名無しさん2008/12/13(土) 18:03:47
> ・ スクリプト内で指定したファイル内容を読み込んで表示してみる
スクリプト内で指定したファイル名の内容を読み込んで表示してみる、だった
0473デフォルトの名無しさん2008/12/13(土) 18:10:45
問題を「これならできそう」って思える程度に分割する能力って大切だよね
オライリーはPragmatic Thinkingなんちゃらって本の日本語版出せばいいのに
0474デフォルトの名無しさん2008/12/13(土) 18:28:21
>>471みたいなのは、現状、意識的に経験積むしかないんだよね
うまい本とかあればいいんだけど、あんまり聞かないな
0475デフォルトの名無しさん2008/12/13(土) 18:33:15
>>471
そんな感じです。お手数をかけてすみません。
それを参考にして一つ一つ覚えて行きたいと思います。

何度か他の言語を覚えようとして挫折したのですが、
Rubyは簡単に結果を出力できて感動したので、
この言語を勉強することにしました。
(プログラムは素人ですが、
 Rubyのコードがシンプルで美しいと思ったのも動機の一つです)

一応「たのしいRuby」と「Rubyレシピブック」は購入しましたので、
今は「15.2 基本的な入出力操作」を試しています。
プログラムとかはやったことはないのですが、頑張って覚えるつもりです。
0476デフォルトの名無しさん2008/12/13(土) 18:37:33
すると

File.open(path, 'r'){|f| puts f.read}

ができた頃かね
f.read が文字列を返してることがわかったら、ファイルひとつを置換するのはもうすぐだな
0477デフォルトの名無しさん2008/12/13(土) 22:18:03
ワンライナーだと
ruby -pe "printf '%4d ',$." ファイル名
でファイルに4桁の行番号をつけて標準出力に表示

ファイルを書き換えたければ -i.bak などと-i オプションにバックアップの拡張子をつけて実行
ruby -i.bak -pe "printf '%4d ',$." ファイル名

標準入力から読み込んだ場合の行番号は$.に入ってる、行番号の形式を変えたければprintfを勉強する
複数のファイルを指定しても大丈夫

Windowsだと -i の拡張子無しでの直接書き換えが出来ないのがちょっとやだな
UNIXだと ファイル開いておいて、開いたファイルを削除して、書き込み用で同名のファイルを作成するのかな?
PerlでもWindowsだと出来ないので、同じような動作してるんでしょうね
というか、Perlの動作を再現してるんでしょうけど
0478デフォルトの名無しさん2008/12/13(土) 22:25:44
path = 'test.txt' #適当に作っといてね
outfile = 'testwrite.txt' #問答無用で上書きされるぞ
と、すると
pathファイルを開いて、全体を一気に読み込んだものを表示する
open(path, 'r'){|f| puts f.read}
pathファイルを開いて、一行読み込んで表示するのを最後まで繰り返す
open(path, 'r'){|f| f.each{|line| puts line}}
pathファイルを開いて、一行読み込んで、行番号表示して、行の内容を表示するのを最後まで繰り返す
open(path, 'r'){|f| f.each_with_index{|line,ind| printf '%3d ',ind+1;puts line}}
pathファイルを開いて、書き込み用のoutfileファイルも開いて、一行読み込んで、ファイルに行番号書き込んでから行の内容も書き込むのを最後まで繰り返す
open(path, 'r'){|f| open(outfile,'w'){|out| f.each_with_index{|line,ind| out.printf '%3d ',ind+1;out.puts line}}}
0479デフォルトの名無しさん2008/12/13(土) 22:30:00
cat -n
0480デフォルトの名無しさん2008/12/13(土) 22:32:30
>>479
そんなこと言ったら行番号付加ツールインストールすれば一発だぞ
0481デフォルトの名無しさん2008/12/13(土) 23:42:38
$.
0482デフォルトの名無しさん2008/12/14(日) 01:44:40
>>476
お恥ずかしながら io.readlines のことかと思って悪戦苦闘していました。
例文通りに打ち込んでも上手く行かないので、何かプログラムの根本的な
ところが判ってないのだと思って再び悩んでいました。

>>477
>>478
ありがとうございます。おかげさまで希望通りの動作が実現しました。
教えて君のような私にここまでして頂いて何と感謝すれば良いのか判りません。
私に何ができるわけでもありませんが、似たようなことがあったら、
私もこのスレの皆さんのような態度で困った人に接したいと思います。
このスレの皆様に心から感謝します。本当にありがとうございました。
0483デフォルトの名無しさん2008/12/14(日) 03:03:55
馬鹿なの?
死ぬの?
0484デフォルトの名無しさん2008/12/14(日) 05:12:40
>>482
たかが2chでそこまでバカ丁寧になる必要はない
教えてやりたい人間が教えたいように教えただけ

>>483
バカ丁寧だから、バカなんじゃない?
0485デフォルトの名無しさん2008/12/14(日) 05:13:18
ああ忘れてた、>>477-478, 乙であります
0486デフォルトの名無しさん2008/12/14(日) 05:40:39
>>484
たかが2chで「必要がない」ことをそんな大きく見てもしょうがない。
他の多くのレスの不必要な表現と同じように、>>482も書きたいように書いただけ。
0487デフォルトの名無しさん2008/12/14(日) 12:37:57
>>455
ないみたいね
そもそもPlaggerのスレさえも立ってない
(理由は不明だけど、俺は人気がないんだと思っている)

話したいなら、ここや本スレでも良いと思うよ
0488デフォルトの名無しさん2008/12/14(日) 12:47:00
ruby-ldapのインストール方法について質問です。
OSはcentos5.2を使用して
ruby本体は、 ruby-1.8.6-p287をcheckinstallにてRPM化しインストールしています。
ruby-ldap-0.9.7-1.i386.rpmを入手して、インストールを試みたところ下記のような
エラーメッセージが出力されて、二日ほど止まりっぱなしです。
どなたかアドバイスをお願いします。

# rpm -ivh ./ruby-ldap-0.9.7-1.i386.rpm
警告: ./ruby-ldap-0.9.7-1.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID bfbaf0e8
エラー: 依存性の欠如:
libcrypto.so.5 は ruby-ldap-0.9.7-1.i386 に必要とされています
libruby.so.1.8 は ruby-ldap-0.9.7-1.i386 に必要とされています
libssl.so.5 は ruby-ldap-0.9.7-1.i386 に必要とされています
#
0489デフォルトの名無しさん2008/12/14(日) 13:03:15
>>488
ruby-dev のようなもの、libopenssl-ruby のようなもの、openssl のようなもの、のインストールが足りない
Ruby関係ないな
0490デフォルトの名無しさん2008/12/14(日) 13:13:04
rpm コマンドの使い方の話だね
必要なファイルを含むパッケージを表示する方法があるはずだから、それでインストールするパッケージを調べるといい
0491デフォルトの名無しさん2008/12/14(日) 13:49:11
>>489-490
ruby-devとlibopenssl-rubyについては入っていません。。
ruby-dev`については、自ら作成したrubyのRPMファイルを入れるときに
アンインストールしちゃいました。
含んでいそうなファイルを探してみます。
ありがとうございました。
0492デフォルトの名無しさん2008/12/14(日) 13:53:01
devは作るときのだから、バイナリを入れるだけならなくても大丈夫だと思う。
0493デフォルトの名無しさん2008/12/14(日) 14:51:23
結局、
# rpm -qa | grep ruby
ruby-irb-1.8.6.287-1.el5.kb.1
ruby-libs-1.8.6.287-1.el5.kb.1
ruby-1.8.6.287-1.el5.kb.1
ruby-devel-1.8.6.287-1.el5.kb.1
こんな感じに拾ってきたrpmを入れてから、
#rpmbuild -ta ruby-ldap-0.9.7.tar.gz
を実行して、自分でrpmファイルを作ったら、インストールできました。

この状態だとgemが入れられなかったので、rubyのrpmファイルを自前で作成して
インストール後、上記の状態にしたのでgemがどっかで不具合を起こさないか不安ですけど。
ちなみに、gemがインストールできないのはrdocがロードできないとか怒られた。
rdocのrpmファイルってどこかに落ちてるんでしょうか?
0494デフォルトの名無しさん2008/12/14(日) 14:56:39
ディストリビューションオフィシャルリポジトリの存在を無視するな
0495デフォルトの名無しさん2008/12/14(日) 20:54:03
関連付けでファイルを開きたいのですが、
どうすればいいでしょうか。

 path ="test.txt"
 system("start path")

これだとコマンドプロンプトが立ち上がるだけで
関連付けでファイルを開いてくれません。
0496デフォルトの名無しさん2008/12/14(日) 21:01:50
コマンドラインから「start path」という9文字を入力してEnterしてみ
それと同じことが起きてるだけ
0497デフォルトの名無しさん2008/12/14(日) 21:03:03
system("start #{path}")
0498デフォルトの名無しさん2008/12/14(日) 21:43:35
>>497
出来ました! ありがとうございます。 m(_ _)m
0499デフォルトの名無しさん2008/12/14(日) 22:13:54
あと10日で1.9正式リリースなわけだが大丈夫なの?
1.9向けにライブラリ作っていい?
0500デフォルトの名無しさん2008/12/14(日) 22:26:51
対
応
で
き
る
も
ん
が
作
れ
るなら作ってみな

という感じだ
特にEncode関連
0501デフォルトの名無しさん2008/12/14(日) 22:29:24
文法エラーが出なくなる程度の対応は進めてもらえると
いちユーザーとしてもいきなり挫折しなくて済んでいいかも

ruby1.9 ./hoge.rb

しただけで普段見たことも無いファイルのやたら多い行数のとこでSyntaxErroroとか挫けるし
0502デフォルトの名無しさん2008/12/14(日) 22:30:51
>>499
1月に延期されたとかなんとか
0503デフォルトの名無しさん2008/12/14(日) 22:32:38
1.9に自作ライブラリを対応させるためのHOWTOとかそういう文書ってある?
1.9.0 features を読んで逐一チェックするしかない?
0504デフォルトの名無しさん2008/12/14(日) 22:51:10
>>499
12月25日に予定されてるのは、1.9.1のRC(リリース候補)で正式版じゃない
といっても、現時点でもう1.9.1の仕様は固まってるはずなので、今から作り始めても良いと思うが
0505デフォルトの名無しさん2008/12/14(日) 22:51:59
>>503
たぶんrubikitichがホッテントリ狙って書くよ。
0506デフォルトの名無しさん2008/12/14(日) 22:58:22
ぬう
0507デフォルトの名無しさん2008/12/14(日) 23:10:00
下の文字列がなぜ文字化けするのですが、何が原因でしょうか。

$KCODE="s"
tut = "12月28日 夢見師(プリンセスソフト、7,140円) "
p tut
0508デフォルトの名無しさん2008/12/14(日) 23:13:46
s?
■ このスレッドは過去ログ倉庫に格納されています