Ruby 初心者スレッド Part 23
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/11/20(木) 04:30:21【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を読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0352デフォルトの名無しさん
2008/12/10(水) 06:39:170353デフォルトの名無しさん
2008/12/10(水) 06:45:52難しくなかった人はたまたま最新バージョンに Win バイナリがあった人
最新バージョンに Win バイナリが無い場合、バイナリのあるバージョンを手で指定しないとインストールが終了しない
これは gem update のアップグレードが悲惨
0354350
2008/12/10(水) 07:36:46やっぱりプロジェクトが活発でなくなるとHpricotみたいにバイナリを用意してもらえず
難しくなるかなぁ…
自分は今のところgemで一発でした。
0355デフォルトの名無しさん
2008/12/10(水) 17:15:590356デフォルトの名無しさん
2008/12/10(水) 18:29:46やめさせることができますが、同じことを irb のプロンプトから
行うことはできますか。
irb を使ってて、inspect による評価を一時的にやめさせようと
しています。
irb> IRB.conf[:INSPECT_MODE] = false
とかしてみましたけど、かわりませんでした。
0357328
2008/12/10(水) 18:43:11ありがとうございます。安心しました。
あと、数百のファイルをコピーする時、
ファイル名を一つ一つ変更したいのですが、
それも可能でしょうか?
名前を一つ一つ打ち込めばできますが、
ファイルの数が数百もあるので、
正規表現で置換するような形でリネームしたいのです。
「コードが一行で済まないかな」と思っています。
0358デフォルトの名無しさん
2008/12/10(水) 19:02:26IRB.conf[:MAIN_CONTEXT].inspect_mode = false
>>357
どういうファイル名をどのように変えるのかがわからないとなんとも。
あと一行でっていうのは、やればできるんだろうけど
いわゆる玄人御用達だからオススメしない。
0359デフォルトの名無しさん
2008/12/10(水) 19:15:12やってみましたが、かわんないです。
あいかわらず inspect の結果が表示されます。
0360デフォルトの名無しさん
2008/12/10(水) 19:21:59で動くかもしれない。
0361デフォルトの名無しさん
2008/12/10(水) 19:30:59やりたいのは--noechoじゃない?
IRB.conf[:MAIN_CONTEXT].echo = false
0362デフォルトの名無しさん
2008/12/10(水) 21:21:39御返事ありがとうございます。
元ファイル名は大体このような感じです。
hoge_428_20-01.txt
hoge と数字の部分が違っているものが数百ほどあります。
それを別のディレクトリにコピーする時に、
index_428_20-01.tex
というような形に変えたいのです。
先頭と拡張子の部分を置換する格好になります。
置換を正規表現で表現すると次のようになります。
検索 [a-z]+([\d_\-])+\.txt
置換 index\1.tex
このようなリネーム処理を、
ファイル(ディレクトリ)コピー時に同時に行いたいのです。
0363デフォルトの名無しさん
2008/12/10(水) 21:24:33びんごです!
さすが特務エスパー、多謝です
0364デフォルトの名無しさん
2008/12/10(水) 21:27:48だからできるっつの
めんどくさいので、対象ファイルの指定も実際のコピーもRubyでやれ
これらを外部から読み込むように作ろうとすると敷居が微妙に高い
より正確に言うと変なものが混じったときのエラー処理がめんどい
0365デフォルトの名無しさん
2008/12/11(木) 09:33:52これを参考にしてみて。
require 'fileutils'
from = /[a-z]+(¥d_¥-])+¥.txt$/
to = 'index¥1.tex'
filenames.each do |filename|
new_filename = filename.sub from, to
FileUtils.mv filename, new_filename if filename != new_filename
end
>>364
役立たずなレス
初心者の相手ができないならくんなよ
0366デフォルトの名無しさん
2008/12/11(木) 15:31:12a = ["hage","hoge","hage"]
a.each{|elem|
return true if elem="hoge"
}
return false
end
上記のようなコードを書くと、funcの返り値が[false,true,false]になってしまうのですが、
trueひとつにしたい場合はどのようにしたらよいでしょうか
0367デフォルトの名無しさん
2008/12/11(木) 15:36:25ごめんなさい、これ勘違いだったので見なかったことに
0368デフォルトの名無しさん
2008/12/11(木) 15:37:110369デフォルトの名無しさん
2008/12/11(木) 15:50:06他の言語の人間だ
0370デフォルトの名無しさん
2008/12/11(木) 16:19:310371デフォルトの名無しさん
2008/12/11(木) 16:23:39タグ名もバラバラです。
例
<b1>殿様カエル</b1><b2>しり上がり</b2><goow>自転車</goow>
タグごと取り出す方法は分かったのですが。
0372デフォルトの名無しさん
2008/12/11(木) 16:28:04rename_rule=[..., ...]
def mkdistnme file
x.sub *rename_rule
end
def movefile from, to
...
end
filenames.map{|x| [x, mkdistnme x]}.each{|ft| movefile *ft}
0373デフォルトの名無しさん
2008/12/11(木) 16:41:37hpricotとかでパースするのをオススメしたいけど
慣れるまでが難しいかも知れない。
ネスト構造無視でいいなら
str = "<b1>殿様カエル</b1><b2>しり上がり</b2><goow>自転車</goow>"
ary = []
str.gsub(/<.+?>(.+?)<\/.+?>/){ary << $1}
gsub使うのに違和感あるから、もっといい方法があるかも?
0374デフォルトの名無しさん
2008/12/11(木) 17:02:02deleteの動作(主に返り値)に注意
str = "<b1>殿様カエル</b1><b2>しり上がり</b2><goow>自転車</goow>"
arr = str.split(/<.+?>/)
arr.delete('')
puts arr
殿様カエル
しり上がり
自転車
HTMLとしてパースするのが真っ当
0375デフォルトの名無しさん
2008/12/11(木) 17:09:31そういえばなんでArrayの一部メソッドは破壊的な操作をするのに
!がついてないんだろう。perl由来の名残のような気もするけど
ary = [].push data
[].push! data
と書きそうになることがよくある。
0376デフォルトの名無しさん
2008/12/11(木) 17:34:18b = [4,5,6]
a.each{|i| puts i}
b.each{|i| puts i}
とやると 123456 の順に表示されますが
a.calleach
b.calleach
puts "A"
a.calleach
puts "B"
b.calleach
a.calleach
puts "C"
b.calleach
のようにeachの各ループが実行されるタイミングを自分で制御してこの例では 14A2B53C6
という順で出力されるようなイテレータの書き方というか呼び方あったら教えてください。
自分でインデックス変数も合わせて用意すればいいんでしょうが
もう少し簡潔なのがあれば嬉しいです。
0377デフォルトの名無しさん
2008/12/11(木) 17:44:16それはプログラム構造そのものが間違っている
絶対にあとで破綻するから、いまのうちに書き直せ
で、その時間がないという場合は、配列をキューとみなして使う
a.shift
b.shift
puts "A"
a.shift
puts "B"
b.shift
a.shift
puts "C"
b.shift
0378デフォルトの名無しさん
2008/12/11(木) 17:47:211.8ならGenerator、1.9ならEnumeratorがそんな感じだけど
推測するにEnumerable#zipで十分なんじゃないかな
[1,2,3].zip([4,5,6], ["A","B","C"]) {|ary| puts ary }
0379デフォルトの名無しさん
2008/12/11(木) 17:47:42継続とかcall/ccとかコルーチンとかだっけ。
require 'generator'
g = Generator.new([1,2,3])
g.next
0380デフォルトの名無しさん
2008/12/11(木) 17:50:280381デフォルトの名無しさん
2008/12/11(木) 18:02:39!は「破壊的」という意味ではない。
!の意味は、それが付かない同名メソッドと比較して、注意すべき挙動の違いがある、という意味。
0382デフォルトの名無しさん
2008/12/11(木) 18:17:24二種類提供する場合のみってことか。サンクス。
ttp://shugo.net/ruby-codeconv/codeconv.html
>破壊的なメソッドと非破壊的なメソッドの両方を提供する場合、
>破壊的なメソッドには`!'を付ける。
ttp://www.ruby-lang.org/ja/man/html/FAQ_A5E1A5BDA5C3A5C9.html#a5.2e12.20.c7.cb.b2.f5.c5.aa.a5.e1.a5.bd.a5.c3.a5.c9.a4.c8.a4.cf.b2.bf.a4.c7.a4.b9.a4.ab
>同名のメソッドがあって、一方はオブジェクトのコピーを作って返し、
>もう一方は変更されたオブジェクトを返すようになっている場合、
>!のついた方が破壊的メソッドです。ただし、!がつかないメソッドの中にも
>String#concatのように破壊的なものはあります。
0383デフォルトの名無しさん
2008/12/11(木) 18:52:51ありがとうございます。
Rubyは初心者ですが、頑張って使いこなせるようになりたいです。
0384デフォルトの名無しさん
2008/12/11(木) 19:45:42正規表現まちがってる。
>from = /[a-z]+(¥d_¥-])+¥.txt$/
from = /[a-z]+([¥d_¥-]+)¥.txt$/
あるいは
from = /¥w+([-_¥d]+)¥.txt$/
とか。[a-z]+ はたぶん ¥w+ で済むんじゃないか。
>>372
十分 Ruby らしいと思うけどね。負け惜しみだと思うよ、>>368-370は。
0385デフォルトの名無しさん
2008/12/11(木) 19:59:40Rateというクラスをインスタンスにして配列にしたいのですが、
@rates = Array.new(Rate.new)
と書くと、
can't convert Rate into Integer
というエラーメッセージが帰ってきて配列に出来ません。
どのようにすれば、インスタンス化したクラスを配列に出来るのでしょうか?
0386デフォルトの名無しさん
2008/12/11(木) 20:04:42http://www.ruby-lang.org/ja/man/html/Array.html#Array.2enew
newの第一引数は整数か配列。
というわけで
@rates = [ Rate.new ]
0387デフォルトの名無しさん
2008/12/11(木) 20:06:10$は文字列末尾じゃないぞ。
0388デフォルトの名無しさん
2008/12/11(木) 20:15:42これを無視しないようなオプションとかありますか。
コード:
['A','B'].zip([1,2,3,4]) {|c, i| puts "#{c}, #{i}" }
結果:
A, 1
B, 2
希望:
A, 1
B, 2
nil, 3
nil, 4
0389デフォルトの名無しさん
2008/12/11(木) 20:20:23[1,2,3,4].zip(["A","B"]).map{|i| i.reverse}
0391デフォルトの名無しさん
2008/12/11(木) 21:18:17やっぱまだ EUC-JP? サンプルの日本語の puts のデフォルトを UTF-8 にしたいんだけど…
0392デフォルトの名無しさん
2008/12/11(木) 21:36:58本当、端末の文字コード何とかならないかな
文字化けが不便なためにrspecのit 〜を日本語で書けない
0393デフォルトの名無しさん
2008/12/11(木) 21:52:54puts html.scan(/<title>(.+?)</title>/)
では不足なんだよね
このあとに .toeuc とか .toutf8 とか書かないと化ける
化けるならまだしも、変なエスケープシーケンスがどうたらで方向キーとかが動作しなくなる
端末リセットしても直りゃしねえ
0394デフォルトの名無しさん
2008/12/11(木) 21:53:59>>373
ありがとうございます。
split(/<.+?>/) の前にgsub(/<[^\/].[^>]*>/,"")をかませたらいい感じになりました。
splitの指定が正規表現できるとは初めて知りました。
0395デフォルトの名無しさん
2008/12/11(木) 21:54:45日本語EUCでもUTF-8でも半角2バイト文字でもてきとーに表示するのが端末の仕事だろ
一緒に化けてどうする
0396デフォルトの名無しさん
2008/12/11(木) 22:41:16無茶言うなよ……。一度エンコーディング自動識別のコード書いてみろ、絶望的な気分に浸れるから。
0397デフォルトの名無しさん
2008/12/11(木) 22:47:010398デフォルトの名無しさん
2008/12/11(木) 22:50:00inspectでお茶濁していいんじゃない?
どのみちその程度の文字コード知識はないとHTMLなんて扱えないから
説明が必要になるでしょ。
0399デフォルトの名無しさん
2008/12/11(木) 22:56:38JIS, SJIS, EUC-JP, UTF16 自動認識。
0400デフォルトの名無しさん
2008/12/11(木) 23:01:48nkf 自動認識が失敗したらなにか出力バッファに対して再試行できる仕組みにしてさ
Emacs が 文字コード指定して開き直せるのと同じような感じで
こういうときは us-ascii で済んでる人間が憎いなあ
0401デフォルトの名無しさん
2008/12/11(木) 23:21:56どんなデータでもその自動認識が正しく動作するならおまえは天才だ
0402デフォルトの名無しさん
2008/12/12(金) 01:25:25ありがとうございます。
でもこの場合、引数のほうが長ければ>>389のようにする、ということですよね。
そういうのが面倒だったので、zipにオプションがないかなーと思って質問してみました。
ないようならあきらめて>>389のようにします。
0403デフォルトの名無しさん
2008/12/12(金) 02:19:09先頭の要素が不足する配列って、明示的にnil入れてあることが多いしね。
zipが複数の配列を引数に取ることを思い出して作り替えてみた。
眠いから間違ってるかも。
def Array.zip2(*ary)
size = ary.map{|i| i.length}.max
top = ary.shift.dup
top[size-1] = nil
if block_givin?
top.zip(*ary){|a| yield a}
else
top.zip(*ary)
end
end
0404デフォルトの名無しさん
2008/12/12(金) 02:31:14やっぱ間違ってた、self使ってないorz
def zip2(*ary)ということでひとつ・・・。
0405デフォルトの名無しさん
2008/12/12(金) 02:36:23gsubの結果を1つの変数にまとめてgsubにかけようとしたら、
aa = bb.scan(/.+/)
*as = aa
cc = as.gsub(/m/,"")
こんな感じにしても「配列Array」だといわれてエラーで止まってしまいました。
0406デフォルトの名無しさん
2008/12/12(金) 02:37:05scanの結果を1つの変数にまとめてgsubにかけようとしたら、
0407デフォルトの名無しさん
2008/12/12(金) 03:16:270408デフォルトの名無しさん
2008/12/12(金) 07:11:21joinでいいような。
['aaa', 'bbb', 'ccc'].join #=> "aaabbbccc"
0409デフォルトの名無しさん
2008/12/12(金) 07:12:170410デフォルトの名無しさん
2008/12/12(金) 07:37:25aa = bb.scan(/.+/){|match| match.gsub(/m/,"")}
0411デフォルトの名無しさん
2008/12/12(金) 12:39:250412デフォルトの名無しさん
2008/12/12(金) 12:59:520413デフォルトの名無しさん
2008/12/12(金) 13:04:54Ruby側が修正されるかライブラリ側が修正されるかするまで全く動作しないとかいうのは
ただ利用したいだけの一般ユーザーの身ではやってられん
が、開発とか覗いてみたいなーと考えてる人なら、1.9上で動かしてみてエラーのレポートとかしてみるといいかも
1ヶ月くらいじーっとROMってれば雰囲気はわかるしさ
0414デフォルトの名無しさん
2008/12/12(金) 13:05:51いやいや、rc2なんだから使ってもらうべきだろ。
0415デフォルトの名無しさん
2008/12/12(金) 13:06:24一つの変数には一つのオブジェクトしか入れられない。
だから複数のオブジェクトを入れられる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お前のような奴がいるからFirefoxは
0417デフォルトの名無しさん
2008/12/12(金) 13:22:09SEGVが出た時点でエラー情報送信ウィンドウが出るくらいじゃないと開発者以外に勧めたらあかんと思う
0418デフォルトの名無しさん
2008/12/12(金) 13:35:430419デフォルトの名無しさん
2008/12/12(金) 13:59:05dumb端末で使ってるやつもいるんだぞ!
0420デフォルトの名無しさん
2008/12/12(金) 14:03:05本当? ふつう端末エミュレータかコンソールじゃないの?
今どきシリアル端末なんて管理者だって使わないだろ。
つうか vt100 だって、ダム端じゃねーぞ。
0421デフォルトの名無しさん
2008/12/12(金) 14:10:07そんなの使ってる人は自力で何とかすると思われ
0422デフォルトの名無しさん
2008/12/12(金) 15:56:530423デフォルトの名無しさん
2008/12/12(金) 16:09:20標準でありそうだが、ないな
というか時間オブジェクトってないよね
Time::Period クラスとかになるのかな
0424デフォルトの名無しさん
2008/12/12(金) 16:16:30難しく考えなくても、Time.at(44133)のTimeオブジェクトからhms拾えばおk。
0425デフォルトの名無しさん
2008/12/12(金) 16:21:130426デフォルトの名無しさん
2008/12/12(金) 16:23:19Time.at(44133).getgm.strftime("%H:%M:%S")
0427デフォルトの名無しさん
2008/12/12(金) 16:40:140428デフォルトの名無しさん
2008/12/12(金) 16:51:05どうしようもないな
日の部分が1を超すかどうかをチェックするしかあんめえ
0429デフォルトの名無しさん
2008/12/12(金) 16:54:140430デフォルトの名無しさん
2008/12/12(金) 16:57:59>>408
>>410
joinで解決しました。ありがとうございます。
aa = bb.scan(/.+/){|match| match.gsub(/m/,"")} もいいですが、今一ブロック処理って理解しきれない部分があって。
0431デフォルトの名無しさん
2008/12/12(金) 17:02:03勉強してみます。ありがとうございます。
0432デフォルトの名無しさん
2008/12/12(金) 19:18:43そのオブジェクトが GC されるタイミングでその File オブジェクトは close される?
0433デフォルトの名無しさん
2008/12/12(金) 19:22:38GC のタイミングで close する
finalizer のようなことをする方法があれば教えてください。
0434デフォルトの名無しさん
2008/12/12(金) 19:30:47http://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:48http://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ありがとうございます。
明示的に 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自分が一から設計するならそうしたいんですけどね。
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:310442デフォルトの名無しさん
2008/12/12(金) 20:42:56ということで、この場合は勝手に消していいと思う
obj.open だけして放置する人がいたのなら、それはその人が悪いんじゃないかな
0443デフォルトの名無しさん
2008/12/12(金) 20:48:32ど田舎富山DQN男の家族消えろ ど田舎富山DQN男の親消えろ ど田舎富山DQN男の子供消えろ ど田舎富山DQN男の親戚消えろ
ど田舎富山DQN男の家族消えろ ど田舎富山DQN男の親消えろ ど田舎富山DQN男の子供消えろ ど田舎富山DQN男の親戚消えろ
ど田舎富山DQN男の家族消えろ ど田舎富山DQN男の親消えろ ど田舎富山DQN男の子供消えろ ど田舎富山DQN男の親戚消えろ
ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・) ニヤニヤ(・∀・)
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね 苦しんで死ね
死ぬとき このレスの事思い出してから地獄へ行けよ
ニヤ(・∀・)ニヤ(・∀・)
0444デフォルトの名無しさん
2008/12/12(金) 20:59:19OSで関連付けされたアプリケーションで開きたいのですが、
どうすればよいでしょうか。
一種のとして使いたいのです。
0445デフォルトの名無しさん
2008/12/12(金) 21:06:56Windowsなら、start が使えるはず
system('start hoge.txt')
cmd.exe の内部コマンドなので注意
0446デフォルトの名無しさん
2008/12/12(金) 21:14:40> 何か良い方法ありますかね?
腐った設計を見直すのが一番いい方法だな
>>444
start とか open とか、そのOSで用意されてるコマンドを使う
0447デフォルトの名無しさん
2008/12/12(金) 21:15:44できました!
なんという素早く的確なレス!
本当にありがとうございます。ありがとうございます!
0448デフォルトの名無しさん
2008/12/12(金) 23:47:41作ろうとしているのですが、
テンプレートとなるHTMLを別に用意して
その中の項目などを置き換えて
最終的に表示を行いたいと考えています。
Amrita2 というライブラリが良さげなんですが
サンプルなどが少ないんですよね。
(メインのページ?が404で見れない)
他に、同様な機能を持ったライブラリで
お勧めなどはありますでしょうか。
0449デフォルトの名無しさん
2008/12/12(金) 23:56:170450デフォルトの名無しさん
2008/12/13(土) 00:08:10Tenjin ってのが速いらしいけど、使ったことないから別にお勧めってわけでもない。
http://www.kuwata-lab.com/tenjin/
0451デフォルトの名無しさん
2008/12/13(土) 07:29:20俺のオススメはTenjinだけど
この辺のライブラリはかなり数があるので、いくつか試して目的に合った奴を使うと良いんじゃないかな
Rubyist Magazine最新号あたりの記事も参考に
ちなみに普通のCGIアプリで使うなら、Amrita2はRubyGemsとHpricotを使っているためオススメできない
(というか普通のレンタルサーバ環境ではまず動かない)
amrita-alteredの方が良いと思う。ただし動作がかなり重いことには注意
■ このスレッドは過去ログ倉庫に格納されています