■ このスレッドは過去ログ倉庫に格納されています
Ruby 初心者スレッド Part 59
- 1 :デフォルトの名無しさん:2016/10/02(日) 16:50:38.72 ID:kFeo4TbM.net
- プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 58
http://echo.2ch.net/test/read.cgi/tech/1458735404/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
- 2 :デフォルトの名無しさん:2016/10/02(日) 16:51:40.26 ID:kFeo4TbM.net
- たのしいRuby 第5版、2016
Effective Ruby、2015
メタプログラミング Ruby 第2版、2015
Rubyのしくみ、2014
改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015
リファクタリング:Rubyエディション、2010
- 3 :デフォルトの名無しさん:2016/10/02(日) 18:17:48.09 ID:mO5jHYyT.net
- プログラミングElixir、2016
Ruby界隈から、名著が出た。
著者は「プログラミングRuby」のDave Thomas。
関数型言語Elixirは、Ruby + Rails + ErlangVM で、並行処理が得意
Selenium実践入門 ―― 自動化による継続的なブラウザテスト、2016
Seleniumデザインパターン&ベストプラクティス、2015
OSSのブラウザ自動テストツール、Selenium WebDriver を使って、
Rubyでテストを書いた本
プログラマ脳を鍛える数学パズル
シンプルで高速なコードが書けるようになる70問、増井 敏克、2015
CodeIQに掲載された問題を、Ruby, JSなどで解説
「ITエンジニアに読んでほしい!技術書・ビジネス書 大賞(ITエンジニア本大賞)」の受賞作
- 4 :デフォルトの名無しさん:2016/10/02(日) 18:43:05.77 ID:QvMQ+uX0.net
- >>1 乙
- 5 :デフォルトの名無しさん:2016/10/02(日) 22:05:08.76 ID:mO5jHYyT.net
- Linux API を、Windows API に変換するので、Ubuntu64 のバイナリがそのまま動く、
Windows Subsystem for Linux (WSL) で、Ruby, Rails をやっている人いる? 調子はどう?
apt-get で、パッケージもインストールできる
日本語も使える端末、ConEmu。
GUI表示用のXサーバー、Xming X Server for Windows
- 6 :デフォルトの名無しさん:2016/10/03(月) 07:31:26.25 ID:Sy28Ke7B.net
- 今試してるとこ
Win対応はRubyのお荷物になってるから、
これを機にWin関連のコードがRuby本体やGemsから一掃されてくれるといいな
- 7 :デフォルトの名無しさん:2016/10/03(月) 10:44:03.35 ID:GNQlIOXR.net
- Rubyはもうオワコン
- 8 :デフォルトの名無しさん:2016/10/03(月) 17:50:44.12 ID:BQDt10lP.net
- rubyのopengl関連のラブラリがどうなってるのか分かり辛いから、
自分で調べたんだけど下のであってる?
・今はlarskanis/openglとvaiorabbit/ruby-openglがある
・larskanis/openglのほうは(vaiorabbit/ruby-openglのドキュメント読むと)opengl2とかよばれている
・opengl2表記から初代opengl(既に開発停止、サイトもなくなっている)が存在する
- 9 :デフォルトの名無しさん:2016/10/03(月) 17:52:09.82 ID:BQDt10lP.net
- 足りていない箇所があったら教えて
- 10 :デフォルトの名無しさん:2016/10/04(火) 20:13:20.14 ID:BihL0/mM.net
- Cで書かれたメソッドにポインターを渡す場合どうしたらいいのかわからない
ruby側で「メモリ確保してポインター渡す」にはどうすればいいの?
- 11 :デフォルトの名無しさん:2016/10/04(火) 22:52:38.60 ID:1BCIDfGo.net
- WSLだとRails簡単に動いた
少なくともWin対応完全終了の口実としては十分なレベルだなこれ
- 12 :デフォルトの名無しさん:2016/10/05(水) 06:20:29.41 ID:JVWzXY3A.net
- mswin32だろうがmingw32だろうが需要があるから
どんなに嫌ってる人がいようと続いていく
- 13 :デフォルトの名無しさん:2016/10/05(水) 14:43:41.37 ID:e2s2BqVL.net
- >>10
ffi
- 14 :デフォルトの名無しさん:2016/10/06(木) 01:25:08.92 ID:b/FSG7/S.net
- 環境
win7-64bit
ruby-2.2.4(32bit)とruby-2.3.1(32bit)をrbenvを使って二つインストールしてる
数日前から2.3.1の方でgemのアップデートやインストールをしようとすると
Updating installed gems
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certif
icate verify failed (https://api.rubygems.org/specs.4.8.gz)
こんなエラーがでて、上手くいかない
2.2.4の方に切り替えるとアップデートやインストールが上手くいく
正直どこ弄れば良いかさっぱりだわ
- 15 :デフォルトの名無しさん:2016/10/06(木) 01:28:43.41 ID:EykuvLuN.net
- gemのバージョンは?
- 16 :デフォルトの名無しさん:2016/10/06(木) 01:37:19.84 ID:b/FSG7/S.net
- >>15
2.2.4の方が2.6.7、2.3.1の方が2.5.1でした
古いのが原因かと思ってgem update --systemを試しましたが同じくSSLのエラーを吐いてダメでした……
- 17 :デフォルトの名無しさん:2016/10/06(木) 12:40:09.87 ID:4kR5N43K.net
- どうせ隔離して使うんならVagrantでいいじゃん
Windowsで無理にrbenv使う意味がわからん
- 18 :デフォルトの名無しさん:2016/10/06(木) 16:10:34.56 ID:EykuvLuN.net
- >>16
Ruby 2.2.4 の方の gem を 2.5.1 にして比較してみては?
- 19 :デフォルトの名無しさん:2016/10/06(木) 18:27:59.15 ID:TUUHw8QE.net
- ぐぐったらSSLやサーバ関連の問題みたいだな
以下参照して
http://d.hatena.ne.jp/komiyak/20130508/1367993536
- 20 :デフォルトの名無しさん:2016/10/06(木) 23:45:09.75 ID:80e57pGo.net
- 質問お願いします。
cronでrubyを動かすと、下記エラーが出てしまうのですが、
どう書けば良いのでしょうか?
また、なぜcronだとエラーしてしまうのでしょうか?
/hoge/nokogiri.rb: line 4: syntax error near unexpected token `('
/hoge/nokogiri.rb: line 4: `ENV['SSL_CERT_FILE']=File.expand_path(File.dirname(__FILE__)+
- 21 :デフォルトの名無しさん:2016/10/07(金) 01:04:31.76 ID:yL88npXy.net
- cron で皆がエラーになるのは、一般ユーザーよりも、環境変数が少ないから
- 22 :デフォルトの名無しさん:2016/10/07(金) 18:41:40.46 ID:CUba1Zl4.net
- >>13
返事が遅くなったけど、ありがとう
- 23 :デフォルトの名無しさん:2016/10/09(日) 16:23:29.55 ID:+q97XIgi.net
- rubyってインストールできたらあとはコマンド入力すればいいの?
nokogiriっての使いたいんだけど gem install nokogiriってうっても変なエラーでるだけなんだけど
- 24 :デフォルトの名無しさん:2016/10/09(日) 16:29:26.13 ID:zS2VLXB8.net
- 絶望的に向いてない人はいる
人生諦めが肝心
- 25 :デフォルトの名無しさん:2016/10/09(日) 16:37:40.41 ID:+q97XIgi.net
- 自己解決したわ 俺は向いてるみたいだ
- 26 :デフォルトの名無しさん:2016/10/09(日) 17:08:11.44 ID:+q97XIgi.net
- requireが通らないんだが?は?
- 27 :デフォルトの名無しさん:2016/10/09(日) 17:09:47.41 ID:+q97XIgi.net
- コードの理解はそんな難しくなさそうなのに手前がめんどくさいんじゃ
- 28 :デフォルトの名無しさん:2016/10/09(日) 17:29:16.41 ID:ztakSrvW.net
- gem search nokogiri
と打っても*** REMOTE GEMS ***
だけしか出てこないんですけど
みなさん同じ症状ですか?
それとも私だけでしょうか?
- 29 :デフォルトの名無しさん:2016/10/09(日) 18:12:12.28 ID:okPyT/Vt.net
- 少し上のレスを読む and 自分の環境を書く くらいはしましょうね
$ gem install rubygems-update --source http://rubygems.org/
$ update_rubygems
$ gem search -r nokogiri
- 30 :デフォルトの名無しさん:2016/10/11(火) 10:02:56.75 ID:/UUIzz58.net
- rubyで深層学習するのと他の言語、例えばCやらpythonで深層学習するのと、どこが違うの?
rubyでも同じようなライブラリ作成したら、同じになる?
それとも言語仕様のそもそもの違いで無理なの?
rubyならなんでも出来そう、かつ楽な書き方が出来そうな気がするんだけど
- 31 :デフォルトの名無しさん:2016/10/11(火) 12:03:30.19 ID:aUckxkie.net
- Rubyにはnumpyやscipyやmatplotlibみたいな科学技術計算のためのライブラリが無いから極めて厳しい
- 32 :デフォルトの名無しさん:2016/10/11(火) 22:02:35.19 ID:gtjckSki.net
- つまり誰かがそのライブラリに相当するものを作ってくれれば・・・
- 33 :デフォルトの名無しさん:2016/10/12(水) 13:13:10.27 ID:2jtU3Zls.net
- 深層学習用に、既存のCライブラリのrubyバインディングを書くのと、ruby用ライブラリを新規で書くの
どちらもそんなに違い出なさそうに見えるけど実際はどうなんだろ
やっぱりそれぞれ書くのが難しい部分とかある?
- 34 :デフォルトの名無しさん:2016/10/12(水) 15:25:05.17 ID:lA7OeQ/m.net
- コードなんて実際簡単なんだろうな
金になる商売はむずかしいむずかしい言われるもんなんだろ
- 35 :デフォルトの名無しさん:2016/10/12(水) 17:14:15.29 ID:Kt1Sq3SL.net
- fruits=["apple", "orange", "grape", "tomato", "doria", "peach"]
apple_price=[2, 6, 7, 13, 6, 20]
puts "#{fruits[0]}_price"[4]
上のコードでapple_price[4]の要素6を取り出したいのですが、"e"が表示されます。これは"apple_price"という文字列の
5番目を見ている、というのは理解できます。6を表示させるにはどうすればよいのでしょうか。よろしくお願いします。
- 36 :デフォルトの名無しさん:2016/10/12(水) 17:41:20.38 ID:m4XsbzZB.net
- イマイチ何を目的としているのかわからんけど、
6を表示するだけならputs eval("#{fruits[0]}_price")[4]
- 37 :デフォルトの名無しさん:2016/10/12(水) 19:02:48.90 ID:Kt1Sq3SL.net
- おお、すごい!ちゃんと6が表示されました。ありがとうございます。
ちょっと、今ググってみると、「「eval」は、Rubyの文字列を評価するメソッドです。」とあり、
評価するという意味が分かりませんが、とにかく文字列をつなげて“配列名”として扱える
ことができるのはわかりました。
なんでこんな妙なこと?をしているのかというと、配列名がすさまじく増えてきた上に、長くなってきて
見苦しくなってきたので、配列名の単語リスト配列を作成してその配列から番号で拾ってきてつなげれば
短くなって済むじゃんという動機でした。ところが、それらの文字がうまくつながらないので困っていた次第です。
とにかく、ありがとうございました。もうちょっと調べてみます。
- 38 :デフォルトの名無しさん:2016/10/12(水) 19:15:43.53 ID:5MBS+YlH.net
- Hashでやれば
- 39 :デフォルトの名無しさん:2016/10/12(水) 19:16:58.95 ID:AoMg70NU.net
- そういう場合はHash使おう
- 40 :デフォルトの名無しさん:2016/10/12(水) 20:26:38.78 ID:Kt1Sq3SL.net
- いや、このevalってすごいですね。つまり、"#{fruits[0]}_price"はこの時点では配列名でもなんでもなく
ただの文字列だけど、eval("#{fruits[0]}_price")することによって、配列名としての役割をもたせられた?
というわけですね。要するに二次嫁を実際に動かすメソッドというわけですよね。
なんてすごいんだ。これからはこれを使いまくろう。素晴らしいものを教えていただきありがとうございました。
ハッシュは書くのがめんどくさいので、これにします。でも情報ありがとうございました。
- 41 :デフォルトの名無しさん:2016/10/12(水) 20:38:17.90 ID:9oDwxE2X.net
- こういう奴がスクリプトインジェクション脆弱性を作り込むんだよな
- 42 :デフォルトの名無しさん:2016/10/12(水) 21:18:02.32 ID:golIGFQa.net
- まあ「すごいけどなんかキモい」と感じて欲しいところではある
- 43 :デフォルトの名無しさん:2016/10/12(水) 22:38:29.15 ID:nShtFhcR.net
- そんな事でevalなよ
- 44 :デフォルトの名無しさん:2016/10/13(木) 09:04:29.36 ID:1bl1DIi2.net
- >>40
hashは配列を変換しても作れるし、多次元配列を使ったとしても
evalとか使うよりもよほど簡潔に書けると思うが。
- 45 :デフォルトの名無しさん:2016/10/13(木) 11:10:37.62 ID:a7epO2oP.net
- >>40-41
perlのときにも同じ展開を聴いた覚えがある
- 46 :デフォルトの名無しさん:2016/10/13(木) 18:51:51.44 ID:bdwv69IA.net
- >>44
わかりました、もうちょっと勉強します。
あとevalについて調べてみましたが、なんだか多用するようなメソッドじゃないみたいです。ただ、こんな
強力なメソッドがあることを知ることができたのは大きな収穫でした。
- 47 :デフォルトの名無しさん:2016/10/13(木) 19:08:12.98 ID:Xwk5OgLP.net
- popenの方が強力
- 48 :デフォルトの名無しさん:2016/10/14(金) 01:49:18.02 ID:lTvGl+LI.net
- twitterとrubyで質問です。
rubyで自分のフォロワー一覧、あと自分のフォロワーがそれぞれフォローしてる人を一覧で得たいんですが、どうコードを書けばいいでしょうか?
rubyのバージョンは2.3.1です。
client.updateを使ってツイートを投稿することはできました。
- 49 :デフォルトの名無しさん:2016/10/14(金) 07:05:19.57 ID:xv7XrH2t.net
- Twitter APIとRubyクライアントのドキュメントを読む
英語読む気ないなら諦めましょう
- 50 :デフォルトの名無しさん:2016/10/14(金) 14:11:08.06 ID:4bSlGLeL.net
- Twitter APIの使い方まとめ
https://syncer.jp/twitter-api-matome
エンドポイントの一覧の、
ユーザー間の関係・フォロー・フォロワー、あたりを参照
- 51 :デフォルトの名無しさん:2016/10/16(日) 20:26:06.98 ID:/verdR3z.net
- ちょっと思い立ったんだけど、require や import や 継承した
ライブラリ、モジュール、クラスやメソッドのソースコードを
表示したり、そのソースのファイルパスを返すメソッドがあったら
便利じゃない?
そういうメソッドあるのかな。
- 52 :デフォルトの名無しさん:2016/10/16(日) 20:45:49.85 ID:bFWPoPH4.net
- pry使え
- 53 :デフォルトの名無しさん:2016/10/16(日) 22:04:09.40 ID:B0JyF1+C.net
- たぶん、メタプログラミング・リフレクションに、あるだろ
- 54 :デフォルトの名無しさん:2016/10/17(月) 04:13:11.14 ID:G5XuU76K.net
- https://www.kmc.gr.jp/~ohai/rubysdl_doc.html
ここを参考にして、
SDL::Event#mouse_x
でマウスのx座標を取得しようとしたら#より右側がコメントアウト扱いになってしまう
解決策をおしえてください
- 55 :デフォルトの名無しさん:2016/10/17(月) 05:37:21.81 ID:xsBX/OJB.net
- >>54
それが出てくるってことは重症だ
君の使ってるRubyの参考書のRubyのインスタンスメソッドの説明はどうなってる
- 56 :デフォルトの名無しさん:2016/10/17(月) 06:27:05.93 ID:9oMVPCEa.net
- # から行末までは、Rubyではコメントになる
# を、.(ドット)に変えれば、どうなる?
- 57 :デフォルトの名無しさん:2016/10/17(月) 09:51:34.36 ID:PK8gee68.net
- http://vipper.2ch.net/test/read.cgi/news4vip/1476644507/
- 58 :デフォルトの名無しさん:2016/10/17(月) 12:43:13.80 ID:/xEkgA1M.net
- unlessとか気持ち悪いんですがこれはよく使うものなんですか?
- 59 :デフォルトの名無しさん:2016/10/17(月) 12:47:09.09 ID:O9P4o+SC.net
- うん
とっても
- 60 :デフォルトの名無しさん:2016/10/17(月) 12:56:06.33 ID:wcVEram7.net
- いまいち読み下しにくいので後置でのみ使う人もいる
流れによっては if + 否定的条件 であえて書くときもある
なんでもかんでも機械的にunlessに置き換えれば好ましいというわけでもない
- 61 :デフォルトの名無しさん:2016/10/17(月) 13:10:36.28 ID:/xEkgA1M.net
- とりあえずunless覚えておきます
というかrailsのためだけにrubyを覚えようと思っているぐらいなので極めるつもりはないですけど
- 62 :デフォルトの名無しさん:2016/10/17(月) 13:25:44.82 ID:8eStTtOD.net
- unlessは必ず副作用があるから、関数型っぽいスタイルで作るならほとんど使う機会は無いはず
- 63 :デフォルトの名無しさん:2016/10/17(月) 14:17:13.45 ID:4xjyqR1P.net
- 指定したディレクトリごとにgemのライブラリを分けてインストールする方法ありませんか?
bundlerだとプロジェクトごと管理されてしまうので使いまわせませんよね
- 64 :デフォルトの名無しさん:2016/10/19(水) 17:08:04.64 ID:6/Oyo1yl.net
- ruby 2.2.3
すいか→からす のようにしりとりの正誤を
判定するプログラムを作りたい。
実行する時に「ruby 〜.rb すいか からす」
のように2つの言葉を入れて実行させると
エラーが出てしまう。
str1=すいか、str2=からすと指定すれば
上手くいくのだけど…
何が間違っているのか教えてください
def judge(str1,str2)
if str1.reverse[0] == str2[0] then
return true
else
return false
end
end
##############
str1 = ARGV[0]
str2 = ARGV[1]
p judge(str1,str2)
sssp://o.8ch.net/i5vc.png
- 65 :デフォルトの名無しさん:2016/10/19(水) 17:36:03.73 ID:yr0BTWsi.net
- 俺の環境ではエラーにならないので原因はスクリプトではないかと。
引数が1つだとうまくいくのか?
エラーが出る場合は環境とどんなエラーが出たかも書かないと。
- 66 :デフォルトの名無しさん:2016/10/19(水) 17:42:23.59 ID:6/Oyo1yl.net
- 1つだと上手くいきます
if文のところに
undefine method '[]' for nilというエラーが。
- 67 :デフォルトの名無しさん:2016/10/19(水) 17:45:20.12 ID:QoKZwwi3.net
- エラーは訳すな約すな
標準入力のエンコーディングが変なことになってる環境でreverseが文字単位にならないと推測
rubyのバージョンと実行環境
- 68 :デフォルトの名無しさん:2016/10/19(水) 17:56:18.75 ID:yr0BTWsi.net
- >>66
p ARGVだけにしたら何が出る?
- 69 :デフォルトの名無しさん:2016/10/19(水) 18:19:16.64 ID:4/E1zdGS.net
- >>64
str1.reverse[0] は str1[-1] で十分でしょ。
def judge(str1,str2); str1[-1]==str2[0]; end
>str1=すいか、str2=からすと指定すれば
これがエラーにならないのが、むしろ謎。
- 70 :デフォルトの名無しさん:2016/10/19(水) 18:31:10.49 ID:6gjRUSSv.net
- ruby reverse.rb からす すいか
↓
reverse.rb:2:in 'judge' : undefine method '[]' for nil : NilClass (NoMethodError)
from reverse.rb:13:in '<main>'というエラー
ARGVのみにしてもエラーが出る
- 71 :デフォルトの名無しさん:2016/10/19(水) 19:12:58.53 ID:r8TZ1Dhr.net
- 68の言うとおり
p ARGV
を実行してみたら?
コマンドライン行のコピーと結果の貼り付けも忘れずに
- 72 :デフォルトの名無しさん:2016/10/19(水) 19:19:47.78 ID:I4oLsIwo.net
- >>64
def judge(str1,str2)
str1.reverse[0] == str2[0]
end
def judge2(str1,str2)
str1.chars[-1] == str2.chars[0]
end
def judge3(str1,str2)
str1.chomp.split(//)[-1] == str2.chomp.split(//)[0]
end
def f(a, b)
[a, b, judge(a, b), judge2(a, b), judge3(a, b)]
end
p f("すいか", "からす")
p f(ARGV[0], ARGV[1]) if 2 <= ARGV.size
p ARGV
↑で実行してみた結果↓
["すいか", "からす", true, true, true]
["からす", "すいか", true, true, true]
["からす", "すいか"]
参考までに…
ちなみにruby 2.0.0
- 73 :デフォルトの名無しさん:2016/10/19(水) 19:36:52.07 ID:o0vkn/jY.net
- からすとすいかの間の空白が全角とか?
- 74 :デフォルトの名無しさん:2016/10/19(水) 22:29:42.17 ID:ezmv6hmC.net
- require "jcode"
はしてある?
- 75 :デフォルトの名無しさん:2016/10/19(水) 22:46:03.74 ID:3bJ4nK02.net
- まあ全角空白でないのならレンタルサーバでRuby1.8とか中古本のCD-ROMでRuby1.9 for Windowsとかそういう可能性も視野に入るな
- 76 :デフォルトの名無しさん:2016/10/20(木) 03:15:22.25 ID:/8DsWqlk.net
- >>74
テスト
- 77 :デフォルトの名無しさん:2016/10/20(木) 09:48:49.92 ID:3pYX1TsE.net
- >>70
p ARGV以外はコメントアウトしろよ。
- 78 :デフォルトの名無しさん:2016/10/22(土) 05:56:30.44 ID:eX6AWpPB.net
- Ruby 2.2.5p319 + dxruby + gvimで、gvimからコマンドプロンプトを通じて実行すると画像Image.load(のあとが文字化けして画像が読めません。
コマンドプロンプトをデスクトップから立ち上げると問題なく起動します。
何が原因でしょうか?
- 79 :デフォルトの名無しさん:2016/10/22(土) 08:36:01.81 ID:eX6AWpPB.net
- 参照画像を絶対パスにしたら表示できましたが、全画像を絶対パスへと補完できるとは言え気持ち悪いです。
相対パスで書くと実行時に文字化けした状態で絶対パスになってるので文字コードの違いによるものでしょうか?
- 80 :デフォルトの名無しさん:2016/10/22(土) 10:55:27.68 ID:O48rD9qT.net
- /hoge(ASCII)/fuga(EUC)/hage(UTF-8)/moge(SJIS)/ みたいなパス作ってるとかね
Ruby ならあり得るわ
- 81 :デフォルトの名無しさん:2016/10/22(土) 10:55:50.24 ID:jUJZAwsX.net
- 文字化け?
- 82 :デフォルトの名無しさん:2016/10/22(土) 19:50:27.76 ID:8CeWG7Cb.net
- パスの各コンポーネントをそれぞれcapitalizeしたいと思ったら
path.split('/').map(&:capitalize).join('/')
みたいにするしかないですか?
ありがちな処理なのでもっとあっさり書く方法があったりしないかなって
- 83 :デフォルトの名無しさん:2016/10/22(土) 20:00:43.51 ID:jUJZAwsX.net
- ありがちなの?ないないでしょ
- 84 :デフォルトの名無しさん:2016/10/22(土) 20:10:25.86 ID:8CeWG7Cb.net
- 英語圏の人ならわりとやるんじゃないかなあと思ったんですが
そうでもないのかな
- 85 :デフォルトの名無しさん:2016/10/23(日) 01:50:27.34 ID:VGMahutR.net
- >>80自己解決です
Cygwin + Vimでutf-8に設定したら幸せになれました
- 86 :デフォルトの名無しさん:2016/10/23(日) 21:51:04.30 ID:ePWxsG1g.net
- でかいファイルをシーケンシャルで読む時にIO#readでちまちま読むとえらい遅いけど
別スレッドである程度まとまったブロックとして読み込んでバッファリングするようにすると速くなる
でもこのコードを書くのはかなり面倒・・・非同期な読み書きを簡単に実現してくれる
ライブラリとかないですか?
- 87 :デフォルトの名無しさん:2016/10/24(月) 06:15:31.40 ID:o4tpRTmI.net
- dxrubyでスプライトを敵という配列、味方という配列にそれぞれプッシュして入れてます。
敵との距離が一定以下になれば味方が最寄りの敵を攻撃するようにしたいです。どうすれば良いですか?
- 88 :デフォルトの名無しさん:2016/10/24(月) 08:43:55.39 ID:b4iOClrl.net
- >>87
一対の味方の敵の位置ベクトルをそれぞれa, bとすると、aとbの距離は|a-b|。
味方と敵はそれぞれ複数いるので、一番素直な計算なら(味方の総数)×(敵の総数)通りのペア全てに対して上式で距離を求め、距離が閾値以下かどうかを判定してやればいい。
疑似コードで書けばこんな感じ。
for a in 味方の位置ベクトルの配列
for b in 敵の位置ベクトルの配列
if |a-b| < 閾値 then aがbを攻撃する
- 89 :デフォルトの名無しさん:2016/10/24(月) 09:04:08.10 ID:8wVQUY50.net
- ありがとうございます。
あれから思いつきで攻撃判定用にスプライトに円を書いてSprite.check(味方,敵)をやってたのですが、こちらのほうが軽くていいですね。
こちらに書き換えてみたらうまくいきました。
- 90 :デフォルトの名無しさん:2016/10/26(水) 21:15:33.13 ID:hpPrYAZA.net
- str =
- 91 :デフォルトの名無しさん:2016/10/26(水) 21:18:43.85 ID:hpPrYAZA.net
- str = " I am a boy "
puts str.split(" ")
とすると
I
am
a
boy
と出力されます。
puts str.sizeとすると
全ての文字数を数えてしまいます。
一単語ずつ文字数を数えて出力するには
どうしたらいいでしょうか。
- 92 :デフォルトの名無しさん:2016/10/26(水) 21:25:19.00 ID:Vi7enIW1.net
- >>91
puts str.split(" ").size
- 93 :デフォルトの名無しさん:2016/10/26(水) 21:31:21.64 ID:3haCvHGL.net
- puts str.split(" ").map(&:size)
puts str.split(" ").map {|x| x.size }
- 94 :92:2016/10/26(水) 21:33:58.54 ID:Vi7enIW1.net
- あ、単語の数じゃないのね失礼w
- 95 :デフォルトの名無しさん:2016/10/26(水) 21:44:17.35 ID:hpPrYAZA.net
- できました。ありがとうございます。
- 96 :デフォルトの名無しさん:2016/10/27(木) 00:41:35.12 ID:WMnZ+0Yu.net
- >>90-91
2chのバグだろ
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" を、\" とエスケープすれば、どうだろう?
- 97 :デフォルトの名無しさん:2016/10/27(木) 10:32:10.58 ID:2MnkRHxj.net
- DXrubyで、配列に画像、名前、数値と言った具合に値を格納したいので構造体を使ってます。
しかし、arr[n].name で名前は表示できるのですが、画像が描画できません。どうしたら良いでしょうか?
require 'dxruby'
arr = []
Units = Struct.new(:fig, :name, :lv)
for i in 0..511
img = Image.new(10, 10, color = [i * 3 % 256, i * 5 % 256, i * 7 % 256])
spr = Sprite.new(i % 100 * 10, i / 100 * 10, img)
arr[i] = Units.new(spr, "ice", i * 1.2)
end
Window.loop do
Sprite.draw(arr)
(arr[4].fig).draw
break if Input.key_down?(K_RETURN)
end
- 98 :デフォルトの名無しさん:2016/10/27(木) 12:20:18.56 ID:2MnkRHxj.net
- もう一つお聞きしたいです。
空の配列に対してarr[810] = object
とすると、arr[0]に入ってしまいます。
試しに、あらかじめ、配列の全要素に0とかを代入してやると正しい位置に入ります。
insertメソッドを使ってみても同様でした。
配列の長さが予めわからない場合、これだとできない気がするのでなるべくこの方法は取りたくありません。
スマートに挿入する方法は無いですか?
- 99 :デフォルトの名無しさん:2016/10/27(木) 12:21:56.63 ID:2MnkRHxj.net
- >>98に補足
現在の配列の添字の最大数を超えて挿入したときの挙動はpushみたいでした。
- 100 :デフォルトの名無しさん:2016/10/27(木) 13:09:46.97 ID:AljoQzp1.net
- arrにはUnitsが入っててUnitsにはdrawがないから。
配列の話は君の勘違いでしょう
- 101 :デフォルトの名無しさん:2016/10/27(木) 21:29:01.57 ID:4hI3qXiG.net
- プログラムゲームをやっていたら
以下のような問題が出たのですが
for i in 4..0 do と書いてもダメなようで
どのようにすれば良いのでしょうか?
#4から0を改行区切りで出力してください
for i in 4..0 do
puts i
end
- 102 :デフォルトの名無しさん:2016/10/27(木) 21:33:26.89 ID:IpcVW8ex.net
- >>101
(1) 出力するときに 4-i を出力する
(2) Integerクラスで使えそうなメソッドがないか探す
好きな方を選べ
- 103 :101:2016/10/27(木) 22:06:29.82 ID:4hI3qXiG.net
- 下のコードで動きましたが
(0..4).to_a.reverse.each do |i|
puts i
end
iをデクリメントすることができないとか
ちょっと衝撃でした
最近はオブジェクトを操作するんで
for文なんて使わないでしょうけど
- 104 :デフォルトの名無しさん:2016/10/27(木) 22:13:34.88 ID:IpcVW8ex.net
- >>103
Range クラスの説明を読め
- 105 :デフォルトの名無しさん:2016/10/27(木) 22:42:19.91 ID:qlBkdymK.net
- 上で書かれてるようにIntegerの4.downto(0)でどーぞ
より汎用的なのが欲しかったらstepを使ってね
- 106 :101:2016/10/27(木) 22:55:48.72 ID:4hI3qXiG.net
- PHPなら
for ($count = 4; $count > 0; $count--){
}
と、直感的に書けるのに
Rubyってそういう言語なんだなと思いました
- 107 :デフォルトの名無しさん:2016/10/27(木) 23:03:14.77 ID:qlBkdymK.net
- >>98
DXRuby使ったことないから変なこと言ってるかもだけどHashとかと勘違いしてる可能性はない?
少なくともArrayは指定した要素数なければ自動的に拡張されるはずだし、リファレンスマニュアルにもそう書いてる
- 108 :デフォルトの名無しさん:2016/10/27(木) 23:14:12.71 ID:IpcVW8ex.net
- >>106
それは直感的というんじゃなくて、「PHPに慣れてる人から見れば」というだけだ
PHPのような書き方のループをほとんど使わない言語はたくさんある
- 109 :デフォルトの名無しさん:2016/10/27(木) 23:52:33.07 ID:HseNjWnT.net
- >>106
直感的といいながらそれだと0が出力されない件について。
>>101「4から0を改行区切りで出力してください」
- 110 :デフォルトの名無しさん:2016/10/28(金) 00:28:10.54 ID:W/QcN0Ng.net
- これは恥ずかしい直感w
俺ならこうする
puts (0..4).to_a.reverse
- 111 :デフォルトの名無しさん:2016/10/28(金) 00:30:51.22 ID:hY3IWwKu.net
- PHPは、JSよりも、クソだろ
Rubyでは、ほとんどバグを作ることはない。天国
- 112 :デフォルトの名無しさん:2016/10/28(金) 02:06:17.44 ID:hybKxCis.net
- >>110
to_aしてreverseはこねくり回しててキモい
- 113 :デフォルトの名無しさん:2016/10/28(金) 16:37:59.02 ID:Gcdt9agW.net
- >>100解決しましたありがとうございます
- 114 :デフォルトの名無しさん:2016/10/29(土) 13:16:09.07 ID:Z9R3Bpkc.net
- 複数のEnumerableを同期させる一般的でエレガントな書き方って何?
元ネタが無限List同士の足し算なんで[]は使えない。
Lisp系のmapのように複数のEnumerableで要素毎に演算させたいのだけど。
一般的とかエレガント、とかいうのは言葉の綾なので
俺ならこうするっていうコードでいいです。
- 115 :デフォルトの名無しさん:2016/10/29(土) 13:30:26.15 ID:Y7alBFBP.net
- >>114
まずは自分がサンプル出してみようぜ
イマイチ何をしたいのか分からないんで
- 116 :デフォルトの名無しさん:2016/10/29(土) 13:47:23.31 ID:pNJKjv6A.net
- Lazy#zip とは違うん?
- 117 :114:2016/10/29(土) 15:46:26.62 ID:Z9R3Bpkc.net
- >>115
無限Listじゃないけど、
a = [1, 2, 3, 4, 5]
b = [2, 3, 4, 5, 6]
c = []
(0..4).each do |i|
c << a[i] + b[i]
end
こーゆー複数のEnumerableの要素同士の演算をやりたくて、
[]を使わないコードの一般的な書き方。
- 118 :デフォルトの名無しさん:2016/10/29(土) 15:56:09.74 ID:Y7alBFBP.net
- >>117
だったら >>116 の通りだね
無限だったら Enumerable::Lazy#zip だし、有限なら Enumerable#zip
- 119 :デフォルトの名無しさん:2016/10/29(土) 23:44:35.86 ID:FqWL80JH.net
- a= 1.step.lazy
b= 2.step.lazy
p a.zip(b).map{|(x,y)|x+y}.take(10).force
こんな感じかな
- 120 :デフォルトの名無しさん:2016/10/30(日) 06:16:43.08 ID:6aoQoQ7p.net
- いま友人と競技プログラミングのようなことをしているのですが
処理速度にインデントの有無や変数名・メソッド名の長さは影響するのでしょうか?
- 121 :デフォルトの名無しさん:2016/10/30(日) 07:22:50.93 ID:E1a/AFOu.net
- >>120
極端な長さ(100万文字とか)でない限りは無視できるレベル
- 122 :デフォルトの名無しさん:2016/10/30(日) 07:33:28.32 ID:3gvxzMHV.net
- >>120
標準添付ライブラリの benchmark で測ってみ
- 123 :114:2016/10/30(日) 12:14:06.69 ID:EmeJsRHl.net
- >>118
>>119
ありがとうございました。
元ネタも119のやり方でいけることを確認しました。
zipの使い方はもう少し勉強してみます。
- 124 :デフォルトの名無しさん:2016/10/30(日) 13:42:37.03 ID:3A6g5SNv.net
- >>121
>>122
ありがとうございます
短くしたりして10回行った平均タイム計測して比較していたのですが
言われてみれば短くなったような気がするけど変わってないような気もする程度で困っていました
ほんとうにありがとうございました
- 125 :デフォルトの名無しさん:2016/10/30(日) 17:08:51.99 ID:DhcMHpiw.net
- symbolのhashがぶつからなければ遅くならない
- 126 :デフォルトの名無しさん:2016/10/30(日) 17:10:16.01 ID:DhcMHpiw.net
- つまりひとつひとつの文字数を気にするより
変数名・メソッドの総数が(それぞれ数文字程度でも何億個もあれば)問題
- 127 :デフォルトの名無しさん:2016/11/01(火) 03:29:08.77 ID:Y1KW6BLy.net
- 下の例文みたいにバッククォート文の中で新たにruby動かして文字を表示させて、
そのバッククォート文の帰り値をさらに表示させたんですが、
えらくquoteされてて、帰り値を他の操作に使うには扱いにくいです
なんとかして元に戻せないでしょうか
例文
p `ruby -e 'p "what \n time \\n is \\\n it"'`
- 128 :デフォルトの名無しさん:2016/11/01(火) 07:11:46.65 ID:LAzD7QHV.net
- 普通にeval使えばいいんじゃないか
- 129 :デフォルトの名無しさん:2016/11/01(火) 13:46:39.38 ID:jrgGST5A.net
- pやppだとpretty-printするから
そのまま出力したい場合はputsとかIO#writeで
- 130 :デフォルトの名無しさん:2016/11/02(水) 08:27:48.48 ID:haJxcE0h.net
- p は美しくないぞ
- 131 :デフォルトの名無しさん:2016/11/02(水) 14:27:05.74 ID:tET8fuT+.net
- amazon apiで在庫検知したのどうやってツイッターにpostすればいいんですか^^;
- 132 :デフォルトの名無しさん:2016/11/02(水) 16:49:50.54 ID:db1quxwb.net
- twipy
- 133 :デフォルトの名無しさん:2016/11/03(木) 08:10:12.47 ID:lfIkemy8.net
- pp使うときってrequire 'pp'するじゃないですか?
でもppなんて通常デバッグ用ですよね?
一時的にrequireするだけでソースコードに残さないですよね?
そんなものをいちいち書きたくありません。
.rubyrc みたいなのでrequire 'pp'書いておけば
どのスクリプトからでも使えるよみたいなのないですか?
Railsの話ではありません
- 134 :デフォルトの名無しさん:2016/11/03(木) 10:30:21.74 ID:57gZHyJM.net
- コマンドラインオプションでええやん
- 135 :デフォルトの名無しさん:2016/11/03(木) 10:51:02.30 ID:6FeMk1RE.net
- import .rubyrc
- 136 :デフォルトの名無しさん:2016/11/03(木) 13:29:30.56 ID:lfIkemy8.net
- なさそうですね。ありがとうございました。
- 137 :デフォルトの名無しさん:2016/11/03(木) 17:22:53.81 ID:DhApkK4z.net
- 環境変数RUBYOPTにオプションを設定する
-rpp とか指定しておけばいい
- 138 :デフォルトの名無しさん:2016/11/03(木) 19:08:39.80 ID:lfIkemy8.net
- >>137
動きました。ありがとうございました。
これでコードレビューで、使ってないライブラリの
requireをコミットするんじゃねーよってドヤ顔できます。
- 139 :デフォルトの名無しさん:2016/11/04(金) 08:04:24.16 ID:je13exBR.net
- pry 使え
- 140 :デフォルトの名無しさん:2016/11/05(土) 09:03:33.72 ID:3jWRFMI3.net
- JavaScriptの分割代入みたいな簡単にかける構文はありませんか?
let obj = {a: 1, b: 2, c: 3}
let {a, b} = obj
console.log(a)
これすごく関数の引数にも使えるから便利なんです
function foo({a, b}) { console.log(a) }
foo(obj)
あまり使いませんがネストされたオブジェクトでも一発でとってこれちゃうというw
let obj = {a: 1, b: {bb: {bbb: 2}}}
let {b:{bb:{bbb}}} = obj
- 141 :デフォルトの名無しさん:2016/11/05(土) 09:08:44.59 ID:3jWRFMI3.net
- あともう一つ。
let obj = {
a: 1,
foo() { console.log(this.a) },
}
obj.foo() // 1と出力
もしくは、
let obj = new class {
constructor() { this.a = 1 }
foo() { console.log(this.a) }
}
obj.foo() // 1と出力
これ相当のコードをできるだけ短く書く方法ないでしょうか?
- 142 :デフォルトの名無しさん:2016/11/05(土) 09:20:04.03 ID:g4s/HAgH.net
- >>140
hash = { a: 1, b: 2 }
a, b = hash.values_at(:a, :b)
p a # => 1
def f(a:, b:); p a; end
f(hash) # => 1
- 143 :デフォルトの名無しさん:2016/11/05(土) 09:26:45.75 ID:CJv/XjYq.net
- 古いrubyにはないけど取得だけなら
Hash#dig
- 144 :デフォルトの名無しさん:2016/11/05(土) 11:27:15.41 ID:3jWRFMI3.net
- >>142
> a, b = hash.values_at(:a, :b)
=の左右の両方にaとbがでてきてdryではないようですね。
長い名前で数が多いと嫌な感じです。
name, value, total, count = hash.values_at(:name, :value, :total, :count)
ローカル変数に入れておけば静的解析ができるので名前のミスとか
テキストエディタでリアルタイムにわかるのですが。
function foo({name, value, total, count} {
みたいにすると、引数書いてるのとほぼ変わらない程度で
オブジェクトからローカル変数に入れることができるのですが。
さらにこれもRubyでは出来ないと思いますが、
return {name, value} のように書くことは出来ないですよね?
}
{name: name, value: value} の省略形です。
このようにオブジェクトのキー = 変数名としておくと
dryで簡単にオブジェクトして返すことができるのですが。
- 145 :デフォルトの名無しさん:2016/11/05(土) 13:12:14.27 ID:g4s/HAgH.net
- >>144
RubyはHashをそんなに使わないしね
JavaScriptで簡単に書けるパターン「も」あるよってだけだし
- 146 :デフォルトの名無しさん:2016/11/05(土) 13:35:55.87 ID:3jWRFMI3.net
- > RubyはHashをそんなに使わないしね
では何を使うんですか?と聞かれたら
オブジェクト(クラスのインスタンス)って答えるのだろうけど
JavaScriptではハッシュとオブジェクトは同じもので
class A {
constructor() {
this.name = "name"
}
}
foo({name}) {
console.log(name);
}
foo(new A())
みたいなことも出来ますよ。
なのでHashをそんなに使わないっていうのは
あまり理由になっていません。
- 147 :デフォルトの名無しさん:2016/11/05(土) 13:39:51.44 ID:3jWRFMI3.net
- Rubyでもみたいな事したいってあると思いますがね。
keyword = params[:keyword]
page = params[:page]
limit = params[:limit]
じゃなくて↓こう書きたいとか。
keyword, page, limit = request.params
- 148 :デフォルトの名無しさん:2016/11/05(土) 13:55:01.42 ID:g4s/HAgH.net
- >>146
そうですか、へーって感じですね
あとはJavaScriptスレでどうぞ
ここは煽りスレじゃないんで
- 149 :デフォルトの名無しさん:2016/11/05(土) 15:03:39.50 ID:3jWRFMI3.net
- 煽りじゃなくて質問ですよw
RubyでJavaScriptのクロージャーみたいなのを
書く簡単な方法はないでしょうか?
let func = i => i+1
func(1) // 2
- 150 :デフォルトの名無しさん:2016/11/05(土) 15:12:29.51 ID:fKvWQoRX.net
- >>147
そういうのはRubyの言語仕様でやるのではなくてRailsなどがそういったオブジェクトを用意すべきだと思う。
- 151 :デフォルトの名無しさん:2016/11/05(土) 15:23:37.67 ID:3jWRFMI3.net
- >>150
言語仕様でやらないと無理だと思うよ。
代入先の変数名を関数が知ることは出来ないでしょ?
まあPerlみたいに、スカラー(単数の変数)に代入するか
リスト(要は配列)に代入するかを関数の中で知ることができる言語があるから、
"言語仕様に"そういうことがあれば関数が知ることができるかもしれないけど。
(見ての通り言語仕様があることが前提となってる)
ちなみにPerlの場合は、
sub foo { wantarray ? 1 : 2}
みたいに書くと以下のようになる。
(通常は配列として適したものを返すために使うべき)
$value = foo; # 2
@value = foo; # 1
wantarrayでどの型(正確に言うとコンテキスト)が要求されているかを
foo関数の中で知ることができるのだけど、同じように「どの変数名に代入しようとしているか?」を
知ることが出来ないと、引数省略して変数に入れることは出来ない。
- 152 :デフォルトの名無しさん:2016/11/05(土) 16:01:00.44 ID:9rWJk3qM.net
- >>149
初心者だけど
Procになるのかな
func = lambda { |i| i + 1 }
func.call(1) => 2
Kernel#lambdaはProcを作る方法の一つで、ほかにもいくつかあってそれぞれ特徴があるよ
あと呼び出しのfunc.call()はfunc.()とちょっと略しても書ける
>>151
便利そうだけどRubyにはないっぽい?
あと言語仕様でこうあるべきだイヤそうじゃない
みたいなのをここでやられても困るよ
- 153 :デフォルトの名無しさん:2016/11/05(土) 16:07:31.56 ID:3jWRFMI3.net
- >>152
言語仕様の話を始めたのは俺じゃないし。
言語仕様でなければ実現不可能だろうけど
別に言語仕様である必要はない。
JavaScriptなんて言語仕様になったけれども、対応してないブラウザでも
使えるようにするために、トランスラパイラを文法を変換したりしているからね。
Rubyの世界でもそういう改良版Rubyを使うとかいう方法でもいいのよ。
ようはより短く書く方法を探しているだけ。
- 154 :デフォルトの名無しさん:2016/11/05(土) 16:09:40.54 ID:9rWJk3qM.net
- >>153
>ようはより短く書く方法を探しているだけ。
だったら他の話には反応しなくて良いんだよ
ところでクロージャーみたいなのの話はどうでもいいんだろうか
俺答え損だった?
- 155 :デフォルトの名無しさん:2016/11/05(土) 16:26:05.09 ID:3jWRFMI3.net
- > 俺答え損だった?
その答え自体は知ってたけど、
それがRubyでの一番短い書き方だって
わかったので無駄ではないよ。
lambda とか call とかいう単語を
省くことは出来ないのね。
- 156 :デフォルトの名無しさん:2016/11/05(土) 16:34:09.52 ID:g4s/HAgH.net
- >>155
> lambda とか call とかいう単語を
> 省くことは出来ないのね。
だからなに?
質問じゃないじゃん
JavaScriptに有利な例題だけあげてJavaScritpマンセーしてるだけじゃん
そういうのは別スレでやれ
- 157 :デフォルトの名無しさん:2016/11/05(土) 16:36:52.31 ID:p7aXJL/r.net
- っ CoffeeScript
- 158 :デフォルトの名無しさん:2016/11/05(土) 16:57:35.17 ID:u9ZZUUBm.net
- >>145
いつの話だよ
今のRubyはRailsのせいでHashまみれの糞ビッチだよ
- 159 :デフォルトの名無しさん:2016/11/05(土) 17:18:22.74 ID:3jWRFMI3.net
- >>156
> 質問じゃないじゃん
え? 質問は>>149に書いたとおり
クロージャーみたいなのを簡単に書く方法ですが?
なんで質問に対する回答にコメントを
質問だって勘違いしてるの?
それとも回答にコメントしたらいけないって
言いたいのかな?
- 160 :デフォルトの名無しさん:2016/11/05(土) 17:25:06.81 ID:3jWRFMI3.net
- >>156
> JavaScriptに有利な例題だけあげてJavaScritpマンセーしてるだけじゃん
普段JavaScriptで書いていて、JavaScriptでもっと短く書くことができる。
無駄のないコードを書くのが好きなのでRubyでももっと短く書きたい。
Rubyは初心者だが、プログラミングは初心者ではなく検索能力もあるので
Rubyで同等またはRubyの方が短く書くことができるものであれば
大抵はすぐに見つけてしまう。だからそういうものは質問しない。
仮にRubyではそれができないのであれば検索しても見つかるはずがない。
見つかったものは質問しないが、見つからないものは質問するしかない。
だから単に俺が見つけられないものを質問しているだけなんだが、
それが結果的にRubyでは無理なことになってしまってるだけだよ。
- 161 :デフォルトの名無しさん:2016/11/05(土) 17:42:40.29 ID:u9ZZUUBm.net
- lambdaは->とも書ける
俺は書く位置が気持ち悪くて大嫌いだけどね
Rubyが独立した関数式を持たないのは有名な欠点として昔から言われてることなので、今更言われてもそうだね不便だねとしか
- 162 :デフォルトの名無しさん:2016/11/05(土) 17:55:37.24 ID:3jWRFMI3.net
- http://qiita.com/sudahiroshi/items/c51618dec0f56a54670e
> # 引き数が1つ
> foo = -> ( x ) { x * x }
> foo[ 5 ] # => 25
>
> # 以下のように呼び出すことも可能です
> foo.( 5 ) # => 25
> foo.call 5 # => 25
なんだ。lambdaいらねーじゃん。callいらねーじゃん。
こういうのを教えてくれよ。
> 今更言われてもそうだね不便だねとしか
そんなこと言われてもね。今更Ruby初心者といわれても
始めたばかり。どうしろと?
- 163 :デフォルトの名無しさん:2016/11/05(土) 18:18:33.92 ID:9rWJk3qM.net
- >>162
callは略せるって上に書いたでしょ
lambdaの方はしらんかったけどたしかにキモいなこれ
callの方も結構ヘンだけど
あと余計なことには反応しなくて良いんだってば
- 164 :デフォルトの名無しさん:2016/11/05(土) 18:20:42.36 ID:VSrxz5YG.net
- あなたRubyやんないほうがいいんじゃない?
まあ仕事でRubyのプロジェクトに入っただけかもしれないけど。
- 165 :デフォルトの名無しさん:2016/11/05(土) 18:45:31.46 ID:M1fQHNFf.net
- 喧嘩すんなよRubyが糞なのは普遍なんだから
わかったならPython使え情弱どもが
- 166 :デフォルトの名無しさん:2016/11/05(土) 18:49:13.91 ID:szmfxvT7.net
- > 普段JavaScriptで書いていて、JavaScriptでもっと短く書くことができる。
フフッてなったw
- 167 :デフォルトの名無しさん:2016/11/05(土) 19:25:21.38 ID:HMFIz/40.net
- [5,2,3].sort # =>
ってソースに書いておくと
[5,2,3].sort # => [2, 3, 5]
みたいに置き換えてくれるツールがあったら教えてください
- 168 :デフォルトの名無しさん:2016/11/05(土) 22:43:25.54 ID:LJBtWuSU.net
- 存在するファイルは上書きせずにファイルをコピーってどうやるの?
- 169 :デフォルトの名無しさん:2016/11/05(土) 22:57:00.73 ID:CJv/XjYq.net
- ダイヤお姉ちゃんに頼む
- 170 :デフォルトの名無しさん:2016/11/05(土) 23:00:12.07 ID:LJBtWuSU.net
- KurosawaDaiya.copy(from, dest)
#=> NameError: uninitialized constant KurosawaDaiya
駄目でした
- 171 :デフォルトの名無しさん:2016/11/06(日) 00:59:43.52 ID:Mq0g4tm5.net
- それはお姉ちゃんをコピーしようとしてるのでは
- 172 :デフォルトの名無しさん:2016/11/06(日) 03:07:23.22 ID:8WadcDvl.net
- foo(
a: data['a'],
b: data['b'],
c: data['c'],
d: data['d']
)
これをもっと短く書く方法を教えて下さい!
- 173 :デフォルトの名無しさん:2016/11/06(日) 09:09:40.26 ID:UB8ayWaX.net
- >>147
Effective Ruby の項目10に書いてあるけど、
構造化データを扱う際、Hashの配列よりも、
クラスまたは、Struct(簡易クラス、クラスジェネレータ)のような専用の型を、使った方がいい
data[:name]
キー名のような実装の詳細が、隠蔽されず表に出てくる。
また、存在しないキーは、nilとなる
Person = Struct.new(:name, :address) #定数に代入
data = Person.new("foo", "fugafuga")
data.name
Structでは属性になるから、getter, setter も付いているし、
存在しない属性名でアクセスすると、NoMethodErrorになる
JavaScript(ES3)では、Hashが無いから、その代わりに、
Objectのプロパティを使っているので、obj.__proto__ という、
たまたま実行環境が使っている、キー名で上書きすると、誤動作する
だから、キーを作る際、__proto__かどうか、チェックしないといけないので不便
- 174 :デフォルトの名無しさん:2016/11/06(日) 09:10:35.91 ID:6TZQqHcY.net
- >>172
Rails使ってるなら
foo(data.symbolize_keys)
- 175 :デフォルトの名無しさん:2016/11/06(日) 09:28:36.42 ID:rGVVvSQ9.net
- foo(**data)
- 176 :デフォルトの名無しさん:2016/11/06(日) 12:09:01.31 ID:8WadcDvl.net
- >>174 >>175
dataにはa, b, c, d 以外も含まれているので
それではだめなのです。
- 177 :デフォルトの名無しさん:2016/11/06(日) 13:13:30.71 ID:CGfTBBGj.net
- >>176
slice
- 178 :デフォルトの名無しさん:2016/11/06(日) 13:37:48.19 ID:+j3xqinH.net
- こんなもんfooのほうを変えるべきだろう
- 179 :デフォルトの名無しさん:2016/11/06(日) 13:41:52.43 ID:6TZQqHcY.net
- >>176
後出しでそんなこと言われてもねぇ…
そもそも foo で何をやりたいかにもよるし
- 180 :デフォルトの名無しさん:2016/11/06(日) 14:28:52.63 ID:8WadcDvl.net
- あ、sliceで出来たのでもういいです
またなんかあったら聞きます
- 181 :デフォルトの名無しさん:2016/11/06(日) 15:57:30.38 ID:6TZQqHcY.net
- > あ、sliceで出来たのでもういいです
こういう余計な一言はやめた方がいいよ
- 182 :デフォルトの名無しさん:2016/11/06(日) 16:01:04.07 ID:YPGx/bgn.net
- 2ちゃんではよくあること
あいさつ代わり
- 183 :デフォルトの名無しさん:2016/11/06(日) 18:23:47.88 ID:Mq0g4tm5.net
- Rubyでは代入演算子を再定義できないというのを知らなかったんですが
ではこうしたい場合はどうするんでしょう?
class Hoge
attr_accessor(:array, :number)
# いろいろ
end
みたいなClassがあったとして
hoge = Hoge.new
hoge = piyo
としたときにpiyoがどんなものかによって処理を分けたいのです
(具体的にはpiyoがArrayならarrayに入れる、 Hogeと似たようなものならアトリビュートをコピー、とか)
例えばinitialize_copyかなんかを上手く作ればそうなるよみたいな都合のいい話はないですか?
それとも素直にHogeにset(other)みたいなメソッドを定義するべきでしょうか
- 184 :デフォルトの名無しさん:2016/11/06(日) 18:32:02.92 ID:NZCpJm/D.net
- そんな馬鹿みたいなクラスは作らないから答えようがない
- 185 :183:2016/11/06(日) 19:02:10.01 ID:Mq0g4tm5.net
- Rubyだと全部参照渡しだし = なんかは使わなそうですね
素直にメソッド作ります
- 186 :デフォルトの名無しさん:2016/11/08(火) 01:53:05.89 ID:M6Rn2+El.net
- 確かRubyには、scala, Haxe みたいな、switchでのパターンマッチが無いよな
そもそも動的言語で、型によって分岐するのは、設計がおかしい
ちゃんと設計すれば、継承・インターフェース・ダックタイピングのオーバーロードで、
自然と型による分岐が無くなるはず
- 187 :デフォルトの名無しさん:2016/11/08(火) 03:24:23.45 ID:107xoCwk.net
- 黒アワビ濡れ濡れお色気ビラビラ仕様のRuby
公開おなほ
すとーるまんこはかきたれ
- 188 :デフォルトの名無しさん:2016/11/08(火) 06:17:48.12 ID:ykrZTa7U.net
- > 0001: 訪問:2016/11/06(日) 14:32
> 会社A
> 担当者BB
> 0002: 取引先:2016/11/07(月) 09:36
> 企業CCC
> 相談人DDDD EEEEEの件で契約
というtxtファイルを
> log=会社A\t担当者BB
> log=企業CCC\t相談人DDDD\tEEEEEの件で契約
という形に置換して出力するバッチを作りたいと思っています。
> Rubyはじめました: rubyでファイルの内容の一部を置換する
http://myruby.seesaa.net/article/125577047.html
こちらを参考に
> f=File.open("input.txt","r:utf-8")
> buffer = f.read();
> p buffer
> # 中身を変換
> buffer.gsub!(/^[\d]{4}\:.*\:[\d]{2}\n/, "log=")
> p buffer
> f=File.open("output.txt","w:utf-8")
> f.write(buffer)
を書いてみたのですが、以下の置換も一つの.rbファイル内で続けて動作させるにはどうすればいいでしょうか
よろしくお願いします
buffer.gsub!(/\n/, /\t/)
buffer.gsub!(/\tlog\=/, /\nlog\=/)
- 189 :デフォルトの名無しさん:2016/11/08(火) 11:49:52.31 ID:ZBAGJV1u.net
- つぎのかたどうぞ
- 190 :デフォルトの名無しさん:2016/11/08(火) 14:05:34.46 ID:LTPhc021.net
- 特定のウェブページを毎日チェックして、アルバイト、居酒屋 など、決まった文字列が掲載されてたら通知するandroidアプリを作りたいんですが、こういうの何て言いますか?
- 191 :デフォルトの名無しさん:2016/11/08(火) 14:21:37.68 ID:RD7eA5MT.net
- バイト探し
- 192 :デフォルトの名無しさん:2016/11/08(火) 14:26:41.88 ID:ZBAGJV1u.net
- スクレイピング
ボット
PIM
- 193 :デフォルトの名無しさん:2016/11/08(火) 15:04:04.37 ID:LTPhc021.net
- >>192ありがとうございます
- 194 :デフォルトの名無しさん:2016/11/08(火) 16:52:52.70 ID:ic1oOtKi.net
- ちなみにスクレイピングは逮捕例もあるよ
- 195 :デフォルトの名無しさん:2016/11/08(火) 19:51:30.63 ID:M6Rn2+El.net
- >>188
> buffer.gsub!(/^[\d]{4}\:.*\:[\d]{2}\n/, "log=")
> p buffer
この後に、
buffer.gsub!(/\n/, /\t/)
p buffer
buffer.gsub!(/\tlog\=/, /\nlog\=/)
p buffer
エラーが起こった際、デバッグしにくいけど、
メソッドチェーンで、どんどんつなげていく事もできる
buffer.gsub!(/^[\d]{4}\:.*\:[\d]{2}\n/, "log=")
.gsub!(/\n/, /\t/)
.gsub!(/\tlog\=/, /\nlog\=/)
- 196 :デフォルトの名無しさん:2016/11/08(火) 19:55:50.26 ID:ykrZTa7U.net
- >>195
ありがとうございます!!!!!!!!!
- 197 :デフォルトの名無しさん:2016/11/08(火) 22:18:28.32 ID:ykrZTa7U.net
- >>195
無事に動きました!
助かりました、ありがとうございます
- 198 :デフォルトの名無しさん:2016/11/10(木) 06:58:06.00 ID:MLyRIdhy.net
- 基本的な部分なのですが
hashオブジェクトをto_aした場合に返値される配列の順序は
hashオブジェクトにキーを設定した順序でいいのですか?
- 199 :デフォルトの名無しさん:2016/11/10(木) 08:00:08.45 ID:+0vOVL7/.net
- 極端に古いバージョンでない限りはそれでいい
- 200 :デフォルトの名無しさん:2016/11/10(木) 12:26:51.61 ID:Sha7NYgb.net
- 実装はそうなってるけど仕様で保証されてたっけ?
- 201 :デフォルトの名無しさん:2016/11/10(木) 13:33:15.27 ID:dxAJlx69.net
- 今のバージョンは保証してる
- 202 :デフォルトの名無しさん:2016/11/10(木) 14:27:24.56 ID:LGdObFSz.net
- どうゆう理由でハッシュキーの順序を保証するようになったんかね
他の言語では基本順序は保証されていないよね(´・ω・`)
- 203 :デフォルトの名無しさん:2016/11/10(木) 14:47:43.59 ID:dxAJlx69.net
- >>202
>どうゆう理由で
エンジンが変わった
- 204 :デフォルトの名無しさん:2016/11/10(木) 15:04:32.11 ID:o6QUnq5t.net
- 順序に依存したコードを書きたい人の声が大きかったから
- 205 :デフォルトの名無しさん:2016/11/10(木) 22:33:15.81 ID:+0vOVL7/.net
- 順序を保持するためだけにハッシュ表とは別にわざわざ無駄な線形リストを持ってるんだぞ
決して、たまたま順序通りになるようなアルゴリズムを選んだとか、
順序通りになるようにハッシュ表の実装を工夫したとかではなく、無理に明示的に順序を持たせてある
- 206 :デフォルトの名無しさん:2016/11/10(木) 23:18:15.82 ID:pEVMYV3p.net
- 一般的には、Hashには2種類ある
Hash は順序なし。
Ordered_Hash は追加した順番で、順序あり
- 207 :デフォルトの名無しさん:2016/11/10(木) 23:44:37.48 ID:+0vOVL7/.net
- 順序付きのハッシュ表自体が一般的ではないだろ
RubyのHashは>>205で書いたとおりハッシュ表とは無関係に順序持たせてるし、
.NETのSortedDictionaryみたいに辞書の実装で要素をキーでソートされた状態で持つのはよくあるけど
あれはハッシュ表じゃなくて二分木やバイナリサーチだし
- 208 :デフォルトの名無しさん:2016/11/11(金) 03:16:24.93 ID:wVch1D/r.net
- yield の意味が理解できません
例えば下記ってどんなことしてるんでしょうか?
https://github.com/fluent/fluentd/blob/master/lib/fluent/plugin/parser_regexp.rb
def parse(text)
m = @regexp.match(text)
unless m
yield nil, nil
return
end
r = {}
m.names.each do |name|
if value = m[name]
r[name] = value
end
end
time, record = convert_values(parse_time(r), r)
yield time, record
end
yield nil, nil
yield time,record
二つあるけどさっぱりです
- 209 :デフォルトの名無しさん:2016/11/11(金) 07:13:41.60 ID:LSv6brFn.net
- >>208
ブロック付きでこのメソッドを呼ぶと、yield のタイミングでブロックが実行される
parse('hoge') { |t, r| p [t, r] }
という風にすると、yield の内容が表示される
- 210 :デフォルトの名無しさん:2016/11/11(金) 08:58:07.26 ID:ENznHnYU.net
- Rubyのyieldはただのコールバック関数呼び出しの
シンタックスシュガーだからなぁ。
JavaScriptでかけばこんな感じだよ。
a = [1, 2, 3, 4]
forEach(a, function(i) {
return i * 2
})
function forEach(arr, block) {
var ret = []
for (var i = 0; i < arr.length; i++) {
ret[i] = block(arr[i])
}
return ret
}
あとは書き方程度の問題。ブロックが引数の最後の一つである場合に限り
引数のblockコールバックを省略することが出来て、代わりにyieldを使って
そのコールバックが呼び出せるってだけ。
- 211 :デフォルトの名無しさん:2016/11/11(金) 09:55:02.27 ID:e7T2VXvj.net
- pythonのyieldとはだいぶ違ってた
- 212 :デフォルトの名無しさん:2016/11/11(金) 14:39:07.80 ID:kzNknik+.net
- 初めて書き込みます。windowsで、rubyをインストールしました。helloruby.rbと書くと、内部コマンドまたは〜というエラーメッセージが出ます。何が原因だと思いますか?
- 213 :デフォルトの名無しさん:2016/11/11(金) 18:33:52.72 ID:+0sZIajy.net
- >>212
エスパーするとパス通せ
- 214 :デフォルトの名無しさん:2016/11/11(金) 18:58:09.57 ID:XRaelh1g.net
- >>213
返信ありがとうございます。
ruby -vではきちんとバージョンが表示されるのに、helloruby.rbと書くと内部コマンド〜とエラーメッセージが出ます。この場合どのようにしたら良いのでしょうか?自分なりに調べたのですが全く情報が出てこず…。初心過ぎる質問で申し訳ありません。
- 215 :デフォルトの名無しさん:2016/11/11(金) 19:01:01.28 ID:UQPlBidt.net
- どのwindowsにどのruby入れてどんなエラーが出たか全部書いて
- 216 :デフォルトの名無しさん:2016/11/11(金) 20:13:58.18 ID:JZCe9Y2P.net
- 最近の Windows は .rb を実行可能に出来るん?
- 217 :デフォルトの名無しさん:2016/11/11(金) 20:18:26.25 ID:UQPlBidt.net
- それは普通に出来る
- 218 :デフォルトの名無しさん:2016/11/11(金) 20:55:45.18 ID:xrgRbR8m.net
- ruby helloruby.rb かな?
- 219 :101:2016/11/11(金) 21:53:06.05 ID:goTatCVE.net
- 毎日定時帰りしたら首になりそう
■使用するプログラミング言語/ツール/特殊技術
・Ruby on Rails
・MySQL / PostgreSQLなどのデータベース技術
・Javascript(jQuery)の技術
・サーバ構築、管理の技術(AWS)
・HTML / CSSの技術(ウェブページのコーディング技術)
■月給20万〜
※経験・スキルを考慮のうえ、当社規定により優遇いたします。
※上記給与に、見込残業代35時間分43,000円分を含みます。
(見込残業代 月35時間分を超過した場合は別途支給)
- 220 :デフォルトの名無しさん:2016/11/11(金) 23:39:57.27 ID:N42G00o6.net
- 43,000 / 1.25 / 35 ≒ 980
- 221 :デフォルトの名無しさん:2016/11/11(金) 23:46:59.86 ID:LSv6brFn.net
- この時代にjQueryはないわー
- 222 :デフォルトの名無しさん:2016/11/12(土) 03:08:59.71 ID:SNnuUkOH.net
- 月35時間残業して給料20万…
しかも手取りですら無いという
これはヤバイわ
- 223 :デフォルトの名無しさん:2016/11/12(土) 03:41:54.01 ID:fAGx8Up8.net
- >>221
RailsでjQuery以外を使おうと思ったら苦難の道で?w
- 224 :デフォルトの名無しさん:2016/11/12(土) 03:52:09.03 ID:fAGx8Up8.net
- 訂正
RailsでjQueryの代わりに導入すべきと言われるフレームワークを使おうと思ったら苦難の道やで?
jQueryを含め単なるライブラリ程度であれば簡単に使えるけど
AngularとかReactとかJavaScriptのフロントエンドフレームワークを
組み合わせる方法をRailsは用意していない。
Rails 5でAPIモードというJavaScriptのフレームワークを使う前提のモードができたけれども、
ぶっちゃけこれRailsの便利な機能の多くが非推奨になりましたって言ってるようなもんだからねw
ビューがバッサリなくなって、コントローラーの機能も必要最小限になる。
その分をJavaScritフレームワークで実現するんだけど、Railsにはそれらと組み合わせる機能がかけている。
RailsでJavaScriptのテストはどうやれば良いんだ?レベル。
- 225 :デフォルトの名無しさん:2016/11/12(土) 04:16:39.20 ID:eAhK3KJp.net
- 朝っぱらから気合い入った長文乙
- 226 :デフォルトの名無しさん:2016/11/12(土) 04:22:33.43 ID:6wPviZ3t.net
- >>219
35時間残業して43,000円にしかならないのか
- 227 :デフォルトの名無しさん:2016/11/12(土) 04:25:14.43 ID:6wPviZ3t.net
- >>224
どうせなんでもjsonで出し入れするんだから
viewなんていらないしrailsである必要すらない
- 228 :デフォルトの名無しさん:2016/11/12(土) 04:33:26.95 ID:fAGx8Up8.net
- >>225
あ、朝?
普段君が何時頃に起きなきゃいけない生活なのかがよく分かるわ。
こっちは会社まで徒歩でも30分。出社時間が一応10時で(基本的に残業なし)
Slackに書くだけで私用を理由に自宅作業したり早く退社してもOK
遅刻とかそういう概念もないんでw
- 229 :デフォルトの名無しさん:2016/11/12(土) 04:36:08.01 ID:fAGx8Up8.net
- >>227
> viewなんていらないしrailsである必要すらない
その通り。Railsの終焉が見えるよねw
ちなみに俺はRubyよりもJavaScriptの方が好き。
メインはJavaScriptで、その背後にあるサーバーは
なんでもいいという時代かな。
- 230 :デフォルトの名無しさん:2016/11/12(土) 04:55:24.42 ID:W5RGEoAt.net
- >>228
>>219
- 231 :デフォルトの名無しさん:2016/11/12(土) 05:00:57.16 ID:fAGx8Up8.net
- >>230
世の中にはかわいそうな会社があるねとしか
見てなかったwww
- 232 :デフォルトの名無しさん:2016/11/12(土) 07:15:36.64 ID:UXa3WItJ.net
- >>229
だったらなんでRubyスレを覗いてるんだろうか?
嫌いなRubyを叩いて憂さ晴らしをしたいのかな?
- 233 :デフォルトの名無しさん:2016/11/12(土) 07:54:30.01 ID:SNnuUkOH.net
- ちょっと上で暴れてたRuby使わなきゃならなくなったJS大好きなロリコンだろ
もう触るなよ
- 234 :デフォルトの名無しさん:2016/11/13(日) 11:27:30.83 ID:8tp89YW7.net
- 本屋行ったらPython本増えたなあ
Rubyで機械学習って本書いたら…売れねえか
機械学習や人工知能という神風が吹いて国内でもPythonに完敗なんだろうな
- 235 :デフォルトの名無しさん:2016/11/13(日) 11:52:13.63 ID:hnH+OR8d.net
- マルチ誰得
- 236 :デフォルトの名無しさん:2016/11/13(日) 12:15:30.12 ID:T5+9PjbV.net
- >>234
もう勝負は着いてるんだからみっともないことはやめなさい
この国のITはガラパゴス化した技術に拘って世界に取り残されるという失敗をさんざん繰り返してきたというのに、またその例を増やす気か
- 237 :デフォルトの名無しさん:2016/11/13(日) 15:44:25.64 ID:e+lvJCbH.net
- 久々にリアル本屋行ってみたら
Rubyの棚よりPythonの棚の方が大きくなってた
胸熱
データサイエンティストのみなさんのおかげですωωω
- 238 :デフォルトの名無しさん:2016/11/13(日) 20:44:27.50 ID:5YmDMkhP.net
- Rubyってコンパイル型にできないの?
例えば Cなら、 cc hoge.c | ./a.out にすればインタプリタ型になるし、
実行ファイルも残る。
Rubyではコンパイルと実行を分割して実行ファイルを残す方法ってないのかな。
- 239 :デフォルトの名無しさん:2016/11/13(日) 20:59:12.44 ID:miyqCymn.net
- おます
- 240 :デフォルトの名無しさん:2016/11/14(月) 02:10:30.72 ID:XIKx0ys+.net
- >>219
同じことしているのに ニートの俺には給与ないんだけど・・・
あと最近はSwiftでスマホアプリ作って遊んでる
こんなの仕事でやったら闇落ちしそうなので プログラマとして働くつもりないけど
まぁそれ以前に、実務経験ないから雇ってもらえないねん _(:3 」∠)_=3
- 241 :デフォルトの名無しさん:2016/11/14(月) 04:04:12.28 ID:OCTkBwGI.net
- Rubyはいいと思うが、なかなか覚えられない。結局ちょっとした処理をしようと
すると、C#とかを引っ張り出してくる。Shell感覚で使えたら最高だと思うが
普通はmouseだし、Tool系はTCLだし。
Rubyって主にどういう場面でつかうんだ?
- 242 :デフォルトの名無しさん:2016/11/14(月) 05:24:04.01 ID:esjkHDa1.net
- >>240
ハローワークに、プログラミングを未経験・独学で勉強している人の募集も一杯ある
- 243 :デフォルトの名無しさん:2016/11/14(月) 06:41:55.09 ID:aL/Lu1lD.net
- >>241
今のRubyはRailsのDSLだよ
知らなかったの?
- 244 :デフォルトの名無しさん:2016/11/14(月) 06:55:39.43 ID:5ieSClDh.net
- >>241
刑務所で講習用
- 245 :デフォルトの名無しさん:2016/11/14(月) 07:01:01.48 ID:U3HMZCux.net
- >>241
Unix 上でちょっとしたことをしたいとき用言語としてよく使うよ
まさに昔の Perl の代替
- 246 :デフォルトの名無しさん:2016/11/14(月) 07:13:45.48 ID:aL/Lu1lD.net
- Rubyは入ってなかったり入っててもバージョンが古いことが多いからなあ
Perlの代わりに使うのは厳しいわ
- 247 :デフォルトの名無しさん:2016/11/14(月) 07:37:53.70 ID:U3HMZCux.net
- >>246
手元でやるだけのちょこっとしたことだから、ポータビリティは必要ない
ごく一部の例でいえば、何かが吐き出したlogファイルをサクッと解析させたりとかね
- 248 :デフォルトの名無しさん:2016/11/14(月) 08:03:38.77 ID:esjkHDa1.net
- Ruby, Groovy は、DSL向き。
SASSも、Ruby
また、設定ファイルとしても読みやすいから、Chef, Puppet でも使われている
「たのしいRuby」など、良本が揃っているから、勉強しやすく、Java, C#ほど難しくない
また、Rubyから静的言語の、Elixir, Haxe, Kotlin などへ移りやすい
- 249 :デフォルトの名無しさん:2016/11/14(月) 10:42:07.67 ID:AJSSB3HL.net
- >>215
>>214です。windows8にruby23-x64を入れました。
helloruby.rbと打つと、
’helloruby.rb’は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と出ます。
- 250 :デフォルトの名無しさん:2016/11/14(月) 10:42:37.62 ID:AJSSB3HL.net
- 認識させるにはどうしたらいいのでしょうか?
- 251 :デフォルトの名無しさん:2016/11/14(月) 11:01:12.14 ID:CNrivUWZ.net
- perlの代わりならpython
rubyは見た目perlに似てるだけでperlの代わりにはならない
- 252 :デフォルトの名無しさん:2016/11/14(月) 11:03:12.46 ID:CNrivUWZ.net
- >>250
mingw/msys入れろ
- 253 :デフォルトの名無しさん:2016/11/14(月) 11:28:33.20 ID:d18MPt7T.net
- >>249
ruby 〜スクリプトのパス/helloruby.rb
ってやってる?
- 254 :デフォルトの名無しさん:2016/11/14(月) 11:36:27.20 ID:igQzh1Us.net
- ttp://www.atmarkit.co.jp/ait/articles/0410/09/news012.html
- 255 :デフォルトの名無しさん:2016/11/14(月) 11:40:58.22 ID:igQzh1Us.net
- こっちね
ttp://www.atmarkit.co.jp/ait/articles/0701/27/news021.html
ttp://www.atmarkit.co.jp/ait/articles/0410/09/news012.html
ttp://www.atmarkit.co.jp/ait/articles/1303/15/news042.html
- 256 :デフォルトの名無しさん:2016/11/14(月) 11:49:25.61 ID:igQzh1Us.net
- コマンドプロンプトを開いて次の2行を実行
assoc .rb=Ruby.File
ftype Ruby.File="C:\(Rubyのあるpath)\ruby.exe" "%1" %*
・パスは適切なものを選ぶ
・管理者アカウントで実行 (runas /administrator とかでも可能)
- 257 :デフォルトの名無しさん:2016/11/14(月) 12:42:24.19 ID:XIKx0ys+.net
- >>242
うち 田舎やけん
そんなハイカラな仕事する会社ないんよ
- 258 :デフォルトの名無しさん:2016/11/14(月) 18:36:58.46 ID:6IAxrkLB.net
- Ruby → JavaScript, Python とかの互換が簡単にできて、
これらを取り込んでしまえばRubyにもそれなりの存在意義は
ある気がするな。逆は難しいだろうから。
- 259 :デフォルトの名無しさん:2016/11/15(火) 02:36:49.43 ID:APHjFyJV.net
- Haxe(ヘックス)はOSSで、JSに型チェックを付けたような言語で(altJS)、
JS(ES5), Flash, PHP, C++, Java, C#, Python に書き出せる。
Windows8.1対応。IDEは、FlashDevelop
このサイトで、ブラウザでプログラミングして、実行できる
Try Haxe !
try.haxe.org/
Haxeプログラミング入門、尾野政樹、2015
Haxeからも、Rubyへ変換できない。
何かの言語から、Rubyへ変換できればなあ
- 260 :デフォルトの名無しさん:2016/11/15(火) 04:34:06.60 ID:sHZUXp5G.net
- >>259
(*'ω'*)それを君が開発すればイイジャマイカ スルメイカ
- 261 :デフォルトの名無しさん:2016/11/15(火) 04:48:52.90 ID:ulUg8AFG.net
- >>259
Julia
- 262 :デフォルトの名無しさん:2016/11/17(木) 21:43:20.86 ID:mx0eMjxm.net
- 今ってあれだよなElixir待ちって感じだよな
Pythonとの勝敗はほぼ付いてしまった。
ElixterはRuby互換あるといいな。
- 263 :デフォルトの名無しさん:2016/11/17(木) 23:34:45.90 ID:iGNJFpBr.net
- 静的型検査のない関数型とかゴミカスだろ
コードの正しさが自明という関数型最大のメリットが半減してる
- 264 :デフォルトの名無しさん:2016/11/18(金) 16:09:55.66 ID:vbdBJsNN.net
- ○ erlang
× elixir
erlangの良いところをつぶしたのがelixir
- 265 :デフォルトの名無しさん:2016/11/18(金) 16:38:53.40 ID:1sC7EnMR.net
- じゃあRuby3待ちも加えよう
- 266 :デフォルトの名無しさん:2016/11/20(日) 15:31:53.51 ID:Nkcoggcj.net
- Rubyの資格勉強をしていて
getsというのはダンディ板野なのではなく、
get-stringのことなのだと分かった。
- 267 :デフォルトの名無しさん:2016/11/21(月) 09:22:12.04 ID:yuIFR8QG.net
- >>219
こんな規則なんの効力もないのに
- 268 :デフォルトの名無しさん:2016/11/21(月) 09:37:40.89 ID:0N8j/p/K.net
- >>248
> Ruby, Groovy は、DSL向き。
どこからどう見てもRubyのコードなのに
それをDSLとか呼ぶのやめようぜw
doとか出てきた時点で萎える
- 269 :デフォルトの名無しさん:2016/11/22(火) 11:31:16.12 ID:bGBSJtcd.net
- Windows7-Home Ruby 1.8.6
http://qiita.com/mogulla3/items/fbc2a46478872bebbc47
にある「1度に全体を読み込む」を使ってバイナリファイルを読み込&表示しました。
※目的のバイナリファイルはテキスト化すると1行&30文字程度
※プログラムコードは File.rb で、コマンドプロンプトで ruby File.rb で実行
動作自体は上手く行ったのですが、動作時に「ピッ!」と音が毎回鳴ります。
これは何を意味しているのでしょうか?
- 270 :デフォルトの名無しさん:2016/11/22(火) 11:32:44.53 ID:Pvp5yOqg.net
- バイナリファイルなら0x07で音がでる
- 271 :269:2016/11/22(火) 11:44:14.33 ID:bGBSJtcd.net
- >>270
早速どうも。 バイナリファイルの性(さが)なんですね
- 272 :デフォルトの名無しさん:2016/11/22(火) 11:56:40.62 ID:9QZ/pTkg.net
- ベル文字(ベルもじ、BEL: bell character)またはベルコード(bell code)とは、制御文字の一種である
ベル文字は、ASCIIとUnicodeでは十進数で7、十六進数で0x07に割り当てられている。
キャレット記法では ^G と表され、Unicodeでは制御文字の図形表現として(U+2407)が定義されている
Rubyは実行環境に、RubyVMを使った、1.9以降を使った方がいい
- 273 :269:2016/11/22(火) 12:10:26.36 ID:bGBSJtcd.net
- >>272
なるほど。 新しいRubyを使ってみます。 今のRuby1.8.6 は応急のテスト用なので
- 274 :デフォルトの名無しさん:2016/11/22(火) 14:28:44.44 ID:3UDTrTQV.net
- sprintf("%04d",15)の4の部分に変数を使いたい場合ってどうしたらいいんでしょう?
- 275 :デフォルトの名無しさん:2016/11/22(火) 14:46:36.63 ID:E5xR5zcu.net
- printf("%0*d", 4, 15)
- 276 :デフォルトの名無しさん:2016/11/22(火) 15:06:37.29 ID:3UDTrTQV.net
- >>275
できました。ありがとうございます。
よく見たら書いてありました (;^_^A
https://docs.ruby-lang.org/ja/latest/doc/print_format.html
- 277 :デフォルトの名無しさん:2016/11/22(火) 22:40:50.60 ID:bGBSJtcd.net
- Windows7-Pro Ruby 2.3.1 (x64)
Ruby2.3.1をインストールしバージョンの確認ができましたが、毎回 cd でディレクトリを
変えるのが面倒なので、コマンドプロンプトのショートカットをbin内に作り、このプロパティの
作業ディレクトリを変更して直で作業できるようにしました。
ここで、ショートカットのアイコンを http://uproda.2ch-library.com/95426479z/lib954264.png
の宝石型にしたいのですが、この画像はどこに保存されているのでしょうか?
あるいはWebのどっかでDLできますか?
- 278 :デフォルトの名無しさん:2016/11/22(火) 23:08:14.78 ID:qW+6ZAFd.net
- googleで画像検索してみたら?
- 279 :277:2016/11/22(火) 23:12:23.05 ID:bGBSJtcd.net
- >>278
したけど無かったです。 Windowsのアイコン一覧にも無かった
- 280 :デフォルトの名無しさん:2016/11/22(火) 23:27:14.21 ID:qW+6ZAFd.net
- http://uproda.2ch-library.com/95426479z/lib954264.png を右クリックして保存でもいいな
- 281 :デフォルトの名無しさん:2016/11/22(火) 23:50:51.41 ID:VrepQFzl.net
- ruby.exeに埋め込まれてた気がする
アイコン選ぶときにexeって選べなかったっけ?
無理ならResource Hackerかなんかで抽出
- 282 :デフォルトの名無しさん:2016/11/23(水) 00:00:26.69 ID:fCj7qIPS.net
- DLキー ico
http://uproda.2ch-library.com/9542717c9/lib954271.ico
- 283 :277:2016/11/23(水) 00:34:35.33 ID:XRl7gwFc.net
- >>281
ショートカット用です
>>282
http://uproda.2ch-library.com/9542717c9/lib954271
http://uproda.2ch-library.com/9542717c9/lib954271.ico
共に見れないです。 というかDLキーを入力する欄が無い
- 284 :デフォルトの名無しさん:2016/11/23(水) 01:06:25.90 ID:tyNVpJn+.net
- http://rubyinstaller.org/favicon.ico
- 285 :デフォルトの名無しさん:2016/11/23(水) 02:10:56.09 ID:tyNVpJn+.net
- >>277
http://u1.getuploader.com/sample/download/11532/sample_11532.zip
rubyinstaller.org の画像を使って作ってみた 👀
Rock54: Caution(BBR-MD5:09d9d5ea29ae030fc5f15f1492842ada)
- 286 :277:2016/11/23(水) 02:25:08.36 ID:XRl7gwFc.net
- >>285
あんがと
- 287 :デフォルトの名無しさん:2016/11/24(木) 13:46:49.29 ID:SaghWnm/.net
- replace.rbを実行すると、
source.datファイル
文字
#kokokara
書き換えたい文字
#kokomade
文字
て感じでコメントで囲まれた部分のみ書き換えたい。
どうすればいい?
- 288 :デフォルトの名無しさん:2016/11/24(木) 14:14:50.38 ID:ZpQTd+Xn.net
- buff = ''
File.open('source.dat'){|fh| buff = fh.read.sub( /(?=#kokokara)(.*?)(?>#kokomade)/m ){ '書き換え' } }
- 289 :デフォルトの名無しさん:2016/11/24(木) 14:38:01.91 ID:SaghWnm/.net
- ありがとうございます
- 290 :デフォルトの名無しさん:2016/11/24(木) 18:44:14.32 ID:v6KW5pDh.net
- Timeをnewしたり加減算する時に都度丸めずとも
はじめから分未満を丸めるgemとかありますか?
- 291 :デフォルトの名無しさん:2016/11/24(木) 23:46:30.89 ID:g1cJ7kXy.net
- Railsならメソッドチェーンで、1週間前・後を、
1.weeks.ago, 1.days.from_now
など、色々な表現ができるから、探してみれば?
- 292 :デフォルトの名無しさん:2016/11/25(金) 00:39:15.70 ID:6I1tAUNu.net
- 自前でTimeにモンキーパッチ
- 293 :288:2016/11/25(金) 15:35:05.30 ID:K8sLqeeD.net
- >>287
ごめんなさい、大嘘書いてた
(?=...)(.*?)(?>...) は間違いで、
(?<=...)(.*?)(?=...) として後読みと先読みで囲って、$1 に書き換え前の文字列
buff = File.open('source.dat'){|fh| fh.read.sub( /(?<=#kokokara\n)(.*?)(?=#kokomade)/m ){ "書き換え\n" } }
マーカーを消したかったら
buff = File.open('source.dat'){|fh| fh.read.sub( /#kokokara(.*?)#kokomade/m ){ "書き換え" } }
- 294 :デフォルトの名無しさん:2016/11/26(土) 15:01:36.97 ID:mx1WdaLu.net
- >>293
>( /(?<=#kokokara\n)(.*?)(?=#kokomade)/m )
^ を付けて、#kokokara, #kokomade を、行頭に限定した方がいいかも
( /(?<=^#kokokara\n)(.*?)(?=^#kokomade)/m )
- 295 :デフォルトの名無しさん:2016/11/28(月) 17:29:57.45 ID:S7Gjt5Bx.net
- 【12月14日】 日本発の世界恐慌! 【米利上げ】
12月14日に利上げをしたら、世界中の株価暴落になる、100%間違いない。https://youtu.be/90hYAE_NDNY
終いには政府にも支えることができなくなり、どん底に落ちていきます。日本政府がアメリカ国債の25%を引き出すと世界経済が破綻し、マイト レーヤは出現するでしょう。マイト レーヤが公に現れるにつれてUFOが、とてつもない数で姿を表すでしょう。
タクシー運転手(65)が意識失い死亡 千葉http://headlines.yahoo.co.jp/hl?a=2016112
認知症の過程は放射能汚染によって加速します。問題は、多くの人々が放射能の影響で死んでいるのに、日本政府が何も認めないことです。マイト レーヤは原発の閉鎖を助言されます。非常に間もなくマイト レーヤをテレビで見るでしょう。彼は「匿名」で働いております。
- 296 :デフォルトの名無しさん:2016/11/28(月) 22:42:18.84 ID:padn7mYh.net
- yield についてドラえもんを例に説明してくれ。
- 297 :デフォルトの名無しさん:2016/11/30(水) 20:00:09.42 ID:PNa3/H0Q.net
- ミニツクが復活している・・・
- 298 :デフォルトの名無しさん:2016/11/30(水) 20:06:58.40 ID:SfFGX6QD.net
- ミニツクの初心者用コースってコードの実行例で結構間違いあるよね
ホントの初心者だと迷いそうだわ(´・ω・`)
- 299 :デフォルトの名無しさん:2016/11/30(水) 22:11:42.44 ID:0zul0T3a.net
- ENV['my_application_variable'] = '1' if ENV['my_application_variable'].blank?
2回でてくるmy_application_variableがdryじゃないんで
嫌なんですけど、これを短く書く方法はないですか?
条件
・使っているライブラリの仕様上、環境変数にいれなければならない。
・空文字でも'1'を入れる必要があるので、||=は使えない。
・Railsで使えるメソッドは使ってOK
条件付き代入みたいなものないかね?
- 300 :デフォルトの名無しさん:2016/12/01(木) 07:43:04.07 ID:91ReGJeh.net
- MAV = 'my_application_variable'
ENV[MAV] = '1' if ENV[MAV].blank?
- 301 :デフォルトの名無しさん:2016/12/01(木) 09:40:44.58 ID:d1oSzjmi.net
- >>300
二行になってローカル変数が増えてる。
もっとマシな方法ないの?
- 302 :デフォルトの名無しさん:2016/12/01(木) 12:11:29.17 ID:5zfWITAP.net
- ENV['my_application_variable'] = '1' when blank
- 303 :デフォルトの名無しさん:2016/12/01(木) 21:04:29.89 ID:d1oSzjmi.net
- だめみたいね。ここまでか
irb(main):001:0> ENV['aaa'] = '1' when blank
SyntaxError: (irb):1: syntax error, unexpected keyword_when, expecting end-of-input
ENV['aaa'] = '1' when blank
^
from /usr/bin/irb:11:in `<main>'
- 304 :デフォルトの名無しさん:2016/12/01(木) 21:19:40.96 ID:2IFm11I0.net
- rubyのhashは初期値設定できた
- 305 :デフォルトの名無しさん:2016/12/01(木) 21:46:59.02 ID:qbmZssP5.net
- 呼び出すときにこうするとか
ENV['my_application_variable'].to_s.sub(/\A\z/, '1')
ライブラリで使うみたいだし無理か
- 306 :デフォルトの名無しさん:2016/12/01(木) 21:52:22.17 ID:2IFm11I0.net
- ENV.fetch('myhoge', '1')
- 307 :デフォルトの名無しさん:2016/12/01(木) 22:53:15.81 ID:3crCXgJS.net
- いいじゃんそれで
他にやることあると思う
- 308 :デフォルトの名無しさん:2016/12/01(木) 22:58:11.96 ID:N8O9wUz9.net
- DRYにこだわりすぎてもダメだしな
DRYはメンテナンスしやすくするためのいち手段
手段が目的になってはいけない
- 309 :デフォルトの名無しさん:2016/12/02(金) 00:18:59.48 ID:tqwX+tIq.net
- でももしこれが可能ならDRYにするんでしょ?
手段が〜とか出来ないことの言い訳にしか見えないよ。
- 310 :デフォルトの名無しさん:2016/12/02(金) 04:38:07.11 ID:RG701yLz.net
- >・空文字でも'1'を入れる必要があるので、||=は使えない。
この条件がある以上は自分で用意するしか無いね
Hashにモンキーパッチでもすればいいよ
- 311 :デフォルトの名無しさん:2016/12/02(金) 06:57:28.44 ID:8YvcaX3X.net
- というか元々の仕様上堂々と2行分の処理だよね
勝手に「こんなの簡単でしょ1行でサクッとできるでしょ」とか言われてもギリっと歯を噛むしか
- 312 :デフォルトの名無しさん:2016/12/02(金) 07:15:46.16 ID:ODJLJCqj.net
- つか、環境変数が空文字列ってありえるのか?
設定されてない場合は nil が返るはずなんだが…
$ HOGE=""
$ ruby -e 'p ENV["HOGE"]'
nil
- 313 :デフォルトの名無しさん:2016/12/02(金) 08:02:05.09 ID:JTKNeiyC.net
- >>312
それシェル変数。export しないと子プロセスに渡らない。
ついでに言うとスペース一個とかでも blank? は真になる。
- 314 :デフォルトの名無しさん:2016/12/02(金) 15:45:28.28 ID:ocojT6FV.net
- macroで済ませたいところ
- 315 :デフォルトの名無しさん:2016/12/02(金) 16:12:34.82 ID:Yd67HXR2.net
- crystal使おう
- 316 :デフォルトの名無しさん:2016/12/04(日) 12:40:41.70 ID:ytM7QMnr.net
- def foo (*args)
p args
p args[0]
p *args
end
foo [1,2,3]
出力結果
[[1,2,3]]
[1,2,3]
[1,2,3]
最後の
p *args
の意味が分からないのですが、どういう構文なのでしょうか?
- 317 :デフォルトの名無しさん:2016/12/04(日) 12:47:37.04 ID:HCAAGxQ4.net
- *はsplatと呼ばれる
直後のオブジェクトにto_aをかけると思ってもらうといい
- 318 :デフォルトの名無しさん:2016/12/04(日) 13:08:08.37 ID:tKcWat/f.net
- >>316
配列の展開では。
irb(main):001:0> a=[1,2,3]
=> [1, 2, 3]
irb(main):002:0> print a
[1, 2, 3]=> nil
irb(main):003:0> print [1,2,3]
[1, 2, 3]=> nil
irb(main):004:0> print *a
123=> nil
irb(main):005:0> print 1,2,3
123=> nil
- 319 :デフォルトの名無しさん:2016/12/04(日) 13:27:46.42 ID:ytM7QMnr.net
- >317
ありがとうございます。
>318
irb(main):001:0> a = [1,2,3]
=> [1, 2, 3]
irb(main):002:0> *a
SyntaxError: (irb):2: syntax error, unexpected '\n', expecting '='
from C:/Ruby21-x64/bin/irb:11:in `<main>'
*aの評価値を見ようとしていてうまくいかなくてどうなっているんだ、と思ってたのですが、pすればいいんだ。
(expecting '=' で気づけ、自分)
納得いきました。ありがとうございました。
- 320 :デフォルトの名無しさん:2016/12/05(月) 15:27:42.33 ID:dF177W8B.net
- メモ
SQLインジェクション対策もれの責任を開発会社に問う判決 | 徳丸浩の日記
http://b.hatena.ne.jp/entry/blog.tokumaru.org/2015/01/sql.html
- 321 :デフォルトの名無しさん:2016/12/06(火) 01:28:22.79 ID:HR1yYwh6.net
- Ruby の C 言語による拡張ライブラリを作成して実行しているのですが,
再現性の無いバグに悩まされています.同じプログラムを5回動かすと4回ぐらいコケて,
下に示すようなエラーが出力されます.
同じライブラリを C 言語プログラムから呼び出すとエラーが出力されません.
そのため,gdb 等でのデバッグが出来ません.
-- Crash Report log information --------------------------------------------
...
-- Control frame information -----------------------------------------------
...
-- C level backtrace information -------------------------------------------
-- Other runtime information -----------------------------------------------
...
C 言語プログラムから呼び出すとエラーが出ないということは,
rb_define_class 等で定義しているラッパ部分の記述に問題が有るような
気がしていますが,printf によるデバッグで場所を特定出来ないでおります.
また,問題は C level backtrace information のところに出力がされないことだと
思っているのですが,ココに何か出力させるには,gcc -g のオプション以外に
何か必要なのでしょうか?
- 322 :321:2016/12/06(火) 01:29:36.00 ID:HR1yYwh6.net
- ちょっと古いけすけど,ruby 2.0.0, OSX,xcode の gcc を使っています.
- 323 :321:2016/12/06(火) 01:31:37.05 ID:HR1yYwh6.net
- extconf.rb から出力された Makefile をそのまま利用しています.
- 324 :デフォルトの名無しさん:2016/12/06(火) 12:07:10.61 ID:SXsp+YBz.net
- ソース貼れ
- 325 :デフォルトの名無しさん:2016/12/06(火) 13:05:53.77 ID:Kn1BSDAJ.net
- テキストファイルから正規表現の条件にマッチする数列のみを取り出すプログラムを作りたい。
#number.txt
139
134
243
154
265
datafile =
- 326 :デフォルトの名無しさん:2016/12/06(火) 13:07:05.86 ID:Kn1BSDAJ.net
- テキストファイルから正規表現の条件にマッチする数列のみを取り出すプログラムを作りたい。
#number.txt
139
134
243
154
265
datafile = "number.txt"
File.open(datafile) do |f|
f.each_line do |line|
p /^[1][3][0-9]$/ =~ line
end
end
これだけだと
0
0
nil
nil
nil
と出力されてしまう。
139
134
と出力するにはどうしたらいいか。
- 327 :デフォルトの名無しさん:2016/12/06(火) 13:30:50.46 ID:rcXtUD5h.net
- >>326
/re/ =~ str の戻り値自身はマッチした位置情報のみを返す
0は0文字目でマッチしたという意味でnilはマッチしなかったという意味
マッチした文字列を利用したい場合は今後のことも考えて()を使う
正規表現内の1番目の()で囲った正規表現にマッチした文字列は変数 $1 か String#matchの戻り値[1] で利用できる
irb> p $1 if '1122334455' =~ /([2]+)/
"22"
irb> m = '1122334455'.match(/([2]+)/); p m[1] if m
"22"
よってスクリプトはこんな感じになる
datafile = "number.txt"
File.open(datafile) do |f|
f.each_line do |line|
matched = line.match(/^([1][3][0-9])$/)
p matched[1] if matched
end
end
- 328 :デフォルトの名無しさん:2016/12/06(火) 13:35:42.41 ID:ui9UYxht.net
- ^13\d$でいいんじゃないの?
- 329 :デフォルトの名無しさん:2016/12/06(火) 13:39:38.26 ID:rcXtUD5h.net
- 実際はもっと長い正規表現なのかもしれないし()の利用作法だと思って混乱するのも嫌なので元の部分は極力直さなかった
個人的には\Aと\Zを使いたかったが本筋ではない
- 330 :デフォルトの名無しさん:2016/12/06(火) 14:29:41.50 ID:0+futo+K.net
- $ ruby --version
ruby 2.1.10p492
word1 = /<td align="center"><a href="http:\/\/.*\/" target="_blank">/
puts line if line =~ word1
で画面に出力させることができています。後の処理で、word1の内容を置換したいのですが、
上手く行きません。
puts line = line.gsub(word1,'【')
あるいは
puts line = line.gsub(/<td align="center"><a href="http:\/\/.*\/" target="_blank">/,'【')
でもダメです。入力ファイルの全てが出てきています。
質問が的はずれかもしれませんが、=~,とgsubの正規表現は使い方が違うのでしょうか?
後者のgsubはどうすべきでしょう?
- 331 :デフォルトの名無しさん:2016/12/06(火) 15:02:38.98 ID:ETIaxsXC.net
- 先ほどのソースのまま
正規表現の後に
p $& とすると
139
134
nil
nil
nilとなったので
nilを表示しないようにしたい。
- 332 :デフォルトの名無しさん:2016/12/06(火) 15:05:16.71 ID:D3xfQ035.net
- しないようにすれ
- 333 :デフォルトの名無しさん:2016/12/06(火) 15:08:06.62 ID:ui9UYxht.net
- よくわからんが原因は他じゃないかな?
下のでちゃんと動くよ。
word1 = /<td align="center"><a href="http:\/\/.*\/" target="_blank">/
line='<td align="center"><a href="http://2ch.net/" target="_blank">置換です</a></td>'
puts line=line.gsub(word1,"きゃあー")
- 334 :デフォルトの名無しさん:2016/12/06(火) 15:08:32.74 ID:ETIaxsXC.net
- if文に変えたらできました!
ありがとうございました!
- 335 :デフォルトの名無しさん:2016/12/06(火) 15:20:29.06 ID:my75alTQ.net
- >>330
上にもあるが普通は欲しい部分を抜き出してから修飾する
require 'open-uri'
html = open('http://qiita.com/tags/Ruby').read
html.scan(/<div class="ItemLink__title"><a.+?>(.+?)<\/a>/).each{|v| puts v}
#結果:
CSVさえあればいい!形態素解析→単語感情極性対応表で超お手軽ネガポジ分析♪ (with Rails)
MailCatcherでメール送信をテスト
【Rails】ぼくのかんがえたさいきょうの設定(rails newそのあとに)
Rails:Service層を運用して良かったところ、悪かったところ
Rails スクレイピング手法 Mechanizeの使い方
Rails開発におけるwebサーバーとアプリケーションサーバーの違い(翻訳)
Ajaxでセレクトボックスの中身が動的に変わるRailsアプリの作り方
初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」
...
こっちのほうが絶対に見通しがいいし作成途中での確認もカンタン
んでさらっと .+? を使ってるが「正規表現の最短マッチ」について調べるといい
わけわからん状態のところを自力でひとつづつ潰していくのだ
- 336 :デフォルトの名無しさん:2016/12/06(火) 16:14:26.50 ID:0+futo+K.net
- 有難うございます。
word1 = /<td align="center"><a href="http:\/\/.*\/" target="_blank">/
file.each_line do |line|
(中略)
line = line.gsub(word1,'【')
puts line if line =~ /【/
これでできました。原因は他にもありました。
- 337 :デフォルトの名無しさん:2016/12/06(火) 22:40:43.49 ID:N07Fi8es.net
- >>321-323
再現性の無いバグなら、マルチスレッドのライブラリを使っているとか、
ポインタが想定外のアドレスを指しているとか
>>325-326
2chのバグだろう
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" の代わりに、\" とエスケープすれば、どうだろう?
それか、書き込み確認画面が出たら、1度キャンセルすれば、確認画面は出ないようになった
>>326
1行ずつループする必要はない
File.read('number.txt').scan(/^13\d$/) do |matched|
p matched # ここに処理を書く
end
- 338 :デフォルトの名無しさん:2016/12/06(火) 23:36:56.03 ID:irhz0xDF.net
- https://paiza.jp/moshijo/challenge/moshijo_character_4
勉強がてら始めたけど、いきなり躓いた……
a,b,c = gets.split.map(&:to_i)
d = a + b
e = a - b
if /"+"/ =~ c
puts d
else
puts e
end
if文でcの入力値が+で一致してたらそれに合わせて出力、っていう形でいけると思ったらエラーが出て無理だった……
- 339 :デフォルトの名無しさん:2016/12/06(火) 23:57:34.34 ID:Ke9ZeJQj.net
- >>338
問題が分からんけど、正規表現での + は特殊文字だから + という文字に一致させるにはエスケープが必要
というか、if c == '+' でいいんじゃないの?
- 340 :デフォルトの名無しさん:2016/12/06(火) 23:59:40.47 ID:Ke9ZeJQj.net
- >>338
あと、a,b,c = gets.split.map(&:to_i) とすると、全部 to_i しようとするから '+' も to_i しておかしなことになるよ
- 341 :デフォルトの名無しさん:2016/12/07(水) 01:37:01.20 ID:dh118EuJ.net
- 画像で申し訳ないけど問題はこんなん
http://i.imgur.com/N2iY7aJ.jpg
ようは半角スペース区切りで、数字2つと+か−を入力
+なら前者の数字を足し算、−なら引き算をして出力しろっていう問題
修正したけど何故か−側の答えしか出なくてワロタ……
なんで+判定してくれんのだ
a,b,c = gets.split(' ').map(&:to_i)
d = a + b
e = a - b
if c == /\+/ then
puts d
else
puts e
end
- 342 :デフォルトの名無しさん:2016/12/07(水) 04:45:38.63 ID:qM0eFzSC.net
- >>341
https://docs.ruby-lang.org/ja/latest/method/String/i/to_i.html
整数とみなせない文字があればそこまでを変換対象とします。 変換対象が空文字列であれば 0 を返します。
p "0x11".to_i # => 0
p "".to_i # => 0
つまり
> "+".to_i
=> 0
> "-".to_i
=> 0
> a,b,c="1 2 +".split(' ').map(&:to_i)
=> [1, 2, 0]
> a,b,c="1 2 -".split(' ').map(&:to_i)
=> [1, 2, 0]
> puts /\+/
(?-mix:\+)
> puts Regexp.new(/\+/)
(?-mix:\+)
> 0 == /\+/
=> false
> 0 == Regexp.new(/\+/)
=> false
こういうこと
- 343 :デフォルトの名無しさん:2016/12/07(水) 07:11:33.83 ID:4ygr9k/C.net
- >>341
>>340 を読め
- 344 :デフォルトの名無しさん:2016/12/07(水) 07:37:56.24 ID:9RayTpny.net
- >>339、>>340、>>340
ありがとうございます、やっと出来ました!
a,b,c= gets.split
d = a.to_i+b.to_i
e = a.to_i-b.to_i
if c == '+' then
puts d
elsif
puts e
end
入力を文字列で受け取ってから、それを数値として扱うようにしてから計算
最後に出力っていう形にしたら成功しました!
改めてgets.split.map(&:to_i)や.to_iの意味を理解できて良い勉強になりました
- 345 :デフォルトの名無しさん:2016/12/07(水) 16:18:08.81 ID:xs1sI7sQ.net
- オライリのディープラーニング本進めてるがバッチ処理のあたりから
ようわからん。
数学は好きなんだけどプログラミング特有のテクニックになると
どうも飲み込みづらい。
- 346 :デフォルトの名無しさん:2016/12/07(水) 16:35:10.61 ID:aZJac4xC.net
- オライリーのDL本はPythonじゃねーの?
- 347 :デフォルトの名無しさん:2016/12/07(水) 22:34:39.98 ID:vMVuhNA3.net
- Rubyでディープラーニングなんか遅過ぎて勉強以前の問題だと思うけど
numpyと比べたら軽く数桁違うだろ
- 348 :デフォルトの名無しさん:2016/12/07(水) 23:37:57.91 ID:4ygr9k/C.net
- >>347
勉強のために入るなら使い慣れた言語ってのは普通にある選択肢だと思うけどなー
知らない分野と知らない言語のダブルに対処するより効率が高いだろうし
- 349 :デフォルトの名無しさん:2016/12/08(木) 03:46:35.74 ID:WR2cMfp2.net
- 本の言語に合わせた方が分かりやすくね?
その言語知らないと翻訳できないんじゃね?
- 350 :デフォルトの名無しさん:2016/12/08(木) 07:25:28.39 ID:/aGxLpEu.net
- 言語に気を取られるのは無駄ってどっちかというとPython的な理屈だしなあ
Rubyと違ってシンプルだからそんなに難しく考える必要はない
- 351 :デフォルトの名無しさん:2016/12/08(木) 09:33:01.89 ID:u0pmvICB.net
- 直也:.NET CoreというかC#って型があって、しかもサーバーサイドも書けるじゃないですか。Linuxでやってた人たちはずっとスクリプト言語使ってて、
Rubyとか型がない言語でサーバーサイド書いてることに疲れてきちゃってるんですよね。
ある程度の規模のものではサーバーサイドも型がある言語で書きたいと思って、
ScalaとかJava 8をやってみたんだけど、どの言語もちょっとバランスが悪いんですよね。
Scalaはプログラマ寄りすぎるし、Javaはコンサバすぎる。サーバーサイドSwiftもとがりすぎてるし。
実績があって型がある言語ってC#なんですよね。そのC#がLinuxで使えるのは大きいんですよね。
だから、ワンチャンあるなって。あとは市場が評価するかどうかなんですよね。
バランスはいいと思います。それがWindowsだけでなくMacでも使えるようになったのは本当に大きいですし。
- 352 :デフォルトの名無しさん:2016/12/08(木) 09:49:01.09 ID:V2tLN3UQ.net
- Racketみたいにpythonのnumpyとかそのまま流用できる方法はrubyにはないのですか?
- 353 :デフォルトの名無しさん:2016/12/08(木) 21:28:42.10 ID:6kXtynY2.net
- 初めて1日目の初心者なんですけど直し方がわかりません
Ocraでexe化して起動するとBad signature in executable.ってエラーが出ます
windows10でRubyのバージョンは最新版です
ちなみにexe化したファイルのソースは
# encoding: Shift_JIS
print
- 354 :353:2016/12/08(木) 21:43:20.44 ID:6kXtynY2.net
- 途中送信すみません
# encoding: Shift_JIS
print てすと
です。
- 355 :デフォルトの名無しさん:2016/12/08(木) 22:30:09.38 ID:HERlhtNF.net
- どこでそのエラーが発生したのか分からんけど
ファイル名:353.rb
中身は以下だけ
printf ("てすと")
この状態でターミナルから>ocra 353.rb
これで特にエラーも無くexeして、実行するとウィンドウが起動してテストって表示されて終了する
win7でRubyのバージョンも2.2.4だから状況違うけど
俺も初心者だから良く分からんぞい
- 356 :353:2016/12/08(木) 22:37:38.67 ID:6kXtynY2.net
- DevKit入れたら自決しました
- 357 :デフォルトの名無しさん:2016/12/09(金) 00:54:47.09 ID:GS4b0ME0.net
- 死ぬんじゃない
- 358 :デフォルトの名無しさん:2016/12/09(金) 04:36:22.37 ID:VazcIIHJ.net
- macでrb拡張子(スクリプト)をターミナルで実行するにはどうすればいいですか?
homebrewやRuby on Rails を入れる必要がありますか?
- 359 :デフォルトの名無しさん:2016/12/09(金) 07:09:25.41 ID:IAKedM2U.net
- バージョンを問わないなら最初から入ってるだろ
ruby myrubyscript.rb
- 360 :デフォルトの名無しさん:2016/12/09(金) 07:15:38.30 ID:JZme2NZr.net
- irb(main):001:0> a,b,c = [1,2],3
=> [[1, 2], 3]
irb(main):002:0> a
=> [1, 2]
irb(main):003:0> b
=> 3
irb(main):004:0> c
=> nil
irb(main):005:0> a,b,c = [[1,2],3]
=> [[1, 2], 3]
irb(main):006:0> a
=> [1, 2]
irb(main):007:0> b
=> 3
irb(main):008:0> c
=> nil
これって、どのように理解したらいいですかね?
- 361 :デフォルトの名無しさん:2016/12/09(金) 07:35:31.81 ID:ESs2BvJq.net
- >>360
[[1, 2], 3] は [1, 2] と 3 の2つの要素からなる配列
だから a, b, c = [[1, 2], 3] とすると a には1要素目の [1, 2] が入り、
b には2要素目の 3 が入り、c は3要素目がないので nil が入る
- 362 :デフォルトの名無しさん:2016/12/09(金) 07:39:07.21 ID:ESs2BvJq.net
- >>360
[1, 2], 3 と [[1, 2], 3] の違いは以下を参照
https://docs.ruby-lang.org/ja/2.3.0/doc/spec=2foperator.html
> 右辺の式が一つし か与えられなかった場合、式を評価した値は配列に変換されて、各 要素が左辺のそれぞれの式に代入されます。
- 363 :デフォルトの名無しさん:2016/12/09(金) 08:04:59.41 ID:CktcRLbu.net
- だから理屈としては「配列リテラルの多重代入は行わない方がよい」になる
こんなことでエラーにしたくないので色々なパターンを頑張って実装したんだが
その結果誰にも読み解けないものができてしまった
- 364 :デフォルトの名無しさん:2016/12/09(金) 10:24:20.17 ID:p9V2Jelw.net
- マニュアルにある通りだとおもうけど?
foo, bar = [1, 2] # foo = 1; bar = 2
foo, bar = 1, 2 # foo = 1; bar = 2
(foo, bar), baz = [1, 2], 3 # foo = 1; bar = 2; baz = 3
- 365 :デフォルトの名無しさん:2016/12/09(金) 10:49:11.49 ID:FAhbp1DA.net
- class Lottery
result=["大吉", "中吉", "小吉", "凶", "大凶"]
def roll
num=rand(5)
return num
end
print result[roll],"です。\n"
end
Lottery.new.roll
上記コードでundefined local variable or method `roll' for Lottery:Class (NameError)が発生します。
原因がどこにあるか教えてください。
- 366 :デフォルトの名無しさん:2016/12/09(金) 11:23:52.82 ID:6FftK3xp.net
- >>365
class...endの中においてdefでふつーに定義するメソッドは「そのクラスのインスタンスメソッド」となる
これは「そのクラスのインスタンス(=オブジェクト)」に属しているため、インスタンスを生成していないclass定義の中から呼び出すことはできない
……というような説明で理解できるならそもそもそんなことしねーよというのはまあその通りではある
とりあえずは
「クラス定義の中ではそこで定義したインスタンスメソッドを使うことはできない」
「クラス定義の中では"地の文"を書いてはいけない」
というふうに思っておくといいよ
class Lottery
# クラス定義の中で大文字で始まると"クラス定数"。くわしくはぐぐれ
RESULT=["大吉", "中吉", "小吉", "凶", "大凶"]
def dice
num=rand(5)
return num
end
# データ生成と表示はメソッドを分ける
# あと画面表示にputsメソッドを紹介してない参考書は焚書で
def roll
puts RESULT[dice]+"です"
end
end
Lottery.new.roll
- 367 :デフォルトの名無しさん:2016/12/09(金) 11:46:46.57 ID:FAhbp1DA.net
- >>366
解説ありがとうございます。
>「そのクラスのインスタンス(=オブジェクト)」に属しているため、インスタンスを生成していないclass定義の中から呼び出すことはできない
ここをそもそも知らなかったためにどはまりだったので、助かりました。
># クラス定義の中で大文字で始まると"クラス定数"
定数じゃないとエラーが出るんですね。勉強不足でした。
># データ生成と表示はメソッドを分ける
そこそこ勉強しているつもりですが、まだまだ初心者を抜け出せない状態です。実際のところ相当煮詰まっている状態でして、こういった実装時の作法?
みたいなものを知りません。おすすめの書籍などありませんでしょうか。
># あと画面表示にputsメソッドを紹介してない参考書は焚書で
焚書ですか…
- 368 :デフォルトの名無しさん:2016/12/09(金) 12:47:27.53 ID:Kfw6K1eC.net
- Rubyの基礎を学んでる最中にRubyのお作法も別途学ぼうとすると息苦しくてつまんないと思う
とりあえずはその手元にある今使ってるやつで学んでみたらどうだろうどうかしら
矯正はあとからでもできるし無駄や遠回りはある程度経験しておくとその後なんとしても無駄や不作法を避ける糧になるよw
- 369 :デフォルトの名無しさん:2016/12/09(金) 13:55:22.62 ID:FAhbp1DA.net
- >>367
了解しました。まだ基礎力が定着していないのに分不相応でしたね。ですが、最近なんかDRYが多くて
作成したコードが不細工だなあと感じるようになり、うまくすっきりしたコードは書けないかなと思ったものですから。
まあ、とにかく基礎的・基本的なことに集中しようと思います。
- 370 :デフォルトの名無しさん:2016/12/09(金) 20:21:49.49 ID:EaN/YLKK.net
- 基本の文法書は、
たのしいRuby 第5版、2016
その次のレベルは、プロ必須本の、
Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説
- 371 :デフォルトの名無しさん:2016/12/09(金) 22:49:00.14 ID:pEg3v2QU.net
- たのしいRubyは何とか読みきれたけど
次に買ったRuby on Rails4 アプリケーションプログラミングは内容が濃すぎて挫折してたから
Effective Rubyを買ってみようかな……
- 372 :デフォルトの名無しさん:2016/12/09(金) 23:02:53.80 ID:EaN/YLKK.net
- 改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015
これの方が、わかりやすい
- 373 :デフォルトの名無しさん:2016/12/09(金) 23:06:00.61 ID:IAKedM2U.net
- >>371
伸び悩んだら他の言語に浮気するのがおすすめ
気分転換とかじゃなくて本質が見えるようになる
戻ってきたら驚くほど分かるようになってる
- 374 :デフォルトの名無しさん:2016/12/09(金) 23:28:07.12 ID:EaN/YLKK.net
- それなら、12/22 発売の「みんなのPython 第4版」
この本は「たのしいRuby」と表裏一体だから、スラスラ読める
- 375 :360:2016/12/10(土) 00:08:14.85 ID:SQghVBCH.net
- 遅レスだがありがとう。
- 376 :デフォルトの名無しさん:2016/12/10(土) 00:16:10.17 ID:7eWDkV7Q.net
- 本を読んで勉強したのは最初の言語だけだなー(C++だったな)
あとはネットで情報を漁ってとりあえず書いてみてってのを繰り返して覚えてるな
いくらガベージコレクタがどうの型がどうのと言われても、やはりC++のような
メモリ管理や型についての基礎知識は持っておいた方がいいと思うのは老害の戯言かなー
- 377 :デフォルトの名無しさん:2016/12/10(土) 06:45:40.85 ID:F6sTBWuO.net
- それはまちがいなく老害
- 378 :デフォルトの名無しさん:2016/12/10(土) 11:45:02.49 ID:qQjpy7Dv.net
- rubyにも型はある
型は意識しておいた方が良い
- 379 :デフォルトの名無しさん:2016/12/10(土) 17:29:55.11 ID:ffTfSgqi.net
- 今時メモリ管理とか勉強が必要になるぐらいまでのめり込んでいる人は
自分で読む本がわかっている頃だろうな。
- 380 :デフォルトの名無しさん:2016/12/10(土) 17:42:31.42 ID:qQjpy7Dv.net
- rubyでメモリ管理いちいち気にする香具師はアホ
- 381 :デフォルトの名無しさん:2016/12/10(土) 17:45:12.03 ID:eWdy/g06.net
- 老害っていうより、プログラマとしてのセンスが悪いと思う
- 382 :デフォルトの名無しさん:2016/12/10(土) 17:57:25.90 ID:dShDNVDG.net
- その言語でのプログラム作成者の80%が一生使わず残りの90%も初年度には触れないようなものの知識を初学者の100%に求めるのは害悪
- 383 :デフォルトの名無しさん:2016/12/10(土) 17:57:30.76 ID:02ejXKtR.net
- いまでもRailsで普通にやるとメモリバカ食いするケースの対処が必要だったり
GCの実行頻度を考慮して設計する必要があったりはするよ
安易に不必要だと決めつけるのは考えが足りない子だね
- 384 :デフォルトの名無しさん:2016/12/10(土) 18:05:28.08 ID:ck8bDMeh.net
- もちろん型やメモリ管理など内部の仕組みは
理解できている方が良いが初期の学習では不要
- 385 :デフォルトの名無しさん:2016/12/10(土) 19:21:30.99 ID:we+CUvc2.net
- 人によっては内部の動作を知りたいって子もいるから
そういう子には教えてもいいと思うけど
相手を見ないで全員に教えても意味はないやりたい事はみな違うから
- 386 :デフォルトの名無しさん:2016/12/11(日) 23:33:44.06 ID:BA+Tsrf4.net
- つまんね
- 387 :デフォルトの名無しさん:2016/12/11(日) 23:36:27.60 ID:sXnmAsK+.net
- gem installで何かを入れようとしても
ERROR: While executing gem ... (URI::InvalidURIError)
bad URI(is not URI?):
gem update --systemしようとしても
ERROR: While executing gem ... (URI::InvalidURIError)
bad URI(is not URI?):
となって出来ないんですけど
原因わかりますか?
rubyは2.3.3
gemは2.5.2
OSはwin10です
- 388 :デフォルトの名無しさん:2016/12/11(日) 23:52:42.43 ID:9ThvSwmQ.net
- >>387
プロキシ絡みじゃない?
http://stackoverflow.com/questions/37071806/ruby-error-while-executing-gem-uriinvalidurierror
- 389 :デフォルトの名無しさん:2016/12/11(日) 23:57:26.28 ID:sXnmAsK+.net
- >>388
串なんて通してないから違うと思います
- 390 :デフォルトの名無しさん:2016/12/12(月) 03:14:04.62 ID:QY0nCTMm.net
- >>387
AddTrustExternalCARoot-2048.pem を最新の物にする。
DL場所や方法は検索すればすぐ見つかる。
- 391 :デフォルトの名無しさん:2016/12/12(月) 14:54:05.30 ID:Eai/X/NY.net
- >>390
rubygems-update-2.6.8.gemを入れてみたけど改善しませんでした
- 392 :デフォルトの名無しさん:2016/12/12(月) 15:20:46.65 ID:Eai/X/NY.net
- Ruby 2.2.6に変えたら何故か解決しました
- 393 :デフォルトの名無しさん:2016/12/13(火) 15:12:14.55 ID:OjWn7cVV.net
- テストが通らない・・・
どこが間違っているかわかる方いたらお願いします。
ランクC Paiza芦屋川雛乃からのヘルプ依頼
https://paiza.jp/moshijo/
a = gets.chomp.split(" ")
s = gets.chomp
t = gets.chomp
r =""
if s == "decode"
for i in 0...t.size
for u in 0...a.size
if t[i] == a[u]
r[i] = u.to_s
end
end
end
puts r.to_i
elsif s == "encode"
for i in 0...t.size
c = t[i].to_i
t[i] = a[c]
end
puts t.to_i
end
- 394 :デフォルトの名無しさん:2016/12/13(火) 15:42:27.45 ID:wETuuVVa.net
- r = "" がおかしいんじゃないかな
- 395 :デフォルトの名無しさん:2016/12/13(火) 18:01:40.46 ID:nznhQA15.net
- Rubyで解きましたっていってこのスクリプトが返ってきたらへにょーんってなるな
- 396 :デフォルトの名無しさん:2016/12/13(火) 20:42:28.70 ID:mtOpDsT/.net
- r[i] = u.to_s
rが配列なら、[ ]が付いていない、以下はおかしい
r =""
puts r.to_i
c = t[i].to_i
t[i] = a[c]
tが配列なら、[ ]が付いていない、以下はおかしい
puts t.to_i
型が複数を扱うコンテナなのか、単体なのか、意識しろ
- 397 :デフォルトの名無しさん:2016/12/14(水) 07:41:49.95 ID:bcNQ7Ev0.net
- 意識高い系
- 398 :デフォルトの名無しさん:2016/12/14(水) 08:02:24.73 ID:Q/TaGcT0.net
- >>395
対象のRubyでeachが実装されているとは限らない
- 399 :デフォルトの名無しさん:2016/12/14(水) 08:18:08.95 ID:fDAOl6vn.net
- w
- 400 :デフォルトの名無しさん:2016/12/14(水) 08:27:07.65 ID:2yTcGsTl.net
- 今のRubyの想定バージョンっていくつなんだろうね
まだ1.8.6?
- 401 :デフォルトの名無しさん:2016/12/14(水) 15:12:01.78 ID:a66Br6Ed.net
- >>400
>>393 のテスト環境は ruby 2.3.0 と書いてありますね。
https://paiza.jp/guide/language
だから >>398 は杞憂
- 402 :デフォルトの名無しさん:2016/12/14(水) 15:16:14.96 ID:4jpqupHX.net
- >>398が皮肉だとわからないのは辛い
- 403 :デフォルトの名無しさん:2016/12/14(水) 17:49:04.08 ID:obMYgrm6.net
- ruby初心者です
クラスにアクセサ実装しました
正の整数しか受け付けさせません
それ以外は例外で弾こうと思います
どの例外がいいですか?
- 404 :デフォルトの名無しさん:2016/12/14(水) 18:01:58.62 ID:bWT0nkJt.net
- >>403
何でもいい
その手の例外は出たらバグなのでキャッチされることは無いはず
誤ってキャッチされてしまう可能性があるような紛らわしいものでなければOK
- 405 :デフォルトの名無しさん:2016/12/14(水) 18:19:07.06 ID:po7ivxZl.net
- オブジェクトとしては間違ってないんだけど処理都合で弾きたい引数が来た場合はArgumentError
オブジェクトや持ってるメソッドからして間違ってる感じのが来た場合はTypeError
ということで第三者公開するライブラリならArgumentErrorだとわかりよい
が、おおむね>>404なのでRuntimeErrorでもいいよ
- 406 :デフォルトの名無しさん:2016/12/14(水) 21:11:00.93 ID:US7iqqFk.net
- 特別なアレならStandardError継承して独自の例外投げとけば良いのでは
- 407 :デフォルトの名無しさん:2016/12/15(木) 01:34:42.58 ID:CIBVBBHR.net
- クラスメソッド内でnewメソッドを呼び出してインスタンスを生成するようなケースってどういう場合に使うんだ?
ARとかのbuildだとかfindだとかはこの類だとわかるんだけど他のライブラリとか読んでるとクラスメソッド内でインスタンス生成してそのインスタンスに対してインスタンスメソッドを呼び出して…みたいになってて意図が分からん
- 408 :デフォルトの名無しさん:2016/12/15(木) 07:08:08.19 ID:V7DRptyX.net
- >>407
オブジェクト指向プログラミングの一般的な慣習として次のようなものがある
・利用者がインスタンスを手に入れた時点で初期化などの準備は終わっていて使える状態になっている方がよい
・コンストラクタはなるべく単純な処理のみを行い、基本的に失敗しない方がよい
で、クラスメソッドを使う方法ならこの両方を満たせるというわけ
- 409 :デフォルトの名無しさん:2016/12/15(木) 07:22:36.49 ID:YHGHBn1b.net
- 不完全なインスタンスが出来ないように initialize 内で積極的に例外活用するスタイルもある。
>>407
インスタンスを作るのはインスタンスに状態をもたせたい時。処理が複数のメソッドから成っていて状態を共有したいケース。
クラス自体にメモ書きするのはスレッドセーフにならんとか色々あってオススメしない。
- 410 :デフォルトの名無しさん:2016/12/15(木) 07:32:30.44 ID:V7DRptyX.net
- >>409
>不完全なインスタンスが出来ないように initialize 内で積極的に例外活用するスタイルもある。
クラス名からコンストラクタで何やってるかがわかりきってるようなものならそれでもいいけどね
コンストラクタで複雑な処理をしない方がよいというのは、
・名前がクラス名だけでメソッド名が無いので一見して何やってるのか分かりにくい
・一つしか持てないので拡張性に乏しい
という意味もある
- 411 :デフォルトの名無しさん:2016/12/15(木) 08:28:32.84 ID:qDnwyx0x.net
- >>407
「クラスメソッドがそのクラスのインスタンスメソッドを活用したユーティリティメソッドになってるだけ」という手抜き理由もあるよ
本来はHogeUtilsモジュールとかに切り出すべきだけどHogeクラスのクラスメソッドに入れちゃってる
あらゆる事象に深遠なる理由を求めて小難しく考える必要はないw
- 412 :デフォルトの名無しさん:2016/12/15(木) 08:41:19.54 ID:TuKRCX6V.net
- 環境win7
ruby 2.2.5
C:\Users\〜〜>gem update --system
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certif
icate verify failed (https://api.rubygems.org/specs.4.8.gz)
gemのアップデートしようとしたらこんなエラーが出て出来なくなった
http://qiita.com/fkshom/items/4206ebafbd80aa985498
や
http://book.scss.jp/code/c2/07.html
を参考に証明書をコピーしたりgemのダウンロード先を変えてみたりしたけどダメだった……
- 413 :デフォルトの名無しさん:2016/12/15(木) 08:41:29.02 ID:CIBVBBHR.net
- 色々回答ありがとう
気になったところを書いてみる
>>408
うーんそれだけの慣習ならインスタンスメソッドでよくね?と感じた。
>>409
クラス変数的に状態共有させると色々整合性取れなくなるので状態共有が目的でクラスメソッドを使うのも違和感ある。
>>411
それはわりと見かける気がするね
- 414 :412:2016/12/15(木) 08:59:47.45 ID:TuKRCX6V.net
- ごめん、出来たわ
2.2.6の証明書を既存のrubyにコピーしたら出来たわ
本当に申し訳ない
- 415 :デフォルトの名無しさん:2016/12/15(木) 09:07:36.45 ID:ArFpv1Xp.net
- >>413
まあRubyなら初期化用のインスタンスメソッドを設けるほうが一般的かもね
今時は、とにかく状態を持つことを嫌って、初期化済みかどうかといった余計な状態を増やすのではなくインスタンスの生成と一致させてしまえ
という考え方がどっちかというと主流なんだけど、Rubyはその点わりと昔ながらの「オブジェクトは生き物」な感じなので
- 416 :デフォルトの名無しさん:2016/12/15(木) 11:58:47.88 ID:jYtTego3.net
- ルビーやサファイアの雲が存在?地球から1000光年先の惑星、英大学が調査
da i ly.2ch.net/test/read.cgi/ne wspl us/1481704596/
- 417 :デフォルトの名無しさん:2016/12/16(金) 10:30:45.38 ID:peb6q01b.net
- $ ruby --version
ruby 2.1.10p492
puts line if line =~ /<a target="_blank" rel="nofollow" href="http:\/\/www.xxxxxx.co.jp\/.*\/>\r:.*/m
puts line if line =~ /^:.*/
最終的に行いたいのは上の二行から改行を消してstringに入れたいのですが、改行でヒットしないので
テストとして一行目の記述を書きました。ヒットしなくて困っています。
utf8、LFなファイルで、末尾の改行\rでも\Rでもマッチしません。
"http:\/\/www.xxxxxx.co.jp\/.*\/>/mやmなしではパターンマッチします。
どうすれば一行目は改行を含めてマッチするでしょうか?
- 418 :デフォルトの名無しさん:2016/12/16(金) 10:58:45.79 ID:wL7umkxz.net
- 言ってる意味がよくわからないけどLFなら¥nじゃないの
- 419 :デフォルトの名無しさん:2016/12/16(金) 11:16:34.44 ID:SEQOd6ed.net
- いらない行
ほしい1行目
ほしい2行目
いらない行
から「ほしい1行目\nほしい2行目」を正規表現で取り出すにはどうすればいいですか?
回答:
正規表現の中に改行を書けばよい。//mは「.が改行にもマッチするようになる」機能であり、今回とは無関係
正規表現「^」は実際には「改行の直後の位置そのもの」にマッチし正規表現「$」は実際には「改行の直前の位置そのもの」にマッチする
※改行のない文字列に対してはちょっと違うが割愛
つまり「改行直後+ほしい1行目+改行+ほしい2行目+改行直前」という正規表現を使えばよい
String#scanメソッドはマッチした文字列をすべて含んだ配列を返す
irb>
- 420 :デフォルトの名無しさん:2016/12/16(金) 11:19:23.88 ID:PSmXndV/.net
- https://youtu.be/8fPmkq1CkCU
https://youtu.be/PR6r40GbIfk
- 421 :デフォルトの名無しさん:2016/12/16(金) 11:19:26.36 ID:SEQOd6ed.net
- ああWebブラウザからだった忘れてた
2chよく沈まないもんだ
irb> "111\nABC\nDEF\n333\n444\n\555\n".scan(/^A.+?\n.+?F$/)
=> ["ABC\nDEF"]
- 422 :デフォルトの名無しさん:2016/12/16(金) 11:20:47.17 ID:SEQOd6ed.net
- ぬううん
まあいいや諦めた
正規表現だけもってってくれ
- 423 :デフォルトの名無しさん:2016/12/16(金) 18:35:18.13 ID:WbXTRG+B.net
- 。oO(lineの中身が1行しかないとかそんなオチだろうな)
- 424 :デフォルトの名無しさん:2016/12/16(金) 18:37:20.55 ID:WbXTRG+B.net
- 。oO(単数形なのが怪しい)
- 425 :デフォルトの名無しさん:2016/12/16(金) 23:16:55.88 ID:gVrNrOSW.net
- >>407-411
new を使うのは、疎結合の場合。
スコープを外れて、オブジェクトが消えても、他のオブジェクトに影響がない場合
initialize など、特別な初期化処理をするものは、
グラフィック・DBなどの外部リソースを共有するなど、
スコープを外れた後も、外部リソースが存在する場合
- 426 :デフォルトの名無しさん:2016/12/17(土) 02:15:18.91 ID:qzqGmxSM.net
- >>425
うーんなるほど
サンプルコード的なのないかな
class A
class << self
def call(*args)
new(args).call
end
end
def call
#なんかやる
end
end
でA.call(args)とするのと
class A
def call
#なんかやる
end
end
でA.new(args).callとするのだと用途的にどう違うのか
初期化とかは省いたが適当に補完してくれる
- 427 :デフォルトの名無しさん:2016/12/17(土) 02:18:10.02 ID:qzqGmxSM.net
- ✕してくれる
○してくれ
- 428 :デフォルトの名無しさん:2016/12/17(土) 08:49:28.17 ID:2dyThgQw.net
- >>425
悪いけどあまり良くない設計だと思うよ
どのオブジェクトとも寿命が一致しないリソースってのは基本的に作らない方がいい
- 429 :デフォルトの名無しさん:2016/12/17(土) 20:22:48.43 ID:8Cd/8VwS.net
- >>426
new と call がセットならそれをするメソッドを用意する。
それだけのこと。
- 430 :デフォルトの名無しさん:2016/12/18(日) 00:30:46.29 ID:05Ug+E6t.net
- >>426
> でA.new(args).callとするのだと用途的にどう違うのか
可読性が違う。
まずあんたは、サンプルを提示しているが、
あんたのその結論は、そのサンプルでのみ通用すること
サンプルにしてしまったために可読性を論ずる機会が失われている。
可読性と言うのは何かというと、どれだけ読むべきコードを減らして
内部の実装を見ずに、すんなり読めるかということ。
それを実現するために必要なものの一つが適切な名前
サンプルにするとその適切な名前が失われるから
そのサンプルを見るだけでは可読性の良し悪しがわからなくなる。
- 431 :デフォルトの名無しさん:2016/12/18(日) 01:11:06.36 ID:GM9JkVQ+.net
- >>429
初期化したオブジェクトに対して外から呼び出せる命令が1つしかないかどうかで使い分けるという風に読めたんだけど合ってるか?
>>430
結論なんかどこにも書いてないんだが…
あとそれ可読性じゃなくね?カプセル化とかの方が言わんとしてることに近い気がする
あとその主張じゃ分かってない人にはピンとこない(少なくとも俺は納得できなかった)ので適切な例を掲示してくれよ
- 432 :デフォルトの名無しさん:2016/12/18(日) 01:45:50.33 ID:aCKcGLhu.net
- >>428
DBの接続・切断などで、特別な処理が必要。
WindowsアプリのGDIでも、ペン・ブラシなども共有リソース
何々マネージャーのような、唯一のオブジェクトである、シングルトンでは、
newせず、特別な初期化処理をする
- 433 :デフォルトの名無しさん:2016/12/18(日) 08:45:13.64 ID:kBEsP2W2.net
- >>432
その理屈だとRuby標準のFileなどネイティブなリソースを持つあらゆるクラスが初期化用インスタンスメソッドを持つことになるぞ
特別な処理が必要であるからといって生成と初期化のタイミングを別にしなければならない理由にはならない
シングルトンも意味不明だな
シングルトンなら普通はクラスがインスタンスにアクセスされたタイミングで初期化でしょ
- 434 :デフォルトの名無しさん:2016/12/18(日) 15:20:39.20 ID:opw80zoz.net
- >>431
>>>429
>初期化したオブジェクトに対して外から呼び出せる命令が1つしかないかどうかで使い分けるという風に読めたんだけど合ってるか?
そんな堅苦しく考えないでいいと思う。このケースに限らず頻出パターンがあればそれをメソッドにするでしょ。
A.new(...).call を A.call(...) と書けることに価値を見出せないなら別に前者のままでもいいし。
- 435 :デフォルトの名無しさん:2016/12/18(日) 15:50:39.51 ID:i2W42kEF.net
- >>434
なるほど
前者はAクラスのオブジェクトに対する命令、後者はClassクラスのAというオブジェクトに対する命令なはずなのでなんか意味的にも違ってくるのかなと思ってた
- 436 :デフォルトの名無しさん:2016/12/18(日) 16:07:50.85 ID:ZqV+jY/A.net
- 違うよ
- 437 :デフォルトの名無しさん:2016/12/18(日) 16:25:02.97 ID:i2W42kEF.net
- >>436
ごめん
理解が足りてないかも
どう違うか聞いても良いか?
- 438 :デフォルトの名無しさん:2016/12/18(日) 16:29:16.25 ID:i2W42kEF.net
- 補足すると個人的にはやっぱりクラスメソッド内でインスタンスを生成して何かしらの操作をするならば最終的に返り値としてそのクラスのオブジェクトが返るとかじゃなきゃ使うメリットを感じられないと感じてる
- 439 :デフォルトの名無しさん:2016/12/18(日) 16:40:09.66 ID:ZqV+jY/A.net
- rubyのひとは返り血ないのを嫌うね
- 440 :デフォルトの名無しさん:2016/12/18(日) 16:45:34.17 ID:opw80zoz.net
- 物騒だなw
- 441 :デフォルトの名無しさん:2016/12/18(日) 17:05:27.38 ID:/mOXmKGC.net
- >>439
Rubyは本来逆だと思う
原理主義的なOOPは返り値をあまり使わないよ
最近のOOPで返り値を積極的に使うようになったのは最近の関数型かぶれなスタイルの流行によるもの
- 442 :デフォルトの名無しさん:2016/12/18(日) 18:47:07.03 ID:05Ug+E6t.net
- > 原理主義的なOOPは返り値をあまり使わないよ
根拠は?
何の根拠もなく言い切るとか
ホント迷惑だよな。
ま、2ちゃんねるだから、誰も信用しないだろうけどw
- 443 :デフォルトの名無しさん:2016/12/18(日) 19:12:28.03 ID:cjBRT8Q8.net
- オブジェクト指向そのものにはメソッド戻り値の概念はないよ
メソッド操作の結果はメソッドが刺さってるオブジェクトの変化だ
ただしこれだとプリミティブ過ぎて人間には扱い辛いのでどの言語も当初から戻り値ありで設計されてる
- 444 :デフォルトの名無しさん:2016/12/18(日) 19:15:09.75 ID:/mOXmKGC.net
- >>442
Tell, Don't Askって聞いたことない?
オブジェクトから値を取るのは副作用に弱いコードになるから避けろという、オブジェクト指向開発の有名な指針だ
Rubyでは戻り値を使う代わりにブロックを渡して引数で結果を受け取るということが非常によく行われるけど、あれはこの原則に従ってるんだよ
- 445 :デフォルトの名無しさん:2016/12/18(日) 19:35:47.63 ID:05Ug+E6t.net
- >>444
Tellした結果は戻り値だろうがw
お前が言ってるのはクラスの状態を取得して、
その状態をもとに、貰った側で処理を書くんじゃなくて、
クラス側に処理させろという話。
戻り値とは全く関係ない。
- 446 :デフォルトの名無しさん:2016/12/18(日) 19:40:12.99 ID:05Ug+E6t.net
- ブロックを使うのを引数で結果を受け取るためだとか考えてるのもアホだしw
ブロック使うのは、ユーザーが書く処理の前後にある、
共通の処理をクラス側(ライブラリ側)に持たせて、
処理の中身を入れ替え可能にするためだろ。
- 447 :デフォルトの名無しさん:2016/12/18(日) 19:54:05.97 ID:/mOXmKGC.net
- >>446
疑問を持つのは結構だけど、新しい言葉を聞いたら調べてみようと思わないの?
君がそれに同意するかはともかく(俺はケースバイケースだと思う)、常識だからせめて正しく理解はしておいた方がいいよ
そんな態度じゃ成長しない
- 448 :デフォルトの名無しさん:2016/12/18(日) 19:59:00.44 ID:05Ug+E6t.net
- >>447
そんなことをより、お前の反論が聞きたいんだが?w
なんでそこで言い訳を始めるかね。
- 449 :デフォルトの名無しさん:2016/12/18(日) 20:02:15.41 ID:/mOXmKGC.net
- >>448
反論もクソも、別に俺の持論じゃなくて歴史的事実なんだが
Tell, 〜はSmalltalkで生まれたプラクティスで、ベターな方法としてコールバックを使う
それを真似たのがRubyのアレ
- 450 :デフォルトの名無しさん:2016/12/18(日) 20:11:38.41 ID:05Ug+E6t.net
- >>449
はい。教科書読んだだけの人へw
http://martinfowler.com/bliki/TellDontAsk.html
日本語
https://web-beta.archive.org/web/20150316001509/http://blog.showqase.com/2014/01/19/translation-tell-dont-ask.html
ただ個人的には私は「尋ねるな、命じろ」は使わない。もちろんデータと振るまいを同じ箇所に置こうとはするので、
ほとんどよく似た結果になる。 一つ「尋ねるな、命じろ」で問題だと思うのは、この原則のせいで
「GetterEradicators」になって、すべての問い合わせメソッドを取り除こうとする人を見たことがあることだ。
俺の言っている通り、戻り値をつかわないみたいな適当な話じゃなくて、
クラス側に処理させろという話だってわかっただろ?
- 451 :デフォルトの名無しさん:2016/12/18(日) 20:12:24.26 ID:05Ug+E6t.net
- もちろん「コールバックを使う」なんてことは一言も書かれていない。
Tell, Don't Askとは全く無関係の概念だから。
- 452 :デフォルトの名無しさん:2016/12/18(日) 20:14:17.76 ID:05Ug+E6t.net
- あと引用した部分は ID:/mOXmKGC をからかうのに面白かったから
引用しただけで、他の人はちゃんとリンク先を読んでね。
そっちがメインだから。
- 453 :デフォルトの名無しさん:2016/12/18(日) 20:27:07.17 ID:05Ug+E6t.net
- 反論無くなったな いま勉強中かな?w
まとめで追い打ちをかけようw
441 名前:デフォルトの名無しさん[sage] 投稿日:2016/12/18(日) 17:05:27.38 ID:/mOXmKGC [1/4]
> 原理主義的なOOPは返り値をあまり使わないよ
↑間違い
444 返信:デフォルトの名無しさん[sage] 投稿日:2016/12/18(日) 19:15:09.75 ID:/mOXmKGC [2/4]
> オブジェクトから値を取るのは副作用に弱いコードになるから避けろという、オブジェクト指向開発の有名な指針だ
↑これは正しいが「戻り値」から「オブジェクトから値を取る」に話がすり替わってる。
おそらくどこからか引用してきたのだろう。
同444
> Rubyでは戻り値を使う代わりにブロックを渡して引数で結果を受け取るということが非常によく行われるけど、あれはこの原則に従ってるんだよ
↑間違い。Tell, Don't Askとコールバックに関係なく、単にオブジェクトから値を取らずにオブジェクトに処理させるってだけの話。
そこにコールバックは出てこない。用語だけ知って内容を理解してないから、間違った結論に至っている。
- 454 :デフォルトの名無しさん:2016/12/18(日) 20:37:26.65 ID:vN9Eyv4k.net
- ここは君の遊び場じゃない
- 455 :デフォルトの名無しさん:2016/12/18(日) 20:38:11.46 ID:05Ug+E6t.net
- みんなの遊び場だろ?
- 456 :デフォルトの名無しさん:2016/12/18(日) 20:43:12.96 ID:hjqTwWMB.net
- ドン引きしてるだけだよw
何を必死になってるのか知らないけど、戻り値に対する直接的な書き換えとしてコールバックを挙げただけで
クラス側で処理することを否定してるつもりはないぞ?
確かにコールバックを使っても振る舞いをクラスに持たせたことにはならないが、
制御をクラス側に渡すだけでも余計な状態を持つことを避けてプログラムをシンプルにする効果があるよ
https://pragprog.com/articles/tell-dont-ask
- 457 :デフォルトの名無しさん:2016/12/18(日) 20:47:21.79 ID:05Ug+E6t.net
- >>456
話を混ぜっ返すな。
俺はそんな話は全くしてない。
何が間違いかは>>453のまとめに書いただろ
それ以外の話はしてない。
- 458 :デフォルトの名無しさん:2016/12/18(日) 20:51:55.28 ID:hjqTwWMB.net
- >>457
悪いけど、君が何を根拠に間違いと言っているのか俺には読み取れない
クラス側に振る舞いを持たせることを徹底したら結果的に戻り値は減ると思うけど?
- 459 :デフォルトの名無しさん:2016/12/18(日) 20:54:43.00 ID:UQRskdKk.net
- >>450
大原則としてOOPでデータと処理を一体化することは認めてて
原則には例外がつきものだっていう話に見える
それで結果的に戻り値を使うことは減るし
一方的に正しいとかいう話じゃないように見えるが
- 460 :デフォルトの名無しさん:2016/12/18(日) 20:56:20.23 ID:05Ug+E6t.net
- >>458
戻り値が減るんじゃなくて、
戻り値を取得するメソッドが減るだけ。
> 原理主義的なOOPは返り値をあまり使わないよ
って言ってるから間違い。ほとんどのメソッドの戻り値を返している。
戻り値を返すのは戻り値を使う必要があるから。
> Rubyでは戻り値を使う代わりにブロックを渡して引数で結果を受け取るということが非常によく行われるけど、あれはこの原則に従ってるんだよ
コールバックは、Tell, Don't Askの原則に従うためのものじゃないから間違い
- 461 :デフォルトの名無しさん:2016/12/18(日) 20:59:15.37 ID:05Ug+E6t.net
- 重要なのはデータと振るまいを同じ箇所に置こうすることであって
戻り値をつかわないということではない。
原則の理由を理解せずに、その結論だけしか見てないから、
間違った話をしてる。コールバックとか全く関係ない。
- 462 :デフォルトの名無しさん:2016/12/18(日) 21:02:15.78 ID:05Ug+E6t.net
- × 戻り値が減るんじゃなくて、戻り値を取得するメソッドが減るだけ。
○ 戻り値が減るんじゃなくて、オブジェクトの状態を取得するだけのメソッドが減るだけ。
こう言った方がより正確かな。
- 463 :デフォルトの名無しさん:2016/12/18(日) 21:03:57.14 ID:cqEHlGhD.net
- 誰か俺の疑問に答えてくれよ…夜も眠れねえよ…
- 464 :デフォルトの名無しさん:2016/12/18(日) 21:04:25.47 ID:cqEHlGhD.net
- 438のところな
- 465 :デフォルトの名無しさん:2016/12/18(日) 21:04:32.81 ID:05Ug+E6t.net
- 夜眠れないのは昼寝てるからでは?
- 466 :デフォルトの名無しさん:2016/12/18(日) 21:06:25.41 ID:05Ug+E6t.net
- >>464
だから可読性の問題なんだから、サンプルコードじゃなくて
具体的な使用例を見せてもらえないと答えようがない
- 467 :デフォルトの名無しさん:2016/12/18(日) 21:22:30.19 ID:hjqTwWMB.net
- >>463
>>425が言ってるのはこういうこと
・アプリ内の全てのDBアクセスは単一のDB管理クラスのインスタンスで行っている
・DB管理クラスのインスタンスはアプリ起動時に作成しておいて各コンポーネントで共有する
・アプリは最初はDBに接続しておらず、あるボタンが押された時点ではじめてDBに接続する
この場合、ボタンが押されときにDB管理クラスのインスタンスの「DBに接続せよ」メソッドを呼べばよい
この設計の是非はともかく、つまりミクロなプラクティスの話とアプリ要件の話をごっちゃにした頓珍漢な意見なので気にしなくていい
- 468 :デフォルトの名無しさん:2016/12/18(日) 21:28:14.52 ID:GM9JkVQ+.net
- >>467
言ってることは分かるけど疑問に対する回答になってないような?
- 469 :デフォルトの名無しさん:2016/12/19(月) 10:06:49.21 ID:InX2WCwb.net
- はじめてRuby触るしコーディングなんてOracle SQLくらいしか触ったことないんだけど
無茶かな。
DiscordrbっていうGEMが用意されているんだけど、Rubyでこういうのを使う方法がいまいちわからない。
そもそも英語ができないから英語のDocsをヒーコラいいながらやってんだけどやっぱ無茶かなぁ。
誰かDiscordrb使ったDiscordBOT作ってる人いませんか?ソース見せてほしいんだけど無理かな。
- 470 :デフォルトの名無しさん:2016/12/19(月) 15:41:24.93 ID:42zKLbbA.net
- 基礎 Ruby on Rails、このスレでお勧めされてから買ってみたけど
確かに分かりやすいわ
もっと早く買えば良かった
- 471 :デフォルトの名無しさん:2016/12/22(木) 12:21:08.39 ID:uTQf0x1y.net
- >>469
いきなりdiscordbot無茶だろうけどいきなりrubyは無茶じゃないので頑張れ
まずはネットで日本語でいくらでも転がってるrubyのチュートリアルをこなそう
rubyの基本がわかればbotなんてすぐ作れる
- 472 :デフォルトの名無しさん:2016/12/22(木) 13:02:42.80 ID:y+mdv7YD.net
- >>468
ほんそれ
- 473 :デフォルトの名無しさん:2016/12/23(金) 20:42:12.81 ID:cbA/B5V7.net
- 言語のしくみ
買ったった
- 474 :デフォルトの名無しさん:2016/12/27(火) 02:28:17.51 ID:ajopm1PJ.net
- pryってどういう仕組みなんだ?
evalだとbindingオブジェクト渡してもeval抜けるとローカル変数とか無かったことにされるけど(ブロックと同じ扱いだから?)、pryだとローカル変数定義してアクセスしたり出来るよね
どうなってんだ
- 475 :デフォルトの名無しさん:2016/12/27(火) 07:56:05.95 ID:8zCgjK7F.net
- >>474
都度同じ binding 渡して eval する。
- 476 :デフォルトの名無しさん:2016/12/27(火) 22:05:49.17 ID:Vfoy9oEH.net
- seleniumをFirefoxPortableで使っているのですがSeleniumでプロファイル指定して起動しても
ログイン情報が保存されません。
seleniumもFirefoxも古いバージョンにしています(それぞれ2.6.8と45.6.0)。
インストール版のプロファイルをコピーしてポータブルのプロファイルフォルダに入れて
お気に入りやアドイン等やログイン情報は保持されています。
ところがseleniumで起動するとログイン情報だけが消えているものがあります。
FirefoxPortable単体だけだと問題ありません。
- 477 :デフォルトの名無しさん:2016/12/27(火) 22:13:26.69 ID:Vfoy9oEH.net
- プログラムの内容の出だしはこんな感じです。
firefox_path = 'D:/MyProgramFiles/FirefoxPortableESR/FirefoxPortable.exe'
Selenium::WebDriver::Firefox::Binary.path = firefox_path
default_profile = Selenium::WebDriver::Firefox::Profile.new('D:/MyProgramFiles/FirefoxPortableESR/Data/profile')
default_profile.native_events = true
driver = Selenium::WebDriver.for :firefox, :profile => default_profile
なんとかプロファイル情報を入れてログインを保持して起動できる方法が
ありましたら教えてください。
- 478 :デフォルトの名無しさん:2016/12/27(火) 23:04:19.31 ID:/xLMC5SK.net
- ログイン情報が設定されていないか、設定されていても取得されていないか、
取得されていても上書きされているとか、デバッグして、どれに該当するのか見極める
そもそも、ローカルPCに、サーバーを立てていなくても、
ローカルファイルを直接取得できるのか?
セキュリティや、非同期によるタイミングの違いで、取得できないとか、
エラーメッセージが無いと原因がわからないので、デバッグして原因を絞り込む
- 479 :デフォルトの名無しさん:2016/12/30(金) 00:13:53.15 ID:9LIeFW7F.net
- エラーメッセージが出ないのでやっかいですよね。
Rubyを使い始めて間がないので、デバッグといえば、コンソールのエラーメッセージ
だけが頼りです。
7つのサイトのうち2つのサイトにログイン情報が反映されません。
すべてではありません。
ブックマークも反映されています。
>そもそも、ローカルPCに、サーバーを立てていなくても
selenium 3.04 + Firefox 50.1.0ではselenium-server-standalone-3.0.1.jar
を使わないと起動できませんでした。
その際は既存のプロファイル指定しなければ起動できましたが、指定すると
起動できませんでした。
そこでselenium、Firefox両方ともバージョンダウンしてプロファイル指定したら
読み込めたのでこのまま使おうかと思ったら、上記の問題に当たりました。
たちまちはログインIDなどを入れて対処していますが、もしかしてサイト側のほう
cokkieとかの情報がインストール版のFirefoxと違うとかで自動ログインを拒絶して
いるのでしょうか。
- 480 :デフォルトの名無しさん:2016/12/30(金) 05:07:24.07 ID:VibH/69b.net
- >>479
pryとかirbとかで止めてステップ実行してみれば?
- 481 :デフォルトの名無しさん:2016/12/30(金) 06:54:47.15 ID:AE3qYxRw.net
- Rubyの、debug ライブラリとか、
--debug で、デバッグモードでスクリプトを実行するとか。
それか、JavaScriptもデバッグする。
Rubyじゃなく、JSでエラーが起こっているのかも?
ブラウザの、UserAgent を偽装するとか、
Wireshark で通信パケットを見るとか
PhantomJS を使っている、Poltergeist を使うとか
- 482 :デフォルトの名無しさん:2016/12/30(金) 15:45:46.55 ID:P9AmXfqG.net
- ダックタイピングの良さが全くわからない。
ソースコードの規模が大きくなるほどそう思う。
- 483 :デフォルトの名無しさん:2016/12/30(金) 16:36:49.92 ID:hgBVSCl8.net
- >>482
事前にコンパイルせずにオブジェクトに対するメソッド呼び出しを実現する手段がダックタイピングなだけ
あくまで実装の都合であって、ユーザーにとってはデメリットしかないよ
- 484 :デフォルトの名無しさん:2016/12/30(金) 17:01:07.05 ID:kHcR/QEK.net
- >>483
> あくまで実装の都合であって
この人言語実装経験あるんだろうか?
- 485 :デフォルトの名無しさん:2016/12/30(金) 17:07:01.97 ID:hgBVSCl8.net
- >>484
俺はあるけど、なくてもメソッド呼び出しの仕組くらいは知っておいて損はないよ
- 486 :デフォルトの名無しさん:2016/12/30(金) 17:22:22.33 ID:Q3tvxZdg.net
- rubyしか知らないひとか
- 487 :デフォルトの名無しさん:2016/12/30(金) 23:12:15.48 ID:AE3qYxRw.net
- クラスに継承関係が無くても、同名のメソッドが動作する
こんな仕様で、アプリを正常に作れるわけないだろ!
- 488 :デフォルトの名無しさん:2016/12/30(金) 23:24:34.64 ID:zOAKiPoz.net
- >>487
>クラスに継承関係が無くても、同名のメソッドが動作する
10年前の人かな?
そんなの今じゃ珍しくもないよC#なんかもそうだし
- 489 :デフォルトの名無しさん:2016/12/31(土) 00:49:15.11 ID:6BifHuQd.net
- え?そうなの?
- 490 :デフォルトの名無しさん:2016/12/31(土) 01:39:57.58 ID:2NsOdIiQ.net
- インターフェースってそういうもんだろ?
VB6だって継承関係なくても動作するわ
(そもそも継承できない)
- 491 :デフォルトの名無しさん:2016/12/31(土) 03:02:31.26 ID:SUY5h6ni.net
- まあ型のあるなしで大違いだけどね
- 492 :デフォルトの名無しさん:2016/12/31(土) 11:20:21.87 ID:u4bGwJtr.net
- Pythonは静的型検査を導入してほぼ完全な静的型言語になった
RubyもやろうとしてるけどRailsに汚染されきったメタプログラミングまみれのRubyじゃ
不可能というかできてもほぼ意味をなさないだろうね
- 493 :デフォルトの名無しさん:2016/12/31(土) 11:44:35.59 ID:+6N7nKtI.net
- Rubyは静的型なんてやらないよ
3.0でやるのは静的振る舞い検査だよ
- 494 :デフォルトの名無しさん:2016/12/31(土) 18:55:15.59 ID:OmAPdSt2.net
- 正規表現のオプション
o open 式展開
x eXtend
m multiline
で覚えようと思うのですが
i って何の略でしょうか?
- 495 :デフォルトの名無しさん:2016/12/31(土) 19:24:07.86 ID:reFXdCEA.net
- 元ネタのperlreに書いてる
- 496 :デフォルトの名無しさん:2016/12/31(土) 19:50:32.34 ID:oe8sWh56.net
- i は ignore case
o は once でしょ
- 497 :デフォルトの名無しさん:2016/12/31(土) 20:13:57.55 ID:OmAPdSt2.net
- ありがとうございました。
- 498 :デフォルトの名無しさん:2017/01/01(日) 04:04:21.43 ID:NQftXMbi.net
- Rubyの現在の課題は、日本製のオペレーティングシステムを作ることにある。
- 499 :デフォルトの名無しさん:2017/01/01(日) 09:11:31.29 ID:IDYigKuX.net
- 無理
- 500 :デフォルトの名無しさん:2017/01/01(日) 09:30:39.86 ID:ls6vqNpI.net
- mrubyがそれに近いんじゃね
見事にコケたけど
- 501 :デフォルトの名無しさん:2017/01/01(日) 20:36:16.78 ID:+4Jm9cV8.net
- スレ違いならすみません。
現在比較的容易に頒布するためにJRubyを使っているのですが、
キャメルケースやセッターなどの名前をRuby風の命名規則に変更する仕組み、利用したいのですが細かいことが分からずに少し困っています。
例えば "A.setValue(x)" は "A.value = x" と書くことができるようですが、
対して "A.setValue(x, y)" はうまく書き換えられてくれないみたいです。
諦めて元の名前を使えば問題ないのですが見た目的にどうも気持ち悪くて、詳細を調べているのですが見つかりません。
どなたかご存じでしたら提示いただけませんか?
- 502 :デフォルトの名無しさん:2017/01/01(日) 22:03:52.66 ID:yOnXwyd5.net
- >>501
引数が2つの時点でそれはセッターではない
- 503 :デフォルトの名無しさん:2017/01/03(火) 17:46:16.30 ID:qzU7aiCI.net
- ひろいもの
nicovi
watch/sm3721257
watch/sm8240485
watch/sm11915031
- 504 :デフォルトの名無しさん:2017/01/05(木) 18:13:23.71 ID:iZVemvXm.net
- 楽しいRuby読み終えて何か作ろうと思うけど今一思いつかん
なんかステップアップするのに良い本とか無いかね
独学でやってるからどうやって勉強進めれば良いか分からん
- 505 :デフォルトの名無しさん:2017/01/05(木) 18:22:58.87 ID:wwAKte96.net
- 太古の過去の大昔から言われてるが、Rubyは基本的に日常ツール作成言語なので
「メソッド動作解説とか読んでもなお作りたいものが思いつかないなら一旦Rubyのことを忘れて街に出ろ」
というのがある
カナヅチとクギの使い方を習ったから何か作りたいが何も作るものがないという状態に同じ
カナヅチとクギがパーフェクトに使いこなせてよかったという瞬間は今後いつか修繕とか組み立てとかやるときに来る
その時までとりあえず忘れておくといい
今の君は自作で補うべき不満不足を感じていない幸福な状態なのだ
- 506 :デフォルトの名無しさん:2017/01/05(木) 21:18:23.58 ID:ovbTWOBk.net
- 504じゃないけど、DXRubyとか気になるけど手軽な配布手段がないから躊躇っちゃうんてすよね
exerbは1.8.xまでしか対応してないみたいだし、Ocraはゲームとしては不格好な上に日本語で死ぬし、
スクリプト組み込んでビルドするとかは正直よくわからない……
- 507 :デフォルトの名無しさん:2017/01/05(木) 21:49:13.47 ID:6Ysz1KPl.net
- いやだから単体のWindowsアプリケーションやらゲームアプリやら作りたいのならRubyは駄目だよ
そういうのはたとえばC#とか使うんだよ
使う道具間違ってるよ
- 508 :デフォルトの名無しさん:2017/01/05(木) 22:32:43.59 ID:H72KpT5C.net
- >>504
競技プログラミングでもやってみるといいかもしれない
アルゴリズムの勉強にもなるし
- 509 :スッキリ厨:2017/01/05(木) 23:19:04.23 ID:sjDvcQUe.net
- まずこの本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014
その後、この2冊をこの順で読む
たのしいRuby 第5版、2016
みんなのPython 第4版、2017
Rubyなら、この本がプロ必須本
Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、間違いやすいポイントを解説
- 510 :デフォルトの名無しさん:2017/01/06(金) 02:55:51.51 ID:JXu3PrlH.net
- >>507
そこらへんは悪癖ありますね……
目的が「○○を作る」から「Rubyを書く」にシフトしてる感がかなり
趣味だから実害はないんですけど、Rubyしか書けないわけじゃないのに勿体ないなという気は
- 511 :デフォルトの名無しさん:2017/01/06(金) 07:07:39.97 ID:kp2I/0bG.net
- 勿体無いとかじゃなくて、一つの言語ばかり使ってると頭悪くなるよ
- 512 :デフォルトの名無しさん:2017/01/06(金) 15:34:04.71 ID:XtKi9eaG.net
- >>504
RubyTk
- 513 :デフォルトの名無しさん:2017/01/11(水) 00:39:17.09 ID:HUwWJ24p.net
- https://twitter.com/btnrouge/status/818831232494505985
外部の人間にとってRubyコミュニティはmatzを教祖とするカルト教団と捉えるとわかりやすいです。ピンとこなければ、Rubyコミュニティとオウム真理教を比較してみればいい
https://twitter.com/btnrouge/status/818835680260259840
今やれることは、猪股、田籠、渋川の殺害依頼と、有賀に対する脅し(和解に応じなければ妻子に危害を与える)
https://twitter.com/btnrouge/status/818840182833041410
有賀康顕潰しはやりたい。貴様が要らんこと言ったからことが大きくなったのだから、責任くらい取れよ!(生命までは奪わない)
https://twitter.com/btnrouge/status/818839029646921729
そう言えばdnasoftwares=江原望は自宅件オフィスを完全に抑えているので、奴の生き死にはすべて僕が掌握したも同然です。89式銃剣のレプリカでぶん殴るとか、その他いくらでも報復は可能。まあ、当面は放置ですかね
- 514 :デフォルトの名無しさん:2017/01/11(水) 22:25:34.60 ID:OZsqhVFv.net
- >>478,480-481
すいません。2chにサーバーエラーで入れなかったのでお礼も言えなくて申し訳ありません。
Selenium3.05(3.04から微妙に上がってた)に戻してブラウザも今使っている最新にしました。
https://github.com/SeleniumHQ/selenium/issues/2933
一応ここのRemote?で動きましたが、やはり特定のサイトだけcookie情報を見ている
らしく、ログインを求められます。プロファイルは今使っているものをそのままコピーしたものです。
本当は今使っているプロファイルをそのまま使いたいのですが、先にSelenium無しで
Firefoxを起動するとpermission errorになるのでコピーしたものを使っています。
タスクバーに出ているアイコンを右クリックして出るメニューで、新しいウインドウで
開くようなことはできないのでしょうか。
- 515 :デフォルトの名無しさん:2017/01/12(木) 01:53:58.83 ID:CLJ6Gs1e.net
- 個々のサイトは、Rubyの言語とは関係ない。
各サイトで、使えるブラウザも異なる
自分が作ったものではないサイトの場合、そのサイトがAPIを公開していない場合は、
そのサイトに聞くしかない。
勝手に解析して、アクセスするのは、まず無理
クローラーを作る場合でも、他人のサイトを解析する部分が、最も難しい。
なぜなら、仕様が分からないから
そういうサイトは、相手にしない方がいい。
無限に時間が掛かって、しかも失敗に終わるから
- 516 :デフォルトの名無しさん:2017/01/12(木) 10:12:46.64 ID:kXAP6NzE.net
- >>515
そうですね。確かにおっしゃるとおりです。
諦めることにしました。
色々とありがとうございました。
- 517 :デフォルトの名無しさん:2017/01/13(金) 09:02:42.85 ID:SVvqQk93.net
- 今の異常なPython本ラッシュみていると、機械学習ブームでPython使う奴が
増えて、他の用途でも便利に使えるとわかる数年後ってほんとにRubyのピンチ
かもね。
同じような用途で使えるLLで二つ覚える意味ってないもんな。
- 518 :デフォルトの名無しさん:2017/01/13(金) 16:52:53.57 ID:mqUzyOXD.net
- rubyは1.8.7あたりのきらめきが無くなっていったね
2.0のときに意外とスッと入ってこなかったのはなぜだろう
個人的には笹田さんという人間の違和感だと思ってる
彼の人柄や能力について一切知らないし一切ケチつけるつもりはない
言いたいのはまつもとさんとRubyの一体感みたいなもんが好きだったってこと
そのことにあとからようやく気がついた
- 519 :デフォルトの名無しさん:2017/01/13(金) 23:03:52.14 ID:9cq37382.net
- >>517
> 同じような用途で使えるLLで二つ覚える意味ってないもんな。
むしろ片方しか使えないとかいう方がやばい
どっちもかるくつまみ食い程度はしておかないと、片方がポシャったときに潰しが効かない
- 520 :デフォルトの名無しさん:2017/01/13(金) 23:12:36.13 ID:P5aAQ1iN.net
- いや問題はRubyがポシャりかけっていうか
もうPythonだけで良くね?って状況な点じゃないの
でもRailsあるし! -> Rails以外死ぬ -> 代替が出てRailsも死ぬ
という流れの不可避感
- 521 :デフォルトの名無しさん:2017/01/13(金) 23:18:26.24 ID:9cq37382.net
- >>520
じゃぁ Python は機械学習だけじゃね?という見方もできるよね
機械学習は今でこそトレンドだが、AIなんて第何次ブームなんだよというぐらい盛衰の激しい分野だし
- 522 :デフォルトの名無しさん:2017/01/13(金) 23:32:48.24 ID:pzDMg4F2.net
- 大勢が決まってからそちらをやる、という人と
今後どちらになっても対応出来るように
今のうちに両方触っておくという人と
2つのタイプがいると思うのだけど、
優秀な技術者はどちらのタイプだと思う?
- 523 :517:2017/01/14(土) 00:04:24.79 ID:6M7JqjoN.net
- >>520
そうそう、言いたかったのはそれ。
日本だけでもRuby優位は当面続くかと思ってたらここ2年弱ぐらいの雰囲気の変化というか、
本屋の書棚をみているだけでもPythonコーナーの増え方がすごくて、なんかいきなり決着
が付きかけているんじゃないか、と。
>>521
それは確かにそう思う。今でてる大半のPython本が機械学習関係、それもnumpyやscipy、pandas
とかのライブラリ解説本みたいなのばっかりだし。
ただこの勢いは馬鹿にできないきがするというか、機械学習を入り口にPython使い始めた
層が他の用途にも使い出すと怖い気がする。
RubyってやっぱRails頼みなとこあるし。
- 524 :デフォルトの名無しさん:2017/01/14(土) 00:24:16.00 ID:zIw5cAWr.net
- >>523
そんな余計な心配してる暇があるなら手を動かせ。コードを書け。
技術者なら一つの言語と心中するな。言語の寿命なんて誰にも読めないんだから
いつでも対応できるようにしておけ。
- 525 :デフォルトの名無しさん:2017/01/14(土) 07:47:10.66 ID:6M7JqjoN.net
- >>524
なんだろう?
飲み屋でくだらない雑談とわかってしている話に割り込んで「お前ら明日からもっと
ちゃんと働け」と情報量ゼロのつまらん正論言って、説教したつもりでいい気分、
でも自分が一番社会の役に立ってない産廃オヤジの臭い口臭でも浴びたかのような
不快感全開だわ
むしろ通常の荒らしの方がマシってくらいに
お前みたいなクズは死ね
- 526 :デフォルトの名無しさん:2017/01/14(土) 10:54:53.80 ID:aYU1jhzZ.net
- 笑った
- 527 :デフォルトの名無しさん:2017/01/14(土) 11:08:25.24 ID:zmTeKxXB.net
- >>522
どちらでもない
優秀なのは目的に応じて適切な道具を学ぶタイプ
- 528 :デフォルトの名無しさん:2017/01/14(土) 12:07:53.22 ID:eWNJ08o1.net
- ruby/tkに関連した本があんまり無い悲しみ
GUI系のやつはやっぱりrubyだと難しいのかね
- 529 :デフォルトの名無しさん:2017/01/14(土) 17:14:29.49 ID:qkQ2nYQV.net
- 無難にScalaFXにしとけ
- 530 :デフォルトの名無しさん:2017/01/14(土) 20:15:30.56 ID:noNswiiv.net
- Ruby/TKで作ろうとしたら
なぜかTcl/TKの勉強をしていたでござる
- 531 :デフォルトの名無しさん:2017/01/15(日) 00:06:23.18 ID:fjyotEZW.net
- すみません、ガチ初心者なんですが質問良いでしょうか。
railsでユーザーを登録する、という作業をしているんですが
バリデーションエラーで@user.saveが失敗し
render :action => 'new' で戻るとき
urlが/users/newから/usersに変わるのは何故なんでしょうか
- 532 :デフォルトの名無しさん:2017/01/15(日) 01:24:47.31 ID:mPtAA3FD.net
- >>531
RailsがPRGパターン(ポストバック)を使ってないから。
URLがそうなるのがいやだからPRGパターンの方がいいのに。
Railsはクソ
- 533 :デフォルトの名無しさん:2017/01/15(日) 01:28:33.08 ID:mPtAA3FD.net
- いや、PRGパターンは使ってるか。
使ってないのはポストバックか
- 534 :デフォルトの名無しさん:2017/01/15(日) 09:17:25.26 ID:FuNxoLD6.net
- https://twitter.com/btnrouge/status/820064836910317568
どこかのエセOSSプログラミング言語処理系の連中にとやかく言われたくない、という気持ちは正直言って、ある。
https://twitter.com/btnrouge/status/820284198262951936
敢えて言おう!Rubyはオープンソースではないと!(ギレン・ザビの演説風に)
https://twitter.com/btnrouge/status/820284692838522880
敢えて言おう!Rubyコミュニティはカスであると!(ギレン・ザビの演説風に)
https://twitter.com/btnrouge/status/820285576024768516
前掲の通り、オープンソース=OSIによって承認されたライセンスに基づいて配布されているソフトウェア。
Rubyは一部をOSI非承認ライセンスで配布しているため、実態はオープンソースに準じているものの、厳密にはオープンソースではない。
https://twitter.com/btnrouge/status/820302804988227587
表で「Ruby界隈の連中はオウム真理教と同じカルト教団で、教祖はMatz(まつもとゆきひろ)だ!」と英語でツイートしたが、今のところ反応なし。
日本人って、英語のツイートに対してはほぼスルーなんだね。たとえ、それが自分たちの存在自体を否定されるものであったとしても。
https://twitter.com/btnrouge/status/820420780827648000
表は例の一件で日本のRuby界隈が一斉ブロックに走ったらしく、どれだけRubyに対するHateを口にしても、誰も絡まなくなった。ある意味平和。
https://twitter.com/btnrouge/status/820421760092778497
普通、Rubyistsに向かって「お前ら全員、新興宗教だ」なんて口走ったら、それこそ間髪入れずフルボッコにされるぞ。それがなかったからな。
----------
(株)アイネスのCSVエンジニアおじさん(笑)、蓮沼賢志氏がお怒りの模様。
- 535 :デフォルトの名無しさん:2017/01/15(日) 12:04:08.29 ID:mPtAA3FD.net
- >>534
見れない。チキン野郎にようはないよw
- 536 :デフォルトの名無しさん:2017/01/15(日) 17:18:05.90 ID:kfhl0y+Q.net
- もしかしてゲームとかGUIやりたいならrubyじゃダメだったのか
WEBページ上で動作するアプリとかゲーム作りたい!
↓
railsならWEBページ簡単に作れるのか!勉強しよう!
↓
あれ、そもそもrubyでGUIとかゲームって無理ゲじゃね?←今ココ
- 537 :デフォルトの名無しさん:2017/01/15(日) 17:47:35.08 ID:NauD/H/+.net
- >>536
昔のソシャゲみたいな動きのない糞クリックゲーなら作れるよ
それ以上のことをしようとするとJavaScriptが必須
サーバーサイドの処理を必要としない、ブラウザ上だけで完結するアプリやゲームならRubyは全く出番なし
- 538 :デフォルトの名無しさん:2017/01/15(日) 18:06:48.02 ID:HaWyrA9g.net
- RubyでGUIプログラミング向かないのは最初から明らかだったんだけど
アスペ気質の人が「そんなことはないRubyでウィンドウプログラミングは可能だ」とか言い続けたせいで被害が拡大したという経緯がある
実現可能かどうかという話をしたかったわけじゃないんだけど手遅れになるまで(あるいは今もなお)わかってもらえなかった
- 539 :デフォルトの名無しさん:2017/01/15(日) 18:14:04.57 ID:JblLfoH8.net
- それこそTcl/Tkにおいて内部処理としてTclで書かずにRubyで済むイヤッホー安楽みたいな需要だったのだが
なんかどっかで感覚のボタン掛け違えたまんま布教した人がいるのだ
>>536は過去の黒歴史の被害者なので気に病まんで良いぞ
- 540 :デフォルトの名無しさん:2017/01/15(日) 18:38:06.31 ID:mPtAA3FD.net
- ゲーム作るならUnity一択だろ
- 541 :デフォルトの名無しさん:2017/01/15(日) 22:02:42.33 ID:x6BIGD4Q.net
- >>536
GUIならパイソン一択だろ
- 542 :デフォルトの名無しさん:2017/01/15(日) 22:15:06.06 ID:zZ/oXiuq.net
- >>541
え?
- 543 :デフォルトの名無しさん:2017/01/16(月) 00:37:25.63 ID:kuqQ4eTX.net
- GUIはwx、2DゲーならSDLつかえば好きな言語でかけるっしょ
- 544 :デフォルトの名無しさん:2017/01/16(月) 04:26:13.77 ID:bXP/pRvj.net
- >>538
早速湧いたなw
- 545 :デフォルトの名無しさん:2017/01/16(月) 08:00:22.63 ID:u5Vbexco.net
- YAML.load_file
はあって、
JSON.load_file
がない理由って何かあるんですかね?
- 546 :デフォルトの名無しさん:2017/01/16(月) 10:36:20.23 ID:3Uu7W/fv.net
- >>545
作った人が違うから
- 547 :デフォルトの名無しさん:2017/01/16(月) 21:55:57.28 ID:u5Vbexco.net
- なるほど。
ありがとうございました。
- 548 :デフォルトの名無しさん:2017/01/16(月) 23:21:24.24 ID:wb4vYWob.net
- RubyってPythonに負けたから組み込み式に移行するのかねぇ。
- 549 :デフォルトの名無しさん:2017/01/16(月) 23:29:50.89 ID:5jfXPHqe.net
- http://3qilabs.com/how_to/how-to-save-load-cookies-using-watir-webdriver/
ここでクッキーをファイルに保存すして読み込む方法を書いていますが
自分の環境ではうまく動作しません。
この部分で引っかかります。
driver.manage.add_cookie(:name => temp_o["name"], :value => temp_o["value"])
>の部分で引っかかっているので調べてみるとURLを使うときの'>'のことだと
書いてあったのですが、何かrequreしないといけないものとかあるのでしょうか。
取得は成功しますが、ここの読み込みで失敗します。
- 550 :デフォルトの名無しさん:2017/01/16(月) 23:36:17.67 ID:9C4LWgsi.net
- >>549
そのページのミスでしょ
> を > に変えればいい
- 551 :デフォルトの名無しさん:2017/01/18(水) 14:32:48.83 ID:SYbqEbJ6.net
- >>550
ありがとうございます。
ついでに欲張って
browser.driver.manage.add_cookie(:name => temp_o["name"], :value => temp_o["value"],
:path => temp_o["path"], :domain => temp_o["domain"],
:expires => temp_o["expires"], :secure => temp_o["secue"])
としたところ、ファイルから読み込むときにdomainで引っかかりました。
リンクの通りnameとvalueだけなら問題ありませんでした。
よく分かってないのでとんでもないことを質問しているかもしれませんが
domainはセキュリティとかで再現できないものなのでしょうか。
一応そのサイトのページにはgotoで入っています。
http://stackoverflow.com/questions/18288244/save-and-restore-watir-session
ここのリンクのように
サイトに入る→cookie保存→いったん終了→サイトに入る→クッキークリア
→クッキー読み込み→サイトに入る→リフレッシュ
のようにすれば、確かにログインを再現できましたが(domainとかつけてない状態で)
できればurlに入る前に再現できないものなのでしょうか。
- 552 :デフォルトの名無しさん:2017/01/19(木) 18:07:07.15 ID:G8jkDaEj.net
- 馬鹿には無理
- 553 :デフォルトの名無しさん:2017/01/20(金) 01:57:29.15 ID:/ixeQkYS.net
- SSH・ログイン処理とか、ややこしい
基本的に、APIを公開していないサイトでは、自動操作は出来ない。
元々、サイトが自動操作できるように作られていないから
だから、そういうAPIを公開していない、各サイトを分析するのが大変。
ブラウザ種別を偽装したり、通信パケットを解析したり
そのサイトが、ハッシュなどを計算して確認していれば、まず正常には動かない
そういう、クローラーを作っていて、動かないサイトは、
ブラックリストに入れて探索しないこと
こういう質問は言語ではなく、各サイトのビジネスロジックの話だから、
仕様書がない者同士が話しても、仕方がない。
各サイトの担当者に聞くしかない
「Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例、
佐々木拓郎・るびきち、2014」
この本にも、クローラーではなく、公開しているAPIを使うように書いてある
- 554 :デフォルトの名無しさん:2017/01/20(金) 04:17:00.52 ID:SuI25zgd.net
- ブラックリストに入れる前にブラックリストに入れられてしまったでござる
- 555 :デフォルトの名無しさん:2017/01/20(金) 07:23:53.70 ID:73D0Dll6.net
- クローラは最底辺の仕事
というかコソ泥そのもの、まっとうな仕事ではない
- 556 :デフォルトの名無しさん:2017/01/21(土) 13:24:24.68 ID:KtdMCRkZ.net
- >>553
一般の本でAPIつかえと書くのは当たり前だろw
- 557 :デフォルトの名無しさん:2017/01/21(土) 13:25:14.26 ID:KtdMCRkZ.net
- >>555
Googleのことか?
世界有数のトップ企業だけども?
何が底辺なの?
貧乏人のやっかみにしか聞こえんが?
- 558 :デフォルトの名無しさん:2017/01/21(土) 14:23:03.34 ID:Poucv/rB.net
- 倫理的な問題は置いといても、
泥臭くてつまらない力作業ばかりなのは確かだと思うよ
スクレイピングとGUI自動テストはプログラミングの底辺
- 559 :デフォルトの名無しさん:2017/01/21(土) 14:30:31.45 ID:yR+dIRXC.net
- そのうちAIが勝手にやってくれる
- 560 :デフォルトの名無しさん:2017/01/21(土) 16:39:22.18 ID:0yByJcs8.net
- 泥の付いた野菜をそのまま売るのと
きちんと調理して売るのとが一緒なわけ無いだろ
- 561 :デフォルトの名無しさん:2017/01/21(土) 20:33:31.17 ID:6NvQGvfC.net
- robot.txt を遵守して、1日1回しかアクセスしないのなら、営業妨害にはならない
これを守らないから、営業妨害で逮捕される。
だから、APIを公開している企業と契約してから、APIでアクセスすべき
2chなんか、無断でAPIにアクセスしても、刑事告訴してくる
- 562 :デフォルトの名無しさん:2017/01/21(土) 21:01:42.93 ID:do3CYLP8.net
- 誰も営業妨害の話はしていない
- 563 :デフォルトの名無しさん:2017/01/22(日) 23:21:11.92 ID:kJbHnChQ.net
- 作りながら学ぶRuby入門、面白いなこれ
色々分かりやすいし
なんでこれが絶版になったのか分からん
- 564 :デフォルトの名無しさん:2017/01/23(月) 13:47:35.73 ID:vFvi2mPp.net
- rubyを造るのか
- 565 :デフォルトの名無しさん:2017/01/24(火) 12:27:57.85 ID:ZplzBBh2.net
- こんにちは!
学生時代、C言語によるプログラミング大好きなものでしたが、
Rubyもぜひとも勉強をさせていただきたいと考えています。
Rubyを勉強させていただくのに便利なサイトなどは
ございますでしょうか?
当方、工学博士です。
よろしくお願いします。
- 566 :デフォルトの名無しさん:2017/01/24(火) 14:58:12.73 ID:wfxe1Gqr.net
- つ
http://i.loveruby.net/ja/rhg/book/
- 567 :デフォルトの名無しさん:2017/01/24(火) 22:03:31.14 ID:4S1Y2ldw.net
- 「たのしいRuby 第5版、2016」を読む方が速い
- 568 :デフォルトの名無しさん:2017/01/24(火) 23:12:05.89 ID:bwm6iN8W.net
- 工学博士ならPython覚えた方がいいよ
- 569 :デフォルトの名無しさん:2017/01/25(水) 00:59:04.43 ID:SIOVzfzG.net
- みなさんおすすめのエディタやその設定を教えてください
当方、人間です
- 570 :デフォルトの名無しさん:2017/01/25(水) 01:55:28.96 ID:/Hgbftsx.net
- 人間なら秀丸エディタでいいよ
- 571 :デフォルトの名無しさん:2017/01/25(水) 06:35:09.16 ID:FiroNNp+.net
- Rubyのrescueの書き方ですが、
Javaのように例外範囲を広げていくような実装はないコードも書けてしまいますが(死にコードが出る)
何か理由があるんですかね?
- 572 :デフォルトの名無しさん:2017/01/25(水) 06:35:49.12 ID:FiroNNp+.net
- 実装はない => 実装ではない
- 573 :デフォルトの名無しさん:2017/01/25(水) 07:39:06.50 ID:VdWl0ItW.net
- そのへんは一応は「RubyはJavaではないから」「それやってくとJavaになっちゃうじゃないか」あたりが回答になるんだが
適当にStandardErrorかRuntimeError継承して自作して捕まえてくれという運用が引っかかる?
- 574 :デフォルトの名無しさん:2017/01/25(水) 07:45:17.92 ID:a2fwv9ft.net
- Javaの検査例外は失敗だったというのが定説だよ
実際、後にも先にもJavaしか採用されてないよね
その辺の議論を詳しく知りたいなら「Java 検査例外 失敗」でググれば沢山出てくる
- 575 :デフォルトの名無しさん:2017/01/25(水) 08:00:25.68 ID:r85LtB2a.net
- ScalaやKotlinのようなJVMで動く新言語ですら検査例外は外されているという事実があり、
検査例外は失敗だったという結論には現在においてはもう全く議論の余地は無いのだけれど、
RubyはそもそもJavaと同時期に生まれた古い言語なので事情が違う
Rubyは静的型をしない言語だからそもそも検査例外はやりたくても実装できないんだよ
- 576 :デフォルトの名無しさん:2017/01/25(水) 08:21:33.57 ID:FiroNNp+.net
- そうだったんですね。
自分、Java → Ruby の流れで勉強してきて、多言語はJavaしか知らず、
Javaの検査例外が合理的だと思っていたもので。
「Java 検査例外 失敗」で
なぜ、失敗と言われているのかを調べてみます。
ありがとうございました。
- 577 :デフォルトの名無しさん:2017/01/25(水) 08:23:16.13 ID:FiroNNp+.net
- 多言語 => 他言語
誤字多くて申し訳ないです。
投稿する前は見直す癖を付けないと。
- 578 :デフォルトの名無しさん:2017/01/25(水) 08:45:12.06 ID:c3+bwXVx.net
- >>575
そういう理由もあるんですね。
ありがとうございました。
- 579 :デフォルトの名無しさん:2017/01/25(水) 12:30:16.31 ID:nNSnM2U8.net
- モジュールの中にモジュールをインクルードつてできないんですか?
- 580 :デフォルトの名無しさん:2017/01/25(水) 15:10:04.27 ID:iQOG6Lyn.net
- #change.rb
datafile = ARGV[0]
str = File.open(datafile).gets(nil)
x = apple
y = banana
z =cherry
puts ?
#words.txt
x y z
この場合、出力結果が
>ruby change.rb 〜.txt
apple banana cherry となるようにしたい。
putsの後をどうすれば、
テキストファイルに代入した後の
結果が出力されるのでしょうか?
- 581 :デフォルトの名無しさん:2017/01/25(水) 16:28:45.21 ID:jrtlHhYR.net
- >>580
色々突っ込みどころがあるけど
もしword.txtが
z x aaaa y
だったら
cherry apple aaaa banana
を出力したいってことで合ってる?
- 582 :デフォルトの名無しさん:2017/01/25(水) 16:50:09.65 ID:VdWl0ItW.net
- 一番聞くべきは学校とかの提出課題かどうかだろうな
下手に習ってない手法使うとバツされるぞ
- 583 :デフォルトの名無しさん:2017/01/25(水) 17:38:22.65 ID:225SZjEG.net
- 合ってます!
提出課題ではないです。
- 584 :デフォルトの名無しさん:2017/01/25(水) 18:58:23.88 ID:gQWsM4T7.net
- どう書くかすごく迷った
each_lineとgsubを覚えて帰ってもらえると僥倖
infile = File.open(ARGV[0]).read
outfile = ''
infile.each_line do |line|
outfile << line.gsub(/x/){'apple'}.gsub(/y/){'banana'}.gsub(/z/){'cherry'}
end
puts outfile
- 585 :デフォルトの名無しさん:2017/01/25(水) 20:50:06.31 ID:uSRNEv10.net
- ファイル読むときは
ARGF.each do |line|
が便利
あと気になるのは正規表現つかうなら前後に \b が必要なのと
xyzのHash化、outfileの存在
- 586 :sage:2017/01/25(水) 21:38:11.99 ID:nArJwlJe.net
- datafile = ARGV[0]
str = File.open(datafile).gets
str['x'] = 'apple'
str['y'] = 'banana'
str['z'] = 'cherry'
puts str
- 587 :デフォルトの名無しさん:2017/01/26(木) 00:49:41.88 ID:kgwkgRe2.net
- パーフェクトRubyとパーフェクトRalis買ったけど
今一どういう風に読み進めればいいか分からん
どういう風に使えば良いんだこれ
- 588 :デフォルトの名無しさん:2017/01/26(木) 01:04:02.19 ID:wtD2pOnN.net
- >>587
どんな本でも同じだと思うが、まずは写経からはじめよう
- 589 :デフォルトの名無しさん:2017/01/26(木) 12:52:52.40 ID:++maIYxb.net
- たのしいRuby 第5版、2016
Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説
改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015
この順番で、読むのが速い
- 590 :デフォルトの名無しさん:2017/01/26(木) 13:25:05.93 ID:WboG9Ghq.net
- datafile = ARGV[0]
str = File.open(datafile).gets
str['x'] = 'apple'
str['y'] = 'banana'
str['z'] = 'cherry'
puts str
これだとテキストファイル内で
xが2回出てきた時1回目の方にしか
代入されないのですが
どうすればよいでしょう。
- 591 :デフォルトの名無しさん:2017/01/26(木) 13:32:22.19 ID:g4Nshn9j.net
- だからそうなるからやっちゃだめなんだって
>>586みたいに他人に教える能力のないバカは永劫黙ってて欲しい
- 592 :sage:2017/01/26(木) 14:55:33.28 ID:AfHRIr/a.net
- >>590
#words.txt
z y x
だとおかしな動作になるって方向で気づいてほしかった。
'x' -> 'y'
'y' -> 'z'
'z' -> 'x'
みたいな変換だと >>584 でも破堤するよね、
元パターンの 'x' がそもそも無理な要求なんで、
通常は %PARAM_X% とか __LINE__ 見たいな特殊な文字列を予約語にして gsub を使う。
それに \% 見たいなエンコードを併用する事もあるけど、これはこれで泥沼。 (^^;
>>586 の手法は未知の文字列には使えないけど、
str="dayの気温は tmp度"
str['day']=...
str['tmp']=...
見たいなテンプレ処理に、お手軽に使える
- 593 :デフォルトの名無しさん:2017/01/26(木) 15:20:57.87 ID:WboG9Ghq.net
- gsubを使ったらできました。ありがとうございます。
- 594 :sage:2017/01/27(金) 10:47:26.00 ID:zYqXtYNd.net
- >>580
datafile = ARGV[0]
puts File.open(datafile).gets.split.map{|item|
case item
when 'x'; 'apple'
when 'y'; 'banana'
when 'z'; 'cherry'
end
}.join(' ')
やりたい事はこういうことだったりするのかな?
ファイルから一行読んで、空白で区切られた文字(列)を
別の文字列にして表示。
- 595 :デフォルトの名無しさん:2017/01/28(土) 10:47:38.73 ID:N8YHTGgV.net
- gsub 一発で済むやん
- 596 :sage:2017/01/28(土) 15:01:34.14 ID:HxABDFK+.net
- >gsub 一発で済むやん
無理じゃない?
when 'x'; 'z'
when 'y'; 'x'
when 'z'; 'y'
- 597 :デフォルトの名無しさん:2017/01/28(土) 16:13:31.95 ID:T61FP4t7.net
- 全く初心者向けではないから省いただけでやろうと思えばできるよ
irb> '123 x y z'.gsub(/x|y|z/, 'x' => 'apple', 'y' => 'banana', 'z' => 'cherry')
=> "123 apple banana cherry"
つまりこう
irb> h = {'x' => 'apple', 'y' => 'banana', 'z' => 'cherry'}
irb> '123 x y z'.gsub(Regexp.union(h.keys), h)
=> "123 apple banana cherry"
- 598 :デフォルトの名無しさん:2017/02/02(木) 23:52:40.40 ID:1pM+gvmw.net
- Pythonにやられっぱなしだったけどデータサイエンス分野でのRubyの逆襲が始まった
http://www.s-itoc.jp/report/reaserch_results/439
- 599 :デフォルトの名無しさん:2017/02/03(金) 00:18:37.83 ID:L2L7vPE4.net
- >>598
データサイエンスでプログラミング言語がPythonかRubyかなんて
何の差別化要因にもならん
ガラパゴス化を引き起こし日本の情報産業の足を引っ張る迷惑行為でしかないということをこいつらは自覚すべき
- 600 :デフォルトの名無しさん:2017/02/03(金) 21:47:40.76 ID:HLUtHxR2.net
- 今日本屋さん行ってオライリーのデータマインニング、AI、統計関連の書籍を見てみたら
ほぼPythonが使われてたよ、やっぱ時代はパイチンくんだよ。
- 601 :デフォルトの名無しさん:2017/02/04(土) 01:54:39.71 ID:dlgM/2ii.net
- 世界からマネーが集まり開発パワー1番、製品や技術が世界中に売れる国アメリカ
だからAI研究者も最多、そこではPython>ruby、だからAIではPython多数
日本でAI研究マネーを増やすか、米でruby利用者を増やすしか無い
- 602 :デフォルトの名無しさん:2017/02/04(土) 20:36:42.40 ID:vuXXPGjm.net
- まつもと自身がmrubyとかいう組み込みに移行しているから無理。
- 603 :デフォルトの名無しさん:2017/02/04(土) 20:51:04.22 ID:yboswxMT.net
- mrubyは補助金貰ってるから誰も使ってなくても一応開発してるポーズは見せなきゃいけない
Rails人気にも陰りが出てきたし特に次の弾もない
数年後には国内だけで一部のオタクがPerl代わりに使うだけの元のポジションに戻ってそうだね
- 604 :デフォルトの名無しさん:2017/02/04(土) 21:26:45.82 ID:56jDk6a3.net
- rubyで福一も解決っていうだけで予算もらえてウハウハ
- 605 :デフォルトの名無しさん:2017/02/04(土) 22:49:10.43 ID:XS0fIkHD.net
- mruby使われてるやん
- 606 :デフォルトの名無しさん:2017/02/05(日) 00:41:56.62 ID:Fi1WhCJO.net
- 政治に興味あるさんの中ではまつもとゆきひろは税金泥棒で
自分に反論する阿呆はまつもとのシンパなので
そういうこと言っても全くの無駄
- 607 :デフォルトの名無しさん:2017/02/05(日) 00:59:47.60 ID:7nH8BdTw.net
- 意味不明
- 608 :デフォルトの名無しさん:2017/02/05(日) 03:55:50.37 ID:f2xN2W9l.net
- まっつんは今も日本のウケイ化を気にしているのかな?
- 609 :デフォルトの名無しさん:2017/02/05(日) 11:48:02.48 ID:4PxpyFKH.net
- mrubyのコンセプトは期待しているけど動作が遅いのと日本の十八番でドキュメントがショボイのが難
- 610 :デフォルトの名無しさん:2017/02/06(月) 19:12:53.13 ID:hEZ+1tdD.net
- そろそろpythonに乗り換えた方が良いのかなあ?
- 611 :デフォルトの名無しさん:2017/02/06(月) 20:15:40.67 ID:3oInSTA4.net
- >>610
やりたいことによる、としか
Web系でちょこちょこやるならまだまだRailsのあるRubyは使いではあるし、流行りの機械学習とかやってみたいなら
Python使ってみればいいだろうし
銀の弾丸なんてないんだから適材適所で
- 612 :デフォルトの名無しさん:2017/02/06(月) 20:52:04.64 ID:WE8Ef6wq.net
- mrubyはもう潮時だよね
時代の先端からは完全に取り残され、革新的なプロダクトも生まれそうもない以上、
Rubyがメジャーな言語として生き残るためにはプライドを捨ててIT土方の世界に売り込むくらいしかないと思う
- 613 :デフォルトの名無しさん:2017/02/06(月) 20:58:39.39 ID:Y/+tyt0G.net
- ここで質問していいのか分からないけど
eclipseにaptanaのプラグインを入れてRailsを扱えるようにしたはずなんだけど
新規>Railsプロジェクト>abcっていう風にしても
表示されるターミナル上だと
$ rails .
っていうありえないコマンドが実行されてフォルダしか作成されない……
aptana本体も導入してみたけど同じ結果になった
一応は直接ターミナルから叩けば出来るから何とかなるけど不便
- 614 :デフォルトの名無しさん:2017/02/07(火) 01:32:28.56 ID:KcBilzUu.net
- 便乗して……
atomのautocomplete-rubyが動かずに困ってます
port:47367
Rsense Pathj:C:\Users\ユーザ名\.rbenv-win\versions\2.3.1\bin\rsense
と指定したのですが、適当に.rbファイルに単語を打つと
autocomplete-ruby: exec error: Error: Command failed: C:\Users\ユーザ名\.rbenv-win\versions\2.3.1\bin\rsense start --port 47367 --path C:\Users\ユーザ名\workspace
C:/Users/ユーザ名/.rbenv-win/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rsense-0.5.18/lib/rsense/client/runner.rb:112:in `start': uninitialized constant Spoon::FileActions (NameError)
Did you mean? FileUtils
from C:/Users/ユーザ名/.rbenv-win/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rsense-0.5.18/bin/rsense:12:in `<top (required)>'
from C:/Users/ユーザ名/.rbenv-win/versions/2.3.1/bin/rsense:22:in `load'
from C:/Users/ユーザ名/.rbenv-win/versions/2.3.1/bin/rsense:22:in `<main>
というエラーを吐かれて補完機能が働かないです……
ググってもそもそも躓くポイントじゃないのか全然ヒットしないのでどうすればいいか分からんです
- 615 :デフォルトの名無しさん:2017/02/07(火) 02:58:29.60 ID:e2fTv1VF.net
- >>613
>rails .
. はカレントディレクトリじゃないの?
>>614
ファイルを、required できないのかな?
PC名・ユーザ名・ファイル名・パスなどに、半角英数字以外を使っているとか?
ファイルの文字コードが異なるとか、アクセス制限があるとか
>C:\Users\
c: 小文字のc でないとダメとか
- 616 :デフォルトの名無しさん:2017/02/07(火) 08:15:49.90 ID:shQZf8xN.net
- >>615
PC、ユーザ名、ファイル名はすべて半角英数字にしてます
cを小文字にしてみましたがダメでした
- 617 :デフォルトの名無しさん:2017/02/07(火) 19:47:23.39 ID:TqT8diCe.net
- >>614
spoon が読めてないようだけど、当然入れてるよね…
- 618 :デフォルトの名無しさん:2017/02/07(火) 19:58:31.81 ID:ohGA/Fi6.net
- >>617
gem listで確かめてみた所、0.0.6が入ってました
- 619 :デフォルトの名無しさん:2017/02/07(火) 20:56:25.20 ID:TqT8diCe.net
- >>618
gem list で使ってる Ruby と atom が使ってる Ruby は同じだよね…?
- 620 :デフォルトの名無しさん:2017/02/07(火) 21:08:00.00 ID:ohGA/Fi6.net
- >>619
もちろん同じにしてます
一体何がどうなってるか本当に分からないのが……
- 621 :デフォルトの名無しさん:2017/02/08(水) 01:47:47.55 ID:6rskJv7R.net
- >runner.rb:112:in `start': uninitialized constant Spoon::FileActions (NameError)
ここをデバッグすれば?
それか、エラーログをもっと詳細に表示できないの?
- 622 :デフォルトの名無しさん:2017/02/08(水) 03:49:23.74 ID:6rskJv7R.net
- pyenv, rbenv などの仮想環境は、activate すると、
環境変数PATHを書き換えて、PATHの最初に、仮想ディレクトリを持ってくる奴か?
activateしてないとか、
activateした端末から、atomを起動していないとか
環境変数PATHを書き換えているなら、
実際にどのディレクトリにアクセスしているか、チェックすべし
- 623 :614:2017/02/08(水) 08:51:27.59 ID:x7drFtu9.net
- >>622
gen enviromentでpathを見てみたら
- GEM PATHS:
- C:/Users/ユーザ名/.rbenv-win/versions/2.3.1/lib/ruby/gems/2.3.0
- C:/Users/ユーザ名/.gem/ruby/2.3.0
となっているのですが、.gemの方はspecsのフォルダしかなかったので
存在しないフォルダにpathが通ってるみたいです
この辺の設定を弄ればなんとかなるかもしれないのでちょっとやってみます
- 624 :613:2017/02/08(水) 23:17:08.08 ID:aJ5fQeJs.net
- なんかずっと調べてたけど、.は絶対パスだとかカレントディレクトリの事とかってのは分かったけど
結局railsだけ作成されん
rbenv使ってるからpathが変なことになってるのか
この環境を準備する所で延々と蹴躓く現象は何だ一体
- 625 :デフォルトの名無しさん:2017/02/09(木) 02:45:49.65 ID:9cVHqnIp.net
- pyenv, rbenv の仕組みを理解すべき。
例えば、OS X では、
$ which ruby
/usr/bin/ruby
ここに、システムのRuby1.9があるとすると、
$ ruby
で、Ruby1.9 が起動する
ここで環境変数PATHの先頭に、Ruby2.2を追加すると、
$ ruby
で、Ruby2.2 が起動する
export RBENV_ROOT="/usr/local/rbenv"
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"
$ which ruby
/Users/ユーザー名/.rbenv/shims/ruby
常に、システムのRubyか、仮想のRubyか、どのRubyを使っているのか意識すべき。
また、アプリによっては、そのアプリ内にRubyを含んでいて、それを使うものもあるので要注意。
Railsは、Rails内にRubyを含んでいるのか?
フォルダのパスを指定する際も、絶対パスではなく、
仮想のルートとか、プロジェクトのルートからの相対パスで指定すべき
- 626 :613:2017/02/09(木) 07:54:29.95 ID:qeBroOpz.net
- >>625
ありがとう、解決したわ
環境変数にrbenvで使ってるやつのpathを打ち込んだら動いたわ
すでに設定済みにしてると思ってたら/shimsしか環境変数に入ってなかった
本当にありがとう、俺がただアホだった
- 627 :デフォルトの名無しさん:2017/02/09(木) 15:15:20.18 ID:FNn9chTz.net
- 自分がアホということだけは一生忘れるなよ
- 628 :デフォルトの名無しさん:2017/02/11(土) 19:48:55.00 ID:oCse2iaP.net
- みんな最初はアホだったんだよ
- 629 :デフォルトの名無しさん:2017/02/12(日) 17:47:30.58 ID:+uhhqNyl.net
- そして今でも
- 630 :デフォルトの名無しさん:2017/02/12(日) 20:34:37.44 ID:X5nO73Bv.net
- IDEとしてeclipseを使い始めたのですが
入力補完が自動で出てこないのは仕様なのでしょうか?
ctrl+spaceがデフォルトなのですがオートにする方法が分からず……
- 631 :デフォルトの名無しさん:2017/02/14(火) 02:56:09.57 ID:3why3ank.net
- VScodeにしとけ
- 632 :デフォルトの名無しさん:2017/02/16(木) 00:28:37.88 ID:+eyUWXiG.net
- RubyでGUIが発展しなかったのは何故なんでしょうか?
書きやすいのでGUIも作りやすい気がするのですが……
- 633 :デフォルトの名無しさん:2017/02/16(木) 02:15:25.57 ID:t/hw8IzF.net
- >>632
端的に言うとWindowsに向いてないから
まつもとひろゆきは根っからのWindows嫌いで幽冥
- 634 :デフォルトの名無しさん:2017/02/16(木) 02:17:04.04 ID:t/hw8IzF.net
- 失礼ゆきひろだな
- 635 :デフォルトの名無しさん:2017/02/16(木) 02:23:45.59 ID:SJI/N2Pk.net
- そもそもRubyはもともとそんなにポピュラーな言語ではない
Railsがバカ売れしたから相対的にWebばかりで使われてるような状態になっただけ
特にGUIでダメってわけじゃなく、Railsを除くとユーザーの母数は極めて少ない
- 636 :デフォルトの名無しさん:2017/02/16(木) 02:48:11.58 ID:Q8D/mNDA.net
- >>635
極めて少ないんじゃなくて、GUIに向いてないだけ
vagrant、chef、fluentd、jekyll など Ruby 製ツールは数多くある
- 637 :デフォルトの名無しさん:2017/02/16(木) 08:20:46.17 ID:AZnxSHxr.net
- GUI アプリを書きたいプログラマってどんぐらいおる?
- 638 :デフォルトの名無しさん:2017/02/16(木) 08:50:45.54 ID:SJI/N2Pk.net
- >>637
スマホもRailsも一種のGUIアプリだよ
- 639 :デフォルトの名無しさん:2017/02/16(木) 10:39:47.24 ID:oINfzL7x.net
- 趣味コーダーです。
最近るびまのC より速い Ruby プログラムやブログなどのパフォーマンスを上げるテクニックの記事などを読んで疑問に思うことがあります。
オブジェクト生成コストはパフォーマンスに大きな影響を及ぼすということですが
例えば 等レコード長のテキストデータを解析するときなどでループ内でcaseによる分岐処理をする場合
判定に使っている文字列はオブジェクト生成コストが発生するのでしょうか?
def hoge(s)
ret = case s
when "foo" then 1
when "bar" then 2
....
else 0
return 0
end
- 640 :デフォルトの名無しさん:2017/02/16(木) 11:11:18.30 ID:BmKkG0r5.net
- "foo"に .tap {|x| p x.object_id } でわかりそう。
正解はしらんけど都度 "foo".freeze って書くのもうざいので
気にするなら定数にいれとくのがふつう?
- 641 :デフォルトの名無しさん:2017/02/16(木) 12:40:21.60 ID:Yr9i0JtD.net
- 旅行中で手元に環境がないので記憶に頼って適当に書く
スクリプト中のリテラルはコンパイル時にオブジェクトIDが確定する
なので文字列リテラルである限りは毎回生成されているわけではないので気しなくていいというかむしろ
「埋め込み#{}を含まないリテラルで書いたほうがいい」という場合すらもありうる
- 642 :デフォルトの名無しさん:2017/02/16(木) 13:40:44.90 ID:1VBkG9E6.net
- >>632
tkで引っ張り過ぎたんじゃね
使ってる人はこっそり使ってる
- 643 :デフォルトの名無しさん:2017/02/16(木) 16:18:42.90 ID:uedG8QoH.net
- そもそもRubyの立ち位置がGUIの場所を奪い取ろうとしなかったから。
手軽さ気軽さ柔軟さが重視され
GUIで便利に使うというところは取り入れなかった。
頑張った人もいたがその波は複雑すぎて難しすぎて不便すぎて
誰もついていかなかった。
- 644 :デフォルトの名無しさん:2017/02/16(木) 16:29:09.63 ID:fLSXvzzP.net
- >>632
JRuby + JavaFX が現状だとアリな選択肢だと思う。
- 645 :デフォルトの名無しさん:2017/02/16(木) 18:16:34.50 ID:zGnLk6iz.net
- あれは不幸な出会いの結果の事故だったのだ
よくある「便利なRubyで○○操作するライブラリ作ってみました」と同様の
「便利なRubyでGUIツールキットを操作するライブラリ作ってみました」でしかなかったのだが
いつのまにやらどこでやら「簡単なRubyでGUIプログラミングが簡単にできる(ようになる)」ということになってしまったのだ
初心者(を煽る人)の変な期待を背負わされて潰れていったプロジェクトが死屍累々
- 646 :デフォルトの名無しさん:2017/02/16(木) 20:00:08.69 ID:9oOObwwg.net
- >>644
その組み合わせでやってみたいけど全然資料が無くて悲しい
rbenv-winだとそもそもJRubyすらインストール出来ないからなおさら悲しい
- 647 :デフォルトの名無しさん:2017/02/16(木) 22:36:27.03 ID:jc3dpiuS.net
- >>632
> RubyでGUIが発展しなかったのは何故なんでしょうか?
RubyにかぎらずGUIアプリ自体が今の主流じゃない
GUIアプリによく使われるものでもXAMLとか
言語以外でGUIを作る
- 648 :デフォルトの名無しさん:2017/02/16(木) 23:57:07.19 ID:snmxztE6.net
- Haxeのようなトランスレーターでも、Rubyをサポートしていないけど、
AndroidのSL4A(Scripting Layer for Android)は、JRubyをサポートしている
CSSへ変換できる、SASSもRuby製ツール。
DSLの作り安さでは、Groovy, Rubyが圧倒的。
Groovyでは、Gradle が有名
これは、Chef の構文だけど、package とか独自のキーワードをつくれる。
%w{php mysql nginx}.each do |name|
package name do
action :install
end
end
Rubyのライバルに、Groovyを静的にした、Kotlin という言語も出てきた
- 649 :デフォルトの名無しさん:2017/02/17(金) 00:19:29.00 ID:q11e8bmB.net
- KotlinはC#やTypeScriptの系譜だろ
一貫したルールに基づいてシンプルで合理的なコードを書けというタイプの言語
言語がいくら複雑になろうが一貫性がなかろうが手に馴染むならOKという
Ruby系(ScalaとかCoffeeとか)はかなり違う
- 650 :デフォルトの名無しさん:2017/02/17(金) 00:40:25.20 ID:1Ywu3Nja.net
- >>649
誤爆かな…?
それはともかく、立ち位置がまったく逆だと思うぞ
C#やKotlinはともにJavaのシンプルすぎる部分に手を入れて書きやすくしようとしたものなので、
どっちかというと「手に馴染むならOK」を目指してる言語だぞ
- 651 :デフォルトの名無しさん:2017/02/17(金) 01:37:36.15 ID:EzDq9nSn.net
- >>649
× 言語がいくら複雑になろうが一貫性がなかろうが手に馴染むならOKという
○ 言語がシンプルで一貫性があって手に馴染む
それがRuby系(ScalaとかCoffeeとか)だよ
- 652 :デフォルトの名無しさん:2017/02/17(金) 01:38:27.90 ID:EzDq9nSn.net
- >>648
> これは、Chef の構文だけど、package とか独自のキーワードをつくれる。
そのpackageはキーワードじゃなくてただの関数だよ。
あんたRuby知らないんじゃね?
- 653 :デフォルトの名無しさん:2017/02/17(金) 11:44:07.61 ID:9tb0EpUw.net
- それいったら関数じゃなくてメソッドだし
DSLの話ならキーワードって表現してなにが悪いんだか
- 654 :デフォルトの名無しさん:2017/02/17(金) 17:58:53.60 ID:HSZP6Y4k.net
- 文字列と数字が混在した文章が入った変数があるのですが、
数字だけを消す方法ってありますか?
例:foo2017uEHngg
- 655 :デフォルトの名無しさん:2017/02/17(金) 18:02:12.28 ID:HSZP6Y4k.net
- あ、ちなみにループで流してて全てに適応したいので、
image = image.sub( /foo2017uEHngg/ , 'foouEHngg')
とかの置換ではなく、単純に数字だけを消せればと思っています。
- 656 :デフォルトの名無しさん:2017/02/17(金) 18:18:27.20 ID:CTqiPbYL.net
- あるよ
delete使いなよ
- 657 :デフォルトの名無しさん:2017/02/17(金) 18:18:57.11 ID:yGnzX63H.net
- ありますよ
- 658 :デフォルトの名無しさん:2017/02/17(金) 18:35:45.10 ID:K+qi4wTI.net
- >>655
置換で(も)いいよ
「何もない文字列」と置換すればいい
irb> 'abc123def'.gsub(/\d/){''}
=> "abcdef"
- 659 :デフォルトの名無しさん:2017/02/17(金) 18:39:24.01 ID:jqlfOnRa.net
- 'abc123def'.gsub(/\d/,'')でいいでしょ
- 660 :デフォルトの名無しさん:2017/02/17(金) 19:33:20.10 ID:HSZP6Y4k.net
- 645ですがイケました!
大変助かりました。
皆様ありがとうございますm(_ _)m
- 661 :デフォルトの名無しさん:2017/02/18(土) 02:50:53.61 ID:iGUiGFMH.net
- GitHubで「remove password」というコミットを検索するとパスワードらしきものが大量に見つかる
https://security.srad.jp/story/17/02/17/0453215/
- 662 :デフォルトの名無しさん:2017/02/18(土) 07:24:52.64 ID:gP3354JB.net
- わろた
- 663 :デフォルトの名無しさん:2017/02/18(土) 07:25:33.45 ID:gP3354JB.net
- あとどの言語の利用者に馬鹿が多いかもわかるかもしれんな
- 664 :デフォルトの名無しさん:2017/02/18(土) 23:56:49.78 ID:Dj21W5qA.net
- elseif って言語でかなり変わるのがいとおかし
if else だけ C
elseif VBA
elsif ruby
elif phyton
となるとそのうち eif や ef の言語が出てきそう
- 665 :デフォルトの名無しさん:2017/02/19(日) 15:31:10.84 ID:3qLPQcO5.net
- caseがあるならelse-ifはいらんよな
カラム位置ずれるし
- 666 :デフォルトの名無しさん:2017/02/19(日) 23:50:13.75 ID:qdwxJW3o.net
- a = []
2.times do |n|
a[n] = gets.chomp.split(" ")
end
b = a.reverse
puts b
これでプログラムを動かすと
1 2 3
4 5 6
が
1
2
3
……という形になり
a[n] = gets.chomp似なおすと
4 5 6
1 2 3
という風になるのですが、何故でしょうか
単純に空白区切りにするために.splitをつけたのですが、改行される理由が分からず……
- 667 :デフォルトの名無しさん:2017/02/20(月) 00:25:48.68 ID:csIbwSs4.net
- >>666
それだとsplit有りの方の結果は
4
5
6
1
2
3
になりそうなもんだけどな
- 668 :デフォルトの名無しさん:2017/02/20(月) 00:36:32.08 ID:xJP1+W8M.net
- >>667
申し訳ないです、その通りでした
ただ理想としては
4 5 6
1 2 3
と表示したかったので、要素ごとに改行されるのが気になりました
- 669 :デフォルトの名無しさん:2017/02/20(月) 00:39:20.78 ID:ql4Ji/cb.net
- 文章表示のためにp使うな氏ね、という素晴らしい言葉があるのだが
内容確認のためにputs使うな氏ね、というのも同じなのだろうな
>>666
Rubyには文字列や数値なんかを含むオブジェクトの中身を適度にデバッグ便利に表示してくれる p という関数的メソッドがございます
ある時点の文字列や配列なんかがどのような構造になってるかというのは p で表示させることで確認できます
原始的な方法だとか文句はあるんだけども思った通りの構造になっていないことが判明したりするので適宜表示してくだされ
a = []
2.times do |n|
a[n] = gets.chomp.split(" ")
end
p a
んでつまりaは入れ子の配列です
通常、そんなめんどくさいものをputsに直接渡してはいけません(特に初心者は)
配列の要素をeachで取り出す・mapで結合するなどして成形した文字列ひとつを(何度も)putsするようにしてみてください
顧客が本当に必要だったもの:
a = []
2.times{ a << STDIN.gets.split}
puts a.flatten.join(' ')
- 670 :デフォルトの名無しさん:2017/02/20(月) 00:44:21.53 ID:csIbwSs4.net
- 結果が自分の予想と大きく違って原因がわからないときは
irbで1行ずつ結果見てくのが良いよ
>>666の場合はたぶんbの内容は予想通りだったんじゃないかな
putsの仕様を自分にとって都合の良い方向に勘違いしてただけで
- 671 :デフォルトの名無しさん:2017/02/20(月) 00:56:41.06 ID:xJP1+W8M.net
- >>669、>>670
pメソッドで二つのプログラムを確認したら
gets.chomp.splite
=>[["1", "2", "3"], ["4", "5", "6"]]
gets.chomp
=>["1 2 3", "4 5 6"]
っていう風になってやっと何が起きてるかやっと分かりました
pって使い所が分かりづかったんですが、こういう時にはめちゃくちゃ便利ですね
あとputsとか配列の仕様ももっと勉強しないとダメですね
やっぱりプログラミングはたのしー!
- 672 :デフォルトの名無しさん:2017/02/20(月) 01:26:31.07 ID:mClGTBrk.net
- puts, print は文字列を表示するから、インスタンス.to_s を呼ぶ。
一方、p, pp はデバッグ用だから、オブジェクトの構造もわかる
リテラルなら、% で、そのまま様々な配列にできる
ary = %w(a b c)
p ary
# => ["a", "b", "c"]
- 673 :デフォルトの名無しさん:2017/02/20(月) 11:21:40.78 ID:hEKkgCXk.net
- Rubyって多次元配列の資料ってあんまりないの?
- 674 :デフォルトの名無しさん:2017/02/20(月) 14:52:09.25 ID:z8tMUJw0.net
- Rubyって複雑なことをさせる言語じゃないじゃん?
- 675 :デフォルトの名無しさん:2017/02/20(月) 14:58:46.95 ID:0oYPRVWe.net
- a = []
2.times do |n|
a[n] = gets.chomp.split
end
puts b[0][0] +" "+b[0][1] + " " + b[0][2]
puts b[1][0] +" "+b[1][1] + " " + b[1][2]
何とも言えない気持ち悪さ
もっと楽したい
- 676 :デフォルトの名無しさん:2017/02/20(月) 16:12:09.27 ID:nLOBZbgL.net
- 何がしたいのかよくわからんけど
puts b.join(" ")
- 677 :デフォルトの名無しさん:2017/02/20(月) 16:15:54.79 ID:HE07SQGC.net
- どんな糞な解説や教科書を使ってるのかは知らんが
Rubyにおいては配列内容に添字でアクセスするのは最終最後の泥臭い手段
そうならないように作る
- 678 :デフォルトの名無しさん:2017/02/20(月) 16:38:03.36 ID:0oYPRVWe.net
- >>676
上の話見てて
a[n] = gets.chomp.split
=>[["1", "2", "3"], ["4", "5", "6"]]
このネストからそれぞれの配列だけ取り出したいなーって思ったんだわ
理想
=>["1", "2", "3"]
=>["4", "5", "6"]
puts a.join(" ")でやると
=>1 2 3 4 5 6
になるし
p a.flattenしちゃうと
=>["1", "2", "3", "4", "5", "6"]
なんか小回り効かないなーっていう風にふと思っただけ
Rubyで多次元配列あんま使わないから気になってさ
- 679 :デフォルトの名無しさん:2017/02/20(月) 17:04:29.58 ID:36hbH0MI.net
- >>668
$ irb
>> ys = [["1", "2", "3"], ["4", "5", "6"]]
=> [["1", "2", "3"], ["4", "5", "6"]]
>> ys.reverse.each { |xs| puts xs.join(' ') }
4 5 6
1 2 3
=> [["4", "5", "6"], ["1", "2", "3"]]
>>
- 680 :デフォルトの名無しさん:2017/02/20(月) 17:35:58.62 ID:nLOBZbgL.net
- >>678
b=[["1", "2", "3"], ["4", "5", "6"]]
b.each{|a| p a}
- 681 :デフォルトの名無しさん:2017/02/20(月) 17:57:38.96 ID:0oYPRVWe.net
- >>679、>>680
eachだ多次元配列で表示していっても
その配列ごとでやってくれるのか、本当に勉強になるわ
リファレンスとか本漁ってもこの辺の挙動が書いて無かったから助かった
- 682 :デフォルトの名無しさん:2017/02/20(月) 18:32:48.75 ID:wmO++6yz.net
- ああそうか、初心者スレだし最初に言うべきだった
>>681
Rubyに多次元配列は存在しない(と、それこそマニュアルに書いてあるはず)
ただのネストした配列でしかない
なのでふつうの配列操作が使える
- 683 :デフォルトの名無しさん:2017/02/20(月) 21:12:58.62 ID:ZSqAwaEi.net
- >>682
あーなるほど
それこそ配列が一つの要素みたいに扱うのね
その辺が何となく曖昧だったけどやっと分かったわ
- 684 :デフォルトの名無しさん:2017/02/20(月) 23:53:00.90 ID:mClGTBrk.net
- 動的言語では、多次元配列は無い。
単なるオブジェクトの配列しかない
そのオブジェクトが配列なら、2次元配列のように見えるだけ。
だから、ジャギー配列
- 685 :デフォルトの名無しさん:2017/02/21(火) 07:50:42.24 ID:sM1Q20qs.net
- APLは動的じゃなかったか
- 686 :デフォルトの名無しさん:2017/02/21(火) 08:33:27.35 ID:9la10gsU.net
- Rubyの場合はもっと単純に「多次元配列に見えるものはただのメソッドチェーンの糖衣構文だから」でいいよ
irb> arr = [[11,22,33],[44,55,66]]
irb> p arr[1][2]
66
irb> p arr.[](1).[](2)
66
多次元配列のように見えるオブジェクトarrには[2]の部分の情報が渡っていない
[2]はarr[1]で返るオブジェクトのメソッドでしかない
だから存在しない「番地」を問い合わせたときの挙動がバラバラになる
# arr[5]はnilで、nilには[]メソッドがない
irb> p arr[5][2]
NoMethodError: undefined method `[]' for nil:NilClass
# arr[1]はArrayを返し、Array内に存在しない要素[5]はnilを返す
irb> p arr[1][5]
nil
Rubyのネスト配列を多次元配列だと思った人が全員踏み抜く地雷おまけ
irb> a = Array.new(2, Array.new(2))
irb> p a
[[nil, nil], [nil, nil]]
irb> a[0][1] = 9
irb> p a
[[nil, 9], [nil, 9]]
irb> a = Array.new(2){Array.new(2)} # ブロックを使った正しい"初期化"
- 687 :デフォルトの名無しさん:2017/02/21(火) 13:04:50.28 ID:quEto1j7.net
- 配列の要素が配列なのが多次元配列じゃないという意味が解らないんだけど、
1次元配列の番号を2次元に付けかえたのが多次元配列といいたいわけ?
- 688 :デフォルトの名無しさん:2017/02/21(火) 13:11:28.67 ID:quEto1j7.net
- method = obj.method(:hoge)
method.call(arg1, arg2, arg3)
これが出来るからrubyのメソッドはファーストクラスっていうけど
.callっていうのがファーストクラスじゃないのに
なんでmethodがファーストクラスなのかわからない
矛盾してると思う。
call.call.って永遠に続く無限ループじゃないかとおもう。
- 689 :デフォルトの名無しさん:2017/02/21(火) 14:03:18.59 ID:+7ZkBccH.net
- curryでProc返すし、いろいろ目をつむるところは多いね。
同じ結果にできればいいんやろみたいな
- 690 :デフォルトの名無しさん:2017/02/22(水) 23:43:47.80 ID:oa5gpijl.net
- >>688
関数型言語において関数そのものがファーストクラスであることは決定的な特質であり、
対してRubyのメソッドがファーストクラスではないという指摘はまったくそのとおり
それゆえRubyは(純粋オブジェクト指向言語であって)関数型言語ではない、
ただし(lisp由来の伝統的な)関数型プログラミング・スタイルには最適な設計が為されている
- 691 :デフォルトの名無しさん:2017/02/23(木) 00:00:31.66 ID:mXBoTgqP.net
- 関数型プログラミングに最適とはとても言えないだろ
Rubyのブロックが式じゃないのは本当に糞
-> { とか関数型信者なら発狂するレベルの醜悪なシンタックス
- 692 :デフォルトの名無しさん:2017/02/23(木) 01:27:53.73 ID:Zu/nS+/A.net
- >>691
>Rubyのブロックが式じゃないのは本当に糞
RubyのブロックはProcオブジェクトの「構文糖」だからね
もしブロックを式(の要素)として扱いたいのなら、lambda { … } と書けばいいだけの話
>-> { とか関数型信者なら発狂するレベルの醜悪なシンタックス
これに関しては同意する
ただでさえ複雑難解なRubyの構文仕様にあえて:
・メソッド Kernel.#lambda の代用として、-> という予約語
・メソッド Proc.call の代用として self[…] という別名(エイリアス)
・メソッド Proc.call の代用として self.(…) という構文
がRuby1.9で追加されたけれど、どれも「実践的な関数型プログラミング」という視点では糞だ
ただし糞を使わなければいいだけで、lambda と call を使うことには何の問題も無い
というか、最適ではないという根拠はこんな2つだけなのかな?
逆に、最適であるという根拠は以下の文書で解説されているんだけどね
・Rubyによる関数型プログラミング
http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.html
この文書から引用しとく:
Rubyは基本的には命令型言語であるけれど、 関数型プログラミングへの
際立った潜在能力があるのだから、 それらをいつどのように使うか(そして、いつ使わないか)を
知っておくべきである。
- 693 :デフォルトの名無しさん:2017/02/23(木) 06:41:51.11 ID:V6/XQnA9.net
- >>692
ブロックが式なら lambda もいらないんだよ
ほんとに関数型言語使ったことあるの?
- 694 :デフォルトの名無しさん:2017/02/23(木) 07:11:05.68 ID:YiHBi8SD.net
- >>693
ちゃんと文章を読んだ方が良いよ。
- 695 :デフォルトの名無しさん:2017/02/23(木) 07:19:43.53 ID:V6/XQnA9.net
- >>694
688や691はlambdaやcallを唱えなければならないこと自体が最適でないと言ってるんであって、692は何の反論にもなってないよ
Matzの言葉を借りて言えば、処理系を満足させるためだけの無駄な記述をしなければならないことは「屈辱」
- 696 :デフォルトの名無しさん:2017/02/23(木) 08:26:20.57 ID:adFVqgJc.net
- ブロックが式と申しますかオブジェクトであらねばいけませんことよ。
松本さまがおっしゃりあそばされましたように、ブロックをお二つ以上
お渡ししたいときは、ラムダ式をご使用なされるようにとのことでしたわ。
- 697 :デフォルトの名無しさん:2017/02/23(木) 09:03:07.13 ID:mPCh5pwG.net
- そんなに仕様に不満があるなら自分で言語つくればいいのに。
- 698 :デフォルトの名無しさん:2017/02/23(木) 09:20:42.04 ID:yVxxN/xM.net
- # Swapping Two Numbers
loop do
x, y = gets.split.map(&:to_i)
break if x == 0 && y == 0
if x < y
puts "#{x} #{y}"
else
puts "#{y} #{x}"
end
end
このプログラムでloop doをwhileにすると
Swapping-Two-Numbers.rb:3: syntax error, unexpected ',', expecting keyword_do_cond or ';' or '\n'
x, y = gets.split.map(&:to_i)
というエラーが出るのですが何故なんでしょうか?
- 699 :デフォルトの名無しさん:2017/02/23(木) 11:26:52.34 ID:wDND+Qvv.net
- >>698
勝手に決めつけて勝手なことするな
プログラミング言語は書き方が決められている
ttp://doc.okkez.net/2.1.0/view/spec/control#while
- 700 :デフォルトの名無しさん:2017/02/23(木) 12:24:42.23 ID:yVxxN/xM.net
- >>699
申し訳ないです
ただ
#Print Test Cases
i = 0
while
x = gets.to_i
i += 1
break if x == 0
puts "Case #{i}: #{x}"
end
というプログラムを書いた時は問題なく動いたもので
正直何が違うのか今一分からず……
- 701 :デフォルトの名無しさん:2017/02/23(木) 13:03:40.22 ID:wDND+Qvv.net
- >>700
うん、なんか根本的なところがわかってもらえてなくて悲しいからはっきり言うけど
そのwhileの使い方は「最初から間違っている」
問題なく動いたことなどほんとは一度もないのだ
プログラミング言語は容量用法守って正しい使い方で使うこと
while true
puts 'press Ctrl-C for stop'
end
どうしても回答欲しい人向けに答えるとwhileが制御構造(で、doが省略可能)だったからwhileがexpr求めて行跨いだからだな
while a = 32
p a
end
- 702 :デフォルトの名無しさん:2017/02/23(木) 13:23:10.87 ID:yVxxN/xM.net
- >>701
ありがとうございます
もっとちゃんと勉強します……
- 703 :デフォルトの名無しさん:2017/02/23(木) 13:28:28.64 ID:mPCh5pwG.net
- whileの使い方がわかっていなくても
こんな書き方は知っているんだな。>map(&:to_i)
初めてみたんで調べたわ。
- 704 :デフォルトの名無しさん:2017/02/23(木) 13:28:53.32 ID:ovcPlnjq.net
- loop do <=> while true do
他言語ぽく書けるようにかwhileのdoは省略できる謎仕様だから
700は while (x = gets.to_i) do となれるけど
698は構文解析器の想定外なのでダメ
あと標準入力を順に処理するコードは ARGF.each をつかって
レシーバから畳み掛ける方がrubyぽくて楽かもね
- 705 :デフォルトの名無しさん:2017/02/23(木) 23:42:15.65 ID:Zu/nS+/A.net
- >>693
そんなに lambda とタイプするのが面倒なら、おまじないを唱えればいい
$ irb
>> module Kernel; alias :fn :lambda; end
=> nil
>> succ = fn { |x| x + 1 }
=> #<Proc:0x0000000109aaad98@(irb):2>
>> succ.call 2
=> 3
>>
JavaScript の function や Python の lambda が予約語であるのに対して、
Ruby の lambda は単なるメソッドでしかないから、こんなこともできる
ちなみに fn という単語は、Standard ML(SML) と呼ばれる関数型言語において
ラムダ式を構成するために使う予約語であり、同じML族の OCaml なら fun を使う
上の例ならば、SML だと「val succ = fn x => x + 1」と書く
- 706 :デフォルトの名無しさん:2017/02/24(金) 00:10:31.93 ID:nZ0bXpnn.net
- >>695
まず自分が>>690で「(Rubyは)関数型プログラミング・スタイルには最適」と書いたのは、
いくつかある命令型言語(=手続き型言語)の中で最適という意味だから、勘違いしないよう
関数型言語が関数型プログラミングというスタイルに最適なのは小学生でも分かるよね?
念のため、クイックソートというお題でいくつかの言語について関数型プログラミングを
比較した文書があるから、読んどいて
・関数型プログラミングにおけるクイックソート・アルゴリズムの実装
http://www.h6.dion.ne.jp/~machan/misc/qsort-in-fp.html
あと、実践的なRubyの関数型プログラミングで、Procオブジェクトを明示的に生成する
lambda や他のオブジェクトを適用する call は、日常的にはまず使わないよ(例外は>>696)
普通はProcオブジェクトの構文糖であるブロックを使う
lambda や call は「処理系を満足させるためだけの無駄な記述」だから、
Matzはブロックという構文をRubyで採用したのではないかと
それでも>>695が lambda と call の存在を問題視したいのなら、具体例で示したほうが説得力があると思う
最後に、2ch初心者みたいだからアドバイスしとくと、アンカーの使い方を勉強したほうがいいね
- 707 :デフォルトの名無しさん:2017/02/24(金) 05:07:12.96 ID:0EY+MEOs.net
- >>705
> Ruby の lambda は単なるメソッドでしかないから、こんなこともできる
こんなことって、それ何かすごいことなの?
- 708 :デフォルトの名無しさん:2017/02/24(金) 06:28:01.96 ID:wGBUe+Mz.net
- メタプログラミングでよく使われる、オープンクラスだろ
オープンクラスとは、既存のクラスを好きな場所で再オープンし、
メソッド修正・追加など、任意の変更を加えられる機能のこと
>module Kernel; alias :fn :lambda; end
モジュールを開いて、別名を付ける
名前が重複した場合とか、関数の内容をカスタマイズして使う場合に、
元の関数を別名にして取っておくとか
- 709 :デフォルトの名無しさん:2017/02/24(金) 10:10:37.41 ID:pC79/nbA.net
- 他言語ならなんでもない機能とかブロックがファーストクラスだったら必要のない細工を自慢げに紹介するのかっこわるい
- 710 :デフォルトの名無しさん:2017/02/24(金) 12:20:03.63 ID:GgrUn8v8.net
- map(&:to_s)みたいなのも格好悪いハックだよな
メソッド参照を自然に扱えないのは致命的
- 711 :デフォルトの名無しさん:2017/02/24(金) 14:51:52.02 ID:E7gdlIod.net
- ruby/sdlを入れようとしたら
C:\Users\[ユーザ名]>gem install rubysdl
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing rubysdl:
ERROR: Failed to build gem native extension.
current directory: C:/Users/[ユーザ名]/.rbenv-win/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rubysdl-2.2.0
C:/Users/[ユーザ名]/.rbenv-win/versions/2.3.1/bin/ruby.exe -r ./siteconf20170224-10
132-19blm9o.rb extconf.rb
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers.
Check the mkmf.log file for more details. You may need configuration options.
Provided configuration options:(中略)
extconf.rb:8:in ``': No such file or directory - sdl-config --cflags (Errno::ENOENT)
from extconf.rb:8:in `<main>'
extconf failed, exit code 1
Gem files will remain installed in C:/Users/[ユーザ名]/.rbenv-win/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rubysdl-2.2.0 for inspection.
Results logged to C:/Users/[ユーザ名]/.rbenv-win/versions/2.3.1/lib/ruby/gems/2.3.0
/extensions/x86-mingw32/2.3.0/rubysdl-2.2.0/gem_make.out
というエラーが出てインストールが出来ません……
何が書いてあるかもさっぱり分からず
OSはwin7-64bit、rubyのバージョンは2.3.1(32bit)になります
- 712 :デフォルトの名無しさん:2017/02/24(金) 15:56:35.94 ID:lQp9pEy2.net
- READMEには
Ruby/SDL needs Ruby and SDL ...
ってあるけどSDLは導入済み?
導入していてもPATHにsdl-configコマンドが通ってないとか
- 713 :デフォルトの名無しさん:2017/02/24(金) 16:03:49.21 ID:E7gdlIod.net
- >>712
SDL本体のインストール忘れてました……
入れてきます
- 714 :デフォルトの名無しさん:2017/02/26(日) 18:23:15.61 ID:BLcxLJLg.net
- rubyに関する活発なコミュニティってないの?
- 715 :デフォルトの名無しさん:2017/02/26(日) 18:36:48.06 ID:Em0PCsm6.net
- そう聞くってことは英語読めないってことだよね
ないよ
- 716 :デフォルトの名無しさん:2017/02/26(日) 19:04:27.57 ID:EY506Qz0.net
- 英語でいいならあるんだけどねえ
- 717 :デフォルトの名無しさん:2017/02/26(日) 19:27:47.62 ID:DnCu8UW+.net
- Railsやってないなら無いな
- 718 :デフォルトの名無しさん:2017/02/26(日) 23:14:24.04 ID:SNAVJ+Hg.net
- 多言語経験者向けにさらっとrubyを学べるなるべく薄めの本を探しております
はじめてのrubyがその様な物だと調べていて知りましたが、どうも扱っているバージョンが古い物のようで
新しいバージョンに対応しているそのような本はないでしょうか
- 719 :デフォルトの名無しさん:2017/02/27(月) 00:04:36.09 ID:ADDVNKtI.net
- 本なら「たのしいRuby」かな
少し分厚いけど他言語(多言語?)経験者ならパラパラ読める
よくある小さいポケットリファレンスくらいの簡単さ
あとは本じゃないけどオフィシャルのマニュアルとか
https://docs.ruby-lang.org/ja/2.4.0/doc/index.html
https://www.ruby-lang.org/ja/documentation/quickstart/
- 720 :デフォルトの名無しさん:2017/02/27(月) 00:56:50.54 ID:44jB03Ba.net
- 他言語出来るような人ならとりあえずEffective Rubyだけ読んどけば済むんじゃないかな
- 721 :デフォルトの名無しさん:2017/02/27(月) 01:19:05.58 ID:NoEcrRje.net
- >>715、>>716
やっぱり英語読めなきゃダメか……
もっとrubyの事を知りたいし色々見てみたい
- 722 :デフォルトの名無しさん:2017/02/27(月) 08:11:17.22 ID:HTxl7OoW.net
- たのしいRuby 第5版、2016
すべての言語に応用が効く、入門書
Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説
プロ必須本
- 723 :デフォルトの名無しさん:2017/02/28(火) 09:23:30.49 ID:6GmkQX7r.net
- 現状入門本はたのしいRuby一択
それ以外はバージョンが古い
- 724 :デフォルトの名無しさん:2017/02/28(火) 11:09:36.41 ID:+gLWzVyd.net
- 下のプログラムで、定数 HOGE がメソッド bbb からは参照できるのに、aaa からは参照できないのは何故でしょうか。
<pre>
Hoge = Class.new do
const_set(:HOGE, "hoge")
def aaa
return HOGE
end
end
class Hoge
def bbb
return HOGE
end
end
x = Hoge.new
x.bbb
=> "hoge"
x.aaa
NameError: uninitialized constant HOGE
</pre>
- 725 :デフォルトの名無しさん:2017/02/28(火) 12:25:13.13 ID:JvoAWwGi.net
- きゃああ、無名クラスの定義スコープの話だ説明めんどい死ぬ死んでしまう
Class.newやModule.newにブロックを渡して作った場合
- 無名クラス定義内で参照される定数はそのスコープ内でリアルタイムに参照される
という仕様なのだ
HOGE=111
Hoge = Class.new do
const_set(:HOGE, 222)
def aaa; HOGE; end
end
class Hoge
def bbb; HOGE; end
end
p Hoge.new.aaa #=> 111
p Hoge.new.bbb #=> 222
どうしても無名クラス内でその無名クラス内で定義した定数を参照したければself.class::HOGEとするしかないね
- 726 :デフォルトの名無しさん:2017/02/28(火) 17:55:28.53 ID:+gLWzVyd.net
- どうもありがとう。
定数の探索ルールが良く分かってなかったようで。
self.class の論理的な階層構造から、見える定数が決まるのだと思ってたのだけど、そうではなくて、メソッドが定義されたソースコード上の位置で決まるんですね。
- 727 :デフォルトの名無しさん:2017/03/01(水) 01:17:13.59 ID:ElQ6OcG3.net
- 驚き溢れる素敵な言語
- 728 :デフォルトの名無しさん:2017/03/01(水) 08:19:02.05 ID:yuocqMDO.net
- Hoge = Class.new do
const_set(:HOGE, "hoge")
def aaa
return HOGE
end
end
Hoge = Class.new do
end
Class.new は動的にクラスを作る構文、メタプログラミング用だろ
だから、return HOGE の所では、最後のendが、まだ閉じていないから、
変数Hogeが存在しないのかも?
- 729 :デフォルトの名無しさん:2017/03/07(火) 17:50:47.89 ID:OR7b+iU3.net
- 定数はclassかmoduleの中に入らないと変わらないルールだから
ブロックの中のaaaのHOGEは一番外側を参照するだけだろ。
- 730 :デフォルトの名無しさん:2017/03/07(火) 18:00:47.74 ID:OR7b+iU3.net
- わかりにくいから意味を追加するけど、
classとmoduleキーワードに続く中はフォルダーで
その中にあるファイルが定数と考えることが出来て、ファイルは
ファイルのあるフォルダーからしか見ることができないんだよね。
上の例だとaaaがあるのは一番上のフォルダーでbbbがあるのはHogeの
中のフォルダーだからHOGEは別別のファイルと考えることが出来る
- 731 :デフォルトの名無しさん:2017/03/07(火) 18:11:00.36 ID:OR7b+iU3.net
- ちょっと違ってたから訂正、
実験してみたら上のフォルダーの中のファイルは見えるらしい。
つまり、今いるフォルダーにファイルが無ければ上のフォルダーで探す
ルールみたいだな。
- 732 :デフォルトの名無しさん:2017/03/07(火) 18:29:53.76 ID:OR7b+iU3.net
- Class.newのブロックの中ではselfがHogeにかってに変わることで
まだ存在しないHogeの関数を定義できるんだよな。
本当はブロックの引数がHogeじゃないといけないんだけど、
selfをHogeかえることでaaaの暗黙的にselfが
ついているように出来る仕組みなんだよ。
- 733 :デフォルトの名無しさん:2017/03/07(火) 22:12:22.93 ID:H6yYJeTo.net
- >>724
Hoge = Class.new do
class Hoge
下の方で、class Hoge を定義して、
上の方で、Hoge = Class.new で、Hoge class を、new して、
よく考えたら、このソースコードは滅茶苦茶じゃん
Class.new なんて、たのしいRubyにも、載っていない機能だろ。
メタプログラミング用だろ
- 734 :デフォルトの名無しさん:2017/03/07(火) 22:30:03.39 ID:rThUdk6T.net
- >>733
君は知らんだろがRubyにはオープンクラスという機構があってだな…
- 735 :デフォルトの名無しさん:2017/03/07(火) 22:32:07.87 ID:xCLX0I7r.net
- >>733
Rubyは君が想像してるより複雑でサプライズの多い言語なんだよ
シンプルで一貫性が高いのがお好みならPythonにでも乗り換えたほうが幸せになれる
- 736 :デフォルトの名無しさん:2017/03/07(火) 22:52:57.44 ID:ymginw1j.net
- たぶん書いてる人同じだと思うのだが、知らんことにまで口突っ込まんでいいよ
- 737 :デフォルトの名無しさん:2017/03/07(火) 23:05:12.91 ID:5c7MTUF9.net
- >>735
http://d.hatena.ne.jp/edvakf/20090405/1238885788
たしかに Python の配列操作はシンプルで一貫性があるなあ…(棒
- 738 :デフォルトの名無しさん:2017/03/08(水) 01:17:49.38 ID:sPopLWFS.net
- BetterListという命名の傲慢さよ
- 739 :デフォルトの名無しさん:2017/03/08(水) 10:58:08.01 ID:8YPePj4Q.net
- >>732は間違ってた。答えを聞く前にどこが間違ってるか考えてみよう。
def aaaはdef self.aaaの略では無くてdef aaaは現在のclassにaaaというメソッドを
追加する意味なんだ。
なぜならトップレベルでdefでメソッドを定義すると、そこではselfはmainなのにmainのメソッド
にならなくて、mainのクラスであるObjectのメソッドになるからね。
だからClass.newのブロックの中では勝手に現在のオブジェクトselfも変わるけれど
現在のclassも変わるんだね。
- 740 :デフォルトの名無しさん:2017/03/08(水) 11:26:12.80 ID:8YPePj4Q.net
- また間違ってた。def object.methodの形式のdefはselfがobjectに固定した
メソッドを定義するらしい。レシーバーいらなくてシングルトンメソッドという。
- 741 :デフォルトの名無しさん:2017/03/08(水) 11:33:55.78 ID:8YPePj4Q.net
- レシーバーいらないと言ったのはobject.method全体がメソッド名と考えた場合だから注意な。
- 742 :デフォルトの名無しさん:2017/03/08(水) 11:37:10.85 ID:8YPePj4Q.net
- また間違ってた。selfは変数だからメソッド名はmethodだけだな。
objectはただ一つしかないレシーバーだからシングルトンメソッドって言うんだな。
- 743 :デフォルトの名無しさん:2017/03/08(水) 12:04:44.96 ID:sBKWIXfj.net
- 全部訂正ワロタ
- 744 :デフォルトの名無しさん:2017/03/08(水) 12:08:24.90 ID:6nP3yGTy.net
- だからRubyには深入りするなといったのに
そういうのを理解したところでMatzの気分で場当たり的に実装されたバッドノウハウでしかないのよ
- 745 :デフォルトの名無しさん:2017/03/08(水) 12:12:46.76 ID:+WSjdjfj.net
- たぶん書いてる人同じだと思うのだが、知らんことにまで口突っ込まんでいいよ
- 746 :デフォルトの名無しさん:2017/03/09(木) 00:52:21.47 ID:HcCF7edF.net
- 後付けでインスタンスにメソッド差し込める
フックがなくとも、既存のメソッド乗っ取って追加処理差し込んで元のを呼び出すの余裕
ええとほらアレしたいんだよ、Rakefileっぽいの……できるでそたしかinstance_eval?
(とか言いながら後で「ruby dsl eval」でググる)
レシーバー……ああうん、知ってるよ、「左」ね(「ruby レシーバー 定義」をgoogleで検索)
あかん、わからんおいMatz出てこい(と言いながらソースを)
くらいの覚え方してる、いいのかなぁこんなんで orz
- 747 :746:2017/03/09(木) 01:07:21.02 ID:HcCF7edF.net
- 初心者なんでアレだけど
Net::SSHで、su - 叩いてからコマンドぶっぱしたら、出力がおかしくなるのですよ
コード的にはこういうの
https://ideone.com/lWtaiC
鯖のip、ユーザー名、rootのパスは改変してまする(俺のセキュリティ的な意味で)
なんとかrootの出力だけギって来たいわけだが……俺のアタマじゃわかんねえのであります orz
- 748 :746:2017/03/09(木) 01:13:30.82 ID:HcCF7edF.net
- ……見直したらなんかひどい文章になってた気がするので忘れてほしくなってきた orz
- 749 :デフォルトの名無しさん:2017/03/09(木) 01:26:20.04 ID:Op4GVNwD.net
- ポイントを絞って書いてくれ
1行ソースコードを書いて、その出力がこうなっているけど、このように変えたいなど
- 750 :デフォルトの名無しさん:2017/03/09(木) 02:37:06.62 ID:HcCF7edF.net
- 頑張って短くしてみたけどこれが限界
https://ideone.com/nMJK8I
どういえばいいのか、Net::SSHでチャンネル張ってsu -した後、
root権限でコマンドを実行したら出力がおかしくなる(root@machine# みたいな文言もくっついてくる)
rootでやったコマンドの出力・エラー出力・戻り値だけ欲しい感じ
- 751 :デフォルトの名無しさん:2017/03/09(木) 02:40:16.46 ID:HcCF7edF.net
- su -c "xxx" で逃げるしかないんかしら orz
- 752 :デフォルトの名無しさん:2017/03/09(木) 02:43:01.19 ID:HcCF7edF.net
- 正確にはセッション張って(コネクション確立して?)
各パケごとにchannelというか「このパケは区別してね」みたいな番号つけて区分けをしてるみたいだけど
sshをよく承知してないんでアレ
……tty周りもよくわかってないわけで、初心者にもほどがある俺
- 753 :デフォルトの名無しさん:2017/03/09(木) 03:15:26.05 ID:HcCF7edF.net
- 今見直したらtypoしてる、どんだけ必死なんだ俺 orz
あってるかどうかわからんけど
・sshが上げたプロセスが子プロセス(su -)した奴を呼んでる
んだけども
・なんでか知らんが親プロセスと子プロセス(su - 後の奴)のstdin/stdout/stderrが直結されてないというか……
出来てるのが一番リクツ通りの気もする(Shellwords#escapeの誤爆が少ない)んでそうしたいんだけど
正直頭悪い俺じゃわかんねえよって状況
- 754 :デフォルトの名無しさん:2017/03/09(木) 03:28:51.38 ID:HcCF7edF.net
- serverspecのエクステのようにsu -cで逃げるのが妥当か
一晩寝てから考えてみる。手があればラッキーだが、見つからなかったらsu -c か orz
idみりゃわかるだろうからアレだが……スレ汚しすまんかった
- 755 :デフォルトの名無しさん:2017/03/09(木) 05:25:26.05 ID:7IyU8nP5.net
- アスペ帰れよ迷惑だよ
- 756 :デフォルトの名無しさん:2017/03/09(木) 11:16:19.74 ID:gEPLYJR/.net
- コマンドと接続元アドレスを限定したauthorized_keysつくって
su経由せずに直接rootでsshしたほうがまし
- 757 :デフォルトの名無しさん:2017/03/09(木) 12:58:35.19 ID:HcCF7edF.net
- >>755
アスペかどうかはしらんが、できんすぎて深夜にヤケ酒飲んでたのは認める
>>756
そりゃ考えてなかった、すまん
とりあえず帰るよ
- 758 :デフォルトの名無しさん:2017/03/09(木) 14:28:12.64 ID:Op4GVNwD.net
- 君のソースコードには、p が1つもない。
まず、すべての行に、「p 変数」と書いて、変数の内容を見る
1. Ruby・OSのコマンドの、どちらに問題があるのか?
Rubyを使わずに、端末からコマンドを実行して、その結果がどのように変わるのか?
2. 君は、リダイレクトを知っているか?
標準入出力・エラーで、標準エラーだけ捨てるとか?
3. まず、ループを使わずに、1回だけ処理して確かめる
まず、問題を切り分けることから、始める。
ループを使うな。
すべての変数を、p しろ
- 759 :デフォルトの名無しさん:2017/03/09(木) 17:08:07.67 ID:RV3LnrPm.net
- 特定のコマンドの入出力が欲しいなら、そのコマンド用のチャネルを作ってねって話じゃないの?
作ってないから、全部引っくるめたシェルの出力が返って来てると言う話に聞こえる。
irb や pry で試行錯誤するのをオススメ。
- 760 :デフォルトの名無しさん:2017/03/09(木) 23:21:24.09 ID:HcCF7edF.net
- >>758
Session#listen_toしてPacket(TCPのパケじゃなくてラッパークラスのことだけど)引っこ抜かないと
on_dataのループを切ってストレートに書けそうにない
>>759
そんな感じ
SSHのchannelに「権限昇格要求」なんてのがないので(あるわけないだろうが)
su - すると、まるっと帰ってくる
たぶんAnsibleとかがsudoでごまかしてた理由はそれなのかもしれないとか気づかされますた orz
- 761 :デフォルトの名無しさん:2017/03/10(金) 05:04:02.17 ID:j91K0HTy.net
- ちょるるびま
- 762 :デフォルトの名無しさん:2017/03/10(金) 16:04:08.04 ID:y8xCqliG.net
- >>760
マニュアルにあるようにexecにブロック渡す形にしてみたら?
http://net-ssh.github.io/net-ssh/classes/Net/SSH/Connection/Channel.html
- 763 :デフォルトの名無しさん:2017/03/10(金) 23:04:00.53 ID:M4dTqrpi.net
- Ruby.2.4, Windows 7 ProでOutlookのフォルダからメールの件名やサイズを
出力しようとしていますが途中でエラーが発生してうまくいきません。
試行錯誤の末、どうもサイズを取ろうとするとダメなようです。
ruby -rwin32ole -e "WIN32OLE.connect('Outlook.Application').GetNameSpace('MAPI')
.GetFolders[1].GetFolders[1].Items.each{|m|p m.Size}"
==>メールのサイズが250行弱ほど表示された後に次のエラーが表示される
「同時に開くことができるアイテムの数が、サーバー管理者によって制限されています。
開いているメッセージを閉じるか、作成中のメッセージから添付ファイルや画像を削除してください。」
スクリプトの最後を p m.Subject に変えれば、件名が全件表示されました。
ググったところ、Exchangeサーバには同時オープン可能オブジェクト数250個までの制限があるらしく、
これに引っかかっているような気がしますが、メールオブジェクトはOpenしていませんし、
ブロック内にm.Closeやm.ole_freeなど追加しても変化ありませんでした。
試しにVBScriptで同じことをやると問題なくすべてのメールのサイズが出力できました。
Rubyで全メールのサイズを出力するにはどうしたらよいのでしょうか?
- 764 :デフォルトの名無しさん:2017/03/10(金) 23:34:36.18 ID:8q2Idz6n.net
- 「ぶっちゃけvbsでよくね?」はダメだよねえ……
ところで、NameSpaceにGetFoldersってメソッドもプロパティもないんだけど、何か書き間違ってない?
https://msdn.microsoft.com/ja-jp/library/office/ff869848.aspx
C:\Users\normal_user>ruby -rwin32ole -e "WIN32OLE.connect('Outlook.Application').GetNameSpace('MAPI').GetFolders[1].GetFolders[1].Items.each{|m|p m.Size}"
-e:1:in `method_missing': unknown property or method: `GetFolders' (NoMethodError)
HRESULT error code:0x80020006
Unknown name.
from -e:1:in `<main>'
- 765 :デフォルトの名無しさん:2017/03/11(土) 00:00:20.83 ID:qyY4K/ii.net
- >>763
メールの件数が250件溜まってないので検証できたのはここまで、あとわかんね
http://ideone.com/3nNRJp
GC.startしないとエラーになるかも、みたいな記述はRubyist Magazineにあったんで
試してみては? くらい
http://magazine.rubyist.net/?0007-Win32OLE
なお、"あなたのアカウント名" ってのは左ペインに出てる一番上のフォルダね、自身の奴を入れて
あーあと別件の話だけど……上のSSHの件だけどfabricもsudoだった orz
fabricでもうまく行かんかったとFAQで書いてたんで、"su -"でなんかするのはたぶんダメそう
- 766 :デフォルトの名無しさん:2017/03/11(土) 00:04:12.40 ID:qyY4K/ii.net
- また酔っぱらって妄言吐くのもアレだから帰るわね……orz
SSHに負けたとかくっくやしいでもビクンビクン
- 767 :デフォルトの名無しさん:2017/03/11(土) 00:06:04.57 ID:sUFiWX+J.net
- Ruby使ってるだけでもうほとんどRubyと関係ない気が…
- 768 :デフォルトの名無しさん:2017/03/11(土) 00:09:17.59 ID:qyY4K/ii.net
- >>767
ですよねー……済まんかった
- 769 :デフォルトの名無しさん:2017/03/11(土) 01:12:17.24 ID:0/u8d9+h.net
- >>765
おお!ありがとうございます。GC.start来週試してみます!!
>>764
GetFoldersじゃなくてFoldersでしたね。手元に環境がなく虚覚えでした。
ちなみになんでVBScript使わないかというと中国語のメール件名のところで落ちるから。
Rubyならコードページ指定してUTF-8で出せるけどvbsでどうやるかわからん
- 770 :デフォルトの名無しさん:2017/03/12(日) 20:24:21.66 ID:PZr7UUWj.net
- MacOSX 10.9
ruby 2.1.10p492
$ gem -v
2.2.5
imagemagickはインストール済。
近デジダウンローダーを使えるように準備する(ImageMagick、RMagickインストール)
ttp://d.hatena.ne.jp/riocampos+tech/20130423/1366702078
近代デジタルライブラリーツールをインストールしたいです。
エラーをどう対処すればいいか教えて下さい。
$ gem install kindai
ERROR: Could not find a valid gem 'kindai' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=error: certificate verify failed (https://api.rubygems.org/latest_specs.4.8.gz)
$ gem install kindai --source https://github.com/hitode909/kindairb
ERROR: Could not find a valid gem 'kindai' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=error: certificate verify failed (https://api.rubygems.org/latest_specs.4.8.gz)
Unable to download data from https://github.com/hitode909/kindairb/ - bad response Not Found 404 (https://github.com/hitode909/kindairb/latest_specs.4.8.gz)
$sudo gem update --system
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
SSL_connect returned=1 errno=0 state=error
- 771 :デフォルトの名無しさん:2017/03/12(日) 22:00:11.19 ID:T4N3k6YJ.net
- >>770
gemのupdateが必要
http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages
- 772 :デフォルトの名無しさん:2017/03/13(月) 00:44:08.05 ID:ONQKgDZ1.net
- 個人的メモ
WindowsでCP932以外を標準出力に出そうとすると例外が発生する場合がある
その場合は
$stdout.binmode
$>.binmode
でいける
- 773 :デフォルトの名無しさん:2017/03/13(月) 08:24:19.79 ID:1hDqBdVd.net
- もやもやする表現だけどまあそれでもいいよ
p で表示したいけど p に変更しにくいという場合は inspect するといいよ
irb> require "open-uri"
irb> puts open("http://www2.2ch.net/ba.gif").read.inspect
"GIF89a<\x00<\x00\x91\x00\x00\xDC\xC0\xA6\xD0\xB3\x9C\xC5\xAD\x99\xB3\x9E\x92!\xF9\x04\x04\x14\x00\xFF\x00...
- 774 :デフォルトの名無しさん:2017/03/13(月) 08:29:05.54 ID:W1YZdZCk.net
- sudo ruby setup.rbでアップデートは出来ました。sslがわかりません。
$ /Users/xxxxxxx/.rbenv/versions/2.1.10/bin/gem -v
2.6.10
$ gem install kindai
ERROR: SSL verification error at depth 2: certificate has expired (10)
ERROR: Certificate /C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA expired at 2014-01-28T12:00:00Z
(中略)
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=error: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
ERROR: SSL verification error at depth 2: certificate has expired (10)
ERROR: Certificate /C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA expired at 2014-01-28T12:00:00Z
エラー:OpenSSL::SSL::SSLError SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed - komiyakの通り道
http://d.hatena.ne.jp/komiyak/20130508/1367993536
ここのURLをみると、SSLがダメなような気がします。
wget http://curl.haxx.se/ca/cacert.pem
ダウンロードするpemはこれでOKですか?
.pemファイルの置き場所はどこでしょうか?
- 775 :デフォルトの名無しさん:2017/03/13(月) 11:58:56.84 ID:5AA5l5ef.net
- eclipseでaptanaプラグイン導入したんだけど
.erbが開けない(開いてもエディター真っ白&タブの所も×しか出ない)
ファイルのメタデータ消したり、プラグインの再インストール、クリーンオプションつけて起動など
全部試したけどダメでした
なので諦めて別の総合環境を用意しようと思うのですが
お勧めありますか?
- 776 :デフォルトの名無しさん:2017/03/13(月) 12:12:07.91 ID:W+gruSmy.net
- emacs
- 777 :デフォルトの名無しさん:2017/03/13(月) 16:55:18.31 ID:h57/U2+3.net
- >>774
>>771のリンクを読む
- 778 :デフォルトの名無しさん:2017/03/13(月) 16:56:17.64 ID:h57/U2+3.net
- >>775
vim
Aptana的なのが好きならRubyMine
- 779 :デフォルトの名無しさん:2017/03/13(月) 22:30:51.79 ID:M0tA2HNG.net
- オフラインでプログラミング勉強出来るソフトって無いですか?
- 780 :デフォルトの名無しさん:2017/03/13(月) 23:43:35.07 ID:26MzLCyo.net
- >>775
emacs + gtags + company + ruby-modeでよくね?
ただしemacsは慣れの問題が大きいので無難にいくならRubyMine
>>779
寡聞すぎて申し訳ないが、rubyに関して聞いたことはない
オフライン限定となると例えば英語学習のパッケージソフトのようなものだとは思うのだが
- 781 :デフォルトの名無しさん:2017/03/14(火) 02:05:32.83 ID:vIMzEjCF.net
- >>779
なぜにオフライン?
- 782 :デフォルトの名無しさん:2017/03/14(火) 02:22:38.90 ID:TeWZrBMH.net
- >>777
読み直します。
rubygems-2.6.10フォルダには、
gem install --local C:\rubygems-update-2.6.10.gem
rubygems-update-2.6.10.gemというファイルがなかったのですが、よくわかりません。
それでsetup.rbしたんですがどいうことでしょうか?
こちらはMacなので、cdして、
gem install --local ./rubygems-update-2.6.10.gem
するつもりでいました。
- 783 :デフォルトの名無しさん:2017/03/14(火) 03:44:56.39 ID:vIMzEjCF.net
- >>782
そのリンクの中に証明書のことも書いてる
↓ココ
If this process does not work for you, you can try manually adding the new certificate.
- 784 :デフォルトの名無しさん:2017/03/14(火) 10:40:26.28 ID:vbV/Jpv3.net
- >>779
VM環境造ってLinuxでもなんでも入れればいい
- 785 :デフォルトの名無しさん:2017/03/14(火) 19:42:19.84 ID:uwd0LNx3.net
- Rubyの不正使用やめろ。もう特許取ってある。
- 786 :769:2017/03/14(火) 21:38:56.63 ID:SNKtw/av.net
- GC.start入れたら動いた。>>765に感謝
- 787 :デフォルトの名無しさん:2017/03/14(火) 21:55:29.07 ID:7FbDjFmR.net
- >>773
そういう話じゃない。今回やりたかったのがRubyの標準出力を別のプログラムの標準入力とする実装
そのためにRubyからUTF-16LEで標準出力に書き出したいけど$stdout.write(str.encode("UTF-16LE"))とかやると
エンコードの変換に関する例外が発生する。-E "UTF-16LE"を付けて起動しても効果ないし悩んだ
- 788 :デフォルトの名無しさん:2017/03/14(火) 22:29:09.72 ID:IhBG87ve.net
- 普通にutf-8にしてれば、コンソールへの出力はユニコードでやってくれるよ
- 789 :デフォルトの名無しさん:2017/03/14(火) 23:04:06.33 ID:TeWZrBMH.net
- 証明書のインストールなんてMacだと誰もやってなさそう。
macとlinuxユーザーの事例を探してみます。rubygemならともかく証明書は自信ないですが、、、
- 790 :デフォルトの名無しさん:2017/03/14(火) 23:23:04.53 ID:fIy9ptuf.net
- Ruby始めて一か月くらいの者です。
Windows10で動く使いやすいエディタって何がありますか?
今はvim使ってます。良いIDEがあったらそれも教えてくれると嬉しいです。
- 791 :デフォルトの名無しさん:2017/03/14(火) 23:28:35.65 ID:XiWkowBn.net
- Emacs
Matzが使ってるんだから間違いない
- 792 :デフォルトの名無しさん:2017/03/14(火) 23:33:15.74 ID:TeWZrBMH.net
- >>790
LinuxやMacなら、nvim軽いですよ。windowsだとインストールできるのかは、よくわかりませんが。
- 793 :デフォルトの名無しさん:2017/03/14(火) 23:53:43.68 ID:TeWZrBMH.net
- neovimね。ごめん。
- 794 :デフォルトの名無しさん:2017/03/15(水) 02:24:50.50 ID:7a+pvu8e.net
- >>790
RubyにIDEは必要ない
VScode (無料 マイクロソフト社製でオススメ プラグインで実行も可能)
Atom (無料 プラグインで実行も可能)
Sublime Text(有料(ゆるめ)プラグインで実行も可能)
RubyMotion(有料 高額(年2万円 次の年から半額)だがRubyに機能が特化)
金が余っているならRubyMotion
無料で使いたいならVScode
- 795 :デフォルトの名無しさん:2017/03/15(水) 02:28:22.29 ID:7a+pvu8e.net
- Linuxで動かすとかでもない限りvimなど今の時代は拷問でしかない。
vim Emacsが良いというのは20年ぐらい前からの懐古厨
今から始めるのは地獄だ
- 796 :デフォルトの名無しさん:2017/03/15(水) 04:14:18.91 ID:FiGu7lnE.net
- RubyMineの間違いでしょ
RubyMotionはIDEでもエディタでもないよ
あとvimやEmacsを理解せずにディスってると
レベル低い人だなって思われるからやめたほうがいいよ
- 797 :790:2017/03/15(水) 07:24:01.81 ID:29+QDQGr.net
- ありがとうございます。
教えてもらったの調べてみます。
わからないことがあったらまた聞きに来ます。
- 798 :デフォルトの名無しさん:2017/03/15(水) 08:08:28.82 ID:ivuMTyd+.net
- vi文化圏のサポートなしにvim系列を使うのはエディタそのものの修行だと思う
それこそ超機能エディタとしてはせいぜいEmacs程度でよろしいのではないですかね
- 799 :デフォルトの名無しさん:2017/03/15(水) 09:16:38.88 ID:LExN6Gy2.net
- emacsもvimも両方使ってるけど難しさは同じだよ。
- 800 :795:2017/03/15(水) 09:24:35.18 ID:7a+pvu8e.net
- >>796
理解した上での大ディスりでーすwww
- 801 :デフォルトの名無しさん:2017/03/15(水) 09:27:20.73 ID:7a+pvu8e.net
- 前提でOSがウィンドウズ10と書いてあるし
自分もOSがLinuxでない限りと書いておいた
キチンと読んだ?
ちなみにMacOSはLinuxの仲間です
- 802 :デフォルトの名無しさん:2017/03/15(水) 09:33:12.05 ID:LExN6Gy2.net
- 俺はvimをwindowsで使ったことないけどどんな拷問が待ち受けてるんだ?
windowsでemacsは快適に動いているから想像がつかないんだけど。
- 803 :デフォルトの名無しさん:2017/03/15(水) 09:35:02.16 ID:7a+pvu8e.net
- 訂正
RubyMine Ruby、Ruby on Rails用の統合開発環境。年あたり2万円継続利用で割引あり
RubyMotion iOS, OS X アプリケーションを Ruby で開発することが出来るツール集
- 804 :デフォルトの名無しさん:2017/03/15(水) 09:48:08.27 ID:7a+pvu8e.net
- まずVimやEmacsを使うと
Vim派とEmacs派の宗教戦争に巻き込まれる。
- 805 :デフォルトの名無しさん:2017/03/15(水) 09:55:12.29 ID:7a+pvu8e.net
- プラグイン管理するのに疲れる
バージョンアップ時で動かなくなるとか当たり前
でも懐古厨のかたがたはそれが楽しいと言い張ります
設定だけで1日が潰れる
なんやかんやと自分好みのエディタに育てるのに
細かい設定が必要です
そんな細かい設定をするだけで1日が簡単に潰れます
さらに凝るとトータルで1週間はきえます。
- 806 :デフォルトの名無しさん:2017/03/15(水) 09:57:23.49 ID:7a+pvu8e.net
- 見ていろよ?
これからゼッテーウザイ反論が来るからな。
- 807 :デフォルトの名無しさん:2017/03/15(水) 10:20:44.62 ID:LExN6Gy2.net
- プラグイン管理ツール使えば簡単なだけど、
vimもemacsも初期設定のまま使いやすいし、
初期設定で文字の色も変わるし、
難しいことは一つも無いだろ。
- 808 :デフォルトの名無しさん:2017/03/15(水) 11:33:41.40 ID:7ejgHr5h.net
- ID(が同じであること)は嘘をつかないねえ
- 809 :デフォルトの名無しさん:2017/03/15(水) 14:47:55.27 ID:14AAxgXM.net
- 初心者ならSublimeText3でいいじゃな〜い
- 810 :デフォルトの名無しさん:2017/03/15(水) 15:56:24.87 ID:LExN6Gy2.net
- 金持ちならね
- 811 :デフォルトの名無しさん:2017/03/15(水) 16:06:08.58 ID:FiGu7lnE.net
- >>800
そう、理解してると思ってたんだね
まあがんばってね
- 812 :デフォルトの名無しさん:2017/03/15(水) 17:29:20.54 ID:7a+pvu8e.net
- >>811
ほらな 直接文句を言わないで
お前はわかってない でも俺は分かってるみたいな
うざい反論きただろwww
- 813 :デフォルトの名無しさん:2017/03/15(水) 19:44:15.75 ID:I3jOPMQC.net
- visual studio codeでrubyのデバッグできるようにする所までは出来たが、visual studio codeの使い方自体がよく理解できない
- 814 :デフォルトの名無しさん:2017/03/15(水) 22:13:52.57 ID:PJ2PEyAJ.net
- こういうおかしなアンチが沸くということは、それだけ人気があるということだね
- 815 :デフォルトの名無しさん:2017/03/17(金) 13:18:27.19 ID:v2q/v/ih.net
- Ruby on Railsの参考書を探しているのですが、Ruby2.3、RoR5が出ている現在、RoR4の本だと参考にならないでしょうか?
他言語の本を買った時にサンプルが動かない事があって、原因を調べて見たらコードで使われている関数が最新バージョンで廃止されていたことがありました…
RoR5とRoR4に大きな差がなければ選ぶ参考書に幅が出来るので、教えていただきたいです
- 816 :デフォルトの名無しさん:2017/03/17(金) 13:24:50.86 ID:ol/nseXL.net
- それも自分で判断できるようになって一人前
- 817 :デフォルトの名無しさん:2017/03/17(金) 14:44:25.24 ID:WXrRqPqu.net
- >>815
RoRは絶妙に板違いなのであんまり期待しないでくれ
そもそも動かしたい実環境でRoR5が動作可能なのか、そもそもバージョン選べるのか(固定だったりしないか)というとこから調べないといかんよ
俺ならRoR4で環境自力で固定してRoR4を勉強してそれなりの練度になったら5に手を出すっていうようにするかな
- 818 :デフォルトの名無しさん:2017/03/17(金) 16:53:30.74 ID:s/x5RoqH.net
- プログラミング何からやろうと思って最初cの世界に入ろうと思ったけど、rubyの方が簡単でやってて楽しいわ
でも最初に作るプログラムがコンピュータ将棋ってキツイかな?
- 819 :デフォルトの名無しさん:2017/03/17(金) 23:52:09.50 ID:v2q/v/ih.net
- >>817
RoRは板違いだったんですね、失礼しました。いろいろ調べてみます。ありがとうございました
- 820 :デフォルトの名無しさん:2017/03/18(土) 02:06:24.72 ID:y7G0AfaN.net
- Railsスレはこっちだな
【RoR】Ruby on Rails Part20©2ch.net
http://tamae.2ch.net/test/read.cgi/php/1474523013/
多分専門スレの方が詳しい
- 821 :デフォルトの名無しさん:2017/03/18(土) 17:18:44.82 ID:y7G0AfaN.net
- CUIベースで育成シミュレーションゲーム作り始めたけど楽しいな
ここからGUIベースに持って行くのが大変だけど
dxrubyとかruby/tkとか考えてたけど、いっそRoRで無理矢理実装した方が良いのかな
- 822 :デフォルトの名無しさん:2017/03/18(土) 17:42:47.26 ID:6cW+qOXP.net
- RoRで進めて、表現力に限界を感じたら必要に応じてJavaScriptに移していけばいいんじゃない?
誰も使ってないツールは覚えるのも大変だし覚えたところで価値ないよ
- 823 :デフォルトの名無しさん:2017/03/18(土) 17:47:31.86 ID:y7G0AfaN.net
- >>822
了解、RoRの方が資料も多いしやってみるわ
まだテキストベースだしRoRの機能だけでも充分できるはず
簡単な画像を出す程度ならRoRの方が簡単に出来るっぽいし
何か凄いできる気がしてきたぞ、頑張ろう
- 824 :デフォルトの名無しさん:2017/03/19(日) 03:05:59.90 ID:MM3vmS8Q.net
- >>815-817
改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015
この本が最も簡単。
Rails5への変更点は、webで調べる
- 825 :デフォルトの名無しさん:2017/03/19(日) 18:01:07.25 ID:Ixhubo3y.net
- ハッシュ同士の数字を同時に合計する方法ってありますか?
status = { 'hp' => 100,'mp' => 20,}
training = { 'hp' => 15,'mp' => 20,}
これを合計して
status = { 'hp' => 115,'mp' => 40,}っていう風にしたいです
status['hp'] += training['hp']
status['mp'] += training['mp']
これでも一応出来るのですが、ステータスの項目が増えた時に厄介になりそうだったので……
なんか良い感じにすっとまとめられると嬉しいです
- 826 :デフォルトの名無しさん:2017/03/19(日) 18:26:21.77 ID:2SWTCnbx.net
- irb(main):001:0> status = { 'hp' => 100,'mp' => 20,}
=> {"hp"=>100, "mp"=>20}
irb(main):002:0> training = { 'hp' => 15,'mp' => 20,}
=> {"hp"=>15, "mp"=>20}
irb(main):003:0> [status, training]
=> [{"hp"=>100, "mp"=>20}, {"hp"=>15, "mp"=>20}]
irb(main):004:0> [status, training].map.with_object({}){|x,o| x.each{|k,v| o[k]=(o[k] or 0)+v}}
=> {"hp"=>115, "mp"=>40}
- 827 :デフォルトの名無しさん:2017/03/19(日) 18:26:50.22 ID:/GixBrkM.net
- プログラミングはとりあえずは魔法ではないのでとりあえず現時点では「すっと」まとめようとすんな
なんか長くても坭臭そうでもとりあえず動くやつを目指すのがいい(カッコよくするのはそのあとでいい)
んでRubyにはイテレーションと呼ばれる機能がある
配列をeachするやつと言えばわかってもらえるだろうか
Rubyでデータをなんとかしたいと考えた場合はとりあえず配列やハッシュをeach(の仲間)でぐるぐるできないかをまず考える
def powerup(orig, add)
add.each_key do |name|
if orig.has_key? name then
orig[name] = orig[name] + add[name]
else
raise "orig has no key: #{name}"
end
end
end
orig1 = {'hp' => 100, 'mp' => 50, 'str' => 35, 'dex' => 20}
add1 = {'hp' => 10, 'mp' => 5, 'str' => 4, 'dex' => 2}
powerup(orig1, add1)
p orig1
orig2 = {'hp' => 100, 'mp' => 50, 'str' => 35, 'dex' => 20}
add2 = {'hp' => 10, 'mp' => 5, 'str' => 4, 'int' => 4}
powerup(orig2, add2)
p orig2
実行結果:
>ruby tesuto.rb
{"hp"=>110, "mp"=>55, "str"=>39, "dex"=>22}
tesuto.rb:6:in `block in powerup': orig has no key: int (RuntimeError)
このメソッドは引数内容を書き換えてて気持ち悪いんだけどそのへんの処遇は任すよ
- 828 :デフォルトの名無しさん:2017/03/19(日) 18:33:22.87 ID:Ixhubo3y.net
- >>827
eachを作って繰り返せば良かったのか
メソッドもまだ全然作れてなかったけど、こういうのを見ると作った方が
良い感じにまとまるのがよく分かりました
参考にしていっちょ頑張ってみます
- 829 :デフォルトの名無しさん:2017/03/19(日) 18:41:48.96 ID:Ixhubo3y.net
- >>826
こっちも参考になりました、ありがとうです
もうちょっとeachとかイテレーションについて勉強します
- 830 :デフォルトの名無しさん:2017/03/19(日) 20:06:43.66 ID:9p9UL1lk.net
- Hashのキーの並びが同一な前提なら
status.zip(training).map {|s, t| [s[0], s[1] + t[1]] }.to_h
動かしてないから構文エラーあったら適当になおしてください
- 831 :デフォルトの名無しさん:2017/03/19(日) 20:18:01.11 ID:bf5e5QFj.net
- 初心者スレはてめえのコードゴルフスレじゃねえって昔から言われてるだろ
- 832 :デフォルトの名無しさん:2017/03/19(日) 22:42:11.93 ID:PzBVy4ls.net
- inject厨が書いてみた
http://ideone.com/vuAQat
>>831
初心者スレに限らず、各自が最良と考えるコードを自由にカキコすればいいのでは
その寛容性が Ruby の特質ではないかと思われ
そもそも昔から「論よりコード」が Ruby だから
- 833 :デフォルトの名無しさん:2017/03/19(日) 22:51:27.15 ID:FcfIq+bG.net
- 将棋ソフト作ってたらcase文まみれになってしまった
便利なんだよなぁ・・・
- 834 :デフォルトの名無しさん:2017/03/19(日) 23:04:32.00 ID:MM3vmS8Q.net
- >>825
status, training は、DBのレコードのように、同じ構造だろ
class, struct に定義して、インスタンスを作ればいい
- 835 :デフォルトの名無しさん:2017/03/20(月) 01:08:33.30 ID:rg36xICz.net
- >>825
p [status, training].map(&:to_a).flatten(1).inject(Hash.new(0)) {|h,(k,v)| h[k] += v; h}
p [status, training].map(&:to_a).flatten(1).inject({}) {|h,(k,v)| h[k] = v + (h[k] || 0); h}
- 836 :デフォルトの名無しさん:2017/03/20(月) 07:01:02.68 ID:Lni7W/zQ.net
- >>832
>>835
関数型っぽいコードを書くならブロック内で副作用はNG
意識高い系気取りたいなら頭に留めといたほうがいい
- 837 :832:2017/03/20(月) 09:54:59.69 ID:Ia6BH4Hf.net
- >>836
>>832 では意識的に副作用の無い、いわゆる関数型プログラミングと
呼ばれるスタイルでコードを書いたつもりだったから驚いた
では、>>832 のどこで副作用が生じているか具体的に指摘を願う
- 838 :デフォルトの名無しさん:2017/03/20(月) 10:06:26.39 ID:RgF3Qd7a.net
- >>837
よく見てなかったわ
失礼した
- 839 :デフォルトの名無しさん:2017/03/20(月) 10:41:05.35 ID:37uth8Sm.net
- >>825
merge にブロック渡す
- 840 :デフォルトの名無しさん:2017/03/21(火) 00:51:21.09 ID:kYeHwX6T.net
- >>825
ワンライナーにこだわるなら inject がベターだけど
パッとみわかりづらいかも(初期値に足し込むメソッドをサポートしてる言語はあまりない)
ハッシュも増えるしkeyも増える、けれども可読性取る、みたいなのならザックリこんくらい?
http://ideone.com/hbBxJg
- 841 :デフォルトの名無しさん:2017/03/21(火) 01:16:54.22 ID:kYeHwX6T.net
- >>833
……きこえますか……>>833……ID:kYeHwX6Tです……
今……あなたの……心に直接呼びかけています……
https://docs.ruby-lang.org/ja/latest/class/Method.html を見るのです……
関数テーブルを使えばどんだけ条件を増やしてもすっきりすると思うです……
- 842 :デフォルトの名無しさん:2017/03/21(火) 01:29:52.83 ID:kYeHwX6T.net
- >>840見直したが、ワンライナーのほうがよかったんだろうか
ちょっとstatusを基準にresultハッシュにキーと初期値0を植えこみ、あとはresultに植え込んだキーで
全てのハッシュをナメるのは泥臭いってかカッコ悪い気がしてきた
- 843 :デフォルトの名無しさん:2017/03/21(火) 01:39:36.31 ID:U/FngKJK.net
- >>841
はぁ・・・はぁ・・・クラスの使い方もわからない俺には何書いてるかさっぱりわからない・・・
理解出来るように努めますありがとうございます
- 844 :デフォルトの名無しさん:2017/03/21(火) 01:44:51.99 ID:kYeHwX6T.net
- >>843
ザックリいってしまうと……
[
[値がxxxなら, xxxメソッドをcallします]
[値がyyyなら, yyyメソッドをcallします]
#あとは好きなだけメソッドを追加するのです……
]
って配列が作れるのです……case文のような長々がなくなるのです……
- 845 :デフォルトの名無しさん:2017/03/21(火) 05:48:32.69 ID:08F14n66.net
- >>844
なるほど、わかりませんね・・・
ごめんなさい、分かるまでROMります
ありがとうございました・・・
- 846 :デフォルトの名無しさん:2017/03/21(火) 07:35:21.10 ID:0zsWCCNl.net
- 教条主義に走らず本質を見よう。
一般にプログラムで明示的な多分岐が好ましくないとされるのは、分岐先を追加・削除したら
ソースコード上離れた場所にある分岐条件の部分もあわせて弄らないといけないため。
>>844みたいにマッピングを手書きするんなら結局その問題の解決にはならない。
hoge_条件 みたいなメソッド名のルールを決めておくとか、明示的なマッピングを避けるやり方は工夫次第で色々あるが
まずは上記の問題が本当に自分にとって問題になっているのかどうかを検討した方がいい。
よほど分岐先が多くて条件が頻繁に変更されるような場合でない限りは
複雑さを持ち込むのに見合った利益はない。
- 847 :デフォルトの名無しさん:2017/03/21(火) 12:50:38.21 ID:4yqL1pKD.net
- こんなのメンテとか出来ないから
大量のcase文で書いてもらったほうが正義だよ。
- 848 :デフォルトの名無しさん:2017/03/21(火) 12:59:49.18 ID:noGMvElA.net
- 初心者スレなんだから脱初心者のへんの人がいるのは当たり前だろーが
なんでもかんでもまとめる人
メタプログラミング大正義な人
それ自体が悪いなんてことは言わんが他人に勧めるものではないわな
- 849 :デフォルトの名無しさん:2017/03/21(火) 16:57:10.24 ID:s3sHu6KL.net
- ruby入門者です。
win7-64bitです。
http://jiji.unageanu.net/
これを試してみたくて、
http://rubyinstaller.org/downloads/archives
ここから、Ruby 1.8.7-p374をインストールしました。
コマンドプロンプトで、>irb
irb(main):001:0>
となりました。
> バージョン1.3.3以降
> ※ActiveScriptRubyには標準で添付されていますが、バージョンが古いようなので以下の操作を別途実行しておく必要があります。 $ gem install rubygems-update
> $ update_rubygems
> $ gem install rake
> $ gem install rspec
> $ gem install cucumber
> $ gem install hoe
と書いてあるので、
irb(main):002:0> $ update_rubygems
と打つと↓になってしまいます。 どうすればいいでしょうか?
SyntaxError: compile error
(irb):2: syntax error, unexpected $undefined
$ update_rubygems
^
from (irb):2
from :0
irb(main):003:0>
- 850 :デフォルトの名無しさん:2017/03/21(火) 17:08:50.75 ID:9aUURWE3.net
- >>849
結論だけ言えばコマンドプロントでirbを入れる必要がない
https://www.ruby-lang.org/ja/documentation/quickstart/
irbはその場でrubyのコマンドを試せるモードみたいなもの
だからその状態だとgemコマンドが使えない
update_rubygemsがしたいならコマンドプロント開いてすぐの状態で打ち込まば良い
- 851 :デフォルトの名無しさん:2017/03/21(火) 17:09:10.71 ID:jV0Y+t/Y.net
- rubyの中で実行するものとシェルで実行するものを区別しよう
それから$はプロンプトだから打ち込まないで
- 852 :デフォルトの名無しさん:2017/03/21(火) 20:25:07.08 ID:wMSmjxpw.net
- シェル・コマンドプロンプト・端末は、自分が入力したコマンドを、OSが実行するもの。
Rubyとは無関係
irbは既に、irbというアプリを実行していて、そのアプリ内で、何か処理を行っているだけ
まずOSと、単なるアプリである、Rubyを区別すること
- 853 :デフォルトの名無しさん:2017/03/22(水) 01:30:39.56 ID:+sTx0NJt.net
- >>849
Rubyでシステムトレードの本があるが
中はしっかりしているらしいからよくオススメ本になっているよ
- 854 :デフォルトの名無しさん:2017/03/22(水) 02:55:17.38 ID:LmLHyM9x.net
- >>847
まぁ関数テーブルは基本、caseが10とか20とか100とか200になるのが
予想できるのでもなければ使わんからな……
例: ショボいインタープリタ書いてるとか、将棋で条件が20だか以上までぶっとんだか
- 855 :デフォルトの名無しさん:2017/03/22(水) 05:24:24.80 ID:Lizg5cCe.net
- メソッド作って使える:何となく分かる
でもクラスがよく分からん……
例見てもどういう場面で活躍するのか今一想像できない
- 856 :デフォルトの名無しさん:2017/03/22(水) 06:11:33.61 ID:G9O6oaJL.net
- わからんのならまだ使わなくていい
というか、使ってはいけない
どうせ外部に出すプログラムではないのだろう
- 857 :デフォルトの名無しさん:2017/03/22(水) 06:33:48.23 ID:z6uoiSzy.net
- >>855
オブジェクト指向は原理主義者を恐れずにいえば
手続き型言語において、こういう風にプログラムを構成すればうまくいく、という経験則を
パターンとして言語に取り込んだものなので、実際うまくいかないことを経験しないと有難味を理解するのは難しいかも
グローバル変数や引数が激増して破綻してから、
オブジェクト指向を使うことでなぜ破綻しにくくなるのかという観点で他の人のコードを見て学ぶのが一番いいと思うよ
- 858 :849:2017/03/22(水) 08:39:02.52 ID:3MOry1VM.net
- >>850-853
レスありがとうございます。
でも、なんだか理解出来ません。
>それから$はプロンプトだから打ち込まないで
この情報が役に立ちました。 ありがとうございます。
で、また教えて欲しいのですが、
1、「gemはrubyをインストールすることによって使用可能になるのコマンドだ」でいいでしょうか?
2、rubyをインストール後、外部から持ってきたソースを実行するには、そのファイルをドコに置き、何というファイルをクリックすればいいのでしょうか?
- 859 :849:2017/03/22(水) 08:59:50.83 ID:3MOry1VM.net
- ああ、つまり、
「.rbファイルをクリックすると、そのプログラムが実行される」
で、いいのでしょうか?
- 860 :849:2017/03/22(水) 09:10:18.02 ID:3MOry1VM.net
- jiji setting や jiji start というコマンドがあるのですが、
これって、jijiフォルダの中に、
settingファイルや startファイルがある、ではないのでしょうか?
- 861 :849:2017/03/22(水) 09:19:20.23 ID:3MOry1VM.net
- コマンドプロンプトから、jiji setting や jiji startという命令が来た場合、
その命令を解釈実行するファイルがどこかにありそうな気がするのですが、そんなファイルはないでしょうか?
- 862 :デフォルトの名無しさん:2017/03/22(水) 15:05:32.68 ID:mdyqPZUS.net
- >>849
ちらっとそのページ見たけど、内容が古すぎる。
今時、1.8.7の環境(それもWindows)で、うまく動くかどうかわからんぞ。
ソースが公開されているが、7,8年前に開発が終わってる。
https://github.com/unageanu/jiji/tree/master
素直にこれにしとけよ。
http://jiji2.unageanu.net/
- 863 :デフォルトの名無しさん:2017/03/22(水) 15:58:41.20 ID:vhfzvoEm.net
- >>858
1.「gemはrubyをインストールすることによって使用可能になるのコマンドだ」
-->はいそうです
gemはパッケージマネージャでパッケージ化されたrubyのプログラムのインストール等に使う
またパッケージ化されたrubyのプログラムのことをgemと呼ぶこともある
2. rubyをインストール後、外部から持ってきたソースを実行するには…
-->物による
コマンドラインツールの場合、例えばrakeならgem install rakeが完了すればコマンドプロンプトからrakeと叩けば動く
rubyのプログラムの中で使うためのライブラリの場合は動かない
jiji settingやjiji startというコマンドはjijiというコマンドラインツールがあってsettingやstartはそのサブコマンド
サブコマンド別に.rbファイルを作ってることもあればそうでないこともあるのでソースを見たければまずjijiの中身を見る
3.「.rbファイルをクリックすると、そのプログラムが実行される」
.rbファイルはrubyのソースコードが書いてるファイルなので、ruby some.rb と叩いてrubyに読み込ませれば実行できる
ファイル内にrubyで実行することを明示した記述がありファイルの実行権限が付与されていてそのファイルにパスが通っていれば
some.rbと叩くだけで実行可能
(gemやrakeはgem.rbやrake.rbではなくgemやrakeというファイル名になのでgemとかrakeとか叩くと実行される)
アプリじゃなくrubyでやりたいならgemについての記述のあるrubyの入門書を一冊買って読むのを勧める
- 864 :デフォルトの名無しさん:2017/03/23(木) 01:03:11.46 ID:1ihf95/e.net
- 文字列からブロックを作り出すにはどうしたら良いのでしょうか?
具台的はhashのsort_byに渡す処理を文字列として記載して、それを実行するイメージです
hash_val={'a'=>1,'b'=>2}
block_str='|k,v|v'
でhash_val.sort_by()をblock_strを使って行う方法を知りたいです。
これを行う関数を作るのが最終的にしたいことです
functin(hash_val,block_str)で返り値はsort_byの結果をつくるにはどうしたら良いかというものです
- 865 :デフォルトの名無しさん:2017/03/23(木) 01:13:31.16 ID:iwKD8Hm6.net
- >>864
Kernel#eval あたりかなあ
ごめんいま酒入ってるから検証不能 orzA: [0.092736 sec.]B: [1.168932 sec.]
- 866 :デフォルトの名無しさん:2017/03/23(木) 01:14:19.71 ID:iwKD8Hm6.net
- うーん、この A:[xxxx sec]B: [xxxx sec]は酔っぱらって連投したら出るんかね、めんどいな →A: [0.093431 sec.]B: [0.461032 sec.]
- 867 :デフォルトの名無しさん:2017/03/23(木) 01:16:56.31 ID:uMFW1qqt.net
- prc = eval "proc { #{block_str} }"
hash_val.sort_by(&prc)A: [0.092548 sec.]B: [1.168777 sec.]
- 868 :デフォルトの名無しさん:2017/03/23(木) 01:24:45.12 ID:mxf1LURC.net
- evalだね
sort関数を文字列で定義したいケースってどういう時なのか興味あるA: [0.091699 sec.]B: [0.456793 sec.]
- 869 :デフォルトの名無しさん:2017/03/23(木) 01:25:50.41 ID:mxf1LURC.net
- なにこれはじめて→A: [0.092033 sec.]B: [0.456231 sec.]
- 870 :デフォルトの名無しさん:2017/03/23(木) 01:40:50.46 ID:iwKD8Hm6.net
- てすと
- 871 :デフォルトの名無しさん:2017/03/23(木) 01:42:01.69 ID:iwKD8Hm6.net
- あー、中の人がリアルタイムでイジってて、なんかシクったんだろう
気づいて直したんだからセーフでそ
世界を全部コントロールできるなんてのは幻想なんだろうや、俺はもうあきらめてるよ
- 872 :デフォルトの名無しさん:2017/03/23(木) 02:27:22.99 ID:RevR4EA/.net
- この本を読む。
メタプログラミング Ruby 第2版、2015
メタプログラミングRuby イディオム・黒魔術一覧
http://tbpgr.hatenablog.com/entry/20130613/1371143345
define_method とか、
クリーンルーム・コンテキスト探査機は、instance_eval
リフレクション
eval、instance_eval、class_eval
- 873 :デフォルトの名無しさん:2017/03/23(木) 02:47:04.81 ID:iwKD8Hm6.net
- >>872
instance_evalは個人的にすげぇ好きなんだけど、普通あんま使わねぇと思う
ゴーストメソッド並みに
何のDSLなんだよ状態というか、Rakefile二号というか…… orz
わりとサパっと書けてしまうのがrubyの利便性よね
- 874 :デフォルトの名無しさん:2017/03/23(木) 02:55:21.14 ID:iwKD8Hm6.net
- 先先日のSSHの件はとりあえずなんとかしますた。
SSH多段接続に使うProxyComand/ProxyJump(Net::SSH 4.1.0でサポート)は無理
俺が使いたい機能の範囲を超えた
ProxyJumpって鍵認証サポートしとるんすか? とか、全部に同じ鍵撒かんとダメぽくね? とか
考えるのがつらくなってきたよ……
やってみるとSSHは奥深し。俺ぁここらで撤退するお。
- 875 :デフォルトの名無しさん:2017/03/23(木) 08:23:28.11 ID:cbUpLCW6.net
- >>872
その本英語版だけど読んだよ。
スペルって書いてあったけど日本語だと黒魔術って言うんだな。
- 876 :849:2017/03/23(木) 08:44:39.65 ID:uU/dK4ok.net
- >>862-863
ありがとうございます。
とりあえず『Rubyではじめるシステムトレード』を見てみます。
- 877 :849:2017/03/23(木) 11:32:13.65 ID:uU/dK4ok.net
- http://uxmilk.jp/22830
ここを参考にして、
require 'open-uri'
url, filename = "http://2ch.net/","111.txt"
open(url) do |file|
open(filename, "w+b") do |out|
out.write(file.read)
end
end
を、
test1.rb
というファイルに書きました。
test1.rbをaaaaフォルダに置き、ダブルクリックしました。
一瞬、コマンドプロンプトが立ち上がりすぐに消えてしまうだけで、
aaaaフォルダに111.txtがあらわれませんません。
ドコが悪いのでしょうか?
- 878 :デフォルトの名無しさん:2017/03/23(木) 12:10:49.06 ID:cbUpLCW6.net
- url, filename = "http://2ch.net/";,"111.txt"
ここが変
- 879 :849:2017/03/23(木) 12:22:18.71 ID:uU/dK4ok.net
- >>878
レスありがとうございます。↓でもダメでした。
url = "http://2ch.net/"
filename = "111.txt"
- 880 :デフォルトの名無しさん:2017/03/23(木) 12:26:14.46 ID:cbUpLCW6.net
- >>879
俺の環境ではそれでうごいたよ。
エラーを見たいならコマンドプロンプトだけで立ち上げて
test1.rbを実行してみるといいよ。
windowsならtest1.rbのあるフォルダから、ファイル→コマンドプロンプトを開く→コマンドプロンプトを開くを
メニューから選ぶといいよ
- 881 :デフォルトの名無しさん:2017/03/23(木) 12:30:59.47 ID:1UBjMcMh.net
- >>877
そりゃOS側の問題だ
コマンドプロンプトから実行してそして終了したら
同時にウィンドウも閉じる仕様だから
- 882 :849:2017/03/23(木) 12:50:27.09 ID:uU/dK4ok.net
- >>880-881
ありがとうございます。
私の環境でも出来ました。
test1.rbファイルを置いたフォルダ名を
'open-uri'としたのがいけなかったみたいですw
open-uriとしたら正常に動きました。
- 883 :デフォルトの名無しさん:2017/03/23(木) 12:54:40.43 ID:cbUpLCW6.net
- "http://2ch.net/","111.txt" がクロームでみると文字化けするんですけど
間に . が入る
最新50からみると文字化けするけどトップからだと文字化けしない。
- 884 :デフォルトの名無しさん:2017/03/23(木) 13:10:42.63 ID:uMFW1qqt.net
- >>874
外してたらごめんやけど
そういうのはssh-agent, agent forwardingの領域でrubyで解決する問題じゃない。
- 885 :849:2017/03/23(木) 13:18:58.68 ID:uU/dK4ok.net
- ruby本体のフォルダに
open-uri.rbというファイルがあります。
私としたら、
FXのサイトにrubyではなくIEを使ってアクセスしてると思われたいのです。
で、
open-uri.rbをいじれば、FXのサイトに「IEを使ってアクセスしている」と偽装可能でしょうか?
- 886 :デフォルトの名無しさん:2017/03/23(木) 13:23:26.78 ID:1Qddb7ZO.net
- どこまでこのモチベーションが続くのか、ちょっと興味がある。
- 887 :デフォルトの名無しさん:2017/03/23(木) 13:29:31.97 ID:zvUDs3dx.net
- >>886
まだ表示してんのか
物好きだな
- 888 :849:2017/03/23(木) 14:21:23.28 ID:uU/dK4ok.net
- >>886
その気持は俺もあって、
1、学校で奴隷のようにプログラミング言語を仕込まれる
2、〜〜のソフトを作りたいという欲が上達の近道
って2つあるけど、
1、のルートしかないのかな?って思う今日この頃なんだよねwww
- 889 :デフォルトの名無しさん:2017/03/23(木) 15:29:43.02 ID:dnzxf4sO.net
- irbで
> 1/2
=> 0.5
となるようなオプションってあります?
- 890 :デフォルトの名無しさん:2017/03/23(木) 15:42:26.17 ID:3KgHIgrA.net
- 1/2.0
- 891 :デフォルトの名無しさん:2017/03/23(木) 16:12:02.19 ID:zvUDs3dx.net
- >>889
irbはRubyの対話実行環境であって電卓ではない
Rubyとしての挙動に不満で電卓のように使いたければ電卓を使え
WindowsならSCAPとかいろいろあるぞ
ttp://www.vector.co.jp/magazine/softnews/020309/n0203092.html
回避法としては
・どっちかを浮動小数点にする
> 1.0/2
> 1/2.0
・割り算はMath#fdivを使うことにする
> 1.fdiv(2)
=> 0.5
・非推奨ライブラリmathnをrequireして分数にしてもらう
> require 'mathn'
> 1/2
=> (1/2)
- 892 :デフォルトの名無しさん:2017/03/23(木) 16:15:37.54 ID:zvUDs3dx.net
- ……。違うな。Numeric#fdivか。すまんね
- 893 :デフォルトの名無しさん:2017/03/23(木) 17:55:59.42 ID:dnzxf4sO.net
- >>890
それが面倒なんで聞いた次第
>>891
電卓代わりに使いたいんだよね
>>892
> 1.class
=> Fixnum
Fixnumでは
とりあえずオプションはなさそうなので
http://stackoverflow.com/questions/9745122/how-can-i-redefine-fixnums-plus-method-in-ruby-and-keep-original-function
を参考にすることで自己解決しました
- 894 :デフォルトの名無しさん:2017/03/23(木) 18:31:44.34 ID:dbie/DTi.net
- 電卓代わりに使うならrequire 'mathn'して内部ではRational使って計算精度たかめつつ、
.irbrcをいじってRationalを表示するときに小数に変換して表示するのがおすすめ
- 895 :デフォルトの名無しさん:2017/03/24(金) 00:37:05.54 ID:8SSjzg+S.net
- >>883
.rb ファイルを、TeraPad などのエディタで開いて、BOMなし UTF-8(UTF-8N)で保存する
コマンドプロンプトよりも、PowerShell_ISE の方がいい。
どちらも文字コードを、UTF-8にしておく
ブラウザなどweb関係では、すべてのファイルの文字コードは、UTF-8で統一しておく
>>885
ブラウザ種別は、JavaScriptの、window.navigator.userAgent;
で判別しているかも。
そこを偽装すれば、出来るかも
ただし相手が、modernizr を使って、ブラウザの機能をテストして判別していれば、
userAgent を偽装しても仕方ない
- 896 :デフォルトの名無しさん:2017/03/24(金) 01:04:59.05 ID:LvaD/h2O.net
- Ruby2.x系に対応したレシピブックって無いんですか……
Rubyレシピブック第3版が2010年で止まってるので困ってます
- 897 :デフォルトの名無しさん:2017/03/24(金) 14:52:34.07 ID:HIpLSJu0.net
- pythonくっくぶっく読め
- 898 :849:2017/03/24(金) 15:44:03.65 ID:/hN+XEZl.net
- >>895
レスありがとうございます。
modernizr.jsというのがあるんですね。
勉強になります。
なんでも、FiddlerCoreというのがあって、それでブラウザに出入りするすべての情報が見られるらしいんです。
- 899 :デフォルトの名無しさん:2017/03/24(金) 15:56:31.78 ID:suDsBIm1.net
- >>897
それ訳書は2005年版だぞ
- 900 :デフォルトの名無しさん:2017/03/24(金) 18:08:31.51 ID:enVRLviO.net
- >>896
最新の情報を追っていきたいなら
Pythonに言語を変えるべき
- 901 :デフォルトの名無しさん:2017/03/24(金) 19:02:13.41 ID:LoToasEt.net
- そうだねRubyはもうオワコン…
- 902 :デフォルトの名無しさん:2017/03/24(金) 20:10:01.69 ID:87HMKY7E.net
- seleniumでchromedriverのコマンドプロンプトが出て邪魔なんだけど
消す方法ないですか?
しらべたらC#しか出来ないみたいなので教えてください。
- 903 :デフォルトの名無しさん:2017/03/24(金) 20:43:09.91 ID:9VMQOfeX.net
- 解決する必要のない問題
SeleniumはDockerで動かすものだと思ってる
- 904 :デフォルトの名無しさん:2017/03/24(金) 22:08:47.90 ID:PYtcfDaS.net
- rubyが動いてるのとは別のプロンプトが出るの?
- 905 :デフォルトの名無しさん:2017/03/24(金) 23:25:24.42 ID:87HMKY7E.net
- rubywでやるとプロンプトがでるの
rubyでやるとrubyのプロンプトしかでないの
- 906 :デフォルトの名無しさん:2017/03/25(土) 00:07:50.04 ID:w1qI1jrD.net
- ではrubyでやればよいのでは?
- 907 :デフォルトの名無しさん:2017/03/26(日) 01:11:17.34 ID:9bRE2FVy.net
- ruby用にmacが欲しい
なんでwindouwsだと環境構築こんなに面倒になってしまったんですかね
rbenvも使えないし
- 908 :デフォルトの名無しさん:2017/03/26(日) 01:47:38.74 ID:520b61Y6.net
- >>907
Windowsはもともとそんなもんだから
Rubyに限った話ではない
言語のせいというより、WindowsがUnixとの相性をとことんまで捨ててきた結果
- 909 :デフォルトの名無しさん:2017/03/26(日) 03:06:46.11 ID:EKCv78dE.net
- 先日のNet::SSHのアホだが、suした後にコマンド叩いてコマンドの出力は取れたんで一応報告まで
参考になるかはわかんないけど、力業でやるしかないようだ
http://ideone.com/vGFRog
cdとかexportやるとめんどくさそう(shellモードで走らないとアレなので)
別メソッド内でlambdaをたくさん用意して、open_channelブロック内でlambda配列をcallしまくらないとダメかも
- 910 :デフォルトの名無しさん:2017/03/26(日) 03:15:36.47 ID:EKCv78dE.net
- というか、誰が見るのかもわからんが、ググって後悔する人用?
- 911 :デフォルトの名無しさん:2017/03/26(日) 04:15:06.61 ID:d2qW/2Sn.net
- csvの扱い方が良く分からん……
Encoding.default_external = Encoding::UTF_8
require 'csv'
CSV.foreach("msg.csv") do |row|
p row
end
=>["id", "msg"
=>]
["1", "hello"]
=>
["2", "1234"]
=>
["3", "テスト"]
この状態にまで持っていく事が出来たけど、
IDのナンバーを指定→格納されてるを表示させるっていう方法が分からない……
ID3を選んだらテストって表示されるっていう感じ
- 912 :デフォルトの名無しさん:2017/03/26(日) 05:59:49.62 ID:PRpbdmfu.net
- >>907-908
Win10の、Bash on Ubuntu on Windows
(Windows Subsystem for Linux, WSL)では、Rubyは動く?
それか、Chef(Vagrant)
>>911
Msg = Struct.new(:id, :msg) # クラスを作る
msgAry = []
# ヘッダーは不要
CSV.foreach("msg.csv", headers: true) do |row|
msgAry << Msg.new(row[0], row[1]) # 配列に追加
end
p msgAry
ary = msgAry.select {|row| row.id == '3' } # filter
p ary, ary[0].msg
データ数が多いのなら、SQLite3 などのDBを使うべき
- 913 :デフォルトの名無しさん:2017/03/26(日) 06:10:56.54 ID:EKCv78dE.net
- >>911
かずがそこまででもないならこの程度でいけるよー
require 'csv'
# data = {} でもおk
data = Hash.new
skip_first = true
CSV.foreach("a.csv") do |row|
if skip_first
skip_first = false
else
data[row[0].to_i] = row[1]
end
end
p data[3]
- 914 :デフォルトの名無しさん:2017/03/26(日) 12:28:08.64 ID:uiu02Zxm.net
- >>912、>>913
ありがとうございます!
配列かハッシュを使って上手いことやるって感じなんですね
参考にして頑張ります!
- 915 :デフォルトの名無しさん:2017/03/26(日) 14:35:31.38 ID:hVl7ZVni.net
- >>908
というよりRubyがUNIXにべったり依存してることがそもそもの問題だろう
Pythonなど他の主要なスクリプトはそこまで依存してないぞ
- 916 :デフォルトの名無しさん:2017/03/26(日) 14:38:47.27 ID:Yy5rv7Z6.net
- >>911
Encoding.default_external = Encoding::UTF_8
require 'csv'
a = CSV.readlines("msg.csv") # 配列の配列として一気に読み込み
p a[3] # カラム名付き配列から直にindexを指定
p a.select{|row| row.first == '3'} # 条件に会う要素*全て*を含む配列
p a.assoc('3') # 配列の配列を検索して、0番目の要素がそうなってる最初の要素
h = Hash[a.drop(1)] # drop(1)で最初のカラム名の行捨てて、Hashに
p h['3'] # idをキーにしてmsgを取り出す
- 917 :デフォルトの名無しさん:2017/03/26(日) 19:38:31.52 ID:PRpbdmfu.net
- DBのレコードには、>>912 のように、
きっちりと構造を定義した、クラス・構造体を使うべき
配列・ハッシュなどは、表の仕様変更に弱いから、おすすめしない
「Effective Ruby」項目10に書いてある。
構造化データの表現には、Hashではなく、Structを使おう
本当は、DBを使うと、検索用のインデックスを張るなど、検索速度が上がる。
全レコードをループして、線形探索しない。
線形探索の計算量は、レコード数に比例するから、遅い
- 918 :デフォルトの名無しさん:2017/03/26(日) 20:46:28.35 ID:hVl7ZVni.net
- たかがスクリプトでそんなのどうでもいいよ
HashとStructなんか実用上大した差はない
どうせStructなんか生で使う時点でカプセル化もクソもない
DBも導入や運用の手間やデータが単純なテキストでなくなることを考えると
よほどのことがない限りはコストに見合わない
- 919 :デフォルトの名無しさん:2017/03/27(月) 00:28:58.33 ID:Veh84ZPS.net
- rubyって例外処理どうやってるの?
実行するまでどの例外が出るのか分からないからトライアルアンドエラーしてくしかないの?
- 920 :デフォルトの名無しさん:2017/03/27(月) 00:29:50.81 ID:A5EmHHW6.net
- rescueでぐぐれ
- 921 :デフォルトの名無しさん:2017/03/27(月) 00:36:09.18 ID:OggmZorO.net
- >>919
ドキュメントに書く
例外の静的チェックなんかやってるのは後にも先にもJavaだけだ
フレームワークや関数型と極めて相性が悪く、Javaが犯した大失敗の一つとされている
- 922 :デフォルトの名無しさん:2017/03/27(月) 01:02:23.75 ID:UxXnYzuG.net
- Swift「うむ」
- 923 :デフォルトの名無しさん:2017/03/27(月) 02:43:39.87 ID:+1P0P+cw.net
- >>919
どんな例外であっても捕捉したけりゃ
begin
例外が起こったら捕捉するブロック
rescue Exceptions
例外回復処理
end
として見るといい
ただし個人的には、きちんとした理由がない限りはRuntimeErrorまたはそのサブクラスに限るべしと考えている
- 924 :デフォルトの名無しさん:2017/03/27(月) 06:54:09.40 ID:OggmZorO.net
- >>922
あれは型を指定できないから別物でしょ
規模が大きくなったり例外の使用が普及していくと大半のメソッドにthrowsが付いて意味をなさなくなるよ
例外が後付けであることと、
iOSアプリなので規模が小さいしその場の判断でカジュアルに落としていいということを前提とした
限定的なやり方だね
- 925 :デフォルトの名無しさん:2017/03/27(月) 21:24:01.57 ID:ndaSX+xy.net
- >>921
やっぱりjavaみたいにその場では分からないのね
ruby使ってる会社なんてベンチャー系が多いわけで、ドキュメントもそんなにしっかり書いてるところなんてほんと1握りだろうし難しい問題だな
- 926 :デフォルトの名無しさん:2017/03/27(月) 21:45:27.38 ID:OggmZorO.net
- >>925
いやRuby(というかRails)の場合は例外はフレームワーク任せで最上位で捕捉が基本だから何も難しいことはないよ
- 927 :デフォルトの名無しさん:2017/03/27(月) 22:41:14.67 ID:UxXnYzuG.net
- >>926
Rubyに限らず明示的なハンドリングが必要なケース以外は最上位で補足が基本だと思うよ
>>925
使ってるライブラリがどういう例外をはくのかドキュメント見ても分からないなら
そういうライブラリを使うのを避けるかソース見ればいいんじゃね?
例外はAPIの一部だから明示されていて当然
「Javaみたいにその場で分かる」の意味が分からないし現実問題として困ったことはない
- 928 :デフォルトの名無しさん:2017/03/27(月) 22:57:57.14 ID:VL/gciGG.net
- まあ「RubyがJavaじゃないので困る」とか「Rubyがオブジェクト指向の基本の○○を守ってない(実際は○○はJavaの方言)」とか
そういうのはけっこうあるので、自分の知らない言語を学ぶ機会になっていいんじゃないですかね
- 929 :デフォルトの名無しさん:2017/03/27(月) 23:32:21.51 ID:kIuVYWQO.net
- その場で分かるは検査例外に他ならないでしょ
…って言ってみておいて何だが
検査例外っていう言葉がどっから来たのか不明だな
https://docs.oracle.com/javase/specs/jls/se8/html/jls-11.html
このへん見てもせいぜいchecked exceptionsとあるだけで
どこの誰が検査例外とか言い出したんだろうな
- 930 :デフォルトの名無しさん:2017/03/28(火) 00:08:58.11 ID:5RUVNWwS.net
- >>929
検査例外のことだとすると
非検査例外はその場で分からないから困るって話になっちゃう気がするので
何か違うものを指してるんじゃないのかな?
- 931 :デフォルトの名無しさん:2017/03/28(火) 03:00:23.83 ID:vGNqj6m3.net
- >>919
一番上の呼び出し元でrescueしてログにゲロるだけ、ってのがよくあるパターン
で、次の日にログみてエラー出てたら直すかどうか調べる
その程度
ありとあらゆるgemの挙動をすべてわかってるわけでもないしな、医者の「様子見」って奴だ
- 932 :デフォルトの名無しさん:2017/03/28(火) 20:55:44.43 ID:IwCv7Hc+.net
- 自分で書いたプログラムが徐々に進化していく感じが凄い楽しい
この感覚を共有したいのですが良いコミュニティ無いですか?
- 933 :デフォルトの名無しさん:2017/03/28(火) 21:51:04.91 ID:Ri9BGdNQ.net
- github
- 934 :デフォルトの名無しさん:2017/03/28(火) 22:05:15.21 ID:sFbRrsU+.net
- Rubyのanyとallで捗るがほかの言語でもあるのか
- 935 :デフォルトの名無しさん:2017/03/28(火) 22:17:59.25 ID:xRgDj2E5.net
- >>934
リスト操作の関数が揃ってるのなら大抵あると思うが
JavaScriptにでもあるぐらいなんだから(everyとsome)
- 936 :デフォルトの名無しさん:2017/03/29(水) 03:22:52.75 ID:d5wwz1O4.net
- >>934
pythonにもあるけど、rubyと考え方が変わるから注意して
「ジェネレータ内包」というか、関数が中にいる、yieldで蹴り上げてくれない
- 937 :デフォルトの名無しさん:2017/03/29(水) 04:12:06.05 ID:ZwfTQ2HH.net
- Ruby/JavaScriptに慣れてるとPythonはマジキチ
- 938 :デフォルトの名無しさん:2017/03/29(水) 07:59:46.71 ID:I/A0mp99.net
- JavaScriptにはyield(Rubyのなんちゃってyieldじゃなくてジェネレータの方)も
リスト内包表記もasync/awaitも入ったからそうでもないよ
残念ながら他の言語がおかしいのではなくRubyが時代から取り残されている
- 939 :デフォルトの名無しさん:2017/03/29(水) 17:21:28.60 ID:euTeqsbN.net
- Atomのautocomplete-rubyで>>614と全く同じエラーが出て自分なりに確認してみました
すると、spoonというライブラリ内にunix.rbとwindows.rbというファイルがあり、
unix.rb内にはFileActionsクラスがあるにもかかわらずwindows.rb内には存在しないようでした
このことから初心者なりにrsenseがunixにしか対応していないためにrsenseがエラーを吐いているのではないかと考えたのですが
rsense(ver0.5.18)をwindows環境で利用できている人はいるでしょうか?
もし無理ということであればrubyの自動補完をAtomで使う方法はあるでしょうか?
- 940 :デフォルトの名無しさん:2017/03/29(水) 18:36:36.32 ID:1MGUWYwx.net
- rsenseをWindowsで使うのは無理
- 941 :デフォルトの名無しさん:2017/03/29(水) 20:12:20.88 ID:xjmvyT9X.net
- という事はwindowsに対応したRubyのautocompleteって存在してないのか……
自分でスニペット作るしかないか
resenseのソースコードってどっかで読めますか?
- 942 :デフォルトの名無しさん:2017/03/29(水) 20:27:20.55 ID:euTeqsbN.net
- >>940
そうでしたか…
調べたところ他にrubyの自動補完のパッケージはなさそうですし無しで妥協するしかなさそうですね
>>941
これがrsenseのソースコードのようです
https://github.com/rsense/rsense
- 943 :デフォルトの名無しさん:2017/03/29(水) 20:29:01.46 ID:nzjlIS7M.net
- gem install rsense すりゃいいだろw
- 944 :デフォルトの名無しさん:2017/03/29(水) 20:50:59.00 ID:nzjlIS7M.net
- ああ、中身が無いって話なのか
- 945 :デフォルトの名無しさん:2017/03/29(水) 21:26:26.67 ID:1MGUWYwx.net
- 自分は昔ネット記事読んで入れてみようとしたけど失敗した
技術力が高いやつなら使えるかもしれん
自分は無理だった
- 946 :デフォルトの名無しさん:2017/03/29(水) 21:43:00.76 ID:tXXWC1wQ.net
- windowsでrsense使えてるんだけど
- 947 :デフォルトの名無しさん:2017/03/29(水) 22:09:52.87 ID:xjmvyT9X.net
- rsenseに補完のコード載ってなかった……
一から自作とか面倒すぎて泣ける
どっかに良い補完コードないのか
- 948 :デフォルトの名無しさん:2017/03/29(水) 23:28:43.33 ID:ZwfTQ2HH.net
- >>938
Pythonでジェネレータ使いたいケースの大半はRubyだとeachやlazyの組み合わせで間に合うからね
本当に必要な時だけEnumeratorやFiberを使えばいい
PythonはRubyやJSに比べると低いレイヤーを意識しないといけないケースが多いんだよね
関数のComposabilityの低さが一番の癌
- 949 :デフォルトの名無しさん:2017/03/30(木) 13:07:08.50 ID:9EoNq122.net
- rubyだとyieldじゃないのかな
- 950 :デフォルトの名無しさん:2017/03/30(木) 16:29:17.37 ID:blpqU3yN.net
- test
x=%W(a b c d)
p x[0..2] # →["a", "b", "c"]
p x[2..0] # →[]
p x[0..10] # →["a", "b", "c", "d"]
p x[2..10] # →["c", "d"]
p x[10..0] # →nil
p x[-1..-3] # →[]
p x[-3..-2] # →["b", "c"]
p x[-10..-2] # →nil
- 951 :デフォルトの名無しさん:2017/03/30(木) 16:40:30.67 ID:9EoNq122.net
- p x[-5..-2] # →
- 952 :デフォルトの名無しさん:2017/04/03(月) 14:02:42.69 ID:EgKRTgNa.net
- wondows10、64bitにbundle installの際にnio4rが
インストールできずにはまっています。
rails 5.02 ruby 2.2.6です。
rubyinstallerを使ってdevkitをダウンロードしてbatとinitとinstallはすませました。
gem updateとsqlite3もダウンロードしました。nokogiriもダウンロードしました。
誰か頭のいい方教えてください。
- 953 :デフォルトの名無しさん:2017/04/03(月) 14:33:11.72 ID:L89e5t3/.net
- Rails5のgem installでnio4rのインストールに失敗する - Qiita
http://qiita.com/mugi_uno/items/4657444a79acb98ac981
- 954 :デフォルトの名無しさん:2017/04/03(月) 14:33:18.24 ID:U4t48yq0.net
- rubyとdevkitの32bit/64bitが食い違ってるに3票
- 955 :デフォルトの名無しさん:2017/04/04(火) 04:32:42.42 ID:QcgfrUUh.net
- >>919
> rubyって例外処理どうやってるの?
> 実行するまでどの例外が出るのか分からないからトライアルアンドエラーしてくしかないの?
Rubyに限らないが、
1. すべての例外に対する共通処理を書く。
2. 特別な処理だけカスタマイズする。
というやり方を取る。
2. が必要になることは殆ど無いので、
共通の例外処理だけで十分なようにあなたが作る
- 956 :デフォルトの名無しさん:2017/04/08(土) 10:00:53.29 ID:I9Aqo/S7.net
- クラス定数の書き方がよくわかりません…
class Hoge
FUGA = "piyo" # 書き方その1
@@FUGA = "piyo" # 書き方その2
end
どっちで書くべきなんでしょう
- 957 :デフォルトの名無しさん:2017/04/08(土) 10:28:58.68 ID:VX8+Virx.net
- @@hogeはクラス変数だから「その1」じゃないとダメ
- 958 :デフォルトの名無しさん:2017/04/08(土) 10:36:07.28 ID:xaSJ94RF.net
- 再代入してみ
- 959 :デフォルトの名無しさん:2017/04/08(土) 10:39:24.46 ID:fKVMhPX5.net
- 後者はただの「大文字で始まるクラス変数」だぞ
irb> class C1; CONST=1; CONST=2; end
(irb):1: warning: already initialized constant C1::CONST
(irb):1: warning: previous definition of CONST was here
irb> class C2; @@CONST=1; @@CONST=2; end
irb> C1.const_get :CONST
=> 2
irb> C2.const_get :@@CONST
NameError: wrong constant name @@CONST
irb> C2.class_variable_get :@@CONST
=> 2
- 960 :デフォルトの名無しさん:2017/04/08(土) 13:49:46.96 ID:3oGgRyKA.net
- const_get (Module) - Rubyリファレンス
http://ref.xaio.jp/ruby/classes/module/const_get
- 961 :デフォルトの名無しさん:2017/04/09(日) 02:23:55.86 ID:+d/g4xuk.net
- >>956
ほとんどのruby使いなら
FUGA = "piyo"
って書いてたら定数だと判断する
代入なんぞするわきゃねえから安心していい、公式のdocでそういうルールですって言ってるからな
守らん奴が悪いのだ
@@FUGA = "piyo"
だったらなんかヤバいかもって予想する
例がないこともないけど、たとえば……SQLのER図の字面と合わせるためにあえて全部大文字で書いてる? みたいな奴
定数目的でやってるなら@@は必要ないよ
@@ついてたらクラス横断で書き換える予定の変数って意味なんで(割と扱いがヤバいやつ)
- 962 :デフォルトの名無しさん:2017/04/09(日) 02:29:22.11 ID:+d/g4xuk.net
- @@XXXX = "yyy"
みたいなのは、要件として「全然プログラミングわからん人がなんか触るかも」という要件があって
ER図と突き合せたらわかるように配慮した、みたいな話だったんだけどね
……むしろそんなのに触らせんなという話なんだろうが
定数目的なら@@は不要ですわよ、@@ついてたら「どこかで書き換わる可能性がある」って意味にしか取れないので
- 963 :デフォルトの名無しさん:2017/04/12(水) 08:10:16.25 ID:wEqEhwuC.net
- Rubyで定数を扱う場合はfreezeするべき
http://qiita.com/yukiyan/items/39f945c55b6dc5e11ed7
配列などのコンテナも凍結できるし、さらにその中の各要素も凍結すればよい
- 964 :デフォルトの名無しさん:2017/04/12(水) 08:42:52.97 ID:A6XRqe5e.net
- >>963
どうでもいい
そういうフールプルーフ論をしだしたらRubyなんか使えなくなる
Rubyはプログラマに最大限の自由と責任を与える言語で、不適切な扱いをすれば定数に限らず簡単に崩壊する
- 965 :デフォルトの名無しさん:2017/04/12(水) 09:55:58.18 ID:eUe7Ztpf.net
- Q. ユーザーに変更して欲しくない変数があるのですが
A. マニュアルに赤字ででっかく書いておく
がギャグじゃないからなRuby
将来の開発者の行動を制限したいなら改変で失敗するテストでもつけとけ
- 966 :デフォルトの名無しさん:2017/04/12(水) 16:26:28.16 ID:yUUEzJPF.net
- >>964
freezeしとくと最適化のヒントになる
所詮スクリプトだし速度はどうでもいいならごめん
- 967 :デフォルトの名無しさん:2017/04/12(水) 17:57:55.99 ID:t+ieauVX.net
- 正規表現で(?<=)と\Kで挙動が違うことがあるんだけどこれってバグ?
str = 'foooooo!!!'
p str[/(?<=o+)!*/]
# => invalid pattern in look-behind: /(?<=o+)!*/
p str[/o+\K!*/]
# => "!!!"
- 968 :デフォルトの名無しさん:2017/04/14(金) 17:08:22.32 ID:W2Q9fgxr.net
- ここに書いてあったわ。すまん
http://k-takata.o.oo7.jp/mysoft/bregonig.html#SCT-5.1.7.
- 969 :デフォルトの名無しさん:2017/04/14(金) 19:13:37.72 ID:kd81bztX.net
- freezeっていうコンセプトはいいよね
変数ごとのconstっていうのでも十分有難いけど
変数じゃなくてオブジェクト側を不変にできる安心感ってすごいと思う
- 970 :デフォルトの名無しさん:2017/04/18(火) 12:26:20.44 ID:ZXyqFz5f.net
- class Test
def dice
return rand(6) + 1
end
def thrower(receive = nil , &block)
if receive == nil
block.call(self,block)
else
receive.call(self,receive)
end
end
end
Test.new().thrower{|a,b| ( a.dice < 4 ) ? a.thrower(b) : (p "saiki_owari") }
#throwerメソッドの仮引数について質問
#最初のthrowerにブロックを与えた時は&blockで受け取れるんだけど、
#二回目以降はreceiveじゃないと受け取れない
#これをなんとか&block一本で受け取れるようにならないでしょうか?
- 971 :デフォルトの名無しさん:2017/04/18(火) 12:34:12.91 ID:xS1+Nete.net
- a.thrower(&b)
- 972 :デフォルトの名無しさん:2017/04/18(火) 12:37:16.86 ID:ZXyqFz5f.net
- すみません
環境書いてませんでした
x86
ruby1.8.6
- 973 :デフォルトの名無しさん:2017/04/18(火) 12:39:36.44 ID:ZXyqFz5f.net
- >>971
無事に仮引数を一本化できました
有難う御座いました
- 974 :デフォルトの名無しさん:2017/04/18(火) 12:42:32.99 ID:ycY/feUC.net
- めちゃくちゃ本筋とずれてるけど
試しのコードのクラス名にTest使うのはやめたほうがいいよ
Cとかなんかそういうのにしとけ
- 975 :デフォルトの名無しさん:2017/04/18(火) 12:46:33.74 ID:ZXyqFz5f.net
- テストフレームワークのと見間違うからやめた方が良いという事でしょうか?
気をつけます
- 976 :デフォルトの名無しさん:2017/04/22(土) 10:45:11.23 ID:6qfFdcME.net
- JSONはドキュメントにはオブジェクトをダンプすると書いてありました
配列かハッシュ以外のオブジェクトをダンプすると変な暗号みたいな文字列になります
配列かハッシュの中のオブジェクトの値を配列かハッシュに変換するような
メソッドを用意して変換した配列かハッシュをダンプするみたいなことはできないのでしょうか
- 977 :デフォルトの名無しさん:2017/04/22(土) 10:59:08.68 ID:SoGX0B4D.net
- JSON形式の文字列に変換してダンプしたんなら JSON#parseでRubyのオブジェクトに戻せばいいんじゃないの
そもそも質問文の日本語がよくわからない
- 978 :デフォルトの名無しさん:2017/04/22(土) 11:39:10.72 ID:DtRoC9Q8.net
- >>976
ActiveSupport 入れて #to_json 使う
- 979 :デフォルトの名無しさん:2017/04/22(土) 14:51:13.21 ID:nTMTCqPH.net
- >>976
JSON は扱えるデータが nil true false 整数値 実数値 UTF-8文字列 配列 ハッシュのみ
それ以外のデータを出力したい場合はクラスごとに #to_json を自分で書くしかない
どういう環境を想定しているのかわからないが、YAMLやMarshalの利用も考えてみた方がいい
- 980 :デフォルトの名無しさん:2017/04/23(日) 14:02:40.48 ID:3CgRQnGp.net
- rect_color = "Red"
img.rectangle!(from, to, :color => OpenCV::CvColor::<<ここにrect_colorを展開したいです>>, :thickness => 1)
- 981 :980:2017/04/23(日) 14:05:36.07 ID:3CgRQnGp.net
- >980です。
クラスで定義された定数(?)などの名前の一部に変数展開したいのですが、
どのような記法になるのでしょうか?
# tab+Enter間違えて押して投稿しちゃいました・・・
- 982 :デフォルトの名無しさん:2017/04/23(日) 14:27:00.35 ID:MkKwpytP.net
- >>981
OpenCV::CvColor.const_get(rect_color)
- 983 :デフォルトの名無しさん:2017/04/23(日) 14:56:42.56 ID:1GeMi3V/.net
- 作業工程のステップ数はどう計算する?
- 984 :980:2017/04/23(日) 15:06:44.62 ID:3CgRQnGp.net
- >982
メソッドで書くとは思わず、#{xxx}等と書くのかと思っていました
ありがとうございました。
- 985 :デフォルトの名無しさん:2017/04/23(日) 15:10:40.84 ID:fuXae4k3.net
- >>983
そんなもんwc -lでいい
どうせ何の意味もない指標なんだから難しく考えるだけ時間の無駄
- 986 :デフォルトの名無しさん:2017/04/23(日) 15:51:01.88 ID:MkKwpytP.net
- >>984
あとはハッシュを用いる方法もある
evalを使う方法でも出来るが、ウェブサービスなど他人の手が介入する場合は
任意のコードを埋め込むことで好き勝手されることになるため、使うべきではない
俺の伯父貴はそれで責任取らされた
- 987 :デフォルトの名無しさん:2017/04/23(日) 15:51:32.62 ID:MkKwpytP.net
- >>986
誤)伯父貴
正)兄弟会社の社長
- 988 :デフォルトの名無しさん:2017/04/24(月) 02:16:10.51 ID:tTIPHNHA.net
- rails5の新しい本が出てたけど
あれ読んだ人感想教えて
- 989 :デフォルトの名無しさん:2017/04/24(月) 09:12:04.50 ID:UdTP1JyN.net
- Rails4本のページ数より1割増し
- 990 :デフォルトの名無しさん:2017/04/24(月) 19:44:07.66 ID:Kyqb8D8F.net
- 買うか迷ったけど、どの辺りが増えたか分からんかったから見送ったわ
ほとんど4のやつと一緒っぽいし
- 991 :デフォルトの名無しさん:2017/04/26(水) 23:52:32.11 ID:1b43zh74.net
- プログラミング無学者です
rubyのオススメの参考書ありますか?
- 992 :デフォルトの名無しさん:2017/04/26(水) 23:59:37.90 ID:QjgCMKxe.net
- その場合はたのしいRuby以外の答は返ってこないと思う
- 993 :デフォルトの名無しさん:2017/04/27(木) 02:16:08.57 ID:K/c6qdg9.net
- Rubyの配列で変数って使えないのでしょうか?
a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 = gets.split.map(&:to_i)
t = gets.chop.split("").map(&:to_i)
ary = [a0,a1,a2,a3,a4,a5,a6,a7,a8,a9]
t.each do |i|
puts arya[t[i]]
end
というコードを書いたのですが
no implicit conversion from nil to integer (TypeError)というエラーが出て動かず
理想としては
ary = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
t = [1, 3, 5]として
p arya[t[0]]
=> 1
という結果を繰り返して表示する、というのを目指したのですが、動かないので……
- 994 :デフォルトの名無しさん:2017/04/27(木) 02:17:08.38 ID:K/c6qdg9.net
- すみません、aryとaryaが混ざってしまいました
全てaryで書かれている物としてみてください
- 995 :デフォルトの名無しさん:2017/04/27(木) 04:09:54.62 ID:FW9wlyor.net
- >>993
t.each do |i|
puts arya[t[i]]
end
だと、2周目が
t[3] => nil でまずいんじゃないの
ていうかputs ary[i]がやりたい事じゃない?
- 996 :デフォルトの名無しさん:2017/04/27(木) 04:16:58.66 ID:K/c6qdg9.net
- >>995
まさにその通りでした!
これで解決です、有難うございます!
- 997 :デフォルトの名無しさん:2017/04/28(金) 20:54:05.02 ID:E80Nlt1P.net
- 三角関数の計算って普通高コストだよな・・・とHashにキャッシュするようにしてみたら速くなるどころか遅くなったw
- 998 :デフォルトの名無しさん:2017/04/28(金) 23:51:48.21 ID:7VffJ0oI.net
- Rubyはそれ自体がゲロ遅いのでCの関数に丸投げしてるだけの三角関数の計算自体のコストなんて
全く無視できる
- 999 :デフォルトの名無しさん:2017/04/29(土) 00:15:25.00 ID:eMb5q7il.net
- 使い方にもよるけどHashに中間値保存してたらたぶん遅い
どうせなら2次元の配列表に保存しよう
なんだかっていう昔の高速計算法
- 1000 :デフォルトの名無しさん:2017/04/29(土) 01:49:55.04 ID:urVXnFrH.net
- というかHash#[]>Math.sinだからHashでは工夫の余地ないな
Array#[]は僅差でMath.sinより速いようだ
>>999
参考までにどんな方法?最初はArrayを考えていたけど入力値がFloatなのであきらめた
総レス数 1000
303 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★