板検索:
Ruby 初心者スレッド Part 59 (938)
まとめビュー
1
デフォルトの名無しさん[]   投稿日:2016/10/02 16:50:38  ID:kFeo4TbM.net(2)
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 58

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
コメント1件


2
デフォルトの名無しさん[]   投稿日:2016/10/02 16:51:40  ID:kFeo4TbM.net(2)
たのしいRuby 第5版、2016

Effective Ruby、2015

メタプログラミング Ruby 第2版、2015

Rubyのしくみ、2014

改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015

リファクタリング:Rubyエディション、2010

3
デフォルトの名無しさん[sage]   投稿日:2016/10/02 18:17:48  ID:mO5jHYyT.net(2)
プログラミング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
デフォルトの名無しさん[sage]   投稿日:2016/10/02 18:43:05  ID:QvMQ+uX0.net
>1 乙

5
デフォルトの名無しさん[sage]   投稿日:2016/10/02 22:05:08  ID:mO5jHYyT.net(2)
Linux API を、Windows API に変換するので、Ubuntu64 のバイナリがそのまま動く、
Windows Subsystem for Linux (WSL) で、Ruby, Rails をやっている人いる? 調子はどう?

apt-get で、パッケージもインストールできる

日本語も使える端末、ConEmu。
GUI表示用のXサーバー、Xming X Server for Windows

6
デフォルトの名無しさん[sage]   投稿日:2016/10/03 07:31:26  ID:Sy28Ke7B.net
今試してるとこ
Win対応はRubyのお荷物になってるから、
これを機にWin関連のコードがRuby本体やGemsから一掃されてくれるといいな

7
デフォルトの名無しさん[]   投稿日:2016/10/03 10:44:03  ID:GNQlIOXR.net
Rubyはもうオワコン

8
デフォルトの名無しさん[sage]   投稿日:2016/10/03 17:50:44  ID:BQDt10lP.net(2)
rubyのopengl関連のラブラリがどうなってるのか分かり辛いから、
自分で調べたんだけど下のであってる?

・今はlarskanis/openglとvaiorabbit/ruby-openglがある
・larskanis/openglのほうは(vaiorabbit/ruby-openglのドキュメント読むと)opengl2とかよばれている
・opengl2表記から初代opengl(既に開発停止、サイトもなくなっている)が存在する

9
デフォルトの名無しさん[sage]   投稿日:2016/10/03 17:52:09  ID:BQDt10lP.net(2)
足りていない箇所があったら教えて

10
デフォルトの名無しさん[sage]   投稿日:2016/10/04 20:13:20  ID:BihL0/mM.net
Cで書かれたメソッドにポインターを渡す場合どうしたらいいのかわからない
ruby側で「メモリ確保してポインター渡す」にはどうすればいいの?
コメント1件

11
デフォルトの名無しさん[sage]   投稿日:2016/10/04 22:52:38  ID:1BCIDfGo.net
WSLだとRails簡単に動いた
少なくともWin対応完全終了の口実としては十分なレベルだなこれ

12
デフォルトの名無しさん[sage]   投稿日:2016/10/05 06:20:29  ID:JVWzXY3A.net
mswin32だろうがmingw32だろうが需要があるから
どんなに嫌ってる人がいようと続いていく

13
デフォルトの名無しさん[sage]   投稿日:2016/10/05 14:43:41  ID:e2s2BqVL.net


14
デフォルトの名無しさん[sage]   投稿日:2016/10/06 01:25:08  ID:b/FSG7/S.net(2)
環境
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
デフォルトの名無しさん[sage]   投稿日:2016/10/06 01:28:43  ID:EykuvLuN.net(2)
gemのバージョンは?
コメント1件

16
デフォルトの名無しさん[sage]   投稿日:2016/10/06 01:37:19  ID:b/FSG7/S.net(2)
>15
2.2.4の方が2.6.7、2.3.1の方が2.5.1でした
古いのが原因かと思ってgem update --systemを試しましたが同じくSSLのエラーを吐いてダメでした……
コメント1件

17
デフォルトの名無しさん[sage]   投稿日:2016/10/06 12:40:09  ID:4kR5N43K.net
どうせ隔離して使うんならVagrantでいいじゃん
Windowsで無理にrbenv使う意味がわからん

18
デフォルトの名無しさん[sage]   投稿日:2016/10/06 16:10:34  ID:EykuvLuN.net(2)
>16
Ruby 2.2.4 の方の gem を 2.5.1 にして比較してみては?

19
デフォルトの名無しさん[sage]   投稿日:2016/10/06 18:27:59  ID:TUUHw8QE.net
ぐぐったらSSLやサーバ関連の問題みたいだな
以下参照して
http://d.hatena.ne.jp/komiyak/20130508/1367993536

20
デフォルトの名無しさん[sage]   投稿日:2016/10/06 23:45:09  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  ID:yL88npXy.net
cron で皆がエラーになるのは、一般ユーザーよりも、環境変数が少ないから

22
デフォルトの名無しさん[]   投稿日:2016/10/07 18:41:40  ID:CUba1Zl4.net
>13
返事が遅くなったけど、ありがとう

23
デフォルトの名無しさん[sage]   投稿日:2016/10/09 16:23:29  ID:+q97XIgi.net(4)
rubyってインストールできたらあとはコマンド入力すればいいの?

nokogiriっての使いたいんだけど gem install nokogiriってうっても変なエラーでるだけなんだけど

24
デフォルトの名無しさん[]   投稿日:2016/10/09 16:29:26  ID:zS2VLXB8.net
絶望的に向いてない人はいる
人生諦めが肝心

25
デフォルトの名無しさん[sage]   投稿日:2016/10/09 16:37:40  ID:+q97XIgi.net(4)
自己解決したわ 俺は向いてるみたいだ

26
デフォルトの名無しさん[sage]   投稿日:2016/10/09 17:08:11  ID:+q97XIgi.net(4)
requireが通らないんだが?は?

27
デフォルトの名無しさん[sage]   投稿日:2016/10/09 17:09:47  ID:+q97XIgi.net(4)
コードの理解はそんな難しくなさそうなのに手前がめんどくさいんじゃ

28
デフォルトの名無しさん[]   投稿日:2016/10/09 17:29:16  ID:ztakSrvW.net
gem search nokogiri
と打っても*** REMOTE GEMS ***
だけしか出てこないんですけど
みなさん同じ症状ですか?
それとも私だけでしょうか?

29
デフォルトの名無しさん[sage]   投稿日:2016/10/09 18:12:12  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  ID:/UUIzz58.net
rubyで深層学習するのと他の言語、例えばCやらpythonで深層学習するのと、どこが違うの?
rubyでも同じようなライブラリ作成したら、同じになる?
それとも言語仕様のそもそもの違いで無理なの?
rubyならなんでも出来そう、かつ楽な書き方が出来そうな気がするんだけど

31
デフォルトの名無しさん[sage]   投稿日:2016/10/11 12:03:30  ID:aUckxkie.net
Rubyにはnumpyやscipyやmatplotlibみたいな科学技術計算のためのライブラリが無いから極めて厳しい

32
デフォルトの名無しさん[sage]   投稿日:2016/10/11 22:02:35  ID:gtjckSki.net
つまり誰かがそのライブラリに相当するものを作ってくれれば・・・

33
デフォルトの名無しさん[sage]   投稿日:2016/10/12 13:13:10  ID:2jtU3Zls.net
深層学習用に、既存のCライブラリのrubyバインディングを書くのと、ruby用ライブラリを新規で書くの
どちらもそんなに違い出なさそうに見えるけど実際はどうなんだろ

やっぱりそれぞれ書くのが難しい部分とかある?

34
デフォルトの名無しさん[sage]   投稿日:2016/10/12 15:25:05  ID:lA7OeQ/m.net
コードなんて実際簡単なんだろうな

金になる商売はむずかしいむずかしい言われるもんなんだろ

35
デフォルトの名無しさん[sage]   投稿日:2016/10/12 17:14:15  ID:Kt1Sq3SL.net(3)
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
デフォルトの名無しさん[sage]   投稿日:2016/10/12 17:41:20  ID:m4XsbzZB.net
イマイチ何を目的としているのかわからんけど、
6を表示するだけならputs eval("#{fruits[0]}_price")[4]

37
デフォルトの名無しさん[sage]   投稿日:2016/10/12 19:02:48  ID:Kt1Sq3SL.net(3)
おお、すごい!ちゃんと6が表示されました。ありがとうございます。
ちょっと、今ググってみると、「「eval」は、Rubyの文字列を評価するメソッドです。」とあり、
評価するという意味が分かりませんが、とにかく文字列をつなげて“配列名”として扱える
ことができるのはわかりました。

なんでこんな妙なこと?をしているのかというと、配列名がすさまじく増えてきた上に、長くなってきて
見苦しくなってきたので、配列名の単語リスト配列を作成してその配列から番号で拾ってきてつなげれば
短くなって済むじゃんという動機でした。ところが、それらの文字がうまくつながらないので困っていた次第です。
とにかく、ありがとうございました。もうちょっと調べてみます。

38
デフォルトの名無しさん[sage]   投稿日:2016/10/12 19:15:43  ID:5MBS+YlH.net
Hashでやれば

39
デフォルトの名無しさん[sage]   投稿日:2016/10/12 19:16:58  ID:AoMg70NU.net
そういう場合はHash使おう

40
デフォルトの名無しさん[sage]   投稿日:2016/10/12 20:26:38  ID:Kt1Sq3SL.net(3)
いや、このevalってすごいですね。つまり、"#{fruits[0]}_price"はこの時点では配列名でもなんでもなく
ただの文字列だけど、eval("#{fruits[0]}_price")することによって、配列名としての役割をもたせられた?
というわけですね。要するに二次嫁を実際に動かすメソッドというわけですよね。
なんてすごいんだ。これからはこれを使いまくろう。素晴らしいものを教えていただきありがとうございました。
ハッシュは書くのがめんどくさいので、これにします。でも情報ありがとうございました。
コメント2件

41
デフォルトの名無しさん[sage]   投稿日:2016/10/12 20:38:17  ID:9oDwxE2X.net
こういう奴がスクリプトインジェクション脆弱性を作り込むんだよな

42
デフォルトの名無しさん[sage]   投稿日:2016/10/12 21:18:02  ID:golIGFQa.net
まあ「すごいけどなんかキモい」と感じて欲しいところではある

43
デフォルトの名無しさん[sage]   投稿日:2016/10/12 22:38:29  ID:nShtFhcR.net
そんな事でevalなよ

44
デフォルトの名無しさん[sage]   投稿日:2016/10/13 09:04:29  ID:1bl1DIi2.net
>40
hashは配列を変換しても作れるし、多次元配列を使ったとしても
evalとか使うよりもよほど簡潔に書けると思うが。
コメント1件

45
デフォルトの名無しさん[sage]   投稿日:2016/10/13 11:10:37  ID:a7epO2oP.net
>40-41
perlのときにも同じ展開を聴いた覚えがある

46
デフォルトの名無しさん[sage]   投稿日:2016/10/13 18:51:51  ID:bdwv69IA.net
>44
わかりました、もうちょっと勉強します。
あとevalについて調べてみましたが、なんだか多用するようなメソッドじゃないみたいです。ただ、こんな
強力なメソッドがあることを知ることができたのは大きな収穫でした。

47
デフォルトの名無しさん[sage]   投稿日:2016/10/13 19:08:12  ID:Xwk5OgLP.net
popenの方が強力

48
デフォルトの名無しさん[]   投稿日:2016/10/14 01:49:18  ID:lTvGl+LI.net
twitterとrubyで質問です。
rubyで自分のフォロワー一覧、あと自分のフォロワーがそれぞれフォローしてる人を一覧で得たいんですが、どうコードを書けばいいでしょうか?
rubyのバージョンは2.3.1です。
client.updateを使ってツイートを投稿することはできました。

49
デフォルトの名無しさん[sage]   投稿日:2016/10/14 07:05:19  ID:xv7XrH2t.net
Twitter APIとRubyクライアントのドキュメントを読む
英語読む気ないなら諦めましょう

50
デフォルトの名無しさん[sage]   投稿日:2016/10/14 14:11:08  ID:4bSlGLeL.net
Twitter APIの使い方まとめ
https://syncer.jp/twitter-api-matome

エンドポイントの一覧の、
ユーザー間の関係・フォロー・フォロワー、あたりを参照

51
デフォルトの名無しさん[]   投稿日:2016/10/16 20:26:06  ID:/verdR3z.net
ちょっと思い立ったんだけど、require や import や 継承した
ライブラリ、モジュール、クラスやメソッドのソースコードを
表示したり、そのソースのファイルパスを返すメソッドがあったら
便利じゃない?
そういうメソッドあるのかな。

52
デフォルトの名無しさん[sage]   投稿日:2016/10/16 20:45:49  ID:bFWPoPH4.net
pry使え

53
デフォルトの名無しさん[sage]   投稿日:2016/10/16 22:04:09  ID:B0JyF1+C.net
たぶん、メタプログラミング・リフレクションに、あるだろ

54
デフォルトの名無しさん[]   投稿日:2016/10/17 04:13:11  ID:G5XuU76K.net
https://www.kmc.gr.jp/~ohai/rubysdl_doc.html
ここを参考にして、
SDL::Event#mouse_x
でマウスのx座標を取得しようとしたら#より右側がコメントアウト扱いになってしまう
解決策をおしえてください
コメント1件

55
デフォルトの名無しさん[sage]   投稿日:2016/10/17 05:37:21  ID:xsBX/OJB.net
>54
それが出てくるってことは重症だ
君の使ってるRubyの参考書のRubyのインスタンスメソッドの説明はどうなってる

56
デフォルトの名無しさん[sage]   投稿日:2016/10/17 06:27:05  ID:9oMVPCEa.net
# から行末までは、Rubyではコメントになる

# を、.(ドット)に変えれば、どうなる?

57
デフォルトの名無しさん[sage]   投稿日:2016/10/17 09:51:34  ID:PK8gee68.net

58
デフォルトの名無しさん[sage]   投稿日:2016/10/17 12:43:13  ID:/xEkgA1M.net(2)
unlessとか気持ち悪いんですがこれはよく使うものなんですか?

59
デフォルトの名無しさん[]   投稿日:2016/10/17 12:47:09  ID:O9P4o+SC.net
うん
とっても

60
デフォルトの名無しさん[sage]   投稿日:2016/10/17 12:56:06  ID:wcVEram7.net
いまいち読み下しにくいので後置でのみ使う人もいる
流れによっては if + 否定的条件 であえて書くときもある
なんでもかんでも機械的にunlessに置き換えれば好ましいというわけでもない

61
デフォルトの名無しさん[sage]   投稿日:2016/10/17 13:10:36  ID:/xEkgA1M.net(2)
とりあえずunless覚えておきます
というかrailsのためだけにrubyを覚えようと思っているぐらいなので極めるつもりはないですけど

62
デフォルトの名無しさん[sage]   投稿日:2016/10/17 13:25:44  ID:8eStTtOD.net
unlessは必ず副作用があるから、関数型っぽいスタイルで作るならほとんど使う機会は無いはず

63
デフォルトの名無しさん[sage]   投稿日:2016/10/17 14:17:13  ID:4xjyqR1P.net
指定したディレクトリごとにgemのライブラリを分けてインストールする方法ありませんか?
bundlerだとプロジェクトごと管理されてしまうので使いまわせませんよね

64
デフォルトの名無しさん[]   投稿日:2016/10/19 17:08:04  ID:6/Oyo1yl.net(2)
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
コメント2件

65
デフォルトの名無しさん[sage]   投稿日:2016/10/19 17:36:03  ID:yr0BTWsi.net(2)
俺の環境ではエラーにならないので原因はスクリプトではないかと。
引数が1つだとうまくいくのか?
エラーが出る場合は環境とどんなエラーが出たかも書かないと。

66
デフォルトの名無しさん[]   投稿日:2016/10/19 17:42:23  ID:6/Oyo1yl.net(2)
1つだと上手くいきます
if文のところに
undefine method '[]' for nilというエラーが。
コメント1件

67
デフォルトの名無しさん[sage]   投稿日:2016/10/19 17:45:20  ID:QoKZwwi3.net
エラーは訳すな約すな
標準入力のエンコーディングが変なことになってる環境でreverseが文字単位にならないと推測
rubyのバージョンと実行環境

68
デフォルトの名無しさん[sage]   投稿日:2016/10/19 17:56:18  ID:yr0BTWsi.net(2)
>66
p ARGVだけにしたら何が出る?

69
デフォルトの名無しさん[sage]   投稿日:2016/10/19 18:19:16  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  ID:6gjRUSSv.net
ruby reverse.rb からす すいか

reverse.rb:2:in 'judge' : undefine method '[]' for nil : NilClass (NoMethodError)
from reverse.rb:13:in '<main>'というエラー

ARGVのみにしてもエラーが出る
コメント1件

71
デフォルトの名無しさん[]   投稿日:2016/10/19 19:12:58  ID:r8TZ1Dhr.net
68の言うとおり
p ARGV
を実行してみたら?

コマンドライン行のコピーと結果の貼り付けも忘れずに

72
デフォルトの名無しさん[sage]   投稿日:2016/10/19 19:19:47  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
デフォルトの名無しさん[sage]   投稿日:2016/10/19 19:36:52  ID:o0vkn/jY.net
からすとすいかの間の空白が全角とか?

74
デフォルトの名無しさん[sage]   投稿日:2016/10/19 22:29:42  ID:ezmv6hmC.net
require "jcode"
はしてある?
コメント1件

75
デフォルトの名無しさん[sage]   投稿日:2016/10/19 22:46:03  ID:3bJ4nK02.net
まあ全角空白でないのならレンタルサーバでRuby1.8とか中古本のCD-ROMでRuby1.9 for Windowsとかそういう可能性も視野に入るな

76
デフォルトの名無しさん[sage]   投稿日:2016/10/20 03:15:22  ID:/8DsWqlk.net
>74
テスト

77
デフォルトの名無しさん[sage]   投稿日:2016/10/20 09:48:49  ID:3pYX1TsE.net
>70
p ARGV以外はコメントアウトしろよ。

