Ruby 初心者スレッド Part 27

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2009/05/15(金) 08:02:23
>>951
宣伝乙
953デフォルトの名無しさん:2009/05/15(金) 09:34:05
>>949
Google の検索では凍結されたページが上位に来るのは問題だね。
るりまに転送とかできないのかな。
954デフォルトの名無しさん:2009/05/15(金) 09:34:45
Googleさんに菓子折でも持って行けばやってくれるんじゃね?
955デフォルトの名無しさん:2009/05/15(金) 09:47:06
単純にリダイレクトしたら。
956デフォルトの名無しさん:2009/05/15(金) 10:51:57
ここにいる全員のドキュメント嫌いも相当なものですな
957デフォルトの名無しさん:2009/05/15(金) 11:08:32
ソースがドキュメントでテストが仕様書
958デフォルトの名無しさん:2009/05/15(金) 12:00:13
>>953
そういうこと言うとRubyユーザーはHTTPも知らないとか思われそうなのでやめてくれ
959デフォルトの名無しさん:2009/05/15(金) 13:35:24
sinatra で

require 'rubygems'
require 'sinatra'

get '/' do
"hello"
end

とだけの場合、/test や /xxx みたいに定義されていない URL を叩かれるとエラーになるけど、
その場合は「ページが存在しないよ」と出すにはどうしたらいいでしょうか。
960デフォルトの名無しさん:2009/05/15(金) 15:36:26
>>959
これぐらい見ろよw
http://www.sinatrarb.com/intro.html
961デフォルトの名無しさん: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デフォルトの名無しさん:2009/05/15(金) 16:38:08
>>962
そのリンク先の
>○シンプルタイマー(ソースコード)
がほぼそのまんま答えなんだけどな。

というか「作りたいと思っています」なら、動かないものでいいからコード書いてみ。
添削はするし、わからない部分は具体的に聞いてくれれば答えるから。
ちなみに4行で書ける。
964デフォルトの名無しさん:2009/05/15(金) 16:49:05
>>962
猫のモフモフ・・・
965962: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デフォルトの名無しさん:2009/05/15(金) 17:21:23
>>965
何回で止めるっていう条件が出てなかったしね。
while
sleep 3
puts "3sec"
end

ちなみに分岐が一文だけならこういう書き方もできることを覚えておいて。
break if count > 10
967962&965:2009/05/15(金) 17:32:02
>>966
有難うございます。
sleepってメソッドだったのですね。
968デフォルトの名無しさん:2009/05/15(金) 19:43:00
>>956
書くのも読むのも好きですが何か
969デフォルトの名無しさん:2009/05/15(金) 19:58:36
CRubyがMRIだから松本さんが開発されたのかと思ったのですが、
検索でトップにくるのはGCを作成している方です。
Rubyの開発とはGCを開発することなのでしょうか?
970デフォルトの名無しさん:2009/05/15(金) 20:03:02
最近の言語全般で強ち間違ってないような気もするが、多分そういう話でもないんだろうな
971デフォルトの名無しさん:2009/05/15(金) 20:09:51
loop {break if count > 10}

上にあるこういう書き方ってRuby的にどうなの?
Integer#timesを使わない理由って何?
972デフォルトの名無しさん:2009/05/15(金) 20:16:29
countが不規則に増えるとか
973デフォルトの名無しさん:2009/05/15(金) 20:19:12
初心者の書いたコードになに嫌味つけてんのw
974デフォルトの名無しさん:2009/05/15(金) 20:26:07
>>971
よう初心者
975デフォルトの名無しさん:2009/05/15(金) 20:26:08
>>969
マジレスすると、一般的にCRubyとは言わず、単にrubyと呼ぶことの方が多いからそうなる
976デフォルトの名無しさん:2009/05/15(金) 20:27:08
モノ教えるのに幾許かでも慣れてないとこういう時困るよな
977デフォルトの名無しさん:2009/05/15(金) 20:32:11
まあ少子化だしな

関係ねえか
978デフォルトの名無しさん:2009/05/15(金) 20:38:50
>>966 == >>973 == >>974
よう初心者!
979デフォルトの名無しさん:2009/05/15(金) 20:59:28
すみませんでした。
980デフォルトの名無しさん:2009/05/15(金) 20:59:52
めんどくせえ

>>1-1000
よう初心者!!
981デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2009/05/16(土) 09:47:20
Rubyで次のコードが何故かできません。
超初心者です。

http://codepad.org/BEAGq3lE
985デフォルトの名無しさん:2009/05/16(土) 09:54:12
>>984
Rubyに関するまとまった初心者向けの解説サイトまたは書籍を通読しろ
単に基礎知識が足りない
986デフォルトの名無しさん:2009/05/16(土) 09:57:09
わかりました。ありがとうございます。
987デフォルトの名無しさん:2009/05/16(土) 09:57:16
Rubyだけに関する知識じゃなくて、
もっと一般的にプログラミングで使用される基礎的な概念に関する知識だな。
988デフォルトの名無しさん:2009/05/16(土) 10:03:46
>>984
グローバル変数は $x と書く。
989デフォルトの名無しさん:2009/05/16(土) 10:11:32
Ruby 初心者スレッド Part 28
http://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デフォルトの名無しさん:2009/05/16(土) 10:57:49
いやそこまでギリギリじゃないから
993デフォルトの名無しさん:2009/05/16(土) 11:17:41
あれw
1000!にだまされた
994デフォルトの名無しさん:2009/05/16(土) 13:57:06
1000なら今年Ruby2.0
995デフォルトの名無しさん:2009/05/16(土) 14:02:46
こんなスローなスレでそんなことしてもw
996デフォルトの名無しさん:2009/05/16(土) 14:08:34
1000ならRubyは俺のもの
997デフォルトの名無しさん:2009/05/16(土) 14:15:50
エッチでリッチなかーちゃん、Rubyをせしめてフランスへ。
998デフォルトの名無しさん:2009/05/16(土) 14:38:42
とうきょう ルビルビ リズム ルビルビ
心ズキズキわくわくー
999デフォルトの名無しさん:2009/05/16(土) 16:00:01
>>1000なら今のシステムをSinatraで置き換える
1000デフォルトの名無しさん:2009/05/16(土) 16:02:22
10^3
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。