トップページ⇒tech
983コメント375KB

Ruby 初心者スレッド Part 41

■ このスレッドは過去ログ倉庫に格納されています
0001京 ◆SsSSsSsSSs 2011/02/10(木) 13:47:51
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

★注意★ Ruby 1.9.2 は初心者には若干時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
 文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
 迷う点の少ない1.8.7に習熟→おもむろに1.9.2の変更点のみ重点学習、とすればスムーズに移行できるでしょう。

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の 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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0497デフォルトの名無しさん2011/03/20(日) 15:59:56.68
>>496
だから NArray ではご不満ですか
0498デフォルトの名無しさん2011/03/20(日) 19:00:14.35
本当の意味での多次元配列実現したいならクラス作っちゃうかな
0499デフォルトの名無しさん2011/03/20(日) 19:21:54.20
>>498
だ
0500デフォルトの名無しさん2011/03/20(日) 20:19:24.33
雑魚どもが
0501デフォルトの名無しさん2011/03/20(日) 20:57:00.75
ポインタと参照みたいなもんだから
そう刺々しくせずに生温かく見守ってあげてください
0502デフォルトの名無しさん2011/03/20(日) 22:06:39.16
多次元配列ではないというのは単に言葉尻の問題ではなく実際的な脅威
なんでわざわざ同じように間違えるまで放置しなければならないのかと
0503デフォルトの名無しさん2011/03/20(日) 22:19:45.81
いやだってary[0][1]はRuby使いにとってary[0]のそのまた[1]にしか見えないでしょ
どこが実際的な脅威なのか不明
0504デフォルトの名無しさん2011/03/20(日) 22:29:57.66
なんでもいいんだが、Ruby 次元配列 -"NArray" あたりでぐぐったのはほぼ全部
「ary[0][1]はRuby使いにとってary[0]のそのまた[1]にしか見え」てない実例だと思う
0505デフォルトの名無しさん2011/03/20(日) 22:41:55.58
ネストしただけの配列を多次元配列と呼んでいる時点で
「私Rubyわかってませんこれからここで勢いよく躓きますみなさん見ててください」
と言ってるようなもんだろ

m = Array.new(3, [])

と書いてあったら危険なのと同じ
それは違いますそれは動きませんと言ってあげること自体は非難されるべきではない(今回は言い方がアレだが)
なんでニヤニヤ笑いながら手を差し伸べずに眺めて失敗してから先輩風吹かせて「いやーそれはねー」とか言うの
0506デフォルトの名無しさん2011/03/20(日) 22:48:39.13
>>505
先生、それは単に参照とはなんぞやの問題です
多次元配列以前の問題です
0507デフォルトの名無しさん2011/03/20(日) 22:54:52.23
>>505
「ネストした配列は多次元配列ではない」というのは、
それと同様にtrap::Arrayに書かれていてもおかしくないと思う

>>506
たぶんこのレベルの話をしてる
ttp://www.ruby-lang.org/ja/man/html/trap_Array.html
0508デフォルトの名無しさん2011/03/20(日) 22:56:44.90
ていうかこれぶっちゃけバグだよね
誰も得しないだろ
0509デフォルトの名無しさん2011/03/20(日) 23:05:16.65
>>507
まさに参照の問題じゃない
同じオブジェクトを指すという
0510デフォルトの名無しさん2011/03/20(日) 23:17:12.97
うわあバカがいる
配列が出てこない str.gsub(/re/, '\1') とかにしたほうがよかったか
>>505は具体的な配列の動作の話してるわけじゃないぞ
0511デフォルトの名無しさん2011/03/20(日) 23:23:46.56
>>510
誰に言ってるかわからないからアンカつけれ
0512デフォルトの名無しさん2011/03/21(月) 11:48:09.04
>>480
IDEはIDEに慣れた人が使う開発環境だよ
特にRubyのようにIDEの利用者が少ないなら、JavaやC#のようにサクサク使えないのを分かった上でIDEに慣れた人が使うものだと思うよ
もしWindowsでC#やVB.netをvimやemacsで開発する人がいたらちと酔狂だなとは思うかもしれないが、慣れている環境というのを差し引くのは難しいよ