78
デフォルトの名無しさん[sage]   投稿日:2016/10/22 05:56:30  ID:eX6AWpPB.net(2)
Ruby 2.2.5p319 + dxruby + gvimで、gvimからコマンドプロンプトを通じて実行すると画像Image.load(のあとが文字化けして画像が読めません。
コマンドプロンプトをデスクトップから立ち上げると問題なく起動します。
何が原因でしょうか?

79
デフォルトの名無しさん[]   投稿日:2016/10/22 08:36:01  ID:eX6AWpPB.net(2)
参照画像を絶対パスにしたら表示できましたが、全画像を絶対パスへと補完できるとは言え気持ち悪いです。
相対パスで書くと実行時に文字化けした状態で絶対パスになってるので文字コードの違いによるものでしょうか?

80
デフォルトの名無しさん[sage]   投稿日:2016/10/22 10:55:27  ID:O48rD9qT.net
/hoge(ASCII)/fuga(EUC)/hage(UTF-8)/moge(SJIS)/ みたいなパス作ってるとかね
Ruby ならあり得るわ
コメント1件

81
デフォルトの名無しさん[sage]   投稿日:2016/10/22 10:55:50  ID:jUJZAwsX.net(2)
文字化け?

82
デフォルトの名無しさん[sage]   投稿日:2016/10/22 19:50:27  ID:8CeWG7Cb.net(2)
パスの各コンポーネントをそれぞれcapitalizeしたいと思ったら
path.split('/').map(&:capitalize).join('/')
みたいにするしかないですか?

ありがちな処理なのでもっとあっさり書く方法があったりしないかなって

83
デフォルトの名無しさん[sage]   投稿日:2016/10/22 20:00:43  ID:jUJZAwsX.net(2)
ありがちなの?ないないでしょ

84
デフォルトの名無しさん[sage]   投稿日:2016/10/22 20:10:25  ID:8CeWG7Cb.net(2)
英語圏の人ならわりとやるんじゃないかなあと思ったんですが
そうでもないのかな

85
デフォルトの名無しさん[sage]   投稿日:2016/10/23 01:50:27  ID:VGMahutR.net
>80自己解決です

Cygwin + Vimでutf-8に設定したら幸せになれました

86
デフォルトの名無しさん[sage]   投稿日:2016/10/23 21:51:04  ID:ePWxsG1g.net
でかいファイルをシーケンシャルで読む時にIO#readでちまちま読むとえらい遅いけど
別スレッドである程度まとまったブロックとして読み込んでバッファリングするようにすると速くなる
でもこのコードを書くのはかなり面倒・・・非同期な読み書きを簡単に実現してくれる
ライブラリとかないですか?

87
デフォルトの名無しさん[sage]   投稿日:2016/10/24 06:15:31  ID:o4tpRTmI.net
dxrubyでスプライトを敵という配列、味方という配列にそれぞれプッシュして入れてます。
敵との距離が一定以下になれば味方が最寄りの敵を攻撃するようにしたいです。どうすれば良いですか?
コメント1件

88
デフォルトの名無しさん[sage]   投稿日:2016/10/24 08:43:55  ID:b4iOClrl.net
>87
一対の味方の敵の位置ベクトルをそれぞれa, bとすると、aとbの距離は|a-b|。
味方と敵はそれぞれ複数いるので、一番素直な計算なら(味方の総数)×(敵の総数)通りのペア全てに対して上式で距離を求め、距離が閾値以下かどうかを判定してやればいい。
疑似コードで書けばこんな感じ。
for a in 味方の位置ベクトルの配列
 for b in 敵の位置ベクトルの配列
  if |a-b| < 閾値 then aがbを攻撃する

89
デフォルトの名無しさん[sage]   投稿日:2016/10/24 09:04:08  ID:8wVQUY50.net
ありがとうございます。
あれから思いつきで攻撃判定用にスプライトに円を書いてSprite.check(味方,敵)をやってたのですが、こちらのほうが軽くていいですね。
こちらに書き換えてみたらうまくいきました。

90
デフォルトの名無しさん[]   投稿日:2016/10/26 21:15:33  ID:hpPrYAZA.net(3)

91
デフォルトの名無しさん[]   投稿日:2016/10/26 21:18:43  ID:hpPrYAZA.net(3)
str = " I am a boy "
puts str.split(" ")
とすると
I
am
a
boy
と出力されます。
puts str.sizeとすると
全ての文字数を数えてしまいます。
一単語ずつ文字数を数えて出力するには
どうしたらいいでしょうか。
コメント1件

92
デフォルトの名無しさん[sage]   投稿日:2016/10/26 21:25:19  ID:Vi7enIW1.net(2)
>91
puts str.split(" ").size

93
デフォルトの名無しさん[sage]   投稿日:2016/10/26 21:31:21  ID:3haCvHGL.net
puts str.split(" ").map(&:size)
puts str.split(" ").map {|x| x.size }

94
92[sage]   投稿日:2016/10/26 21:33:58  ID:Vi7enIW1.net(2)
あ、単語の数じゃないのね失礼w

95
デフォルトの名無しさん[]   投稿日:2016/10/26 21:44:17  ID:hpPrYAZA.net(3)
できました。ありがとうございます。

96
デフォルトの名無しさん[sage]   投稿日:2016/10/27 00:41:35  ID:WMnZ+0Yu.net
>90-91
2chのバグだろ

書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" を、\" とエスケープすれば、どうだろう?

97
デフォルトの名無しさん[]   投稿日:2016/10/27 10:32:10  ID:2MnkRHxj.net(3)
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  ID:2MnkRHxj.net(3)
もう一つお聞きしたいです。
空の配列に対してarr[810] = object
とすると、arr[0]に入ってしまいます。
試しに、あらかじめ、配列の全要素に0とかを代入してやると正しい位置に入ります。
insertメソッドを使ってみても同様でした。
配列の長さが予めわからない場合、これだとできない気がするのでなるべくこの方法は取りたくありません。
スマートに挿入する方法は無いですか?
コメント2件

99
デフォルトの名無しさん[]   投稿日:2016/10/27 12:21:56  ID:2MnkRHxj.net(3)
>98に補足
現在の配列の添字の最大数を超えて挿入したときの挙動はpushみたいでした。

100
デフォルトの名無しさん[sage]   投稿日:2016/10/27 13:09:46  ID:AljoQzp1.net
arrにはUnitsが入っててUnitsにはdrawがないから。
配列の話は君の勘違いでしょう
コメント1件

101
デフォルトの名無しさん[sage]   投稿日:2016/10/27 21:29:01  ID:4hI3qXiG.net(3)
プログラムゲームをやっていたら
以下のような問題が出たのですが
for i in 4..0 do と書いてもダメなようで
どのようにすれば良いのでしょうか?

#4から0を改行区切りで出力してください

for i in 4..0 do
puts i
end
コメント2件

102
デフォルトの名無しさん[sage]   投稿日:2016/10/27 21:33:26  ID:IpcVW8ex.net(3)
>101
(1) 出力するときに 4-i を出力する
(2) Integerクラスで使えそうなメソッドがないか探す
好きな方を選べ

103
101[]   投稿日:2016/10/27 22:06:29  ID:4hI3qXiG.net(3)
下のコードで動きましたが

(0..4).to_a.reverse.each do |i|
puts i
end

iをデクリメントすることができないとか
ちょっと衝撃でした

最近はオブジェクトを操作するんで
for文なんて使わないでしょうけど
コメント1件

104
デフォルトの名無しさん[sage]   投稿日:2016/10/27 22:13:34  ID:IpcVW8ex.net(3)
>103
Range クラスの説明を読め

105
デフォルトの名無しさん[sage]   投稿日:2016/10/27 22:42:19  ID:qlBkdymK.net(2)
上で書かれてるようにIntegerの4.downto(0)でどーぞ
より汎用的なのが欲しかったらstepを使ってね

106
101[]   投稿日:2016/10/27 22:55:48  ID:4hI3qXiG.net(3)
PHPなら

for ($count = 4; $count > 0; $count--){

}

と、直感的に書けるのに
Rubyってそういう言語なんだなと思いました
コメント2件

107
デフォルトの名無しさん[sage]   投稿日:2016/10/27 23:03:14  ID:qlBkdymK.net(2)
>98
DXRuby使ったことないから変なこと言ってるかもだけどHashとかと勘違いしてる可能性はない?
少なくともArrayは指定した要素数なければ自動的に拡張されるはずだし、リファレンスマニュアルにもそう書いてる

108
デフォルトの名無しさん[sage]   投稿日:2016/10/27 23:14:12  ID:IpcVW8ex.net(3)
>106
それは直感的というんじゃなくて、「PHPに慣れてる人から見れば」というだけだ
PHPのような書き方のループをほとんど使わない言語はたくさんある

109
デフォルトの名無しさん[]   投稿日:2016/10/27 23:52:33  ID:HseNjWnT.net
>106
直感的といいながらそれだと0が出力されない件について。

>101「4から0を改行区切りで出力してください」

110
デフォルトの名無しさん[sage]   投稿日:2016/10/28 00:28:10  ID:W/QcN0Ng.net
これは恥ずかしい直感w

俺ならこうする
puts (0..4).to_a.reverse
コメント1件

111
デフォルトの名無しさん[sage]   投稿日:2016/10/28 00:30:51  ID:hY3IWwKu.net
PHPは、JSよりも、クソだろ

Rubyでは、ほとんどバグを作ることはない。天国

112
デフォルトの名無しさん[sage]   投稿日:2016/10/28 02:06:17  ID:hybKxCis.net
>110
to_aしてreverseはこねくり回しててキモい

113
デフォルトの名無しさん[sage]   投稿日:2016/10/28 16:37:59  ID:Gcdt9agW.net
>100解決しましたありがとうございます

114
デフォルトの名無しさん[sage]   投稿日:2016/10/29 13:16:09  ID:Z9R3Bpkc.net(2)
複数のEnumerableを同期させる一般的でエレガントな書き方って何?
元ネタが無限List同士の足し算なんで[]は使えない。
Lisp系のmapのように複数のEnumerableで要素毎に演算させたいのだけど。

一般的とかエレガント、とかいうのは言葉の綾なので
俺ならこうするっていうコードでいいです。
コメント1件

115
デフォルトの名無しさん[sage]   投稿日:2016/10/29 13:30:26  ID:Y7alBFBP.net(2)
>114
まずは自分がサンプル出してみようぜ
イマイチ何をしたいのか分からないんで
コメント1件

116
デフォルトの名無しさん[sage]   投稿日:2016/10/29 13:47:23  ID:pNJKjv6A.net
Lazy#zip とは違うん?
コメント1件

117
114[sage]   投稿日:2016/10/29 15:46:26  ID:Z9R3Bpkc.net(2)
>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の要素同士の演算をやりたくて、
[]を使わないコードの一般的な書き方。
コメント1件

118
デフォルトの名無しさん[sage]   投稿日:2016/10/29 15:56:09  ID:Y7alBFBP.net(2)
>117
だったら >116 の通りだね
無限だったら Enumerable::Lazy#zip だし、有限なら Enumerable#zip
コメント1件

119
デフォルトの名無しさん[sage]   投稿日:2016/10/29 23:44:35  ID:FqWL80JH.net
a= 1.step.lazy
b= 2.step.lazy
p a.zip(b).map{|(x,y)|x+y}.take(10).force
こんな感じかな
コメント1件

120
デフォルトの名無しさん[sage]   投稿日:2016/10/30 06:16:43  ID:6aoQoQ7p.net
いま友人と競技プログラミングのようなことをしているのですが
処理速度にインデントの有無や変数名・メソッド名の長さは影響するのでしょうか?
コメント2件

121
デフォルトの名無しさん[sage]   投稿日:2016/10/30 07:22:50  ID:E1a/AFOu.net
>120
極端な長さ(100万文字とか)でない限りは無視できるレベル
コメント1件

122
デフォルトの名無しさん[sage]   投稿日:2016/10/30 07:33:28  ID:3gvxzMHV.net
>120
標準添付ライブラリの benchmark で測ってみ
コメント1件

123
114[sage]   投稿日:2016/10/30 12:14:06  ID:EmeJsRHl.net
>118
>119
ありがとうございました。
元ネタも119のやり方でいけることを確認しました。
zipの使い方はもう少し勉強してみます。

124
デフォルトの名無しさん[]   投稿日:2016/10/30 13:42:37  ID:3A6g5SNv.net
>121
>122
ありがとうございます
短くしたりして10回行った平均タイム計測して比較していたのですが
言われてみれば短くなったような気がするけど変わってないような気もする程度で困っていました
ほんとうにありがとうございました

125
デフォルトの名無しさん[sage]   投稿日:2016/10/30 17:08:51  ID:DhcMHpiw.net(2)
symbolのhashがぶつからなければ遅くならない

126
デフォルトの名無しさん[sage]   投稿日:2016/10/30 17:10:16  ID:DhcMHpiw.net(2)
つまりひとつひとつの文字数を気にするより
変数名・メソッドの総数が(それぞれ数文字程度でも何億個もあれば)問題

127
デフォルトの名無しさん[sage]   投稿日:2016/11/01 03:29:08  ID:Y1KW6BLy.net
下の例文みたいにバッククォート文の中で新たにruby動かして文字を表示させて、
そのバッククォート文の帰り値をさらに表示させたんですが、
えらくquoteされてて、帰り値を他の操作に使うには扱いにくいです
なんとかして元に戻せないでしょうか

例文
p `ruby -e 'p "what \n time \\n is \\\n it"'`

128
デフォルトの名無しさん[sage]   投稿日:2016/11/01 07:11:46  ID:LAzD7QHV.net
普通にeval使えばいいんじゃないか

129
デフォルトの名無しさん[sage]   投稿日:2016/11/01 13:46:39  ID:jrgGST5A.net
pやppだとpretty-printするから
そのまま出力したい場合はputsとかIO#writeで

130
デフォルトの名無しさん[sage]   投稿日:2016/11/02 08:27:48  ID:haJxcE0h.net
p は美しくないぞ

131
デフォルトの名無しさん[sage]   投稿日:2016/11/02 14:27:05  ID:tET8fuT+.net
amazon apiで在庫検知したのどうやってツイッターにpostすればいいんですか^^;

132
デフォルトの名無しさん[sage]   投稿日:2016/11/02 16:49:50  ID:db1quxwb.net
twipy

133
デフォルトの名無しさん[]   投稿日:2016/11/03 08:10:12  ID:lfIkemy8.net(3)
pp使うときってrequire 'pp'するじゃないですか?

でもppなんて通常デバッグ用ですよね?
一時的にrequireするだけでソースコードに残さないですよね?
そんなものをいちいち書きたくありません。

.rubyrc みたいなのでrequire 'pp'書いておけば
どのスクリプトからでも使えるよみたいなのないですか?

Railsの話ではありません

134
デフォルトの名無しさん[sage]   投稿日:2016/11/03 10:30:21  ID:57gZHyJM.net
コマンドラインオプションでええやん

135
デフォルトの名無しさん[sage]   投稿日:2016/11/03 10:51:02  ID:6FeMk1RE.net
import .rubyrc

136
デフォルトの名無しさん[sage]   投稿日:2016/11/03 13:29:30  ID:lfIkemy8.net(3)
なさそうですね。ありがとうございました。

137
デフォルトの名無しさん[sage]   投稿日:2016/11/03 17:22:53  ID:DhApkK4z.net
環境変数RUBYOPTにオプションを設定する
-rpp とか指定しておけばいい
コメント1件

138
デフォルトの名無しさん[sage]   投稿日:2016/11/03 19:08:39  ID:lfIkemy8.net(3)
>137
動きました。ありがとうございました。
これでコードレビューで、使ってないライブラリの
requireをコミットするんじゃねーよってドヤ顔できます。

139
デフォルトの名無しさん[sage]   投稿日:2016/11/04 08:04:24  ID:je13exBR.net
pry 使え

140
デフォルトの名無しさん[sage]   投稿日:2016/11/05 09:03:33  ID:3jWRFMI3.net(12)
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
コメント1件

141
デフォルトの名無しさん[sage]   投稿日:2016/11/05 09:08:44  ID:3jWRFMI3.net(12)
あともう一つ。

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
デフォルトの名無しさん[sage]   投稿日:2016/11/05 09:20:04  ID:g4s/HAgH.net(4)
>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
コメント1件

143
デフォルトの名無しさん[sage]   投稿日:2016/11/05 09:26:45  ID:CJv/XjYq.net(2)
古いrubyにはないけど取得だけなら
Hash#dig

144
デフォルトの名無しさん[sage]   投稿日:2016/11/05 11:27:15  ID:3jWRFMI3.net(12)
>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で簡単にオブジェクトして返すことができるのですが。
コメント1件

145
デフォルトの名無しさん[sage]   投稿日:2016/11/05 13:12:14  ID:g4s/HAgH.net(4)
>144
RubyはHashをそんなに使わないしね
JavaScriptで簡単に書けるパターン「も」あるよってだけだし
コメント1件

146
デフォルトの名無しさん[sage]   投稿日:2016/11/05 13:35:55  ID:3jWRFMI3.net(12)
> RubyはHashをそんなに使わないしね
では何を使うんですか?と聞かれたら
オブジェクト(クラスのインスタンス)って答えるのだろうけど
JavaScriptではハッシュとオブジェクトは同じもので

class A {
 constructor() {
  this.name = "name"
 }
}

foo({name}) {
 console.log(name);
}

foo(new A())

みたいなことも出来ますよ。
なのでHashをそんなに使わないっていうのは
あまり理由になっていません。
コメント1件

147
デフォルトの名無しさん[sage]   投稿日:2016/11/05 13:39:51  ID:3jWRFMI3.net(12)
Rubyでもみたいな事したいってあると思いますがね。

keyword = params[:keyword]
page = params[:page]
limit = params[:limit]

じゃなくて↓こう書きたいとか。

keyword, page, limit = request.params
コメント2件

148
デフォルトの名無しさん[sage]   投稿日:2016/11/05 13:55:01  ID:g4s/HAgH.net(4)
>146
そうですか、へーって感じですね
あとはJavaScriptスレでどうぞ
ここは煽りスレじゃないんで

149
デフォルトの名無しさん[sage]   投稿日:2016/11/05 15:03:39  ID:3jWRFMI3.net(12)
煽りじゃなくて質問ですよw

RubyでJavaScriptのクロージャーみたいなのを
書く簡単な方法はないでしょうか?

let func = i => i+1

func(1) // 2
コメント2件

150
デフォルトの名無しさん[]   投稿日:2016/11/05 15:12:29  ID:fKvWQoRX.net
>147
そういうのはRubyの言語仕様でやるのではなくてRailsなどがそういったオブジェクトを用意すべきだと思う。
コメント1件

151
デフォルトの名無しさん[sage]   投稿日:2016/11/05 15:23:37  ID:3jWRFMI3.net(12)
>150
言語仕様でやらないと無理だと思うよ。

代入先の変数名を関数が知ることは出来ないでしょ?

まあPerlみたいに、スカラー(単数の変数)に代入するか
リスト(要は配列)に代入するかを関数の中で知ることができる言語があるから、
"言語仕様に"そういうことがあれば関数が知ることができるかもしれないけど。
(見ての通り言語仕様があることが前提となってる)

ちなみにPerlの場合は、

sub foo { wantarray ? 1 : 2}

みたいに書くと以下のようになる。
(通常は配列として適したものを返すために使うべき)

$value = foo; # 2
@value = foo; # 1

wantarrayでどの型(正確に言うとコンテキスト)が要求されているかを
foo関数の中で知ることができるのだけど、同じように「どの変数名に代入しようとしているか?」を
知ることが出来ないと、引数省略して変数に入れることは出来ない。
コメント1件

152
デフォルトの名無しさん[sage]   投稿日:2016/11/05 16:01:00  ID:9rWJk3qM.net(3)
>149
初心者だけど
Procになるのかな

func = lambda { |i| i + 1 }
func.call(1) => 2

Kernel#lambdaはProcを作る方法の一つで、ほかにもいくつかあってそれぞれ特徴があるよ
あと呼び出しのfunc.call()はfunc.()とちょっと略しても書ける

>151
便利そうだけどRubyにはないっぽい?
あと言語仕様でこうあるべきだイヤそうじゃない
みたいなのをここでやられても困るよ
コメント1件

153
デフォルトの名無しさん[sage]   投稿日:2016/11/05 16:07:31  ID:3jWRFMI3.net(12)
>152
言語仕様の話を始めたのは俺じゃないし。
言語仕様でなければ実現不可能だろうけど
別に言語仕様である必要はない。

JavaScriptなんて言語仕様になったけれども、対応してないブラウザでも
使えるようにするために、トランスラパイラを文法を変換したりしているからね。
Rubyの世界でもそういう改良版Rubyを使うとかいう方法でもいいのよ。

ようはより短く書く方法を探しているだけ。
コメント1件

154
デフォルトの名無しさん[sage]   投稿日:2016/11/05 16:09:40  ID:9rWJk3qM.net(3)
>153
>ようはより短く書く方法を探しているだけ。
だったら他の話には反応しなくて良いんだよ

ところでクロージャーみたいなのの話はどうでもいいんだろうか
俺答え損だった?

155
デフォルトの名無しさん[sage]   投稿日:2016/11/05 16:26:05  ID:3jWRFMI3.net(12)
> 俺答え損だった?

その答え自体は知ってたけど、
それがRubyでの一番短い書き方だって
わかったので無駄ではないよ。

lambda とか call とかいう単語を
省くことは出来ないのね。
コメント1件

156
デフォルトの名無しさん[sage]   投稿日:2016/11/05 16:34:09  ID:g4s/HAgH.net(4)
>155
> lambda とか call とかいう単語を
> 省くことは出来ないのね。
だからなに?
質問じゃないじゃん
JavaScriptに有利な例題だけあげてJavaScritpマンセーしてるだけじゃん

そういうのは別スレでやれ
コメント2件

157
デフォルトの名無しさん[sage]   投稿日:2016/11/05 16:36:52  ID:p7aXJL/r.net
っ CoffeeScript

158
デフォルトの名無しさん[sage]   投稿日:2016/11/05 16:57:35  ID:u9ZZUUBm.net(2)
>145
いつの話だよ
今のRubyはRailsのせいでHashまみれの糞ビッチだよ

159
デフォルトの名無しさん[sage]   投稿日:2016/11/05 17:18:22  ID:3jWRFMI3.net(12)
>156
> 質問じゃないじゃん

え? 質問は>149に書いたとおり
クロージャーみたいなのを簡単に書く方法ですが?

なんで質問に対する回答にコメントを
質問だって勘違いしてるの?

それとも回答にコメントしたらいけないって
言いたいのかな?

160
デフォルトの名無しさん[sage]   投稿日:2016/11/05 17:25:06  ID:3jWRFMI3.net(12)
>156
> JavaScriptに有利な例題だけあげてJavaScritpマンセーしてるだけじゃん

普段JavaScriptで書いていて、JavaScriptでもっと短く書くことができる。
無駄のないコードを書くのが好きなのでRubyでももっと短く書きたい。

Rubyは初心者だが、プログラミングは初心者ではなく検索能力もあるので
Rubyで同等またはRubyの方が短く書くことができるものであれば
大抵はすぐに見つけてしまう。だからそういうものは質問しない。

仮にRubyではそれができないのであれば検索しても見つかるはずがない。
見つかったものは質問しないが、見つからないものは質問するしかない。

だから単に俺が見つけられないものを質問しているだけなんだが、
それが結果的にRubyでは無理なことになってしまってるだけだよ。

161
デフォルトの名無しさん[sage]   投稿日:2016/11/05 17:42:40  ID:u9ZZUUBm.net(2)
lambdaは->とも書ける
俺は書く位置が気持ち悪くて大嫌いだけどね
Rubyが独立した関数式を持たないのは有名な欠点として昔から言われてることなので、今更言われてもそうだね不便だねとしか

162
デフォルトの名無しさん[sage]   投稿日:2016/11/05 17:55:37  ID:3jWRFMI3.net(12)
http://qiita.com/sudahiroshi/items/c51618dec0f56a54670e

> # 引き数が1つ
> foo = -> ( x ) { x * x }
> foo[ 5 ] # => 25
>
> # 以下のように呼び出すことも可能です
> foo.( 5 ) # => 25
> foo.call 5 # => 25

なんだ。lambdaいらねーじゃん。callいらねーじゃん。
こういうのを教えてくれよ。

> 今更言われてもそうだね不便だねとしか

そんなこと言われてもね。今更Ruby初心者といわれても
始めたばかり。どうしろと?
コメント1件

163
デフォルトの名無しさん[sage]   投稿日:2016/11/05 18:18:33  ID:9rWJk3qM.net(3)
>162
callは略せるって上に書いたでしょ
lambdaの方はしらんかったけどたしかにキモいなこれ
callの方も結構ヘンだけど
あと余計なことには反応しなくて良いんだってば

164
デフォルトの名無しさん[]   投稿日:2016/11/05 18:20:42  ID:VSrxz5YG.net
あなたRubyやんないほうがいいんじゃない?
まあ仕事でRubyのプロジェクトに入っただけかもしれないけど。

165
デフォルトの名無しさん[]   投稿日:2016/11/05 18:45:31  ID:M1fQHNFf.net
喧嘩すんなよRubyが糞なのは普遍なんだから

わかったならPython使え情弱どもが

166
デフォルトの名無しさん[sage]   投稿日:2016/11/05 18:49:13  ID:szmfxvT7.net
> 普段JavaScriptで書いていて、JavaScriptでもっと短く書くことができる。

フフッてなったw

167
デフォルトの名無しさん[]   投稿日:2016/11/05 19:25:21  ID:HMFIz/40.net
[5,2,3].sort # =>
ってソースに書いておくと
[5,2,3].sort # => [2, 3, 5]
みたいに置き換えてくれるツールがあったら教えてください

168
デフォルトの名無しさん[sage]   投稿日:2016/11/05 22:43:25  ID:LJBtWuSU.net(2)
存在するファイルは上書きせずにファイルをコピーってどうやるの?

169
デフォルトの名無しさん[sage]   投稿日:2016/11/05 22:57:00  ID:CJv/XjYq.net(2)
ダイヤお姉ちゃんに頼む

170
デフォルトの名無しさん[sage]   投稿日:2016/11/05 23:00:12  ID:LJBtWuSU.net(2)
KurosawaDaiya.copy(from, dest)
#=> NameError: uninitialized constant KurosawaDaiya

駄目でした

171
デフォルトの名無しさん[sage]   投稿日:2016/11/06 00:59:43  ID:Mq0g4tm5.net(3)
それはお姉ちゃんをコピーしようとしてるのでは

172
デフォルトの名無しさん[sage]   投稿日:2016/11/06 03:07:23  ID:8WadcDvl.net(3)
foo(
 a: data['a'],
 b: data['b'],
 c: data['c'],
 d: data['d']
)

これをもっと短く書く方法を教えて下さい!
コメント1件

173
デフォルトの名無しさん[sage]   投稿日:2016/11/06 09:09:40  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
デフォルトの名無しさん[sage]   投稿日:2016/11/06 09:10:35  ID:6TZQqHcY.net(3)
>172
Rails使ってるなら

foo(data.symbolize_keys)
コメント1件

175
デフォルトの名無しさん[sage]   投稿日:2016/11/06 09:28:36  ID:rGVVvSQ9.net
foo(**data)
コメント1件

176
デフォルトの名無しさん[sage]   投稿日:2016/11/06 12:09:01  ID:8WadcDvl.net(3)
>174 >175
dataにはa, b, c, d 以外も含まれているので
それではだめなのです。
コメント2件

177
デフォルトの名無しさん[sage]   投稿日:2016/11/06 13:13:30  ID:CGfTBBGj.net
>176
slice

178
デフォルトの名無しさん[sage]   投稿日:2016/11/06 13:37:48  ID:+j3xqinH.net
こんなもんfooのほうを変えるべきだろう

179
デフォルトの名無しさん[sage]   投稿日:2016/11/06 13:41:52  ID:6TZQqHcY.net(3)
>176
後出しでそんなこと言われてもねぇ…
そもそも foo で何をやりたいかにもよるし

180
デフォルトの名無しさん[sage]   投稿日:2016/11/06 14:28:52  ID:8WadcDvl.net(3)
あ、sliceで出来たのでもういいです
またなんかあったら聞きます

181
デフォルトの名無しさん[sage]   投稿日:2016/11/06 15:57:30  ID:6TZQqHcY.net(3)
> あ、sliceで出来たのでもういいです
こういう余計な一言はやめた方がいいよ

182
デフォルトの名無しさん[sage]   投稿日:2016/11/06 16:01:04  ID:YPGx/bgn.net
2ちゃんではよくあること
あいさつ代わり

183
デフォルトの名無しさん[sage]   投稿日:2016/11/06 18:23:47  ID:Mq0g4tm5.net(3)
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
デフォルトの名無しさん[sage]   投稿日:2016/11/06 18:32:02  ID:NZCpJm/D.net
そんな馬鹿みたいなクラスは作らないから答えようがない

185
183[sage]   投稿日:2016/11/06 19:02:10  ID:Mq0g4tm5.net(3)
Rubyだと全部参照渡しだし = なんかは使わなそうですね
素直にメソッド作ります

186
デフォルトの名無しさん[]   投稿日:2016/11/08 01:53:05  ID:M6Rn2+El.net(2)
確かRubyには、scala, Haxe みたいな、switchでのパターンマッチが無いよな

そもそも動的言語で、型によって分岐するのは、設計がおかしい

ちゃんと設計すれば、継承・インターフェース・ダックタイピングのオーバーロードで、
自然と型による分岐が無くなるはず

187
デフォルトの名無しさん[]   投稿日:2016/11/08 03:24:23  ID:107xoCwk.net
黒アワビ濡れ濡れお色気ビラビラ仕様のRuby
公開おなほ
すとーるまんこはかきたれ

188
デフォルトの名無しさん[sage]   投稿日:2016/11/08 06:17:48  ID:ykrZTa7U.net(3)
> 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\=/)
コメント1件

189
デフォルトの名無しさん[sage]   投稿日:2016/11/08 11:49:52  ID:ZBAGJV1u.net(2)
つぎのかたどうぞ

190
デフォルトの名無しさん[sage]   投稿日:2016/11/08 14:05:34  ID:LTPhc021.net(2)
特定のウェブページを毎日チェックして、アルバイト、居酒屋 など、決まった文字列が掲載されてたら通知するandroidアプリを作りたいんですが、こういうの何て言いますか?

191
デフォルトの名無しさん[sage]   投稿日:2016/11/08 14:21:37  ID:RD7eA5MT.net
バイト探し

192
デフォルトの名無しさん[]   投稿日:2016/11/08 14:26:41  ID:ZBAGJV1u.net(2)
スクレイピング
ボット
PIM
コメント1件

193
デフォルトの名無しさん[sage]   投稿日:2016/11/08 15:04:04  ID:LTPhc021.net(2)
>192ありがとうございます

194
デフォルトの名無しさん[sage]   投稿日:2016/11/08 16:52:52  ID:ic1oOtKi.net
ちなみにスクレイピングは逮捕例もあるよ

195
デフォルトの名無しさん[sage]   投稿日:2016/11/08 19:51:30  ID:M6Rn2+El.net(2)
>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\=/)
コメント2件

196
デフォルトの名無しさん[sage]   投稿日:2016/11/08 19:55:50  ID:ykrZTa7U.net(3)
>195
ありがとうございます!!!!!!!!!

197
デフォルトの名無しさん[sage]   投稿日:2016/11/08 22:18:28  ID:ykrZTa7U.net(3)
>195
無事に動きました!
助かりました、ありがとうございます

198
デフォルトの名無しさん[sage]   投稿日:2016/11/10 06:58:06  ID:MLyRIdhy.net
基本的な部分なのですが
hashオブジェクトをto_aした場合に返値される配列の順序は
hashオブジェクトにキーを設定した順序でいいのですか?

199
デフォルトの名無しさん[sage]   投稿日:2016/11/10 08:00:08  ID:+0vOVL7/.net(3)
極端に古いバージョンでない限りはそれでいい

200
デフォルトの名無しさん[sage]   投稿日:2016/11/10 12:26:51  ID:Sha7NYgb.net
実装はそうなってるけど仕様で保証されてたっけ?

201
デフォルトの名無しさん[sage]   投稿日:2016/11/10 13:33:15  ID:dxAJlx69.net(2)
今のバージョンは保証してる

202
デフォルトの名無しさん[sage]   投稿日:2016/11/10 14:27:24  ID:LGdObFSz.net
どうゆう理由でハッシュキーの順序を保証するようになったんかね
他の言語では基本順序は保証されていないよね(´・ω・`)
コメント1件

203
デフォルトの名無しさん[sage]   投稿日:2016/11/10 14:47:43  ID:dxAJlx69.net(2)
>202
>どうゆう理由で

エンジンが変わった

204
デフォルトの名無しさん[sage]   投稿日:2016/11/10 15:04:32  ID:o6QUnq5t.net
順序に依存したコードを書きたい人の声が大きかったから

205
デフォルトの名無しさん[sage]   投稿日:2016/11/10 22:33:15  ID:+0vOVL7/.net(3)
順序を保持するためだけにハッシュ表とは別にわざわざ無駄な線形リストを持ってるんだぞ
決して、たまたま順序通りになるようなアルゴリズムを選んだとか、
順序通りになるようにハッシュ表の実装を工夫したとかではなく、無理に明示的に順序を持たせてある
コメント1件

206
デフォルトの名無しさん[]   投稿日:2016/11/10 23:18:15  ID:pEVMYV3p.net
一般的には、Hashには2種類ある

Hash は順序なし。
Ordered_Hash は追加した順番で、順序あり

207
デフォルトの名無しさん[sage]   投稿日:2016/11/10 23:44:37  ID:+0vOVL7/.net(3)
順序付きのハッシュ表自体が一般的ではないだろ
RubyのHashは>205で書いたとおりハッシュ表とは無関係に順序持たせてるし、
.NETのSortedDictionaryみたいに辞書の実装で要素をキーでソートされた状態で持つのはよくあるけど
あれはハッシュ表じゃなくて二分木やバイナリサーチだし

208
デフォルトの名無しさん[sage]   投稿日:2016/11/11 03:16:24  ID:wVch1D/r.net
yield の意味が理解できません
例えば下記ってどんなことしてるんでしょうか?

https://github.com/fluent/fluentd/blob/master/lib/fluent/plugin/...

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

二つあるけどさっぱりです
コメント1件

209
デフォルトの名無しさん[sage]   投稿日:2016/11/11 07:13:41  ID:LSv6brFn.net(2)
>208
ブロック付きでこのメソッドを呼ぶと、yield のタイミングでブロックが実行される

parse('hoge') { |t, r| p [t, r] }

という風にすると、yield の内容が表示される

210
デフォルトの名無しさん[sage]   投稿日:2016/11/11 08:58:07  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
デフォルトの名無しさん[sage]   投稿日:2016/11/11 09:55:02  ID:e7T2VXvj.net
pythonのyieldとはだいぶ違ってた

212
デフォルトの名無しさん[sage]   投稿日:2016/11/11 14:39:07  ID:kzNknik+.net
初めて書き込みます。windowsで、rubyをインストールしました。helloruby.rbと書くと、内部コマンドまたは〜というエラーメッセージが出ます。何が原因だと思いますか?
コメント1件

213
デフォルトの名無しさん[sage]   投稿日:2016/11/11 18:33:52  ID:+0sZIajy.net
>212
エスパーするとパス通せ
コメント1件

214
デフォルトの名無しさん[sage]   投稿日:2016/11/11 18:58:09  ID:XRaelh1g.net
>213
返信ありがとうございます。
ruby -vではきちんとバージョンが表示されるのに、helloruby.rbと書くと内部コマンド〜とエラーメッセージが出ます。この場合どのようにしたら良いのでしょうか?自分なりに調べたのですが全く情報が出てこず…。初心過ぎる質問で申し訳ありません。
コメント1件

215
デフォルトの名無しさん[sage]   投稿日:2016/11/11 19:01:01  ID:UQPlBidt.net(2)
どのwindowsにどのruby入れてどんなエラーが出たか全部書いて
コメント1件

216
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:13:58  ID:JZCe9Y2P.net
最近の Windows は .rb を実行可能に出来るん?

217
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:18:26  ID:UQPlBidt.net(2)
それは普通に出来る

218
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:55:45  ID:xrgRbR8m.net
ruby helloruby.rb かな?

219
101[]   投稿日:2016/11/11 21:53:06  ID:goTatCVE.net
毎日定時帰りしたら首になりそう

■使用するプログラミング言語/ツール/特殊技術
・Ruby on Rails
・MySQL / PostgreSQLなどのデータベース技術
・Javascript(jQuery)の技術
・サーバ構築、管理の技術(AWS)
・HTML / CSSの技術(ウェブページのコーディング技術)

■月給20万〜
※経験・スキルを考慮のうえ、当社規定により優遇いたします。
※上記給与に、見込残業代35時間分43,000円分を含みます。
 (見込残業代 月35時間分を超過した場合は別途支給)
コメント4件

220
デフォルトの名無しさん[sage]   投稿日:2016/11/11 23:39:57  ID:N42G00o6.net
43,000 / 1.25 / 35 ≒ 980

221
デフォルトの名無しさん[sage]   投稿日:2016/11/11 23:46:59  ID:LSv6brFn.net(2)
この時代にjQueryはないわー
コメント1件

222
デフォルトの名無しさん[sage]   投稿日:2016/11/12 03:08:59  ID:SNnuUkOH.net(2)
月35時間残業して給料20万…
しかも手取りですら無いという
これはヤバイわ

223
デフォルトの名無しさん[sage]   投稿日:2016/11/12 03:41:54  ID:fAGx8Up8.net(5)
>221
RailsでjQuery以外を使おうと思ったら苦難の道で?w

224
デフォルトの名無しさん[sage]   投稿日:2016/11/12 03:52:09  ID:fAGx8Up8.net(5)
訂正
RailsでjQueryの代わりに導入すべきと言われるフレームワークを使おうと思ったら苦難の道やで?

jQueryを含め単なるライブラリ程度であれば簡単に使えるけど
AngularとかReactとかJavaScriptのフロントエンドフレームワークを
組み合わせる方法をRailsは用意していない。

Rails 5でAPIモードというJavaScriptのフレームワークを使う前提のモードができたけれども、
ぶっちゃけこれRailsの便利な機能の多くが非推奨になりましたって言ってるようなもんだからねw
ビューがバッサリなくなって、コントローラーの機能も必要最小限になる。

その分をJavaScritフレームワークで実現するんだけど、Railsにはそれらと組み合わせる機能がかけている。
RailsでJavaScriptのテストはどうやれば良いんだ?レベル。
コメント1件

225
デフォルトの名無しさん[]   投稿日:2016/11/12 04:16:39  ID:eAhK3KJp.net
朝っぱらから気合い入った長文乙
コメント1件

226
デフォルトの名無しさん[sage]   投稿日:2016/11/12 04:22:33  ID:6wPviZ3t.net(2)
>219
35時間残業して43,000円にしかならないのか

227
デフォルトの名無しさん[sage]   投稿日:2016/11/12 04:25:14  ID:6wPviZ3t.net(2)
>224
どうせなんでもjsonで出し入れするんだから
viewなんていらないしrailsである必要すらない
コメント1件

228
デフォルトの名無しさん[sage]   投稿日:2016/11/12 04:33:26  ID:fAGx8Up8.net(5)
>225
あ、朝?

普段君が何時頃に起きなきゃいけない生活なのかがよく分かるわ。

こっちは会社まで徒歩でも30分。出社時間が一応10時で(基本的に残業なし)
Slackに書くだけで私用を理由に自宅作業したり早く退社してもOK
遅刻とかそういう概念もないんでw
コメント1件

229
デフォルトの名無しさん[sage]   投稿日:2016/11/12 04:36:08  ID:fAGx8Up8.net(5)
>227
> viewなんていらないしrailsである必要すらない

その通り。Railsの終焉が見えるよねw
ちなみに俺はRubyよりもJavaScriptの方が好き。

メインはJavaScriptで、その背後にあるサーバーは
なんでもいいという時代かな。
コメント1件

230
デフォルトの名無しさん[]   投稿日:2016/11/12 04:55:24  ID:W5RGEoAt.net

231
デフォルトの名無しさん[sage]   投稿日:2016/11/12 05:00:57  ID:fAGx8Up8.net(5)
>230
世の中にはかわいそうな会社があるねとしか
見てなかったwww

232
デフォルトの名無しさん[sage]   投稿日:2016/11/12 07:15:36  ID:UXa3WItJ.net
>229
だったらなんでRubyスレを覗いてるんだろうか?
嫌いなRubyを叩いて憂さ晴らしをしたいのかな?

233
デフォルトの名無しさん[sage]   投稿日:2016/11/12 07:54:30  ID:SNnuUkOH.net(2)
ちょっと上で暴れてたRuby使わなきゃならなくなったJS大好きなロリコンだろ
もう触るなよ

234
デフォルトの名無しさん[sage]   投稿日:2016/11/13 11:27:30  ID:8tp89YW7.net
本屋行ったらPython本増えたなあ
Rubyで機械学習って本書いたら…売れねえか

機械学習や人工知能という神風が吹いて国内でもPythonに完敗なんだろうな
コメント1件

235
デフォルトの名無しさん[sage]   投稿日:2016/11/13 11:52:13  ID:hnH+OR8d.net
マルチ誰得

236
デフォルトの名無しさん[sage]   投稿日:2016/11/13 12:15:30  ID:T5+9PjbV.net
>234
もう勝負は着いてるんだからみっともないことはやめなさい
この国のITはガラパゴス化した技術に拘って世界に取り残されるという失敗をさんざん繰り返してきたというのに、またその例を増やす気か

237
デフォルトの名無しさん[sage]   投稿日:2016/11/13 15:44:25  ID:e+lvJCbH.net
久々にリアル本屋行ってみたら
Rubyの棚よりPythonの棚の方が大きくなってた
胸熱

データサイエンティストのみなさんのおかげですωωω

238
デフォルトの名無しさん[]   投稿日:2016/11/13 20:44:27  ID:5YmDMkhP.net
Rubyってコンパイル型にできないの?
例えば Cなら、 cc hoge.c | ./a.out にすればインタプリタ型になるし、
実行ファイルも残る。
Rubyではコンパイルと実行を分割して実行ファイルを残す方法ってないのかな。

239
デフォルトの名無しさん[sage]   投稿日:2016/11/13 20:59:12  ID:miyqCymn.net
おます

240
デフォルトの名無しさん[sage]   投稿日:2016/11/14 02:10:30  ID:XIKx0ys+.net(2)
>219
同じことしているのに ニートの俺には給与ないんだけど・・・
あと最近はSwiftでスマホアプリ作って遊んでる

こんなの仕事でやったら闇落ちしそうなので プログラマとして働くつもりないけど
まぁそれ以前に、実務経験ないから雇ってもらえないねん _(:3 」∠)_=3
コメント1件

241
デフォルトの名無しさん[]   投稿日:2016/11/14 04:04:12  ID:OCTkBwGI.net
Rubyはいいと思うが、なかなか覚えられない。結局ちょっとした処理をしようと
すると、C#とかを引っ張り出してくる。Shell感覚で使えたら最高だと思うが
普通はmouseだし、Tool系はTCLだし。
Rubyって主にどういう場面でつかうんだ?
コメント3件

242
デフォルトの名無しさん[sage]   投稿日:2016/11/14 05:24:04  ID:esjkHDa1.net(2)
>240
ハローワークに、プログラミングを未経験・独学で勉強している人の募集も一杯ある
コメント1件

243
デフォルトの名無しさん[sage]   投稿日:2016/11/14 06:41:55  ID:aL/Lu1lD.net(2)
>241
今のRubyはRailsのDSLだよ
知らなかったの?

244
デフォルトの名無しさん[sage]   投稿日:2016/11/14 06:55:39  ID:5ieSClDh.net
>241
刑務所で講習用

245
デフォルトの名無しさん[sage]   投稿日:2016/11/14 07:01:01  ID:U3HMZCux.net(2)
>241
Unix 上でちょっとしたことをしたいとき用言語としてよく使うよ
まさに昔の Perl の代替

246
デフォルトの名無しさん[sage]   投稿日:2016/11/14 07:13:45  ID:aL/Lu1lD.net(2)
Rubyは入ってなかったり入っててもバージョンが古いことが多いからなあ
Perlの代わりに使うのは厳しいわ
コメント1件

247
デフォルトの名無しさん[sage]   投稿日:2016/11/14 07:37:53  ID:U3HMZCux.net(2)
>246
手元でやるだけのちょこっとしたことだから、ポータビリティは必要ない
ごく一部の例でいえば、何かが吐き出したlogファイルをサクッと解析させたりとかね

248
デフォルトの名無しさん[sage]   投稿日:2016/11/14 08:03:38  ID:esjkHDa1.net(2)
Ruby, Groovy は、DSL向き。
SASSも、Ruby

また、設定ファイルとしても読みやすいから、Chef, Puppet でも使われている

「たのしいRuby」など、良本が揃っているから、勉強しやすく、Java, C#ほど難しくない

また、Rubyから静的言語の、Elixir, Haxe, Kotlin などへ移りやすい
コメント1件

249
デフォルトの名無しさん[sage]   投稿日:2016/11/14 10:42:07  ID:AJSSB3HL.net(2)
>215

>214です。windows8にruby23-x64を入れました。
helloruby.rbと打つと、

’helloruby.rb’は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。

と出ます。
コメント1件

250
デフォルトの名無しさん[sage]   投稿日:2016/11/14 10:42:37  ID:AJSSB3HL.net(2)
認識させるにはどうしたらいいのでしょうか?
コメント1件

251
デフォルトの名無しさん[sage]   投稿日:2016/11/14 11:01:12  ID:CNrivUWZ.net(2)
perlの代わりならpython

rubyは見た目perlに似てるだけでperlの代わりにはならない

252
デフォルトの名無しさん[sage]   投稿日:2016/11/14 11:03:12  ID:CNrivUWZ.net(2)
>250
mingw/msys入れろ

253
デフォルトの名無しさん[sage]   投稿日:2016/11/14 11:28:33  ID:d18MPt7T.net
>249
ruby 〜スクリプトのパス/helloruby.rb
ってやってる?

254
デフォルトの名無しさん[sage]   投稿日:2016/11/14 11:36:27  ID:igQzh1Us.net(3)

255
デフォルトの名無しさん[sage]   投稿日:2016/11/14 11:40:58  ID:igQzh1Us.net(3)

256
デフォルトの名無しさん[sage]   投稿日:2016/11/14 11:49:25  ID:igQzh1Us.net(3)
コマンドプロンプトを開いて次の2行を実行

assoc .rb=Ruby.File
ftype Ruby.File="C:\(Rubyのあるpath)\ruby.exe" "%1" %*

・パスは適切なものを選ぶ
・管理者アカウントで実行 (runas /administrator とかでも可能)

257
デフォルトの名無しさん[sage]   投稿日:2016/11/14 12:42:24  ID:XIKx0ys+.net(2)
>242
うち 田舎やけん
そんなハイカラな仕事する会社ないんよ

258
デフォルトの名無しさん[sage]   投稿日:2016/11/14 18:36:58  ID:6IAxrkLB.net
Ruby → JavaScript, Python とかの互換が簡単にできて、
これらを取り込んでしまえばRubyにもそれなりの存在意義は
ある気がするな。逆は難しいだろうから。

259
デフォルトの名無しさん[]   投稿日:2016/11/15 02:36:49  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へ変換できればなあ
コメント2件

260
デフォルトの名無しさん[sage]   投稿日:2016/11/15 04:34:06  ID:sHZUXp5G.net
>259
(*'ω'*)それを君が開発すればイイジャマイカ スルメイカ

261
デフォルトの名無しさん[]   投稿日:2016/11/15 04:48:52  ID:ulUg8AFG.net
>259
Julia

262
デフォルトの名無しさん[]   投稿日:2016/11/17 21:43:20  ID:mx0eMjxm.net
今ってあれだよなElixir待ちって感じだよな
Pythonとの勝敗はほぼ付いてしまった。
ElixterはRuby互換あるといいな。

263
デフォルトの名無しさん[sage]   投稿日:2016/11/17 23:34:45  ID:iGNJFpBr.net
静的型検査のない関数型とかゴミカスだろ
コードの正しさが自明という関数型最大のメリットが半減してる

264
デフォルトの名無しさん[]   投稿日:2016/11/18 16:09:55  ID:vbdBJsNN.net
○ erlang
× elixir

erlangの良いところをつぶしたのがelixir

265
デフォルトの名無しさん[sage]   投稿日:2016/11/18 16:38:53  ID:1sC7EnMR.net
じゃあRuby3待ちも加えよう

266
デフォルトの名無しさん[sage]   投稿日:2016/11/20 15:31:53  ID:Nkcoggcj.net
Rubyの資格勉強をしていて
getsというのはダンディ板野なのではなく、
get-stringのことなのだと分かった。

267
デフォルトの名無しさん[sage]   投稿日:2016/11/21 09:22:12  ID:yuIFR8QG.net
>219
こんな規則なんの効力もないのに

268
デフォルトの名無しさん[sage]   投稿日:2016/11/21 09:37:40  ID:0N8j/p/K.net
>248
> Ruby, Groovy は、DSL向き。

どこからどう見てもRubyのコードなのに
それをDSLとか呼ぶのやめようぜw
doとか出てきた時点で萎える

269
デフォルトの名無しさん[]   投稿日:2016/11/22 11:31:16  ID:bGBSJtcd.net(5)
Windows7-Home Ruby 1.8.6

http://qiita.com/mogulla3/items/fbc2a46478872bebbc47
にある「1度に全体を読み込む」を使ってバイナリファイルを読み込&表示しました。

※目的のバイナリファイルはテキスト化すると1行&30文字程度
※プログラムコードは  File.rb で、コマンドプロンプトで ruby File.rb で実行

動作自体は上手く行ったのですが、動作時に「ピッ!」と音が毎回鳴ります。
これは何を意味しているのでしょうか?

270
デフォルトの名無しさん[sage]   投稿日:2016/11/22 11:32:44  ID:Pvp5yOqg.net
バイナリファイルなら0x07で音がでる
コメント1件

271
269[sage]   投稿日:2016/11/22 11:44:14  ID:bGBSJtcd.net(5)
>270
早速どうも。 バイナリファイルの性(さが)なんですね

272
デフォルトの名無しさん[sage]   投稿日:2016/11/22 11:56:40  ID:9QZ/pTkg.net
ベル文字(ベルもじ、BEL: bell character)またはベルコード(bell code)とは、制御文字の一種である

ベル文字は、ASCIIとUnicodeでは十進数で7、十六進数で0x07に割り当てられている。
キャレット記法では ^G と表され、Unicodeでは制御文字の図形表現として(U+2407)が定義されている

Rubyは実行環境に、RubyVMを使った、1.9以降を使った方がいい
コメント1件

273
269[sage]   投稿日:2016/11/22 12:10:26  ID:bGBSJtcd.net(5)
>272
なるほど。 新しいRubyを使ってみます。 今のRuby1.8.6 は応急のテスト用なので

274
デフォルトの名無しさん[]   投稿日:2016/11/22 14:28:44  ID:3UDTrTQV.net(2)
sprintf("%04d",15)の4の部分に変数を使いたい場合ってどうしたらいいんでしょう?

275
デフォルトの名無しさん[sage]   投稿日:2016/11/22 14:46:36  ID:E5xR5zcu.net
printf("%0*d", 4, 15)
コメント1件

276
デフォルトの名無しさん[]   投稿日:2016/11/22 15:06:37  ID:3UDTrTQV.net(2)
>275
できました。ありがとうございます。
よく見たら書いてありました (;^_^A
https://docs.ruby-lang.org/ja/latest/doc/print_format.html

277
デフォルトの名無しさん[]   投稿日:2016/11/22 22:40:50  ID:bGBSJtcd.net(5)
Windows7-Pro Ruby 2.3.1 (x64)

Ruby2.3.1をインストールしバージョンの確認ができましたが、毎回 cd でディレクトリを
変えるのが面倒なので、コマンドプロンプトのショートカットをbin内に作り、このプロパティの
作業ディレクトリを変更して直で作業できるようにしました。

ここで、ショートカットのアイコンを http://uproda.2ch-library.com/95426479z/lib954264.png
の宝石型にしたいのですが、この画像はどこに保存されているのでしょうか?
あるいはWebのどっかでDLできますか?
コメント1件

278
デフォルトの名無しさん[sage]   投稿日:2016/11/22 23:08:14  ID:qW+6ZAFd.net(2)
googleで画像検索してみたら?
コメント1件

279
277[sage]   投稿日:2016/11/22 23:12:23  ID:bGBSJtcd.net(5)
>278
したけど無かったです。 Windowsのアイコン一覧にも無かった

280
デフォルトの名無しさん[sage]   投稿日:2016/11/22 23:27:14  ID:qW+6ZAFd.net(2)
http://uproda.2ch-library.com/95426479z/lib954264.png を右クリックして保存でもいいな

281
デフォルトの名無しさん[sage]   投稿日:2016/11/22 23:50:51  ID:VrepQFzl.net
ruby.exeに埋め込まれてた気がする
アイコン選ぶときにexeって選べなかったっけ?
無理ならResource Hackerかなんかで抽出
コメント1件

282
デフォルトの名無しさん[sage]   投稿日:2016/11/23 00:00:26  ID:fCj7qIPS.net

283
277[sage]   投稿日:2016/11/23 00:34:35  ID:XRl7gwFc.net(2)
>281
ショートカット用です


>282
http://uproda.2ch-library.com/9542717c9/lib954271
http://uproda.2ch-library.com/9542717c9/lib954271.ico
共に見れないです。 というかDLキーを入力する欄が無い

284
デフォルトの名無しさん[sage]   投稿日:2016/11/23 01:06:25  ID:tyNVpJn+.net(2)

285
デフォルトの名無しさん[sage]   投稿日:2016/11/23 02:10:56  ID:tyNVpJn+.net(2)
>277
http://u1.getuploader.com/sample/download/11532/sample_11532.zip
rubyinstaller.org の画像を使って作ってみた 👀
Rock54: Caution(BBR-MD5:09d9d5ea29ae030fc5f15f1492842ada)

コメント1件

286
277[sage]   投稿日:2016/11/23 02:25:08  ID:XRl7gwFc.net(2)
>285
あんがと

287
デフォルトの名無しさん[sage]   投稿日:2016/11/24 13:46:49  ID:SaghWnm/.net(2)
replace.rbを実行すると、

source.datファイル
文字
#kokokara
書き換えたい文字
#kokomade
文字
て感じでコメントで囲まれた部分のみ書き換えたい。
どうすればいい?
コメント1件

288
デフォルトの名無しさん[sage]   投稿日:2016/11/24 14:14:50  ID:ZpQTd+Xn.net
buff = ''
File.open('source.dat'){|fh| buff = fh.read.sub( /(?=#kokokara)(.*?)(?>#kokomade)/m ){ '書き換え' } }

289
デフォルトの名無しさん[sage]   投稿日:2016/11/24 14:38:01  ID:SaghWnm/.net(2)
ありがとうございます

290
デフォルトの名無しさん[sage]   投稿日:2016/11/24 18:44:14  ID:v6KW5pDh.net
Timeをnewしたり加減算する時に都度丸めずとも
はじめから分未満を丸めるgemとかありますか?

291
デフォルトの名無しさん[]   投稿日:2016/11/24 23:46:30  ID:g1cJ7kXy.net
Railsならメソッドチェーンで、1週間前・後を、
1.weeks.ago, 1.days.from_now

など、色々な表現ができるから、探してみれば?

292
デフォルトの名無しさん[sage]   投稿日:2016/11/25 00:39:15  ID:6I1tAUNu.net
自前でTimeにモンキーパッチ

293
288[sage]   投稿日:2016/11/25 15:35:05  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 ){ "書き換え" } }
コメント1件

294
デフォルトの名無しさん[]   投稿日:2016/11/26 15:01:36  ID:mx1WdaLu.net
>293
>( /(?<=#kokokara\n)(.*?)(?=#kokomade)/m )

^ を付けて、#kokokara, #kokomade を、行頭に限定した方がいいかも
( /(?<=^#kokokara\n)(.*?)(?=^#kokomade)/m )

295
デフォルトの名無しさん[]   投稿日:2016/11/28 17:29:57  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  ID:padn7mYh.net
yield についてドラえもんを例に説明してくれ。

297
デフォルトの名無しさん[sage]   投稿日:2016/11/30 20:00:09  ID:PNa3/H0Q.net
ミニツクが復活している・・・

298
デフォルトの名無しさん[sage]   投稿日:2016/11/30 20:06:58  ID:SfFGX6QD.net
ミニツクの初心者用コースってコードの実行例で結構間違いあるよね
ホントの初心者だと迷いそうだわ(´・ω・`)

