dupchecked22222../4ta/2chb/638/94/tech147539463821762517026 Ruby 初心者スレッド Part 59 [無断転載禁止]©2ch.netYouTube動画>1本 ->画像>6枚 ◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

Ruby 初心者スレッド Part 59 [無断転載禁止]©2ch.netYouTube動画>1本 ->画像>6枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1475394638/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

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

前スレ
Ruby 初心者スレッド Part 58
http://echo.2ch.net/test/read.cgi/tech/1458735404/

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

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

逆引きRuby
http://www.namaraii.com/rubytips/
2 :
デフォルトの名無しさん
2016/10/02(日) 16:51:40.26 ID:kFeo4TbM
たのしいRuby 第5版、2016

Effective Ruby、2015

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

Rubyのしくみ、2014

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

リファクタリング:Rubyエディション、2010
3 :
デフォルトの名無しさん
2016/10/02(日) 18:17:48.09 ID:mO5jHYyT
プログラミングElixir、2016

Ruby界隈から、名著が出た。
著者は「プログラミングRuby」のDave Thomas。
関数型言語Elixirは、Ruby + Rails + ErlangVM で、並行処理が得意

Selenium実践入門 ―― 自動化による継続的なブラウザテスト、2016

Seleniumデザインパターン&ベストプラクティス、2015
OSSのブラウザ自動テストツール、Selenium WebDriver を使って、
Rubyでテストを書いた本

プログラマ脳を鍛える数学パズル
シンプルで高速なコードが書けるようになる70問、増井 敏克、2015

CodeIQに掲載された問題を、Ruby, JSなどで解説

「ITエンジニアに読んでほしい!技術書・ビジネス書 大賞(ITエンジニア本大賞)」の受賞作
4 :
デフォルトの名無しさん
2016/10/02(日) 18:43:05.77 ID:QvMQ+uX0
>>1 乙
5 :
デフォルトの名無しさん
2016/10/02(日) 22:05:08.76 ID:mO5jHYyT
Linux API を、Windows API に変換するので、Ubuntu64 のバイナリがそのまま動く、
Windows Subsystem for Linux (WSL) で、Ruby, Rails をやっている人いる? 調子はどう?

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

日本語も使える端末、ConEmu。
GUI表示用のXサーバー、Xming X Server for Windows
6 :
デフォルトの名無しさん
2016/10/03(月) 07:31:26.25 ID:Sy28Ke7B
今試してるとこ
Win対応はRubyのお荷物になってるから、
これを機にWin関連のコードがRuby本体やGemsから一掃されてくれるといいな
7 :
デフォルトの名無しさん
2016/10/03(月) 10:44:03.35 ID:GNQlIOXR
Rubyはもうオワコン
8 :
デフォルトの名無しさん
2016/10/03(月) 17:50:44.12 ID:BQDt10lP
rubyのopengl関連のラブラリがどうなってるのか分かり辛いから、
自分で調べたんだけど下のであってる?

・今はlarskanis/openglとvaiorabbit/ruby-openglがある
・larskanis/openglのほうは(vaiorabbit/ruby-openglのドキュメント読むと)opengl2とかよばれている
・opengl2表記から初代opengl(既に開発停止、サイトもなくなっている)が存在する
9 :
デフォルトの名無しさん
2016/10/03(月) 17:52:09.82 ID:BQDt10lP
足りていない箇所があったら教えて
10 :
デフォルトの名無しさん
2016/10/04(火) 20:13:20.14 ID:BihL0/mM
Cで書かれたメソッドにポインターを渡す場合どうしたらいいのかわからない
ruby側で「メモリ確保してポインター渡す」にはどうすればいいの?
11 :
デフォルトの名無しさん
2016/10/04(火) 22:52:38.60 ID:1BCIDfGo
WSLだとRails簡単に動いた
少なくともWin対応完全終了の口実としては十分なレベルだなこれ
12 :
デフォルトの名無しさん
2016/10/05(水) 06:20:29.41 ID:JVWzXY3A
mswin32だろうがmingw32だろうが需要があるから
どんなに嫌ってる人がいようと続いていく
13 :
デフォルトの名無しさん
2016/10/05(水) 14:43:41.37 ID:e2s2BqVL
>>10
ffi
14 :
デフォルトの名無しさん
2016/10/06(木) 01:25:08.92 ID:b/FSG7/S
環境
win7-64bit
ruby-2.2.4(32bit)とruby-2.3.1(32bit)をrbenvを使って二つインストールしてる

数日前から2.3.1の方でgemのアップデートやインストールをしようとすると

