Ruby 初心者スレッド Part 52
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/06/06(木) 23:50:09.17質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
RoRはスレ違いよ
前スレ
Ruby 初心者スレッド Part 51
http://toro.2ch.net/test/read.cgi/tech/1358636526/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
0449デフォルトの名無しさん
2013/09/14(土) 08:45:57.52自己解決していません
socksプロキシに対応したプロキシ立てをrubyでやりたいんですけどわかりません
ちなみにsshでのsocksプロキシはやりたくないんです
ssh以外の方法でrubyでsocksプロキシに対応したプロキシサーバ作りたいんですけど
0450デフォルトの名無しさん
2013/09/14(土) 11:17:18.830451デフォルトの名無しさん
2013/09/14(土) 13:10:04.190452デフォルトの名無しさん
2013/09/14(土) 13:21:11.160453デフォルトの名無しさん
2013/09/14(土) 13:59:05.540454デフォルトの名無しさん
2013/09/14(土) 15:15:51.750455デフォルトの名無しさん
2013/09/14(土) 18:02:07.46ソースコードの勉強として、1ブロック(10〜20行ぐらい?程のコードをブログにアップして解説する場合は
ライセンスを明記し解けばいいのですか?
0456デフォルトの名無しさん
2013/09/14(土) 18:14:26.44それぐらいなら引用の範囲内じゃね?
0457デフォルトの名無しさん
2013/09/17(火) 12:55:23.03http://linux.ohwada.jp/modules/smartsection/item.php?itemid=452
ここに書いてあるのを試したりもしたんですが、
英語環境じゃないと動作しないんでしょうか?
0458デフォルトの名無しさん
2013/09/17(火) 13:13:16.24HTMLとJavascript(とCSS)が読めるのなら、
そのサイトでWebブラウザがどういう順を追ってアップロードをしているのかを確かめて、
それの通り(または、飛ばしても動く面倒な部分は飛ばして)動作するように記述すればいい
HTMLとJavascript(とCSS)が読めない場合は現実的にちと無理
今回のように「なんだかわからないけど動かない」なんてなったときにどうしようもできない
HTMLとJavascriptを大雑把にでも読み解けるくらいの知識が別途必要
0459デフォルトの名無しさん
2013/09/17(火) 13:28:56.99全くなにも知らなくてもうまくいくことが多いんだけどねWatir
0460デフォルトの名無しさん
2013/09/18(水) 10:35:49.02http://kohada.2ch.net/test/read.cgi/php/1375636484
0461デフォルトの名無しさん
2013/09/18(水) 11:13:42.880462デフォルトの名無しさん
2013/09/18(水) 16:21:17.29メタクラス(?)の記述方法は有りませんか?
下記のプログラムにて,a.a a.b を知らなくても
その変数名リストとその値をそれぞれ取得出来るような方法です.
class AA
attr_reader :a, :b
def initialize( )
@a = 1
@b = 2
end
end
a = AA.new
printf "%5d%5d\n", a.a, a.b
0463デフォルトの名無しさん
2013/09/18(水) 17:13:41.970464デフォルトの名無しさん
2013/09/18(水) 17:47:56.55def attr_values(obj)
obj.instance_variables.inject({}) { |hash, at_sym|
symbol = (at_sym.to_s)[1..-1].to_sym
result, value = begin
[true, obj.method(symbol).call]
rescue
[false, nil]
end
if result then hash.merge symbol => value else hash end
}
end
class AA
attr_reader :a, :b
def initialize
@a = 1
@b = 2
@c = 3
end
end
a=AA.new
p attr_values(a) # => {:a=>1, :b=>2}
0466デフォルトの名無しさん
2013/09/19(木) 12:44:28.74Rubyで有名なものを教えてください
0467デフォルトの名無しさん
2013/09/19(木) 14:37:31.39前のTwitter
0468デフォルトの名無しさん
2013/09/19(木) 14:53:27.47あなたはwatir使った事がありますか?
レスが全く無関係の方向です
分かる人いなそうなので回答は結構です
0469デフォルトの名無しさん
2013/09/19(木) 14:55:30.13ということは今はRubyで作られた有名なものはないのですよね
ぼくがRubyですごいやつ作ったら有名になれる気がしました
0470デフォルトの名無しさん
2013/09/19(木) 15:13:41.55Rubyでなくてもすごいの作ったら有名になるだろ。特にサービスは実装関係ないから、Rubyでなくなったんだろ。
アプリならredmineとか。
0471デフォルトの名無しさん
2013/09/19(木) 16:35:35.680472デフォルトの名無しさん
2013/09/19(木) 16:36:14.37Twitterも一部にRailsが残ってるとか
0473デフォルトの名無しさん
2013/09/19(木) 16:41:28.360474デフォルトの名無しさん
2013/09/19(木) 16:49:29.69喧嘩すんなって感じではあるが
0475デフォルトの名無しさん
2013/09/19(木) 17:35:21.380476デフォルトの名無しさん
2013/09/20(金) 20:08:54.85ary = [1,2,3]
ary.each do |v|
p v
end
のとき
ary[0]
ary[1]
ary[2]
の0と1と2の部分Keyていうですか?これを取得する方法を教えてください
ググって
ary = [1,2,3]
ary.each do |key, v|
p v
end
でできるみたいな記事も見つけたのですが
keyには値が入ってて、vはnilだったのでダメでした
0477デフォルトの名無しさん
2013/09/20(金) 20:26:19.24p key
end
って書くと key が 0 から 2 まで回る。
これで要求に答えられてるかわからんけど。
0478デフォルトの名無しさん
2013/09/20(金) 20:38:18.78#each_with_index
0479デフォルトの名無しさん
2013/09/20(金) 21:07:51.49=> [1, 2, 3]
irb(main):002:0> ary.each.with_index do |v, index| p [v, index] end
[1, 0]
[2, 1]
[3, 2]
=> [1, 2, 3]
irb(main):003:0>
0480デフォルトの名無しさん
2013/09/20(金) 23:42:14.44これをハッシュのキーにすると、文字列としては同じに見えるのに、異なるキーとして扱われるので、気付くのに時間が
かかった。見た目同じ文字列が、見えないところで違う扱い、それも基本的なデータ型で、初心者に優しくないよね。
というか慣れた人でもハマることありそう。
なんでこんな設計になってるの? Rubyって。
0481デフォルトの名無しさん
2013/09/20(金) 23:53:16.31puts/print ではなく p してる?
0482デフォルトの名無しさん
2013/09/21(土) 00:44:42.76どんなアバウトな使い方なんだよ
0483デフォルトの名無しさん
2013/09/21(土) 00:47:20.70>これだとmatchオブジェクトになるんだな。
正確に言うと「MatchDataオブジェクト」だね
>なんでこんな設計になってるの? Rubyって。
パターンの一致結果を詳しく分析するニーズを想定しているからだよ
もし興味があれば、「るりま」等で MatchDataクラスの解説を読んで勉強してみて
で、一般のパターンマッチ処理だとメソッド Regexp#match では面倒なので、
代わりに Regexp#=~ を使い、一致結果を $1, $2, ... で参照する
もしMatchDataオブジェクトが必要であれば、$~ で参照できる
これで、大半のケースは事足りるはずで、わざわざ matchを使うのはレアケースだと思われ
0484デフォルトの名無しさん
2013/09/21(土) 01:00:08.53いつもそうやってた。
0485デフォルトの名無しさん
2013/09/21(土) 01:57:24.28自身が>>480で書いているように、MatchDataオブジェクトを直に扱う手法は
初心者に優しくないし慣れた人でも間違えやすいし、タイピングも面倒
だから簡単な方法としてメソッド Regexp#=~ と疑似変数 $1, $2 , ... が用意されている
一般的なRubyにおける正規表現処理の解説ではこの簡単な方法で説明されているはずだし、
ほとんどのプログラムでもこの方法が使われている
だから、慣れておく事を薦めるよ
普段は誰もが知っている単純な方法でサクサクとコードを書き、イザという時には特別な手法で
困難をサラリと飛び越える.... というのが、クールなプログラマの姿ではないかと思われ
0486デフォルトの名無しさん
2013/09/21(土) 03:29:53.63単にハッシュのキーとして使うことが想定されていない。
JavaScriptとかからの人だと、Regexp#=~より先に Regexp#match を
見つけてしまうんだろうか。
0487デフォルトの名無しさん
2013/09/21(土) 09:41:28.23基礎とかそういう問題ではなく
現在のwatirにある「不都合」について認知していないレスだったので
つまり使ってないのに憶測でレスしたんだろうなぁと思ってイラっといました
まぁ2chでいちいち環境そろえて的確な回答をする義務はありませんので構いませんよ
0488デフォルトの名無しさん
2013/09/21(土) 10:30:37.71http://linux.ohwada.jp/modules/smartsection/item.php?itemid=452
http://www.autoitscript.com/autoit3/docs/functions/WinWait.htm
これ見るにどうもブラウザのファイル選択ダイアログのタイトルと
autoit.WinWait の引数を揃えろってことらしいけど
まず Win32OLE から AutoIt の WinWait が自分の環境で機能するか調べてみては
0489デフォルトの名無しさん
2013/09/21(土) 10:43:35.08ことにも繋がる面白い疑問点だと思うけど、マニュアルよめー、答えが返って
くるとはかぎらないー、とかワンパターンなことを真っ赤になって繰り返す奴
って初心者スレで威張って人生の厳しさでも教える師匠かなんかの気分なの?
おてがるにえらくなったつもりでいい気持ち、ってやっすい満足得ているのは
結構だが、ウザいことこの上無し。
0490デフォルトの名無しさん
2013/09/21(土) 11:28:06.950491デフォルトの名無しさん
2013/09/21(土) 11:36:22.47・ブログをやる場合の定番gem:
・PythonのSphinxみたいなgem:
0492デフォルトの名無しさん
2013/09/21(土) 21:59:14.37Pythonみたいに数字でサイズを指定できないものか
http://ideone.com/zfUFM5
0493デフォルトの名無しさん
2013/09/22(日) 10:49:01.080494デフォルトの名無しさん
2013/09/22(日) 13:34:38.65>MatchDataオブジェクトを直に扱う手法は
上にもあったけど、to_sで文字列にすれば分かりやすいし素直じゃん。
内部的な効率でも別に問題ないし。
>だから簡単な方法としてメソッド Regexp#=~ と疑似変数 $1, $2 , ... が用意されている
こっちの方がわかり辛いし、めんどくせーんじゃねえの?
0495デフォルトの名無しさん
2013/09/22(日) 13:42:22.80b = s.product(s,s,s)
で4文字が組み合わさるけど
これが5とか10のときにわざわざs,s,s,sとかs,s,s,s,s,s,s,s,sって書くのは効率が悪いので
数字で指定できる方法ありませんあk?
0496デフォルトの名無しさん
2013/09/22(日) 13:56:52.04def replicate(n, arr)
[arr] * n
end
s = ["A", "C", "G", "T"]
b = s.product(*replicate(3, s))
0497デフォルトの名無しさん
2013/09/22(日) 15:11:05.79でいけるんじゃないかな。
0498デフォルトの名無しさん
2013/09/22(日) 15:37:28.41�Uとかローマ数字があると間違って解析されちゃうんだけど
どしたらよかんべ?
$ ruby1.9 -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12]
$ gem1.9 list nokogiri
nokogiri (1.6.0)
0499デフォルトの名無しさん
2013/09/22(日) 15:43:07.560500デフォルトの名無しさん
2013/09/22(日) 16:27:05.28WindowXP
0501デフォルトの名無しさん
2013/09/22(日) 16:47:58.98ローマ数字が定義されている EUC-JPは、実際には EUC-JP ではなく
CP1932 なので、ソース HTML が間違っていると言い切ってしまえれば
楽なのだが、とりあえず nokogiri に食わせる前にソースのまま処理して
置換しておくしかないんじゃない?
ちなみに Ruby 2.0 の Encoding には入っていないようなので、
入れてくれ、とバグレポートするのも気長な解決策ではある。
0502デフォルトの名無しさん
2013/09/22(日) 16:51:07.43そして Ruby 2.0 にはあった。
0503デフォルトの名無しさん
2013/09/22(日) 17:07:35.030504デフォルトの名無しさん
2013/09/22(日) 17:11:34.560505デフォルトの名無しさん
2013/09/22(日) 19:26:29.05Nokogiriの各クラスのparseメソッドには文字エンコーディング名称文字列を受けとる引数がある
いわゆるmetaタグで指定されているエンコーディング名がEncodingクラス的に(あるいはiconv的に)誤っているのなら、自力で指定しろ
引数側が優先されるから
0506デフォルトの名無しさん
2013/09/22(日) 19:49:03.33だったら標準ライブラリいれちゃえよ
0507デフォルトの名無しさん
2013/09/22(日) 19:55:08.88知らないものに対して何かを言おうとするのはやめよう
0508デフォルトの名無しさん
2013/09/22(日) 20:00:24.620509デフォルトの名無しさん
2013/09/22(日) 20:08:20.930510デフォルトの名無しさん
2013/09/22(日) 20:13:19.39>よりかは
0511デフォルトの名無しさん
2013/09/22(日) 20:43:34.50突然の上から目線
その後は論点のずれているレス
学生は君のほうらしい
0512デフォルトの名無しさん
2013/09/22(日) 21:10:00.400513デフォルトの名無しさん
2013/09/22(日) 21:41:51.93class TestCase < ::MiniTest::Unit::TestCase
end
end
上のコードで「::MiniTest」みたいに::の左にモジュールやクラスが指定されていない場合、どういう意味になるのでしょうか?
0514デフォルトの名無しさん
2013/09/22(日) 22:18:59.410515デフォルトの名無しさん
2013/09/22(日) 22:51:12.00ディレクトリのパス表現を連想すると分かりやすい
たとえばUNIXだと、絶対パスは /usr/lib/ruby で
相対パスは lib/ruby や ruby と表現される
同様に、Rubyではモジュールの名前空間上におけるパスを表現する
(クラスはモジュールのサブクラスだから、クラスも同じ名前空間上に位置する)
たとえば、::MiniTest::Unit::TestCase は絶対パスで
Unit::TestCase、Unit、そして TestCase が相対パスになる
>>513の例であれば、絶対パス ::MiniTest::Unit::TestCase は
(>>514のいう)トップレベルからクラス TestCase へのパスを表現し、
相対パスの場合は、カレントパス(=現在のコンテクストのパス)からクラスを表現する
たとえば >>513の定義クラス(= "class" の直後にある) TestCase は相対パス表現だから、
カレントパス ActiveSupport の下に位置する相対パス ActiveCase::TestCase と同じ
0516デフォルトの名無しさん
2013/09/24(火) 00:12:46.66詳細な解説有り難うございます。絶対パスと分かって胸のつかえが取れました。
0517デフォルトの名無しさん
2013/09/24(火) 04:33:29.740518デフォルトの名無しさん
2013/09/24(火) 04:35:37.160519デフォルトの名無しさん
2013/09/24(火) 20:47:17.420520デフォルトの名無しさん
2013/09/25(水) 06:39:04.30テストケースの中でファイル等を読み込みたい場合、何という名前のディレクトリに配置するのが一般的なのでしょうか?
0521デフォルトの名無しさん
2013/09/25(水) 15:26:00.23皆さん宜しくお願いします!
0522デフォルトの名無しさん
2013/09/25(水) 15:34:22.49いろいろ考えたのだが、spec/dataがいちばん無難なんじゃねーかという結論に至った
0523デフォルトの名無しさん
2013/09/25(水) 17:27:46.42テストケースの中でファイル等を読み込みたい場合、何という名前のディレクトリに配置するのが一般的なのでしょうか?
0524デフォルトの名無しさん
2013/09/25(水) 17:29:11.68適当な名前のディレクトリ掘るのが一般的ですかね。ありがとうございます。
0525デフォルトの名無しさん
2013/09/25(水) 17:29:58.270526デフォルトの名無しさん
2013/09/25(水) 18:04:55.58例:
count=0
10000.times do
count+=1 if rand**2+rand**2<1
end
のcount=0をイテレータ内で記述したいのです
0527デフォルトの名無しさん
2013/09/25(水) 18:23:33.16無理
0528デフォルトの名無しさん
2013/09/25(水) 18:24:26.45値の累積(accumulation)には、Enumerable#inject を使う
変数 count は累積値を表現し、ある条件(ここでは乱数)で加算(+1)した結果を累積していく
1000.times.inject(0) { |count, _|
if rand ** 2 + rand ** 2 < 1 then count + 1 else count end
}
0529デフォルトの名無しさん
2013/09/25(水) 19:34:45.2210000.times.count{ rand**2 + rand**2 < 1 } とか
10000.times.map{ [rand,rand] }.count{|x,y| x**2 + y**2 < 1} みたいに書くな俺なら
0530デフォルトの名無しさん
2013/09/25(水) 21:37:48.090531デフォルトの名無しさん
2013/09/26(木) 07:41:19.930532デフォルトの名無しさん
2013/09/26(木) 07:50:49.380533デフォルトの名無しさん
2013/09/26(木) 08:40:35.530534デフォルトの名無しさん
2013/09/26(木) 09:43:01.580535デフォルトの名無しさん
2013/09/26(木) 09:55:21.27アメリカ人は、まず注射を連想しますよ
0536デフォルトの名無しさん
2013/09/26(木) 09:57:35.63renormalization group
畳込み積分
convolution integral
0537デフォルトの名無しさん
2013/09/26(木) 10:47:29.40たとえば (cons 1 (cons 2 (cons 3 nil))) などのように
でもってこの cons の部分に関数を注入するのが inject
ではないだろうか(憶測)
0538デフォルトの名無しさん
2013/09/26(木) 11:29:19.30inject: initialValue into: [:acc :each | ... ] というメッセージとして使う。
Rubyで同じことを書くと
inject(initialValue){ | acc, each | ... } となる。
acc に initialValue やブロックの結果を inject してく感じ。
0539デフォルトの名無しさん
2013/09/26(木) 19:13:42.19a=1
1.times{|x;a| a=2}
p a #=> 1
0540デフォルトの名無しさん
2013/09/26(木) 19:43:52.970541デフォルトの名無しさん
2013/09/27(金) 18:55:26.82bundler使わないでgem install xxxxってやっていれるのとで何が違いがあるのでしょうか?
例えばrailsでthinが使いたいんですけどbundlerから入れないと使えません
0542デフォルトの名無しさん
2013/09/27(金) 19:02:01.430543デフォルトの名無しさん
2013/09/27(金) 19:11:33.540544デフォルトの名無しさん
2013/09/27(金) 21:23:56.32でおk
0545デフォルトの名無しさん
2013/09/27(金) 21:25:25.690546デフォルトの名無しさん
2013/09/27(金) 21:28:18.39aaa
aab
aac
aba
abb
abc
aca
acb
acc
略
ccc
見たいに全ての組み合わせを表示するライブラリがあったと思うんですがそれをおしえてください
0547デフォルトの名無しさん
2013/09/27(金) 21:31:51.680548デフォルトの名無しさん
2013/09/28(土) 07:42:16.47部屋の区割り自体が迷路のように入り組んでいて
火事で停電になったら出口判らず逃げ遅れて死者多数出ると思う
http://www.dotup.org/uploda/www.dotup.org4535669.jpg
0549うゆ
2013/09/29(日) 01:24:46.62クスクスクス
count = nil
10000.times do
count ||= 0
count+=1 if rand**2+rand**2<1
end
p count
■ このスレッドは過去ログ倉庫に格納されています