299
デフォルトの名無しさん[]   投稿日:2016/11/30 22:11:42  ID:0zul0T3a.net
ENV['my_application_variable'] = '1' if ENV['my_application_variable'].blank?

2回でてくるmy_application_variableがdryじゃないんで
嫌なんですけど、これを短く書く方法はないですか?

条件
・使っているライブラリの仕様上、環境変数にいれなければならない。
・空文字でも'1'を入れる必要があるので、||=は使えない。
・Railsで使えるメソッドは使ってOK


条件付き代入みたいなものないかね?

300
デフォルトの名無しさん[sage]   投稿日:2016/12/01 07:43:04  ID:91ReGJeh.net
MAV = 'my_application_variable'

ENV[MAV] = '1' if ENV[MAV].blank?
コメント1件

301
デフォルトの名無しさん[sage]   投稿日:2016/12/01 09:40:44  ID:d1oSzjmi.net(2)
>300
二行になってローカル変数が増えてる。
もっとマシな方法ないの?

302
デフォルトの名無しさん[sage]   投稿日:2016/12/01 12:11:29  ID:5zfWITAP.net
ENV['my_application_variable'] = '1' when blank

303
デフォルトの名無しさん[sage]   投稿日:2016/12/01 21:04:29  ID:d1oSzjmi.net(2)
だめみたいね。ここまでか

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
デフォルトの名無しさん[sage]   投稿日:2016/12/01 21:19:40  ID:2IFm11I0.net(2)
rubyのhashは初期値設定できた

305
デフォルトの名無しさん[sage]   投稿日:2016/12/01 21:46:59  ID:qbmZssP5.net
呼び出すときにこうするとか
ENV['my_application_variable'].to_s.sub(/\A\z/, '1')

ライブラリで使うみたいだし無理か

306
デフォルトの名無しさん[sage]   投稿日:2016/12/01 21:52:22  ID:2IFm11I0.net(2)
ENV.fetch('myhoge', '1')

307
デフォルトの名無しさん[sage]   投稿日:2016/12/01 22:53:15  ID:3crCXgJS.net
いいじゃんそれで
他にやることあると思う

308
デフォルトの名無しさん[sage]   投稿日:2016/12/01 22:58:11  ID:N8O9wUz9.net
DRYにこだわりすぎてもダメだしな
DRYはメンテナンスしやすくするためのいち手段
手段が目的になってはいけない

309
デフォルトの名無しさん[sage]   投稿日:2016/12/02 00:18:59  ID:tqwX+tIq.net
でももしこれが可能ならDRYにするんでしょ?

手段が〜とか出来ないことの言い訳にしか見えないよ。

310
デフォルトの名無しさん[sage]   投稿日:2016/12/02 04:38:07  ID:RG701yLz.net
>・空文字でも'1'を入れる必要があるので、||=は使えない。
この条件がある以上は自分で用意するしか無いね
Hashにモンキーパッチでもすればいいよ

311
デフォルトの名無しさん[sage]   投稿日:2016/12/02 06:57:28  ID:8YvcaX3X.net
というか元々の仕様上堂々と2行分の処理だよね
勝手に「こんなの簡単でしょ1行でサクッとできるでしょ」とか言われてもギリっと歯を噛むしか

312
デフォルトの名無しさん[sage]   投稿日:2016/12/02 07:15:46  ID:ODJLJCqj.net
つか、環境変数が空文字列ってありえるのか?
設定されてない場合は nil が返るはずなんだが…

$ HOGE=""
$ ruby -e 'p ENV["HOGE"]'
nil
コメント1件

313
デフォルトの名無しさん[sage]   投稿日:2016/12/02 08:02:05  ID:JTKNeiyC.net
>312
それシェル変数。export しないと子プロセスに渡らない。

ついでに言うとスペース一個とかでも blank? は真になる。

314
デフォルトの名無しさん[sage]   投稿日:2016/12/02 15:45:28  ID:ocojT6FV.net
macroで済ませたいところ

315
デフォルトの名無しさん[sage]   投稿日:2016/12/02 16:12:34  ID:Yd67HXR2.net
crystal使おう

316
デフォルトの名無しさん[sage]   投稿日:2016/12/04 12:40:41  ID:ytM7QMnr.net(2)
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
の意味が分からないのですが、どういう構文なのでしょうか?
コメント1件

317
デフォルトの名無しさん[sage]   投稿日:2016/12/04 12:47:37  ID:HCAAGxQ4.net
*はsplatと呼ばれる
直後のオブジェクトにto_aをかけると思ってもらうといい

318
デフォルトの名無しさん[sage]   投稿日:2016/12/04 13:08:08  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
デフォルトの名無しさん[sage]   投稿日:2016/12/04 13:27:46  ID:ytM7QMnr.net(2)
>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  ID:dF177W8B.net
メモ
SQLインジェクション対策もれの責任を開発会社に問う判決 | 徳丸浩の日記
http://b.hatena.ne.jp/entry/blog.tokumaru.org/2015/01/sql.html

321
デフォルトの名無しさん[sage]   投稿日:2016/12/06 01:28:22  ID:HR1yYwh6.net(3)
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 のオプション以外に
何か必要なのでしょうか?
コメント1件

322
321[sage]   投稿日:2016/12/06 01:29:36  ID:HR1yYwh6.net(3)
ちょっと古いけすけど,ruby 2.0.0, OSX,xcode の gcc を使っています.

323
321[sage]   投稿日:2016/12/06 01:31:37  ID:HR1yYwh6.net(3)
extconf.rb から出力された Makefile をそのまま利用しています.

324
デフォルトの名無しさん[sage]   投稿日:2016/12/06 12:07:10  ID:SXsp+YBz.net
ソース貼れ

325
デフォルトの名無しさん[]   投稿日:2016/12/06 13:05:53  ID:Kn1BSDAJ.net(2)
テキストファイルから正規表現の条件にマッチする数列のみを取り出すプログラムを作りたい。

#number.txt
139
134
243
154
265


datafile =
コメント1件

326
デフォルトの名無しさん[]   投稿日:2016/12/06 13:07:05  ID:Kn1BSDAJ.net(2)
テキストファイルから正規表現の条件にマッチする数列のみを取り出すプログラムを作りたい。

#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
と出力するにはどうしたらいいか。
コメント2件

327
デフォルトの名無しさん[sage]   投稿日:2016/12/06 13:30:50  ID:rcXtUD5h.net(2)
>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
デフォルトの名無しさん[sage]   投稿日:2016/12/06 13:35:42  ID:ui9UYxht.net(2)
^13\d$でいいんじゃないの?

329
デフォルトの名無しさん[sage]   投稿日:2016/12/06 13:39:38  ID:rcXtUD5h.net(2)
実際はもっと長い正規表現なのかもしれないし()の利用作法だと思って混乱するのも嫌なので元の部分は極力直さなかった
個人的には\Aと\Zを使いたかったが本筋ではない

330
デフォルトの名無しさん[]   投稿日:2016/12/06 14:29:41  ID:0+futo+K.net(2)
$ 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はどうすべきでしょう?
コメント1件

331
デフォルトの名無しさん[]   投稿日:2016/12/06 15:02:38  ID:ETIaxsXC.net(2)
先ほどのソースのまま
正規表現の後に
p $& とすると
139
134
nil
nil
nilとなったので
nilを表示しないようにしたい。

332
デフォルトの名無しさん[]   投稿日:2016/12/06 15:05:16  ID:D3xfQ035.net
しないようにすれ

333
デフォルトの名無しさん[sage]   投稿日:2016/12/06 15:08:06  ID:ui9UYxht.net(2)
よくわからんが原因は他じゃないかな?
下のでちゃんと動くよ。
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  ID:ETIaxsXC.net(2)
if文に変えたらできました!
ありがとうございました!

335
デフォルトの名無しさん[sage]   投稿日:2016/12/06 15:20:29  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  ID:0+futo+K.net(2)
有難うございます。
word1 = /<td align="center"><a href="http:\/\/.*\/" target="_blank">/
file.each_line do |line|
(中略)
line = line.gsub(word1,'【')
puts line if line =~ /【/
これでできました。原因は他にもありました。

337
デフォルトの名無しさん[sage]   投稿日:2016/12/06 22:40:43  ID:N07Fi8es.net
>321-323
再現性の無いバグなら、マルチスレッドのライブラリを使っているとか、
ポインタが想定外のアドレスを指しているとか

>325-326
2chのバグだろう

書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" の代わりに、\" とエスケープすれば、どうだろう?

それか、書き込み確認画面が出たら、1度キャンセルすれば、確認画面は出ないようになった

>326
1行ずつループする必要はない

File.read('number.txt').scan(/^13\d$/) do |matched|
p matched # ここに処理を書く
end

338
デフォルトの名無しさん[sage]   投稿日:2016/12/06 23:36:56  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の入力値が+で一致してたらそれに合わせて出力、っていう形でいけると思ったらエラーが出て無理だった……
コメント2件

339
デフォルトの名無しさん[sage]   投稿日:2016/12/06 23:57:34  ID:Ke9ZeJQj.net(2)
>338
問題が分からんけど、正規表現での + は特殊文字だから + という文字に一致させるにはエスケープが必要
というか、if c == '+' でいいんじゃないの?
コメント1件

340
デフォルトの名無しさん[sage]   投稿日:2016/12/06 23:59:40  ID:Ke9ZeJQj.net(2)
>338
あと、a,b,c = gets.split.map(&:to_i) とすると、全部 to_i しようとするから '+' も to_i しておかしなことになるよ
コメント3件

341
デフォルトの名無しさん[sage]   投稿日:2016/12/07 01:37:01  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
コメント2件

342
デフォルトの名無しさん[sage]   投稿日:2016/12/07 04:45:38  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
デフォルトの名無しさん[sage]   投稿日:2016/12/07 07:11:33  ID:4ygr9k/C.net(2)
>341
>340 を読め

344
デフォルトの名無しさん[sage]   投稿日:2016/12/07 07:37:56  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  ID:xs1sI7sQ.net
オライリのディープラーニング本進めてるがバッチ処理のあたりから
ようわからん。
数学は好きなんだけどプログラミング特有のテクニックになると
どうも飲み込みづらい。

346
デフォルトの名無しさん[sage]   投稿日:2016/12/07 16:35:10  ID:aZJac4xC.net
オライリーのDL本はPythonじゃねーの?

347
デフォルトの名無しさん[sage]   投稿日:2016/12/07 22:34:39  ID:vMVuhNA3.net
Rubyでディープラーニングなんか遅過ぎて勉強以前の問題だと思うけど
numpyと比べたら軽く数桁違うだろ
コメント1件

348
デフォルトの名無しさん[sage]   投稿日:2016/12/07 23:37:57  ID:4ygr9k/C.net(2)
>347
勉強のために入るなら使い慣れた言語ってのは普通にある選択肢だと思うけどなー
知らない分野と知らない言語のダブルに対処するより効率が高いだろうし

349
デフォルトの名無しさん[sage]   投稿日:2016/12/08 03:46:35  ID:WR2cMfp2.net
本の言語に合わせた方が分かりやすくね?
その言語知らないと翻訳できないんじゃね?

350
デフォルトの名無しさん[sage]   投稿日:2016/12/08 07:25:28  ID:/aGxLpEu.net
言語に気を取られるのは無駄ってどっちかというとPython的な理屈だしなあ
Rubyと違ってシンプルだからそんなに難しく考える必要はない

351
デフォルトの名無しさん[sage]   投稿日:2016/12/08 09:33:01  ID:u0pmvICB.net
直也:.NET CoreというかC#って型があって、しかもサーバーサイドも書けるじゃないですか。Linuxでやってた人たちはずっとスクリプト言語使ってて、
Rubyとか型がない言語でサーバーサイド書いてることに疲れてきちゃってるんですよね。
ある程度の規模のものではサーバーサイドも型がある言語で書きたいと思って、
ScalaとかJava 8をやってみたんだけど、どの言語もちょっとバランスが悪いんですよね。
Scalaはプログラマ寄りすぎるし、Javaはコンサバすぎる。サーバーサイドSwiftもとがりすぎてるし。
実績があって型がある言語ってC#なんですよね。そのC#がLinuxで使えるのは大きいんですよね。
だから、ワンチャンあるなって。あとは市場が評価するかどうかなんですよね。
バランスはいいと思います。それがWindowsだけでなくMacでも使えるようになったのは本当に大きいですし。

352
デフォルトの名無しさん[sage]   投稿日:2016/12/08 09:49:01  ID:V2tLN3UQ.net
Racketみたいにpythonのnumpyとかそのまま流用できる方法はrubyにはないのですか?

353
デフォルトの名無しさん[sage]   投稿日:2016/12/08 21:28:42  ID:6kXtynY2.net(3)
初めて1日目の初心者なんですけど直し方がわかりません

Ocraでexe化して起動するとBad signature in executable.ってエラーが出ます
windows10でRubyのバージョンは最新版です

ちなみにexe化したファイルのソースは
# encoding: Shift_JIS
print

354
353[sage]   投稿日:2016/12/08 21:43:20  ID:6kXtynY2.net(3)
途中送信すみません

# encoding: Shift_JIS
print てすと

です。

355
デフォルトの名無しさん[sage]   投稿日:2016/12/08 22:30:09  ID:HERlhtNF.net
どこでそのエラーが発生したのか分からんけど
ファイル名:353.rb
中身は以下だけ

printf ("てすと")

この状態でターミナルから>ocra 353.rb
これで特にエラーも無くexeして、実行するとウィンドウが起動してテストって表示されて終了する
win7でRubyのバージョンも2.2.4だから状況違うけど

俺も初心者だから良く分からんぞい

356
353[sage]   投稿日:2016/12/08 22:37:38  ID:6kXtynY2.net(3)
DevKit入れたら自決しました

357
デフォルトの名無しさん[sage]   投稿日:2016/12/09 00:54:47  ID:GS4b0ME0.net
死ぬんじゃない

358
デフォルトの名無しさん[sage]   投稿日:2016/12/09 04:36:22  ID:VazcIIHJ.net
macでrb拡張子(スクリプト)をターミナルで実行するにはどうすればいいですか?
homebrewやRuby on Rails を入れる必要がありますか?

359
デフォルトの名無しさん[sage]   投稿日:2016/12/09 07:09:25  ID:IAKedM2U.net(2)
バージョンを問わないなら最初から入ってるだろ
ruby myrubyscript.rb

360
デフォルトの名無しさん[sage]   投稿日:2016/12/09 07:15:38  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

これって、どのように理解したらいいですかね?
コメント2件

361
デフォルトの名無しさん[sage]   投稿日:2016/12/09 07:35:31  ID:ESs2BvJq.net(2)
>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
デフォルトの名無しさん[sage]   投稿日:2016/12/09 07:39:07  ID:ESs2BvJq.net(2)
>360
[1, 2], 3 と [[1, 2], 3] の違いは以下を参照

https://docs.ruby-lang.org/ja/2.3.0/doc/spec=2foperator.html
> 右辺の式が一つし か与えられなかった場合、式を評価した値は配列に変換されて、各 要素が左辺のそれぞれの式に代入されます。

363
デフォルトの名無しさん[sage]   投稿日:2016/12/09 08:04:59  ID:CktcRLbu.net
だから理屈としては「配列リテラルの多重代入は行わない方がよい」になる
こんなことでエラーにしたくないので色々なパターンを頑張って実装したんだが
その結果誰にも読み解けないものができてしまった

364
デフォルトの名無しさん[sage]   投稿日:2016/12/09 10:24:20  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
デフォルトの名無しさん[sage]   投稿日:2016/12/09 10:49:11  ID:FAhbp1DA.net(3)
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)が発生します。
原因がどこにあるか教えてください。
コメント1件

366
デフォルトの名無しさん[sage]   投稿日:2016/12/09 11:23:52  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
コメント1件

367
デフォルトの名無しさん[sage]   投稿日:2016/12/09 11:46:46  ID:FAhbp1DA.net(3)
>366
解説ありがとうございます。
>「そのクラスのインスタンス(=オブジェクト)」に属しているため、インスタンスを生成していないclass定義の中から呼び出すことはできない
ここをそもそも知らなかったためにどはまりだったので、助かりました。

># クラス定義の中で大文字で始まると"クラス定数"
定数じゃないとエラーが出るんですね。勉強不足でした。

># データ生成と表示はメソッドを分ける
そこそこ勉強しているつもりですが、まだまだ初心者を抜け出せない状態です。実際のところ相当煮詰まっている状態でして、こういった実装時の作法?
みたいなものを知りません。おすすめの書籍などありませんでしょうか。

># あと画面表示にputsメソッドを紹介してない参考書は焚書で
焚書ですか…
コメント1件

368
デフォルトの名無しさん[sage]   投稿日:2016/12/09 12:47:27  ID:Kfw6K1eC.net
Rubyの基礎を学んでる最中にRubyのお作法も別途学ぼうとすると息苦しくてつまんないと思う
とりあえずはその手元にある今使ってるやつで学んでみたらどうだろうどうかしら

矯正はあとからでもできるし無駄や遠回りはある程度経験しておくとその後なんとしても無駄や不作法を避ける糧になるよw

369
デフォルトの名無しさん[sage]   投稿日:2016/12/09 13:55:22  ID:FAhbp1DA.net(3)
>367
了解しました。まだ基礎力が定着していないのに分不相応でしたね。ですが、最近なんかDRYが多くて
作成したコードが不細工だなあと感じるようになり、うまくすっきりしたコードは書けないかなと思ったものですから。
まあ、とにかく基礎的・基本的なことに集中しようと思います。

370
デフォルトの名無しさん[]   投稿日:2016/12/09 20:21:49  ID:EaN/YLKK.net(3)
基本の文法書は、
たのしいRuby 第5版、2016

その次のレベルは、プロ必須本の、
Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説

371
デフォルトの名無しさん[sage]   投稿日:2016/12/09 22:49:00  ID:pEg3v2QU.net
たのしいRubyは何とか読みきれたけど
次に買ったRuby on Rails4 アプリケーションプログラミングは内容が濃すぎて挫折してたから
Effective Rubyを買ってみようかな……
コメント1件

372
デフォルトの名無しさん[sage]   投稿日:2016/12/09 23:02:53  ID:EaN/YLKK.net(3)
改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015

これの方が、わかりやすい

373
デフォルトの名無しさん[sage]   投稿日:2016/12/09 23:06:00  ID:IAKedM2U.net(2)
>371
伸び悩んだら他の言語に浮気するのがおすすめ
気分転換とかじゃなくて本質が見えるようになる
戻ってきたら驚くほど分かるようになってる

374
デフォルトの名無しさん[sage]   投稿日:2016/12/09 23:28:07  ID:EaN/YLKK.net(3)
それなら、12/22 発売の「みんなのPython 第4版」

この本は「たのしいRuby」と表裏一体だから、スラスラ読める

375
360[sage]   投稿日:2016/12/10 00:08:14  ID:SQghVBCH.net
遅レスだがありがとう。

376
デフォルトの名無しさん[sage]   投稿日:2016/12/10 00:16:10  ID:7eWDkV7Q.net
本を読んで勉強したのは最初の言語だけだなー(C++だったな)
あとはネットで情報を漁ってとりあえず書いてみてってのを繰り返して覚えてるな

いくらガベージコレクタがどうの型がどうのと言われても、やはりC++のような
メモリ管理や型についての基礎知識は持っておいた方がいいと思うのは老害の戯言かなー

377
デフォルトの名無しさん[sage]   投稿日:2016/12/10 06:45:40  ID:F6sTBWuO.net
それはまちがいなく老害

378
デフォルトの名無しさん[]   投稿日:2016/12/10 11:45:02  ID:qQjpy7Dv.net(2)
rubyにも型はある
型は意識しておいた方が良い

379
デフォルトの名無しさん[sage]   投稿日:2016/12/10 17:29:55  ID:ffTfSgqi.net
今時メモリ管理とか勉強が必要になるぐらいまでのめり込んでいる人は
自分で読む本がわかっている頃だろうな。

380
デフォルトの名無しさん[]   投稿日:2016/12/10 17:42:31  ID:qQjpy7Dv.net(2)
rubyでメモリ管理いちいち気にする香具師はアホ

381
デフォルトの名無しさん[sage]   投稿日:2016/12/10 17:45:12  ID:eWdy/g06.net
老害っていうより、プログラマとしてのセンスが悪いと思う

382
デフォルトの名無しさん[sage]   投稿日:2016/12/10 17:57:25  ID:dShDNVDG.net
その言語でのプログラム作成者の80%が一生使わず残りの90%も初年度には触れないようなものの知識を初学者の100%に求めるのは害悪

