[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 14:15 / Filesize : 278 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 27



1 名前:1様 [2009/04/02(木) 09:42:23 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

   【Ruby1.9.1 は従来版とは別物であり、書籍や解説やライブラリのサポートがまだありません】
   【自力で解決できない壁で悩むことのない最新安定版の Ruby1.8.7 での学習をお勧めします】
    ※1.8.7 は 1.8 系と 1.9 系の橋渡しをするためのリリースで、1.9 系 の便利新機能の一部が利用可能です
    ※ただし 1.8.6 より安定しているとはまだ言えないので、安定性を第一とする用途には 1.8.6 をどうぞ

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。

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

862 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 09:00:24 ]
>>852
858や859のように、Windowsをバカにする人間が一定の割合いることが悪い点
あとは……プリコンパイルができないことぐらいかな

863 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 10:02:09 ]
windowsをバカにされてムキムキする奴は情報処理から手を引いた方がいいよ

864 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 10:15:29 ]
CUIからアプローチしたWindowsはヘボいという事実を認められない人はいないほうが平和だったりする

865 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 10:20:32 ]
WindowsでRuby使う人は言語のためにOS選んでるわけじゃない
逆に特定の言語使うためにプラットフォームを選択しろとか理解しがたい

866 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 10:31:32 ]
Windows使いたかったらPython行け

867 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 10:46:12 ]
そのへん Java は使いやすいと思う

c:\\ とか c:/ とか書いても動くし、/usr/local/hoge みたいなファイルを開くと、
勝手が c: だったら、c:\usr\local\hoge を開いてくれるし。

868 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 11:34:38 ]
>>867
同じ事できたよ ruby 1.8.6 (2008-03-03 patchlevel 114) [i386-mswin32]

puts File.read('/cygwin/home/myname/test.txt')
#=> テキストの内容が出力される

869 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 11:47:27 ]
>>851
> 最近のruby-1.9.2 headはsolarisでビルドすると Dir.glob("/**/")で死ぬから困る
kwsk

870 名前:852 mailto:sage [2009/05/12(火) 12:59:47 ]
なんかRubyって、Winsowsと相性が悪いみたいですね。
というか、Win7が出るのでさらに混沌とするのかな。




871 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 13:20:10 ]
でも個人的には、Windows XPでRuby使ってて>>862以外に困ったことはないなー
今はパスの問題だってそうそう起きないし
(Vistaではまた違うのかもしれないが)

>>868
知らなかった……いつから絶対パス指定ができるようになってたんだ

872 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 13:35:29 ]
>>871
> 知らなかった……いつから絶対パス指定ができるようになってたんだ
大昔からできるよ。
そもそもruby内部で/と\を変換したりしてるわけじゃなくて、元々APIレベルでは
どちらでもアクセスできる。


873 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 13:41:07 ]
WindowsはPowerShellがあるからな。
Rubyの出番はもうない。

874 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 13:48:59 ]
kogaidan 「ご愁傷さまです。UNIXなどを知ってしまうと、あまりにムカつくことが多いよ。
タダならともかく、Windowsを使うくらいなら、Mac OS XやUbuntuでもいいんじゃないのかな。」

875 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 15:04:25 ]
PHP を使えば大丈夫

876 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 20:06:11 ]
LinuxのGUIはWindowsのCUIと同じくらいむかつくのは事実

877 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 20:47:02 ]
めんどくさかったので spec から書かずに従来どおりにスクリプト作ったら、
ある時期からスクリプトがどんな構造してるのかさっぱしわからなくなった

878 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 21:09:17 ]
>>876
LinuxのGUIはWindowsのCUIと同じくらいオマケ機能と思えばどうということはない

879 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 21:23:16 ]
Fusion楽しめればそれでいい

880 名前:デフォルトの名無しさん [2009/05/12(火) 21:25:46 ]
今日もキューブをまわすお( ^ω^)



