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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
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を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。