Updating installed gems
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certif
icate verify failed (https://api.rubygems.org/specs.4.8.gz)

こんなエラーがでて、上手くいかない
2.2.4の方に切り替えるとアップデートやインストールが上手くいく
正直どこ弄れば良いかさっぱりだわ
15 :
デフォルトの名無しさん
2016/10/06(木) 01:28:43.41 ID:EykuvLuN
gemのバージョンは?
16 :
デフォルトの名無しさん
2016/10/06(木) 01:37:19.84 ID:b/FSG7/S
>>15
2.2.4の方が2.6.7、2.3.1の方が2.5.1でした
古いのが原因かと思ってgem update --systemを試しましたが同じくSSLのエラーを吐いてダメでした……
17 :
デフォルトの名無しさん
2016/10/06(木) 12:40:09.87 ID:4kR5N43K
どうせ隔離して使うんならVagrantでいいじゃん
Windowsで無理にrbenv使う意味がわからん
18 :
デフォルトの名無しさん
2016/10/06(木) 16:10:34.56 ID:EykuvLuN
>>16
Ruby 2.2.4 の方の gem を 2.5.1 にして比較してみては?
19 :
デフォルトの名無しさん
2016/10/06(木) 18:27:59.15 ID:TUUHw8QE
ぐぐったらSSLやサーバ関連の問題みたいだな
以下参照して
http://d.hatena.ne.jp/komiyak/20130508/1367993536
20 :
デフォルトの名無しさん
2016/10/06(木) 23:45:09.75 ID:80e57pGo
質問お願いします。
cronでrubyを動かすと、下記エラーが出てしまうのですが、
どう書けば良いのでしょうか?
また、なぜcronだとエラーしてしまうのでしょうか?
/hoge/nokogiri.rb: line 4: syntax error near unexpected token `('
/hoge/nokogiri.rb: line 4: `ENV['SSL_CERT_FILE']=File.expand_path(File.dirname(__FILE__)+
21 :
デフォルトの名無しさん
2016/10/07(金) 01:04:31.76 ID:yL88npXy
cron で皆がエラーになるのは、一般ユーザーよりも、環境変数が少ないから
22 :
デフォルトの名無しさん
2016/10/07(金) 18:41:40.46 ID:CUba1Zl4
>>13
返事が遅くなったけど、ありがとう
23 :
デフォルトの名無しさん
2016/10/09(日) 16:23:29.55 ID:+q97XIgi
rubyってインストールできたらあとはコマンド入力すればいいの?

nokogiriっての使いたいんだけど gem install nokogiriってうっても変なエラーでるだけなんだけど
24 :
デフォルトの名無しさん
2016/10/09(日) 16:29:26.13 ID:zS2VLXB8
絶望的に向いてない人はいる
人生諦めが肝心
25 :
デフォルトの名無しさん
2016/10/09(日) 16:37:40.41 ID:+q97XIgi
自己解決したわ 俺は向いてるみたいだ
26 :
デフォルトの名無しさん
2016/10/09(日) 17:08:11.44 ID:+q97XIgi
requireが通らないんだが?は?
27 :
デフォルトの名無しさん
2016/10/09(日) 17:09:47.41 ID:+q97XIgi
コードの理解はそんな難しくなさそうなのに手前がめんどくさいんじゃ
28 :
デフォルトの名無しさん
2016/10/09(日) 17:29:16.41 ID:ztakSrvW
gem search nokogiri
と打っても*** REMOTE GEMS ***
だけしか出てこないんですけど
みなさん同じ症状ですか?
それとも私だけでしょうか?
29 :
デフォルトの名無しさん
2016/10/09(日) 18:12:12.28 ID:okPyT/Vt
少し上のレスを読む and 自分の環境を書く くらいはしましょうね
$ gem install rubygems-update --source http://rubygems.org/
$ update_rubygems
$ gem search -r nokogiri
30 :
デフォルトの名無しさん
2016/10/11(火) 10:02:56.75 ID:/UUIzz58
rubyで深層学習するのと他の言語、例えばCやらpythonで深層学習するのと、どこが違うの?
rubyでも同じようなライブラリ作成したら、同じになる?
それとも言語仕様のそもそもの違いで無理なの?
rubyならなんでも出来そう、かつ楽な書き方が出来そうな気がするんだけど
31 :
デフォルトの名無しさん
2016/10/11(火) 12:03:30.19 ID:aUckxkie
Rubyにはnumpyやscipyやmatplotlibみたいな科学技術計算のためのライブラリが無いから極めて厳しい
32 :
デフォルトの名無しさん
2016/10/11(火) 22:02:35.19 ID:gtjckSki
つまり誰かがそのライブラリに相当するものを作ってくれれば・・・
33 :
デフォルトの名無しさん
2016/10/12(水) 13:13:10.27 ID:2jtU3Zls
深層学習用に、既存のCライブラリのrubyバインディングを書くのと、ruby用ライブラリを新規で書くの
どちらもそんなに違い出なさそうに見えるけど実際はどうなんだろ

やっぱりそれぞれ書くのが難しい部分とかある?
34 :
デフォルトの名無しさん
2016/10/12(水) 15:25:05.17 ID:lA7OeQ/m
コードなんて実際簡単なんだろうな

金になる商売はむずかしいむずかしい言われるもんなんだろ
35 :
デフォルトの名無しさん
2016/10/12(水) 17:14:15.29 ID:Kt1Sq3SL
fruits=["apple", "orange", "grape", "tomato", "doria", "peach"]

apple_price=[2, 6, 7, 13, 6, 20]



puts "#{fruits[0]}_price"[4]

上のコードでapple_price[4]の要素6を取り出したいのですが、"e"が表示されます。これは"apple_price"という文字列の
5番目を見ている、というのは理解できます。6を表示させるにはどうすればよいのでしょうか。よろしくお願いします。
36 :
デフォルトの名無しさん
2016/10/12(水) 17:41:20.38 ID:m4XsbzZB
イマイチ何を目的としているのかわからんけど、
6を表示するだけならputs eval("#{fruits[0]}_price")[4]
37 :
デフォルトの名無しさん
2016/10/12(水) 19:02:48.90 ID:Kt1Sq3SL
おお、すごい!ちゃんと6が表示されました。ありがとうございます。
ちょっと、今ググってみると、「「eval」は、Rubyの文字列を評価するメソッドです。」とあり、
評価するという意味が分かりませんが、とにかく文字列をつなげて“配列名”として扱える
ことができるのはわかりました。

なんでこんな妙なこと?をしているのかというと、配列名がすさまじく増えてきた上に、長くなってきて
見苦しくなってきたので、配列名の単語リスト配列を作成してその配列から番号で拾ってきてつなげれば
短くなって済むじゃんという動機でした。ところが、それらの文字がうまくつながらないので困っていた次第です。
とにかく、ありがとうございました。もうちょっと調べてみます。
38 :
デフォルトの名無しさん
2016/10/12(水) 19:15:43.53 ID:5MBS+YlH
Hashでやれば
39 :
デフォルトの名無しさん
2016/10/12(水) 19:16:58.95 ID:AoMg70NU
そういう場合はHash使おう
40 :
デフォルトの名無しさん
2016/10/12(水) 20:26:38.78 ID:Kt1Sq3SL
いや、このevalってすごいですね。つまり、"#{fruits[0]}_price"はこの時点では配列名でもなんでもなく
ただの文字列だけど、eval("#{fruits[0]}_price")することによって、配列名としての役割をもたせられた?
というわけですね。要するに二次嫁を実際に動かすメソッドというわけですよね。
なんてすごいんだ。これからはこれを使いまくろう。素晴らしいものを教えていただきありがとうございました。
ハッシュは書くのがめんどくさいので、これにします。でも情報ありがとうございました。
41 :
デフォルトの名無しさん
2016/10/12(水) 20:38:17.90 ID:9oDwxE2X
こういう奴がスクリプトインジェクション脆弱性を作り込むんだよな
42 :
デフォルトの名無しさん
2016/10/12(水) 21:18:02.32 ID:golIGFQa
まあ「すごいけどなんかキモい」と感じて欲しいところではある
43 :
デフォルトの名無しさん
2016/10/12(水) 22:38:29.15 ID:nShtFhcR
そんな事でevalなよ
44 :
デフォルトの名無しさん
2016/10/13(木) 09:04:29.36 ID:1bl1DIi2
>>40
hashは配列を変換しても作れるし、多次元配列を使ったとしても
evalとか使うよりもよほど簡潔に書けると思うが。
45 :
デフォルトの名無しさん
2016/10/13(木) 11:10:37.62 ID:a7epO2oP
>>40-41
perlのときにも同じ展開を聴いた覚えがある
46 :
デフォルトの名無しさん
2016/10/13(木) 18:51:51.44 ID:bdwv69IA
>>44
わかりました、もうちょっと勉強します。
あとevalについて調べてみましたが、なんだか多用するようなメソッドじゃないみたいです。ただ、こんな
強力なメソッドがあることを知ることができたのは大きな収穫でした。
47 :
デフォルトの名無しさん
2016/10/13(木) 19:08:12.98 ID:Xwk5OgLP
popenの方が強力
48 :
デフォルトの名無しさん
2016/10/14(金) 01:49:18.02 ID:lTvGl+LI
twitterとrubyで質問です。
rubyで自分のフォロワー一覧、あと自分のフォロワーがそれぞれフォローしてる人を一覧で得たいんですが、どうコードを書けばいいでしょうか?
rubyのバージョンは2.3.1です。
client.updateを使ってツイートを投稿することはできました。
49 :
デフォルトの名無しさん
2016/10/14(金) 07:05:19.57 ID:xv7XrH2t
Twitter APIとRubyクライアントのドキュメントを読む
英語読む気ないなら諦めましょう
50 :
デフォルトの名無しさん
2016/10/14(金) 14:11:08.06 ID:4bSlGLeL
Twitter APIの使い方まとめ
https://syncer.jp/twitter-api-matome

エンドポイントの一覧の、
ユーザー間の関係・フォロー・フォロワー、あたりを参照
51 :
デフォルトの名無しさん
2016/10/16(日) 20:26:06.98 ID:/verdR3z
ちょっと思い立ったんだけど、require や import や 継承した
ライブラリ、モジュール、クラスやメソッドのソースコードを
表示したり、そのソースのファイルパスを返すメソッドがあったら
便利じゃない?
そういうメソッドあるのかな。
52 :
デフォルトの名無しさん
2016/10/16(日) 20:45:49.85 ID:bFWPoPH4
pry使え
53 :
デフォルトの名無しさん
2016/10/16(日) 22:04:09.40 ID:B0JyF1+C
たぶん、メタプログラミング・リフレクションに、あるだろ
54 :
デフォルトの名無しさん
2016/10/17(月) 04:13:11.14 ID:G5XuU76K
https://www.kmc.gr.jp/~ohai/rubysdl_doc.html
ここを参考にして、
SDL::Event#mouse_x
でマウスのx座標を取得しようとしたら#より右側がコメントアウト扱いになってしまう
解決策をおしえてください
55 :
デフォルトの名無しさん
2016/10/17(月) 05:37:21.81 ID:xsBX/OJB
>>54
それが出てくるってことは重症だ
君の使ってるRubyの参考書のRubyのインスタンスメソッドの説明はどうなってる
56 :
デフォルトの名無しさん
2016/10/17(月) 06:27:05.93 ID:9oMVPCEa
# から行末までは、Rubyではコメントになる

# を、.(ドット)に変えれば、どうなる?
57 :
デフォルトの名無しさん
2016/10/17(月) 09:51:34.36 ID:PK8gee68
58 :
デフォルトの名無しさん
2016/10/17(月) 12:43:13.80 ID:/xEkgA1M
unlessとか気持ち悪いんですがこれはよく使うものなんですか?
59 :
デフォルトの名無しさん
2016/10/17(月) 12:47:09.09 ID:O9P4o+SC
うん
とっても
60 :
デフォルトの名無しさん
2016/10/17(月) 12:56:06.33 ID:wcVEram7
いまいち読み下しにくいので後置でのみ使う人もいる
流れによっては if + 否定的条件 であえて書くときもある
なんでもかんでも機械的にunlessに置き換えれば好ましいというわけでもない
61 :
デフォルトの名無しさん
2016/10/17(月) 13:10:36.28 ID:/xEkgA1M
とりあえずunless覚えておきます
というかrailsのためだけにrubyを覚えようと思っているぐらいなので極めるつもりはないですけど
62 :
デフォルトの名無しさん
2016/10/17(月) 13:25:44.82 ID:8eStTtOD
unlessは必ず副作用があるから、関数型っぽいスタイルで作るならほとんど使う機会は無いはず
63 :
デフォルトの名無しさん
2016/10/17(月) 14:17:13.45 ID:4xjyqR1P
指定したディレクトリごとにgemのライブラリを分けてインストールする方法ありませんか?
bundlerだとプロジェクトごと管理されてしまうので使いまわせませんよね
64 :
デフォルトの名無しさん
2016/10/19(水) 17:08:04.64 ID:6/Oyo1yl
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)
65 :
デフォルトの名無しさん
2016/10/19(水) 17:36:03.73 ID:yr0BTWsi
俺の環境ではエラーにならないので原因はスクリプトではないかと。
引数が1つだとうまくいくのか?
エラーが出る場合は環境とどんなエラーが出たかも書かないと。
66 :
デフォルトの名無しさん
2016/10/19(水) 17:42:23.59 ID:6/Oyo1yl
1つだと上手くいきます
if文のところに
undefine method '[]' for nilというエラーが。
67 :
デフォルトの名無しさん
2016/10/19(水) 17:45:20.12 ID:QoKZwwi3
エラーは訳すな約すな
標準入力のエンコーディングが変なことになってる環境でreverseが文字単位にならないと推測
rubyのバージョンと実行環境
68 :
デフォルトの名無しさん
2016/10/19(水) 17:56:18.75 ID:yr0BTWsi
>>66
p ARGVだけにしたら何が出る?
69 :
デフォルトの名無しさん
2016/10/19(水) 18:19:16.64 ID:4/E1zdGS
>>64
str1.reverse[0] は str1[-1] で十分でしょ。
def judge(str1,str2); str1[-1]==str2[0]; end

>str1=すいか、str2=からすと指定すれば
これがエラーにならないのが、むしろ謎。
70 :
デフォルトの名無しさん
2016/10/19(水) 18:31:10.49 ID:6gjRUSSv
ruby reverse.rb からす すいか

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

ARGVのみにしてもエラーが出る
71 :
デフォルトの名無しさん
2016/10/19(水) 19:12:58.53 ID:r8TZ1Dhr
68の言うとおり
p ARGV
を実行してみたら?

コマンドライン行のコピーと結果の貼り付けも忘れずに
72 :
デフォルトの名無しさん
2016/10/19(水) 19:19:47.78 ID:I4oLsIwo
>>64
def judge(str1,str2)
str1.reverse[0] == str2[0]
end
def judge2(str1,str2)
str1.chars[-1] == str2.chars[0]
end
def judge3(str1,str2)
str1.chomp.split(//)[-1] == str2.chomp.split(//)[0]
end
def f(a, b)
[a, b, judge(a, b), judge2(a, b), judge3(a, b)]
end
p f("すいか", "からす")
p f(ARGV[0], ARGV[1]) if 2 <= ARGV.size
p ARGV

↑で実行してみた結果↓

["すいか", "からす", true, true, true]
["からす", "すいか", true, true, true]
["からす", "すいか"]

参考までに…
ちなみにruby 2.0.0
73 :
デフォルトの名無しさん
2016/10/19(水) 19:36:52.07 ID:o0vkn/jY
からすとすいかの間の空白が全角とか?
74 :
デフォルトの名無しさん
2016/10/19(水) 22:29:42.17 ID:ezmv6hmC
require "jcode"
はしてある?
75 :
デフォルトの名無しさん
2016/10/19(水) 22:46:03.74 ID:3bJ4nK02
まあ全角空白でないのならレンタルサーバでRuby1.8とか中古本のCD-ROMでRuby1.9 for Windowsとかそういう可能性も視野に入るな
76 :
デフォルトの名無しさん
2016/10/20(木) 03:15:22.25 ID:/8DsWqlk
>>74
テスト
77 :
デフォルトの名無しさん
2016/10/20(木) 09:48:49.92 ID:3pYX1TsE
>>70
p ARGV以外はコメントアウトしろよ。
78 :
デフォルトの名無しさん
2016/10/22(土) 05:56:30.44 ID:eX6AWpPB
Ruby 2.2.5p319 + dxruby + gvimで、gvimからコマンドプロンプトを通じて実行すると画像Image.load(のあとが文字化けして画像が読めません。
コマンドプロンプトをデスクトップから立ち上げると問題なく起動します。
何が原因でしょうか?
79 :
デフォルトの名無しさん
2016/10/22(土) 08:36:01.81 ID:eX6AWpPB
参照画像を絶対パスにしたら表示できましたが、全画像を絶対パスへと補完できるとは言え気持ち悪いです。
相対パスで書くと実行時に文字化けした状態で絶対パスになってるので文字コードの違いによるものでしょうか?
80 :
デフォルトの名無しさん
2016/10/22(土) 10:55:27.68 ID:O48rD9qT
/hoge(ASCII)/fuga(EUC)/hage(UTF-8)/moge(SJIS)/ みたいなパス作ってるとかね
Ruby ならあり得るわ
81 :
デフォルトの名無しさん
2016/10/22(土) 10:55:50.24 ID:jUJZAwsX
文字化け?
82 :
デフォルトの名無しさん
2016/10/22(土) 19:50:27.76 ID:8CeWG7Cb
パスの各コンポーネントをそれぞれcapitalizeしたいと思ったら
path.split('/').map(&:capitalize).join('/')
みたいにするしかないですか?

ありがちな処理なのでもっとあっさり書く方法があったりしないかなって
83 :
デフォルトの名無しさん
2016/10/22(土) 20:00:43.51 ID:jUJZAwsX
ありがちなの?ないないでしょ
84 :
デフォルトの名無しさん
2016/10/22(土) 20:10:25.86 ID:8CeWG7Cb
英語圏の人ならわりとやるんじゃないかなあと思ったんですが
そうでもないのかな
85 :
デフォルトの名無しさん
2016/10/23(日) 01:50:27.34 ID:VGMahutR
>>80自己解決です

Cygwin + Vimでutf-8に設定したら幸せになれました
86 :
デフォルトの名無しさん
2016/10/23(日) 21:51:04.30 ID:ePWxsG1g
でかいファイルをシーケンシャルで読む時にIO#readでちまちま読むとえらい遅いけど
別スレッドである程度まとまったブロックとして読み込んでバッファリングするようにすると速くなる
でもこのコードを書くのはかなり面倒・・・非同期な読み書きを簡単に実現してくれる
ライブラリとかないですか?
87 :
デフォルトの名無しさん
2016/10/24(月) 06:15:31.40 ID:o4tpRTmI
dxrubyでスプライトを敵という配列、味方という配列にそれぞれプッシュして入れてます。
敵との距離が一定以下になれば味方が最寄りの敵を攻撃するようにしたいです。どうすれば良いですか?
88 :
デフォルトの名無しさん
2016/10/24(月) 08:43:55.39 ID:b4iOClrl
>>87
一対の味方の敵の位置ベクトルをそれぞれa, bとすると、aとbの距離は|a-b|。
味方と敵はそれぞれ複数いるので、一番素直な計算なら(味方の総数)×(敵の総数)通りのペア全てに対して上式で距離を求め、距離が閾値以下かどうかを判定してやればいい。
疑似コードで書けばこんな感じ。
for a in 味方の位置ベクトルの配列
 for b in 敵の位置ベクトルの配列
  if |a-b| < 閾値 then aがbを攻撃する
89 :
デフォルトの名無しさん
2016/10/24(月) 09:04:08.10 ID:8wVQUY50
ありがとうございます。
あれから思いつきで攻撃判定用にスプライトに円を書いてSprite.check(味方,敵)をやってたのですが、こちらのほうが軽くていいですね。
こちらに書き換えてみたらうまくいきました。
90 :
デフォルトの名無しさん
2016/10/26(水) 21:15:33.13 ID:hpPrYAZA
str =
91 :
デフォルトの名無しさん
2016/10/26(水) 21:18:43.85 ID:hpPrYAZA
str = " I am a boy "
puts str.split(" ")
とすると
I
am
a
boy
と出力されます。
puts str.sizeとすると
全ての文字数を数えてしまいます。
一単語ずつ文字数を数えて出力するには
どうしたらいいでしょうか。
92 :
デフォルトの名無しさん
2016/10/26(水) 21:25:19.00 ID:Vi7enIW1
>>91
puts str.split(" ").size
93 :
デフォルトの名無しさん
2016/10/26(水) 21:31:21.64 ID:3haCvHGL
puts str.split(" ").map(&:size)
puts str.split(" ").map {|x| x.size }
94 :
92
2016/10/26(水) 21:33:58.54 ID:Vi7enIW1
あ、単語の数じゃないのね失礼w
95 :
デフォルトの名無しさん
2016/10/26(水) 21:44:17.35 ID:hpPrYAZA
できました。ありがとうございます。
96 :
デフォルトの名無しさん
2016/10/27(木) 00:41:35.12 ID:WMnZ+0Yu
>>90-91
2chのバグだろ

書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" を、\" とエスケープすれば、どうだろう?
97 :
デフォルトの名無しさん
2016/10/27(木) 10:32:10.58 ID:2MnkRHxj
DXrubyで、配列に画像、名前、数値と言った具合に値を格納したいので構造体を使ってます。
しかし、arr[n].name で名前は表示できるのですが、画像が描画できません。どうしたら良いでしょうか?

require 'dxruby'
arr = []
Units = Struct.new(:fig, :name, :lv)
for i in 0..511
img = Image.new(10, 10, color = [i * 3 % 256, i * 5 % 256, i * 7 % 256])
spr = Sprite.new(i % 100 * 10, i / 100 * 10, img)
arr[i] = Units.new(spr, "ice", i * 1.2)
end
Window.loop do
Sprite.draw(arr)
(arr[4].fig).draw
break if Input.key_down?(K_RETURN)
end
98 :
デフォルトの名無しさん
2016/10/27(木) 12:20:18.56 ID:2MnkRHxj
もう一つお聞きしたいです。
空の配列に対してarr[810] = object
とすると、arr[0]に入ってしまいます。
試しに、あらかじめ、配列の全要素に0とかを代入してやると正しい位置に入ります。
insertメソッドを使ってみても同様でした。
配列の長さが予めわからない場合、これだとできない気がするのでなるべくこの方法は取りたくありません。
スマートに挿入する方法は無いですか?
99 :
デフォルトの名無しさん
2016/10/27(木) 12:21:56.63 ID:2MnkRHxj
>>98に補足
現在の配列の添字の最大数を超えて挿入したときの挙動はpushみたいでした。
100 :
デフォルトの名無しさん
2016/10/27(木) 13:09:46.97 ID:AljoQzp1
arrにはUnitsが入っててUnitsにはdrawがないから。
配列の話は君の勘違いでしょう
101 :
デフォルトの名無しさん
2016/10/27(木) 21:29:01.57 ID:4hI3qXiG
プログラムゲームをやっていたら
以下のような問題が出たのですが
for i in 4..0 do と書いてもダメなようで
どのようにすれば良いのでしょうか?

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

for i in 4..0 do
puts i
end
102 :
デフォルトの名無しさん
2016/10/27(木) 21:33:26.89 ID:IpcVW8ex
>>101
(1) 出力するときに 4-i を出力する
(2) Integerクラスで使えそうなメソッドがないか探す
好きな方を選べ
103 :
101
2016/10/27(木) 22:06:29.82 ID:4hI3qXiG
下のコードで動きましたが

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

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

最近はオブジェクトを操作するんで
for文なんて使わないでしょうけど
104 :
デフォルトの名無しさん
2016/10/27(木) 22:13:34.88 ID:IpcVW8ex
>>103
Range クラスの説明を読め
105 :
デフォルトの名無しさん
2016/10/27(木) 22:42:19.91 ID:qlBkdymK
上で書かれてるようにIntegerの4.downto(0)でどーぞ
より汎用的なのが欲しかったらstepを使ってね
106 :
101
2016/10/27(木) 22:55:48.72 ID:4hI3qXiG
PHPなら

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

}

と、直感的に書けるのに
Rubyってそういう言語なんだなと思いました
107 :
デフォルトの名無しさん
2016/10/27(木) 23:03:14.77 ID:qlBkdymK
>>98
DXRuby使ったことないから変なこと言ってるかもだけどHashとかと勘違いしてる可能性はない?
少なくともArrayは指定した要素数なければ自動的に拡張されるはずだし、リファレンスマニュアルにもそう書いてる
108 :
デフォルトの名無しさん
2016/10/27(木) 23:14:12.71 ID:IpcVW8ex
>>106
それは直感的というんじゃなくて、「PHPに慣れてる人から見れば」というだけだ
PHPのような書き方のループをほとんど使わない言語はたくさんある
109 :
デフォルトの名無しさん
2016/10/27(木) 23:52:33.07 ID:HseNjWnT
>>106
直感的といいながらそれだと0が出力されない件について。

>>101「4から0を改行区切りで出力してください」
110 :
デフォルトの名無しさん
2016/10/28(金) 00:28:10.54 ID:W/QcN0Ng
これは恥ずかしい直感w

俺ならこうする
puts (0..4).to_a.reverse
111 :
デフォルトの名無しさん
2016/10/28(金) 00:30:51.22 ID:hY3IWwKu
PHPは、JSよりも、クソだろ

Rubyでは、ほとんどバグを作ることはない。天国
112 :
デフォルトの名無しさん
2016/10/28(金) 02:06:17.44 ID:hybKxCis
>>110
to_aしてreverseはこねくり回しててキモい
113 :
デフォルトの名無しさん
2016/10/28(金) 16:37:59.02 ID:Gcdt9agW
>>100解決しましたありがとうございます
114 :
デフォルトの名無しさん
2016/10/29(土) 13:16:09.07 ID:Z9R3Bpkc
複数のEnumerableを同期させる一般的でエレガントな書き方って何?
元ネタが無限List同士の足し算なんで[]は使えない。
Lisp系のmapのように複数のEnumerableで要素毎に演算させたいのだけど。

一般的とかエレガント、とかいうのは言葉の綾なので
俺ならこうするっていうコードでいいです。
115 :
デフォルトの名無しさん
2016/10/29(土) 13:30:26.15 ID:Y7alBFBP
>>114
まずは自分がサンプル出してみようぜ
イマイチ何をしたいのか分からないんで
116 :
デフォルトの名無しさん
2016/10/29(土) 13:47:23.31 ID:pNJKjv6A
Lazy#zip とは違うん?
117 :
114
2016/10/29(土) 15:46:26.62 ID:Z9R3Bpkc
>>115
無限Listじゃないけど、
a = [1, 2, 3, 4, 5]
b = [2, 3, 4, 5, 6]
c = []
(0..4).each do |i|
c << a[i] + b[i]
end
こーゆー複数のEnumerableの要素同士の演算をやりたくて、
[]を使わないコードの一般的な書き方。
118 :
デフォルトの名無しさん
2016/10/29(土) 15:56:09.74 ID:Y7alBFBP
>>117
だったら >>116 の通りだね
無限だったら Enumerable::Lazy#zip だし、有限なら Enumerable#zip
119 :
デフォルトの名無しさん
2016/10/29(土) 23:44:35.86 ID:FqWL80JH
a= 1.step.lazy
b= 2.step.lazy
p a.zip(b).map{|(x,y)|x+y}.take(10).force
こんな感じかな
120 :
デフォルトの名無しさん
2016/10/30(日) 06:16:43.08 ID:6aoQoQ7p
いま友人と競技プログラミングのようなことをしているのですが
処理速度にインデントの有無や変数名・メソッド名の長さは影響するのでしょうか?
121 :
デフォルトの名無しさん
2016/10/30(日) 07:22:50.93 ID:E1a/AFOu
>>120
極端な長さ(100万文字とか)でない限りは無視できるレベル
122 :
デフォルトの名無しさん
2016/10/30(日) 07:33:28.32 ID:3gvxzMHV
>>120
標準添付ライブラリの benchmark で測ってみ
123 :
114
2016/10/30(日) 12:14:06.69 ID:EmeJsRHl
>>118
>>119
ありがとうございました。
元ネタも119のやり方でいけることを確認しました。
zipの使い方はもう少し勉強してみます。
124 :
デフォルトの名無しさん
2016/10/30(日) 13:42:37.03 ID:3A6g5SNv
>>121
>>122
ありがとうございます
短くしたりして10回行った平均タイム計測して比較していたのですが
言われてみれば短くなったような気がするけど変わってないような気もする程度で困っていました
ほんとうにありがとうございました
125 :
デフォルトの名無しさん
2016/10/30(日) 17:08:51.99 ID:DhcMHpiw
symbolのhashがぶつからなければ遅くならない
126 :
デフォルトの名無しさん
2016/10/30(日) 17:10:16.01 ID:DhcMHpiw
つまりひとつひとつの文字数を気にするより
変数名・メソッドの総数が(それぞれ数文字程度でも何億個もあれば)問題
127 :
デフォルトの名無しさん
2016/11/01(火) 03:29:08.77 ID:Y1KW6BLy
下の例文みたいにバッククォート文の中で新たにruby動かして文字を表示させて、
そのバッククォート文の帰り値をさらに表示させたんですが、
えらくquoteされてて、帰り値を他の操作に使うには扱いにくいです
なんとかして元に戻せないでしょうか

例文
p `ruby -e 'p "what \n time \\n is \\\n it"'`
128 :
デフォルトの名無しさん
2016/11/01(火) 07:11:46.65 ID:LAzD7QHV
普通にeval使えばいいんじゃないか
129 :
デフォルトの名無しさん
2016/11/01(火) 13:46:39.38 ID:jrgGST5A
pやppだとpretty-printするから
そのまま出力したい場合はputsとかIO#writeで
130 :
デフォルトの名無しさん
2016/11/02(水) 08:27:48.48 ID:haJxcE0h
p は美しくないぞ
131 :
デフォルトの名無しさん
2016/11/02(水) 14:27:05.74 ID:tET8fuT+
amazon apiで在庫検知したのどうやってツイッターにpostすればいいんですか^^;
132 :
デフォルトの名無しさん
2016/11/02(水) 16:49:50.54 ID:db1quxwb
twipy
133 :
デフォルトの名無しさん
2016/11/03(木) 08:10:12.47 ID:lfIkemy8
pp使うときってrequire 'pp'するじゃないですか?

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

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

Railsの話ではありません
134 :
デフォルトの名無しさん
2016/11/03(木) 10:30:21.74 ID:57gZHyJM
コマンドラインオプションでええやん
135 :
デフォルトの名無しさん
2016/11/03(木) 10:51:02.30 ID:6FeMk1RE
import .rubyrc
136 :
デフォルトの名無しさん
2016/11/03(木) 13:29:30.56 ID:lfIkemy8
なさそうですね。ありがとうございました。
137 :
デフォルトの名無しさん
2016/11/03(木) 17:22:53.81 ID:DhApkK4z
環境変数RUBYOPTにオプションを設定する
-rpp とか指定しておけばいい
138 :
デフォルトの名無しさん
2016/11/03(木) 19:08:39.80 ID:lfIkemy8
>>137
動きました。ありがとうございました。
これでコードレビューで、使ってないライブラリの
requireをコミットするんじゃねーよってドヤ顔できます。
139 :
デフォルトの名無しさん
2016/11/04(金) 08:04:24.16 ID:je13exBR
pry 使え
140 :
デフォルトの名無しさん
2016/11/05(土) 09:03:33.72 ID:3jWRFMI3
JavaScriptの分割代入みたいな簡単にかける構文はありませんか?

let obj = {a: 1, b: 2, c: 3}
let {a, b} = obj
console.log(a)

これすごく関数の引数にも使えるから便利なんです
function foo({a, b}) { console.log(a) }
foo(obj)


あまり使いませんがネストされたオブジェクトでも一発でとってこれちゃうというw
let obj = {a: 1, b: {bb: {bbb: 2}}}
let {b:{bb:{bbb}}} = obj
141 :
デフォルトの名無しさん
2016/11/05(土) 09:08:44.59 ID:3jWRFMI3
あともう一つ。

let obj = {
 a: 1,
 foo() { console.log(this.a) },
}
obj.foo() // 1と出力

もしくは、

let obj = new class {
 constructor() { this.a = 1 }
 foo() { console.log(this.a) }
}
obj.foo() // 1と出力


これ相当のコードをできるだけ短く書く方法ないでしょうか?
142 :
デフォルトの名無しさん
2016/11/05(土) 09:20:04.03 ID:g4s/HAgH
>>140
hash = { a: 1, b: 2 }
a, b = hash.values_at(:a, :b)
p a # => 1

def f(a:, b:); p a; end
f(hash) # => 1
143 :
デフォルトの名無しさん
2016/11/05(土) 09:26:45.75 ID:CJv/XjYq
古いrubyにはないけど取得だけなら
Hash#dig
144 :
デフォルトの名無しさん
2016/11/05(土) 11:27:15.41 ID:3jWRFMI3
>>142
> a, b = hash.values_at(:a, :b)
=の左右の両方にaとbがでてきてdryではないようですね。

長い名前で数が多いと嫌な感じです。
name, value, total, count = hash.values_at(:name, :value, :total, :count)

ローカル変数に入れておけば静的解析ができるので名前のミスとか
テキストエディタでリアルタイムにわかるのですが。

function foo({name, value, total, count} {
  みたいにすると、引数書いてるのとほぼ変わらない程度で
  オブジェクトからローカル変数に入れることができるのですが。

  さらにこれもRubyでは出来ないと思いますが、
  return {name, value} のように書くことは出来ないですよね?
}

{name: name, value: value} の省略形です。
このようにオブジェクトのキー = 変数名としておくと
dryで簡単にオブジェクトして返すことができるのですが。
145 :
デフォルトの名無しさん
2016/11/05(土) 13:12:14.27 ID:g4s/HAgH
>>144
RubyはHashをそんなに使わないしね
JavaScriptで簡単に書けるパターン「も」あるよってだけだし
146 :
デフォルトの名無しさん
2016/11/05(土) 13:35:55.87 ID:3jWRFMI3
> RubyはHashをそんなに使わないしね
では何を使うんですか?と聞かれたら
オブジェクト(クラスのインスタンス)って答えるのだろうけど
JavaScriptではハッシュとオブジェクトは同じもので

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

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

foo(new A())

みたいなことも出来ますよ。
なのでHashをそんなに使わないっていうのは
あまり理由になっていません。
147 :
デフォルトの名無しさん
2016/11/05(土) 13:39:51.44 ID:3jWRFMI3
Rubyでもみたいな事したいってあると思いますがね。

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

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

keyword, page, limit = request.params
148 :
デフォルトの名無しさん
2016/11/05(土) 13:55:01.42 ID:g4s/HAgH
>>146
そうですか、へーって感じですね
あとはJavaScriptスレでどうぞ
ここは煽りスレじゃないんで
149 :
デフォルトの名無しさん
2016/11/05(土) 15:03:39.50 ID:3jWRFMI3
煽りじゃなくて質問ですよw

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

let func = i => i+1

func(1) // 2
150 :
デフォルトの名無しさん
2016/11/05(土) 15:12:29.51 ID:fKvWQoRX
>>147
そういうのはRubyの言語仕様でやるのではなくてRailsなどがそういったオブジェクトを用意すべきだと思う。
151 :
デフォルトの名無しさん
2016/11/05(土) 15:23:37.67 ID:3jWRFMI3
>>150
言語仕様でやらないと無理だと思うよ。

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

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

ちなみにPerlの場合は、

sub foo { wantarray ? 1 : 2}

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

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

wantarrayでどの型(正確に言うとコンテキスト)が要求されているかを
foo関数の中で知ることができるのだけど、同じように「どの変数名に代入しようとしているか?」を
知ることが出来ないと、引数省略して変数に入れることは出来ない。
152 :
デフォルトの名無しさん
2016/11/05(土) 16:01:00.44 ID:9rWJk3qM
>>149
初心者だけど
Procになるのかな

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

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

>>151
便利そうだけどRubyにはないっぽい?
あと言語仕様でこうあるべきだイヤそうじゃない
みたいなのをここでやられても困るよ
153 :
デフォルトの名無しさん
2016/11/05(土) 16:07:31.56 ID:3jWRFMI3
>>152
言語仕様の話を始めたのは俺じゃないし。
言語仕様でなければ実現不可能だろうけど
別に言語仕様である必要はない。

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

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

ところでクロージャーみたいなのの話はどうでもいいんだろうか
俺答え損だった?
155 :
デフォルトの名無しさん
2016/11/05(土) 16:26:05.09 ID:3jWRFMI3
> 俺答え損だった?

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

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

そういうのは別スレでやれ
157 :
デフォルトの名無しさん
2016/11/05(土) 16:36:52.31 ID:p7aXJL/r
っ CoffeeScript
158 :
デフォルトの名無しさん
2016/11/05(土) 16:57:35.17 ID:u9ZZUUBm
>>145
いつの話だよ
今のRubyはRailsのせいでHashまみれの糞ビッチだよ
159 :
デフォルトの名無しさん
2016/11/05(土) 17:18:22.74 ID:3jWRFMI3
>>156
> 質問じゃないじゃん

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

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

それとも回答にコメントしたらいけないって
言いたいのかな?
160 :
デフォルトの名無しさん
2016/11/05(土) 17:25:06.81 ID:3jWRFMI3
>>156
> JavaScriptに有利な例題だけあげてJavaScritpマンセーしてるだけじゃん

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

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

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

だから単に俺が見つけられないものを質問しているだけなんだが、
それが結果的にRubyでは無理なことになってしまってるだけだよ。
161 :
デフォルトの名無しさん
2016/11/05(土) 17:42:40.29 ID:u9ZZUUBm
lambdaは->とも書ける
俺は書く位置が気持ち悪くて大嫌いだけどね
Rubyが独立した関数式を持たないのは有名な欠点として昔から言われてることなので、今更言われてもそうだね不便だねとしか
162 :
デフォルトの名無しさん
2016/11/05(土) 17:55:37.24 ID:3jWRFMI3
http://qiita.com/sudahiroshi/items/c51618dec0f56a54670e

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

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

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

そんなこと言われてもね。今更Ruby初心者といわれても
始めたばかり。どうしろと?
163 :
デフォルトの名無しさん
2016/11/05(土) 18:18:33.92 ID:9rWJk3qM
>>162
callは略せるって上に書いたでしょ
lambdaの方はしらんかったけどたしかにキモいなこれ
callの方も結構ヘンだけど
あと余計なことには反応しなくて良いんだってば
164 :
デフォルトの名無しさん
2016/11/05(土) 18:20:42.36 ID:VSrxz5YG
あなたRubyやんないほうがいいんじゃない?
まあ仕事でRubyのプロジェクトに入っただけかもしれないけど。
165 :
デフォルトの名無しさん
2016/11/05(土) 18:45:31.46 ID:M1fQHNFf
喧嘩すんなよRubyが糞なのは普遍なんだから

わかったならPython使え情弱どもが
166 :
デフォルトの名無しさん
2016/11/05(土) 18:49:13.91 ID:szmfxvT7
> 普段JavaScriptで書いていて、JavaScriptでもっと短く書くことができる。

フフッてなったw
167 :
デフォルトの名無しさん
2016/11/05(土) 19:25:21.38 ID:HMFIz/40
[5,2,3].sort # =>
ってソースに書いておくと
[5,2,3].sort # => [2, 3, 5]
みたいに置き換えてくれるツールがあったら教えてください
168 :
デフォルトの名無しさん
2016/11/05(土) 22:43:25.54 ID:LJBtWuSU
存在するファイルは上書きせずにファイルをコピーってどうやるの?
169 :
デフォルトの名無しさん
2016/11/05(土) 22:57:00.73 ID:CJv/XjYq
ダイヤお姉ちゃんに頼む
170 :
デフォルトの名無しさん
2016/11/05(土) 23:00:12.07 ID:LJBtWuSU
KurosawaDaiya.copy(from, dest)
#=> NameError: uninitialized constant KurosawaDaiya

駄目でした
171 :
デフォルトの名無しさん
2016/11/06(日) 00:59:43.52 ID:Mq0g4tm5
それはお姉ちゃんをコピーしようとしてるのでは
172 :
デフォルトの名無しさん
2016/11/06(日) 03:07:23.22 ID:8WadcDvl
foo(
 a: data['a'],
 b: data['b'],
 c: data['c'],
 d: data['d']
)

これをもっと短く書く方法を教えて下さい!
173 :
デフォルトの名無しさん
2016/11/06(日) 09:09:40.26 ID:UB8ayWaX
>>147
Effective Ruby の項目10に書いてあるけど、

構造化データを扱う際、Hashの配列よりも、
クラスまたは、Struct(簡易クラス、クラスジェネレータ)のような専用の型を、使った方がいい

data[:name]
キー名のような実装の詳細が、隠蔽されず表に出てくる。
また、存在しないキーは、nilとなる

Person = Struct.new(:name, :address) #定数に代入
data = Person.new("foo", "fugafuga")
data.name

Structでは属性になるから、getter, setter も付いているし、
存在しない属性名でアクセスすると、NoMethodErrorになる

JavaScript(ES3)では、Hashが無いから、その代わりに、
Objectのプロパティを使っているので、obj.__proto__ という、
たまたま実行環境が使っている、キー名で上書きすると、誤動作する

だから、キーを作る際、__proto__かどうか、チェックしないといけないので不便
174 :
デフォルトの名無しさん
2016/11/06(日) 09:10:35.91 ID:6TZQqHcY
>>172
Rails使ってるなら

foo(data.symbolize_keys)
175 :
デフォルトの名無しさん
2016/11/06(日) 09:28:36.42 ID:rGVVvSQ9
foo(**data)
176 :
デフォルトの名無しさん
2016/11/06(日) 12:09:01.31 ID:8WadcDvl
>>174 >>175
dataにはa, b, c, d 以外も含まれているので
それではだめなのです。
177 :
デフォルトの名無しさん
2016/11/06(日) 13:13:30.71 ID:CGfTBBGj
>>176
slice
178 :
デフォルトの名無しさん
2016/11/06(日) 13:37:48.19 ID:+j3xqinH
こんなもんfooのほうを変えるべきだろう
179 :
デフォルトの名無しさん
2016/11/06(日) 13:41:52.43 ID:6TZQqHcY
>>176
後出しでそんなこと言われてもねぇ…
そもそも foo で何をやりたいかにもよるし
180 :
デフォルトの名無しさん
2016/11/06(日) 14:28:52.63 ID:8WadcDvl
あ、sliceで出来たのでもういいです
またなんかあったら聞きます
181 :
デフォルトの名無しさん
2016/11/06(日) 15:57:30.38 ID:6TZQqHcY
> あ、sliceで出来たのでもういいです
こういう余計な一言はやめた方がいいよ
182 :
デフォルトの名無しさん
2016/11/06(日) 16:01:04.07 ID:YPGx/bgn
2ちゃんではよくあること
あいさつ代わり
183 :
デフォルトの名無しさん
2016/11/06(日) 18:23:47.88 ID:Mq0g4tm5
Rubyでは代入演算子を再定義できないというのを知らなかったんですが
ではこうしたい場合はどうするんでしょう?

class Hoge
 attr_accessor(:array, :number)
 # いろいろ
end
みたいなClassがあったとして

hoge = Hoge.new
hoge = piyo

としたときにpiyoがどんなものかによって処理を分けたいのです
(具体的にはpiyoがArrayならarrayに入れる、 Hogeと似たようなものならアトリビュートをコピー、とか)

例えばinitialize_copyかなんかを上手く作ればそうなるよみたいな都合のいい話はないですか?
それとも素直にHogeにset(other)みたいなメソッドを定義するべきでしょうか
184 :
デフォルトの名無しさん
2016/11/06(日) 18:32:02.92 ID:NZCpJm/D
そんな馬鹿みたいなクラスは作らないから答えようがない
185 :
183
2016/11/06(日) 19:02:10.01 ID:Mq0g4tm5
Rubyだと全部参照渡しだし = なんかは使わなそうですね
素直にメソッド作ります
186 :
デフォルトの名無しさん
2016/11/08(火) 01:53:05.89 ID:M6Rn2+El
確かRubyには、scala, Haxe みたいな、switchでのパターンマッチが無いよな

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

ちゃんと設計すれば、継承・インターフェース・ダックタイピングのオーバーロードで、
自然と型による分岐が無くなるはず
187 :
デフォルトの名無しさん
2016/11/08(火) 03:24:23.45 ID:107xoCwk
黒アワビ濡れ濡れお色気ビラビラ仕様のRuby
公開おなほ
すとーるまんこはかきたれ
188 :
デフォルトの名無しさん
2016/11/08(火) 06:17:48.12 ID:ykrZTa7U
> 0001: 訪問:2016/11/06(日) 14:32
> 会社A
> 担当者BB
> 0002: 取引先:2016/11/07(月) 09:36
> 企業CCC
> 相談人DDDD EEEEEの件で契約

というtxtファイルを

> log=会社A\t担当者BB
> log=企業CCC\t相談人DDDD\tEEEEEの件で契約

という形に置換して出力するバッチを作りたいと思っています。

> Rubyはじめました: rubyでファイルの内容の一部を置換する
http://myruby.seesaa.net/article/125577047.html
こちらを参考に

> f=File.open("input.txt","r:utf-8")
> buffer = f.read();
> p buffer
> # 中身を変換
> buffer.gsub!(/^[\d]{4}\:.*\:[\d]{2}\n/, "log=")
> p buffer
> f=File.open("output.txt","w:utf-8")
> f.write(buffer)

を書いてみたのですが、以下の置換も一つの.rbファイル内で続けて動作させるにはどうすればいいでしょうか
よろしくお願いします

buffer.gsub!(/\n/, /\t/)
buffer.gsub!(/\tlog\=/, /\nlog\=/)
189 :
デフォルトの名無しさん
2016/11/08(火) 11:49:52.31 ID:ZBAGJV1u
つぎのかたどうぞ
190 :
デフォルトの名無しさん
2016/11/08(火) 14:05:34.46 ID:LTPhc021
特定のウェブページを毎日チェックして、アルバイト、居酒屋 など、決まった文字列が掲載されてたら通知するandroidアプリを作りたいんですが、こういうの何て言いますか?
191 :
デフォルトの名無しさん
2016/11/08(火) 14:21:37.68 ID:RD7eA5MT
バイト探し
192 :
デフォルトの名無しさん
2016/11/08(火) 14:26:41.88 ID:ZBAGJV1u
スクレイピング
ボット
PIM
193 :
デフォルトの名無しさん
2016/11/08(火) 15:04:04.37 ID:LTPhc021
>>192ありがとうございます
194 :
デフォルトの名無しさん
2016/11/08(火) 16:52:52.70 ID:ic1oOtKi
ちなみにスクレイピングは逮捕例もあるよ
195 :
デフォルトの名無しさん
2016/11/08(火) 19:51:30.63 ID:M6Rn2+El
>>188
> buffer.gsub!(/^[\d]{4}\:.*\:[\d]{2}\n/, "log=")
> p buffer
この後に、

buffer.gsub!(/\n/, /\t/)
p buffer

buffer.gsub!(/\tlog\=/, /\nlog\=/)
p buffer

エラーが起こった際、デバッグしにくいけど、
メソッドチェーンで、どんどんつなげていく事もできる

buffer.gsub!(/^[\d]{4}\:.*\:[\d]{2}\n/, "log=")
.gsub!(/\n/, /\t/)
.gsub!(/\tlog\=/, /\nlog\=/)
196 :
デフォルトの名無しさん
2016/11/08(火) 19:55:50.26 ID:ykrZTa7U
>>195
ありがとうございます!!!!!!!!!
197 :
デフォルトの名無しさん
2016/11/08(火) 22:18:28.32 ID:ykrZTa7U
>>195
無事に動きました!
助かりました、ありがとうございます
198 :
デフォルトの名無しさん
2016/11/10(木) 06:58:06.00 ID:MLyRIdhy
基本的な部分なのですが
hashオブジェクトをto_aした場合に返値される配列の順序は
hashオブジェクトにキーを設定した順序でいいのですか?
199 :
デフォルトの名無しさん
2016/11/10(木) 08:00:08.45 ID:+0vOVL7/
極端に古いバージョンでない限りはそれでいい
200 :
デフォルトの名無しさん
2016/11/10(木) 12:26:51.61 ID:Sha7NYgb
実装はそうなってるけど仕様で保証されてたっけ?
201 :
デフォルトの名無しさん
2016/11/10(木) 13:33:15.27 ID:dxAJlx69
今のバージョンは保証してる
202 :
デフォルトの名無しさん
2016/11/10(木) 14:27:24.56 ID:LGdObFSz
どうゆう理由でハッシュキーの順序を保証するようになったんかね
他の言語では基本順序は保証されていないよね(´・ω・`)
203 :
デフォルトの名無しさん
2016/11/10(木) 14:47:43.59 ID:dxAJlx69
>>202
>どうゆう理由で

エンジンが変わった
204 :
デフォルトの名無しさん
2016/11/10(木) 15:04:32.11 ID:o6QUnq5t
順序に依存したコードを書きたい人の声が大きかったから
205 :
デフォルトの名無しさん
2016/11/10(木) 22:33:15.81 ID:+0vOVL7/
順序を保持するためだけにハッシュ表とは別にわざわざ無駄な線形リストを持ってるんだぞ
決して、たまたま順序通りになるようなアルゴリズムを選んだとか、
順序通りになるようにハッシュ表の実装を工夫したとかではなく、無理に明示的に順序を持たせてある
206 :
デフォルトの名無しさん
2016/11/10(木) 23:18:15.82 ID:pEVMYV3p
一般的には、Hashには2種類ある

Hash は順序なし。
Ordered_Hash は追加した順番で、順序あり
207 :
デフォルトの名無しさん
2016/11/10(木) 23:44:37.48 ID:+0vOVL7/
順序付きのハッシュ表自体が一般的ではないだろ
RubyのHashは>>205で書いたとおりハッシュ表とは無関係に順序持たせてるし、
.NETのSortedDictionaryみたいに辞書の実装で要素をキーでソートされた状態で持つのはよくあるけど
あれはハッシュ表じゃなくて二分木やバイナリサーチだし
208 :
デフォルトの名無しさん
2016/11/11(金) 03:16:24.93 ID:wVch1D/r
yield の意味が理解できません
例えば下記ってどんなことしてるんでしょうか?

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

def parse(text)
m = @regexp.match(text)
unless m
yield nil, nil
return
end

r = {}
m.names.each do |name|
if value = m[name]
r[name] = value
end
end

time, record = convert_values(parse_time(r), r)
yield time, record
end

yield nil, nil

yield time,record

二つあるけどさっぱりです
209 :
デフォルトの名無しさん
2016/11/11(金) 07:13:41.60 ID:LSv6brFn
>>208
ブロック付きでこのメソッドを呼ぶと、yield のタイミングでブロックが実行される

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

という風にすると、yield の内容が表示される
210 :
デフォルトの名無しさん
2016/11/11(金) 08:58:07.26 ID:ENznHnYU
Rubyのyieldはただのコールバック関数呼び出しの
シンタックスシュガーだからなぁ。
JavaScriptでかけばこんな感じだよ。

a = [1, 2, 3, 4]

forEach(a, function(i) {
 return i * 2
})

function forEach(arr, block) {
 var ret = []
 for (var i = 0; i < arr.length; i++) {
  ret[i] = block(arr[i])
 }
 return ret
}

あとは書き方程度の問題。ブロックが引数の最後の一つである場合に限り
引数のblockコールバックを省略することが出来て、代わりにyieldを使って
そのコールバックが呼び出せるってだけ。
211 :
デフォルトの名無しさん
2016/11/11(金) 09:55:02.27 ID:e7T2VXvj
pythonのyieldとはだいぶ違ってた
212 :
デフォルトの名無しさん
2016/11/11(金) 14:39:07.80 ID:kzNknik+
初めて書き込みます。windowsで、rubyをインストールしました。helloruby.rbと書くと、内部コマンドまたは〜というエラーメッセージが出ます。何が原因だと思いますか?
213 :
デフォルトの名無しさん
2016/11/11(金) 18:33:52.72 ID:+0sZIajy
>>212
エスパーするとパス通せ
214 :
デフォルトの名無しさん
2016/11/11(金) 18:58:09.57 ID:XRaelh1g
>>213
返信ありがとうございます。
ruby -vではきちんとバージョンが表示されるのに、helloruby.rbと書くと内部コマンド〜とエラーメッセージが出ます。この場合どのようにしたら良いのでしょうか?自分なりに調べたのですが全く情報が出てこず…。初心過ぎる質問で申し訳ありません。
215 :
デフォルトの名無しさん
2016/11/11(金) 19:01:01.28 ID:UQPlBidt
どのwindowsにどのruby入れてどんなエラーが出たか全部書いて
216 :
デフォルトの名無しさん
2016/11/11(金) 20:13:58.18 ID:JZCe9Y2P
最近の Windows は .rb を実行可能に出来るん?
217 :
デフォルトの名無しさん
2016/11/11(金) 20:18:26.25 ID:UQPlBidt
それは普通に出来る
218 :
デフォルトの名無しさん
2016/11/11(金) 20:55:45.18 ID:xrgRbR8m
ruby helloruby.rb かな?
219 :
101
2016/11/11(金) 21:53:06.05 ID:goTatCVE
毎日定時帰りしたら首になりそう

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

■月給20万〜
※経験・スキルを考慮のうえ、当社規定により優遇いたします。
※上記給与に、見込残業代35時間分43,000円分を含みます。
 (見込残業代 月35時間分を超過した場合は別途支給)
220 :
デフォルトの名無しさん
2016/11/11(金) 23:39:57.27 ID:N42G00o6
43,000 / 1.25 / 35 ≒ 980
221 :
デフォルトの名無しさん
2016/11/11(金) 23:46:59.86 ID:LSv6brFn
この時代にjQueryはないわー
222 :
デフォルトの名無しさん
2016/11/12(土) 03:08:59.71 ID:SNnuUkOH
月35時間残業して給料20万…
しかも手取りですら無いという
これはヤバイわ
223 :
デフォルトの名無しさん
2016/11/12(土) 03:41:54.01 ID:fAGx8Up8
>>221
RailsでjQuery以外を使おうと思ったら苦難の道で?w
224 :
デフォルトの名無しさん
2016/11/12(土) 03:52:09.03 ID:fAGx8Up8
訂正
RailsでjQueryの代わりに導入すべきと言われるフレームワークを使おうと思ったら苦難の道やで?

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

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

その分をJavaScritフレームワークで実現するんだけど、Railsにはそれらと組み合わせる機能がかけている。
RailsでJavaScriptのテストはどうやれば良いんだ?レベル。
225 :
デフォルトの名無しさん
2016/11/12(土) 04:16:39.20 ID:eAhK3KJp
朝っぱらから気合い入った長文乙
226 :
デフォルトの名無しさん
2016/11/12(土) 04:22:33.43 ID:6wPviZ3t
>>219
35時間残業して43,000円にしかならないのか
227 :
デフォルトの名無しさん
2016/11/12(土) 04:25:14.43 ID:6wPviZ3t
>>224
どうせなんでもjsonで出し入れするんだから
viewなんていらないしrailsである必要すらない
228 :
デフォルトの名無しさん
2016/11/12(土) 04:33:26.95 ID:fAGx8Up8
>>225
あ、朝?

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

こっちは会社まで徒歩でも30分。出社時間が一応10時で(基本的に残業なし)
Slackに書くだけで私用を理由に自宅作業したり早く退社してもOK
遅刻とかそういう概念もないんでw
229 :
デフォルトの名無しさん
2016/11/12(土) 04:36:08.01 ID:fAGx8Up8
>>227
> viewなんていらないしrailsである必要すらない

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

メインはJavaScriptで、その背後にあるサーバーは
なんでもいいという時代かな。
230 :
デフォルトの名無しさん
2016/11/12(土) 04:55:24.42 ID:W5RGEoAt
231 :
デフォルトの名無しさん
2016/11/12(土) 05:00:57.16 ID:fAGx8Up8
>>230
世の中にはかわいそうな会社があるねとしか
見てなかったwww
232 :
デフォルトの名無しさん
2016/11/12(土) 07:15:36.64 ID:UXa3WItJ
>>229
だったらなんでRubyスレを覗いてるんだろうか?
嫌いなRubyを叩いて憂さ晴らしをしたいのかな?
233 :
デフォルトの名無しさん
2016/11/12(土) 07:54:30.01 ID:SNnuUkOH
ちょっと上で暴れてたRuby使わなきゃならなくなったJS大好きなロリコンだろ
もう触るなよ
234 :
デフォルトの名無しさん
2016/11/13(日) 11:27:30.83 ID:8tp89YW7
本屋行ったらPython本増えたなあ
Rubyで機械学習って本書いたら…売れねえか

機械学習や人工知能という神風が吹いて国内でもPythonに完敗なんだろうな
235 :
デフォルトの名無しさん
2016/11/13(日) 11:52:13.63 ID:hnH+OR8d
マルチ誰得
236 :
デフォルトの名無しさん
2016/11/13(日) 12:15:30.12 ID:T5+9PjbV
>>234
もう勝負は着いてるんだからみっともないことはやめなさい
この国のITはガラパゴス化した技術に拘って世界に取り残されるという失敗をさんざん繰り返してきたというのに、またその例を増やす気か
237 :
デフォルトの名無しさん
2016/11/13(日) 15:44:25.64 ID:e+lvJCbH
久々にリアル本屋行ってみたら
Rubyの棚よりPythonの棚の方が大きくなってた
胸熱

データサイエンティストのみなさんのおかげですωωω
238 :
デフォルトの名無しさん
2016/11/13(日) 20:44:27.50 ID:5YmDMkhP
Rubyってコンパイル型にできないの?
例えば Cなら、 cc hoge.c | ./a.out にすればインタプリタ型になるし、
実行ファイルも残る。
Rubyではコンパイルと実行を分割して実行ファイルを残す方法ってないのかな。
239 :
デフォルトの名無しさん
2016/11/13(日) 20:59:12.44 ID:miyqCymn
おます
240 :
デフォルトの名無しさん
2016/11/14(月) 02:10:30.72 ID:XIKx0ys+
>>219
同じことしているのに ニートの俺には給与ないんだけど・・・
あと最近はSwiftでスマホアプリ作って遊んでる

こんなの仕事でやったら闇落ちしそうなので プログラマとして働くつもりないけど
まぁそれ以前に、実務経験ないから雇ってもらえないねん _(:3 」∠)_=3
241 :
デフォルトの名無しさん
2016/11/14(月) 04:04:12.28 ID:OCTkBwGI
Rubyはいいと思うが、なかなか覚えられない。結局ちょっとした処理をしようと
すると、C#とかを引っ張り出してくる。Shell感覚で使えたら最高だと思うが
普通はmouseだし、Tool系はTCLだし。
Rubyって主にどういう場面でつかうんだ?
242 :
デフォルトの名無しさん
2016/11/14(月) 05:24:04.01 ID:esjkHDa1
>>240
ハローワークに、プログラミングを未経験・独学で勉強している人の募集も一杯ある
243 :
デフォルトの名無しさん
2016/11/14(月) 06:41:55.09 ID:aL/Lu1lD
>>241
今のRubyはRailsのDSLだよ
知らなかったの?
244 :
デフォルトの名無しさん
2016/11/14(月) 06:55:39.43 ID:5ieSClDh
>>241
刑務所で講習用
245 :
デフォルトの名無しさん
2016/11/14(月) 07:01:01.48 ID:U3HMZCux
>>241
Unix 上でちょっとしたことをしたいとき用言語としてよく使うよ
まさに昔の Perl の代替
246 :
デフォルトの名無しさん
2016/11/14(月) 07:13:45.48 ID:aL/Lu1lD
Rubyは入ってなかったり入っててもバージョンが古いことが多いからなあ
Perlの代わりに使うのは厳しいわ
247 :
デフォルトの名無しさん
2016/11/14(月) 07:37:53.70 ID:U3HMZCux
>>246
手元でやるだけのちょこっとしたことだから、ポータビリティは必要ない
ごく一部の例でいえば、何かが吐き出したlogファイルをサクッと解析させたりとかね
248 :
デフォルトの名無しさん
2016/11/14(月) 08:03:38.77 ID:esjkHDa1
Ruby, Groovy は、DSL向き。
SASSも、Ruby

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

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

また、Rubyから静的言語の、Elixir, Haxe, Kotlin などへ移りやすい
249 :
デフォルトの名無しさん
2016/11/14(月) 10:42:07.67 ID:AJSSB3HL
>>215

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

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

と出ます。
250 :
デフォルトの名無しさん
2016/11/14(月) 10:42:37.62 ID:AJSSB3HL
認識させるにはどうしたらいいのでしょうか?
251 :
デフォルトの名無しさん
2016/11/14(月) 11:01:12.14 ID:CNrivUWZ
perlの代わりならpython

rubyは見た目perlに似てるだけでperlの代わりにはならない
252 :
デフォルトの名無しさん
2016/11/14(月) 11:03:12.46 ID:CNrivUWZ
>>250
mingw/msys入れろ
253 :
デフォルトの名無しさん
2016/11/14(月) 11:28:33.20 ID:d18MPt7T
>>249
ruby 〜スクリプトのパス/helloruby.rb
ってやってる?
254 :
デフォルトの名無しさん
2016/11/14(月) 11:36:27.20 ID:igQzh1Us
255 :
デフォルトの名無しさん
2016/11/14(月) 11:40:58.22 ID:igQzh1Us
256 :
デフォルトの名無しさん
2016/11/14(月) 11:49:25.61 ID:igQzh1Us
コマンドプロンプトを開いて次の2行を実行

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

・パスは適切なものを選ぶ
・管理者アカウントで実行 (runas /administrator とかでも可能)
257 :
デフォルトの名無しさん
2016/11/14(月) 12:42:24.19 ID:XIKx0ys+
>>242
うち 田舎やけん
そんなハイカラな仕事する会社ないんよ
258 :
デフォルトの名無しさん
2016/11/14(月) 18:36:58.46 ID:6IAxrkLB
Ruby → JavaScript, Python とかの互換が簡単にできて、
これらを取り込んでしまえばRubyにもそれなりの存在意義は
ある気がするな。逆は難しいだろうから。
259 :
デフォルトの名無しさん
2016/11/15(火) 02:36:49.43 ID:APHjFyJV
Haxe(ヘックス)はOSSで、JSに型チェックを付けたような言語で(altJS)、
JS(ES5), Flash, PHP, C++, Java, C#, Python に書き出せる。
Windows8.1対応。IDEは、FlashDevelop

このサイトで、ブラウザでプログラミングして、実行できる
Try Haxe !
try.haxe.org/

Haxeプログラミング入門、尾野政樹、2015

Haxeからも、Rubyへ変換できない。
何かの言語から、Rubyへ変換できればなあ
260 :
デフォルトの名無しさん
2016/11/15(火) 04:34:06.60 ID:sHZUXp5G
>>259
(*'ω'*)それを君が開発すればイイジャマイカ スルメイカ
261 :
デフォルトの名無しさん
2016/11/15(火) 04:48:52.90 ID:ulUg8AFG
>>259
Julia
262 :
デフォルトの名無しさん
2016/11/17(木) 21:43:20.86 ID:mx0eMjxm
今ってあれだよなElixir待ちって感じだよな
Pythonとの勝敗はほぼ付いてしまった。
ElixterはRuby互換あるといいな。
263 :
デフォルトの名無しさん
2016/11/17(木) 23:34:45.90 ID:iGNJFpBr
静的型検査のない関数型とかゴミカスだろ
コードの正しさが自明という関数型最大のメリットが半減してる
264 :
デフォルトの名無しさん
2016/11/18(金) 16:09:55.66 ID:vbdBJsNN
○ erlang
× elixir

erlangの良いところをつぶしたのがelixir
265 :
デフォルトの名無しさん
2016/11/18(金) 16:38:53.40 ID:1sC7EnMR
じゃあRuby3待ちも加えよう
266 :
デフォルトの名無しさん
2016/11/20(日) 15:31:53.51 ID:Nkcoggcj
Rubyの資格勉強をしていて
getsというのはダンディ板野なのではなく、
get-stringのことなのだと分かった。
267 :
デフォルトの名無しさん
2016/11/21(月) 09:22:12.04 ID:yuIFR8QG
>>219
こんな規則なんの効力もないのに
268 :
デフォルトの名無しさん
2016/11/21(月) 09:37:40.89 ID:0N8j/p/K
>>248
> Ruby, Groovy は、DSL向き。

どこからどう見てもRubyのコードなのに
それをDSLとか呼ぶのやめようぜw
doとか出てきた時点で萎える
269 :
デフォルトの名無しさん
2016/11/22(火) 11:31:16.12 ID:bGBSJtcd
Windows7-Home Ruby 1.8.6

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

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

動作自体は上手く行ったのですが、動作時に「ピッ!」と音が毎回鳴ります。
これは何を意味しているのでしょうか?
270 :
デフォルトの名無しさん
2016/11/22(火) 11:32:44.53 ID:Pvp5yOqg
バイナリファイルなら0x07で音がでる
271 :
269
2016/11/22(火) 11:44:14.33 ID:bGBSJtcd
>>270
早速どうも。 バイナリファイルの性(さが)なんですね
272 :
デフォルトの名無しさん
2016/11/22(火) 11:56:40.62 ID:9QZ/pTkg
ベル文字(ベルもじ、BEL: bell character)またはベルコード(bell code)とは、制御文字の一種である

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

Rubyは実行環境に、RubyVMを使った、1.9以降を使った方がいい
273 :
269
2016/11/22(火) 12:10:26.36 ID:bGBSJtcd
>>272
なるほど。 新しいRubyを使ってみます。 今のRuby1.8.6 は応急のテスト用なので
274 :
デフォルトの名無しさん
2016/11/22(火) 14:28:44.44 ID:3UDTrTQV
sprintf("%04d",15)の4の部分に変数を使いたい場合ってどうしたらいいんでしょう?
275 :
デフォルトの名無しさん
2016/11/22(火) 14:46:36.63 ID:E5xR5zcu
printf("%0*d", 4, 15)
276 :
デフォルトの名無しさん
2016/11/22(火) 15:06:37.29 ID:3UDTrTQV
>>275
できました。ありがとうございます。
よく見たら書いてありました (;^_^A
https://docs.ruby-lang.org/ja/latest/doc/print_format.html
277 :
デフォルトの名無しさん
2016/11/22(火) 22:40:50.60 ID:bGBSJtcd
Windows7-Pro Ruby 2.3.1 (x64)

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

ここで、ショートカットのアイコンを Ruby 初心者スレッド Part 59 [無断転載禁止]©2ch.netYouTube動画>1本 ->画像>6枚
の宝石型にしたいのですが、この画像はどこに保存されているのでしょうか?
あるいはWebのどっかでDLできますか?
278 :
デフォルトの名無しさん
2016/11/22(火) 23:08:14.78 ID:qW+6ZAFd
googleで画像検索してみたら?
279 :
277
2016/11/22(火) 23:12:23.05 ID:bGBSJtcd
>>278
したけど無かったです。 Windowsのアイコン一覧にも無かった
280 :
デフォルトの名無しさん
2016/11/22(火) 23:27:14.21 ID:qW+6ZAFd
Ruby 初心者スレッド Part 59 [無断転載禁止]©2ch.netYouTube動画>1本 ->画像>6枚 を右クリックして保存でもいいな
281 :
デフォルトの名無しさん
2016/11/22(火) 23:50:51.41 ID:VrepQFzl
ruby.exeに埋め込まれてた気がする
アイコン選ぶときにexeって選べなかったっけ?
無理ならResource Hackerかなんかで抽出
282 :
デフォルトの名無しさん
2016/11/23(水) 00:00:26.69 ID:fCj7qIPS
283 :
277
2016/11/23(水) 00:34:35.33 ID:XRl7gwFc
>>281
ショートカット用です


>>282
http://uproda.2ch-library.com/9542717c9/lib954271
http://uproda.2ch-library.com/9542717c9/lib954271.ico
共に見れないです。 というかDLキーを入力する欄が無い
284 :
デフォルトの名無しさん
2016/11/23(水) 01:06:25.90 ID:tyNVpJn+
285 :
デフォルトの名無しさん
2016/11/23(水) 02:10:56.09 ID:tyNVpJn+
>>277
http://u1.getuploader.com/sample/download/11532/sample_11532.zip
rubyinstaller.org の画像を使って作ってみた 👀
Rock54: Caution(BBR-MD5:09d9d5ea29ae030fc5f15f1492842ada)
286 :
277
2016/11/23(水) 02:25:08.36 ID:XRl7gwFc
>>285
あんがと
287 :
デフォルトの名無しさん
2016/11/24(木) 13:46:49.29 ID:SaghWnm/
replace.rbを実行すると、

source.datファイル
文字
#kokokara
書き換えたい文字
#kokomade
文字
て感じでコメントで囲まれた部分のみ書き換えたい。
どうすればいい?
288 :
デフォルトの名無しさん
2016/11/24(木) 14:14:50.38 ID:ZpQTd+Xn
buff = ''
File.open('source.dat'){|fh| buff = fh.read.sub( /(?=#kokokara)(.*?)(?>#kokomade)/m ){ '書き換え' } }
289 :
デフォルトの名無しさん
2016/11/24(木) 14:38:01.91 ID:SaghWnm/
ありがとうございます
290 :
デフォルトの名無しさん
2016/11/24(木) 18:44:14.32 ID:v6KW5pDh
Timeをnewしたり加減算する時に都度丸めずとも
はじめから分未満を丸めるgemとかありますか?
291 :
デフォルトの名無しさん
2016/11/24(木) 23:46:30.89 ID:g1cJ7kXy
Railsならメソッドチェーンで、1週間前・後を、
1.weeks.ago, 1.days.from_now

など、色々な表現ができるから、探してみれば?
292 :
デフォルトの名無しさん
2016/11/25(金) 00:39:15.70 ID:6I1tAUNu
自前でTimeにモンキーパッチ
293 :
288
2016/11/25(金) 15:35:05.30 ID:K8sLqeeD
>>287
ごめんなさい、大嘘書いてた
(?=...)(.*?)(?>...) は間違いで、
(?<=...)(.*?)(?=...) として後読みと先読みで囲って、$1 に書き換え前の文字列
buff = File.open('source.dat'){|fh| fh.read.sub( /(?<=#kokokara\n)(.*?)(?=#kokomade)/m ){ "書き換え\n" } }
マーカーを消したかったら
buff = File.open('source.dat'){|fh| fh.read.sub( /#kokokara(.*?)#kokomade/m ){ "書き換え" } }
294 :
デフォルトの名無しさん
2016/11/26(土) 15:01:36.97 ID:mx1WdaLu
>>293
>( /(?<=#kokokara\n)(.*?)(?=#kokomade)/m )

^ を付けて、#kokokara, #kokomade を、行頭に限定した方がいいかも
( /(?<=^#kokokara\n)(.*?)(?=^#kokomade)/m )
295 :
デフォルトの名無しさん
2016/11/28(月) 17:29:57.45 ID:S7Gjt5Bx
【12月14日】    日本発の世界恐慌!   【米利上げ】


12月14日に利上げをしたら、世界中の株価暴落になる、100%間違いない。


終いには政府にも支えることができなくなり、どん底に落ちていきます。日本政府がアメリカ国債の25%を引き出すと世界経済が破綻し、マイト レーヤは出現するでしょう。マイト レーヤが公に現れるにつれてUFOが、とてつもない数で姿を表すでしょう。


タクシー運転手(65)が意識失い死亡 千葉http://headlines.yahoo.co.jp/hl?a=2016112

認知症の過程は放射能汚染によって加速します。問題は、多くの人々が放射能の影響で死んでいるのに、日本政府が何も認めないことです。マイト レーヤは原発の閉鎖を助言されます。非常に間もなくマイト レーヤをテレビで見るでしょう。彼は「匿名」で働いております。
296 :
デフォルトの名無しさん
2016/11/28(月) 22:42:18.84 ID:padn7mYh
yield についてドラえもんを例に説明してくれ。
297 :
デフォルトの名無しさん
2016/11/30(水) 20:00:09.42 ID:PNa3/H0Q
ミニツクが復活している・・・
298 :
デフォルトの名無しさん
2016/11/30(水) 20:06:58.40 ID:SfFGX6QD
ミニツクの初心者用コースってコードの実行例で結構間違いあるよね
ホントの初心者だと迷いそうだわ(´・ω・`)
299 :
デフォルトの名無しさん
2016/11/30(水) 22:11:42.44 ID:0zul0T3a
ENV['my_application_variable'] = '1' if ENV['my_application_variable'].blank?

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

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


条件付き代入みたいなものないかね?
300 :
デフォルトの名無しさん
2016/12/01(木) 07:43:04.07 ID:91ReGJeh
MAV = 'my_application_variable'

ENV[MAV] = '1' if ENV[MAV].blank?
301 :
デフォルトの名無しさん
2016/12/01(木) 09:40:44.58 ID:d1oSzjmi
>>300
二行になってローカル変数が増えてる。
もっとマシな方法ないの?
302 :
デフォルトの名無しさん
2016/12/01(木) 12:11:29.17 ID:5zfWITAP
ENV['my_application_variable'] = '1' when blank
303 :
デフォルトの名無しさん
2016/12/01(木) 21:04:29.89 ID:d1oSzjmi
だめみたいね。ここまでか

irb(main):001:0> ENV['aaa'] = '1' when blank
SyntaxError: (irb):1: syntax error, unexpected keyword_when, expecting end-of-input
ENV['aaa'] = '1' when blank
^
from /usr/bin/irb:11:in `<main>'
304 :
デフォルトの名無しさん
2016/12/01(木) 21:19:40.96 ID:2IFm11I0
rubyのhashは初期値設定できた
305 :
デフォルトの名無しさん
2016/12/01(木) 21:46:59.02 ID:qbmZssP5
呼び出すときにこうするとか
ENV['my_application_variable'].to_s.sub(/\A\z/, '1')

ライブラリで使うみたいだし無理か
306 :
デフォルトの名無しさん
2016/12/01(木) 21:52:22.17 ID:2IFm11I0
ENV.fetch('myhoge', '1')
307 :
デフォルトの名無しさん
2016/12/01(木) 22:53:15.81 ID:3crCXgJS
いいじゃんそれで
他にやることあると思う
308 :
デフォルトの名無しさん
2016/12/01(木) 22:58:11.96 ID:N8O9wUz9
DRYにこだわりすぎてもダメだしな
DRYはメンテナンスしやすくするためのいち手段
手段が目的になってはいけない
309 :
デフォルトの名無しさん
2016/12/02(金) 00:18:59.48 ID:tqwX+tIq
でももしこれが可能ならDRYにするんでしょ?

手段が〜とか出来ないことの言い訳にしか見えないよ。
310 :
デフォルトの名無しさん
2016/12/02(金) 04:38:07.11 ID:RG701yLz
>・空文字でも'1'を入れる必要があるので、||=は使えない。
この条件がある以上は自分で用意するしか無いね
Hashにモンキーパッチでもすればいいよ
311 :
デフォルトの名無しさん
2016/12/02(金) 06:57:28.44 ID:8YvcaX3X
というか元々の仕様上堂々と2行分の処理だよね
勝手に「こんなの簡単でしょ1行でサクッとできるでしょ」とか言われてもギリっと歯を噛むしか
312 :
デフォルトの名無しさん
2016/12/02(金) 07:15:46.16 ID:ODJLJCqj
つか、環境変数が空文字列ってありえるのか?
設定されてない場合は nil が返るはずなんだが…

$ HOGE=""
$ ruby -e 'p ENV["HOGE"]'
nil
313 :
デフォルトの名無しさん
2016/12/02(金) 08:02:05.09 ID:JTKNeiyC
>>312
それシェル変数。export しないと子プロセスに渡らない。

ついでに言うとスペース一個とかでも blank? は真になる。
314 :
デフォルトの名無しさん
2016/12/02(金) 15:45:28.28 ID:ocojT6FV
macroで済ませたいところ
315 :
デフォルトの名無しさん
2016/12/02(金) 16:12:34.82 ID:Yd67HXR2
crystal使おう
316 :
デフォルトの名無しさん
2016/12/04(日) 12:40:41.70 ID:ytM7QMnr
def foo (*args)
p args
p args[0]
p *args
end

foo [1,2,3]

出力結果

[[1,2,3]]
[1,2,3]
[1,2,3]

最後の
p *args
の意味が分からないのですが、どういう構文なのでしょうか?
317 :
デフォルトの名無しさん
2016/12/04(日) 12:47:37.04 ID:HCAAGxQ4
*はsplatと呼ばれる
直後のオブジェクトにto_aをかけると思ってもらうといい
318 :
デフォルトの名無しさん
2016/12/04(日) 13:08:08.37 ID:tKcWat/f
>>316
配列の展開では。
irb(main):001:0> a=[1,2,3]
=> [1, 2, 3]
irb(main):002:0> print a
[1, 2, 3]=> nil
irb(main):003:0> print [1,2,3]
[1, 2, 3]=> nil
irb(main):004:0> print *a
123=> nil
irb(main):005:0> print 1,2,3
123=> nil
319 :
デフォルトの名無しさん
2016/12/04(日) 13:27:46.42 ID:ytM7QMnr
>317

ありがとうございます。

>318

irb(main):001:0> a = [1,2,3]
=> [1, 2, 3]
irb(main):002:0> *a
SyntaxError: (irb):2: syntax error, unexpected '\n', expecting '='
from C:/Ruby21-x64/bin/irb:11:in `<main>'

*aの評価値を見ようとしていてうまくいかなくてどうなっているんだ、と思ってたのですが、pすればいいんだ。
(expecting '=' で気づけ、自分)
納得いきました。ありがとうございました。
320 :
デフォルトの名無しさん
2016/12/05(月) 15:27:42.33 ID:dF177W8B
メモ
SQLインジェクション対策もれの責任を開発会社に問う判決 | 徳丸浩の日記
http://b.hatena.ne.jp/entry/blog.tokumaru.org/2015/01/sql.html
321 :
デフォルトの名無しさん
2016/12/06(火) 01:28:22.79 ID:HR1yYwh6
Ruby の C 言語による拡張ライブラリを作成して実行しているのですが,
再現性の無いバグに悩まされています.同じプログラムを5回動かすと4回ぐらいコケて,
下に示すようなエラーが出力されます.
同じライブラリを C 言語プログラムから呼び出すとエラーが出力されません.
そのため,gdb 等でのデバッグが出来ません.

-- Crash Report log information --------------------------------------------
...
-- Control frame information -----------------------------------------------
...
-- C level backtrace information -------------------------------------------

-- Other runtime information -----------------------------------------------
...

C 言語プログラムから呼び出すとエラーが出ないということは,
rb_define_class 等で定義しているラッパ部分の記述に問題が有るような
気がしていますが,printf によるデバッグで場所を特定出来ないでおります.
また,問題は C level backtrace information のところに出力がされないことだと
思っているのですが,ココに何か出力させるには,gcc -g のオプション以外に
何か必要なのでしょうか?
322 :
321
2016/12/06(火) 01:29:36.00 ID:HR1yYwh6
ちょっと古いけすけど,ruby 2.0.0, OSX,xcode の gcc を使っています.
323 :
321
2016/12/06(火) 01:31:37.05 ID:HR1yYwh6
extconf.rb から出力された Makefile をそのまま利用しています.
324 :
デフォルトの名無しさん
2016/12/06(火) 12:07:10.61 ID:SXsp+YBz
ソース貼れ
325 :
デフォルトの名無しさん
2016/12/06(火) 13:05:53.77 ID:Kn1BSDAJ
テキストファイルから正規表現の条件にマッチする数列のみを取り出すプログラムを作りたい。

#number.txt
139
134
243
154
265


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

#number.txt
139
134
243
154
265


datafile = "number.txt"
File.open(datafile) do |f|
f.each_line do |line|
p /^[1][3][0-9]$/ =~ line
end
end

これだけだと
0
0
nil
nil
nil
と出力されてしまう。
139
134
と出力するにはどうしたらいいか。
327 :
デフォルトの名無しさん
2016/12/06(火) 13:30:50.46 ID:rcXtUD5h
>>326
/re/ =~ str の戻り値自身はマッチした位置情報のみを返す
0は0文字目でマッチしたという意味でnilはマッチしなかったという意味
マッチした文字列を利用したい場合は今後のことも考えて()を使う
正規表現内の1番目の()で囲った正規表現にマッチした文字列は変数 $1 か String#matchの戻り値[1] で利用できる
irb> p $1 if '1122334455' =~ /([2]+)/
"22"
irb> m = '1122334455'.match(/([2]+)/); p m[1] if m
"22"

よってスクリプトはこんな感じになる
datafile = "number.txt"
File.open(datafile) do |f|
f.each_line do |line|
matched = line.match(/^([1][3][0-9])$/)
p matched[1] if matched
end
end
328 :
デフォルトの名無しさん
2016/12/06(火) 13:35:42.41 ID:ui9UYxht
^13\d$でいいんじゃないの?
329 :
デフォルトの名無しさん
2016/12/06(火) 13:39:38.26 ID:rcXtUD5h
実際はもっと長い正規表現なのかもしれないし()の利用作法だと思って混乱するのも嫌なので元の部分は極力直さなかった
個人的には\Aと\Zを使いたかったが本筋ではない
330 :
デフォルトの名無しさん
2016/12/06(火) 14:29:41.50 ID:0+futo+K
$ ruby --version
ruby 2.1.10p492

word1 = /<td align="center"><a href="http:\/\/.*\/" target="_blank">/
puts line if line =~ word1
で画面に出力させることができています。後の処理で、word1の内容を置換したいのですが、
上手く行きません。
puts line = line.gsub(word1,'【')
あるいは
puts line = line.gsub(/<td align="center"><a href="http:\/\/.*\/" target="_blank">/,'【')
でもダメです。入力ファイルの全てが出てきています。
質問が的はずれかもしれませんが、=~,とgsubの正規表現は使い方が違うのでしょうか?
後者のgsubはどうすべきでしょう?
331 :
デフォルトの名無しさん
2016/12/06(火) 15:02:38.98 ID:ETIaxsXC
先ほどのソースのまま
正規表現の後に
p $& とすると
139
134
nil
nil
nilとなったので
nilを表示しないようにしたい。
332 :
デフォルトの名無しさん
2016/12/06(火) 15:05:16.71 ID:D3xfQ035
しないようにすれ
333 :
デフォルトの名無しさん
2016/12/06(火) 15:08:06.62 ID:ui9UYxht
よくわからんが原因は他じゃないかな?
下のでちゃんと動くよ。
word1 = /<td align="center"><a href="http:\/\/.*\/" target="_blank">/
line='<td align="center"><a href="http://2ch.net/"; target="_blank">置換です</a></td>'
puts line=line.gsub(word1,"きゃあー")
334 :
デフォルトの名無しさん
2016/12/06(火) 15:08:32.74 ID:ETIaxsXC
if文に変えたらできました!
ありがとうございました!
335 :
デフォルトの名無しさん
2016/12/06(火) 15:20:29.06 ID:my75alTQ
>>330
上にもあるが普通は欲しい部分を抜き出してから修飾する
require 'open-uri'
html = open('http://qiita.com/tags/Ruby').read
html.scan(/<div class="ItemLink__title"><a.+?>(.+?)<\/a>/).each{|v| puts v}
#結果:
CSVさえあればいい!形態素解析→単語感情極性対応表で超お手軽ネガポジ分析♪ (with Rails)
MailCatcherでメール送信をテスト
【Rails】ぼくのかんがえたさいきょうの設定(rails newそのあとに)
Rails:Service層を運用して良かったところ、悪かったところ
Rails スクレイピング手法 Mechanizeの使い方
Rails開発におけるwebサーバーとアプリケーションサーバーの違い(翻訳)
Ajaxでセレクトボックスの中身が動的に変わるRailsアプリの作り方
初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」
...

こっちのほうが絶対に見通しがいいし作成途中での確認もカンタン
んでさらっと .+? を使ってるが「正規表現の最短マッチ」について調べるといい
わけわからん状態のところを自力でひとつづつ潰していくのだ
336 :
デフォルトの名無しさん
2016/12/06(火) 16:14:26.50 ID:0+futo+K
有難うございます。
word1 = /<td align="center"><a href="http:\/\/.*\/" target="_blank">/
file.each_line do |line|
(中略)
line = line.gsub(word1,'【')
puts line if line =~ /【/
これでできました。原因は他にもありました。
337 :
デフォルトの名無しさん
2016/12/06(火) 22:40:43.49 ID:N07Fi8es
>>321-323
再現性の無いバグなら、マルチスレッドのライブラリを使っているとか、
ポインタが想定外のアドレスを指しているとか

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

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

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

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

File.read('number.txt').scan(/^13\d$/) do |matched|
p matched # ここに処理を書く
end
338 :
デフォルトの名無しさん
2016/12/06(火) 23:36:56.03 ID:irhz0xDF
https://paiza.jp/moshijo/challenge/moshijo_character_4
勉強がてら始めたけど、いきなり躓いた……

a,b,c = gets.split.map(&:to_i)

d = a + b
e = a - b

if /"+"/ =~ c
puts d
else
puts e
end

if文でcの入力値が+で一致してたらそれに合わせて出力、っていう形でいけると思ったらエラーが出て無理だった……
339 :
デフォルトの名無しさん
2016/12/06(火) 23:57:34.34 ID:Ke9ZeJQj
>>338
問題が分からんけど、正規表現での + は特殊文字だから + という文字に一致させるにはエスケープが必要
というか、if c == '+' でいいんじゃないの?
340 :
デフォルトの名無しさん
2016/12/06(火) 23:59:40.47 ID:Ke9ZeJQj
>>338
あと、a,b,c = gets.split.map(&:to_i) とすると、全部 to_i しようとするから '+' も to_i しておかしなことになるよ
341 :
デフォルトの名無しさん
2016/12/07(水) 01:37:01.20 ID:dh118EuJ
画像で申し訳ないけど問題はこんなん
Ruby 初心者スレッド Part 59 [無断転載禁止]©2ch.netYouTube動画>1本 ->画像>6枚
ようは半角スペース区切りで、数字2つと+か−を入力
+なら前者の数字を足し算、−なら引き算をして出力しろっていう問題

修正したけど何故か−側の答えしか出なくてワロタ……
なんで+判定してくれんのだ
a,b,c = gets.split(' ').map(&:to_i)
d = a + b
e = a - b

if c == /\+/ then
puts d
else
puts e
end
342 :
デフォルトの名無しさん
2016/12/07(水) 04:45:38.63 ID:qM0eFzSC
>>341
https://docs.ruby-lang.org/ja/latest/method/String/i/to_i.html
整数とみなせない文字があればそこまでを変換対象とします。 変換対象が空文字列であれば 0 を返します。
p "0x11".to_i # => 0
p "".to_i # => 0
つまり
> "+".to_i
=> 0
> "-".to_i
=> 0
> a,b,c="1 2 +".split(' ').map(&:to_i)
=> [1, 2, 0]
> a,b,c="1 2 -".split(' ').map(&:to_i)
=> [1, 2, 0]
> puts /\+/
(?-mix:\+)
> puts Regexp.new(/\+/)
(?-mix:\+)
> 0 == /\+/
=> false
> 0 == Regexp.new(/\+/)
=> false
こういうこと
343 :
デフォルトの名無しさん
2016/12/07(水) 07:11:33.83 ID:4ygr9k/C
>>341
>>340 を読め
344 :
デフォルトの名無しさん
2016/12/07(水) 07:37:56.24 ID:9RayTpny
>>339>>340>>340
ありがとうございます、やっと出来ました!
a,b,c= gets.split

d = a.to_i+b.to_i
e = a.to_i-b.to_i

if c == '+' then
puts d
elsif
puts e
end

入力を文字列で受け取ってから、それを数値として扱うようにしてから計算
最後に出力っていう形にしたら成功しました!

改めてgets.split.map(&:to_i)や.to_iの意味を理解できて良い勉強になりました
345 :
デフォルトの名無しさん
2016/12/07(水) 16:18:08.81 ID:xs1sI7sQ
オライリのディープラーニング本進めてるがバッチ処理のあたりから
ようわからん。
数学は好きなんだけどプログラミング特有のテクニックになると
どうも飲み込みづらい。
346 :
デフォルトの名無しさん
2016/12/07(水) 16:35:10.61 ID:aZJac4xC
オライリーのDL本はPythonじゃねーの?
347 :
デフォルトの名無しさん
2016/12/07(水) 22:34:39.98 ID:vMVuhNA3
Rubyでディープラーニングなんか遅過ぎて勉強以前の問題だと思うけど
numpyと比べたら軽く数桁違うだろ
348 :
デフォルトの名無しさん
2016/12/07(水) 23:37:57.91 ID:4ygr9k/C
>>347
勉強のために入るなら使い慣れた言語ってのは普通にある選択肢だと思うけどなー
知らない分野と知らない言語のダブルに対処するより効率が高いだろうし
349 :
デフォルトの名無しさん
2016/12/08(木) 03:46:35.74 ID:WR2cMfp2
本の言語に合わせた方が分かりやすくね?
その言語知らないと翻訳できないんじゃね?
350 :
デフォルトの名無しさん
2016/12/08(木) 07:25:28.39 ID:/aGxLpEu
言語に気を取られるのは無駄ってどっちかというとPython的な理屈だしなあ
Rubyと違ってシンプルだからそんなに難しく考える必要はない
351 :
デフォルトの名無しさん
2016/12/08(木) 09:33:01.89 ID:u0pmvICB
直也:.NET CoreというかC#って型があって、しかもサーバーサイドも書けるじゃないですか。Linuxでやってた人たちはずっとスクリプト言語使ってて、
Rubyとか型がない言語でサーバーサイド書いてることに疲れてきちゃってるんですよね。
ある程度の規模のものではサーバーサイドも型がある言語で書きたいと思って、
ScalaとかJava 8をやってみたんだけど、どの言語もちょっとバランスが悪いんですよね。
Scalaはプログラマ寄りすぎるし、Javaはコンサバすぎる。サーバーサイドSwiftもとがりすぎてるし。
実績があって型がある言語ってC#なんですよね。そのC#がLinuxで使えるのは大きいんですよね。
だから、ワンチャンあるなって。あとは市場が評価するかどうかなんですよね。
バランスはいいと思います。それがWindowsだけでなくMacでも使えるようになったのは本当に大きいですし。
352 :
デフォルトの名無しさん
2016/12/08(木) 09:49:01.09 ID:V2tLN3UQ
Racketみたいにpythonのnumpyとかそのまま流用できる方法はrubyにはないのですか?
353 :
デフォルトの名無しさん
2016/12/08(木) 21:28:42.10 ID:6kXtynY2
初めて1日目の初心者なんですけど直し方がわかりません

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

ちなみにexe化したファイルのソースは
# encoding: Shift_JIS
print
354 :
353
2016/12/08(木) 21:43:20.44 ID:6kXtynY2
途中送信すみません

# encoding: Shift_JIS
print てすと

です。
355 :
デフォルトの名無しさん
2016/12/08(木) 22:30:09.38 ID:HERlhtNF
どこでそのエラーが発生したのか分からんけど
ファイル名:353.rb
中身は以下だけ

printf ("てすと")

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

俺も初心者だから良く分からんぞい
356 :
353
2016/12/08(木) 22:37:38.67 ID:6kXtynY2
DevKit入れたら自決しました
357 :
デフォルトの名無しさん
2016/12/09(金) 00:54:47.09 ID:GS4b0ME0
死ぬんじゃない
358 :
デフォルトの名無しさん
2016/12/09(金) 04:36:22.37 ID:VazcIIHJ
macでrb拡張子(スクリプト)をターミナルで実行するにはどうすればいいですか?
homebrewやRuby on Rails を入れる必要がありますか?
359 :
デフォルトの名無しさん
2016/12/09(金) 07:09:25.41 ID:IAKedM2U
バージョンを問わないなら最初から入ってるだろ
ruby myrubyscript.rb
360 :
デフォルトの名無しさん
2016/12/09(金) 07:15:38.30 ID:JZme2NZr
irb(main):001:0> a,b,c = [1,2],3
=> [[1, 2], 3]
irb(main):002:0> a
=> [1, 2]
irb(main):003:0> b
=> 3
irb(main):004:0> c
=> nil
irb(main):005:0> a,b,c = [[1,2],3]
=> [[1, 2], 3]
irb(main):006:0> a
=> [1, 2]
irb(main):007:0> b
=> 3
irb(main):008:0> c
=> nil

これって、どのように理解したらいいですかね?
361 :
デフォルトの名無しさん
2016/12/09(金) 07:35:31.81 ID:ESs2BvJq
>>360
[[1, 2], 3] は [1, 2] と 3 の2つの要素からなる配列
だから a, b, c = [[1, 2], 3] とすると a には1要素目の [1, 2] が入り、
b には2要素目の 3 が入り、c は3要素目がないので nil が入る
362 :
デフォルトの名無しさん
2016/12/09(金) 07:39:07.21 ID:ESs2BvJq
>>360
[1, 2], 3 と [[1, 2], 3] の違いは以下を参照

https://docs.ruby-lang.org/ja/2.3.0/doc/spec=2foperator.html
> 右辺の式が一つし か与えられなかった場合、式を評価した値は配列に変換されて、各 要素が左辺のそれぞれの式に代入されます。
363 :
デフォルトの名無しさん
2016/12/09(金) 08:04:59.41 ID:CktcRLbu
だから理屈としては「配列リテラルの多重代入は行わない方がよい」になる
こんなことでエラーにしたくないので色々なパターンを頑張って実装したんだが
その結果誰にも読み解けないものができてしまった
364 :
デフォルトの名無しさん
2016/12/09(金) 10:24:20.17 ID:p9V2Jelw
マニュアルにある通りだとおもうけど?
foo, bar = [1, 2] # foo = 1; bar = 2
foo, bar = 1, 2 # foo = 1; bar = 2
(foo, bar), baz = [1, 2], 3 # foo = 1; bar = 2; baz = 3
365 :
デフォルトの名無しさん
2016/12/09(金) 10:49:11.49 ID:FAhbp1DA
class Lottery
result=["大吉", "中吉", "小吉", "凶", "大凶"]

def roll
num=rand(5)
return num
end

print result[roll],"です。\n"

end

Lottery.new.roll

上記コードでundefined local variable or method `roll' for Lottery:Class (NameError)が発生します。
原因がどこにあるか教えてください。
366 :
デフォルトの名無しさん
2016/12/09(金) 11:23:52.82 ID:6FftK3xp
>>365
class...endの中においてdefでふつーに定義するメソッドは「そのクラスのインスタンスメソッド」となる
これは「そのクラスのインスタンス(=オブジェクト)」に属しているため、インスタンスを生成していないclass定義の中から呼び出すことはできない

……というような説明で理解できるならそもそもそんなことしねーよというのはまあその通りではある
とりあえずは
「クラス定義の中ではそこで定義したインスタンスメソッドを使うことはできない」
「クラス定義の中では"地の文"を書いてはいけない」
というふうに思っておくといいよ

class Lottery
# クラス定義の中で大文字で始まると"クラス定数"。くわしくはぐぐれ
RESULT=["大吉", "中吉", "小吉", "凶", "大凶"]

def dice
num=rand(5)
return num
end

# データ生成と表示はメソッドを分ける
# あと画面表示にputsメソッドを紹介してない参考書は焚書で
def roll
puts RESULT[dice]+"です"
end
end

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

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

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

># あと画面表示にputsメソッドを紹介してない参考書は焚書で
焚書ですか…
368 :
デフォルトの名無しさん
2016/12/09(金) 12:47:27.53 ID:Kfw6K1eC
Rubyの基礎を学んでる最中にRubyのお作法も別途学ぼうとすると息苦しくてつまんないと思う
とりあえずはその手元にある今使ってるやつで学んでみたらどうだろうどうかしら

矯正はあとからでもできるし無駄や遠回りはある程度経験しておくとその後なんとしても無駄や不作法を避ける糧になるよw
369 :
デフォルトの名無しさん
2016/12/09(金) 13:55:22.62 ID:FAhbp1DA
>>367
了解しました。まだ基礎力が定着していないのに分不相応でしたね。ですが、最近なんかDRYが多くて
作成したコードが不細工だなあと感じるようになり、うまくすっきりしたコードは書けないかなと思ったものですから。
まあ、とにかく基礎的・基本的なことに集中しようと思います。
370 :
デフォルトの名無しさん
2016/12/09(金) 20:21:49.49 ID:EaN/YLKK
基本の文法書は、
たのしいRuby 第5版、2016

その次のレベルは、プロ必須本の、
Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説
371 :
デフォルトの名無しさん
2016/12/09(金) 22:49:00.14 ID:pEg3v2QU
たのしいRubyは何とか読みきれたけど
次に買ったRuby on Rails4 アプリケーションプログラミングは内容が濃すぎて挫折してたから
Effective Rubyを買ってみようかな……
372 :
デフォルトの名無しさん
2016/12/09(金) 23:02:53.80 ID:EaN/YLKK
改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015

これの方が、わかりやすい
373 :
デフォルトの名無しさん
2016/12/09(金) 23:06:00.61 ID:IAKedM2U
>>371
伸び悩んだら他の言語に浮気するのがおすすめ
気分転換とかじゃなくて本質が見えるようになる
戻ってきたら驚くほど分かるようになってる
374 :
デフォルトの名無しさん
2016/12/09(金) 23:28:07.12 ID:EaN/YLKK
それなら、12/22 発売の「みんなのPython 第4版」

この本は「たのしいRuby」と表裏一体だから、スラスラ読める
375 :
360
2016/12/10(土) 00:08:14.85 ID:SQghVBCH
遅レスだがありがとう。
376 :
デフォルトの名無しさん
2016/12/10(土) 00:16:10.17 ID:7eWDkV7Q
本を読んで勉強したのは最初の言語だけだなー(C++だったな)
あとはネットで情報を漁ってとりあえず書いてみてってのを繰り返して覚えてるな

いくらガベージコレクタがどうの型がどうのと言われても、やはりC++のような
メモリ管理や型についての基礎知識は持っておいた方がいいと思うのは老害の戯言かなー
377 :
デフォルトの名無しさん
2016/12/10(土) 06:45:40.85 ID:F6sTBWuO
それはまちがいなく老害
378 :
デフォルトの名無しさん
2016/12/10(土) 11:45:02.49 ID:qQjpy7Dv
rubyにも型はある
型は意識しておいた方が良い
379 :
デフォルトの名無しさん
2016/12/10(土) 17:29:55.11 ID:ffTfSgqi
今時メモリ管理とか勉強が必要になるぐらいまでのめり込んでいる人は
自分で読む本がわかっている頃だろうな。
380 :
デフォルトの名無しさん
2016/12/10(土) 17:42:31.42 ID:qQjpy7Dv
rubyでメモリ管理いちいち気にする香具師はアホ
381 :
デフォルトの名無しさん
2016/12/10(土) 17:45:12.03 ID:eWdy/g06
老害っていうより、プログラマとしてのセンスが悪いと思う
382 :
デフォルトの名無しさん
2016/12/10(土) 17:57:25.90 ID:dShDNVDG
その言語でのプログラム作成者の80%が一生使わず残りの90%も初年度には触れないようなものの知識を初学者の100%に求めるのは害悪
383 :
デフォルトの名無しさん
2016/12/10(土) 17:57:30.76 ID:02ejXKtR
いまでもRailsで普通にやるとメモリバカ食いするケースの対処が必要だったり
GCの実行頻度を考慮して設計する必要があったりはするよ
安易に不必要だと決めつけるのは考えが足りない子だね
384 :
デフォルトの名無しさん
2016/12/10(土) 18:05:28.08 ID:ck8bDMeh
もちろん型やメモリ管理など内部の仕組みは
理解できている方が良いが初期の学習では不要
385 :
デフォルトの名無しさん
2016/12/10(土) 19:21:30.99 ID:we+CUvc2
人によっては内部の動作を知りたいって子もいるから
そういう子には教えてもいいと思うけど
相手を見ないで全員に教えても意味はないやりたい事はみな違うから
386 :
デフォルトの名無しさん
2016/12/11(日) 23:33:44.06 ID:BA+Tsrf4
つまんね
387 :
デフォルトの名無しさん
2016/12/11(日) 23:36:27.60 ID:sXnmAsK+
gem installで何かを入れようとしても
ERROR: While executing gem ... (URI::InvalidURIError)
bad URI(is not URI?):

gem update --systemしようとしても
ERROR: While executing gem ... (URI::InvalidURIError)
bad URI(is not URI?):

となって出来ないんですけど
原因わかりますか?
rubyは2.3.3
gemは2.5.2
OSはwin10です
388 :
デフォルトの名無しさん
2016/12/11(日) 23:52:42.43 ID:9ThvSwmQ
389 :
デフォルトの名無しさん
2016/12/11(日) 23:57:26.28 ID:sXnmAsK+
>>388
串なんて通してないから違うと思います
390 :
デフォルトの名無しさん
2016/12/12(月) 03:14:04.62 ID:QY0nCTMm
>>387
AddTrustExternalCARoot-2048.pem を最新の物にする。
DL場所や方法は検索すればすぐ見つかる。
391 :
デフォルトの名無しさん
2016/12/12(月) 14:54:05.30 ID:Eai/X/NY
>>390
rubygems-update-2.6.8.gemを入れてみたけど改善しませんでした
392 :
デフォルトの名無しさん
2016/12/12(月) 15:20:46.65 ID:Eai/X/NY
Ruby 2.2.6に変えたら何故か解決しました
393 :
デフォルトの名無しさん
2016/12/13(火) 15:12:14.55 ID:OjWn7cVV
テストが通らない・・・
どこが間違っているかわかる方いたらお願いします。

ランクC Paiza芦屋川雛乃からのヘルプ依頼
https://paiza.jp/moshijo/

a = gets.chomp.split(" ")
s = gets.chomp
t = gets.chomp
r =""

if s == "decode"
for i in 0...t.size
for u in 0...a.size
if t[i] == a[u]
r[i] = u.to_s
end
end
end
puts r.to_i
elsif s == "encode"
for i in 0...t.size
c = t[i].to_i
t[i] = a[c]
end
puts t.to_i
end
394 :
デフォルトの名無しさん
2016/12/13(火) 15:42:27.45 ID:wETuuVVa
r = "" がおかしいんじゃないかな
395 :
デフォルトの名無しさん
2016/12/13(火) 18:01:40.46 ID:nznhQA15
Rubyで解きましたっていってこのスクリプトが返ってきたらへにょーんってなるな
396 :
デフォルトの名無しさん
2016/12/13(火) 20:42:28.70 ID:mtOpDsT/
r[i] = u.to_s
rが配列なら、[ ]が付いていない、以下はおかしい

r =""
puts r.to_i


c = t[i].to_i
t[i] = a[c]

tが配列なら、[ ]が付いていない、以下はおかしい
puts t.to_i

型が複数を扱うコンテナなのか、単体なのか、意識しろ
397 :
デフォルトの名無しさん
2016/12/14(水) 07:41:49.95 ID:bcNQ7Ev0
意識高い系
398 :
デフォルトの名無しさん
2016/12/14(水) 08:02:24.73 ID:Q/TaGcT0
>>395
対象のRubyでeachが実装されているとは限らない
399 :
デフォルトの名無しさん
2016/12/14(水) 08:18:08.95 ID:fDAOl6vn
w
400 :
デフォルトの名無しさん
2016/12/14(水) 08:27:07.65 ID:2yTcGsTl
今のRubyの想定バージョンっていくつなんだろうね
まだ1.8.6?
401 :
デフォルトの名無しさん
2016/12/14(水) 15:12:01.78 ID:a66Br6Ed
>>400
>>393 のテスト環境は ruby 2.3.0 と書いてありますね。
https://paiza.jp/guide/language
だから >>398 は杞憂
402 :
デフォルトの名無しさん
2016/12/14(水) 15:16:14.96 ID:4jpqupHX
>>398が皮肉だとわからないのは辛い
403 :
デフォルトの名無しさん
2016/12/14(水) 17:49:04.08 ID:obMYgrm6
ruby初心者です
クラスにアクセサ実装しました
正の整数しか受け付けさせません
それ以外は例外で弾こうと思います
どの例外がいいですか?
404 :
デフォルトの名無しさん
2016/12/14(水) 18:01:58.62 ID:bWT0nkJt
>>403
何でもいい
その手の例外は出たらバグなのでキャッチされることは無いはず
誤ってキャッチされてしまう可能性があるような紛らわしいものでなければOK
405 :
デフォルトの名無しさん
2016/12/14(水) 18:19:07.06 ID:po7ivxZl
オブジェクトとしては間違ってないんだけど処理都合で弾きたい引数が来た場合はArgumentError
オブジェクトや持ってるメソッドからして間違ってる感じのが来た場合はTypeError
ということで第三者公開するライブラリならArgumentErrorだとわかりよい
が、おおむね>>404なのでRuntimeErrorでもいいよ
406 :
デフォルトの名無しさん
2016/12/14(水) 21:11:00.93 ID:US7iqqFk
特別なアレならStandardError継承して独自の例外投げとけば良いのでは
139KB

lud20161214233353
このスレへの固定リンク: http://5chb.net/r/tech/1475394638/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  
このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ



全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「Ruby 初心者スレッド Part 59 [無断転載禁止]©2ch.netYouTube動画>1本 ->画像>6枚 」を見た人も見ています:
Ruby 初心者スレッド Part 65
Ruby 初心者スレッド Part 64
Ruby 初心者スレッド Part 60
Ruby 初心者スレッド Part 61
Ruby 初心者スレッド Part 67 (748)
Blender 初心者質問スレッド Part47
Blender 初心者質問スレッド Part32(ワッチョイ有)
【質問大歓迎】私立恵比寿中学 初心者スレッド 其の壱
Youtube収益化 初心者スレ Part10
【Switch】大乱闘スマッシュブラザーズ SPECIAL 初心者スレ11 【質問/雑談】
囲碁・初心者専用の質問スレッド 第27局
アセンブラ初心者スレッド 2
囲碁・初心者専用の質問スレッド 第34局
超初心者アナログ会話スレッド
Elona初心者質問スレッド その124
模型塗装初心者スレッド part100
Elona初心者質問スレッド その114
ヤフオク初心者質問スレッド 808問目
ヤフオク初心者質問スレッド 820問目
初心者・創作文芸についての質問スレッド
ピアノ大人初心者のためのスレッド 30日目
【投資一般板】 初心者質問スレッド Part63
初心者もOK! FreeBSD質問スレッド その125
【投資一般板】 初心者質問スレッド Part34
【投資一般板】 初心者質問スレッド Part53
★模型塗装初心者スレッド80 ガンプラからスケールまで★
★模型塗装初心者スレッド84 ガンプラからスケールまで★
★模型塗装初心者スレッド84 ガンプラからスケールまで★
★模型塗装初心者スレッド79 ガンプラからスケールまで★
パソコン初心者総合質問スレッド Part2063
★☆時計板の初心者総合質問スレッド Part89★
バイク初心者のためのバイク購入相談スレッド 9
くだすれPython(超初心者用) その47【Ruby禁止】
くだすれPython(超初心者用) その46【Ruby禁止】
くだすれPython(超初心者用) その41【Ruby禁止】
くだすれPython(超初心者用) その42【Ruby禁止】
[PUBG] PLAYERUNKNOWN'S BATTLEGROUNDS初心者スレ17
菜食主義初心者スレ
FX初心者スレ 319
Python初心者スレ
鉄拳初心者スレ 98
鉄拳初心者スレ 90
鉄拳初心者スレ 95
JS初心者の集まるスレ
鉄拳初心者スレ 80
UWSC初心者用スレ2
ハセカラ初心者スレ
Kotlin初心者質問スレ
FX初心者スレ 263pips
FX初心者スレ 284pips
FX初心者スレ 344pips
FX初心者スレ 346pips
FX初心者スレ 270pips
FX初心者スレ 249pips
FX初心者スレ 282pips
FX初心者スレ 298pips
FX初心者スレ 247pips
冬山初心者スレ その73
FX初心者スレ 231pips
FX初心者スレ 286pips
FX初心者スレ 323pips
FX初心者スレ 434pips
FX初心者スレ 250pips
Java入門・初心者質問スレ Part.3
Java入門・初心者質問スレ Part.8
07:03:46 up 15 days, 22:25, 0 users, load average: 18.80, 19.66, 20.10

in 0.014797925949097 sec @0.014797925949097@0.1 on 110721