881 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 21:34:26 ]
>>871
> 今はパスの問題だってそうそう起きないし
ファイル名に♥とか特殊な文字が入ってなきゃおきないけど、問題に直面したら現状回避不可能なのは問題だ。
結局このためだけにPython使ったりとか、悲しいじゃないか。

882 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 21:43:24 ]
というか、なんで Windows で無理して Ruby 使うんだろ。
適材適所という言葉を知らんのじゃないか?

883 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 21:47:07 ]
かといってPowerShellをわざわざ憶えるのはまんどくせ
Pythonだって別にベストフィットってわけでもなかろうし

884 名前:デフォルトの名無しさん [2009/05/12(火) 21:51:39 ]
だが現役シェルの中でPowerShovelが一番最強!(たぶん・・・)

885 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 21:52:38 ]
そこでIronPythonですよ

886 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 21:52:47 ]
Linux なり何なりをメインに使っていて、たまに Windows を使うというのなら、
他の言語を覚えるのは「まんどくせ」なのだろうが、Windows を使う機会の方
が多いんだったら、Ruby 以外を覚えて使ったほうがいいと思うけどね。

887 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 21:55:47 ]
どのOSでも使えるのがスクリプトのメリットだろ

888 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 21:57:39 ]

> どのOSでも使えるのがスクリプトのメリットだろ
> どのOSでも使えるのがスクリプトのメリットだろ
> どのOSでも使えるのがスクリプトのメリットだろ
> どのOSでも使えるのがスクリプトのメリットだろ


889 名前:デフォルトの名無しさん [2009/05/12(火) 21:59:15 ]
・・・w

890 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 22:00:19 ]
そんなメリットは聞いたことがないわ



891 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 22:01:14 ]
俺、北千住で聞いたことあるよ

892 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 22:06:14 ]
Windowsしか使わないならVisualBasicがおすすめ
VisualStudio,MS-Office,WSH,etcetc
VBが役に立たない場所は無い
逆にプラットホーム非依存なら日本語の扱いが楽な言語がいい
個人的にはjava,rubyがおすすめ

893 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 22:09:12 ]
なんでいまさらVB・・・C#でいいじゃん

894 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 22:11:03 ]
必要があってならともかく無理してまでプラットホーム非依存なんてことを
考える必要なんてないじゃん、という話の流れだと思うけどね。


895 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 22:11:42 ]
コンパイルやらポリシーやらXMLやらでいきなりやる気90%減

896 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 22:23:04 ]
なんかくだらない
RubyやPythonやってるのにプラットフォーム気にすること自体ナンセンスだと思う

897 名前:デフォルトの名無しさん [2009/05/12(火) 22:25:16 ]
しかし全くプラットフォームを意識せずにプログラミングできるかというと、そうでもない。

898 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 22:29:44 ]
どうせ依存しなけらばならないのなら,
より適したものを使おうというのは自然な発想

899 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 22:44:23 ]
>>882
そりゃLinux文化から生まれた言語だし、Windowsが二の次なのは分かってるよ。でも
> なんで Windows で無理して Ruby 使うんだろ
とか本気で言ってるのか?
WindowsユーザーがRubyを好きで、できるだけ楽しくプログラミングしたいと思うのは
そんなに奇妙なことなのか?

900 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 22:49:46 ]
本人が好きで楽しいと思ってるんだったら使えばいいんじゃないの?

滝に打たれる苦行を楽しいと思い、喜んでやる人もいるわけで。
そんなのその人の勝手。

その姿を見て、変なやつ、と思い感想を述べるのは見てる人の勝手。



901 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 22:55:51 ]
compizこそおまけ機能。OSインストールしたら速攻オフだろ、jk

>>899
禿堂

902 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 23:46:05 ]
何故にこの流れの中で compiz?
素でわからん。

903 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 23:47:47 ]
WindowsでRuby使っているが、ファイル名以外はそんなに困らんような…。
(webアプリはテストだけで、デプロイは動かすLinux鯖だったりするし…)

>>899
不用意に煽ってるだけだから、つられなさんな

Linux板とかmac板とか見ればわかるけど、不用意にWindowsユーザーを煽るというか、
何故か選民意識みたいなものがあるみたいなのでスルー推奨