383
デフォルトの名無しさん[sage]   投稿日:2016/12/10 17:57:30  ID:02ejXKtR.net
いまでもRailsで普通にやるとメモリバカ食いするケースの対処が必要だったり
GCの実行頻度を考慮して設計する必要があったりはするよ
安易に不必要だと決めつけるのは考えが足りない子だね

384
デフォルトの名無しさん[sage]   投稿日:2016/12/10 18:05:28  ID:ck8bDMeh.net
もちろん型やメモリ管理など内部の仕組みは
理解できている方が良いが初期の学習では不要

385
デフォルトの名無しさん[sage]   投稿日:2016/12/10 19:21:30  ID:we+CUvc2.net
人によっては内部の動作を知りたいって子もいるから
そういう子には教えてもいいと思うけど
相手を見ないで全員に教えても意味はないやりたい事はみな違うから

386
デフォルトの名無しさん[]   投稿日:2016/12/11 23:33:44  ID:BA+Tsrf4.net
つまんね

387
デフォルトの名無しさん[sage]   投稿日:2016/12/11 23:36:27  ID:sXnmAsK+.net(2)
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です
コメント2件

388
デフォルトの名無しさん[sage]   投稿日:2016/12/11 23:52:42  ID:9ThvSwmQ.net

389
デフォルトの名無しさん[sage]   投稿日:2016/12/11 23:57:26  ID:sXnmAsK+.net(2)
>388
串なんて通してないから違うと思います

390
デフォルトの名無しさん[sage]   投稿日:2016/12/12 03:14:04  ID:QY0nCTMm.net
>387
AddTrustExternalCARoot-2048.pem を最新の物にする。
DL場所や方法は検索すればすぐ見つかる。
コメント1件

391
デフォルトの名無しさん[sage]   投稿日:2016/12/12 14:54:05  ID:Eai/X/NY.net(2)
>390
rubygems-update-2.6.8.gemを入れてみたけど改善しませんでした

392
デフォルトの名無しさん[sage]   投稿日:2016/12/12 15:20:46  ID:Eai/X/NY.net(2)
Ruby 2.2.6に変えたら何故か解決しました

393
デフォルトの名無しさん[sage]   投稿日:2016/12/13 15:12:14  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
コメント1件

394
デフォルトの名無しさん[]   投稿日:2016/12/13 15:42:27  ID:wETuuVVa.net
r = "" がおかしいんじゃないかな

395
デフォルトの名無しさん[sage]   投稿日:2016/12/13 18:01:40  ID:nznhQA15.net
Rubyで解きましたっていってこのスクリプトが返ってきたらへにょーんってなるな
コメント1件

396
デフォルトの名無しさん[sage]   投稿日:2016/12/13 20:42:28  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
デフォルトの名無しさん[sage]   投稿日:2016/12/14 07:41:49  ID:bcNQ7Ev0.net
意識高い系

398
デフォルトの名無しさん[sage]   投稿日:2016/12/14 08:02:24  ID:Q/TaGcT0.net
>395
対象のRubyでeachが実装されているとは限らない
コメント2件

399
デフォルトの名無しさん[sage]   投稿日:2016/12/14 08:18:08  ID:fDAOl6vn.net
w

400
デフォルトの名無しさん[sage]   投稿日:2016/12/14 08:27:07  ID:2yTcGsTl.net
今のRubyの想定バージョンっていくつなんだろうね
まだ1.8.6?
コメント1件

401
デフォルトの名無しさん[sage]   投稿日:2016/12/14 15:12:01  ID:a66Br6Ed.net
>400
>393 のテスト環境は ruby 2.3.0 と書いてありますね。
https://paiza.jp/guide/language
だから >398 は杞憂

402
デフォルトの名無しさん[sage]   投稿日:2016/12/14 15:16:14  ID:4jpqupHX.net
>398が皮肉だとわからないのは辛い

403
デフォルトの名無しさん[sage]   投稿日:2016/12/14 17:49:04  ID:obMYgrm6.net
ruby初心者です
クラスにアクセサ実装しました
正の整数しか受け付けさせません
それ以外は例外で弾こうと思います
どの例外がいいですか?
コメント1件

404
デフォルトの名無しさん[sage]   投稿日:2016/12/14 18:01:58  ID:bWT0nkJt.net
>403
何でもいい
その手の例外は出たらバグなのでキャッチされることは無いはず
誤ってキャッチされてしまう可能性があるような紛らわしいものでなければOK
コメント1件

405
デフォルトの名無しさん[sage]   投稿日:2016/12/14 18:19:07  ID:po7ivxZl.net
オブジェクトとしては間違ってないんだけど処理都合で弾きたい引数が来た場合はArgumentError
オブジェクトや持ってるメソッドからして間違ってる感じのが来た場合はTypeError
ということで第三者公開するライブラリならArgumentErrorだとわかりよい
が、おおむね>404なのでRuntimeErrorでもいいよ

406
デフォルトの名無しさん[sage]   投稿日:2016/12/14 21:11:00  ID:US7iqqFk.net
特別なアレならStandardError継承して独自の例外投げとけば良いのでは

407
デフォルトの名無しさん[sage]   投稿日:2016/12/15 01:34:42  ID:CIBVBBHR.net(2)
クラスメソッド内でnewメソッドを呼び出してインスタンスを生成するようなケースってどういう場合に使うんだ?
ARとかのbuildだとかfindだとかはこの類だとわかるんだけど他のライブラリとか読んでるとクラスメソッド内でインスタンス生成してそのインスタンスに対してインスタンスメソッドを呼び出して…みたいになってて意図が分からん
コメント4件

408
デフォルトの名無しさん[sage]   投稿日:2016/12/15 07:08:08  ID:V7DRptyX.net(2)
>407
オブジェクト指向プログラミングの一般的な慣習として次のようなものがある
・利用者がインスタンスを手に入れた時点で初期化などの準備は終わっていて使える状態になっている方がよい
・コンストラクタはなるべく単純な処理のみを行い、基本的に失敗しない方がよい
で、クラスメソッドを使う方法ならこの両方を満たせるというわけ
コメント1件

409
デフォルトの名無しさん[sage]   投稿日:2016/12/15 07:22:36  ID:YHGHBn1b.net
不完全なインスタンスが出来ないように initialize 内で積極的に例外活用するスタイルもある。

>407
インスタンスを作るのはインスタンスに状態をもたせたい時。処理が複数のメソッドから成っていて状態を共有したいケース。
クラス自体にメモ書きするのはスレッドセーフにならんとか色々あってオススメしない。
コメント2件

410
デフォルトの名無しさん[sage]   投稿日:2016/12/15 07:32:30  ID:V7DRptyX.net(2)
>409
>不完全なインスタンスが出来ないように initialize 内で積極的に例外活用するスタイルもある。
クラス名からコンストラクタで何やってるかがわかりきってるようなものならそれでもいいけどね
コンストラクタで複雑な処理をしない方がよいというのは、
・名前がクラス名だけでメソッド名が無いので一見して何やってるのか分かりにくい
・一つしか持てないので拡張性に乏しい
という意味もある

411
デフォルトの名無しさん[sage]   投稿日:2016/12/15 08:28:32  ID:qDnwyx0x.net
>407
「クラスメソッドがそのクラスのインスタンスメソッドを活用したユーティリティメソッドになってるだけ」という手抜き理由もあるよ
本来はHogeUtilsモジュールとかに切り出すべきだけどHogeクラスのクラスメソッドに入れちゃってる
あらゆる事象に深遠なる理由を求めて小難しく考える必要はないw
コメント1件

412
デフォルトの名無しさん[sage]   投稿日:2016/12/15 08:41:19  ID:TuKRCX6V.net(2)
環境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
デフォルトの名無しさん[sage]   投稿日:2016/12/15 08:41:29  ID:CIBVBBHR.net(2)
色々回答ありがとう
気になったところを書いてみる
>408
うーんそれだけの慣習ならインスタンスメソッドでよくね?と感じた。

>409
クラス変数的に状態共有させると色々整合性取れなくなるので状態共有が目的でクラスメソッドを使うのも違和感ある。


>411
それはわりと見かける気がするね
コメント1件

414
412[sage]   投稿日:2016/12/15 08:59:47  ID:TuKRCX6V.net(2)
ごめん、出来たわ
2.2.6の証明書を既存のrubyにコピーしたら出来たわ
本当に申し訳ない

415
デフォルトの名無しさん[sage]   投稿日:2016/12/15 09:07:36  ID:ArFpv1Xp.net
>413
まあRubyなら初期化用のインスタンスメソッドを設けるほうが一般的かもね
今時は、とにかく状態を持つことを嫌って、初期化済みかどうかといった余計な状態を増やすのではなくインスタンスの生成と一致させてしまえ
という考え方がどっちかというと主流なんだけど、Rubyはその点わりと昔ながらの「オブジェクトは生き物」な感じなので

416
デフォルトの名無しさん[sage]   投稿日:2016/12/15 11:58:47  ID:jYtTego3.net
ルビーやサファイアの雲が存在?地球から1000光年先の惑星、英大学が調査
da i ly.2ch.net/test/read.cgi/ne wspl us/1481704596/

417
デフォルトの名無しさん[]   投稿日:2016/12/16 10:30:45  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
デフォルトの名無しさん[sage]   投稿日:2016/12/16 10:58:45  ID:wL7umkxz.net
言ってる意味がよくわからないけどLFなら¥nじゃないの

419
デフォルトの名無しさん[sage]   投稿日:2016/12/16 11:16:34  ID:SEQOd6ed.net(3)
いらない行
ほしい1行目
ほしい2行目
いらない行

から「ほしい1行目\nほしい2行目」を正規表現で取り出すにはどうすればいいですか?
回答:
正規表現の中に改行を書けばよい。//mは「.が改行にもマッチするようになる」機能であり、今回とは無関係
正規表現「^」は実際には「改行の直後の位置そのもの」にマッチし正規表現「$」は実際には「改行の直前の位置そのもの」にマッチする
※改行のない文字列に対してはちょっと違うが割愛
つまり「改行直後+ほしい1行目+改行+ほしい2行目+改行直前」という正規表現を使えばよい
String#scanメソッドはマッチした文字列をすべて含んだ配列を返す
irb>

420
デフォルトの名無しさん[]   投稿日:2016/12/16 11:19:23  ID:PSmXndV/.net

421
デフォルトの名無しさん[sage]   投稿日:2016/12/16 11:19:26  ID:SEQOd6ed.net(3)
ああWebブラウザからだった忘れてた
2chよく沈まないもんだ
irb> &quot;111\nABC\nDEF\n333\n444\n\555\n&quot;.scan(/^A.+?\n.+?F$/)
=> [&quot;ABC\nDEF&quot;]

422
デフォルトの名無しさん[sage]   投稿日:2016/12/16 11:20:47  ID:SEQOd6ed.net(3)
ぬううん
まあいいや諦めた
正規表現だけもってってくれ

423
デフォルトの名無しさん[sage]   投稿日:2016/12/16 18:35:18  ID:WbXTRG+B.net(2)
。oO(lineの中身が1行しかないとかそんなオチだろうな)

424
デフォルトの名無しさん[sage]   投稿日:2016/12/16 18:37:20  ID:WbXTRG+B.net(2)
。oO(単数形なのが怪しい)

425
デフォルトの名無しさん[sage]   投稿日:2016/12/16 23:16:55  ID:gVrNrOSW.net
>407-411
new を使うのは、疎結合の場合。
スコープを外れて、オブジェクトが消えても、他のオブジェクトに影響がない場合

initialize など、特別な初期化処理をするものは、
グラフィック・DBなどの外部リソースを共有するなど、
スコープを外れた後も、外部リソースが存在する場合
コメント3件

426
デフォルトの名無しさん[sage]   投稿日:2016/12/17 02:15:18  ID:qzqGmxSM.net(2)
>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とするのだと用途的にどう違うのか
初期化とかは省いたが適当に補完してくれる
コメント2件

427
デフォルトの名無しさん[sage]   投稿日:2016/12/17 02:18:10  ID:qzqGmxSM.net(2)
✕してくれる
○してくれ

428
デフォルトの名無しさん[sage]   投稿日:2016/12/17 08:49:28  ID:2dyThgQw.net
>425
悪いけどあまり良くない設計だと思うよ
どのオブジェクトとも寿命が一致しないリソースってのは基本的に作らない方がいい
コメント1件

429
デフォルトの名無しさん[sage]   投稿日:2016/12/17 20:22:48  ID:8Cd/8VwS.net
>426
new と call がセットならそれをするメソッドを用意する。
それだけのこと。
コメント2件

430
デフォルトの名無しさん[sage]   投稿日:2016/12/18 00:30:46  ID:05Ug+E6t.net(16)
>426
> でA.new(args).callとするのだと用途的にどう違うのか

可読性が違う。

まずあんたは、サンプルを提示しているが、
あんたのその結論は、そのサンプルでのみ通用すること
サンプルにしてしまったために可読性を論ずる機会が失われている。


可読性と言うのは何かというと、どれだけ読むべきコードを減らして
内部の実装を見ずに、すんなり読めるかということ。
それを実現するために必要なものの一つが適切な名前

サンプルにするとその適切な名前が失われるから
そのサンプルを見るだけでは可読性の良し悪しがわからなくなる。
コメント1件

431
デフォルトの名無しさん[sage]   投稿日:2016/12/18 01:11:06  ID:GM9JkVQ+.net(2)
>429
初期化したオブジェクトに対して外から呼び出せる命令が1つしかないかどうかで使い分けるという風に読めたんだけど合ってるか?

>430
結論なんかどこにも書いてないんだが…
あとそれ可読性じゃなくね?カプセル化とかの方が言わんとしてることに近い気がする
あとその主張じゃ分かってない人にはピンとこない(少なくとも俺は納得できなかった)ので適切な例を掲示してくれよ
コメント1件

432
デフォルトの名無しさん[]   投稿日:2016/12/18 01:45:50  ID:aCKcGLhu.net
>428
DBの接続・切断などで、特別な処理が必要。
WindowsアプリのGDIでも、ペン・ブラシなども共有リソース

何々マネージャーのような、唯一のオブジェクトである、シングルトンでは、
newせず、特別な初期化処理をする
コメント1件

433
デフォルトの名無しさん[sage]   投稿日:2016/12/18 08:45:13  ID:kBEsP2W2.net
>432
その理屈だとRuby標準のFileなどネイティブなリソースを持つあらゆるクラスが初期化用インスタンスメソッドを持つことになるぞ
特別な処理が必要であるからといって生成と初期化のタイミングを別にしなければならない理由にはならない
シングルトンも意味不明だな
シングルトンなら普通はクラスがインスタンスにアクセスされたタイミングで初期化でしょ

434
デフォルトの名無しさん[sage]   投稿日:2016/12/18 15:20:39  ID:opw80zoz.net(2)
>431
>429
>初期化したオブジェクトに対して外から呼び出せる命令が1つしかないかどうかで使い分けるという風に読めたんだけど合ってるか?

そんな堅苦しく考えないでいいと思う。このケースに限らず頻出パターンがあればそれをメソッドにするでしょ。

A.new(...).call を A.call(...) と書けることに価値を見出せないなら別に前者のままでもいいし。
コメント1件

435
デフォルトの名無しさん[sage]   投稿日:2016/12/18 15:50:39  ID:i2W42kEF.net(3)
>434
なるほど
前者はAクラスのオブジェクトに対する命令、後者はClassクラスのAというオブジェクトに対する命令なはずなのでなんか意味的にも違ってくるのかなと思ってた

436
デフォルトの名無しさん[sage]   投稿日:2016/12/18 16:07:50  ID:ZqV+jY/A.net(2)
違うよ
コメント1件

437
デフォルトの名無しさん[sage]   投稿日:2016/12/18 16:25:02  ID:i2W42kEF.net(3)
>436
ごめん
理解が足りてないかも
どう違うか聞いても良いか?

438
デフォルトの名無しさん[sage]   投稿日:2016/12/18 16:29:16  ID:i2W42kEF.net(3)
補足すると個人的にはやっぱりクラスメソッド内でインスタンスを生成して何かしらの操作をするならば最終的に返り値としてそのクラスのオブジェクトが返るとかじゃなきゃ使うメリットを感じられないと感じてる

439
デフォルトの名無しさん[sage]   投稿日:2016/12/18 16:40:09  ID:ZqV+jY/A.net(2)
rubyのひとは返り血ないのを嫌うね
コメント1件

440
デフォルトの名無しさん[sage]   投稿日:2016/12/18 16:45:34  ID:opw80zoz.net(2)
物騒だなw

441
デフォルトの名無しさん[sage]   投稿日:2016/12/18 17:05:27  ID:/mOXmKGC.net(4)
>439
Rubyは本来逆だと思う
原理主義的なOOPは返り値をあまり使わないよ
最近のOOPで返り値を積極的に使うようになったのは最近の関数型かぶれなスタイルの流行によるもの

442
デフォルトの名無しさん[sage]   投稿日:2016/12/18 18:47:07  ID:05Ug+E6t.net(16)
> 原理主義的なOOPは返り値をあまり使わないよ
根拠は?

何の根拠もなく言い切るとか
ホント迷惑だよな。

ま、2ちゃんねるだから、誰も信用しないだろうけどw
コメント1件

443
デフォルトの名無しさん[sage]   投稿日:2016/12/18 19:12:28  ID:cjBRT8Q8.net
オブジェクト指向そのものにはメソッド戻り値の概念はないよ
メソッド操作の結果はメソッドが刺さってるオブジェクトの変化だ

ただしこれだとプリミティブ過ぎて人間には扱い辛いのでどの言語も当初から戻り値ありで設計されてる

444
デフォルトの名無しさん[sage]   投稿日:2016/12/18 19:15:09  ID:/mOXmKGC.net(4)
>442
Tell, Don't Askって聞いたことない?
オブジェクトから値を取るのは副作用に弱いコードになるから避けろという、オブジェクト指向開発の有名な指針だ
Rubyでは戻り値を使う代わりにブロックを渡して引数で結果を受け取るということが非常によく行われるけど、あれはこの原則に従ってるんだよ
コメント1件

445
デフォルトの名無しさん[sage]   投稿日:2016/12/18 19:35:47  ID:05Ug+E6t.net(16)
>444
Tellした結果は戻り値だろうがw

お前が言ってるのはクラスの状態を取得して、
その状態をもとに、貰った側で処理を書くんじゃなくて、
クラス側に処理させろという話。

戻り値とは全く関係ない。

446
デフォルトの名無しさん[sage]   投稿日:2016/12/18 19:40:12  ID:05Ug+E6t.net(16)
ブロックを使うのを引数で結果を受け取るためだとか考えてるのもアホだしw

ブロック使うのは、ユーザーが書く処理の前後にある、
共通の処理をクラス側(ライブラリ側)に持たせて、
処理の中身を入れ替え可能にするためだろ。
コメント1件

447
デフォルトの名無しさん[sage]   投稿日:2016/12/18 19:54:05  ID:/mOXmKGC.net(4)
>446
疑問を持つのは結構だけど、新しい言葉を聞いたら調べてみようと思わないの?
君がそれに同意するかはともかく(俺はケースバイケースだと思う)、常識だからせめて正しく理解はしておいた方がいいよ
そんな態度じゃ成長しない
コメント1件

448
デフォルトの名無しさん[sage]   投稿日:2016/12/18 19:59:00  ID:05Ug+E6t.net(16)
>447
そんなことをより、お前の反論が聞きたいんだが?w
なんでそこで言い訳を始めるかね。
コメント1件

449
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:02:15  ID:/mOXmKGC.net(4)
>448
反論もクソも、別に俺の持論じゃなくて歴史的事実なんだが
Tell, 〜はSmalltalkで生まれたプラクティスで、ベターな方法としてコールバックを使う
それを真似たのがRubyのアレ
コメント1件

450
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:11:38  ID:05Ug+E6t.net(16)
>449
はい。教科書読んだだけの人へw

http://martinfowler.com/bliki/TellDontAsk.html

日本語
https://web-beta.archive.org/web/20150316001509/http://blog.showqase.com/2...
ただ個人的には私は「尋ねるな、命じろ」は使わない。もちろんデータと振るまいを同じ箇所に置こうとはするので、
ほとんどよく似た結果になる。 一つ「尋ねるな、命じろ」で問題だと思うのは、この原則のせいで
「GetterEradicators」になって、すべての問い合わせメソッドを取り除こうとする人を見たことがあることだ。



俺の言っている通り、戻り値をつかわないみたいな適当な話じゃなくて、
クラス側に処理させろという話だってわかっただろ?
コメント1件

451
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:12:24  ID:05Ug+E6t.net(16)
もちろん「コールバックを使う」なんてことは一言も書かれていない。
Tell, Don't Askとは全く無関係の概念だから。

452
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:14:17  ID:05Ug+E6t.net(16)
あと引用した部分は ID:/mOXmKGC をからかうのに面白かったから
引用しただけで、他の人はちゃんとリンク先を読んでね。
そっちがメインだから。

453
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:27:07  ID:05Ug+E6t.net(16)
反論無くなったな いま勉強中かな?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とコールバックに関係なく、単にオブジェクトから値を取らずにオブジェクトに処理させるってだけの話。
そこにコールバックは出てこない。用語だけ知って内容を理解してないから、間違った結論に至っている。
コメント1件

454
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:37:26  ID:vN9Eyv4k.net
ここは君の遊び場じゃない

455
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:38:11  ID:05Ug+E6t.net(16)
みんなの遊び場だろ?

456
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:43:12  ID:hjqTwWMB.net(3)
ドン引きしてるだけだよw
何を必死になってるのか知らないけど、戻り値に対する直接的な書き換えとしてコールバックを挙げただけで
クラス側で処理することを否定してるつもりはないぞ?
確かにコールバックを使っても振る舞いをクラスに持たせたことにはならないが、
制御をクラス側に渡すだけでも余計な状態を持つことを避けてプログラムをシンプルにする効果があるよ
https://pragprog.com/articles/tell-dont-ask
コメント1件

457
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:47:21  ID:05Ug+E6t.net(16)
>456
話を混ぜっ返すな。
俺はそんな話は全くしてない。

何が間違いかは>453のまとめに書いただろ
それ以外の話はしてない。
コメント1件

458
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:51:55  ID:hjqTwWMB.net(3)
>457
悪いけど、君が何を根拠に間違いと言っているのか俺には読み取れない
クラス側に振る舞いを持たせることを徹底したら結果的に戻り値は減ると思うけど?
コメント1件

459
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:54:43  ID:UQRskdKk.net
>450
大原則としてOOPでデータと処理を一体化することは認めてて
原則には例外がつきものだっていう話に見える

それで結果的に戻り値を使うことは減るし
一方的に正しいとかいう話じゃないように見えるが

460
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:56:20  ID:05Ug+E6t.net(16)
>458
戻り値が減るんじゃなくて、
戻り値を取得するメソッドが減るだけ。

> 原理主義的なOOPは返り値をあまり使わないよ
って言ってるから間違い。ほとんどのメソッドの戻り値を返している。
戻り値を返すのは戻り値を使う必要があるから。

> Rubyでは戻り値を使う代わりにブロックを渡して引数で結果を受け取るということが非常によく行われるけど、あれはこの原則に従ってるんだよ
コールバックは、Tell, Don't Askの原則に従うためのものじゃないから間違い

461
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:59:15  ID:05Ug+E6t.net(16)
重要なのはデータと振るまいを同じ箇所に置こうすることであって
戻り値をつかわないということではない。

原則の理由を理解せずに、その結論だけしか見てないから、
間違った話をしてる。コールバックとか全く関係ない。

462
デフォルトの名無しさん[sage]   投稿日:2016/12/18 21:02:15  ID:05Ug+E6t.net(16)
× 戻り値が減るんじゃなくて、戻り値を取得するメソッドが減るだけ。
○ 戻り値が減るんじゃなくて、オブジェクトの状態を取得するだけのメソッドが減るだけ。

こう言った方がより正確かな。

463
デフォルトの名無しさん[sage]   投稿日:2016/12/18 21:03:57  ID:cqEHlGhD.net(2)
誰か俺の疑問に答えてくれよ…夜も眠れねえよ…
コメント1件

464
デフォルトの名無しさん[sage]   投稿日:2016/12/18 21:04:25  ID:cqEHlGhD.net(2)
438のところな
コメント1件

465
デフォルトの名無しさん[sage]   投稿日:2016/12/18 21:04:32  ID:05Ug+E6t.net(16)
夜眠れないのは昼寝てるからでは?

466
デフォルトの名無しさん[sage]   投稿日:2016/12/18 21:06:25  ID:05Ug+E6t.net(16)
>464
だから可読性の問題なんだから、サンプルコードじゃなくて
具体的な使用例を見せてもらえないと答えようがない

467
デフォルトの名無しさん[sage]   投稿日:2016/12/18 21:22:30  ID:hjqTwWMB.net(3)
>463
>425が言ってるのはこういうこと
・アプリ内の全てのDBアクセスは単一のDB管理クラスのインスタンスで行っている
・DB管理クラスのインスタンスはアプリ起動時に作成しておいて各コンポーネントで共有する
・アプリは最初はDBに接続しておらず、あるボタンが押された時点ではじめてDBに接続する
この場合、ボタンが押されときにDB管理クラスのインスタンスの「DBに接続せよ」メソッドを呼べばよい

この設計の是非はともかく、つまりミクロなプラクティスの話とアプリ要件の話をごっちゃにした頓珍漢な意見なので気にしなくていい
コメント1件

468
デフォルトの名無しさん[sage]   投稿日:2016/12/18 21:28:14  ID:GM9JkVQ+.net(2)
>467
言ってることは分かるけど疑問に対する回答になってないような?
コメント1件

469
デフォルトの名無しさん[sage]   投稿日:2016/12/19 10:06:49  ID:InX2WCwb.net
はじめてRuby触るしコーディングなんてOracle SQLくらいしか触ったことないんだけど
無茶かな。
DiscordrbっていうGEMが用意されているんだけど、Rubyでこういうのを使う方法がいまいちわからない。

そもそも英語ができないから英語のDocsをヒーコラいいながらやってんだけどやっぱ無茶かなぁ。
誰かDiscordrb使ったDiscordBOT作ってる人いませんか?ソース見せてほしいんだけど無理かな。
コメント1件

470
デフォルトの名無しさん[sage]   投稿日:2016/12/19 15:41:24  ID:42zKLbbA.net
基礎 Ruby on Rails、このスレでお勧めされてから買ってみたけど
確かに分かりやすいわ
もっと早く買えば良かった

471
デフォルトの名無しさん[sage]   投稿日:2016/12/22 12:21:08  ID:uTQf0x1y.net
>469
いきなりdiscordbot無茶だろうけどいきなりrubyは無茶じゃないので頑張れ
まずはネットで日本語でいくらでも転がってるrubyのチュートリアルをこなそう
rubyの基本がわかればbotなんてすぐ作れる

472
デフォルトの名無しさん[]   投稿日:2016/12/22 13:02:42  ID:y+mdv7YD.net
>468
ほんそれ

473
デフォルトの名無しさん[]   投稿日:2016/12/23 20:42:12  ID:cbA/B5V7.net
言語のしくみ
買ったった

474
デフォルトの名無しさん[sage]   投稿日:2016/12/27 02:28:17  ID:ajopm1PJ.net
pryってどういう仕組みなんだ?
evalだとbindingオブジェクト渡してもeval抜けるとローカル変数とか無かったことにされるけど(ブロックと同じ扱いだから?)、pryだとローカル変数定義してアクセスしたり出来るよね
どうなってんだ
コメント1件

475
デフォルトの名無しさん[sage]   投稿日:2016/12/27 07:56:05  ID:8zCgjK7F.net
>474
都度同じ binding 渡して eval する。

476
デフォルトの名無しさん[]   投稿日:2016/12/27 22:05:49  ID:Vfoy9oEH.net(2)
seleniumをFirefoxPortableで使っているのですがSeleniumでプロファイル指定して起動しても
ログイン情報が保存されません。
seleniumもFirefoxも古いバージョンにしています(それぞれ2.6.8と45.6.0)。
インストール版のプロファイルをコピーしてポータブルのプロファイルフォルダに入れて
お気に入りやアドイン等やログイン情報は保持されています。
ところがseleniumで起動するとログイン情報だけが消えているものがあります。
FirefoxPortable単体だけだと問題ありません。

477
デフォルトの名無しさん[sage]   投稿日:2016/12/27 22:13:26  ID:Vfoy9oEH.net(2)
プログラムの内容の出だしはこんな感じです。
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
デフォルトの名無しさん[sage]   投稿日:2016/12/27 23:04:19  ID:/xLMC5SK.net
ログイン情報が設定されていないか、設定されていても取得されていないか、
取得されていても上書きされているとか、デバッグして、どれに該当するのか見極める

そもそも、ローカルPCに、サーバーを立てていなくても、
ローカルファイルを直接取得できるのか?

セキュリティや、非同期によるタイミングの違いで、取得できないとか、
エラーメッセージが無いと原因がわからないので、デバッグして原因を絞り込む
コメント1件

479
デフォルトの名無しさん[sate]   投稿日:2016/12/30 00:13:53  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と違うとかで自動ログインを拒絶して
いるのでしょうか。
コメント1件

480
デフォルトの名無しさん[sage]   投稿日:2016/12/30 05:07:24  ID:VibH/69b.net
>479
pryとかirbとかで止めてステップ実行してみれば?

481
デフォルトの名無しさん[sage]   投稿日:2016/12/30 06:54:47  ID:AE3qYxRw.net(2)
Rubyの、debug ライブラリとか、
--debug で、デバッグモードでスクリプトを実行するとか。

それか、JavaScriptもデバッグする。
Rubyじゃなく、JSでエラーが起こっているのかも?

ブラウザの、UserAgent を偽装するとか、
Wireshark で通信パケットを見るとか

PhantomJS を使っている、Poltergeist を使うとか

482
デフォルトの名無しさん[sage]   投稿日:2016/12/30 15:45:46  ID:P9AmXfqG.net
ダックタイピングの良さが全くわからない。
ソースコードの規模が大きくなるほどそう思う。
コメント1件

483
デフォルトの名無しさん[sage]   投稿日:2016/12/30 16:36:49  ID:hgBVSCl8.net(2)
>482
事前にコンパイルせずにオブジェクトに対するメソッド呼び出しを実現する手段がダックタイピングなだけ
あくまで実装の都合であって、ユーザーにとってはデメリットしかないよ
コメント1件

484
デフォルトの名無しさん[sage]   投稿日:2016/12/30 17:01:07  ID:kHcR/QEK.net
>483
> あくまで実装の都合であって
この人言語実装経験あるんだろうか?
コメント1件

485
デフォルトの名無しさん[sage]   投稿日:2016/12/30 17:07:01  ID:hgBVSCl8.net(2)
>484
俺はあるけど、なくてもメソッド呼び出しの仕組くらいは知っておいて損はないよ

486
デフォルトの名無しさん[sage]   投稿日:2016/12/30 17:22:22  ID:Q3tvxZdg.net
rubyしか知らないひとか

487
デフォルトの名無しさん[]   投稿日:2016/12/30 23:12:15  ID:AE3qYxRw.net(2)
クラスに継承関係が無くても、同名のメソッドが動作する

こんな仕様で、アプリを正常に作れるわけないだろ!
コメント1件

488
デフォルトの名無しさん[sage]   投稿日:2016/12/30 23:24:34  ID:zOAKiPoz.net
>487
>クラスに継承関係が無くても、同名のメソッドが動作する
10年前の人かな?
そんなの今じゃ珍しくもないよC#なんかもそうだし

489
デフォルトの名無しさん[sage]   投稿日:2016/12/31 00:49:15  ID:6BifHuQd.net
え?そうなの?