俺の結論も>>475なんだが>>474が初心者なら特に多くの人が使っていない開発環境を積極的に使う理由がないな
趣味でちょっとしたスクリプトを書くのなら何でもいいんだがな
0513デフォルトの名無しさん2011/03/22(火) 09:34:14.49
Windowsギライなジジイの押し付けがましい意見は参考にならない。まで読んだ
0514デフォルトの名無しさん2011/03/22(火) 10:47:09.45
Windows使いはさっさとNetBeans(RDEその他はよく知らないけど使い物になるなら何でもいい)入れとけ。
コード補完+ステップ実行+変数ウォッチできるだけでも開発効率が段違い。

ruby.exe+テキストエディタな環境と排他でもなんでもないから
IDEでパーツ作って残りは従来環境で仕上げてテストする事も普通にできる。

2011年にもなってIDEは是か非かなんてあまりにも不毛すぎるよ。
0515デフォルトの名無しさん2011/03/22(火) 11:22:11.43
5年後も同じ論争やってると思うよ。正解なんてないから。
0516デフォルトの名無しさん2011/03/22(火) 14:45:58.74
Amazonのレビューだと「たのしいruby」はプログラム自体が初めての者には難易度が高いとのことですが
そういった者に向く入門書はないでしょうか
調べてみると「Ruby1はじめてのプログラミング」が良いらしいですがこちらは如何でしょう
0517デフォルトの名無しさん2011/03/22(火) 15:53:07.01
>「たのしいruby」はプログラム自体が初めての者には難易度が高い
くっそー誰だそんなやたらピンポイントに的確なレビューしてる奴は
ttp://www.amazon.co.jp/product-reviews/4797357401/
提供する問題が若干独り善がりであるという指摘は前からうっすらあった
書き換えたの送ったら更新してくれるかなあ

Ruby1ってあれだよねピンクのガゼルの大きいやつ
ttp://www.amazon.co.jp/dp/4798117994/
Rubyの初心者向け薄い本は当人の当たり外れが大き過ぎるので
できれば事前に立ち読みとかしてマッチングしてもらえるとまいっちんぐなことにならないんだが

内容としては普通に初心者向けだと思う
…つまり、下手したら本の半分くらいが自分にとって不要な記述である可能性があるってことだけど
たのしいRubyより前に位置する本であることは保証するよ
1.9に関する記述がなかった気がするが、まあそれは必要になってから上乗せで勉強すればええ
0518デフォルトの名無しさん2011/03/22(火) 17:40:21.14
プログラミング自体の初心者なら

http://www.amazon.co.jp/dp/4873112923 これか
http://www.amazon.co.jp/dp/4798019437 これ
0519デフォルトの名無しさん2011/03/23(水) 11:33:45.48
「天気予報サイトの現在の予報マーク(↓こんなの)を表示するライブラリ」を作り、gem で管理したいです
ttp://i.yimg.jp/images/weather/general/forcast/clouds_sun_st.gif

この画像をローカルにキャッシュしたいのですが、ディレクトリをどこに置いていいのかわかりません
Otenki::Config とかクラスを作って、ユーザが事前に指定しない場合は動作しない、みたいなのがいいんでしょうか

 Otenki::Config.cache_dir = "/home/ch2/otenki/cache" # 必須
 Otenki.new.show

インストール先に勝手に gems/otenkiview-0.1.2/cache/ を作ってそこに一律保存する、みたいなのってよくないですよね?
0520デフォルトの名無しさん2011/03/23(水) 12:11:05.93
>>519
うーん、現在の天気を調べるクラスは別にいいんだけど
画像までライブラリに含むのはどうかと思うなあ
ライブラリ使う人が違う画像を使いたいと思ったらどうするの?
0521デフォルトの名無しさん2011/03/23(水) 12:18:48.81
本来なんて呼ぶのかわからないんだけど、
gems/libname-1.0.0/ のライブラリホームにスクリプトが書き込むのはよろしくないな
パーミッションの関係で書き込めないことが多いし、スーパーユーザーで書き込んだら上書きできない