904 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 00:14:16 ]
>>835
いまさらだけどHash#defaultを使って欲しかったので…
path = './'
counts = {}
counts.default = 0
Dir.foreach(path) do |filename|
  counts[$1] += 1 if filename =~ /\.([^.]+?)$/
end
p counts


905 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 06:21:06 ]
教祖がデビアン使いの時点で選民思想だしなあ。
大多数が使ってるウィンドウズは非サポート。
マクは論外。あそこの教祖は癌らしいから余命わずかでしょ。

javaも漢字コードとか環境依存だからなんとも。おらに買収されちゃったし。

906 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 08:00:00 ]
おらって書かれるとオライリーに思える

907 名前:デフォルトの名無しさん [2009/05/13(水) 09:31:48 ]
>>884
www.powershovel.co.jp/

908 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 10:56:57 ]
>>837
> バグなら報告すればいいだろ
redmine.ruby-lang.org/issues/show/1168
これのことかも

909 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 13:33:07 ]
rubyなんて所詮は新興宗教の公用語。
教祖の気まぐれで仕様が変わる。

付き合ってらんねー。

910 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 14:57:37 ]
>>909
公開されてから仕様が追加、修正、廃止されなかった言語ってのを挙げてくれよ
今日中で頼む、知名度の低い言語はカンベンな



911 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 15:34:14 ]
909 じゃないけど、
Java の JCP や Python の PEP みたいなのあってもいいかもなーと思うときがある。
個人的に Ruby は不要だけど Rails にはほしいかも。

912 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 15:53:27 ]
RCRというのもあったぞ。
今ならredmine.ruby-lang.org経由で[Feature]かな。

913 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 18:48:08 ]
rspecで「この describe を一時的にテストから外す」ってできない?
重いテストや遅いテストがあって、そこは一旦外しておきたいんだけれども

914 名前:デフォルトの名無しさん [2009/05/13(水) 19:54:45 ]
Rubyは仕様が文書化されておらず、
「ときどき各処理系の開発者がメーリングリストで
まつもとさんに確認している状態」(前田氏)という。
またバグか仕様かはまつもと氏にしか分からないこともあり、
「しかも言ってることが時々変わっている(笑)」という。
前田氏は「ソースコードがドキュメントだ。バグも 完全に記述されている」
というまつもと氏のハッカーらしい発言を引用して苦笑いする。

ttp://www.atmarkit.co.jp/news/200809/11/ruby.html

915 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 21:52:36 ]
>>913
つ pending
と思ったが、example(it)じゃなくてexample group(describe)のほうかぁ。

https://rspec.lighthouseapp.com/projects/5645/tickets/790-add-pending-group-support

まだないみたいだねぇ。


916 名前:デフォルトの名無しさん [2009/05/14(木) 01:08:13 ]
WinXPでruby1.8.6を使っています。

ファイルを開くときの File.open('out.txt', 'w') {|f| の
|f| はどういう意味なのでしょうか?
調べましたが分かりませんでした。


917 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 01:30:07 ]
>>916
ブロックの仮引数。

def callback(f)
のみたいなもん。

918 名前:デフォルトの名無しさん [2009/05/14(木) 02:19:22 ]
>>917
さんきゅう。


919 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 02:28:53 ]
いかん・・・Ageてしまった。


920 名前:デフォルトの名無しさん [2009/05/14(木) 03:43:12 ]
質問です。
Rubyでミリ秒単位の値は得られないのでしょうか?
ttp://www.namaraii.com/rubytips/ などでも秒までです。

0.01秒単位のストップウォッチはRubyでは無理なのでしょうか?




921 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 04:04:25 ]
Time オブジェクトを to_f すればとりあえず用は済むと思われる
irb> Time.now.to_f
1242241404.3147
irb> t = Time.now; puts t.strftime("%Y年%m月%d日 %H時%M分%S秒#{t.usec}")
2009年05月14日 04時03分25秒893515