490
デフォルトの名無しさん[sage]   投稿日:2016/12/31 01:39:57  ID:2NsOdIiQ.net
インターフェースってそういうもんだろ?
VB6だって継承関係なくても動作するわ
(そもそも継承できない)

491
デフォルトの名無しさん[sage]   投稿日:2016/12/31 03:02:31  ID:SUY5h6ni.net
まあ型のあるなしで大違いだけどね

492
デフォルトの名無しさん[sage]   投稿日:2016/12/31 11:20:21  ID:u4bGwJtr.net
Pythonは静的型検査を導入してほぼ完全な静的型言語になった
RubyもやろうとしてるけどRailsに汚染されきったメタプログラミングまみれのRubyじゃ
不可能というかできてもほぼ意味をなさないだろうね

493
デフォルトの名無しさん[sage]   投稿日:2016/12/31 11:44:35  ID:+6N7nKtI.net
Rubyは静的型なんてやらないよ
3.0でやるのは静的振る舞い検査だよ

494
デフォルトの名無しさん[sage]   投稿日:2016/12/31 18:55:15  ID:OmAPdSt2.net(2)
正規表現のオプション
o open 式展開
x eXtend
m multiline
で覚えようと思うのですが
i って何の略でしょうか?

495
デフォルトの名無しさん[sage]   投稿日:2016/12/31 19:24:07  ID:reFXdCEA.net
元ネタのperlreに書いてる

496
デフォルトの名無しさん[sage]   投稿日:2016/12/31 19:50:32  ID:oe8sWh56.net
i は ignore case
o は once でしょ

497
デフォルトの名無しさん[sage]   投稿日:2016/12/31 20:13:57  ID:OmAPdSt2.net(2)
ありがとうございました。

498
デフォルトの名無しさん[]   投稿日:2017/01/01 04:04:21  ID:NQftXMbi.net
Rubyの現在の課題は、日本製のオペレーティングシステムを作ることにある。

499
デフォルトの名無しさん[sage]   投稿日:2017/01/01 09:11:31  ID:IDYigKuX.net
無理

500
デフォルトの名無しさん[sage]   投稿日:2017/01/01 09:30:39  ID:ls6vqNpI.net
mrubyがそれに近いんじゃね
見事にコケたけど

501
デフォルトの名無しさん[sage]   投稿日:2017/01/01 20:36:16  ID:+4Jm9cV8.net
スレ違いならすみません。
現在比較的容易に頒布するためにJRubyを使っているのですが、
キャメルケースやセッターなどの名前をRuby風の命名規則に変更する仕組み、利用したいのですが細かいことが分からずに少し困っています。
例えば "A.setValue(x)" は "A.value = x" と書くことができるようですが、
対して "A.setValue(x, y)" はうまく書き換えられてくれないみたいです。
諦めて元の名前を使えば問題ないのですが見た目的にどうも気持ち悪くて、詳細を調べているのですが見つかりません。
どなたかご存じでしたら提示いただけませんか?
コメント1件

502
デフォルトの名無しさん[sage]   投稿日:2017/01/01 22:03:52  ID:yOnXwyd5.net
>501
引数が2つの時点でそれはセッターではない

503
デフォルトの名無しさん[sage]   投稿日:2017/01/03 17:46:16  ID:qzU7aiCI.net
ひろいもの
nicovi
watch/sm3721257
watch/sm8240485
watch/sm11915031

504
デフォルトの名無しさん[sage]   投稿日:2017/01/05 18:13:23  ID:iZVemvXm.net
楽しいRuby読み終えて何か作ろうと思うけど今一思いつかん
なんかステップアップするのに良い本とか無いかね
独学でやってるからどうやって勉強進めれば良いか分からん
コメント2件

505
デフォルトの名無しさん[sage]   投稿日:2017/01/05 18:22:58  ID:wwAKte96.net
太古の過去の大昔から言われてるが、Rubyは基本的に日常ツール作成言語なので
「メソッド動作解説とか読んでもなお作りたいものが思いつかないなら一旦Rubyのことを忘れて街に出ろ」
というのがある
カナヅチとクギの使い方を習ったから何か作りたいが何も作るものがないという状態に同じ
カナヅチとクギがパーフェクトに使いこなせてよかったという瞬間は今後いつか修繕とか組み立てとかやるときに来る
その時までとりあえず忘れておくといい
今の君は自作で補うべき不満不足を感じていない幸福な状態なのだ

506
デフォルトの名無しさん[sage]   投稿日:2017/01/05 21:18:23  ID:ovbTWOBk.net
504じゃないけど、DXRubyとか気になるけど手軽な配布手段がないから躊躇っちゃうんてすよね
exerbは1.8.xまでしか対応してないみたいだし、Ocraはゲームとしては不格好な上に日本語で死ぬし、
スクリプト組み込んでビルドするとかは正直よくわからない……

507
デフォルトの名無しさん[sage]   投稿日:2017/01/05 21:49:13  ID:6Ysz1KPl.net
いやだから単体のWindowsアプリケーションやらゲームアプリやら作りたいのならRubyは駄目だよ
そういうのはたとえばC#とか使うんだよ
使う道具間違ってるよ
コメント1件

508
デフォルトの名無しさん[sage]   投稿日:2017/01/05 22:32:43  ID:H72KpT5C.net
>504
競技プログラミングでもやってみるといいかもしれない
アルゴリズムの勉強にもなるし

509
スッキリ厨[]   投稿日:2017/01/05 23:19:04  ID:sjDvcQUe.net
まずこの本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014

その後、この2冊をこの順で読む
たのしいRuby 第5版、2016
みんなのPython 第4版、2017

Rubyなら、この本がプロ必須本
Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、間違いやすいポイントを解説

510
デフォルトの名無しさん[sage]   投稿日:2017/01/06 02:55:51  ID:JXu3PrlH.net
>507
そこらへんは悪癖ありますね……
目的が「○○を作る」から「Rubyを書く」にシフトしてる感がかなり
趣味だから実害はないんですけど、Rubyしか書けないわけじゃないのに勿体ないなという気は

511
デフォルトの名無しさん[sage]   投稿日:2017/01/06 07:07:39  ID:kp2I/0bG.net
勿体無いとかじゃなくて、一つの言語ばかり使ってると頭悪くなるよ

512
デフォルトの名無しさん[sage]   投稿日:2017/01/06 15:34:04  ID:XtKi9eaG.net
>504
RubyTk

513
デフォルトの名無しさん[]   投稿日:2017/01/11 00:39:17  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
デフォルトの名無しさん[sage]   投稿日:2017/01/11 22:25:34  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  ID:CLJ6Gs1e.net
個々のサイトは、Rubyの言語とは関係ない。
各サイトで、使えるブラウザも異なる

自分が作ったものではないサイトの場合、そのサイトがAPIを公開していない場合は、
そのサイトに聞くしかない。
勝手に解析して、アクセスするのは、まず無理

クローラーを作る場合でも、他人のサイトを解析する部分が、最も難しい。
なぜなら、仕様が分からないから

そういうサイトは、相手にしない方がいい。
無限に時間が掛かって、しかも失敗に終わるから
コメント1件

516
デフォルトの名無しさん[sage]   投稿日:2017/01/12 10:12:46  ID:kXAP6NzE.net
>515
そうですね。確かにおっしゃるとおりです。
諦めることにしました。
色々とありがとうございました。

517
デフォルトの名無しさん[]   投稿日:2017/01/13 09:02:42  ID:SVvqQk93.net
今の異常なPython本ラッシュみていると、機械学習ブームでPython使う奴が
増えて、他の用途でも便利に使えるとわかる数年後ってほんとにRubyのピンチ
かもね。
同じような用途で使えるLLで二つ覚える意味ってないもんな。
コメント1件

518
デフォルトの名無しさん[sage]   投稿日:2017/01/13 16:52:53  ID:mqUzyOXD.net
rubyは1.8.7あたりのきらめきが無くなっていったね
2.0のときに意外とスッと入ってこなかったのはなぜだろう
個人的には笹田さんという人間の違和感だと思ってる
彼の人柄や能力について一切知らないし一切ケチつけるつもりはない
言いたいのはまつもとさんとRubyの一体感みたいなもんが好きだったってこと
そのことにあとからようやく気がついた

519
デフォルトの名無しさん[sage]   投稿日:2017/01/13 23:03:52  ID:9cq37382.net(2)
>517
> 同じような用途で使えるLLで二つ覚える意味ってないもんな。
むしろ片方しか使えないとかいう方がやばい
どっちもかるくつまみ食い程度はしておかないと、片方がポシャったときに潰しが効かない

520
デフォルトの名無しさん[sage]   投稿日:2017/01/13 23:12:36  ID:P5aAQ1iN.net
いや問題はRubyがポシャりかけっていうか
もうPythonだけで良くね?って状況な点じゃないの
でもRailsあるし! -> Rails以外死ぬ -> 代替が出てRailsも死ぬ
という流れの不可避感
コメント2件

521
デフォルトの名無しさん[sage]   投稿日:2017/01/13 23:18:26  ID:9cq37382.net(2)
>520
じゃぁ Python は機械学習だけじゃね?という見方もできるよね
機械学習は今でこそトレンドだが、AIなんて第何次ブームなんだよというぐらい盛衰の激しい分野だし
コメント1件

522
デフォルトの名無しさん[sage]   投稿日:2017/01/13 23:32:48  ID:pzDMg4F2.net
大勢が決まってからそちらをやる、という人と
今後どちらになっても対応出来るように
今のうちに両方触っておくという人と
2つのタイプがいると思うのだけど、
優秀な技術者はどちらのタイプだと思う?
コメント1件

523
517[sage]   投稿日:2017/01/14 00:04:24  ID:6M7JqjoN.net(2)
>520
そうそう、言いたかったのはそれ。
日本だけでもRuby優位は当面続くかと思ってたらここ2年弱ぐらいの雰囲気の変化というか、
本屋の書棚をみているだけでもPythonコーナーの増え方がすごくて、なんかいきなり決着
が付きかけているんじゃないか、と。

>521
それは確かにそう思う。今でてる大半のPython本が機械学習関係、それもnumpyやscipy、pandas
とかのライブラリ解説本みたいなのばっかりだし。

ただこの勢いは馬鹿にできないきがするというか、機械学習を入り口にPython使い始めた
層が他の用途にも使い出すと怖い気がする。

RubyってやっぱRails頼みなとこあるし。
コメント1件

524
デフォルトの名無しさん[sage]   投稿日:2017/01/14 00:24:16  ID:zIw5cAWr.net
>523
そんな余計な心配してる暇があるなら手を動かせ。コードを書け。
技術者なら一つの言語と心中するな。言語の寿命なんて誰にも読めないんだから
いつでも対応できるようにしておけ。
コメント1件

525
デフォルトの名無しさん[sage]   投稿日:2017/01/14 07:47:10  ID:6M7JqjoN.net(2)
>524
なんだろう?

飲み屋でくだらない雑談とわかってしている話に割り込んで「お前ら明日からもっと
ちゃんと働け」と情報量ゼロのつまらん正論言って、説教したつもりでいい気分、
でも自分が一番社会の役に立ってない産廃オヤジの臭い口臭でも浴びたかのような
不快感全開だわ

むしろ通常の荒らしの方がマシってくらいに

お前みたいなクズは死ね

526
デフォルトの名無しさん[sage]   投稿日:2017/01/14 10:54:53  ID:aYU1jhzZ.net
笑った

527
デフォルトの名無しさん[sage]   投稿日:2017/01/14 11:08:25  ID:zmTeKxXB.net
>522
どちらでもない
優秀なのは目的に応じて適切な道具を学ぶタイプ

528
デフォルトの名無しさん[sage]   投稿日:2017/01/14 12:07:53  ID:eWNJ08o1.net
ruby/tkに関連した本があんまり無い悲しみ
GUI系のやつはやっぱりrubyだと難しいのかね

529
デフォルトの名無しさん[sage]   投稿日:2017/01/14 17:14:29  ID:qkQ2nYQV.net
無難にScalaFXにしとけ

530
デフォルトの名無しさん[sage]   投稿日:2017/01/14 20:15:30  ID:noNswiiv.net
Ruby/TKで作ろうとしたら
なぜかTcl/TKの勉強をしていたでござる

531
デフォルトの名無しさん[sage]   投稿日:2017/01/15 00:06:23  ID:fjyotEZW.net
すみません、ガチ初心者なんですが質問良いでしょうか。
railsでユーザーを登録する、という作業をしているんですが

バリデーションエラーで@user.saveが失敗し
render :action => 'new' で戻るとき
urlが/users/newから/usersに変わるのは何故なんでしょうか
コメント1件

532
デフォルトの名無しさん[sage]   投稿日:2017/01/15 01:24:47  ID:mPtAA3FD.net(4)
>531
RailsがPRGパターン(ポストバック)を使ってないから。
URLがそうなるのがいやだからPRGパターンの方がいいのに。
Railsはクソ

533
デフォルトの名無しさん[sage]   投稿日:2017/01/15 01:28:33  ID:mPtAA3FD.net(4)
いや、PRGパターンは使ってるか。
使ってないのはポストバックか

534
デフォルトの名無しさん[]   投稿日:2017/01/15 09:17:25  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エンジニアおじさん(笑)、蓮沼賢志氏がお怒りの模様。
コメント1件

535
デフォルトの名無しさん[sage]   投稿日:2017/01/15 12:04:08  ID:mPtAA3FD.net(4)
>534
見れない。チキン野郎にようはないよw

536
デフォルトの名無しさん[sage]   投稿日:2017/01/15 17:18:05  ID:kfhl0y+Q.net
もしかしてゲームとかGUIやりたいならrubyじゃダメだったのか
WEBページ上で動作するアプリとかゲーム作りたい!

railsならWEBページ簡単に作れるのか!勉強しよう!

あれ、そもそもrubyでGUIとかゲームって無理ゲじゃね?←今ココ
コメント3件

537
デフォルトの名無しさん[sage]   投稿日:2017/01/15 17:47:35  ID:NauD/H/+.net
>536
昔のソシャゲみたいな動きのない糞クリックゲーなら作れるよ
それ以上のことをしようとするとJavaScriptが必須
サーバーサイドの処理を必要としない、ブラウザ上だけで完結するアプリやゲームならRubyは全く出番なし

538
デフォルトの名無しさん[sage]   投稿日:2017/01/15 18:06:48  ID:HaWyrA9g.net
RubyでGUIプログラミング向かないのは最初から明らかだったんだけど
アスペ気質の人が「そんなことはないRubyでウィンドウプログラミングは可能だ」とか言い続けたせいで被害が拡大したという経緯がある
実現可能かどうかという話をしたかったわけじゃないんだけど手遅れになるまで(あるいは今もなお)わかってもらえなかった
コメント1件

539
デフォルトの名無しさん[sage]   投稿日:2017/01/15 18:14:04  ID:JblLfoH8.net
それこそTcl/Tkにおいて内部処理としてTclで書かずにRubyで済むイヤッホー安楽みたいな需要だったのだが
なんかどっかで感覚のボタン掛け違えたまんま布教した人がいるのだ
>536は過去の黒歴史の被害者なので気に病まんで良いぞ

540
デフォルトの名無しさん[sage]   投稿日:2017/01/15 18:38:06  ID:mPtAA3FD.net(4)
ゲーム作るならUnity一択だろ

541
デフォルトの名無しさん[sage]   投稿日:2017/01/15 22:02:42  ID:x6BIGD4Q.net
>536
GUIならパイソン一択だろ
コメント1件

542
デフォルトの名無しさん[sage]   投稿日:2017/01/15 22:15:06  ID:zZ/oXiuq.net
>541
え?

543
デフォルトの名無しさん[sage]   投稿日:2017/01/16 00:37:25  ID:kuqQ4eTX.net
GUIはwx、2DゲーならSDLつかえば好きな言語でかけるっしょ

544
デフォルトの名無しさん[sage]   投稿日:2017/01/16 04:26:13  ID:bXP/pRvj.net
>538
早速湧いたなw

545
デフォルトの名無しさん[sage]   投稿日:2017/01/16 08:00:22  ID:u5Vbexco.net(2)
YAML.load_file
はあって、
JSON.load_file
がない理由って何かあるんですかね?
コメント1件

546
デフォルトの名無しさん[sage]   投稿日:2017/01/16 10:36:20  ID:3Uu7W/fv.net
>545
作った人が違うから

547
デフォルトの名無しさん[sage]   投稿日:2017/01/16 21:55:57  ID:u5Vbexco.net(2)
なるほど。
ありがとうございました。

548
デフォルトの名無しさん[sage]   投稿日:2017/01/16 23:21:24  ID:wb4vYWob.net
RubyってPythonに負けたから組み込み式に移行するのかねぇ。

549
デフォルトの名無しさん[sage]   投稿日:2017/01/16 23:29:50  ID:5jfXPHqe.net
http://3qilabs.com/how_to/how-to-save-load-cookies-using-watir-w...
ここでクッキーをファイルに保存すして読み込む方法を書いていますが
自分の環境ではうまく動作しません。
この部分で引っかかります。
driver.manage.add_cookie(:name =&gt; temp_o["name"], :value =&gt; temp_o["value"])
&gt;の部分で引っかかっているので調べてみるとURLを使うときの'>'のことだと
書いてあったのですが、何かrequreしないといけないものとかあるのでしょうか。
取得は成功しますが、ここの読み込みで失敗します。
コメント1件

550
デフォルトの名無しさん[sage]   投稿日:2017/01/16 23:36:17  ID:9C4LWgsi.net
>549
そのページのミスでしょ
&gt; を > に変えればいい
コメント1件

551
デフォルトの名無しさん[sage]   投稿日:2017/01/18 14:32:48  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-ses...
ここのリンクのように
サイトに入る→cookie保存→いったん終了→サイトに入る→クッキークリア
→クッキー読み込み→サイトに入る→リフレッシュ
のようにすれば、確かにログインを再現できましたが(domainとかつけてない状態で)
できればurlに入る前に再現できないものなのでしょうか。

552
デフォルトの名無しさん[]   投稿日:2017/01/19 18:07:07  ID:G8jkDaEj.net
馬鹿には無理

553
デフォルトの名無しさん[sage]   投稿日:2017/01/20 01:57:29  ID:/ixeQkYS.net
SSH・ログイン処理とか、ややこしい

基本的に、APIを公開していないサイトでは、自動操作は出来ない。
元々、サイトが自動操作できるように作られていないから

だから、そういうAPIを公開していない、各サイトを分析するのが大変。
ブラウザ種別を偽装したり、通信パケットを解析したり

そのサイトが、ハッシュなどを計算して確認していれば、まず正常には動かない

そういう、クローラーを作っていて、動かないサイトは、
ブラックリストに入れて探索しないこと

こういう質問は言語ではなく、各サイトのビジネスロジックの話だから、
仕様書がない者同士が話しても、仕方がない。
各サイトの担当者に聞くしかない

「Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例、
佐々木拓郎・るびきち、2014」
この本にも、クローラーではなく、公開しているAPIを使うように書いてある
コメント1件

554
デフォルトの名無しさん[]   投稿日:2017/01/20 04:17:00  ID:SuI25zgd.net
ブラックリストに入れる前にブラックリストに入れられてしまったでござる

555
デフォルトの名無しさん[sage]   投稿日:2017/01/20 07:23:53  ID:73D0Dll6.net
クローラは最底辺の仕事
というかコソ泥そのもの、まっとうな仕事ではない
コメント1件

556
デフォルトの名無しさん[sage]   投稿日:2017/01/21 13:24:24  ID:KtdMCRkZ.net(2)
>553
一般の本でAPIつかえと書くのは当たり前だろw

557
デフォルトの名無しさん[sage]   投稿日:2017/01/21 13:25:14  ID:KtdMCRkZ.net(2)
>555
Googleのことか?
世界有数のトップ企業だけども?
何が底辺なの?
貧乏人のやっかみにしか聞こえんが?

558
デフォルトの名無しさん[sage]   投稿日:2017/01/21 14:23:03  ID:Poucv/rB.net
倫理的な問題は置いといても、
泥臭くてつまらない力作業ばかりなのは確かだと思うよ
スクレイピングとGUI自動テストはプログラミングの底辺

559
デフォルトの名無しさん[]   投稿日:2017/01/21 14:30:31  ID:yR+dIRXC.net
そのうちAIが勝手にやってくれる

560
デフォルトの名無しさん[sage]   投稿日:2017/01/21 16:39:22  ID:0yByJcs8.net
泥の付いた野菜をそのまま売るのと
きちんと調理して売るのとが一緒なわけ無いだろ

561
デフォルトの名無しさん[sage]   投稿日:2017/01/21 20:33:31  ID:6NvQGvfC.net
robot.txt を遵守して、1日1回しかアクセスしないのなら、営業妨害にはならない

これを守らないから、営業妨害で逮捕される。
だから、APIを公開している企業と契約してから、APIでアクセスすべき

2chなんか、無断でAPIにアクセスしても、刑事告訴してくる

562
デフォルトの名無しさん[sage]   投稿日:2017/01/21 21:01:42  ID:do3CYLP8.net
誰も営業妨害の話はしていない

563
デフォルトの名無しさん[sage]   投稿日:2017/01/22 23:21:11  ID:kJbHnChQ.net
作りながら学ぶRuby入門、面白いなこれ
色々分かりやすいし
なんでこれが絶版になったのか分からん

564
デフォルトの名無しさん[sage]   投稿日:2017/01/23 13:47:35  ID:vFvi2mPp.net
rubyを造るのか

565
デフォルトの名無しさん[]   投稿日:2017/01/24 12:27:57  ID:ZplzBBh2.net
こんにちは!
学生時代、C言語によるプログラミング大好きなものでしたが、
Rubyもぜひとも勉強をさせていただきたいと考えています。
Rubyを勉強させていただくのに便利なサイトなどは
ございますでしょうか?
当方、工学博士です。

よろしくお願いします。

566
デフォルトの名無しさん[]   投稿日:2017/01/24 14:58:12  ID:wfxe1Gqr.net

567
デフォルトの名無しさん[sage]   投稿日:2017/01/24 22:03:31  ID:4S1Y2ldw.net
「たのしいRuby 第5版、2016」を読む方が速い

568
デフォルトの名無しさん[sage]   投稿日:2017/01/24 23:12:05  ID:bwm6iN8W.net
工学博士ならPython覚えた方がいいよ

569
デフォルトの名無しさん[sage]   投稿日:2017/01/25 00:59:04  ID:SIOVzfzG.net
みなさんおすすめのエディタやその設定を教えてください
当方、人間です

570
デフォルトの名無しさん[sage]   投稿日:2017/01/25 01:55:28  ID:/Hgbftsx.net
人間なら秀丸エディタでいいよ

571
デフォルトの名無しさん[sage]   投稿日:2017/01/25 06:35:09  ID:FiroNNp+.net(4)
Rubyのrescueの書き方ですが、
Javaのように例外範囲を広げていくような実装はないコードも書けてしまいますが(死にコードが出る)
何か理由があるんですかね?

572
デフォルトの名無しさん[sage]   投稿日:2017/01/25 06:35:49  ID:FiroNNp+.net(4)
実装はない => 実装ではない

573
デフォルトの名無しさん[sage]   投稿日:2017/01/25 07:39:06  ID:VdWl0ItW.net(2)
そのへんは一応は「RubyはJavaではないから」「それやってくとJavaになっちゃうじゃないか」あたりが回答になるんだが
適当にStandardErrorかRuntimeError継承して自作して捕まえてくれという運用が引っかかる?

574
デフォルトの名無しさん[sage]   投稿日:2017/01/25 07:45:17  ID:a2fwv9ft.net
Javaの検査例外は失敗だったというのが定説だよ
実際、後にも先にもJavaしか採用されてないよね
その辺の議論を詳しく知りたいなら「Java 検査例外 失敗」でググれば沢山出てくる

575
デフォルトの名無しさん[sage]   投稿日:2017/01/25 08:00:25  ID:r85LtB2a.net
ScalaやKotlinのようなJVMで動く新言語ですら検査例外は外されているという事実があり、
検査例外は失敗だったという結論には現在においてはもう全く議論の余地は無いのだけれど、
RubyはそもそもJavaと同時期に生まれた古い言語なので事情が違う
Rubyは静的型をしない言語だからそもそも検査例外はやりたくても実装できないんだよ
コメント1件

576
デフォルトの名無しさん[sage]   投稿日:2017/01/25 08:21:33  ID:FiroNNp+.net(4)
そうだったんですね。

自分、Java → Ruby の流れで勉強してきて、多言語はJavaしか知らず、
Javaの検査例外が合理的だと思っていたもので。

「Java 検査例外 失敗」で
なぜ、失敗と言われているのかを調べてみます。

ありがとうございました。

577
デフォルトの名無しさん[sage]   投稿日:2017/01/25 08:23:16  ID:FiroNNp+.net(4)
多言語 => 他言語

誤字多くて申し訳ないです。
投稿する前は見直す癖を付けないと。

578
デフォルトの名無しさん[sage]   投稿日:2017/01/25 08:45:12  ID:c3+bwXVx.net
>575

そういう理由もあるんですね。
ありがとうございました。

579
デフォルトの名無しさん[sage]   投稿日:2017/01/25 12:30:16  ID:nNSnM2U8.net
モジュールの中にモジュールをインクルードつてできないんですか?

580
デフォルトの名無しさん[]   投稿日:2017/01/25 15:10:04  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の後をどうすれば、
テキストファイルに代入した後の
結果が出力されるのでしょうか?
コメント2件

581
デフォルトの名無しさん[sage]   投稿日:2017/01/25 16:28:45  ID:jrtlHhYR.net
>580
色々突っ込みどころがあるけど
もしword.txtが
z x aaaa y
だったら
cherry apple aaaa banana
を出力したいってことで合ってる?

582
デフォルトの名無しさん[sage]   投稿日:2017/01/25 16:50:09  ID:VdWl0ItW.net(2)
一番聞くべきは学校とかの提出課題かどうかだろうな
下手に習ってない手法使うとバツされるぞ

583
デフォルトの名無しさん[]   投稿日:2017/01/25 17:38:22  ID:225SZjEG.net
合ってます!
提出課題ではないです。

584
デフォルトの名無しさん[sage]   投稿日:2017/01/25 18:58:23  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
コメント1件

585
デフォルトの名無しさん[sage]   投稿日:2017/01/25 20:50:06  ID:uSRNEv10.net
ファイル読むときは
ARGF.each do |line|
が便利
あと気になるのは正規表現つかうなら前後に \b が必要なのと
xyzのHash化、outfileの存在

586
sage[]   投稿日:2017/01/25 21:38:11  ID:nArJwlJe.net
datafile = ARGV[0]
str = File.open(datafile).gets
str['x'] = 'apple'
str['y'] = 'banana'
str['z'] = 'cherry'
puts str
コメント2件

587
デフォルトの名無しさん[sage]   投稿日:2017/01/26 00:49:41  ID:kgwkgRe2.net
パーフェクトRubyとパーフェクトRalis買ったけど
今一どういう風に読み進めればいいか分からん
どういう風に使えば良いんだこれ
コメント1件

588
デフォルトの名無しさん[sage]   投稿日:2017/01/26 01:04:02  ID:wtD2pOnN.net
>587
どんな本でも同じだと思うが、まずは写経からはじめよう

589
デフォルトの名無しさん[sage]   投稿日:2017/01/26 12:52:52  ID:++maIYxb.net
たのしいRuby 第5版、2016

Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説

改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015

この順番で、読むのが速い

590
デフォルトの名無しさん[]   投稿日:2017/01/26 13:25:05  ID:WboG9Ghq.net(2)
datafile = ARGV[0]
str = File.open(datafile).gets
str['x'] = 'apple'
str['y'] = 'banana'
str['z'] = 'cherry'
puts str

これだとテキストファイル内で
xが2回出てきた時1回目の方にしか
代入されないのですが
どうすればよいでしょう。
コメント1件

591
デフォルトの名無しさん[sage]   投稿日:2017/01/26 13:32:22  ID:g4Nshn9j.net
だからそうなるからやっちゃだめなんだって
>586みたいに他人に教える能力のないバカは永劫黙ってて欲しい

592
sage[]   投稿日:2017/01/26 14:55:33  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  ID:WboG9Ghq.net(2)
gsubを使ったらできました。ありがとうございます。

594
sage[]   投稿日:2017/01/27 10:47:26  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
デフォルトの名無しさん[sage]   投稿日:2017/01/28 10:47:38  ID:N8YHTGgV.net
gsub 一発で済むやん

596
sage[]   投稿日:2017/01/28 15:01:34  ID:HxABDFK+.net
>gsub 一発で済むやん
無理じゃない?
when 'x'; 'z'
when 'y'; 'x'
when 'z'; 'y'

597
デフォルトの名無しさん[sage]   投稿日:2017/01/28 16:13:31  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
デフォルトの名無しさん[sage]   投稿日:2017/02/02 23:52:40  ID:1pM+gvmw.net
Pythonにやられっぱなしだったけどデータサイエンス分野でのRubyの逆襲が始まった

http://www.s-itoc.jp/report/reaserch_results/439
コメント1件

599
デフォルトの名無しさん[sage]   投稿日:2017/02/03 00:18:37  ID:L2L7vPE4.net
>598
データサイエンスでプログラミング言語がPythonかRubyかなんて
何の差別化要因にもならん
ガラパゴス化を引き起こし日本の情報産業の足を引っ張る迷惑行為でしかないということをこいつらは自覚すべき

600
デフォルトの名無しさん[]   投稿日:2017/02/03 21:47:40  ID:HLUtHxR2.net
今日本屋さん行ってオライリーのデータマインニング、AI、統計関連の書籍を見てみたら
ほぼPythonが使われてたよ、やっぱ時代はパイチンくんだよ。

601
デフォルトの名無しさん[sage]   投稿日:2017/02/04 01:54:39  ID:dlgM/2ii.net
世界からマネーが集まり開発パワー1番、製品や技術が世界中に売れる国アメリカ
だからAI研究者も最多、そこではPython>ruby、だからAIではPython多数

日本でAI研究マネーを増やすか、米でruby利用者を増やすしか無い

602
デフォルトの名無しさん[sage]   投稿日:2017/02/04 20:36:42  ID:vuXXPGjm.net
まつもと自身がmrubyとかいう組み込みに移行しているから無理。

603
デフォルトの名無しさん[sage]   投稿日:2017/02/04 20:51:04  ID:yboswxMT.net
mrubyは補助金貰ってるから誰も使ってなくても一応開発してるポーズは見せなきゃいけない
Rails人気にも陰りが出てきたし特に次の弾もない
数年後には国内だけで一部のオタクがPerl代わりに使うだけの元のポジションに戻ってそうだね

604
デフォルトの名無しさん[]   投稿日:2017/02/04 21:26:45  ID:56jDk6a3.net
rubyで福一も解決っていうだけで予算もらえてウハウハ

605
デフォルトの名無しさん[]   投稿日:2017/02/04 22:49:10  ID:XS0fIkHD.net
mruby使われてるやん

606
デフォルトの名無しさん[sage]   投稿日:2017/02/05 00:41:56  ID:Fi1WhCJO.net
政治に興味あるさんの中ではまつもとゆきひろは税金泥棒で
自分に反論する阿呆はまつもとのシンパなので
そういうこと言っても全くの無駄

607
デフォルトの名無しさん[sage]   投稿日:2017/02/05 00:59:47  ID:7nH8BdTw.net
意味不明

608
デフォルトの名無しさん[sage]   投稿日:2017/02/05 03:55:50  ID:f2xN2W9l.net
まっつんは今も日本のウケイ化を気にしているのかな?

609
デフォルトの名無しさん[sage]   投稿日:2017/02/05 11:48:02  ID:4PxpyFKH.net
mrubyのコンセプトは期待しているけど動作が遅いのと日本の十八番でドキュメントがショボイのが難