永続的な設定ファイルとかをどうしようかというのはみんな悩んでるんだけどね
0522デフォルトの名無しさん2011/03/23(水) 12:26:35.20
ライブラリが書き込むディレクトリはユーザーに手動で指定させるしかあんめえ
いつのまにか $HOME/.otenki/cache/ みたいなのを作る糞ライブラリもあるけどな
0523デフォルトの名無しさん2011/03/23(水) 20:18:16.60
インストール時にgemが参照する第三者のリソースもディプロイしたい、
という話ではないのか。
↑なら post_install フックでやりゃいいんだけど。
0524デフォルトの名無しさん2011/03/23(水) 20:33:35.92
cache なので、たぶん

doc = Nokogiri.parse(open(天気予報サイト).read)
yohou_text = doc.at('今日の天気文字列').inner_text
mark_src = doc.at('img/今日の天気マーク')['src']
local_cache = @cache_dir + File.basename(mark_src)
File.open(local_cache, 'w'){|f| f.print(open(mark_src).read)} unless File.exist?(local_cache)

puts <<EOS
<title>今日のお天気</title>
<img src="file://#{local_cache}">
今日の天気は#{yohou_text}です!
EOS

とかやるんじゃないの
で、@cache_dir の初期値をどうしましょうと
ライブラリが共通で使うなら gem インストール時になんか適当に自動で GET すればいいじゃんね
0525デフォルトの名無しさん2011/03/24(木) 01:10:55.51
shareディレクトリとかどう?
Linux使ったことないから、こういう目的にshareを使って良いものなのかどうかわからないけど
0526デフォルトの名無しさん2011/03/24(木) 01:33:01.49
運用状況により容量可変となるディレクトリだから、shareじゃなくて、/var/libじゃね?

ただ、ふと考えてみたら、他のユーザーが使った後にはシステムデフォルトの画像が変わってるかもしれないって、
結構、嫌な仕様じゃね?
0527デフォルトの名無しさん2011/03/24(木) 05:14:06.81
お前らはWebブラウザのキャッシュをログインユーザー全員で使い回す気なのかと小一時間
まあ、そういうような共用読み書きディレクトリの指定方法がないのも確かなんだが
Webのキャッシュって言ったら普通はログインユーザーごとに個別だろ、普通は

意外とこのへんの基本設定のデファクトって固まってないのね
0528デフォルトの名無しさん2011/03/24(木) 05:28:34.06
ユーザーに設定で指定させるのが普通だろ
指定されてなかったらデフォルト使うのではなくエラーで止める

ユーザーが指定しなくても適当にクラスをnewしてgetするだけで
適当にホームにディレクトリ掘って永続保存してあら便利、みたいなのはキモいのでやめるべき
0529デフォルトの名無しさん2011/03/24(木) 09:37:28.58
> 「天気予報サイトの現在の予報マーク(↓こんなの)を表示するライブラリ」

