Ruby 初心者スレッド Part 56©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net
2014/12/13(土) 09:29:12.93ID:DLY4IovQ質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 55
http://peace.2ch.net/test/read.cgi/tech/1403361584/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
0655デフォルトの名無しさん
2015/02/07(土) 13:12:14.03ID:uwz1/LFp0656デフォルトの名無しさん
2015/02/07(土) 14:10:42.49ID:zogMm8qcProxyがHTTPS通信を開始するためにはConnectメソッドを処理する必要があるが
Webrickはこれを処理できる仕組みになっていないから
あと、透過型Proxy自体はヘッダーと何の関係もない
たぶんSSLによる暗号化を複合しないとリクエストが分からないから転送しようがないのでは?
と考えたのだと思うが、Proxyはそんなことしない
Connectメソッドによって確立されたトンネルにデータを流すだけ
0657デフォルトの名無しさん
2015/02/07(土) 14:41:58.65ID:tuovU1tZ今自社の開発案件でスマホアプリのHTTPS通信の
解析を行う必要があったんですが、Webrickでは無理という事でしょうか?
単純にmitmproxyと同じ事をrubyで実装したいのですが
その場合どのように行えば良いでしょうか?
0658デフォルトの名無しさん
2015/02/07(土) 17:07:04.01ID:zogMm8qcHTTPとSocketを知っているなら数十行くらいで書けるでしょう
ProxyはConnectで指定されたホストではなく
解析用のホストに接続するようにする
解析用のホストで動くサーバーは普通にWebrickで書いていい
HTTPSを受け付けるようにし、証明書を設定しておくこと
ところで、これは素朴なMITM攻撃の手法であるから
普通のアプリなら証明書検証過程でエラーにされる
したがってmitmproxyで通信を解析できるのは
自分で証明書検証方法を指定できるもの(または検証していないもの)に限られる
Androidは検証漏れのあるアプリが多く
IPAから注意喚起が行われている
0659デフォルトの名無しさん
2015/02/07(土) 20:50:36.17ID:tuovU1tZ親切に教えて下さってありがとうございました。
どうにか実装したかったんですけど、自分のスキルでは
困難である事がよくわかりました。
0660デフォルトの名無しさん
2015/02/09(月) 01:08:14.17ID:lI/ZsD+9def == (other)
true
end
end
こんなクラスを作って
false == Hoge.new
-> false
Hoge.new == false true
->true
って右辺と左辺を取り替えて評価すると結果が違うんですが、イコールで
結んでいるのに結果が違うのは欠陥じゃないですかね?
0661デフォルトの名無しさん
2015/02/09(月) 01:34:42.68ID:xK+TuziD結果が同じじゃなくて当たり前
foo(hoge)とhoge(foo)の結果が違うのは欠陥じゃないですかねって言ってるのと同じレベル
0662デフォルトの名無しさん
2015/02/09(月) 01:48:07.63ID:nauiaCPK> => false
メソッド False#==(other) は自身のクラス TrueClass と引数 other のクラス Hoge が
同値でないから、false を返している
> Hoge.new == false
> =>true
メソッド Hoge#==(other) は(引数 other が何であれ)常に false オブジェクトを
返すよう定義されている
どこにもおかしな振る舞いは見当たらないけど、
もしも「右辺と左辺を取り替えて評価しても結果が同じになる」ことを期待しているならば、
>>660 におけるクラス Hoge の定義が間違っている、と言うしかないね
0663662
2015/02/09(月) 01:49:40.94ID:nauiaCPKX: メソッド False#==(other) は ....
O: メソッド FalseClass#==(other) は ....
0664662
2015/02/09(月) 01:52:57.92ID:nauiaCPKX: .... 自身のクラス TrueClass と ....
O: .... 自身のクラス FalseClass と ....
0665デフォルトの名無しさん
2015/02/09(月) 01:58:41.05ID:xK+TuziD他にも訂正すべき箇所が2箇所あると思うんだがw
0666デフォルトの名無しさん
2015/02/09(月) 14:21:07.56ID:AxVgErBeパイプ '|' のような記述で、
マルチスレッド並行処理を行う、
新言語streemを作っている。
ソースコードはgithubにある
libevent, libev, select, epoll
などの関数が出てくる
昨今、CPUのコア数が増えてきたから、
これからは、すべてのコアを使い切ることが求められる
ただし、排他処理に気を使うマルチスレッドよりも、
マルチプロセスの方が、間違いが少ないような気がする
0667デフォルトの名無しさん
2015/02/09(月) 16:06:20.11ID:lErY/OJd0668デフォルトの名無しさん
2015/02/09(月) 17:15:32.39ID:cxy5oANg0669デフォルトの名無しさん
2015/02/09(月) 21:00:23.45ID:sphOw1wNに対し
=> [[1,2],[2,3],[3,4],[4,5]]
=> [[1,2,3],[2,3,4],[3,4,5]]
=> [[1,2,3,4],[2,3,4,5]]
を得るCoolなやつありませんか?
0670デフォルトの名無しさん
2015/02/09(月) 21:04:43.91ID:NXlsRYy4each_consをうまく使えばできるよ
一発じゃないけど
0671デフォルトの名無しさん
2015/02/09(月) 21:13:06.96ID:sphOw1wNそれだ!ありがとう
0672デフォルトの名無しさん
2015/02/10(火) 01:50:57.21ID:tIfgcH5Iあるのでしょうか。
タスクマネージャで見ているとexcel VBAだと、両CPUの負荷が同じように上がっているが、
ruby だと片CPUの負荷だけが上がり、もう片方はあまり働いていないようです。
0673デフォルトの名無しさん
2015/02/10(火) 02:11:44.78ID:pMPiEmrcVBA は COM で部品化されていてそれぞれ別プロセスだから
0674デフォルトの名無しさん
2015/02/10(火) 02:33:56.95ID:tIfgcH5Iありがとうございます
rubyだとダメなんだ
0675デフォルトの名無しさん
2015/02/10(火) 07:03:23.97ID:w6L2FJ5J頑張ってコア使い切ったところでなあ
0676デフォルトの名無しさん
2015/02/11(水) 02:04:55.42ID:hnLG61DmそれでもJavaは使いたくないと思わせるレベルではあるんだが
0677デフォルトの名無しさん
2015/02/11(水) 02:54:42.43ID:TLA2PyrC100倍の方が近い
0678デフォルトの名無しさん
2015/02/11(水) 03:19:59.79ID:hnLG61Dmじゃ、ベンチ出してみ
10倍の方が正しいのが分かるから
0679デフォルトの名無しさん
2015/02/11(水) 03:22:36.75ID:TLA2PyrCおまえが出せよ
ちゃんとCPUがボトルネックになっているやつな
0680デフォルトの名無しさん
2015/02/11(水) 07:11:34.41ID:XzdqNrdaそうでないとRubyのときの処理中にIO待ち時間が占めていた割合を測っているだけになってしまう
0681デフォルトの名無しさん
2015/02/11(水) 09:49:50.21ID:00aeaMNo0682デフォルトの名無しさん
2015/02/11(水) 10:05:25.00ID:7KIXpa8D直感的に10倍は差が小さすぎると考えてベンチマークを疑うのが普通じゃないかな
0683デフォルトの名無しさん
2015/02/11(水) 10:10:42.68ID:r3BddX0b0684デフォルトの名無しさん
2015/02/11(水) 10:12:59.39ID:XzdqNrda10倍の根拠を示すのは>>678の方だ
0685デフォルトの名無しさん
2015/02/11(水) 10:15:58.43ID:uxm1HOmW第三者
0686デフォルトの名無しさん
2015/02/11(水) 10:30:31.62ID:HV6QGBu9速さが必要な用途にrubyを使った覚えはねえ
低能力者だけ何でもrubyで書いてろよ
0687デフォルトの名無しさん
2015/02/11(水) 10:45:07.71ID:v2pXwonN0688デフォルトの名無しさん
2015/02/11(水) 11:31:06.51ID:x6JgCX17gem list | grep パッケージ名
↑これ以外で
0689デフォルトの名無しさん
2015/02/11(水) 11:43:03.82ID:HV6QGBu9提案した方法も同じ理由で駄目とか言われると萎えてチン子切り落としたくなる
0690デフォルトの名無しさん
2015/02/11(水) 11:46:44.93ID:r3BddX0bgem query -i PACKAGENAME
0691デフォルトの名無しさん
2015/02/11(水) 11:56:30.28ID:x6JgCX17スクリプトから使いたいからです
>>690
これです
0692デフォルトの名無しさん
2015/02/11(水) 12:11:33.44ID:xHvIcpQairbとpryは出ません
0693デフォルトの名無しさん
2015/02/11(水) 12:42:44.80ID:cDpEjOcI#p ary1 = str.slice(/\d\d:\d\d/)
ary2 = str.split(/\d\d:\d\d/)
ary3 = str.split(/(\d\d:\d\d)/)
#ary2.each { |e| p e }
時間を頼りに配列に分割したいのですが
10:35快晴66子供,
12:44曇り23中年,
13:20雨05幼児
どうも上手くいきません。 アドバイスをお願いします
0694デフォルトの名無しさん
2015/02/11(水) 13:10:09.11ID:sK01Ui9b0695デフォルトの名無しさん
2015/02/11(水) 13:12:07.38ID:73gQVPeZこれじゃダメか?
0696デフォルトの名無しさん
2015/02/11(水) 13:15:52.01ID:73gQVPeZ0697693
2015/02/11(水) 15:21:58.95ID:cDpEjOcI?=
に関して、資料を探してみてるのですが
正規表現なのでしょうか? それともsplitのオプションなのでしょうか?
一応、手元の資料、(楽しいruby、レシピブック)を参照してるのですが発見できず、
リファレンスをざっと眺めたのですが・・
合わせて参考になる図書を紹介して頂けると助かります。
正規表現の本を別途購入した方がよいのかな・・・ ruby関連の。
0698デフォルトの名無しさん
2015/02/11(水) 15:32:08.71ID:u2Y4u6H8>もしも「右辺と左辺を取り替えて評価しても結果が同じになる」ことを期待しているならば、
代入じゃないんだから、等号の前後で意味が変わるってのは間違いを呼び込みやすい
良くない仕様だと思う。
こういうのに違和感を感じない奴って数学的センスがないんだろうなあ、と思う。
0699デフォルトの名無しさん
2015/02/11(水) 15:46:18.57ID:uxm1HOmWRubyにこだわらず正規表現の資料に当たるのがいいと思うよ
(?=〜)は肯定先読み
0700デフォルトの名無しさん
2015/02/11(水) 15:52:52.72ID:73gQVPeZ数学的センスとは一体……w
0701デフォルトの名無しさん
2015/02/11(水) 15:54:49.91ID:r3BddX0b横からだけどこれの「先読み、後読み」のところ
http://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fregexp.html
詳説正規表現って本が定番で三章ぐらいまで読めば普段使いには十分
0702デフォルトの名無しさん
2015/02/11(水) 15:55:06.55ID:73gQVPeZとりあえずこれ読んでおけば良いと思う
ttp://docs.ruby-lang.org/ja/2.2.0/doc/spec=2fregexp.html
0703デフォルトの名無しさん
2015/02/11(水) 15:56:45.20ID:73gQVPeZ0704デフォルトの名無しさん
2015/02/11(水) 16:01:09.99ID:sK01Ui9b数学的に違和感があっても
Rubyの仕組み的に違和感がない(むしろ全てレシーバのメソッドで統一されてる)
Rubyは数学じゃなくてプログラミング言語だからそんなにおかしな仕様じゃないと思うけど
0705693
2015/02/11(水) 16:15:37.27ID:cDpEjOcI早速読んでみましたが、何となくでしか理解できないので
紹介された書籍を今からポチってきます
皆さん、ありがとう
0706デフォルトの名無しさん
2015/02/11(水) 16:25:36.31ID:PYSPfi0Q0707デフォルトの名無しさん
2015/02/11(水) 16:50:02.25ID:r3BddX0b0708デフォルトの名無しさん
2015/02/11(水) 16:56:43.99ID:sDJf85Ja∃f∃g s.t. ¬( o(f) = o(g) ⇔ o(g) = o(f) ).
と言おうとしたら既出だった
0709デフォルトの名無しさん
2015/02/11(水) 17:03:48.99ID:X7wVt/Fu「詳説正規表現」を買うのか?
漏れなんか、「たのしいRuby」で正規表現を覚えたけど、
ちょっと使うには十分だよ
それ以上のことは、2chの正規表現スレで、聞けばよい。
一々、買わなくてもよいだろう。
もし買うのなら、そいつのリンクから買ってやれ
0710デフォルトの名無しさん
2015/02/11(水) 17:06:47.22ID:HV6QGBu90711デフォルトの名無しさん
2015/02/11(水) 17:54:07.50ID:xOldc4y+gem install mysql2
すると
ruby/thread.hが無い
と言われるのですが、
thread.hはどうすればインストールされるのでしょうか?
Debianのaptで
ruby
ruby-dev
は入ってます。(1.9.3)
0712デフォルトの名無しさん
2015/02/11(水) 17:58:59.39ID:PYSPfi0Q0713デフォルトの名無しさん
2015/02/12(木) 07:46:08.52ID:9gMH9uw0>>711
https://github.com/brianmario/mysql2#linux-and-other-unixes
libmysqlclient-devかmysql-devel入れろって書いてあるけど入れた?
0714デフォルトの名無しさん
2015/02/12(木) 12:03:09.39ID:gfPr4M9Iクラスで定義したメソッドを.なんちゃらで呼び出せますってはずなのに
メソッド作ってもいないnewが使えてしまうのが謎
0715デフォルトの名無しさん
2015/02/12(木) 12:11:42.06ID:oLOcoqWqCalls allocate to create a new object of
class's class, then invokes that object's
initialize method, passing it args.
This is the method that ends up getting called whenever
an object is constructed using .new.
0716デフォルトの名無しさん
2015/02/12(木) 13:50:20.19ID:pmmZp4nIputs z # →2
こんなことが出来るのを知った
いままでいちいち
if 3==4 then x=1 else x=2 end
puts x # →2
などとやっていた
0717デフォルトの名無しさん
2015/02/12(木) 13:56:04.42ID:oLOcoqWqa = 3 == 4 ? 1 : 2
0718デフォルトの名無しさん
2015/02/12(木) 14:03:01.16ID:vZuNWRuz0719デフォルトの名無しさん
2015/02/12(木) 14:12:14.17ID:pmmZp4nIありがとうございます
知らないことアバカン(=多いの熊本語)
0720デフォルトの名無しさん
2015/02/12(木) 16:27:53.76ID:qdUt/p4n勝手にObjectクラスを継承するから、何も書いてなくてもObjectクラスのメソッドは使える
0721デフォルトの名無しさん
2015/02/12(木) 21:01:46.12ID:ACguu+ql0722デフォルトの名無しさん
2015/02/13(金) 00:21:20.42ID:qAadHGJaRubyではifも式だからね
たぶんLISP由来だろう
最近の言語ではScalaもそうだね
0723デフォルトの名無しさん
2015/02/13(金) 00:21:39.71ID:CzCNKwo/何かいい方法はないでしょうか?
一応Shell::teeというのを見つけたのですがリファレンスマニュアルが
投げやりな感じで困っています・・・
0724デフォルトの名無しさん
2015/02/13(金) 00:28:06.47ID:qAadHGJaログファイルに出しておいて、tail -F でコンソールで見ればいいんじゃない?
0725デフォルトの名無しさん
2015/02/13(金) 01:20:51.80ID:SVZa3gOzif 式だけでなく、 case 式もある
color_num = case color
when :blue; 0
when :red; 1
when :Yellow; 2
else; -1
これらは「関数型プログラミング」と呼ばれるプログラミング・スタイルのひとつ
詳しくは、以下を参照:
・Rubyによる関数型プログラミング
http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.html
Ruby は「オブジェクト指向な手続き型スクリプト言語」であるけれど、
「関数型プログラミング」にも(他の手続き型言語と比較すれば)極めて適している性質がある
状況に応じて、常識的な「手続き型プログラミング」と簡潔な「関数型プログラミング」とを
自在に使い分けることができるようになることが望ましい
0726デフォルトの名無しさん
2015/02/13(金) 02:16:33.14ID:Hocs4IwUこのスレみているような人は必読の良書だった。
0727デフォルトの名無しさん
2015/02/13(金) 05:54:31.12ID:3tmdVICO個人的に一行whenの場合、文の前はthenだな
何つーか、汎用的な文区切りになっちゃうセミコロンより
whenの一部である以上そうとしか解釈されないthenのが安心感あるというか
…まあ、どうせ複数行whenのときはthen書かずに改行しちゃうから同じっちゃ同じか
0728デフォルトの名無しさん
2015/02/13(金) 13:42:31.60ID:W6lKBquTcaseが値を返すのは関数型で必要とされることの多い性質ではあるけど
それ自体は別に関数型でも何でもないぞ
0729デフォルトの名無しさん
2015/02/13(金) 23:29:34.48ID:v7o1vyZw0730デフォルトの名無しさん
2015/02/13(金) 23:35:16.88ID:qAadHGJaいっそのことLISPぐらいまでいってしまえば、整形はあまり悩まなくてすむのになw
emacs lisp はたまに書くが、整形で悩んだことはほぼない
0731デフォルトの名無しさん
2015/02/14(土) 00:12:54.67ID:/i+i2oPj0732693
2015/02/14(土) 00:27:23.04ID:ng5YU6yI趣味の範疇でruby始めたのですが、
独学の悪いくせで好きなものしかやらない・・・ し覚えない・・。
そこで全体的な知識不足の指標となるかな?
この試験も目指してみようかなと思い立ったしだいです。
別のruby参考資料を買おうか、こっちにしようか悩み中
0733デフォルトの名無しさん
2015/02/14(土) 01:07:33.88ID:ISQup94G広く知識を身につけたいなら基本情報にでも挑戦したほうがRubyプログラミングにおいてもよっぽど役に立つし
Rubyを「使う」スキルが欲しいならRailsでWebサービスでも運営すれば嫌でも身に付く
言語の重箱の隅をつつくのは時間の無駄
0734デフォルトの名無しさん
2015/02/14(土) 01:37:38.64ID:4ueOEeTW変に思えるかもしれないけど他の言語を2つくらい覚えるといいよ
言語の違いなんて大したことではないというのが理解できるとすごく視野が広がる
あんまり特定の言語に執着しないほうがいい
0735デフォルトの名無しさん
2015/02/14(土) 10:04:33.41ID:3EPsJ3bRエディタの対括弧表示見てりゃ間違えないよ
と言うか、括弧を足したり削ったりするときは
現在カーソル位置でなくてそっち見てるかも
0736デフォルトの名無しさん
2015/02/14(土) 13:40:26.34ID:dTMvU3xTRubyのcaseはパターンマッチ(正規表現じゃないぞ)が使えないから、
関数型としては全くもって不足
0737デフォルトの名無しさん
2015/02/14(土) 15:28:57.41ID:15MsuvIHまあ複数できないことが大きな差かもしれんが
0738デフォルトの名無しさん
2015/02/15(日) 10:28:43.99ID:SklWaN/q教えていただけると助かります。
0739デフォルトの名無しさん
2015/02/15(日) 10:46:38.75ID:ABT28a22DSLガ〜とかメタプログラミングが〜とか言ってるのは真似しないほうがいい
元々そんな変態言語ではない
0740デフォルトの名無しさん
2015/02/15(日) 11:28:16.40ID:SklWaN/qありがとうございます。
Nokogiri読みやすそうなので参考になりそうです。
0741デフォルトの名無しさん
2015/02/15(日) 12:50:33.82ID:wv9Dnfvm正解でした、ありがとう。
なにしろRubyは始めたばかりで、ドキュメントの在り処も手探りなんですワ。
0742デフォルトの名無しさん
2015/02/16(月) 03:56:38.95ID:Zn9bWbFW年末に出た外人の翻訳本で、
Rubyの実装系、Ruby1.9のRuby仮想マシンの本。
内容は新しく、Ruby2.0のキーワード引数まで含む
RubyVMは、笹田という日本人が作っていたんだね
2 + 3
2が主体となる数値オブジェクト(レシーバ)
'+'がそのオブジェクトのメソッド
3がそのメソッドの引数
左がオブジェクトで、演算子の左右で、意味が違うんだね。
つまり、関数の糖衣構文
(A + B + C + D).to_s
漏れが、あればよい機能と思うのは、
型の異なるオブジェクトを、幾つかつなげて、
簡単に文字列に変換できるもの
0743デフォルトの名無しさん
2015/02/16(月) 04:44:23.59ID:cj2/WV/Rダウンロードしたフォルダに.rbばかりで.gemが入っていない場合、
どうすればよいですか?
0744デフォルトの名無しさん
2015/02/16(月) 07:44:02.00ID:2rxNb6Sn>(A + B + C + D).to_s
>漏れが、あればよい機能と思うのは、
>型の異なるオブジェクトを、幾つかつなげて、
>簡単に文字列に変換できるもの
'%s%s%s%s' % [A, B, C, D]
"#{A}#{B}#{C}#{D}"
0745デフォルトの名無しさん
2015/02/16(月) 21:06:14.75ID:/Le2iIgbせめて、OracleとLPICにしとけ
0746693
2015/02/16(月) 23:10:02.23ID:aIhcyWTgそれなりに書けるようになってきたのに、以前として読みが厳しい・・・
自分で書いた正規表現も数日立つと・・読めないこともあったり
なにかコツありますか? 演算子の優先順位みたいなコツあるのかしら
0747デフォルトの名無しさん
2015/02/16(月) 23:25:17.19ID:GiwwQ3NFフクロウ本ポチったんじゃなかったのか
0748デフォルトの名無しさん
2015/02/16(月) 23:32:23.50ID:bsos2N+l0749693
2015/02/16(月) 23:34:38.96ID:aIhcyWTgふくろうはちょっと重い(書きぶり)ので
別冊のドリル解きながらふくろうチラ見してる段階です。
0750デフォルトの名無しさん
2015/02/17(火) 00:02:23.67ID:K0RsylMY0751デフォルトの名無しさん
2015/02/17(火) 01:22:40.02ID:Jv+uJpkb[A, B, C, D].join
0752デフォルトの名無しさん
2015/02/18(水) 09:40:42.56ID:49+iv0KkWindowsでsassをコンパイルすると、"\f012"のような文字を収めた変数が文字化けしたようになります。
変数を使用せずに直接スタイルに記述するとちゃんと"\f012"と出力されます。
私の環境のせいかもしれませんが、バックスラッシュがある文字に原因があるように思えます。
これを解消したいのですが、どうしたら良いでしょうか?
Rubyは1.9.3を使っています。
-- test.ssss
$test : "\f012";
.test {
content : $test;
}
-- compile.bat
set LANG=ja_JP.utf8
cmd /c C:\Ruby193\bin\sass %SCSS%\test.scss:%CSS%\test.css --style compressed --sourcemap=none
出力結果 => .test{content:"?"} // ←これを content:"\f012" としたい
0753デフォルトの名無しさん
2015/02/18(水) 15:17:15.21ID:KMXsePc+https://github.com/sass/sass/issues/1395
unquoteを使えばいいらしい
$test1 : \f012;
$test2 : unquote(\f012);
$test11 : unquote('"') + \f012 + '"';
$test22 : unquote('"') + unquote(\f012) + '"';
.test {
content : "\f012";
content : unquote('"') + $test1 + '"';
content : unquote('"') + $test2 + '"';
content : $test11;
content : $test22;
}
文字化けの原因は
$test : "\f012"
をutf16leと解釈されるからみたい
たまらなんなこりゃ
0754デフォルトの名無しさん
2015/02/18(水) 18:49:22.02ID:49+iv0Kkありがとうございます!
色々と試行錯誤してたのですが解決できなくて泣きそうでした。
無事に解決できました、本当に感謝です!
■ このスレッドは過去ログ倉庫に格納されています