610
デフォルトの名無しさん[sage]   投稿日:2017/02/06 19:12:53  ID:hEZ+1tdD.net
そろそろpythonに乗り換えた方が良いのかなあ?
コメント1件

611
デフォルトの名無しさん[sage]   投稿日:2017/02/06 20:15:40  ID:3oInSTA4.net
>610
やりたいことによる、としか
Web系でちょこちょこやるならまだまだRailsのあるRubyは使いではあるし、流行りの機械学習とかやってみたいなら
Python使ってみればいいだろうし

銀の弾丸なんてないんだから適材適所で

612
デフォルトの名無しさん[sage]   投稿日:2017/02/06 20:52:04  ID:WE8Ef6wq.net
健全でない言葉が含まれているため表示しません 内容を確認する

613
デフォルトの名無しさん[sage]   投稿日:2017/02/06 20:58:39  ID:Y/+tyt0G.net
ここで質問していいのか分からないけど
eclipseにaptanaのプラグインを入れてRailsを扱えるようにしたはずなんだけど
新規>Railsプロジェクト>abcっていう風にしても
表示されるターミナル上だと
$ rails .
っていうありえないコマンドが実行されてフォルダしか作成されない……
aptana本体も導入してみたけど同じ結果になった
一応は直接ターミナルから叩けば出来るから何とかなるけど不便
コメント1件

614
デフォルトの名無しさん[sage]   投稿日:2017/02/07 01:32:28  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>

というエラーを吐かれて補完機能が働かないです……
ググってもそもそも躓くポイントじゃないのか全然ヒットしないのでどうすればいいか分からんです
コメント2件

615
デフォルトの名無しさん[]   投稿日:2017/02/07 02:58:29  ID:e2fTv1VF.net
>613
>rails .
. はカレントディレクトリじゃないの?

>614
ファイルを、required できないのかな?

PC名・ユーザ名・ファイル名・パスなどに、半角英数字以外を使っているとか?
ファイルの文字コードが異なるとか、アクセス制限があるとか

>C:\Users\
c: 小文字のc でないとダメとか
コメント1件

616
デフォルトの名無しさん[sage]   投稿日:2017/02/07 08:15:49  ID:shQZf8xN.net
>615
PC、ユーザ名、ファイル名はすべて半角英数字にしてます
cを小文字にしてみましたがダメでした

617
デフォルトの名無しさん[sage]   投稿日:2017/02/07 19:47:23  ID:TqT8diCe.net(2)
>614
spoon が読めてないようだけど、当然入れてるよね…
コメント1件

618
デフォルトの名無しさん[sage]   投稿日:2017/02/07 19:58:31  ID:ohGA/Fi6.net(2)
>617
gem listで確かめてみた所、0.0.6が入ってました
コメント1件

619
デフォルトの名無しさん[sage]   投稿日:2017/02/07 20:56:25  ID:TqT8diCe.net(2)
>618
gem list で使ってる Ruby と atom が使ってる Ruby は同じだよね…?
コメント1件

620
デフォルトの名無しさん[sage]   投稿日:2017/02/07 21:08:00  ID:ohGA/Fi6.net(2)
>619
もちろん同じにしてます
一体何がどうなってるか本当に分からないのが……