そもそもこれはキャッシュなのか
0530デフォルトの名無しさん2011/03/24(木) 09:43:17.91
いろいろ動作説明が足りないのは間違いないな
てかそこを突っ込んでどうする
0531デフォルトの名無しさん2011/03/24(木) 09:50:57.66
>>530
ライブラリ動作用のユーザーディレクトリ位置なんてうまい固定回答がない分野なので、
初心者スレとしてはもうそこらへん突っ込むしかないのよ
知りませんってレスするわけにはいかないだろプライドとしてw
0532デフォルトの名無しさん2011/03/24(木) 12:09:49.67
どこそこにフォルダを作ってくれって言われただけで思考停止する情弱もいるし
ホームディレクトリに勝手に設定ファイル作るソフト排除してたら何も出来ないよ
俺はユーザの指定が無いならホームに勝手に作っていいと思う派
0533デフォルトの名無しさん2011/03/24(木) 12:37:45.18
少なくとも gem ライブラリを使用するようなユーザーは
プログラミングが可能な程度のPCリテラシ持ちだとみなしてよいでそ
ほとんど存在しないものに対してコストをかけるこことほど間抜けなものもない
0534デフォルトの名無しさん2011/03/24(木) 13:35:56.84
>>532
セキュリティ考えろよカス、ユーザに確認とれメンテ苦労するわ
0535デフォルトの名無しさん2011/03/24(木) 18:55:38.82
2KBの自分用スクリプト書くのに半日ほどかかった
Ruby始めて4年くらいなのだがなんか絶望した
0536デフォルトの名無しさん2011/03/24(木) 21:02:35.45
別に良いんじゃね、自分用なんだしそんな気に病むこともねえべ
0537デフォルトの名無しさん2011/03/24(木) 21:19:58.84
単体テストつきとかなら別にいいんじゃね
無軌道に書いて半日とかはさすがになんかちょっとアレだが
0538デフォルトの名無しさん2011/03/24(木) 21:23:42.74
>>534
セキュリティって何ですか?おいしいの?
>>519のプログラムがセキュリティを確保するにはどうしたらいいの?
0539デフォルトの名無しさん2011/03/24(木) 21:37:41.15
まぁ、ユーザーが自分で掘っていたディレクトリと名前がかぶったら
悲惨だよね。
0540デフォルトの名無しさん2011/03/24(木) 22:47:39.98
テストの話が出てたので

expected ってリテラルのような実際の値で書くべきだよね?

 def arr_change(arr)
  arrを標準メソッドでアレしてコレした配列
 end

に対して

 expected = arrを標準メソッドでアレしてコレした配列
 arr_change(arr).should eql(expected)

というテスト書いても実際的な意味はないですよね

 expected = [741, 332, 93, (中略), 23140, 9847, 30994, 4, 43098]
 arr_change(arr).should eql(expected)

と、若干長いリテラルになったとしても書くべきですよね
0541デフォルトの名無しさん2011/03/24(木) 23:02:24.27
>>538
セキュリティしらないの?
0542デフォルトの名無しさん2011/03/25(金) 00:21:37.34
>>541
知らないな
アプリケーションがホームにディレクトリ掘ったりファイル作ったりするだけで
破綻してしまうようなセキュリティてどんなん
もちろんそのアプリケーションが悪意を持って作られたってんなら話は別だが

>>534
一応言っておくと俺は>>532で「ユーザの指定が無いなら」と前置きしてるんだから
ユーザに確認しなくてもセキュリティが確保できる方法を示してくれよ
人の事をカス呼ばわりするんだからそれくらい出来るだろう?
0543デフォルトの名無しさん2011/03/25(金) 00:30:02.92
どんだけファビョってんだよ
0544デフォルトの名無しさん2011/03/25(金) 00:47:27.54
知らないなら、人を批判する立場ではない
5年後に自分の文章を読んでみろ、カスと呼ばれた意味がわかる
俺は教えない
0545デフォルトの名無しさん2011/03/25(金) 01:03:44.47
セキュリティとか言いたいだけのカスだもんな
知らない事は教えられんわな

せっかくだから俺が>>519のプログラムを作るならこのようにするってのを書いとく
(gemはOSのパッケージシステム使ってて意識した事無いんで考慮してない)
ライブラリの提供する機能は指定場所日時の天気をSymbolやStringで返すだけ。
問題の画像ファイルはそのライブラリを使用するアプリケーションが用意する。
利用者に同じ画像ファイルを使わせるために配布物の中にあらかじめ納めておく。
用意できず他所から持ってくるならインストール時にユーザに確認を取ってからやるか
手動でダウンロードさせる。
各ユーザの設定ファイルでファイルの場所を指定するのも良いだろう。
どっちにしてもキャッシュやセキュリティ等の問題は発生しない。
0546デフォルトの名無しさん2011/03/25(金) 01:07:55.13
インストールというフェイズが存在する gem ライブラリであるというのが
この場合はかなり大きなウェイト占めてると思うんだが
0547デフォルトの名無しさん2011/03/25(金) 01:14:24.04
個人的には妥当な線として

