プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 61
https://mevius.5ch.net/test/read.cgi/tech/1503644351/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
探検
Ruby 初心者スレッド Part 62
■ このスレッドは過去ログ倉庫に格納されています
2017/11/24(金) 00:35:29.31ID:rLZHdQ3Q
2017/11/27(月) 12:11:21.22ID:W0wAPtjw
>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
2017/11/27(月) 13:14:45.58ID:o0pIkOSz
2017/11/27(月) 18:50:34.20ID:agUtcdpR
最近の荒らしはやり方が雑だよな
殆ど単発の自演しか涌かないし
出て来ても「はいはい、荒らしてますよ〜」みたいな嫌々やらされてる感しかない
殆ど単発の自演しか涌かないし
出て来ても「はいはい、荒らしてますよ〜」みたいな嫌々やらされてる感しかない
2017/11/27(月) 19:23:05.97ID:x+zk8UEy
Ruby は、Linux 必須だから、WSL・仮想OS ・Docker などが必須
2つのOS を動かすから、メモリは最大限積む必要があり、
CPU はi7 にすると、16GB まで積める。
i3, i5 だと、8GBまでかな?
それと、たいていのプログラム言語の本の動作条件が、Windows Pro
一般的に、開発用PC は、高スペック。
画面も、フルHD 以上
2つのOS を動かすから、メモリは最大限積む必要があり、
CPU はi7 にすると、16GB まで積める。
i3, i5 だと、8GBまでかな?
それと、たいていのプログラム言語の本の動作条件が、Windows Pro
一般的に、開発用PC は、高スペック。
画面も、フルHD 以上
2017/11/27(月) 21:01:16.83ID:LZyaXIN8
もうこいつどんだけ粘着するのか
2017/11/27(月) 21:44:22.84ID:agUtcdpR
自演も中途半端
もうただ単に定型文を打つだけで満足してて、
荒れたかどうかも気にしなくなってるんだよな
夏休みの宿題やらされてる子供かよ
もうただ単に定型文を打つだけで満足してて、
荒れたかどうかも気にしなくなってるんだよな
夏休みの宿題やらされてる子供かよ
2017/11/27(月) 22:51:47.97ID:rAG/Bhsm
「また自演した」「このスレには自演が居るから」「このスレには自演がいます!いますよ!ほら!」としか書くことがなくなったんだろうなと思う
本当に他人から貰ったレスというのは自分がいちばんよくわかってて、そしてそれは本レスにおいても自演指摘レスにおいてもおそらく極めて少ない
住人の冷めた態度が効いてると表現することはできなくもないが
本当に他人から貰ったレスというのは自分がいちばんよくわかってて、そしてそれは本レスにおいても自演指摘レスにおいてもおそらく極めて少ない
住人の冷めた態度が効いてると表現することはできなくもないが
2017/11/27(月) 23:02:26.98ID:SI4QCwP5
静的型マンセーの粘着がいるのは確かだが、何でもかんでも自演自演言ってるやつもちょっと病的だよな
ちょっとネガティブな発言しただけなのに荒らしの自演認定されたことあるし
ちょっとネガティブな発言しただけなのに荒らしの自演認定されたことあるし
2017/11/27(月) 23:32:26.87ID:W0wAPtjw
上の人は荒らしだからスルーでお願いします
>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
2017/11/27(月) 23:50:32.31ID:9RbRf1jA
2017/11/27(月) 23:53:05.49ID:rAG/Bhsm
>>23
スレ住人が過去に何度か同調したことがあるのだが、
そのせいで自分が こ れ 以 降 何 を し て も 正義で多数派で「こちら側」に居れると勘違いしてしまったらしいのだ
いつか自分が「あちら側」に追いやられていたことに気づく日がくればいいと思う
スレ住人が過去に何度か同調したことがあるのだが、
そのせいで自分が こ れ 以 降 何 を し て も 正義で多数派で「こちら側」に居れると勘違いしてしまったらしいのだ
いつか自分が「あちら側」に追いやられていたことに気づく日がくればいいと思う
2017/11/28(火) 00:02:17.19ID:1+J/qigr
そうやって嫌々やってるからまたボロを出す
22:51:47.97
23:02:26.98
こんだけ時間くっつけて発言すればバカにさえ自演だってわかる
しっかり頭を働かせろ
ゆとり世代か何かか?
22:51:47.97
23:02:26.98
こんだけ時間くっつけて発言すればバカにさえ自演だってわかる
しっかり頭を働かせろ
ゆとり世代か何かか?
2017/11/28(火) 00:03:55.96ID:qPKDeu2+
だから、まあ、我々はふたつの荒らしを並行同時にあしらいながら進まねばならなくなっている
「やってはいけないこと」「さわってはいけないもの」は倍以上に増え、発言の困難性は以前より遥かに増した
難儀なことだ
「やってはいけないこと」「さわってはいけないもの」は倍以上に増え、発言の困難性は以前より遥かに増した
難儀なことだ
29デフォルトの名無しさん
2017/11/28(火) 00:07:19.20ID:TcvLN2I4 完動する事を確認しているDLライブラリ使ったスクリプトを、思いつきでrubyに付属のdebug.rbで診たら、
dllの関数呼び出しの所で`unknown symbol "関数名"' (RuntimeError)がでてなかなかブレークポイントまで進めません
一部の止まるエラーを抑えたり、スクリプト上の一定部分だけデバッガー無効化したりすることは可能ですか?
dllの関数呼び出しの所で`unknown symbol "関数名"' (RuntimeError)がでてなかなかブレークポイントまで進めません
一部の止まるエラーを抑えたり、スクリプト上の一定部分だけデバッガー無効化したりすることは可能ですか?
2017/11/28(火) 00:39:00.64ID:yd/D5jJi
2017/11/28(火) 03:30:10.92ID:PkJOT8pW
そのエラーになる部分を、コメントアウトして実行すれば?
32デフォルトの名無しさん
2017/11/29(水) 04:08:52.30ID:zX4fkY5X debug.rbはkernelのset_trace_funcで登録したprocを、デバッギーの行毎に呼び出してる
だから呼び出されたくない行は登録するproc内でif文を使って分岐させてやれば良い
やってることはそれ程難しくないし、debug.rbに10行程度書き加えれば出来るよ
だから呼び出されたくない行は登録するproc内でif文を使って分岐させてやれば良い
やってることはそれ程難しくないし、debug.rbに10行程度書き加えれば出来るよ
2017/11/29(水) 18:32:32.11ID:MwOAAXQr
>>29
DEBUGGER__クラス内の一番下段の下記を、
stdout.printf "Debug.rb\n"
stdout.printf "Emacs support available.\n\n"
RubyVM::InstructionSequence.compile_option = {
trace_instruction: true
}
set_trace_func proc { |event, file, line, id, binding, klass, *rest|
DEBUGGER__.context.trace_func event, file, line, id, binding, klass
}
DEBUGGER__クラス内の一番下段の下記を、
stdout.printf "Debug.rb\n"
stdout.printf "Emacs support available.\n\n"
RubyVM::InstructionSequence.compile_option = {
trace_instruction: true
}
set_trace_func proc { |event, file, line, id, binding, klass, *rest|
DEBUGGER__.context.trace_func event, file, line, id, binding, klass
}
2017/11/29(水) 18:44:22.06ID:MwOAAXQr
下のに書き換え、
@@ignore_ = {}
def DEBUGGER__.ignore_(ignorefl = @@ignore_)
return @@ignore_ = ignorefl
end
stdout.printf "Debug.rb\n"
stdout.printf "Emacs support available.\n\n"
RubyVM::InstructionSequence.compile_option = {:trace_instruction => true} if RUBY_VERSION > "1.9.0"
set_trace_func proc { |event, file, line, id, binding, klass, *rest|
tb = caller(0);last_i = "";i_name = "";i_num = 0;
last_i = tb[-1] if tb.size > 0
last_i.dup.each_line(":"){ |i_line|
if i_line .to_i > 0 || (i_line.chop).to_i > 0
break if i_name.size < 1
i_num = (i_line[-1] == ":" ? (i_line.chop).to_i : i_line .to_i)
i_name = i_name.chop
break
else
i_name += i_line
end
}
if i_num > 0 && DEBUGGER__.ignore_.include?(i_name) && DEBUGGER__.ignore_[i_name].include?(i_num)
# debug_skip
else
DEBUGGER__.context.trace_func event, file, line, id, binding, klass
end
}
@@ignore_ = {}
def DEBUGGER__.ignore_(ignorefl = @@ignore_)
return @@ignore_ = ignorefl
end
stdout.printf "Debug.rb\n"
stdout.printf "Emacs support available.\n\n"
RubyVM::InstructionSequence.compile_option = {:trace_instruction => true} if RUBY_VERSION > "1.9.0"
set_trace_func proc { |event, file, line, id, binding, klass, *rest|
tb = caller(0);last_i = "";i_name = "";i_num = 0;
last_i = tb[-1] if tb.size > 0
last_i.dup.each_line(":"){ |i_line|
if i_line .to_i > 0 || (i_line.chop).to_i > 0
break if i_name.size < 1
i_num = (i_line[-1] == ":" ? (i_line.chop).to_i : i_line .to_i)
i_name = i_name.chop
break
else
i_name += i_line
end
}
if i_num > 0 && DEBUGGER__.ignore_.include?(i_name) && DEBUGGER__.ignore_[i_name].include?(i_num)
# debug_skip
else
DEBUGGER__.context.trace_func event, file, line, id, binding, klass
end
}
2017/11/29(水) 18:51:55.61ID:MwOAAXQr
デバッグするソースファイルの最初の方に以下を書き加え、debugをスキップしたいファイルをignorefに、行をRangeかArrayでignorelにいれる
if defined? DEBUGGER__
ignoref = __FILE__
ignorel = []# 27..48
DEBUGGER__.ignore_[ignoref] = ignorel
end
debugのスクリプトそのものを書き換えるんじゃなくて、
複製して別名をつけたものを書き換えて使ったほうが良いよ
if defined? DEBUGGER__
ignoref = __FILE__
ignorel = []# 27..48
DEBUGGER__.ignore_[ignoref] = ignorel
end
debugのスクリプトそのものを書き換えるんじゃなくて、
複製して別名をつけたものを書き換えて使ったほうが良いよ
2017/11/30(木) 01:37:59.97ID:XY2yKXS8
Rubyでopenglのシェーダーを扱った本、技術評論社辺りから出してくれないかな
こういうのこそRuby向けだよ
こういうのこそRuby向けだよ
37デフォルトの名無しさん
2017/11/30(木) 13:11:26.74ID:dNsMGYhb OpenGL自体のgemとかはそろってるから、
ミクミク互換やXファイル互換のソースを添付して出せば売れそうだけどな
ミクミク互換やXファイル互換のソースを添付して出せば売れそうだけどな
2017/12/01(金) 01:22:55.57ID:UulhXT9P
# frozen_string_literal: false
ソースの最初に上のように書かれてるのを見つけたけどどいう意味?
他にもこういうのあるの?
ソースの最初に上のように書かれてるのを見つけたけどどいう意味?
他にもこういうのあるの?
2017/12/01(金) 04:44:53.26ID:zZy3ktkC
>>38
ruby-3以降はリテラル文字列がfrozenされることになるけど、
そうさせないためのマジックコメントでリテラル文字列の破壊的動作が許されるようにしている
ruby-2.3以降であればruby --enable frozen-string-literal <ファイル名>でrubyを起動することで、
リテラル文字列をfrozenされた状態とする挙動を試すことができる
# これまでの挙動
$ ruby -e 'p "A".downcase!'
"a"
# ruby-3以降のリテラル文字列の挙動を試す (ruby-2.3以降)
$ ruby --enable frozen-string-literal -e 'p "A".downcase!'
-e:1:in `downcase!': can't modify frozen String (RuntimeError)
from -e:1:in `<main>'
ruby-3以降はリテラル文字列がfrozenされることになるけど、
そうさせないためのマジックコメントでリテラル文字列の破壊的動作が許されるようにしている
ruby-2.3以降であればruby --enable frozen-string-literal <ファイル名>でrubyを起動することで、
リテラル文字列をfrozenされた状態とする挙動を試すことができる
# これまでの挙動
$ ruby -e 'p "A".downcase!'
"a"
# ruby-3以降のリテラル文字列の挙動を試す (ruby-2.3以降)
$ ruby --enable frozen-string-literal -e 'p "A".downcase!'
-e:1:in `downcase!': can't modify frozen String (RuntimeError)
from -e:1:in `<main>'
2017/12/02(土) 02:33:11.13ID:7L3qqdqd
>>39
前スレのリテラルの話でArrayが出てたけど、Arrayも何か将来的に関係あるの?
前スレのリテラルの話でArrayが出てたけど、Arrayも何か将来的に関係あるの?
2017/12/02(土) 12:25:58.45ID:S9pj625T
二項演算子型のシンタックスシュガーって場合によっては意図したとおりに動いてくれないんだね
Math::PI %1 #=> unknown type of %string
Math::PI *1 #=> undefined method `PI' for Math:Module
Math::PI /1 #=> unterminated regexp meets end of file
Math::PI >1 #=> true
pi = Math::PI
pi %1 #=> unknown type of %string
pi *1 #=> 3.141592653589793
pi /1 #=> 3.141592653589793
pi >1 #=> true
Math::PI %1 #=> unknown type of %string
Math::PI *1 #=> undefined method `PI' for Math:Module
Math::PI /1 #=> unterminated regexp meets end of file
Math::PI >1 #=> true
pi = Math::PI
pi %1 #=> unknown type of %string
pi *1 #=> 3.141592653589793
pi /1 #=> 3.141592653589793
pi >1 #=> true
2017/12/02(土) 12:28:39.60ID:S9pj625T
pi %1 #=> unknown type of %string
じゃなくて
pi %1 #=> 0.14159265358979312
だった
定数だとうまくいかない模様
じゃなくて
pi %1 #=> 0.14159265358979312
だった
定数だとうまくいかない模様
2017/12/02(土) 12:49:07.58ID:m0rwQM4g
>>41が何を意図しているか分かるわけないだろう
2017/12/02(土) 13:43:40.72ID:0GCrzYMu
スペースを入れろってだけの話では
45デフォルトの名無しさん
2017/12/02(土) 13:50:50.68ID:XRYOyseR 今年もクリスマスイブに何か発表ある?
46デフォルトの名無しさん
2017/12/03(日) 03:01:00.42ID:IGABZHMD >>39
さんくす
さんくす
2017/12/03(日) 12:36:05.29ID:76TDWePk
Ruby2.5
48デフォルトの名無しさん
2017/12/05(火) 03:46:28.43ID:XHolF61u Rubyの型システムは早ければ2020年のオリンピック頃にお目見えか
どんな物になるんだろう
どんな物になるんだろう
2017/12/05(火) 16:37:09.15ID:tba/yJ/+
2017/12/05(火) 16:48:30.13ID:lVtWIMct
他言語の経験あるなら
プロを目指す人のためのRuby入門という入門書が新しくておすすめ(出たばかり)
プロを目指す人のためのRuby入門という入門書が新しくておすすめ(出たばかり)
2017/12/05(火) 17:04:59.24ID:04pPds2q
本は買った後、
分からない事があれば、ここで環境とコード示して聞けば良いよ
誰かが答えてくれるから
分からない事があれば、ここで環境とコード示して聞けば良いよ
誰かが答えてくれるから
2017/12/05(火) 23:05:42.39ID:bv7GN3wK
たのしいRuby 第5版、2016
R を知ってるなら、これも読む。
みんなのPython 第4版、2017
この2冊は、表裏一体。
ただし、先に「たのしい」から読むこと
R を知ってるなら、これも読む。
みんなのPython 第4版、2017
この2冊は、表裏一体。
ただし、先に「たのしい」から読むこと
2017/12/06(水) 00:16:07.55ID:Nuv0O2Zm
54デフォルトの名無しさん
2017/12/06(水) 04:53:57.53ID:j5o9izkC >荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
2017/12/06(水) 16:47:29.82ID:AVh4r46K
Effective RubyがKindleで半額セール中(1728円)
56デフォルトの名無しさん
2017/12/06(水) 21:44:56.35ID:sdwtDf9T RubyでOpenGLの書籍も来い
2017/12/06(水) 21:46:49.21ID:vDrxBWCE
読者100人ぐらいしかいなさそう
2017/12/06(水) 21:48:41.70ID:Q8AsPyaZ
まずRubyが遅いから
画像処理やろうって人が少ない
画像処理やろうって人が少ない
2017/12/06(水) 21:57:47.76ID:j5o9izkC
3Dモデリングなら速度要らなさそう
あと可視化の分野辺り
というか、ゲームじゃなければ速度いらないだろ
あと可視化の分野辺り
というか、ゲームじゃなければ速度いらないだろ
60デフォルトの名無しさん
2017/12/06(水) 22:11:16.54ID:sdwtDf9T 3Dモデルというか、OpenGL学ぶのに最適だよRubyは
教材として出せば良いのに
商材として出すならMMDやXといった各種3Dモデル形式に対応した3DモデリングソフトをRubyで書いてCD付録として書籍につければ良い
そのRubyコード目当てに買う人は多いだろうし、Rubyで書いてるから書き換えやすく、改造もしやすい
教材として出せば良いのに
商材として出すならMMDやXといった各種3Dモデル形式に対応した3DモデリングソフトをRubyで書いてCD付録として書籍につければ良い
そのRubyコード目当てに買う人は多いだろうし、Rubyで書いてるから書き換えやすく、改造もしやすい
2017/12/06(水) 23:53:59.61ID:9Cl2Q0EY
残念ながらそれはない
Rubyはまともに使うつもりないなら学習のオーバーヘッドが大きすぎる
今ならJavaScriptとWebGLでいいよ
Rubyはまともに使うつもりないなら学習のオーバーヘッドが大きすぎる
今ならJavaScriptとWebGLでいいよ
62デフォルトの名無しさん
2017/12/07(木) 02:09:30.99ID:5ii6i5Is おまえがネガキャンしても無意味だ
2017/12/07(木) 02:49:15.45ID:mIJMiEiv
openglか
確かラッパーのgemがいくつかあるんだよな
初期のでglVertexPointerやらglColorPointerやら使って三角形を描画するとかやった記憶がある
今のgemはVBOやシェーダは使えるのか?
確かラッパーのgemがいくつかあるんだよな
初期のでglVertexPointerやらglColorPointerやら使って三角形を描画するとかやった記憶がある
今のgemはVBOやシェーダは使えるのか?
2017/12/07(木) 03:59:25.76ID:GxHPFgmw
3Dモデラーソフトのソースが付くなら欲しい
ゼロから書くのは面倒だけど既にある程度完成しているなら、
自分で足りない所だけ追加して楽できる
ゼロから書くのは面倒だけど既にある程度完成しているなら、
自分で足りない所だけ追加して楽できる
2017/12/07(木) 16:46:28.15ID:al0lHo8n
>>63
gemをちょっとググってみたけどopengl4.xに対応しててそれ用の関数もある
shaderがどこまで出来るかは自己の環境次第なんじゃね?
まあ、最近はopengl4.x使える環境がデフォだけど
gemをちょっとググってみたけどopengl4.xに対応しててそれ用の関数もある
shaderがどこまで出来るかは自己の環境次第なんじゃね?
まあ、最近はopengl4.x使える環境がデフォだけど
2017/12/07(木) 22:06:15.41ID:mIJMiEiv
みんな、Rubyのリファクタリングツール使ってる?
今まで手動でやってきたんだけど、何かお勧めツールかgemある?
今まで手動でやってきたんだけど、何かお勧めツールかgemある?
2017/12/07(木) 22:18:59.22ID:h0N877cC
rubymine
2017/12/07(木) 22:35:19.73ID:p8nuhjj6
rspec
rubyは静的解析が極めて困難な言語であり、リファクタリングを機械的に安全に行うことはできない
テストをちゃんと書いておいて、実際に繰り返し動かしながら結果的に元の挙動が再現されるように慎重に行う必要がある
rubyは静的解析が極めて困難な言語であり、リファクタリングを機械的に安全に行うことはできない
テストをちゃんと書いておいて、実際に繰り返し動かしながら結果的に元の挙動が再現されるように慎重に行う必要がある
2017/12/07(木) 23:56:42.24ID:kyxQutt+
テストはバグが有ることを証明することはできるが
バグがないことを証明することはできない
故にいくらテストを書いても安心できない
バグがないことを証明することはできない
故にいくらテストを書いても安心できない
2017/12/08(金) 00:13:02.65ID:AScviHBw
お前のツールでリファクタリングしたらバグったやないか客の業務止まっとるんやぞどないしてくれんねんボケエ!!!
こうなるのが目に見えてるんだからツール作る方もやりたくないわな
静的リファクタリングを動的型言語に求めるのは筋違い
こうなるのが目に見えてるんだからツール作る方もやりたくないわな
静的リファクタリングを動的型言語に求めるのは筋違い
71デフォルトの名無しさん
2017/12/08(金) 00:48:46.54ID:yFCS8xkj また言ってるのかこいつ
はやく精神科に見てもらえ
ruby会議16か15でリファクタリングのgemのOHPあったけど、
ぐぐったら出てくるから見てみ
はやく精神科に見てもらえ
ruby会議16か15でリファクタリングのgemのOHPあったけど、
ぐぐったら出てくるから見てみ
2017/12/08(金) 01:08:24.02ID:ra4CwiYK
>>2 のリファクタリング:Rubyエディションを読めばわかるけど、
ツールで自動化するのは問題なく、むしろポイントはツールの使い勝手とか連携させるとかの方
リファクタリング機能自体にはあんまり差異は無い
例の自演荒らしはそれを知らずに静的云々とか煽ってるけど
ツールで自動化するのは問題なく、むしろポイントはツールの使い勝手とか連携させるとかの方
リファクタリング機能自体にはあんまり差異は無い
例の自演荒らしはそれを知らずに静的云々とか煽ってるけど
2017/12/08(金) 01:33:37.38ID:AScviHBw
>>72
さすがにリファクタリングに関して静的型と差異がないというのは贔屓目に見ても無理があるわ
例えばクラスのメソッドのリネームを安全に行うには、そのメソッドを使っている箇所を全て正確に特定しなければならない
静的型なら造作もないことだけど、ちょっと頭使えばわかることだが動的型では原理的に不可能
さすがにリファクタリングに関して静的型と差異がないというのは贔屓目に見ても無理があるわ
例えばクラスのメソッドのリネームを安全に行うには、そのメソッドを使っている箇所を全て正確に特定しなければならない
静的型なら造作もないことだけど、ちょっと頭使えばわかることだが動的型では原理的に不可能
2017/12/08(金) 01:35:02.78ID:T1izFLQz
Ruby技術者試験受けるよ!
アドバイスとかあったらお願いします
ちなみに、今年中にsilver受験するつもり
アドバイスとかあったらお願いします
ちなみに、今年中にsilver受験するつもり
2017/12/08(金) 01:36:07.26ID:AScviHBw
あと、Rubyに限ったことじゃないけどスクリプト言語は識別子を短くする傾向があるから、
単純にgrepで抽出するのも困難を極める
もちろん静的型では一文字メソッドだろうと全く問題ないけどね
単純にgrepで抽出するのも困難を極める
もちろん静的型では一文字メソッドだろうと全く問題ないけどね
2017/12/08(金) 02:01:33.10ID:AScviHBw
何が言いたいかというと、リファクタリングにツールの力を借りたくなるようなものを動的型で作るなら必ずテストを書けってことだ
絶対に安全というわけではないが気休めにはなる
テストのない大規模なRubyのソースは単なる糞の山であり、確実にメンテ不能に陥る
絶対に安全というわけではないが気休めにはなる
テストのない大規模なRubyのソースは単なる糞の山であり、確実にメンテ不能に陥る
2017/12/08(金) 02:24:45.46ID:DD2Dk6IR
strArray = %w(a b c a c)
strHash = strArray.each_with_object(Hash.new(0)) { |str, h| h[str] += 1 }
p strHash #=> {"a"=>2, "b"=>1, "c"=>2}
使われている文字が、一番多いもの(複数可)と、その回数を求める。
ひとまず、Hash に使われている回数を入れたけど、
ここから最大のもの、a, c の、2回を求めるには、どうすれば良い?
strHash = strArray.each_with_object(Hash.new(0)) { |str, h| h[str] += 1 }
p strHash #=> {"a"=>2, "b"=>1, "c"=>2}
使われている文字が、一番多いもの(複数可)と、その回数を求める。
ひとまず、Hash に使われている回数を入れたけど、
ここから最大のもの、a, c の、2回を求めるには、どうすれば良い?
78デフォルトの名無しさん
2017/12/08(金) 02:44:53.49ID:yFCS8xkj >ID:AScviHBw
連投の癖から見ても例のあいつだな
話題すりかえれると思ってんのかゴミ
連投の癖から見ても例のあいつだな
話題すりかえれると思ってんのかゴミ
2017/12/08(金) 02:47:13.84ID:cpGshdOM
yFCS8xkjは例のアイツを記憶している
それぐらい例のアイツを意識しまくっている
それぐらい例のアイツを意識しまくっている
2017/12/08(金) 02:49:26.53ID:ra4CwiYK
>>79
自演バレてるぞ
自演バレてるぞ
2017/12/08(金) 02:52:47.39ID:cpGshdOM
自演じゃねーしw
例え自演だとしても、お前が例のアイツを忘れられない
ってのは事実だろう?だってそれっぽい書き込みをみたら
思い出してしまったんだし。
俺はどうでもいい人のことなんか覚えられないなぁw
例え自演だとしても、お前が例のアイツを忘れられない
ってのは事実だろう?だってそれっぽい書き込みをみたら
思い出してしまったんだし。
俺はどうでもいい人のことなんか覚えられないなぁw
2017/12/08(金) 03:03:28.70ID:M1BysAXW
今日の荒らしのIDはID:AScviHBwとID:cpGshdOMか
もっとレス稼げよカス
もっとレス稼げよカス
2017/12/08(金) 03:05:51.79ID:cpGshdOM
そういや上の方でrspecって名前が出てたけど、
rspecの使い方をマスターするのは重要だな。
contextとlet、この2つの正しい使い方は
ちゃんと理解しないといけない
たんなるグループわけとか変数の代わりではない
rspecの使い方をマスターするのは重要だな。
contextとlet、この2つの正しい使い方は
ちゃんと理解しないといけない
たんなるグループわけとか変数の代わりではない
2017/12/08(金) 03:11:55.00ID:cpGshdOM
少しヒントを出すか。
context(describe)はテスト対象のコードが複雑なら遠慮なくネストすること
もちろんテスト対象のコードはなるべくシンプルにするものだから
その場合はテストコードもcontextのネストも深くはならないのだが、
条件分岐があればそれに対応してcontextもネストさせてよい
そしてletは名前を遠慮なくかぶらせていい。
一般的には外側のスコープと同じ名前の変数を作るのは良くないことだが
describeとcontextのネストの中で、外側と同じ名前の変数は遠慮なく作っていい。
というか外側のletはデフォルト値、内側のletはそれを上書きする。そういう扱い
context(describe)はテスト対象のコードが複雑なら遠慮なくネストすること
もちろんテスト対象のコードはなるべくシンプルにするものだから
その場合はテストコードもcontextのネストも深くはならないのだが、
条件分岐があればそれに対応してcontextもネストさせてよい
そしてletは名前を遠慮なくかぶらせていい。
一般的には外側のスコープと同じ名前の変数を作るのは良くないことだが
describeとcontextのネストの中で、外側と同じ名前の変数は遠慮なく作っていい。
というか外側のletはデフォルト値、内側のletはそれを上書きする。そういう扱い
2017/12/08(金) 03:18:31.95ID:ra4CwiYK
いつもネガキャンがバレたら即自演荒らし始めるけど、
もしかして何かの病気?
もしかして何かの病気?
2017/12/08(金) 03:20:06.76ID:cpGshdOM
いつもと違う=別人 という発想に至れないのが残念な人だなw
思い込みハゲしいぜハゲ
思い込みハゲしいぜハゲ
2017/12/08(金) 03:25:08.37ID:JkPU7Xcj
>>77
x = strArray.uniq.group_by{|e| strArray.count(e)}
# 最大値
m = x.keys.max # => 2
# 最大値を返す要素
x[m]. #=> ["a", "c"]
x = strArray.uniq.group_by{|e| strArray.count(e)}
# 最大値
m = x.keys.max # => 2
# 最大値を返す要素
x[m]. #=> ["a", "c"]
2017/12/08(金) 03:25:58.22ID:ra4CwiYK
ここまで「ネガキャンをしていたのは自分です」と告白してくれる人も珍しい
こんな正直な人なかなかいない
連投する癖は相変わらずウザイけど
こんな正直な人なかなかいない
連投する癖は相変わらずウザイけど
2017/12/08(金) 03:31:15.22ID:cpGshdOM
2017/12/08(金) 03:51:22.77ID:ra4CwiYK
いつもネガキャンがバレたら即自演荒らし始めるけど、
もしかして何かの病気?
もしかして何かの病気?
2017/12/08(金) 03:52:53.67ID:cpGshdOM
だから誰と間違ってんだよw
92デフォルトの名無しさん
2017/12/08(金) 04:13:17.16ID:uDZwOU33 ネガキャン失敗を晒しあげ
2017/12/08(金) 05:21:46.31ID:ra4CwiYK
2017/12/08(金) 05:27:36.83ID:T81djMMQ
毎回同じようなこと繰り返してるけど、今のrubyで問題ないと思ってるやつのほうが相当やばいと思うけどね
95デフォルトの名無しさん
2017/12/08(金) 05:33:53.21ID:uDZwOU33 荒らし「毎回同じようなこと繰り返してるけど、今のrubyで問題ないと思ってるやつのほうが相当やばいと思うけどね」(荒す口実にしないとは言っていない)
9677
2017/12/08(金) 06:05:43.38ID:DD2Dk6IR strArray = %w(a b c a c)
strHash = strArray.each_with_object(Hash.new(0)) { |str, h| h[str] += 1 }
p strHash #=> {"a"=>2, "b"=>1, "c"=>2}
maxCount = strHash.values.max #=> 2
p strHash.select {|k, v| v == maxCount } #=> {"a"=>2, "c"=>2}
key, rassoc を使うと、最初に一致した、1つしか返さない。
p strHash.key(maxCount) #=> "a"
p strHash.rassoc(maxCount) #=> ["a", 2]
>>87
ありがとう。その方法でも出来ますね
strHash = strArray.each_with_object(Hash.new(0)) { |str, h| h[str] += 1 }
p strHash #=> {"a"=>2, "b"=>1, "c"=>2}
maxCount = strHash.values.max #=> 2
p strHash.select {|k, v| v == maxCount } #=> {"a"=>2, "c"=>2}
key, rassoc を使うと、最初に一致した、1つしか返さない。
p strHash.key(maxCount) #=> "a"
p strHash.rassoc(maxCount) #=> ["a", 2]
>>87
ありがとう。その方法でも出来ますね
2017/12/08(金) 06:34:00.66ID:T81djMMQ
今度は俺が荒らし扱いか
めんどくさいスレだな
めんどくさいスレだな
2017/12/08(金) 06:34:11.97ID:ra4CwiYK
毎回繰り返されているのはRubyに関係無い荒らしの自爆劇なんだよな
2017/12/08(金) 06:41:08.45ID:61INIGrw
単発でネガキャン繰り返してた奴=自演しながら静的静的言い続けてる荒らし
は確定か
次、荒らしがやりそうなのは
荒らしをスルーして書き込みさせてたIDでの"加勢"かな?
は確定か
次、荒らしがやりそうなのは
荒らしをスルーして書き込みさせてたIDでの"加勢"かな?
100デフォルトの名無しさん
2017/12/08(金) 07:38:48.25ID:AScviHBw 少なくともID:AScviHBwはRubyと関係ないことは言ってないし別に間違ったことも言ってないでしょ
静的型の方がリファクタリングしやすい、くらいMatzでも発言したことあるぞ
さすがにこんなのまで荒らし扱いするのはこのスレくらいだよ
静的型の方がリファクタリングしやすい、くらいMatzでも発言したことあるぞ
さすがにこんなのまで荒らし扱いするのはこのスレくらいだよ
101デフォルトの名無しさん
2017/12/08(金) 08:04:15.93ID:ZXhAMZdZ >>100
ID位変えろ。
ID位変えろ。
102デフォルトの名無しさん
2017/12/08(金) 09:57:04.25ID:v/VLqoKO103デフォルトの名無しさん
2017/12/08(金) 10:28:17.37ID:3HBH94ah それはRubyユーザーがRubyのスレでRubyについて何か書き込むのは当たり前では?
その意味で、唐突にPythonなど他の言語を持ち出す方が荒らしでは?
もう一度書くけど、RubyユーザーがRubyのスレでRubyについて書くのは当たり前では?
逆にPythonユーザーがPythonスレに何か書き込むとき
同じことがRubyにも言えたら、ここにも何か書き込まなきゃならないのか?
その意味で、唐突にPythonなど他の言語を持ち出す方が荒らしでは?
もう一度書くけど、RubyユーザーがRubyのスレでRubyについて書くのは当たり前では?
逆にPythonユーザーがPythonスレに何か書き込むとき
同じことがRubyにも言えたら、ここにも何か書き込まなきゃならないのか?
104デフォルトの名無しさん
2017/12/08(金) 11:06:13.77ID:+YVZNSfe まあ歓迎しない空気があるスレで歓迎しない話題を延々と続けるのもどうかとは思うが。
105デフォルトの名無しさん
2017/12/08(金) 12:25:20.39ID:T81djMMQ 最近のrubyの明るい話題と言えば、require 'pp' と書く必要がなくなったことくらいだな
106デフォルトの名無しさん
2017/12/08(金) 15:14:06.90ID:ra4CwiYK 荒らしよ
お前のやっている行為が荒らし行為じゃないって言うなら
ruby-listやruby-devに行けよ
お前のやっている行為が荒らし行為じゃないって言うなら
ruby-listやruby-devに行けよ
107デフォルトの名無しさん
2017/12/08(金) 15:55:17.61ID:v/VLqoKO >>103
>RubyユーザーがRubyのスレでRubyについて書くのは当たり前では?
もちろん、それなら当たり前だよ
でも ID:AScviHBw がやった、RubyユーザーでもないのにRubyスレで
Rubyに限らない一般論を連投する行為は当たり前じゃないだろ?
http://hissi.org/read.php/tech/20171208/QVNjdmlIQnc.html
たとえばRailsユーザーがRubyスレでRailsについて連投するのは当たり前じゃないし、
そこでWebProg板の専用スレへの誘導を促されても移動せずに屁理屈をこね回していれば、
その行為に対して荒らし認定されるのは当たり前だろ?
ということで、これ以上「動的型付け言語におけるリファクタリング」うんぬんを
語りたければ、専用の隔離スレがあるからそちらへ移動を願う
・静的型付け言語の潜在開発生産性は今の100倍 ×5
http://mevius.2ch.net/test/read.cgi/tech/1385273168/
・リファクタリングをただのコード修正と思ってる人へ
http://mevius.2ch.net/test/read.cgi/tech/1275121556/
>RubyユーザーがRubyのスレでRubyについて書くのは当たり前では?
もちろん、それなら当たり前だよ
でも ID:AScviHBw がやった、RubyユーザーでもないのにRubyスレで
Rubyに限らない一般論を連投する行為は当たり前じゃないだろ?
http://hissi.org/read.php/tech/20171208/QVNjdmlIQnc.html
たとえばRailsユーザーがRubyスレでRailsについて連投するのは当たり前じゃないし、
そこでWebProg板の専用スレへの誘導を促されても移動せずに屁理屈をこね回していれば、
その行為に対して荒らし認定されるのは当たり前だろ?
ということで、これ以上「動的型付け言語におけるリファクタリング」うんぬんを
語りたければ、専用の隔離スレがあるからそちらへ移動を願う
・静的型付け言語の潜在開発生産性は今の100倍 ×5
http://mevius.2ch.net/test/read.cgi/tech/1385273168/
・リファクタリングをただのコード修正と思ってる人へ
http://mevius.2ch.net/test/read.cgi/tech/1275121556/
108デフォルトの名無しさん
2017/12/08(金) 16:03:31.33ID:61INIGrw 次から初心者スレでネガキャンや自演を繰り返す輩は
ruby-listやruby-devに来れないなら荒らし認定して良いだろう
ruby-listやruby-devに来たなら書き込み時のIDとレス番をしっかり伝えて発言しろよ
ruby-listやruby-devに来れないなら荒らし認定して良いだろう
ruby-listやruby-devに来たなら書き込み時のIDとレス番をしっかり伝えて発言しろよ
109デフォルトの名無しさん
2017/12/08(金) 16:39:26.80ID:8wQDKBTk 今日のID
ID:AScviHBw
ID:cpGshdOM
ID:T81djMMQ
ID:3HBH94ah
ID:v/VLqoKO ←New!
ID:AScviHBw
ID:cpGshdOM
ID:T81djMMQ
ID:3HBH94ah
ID:v/VLqoKO ←New!
110デフォルトの名無しさん
2017/12/08(金) 20:29:36.48ID:3HBH94ah RubyユーザーがRubyに思うことを書き込むときに
他の言語にも言えることだったら書き込んではいけないというのはおかしい
他の言語は関係なかろう、Rubyユーザーなのだから
他の言語にも言えることだったら書き込んではいけないというのはおかしい
他の言語は関係なかろう、Rubyユーザーなのだから
111デフォルトの名無しさん
2017/12/08(金) 20:38:10.07ID:ra4CwiYK 初心者スレでイキってないでruby-listかruby-devにいって来いよ荒らし
112デフォルトの名無しさん
2017/12/08(金) 21:52:10.81ID:cpGshdOM おっすただいま。また誰かと俺を勘違いしてる人が
暴れてるのかな?
暴れてるのかな?
113デフォルトの名無しさん
2017/12/08(金) 21:58:28.54ID:ra4CwiYK この荒らしは自演で嘘ばかりついて人を騙す事しかしないけど、
ruby-listやruby-devの名が出た途端にダンマリ
もしかして過去に追い出された口かな?
だからruby-listやruby-devにいけないのか
ruby-listやruby-devの名が出た途端にダンマリ
もしかして過去に追い出された口かな?
だからruby-listやruby-devにいけないのか
114デフォルトの名無しさん
2017/12/08(金) 21:59:58.96ID:TcYdv7Hd ruby から numpy 使えば文句なさそう
って一瞬思ったがそれなら最初から python でいいや
って一瞬思ったがそれなら最初から python でいいや
115デフォルトの名無しさん
2017/12/08(金) 22:03:16.63ID:8wQDKBTk 100デフォルトの名無しさん2017/12/08(金) 07:38:48.25ID:AScviHBw
少なくともID:AScviHBwはRubyと関係ないことは言ってないし別に間違ったことも言ってないでしょ
静的型の方がリファクタリングしやすい、くらいMatzでも発言したことあるぞ
さすがにこんなのまで荒らし扱いするのはこのスレくらいだよ
少なくともID:AScviHBwはRubyと関係ないことは言ってないし別に間違ったことも言ってないでしょ
静的型の方がリファクタリングしやすい、くらいMatzでも発言したことあるぞ
さすがにこんなのまで荒らし扱いするのはこのスレくらいだよ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★5 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で ★2 [ぐれ★]
- 台湾声明 「台湾は独立した主権国家、中国は台湾を統治したことがなく、中国は口出しする権利ない」 中国が高市首相に抗議で ★7 [お断り★]
- 高市「金正恩総書記と会談したい」 国交ある国ですらまともに外交出来ないのに北朝鮮相手に何が出来るのこいつ [878970802]
- 日経平均、49000円割れ 国賊高市を許すな [402859164]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 【正論】有識者「高市早苗に合理的配慮をしなかった野党が悪い」 [175344491]
- 日経平均、49000円割れ 国賊高市を許すな ★2 [402859164]
- 吉村はん「高市さんは発言を撤回する必要ないですよ。中国の大阪総領事が謝罪すべき」 [256556981]
