トップページ⇒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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0449デフォルトの名無しさん2011/03/11(金) 15:48:19.11
>>448
ないですか。
�d
04504452011/03/11(金) 23:34:16.09
>>446
>>448
ありがとうございます!
まさに求めていた機能です。勉強になりました。
0451デフォルトの名無しさん2011/03/15(火) 11:20:01.58
>>444
GoFなデザインパターンは、Rubyみたいな後発で動的で完全オブジェクトで
プロックとブロックが跋扈してるような言語ではあまり新鮮な有り難味がないかも
「あーこれ名前ついてたんだー」とか思うことがしばしばある
0452デフォルトの名無しさん2011/03/15(火) 18:10:19.84
ちょっとjavascriptに浮気してくる。
ウェブサイトに必須のようだから。
0453デフォルトの名無しさん2011/03/17(木) 20:02:07.00
0から99までの数字の配列が欲しいのですが、

i = [0..100]
puts i

とやっても期待した結果が得られません。
(実行結果=[0..100])
配列をバラバラにして取得するにはどうすればいいでしょうか?
0454デフォルトの名無しさん2011/03/17(木) 20:06:49.06
(0..100).to_a
0455デフォルトの名無しさん2011/03/17(木) 21:05:24.01
0..100 だと 0, 1, 2, ..., 98, 99, 100 になる。
末尾を含まないRangeは 0...100 (ドット3つ)
0456デフォルトの名無しさん2011/03/17(木) 21:40:39.05
>>453
(0..99).to_a だな
Range クラスというのがある
開始と終了と succ メソッドの返り値(と比較メソッド)だけ見てる変なクラスだ
0457デフォルトの名無しさん2011/03/17(木) 21:44:20.33
to_a する方法はいろいろあるけど、元のコードに一番近いのは
それよりもこれじゃないかと思った。

[*0..99]
0458デフォルトの名無しさん2011/03/17(木) 23:00:58.58
[*0...100]
0459デフォルトの名無しさん2011/03/18(金) 00:55:26.51
あんまり話題としては取りざたされないけど
Rangeクラスって、Rubyの特徴的な機能の一つだよね

これも何かほかの言語にあった機能を、Rubyが取り込んだものなんだろうか
0460デフォルトの名無しさん2011/03/18(金) 01:05:24.55
状態を持つ演算子としての .. (...) は Perl 由来。
その状態をRuby以前にオブジェクト化したものがあるかは生憎知らない。
0461デフォルトの名無しさん2011/03/18(金) 10:05:59.40
>>453
>i = [0..100]
>puts i
これは
r = 0..100
i = [r]
と同じである、つまり
・「0..100」というRangeオブジェクトが1つだけ入った配列
になる。
0から99までの配列の作り方は>>454以降を参照。
0462デフォルトの名無しさん2011/03/18(金) 16:10:31.92
Perlだと範囲演算子はリストに展開するからRubyも同様と思ったのかも
0463デフォルトの名無しさん2011/03/18(金) 18:36:28.23
何をするかにもよるが、Rubyの場合Rangeのまま使っちゃうのもアリ
Rangeもイテレータ呼んだり出来るからね
0464デフォルトの名無しさん2011/03/18(金) 18:59:06.05
0..9.to_a

って書けるようになったんだっけ?
1.9で演算子?の優先順位が変わったとか。
代わってないか。
0465デフォルトの名無しさん2011/03/18(金) 19:01:44.69
変わってないからみんな括弧つけてるじゃん。
0466デフォルトの名無しさん2011/03/18(金) 20:17:55.76
有理数のリテラル
0467デフォルトの名無しさん2011/03/18(金) 22:18:53.23
> [*0..99]
これどういう意味?
0468デフォルトの名無しさん2011/03/18(金) 22:51:01.34
範囲オブジェクトをリストに展開
0469デフォルトの名無しさん2011/03/18(金) 23:04:00.96
to_aしてから展開する
[*1..3] == [1,2,3]

マニュアル見たら [*obj] の説明は無かったが
メソッド呼び出しの最後の引数に*をつけると、配列を展開して渡せる
それと同じことが 配列リテラルでもできる
[0,1,2,*7..9] == [0,1,2,7,8,9]

Ruby 1.9からは、ちょっと拡張されて
最後の引数だけじゃなくてどこでもよくなって、複数でも可能に
[*1..3,5,*7..9] == [1,2,3,5,7,8,9]
0470デフォルトの名無しさん2011/03/18(金) 23:47:42.59
一時期 to_splat というメソッド名があったのだが、今はないようだ。
0471デフォルトの名無しさん2011/03/19(土) 03:34:32.77
>ruby -E utf-16le -e "$stdin.binmode"
-e: ASCII incompatible encoding needs binmode (ArgumentError)
どうすれば?
0472デフォルトの名無しさん2011/03/19(土) 08:14:35.15
それあれだよね、中身としては binmode 以前の

$ ruby -E utf-16le -e ""
-e: ASCII incompatible encoding needs binmode (ArgumentError)