ただ、ごく一般論としては、スクリプトでミリ秒を計るのはあまり意義のあることではないんじゃないかな

1000.times {|n| print "\r残り時間:%3i/1000"%n; $stdout.flush; sleep 0.01 }


922 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 06:40:42 ]
処理系依存だしなあ。厳密じゃないし。

923 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 08:53:51 ]
かなりどうでもいいんだけども、個々のデータ data の内容を適切にまとめてあるハッシュ results があって、
それに新規の key => value を1ペア追加するてきとーなメソッドを作りたいんよ

def new(data)
 …
 return {key => value}
end

results.update(new(data))



def add_to(h, data)
 …
 h[key] = value
end

add_to(result, data)

ってどっちがフツーっぽいかな

924 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 09:01:06 ]
そもそも

 change_obj(obj, data)

はあまり好きじゃない

 obj = obj + scan_new(data)

の返り値再代入(に準ずるように見える処理)が好みだ
ということで前者おすすめ
キーを指定する形式に比べたら明らかに処理が遅いはずだが気にしたら駄目だ

925 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 09:25:25 ]
resultsをハッシュじゃなくResultsとか新しいクラスにしちゃって
Results#[]=でペア追加するのがRubyっぽい気がする
使うときにはto_hash

926 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 11:45:23 ]
多少のことではそういうことをしなくて済むように組み込みコレクションが機能的なのがRubyのいいとこなんじゃないのか
や、もしかしたらあちこちで使い倒されまくるハッシュでクラスにするのが妥当なのかもしれないが、
普通はハッシュで済むならハッシュのままだろ

927 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 12:45:57 ]
ini.path = "c:/test"
p ini.path

を内部的に
ini.write("settings", "path", "c:/test")
p ini.read("settings", "path")

に置き換えるようなのって出来ますかね。
メソッド名がなかったらコールバック的に呼ばれる機能があったようななかったような。

928 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 13:25:53 ]
そう動作するように書けばいいじゃん

def path=(s)
 write('settings', 'path', s)
end
def path
 read('settings', 'path')
end


929 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 13:29:20 ]
> メソッド名がなかったらコールバック的に呼ばれる機能があったようななかったような。

method_missing

930 名前:デフォルトの名無しさん [2009/05/14(木) 13:35:23 ]
WinXPでruby1.8.6を使っています。
文字列中の『:』(コロン)の扱いで質問です。

tag0 = "<parm xmlns="ruby_xyz">\n" を実行したときコロンの箇所で 
 syntax error, unexpected tIDENTIFIER, expecting $end

というエラーが出ます。どうしたらよいでしょうか?
目的はtag0と他の文字列Aを組み合わせてできる文字列Bの生成です。




931 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 13:43:14 ]
>>921-922
どうも。一応は出来るみたいですね。
ただ、Javaでも他の言語でも、ミリ秒計測は普通にできるものかと思っていましたので。


932 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 13:50:01 ]
> 文字列中の『:』(コロン)の扱いで質問です。
違います

どの解説にもこれのやり方は載ってるはずなんだが、載ってない解説とかがあったら即晒せ
ダブルクォート「"」を含む文字列を表現するには " の直前に \ を置く

tag0 = "<parm xmlns=\"ruby_xyz\">\n"


933 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 13:52:55 ]
>>930
初心者らしい質問でなぜか安心した

エスケープしない限り「"」が次に出た所で文字列の終わりとみなされるので
tag0 = "<parm xmlns="ruby_xyz">\n"
と書くと,
tag0 = "<parm xmlns=" ruby_xyz ">\n"
と書いてるのと大差無い

エスケープして書くならこうすればいい
tag0 = "<parm xmlns=\"ruby_xyz\">\n"

「"」をエスケープするのが面倒なら %Q を使って
tag0 = %Q!<parm xmlns="ruby_xyz">\n!
とかも書ける 詳しくはマニュアルなど参照のこと

> 目的はtag0と他の文字列Aを組み合わせてできる文字列Bの生成です。
の意味がよくわからないけど,これで解決しただろうか