1.ネットワーク上のリソースだろうが、ローカルなリソースだろうか同一メソッドで統一したアクセスを可能にする
2.ローカルリソースはライブラリじゃなくて、アプリ側に準備して貰う(サンプルをドキュメントに添付すれば一応標準リソース)
3.ネットワーク上のリソースアクセスに関しては、トラフィックを減らしたいならプロキシでなんとかして貰う(アプリがローカルに落としても良いが…)

まぁ、全部ライブラリで面倒見ようとするからメンドクサイので有って、可変部分ならアプリ側に任せるのが筋じゃね?
0548Perl忍者 ◆M5ZWRnXOj6 2011/03/25(金) 10:22:27.52
復活させた。なぜ死んだのか 20秒以内前 TweetIrcGatewayから

# あっ、このまま起き続けて死ぬ死んでる 1分未満前 TweetIrcGatewayから

Load Averageがこの時間帯に1くらいまで上昇してた 8分前

DoS食らってる 31分前 TweetIrcGatewayから
0549デフォルトの名無しさん2011/03/25(金) 10:35:37.35
>>546
ライブラリのあるディレクトリにユーザーが書き込みできない可能性が高いからね…
ユーザーが持つべきデータのディレクトリは
ユーザーが明示的に指定するまで使わない/動かないのがいちばんいいような気がする

一般GUIアプリケーションならホームに適当にディレクトリ掘っても許されそうだけど、ライブラリじゃねえ
0550デフォルトの名無しさん2011/03/25(金) 10:36:20.77
初心者が絶えて久しいな
0551デフォルトの名無しさん2011/03/25(金) 14:14:22.53
初心者の質問してよいですか?
  File.readlines(filename)
  IO.readlines(filename)
  File.open(filename).readlines
このようなreadlinesでファイルをよむと得られた配列の要素に改行が含まれるのですがこの動作は想定されたものなのでしょうか?
配列の要素に改行が欲しくないのでつい
  File.read(filename).split("\n")
としていてこれはこれでわかりやすいのですが釈然としません
readlinesは本来はどのような時つかうものなのでしょうか?

ruby 1.9.2-p180です
0552デフォルトの名無しさん2011/03/25(金) 14:49:21.63
line なんだからそりゃ改行つきだろう
行改の直後から行改の直後までが「行」だ

ただ、この正確な動作はあまり直感的ではなく文句がつきまくったので
String#lines という改行抜きで配列にするメソッドが 1.9 と 1.8.7 についた
0553デフォルトの名無しさん2011/03/25(金) 15:11:35.16
チョップすればいんじゃね
0554デフォルトの名無しさん2011/03/25(金) 15:41:59.47
RUBY_DESCRIPTION=> "ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-darwin9]"

# String#lines で Enumerator が返る。
File.read('/etc/passwd').lines.class
=> Enumerable::Enumerator

# Enumerator なのでそのままいろいろ出来る。
File.read('/etc/passwd').lines.grep(/root/).first
=> "root:*:0:0:System Administrator:/var/root:/bin/sah\n"