621
デフォルトの名無しさん[]   投稿日:2017/02/08 01:47:47  ID:6rskJv7R.net(2)
>runner.rb:112:in `start': uninitialized constant Spoon::FileActions (NameError)

ここをデバッグすれば?
それか、エラーログをもっと詳細に表示できないの?

622
デフォルトの名無しさん[sage]   投稿日:2017/02/08 03:49:23  ID:6rskJv7R.net(2)
pyenv, rbenv などの仮想環境は、activate すると、
環境変数PATHを書き換えて、PATHの最初に、仮想ディレクトリを持ってくる奴か?

activateしてないとか、
activateした端末から、atomを起動していないとか

環境変数PATHを書き換えているなら、
実際にどのディレクトリにアクセスしているか、チェックすべし
コメント1件

623
614[sage]   投稿日:2017/02/08 08:51:27  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[sage]   投稿日:2017/02/08 23:17:08  ID:aJ5fQeJs.net
なんかずっと調べてたけど、.は絶対パスだとかカレントディレクトリの事とかってのは分かったけど
結局railsだけ作成されん
rbenv使ってるからpathが変なことになってるのか
この環境を準備する所で延々と蹴躓く現象は何だ一体

625
デフォルトの名無しさん[]   投稿日:2017/02/09 02:45:49  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を含んでいるのか?

フォルダのパスを指定する際も、絶対パスではなく、
仮想のルートとか、プロジェクトのルートからの相対パスで指定すべき
コメント1件

626
613[sage]   投稿日:2017/02/09 07:54:29  ID:qeBroOpz.net
>625
ありがとう、解決したわ
環境変数にrbenvで使ってるやつのpathを打ち込んだら動いたわ
すでに設定済みにしてると思ってたら/shimsしか環境変数に入ってなかった
本当にありがとう、俺がただアホだった

627
デフォルトの名無しさん[sage]   投稿日:2017/02/09 15:15:20  ID:FNn9chTz.net
自分がアホということだけは一生忘れるなよ

628
デフォルトの名無しさん[sage]   投稿日:2017/02/11 19:48:55  ID:oCse2iaP.net
みんな最初はアホだったんだよ

629
デフォルトの名無しさん[sage]   投稿日:2017/02/12 17:47:30  ID:+uhhqNyl.net
そして今でも

630
デフォルトの名無しさん[sage]   投稿日:2017/02/12 20:34:37  ID:X5nO73Bv.net
IDEとしてeclipseを使い始めたのですが
入力補完が自動で出てこないのは仕様なのでしょうか?
ctrl+spaceがデフォルトなのですがオートにする方法が分からず……

631
デフォルトの名無しさん[sage]   投稿日:2017/02/14 02:56:09  ID:3why3ank.net
VScodeにしとけ

632
デフォルトの名無しさん[sage]   投稿日:2017/02/16 00:28:37  ID:+eyUWXiG.net
RubyでGUIが発展しなかったのは何故なんでしょうか?
書きやすいのでGUIも作りやすい気がするのですが……
コメント4件

633
デフォルトの名無しさん[sage]   投稿日:2017/02/16 02:15:25  ID:t/hw8IzF.net(2)
>632
端的に言うとWindowsに向いてないから
まつもとひろゆきは根っからのWindows嫌いで幽冥

634
デフォルトの名無しさん[sage]   投稿日:2017/02/16 02:17:04  ID:t/hw8IzF.net(2)
失礼ゆきひろだな

635
デフォルトの名無しさん[sage]   投稿日:2017/02/16 02:23:45  ID:SJI/N2Pk.net(2)
そもそもRubyはもともとそんなにポピュラーな言語ではない
Railsがバカ売れしたから相対的にWebばかりで使われてるような状態になっただけ
特にGUIでダメってわけじゃなく、Railsを除くとユーザーの母数は極めて少ない
コメント1件

636
デフォルトの名無しさん[sage]   投稿日:2017/02/16 02:48:11  ID:Q8D/mNDA.net
>635
極めて少ないんじゃなくて、GUIに向いてないだけ
vagrant、chef、fluentd、jekyll など Ruby 製ツールは数多くある

637
デフォルトの名無しさん[sage]   投稿日:2017/02/16 08:20:46  ID:AZnxSHxr.net
GUI アプリを書きたいプログラマってどんぐらいおる?
コメント1件

638
デフォルトの名無しさん[sage]   投稿日:2017/02/16 08:50:45  ID:SJI/N2Pk.net(2)
>637
スマホもRailsも一種のGUIアプリだよ

639
デフォルトの名無しさん[sage]   投稿日:2017/02/16 10:39:47  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
デフォルトの名無しさん[sage]   投稿日:2017/02/16 11:11:18  ID:BmKkG0r5.net
"foo"に .tap {|x| p x.object_id } でわかりそう。
正解はしらんけど都度 "foo".freeze って書くのもうざいので
気にするなら定数にいれとくのがふつう?

641
デフォルトの名無しさん[sage]   投稿日:2017/02/16 12:40:21  ID:Yr9i0JtD.net
旅行中で手元に環境がないので記憶に頼って適当に書く

スクリプト中のリテラルはコンパイル時にオブジェクトIDが確定する
なので文字列リテラルである限りは毎回生成されているわけではないので気しなくていいというかむしろ
「埋め込み#{}を含まないリテラルで書いたほうがいい」という場合すらもありうる

642
デフォルトの名無しさん[sage]   投稿日:2017/02/16 13:40:44  ID:1VBkG9E6.net
>632
tkで引っ張り過ぎたんじゃね
使ってる人はこっそり使ってる

643
デフォルトの名無しさん[sage]   投稿日:2017/02/16 16:18:42  ID:uedG8QoH.net
そもそもRubyの立ち位置がGUIの場所を奪い取ろうとしなかったから。
手軽さ気軽さ柔軟さが重視され
GUIで便利に使うというところは取り入れなかった。
頑張った人もいたがその波は複雑すぎて難しすぎて不便すぎて
誰もついていかなかった。

644
デフォルトの名無しさん[sage]   投稿日:2017/02/16 16:29:09  ID:fLSXvzzP.net
>632
JRuby + JavaFX が現状だとアリな選択肢だと思う。
コメント1件

645
デフォルトの名無しさん[sage]   投稿日:2017/02/16 18:16:34  ID:zGnLk6iz.net
あれは不幸な出会いの結果の事故だったのだ
よくある「便利なRubyで○○操作するライブラリ作ってみました」と同様の
「便利なRubyでGUIツールキットを操作するライブラリ作ってみました」でしかなかったのだが
いつのまにやらどこでやら「簡単なRubyでGUIプログラミングが簡単にできる(ようになる)」ということになってしまったのだ
初心者(を煽る人)の変な期待を背負わされて潰れていったプロジェクトが死屍累々

646
デフォルトの名無しさん[sage]   投稿日:2017/02/16 20:00:08  ID:9oOObwwg.net
>644
その組み合わせでやってみたいけど全然資料が無くて悲しい
rbenv-winだとそもそもJRubyすらインストール出来ないからなおさら悲しい

647
デフォルトの名無しさん[sage]   投稿日:2017/02/16 22:36:27  ID:jc3dpiuS.net
>632
> RubyでGUIが発展しなかったのは何故なんでしょうか?

RubyにかぎらずGUIアプリ自体が今の主流じゃない

GUIアプリによく使われるものでもXAMLとか
言語以外でGUIを作る

648
デフォルトの名無しさん[]   投稿日:2017/02/16 23:57:07  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 という言語も出てきた
コメント1件

649
デフォルトの名無しさん[sage]   投稿日:2017/02/17 00:19:29  ID:q11e8bmB.net
KotlinはC#やTypeScriptの系譜だろ
一貫したルールに基づいてシンプルで合理的なコードを書けというタイプの言語
言語がいくら複雑になろうが一貫性がなかろうが手に馴染むならOKという
Ruby系(ScalaとかCoffeeとか)はかなり違う
コメント2件

650
デフォルトの名無しさん[sage]   投稿日:2017/02/17 00:40:25  ID:1Ywu3Nja.net
>649
誤爆かな…?

それはともかく、立ち位置がまったく逆だと思うぞ
C#やKotlinはともにJavaのシンプルすぎる部分に手を入れて書きやすくしようとしたものなので、
どっちかというと「手に馴染むならOK」を目指してる言語だぞ

651
デフォルトの名無しさん[sage]   投稿日:2017/02/17 01:37:36  ID:EzDq9nSn.net(2)
>649
× 言語がいくら複雑になろうが一貫性がなかろうが手に馴染むならOKという
○ 言語がシンプルで一貫性があって手に馴染む
それがRuby系(ScalaとかCoffeeとか)だよ

652
デフォルトの名無しさん[sage]   投稿日:2017/02/17 01:38:27  ID:EzDq9nSn.net(2)
>648
> これは、Chef の構文だけど、package とか独自のキーワードをつくれる。

そのpackageはキーワードじゃなくてただの関数だよ。
あんたRuby知らないんじゃね?

653
デフォルトの名無しさん[sage]   投稿日:2017/02/17 11:44:07  ID:9tb0EpUw.net
それいったら関数じゃなくてメソッドだし
DSLの話ならキーワードって表現してなにが悪いんだか

654
デフォルトの名無しさん[sage]   投稿日:2017/02/17 17:58:53  ID:HSZP6Y4k.net(3)
文字列と数字が混在した文章が入った変数があるのですが、
数字だけを消す方法ってありますか?

例:foo2017uEHngg

655
デフォルトの名無しさん[sage]   投稿日:2017/02/17 18:02:12  ID:HSZP6Y4k.net(3)
あ、ちなみにループで流してて全てに適応したいので、
image = image.sub( /foo2017uEHngg/ , 'foouEHngg')
とかの置換ではなく、単純に数字だけを消せればと思っています。
コメント1件

656
デフォルトの名無しさん[sage]   投稿日:2017/02/17 18:18:27  ID:CTqiPbYL.net
あるよ
delete使いなよ

657
デフォルトの名無しさん[]   投稿日:2017/02/17 18:18:57  ID:yGnzX63H.net
ありますよ

658
デフォルトの名無しさん[sage]   投稿日:2017/02/17 18:35:45  ID:K+qi4wTI.net
>655
置換で(も)いいよ
「何もない文字列」と置換すればいい
irb> 'abc123def'.gsub(/\d/){''}
=> "abcdef"

659
デフォルトの名無しさん[sage]   投稿日:2017/02/17 18:39:24  ID:jqlfOnRa.net
'abc123def'.gsub(/\d/,'')でいいでしょ

660
デフォルトの名無しさん[sage]   投稿日:2017/02/17 19:33:20  ID:HSZP6Y4k.net(3)
645ですがイケました!
大変助かりました。
皆様ありがとうございますm(_ _)m

661
デフォルトの名無しさん[sage]   投稿日:2017/02/18 02:50:53  ID:iGUiGFMH.net
GitHubで「remove password」というコミットを検索するとパスワードらしきものが大量に見つかる
https://security.srad.jp/story/17/02/17/0453215/

662
デフォルトの名無しさん[]   投稿日:2017/02/18 07:24:52  ID:gP3354JB.net(2)
わろた

663
デフォルトの名無しさん[]   投稿日:2017/02/18 07:25:33  ID:gP3354JB.net(2)
あとどの言語の利用者に馬鹿が多いかもわかるかもしれんな

664
デフォルトの名無しさん[sage]   投稿日:2017/02/18 23:56:49  ID:Dj21W5qA.net
elseif って言語でかなり変わるのがいとおかし

if else だけ C
elseif VBA
elsif ruby
elif phyton

となるとそのうち eif や ef の言語が出てきそう

665
デフォルトの名無しさん[sage]   投稿日:2017/02/19 15:31:10  ID:3qLPQcO5.net
caseがあるならelse-ifはいらんよな
カラム位置ずれるし

666
デフォルトの名無しさん[sage]   投稿日:2017/02/19 23:50:13  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をつけたのですが、改行される理由が分からず……
コメント3件

667
デフォルトの名無しさん[sage]   投稿日:2017/02/20 00:25:48  ID:csIbwSs4.net(2)
>666
それだとsplit有りの方の結果は
4
5
6
1
2
3
になりそうなもんだけどな
コメント1件

668
デフォルトの名無しさん[sage]   投稿日:2017/02/20 00:36:32  ID:xJP1+W8M.net(2)
>667
申し訳ないです、その通りでした
ただ理想としては
4 5 6
1 2 3
と表示したかったので、要素ごとに改行されるのが気になりました
コメント1件

669
デフォルトの名無しさん[sage]   投稿日:2017/02/20 00:39:20  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(' ')
コメント1件

670
デフォルトの名無しさん[sage]   投稿日:2017/02/20 00:44:21  ID:csIbwSs4.net(2)
結果が自分の予想と大きく違って原因がわからないときは
irbで1行ずつ結果見てくのが良いよ

>666の場合はたぶんbの内容は予想通りだったんじゃないかな
putsの仕様を自分にとって都合の良い方向に勘違いしてただけで
コメント1件

671
デフォルトの名無しさん[sage]   投稿日:2017/02/20 00:56:41  ID:xJP1+W8M.net(2)
>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  ID:mClGTBrk.net(2)
puts, print は文字列を表示するから、インスタンス.to_s を呼ぶ。
一方、p, pp はデバッグ用だから、オブジェクトの構造もわかる

リテラルなら、% で、そのまま様々な配列にできる

ary = %w(a b c)
p ary
# => ["a", "b", "c"]

673
デフォルトの名無しさん[sage]   投稿日:2017/02/20 11:21:40  ID:hEKkgCXk.net
Rubyって多次元配列の資料ってあんまりないの?

674
デフォルトの名無しさん[sage]   投稿日:2017/02/20 14:52:09  ID:z8tMUJw0.net
Rubyって複雑なことをさせる言語じゃないじゃん?

675
デフォルトの名無しさん[sage]   投稿日:2017/02/20 14:58:46  ID:0oYPRVWe.net(3)
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
デフォルトの名無しさん[sage]   投稿日:2017/02/20 16:12:09  ID:nLOBZbgL.net(2)
何がしたいのかよくわからんけど
puts b.join(" ")
コメント1件

677
デフォルトの名無しさん[sage]   投稿日:2017/02/20 16:15:54  ID:HE07SQGC.net
どんな糞な解説や教科書を使ってるのかは知らんが
Rubyにおいては配列内容に添字でアクセスするのは最終最後の泥臭い手段
そうならないように作る

678
デフォルトの名無しさん[sage]   投稿日:2017/02/20 16:38:03  ID:0oYPRVWe.net(3)
>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で多次元配列あんま使わないから気になってさ
コメント1件

679
デフォルトの名無しさん[]   投稿日:2017/02/20 17:04:29  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"]]
>>
コメント1件

680
デフォルトの名無しさん[sage]   投稿日:2017/02/20 17:35:58  ID:nLOBZbgL.net(2)
>678
b=[["1", "2", "3"], ["4", "5", "6"]]
b.each{|a| p a}
コメント1件

681
デフォルトの名無しさん[sage]   投稿日:2017/02/20 17:57:38  ID:0oYPRVWe.net(3)
>679>680
eachだ多次元配列で表示していっても
その配列ごとでやってくれるのか、本当に勉強になるわ
リファレンスとか本漁ってもこの辺の挙動が書いて無かったから助かった
コメント1件

682
デフォルトの名無しさん[sage]   投稿日:2017/02/20 18:32:48  ID:wmO++6yz.net
ああそうか、初心者スレだし最初に言うべきだった

>681
Rubyに多次元配列は存在しない(と、それこそマニュアルに書いてあるはず)
ただのネストした配列でしかない
なのでふつうの配列操作が使える
コメント1件

683
デフォルトの名無しさん[sage]   投稿日:2017/02/20 21:12:58  ID:ZSqAwaEi.net
>682
あーなるほど
それこそ配列が一つの要素みたいに扱うのね
その辺が何となく曖昧だったけどやっと分かったわ

684
デフォルトの名無しさん[sage]   投稿日:2017/02/20 23:53:00  ID:mClGTBrk.net(2)
動的言語では、多次元配列は無い。
単なるオブジェクトの配列しかない

そのオブジェクトが配列なら、2次元配列のように見えるだけ。
だから、ジャギー配列

685
デフォルトの名無しさん[sage]   投稿日:2017/02/21 07:50:42  ID:sM1Q20qs.net
APLは動的じゃなかったか

686
デフォルトの名無しさん[sage]   投稿日:2017/02/21 08:33:27  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
デフォルトの名無しさん[sage]   投稿日:2017/02/21 13:04:50  ID:quEto1j7.net(2)
配列の要素が配列なのが多次元配列じゃないという意味が解らないんだけど、
1次元配列の番号を2次元に付けかえたのが多次元配列といいたいわけ?

688
デフォルトの名無しさん[sage]   投稿日:2017/02/21 13:11:28  ID:quEto1j7.net(2)
method = obj.method(:hoge)
method.call(arg1, arg2, arg3)
これが出来るからrubyのメソッドはファーストクラスっていうけど
.callっていうのがファーストクラスじゃないのに
なんでmethodがファーストクラスなのかわからない
矛盾してると思う。
call.call.って永遠に続く無限ループじゃないかとおもう。
コメント1件


689
デフォルトの名無しさん[sage]   投稿日:2017/02/21 14:03:18  ID:+7ZkBccH.net
curryでProc返すし、いろいろ目をつむるところは多いね。
同じ結果にできればいいんやろみたいな

690
デフォルトの名無しさん[]   投稿日:2017/02/22 23:43:47  ID:oa5gpijl.net
>688
関数型言語において関数そのものがファーストクラスであることは決定的な特質であり、
対してRubyのメソッドがファーストクラスではないという指摘はまったくそのとおり

それゆえRubyは(純粋オブジェクト指向言語であって)関数型言語ではない、
ただし(lisp由来の伝統的な)関数型プログラミング・スタイルには最適な設計が為されている
コメント1件

691
デフォルトの名無しさん[sage]   投稿日:2017/02/23 00:00:31  ID:mXBoTgqP.net
関数型プログラミングに最適とはとても言えないだろ
Rubyのブロックが式じゃないのは本当に糞
-> { とか関数型信者なら発狂するレベルの醜悪なシンタックス
コメント1件

692
デフォルトの名無しさん[]   投稿日:2017/02/23 01:27:53  ID:Zu/nS+/A.net(2)
>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は基本的には命令型言語であるけれど、 関数型プログラミングへの
  際立った潜在能力があるのだから、 それらをいつどのように使うか(そして、いつ使わないか)を
  知っておくべきである。
コメント1件

693
デフォルトの名無しさん[sage]   投稿日:2017/02/23 06:41:51  ID:V6/XQnA9.net(2)
>692
ブロックが式なら lambda もいらないんだよ
ほんとに関数型言語使ったことあるの?
コメント2件

694
デフォルトの名無しさん[sage]   投稿日:2017/02/23 07:11:05  ID:YiHBi8SD.net
>693
ちゃんと文章を読んだ方が良いよ。
コメント1件

695
デフォルトの名無しさん[sage]   投稿日:2017/02/23 07:19:43  ID:V6/XQnA9.net(2)
>694
688や691はlambdaやcallを唱えなければならないこと自体が最適でないと言ってるんであって、692は何の反論にもなってないよ
Matzの言葉を借りて言えば、処理系を満足させるためだけの無駄な記述をしなければならないことは「屈辱」
コメント2件

696
デフォルトの名無しさん[sage]   投稿日:2017/02/23 08:26:20  ID:adFVqgJc.net
ブロックが式と申しますかオブジェクトであらねばいけませんことよ。
松本さまがおっしゃりあそばされましたように、ブロックをお二つ以上
お渡ししたいときは、ラムダ式をご使用なされるようにとのことでしたわ。
コメント1件

697
デフォルトの名無しさん[sage]   投稿日:2017/02/23 09:03:07  ID:mPCh5pwG.net(2)
そんなに仕様に不満があるなら自分で言語つくればいいのに。

698
デフォルトの名無しさん[sage]   投稿日:2017/02/23 09:20:42  ID:yVxxN/xM.net(3)
# 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)

というエラーが出るのですが何故なんでしょうか?
コメント1件

699
デフォルトの名無しさん[sage]   投稿日:2017/02/23 11:26:52  ID:wDND+Qvv.net(2)
>698
勝手に決めつけて勝手なことするな
プログラミング言語は書き方が決められている
http://doc.okkez.net/2.1.0/view/spec/control#while
コメント1件

700
デフォルトの名無しさん[sage]   投稿日:2017/02/23 12:24:42  ID:yVxxN/xM.net(3)
>699
申し訳ないです
ただ
#Print Test Cases
i = 0
while
x = gets.to_i
i += 1
break if x == 0
puts "Case #{i}: #{x}"
end

というプログラムを書いた時は問題なく動いたもので
正直何が違うのか今一分からず……
コメント1件

701
デフォルトの名無しさん[sage]   投稿日:2017/02/23 13:03:40  ID:wDND+Qvv.net(2)
>700
うん、なんか根本的なところがわかってもらえてなくて悲しいからはっきり言うけど
そのwhileの使い方は「最初から間違っている」
問題なく動いたことなどほんとは一度もないのだ
プログラミング言語は容量用法守って正しい使い方で使うこと
while true
puts 'press Ctrl-C for stop'
end

どうしても回答欲しい人向けに答えるとwhileが制御構造(で、doが省略可能)だったからwhileがexpr求めて行跨いだからだな
while a = 32
p a
end
コメント1件

702
デフォルトの名無しさん[sage]   投稿日:2017/02/23 13:23:10  ID:yVxxN/xM.net(3)
>701
ありがとうございます
もっとちゃんと勉強します……

703
デフォルトの名無しさん[sage]   投稿日:2017/02/23 13:28:28  ID:mPCh5pwG.net(2)
whileの使い方がわかっていなくても
こんな書き方は知っているんだな。>map(&:to_i)
初めてみたんで調べたわ。

704
デフォルトの名無しさん[sage]   投稿日:2017/02/23 13:28:53  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  ID:Zu/nS+/A.net(2)
>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」と書く
コメント1件

706
デフォルトの名無しさん[]   投稿日:2017/02/24 00:10:31  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
デフォルトの名無しさん[sage]   投稿日:2017/02/24 05:07:12  ID:0EY+MEOs.net
>705
> Ruby の lambda は単なるメソッドでしかないから、こんなこともできる

こんなことって、それ何かすごいことなの?

708
デフォルトの名無しさん[sage]   投稿日:2017/02/24 06:28:01  ID:wGBUe+Mz.net
メタプログラミングでよく使われる、オープンクラスだろ

オープンクラスとは、既存のクラスを好きな場所で再オープンし、
メソッド修正・追加など、任意の変更を加えられる機能のこと

>module Kernel; alias :fn :lambda; end
モジュールを開いて、別名を付ける

名前が重複した場合とか、関数の内容をカスタマイズして使う場合に、
元の関数を別名にして取っておくとか

709
デフォルトの名無しさん[sage]   投稿日:2017/02/24 10:10:37  ID:pC79/nbA.net
他言語ならなんでもない機能とかブロックがファーストクラスだったら必要のない細工を自慢げに紹介するのかっこわるい

710
デフォルトの名無しさん[sage]   投稿日:2017/02/24 12:20:03  ID:GgrUn8v8.net
map(&:to_s)みたいなのも格好悪いハックだよな
メソッド参照を自然に扱えないのは致命的

711
デフォルトの名無しさん[sage]   投稿日:2017/02/24 14:51:52  ID:E7gdlIod.net(2)
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
デフォルトの名無しさん[sage]   投稿日:2017/02/24 15:56:35  ID:lQp9pEy2.net
READMEには
Ruby/SDL needs Ruby and SDL ...
ってあるけどSDLは導入済み?
導入していてもPATHにsdl-configコマンドが通ってないとか
コメント1件

713
デフォルトの名無しさん[sage]   投稿日:2017/02/24 16:03:49  ID:E7gdlIod.net(2)
>712
SDL本体のインストール忘れてました……
入れてきます

714
デフォルトの名無しさん[sage]   投稿日:2017/02/26 18:23:15  ID:BLcxLJLg.net
rubyに関する活発なコミュニティってないの?

715
デフォルトの名無しさん[sage]   投稿日:2017/02/26 18:36:48  ID:Em0PCsm6.net
そう聞くってことは英語読めないってことだよね
ないよ
コメント1件

716
デフォルトの名無しさん[sage]   投稿日:2017/02/26 19:04:27  ID:EY506Qz0.net
英語でいいならあるんだけどねえ
コメント1件

717
デフォルトの名無しさん[sage]   投稿日:2017/02/26 19:27:47  ID:DnCu8UW+.net
Railsやってないなら無いな

718
デフォルトの名無しさん[sage]   投稿日:2017/02/26 23:14:24  ID:SNAVJ+Hg.net
多言語経験者向けにさらっとrubyを学べるなるべく薄めの本を探しております
はじめてのrubyがその様な物だと調べていて知りましたが、どうも扱っているバージョンが古い物のようで
新しいバージョンに対応しているそのような本はないでしょうか

719
デフォルトの名無しさん[sage]   投稿日:2017/02/27 00:04:36  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
デフォルトの名無しさん[sage]   投稿日:2017/02/27 00:56:50  ID:44jB03Ba.net
他言語出来るような人ならとりあえずEffective Rubyだけ読んどけば済むんじゃないかな

721
デフォルトの名無しさん[sage]   投稿日:2017/02/27 01:19:05  ID:NoEcrRje.net
>715>716
やっぱり英語読めなきゃダメか……
もっとrubyの事を知りたいし色々見てみたい

722
デフォルトの名無しさん[]   投稿日:2017/02/27 08:11:17  ID:HTxl7OoW.net
たのしいRuby 第5版、2016
すべての言語に応用が効く、入門書

Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説

プロ必須本

723
デフォルトの名無しさん[sage]   投稿日:2017/02/28 09:23:30  ID:6GmkQX7r.net
現状入門本はたのしいRuby一択
それ以外はバージョンが古い

724
デフォルトの名無しさん[]   投稿日:2017/02/28 11:09:36  ID:+gLWzVyd.net(2)
下のプログラムで、定数 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>
コメント1件

725
デフォルトの名無しさん[sage]   投稿日:2017/02/28 12:25: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  ID:+gLWzVyd.net(2)
どうもありがとう。
定数の探索ルールが良く分かってなかったようで。
self.class の論理的な階層構造から、見える定数が決まるのだと思ってたのだけど、そうではなくて、メソッドが定義されたソースコード上の位置で決まるんですね。

727
デフォルトの名無しさん[sage]   投稿日:2017/03/01 01:17:13  ID:ElQ6OcG3.net
驚き溢れる素敵な言語

728
デフォルトの名無しさん[sage]   投稿日:2017/03/01 08:19:02  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
デフォルトの名無しさん[sage]   投稿日:2017/03/07 17:50:47  ID:OR7b+iU3.net(4)
定数はclassかmoduleの中に入らないと変わらないルールだから
ブロックの中のaaaのHOGEは一番外側を参照するだけだろ。

730
デフォルトの名無しさん[sage]   投稿日:2017/03/07 18:00:47  ID:OR7b+iU3.net(4)
わかりにくいから意味を追加するけど、
classとmoduleキーワードに続く中はフォルダーで
その中にあるファイルが定数と考えることが出来て、ファイルは
ファイルのあるフォルダーからしか見ることができないんだよね。
上の例だとaaaがあるのは一番上のフォルダーでbbbがあるのはHogeの
中のフォルダーだからHOGEは別別のファイルと考えることが出来る

731
デフォルトの名無しさん[sage]   投稿日:2017/03/07 18:11:00  ID:OR7b+iU3.net(4)
ちょっと違ってたから訂正、
実験してみたら上のフォルダーの中のファイルは見えるらしい。
つまり、今いるフォルダーにファイルが無ければ上のフォルダーで探す
ルールみたいだな。

732
デフォルトの名無しさん[sage]   投稿日:2017/03/07 18:29:53  ID:OR7b+iU3.net(4)
Class.newのブロックの中ではselfがHogeにかってに変わることで
まだ存在しないHogeの関数を定義できるんだよな。
本当はブロックの引数がHogeじゃないといけないんだけど、
selfをHogeかえることでaaaの暗黙的にselfが
ついているように出来る仕組みなんだよ。
コメント1件

733
デフォルトの名無しさん[]   投稿日:2017/03/07 22:12:22  ID:H6yYJeTo.net
>724
Hoge = Class.new do

class Hoge

下の方で、class Hoge を定義して、
上の方で、Hoge = Class.new で、Hoge class を、new して、
よく考えたら、このソースコードは滅茶苦茶じゃん

Class.new なんて、たのしいRubyにも、載っていない機能だろ。
メタプログラミング用だろ
コメント2件

734
デフォルトの名無しさん[sage]   投稿日:2017/03/07 22:30:03  ID:rThUdk6T.net
>733
君は知らんだろがRubyにはオープンクラスという機構があってだな…

735
デフォルトの名無しさん[sage]   投稿日:2017/03/07 22:32:07  ID:xCLX0I7r.net
>733
Rubyは君が想像してるより複雑でサプライズの多い言語なんだよ
シンプルで一貫性が高いのがお好みならPythonにでも乗り換えたほうが幸せになれる
コメント1件

736
デフォルトの名無しさん[sage]   投稿日:2017/03/07 22:52:57  ID:ymginw1j.net
たぶん書いてる人同じだと思うのだが、知らんことにまで口突っ込まんでいいよ

737
デフォルトの名無しさん[]   投稿日:2017/03/07 23:05:12  ID:5c7MTUF9.net
>735
http://d.hatena.ne.jp/edvakf/20090405/1238885788
たしかに Python の配列操作はシンプルで一貫性があるなあ…(棒

738
デフォルトの名無しさん[]   投稿日:2017/03/08 01:17:49  ID:sPopLWFS.net
BetterListという命名の傲慢さよ

739
デフォルトの名無しさん[sage]   投稿日:2017/03/08 10:58:08  ID:8YPePj4Q.net(4)
>732は間違ってた。答えを聞く前にどこが間違ってるか考えてみよう。
def aaaはdef self.aaaの略では無くてdef aaaは現在のclassにaaaというメソッドを
追加する意味なんだ。
なぜならトップレベルでdefでメソッドを定義すると、そこではselfはmainなのにmainのメソッド
にならなくて、mainのクラスであるObjectのメソッドになるからね。
だからClass.newのブロックの中では勝手に現在のオブジェクトselfも変わるけれど
現在のclassも変わるんだね。

740
デフォルトの名無しさん[sage]   投稿日:2017/03/08 11:26:12  ID:8YPePj4Q.net(4)
また間違ってた。def object.methodの形式のdefはselfがobjectに固定した
メソッドを定義するらしい。レシーバーいらなくてシングルトンメソッドという。

741
デフォルトの名無しさん[sage]   投稿日:2017/03/08 11:33:55  ID:8YPePj4Q.net(4)
レシーバーいらないと言ったのはobject.method全体がメソッド名と考えた場合だから注意な。

742
デフォルトの名無しさん[sage]   投稿日:2017/03/08 11:37:10  ID:8YPePj4Q.net(4)
また間違ってた。selfは変数だからメソッド名はmethodだけだな。
objectはただ一つしかないレシーバーだからシングルトンメソッドって言うんだな。

743
デフォルトの名無しさん[]   投稿日:2017/03/08 12:04:44  ID:sBKWIXfj.net
全部訂正ワロタ

744
デフォルトの名無しさん[sage]   投稿日:2017/03/08 12:08:24  ID:6nP3yGTy.net
だからRubyには深入りするなといったのに
そういうのを理解したところでMatzの気分で場当たり的に実装されたバッドノウハウでしかないのよ


745
デフォルトの名無しさん[sage]   投稿日:2017/03/08 12:12:46  ID:+WSjdjfj.net
たぶん書いてる人同じだと思うのだが、知らんことにまで口突っ込まんでいいよ

746
デフォルトの名無しさん[sage]   投稿日:2017/03/09 00:52:21  ID:HcCF7edF.net(10)
後付けでインスタンスにメソッド差し込める
フックがなくとも、既存のメソッド乗っ取って追加処理差し込んで元のを呼び出すの余裕

ええとほらアレしたいんだよ、Rakefileっぽいの……できるでそたしかinstance_eval?
(とか言いながら後で「ruby dsl eval」でググる)

レシーバー……ああうん、知ってるよ、「左」ね(「ruby レシーバー 定義」をgoogleで検索)

あかん、わからんおいMatz出てこい(と言いながらソースを)
くらいの覚え方してる、いいのかなぁこんなんで orz

747
746[sage]   投稿日:2017/03/09 01:07:21  ID:HcCF7edF.net(10)
初心者なんでアレだけど
Net::SSHで、su - 叩いてからコマンドぶっぱしたら、出力がおかしくなるのですよ
コード的にはこういうの

https://ideone.com/lWtaiC

鯖のip、ユーザー名、rootのパスは改変してまする(俺のセキュリティ的な意味で)
なんとかrootの出力だけギって来たいわけだが……俺のアタマじゃわかんねえのであります orz

748
746[sage]   投稿日:2017/03/09 01:13:30  ID:HcCF7edF.net(10)
……見直したらなんかひどい文章になってた気がするので忘れてほしくなってきた orz

749
デフォルトの名無しさん[]   投稿日:2017/03/09 01:26:20  ID:Op4GVNwD.net(2)
ポイントを絞って書いてくれ

1行ソースコードを書いて、その出力がこうなっているけど、このように変えたいなど

750
デフォルトの名無しさん[sage]   投稿日:2017/03/09 02:37:06  ID:HcCF7edF.net(10)
頑張って短くしてみたけどこれが限界
https://ideone.com/nMJK8I

どういえばいいのか、Net::SSHでチャンネル張ってsu -した後、
root権限でコマンドを実行したら出力がおかしくなる(root@machine# みたいな文言もくっついてくる)

rootでやったコマンドの出力・エラー出力・戻り値だけ欲しい感じ

751
デフォルトの名無しさん[sage]   投稿日:2017/03/09 02:40:16  ID:HcCF7edF.net(10)
su -c "xxx" で逃げるしかないんかしら orz

752
デフォルトの名無しさん[sage]   投稿日:2017/03/09 02:43:01  ID:HcCF7edF.net(10)
正確にはセッション張って(コネクション確立して?)
各パケごとにchannelというか「このパケは区別してね」みたいな番号つけて区分けをしてるみたいだけど
sshをよく承知してないんでアレ

……tty周りもよくわかってないわけで、初心者にもほどがある俺

753
デフォルトの名無しさん[sage]   投稿日:2017/03/09 03:15:26  ID:HcCF7edF.net(10)
今見直したらtypoしてる、どんだけ必死なんだ俺 orz

あってるかどうかわからんけど

・sshが上げたプロセスが子プロセス(su -)した奴を呼んでる

んだけども

・なんでか知らんが親プロセスと子プロセス(su - 後の奴)のstdin/stdout/stderrが直結されてないというか……

出来てるのが一番リクツ通りの気もする(Shellwords#escapeの誤爆が少ない)んでそうしたいんだけど
正直頭悪い俺じゃわかんねえよって状況

754
デフォルトの名無しさん[sage]   投稿日:2017/03/09 03:28:51  ID:HcCF7edF.net(10)
serverspecのエクステのようにsu -cで逃げるのが妥当か
一晩寝てから考えてみる。手があればラッキーだが、見つからなかったらsu -c か orz

idみりゃわかるだろうからアレだが……スレ汚しすまんかった

755
デフォルトの名無しさん[sage]   投稿日:2017/03/09 05:25:26  ID:7IyU8nP5.net
アスペ帰れよ迷惑だよ
コメント1件

756
デフォルトの名無しさん[sage]   投稿日:2017/03/09 11:16:19  ID:gEPLYJR/.net
コマンドと接続元アドレスを限定したauthorized_keysつくって
su経由せずに直接rootでsshしたほうがまし
コメント1件

757
デフォルトの名無しさん[sage]   投稿日:2017/03/09 12:58:35  ID:HcCF7edF.net(10)
>755
アスペかどうかはしらんが、できんすぎて深夜にヤケ酒飲んでたのは認める

>756
そりゃ考えてなかった、すまん

とりあえず帰るよ

758
デフォルトの名無しさん[sage]   投稿日:2017/03/09 14:28:12  ID:Op4GVNwD.net(2)
君のソースコードには、p が1つもない。
まず、すべての行に、「p 変数」と書いて、変数の内容を見る

1. Ruby・OSのコマンドの、どちらに問題があるのか?
Rubyを使わずに、端末からコマンドを実行して、その結果がどのように変わるのか?

2. 君は、リダイレクトを知っているか?
標準入出力・エラーで、標準エラーだけ捨てるとか?

3. まず、ループを使わずに、1回だけ処理して確かめる

まず、問題を切り分けることから、始める。
ループを使うな。
すべての変数を、p しろ
コメント1件

759
デフォルトの名無しさん[sage]   投稿日:2017/03/09 17:08:07  ID:RV3LnrPm.net
特定のコマンドの入出力が欲しいなら、そのコマンド用のチャネルを作ってねって話じゃないの?
作ってないから、全部引っくるめたシェルの出力が返って来てると言う話に聞こえる。
irb や pry で試行錯誤するのをオススメ。
コメント1件

760
デフォルトの名無しさん[sage]   投稿日:2017/03/09 23:21:24  ID:HcCF7edF.net(10)
>758
Session#listen_toしてPacket(TCPのパケじゃなくてラッパークラスのことだけど)引っこ抜かないと
on_dataのループを切ってストレートに書けそうにない

>759
そんな感じ
SSHのchannelに「権限昇格要求」なんてのがないので(あるわけないだろうが)
su - すると、まるっと帰ってくる

たぶんAnsibleとかがsudoでごまかしてた理由はそれなのかもしれないとか気づかされますた orz
コメント1件

761
デフォルトの名無しさん[sage]   投稿日:2017/03/10 05:04:02  ID:j91K0HTy.net
ちょるるびま

762
デフォルトの名無しさん[sage]   投稿日:2017/03/10 16:04:08  ID:y8xCqliG.net
>760
マニュアルにあるようにexecにブロック渡す形にしてみたら?
http://net-ssh.github.io/net-ssh/classes/Net/SSH/Connection/Channel.ht...

763
デフォルトの名無しさん[sage]   投稿日:2017/03/10 23:04:00  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で全メールのサイズを出力するにはどうしたらよいのでしょうか?
コメント1件

764
デフォルトの名無しさん[sage]   投稿日:2017/03/10 23:34:36  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>'
コメント1件

765
デフォルトの名無しさん[sage]   投稿日:2017/03/11 00:00:20  ID:qyY4K/ii.net(3)
>763
メールの件数が250件溜まってないので検証できたのはここまで、あとわかんね
http://ideone.com/3nNRJp

GC.startしないとエラーになるかも、みたいな記述はRubyist Magazineにあったんで
試してみては? くらい
http://magazine.rubyist.net/?0007-Win32OLE

なお、"あなたのアカウント名" ってのは左ペインに出てる一番上のフォルダね、自身の奴を入れて

あーあと別件の話だけど……上のSSHの件だけどfabricもsudoだった orz
fabricでもうまく行かんかったとFAQで書いてたんで、"su -"でなんかするのはたぶんダメそう
コメント2件

766
デフォルトの名無しさん[sage]   投稿日:2017/03/11 00:04:12  ID:qyY4K/ii.net(3)
また酔っぱらって妄言吐くのもアレだから帰るわね……orz
SSHに負けたとかくっくやしいでもビクンビクン

767
デフォルトの名無しさん[sage]   投稿日:2017/03/11 00:06:04  ID:sUFiWX+J.net
Ruby使ってるだけでもうほとんどRubyと関係ない気が…
コメント1件

768
デフォルトの名無しさん[sage]   投稿日:2017/03/11 00:09:17  ID:qyY4K/ii.net(3)
>767
ですよねー……済まんかった

769
デフォルトの名無しさん[sage]   投稿日:2017/03/11 01:12:17  ID:0/u8d9+h.net
>765
おお!ありがとうございます。GC.start来週試してみます!!

>764
GetFoldersじゃなくてFoldersでしたね。手元に環境がなく虚覚えでした。
ちなみになんでVBScript使わないかというと中国語のメール件名のところで落ちるから。
Rubyならコードページ指定してUTF-8で出せるけどvbsでどうやるかわからん

770
デフォルトの名無しさん[]   投稿日:2017/03/12 20:24:21  ID:PZr7UUWj.net
MacOSX 10.9
ruby 2.1.10p492
$ gem -v
2.2.5
imagemagickはインストール済。


近デジダウンローダーを使えるように準備する(ImageMagick、RMagickインストール)
http://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
コメント1件

771
デフォルトの名無しさん[sage]   投稿日:2017/03/12 22:00:11  ID:T4N3k6YJ.net
>770
gemのupdateが必要
http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages
コメント1件

772
デフォルトの名無しさん[sage]   投稿日:2017/03/13 00:44:08  ID:ONQKgDZ1.net
個人的メモ
WindowsでCP932以外を標準出力に出そうとすると例外が発生する場合がある
その場合は
$stdout.binmode
$>.binmode
でいける

773
デフォルトの名無しさん[sage]   投稿日:2017/03/13 08:24:19  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...
コメント1件

774
デフォルトの名無しさん[]   投稿日:2017/03/13 08:29:05  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ファイルの置き場所はどこでしょうか?
コメント1件

775
デフォルトの名無しさん[sage]   投稿日:2017/03/13 11:58:56  ID:5AA5l5ef.net
eclipseでaptanaプラグイン導入したんだけど
.erbが開けない(開いてもエディター真っ白&タブの所も×しか出ない)
ファイルのメタデータ消したり、プラグインの再インストール、クリーンオプションつけて起動など
全部試したけどダメでした

なので諦めて別の総合環境を用意しようと思うのですが
お勧めありますか?
コメント2件

776
デフォルトの名無しさん[sage]   投稿日:2017/03/13 12:12:07  ID:W+gruSmy.net
emacs

777
デフォルトの名無しさん[sage]   投稿日:2017/03/13 16:55:18  ID:h57/U2+3.net(2)
>774
>771のリンクを読む
コメント1件

778
デフォルトの名無しさん[sage]   投稿日:2017/03/13 16:56:17  ID:h57/U2+3.net(2)
>775
vim

Aptana的なのが好きならRubyMine

779
デフォルトの名無しさん[sage]   投稿日:2017/03/13 22:30:51  ID:M0tA2HNG.net
オフラインでプログラミング勉強出来るソフトって無いですか?
コメント3件

780
デフォルトの名無しさん[sage]   投稿日:2017/03/13 23:43:35  ID:26MzLCyo.net
>775
emacs + gtags + company + ruby-modeでよくね?
ただしemacsは慣れの問題が大きいので無難にいくならRubyMine

>779
寡聞すぎて申し訳ないが、rubyに関して聞いたことはない
オフライン限定となると例えば英語学習のパッケージソフトのようなものだとは思うのだが

781
デフォルトの名無しさん[sage]   投稿日:2017/03/14 02:05:32  ID:vIMzEjCF.net(2)
>779
なぜにオフライン?

782
デフォルトの名無しさん[]   投稿日:2017/03/14 02:22:38  ID:TeWZrBMH.net(4)
>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
するつもりでいました。
コメント1件

783
デフォルトの名無しさん[sage]   投稿日:2017/03/14 03:44:56  ID:vIMzEjCF.net(2)
>782
そのリンクの中に証明書のことも書いてる
↓ココ
If this process does not work for you, you can try manually adding the new certificate.

784
デフォルトの名無しさん[sage]   投稿日:2017/03/14 10:40:26  ID:vbV/Jpv3.net
>779
VM環境造ってLinuxでもなんでも入れればいい

785
デフォルトの名無しさん[sage]   投稿日:2017/03/14 19:42:19  ID:uwd0LNx3.net
Rubyの不正使用やめろ。もう特許取ってある。

786
769[sage]   投稿日:2017/03/14 21:38:56  ID:SNKtw/av.net
GC.start入れたら動いた。>765に感謝

787
デフォルトの名無しさん[sage]   投稿日:2017/03/14 21:55:29  ID:7FbDjFmR.net
>773
そういう話じゃない。今回やりたかったのがRubyの標準出力を別のプログラムの標準入力とする実装
そのためにRubyからUTF-16LEで標準出力に書き出したいけど$stdout.write(str.encode("UTF-16LE"))とかやると
エンコードの変換に関する例外が発生する。-E "UTF-16LE"を付けて起動しても効果ないし悩んだ

788
デフォルトの名無しさん[sage]   投稿日:2017/03/14 22:29:09  ID:IhBG87ve.net
普通にutf-8にしてれば、コンソールへの出力はユニコードでやってくれるよ

789
デフォルトの名無しさん[]   投稿日:2017/03/14 23:04:06  ID:TeWZrBMH.net(4)
証明書のインストールなんてMacだと誰もやってなさそう。
macとlinuxユーザーの事例を探してみます。rubygemならともかく証明書は自信ないですが、、、

790
デフォルトの名無しさん[]   投稿日:2017/03/14 23:23:04  ID:fIy9ptuf.net
Ruby始めて一か月くらいの者です。
Windows10で動く使いやすいエディタって何がありますか?
今はvim使ってます。良いIDEがあったらそれも教えてくれると嬉しいです。
コメント2件

791
デフォルトの名無しさん[sage]   投稿日:2017/03/14 23:28:35  ID:XiWkowBn.net
Emacs

Matzが使ってるんだから間違いない

792
デフォルトの名無しさん[]   投稿日:2017/03/14 23:33:15  ID:TeWZrBMH.net(4)
>790
LinuxやMacなら、nvim軽いですよ。windowsだとインストールできるのかは、よくわかりませんが。

793
デフォルトの名無しさん[]   投稿日:2017/03/14 23:53:43  ID:TeWZrBMH.net(4)
neovimね。ごめん。

794
デフォルトの名無しさん[sage]   投稿日:2017/03/15 02:24:50  ID:7a+pvu8e.net(9)
>790
RubyにIDEは必要ない

VScode (無料 マイクロソフト社製でオススメ プラグインで実行も可能)
Atom (無料 プラグインで実行も可能)
Sublime Text(有料(ゆるめ)プラグインで実行も可能)
RubyMotion(有料 高額(年2万円 次の年から半額)だがRubyに機能が特化)


金が余っているならRubyMotion
無料で使いたいならVScode

795
デフォルトの名無しさん[sage]   投稿日:2017/03/15 02:28:22  ID:7a+pvu8e.net(9)
Linuxで動かすとかでもない限りvimなど今の時代は拷問でしかない。
vim Emacsが良いというのは20年ぐらい前からの懐古厨
今から始めるのは地獄だ

796
デフォルトの名無しさん[sage]   投稿日:2017/03/15 04:14:18  ID:FiGu7lnE.net(2)
RubyMineの間違いでしょ
RubyMotionはIDEでもエディタでもないよ

あとvimやEmacsを理解せずにディスってると
レベル低い人だなって思われるからやめたほうがいいよ
コメント1件

797
790[sage]   投稿日:2017/03/15 07:24:01  ID:29+QDQGr.net
ありがとうございます。
教えてもらったの調べてみます。
わからないことがあったらまた聞きに来ます。

798
デフォルトの名無しさん[sage]   投稿日:2017/03/15 08:08:28  ID:ivuMTyd+.net
vi文化圏のサポートなしにvim系列を使うのはエディタそのものの修行だと思う
それこそ超機能エディタとしてはせいぜいEmacs程度でよろしいのではないですかね

799
デフォルトの名無しさん[sage]   投稿日:2017/03/15 09:16:38  ID:LExN6Gy2.net(4)
emacsもvimも両方使ってるけど難しさは同じだよ。

800
795[sage]   投稿日:2017/03/15 09:24:35  ID:7a+pvu8e.net(9)
>796
理解した上での大ディスりでーすwww
コメント1件

801
デフォルトの名無しさん[sage]   投稿日:2017/03/15 09:27:20  ID:7a+pvu8e.net(9)
前提でOSがウィンドウズ10と書いてあるし
自分もOSがLinuxでない限りと書いておいた
キチンと読んだ?
ちなみにMacOSはLinuxの仲間です

802
デフォルトの名無しさん[sage]   投稿日:2017/03/15 09:33:12  ID:LExN6Gy2.net(4)
俺はvimをwindowsで使ったことないけどどんな拷問が待ち受けてるんだ?
windowsでemacsは快適に動いているから想像がつかないんだけど。

803
デフォルトの名無しさん[sage]   投稿日:2017/03/15 09:35:02  ID:7a+pvu8e.net(9)
訂正
RubyMine Ruby、Ruby on Rails用の統合開発環境。年あたり2万円継続利用で割引あり
RubyMotion iOS, OS X アプリケーションを Ruby で開発することが出来るツール集

804
デフォルトの名無しさん[sage]   投稿日:2017/03/15 09:48:08  ID:7a+pvu8e.net(9)
まずVimやEmacsを使うと
Vim派とEmacs派の宗教戦争に巻き込まれる。

805
デフォルトの名無しさん[sage]   投稿日:2017/03/15 09:55:12  ID:7a+pvu8e.net(9)
プラグイン管理するのに疲れる
バージョンアップ時で動かなくなるとか当たり前
でも懐古厨のかたがたはそれが楽しいと言い張ります

設定だけで1日が潰れる
なんやかんやと自分好みのエディタに育てるのに
細かい設定が必要です
そんな細かい設定をするだけで1日が簡単に潰れます
さらに凝るとトータルで1週間はきえます。

806
デフォルトの名無しさん[sage]   投稿日:2017/03/15 09:57:23  ID:7a+pvu8e.net(9)
見ていろよ?
これからゼッテーウザイ反論が来るからな。

807
デフォルトの名無しさん[sage]   投稿日:2017/03/15 10:20:44  ID:LExN6Gy2.net(4)
プラグイン管理ツール使えば簡単なだけど、
vimもemacsも初期設定のまま使いやすいし、
初期設定で文字の色も変わるし、
難しいことは一つも無いだろ。

808
デフォルトの名無しさん[sage]   投稿日:2017/03/15 11:33:41  ID:7ejgHr5h.net
ID(が同じであること)は嘘をつかないねえ

809
デフォルトの名無しさん[sage]   投稿日:2017/03/15 14:47:55  ID:14AAxgXM.net
初心者ならSublimeText3でいいじゃな〜い

810
デフォルトの名無しさん[sage]   投稿日:2017/03/15 15:56:24  ID:LExN6Gy2.net(4)
金持ちならね

811
デフォルトの名無しさん[sage]   投稿日:2017/03/15 16:06:08  ID:FiGu7lnE.net(2)
>800
そう、理解してると思ってたんだね
まあがんばってね
コメント1件

812
デフォルトの名無しさん[sage]   投稿日:2017/03/15 17:29:20  ID:7a+pvu8e.net(9)
>811
ほらな 直接文句を言わないで
お前はわかってない でも俺は分かってるみたいな
うざい反論きただろwww

813
デフォルトの名無しさん[sage]   投稿日:2017/03/15 19:44:15  ID:I3jOPMQC.net
visual studio codeでrubyのデバッグできるようにする所までは出来たが、visual studio codeの使い方自体がよく理解できない

814
デフォルトの名無しさん[sage]   投稿日:2017/03/15 22:13:52  ID:PJ2PEyAJ.net
こういうおかしなアンチが沸くということは、それだけ人気があるということだね

815
デフォルトの名無しさん[sage]   投稿日:2017/03/17 13:18:27  ID:v2q/v/ih.net(2)
Ruby on Railsの参考書を探しているのですが、Ruby2.3、RoR5が出ている現在、RoR4の本だと参考にならないでしょうか?
他言語の本を買った時にサンプルが動かない事があって、原因を調べて見たらコードで使われている関数が最新バージョンで廃止されていたことがありました…
RoR5とRoR4に大きな差がなければ選ぶ参考書に幅が出来るので、教えていただきたいです
コメント2件

816
デフォルトの名無しさん[sage]   投稿日:2017/03/17 13:24:50  ID:ol/nseXL.net
それも自分で判断できるようになって一人前

817
デフォルトの名無しさん[sage]   投稿日:2017/03/17 14:44:25  ID:WXrRqPqu.net
>815
RoRは絶妙に板違いなのであんまり期待しないでくれ

そもそも動かしたい実環境でRoR5が動作可能なのか、そもそもバージョン選べるのか(固定だったりしないか)というとこから調べないといかんよ
俺ならRoR4で環境自力で固定してRoR4を勉強してそれなりの練度になったら5に手を出すっていうようにするかな
コメント1件

818
デフォルトの名無しさん[sage]   投稿日:2017/03/17 16:53:30  ID:s/x5RoqH.net
プログラミング何からやろうと思って最初cの世界に入ろうと思ったけど、rubyの方が簡単でやってて楽しいわ
でも最初に作るプログラムがコンピュータ将棋ってキツイかな?

819
デフォルトの名無しさん[sage]   投稿日:2017/03/17 23:52:09  ID:v2q/v/ih.net(2)
>817
RoRは板違いだったんですね、失礼しました。いろいろ調べてみます。ありがとうございました

820
デフォルトの名無しさん[sage]   投稿日:2017/03/18 02:06:24  ID:y7G0AfaN.net(3)
Railsスレはこっちだな
【RoR】Ruby on Rails Part20©2ch.net
【RoR】Ruby on Rails Part20 /WebProg板

多分専門スレの方が詳しい

821
デフォルトの名無しさん[sage]   投稿日:2017/03/18 17:18:44  ID:y7G0AfaN.net(3)
CUIベースで育成シミュレーションゲーム作り始めたけど楽しいな
ここからGUIベースに持って行くのが大変だけど
dxrubyとかruby/tkとか考えてたけど、いっそRoRで無理矢理実装した方が良いのかな

822
デフォルトの名無しさん[sage]   投稿日:2017/03/18 17:42:47  ID:6cW+qOXP.net
RoRで進めて、表現力に限界を感じたら必要に応じてJavaScriptに移していけばいいんじゃない?
誰も使ってないツールは覚えるのも大変だし覚えたところで価値ないよ
コメント1件

823
デフォルトの名無しさん[sage]   投稿日:2017/03/18 17:47:31  ID:y7G0AfaN.net(3)
>822
了解、RoRの方が資料も多いしやってみるわ
まだテキストベースだしRoRの機能だけでも充分できるはず
簡単な画像を出す程度ならRoRの方が簡単に出来るっぽいし
何か凄いできる気がしてきたぞ、頑張ろう

824
デフォルトの名無しさん[]   投稿日:2017/03/19 03:05:59  ID:MM3vmS8Q.net(2)
>815-817
改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015

この本が最も簡単。
Rails5への変更点は、webで調べる

825
デフォルトの名無しさん[sage]   投稿日:2017/03/19 18:01:07  ID:Ixhubo3y.net(3)
ハッシュ同士の数字を同時に合計する方法ってありますか?

status = { 'hp' => 100,'mp' => 20,}
training = { 'hp' => 15,'mp' => 20,}
これを合計して
status = { 'hp' => 115,'mp' => 40,}っていう風にしたいです

status['hp'] += training['hp']
status['mp'] += training['mp']
これでも一応出来るのですが、ステータスの項目が増えた時に厄介になりそうだったので……
なんか良い感じにすっとまとめられると嬉しいです
コメント4件

826
デフォルトの名無しさん[sage]   投稿日:2017/03/19 18:26:21  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}
コメント1件

827
デフォルトの名無しさん[sage]   投稿日:2017/03/19 18:26:50  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)

このメソッドは引数内容を書き換えてて気持ち悪いんだけどそのへんの処遇は任すよ
コメント1件

828
デフォルトの名無しさん[sage]   投稿日:2017/03/19 18:33:22  ID:Ixhubo3y.net(3)
>827
eachを作って繰り返せば良かったのか
メソッドもまだ全然作れてなかったけど、こういうのを見ると作った方が
良い感じにまとまるのがよく分かりました
参考にしていっちょ頑張ってみます

829
デフォルトの名無しさん[sage]   投稿日:2017/03/19 18:41:48  ID:Ixhubo3y.net(3)
>826
こっちも参考になりました、ありがとうです
もうちょっとeachとかイテレーションについて勉強します

830
デフォルトの名無しさん[sage]   投稿日:2017/03/19 20:06:43  ID:9p9UL1lk.net
Hashのキーの並びが同一な前提なら
status.zip(training).map {|s, t| [s[0], s[1] + t[1]] }.to_h

動かしてないから構文エラーあったら適当になおしてください

831
デフォルトの名無しさん[sage]   投稿日:2017/03/19 20:18:01  ID:bf5e5QFj.net
初心者スレはてめえのコードゴルフスレじゃねえって昔から言われてるだろ
コメント1件

832
デフォルトの名無しさん[]   投稿日:2017/03/19 22:42:11  ID:PzBVy4ls.net
inject厨が書いてみた
 http://ideone.com/vuAQat

>831
初心者スレに限らず、各自が最良と考えるコードを自由にカキコすればいいのでは
その寛容性が Ruby の特質ではないかと思われ

そもそも昔から「論よりコード」が Ruby だから
コメント3件

833
デフォルトの名無しさん[sage]   投稿日:2017/03/19 22:51:27  ID:FcfIq+bG.net
将棋ソフト作ってたらcase文まみれになってしまった
便利なんだよなぁ・・・
コメント2件

834
デフォルトの名無しさん[]   投稿日:2017/03/19 23:04:32  ID:MM3vmS8Q.net(2)
>825
status, training は、DBのレコードのように、同じ構造だろ

class, struct に定義して、インスタンスを作ればいい

835
デフォルトの名無しさん[sage]   投稿日:2017/03/20 01:08:33  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}
コメント1件

836
デフォルトの名無しさん[sage]   投稿日:2017/03/20 07:01:02  ID:Lni7W/zQ.net
>832
>835
関数型っぽいコードを書くならブロック内で副作用はNG
意識高い系気取りたいなら頭に留めといたほうがいい
コメント1件

837
832[]   投稿日:2017/03/20 09:54:59  ID:Ia6BH4Hf.net
>836
>832 では意識的に副作用の無い、いわゆる関数型プログラミングと
呼ばれるスタイルでコードを書いたつもりだったから驚いた
では、>832 のどこで副作用が生じているか具体的に指摘を願う
コメント1件

838
デフォルトの名無しさん[sage]   投稿日:2017/03/20 10:06:26  ID:RgF3Qd7a.net
>837
よく見てなかったわ
失礼した

839
デフォルトの名無しさん[sage]   投稿日:2017/03/20 10:41:05  ID:37uth8Sm.net
>825
merge にブロック渡す

840
デフォルトの名無しさん[sage]   投稿日:2017/03/21 00:51:21  ID:kYeHwX6T.net(4)
>825
ワンライナーにこだわるなら inject がベターだけど
パッとみわかりづらいかも(初期値に足し込むメソッドをサポートしてる言語はあまりない)

ハッシュも増えるしkeyも増える、けれども可読性取る、みたいなのならザックリこんくらい?

http://ideone.com/hbBxJg
コメント1件

841
デフォルトの名無しさん[sage]   投稿日:2017/03/21 01:16:54  ID:kYeHwX6T.net(4)
>833
……きこえますか……>833……ID:kYeHwX6Tです……
今……あなたの……心に直接呼びかけています……
https://docs.ruby-lang.org/ja/latest/class/Method.html を見るのです……
関数テーブルを使えばどんだけ条件を増やしてもすっきりすると思うです……
コメント1件

842
デフォルトの名無しさん[sage]   投稿日:2017/03/21 01:29:52  ID:kYeHwX6T.net(4)
>840見直したが、ワンライナーのほうがよかったんだろうか

ちょっとstatusを基準にresultハッシュにキーと初期値0を植えこみ、あとはresultに植え込んだキーで
全てのハッシュをナメるのは泥臭いってかカッコ悪い気がしてきた

843
デフォルトの名無しさん[sage]   投稿日:2017/03/21 01:39:36  ID:U/FngKJK.net
>841
はぁ・・・はぁ・・・クラスの使い方もわからない俺には何書いてるかさっぱりわからない・・・
理解出来るように努めますありがとうございます
コメント1件

844
デフォルトの名無しさん[sage]   投稿日:2017/03/21 01:44:51  ID:kYeHwX6T.net(4)
>843
ザックリいってしまうと……

[
  [値がxxxなら, xxxメソッドをcallします]
  [値がyyyなら, yyyメソッドをcallします]
  #あとは好きなだけメソッドを追加するのです……
]

って配列が作れるのです……case文のような長々がなくなるのです……
コメント2件

845
デフォルトの名無しさん[sage]   投稿日:2017/03/21 05:48:32  ID:08F14n66.net
>844
なるほど、わかりませんね・・・
ごめんなさい、分かるまでROMります
ありがとうございました・・・

846
デフォルトの名無しさん[sage]   投稿日:2017/03/21 07:35:21  ID:0zsWCCNl.net
教条主義に走らず本質を見よう。
一般にプログラムで明示的な多分岐が好ましくないとされるのは、分岐先を追加・削除したら
ソースコード上離れた場所にある分岐条件の部分もあわせて弄らないといけないため。
>844みたいにマッピングを手書きするんなら結局その問題の解決にはならない。
hoge_条件 みたいなメソッド名のルールを決めておくとか、明示的なマッピングを避けるやり方は工夫次第で色々あるが
まずは上記の問題が本当に自分にとって問題になっているのかどうかを検討した方がいい。
よほど分岐先が多くて条件が頻繁に変更されるような場合でない限りは
複雑さを持ち込むのに見合った利益はない。

847
デフォルトの名無しさん[sage]   投稿日:2017/03/21 12:50:38  ID:4yqL1pKD.net
こんなのメンテとか出来ないから
大量のcase文で書いてもらったほうが正義だよ。
コメント1件

848
デフォルトの名無しさん[sage]   投稿日:2017/03/21 12:59:49  ID:noGMvElA.net
初心者スレなんだから脱初心者のへんの人がいるのは当たり前だろーが
なんでもかんでもまとめる人
メタプログラミング大正義な人
それ自体が悪いなんてことは言わんが他人に勧めるものではないわな

849
デフォルトの名無しさん[]   投稿日:2017/03/21 16:57:10  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>
コメント3件

850
デフォルトの名無しさん[sage]   投稿日:2017/03/21 17:08:50  ID:9aUURWE3.net
>849
結論だけ言えばコマンドプロントでirbを入れる必要がない
https://www.ruby-lang.org/ja/documentation/quickstart/
irbはその場でrubyのコマンドを試せるモードみたいなもの
だからその状態だとgemコマンドが使えない

update_rubygemsがしたいならコマンドプロント開いてすぐの状態で打ち込まば良い
コメント1件

851
デフォルトの名無しさん[sage]   投稿日:2017/03/21 17:09:10  ID:jV0Y+t/Y.net
rubyの中で実行するものとシェルで実行するものを区別しよう
それから$はプロンプトだから打ち込まないで

852
デフォルトの名無しさん[sage]   投稿日:2017/03/21 20:25:07  ID:wMSmjxpw.net
シェル・コマンドプロンプト・端末は、自分が入力したコマンドを、OSが実行するもの。
Rubyとは無関係

irbは既に、irbというアプリを実行していて、そのアプリ内で、何か処理を行っているだけ

まずOSと、単なるアプリである、Rubyを区別すること

853
デフォルトの名無しさん[sage]   投稿日:2017/03/22 01:30:39  ID:+sTx0NJt.net
>849
Rubyでシステムトレードの本があるが
中はしっかりしているらしいからよくオススメ本になっているよ

854
デフォルトの名無しさん[sage]   投稿日:2017/03/22 02:55:17  ID:LmLHyM9x.net
>847
まぁ関数テーブルは基本、caseが10とか20とか100とか200になるのが
予想できるのでもなければ使わんからな……

例: ショボいインタープリタ書いてるとか、将棋で条件が20だか以上までぶっとんだか

855
デフォルトの名無しさん[sage]   投稿日:2017/03/22 05:24:24  ID:Lizg5cCe.net
メソッド作って使える:何となく分かる
でもクラスがよく分からん……
例見てもどういう場面で活躍するのか今一想像できない
コメント1件

856
デフォルトの名無しさん[sage]   投稿日:2017/03/22 06:11:33  ID:G9O6oaJL.net
わからんのならまだ使わなくていい
というか、使ってはいけない
どうせ外部に出すプログラムではないのだろう

857
デフォルトの名無しさん[sage]   投稿日:2017/03/22 06:33:48  ID:z6uoiSzy.net
>855
オブジェクト指向は原理主義者を恐れずにいえば
手続き型言語において、こういう風にプログラムを構成すればうまくいく、という経験則を
パターンとして言語に取り込んだものなので、実際うまくいかないことを経験しないと有難味を理解するのは難しいかも
グローバル変数や引数が激増して破綻してから、
オブジェクト指向を使うことでなぜ破綻しにくくなるのかという観点で他の人のコードを見て学ぶのが一番いいと思うよ

858
849[]   投稿日:2017/03/22 08:39:02  ID:3MOry1VM.net(4)
>850-853
レスありがとうございます。
でも、なんだか理解出来ません。

>それから$はプロンプトだから打ち込まないで
この情報が役に立ちました。 ありがとうございます。

で、また教えて欲しいのですが、
1、「gemはrubyをインストールすることによって使用可能になるのコマンドだ」でいいでしょうか?
2、rubyをインストール後、外部から持ってきたソースを実行するには、そのファイルをドコに置き、何というファイルをクリックすればいいのでしょうか?
コメント1件

859
849[]   投稿日:2017/03/22 08:59:50  ID:3MOry1VM.net(4)
ああ、つまり、
「.rbファイルをクリックすると、そのプログラムが実行される」
で、いいのでしょうか?

860
849[]   投稿日:2017/03/22 09:10:18  ID:3MOry1VM.net(4)
jiji setting や jiji start というコマンドがあるのですが、
これって、jijiフォルダの中に、
settingファイルや startファイルがある、ではないのでしょうか?

861
849[]   投稿日:2017/03/22 09:19:20  ID:3MOry1VM.net(4)
コマンドプロンプトから、jiji setting や jiji startという命令が来た場合、
その命令を解釈実行するファイルがどこかにありそうな気がするのですが、そんなファイルはないでしょうか?

862
デフォルトの名無しさん[sage]   投稿日:2017/03/22 15:05:32  ID:mdyqPZUS.net
>849
ちらっとそのページ見たけど、内容が古すぎる。
今時、1.8.7の環境(それもWindows)で、うまく動くかどうかわからんぞ。

ソースが公開されているが、7,8年前に開発が終わってる。
https://github.com/unageanu/jiji/tree/master


素直にこれにしとけよ。
http://jiji2.unageanu.net/
コメント1件

863
デフォルトの名無しさん[sage]   投稿日:2017/03/22 15:58:41  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
デフォルトの名無しさん[sage]   投稿日:2017/03/23 01:03:11  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の結果をつくるにはどうしたら良いかというものです
コメント1件

865
デフォルトの名無しさん[sage]   投稿日:2017/03/23 01:13:31  ID:iwKD8Hm6.net(6)
>864
Kernel#eval あたりかなあ
ごめんいま酒入ってるから検証不能 orzA: [0.092736 sec.]B: [1.168932 sec.]

866
デフォルトの名無しさん[sage]   投稿日:2017/03/23 01:14:19  ID:iwKD8Hm6.net(6)
うーん、この A:[xxxx sec]B: [xxxx sec]は酔っぱらって連投したら出るんかね、めんどいな →A: [0.093431 sec.]B: [0.461032 sec.]

867
デフォルトの名無しさん[sage]   投稿日:2017/03/23 01:16:56  ID:uMFW1qqt.net(2)
prc = eval "proc { #{block_str} }"
hash_val.sort_by(&prc)A: [0.092548 sec.]B: [1.168777 sec.]

868
デフォルトの名無しさん[sage]   投稿日:2017/03/23 01:24:45  ID:mxf1LURC.net(2)
evalだね
sort関数を文字列で定義したいケースってどういう時なのか興味あるA: [0.091699 sec.]B: [0.456793 sec.]

869
デフォルトの名無しさん[sage]   投稿日:2017/03/23 01:25:50  ID:mxf1LURC.net(2)
なにこれはじめて→A: [0.092033 sec.]B: [0.456231 sec.]

870
デフォルトの名無しさん[sage]   投稿日:2017/03/23 01:40:50  ID:iwKD8Hm6.net(6)
てすと

871
デフォルトの名無しさん[sage]   投稿日:2017/03/23 01:42:01  ID:iwKD8Hm6.net(6)
あー、中の人がリアルタイムでイジってて、なんかシクったんだろう
気づいて直したんだからセーフでそ

世界を全部コントロールできるなんてのは幻想なんだろうや、俺はもうあきらめてるよ

872
デフォルトの名無しさん[]   投稿日:2017/03/23 02:27:22  ID:RevR4EA/.net
この本を読む。
メタプログラミング Ruby 第2版、2015

メタプログラミングRuby イディオム・黒魔術一覧
http://tbpgr.hatenablog.com/entry/20130613/1371143345

define_method とか、
クリーンルーム・コンテキスト探査機は、instance_eval

リフレクション
eval、instance_eval、class_eval
コメント2件

873
デフォルトの名無しさん[sage]   投稿日:2017/03/23 02:47:04  ID:iwKD8Hm6.net(6)
>872
instance_evalは個人的にすげぇ好きなんだけど、普通あんま使わねぇと思う
ゴーストメソッド並みに
何のDSLなんだよ状態というか、Rakefile二号というか…… orz
わりとサパっと書けてしまうのがrubyの利便性よね

874
デフォルトの名無しさん[sage]   投稿日:2017/03/23 02:55:21  ID:iwKD8Hm6.net(6)
先先日のSSHの件はとりあえずなんとかしますた。

SSH多段接続に使うProxyComand/ProxyJump(Net::SSH 4.1.0でサポート)は無理
俺が使いたい機能の範囲を超えた
ProxyJumpって鍵認証サポートしとるんすか? とか、全部に同じ鍵撒かんとダメぽくね? とか
考えるのがつらくなってきたよ……

やってみるとSSHは奥深し。俺ぁここらで撤退するお。
コメント1件

875
デフォルトの名無しさん[sage]   投稿日:2017/03/23 08:23:28  ID:cbUpLCW6.net(4)
>872
その本英語版だけど読んだよ。
スペルって書いてあったけど日本語だと黒魔術って言うんだな。

876
849[]   投稿日:2017/03/23 08:44:39  ID:uU/dK4ok.net(6)
>862-863
ありがとうございます。
とりあえず『Rubyではじめるシステムトレード』を見てみます。

877
849[]   投稿日:2017/03/23 11:32:13  ID:uU/dK4ok.net(6)
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があらわれませんません。
ドコが悪いのでしょうか?
コメント1件

878
デフォルトの名無しさん[sage]   投稿日:2017/03/23 12:10:49  ID:cbUpLCW6.net(4)
url, filename = "http://2ch.net/";;,"111.txt"
ここが変
コメント1件

879
849[]   投稿日:2017/03/23 12:22:18  ID:uU/dK4ok.net(6)
>878
レスありがとうございます。↓でもダメでした。

url = "http://2ch.net/";
filename = "111.txt"
コメント1件

880
デフォルトの名無しさん[sage]   投稿日:2017/03/23 12:26:14  ID:cbUpLCW6.net(4)
>879
俺の環境ではそれでうごいたよ。
エラーを見たいならコマンドプロンプトだけで立ち上げて
test1.rbを実行してみるといいよ。
windowsならtest1.rbのあるフォルダから、ファイル→コマンドプロンプトを開く→コマンドプロンプトを開くを
メニューから選ぶといいよ
コメント1件

881
デフォルトの名無しさん[sage]   投稿日:2017/03/23 12:30:59  ID:1UBjMcMh.net
>877
そりゃOS側の問題だ
コマンドプロンプトから実行してそして終了したら
同時にウィンドウも閉じる仕様だから

882
849[]   投稿日:2017/03/23 12:50:27  ID:uU/dK4ok.net(6)
>880-881
ありがとうございます。
私の環境でも出来ました。
test1.rbファイルを置いたフォルダ名を
'open-uri'としたのがいけなかったみたいですw
open-uriとしたら正常に動きました。

883
デフォルトの名無しさん[sage]   投稿日:2017/03/23 12:54:40  ID:cbUpLCW6.net(4)
"http://2ch.net/";,"111.txt" がクロームでみると文字化けするんですけど
間に . が入る
最新50からみると文字化けするけどトップからだと文字化けしない。
コメント1件

884
デフォルトの名無しさん[sage]   投稿日:2017/03/23 13:10:42  ID:uMFW1qqt.net(2)
>874
外してたらごめんやけど
そういうのはssh-agent, agent forwardingの領域でrubyで解決する問題じゃない。

885
849[]   投稿日:2017/03/23 13:18:58  ID:uU/dK4ok.net(6)
ruby本体のフォルダに
open-uri.rbというファイルがあります。

私としたら、
FXのサイトにrubyではなくIEを使ってアクセスしてると思われたいのです。
で、
open-uri.rbをいじれば、FXのサイトに「IEを使ってアクセスしている」と偽装可能でしょうか?
コメント1件

886
デフォルトの名無しさん[sage]   投稿日:2017/03/23 13:23:26  ID:1Qddb7ZO.net
どこまでこのモチベーションが続くのか、ちょっと興味がある。
コメント2件

887
デフォルトの名無しさん[sage]   投稿日:2017/03/23 13:29:31  ID:zvUDs3dx.net(3)
>886
まだ表示してんのか
物好きだな

888
849[]   投稿日:2017/03/23 14:21:23  ID:uU/dK4ok.net(6)
>886
その気持は俺もあって、
1、学校で奴隷のようにプログラミング言語を仕込まれる
2、〜〜のソフトを作りたいという欲が上達の近道
って2つあるけど、
1、のルートしかないのかな?って思う今日この頃なんだよねwww

889
デフォルトの名無しさん[sage]   投稿日:2017/03/23 15:29:43  ID:dnzxf4sO.net(2)
irbで
> 1/2
=> 0.5
となるようなオプションってあります?
コメント1件

890
デフォルトの名無しさん[sage]   投稿日:2017/03/23 15:42:26  ID:3KgHIgrA.net

891
デフォルトの名無しさん[sage]   投稿日:2017/03/23 16:12:02  ID:zvUDs3dx.net(3)
>889
irbはRubyの対話実行環境であって電卓ではない
Rubyとしての挙動に不満で電卓のように使いたければ電卓を使え
WindowsならSCAPとかいろいろあるぞ
http://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)
コメント1件

892
デフォルトの名無しさん[sage]   投稿日:2017/03/23 16:15:37  ID:zvUDs3dx.net(3)
……。違うな。Numeric#fdivか。すまんね
コメント1件

893
デフォルトの名無しさん[sage]   投稿日:2017/03/23 17:55:59  ID:dnzxf4sO.net(2)
>890
それが面倒なんで聞いた次第
>891
電卓代わりに使いたいんだよね
>892
> 1.class
=> Fixnum
Fixnumでは

とりあえずオプションはなさそうなので
http://stackoverflow.com/questions/9745122/how-can-i-redefine-fixnums-...
を参考にすることで自己解決しました

894
デフォルトの名無しさん[sage]   投稿日:2017/03/23 18:31:44  ID:dbie/DTi.net
電卓代わりに使うならrequire 'mathn'して内部ではRational使って計算精度たかめつつ、
.irbrcをいじってRationalを表示するときに小数に変換して表示するのがおすすめ

895
デフォルトの名無しさん[]   投稿日:2017/03/24 00:37:05  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 を偽装しても仕方ない
コメント1件

896
デフォルトの名無しさん[sage]   投稿日:2017/03/24 01:04:59  ID:LvaD/h2O.net
Ruby2.x系に対応したレシピブックって無いんですか……
Rubyレシピブック第3版が2010年で止まってるので困ってます
コメント1件

897
デフォルトの名無しさん[sage]   投稿日:2017/03/24 14:52:34  ID:HIpLSJu0.net
pythonくっくぶっく読め
コメント1件

898
849[]   投稿日:2017/03/24 15:44:03  ID:/hN+XEZl.net
>895
レスありがとうございます。
modernizr.jsというのがあるんですね。
勉強になります。
なんでも、FiddlerCoreというのがあって、それでブラウザに出入りするすべての情報が見られるらしいんです。

899
デフォルトの名無しさん[sage]   投稿日:2017/03/24 15:56:31  ID:suDsBIm1.net
>897
それ訳書は2005年版だぞ

900
デフォルトの名無しさん[sage]   投稿日:2017/03/24 18:08:31  ID:enVRLviO.net
>896
最新の情報を追っていきたいなら
Pythonに言語を変えるべき

901
デフォルトの名無しさん[sage]   投稿日:2017/03/24 19:02:13  ID:LoToasEt.net
そうだねRubyはもうオワコン…

902
デフォルトの名無しさん[sage]   投稿日:2017/03/24 20:10:01  ID:87HMKY7E.net(2)
seleniumでchromedriverのコマンドプロンプトが出て邪魔なんだけど
消す方法ないですか?
しらべたらC#しか出来ないみたいなので教えてください。

903
デフォルトの名無しさん[sage]   投稿日:2017/03/24 20:43:09  ID:9VMQOfeX.net
解決する必要のない問題
SeleniumはDockerで動かすものだと思ってる

904
デフォルトの名無しさん[sage]   投稿日:2017/03/24 22:08:47  ID:PYtcfDaS.net
rubyが動いてるのとは別のプロンプトが出るの?

905
デフォルトの名無しさん[sage]   投稿日:2017/03/24 23:25:24  ID:87HMKY7E.net(2)
rubywでやるとプロンプトがでるの
rubyでやるとrubyのプロンプトしかでないの

906
デフォルトの名無しさん[sage]   投稿日:2017/03/25 00:07:50  ID:w1qI1jrD.net
ではrubyでやればよいのでは?

907
デフォルトの名無しさん[sage]   投稿日:2017/03/26 01:11:17  ID:9bRE2FVy.net
ruby用にmacが欲しい
なんでwindouwsだと環境構築こんなに面倒になってしまったんですかね
rbenvも使えないし
コメント2件

908
デフォルトの名無しさん[sage]   投稿日:2017/03/26 01:47:38  ID:520b61Y6.net
>907
Windowsはもともとそんなもんだから
Rubyに限った話ではない
言語のせいというより、WindowsがUnixとの相性をとことんまで捨ててきた結果
コメント1件

909
デフォルトの名無しさん[sage]   投稿日:2017/03/26 03:06:46  ID:EKCv78dE.net(3)
先日のNet::SSHのアホだが、suした後にコマンド叩いてコマンドの出力は取れたんで一応報告まで
参考になるかはわかんないけど、力業でやるしかないようだ

http://ideone.com/vGFRog

cdとかexportやるとめんどくさそう(shellモードで走らないとアレなので)
別メソッド内でlambdaをたくさん用意して、open_channelブロック内でlambda配列をcallしまくらないとダメかも

910
デフォルトの名無しさん[sage]   投稿日:2017/03/26 03:15:36  ID:EKCv78dE.net(3)
というか、誰が見るのかもわからんが、ググって後悔する人用?

911
デフォルトの名無しさん[sage]   投稿日:2017/03/26 04:15:06  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を選んだらテストって表示されるっていう感じ
コメント3件

912
デフォルトの名無しさん[]   投稿日:2017/03/26 05:59:49  ID:PRpbdmfu.net(2)
>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を使うべき
コメント2件

913
デフォルトの名無しさん[sage]   投稿日:2017/03/26 06:10:56  ID:EKCv78dE.net(3)
>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]
コメント1件

914
デフォルトの名無しさん[sage]   投稿日:2017/03/26 12:28:08  ID:uiu02Zxm.net
>912>913
ありがとうございます!
配列かハッシュを使って上手いことやるって感じなんですね
参考にして頑張ります!

915
デフォルトの名無しさん[sage]   投稿日:2017/03/26 14:35:31  ID:hVl7ZVni.net(2)
>908
というよりRubyがUNIXにべったり依存してることがそもそもの問題だろう
Pythonなど他の主要なスクリプトはそこまで依存してないぞ

916
デフォルトの名無しさん[sage]   投稿日:2017/03/26 14:38:47  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  ID:PRpbdmfu.net(2)
DBのレコードには、>912 のように、
きっちりと構造を定義した、クラス・構造体を使うべき

配列・ハッシュなどは、表の仕様変更に弱いから、おすすめしない

「Effective Ruby」項目10に書いてある。
構造化データの表現には、Hashではなく、Structを使おう

本当は、DBを使うと、検索用のインデックスを張るなど、検索速度が上がる。
全レコードをループして、線形探索しない。
線形探索の計算量は、レコード数に比例するから、遅い

918
デフォルトの名無しさん[sage]   投稿日:2017/03/26 20:46:28  ID:hVl7ZVni.net(2)
たかがスクリプトでそんなのどうでもいいよ
HashとStructなんか実用上大した差はない
どうせStructなんか生で使う時点でカプセル化もクソもない
DBも導入や運用の手間やデータが単純なテキストでなくなることを考えると
よほどのことがない限りはコストに見合わない

919
デフォルトの名無しさん[sage]   投稿日:2017/03/27 00:28:58  ID:Veh84ZPS.net
rubyって例外処理どうやってるの?
実行するまでどの例外が出るのか分からないからトライアルアンドエラーしてくしかないの?
コメント3件

920
デフォルトの名無しさん[sage]   投稿日:2017/03/27 00:29:50  ID:A5EmHHW6.net
rescueでぐぐれ

921
デフォルトの名無しさん[sage]   投稿日:2017/03/27 00:36:09  ID:OggmZorO.net(3)
>919
ドキュメントに書く
例外の静的チェックなんかやってるのは後にも先にもJavaだけだ
フレームワークや関数型と極めて相性が悪く、Javaが犯した大失敗の一つとされている
コメント1件

922
デフォルトの名無しさん[sage]   投稿日:2017/03/27 01:02:23  ID:UxXnYzuG.net(2)
Swift「うむ」
コメント1件

923
デフォルトの名無しさん[sage]   投稿日:2017/03/27 02:43:39  ID:+1P0P+cw.net
>919
どんな例外であっても捕捉したけりゃ

begin
  例外が起こったら捕捉するブロック
rescue Exceptions
  例外回復処理
end

として見るといい

ただし個人的には、きちんとした理由がない限りはRuntimeErrorまたはそのサブクラスに限るべしと考えている

924
デフォルトの名無しさん[sage]   投稿日:2017/03/27 06:54:09  ID:OggmZorO.net(3)
>922
あれは型を指定できないから別物でしょ
規模が大きくなったり例外の使用が普及していくと大半のメソッドにthrowsが付いて意味をなさなくなるよ
例外が後付けであることと、
iOSアプリなので規模が小さいしその場の判断でカジュアルに落としていいということを前提とした
限定的なやり方だね

925
デフォルトの名無しさん[sage]   投稿日:2017/03/27 21:24:01  ID:ndaSX+xy.net
>921
やっぱりjavaみたいにその場では分からないのね
ruby使ってる会社なんてベンチャー系が多いわけで、ドキュメントもそんなにしっかり書いてるところなんてほんと1握りだろうし難しい問題だな
コメント2件

926
デフォルトの名無しさん[sage]   投稿日:2017/03/27 21:45:27  ID:OggmZorO.net(3)
>925
いやRuby(というかRails)の場合は例外はフレームワーク任せで最上位で捕捉が基本だから何も難しいことはないよ
コメント1件

927
デフォルトの名無しさん[sage]   投稿日:2017/03/27 22:41:14  ID:UxXnYzuG.net(2)
>926
Rubyに限らず明示的なハンドリングが必要なケース以外は最上位で補足が基本だと思うよ

>925
使ってるライブラリがどういう例外をはくのかドキュメント見ても分からないなら
そういうライブラリを使うのを避けるかソース見ればいいんじゃね?
例外はAPIの一部だから明示されていて当然

「Javaみたいにその場で分かる」の意味が分からないし現実問題として困ったことはない

928
デフォルトの名無しさん[sage]   投稿日:2017/03/27 22:57:57  ID:VL/gciGG.net
まあ「RubyがJavaじゃないので困る」とか「Rubyがオブジェクト指向の基本の○○を守ってない(実際は○○はJavaの方言)」とか
そういうのはけっこうあるので、自分の知らない言語を学ぶ機会になっていいんじゃないですかね

929
デフォルトの名無しさん[sage]   投稿日:2017/03/27 23:32:21  ID:kIuVYWQO.net
その場で分かるは検査例外に他ならないでしょ

…って言ってみておいて何だが
検査例外っていう言葉がどっから来たのか不明だな
https://docs.oracle.com/javase/specs/jls/se8/html/jls-11.html
このへん見てもせいぜいchecked exceptionsとあるだけで
どこの誰が検査例外とか言い出したんだろうな
コメント1件

930
デフォルトの名無しさん[sage]   投稿日:2017/03/28 00:08:58  ID:5RUVNWwS.net
>929
検査例外のことだとすると
非検査例外はその場で分からないから困るって話になっちゃう気がするので
何か違うものを指してるんじゃないのかな?

931
デフォルトの名無しさん[sage]   投稿日:2017/03/28 03:00:23  ID:vGNqj6m3.net
>919
一番上の呼び出し元でrescueしてログにゲロるだけ、ってのがよくあるパターン
で、次の日にログみてエラー出てたら直すかどうか調べる
その程度

ありとあらゆるgemの挙動をすべてわかってるわけでもないしな、医者の「様子見」って奴だ

932
デフォルトの名無しさん[sage]   投稿日:2017/03/28 20:55:44  ID:IwCv7Hc+.net
自分で書いたプログラムが徐々に進化していく感じが凄い楽しい
この感覚を共有したいのですが良いコミュニティ無いですか?

933
デフォルトの名無しさん[sage]   投稿日:2017/03/28 21:51:04  ID:Ri9BGdNQ.net
github

934
デフォルトの名無しさん[sage]   投稿日:2017/03/28 22:05:15  ID:sFbRrsU+.net
Rubyのanyとallで捗るがほかの言語でもあるのか
コメント2件

935
デフォルトの名無しさん[sage]   投稿日:2017/03/28 22:17:59  ID:xRgDj2E5.net
>934
リスト操作の関数が揃ってるのなら大抵あると思うが
JavaScriptにでもあるぐらいなんだから(everyとsome)

936
デフォルトの名無しさん[sage]   投稿日:2017/03/29 03:22:52  ID:d5wwz1O4.net
>934
pythonにもあるけど、rubyと考え方が変わるから注意して
「ジェネレータ内包」というか、関数が中にいる、yieldで蹴り上げてくれない

937
デフォルトの名無しさん[sage]   投稿日:2017/03/29 04:12:06  ID:ZwfTQ2HH.net
Ruby/JavaScriptに慣れてるとPythonはマジキチ

938
デフォルトの名無しさん[sage]   投稿日:2017/03/29 07:59:46  ID:I/A0mp99.net
JavaScriptにはyield(Rubyのなんちゃってyieldじゃなくてジェネレータの方)も
リスト内包表記もasync/awaitも入ったからそうでもないよ
残念ながら他の言語がおかしいのではなくRubyが時代から取り残されている
更新情報
・スレッド一覧ページで過去ログのタイトル検索・一覧表示ができるようになりました(2016/1/20)
NGワード登録
登録する
スレッド内検索

プログラム板 タイトル検索

このスレッドが人気です(実況系)
第89回選抜高校野球大会準々決勝★70 (724)NHK実況
実況 ◆ TBSテレビ 27370 (240)TBS実況
実況 ◆ テレビ朝日 47347 大下さんシフト (140)テレ朝実況
実況 ◆ 日本テレビ 54713 (343)NTV実況
白熱ライブ ビビット★1 (702)TBS実況
連続テレビ小説 べっぴんさん★249 (543)NHK実況
羽鳥慎一モーニングショー★5 (330)テレ朝実況
NHK総合を常に実況し続けるスレ 132285 立てよ (823)NHK実況
このスレッドが人気です(ニュース系)
【森友学園】民進・辻元清美氏「塚本幼稚園に入っていないし、入ろうとした事実もない」 報道各社にFAXで見解を発表★9 (1000)ニュー速+
【森友学園】財務省「谷氏から照会があったのは2015年11月頃」 民進、谷氏招致求める 昭恵夫人の招致に首相応じず★23 (386)ニュー速+
【森友学園】民進・辻元清美氏「塚本幼稚園に入っていないし、入ろうとした事実もない」 報道各社にFAXで見解を発表★10 (272)ニュー速+
【森友】安倍首相「辻元氏は否定しているわけです。なかったことを証明しなくてはいけない」辻元氏が作業員を学園に潜入させた疑惑を追求 (612)ニュー速+
【森友学園】財務省「谷氏から照会があったのは2015年11月頃」 民進、谷氏招致求める 昭恵夫人の招致に首相応じず★22 (1000)ニュー速+
【サッカー】新エース・久保の2戦連発で快勝のハリル日本、視聴率も20・0%大台超え (713)音楽・芸能ニュース
【国際】日本の席に白い折り鶴1羽が置かれる=核禁止条約交渉会議で 国連本部 (1000)ニュー速+
【森友学園】財務省「谷氏から照会があったのは2015年11月頃」 民進、谷氏招致求める 昭恵夫人の招致に首相応じず★21 (1000)ニュー速+
プログラム板の人気スレ
オブジェクト指向って自然な文法だな 2 (559)
オブジェクト指向って不自然な文法だよな (1000)
Excel VBA 質問スレ Part47 (424)
【統計分析】機械学習・データマイニング14 (395)
くだすれPython(超初心者用) その32 (1001)
Visual Studio 2017 (843)
次世代言語議論スレ[Go Rust Haskell Scala]第3世代 (429)
C言語なら俺に聞け 139 (592)
C#, C♯, C#相談室 Part92 (735)
C++相談室 part129 (939)
推薦図書/必読書のためのスレッド 81 (581)
ふらっと C#,C♯,C#(初心者用) Part127 (134)
Swift part10 (316)
Pythonのお勉強 Part52 (725)
Xamarin Part3 (663)
【PHP】下らねぇ質問はここに書き込みやがれ 8 (118)
Visual Studio 2015 Part8 (555)
ねねっちと一緒にプログラムを勉強するスレ第2話 (86)
Git 15 (374)
Java入門・初心者質問スレ Part.2 (930)
クラス名・変数名に迷ったら書き込むスレ。Part27 (929)
HSP総合スレ【part 10】 [無断転載禁止](c)2ch.net (255)
☆★Java質問・相談スレッド179★★ (829)
プログラミング言語 Rust 2 (704)
Ruby 初心者スレッド Part 59 (938)
ドルオタワイ、1からプログラミングを学びたい (130)
+ JavaScript の質問用スレッド vol.122 + (868)
このサイトについて
このサイトは2ちゃんねるからデータを取得し、表示するサービスです。
画像のインライン表示機能について
画像のURLの後ろにある[画像をインライン表示]をクリックすると、URLの下に表示します。
表示される画像は横幅100pxに縮小されていて、クリックすると原寸で表示します。
このサイトの特徴
1)スレッド内検索ができます
2)レス(「>>1」など)のポップアップができます
3)不適切な言葉を含む投稿を表示しません
4)ページ内で画像を直接表示できます
5)2ch他スレッドへのリンクはタイトル・板名つきでリンクします
6)すっきりとしたデザインで表示します
7)最新スレや前スレをチェック・一覧表示します
8)NGワード機能の搭載でイヤな言葉が目に入りません
9)荒らしを自動チェックします
10)スレッド内・同一IDの書き込みだけ表示できます
11)レスの返事をレスされた発言の下に表示する「まとめビュー」が利用できます
12)シリーズ化したスレッドの一覧を表示します
13)最新のスレッドがある場合はお知らせします
削除について
こちらをご覧ください
機能要望について
現在機能要望受付中です。
問い合わせについて
こちらのページからどうぞ
広告


首都圏の方、ソフトバンク光オススメですよ


このサイトは2ch.scからデータを取得・表示しています。削除などについてはこちらをご覧ください。 アクセスモード:差分取得 - 正常取得 - 9件 - 取得完了