934 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 15:08:03 ]
>>931
言語に関係なくミリ秒の計測はソフトウェア上では正確にはできません
ハードウェアによる直接のサポートがどうしても必要

935 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 15:14:15 ]
>>932,933
有難うございます。エスケープ文字列の問題だったのですね。
エラーの指摘箇所がコロンのところだったので、てっきりこの文字が原因だと思っていました。


936 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 15:43:30 ]
>>935
エラーメッセージが教えてくれるのは転んだ場所でしかなくて
躓いたりぶつかったりの転ぶ原因は大抵別の場所にある。

遠く離れた場所で怪我してたから転んだなんてこともあるぐらい。
ありがちなのは想定外のオブジェクトに化けているパターン。
obj = ["hello,", "world"]
obj = "!" # 本当は obj << "!"

puts obj.join # ここでNoMethodError

937 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 16:08:18 ]
文字列処理で質問です(ruby1.8.6)

日付と時刻を文字列化し、その末尾を2桁づつ抽出したいのですが、
片方で4桁になってしまいます。

nowTime = Time.now.strftime("%Y%m%d_%H%M%S") # 現在の日付と時刻
timeLen = nowTime.split(//).size # 上の長さ
value01 = nowTime[timeLen-4, timeLen-3] # nowTimeの末尾4文字目と3文字目 ← ※4桁になる
value02 = nowTime[timeLen-2, timeLen-1] # 同様に1文字目と2文字目
p value01+", "+value02 # 2桁づつで表示 ← 実行すると4桁と2桁

どうすべきでしょうか?


938 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 16:17:15 ]
『まつもとゆきひろ コードの世界~スーパー・プログラマになる14の掟』

スーパー・プログラマってのが厨臭いなあ。書き下ろしだそうだから買っちゃうかもしれないけど。

939 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 16:28:51 ]
>>937
そんなんTimeオブジェクトのメソッドで時間とか分とか出せばいいじゃん、というのはとりあえず置いておく
nowTime = Time.now.strftime("%Y%m%d_%H%M%S")
mm = nowTime[-4, 2]
ss = nowTime[-2,2]
puts "#{mm}, #{ss}"


940 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 16:37:47 ]
>>937
最終的に欲しいのは YYYYMMDD_HHMMSS の中の DDSS なんだよな?
リファレンスマニュアルで Time#strftime とついでに String#size,String#[] を調べてこい



941 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 16:43:54 ]
>>939-940
ゴメンなさーい(泣


942 名前:デフォルトの名無しさん [2009/05/14(木) 18:24:50 ]
>>938
宣伝乙

943 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 18:44:39 ]
open-uri で each_line のように一行ずつではなく、
取得した内容全部を一気にごそっと変数に入れるにはどうしたらいいでしょうか

944 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 18:49:24 ]
readで全部読む

945 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 18:51:52 ]
っていうかread以外用途ないよね

946 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 20:13:36 ]
この質問、よくみるね。
www.ruby-lang.org/ja/man/html/open_uri.html
に書き込める人、サンプルよろしく。

947 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 20:15:20 ]
サーバ側がchunkedでだらだら送ってくるのをeach_lineでだらだら処理、とか
できるようになって...るんだろうか?

948 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 20:28:48 ]
>>947



949 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 21:01:35 ]
>>946
そのマニュアル、もう凍結されてるよ
今はるりまに移行してる

950 名前:デフォルトの名無しさん [2009/05/14(木) 22:25:28 ]
>>914
> ドキュメント
> Document

>   matzの苦手なもの。彼は普段から「ソースがドキュメントだ。
>   バグも完全に記述されている」と主張しているが、誰も受け入れない。当り前だ。

・・・w



951 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 07:25:41 ]
>>942
ageてるお前が宣伝マン。

952 名前:デフォルトの名無しさん [2009/05/15(金) 08:02:23 ]
>>951
宣伝乙

953 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 09:34:05 ]
>>949
Google の検索では凍結されたページが上位に来るのは問題だね。
るりまに転送とかできないのかな。