> ruby -E utf-16le -e ""
<internal:prelude>:3:in `require': incompatible character encodings: Windows-31J
and UTF-16LE (Encoding::CompatibilityError)

とか出るのをどうすればいいかという話だよね
0473デフォルトの名無しさん2011/03/19(土) 14:10:46.54
>>468-469
質問した人じゃないけど、すごくわかりやすいです。
横から�d
0474デフォルトの名無しさん2011/03/19(土) 14:44:21.99
まったくのRuby初心者ですが
Windowsユーザーの方に質問です
みなさんはどのような環境でプログラミングされていますか?
RDEやEclipse、NetBeans等いろいろあるので
どれを選択すべきか悩んでいます
意見を頂けないでしょうか?
0475デフォルトの名無しさん2011/03/19(土) 14:51:00.17
>>474
基本はVirtualBox上にLinux入れて、自前コンパイルをインストールした環境。
パッケージングシステムとgemの相性が悪いので…

んで、Windows上で使うものの時にはNetBeans + JRubyで。
rawrでexe化が出来るので…。Macのappも作れるよ。
0476デフォルトの名無しさん2011/03/19(土) 15:59:44.25
基本的にはエディタとコマンドプロンプトだと思うの
IDEがない時代に考えられた言語で、スクリプト単体で動作するように作られてるから

標準入力と標準出力をきちんと把握したあとで
(悲しいけどこれ最重要、IDEべったりの人はここで詰まる)
IDEがサックサクの環境ならEclipseでいいんでないかね
NetBeansが次点人気
RDEはとりあえず初心者は捨てていい

あと、Javaや.netのような親切で高度で指一本な連携サポートはできないのでご注意
0477デフォルトの名無しさん2011/03/19(土) 16:07:19.44
RubyをIDEで始めてしまうと、実際のスクリプトの実行方法がよくわからないことになるからな…
IDE上からは実行できるんですが普通に使う方法がわかりませんというのはFAQに近い
エディタとコマンドプロンプトで作って、ある程度納得してから進む道決めたほうがいいかもしれん

うまい教科書があるといいんだけど
0478デフォルトの名無しさん2011/03/19(土) 16:10:44.33
その手の根性主義はもう流行らないと思う
0479デフォルトの名無しさん2011/03/19(土) 16:15:33.40
だって、IDEのRubyサポートって初心者に全然優しくないもの
あんなものを最初に触らせること自体「俺ならできる、だからお前もやれ!」という体育会系の思考だわ
0480デフォルトの名無しさん2011/03/19(土) 16:24:47.12
あれはJavaとかC++とかでEclipseやNetBeansを使い慣れている人が
Rubyでも似たようなことをしたいと思って使うもんだ

Ruby初心者には若干厳しく、統合開発環境初心者には鬼だ
そのへん見極めて勧めないと逆効果になりかねん
0481デフォルトの名無しさん2011/03/19(土) 16:36:06.27
意見を下さった方、ありがとうございました
0482デフォルトの名無しさん2011/03/19(土) 16:37:39.54
viとemacsどっちがいいの?
0483デフォルトの名無しさん2011/03/19(土) 16:49:36.59
宗教論争になるので両方試せ。
0484デフォルトの名無しさん2011/03/19(土) 17:24:16.66
Emacs → あの Emacs で Ruby スクリプトが書ける
Vim → あの Vim で Ruby スクリプトが書ける

メリットだと思うほう使え
04854712011/03/19(土) 17:32:37.82
>ruby -E utf-16le:utf-8 -e ""
で行けた
0486デフォルトの名無しさん2011/03/19(土) 17:35:27.03
>>485
それは要件満たしてるのか?
04874712011/03/19(土) 20:28:00.07
ok
0488デフォルトの名無しさん2011/03/19(土) 21:14:01.61
[1,2,3,4,5,6].each{|a,b| puts a,b}
で、12,34,56と消費するイテレータってないんですか?
[[1,2],,,というのはなしで
0489デフォルトの名無しさん2011/03/19(土) 21:18:30.87
each_slice
0490デフォルトの名無しさん2011/03/20(日) 02:00:07.70
30%の需要があるとのことなので、出てくるかと思ったが、出ないのね。
ありそうなので、探したんだけど、無いから自分で作った。
習い初めのものなので、つっこみはご勘弁。

# 多次元配列と文字列の複製
# dataの値を新しいアドレスを作成して複製
def copy(data)
if Array.try_convert(data) == nil
String.try_convert(data) ? data.dup : data
else
(0 ... data.size).map{|i|
copy(data[i])
}
end
end
0491デフォルトの名無しさん2011/03/20(日) 03:10:30.28
>>490
Marshal.load(Marshal.dump(data)じゃいやだったの?
0492デフォルトの名無しさん2011/03/20(日) 04:15:52.14
つっこみはご勘弁ってならなぜ貼ったのだろう
0493デフォルトの名無しさん2011/03/20(日) 06:58:31.33
誤爆だろ
多次元配列はRubyにはない
0494デフォルトの名無しさん2011/03/20(日) 07:15:53.69
アドレスもないしな

多次元配列自体は存在できないわけではないんだが、専用にクラス作らんといかんぬ
0495デフォルトの名無しさん2011/03/20(日) 13:28:18.96
Ruby の構造的仕様だな

obj[x][y][z] が

 obj[x, y, z]

ではなく

 retx = obj[x]
 rety = retx[y]
 retz = rety[z]
 return retz

というレシーバ依存のメソッドチェーンである時点で、もうどうしようもない
単純には諦めてネストした巨大な配列にするしかなく、実用的には NArray gem を使うとかしかないわ
0496デフォルトの名無しさん2011/03/20(日) 15:58:00.20
Python の NumPy みたいなものがあればいいんだよね?
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から
■ このスレッドは過去ログ倉庫に格納されています