# 配列でないと出来ないことをやりたい場合は to_a すべし。
irb(main):003:0> File.read('/etc/passwd').lines.shuffle
NoMethodError: undefined method `shuffle'
irb(main):004:0> File.read('/etc/passwd').lines.to_a.shuffle
=> (略)

尚、各行は改行そのまま。不要なら map(&:chomp) する。
0555デフォルトの名無しさん2011/03/25(金) 18:44:23.72
> String#lines という改行抜きで配列にするメソッドが 1.9 と 1.8.7 についた
俺の1.9.2には付いてないみたいだ
0556デフォルトの名無しさん2011/03/26(土) 22:23:11.97
ありがとうございます
そういうものなのですね
chompするなりすることにします
0557デフォルトの名無しさん2011/03/27(日) 10:30:33.33
Loggerってスレッドセーフですか?
0558デフォルトの名無しさん2011/03/27(日) 10:37:04.69
write時に@mutex.synchronizeしてるからスレッドセーフなんじゃね?
0559デフォルトの名無しさん2011/03/27(日) 11:24:54.32
おお、ほんとだ。助かった。
0560デフォルトの名無しさん2011/03/27(日) 11:42:30.35
rubyフォージ?(スペル忘れた)いいですね
常に最新版が提供されてていいですね
公式サイトで紹介されてる国内の配布サイトのは古いのばっかりでやる気を感じられない
0561デフォルトの名無しさん2011/03/27(日) 11:57:29.59
表示系ライブラリはスレッドセーフとか考えないと駄目なのかなあ
めんどくさいなあ
0562デフォルトの名無しさん2011/03/27(日) 12:09:32.53
自作ライブラリがスレッド上で動作する可能性を織り込んで対策するようになれば初級脱出
0563デフォルトの名無しさん2011/03/27(日) 12:22:56.92
Rubyのスレッドはよーく考えてセッティングしないと逆に遅くなるので嫌い
0564デフォルトの名無しさん2011/03/28(月) 21:25:58.93
>>560
何の最新版かしらんが
rubyフォージよりも最新版を見たければrubygems.orgやgithub見ておけばいいんでないの
0565デフォルトの名無しさん2011/03/28(月) 22:05:35.57
>>564
単にRAAが打ち捨てられただけなのでは?
0566デフォルトの名無しさん2011/03/29(火) 17:31:27.83
すみません余所にも書いたのですが返事がなかったためここでも質問させていただきます。

RubyをEmacsで使おうとして苦戦しております。

http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Emacs

このサイトにて、
「Debianの"ruby-elisp.deb"のようにパッケージが利用できるなら、
それをインストールする。ソースからビルドした場合などは、
適当な場所(たとえば~/site-lispなど)にmisc/*.elをコピーする。
そして~/.emacsに次のように書いておく」
と書いてあります。

最後の部分は恐らくパスを追加するということなのだと思うのですが、
私はパスを追加するとはコントロールパネルから辿って行って、絶対パスを
ペーストするやり方しか知らないので、ここがよくわかりません。

~/.emacsって言うのはどこを指していて、どうやって書き込めばいいのでしょうか?
0567デフォルトの名無しさん2011/03/29(火) 17:36:41.38
そのチルダはホームディレクトリのことだけど
EmacsやるまえにLinux入門みたいなの一冊買ったほうがいいよ
0568デフォルトの名無しさん2011/03/29(火) 17:37:44.10
Emacsを勉強するかRubyを勉強するかどっちか片方だけにしておけ
Emacsの知識がないならRubyに慣れるまではとりあえずふつうのエディタ使え
0569デフォルトの名無しさん2011/03/29(火) 17:39:27.26
~ってのはホームディレクトリ。
ababaさんがログインしたらだいたい、
/home/ababa
それか
env | grep HOME=
としてみてもわかる。
そこに、,emacsっていう名前のファイルがあればそれを編集。
0570デフォルトの名無しさん2011/03/29(火) 18:43:25.24
Windowsの予感!
0571デフォルトの名無しさん2011/03/29(火) 18:49:11.05
…ぬ、ぬう……

Windows版Emacs(というかXEmacs)にはイヤな思い出しかないんだが
とりあえず、そのサイトはWindowsを対象にしてないのは確かだ
05725662011/03/29(火) 19:33:14.48
みなさんご親切にありがとうございました。
なんとかやってみます。
05735662011/03/29(火) 19:34:06.79
あ、windowsでやってます。
使いにくいのでcygwin使ってるんですが、ちょっと仕様が違ったりするんですかね??
0574デフォルトの名無しさん2011/03/29(火) 20:18:34.29
日本でサマータイムが導入されたらどう対応したらいいんですか?
0575デフォルトの名無しさん2011/03/29(火) 20:49:46.05
>>573
仕様っつーか、ちょっとしたトラブルとかのときに
Cygwinの問題なのかWindowsの問題なのかソフトの問題なのかよーわからんことになる。
05765662011/03/29(火) 20:54:38.03
>>575
(´・ω・`)え。。

(´・ω・,';,';,',

(´・ω,';,';,',

(´・ω・,';,';,',

(`・ω・´)仕方ないのでこのままがんばってみます!
meadowってやつで頑張ってみます!ありがとうございました!
0577デフォルトの名無しさん2011/03/30(水) 00:04:56.49
普通のテキストエディタでいいじゃない
0578デフォルトの名無しさん2011/03/30(水) 01:20:36.88
ノーパソ使ってるとemacsのほうが結局使いやすいかも。
導入時に多少てこずったとしても。
0579デフォルトの名無しさん2011/03/30(水) 10:30:04.55
Rubyの導入したくご教示お願いします
Windowsを利用してます
Apache2.2も入れてます
主に日々の作業を自動化する目的で利用するのとCGIの勉強用途に利用します

http://rubyinstaller.org/downloads/からRuby 1.8.7-p334をダウンロードしてインストールしました
gem update --systemでgemは1.6.2にアップデートできました
ほかに何かインストールや設定するものはございますでしょうか?

RedmineとRuby on railsも入れてみたいなと思うのですが
ApacheのドキュメントルートがC:\www\docroot\で
ユーザーディレクトリがC:\user\*\public_htmlとなっております(*の部分は適当に付けたユーザー名が入ります)
gemでインストールする場合はユーザーディレクトリに入れて動かしたいのですがディレクトリの指定は可能でしょうか?
0580デフォルトの名無しさん2011/03/30(水) 11:00:35.17
Rails使う場合は全部をRails風にしたほうがいいと思う
RailsとCGIはあんまり相容れないから
Railsのお話はこちら
ttp://hibari.2ch.net/test/read.cgi/php/1292032736/

Apache さんが使う gem は Apache さん用にインストールするか
gem をシステムワイドにインストールして Apache さんに使わせるかだと思う

gem はユーザーのホームに .gemrc があればそれを読むので
そこに gem: "--user-install" とでも書いとけ
0581デフォルトの名無しさん2011/03/30(水) 11:14:10.38
前スレ1〜10ぐらい昔にputで文字列を出力するのがイヤで引退した者です
昔からprintとpってありました?
put、print、pの違いが分かりません
0582デフォルトの名無しさん2011/03/30(水) 11:18:04.34
コマンドラインからruby -Ks test.rbとして呼び出すのを
この-Ksをファイルの中に書いてruby test.rbで呼ぶ方法を教えてください
0583デフォルトの名無しさん2011/03/30(水) 11:35:03.01
>>37-38
ありがとうございます
0584デフォルトの名無しさん2011/03/30(水) 12:34:04.19
>>581
>>11

>>582
スクリプトの1行目に適当に

#!ruby -Ks

と書いておくというのはどう
あらゆる環境で動作するかどうかは保証できないけど

$KCODE を使う場合は

$KCODE = "s"
load "./test.rb"

と書いた main.rb を ruby main.rb で呼ぶとかそういう小細工が必要
0585デフォルトの名無しさん2011/03/30(水) 12:37:52.82
winならバッチにするとか

ruby -Ks -x "%~0"
goto :eof

#!ruby
0586デフォルトの名無しさん2011/03/30(水) 12:41:40.87
for i in 1..10
print rand(3)+1, "\n"
end

どうもRubyの乱数生成は偏りがある感じがあるのですが
良い乱数生成方法はございますか?
0587デフォルトの名無しさん2011/03/30(水) 12:55:20.16
>>586
その結果を見てわかるようなレベルの偏りは存在しない
0588デフォルトの名無しさん2011/03/30(水) 13:06:41.71
>>586
Rubyの乱数はMTだからそんなに粗悪な値は出ないはずだけど

常に偏らない値が欲しいならこんなんにするしかない
乱数生成とは又違う話だけど
[1,1,1,2,2,2,3,3,3,rand(3)+1].shuffle
0589デフォルトの名無しさん2011/03/30(水) 13:18:07.66
確かに、サイコロ5回振って1が3回出ても怒らないのに
1から6までの乱数を返すルーチンで1が3回返ったら怒る人は稀にいる
乱数による各々の出目は平均的でなければならないんだってさ
0590デフォルトの名無しさん2011/03/30(水) 13:25:18.42
いまさらながら、確率ってなんか不思議だな。
サイコロ振りまくったら、出目ごとの出た回数が平均的になっていくなんて。
0591デフォルトの名無しさん2011/03/30(水) 13:37:28.98
スゴロクで1が連続で出ると萎えるじゃん
0592デフォルトの名無しさん2011/03/30(水) 14:20:03.56
複数回の試行を1事象としてみたとき、
偏って同じ目が出るという事象も
平均して出るという事象も
ぜんぜん出ないという事象も
生じる。
0593デフォルトの名無しさん2011/03/30(水) 18:07:33.88
Ruby 1.8.7 です。
以下のようなフォームでメールアドレスを入力し「次へ進む」を押すと、
登録完了メールがユーザに届くプログラムを作成中です。

<form method='post' action='test.rb'>
<input type='text' name='email'>
<input type='submit' value='次へ進む'>
</form>

メールを送る機能は既に完成し、メールの送信自体は行えているのですが
上記のフォームを実際に使用してみると Internal Server Error と表示されてしまいます。
また、エラーが発生するにも関わらずメールは意図したとおりのアドレスに送信されます。
作成して利用しているスクリプトの概要は以下のとおりです。

mail = TMail::Mail.new
mail.to = '[email protected]'
mail.from = '[email protected]'
mail.subject = '登録完了'.tojis
mail.date = Time.now
mail.mime_version = '1.0'
mail.set_content_type 'text', 'plain', {'charset'=>'iso-2022-jp'}
mail.body = ('登録完了いたしました').tojis

Net::SMTP.start(host, port, "localhost.localdomain", user, pass, "login"){|smtp|
smtp.sendmail(mail.encoded, mail.from, mail.to)
}

何が原因なのでしょうか?なにかおわかりになる方がいらっしゃれば、助言お願い致します。
0594デフォルトの名無しさん2011/03/30(水) 18:16:37.50
他のやり方でやってみたら?
俺昔どうやってたかな?と調べたら以下のようにやってた。
kconv使うかどうかはさておき、他のパラメータの与え方はこんなもん。
これで十分?

mailbody = Kconv.tojis(mailbody)
Net::SMTP.start(smtphost, smtpport) {|smtp|
src = <<EndOfMail
From: #{mailfromaddr}
To: #{mailtoaddr}
Subject: #{subject}
Content-Transfer-Encoding: 7bit
Content-Type: Text/Plain; charset=iso-2022-jp

#{mailbody}
EndOfMail
smtp.send_mail src, mailfromaddr, mailtoaddr
}
0595Perl忍者 ◆M5ZWRnXOj6 2011/03/30(水) 18:18:56.42
お前がバカだからだよ原因は
0596デフォルトの名無しさん2011/03/30(水) 18:24:59.21
>>593
HTTPレスポンスとしてはどういうものを返しているの?
ちゃんと200が返るようになってるの?
■ このスレッドは過去ログ倉庫に格納されています