954 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 09:34:45 ]
Googleさんに菓子折でも持って行けばやってくれるんじゃね?

955 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 09:47:06 ]
単純にリダイレクトしたら。

956 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 10:51:57 ]
ここにいる全員のドキュメント嫌いも相当なものですな

957 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 11:08:32 ]
ソースがドキュメントでテストが仕様書

958 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 12:00:13 ]
>>953
そういうこと言うとRubyユーザーはHTTPも知らないとか思われそうなのでやめてくれ

959 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 13:35:24 ]
sinatra で

require 'rubygems'
require 'sinatra'

get '/' do
"hello"
end

とだけの場合、/test や /xxx みたいに定義されていない URL を叩かれるとエラーになるけど、
その場合は「ページが存在しないよ」と出すにはどうしたらいいでしょうか。


960 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 15:36:26 ]
>>959
これぐらい見ろよw
www.sinatrarb.com/intro.html



961 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 16:25:23 ]
>>959

Not Found

When a Sinatra::NotFound exception is raised, or the response’s status code is 404, the not_found handler is invoked:

not_found do
'This is nowhere to be found'
end

とあるね。

962 名前:デフォルトの名無しさん [2009/05/15(金) 16:29:18 ]
WinXPでruby1.8.6を使っています。
一定間隔で動作するオシレーターはどう書けばよいのでしょうか?

調べましたが差分を求める説明が見つからず、下記の記述も未だ理解できないレベルです。
ttp://archive.mag2.com/0000267290/20080803070000000.html

単純に、例えば3秒間隔で「3sec」と出力されるものを先ず作りたいと思っています。
よろしく願います。


963 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 16:38:08 ]
>>962
そのリンク先の
>○シンプルタイマー(ソースコード)
がほぼそのまんま答えなんだけどな。

というか「作りたいと思っています」なら、動かないものでいいからコード書いてみ。
添削はするし、わからない部分は具体的に聞いてくれれば答えるから。
ちなみに4行で書ける。

964 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 16:49:05 ]
>>962
猫のモフモフ・・・

965 名前:962 mailto:sage [2009/05/15(金) 17:08:54 ]
>>963
レス有難うございます。
直後に時刻のエポック秒変換の記述を手元の本で見つけましたので
なんとか動作するコードは書けました(下記)。

# OSC01.rb
count = 0
time0 = Time.now.to_i
while true
if time0 +3 == Time.now.to_i
puts "3sec"
time0 = Time.now.to_i
count+=1
end
#
if count>10
break # 11回以上でwhileループをBreak
end
end

・・・明らかに4行は超えてますw


966 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 17:21:23 ]
>>965
何回で止めるっていう条件が出てなかったしね。
while
sleep 3
puts "3sec"
end

ちなみに分岐が一文だけならこういう書き方もできることを覚えておいて。
break if count > 10


967 名前:962&965 mailto:sage [2009/05/15(金) 17:32:02 ]
>>966
有難うございます。
sleepってメソッドだったのですね。


968 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 19:43:00 ]
>>956
書くのも読むのも好きですが何か

969 名前:デフォルトの名無しさん [2009/05/15(金) 19:58:36 ]
CRubyがMRIだから松本さんが開発されたのかと思ったのですが、
検索でトップにくるのはGCを作成している方です。
Rubyの開発とはGCを開発することなのでしょうか?

970 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 20:03:02 ]
最近の言語全般で強ち間違ってないような気もするが、多分そういう話でもないんだろうな



971 名前:デフォルトの名無しさん [2009/05/15(金) 20:09:51 ]
loop {break if count > 10}

上にあるこういう書き方ってRuby的にどうなの?
Integer#timesを使わない理由って何?

972 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 20:16:29 ]
countが不規則に増えるとか

973 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 20:19:12 ]
初心者の書いたコードになに嫌味つけてんのw

974 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 20:26:07 ]
>>971
よう初心者

975 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 20:26:08 ]
>>969
マジレスすると、一般的にCRubyとは言わず、単にrubyと呼ぶことの方が多いからそうなる

976 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 20:27:08 ]
モノ教えるのに幾許かでも慣れてないとこういう時困るよな

977 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 20:32:11 ]
まあ少子化だしな

関係ねえか

978 名前:デフォルトの名無しさん [2009/05/15(金) 20:38:50 ]
>>966 == >>973 == >>974
よう初心者!

979 名前:デフォルトの名無しさん [2009/05/15(金) 20:59:28 ]
すみませんでした。

980 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 20:59:52 ]
めんどくせえ

>>1-1000
よう初心者!!



981 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 21:02:24 ]
次スレ立てろよカス

982 名前:デフォルトの名無しさん [2009/05/16(土) 04:43:41 ]
ruby1.8.6です。
ファイルアクセスが他のソフトとぶつかる場合で質問です。

Rubyで周期的にXMLファイルを上書きしていますが、この上書きのタイミングと
他のソフトによるXML読み込みが衝突した場合(と思われる時)、
 in 'initialize': Permission denied - new XML.xml (Errno::EACCES)

というエラーメッセージが出ます。
そこでRubyの振る舞いとして、他のソフトがファイルアクセス中は上書きを延期するか、
あるいは別の方法で衝突を回避したく思います。
何か良い方法はありますでしょうか?

なお別のソフト側で衝突回避を試みましたが、上手くいかないためRubyに望みを
託すことにしました。


983 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 04:59:41 ]
Rubyあんま関係ないな
ファイルロック(またはロックファイル)でぐぐれ

たいていの場合両方のソフトが対応してないといけないが、
たいていの場合相手のソフトはそんなもん作ってない

なお、直接

 File.open(path,'w'){|f| f.write(data)}

するのではなく

 File.open(path_v,'w'){|f| f.write(data)}
 File.rename(path_v, path)

と、ファイル移動をOS任せにしたほうがファイル書き込みアクセス衝突の可能性自体は減る
ただし、これだと rename でファイルを掴むまでに起こったディスク上の変更を検知できない

このへんの衝突可能性に気を遣ってるソフトはあらゆる永続的データ保存に「別名保存→名前変更」のプロセスを使ってるので
そのソフトの使ってる別名保存名がわかればもしかしたらロックファイルのように使えるかもしれない

984 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 09:47:20 ]
Rubyで次のコードが何故かできません。
超初心者です。

codepad.org/BEAGq3lE


985 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 09:54:12 ]
>>984
Rubyに関するまとまった初心者向けの解説サイトまたは書籍を通読しろ
単に基礎知識が足りない

986 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 09:57:09 ]
わかりました。ありがとうございます。

987 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 09:57:16 ]
Rubyだけに関する知識じゃなくて、
もっと一般的にプログラミングで使用される基礎的な概念に関する知識だな。


988 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 10:03:46 ]
>>984
グローバル変数は $x と書く。

989 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 10:11:32 ]
Ruby 初心者スレッド Part 28
pc12.2ch.net/test/read.cgi/tech/1242436010/


990 名前:デフォルトの名無しさん [2009/05/16(土) 10:13:56 ]
999



991 名前:デフォルトの名無しさん [2009/05/16(土) 10:15:22 ]
1000!

992 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 10:57:49 ]
いやそこまでギリギリじゃないから

993 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 11:17:41 ]
あれw
1000!にだまされた

994 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 13:57:06 ]
1000なら今年Ruby2.0

995 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 14:02:46 ]
こんなスローなスレでそんなことしてもw

996 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 14:08:34 ]
1000ならRubyは俺のもの

997 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 14:15:50 ]
エッチでリッチなかーちゃん、Rubyをせしめてフランスへ。

998 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 14:38:42 ]
とうきょう ルビルビ リズム ルビルビ
心ズキズキわくわくー

999 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 16:00:01 ]
>>1000なら今のシステムをSinatraで置き換える

1000 名前:デフォルトの名無しさん [2009/05/16(土) 16:02:22 ]
10^3



1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<278KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef