2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Ruby 初心者スレッド Part 60

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

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

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

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

逆引きRuby
http://www.namaraii.com/rubytips/

2 :デフォルトの名無しさん:2017/04/29(土) 02:04:15.15 ID:urVXnFrH.net
埋めちゃったんで立てた

3 :デフォルトの名無しさん:2017/04/29(土) 02:11:02.44 ID:BB1qYBqv.net
>>1
Rubyもっと流行って欲しいよー

4 :デフォルトの名無しさん:2017/04/29(土) 09:19:50.66 ID:+NUMWd7U.net
>>1

5 :デフォルトの名無しさん:2017/04/29(土) 09:29:52.67 ID:/b3MraXM.net
>>前1000
どうしてもインデックスの計算やメンバ検索などで
間にRubyのコードが入ってしまうので結局遅くなるよ

6 :デフォルトの名無しさん:2017/04/29(土) 10:05:49.82 ID:LxFH88XB.net
まつもとがmrubyに力いててるからなぁ
Ruby3頑張ってほしいわ

7 :デフォルトの名無しさん:2017/04/29(土) 10:08:09.41 ID:gzSp69Zc.net
Matzは最適化には興味ないでしょ
大半のRubyプログラマも然り

8 :デフォルトの名無しさん:2017/04/29(土) 11:21:01.87 ID:AcfKxaUU.net
コンパイラはできんのか

9 :デフォルトの名無しさん:2017/04/29(土) 12:46:44.81 ID:eMb5q7il.net
10レスくらいあれば落ちない?

10 :デフォルトの名無しさん:2017/04/29(土) 13:09:14.76 ID:AqsgnRmH.net
Mastodonの急な流行によりRubyに脚光が!

浴びてないな
浴びてないね
Railsも微妙

11 :デフォルトの名無しさん:2017/04/29(土) 16:27:48.07 ID:cjUk9ycm.net
>>8
mruby-cli?
mrubyからDLLを叩けるようになればWin32ネイティブで動くアプリを作れそうとは妄想している

mrubyは2.x.xと比べてもかなり遅いのが悩みどころ。2.x.xのつもりで書いていると速度が悲しいことになる

12 :デフォルトの名無しさん:2017/04/30(日) 04:15:05.53 ID:C4fcJeOa.net
JRubyのドキュメント少ないなあ
JRuby+JavaFXでGUIアプリ作ってみたい

13 :デフォルトの名無しさん:2017/04/30(日) 07:04:15.22 ID:HZc5pT/v.net
JavaFXの方もほとんど誰も使ってないぞ
パイオニアといえば聞こえはいいが後を追う人も誰もいなさそう

14 :デフォルトの名無しさん:2017/04/30(日) 10:18:17.54 ID:V7fCcZ2D.net
JRubyFX便利

15 :デフォルトの名無しさん:2017/04/30(日) 10:59:05.21 ID:HKpgHA6l.net
JRubyってCRubyより実行が速いって言われるけど自分が使う範囲だと遅いんだよなぁ
起動とかCRubyだと10msもかからないプログラムの終了に数秒かかるしあほらしくなるくらい遅いし
肝心の実行速度自体も速くない。1.8.x比ならともかく2.x.x比だと優位性は感じられなかった

16 :デフォルトの名無しさん:2017/04/30(日) 11:54:58.94 ID:ZnazSADk.net
rubyで書かれたデスクトップアプリは何があるんだろう
個人的に知らないので、有名所があれば教えて欲しい

17 :デフォルトの名無しさん:2017/04/30(日) 12:16:26.06 ID:VPr4LyhY.net
有名なものはない

18 :デフォルトの名無しさん:2017/04/30(日) 12:19:05.53 ID:raNlWE+W.net
遅すぎてCに戻る。

19 :デフォルトの名無しさん:2017/04/30(日) 12:23:47.65 ID:HKpgHA6l.net
昔プライベートなGUIツールをwxRuby+exerbで作ったことがあるけど大分苦労させられた

20 :デフォルトの名無しさん:2017/04/30(日) 12:53:10.79 ID:eW5YwfF4.net
RubyでGUIは遅すぎて話にならなかった記憶しかない。

21 :デフォルトの名無しさん:2017/04/30(日) 12:56:04.44 ID:VPr4LyhY.net
wxはPythonの方が造りやすい

22 :デフォルトの名無しさん:2017/04/30(日) 12:56:45.45 ID:Yjf3oY9z.net
ほとんどc/c++だから遅くはならんでしょ

23 :デフォルトの名無しさん:2017/04/30(日) 13:05:44.18 ID:eW5YwfF4.net
いんや。
起動がdll読みまくりだからC#の起動時よりさらに遅いのよ。
起動が終わればまあ、気にするほどじゃ無いんだが。。。
C#の起動でさえ焦れったいから、我慢の限界超える遅さ。

24 :デフォルトの名無しさん:2017/04/30(日) 13:27:18.11 ID:HKpgHA6l.net
wxRuby+exerbで作った奴は一瞬で起動するよ
Javaや.NETの方が遙かに待たされる
Ruby2.x.xでwxが使えればなぁ・・・

25 :デフォルトの名無しさん:2017/04/30(日) 13:56:27.67 ID:GKlomiNq.net
で、結局今はGUIは何で作るの?

26 :デフォルトの名無しさん:2017/04/30(日) 14:02:35.33 ID:HKpgHA6l.net
HTMLですむ&RScriptをインストール出来るならActiveScriptRubyを使ってHTAと言う手もあるな
GUIを英語とにらめっこせずに標準的に書けるから結構楽

27 :デフォルトの名無しさん:2017/04/30(日) 14:58:18.35 ID:VPr4LyhY.net
>>25
少なくともRubyは使わない

28 :デフォルトの名無しさん:2017/04/30(日) 15:29:46.79 ID:HKpgHA6l.net
Rubyは遅いと言われるけど実際の処理だとそうでもないんだよなぁ
大容量のバイナリデータを読み込んでゴリゴリ演算するような用途だと
PythonやLuaにしたところでインタプリタ稼働率の上昇やI/O性能で
コーディング量が増える割に速くならない
Rubyでも標準のCライブラリを積極的に使うような書き方をすると以外と
大差ない速度が出ちゃったりするし

29 :デフォルトの名無しさん:2017/04/30(日) 15:47:34.18 ID:VPr4LyhY.net
CPUの進化に助けてもらってる面はある

30 :デフォルトの名無しさん:2017/04/30(日) 16:25:39.24 ID:HKpgHA6l.net
CPUはあまり関係なくね?自分は同じマシンで比べているよ
ベンチマークによってはRubyはPythonやLua(JITな奴)の1/数やそれ以下の速度しか出なかったりするけど
自分が試した限りそんなことはないな。圧倒的な速度で処理できるのかと期待すると肩すかしになる

JRubyやIronRubyも同じで、速くはならないどころか自分が試した限りでは遅くなったw
起動が遅くて実行も遅いのでは出番なし

31 :デフォルトの名無しさん:2017/04/30(日) 17:19:13.39 ID:Yjf3oY9z.net
今のJRubyって滅茶苦茶速いはず

32 :デフォルトの名無しさん:2017/04/30(日) 18:11:13.89 ID:GKlomiNq.net
エレクトロンの本ポチってみた
これでGUI作ってみるわ・・・

33 :デフォルトの名無しさん:2017/04/30(日) 19:03:42.97 ID:HKpgHA6l.net
>>31
ホントに?自分が試したのは1年ちょっと前くらいだからそんなに大昔じゃないぞ
当時すでにJRubyの速度はCRubyに対して明確に速いのが常識的な風潮だったんで
試してみたら全然そんなことなかった

今作っているのがCRuby 2.1.xで数十秒から数分かかる代物なんでこれが1/数で終わると嬉しいなぁ

34 :デフォルトの名無しさん:2017/04/30(日) 21:18:20.36 ID:V7fCcZ2D.net
当たり前のことだけど何をやらせるかにも依るでしょ

35 :デフォルトの名無しさん:2017/04/30(日) 23:56:49.84 ID:HZc5pT/v.net
>>33はきっとライブラリの実装がボトルネックになってるんだろうな

36 :デフォルトの名無しさん:2017/05/01(月) 00:37:35.10 ID:U8II69aQ.net
簡易的な計測なので参考程度だけど計ってみた

処理内容
 25MB程度のWaveファイル読みながらフィードバックタイプのエフェクトを掛けてWaveファイルに吐き出す
 読み出しはダブルバッファリング。書き出しは直書き
計測方法
 数回計ってそれっぽい時数を採用
jruby 9.1.8.0 (2.3.1) 2017-03-06 90fc7ab Java HotSpot(TM) Client VM 25.25-b02 on 1.8.0_25-b18 +jit [mswin32-x86]
 65sec程度 メモリの使用は440MB程度
ruby 2.1.2p95 (2014-05-08 revision 45877) [i386-mswin32_100]
 75sec程度 メモリの使用は200MB程度
ruby 2.4.0p0 (2016-12-24 revision 57164) [i386-mswin32_100]
 90sec程度 メモリの使用は130MB程度
インタプリタの起動時間は含まないからJRubyはこれに2〜3秒加算される
jruby 1.7.12だと100秒以上かかっていたからかなり速くなっているけど、CRubyと
比べて劇的に速いってほどじゃないな。速度差はGCのさじ加減のような気も・・・
あと2.4を使ったら速くなるかと思ったら遅くなったw

37 :デフォルトの名無しさん:2017/05/01(月) 01:09:37.50 ID:U8II69aQ.net
ruby 2.4.0p0 (2016-12-24 revision 57164) [x64-mswin64_100]
 70sec程度 メモリの使用は230MB程度
やっぱりCGのさじ加減?

38 :デフォルトの名無しさん:2017/05/01(月) 01:13:18.27 ID:P+4F2YiV.net
>>36
それIOがネックになってないか?
CPU使用率を開示せよ

39 :38:2017/05/01(月) 01:16:50.69 ID:P+4F2YiV.net
すまん、正確には「IOのためのAPI呼び出しのコスト」だな
CPU使用率が仮に100%でもRubyコードそのものの実行時間を測ってるのかどうかは疑わしいよ

40 :デフォルトの名無しさん:2017/05/01(月) 02:30:50.38 ID:fBLf4yNS.net
メモリ節約と速度は反比例するのは常識だが。。。

41 :デフォルトの名無しさん:2017/05/01(月) 03:01:26.20 ID:U8II69aQ.net
>>38
IOは足を引っ張っている。最初は処理単位(2Byteや4Byte)で呼んでいて洒落にならないほど遅かった
今は512KB単位で読み込んでいる。25MB程度の場合はreadの呼び出し回数が50回程度の
はずでかなり抑えられているはず
ただしバックグラウンドで読んでいるためにオーバーヘッドは増えている

オンメモリで処理すれば多少速くなるのは確かだろうけど扱うデータ量が多いと数百MBに達する
可能性があることを考えるとあまり現実的はないか

dl経由でCreateFileを叩いてFILE_FLAG_SEQUENTIAL_SCANを付けて開いてWinAPI経由で読み込むとか
などまだ改善しそうな策はあるけどどこまで速くなるかは何とも・・・

42 :デフォルトの名無しさん:2017/05/01(月) 07:02:53.40 ID:lT1GiCV3.net
>>40
そんなことはない
速い言語ではメモリアクセスがボトルネックになることもある
それに、能力の低いプログラマはやたらとメモリを食うプログラムを作る傾向がある

43 :デフォルトの名無しさん:2017/05/01(月) 07:18:13.85 ID:fBLf4yNS.net
画像処理みたいに同じデータにアクセスするコードが少ないか、Rubyインタプリタみたいにループで同じデータ(この場合Rubyコード)にアクセスするコードが多いかの違いだろ。

メモリ確保した割に速くなかったからバランス取ったんじゃねーの?

44 :デフォルトの名無しさん:2017/05/01(月) 08:19:56.73 ID:3OyRI7P6.net
caseでラベルがラベルではなくラベルの文字列としかマッチしないって酷い仕様だな
アリエンティーすぎる

45 :デフォルトの名無しさん:2017/05/01(月) 08:40:59.02 ID:3OyRI7P6.net
そんなことはなかった
木の生だった

46 :デフォルトの名無しさん:2017/05/01(月) 09:42:14.76 ID:B7FMiEuI.net
Ruby初心者スレ的には使用メモリを気にするのは初心者の証
こういうスクリプト言語なんて自分のぶんの処理が速ければそれでいいのだ
ただし脱中級者認定要件に「Cレベルでのメモリ動作を理解し適宜気にする」という項目があるにはあるがw

47 :デフォルトの名無しさん:2017/05/01(月) 10:18:46.45 ID:lXMk8r4o.net
def f1(n,r)
n
end
def f3(n,r)
(n+1)%2
end
def f4(n,r)
n%2
end
def f5(n,r)
(n%r)==0?1:0
end
fs=[f1,f1,f3,f4,f5]
fs[3](21,7)
みたいに関数を配列に入れて使いたいんだが触って5時間の初心者なんでわからん。
具体的なコード教えてくれめんす。

48 :デフォルトの名無しさん:2017/05/01(月) 10:34:15.38 ID:B7FMiEuI.net
>>47
技術的には可能ではあるがカレーを箸で食べる方法を工夫するようなものだ
まずは何を食べるときの話なのか教えてくれると最初からスプーンを勧めることができるぞ

49 :デフォルトの名無しさん:2017/05/01(月) 10:47:11.79 ID:lXMk8r4o.net
ありがとうございます。
詳細は明かせないです(説明すると人として恥ずかしいレベルのあれやこれやの理由で)。

関数の集合と適用順番を求める処理が上位にあって。
そこから降ってきたものを具体的に計算したりするときに使いたいのです。
引数の値に対応する関数リストがあるときに関数の適用順序をif文で分岐するとコードが偉いことになるので。
引数に1が来たら関数2,3,5
引数に2が来たら関数3,7,8,12,23
、、、
引数にnが来たら関数1,13を適用
みたいな対応表で、if文で適用関数を区別せず、リストとかで処理を記述したいわけです。

50 :デフォルトの名無しさん:2017/05/01(月) 11:04:38.77 ID:F35eYYLf.net
>>49
単純に引数で処理変えたいなら、case文で場合分けすればええんで?
def fn(a,b,c)
case a
when a = 1
puts sum = b + c
puts sum = 2*b
when a = 2
puts sum = b - c
when a = 3
puts sum = b * c
when a = "div"
puts sum = b / c
end
end

fn(1,10,5)
#=>15
#=>20
fn(2,10,5)
#=>5
fn(3,10,5)
#=>50
fn("div",10,5)
#=>2

51 :デフォルトの名無しさん:2017/05/01(月) 11:18:46.93 ID:ZySc29+x.net
Ruby始めてすぐなのならどっかででっかい条件分岐させて「実行したいメソッドとその処理順方法」を記した何かを紐づける記述が絶対に必要
それをたとえばデータ配列なんかに持つことは愚行であって(だいいちそのデータだけ見てもなにしてるか読めないし改変追加しんどいだろ)
素直に地の文で論理を記述するべきだろうね

てなわけで被らない分岐をすべて>>50のcaseで分岐させ、メソッドを実行する順番を書いただけの分岐後専用メソッドにぶん投げるのが妥当では
分岐が数十個超あるならクラス作ってファクトリーメソッドとかあのへんに行くんだろうけど1か月くらい早いと思う

52 :デフォルトの名無しさん:2017/05/01(月) 11:23:20.88 ID:F35eYYLf.net
話脱線するけど、上のメソッドにp使うと
p fn(2,10,5)
#=>5
#=>nil
って表示されるけど、何に対してnilを出してるのかが分からん

53 :デフォルトの名無しさん:2017/05/01(月) 11:44:56.25 ID:hzoMRY/L.net
>>42
firefox/realplayerの悪口はもっと言え

54 :デフォルトの名無しさん:2017/05/01(月) 11:53:49.39 ID:ZySc29+x.net
>>52
Rubyのメソッドはすべて戻り値を返す
返すべき適当な値がない場合はnilを返す
んでirbとかはメソッド戻り値も律儀に表示する
irb> def m1; end
irb> m1
=> nil
そいで画面表示するメソッドを使うと標準出力内容とメソッド戻り値が2段表示になる

55 :デフォルトの名無しさん:2017/05/01(月) 11:54:30.99 ID:L3YRsyvl.net
putsの返り値がnilだからでしょ

56 :デフォルトの名無しさん:2017/05/01(月) 11:54:54.16 ID:lXMk8r4o.net
親切な返答ありがとうございます。
なるほど全然ダメな発想だったのですね私。

将来的な話なのですが、ゲームの雑魚敵を配列に入れた複数の関数で動きや思考や攻撃防御を制御して、
雑魚敵の部位ダメージ量や探索モードや怒りモードなどへの条件を満たすと、配列内の関数を入れ替えることで雑魚敵の挙動を制御したい。
という現時点での目標があります。

とりあえず教えてもらったコードを理解できるか今から頑張ってみます。

57 :デフォルトの名無しさん:2017/05/01(月) 11:56:43.97 ID:F35eYYLf.net
>>54
メソッドの戻り値だったのか、ありがとん

58 :デフォルトの名無しさん:2017/05/01(月) 21:44:37.52 ID:+TVy5Krd.net
ロボットの動きなどは、case文で書く方がまれ。
右に動く関数とか、上に動く関数とかを、Hash か配列に入れておく

キーマップなどもそう。
キー A〜Z に該当する動きを、case文で書くのは大変

呼び出される処理を、ブロックで書く。
ブロックを呼び出すのは、yield

yield(引数)とすると、その引数は、ブロック引数として渡ってくる。
{ |引数| 処理 }
処理が2行以上あるなら、do 〜 end を使えばよい

-> (引数){ 処理 }
lambda{ |引数| 処理 }

Proc.new{ |引数| 処理 }
proc{ |引数| 処理 }

Proc.new, proc では、return が使えないから、->, lambda を使えばよい

59 :デフォルトの名無しさん:2017/05/03(水) 02:23:03.67 ID:wSFjLMka.net
>>56
enemy[0]=Slime.new
enemy[1]=Goblin.new
enemy[1].state=Angry.new
enemy[0].action #普通に弱い
enemy[1].action #Angryのメソッドにより強い

こういうことならオブジェクト指向について学ぶといい
ただ敵の数が多いとハードコーディングしないでメタプログラミングのがいいかもな
基礎を覚えたら

60 :デフォルトの名無しさん:2017/05/03(水) 23:40:20.15 ID:zkWNfzXl.net
スライムとゴブリンを別のクラスにする意味はないだろ
そんなもんデータが違うだけ

61 :デフォルトの名無しさん:2017/05/04(木) 00:17:43.27 ID:PMOSX9lZ.net
普通、スライムとゴブリンは、振る舞い・攻撃パターンが異なるから、
別の基本クラスを継承する

スライムは、無形モンスター。
ゴブリンは、小鬼か妖精族?

62 :デフォルトの名無しさん:2017/05/04(木) 01:07:10.81 ID:kDn7ReiV.net
ちょっと古い DXRubyの話かと思った

63 :デフォルトの名無しさん:2017/05/04(木) 01:10:22.16 ID:kDn7ReiV.net
2dのRPGやシューティングは作りやすかったけど
3dは他の使った方が良い

興味ないか……

64 :デフォルトの名無しさん:2017/05/04(木) 03:22:55.23 ID:ufmsKYbO.net
>>60
基礎を覚えたらと書いてあるだろ

65 :デフォルトの名無しさん:2017/05/04(木) 10:08:11.63 ID:4jJ2tlWM.net
いま流行りのますとどん

Rubyを学ぼうというインスタンスはないものか

66 :デフォルトの名無しさん:2017/05/04(木) 23:01:56.14 ID:TB6ujr0/.net
rubyの求人が無くて泣く
プログラマになりたいと思って勉強したのに・・・…
これからrubyとrailsの需要が爆発的に伸びるとかってありえますか?

67 :デフォルトの名無しさん:2017/05/04(木) 23:38:24.44 ID:ufmsKYbO.net
>>65
立てていいぞ

68 :デフォルトの名無しさん:2017/05/04(木) 23:41:48.41 ID:ufmsKYbO.net
>>66
オブジェクト指向とか別の言語だろうと役に立つ
構文覚えただけならrubyの仕事増えようと役に立たない
それか言語を規定してない仕事でrubyを提案すればいいだろ

69 :デフォルトの名無しさん:2017/05/04(木) 23:44:35.87 ID:lRx89izX.net
RubyもRailsも落ち目で衰退する一方だよ
でも所詮それらは道具であり大して重要なことではない
AWSとかのインフラ方面の知識を身につけて一通り自分で作れるようになるとか、
実際にサービス作って運用してみるとか
とにかくモノ作れる奴にはいくらでも働き口はある

70 :デフォルトの名無しさん:2017/05/04(木) 23:50:13.53 ID:rtRP+bqL.net
趣味または職業プログラマーとして「生きていく」のにRubyは強力に役立つ
ただし職業プログラマーとして「働く」のにはあまり役に立たない

これはそういうものだ
食べていくのならRubyだけじゃなくRuby「とそれ以外」を身に着けろ

71 :デフォルトの名無しさん:2017/05/05(金) 00:40:00.34 ID:ayKeenIH.net
それってRuby以外の言語でも言える事じゃね?

というか国はプログラマーの育成に力を入れているようだけどその実態はコーダーの育成
世界で戦っていく上で必要なのは英語の意味でのシステムエンジニア(≠ソフトウェアエンジニア)だろ・・・

72 :デフォルトの名無しさん:2017/05/05(金) 00:42:47.93 ID:YKLEnk0e.net
ハローワークでも、Pythonの求人は、ほとんどないけど、

Rubyの求人は、たまに見る

73 :デフォルトの名無しさん:2017/05/05(金) 01:01:51.97 ID:78DJCXmh.net
Ruby覚えたら次はJavaでもC#でも飯の種になりそうな言語覚えれば良いじゃん
他の言語について知ると元の言語の理解も深まるから
それこそプログラマとして働くなら特定の言語だけしか使えないなんてありえないよ

74 :デフォルトの名無しさん:2017/05/05(金) 01:05:47.85 ID:TDjvniVu.net
日本に必要なのは質の高いプログラマーだと思うぞ
世界で戦えるサービスやアプリが少ないのはプログラマーの質の問題が大きい

教育面で言えばごくごく一部の大学と大学院を除くと
日本の大学よりCourseraで受けられる講義のほうがレベル高いからな
小学生にプログラミング教育するより高等教育に力入れないと話にならん

あとハローワークは知らんがRubyの求人は普通にあるよ
Rubyで人とるようなところはハロワに出さないだけじゃないの
リクナビとか一般的なサイトで調べてみたら?

75 :デフォルトの名無しさん:2017/05/05(金) 01:44:48.67 ID:mu06C9qQ.net
文法覚えて食えるんだったらせわないわ。

76 :デフォルトの名無しさん:2017/05/05(金) 02:14:13.82 ID:iQB12R96.net
とりあえずRubyで色々作れるなら、他の言語でも文法とライブラリ覚えりゃ作れるでしょ。
ある日Javaでこれ作って。って言われたらJava入門書とWebのドキュメントで翌日には学びながら作り始めるのが当たり前の世界よ?

ソースはおいら。

77 :デフォルトの名無しさん:2017/05/05(金) 15:07:31.63 ID:K1twnG6D.net
ねえねえ、Rubyバイナリのバージョン管理って今でもrbenvでいいの?

78 :デフォルトの名無しさん:2017/05/05(金) 19:19:15.08 ID:u3v3zIiy.net
https://ideone.com/baTUOX
二乗の和をもとめたいのですが,うまくいきません

https://ideone.com/may0rV
との違いはなんでしょうか?

79 :デフォルトの名無しさん:2017/05/05(金) 19:33:23.14 ID:78DJCXmh.net
>>78
https://ideone.com/zCU275
評価順が違う
戻り値をそのまま使う時は {}
そうでなければ do end が普通かな

80 :デフォルトの名無しさん:2017/05/05(金) 19:55:45.07 ID:yiYPdEw2.net
これはdo...endと{}の結合の強さの違いによる問題だね
ここ参照して
http://rurema.clear-code.com/2.4.0/doc/spec=2fcall.html#block
上でも言われてるけどブロック付きメソッドの戻り値をpしたいときは{}使わないと思ったように動かないよ

81 : :2017/05/05(金) 19:56:57.31 ID:u3v3zIiy.net
>>79
コメントありがとうございます.

しかし手元の教科書(たのしいruby)では
obj.method(list) do | ブロック変数|

end



obj.method(list) { | ブロック変数|

}
は互換であると書いてあります.評価順序の違い,とは >>78 のプログラム例では,どのような順序になるから,違う,といえるのでしょうか?

82 :デフォルトの名無しさん:2017/05/05(金) 20:02:27.64 ID:yiYPdEw2.net
例えば
p (1..10).map{|i| i**2}
は(1..10).map{|i| i**2}の戻り値をpするけど
p (1..10).map do |i| i**2 end

p((1..10).map) do |i| i**2 end
と同じ動きをする。
互換というのは明らかな誤謬。

83 : :2017/05/05(金) 20:05:43.45 ID:u3v3zIiy.net
>>82
なるほど,よくわかりました
丁寧な回答ありがとうございました

84 :デフォルトの名無しさん:2017/05/05(金) 20:10:13.54 ID:yiYPdEw2.net
ついでに、いちいち書き換えるのが面倒なら
(1..10).map do |i| i**2 end.display
(1..10).map do |i| i**2 end.tap{|e| p e}
とかって書くのもありだね

85 :デフォルトの名無しさん:2017/05/05(金) 20:20:15.00 ID:sevG6PSJ.net
mapをdo end で書くのキモい

86 :デフォルトの名無しさん:2017/05/05(金) 23:25:26.52 ID:G0OfeBgr.net
結合の強さって初めて知ったわ
こんな仕様あったのか

87 :デフォルトの名無しさん:2017/05/06(土) 14:02:42.85 ID:2cSynca3.net
教えてください。(当方Rubyまったく無知です。)

下記のスクリプトを走らせるとSSLエラーが出るので、
拾ってきた証明書を読ませて何とかしたのですが、
open-uri.rb:359:in `open_http': 403 Forbidden (OpenURI::HTTPError)
と、エラーが出ます。UserAgentや認証やら何かでけられてると思うんですが。
403.1とかのサブエラー返してくれればまだしも原因わからず。

※Yahooボックスから一括DL
ttp://lp6m.hatenablog.com/entry/2016/08/12/184232

88 :デフォルトの名無しさん:2017/05/06(土) 14:25:24.99 ID:5w6KEOXn.net
つまりそのためにYahooのアカウント取ってBOXに何か入れて検証しろと

89 :デフォルトの名無しさん:2017/05/06(土) 18:26:04.98 ID:l3lhsLeM.net
普通に認証失敗してんだろ
認証に成功してるかどうかもわからないコード使って
Ruby無知です、わかりません、教えてくださいって酷いゆとりだね

90 :デフォルトの名無しさん:2017/05/06(土) 18:31:44.81 ID:5w6KEOXn.net
Rubyを学んでいないのならこんな古臭いスクリプトをわざわざRuby入れて使う必要はない

91 :デフォルトの名無しさん:2017/05/06(土) 19:32:19.76 ID:s8HixK2i.net
yahoo box さらうプログラムなら他にもあるよな

92 :デフォルトの名無しさん:2017/05/06(土) 20:03:38.15 ID:2cSynca3.net
自覚も無い人間の屑共が消えろゴミカス

93 :デフォルトの名無しさん:2017/05/06(土) 20:23:44.39 ID:s8HixK2i.net
私たちはあなたのような人を売るほど見てきてるのですよルンルン

94 :デフォルトの名無しさん:2017/05/07(日) 03:19:50.14 ID:edBtKeoY.net
>>80-84
{ }, do〜end は互換じゃなかったのか!

しかし、ブロックの外側に、p を付ける方が、おかしい!

ブロックの外側に、p を付けるって事は、ブロック全体の戻り値を表示する事になる。
ブロック内の各処理の結果じゃない

95 :デフォルトの名無しさん:2017/05/07(日) 03:25:08.49 ID:edBtKeoY.net
>>87-92
たぶん、Rubyの問題ではない

「403 Forbidden OpenURI::HTTPError」で検索!

96 :デフォルトの名無しさん:2017/05/07(日) 04:53:57.72 ID:cg7edk1d.net
case文書く時に
case 比較したいオブジェクト名
when 値1 then
文1
って書いてあるけど
別に比較したいオブジェクト名を省略しても動くよね
ただリファレンス見てもその辺の注釈が無いけど、どういう理屈で動いてるんだろう

97 :デフォルトの名無しさん:2017/05/07(日) 08:48:03.37 ID:xlJMQ4jE.net
>>96
caseに値を指定するかどうかでwhenの値の扱いが変わる
特に不思議な仕掛けがある訳じゃなく、単純に文法上別の動作をするってだけのこと
リファレンスにも普通に書いてあるぞ

98 : :2017/05/07(日) 10:30:19.21 ID:qkFjvNg9.net
>>94
>しかし、ブロックの外側に、p を付ける方が、おかしい!
なるほど、何もしらない初学者だから、こういったこともよくわかっていなかったのです
今後ともよろしくお願いいたします。

今演習をしていますが、
s = "Ruby is an object oriented programming language"
に含まれるアルファベットの頻度をカウントしようとして
s.each_char do |c| で、手がとまっています

99 :デフォルトの名無しさん:2017/05/07(日) 10:32:21.91 ID:ZvN12MF9.net
そうですか頑張ってください

100 :デフォルトの名無しさん:2017/05/07(日) 10:49:01.57 ID:yCqO92dr.net
s.chars.uniq.each_with_object({}){|c,h|h[c]=s.count(c)}

101 :デフォルトの名無しさん:2017/05/07(日) 10:50:54.94 ID:yCqO92dr.net
あと別にブロックの外側に、p を付ける事はおかしくない
ブロック全体の戻り値が知りたいときだってあるでしょう

102 :デフォルトの名無しさん:2017/05/07(日) 11:42:11.78 ID:cg7edk1d.net
>>97
よく読んだらcase文の最後の所に
省略した場合の挙動が書いてありました・・・・・・申し訳ないです
しかしこれで色々と楽が出来そうです、ありがとうございました

103 :デフォルトの名無しさん:2017/05/07(日) 14:43:52.81 ID:bug3EadL.net
>>98
Rubyに限った話じゃないけどある処理を実装しようとする時は
その処理の入力と出力の型を最初に考えるといいと思うよ
(厳密に定義されてる型じゃなくても別によくて入出力の形式くらいの意味)

例えば
文字列の文字出現頻度をカウントするメソッドの入出力は
string -> hash {“a” => 3, “b” => 5, …}

でeach_charに渡すブロックの入出力は
char -> hash

でcharを1つずつ受け取って意図したhashを返すにはどうするのかを考える

104 :デフォルトの名無しさん:2017/05/07(日) 15:02:27.91 ID:bug3EadL.net
(続き)
例えば特定の文字が出てくるたびにインクリメントすればいいと考えれば
最初は↓こういう実装でもいい

s = "Ruby is an object oriented programming language"
result = Hash.new(0)
s.each_char do |char|
result[char.downcase] += 1
end

上のコードが手続き的で副作用が気持ち悪いと思うようになってくればreduceに変える
s.chars.reduce(Hash.new(0)) {|result, char| result[char.downcase] += 1; result}

reduceだとブロックの最後に明示的にresultを返してやらないといけないのが美しくないと思えばeach_with_objectに変える
s.chars.each_with_object(Hash.new(0)) {|char, result| result[char.downcase] += 1}

文字の集合をgroup byすればいいというふうに考えれば↓こういう感じとか(パフォーマンスは上のほうがよいけど)
s.chars.group_by{|char| char.downcase}
.map{|key, value| [key, value.length]}
.to_h

入出力の型を考えて、ロジックを考えて、ロジックをコードで表現する方法を見つける

105 :デフォルトの名無しさん:2017/05/07(日) 15:19:04.40 ID:2pnfBwSz.net
>>104
副作用の意味分かってる?

106 :デフォルトの名無しさん:2017/05/07(日) 15:42:28.57 ID:3+oylOXC.net
大学すら行ったことのない人は「演習」の意味も分からず>>103-104みたいなことを書くのだ
気をつけようね

107 :デフォルトの名無しさん:2017/05/07(日) 16:16:42.30 ID:2pnfBwSz.net
reduceは考え方が手続き型に近いので、関数型特有のトップダウンな思考が身についてない人にも馴染みやすいためか、低スキルな人が好んで使うよね
故に>>104のように無自覚に副作用書いちゃう馬鹿野郎も多い

108 :デフォルトの名無しさん:2017/05/07(日) 18:08:01.01 ID:vOdx9BxG.net
ここでネタ書いてる人がいる.

http://jbpress.ismedia.jp/articles/-/49927?page=3

109 : :2017/05/07(日) 18:18:09.31 ID:qkFjvNg9.net
ruby の記述力には感動すら感じさせられますね
今回、必要があって ruby を始めましたが、末永くお付き合いさせていただくことになりそうですね、C/C++ だけに眠っていたのは損失でした…

110 :デフォルトの名無しさん:2017/05/07(日) 20:38:50.83 ID:YLCveNdh.net
>>108
自己紹介GJ

111 :デフォルトの名無しさん:2017/05/07(日) 21:06:49.51 ID:edBtKeoY.net
>>98
>s.each_char do |c| で、手がとまっています

手が止まるのは、習っていない事をしようとするから。
そりゃ出来ないはず

先に「たのしいRuby 第5版、2016」を3回読めば、ほとんどの事は書いてある

112 :デフォルトの名無しさん:2017/05/07(日) 21:36:25.47 ID:vOfy+8Oj.net
>>104
すでに>>105が指摘しているけど、破壊的代入は副作用の一つだよ

副作用の無い「関数型プログラミング」と呼ばれる作法に従えば、
以下のコードになる

http://ideone.com/d48CGm

詳しくは以下の文書を参照
・Rubyによる関数型プログラミング
 http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.html

あと蛇足を加えると:
・上記のコードでは、reduce ではなく inject を用いた
・効率という視点では破壊的代入を用いる>>104のコードのほうが優れている
・わざわざメソッド String#chars で文字列を文字の配列に展開するよりも、
 ブロックを伴わないメソッド String#each_char は列挙オブジェクト
 (enumerator)を返すから、それを直接inject(あるいは reduce)へ
 チェーンさせたほうが効率的である

113 :デフォルトの名無しさん:2017/05/07(日) 21:47:04.67 ID:hR29VPCg.net
>>109
ちゃんと覚えるつもりならRubyの一般的なコーディングルール調べてからのほうがいいよ
自然に do end と {} の使い分けも出来るように考えられてたりとか
無駄な時間を減らせるようになってる

114 :デフォルトの名無しさん:2017/05/07(日) 22:19:19.16 ID:3+oylOXC.net
reduceという別名をつけてくれたのはありがたいことだと思う
厄介な人間の区別がつけやすくなったからな

115 :デフォルトの名無しさん:2017/05/07(日) 22:25:07.52 ID:yCqO92dr.net
LISPER大激怒

116 :デフォルトの名無しさん:2017/05/07(日) 22:28:15.75 ID:vQOCcspz.net
enumeratorが効率的なわけがない

117 :デフォルトの名無しさん:2017/05/07(日) 22:37:40.27 ID:3+oylOXC.net
>>115
Rubyのreduceは別にreduceしてるわけではないし
関数型やってるわけでもないのに「わざわざ」reduceと呼ぶのは
・reduceの動作を理解していない
・Rubyと他の関数型言語等との区別をつけられていない
という点で危険人物の可能性が高い
そして実際にそうだったわけであって

118 :デフォルトの名無しさん:2017/05/08(月) 00:02:12.04 ID:H9Jpde9f.net
>>112
副作用って書いたのはステートメント単位の話ね

each_charとcharsの違いはたかだか知れてるけど
インクリメントのたびに新しいHash作ってたら
100倍・1000倍のオーダーでパフォーマンス変わるよ

119 :デフォルトの名無しさん:2017/05/08(月) 00:17:01.28 ID:cPdEWfXE.net
Rubyではほとんどの場合injectだよな
reduceという名前で書きたい処理だと思ったことはRubyではまだないわ
名前重要、は組み込みライブラリにも適用されるのだ

120 :デフォルトの名無しさん:2017/05/08(月) 01:00:12.59 ID:H9Jpde9f.net
パフォーマンス比較
http://ideone.com/coBqfF

121 :デフォルトの名無しさん:2017/05/08(月) 01:16:43.69 ID:RkG8OoQA.net
ループはwhile最強のはずと思ったけど、配列や文字列の添字参照は引数のパースにコストがかかるし
何文字目か数えないといけないからeach_charsのほうがマシだな

122 :デフォルトの名無しさん:2017/05/08(月) 05:42:30.32 ID:WmCrZwJe.net
effective rubyに倣ってreduceだわ

123 :デフォルトの名無しさん:2017/05/08(月) 13:18:08.61 ID:iGkkPwEU.net
Rubyist Magazine - map と collect、reduce と inject ―― 名前の違いに見る発想の違い
http://magazine.rubyist.net/?0038-MapAndCollect

俺はmap/reduce派

124 :デフォルトの名無しさん:2017/05/09(火) 00:44:03.70 ID:AJpeMRYn.net
>>123
長ったらしいな。

まず、Rubyは他の言語を参考にした。
map と collect、reduce と inject と2つあるのは
Lispを参考にした名前が、mapとrecude、
Smalltaikを参考にした名前が、collectとinjectである。
というだけだろう?
ここまででRubyの話は終わりじゃないか。

125 :デフォルトの名無しさん:2017/05/09(火) 00:44:54.41 ID:AJpeMRYn.net
JavaScriptに標準であるのは、mapとrecudeだな。

126 :デフォルトの名無しさん:2017/05/09(火) 01:55:29.32 ID:lu7Bmdm9.net
配列の関係でお聞きしたいです
http://ideone.com/ntTNm5
こんな感じで任意の文字列を受け取って、それを1文字ずつ分割するっていう動きなのですが

配列を使って繰り返そうとすると上手くいかないです
http://ideone.com/ePxuDp

どうすれば配列に値を返すことが出来るのでしょうか?

127 :デフォルトの名無しさん:2017/05/09(火) 02:12:04.57 ID:7rjXR/HL.net
スクリプトのちぐはぐさから見て、おそらくコピペ継ぎはぎだけで体系的な学習を全くしてないと思われる
書籍のたのしいRubyを買えとまでは言わないので、なんかどっか適当なアフィサイトででも勉強するといいよ
制御構造と変数のスコープについての勉強が足りない
第6章とか第7章とかそのへんまで読破だ

128 :デフォルトの名無しさん:2017/05/09(火) 02:21:33.84 ID:7rjXR/HL.net
最初のスクリプト修正
input = gets.chomp
s1,s2,s3 = input.split(" ")

a = s1.split(//)
b = s2.split(//)
c = s3.split(//)

p a,b,c

次のやつの例
input = gets.chomp
arr = input.split(" ")

result = []
arr.each do |s|
result << s.split(//)
end

result.each do |e|
p e
end

うまく処理が行われるように変数名を変えたのがポイントであるが眠いので説明はほかの人に譲る
とにかく基礎知識が足りないので焦らずにまずは変数とかそのへんの解説を読むのだよ

129 :デフォルトの名無しさん:2017/05/09(火) 02:28:47.25 ID:7rjXR/HL.net
追記、1行で書くアホが湧くかもしれないがその人は自分のことしか考えてないので現時点では無視してよい
あなたに必要なのは基礎なのだから
ではお先におやすみなさい

130 :デフォルトの名無しさん:2017/05/09(火) 02:39:10.44 ID:lu7Bmdm9.net
>>128
あ、新しく空の配列作っておいて
繰り返しの時に、分割した結果をその中に入れるっていう処理にすれば良かったんですね
ありがとうございました!

131 :デフォルトの名無しさん:2017/05/09(火) 07:31:40.84 ID:k6HrUJzH.net
違う
ローカル変数やブロック変数の動作を全く理解してないのだ
だから自己代入してバグっても何も思わない

132 :デフォルトの名無しさん:2017/05/09(火) 07:34:19.28 ID:WySm2t97.net
>>131
あー、確かにその辺は凄い曖昧ですね・・・・・・
もう一回その周辺含めて勉強し直します

133 :87:2017/05/09(火) 20:42:21.42 ID:ptoav/qt.net
結局、会社出入のSIの担当に個人的にお願いしました。
10分で数行追加して解決してくれました。Win10の問題とファイル100ケ問題2点があったとか。
自分で解決するのは無理でしたね。

解決してくれた方には10万くらい謝礼を考えていたのですが、この方には辞退されてしまいましたので
二人で銀座のクラブで豪遊して、逆に初任給相当くらいぶっとばしてしまった・・・
孫の写真をEOS-1D X で撮影した数千枚をぜんぶYAhooBOXにに保管していて、家内に怒られており
苛立ってしまい、お騒がせして申し訳ございませんでした。

134 :デフォルトの名無しさん:2017/05/09(火) 20:45:26.48 ID:SmlWSda1.net
書き込みから頭の悪さが伝わってくるな

135 :デフォルトの名無しさん:2017/05/09(火) 21:36:06.57 ID:V+0O6ahJ.net
孫もいるのに>>92みたいなこと言うのか……

136 :デフォルトの名無しさん:2017/05/09(火) 22:04:56.60 ID:AJpeMRYn.net
だって娘ってもうおばさんじゃん

137 :デフォルトの名無しさん:2017/05/10(水) 21:24:41.33 ID:mz/WKowH.net
まともに取り合ってれば俺が10万もらえたんか?

138 :デフォルトの名無しさん:2017/05/10(水) 21:38:57.44 ID:T9zZBiea.net
いや、可哀想だが、鳥取も被害者だろ。

139 :デフォルトの名無しさん:2017/05/11(木) 12:25:59.80 ID:3ycP24fA.net
一発だけなら誤射かもしれない

140 :デフォルトの名無しさん:2017/05/11(木) 22:46:17.95 ID:SAAdjKtg.net
MonoにあるIronRuby(ir.exe)でRubyスクリプトを走らせようとすると

unknown: no such file to load -- gem_prelude.rb (LoadError)

というエラーが出て終了してしまいます。
どうすれば良いでしょうか?

141 :デフォルトの名無しさん:2017/05/11(木) 22:59:59.49 ID:jM8xSb+p.net
IronRubyは全くメンテされてないゴミ
諦めてC#使おう

142 :デフォルトの名無しさん:2017/05/12(金) 00:42:07.19 ID:lh1VWFPT.net
「gem_prelude.rb LoadError」で検索!

初心者は、paiza.IO, codepad などで、ブラウザでプログラミングするのが簡単

143 :デフォルトの名無しさん:2017/05/12(金) 03:23:42.25 ID:KfydbfhB.net
Rubyとは直接関係ないのですが
RubyMineの補完機能で、入力した段階で自動的に一番上が選択されるようにするにはどうすれば良いのでしょうか?
(IntelliJの方では最初から自動的に選択されてました)
RubyMineとIntelliJの比較
http://i.imgur.com/fgCFVJa.png
http://i.imgur.com/yv6XKJk.png

RubyMineを使ってる方で分かる方はいらっしゃらないでしょうか

144 :デフォルトの名無しさん:2017/05/12(金) 19:32:54.36 ID:HOHLzPdy.net
Rubyでスクレイピングしたいんですが、串がうまく動かないです。串はTorを使いたいと思います。

p "Creating tor agent..."
p "My raw ip address is #{Mechanize.new.get('http://ifconfig.me/ip').body}"
tor ||= TorPrivoxy::Agent.new '127.0.0.1', '', {8118 => 9150} do |agent|
begin
sleep 10
p "My ip address is now chenged to #{agent.ip}"
p tor.get("http://ja.wikipedia.org/wiki/Privoxy").encode(Encoding::SJIS)
rescue
p "エラーです".encode(Encoding::SJIS)
end
end

145 :デフォルトの名無しさん:2017/05/13(土) 06:47:49.32 ID:nrviLaTM.net
どの行で、どんなエラーメッセージが出るの?

そのエラーメッセージで検索すれば?

146 :デフォルトの名無しさん:2017/05/14(日) 09:17:54.13 ID:c1+aTdNX.net
rubyでは現在の行とファイルをだすような__LINE__とか__FILE__はないんですか?

147 :デフォルトの名無しさん:2017/05/14(日) 09:32:49.01 ID:4OWrar4G.net
標準的な動作で不足であるという場合
その不足な動作自体を満たすライブラリの有無を質問するのではなく
そもそも何のためにそれが必要だと考えているのかを述べてみなされ

148 :デフォルトの名無しさん:2017/05/14(日) 09:51:16.72 ID:9iFdkmzT.net
>>146
ある

149 :デフォルトの名無しさん:2017/05/14(日) 10:01:11.30 ID:c1+aTdNX.net
》》148
ありがとうごぞいます

150 :デフォルトの名無しさん:2017/05/14(日) 21:59:53.35 ID:YpRHpm2r.net
Rubyの作者の技術力ってどのくらいなの?
低くはないとおもうけど、そんなにたかくもないの?

151 :デフォルトの名無しさん:2017/05/14(日) 22:07:52.12 ID:2j/fEy8A.net
マルチスレッドや文字コード系はあんま詳しくないから詳しい人に手伝って貰ってたとか日経ソフトウェアの昔の対談記事で書いてたな。
ギークって程じゃないと言う印象。

152 :デフォルトの名無しさん:2017/05/14(日) 22:11:20.20 ID:3p+3tmMb.net
技術力は知らんが心の底からプログラミング好きなんだなぁとは思うな、言語オタクだから言語作ったそうだし

153 :デフォルトの名無しさん:2017/05/14(日) 22:25:40.71 ID:YpRHpm2r.net
>>151
マルチスレッドや文字コードの仕様もぜんぶ知ってないと、技術力は高いといえない?
日本で技術力が高い人ってどのくらいいるんでしょう。

Ruby作った人でも技術力が高くないといわれたら、道が険しすぎる。

154 :デフォルトの名無しさん:2017/05/14(日) 22:32:18.91 ID:DiPyQd5B.net
言語処理系、特にパフォーマンスを度外視したスクリプト言語の実装ってそんなに難しくないよ
Rubyの互換実装って驚くほど短期間で作られたりするし

155 :デフォルトの名無しさん:2017/05/14(日) 22:40:30.08 ID:0pt2h6WS.net
言語処理系の実装って、経験のない人はなぜかそれがすごく高度なことだというイメージを持ってるよな
やってみたらわかるけど、動かすだけなら意外と全然難しくないよ
ゲームとか作る方がずっと難しい

156 :デフォルトの名無しさん:2017/05/14(日) 22:58:19.67 ID:zv0DKnzD.net
思ったほどには「あらゆることを深く知っている」必要はないよね
言語作成センスと時の運とコミュニティへの頭の下げ方だと思うわ

157 :デフォルトの名無しさん:2017/05/14(日) 23:12:20.70 ID:3p+3tmMb.net
「実装」なら俺でもできるが「設計」はなぁ

158 :デフォルトの名無しさん:2017/05/14(日) 23:24:09.84 ID:Xbcx3KQE.net
>>151
おいおい、Matzをもって
> ギークって程じゃないと言う印象。
とは、本気か?おまえどんだけえらそうなの。

>>153
> Ruby作った人でも技術力が高くないといわれた
だれじゃ、そんなこと言ったのは。
初歩的なインタプリタは学生でも作れるけど、rubyぐらい完成度の高いのは無理だろ。

159 :デフォルトの名無しさん:2017/05/14(日) 23:29:39.07 ID:Xbcx3KQE.net
>>154
そりゃ仕様をまるごとパクって作れば短期間で作れるでしょ。理由がおかしい。
整合性のとれた言語仕様を考えるところがいちばん大変だろうに。

>>155
> 動かすだけなら意外と全然難しくないよ
だからといってrubyの作者がギークって程じゃないとは、ここはすごいプログラマの集まりですね。

160 :デフォルトの名無しさん:2017/05/14(日) 23:44:43.80 ID:SkVs727u.net
あらゆる分野においてエキスパートじゃないと技術があるとは言えない、と本気で思い込んでる
人がちらほらいるようで

そんなウルトラスーパーハカーなんて世界に何人いることやら

161 :デフォルトの名無しさん:2017/05/14(日) 23:57:58.99 ID:4upkAWVg.net
これでも貼ってみるか
マツドサイエンティスト・研究日誌 保存版 システムエンジニアリング(その4) 超人にならなくていい
ttp://anoda.web.fc2.com/weblog/20050424.html
日本は完璧主義だからか平気で完璧超人を求めるよね

162 :デフォルトの名無しさん:2017/05/14(日) 23:58:21.34 ID:aG/BUJsi.net
多分「完成度」の基準がみんなバラバラすぎて上手くコミュニケーションが取れてないな
Brainfuck系言語というか、いわゆる難解プログラミング言語みたいなジョークみたいな物だったら
確かに「実装」は簡単
が、Ruby、PHP、Pythoみたいに一つの主要言語にまで昇華させるには
言語設計まで含めてめちゃくちゃ大変な作業が必要になる

なので
Rubyっぽい、プログラム言語っぽく動く何かを作る→頑張れば出来る
RubyやPythonの設計思想を受け継ぎながら、独自の言語設計に基づいて言語を作る→並大抵の人間には出来ない代物
っていう感じかな「

163 :デフォルトの名無しさん:2017/05/15(月) 00:04:17.64 ID:6XCGPePS.net
>>158
だれだったか忘れましたが、ツイッターでだれか言ってました。
有名人?なのかな、それなりに有名っぽい人だったので、技術力の高い低いってどういう基準で判断するのかなと思って。

164 :デフォルトの名無しさん:2017/05/15(月) 08:25:41.29 ID:AFguA/nP.net
だからだれなんだよそんな偉そうなのは

165 :デフォルトの名無しさん:2017/05/15(月) 09:26:37.14 ID:jzzH2kBs.net
RubyはMatzが数学苦手なのが良かった
結果、平均的なPGの頭に合った言語になった
頭の良すぎる人が作った言語は結局一部の人間のオナニーで終わっちゃう
FortranとかCとかJavaとかC#とかは頭の良い人たちが本気でボリューム層向けに作った完璧な「製品」だけど、
そういうのに比べるとRubyはまあ適度な頭の緩さが馴染みやすいよね

166 :デフォルトの名無しさん:2017/05/15(月) 21:51:39.50 ID:xoO/l6gC.net
>>164
誰っていわれても、ツイッターでみかけただけでどこのだれかまでは覚えてないです。
ごめんね。
たくさんのひとがリツイしてたから、自分で探したら出てくるかもよ。

167 :デフォルトの名無しさん:2017/05/17(水) 01:45:08.88 ID:y0sg8W2t.net
それいいな。俺も困った時に使ってみよう
たくさんのひとがリツイしてたから、自分で探したら出てくるかもよ。

168 :デフォルトの名無しさん:2017/05/17(水) 04:25:58.23 ID:Q6ZDgQU6.net
うーん、あまりにも初心者過ぎてあれなんだが、プログラミングを学び始めて
まずrubyを真面目にやろうと思ったんだ。他の言語もさわりはしたんだけどね。
でも、実際に環境を構築しようとrubyをインストールして、
環境変数のPathの設定も本の通りに確認したんだけど
実際に打つと#とかで内部コマンド〜ファイルとして認識されていませんって
出るんよ、 Pathって打ってみるときちんとCドライブのRubyのbinを
参照?してるんだけど・・・私はどこを間違えているんだろう。

169 :デフォルトの名無しさん:2017/05/17(水) 05:58:15.48 ID:AoGXWMN0.net
>>168
答えじゃなくてすまんけど感想を。
そういうことを聞ける場所が2chしかないのが残念だよね
Rubyを始める人のコミュニティってないものか
ずっとそういう場所を探している

170 :デフォルトの名無しさん:2017/05/17(水) 06:20:15.54 ID:Q6ZDgQU6.net
>>169
そですねー、私もまずコミュニティ的なものを探したんですけど
勉強会みたいなのはあるのに、こういった掲示板的なものは
みつけられないんですよね。初心者はわりかしきついですね。
相変わらず四苦八苦してますw
2chはマイナーなものは、あまり素人は歓迎されない気もしますね。

171 :デフォルトの名無しさん:2017/05/17(水) 06:20:34.43 ID:+84GJVyA.net
まさか生のrubyコードをコマンドプロンプトに『打ち込んでるんじゃ

172 :デフォルトの名無しさん:2017/05/17(水) 06:34:58.31 ID:AoGXWMN0.net
>>170
無いなら作れってところなのだけど
それを作る技術を得るためには・・・
堂々巡りで困ってる

2chには妖怪が住んでいるからなぁ

173 :デフォルトの名無しさん:2017/05/17(水) 06:50:32.62 ID:AoGXWMN0.net
>>171
なるほど!

ruby -v
を試してみればいいんだな

#とかでという意味がよくわからないけど

174 :デフォルトの名無しさん:2017/05/17(水) 06:53:25.51 ID:+84GJVyA.net
きっと「#」で始まる行をコピペしてコマンドプロンプトにそのまま張り付けたんじゃないのかね
binにパス通ってるならirb起動すれば幸せになれるかもね

175 :デフォルトの名無しさん:2017/05/17(水) 07:06:09.77 ID:Q6ZDgQU6.net
>>171
あははw
いろいろあって混乱してたんだw
本にもテキストエディタで書けって書いてあったw
その前にPath関係の確認させられてたから勘違いしてしまった。
すごいあっさり大事なことが色々かいてあるとこ見逃してたw
C言語の勉強をrubyの勉強する前に触っておこうと思って
コンパイラに書いてたような感覚でやってしまったw
rubyのさわりもブラウザ上で書く感じの勉強だったんだ
だ、だから違うんよ?うん、違う違う。知ってた知ってた。

176 :デフォルトの名無しさん:2017/05/17(水) 07:15:15.40 ID:Q6ZDgQU6.net
まあ、初心者ってこういうくだらない質問するもんだから、許して笑ってくれさい。
そして、そういう初心者用のコミュニティは作れないっていうか、
初心者が作っても人集まらないだろうからここでできれば助けて下さい。
rubyスレ希少なんです・・・という初心者の声なのでした。

177 :デフォルトの名無しさん:2017/05/17(水) 07:20:26.73 ID:AoGXWMN0.net
>>176
俺はそういうのが作りたいんだー

178 :デフォルトの名無しさん:2017/05/17(水) 07:21:52.55 ID:AoGXWMN0.net
2chって「初心者」って言葉に食いつく妖怪もいるからなぁ

179 :デフォルトの名無しさん:2017/05/17(水) 07:35:16.07 ID:zoT6JpA4.net
OKWAVEとかどう?

180 :デフォルトの名無しさん:2017/05/17(水) 07:44:52.13 ID:AoGXWMN0.net
>>179
それは見てなかったなぁ
よっしゃ
これからそこへ質問入れてみるぞ

181 :デフォルトの名無しさん:2017/05/17(水) 07:53:53.40 ID:S++XgTKO.net
>>172
掲示板を立ち上げること自体は難しくないけど、管理維持するには住人やISPなどのバックアップが必要不可欠
個人で運営する場合は、住人による自治が基本になるしそれで対応しきれない案件に関しては管理人やISPによる強権発動で対応
これらの支援を受けられなくなって久しいし、荒らしに対応できなくなるのは目に見えていて長期的維持を望めない

あと技術の初心者は構わないがコミュ力初心者は遠慮願わないと。今や「初心者は免罪符ではない」などと言われることも無くなったしなぁ・・・

182 :デフォルトの名無しさん:2017/05/17(水) 07:55:53.94 ID:AoGXWMN0.net
>>179
そこのRubyカテゴリは1ヶ月眠ってるがな

183 :デフォルトの名無しさん:2017/05/17(水) 08:48:21.65 ID:vMnI7rwx.net
2ch以外で質問できそうな所っていうとこの辺のサイトか

質問できる所
テラテイル
https://teratail.com/
スタック・オーバーフロー
https://ja.stackoverflow.com/

Rubyの記事投稿が多い所
Qiita
http://qiita.com/

184 :デフォルトの名無しさん:2017/05/17(水) 09:02:29.68 ID:AoGXWMN0.net
>>183
teratailもstackoverflowも質問することがはっきりしてる場合なんだよね
ある程度のレベルがいるし。
Qiitaいいたっては聞くというより情報発信サイトかと思われる

でも
今Qiitaに登録したったw

185 :デフォルトの名無しさん:2017/05/17(水) 10:02:00.71 ID:vwwaD4yq.net
>>170
まずWindowsを使いこなせてないからだな
言語のスレだとみんな環境違うしそういう知識は身につかないかも
適切なとこ見てれば質問のしかた(必要な情報)もわかってくるはずだ

186 :デフォルトの名無しさん:2017/05/17(水) 15:22:05.45 ID:O9qCgXnQ.net
>>183
SOのjpはやめとけ

187 :デフォルトの名無しさん:2017/05/17(水) 15:34:35.54 ID:P4LQUJ7D.net
>>186
stackoverflowあかんの?
ちょいとその辺の事情をお願い

188 :デフォルトの名無しさん:2017/05/17(水) 15:58:25.56 ID:JDHyCaYk.net
日本語のスタックオーバーフローって検索の上位に出てこないイメージ
ってことは・・・・・・

189 :デフォルトの名無しさん:2017/05/17(水) 18:45:28.28 ID:AoGXWMN0.net
Ruby2.4のリファレンスマニュアルをダウンロードするにはどうしたらいいのー

190 :デフォルトの名無しさん:2017/05/17(水) 19:08:51.18 ID:+84GJVyA.net
階層構造を保持したままローカルに保存できるソフトでも使えば

191 :デフォルトの名無しさん:2017/05/17(水) 19:20:27.17 ID:t1VY0/wg.net
昔はzipとかなかったっけ

192 :デフォルトの名無しさん:2017/05/17(水) 19:24:12.98 ID:AoGXWMN0.net
古いバージョンのマニュアルと最新のならダウンロードできるようになってるんだけどね

193 :デフォルトの名無しさん:2017/05/17(水) 22:49:59.99 ID:OcBoOJyM.net
>>164,166
どこの誰かは覚えてないといったけど、ふと思って探してみたら、あっさり見つかった。
ttps://mobile.twitter.com/kmizu/status/857032083046256641

> ソフトウェア分野一般に通じる「技術力」というのは実際には
> 存在しないのにあると信じられている幻想だと思う。その幻想が
> 広く信じられている結果として、たとえば著名プログラミング言語の
> 作者はスーパープログラマのように思われがちだとかいう現象が発生する。

たしかこれだった。

194 :デフォルトの名無しさん:2017/05/17(水) 23:14:17.43 ID:Id1y7eqA.net
JavaとかC#の作者は実際凄いらしいね
Matzは祭り上げられてる割にはRuby以外でほとんど実績らしい実績を聞かない

195 :デフォルトの名無しさん:2017/05/17(水) 23:20:38.33 ID:y0sg8W2t.net
JavaとかC#の作者の名前は?
Matz個人、人間一人と渡り合えるなんて、すごい人だろうね。

196 :デフォルトの名無しさん:2017/05/17(水) 23:23:53.49 ID:Id1y7eqA.net
>>195
自分で調べたら?
どっちもチーフアーキテクトは個人崇拝されてる有名人だよ

197 :デフォルトの名無しさん:2017/05/17(水) 23:25:17.03 ID:y0sg8W2t.net
「チーフアーキテクトは」ってことは
それ以外の役職の人がいるってこと?

Matz一人に対して複数の人があつまらないと
対抗できないってのはちょっと恥ずかしくね?

198 :デフォルトの名無しさん:2017/05/17(水) 23:27:09.81 ID:SKu/yZ4u.net
>>197
それを言うならRubyだってMatzが全部決めてる訳じゃないよ

199 :デフォルトの名無しさん:2017/05/17(水) 23:27:10.61 ID:y0sg8W2t.net
調べた

https://ja.wikipedia.org/wiki/C_Sharp 開発者 マイクロソフト
https://ja.wikipedia.org/wiki/Java 開発者 オラクル

200 :デフォルトの名無しさん:2017/05/17(水) 23:27:20.00 ID:Noyf0zx+.net
コンパイラとインタプリタじゃ難易度全然違うしな。
C#の作者なんかはTurbo Pascal,同C,同C++,Delphi,C++Builder,Visual J++,VC#,TypeScriptと、言語もだけどライブラリも設計してる。
ベテラン中のベテラン。
センスも経験も数段上。

201 :デフォルトの名無しさん:2017/05/17(水) 23:28:28.62 ID:Noyf0zx+.net
あ、言語はオリジナルはC#とTypeScriptだけだから、コンパイラとライブラリの設計がほとんどやね。

202 :デフォルトの名無しさん:2017/05/17(水) 23:30:32.17 ID:zoT6JpA4.net
JavaとかC#はチームで作ったものだからね
基本的な部分はチーフがやったとしても全体を作り上げたのはチームだから
チーフがすべての部分についてウルトラスーパーハカーである必要はないんだよ

203 :デフォルトの名無しさん:2017/05/17(水) 23:46:22.36 ID:0i9RfNds.net
Javaは忘れたがC#はアンダース・ヘルスバーグって人が作ったもん、余談だがDelphi作った人だからC#はとてもDelphiくさい

204 :デフォルトの名無しさん:2017/05/17(水) 23:54:49.77 ID:q+Jp+PKK.net
日本人って何かにつけて神とあがめ立てて思考停止する奴が多いよね。なぜそうなのか、どうやったのかとか考えようとしない

205 :デフォルトの名無しさん:2017/05/18(木) 00:02:07.55 ID:d+oDyp66.net
4月に、Win10の、Windows Subsystem for Linux(WSL)の大きな更新があった。
誰か、WSLから、Rubyを使っている人、いる?

居たら、報告して

日経Linux 6月号に、WSL の特集あり

206 :デフォルトの名無しさん:2017/05/18(木) 00:36:47.85 ID:HnnQPjdl.net
>>193
ツイートが連続してて、そのリンクはろうとしたけどめんどくさいので、かわりにこれで。
ttp://i.imgur.com/uCg2V4P.png
だんだん思い出したけど、スーパーハッカーとかスーパープログラマーで調べてたんだった。
ルビーの作者でもスーパープログラマーじゃないなら、どうしていいのかわかんないな。日本にいなさそう。

207 :デフォルトの名無しさん:2017/05/18(木) 00:42:18.01 ID:mKKG/7h8.net
すごいプログラマだけどもスーパープログラマーという方向性の人ではないと思う
なんというか、仮面ライダーとウルトラマンくらい傾向が違う
だいたい正義の味方のだいたい超能力人間なんだけど、まとめると違和感

208 :デフォルトの名無しさん:2017/05/18(木) 01:07:17.85 ID:dz2c6KN5.net
>>206
プロの一流の選手を、ドラフトにひっかかりもしなかった三流が「あの選手は大したことない」と言ってるみたいな感じか。
たまにいるよな、こういうの。

209 :デフォルトの名無しさん:2017/05/18(木) 02:12:28.50 ID:k2/bnmai.net
こんなレベルの人の集まりかと思わせる雑談だな
これもパートスレの弊害だろ

210 :デフォルトの名無しさん:2017/05/18(木) 02:28:27.52 ID:n0l9x2sF.net
>>205
rbenv で入れて使ってる。
ちょっとしたスクリプト動かすのに便利。

211 :デフォルトの名無しさん:2017/05/18(木) 07:40:51.40 ID:HnnQPjdl.net
>>208
どちらかというと、半分以上は嫉妬心だと思う。つまりやっかみ。
大学の演習で作るようなレベルのものと、世界中のサービスで使われるレベルのものとでは、難易度がはるかに違うのにな。

212 :デフォルトの名無しさん:2017/05/18(木) 07:58:52.21 ID:jHW9tOS8.net
設計技術と実装技術って無関係とは言わずとも別物だけど区別出来ていない人は多い
プログラミングは後者である

213 :デフォルトの名無しさん:2017/05/18(木) 07:58:54.30 ID:uGmNBL+O.net
Matzさんはプログラミング言語の知識は凄いけど最適化周りは今一つってのは共通認識だと思っていたが…昔からずっと「Rubyは遅い」って皆でブーブー言ってたじゃない
でも前者の能力持ってる人は稀有だからやっぱりスーパープログラマーに違いないと思うよ

アニメーターの大塚康生さんが「宮さん(宮崎駿)は描くの早いけど絵は上手くない」って評してるけどMatzはプログラミング言語界の宮崎駿みたいなもんだよ
ある方向は秀でてるけどある方向はそれほどでもない。だけどスーパー○○には違いない

214 :デフォルトの名無しさん:2017/05/18(木) 08:10:53.60 ID:jHW9tOS8.net
Rubyが遅いのはコーディング技術の不足よりシステム設計の制約だと思っていたけど違うのか?
あのシステム設計がJIT化の障害にもなっているみたいだし、Intelのプログラマー陣に書かせたら
爆速に!とはいかないと思うんだが

215 :デフォルトの名無しさん:2017/05/18(木) 08:52:05.04 ID:a7kCQWZC.net
愚直なプログラミングだからドキュメントなしでやってこられたけど、未だにドキュメントが完成してないのは驚きである

216 :デフォルトの名無しさん:2017/05/18(木) 09:02:19.96 ID:mKKG/7h8.net
○○がないなんて非常識で公式やる気なさすぎでウチでは使えないよ、という人たちにスルーされたからこそ今があるのでは
Linuxみたいなもんだw

217 :デフォルトの名無しさん:2017/05/18(木) 09:40:39.90 ID:W+cXBvNa.net
>>213
> だけどスーパー○○には違いない
スーパーマツモト?

218 :デフォルトの名無しさん:2017/05/18(木) 10:21:34.30 ID:k2/bnmai.net
いまさらかもしれないがプログラマってすごく偏ってるのかな
存在も考え方も

219 :デフォルトの名無しさん:2017/05/18(木) 12:17:40.22 ID:nGaj6J50.net
C#の作者は普通の企業戦士としてクソ有能らしいね
ハッカーやアーキテクトとしての専門的技能を十二分に備えた上で、
マネージャとしてチームを率いて製品を作り上げられる超人

220 :デフォルトの名無しさん:2017/05/18(木) 15:06:50.15 ID:6nNpr9wz.net
Rubyが普及(ω)したのはドキュメントを書かなかったからだよ

221 :デフォルトの名無しさん:2017/05/19(金) 00:02:38.38 ID:JAygot/q.net
軽々しく他人のことを神だの超人だの言っちゃう人って実力は大したことないのにプライドだけ高いんだなろうな
しかも多分その自覚が無い。自分の能力が大したことないことを自覚できていればそういう表現の仕方はしないはずだし
神格化するより研究し自分の能力を伸ばすことを考えるはず

222 :デフォルトの名無しさん:2017/05/19(金) 01:30:43.67 ID:4+vIujWP.net
一流を認められない人に成長はない

223 :デフォルトの名無しさん:2017/05/19(金) 01:45:17.48 ID:ge9DZPXJ.net
よっぽど何かコンプレックスあるんだろうねこの人

ああ、この人ってのはこのスレに何日も同じようなことグチグチグチグチとえんえん書き続けてる人ね

224 :デフォルトの名無しさん:2017/05/19(金) 06:30:50.15 ID:eboDhNue.net
矛盾を含んだ文章ってスパゲッティコードみたいだよね

225 :デフォルトの名無しさん:2017/05/19(金) 06:33:50.64 ID:eboDhNue.net
そうだ
Rubyが好きなのは
Pythonみたいにインデント強制されないし
Javaみたいに大文字小文字まで強制されないからなんだ

226 :デフォルトの名無しさん:2017/05/19(金) 08:24:53.47 ID:wMmgU2C4.net
>>206
なんで時系列が逆順なんだよw
2chでも古い書き込みが上で新しいほど下になってるだろ。
そのほうが自然なんだからそうしろ

>>223
>よっぽど何かコンプレックスあるんだろうねこの人
成功した人に嫉妬してる暇があれば自分で何か作ればいいのに、そうする人は少ない

227 :デフォルトの名無しさん:2017/05/19(金) 08:29:07.55 ID:ax6ergs3.net
自分で何もできないから他人に嫉妬する、まあ俺のことなんですけどね

228 :デフォルトの名無しさん:2017/05/19(金) 15:13:31.24 ID:4aXBqFa1.net
>>225
Javaのは強制でないだろ

229 :デフォルトの名無しさん:2017/05/19(金) 23:21:36.00 ID:vjfQYplO.net
実際に結果を出した人は
その結果の現実における実在性から人生に安定感なり心の余裕が出てくるように見えますよね。

230 :デフォルトの名無しさん:2017/05/19(金) 23:29:01.51 ID:JAygot/q.net
本当の天才や神もたまにいるけどきわめて稀。ほとんどの場合は普通の能ある人
大抵の場合聞き上手&話し上手でコミュ力が高いのと論理的な思考・判断が出来る

嫉妬している暇があるなら成功している人を分析した方が建設的だし結果を出す近道だろう

231 :デフォルトの名無しさん:2017/05/19(金) 23:33:19.60 ID:ivu0jzcH.net
>>223
キチガイに絡まれたスレは悲惨だな

232 :デフォルトの名無しさん:2017/05/20(土) 04:52:57.18 ID:Gofa0r8M.net
キチガイか・・・
この言葉の取り方も人それぞれだろうけど。

もっと適当な新しい言葉はないものかね
ネットコミュニティで使えるような・・・
粘着、凝り固まった、共鳴しがたい論理、複数人を装うタイプ
ついでに嫉妬、妬みもいれとこか
そんな人をいう言葉

233 :デフォルトの名無しさん:2017/05/20(土) 05:05:32.15 ID:Gofa0r8M.net
そんなことより
誰かマジで教えてくれないか

herokuでRubyを動かしたいんや
RoRじゃなくてただのシンプルなRuby
Ruby環境のあるレンサバだとindex.rbで動くやん
あれと同じようにwebページを表示したい

windows7でやってる
gitでpushまでは出来るのだけど
どうしてもトップページが表示できない
Qiitaとかの情報はぐぐりまくってるいのだけど
ピッタリのものはない
php,node.jsがQiita情報では優勢や

rackというのがキーワードだということまではわかった
Gemfile,Gemfile.lock,Procfile,config.ru
も整えたつもりなのだけど
中身がまずいんやろなぁ

もういちど書くけど
RoRじゃなくて素のRubyで
一番シンプルにsinatraとかフレームワークを使わずに
herokuでindex.rbをトップページに表示したい

234 :デフォルトの名無しさん:2017/05/20(土) 05:11:20.26 ID:Gofa0r8M.net
>>233
これだけじゃ意味が伝わらないかもしれないから
やってることをわかってもらえるようなgithubを
24時間以内に用意するわ
なんせrubyもgithubもherokuもやり始めたばかりの素人なもので
ちょっとしたことでも時間がかかるので24時間以内な

235 :デフォルトの名無しさん:2017/05/20(土) 05:17:48.16 ID:Q4Q/cnZ9.net
そして一年が過ぎた・・・

236 :デフォルトの名無しさん:2017/05/20(土) 05:46:34.75 ID:WmFfeyqJ.net
chef, vagrant から、VirtualBox で、Linux

それか、4月に、Win10の、
Windows Subsystem for Linux(WSL)の大きな更新があったから、WSLでするとか?

237 :デフォルトの名無しさん:2017/05/20(土) 06:58:20.85 ID:S1Z+OH1L.net
IniFile使って初期化ファイルに"a\\b\\c\\r\\z"と書き込んで読み出してみたら
"a\\b\\c\r\\z"になっててハマったという愚痴

238 :デフォルトの名無しさん:2017/05/20(土) 09:13:37.26 ID:4bKGcQHk.net
アイデアをかっぱらうと成功者になれる。

239 :デフォルトの名無しさん:2017/05/20(土) 17:53:17.49 ID:5kEYc3L0.net
>>233
Qiita記事漁ってたらそれっぽいの見つけたけど
やりたい事ってこういう事?
Herokuで単純なrubyスクリプトを定期的に実行する
http://qiita.com/kasei-san/items/909f17c2c42b7e3a8489

240 :デフォルトの名無しさん:2017/05/20(土) 18:12:45.66 ID:abd2HxZJ.net
>>233
PythonかNode.jsでAWS Lambdaおすすめ

241 :デフォルトの名無しさん:2017/05/20(土) 19:00:59.25 ID:Gofa0r8M.net
>>239
それは見てなかった
でも最初の設定のgithub元はRailsのようだ
もっと単純にやりたい
どっちかというとこれに近いと思う
http://qiita.com/higuma/items/9baac9e97eeb862ef64e
これどおりにしても動作しなかったけど。

242 :デフォルトの名無しさん:2017/05/20(土) 19:02:15.16 ID:Gofa0r8M.net
>>240
先のステップの課題として覚えておくわ

243 :デフォルトの名無しさん:2017/05/20(土) 22:54:23.09 ID:Gofa0r8M.net
233の続き
誰かが間違いを指摘してくれることに望みをかけてここに公開する
244のqiitaを参考にしているのだけど
やったこと
githubは
https://github.com/sasisu/aiue01
これからherokuの方へdeploy
そうすると
https://aiue01.herokuapp.com/
このAplication errorのページになる
herokuはheroku/rubyのBuildpacksを適用

何かが足りないか間違えてるか
それとも全く勘違いなことをしているのか
わからない 👀
Rock54: Caution(BBR-MD5:b95868ef2c0ed5e765a4d10ada4cf289)


244 :デフォルトの名無しさん:2017/05/21(日) 01:32:34.60 ID:Fqssqcja.net
>>240
Pythonスレで言いなよ

245 :デフォルトの名無しさん:2017/05/21(日) 02:01:38.54 ID:1evlh7eH.net
Herokuの説明書を読んだら?

それか、自分が書いたファイルに、1行ずつ、p を書いて、
変数の内容を表示するとか

まず、どこでエラーが起きたのか、切り分ける。
それがデバッグの基本

246 :デフォルトの名無しさん:2017/05/21(日) 07:01:26.49 ID:kt8opZkV.net
>>245
まぁな

247 :デフォルトの名無しさん:2017/05/21(日) 21:55:20.21 ID:kt8opZkV.net
24時間経っても>>243の応答が無いのでリンク先は削除しておきます

これからレスをしてもらってもすぐには見れないと思うので。

248 :デフォルトの名無しさん:2017/05/22(月) 08:26:38.46 ID:oFkfOiZj.net
>>206
これはScalaの有名な人だね。調子こいたことを言ってMatzにたしなめられることが複数回あったようだから、逆恨みしてるんだろう。

なお有名な言語の作者たちは互いに尊敬しあってるよ。一流ってそういうもの。

249 :デフォルトの名無しさん:2017/05/22(月) 21:31:51.11 ID:fASqKLCq.net
1.8.xの頃の拡張ライブラリを最近の2.x.xで使えるように改造したいのですが
Rubyの各バージョン間の拡張ライブラリのインターフェイスの差異がまとまっている資料とかないですかね?

250 :デフォルトの名無しさん:2017/05/22(月) 23:55:24.58 ID:ENAWgACr.net
『Rubyレシピブック 第3版 303の技』という本を書店に残っているのを偶然見つけたのですが
Ruby1.8〜1.9、JRuby1.5を対象にしているとあり
現行の2.2系、2.3系と互換性があるのかが分からず購入を迷っています

またもしあれば1.8系、1.9系、2.xx系以降の互換性や追加機能をまとめたサイトなどがあれば教えて欲しいです

251 :デフォルトの名無しさん:2017/05/23(火) 00:15:49.33 ID:9lq+WTHz.net
プロジェクトマネージャーとしては絶望的にセンスが無いとは思ったことはある。

252 :デフォルトの名無しさん:2017/05/23(火) 01:52:19.84 ID:OOs1u3xZ.net
Ruby2.0なら使えるんだけどね
それ以前のは「どうして使えないのか」「どこを変えればいいのか」の手間と情報の加減上全く勧めない
問題は2.xの逆引きレシピ本のいいのが現行では無いことだが

253 :デフォルトの名無しさん:2017/05/23(火) 05:16:29.68 ID:ZEoEO5ey.net
レシピ本には、そんな長いコードは載っていないから、
動かなければ、自分ですぐに修正できるのでは?

数値を3桁ずつ、カンマ区切りにする関数は、参考になった

Railsの1日後とか、良いよな。
1.days.from_now

254 :デフォルトの名無しさん:2017/05/23(火) 06:50:04.85 ID:qRgUoCZd.net
>>248
すいませんが若気のいたりということで大目にみてもらえませんか?
日本のScala界では貴重な人材なので。

それよりMatzの講演について話そうぜ!
http://srknr.hatenablog.com/entry/2017/05/20/235839

255 :デフォルトの名無しさん:2017/05/23(火) 08:14:22.26 ID:Mb7W8Mqo.net
>>252
やっぱり2.x系のもので無いと互換性が厳しいですか・・・・・・
新しいレシピ本が出るまで見送りたいと思います

256 :デフォルトの名無しさん:2017/05/23(火) 16:42:43.02 ID:xunAucQT.net
Ruby で文字列が英数字とハイフンのみで構成されていることの確認 (バリデーション) を正規表現を使わずに実現するのに、
string.delete("a-zA-Z0-9-").empty?
っていうやり方でとりあえず間に合わせてるんだけど、他にスマートな書き方ある?

257 :デフォルトの名無しさん:2017/05/23(火) 16:55:02.24 ID:UVgxThtR.net
正規表現を使わない理由がわからないと
何言ってもそれはなしでと言われそう

258 :デフォルトの名無しさん:2017/05/23(火) 16:57:40.08 ID:nu8Noumz.net
>>256
ぱっとリファレンス見てきたけどcountに条件逆で渡した上で0か調べるってどうかな

259 :デフォルトの名無しさん:2017/05/23(火) 16:59:58.40 ID:nu8Noumz.net
ascii_only?ってメソッドあるけど完璧な動作ではないよなぁ多分

260 :デフォルトの名無しさん:2017/05/23(火) 17:12:57.96 ID:/kxvtD+k.net
>>258
おお、情報ありがとう!
こんな感じかな。
たしかに処理的にだいぶ分かりやすくなったかも。

string.count("^a-zA-Z0-9-").zero?

261 :デフォルトの名無しさん:2017/05/23(火) 17:22:10.11 ID:/kxvtD+k.net
>>257
どうしても正規表現を使わないと実現出来ない処理でもないんじゃないかと思ったのと、セキュリティ的にチェック漏れが怖いっていうのが理由かな。
正規表現に詳しくて、間違いない自信があれば正規表現でも良いんだけど、俺にはその自信がない。。

262 :デフォルトの名無しさん:2017/05/23(火) 17:25:33.79 ID:/kxvtD+k.net
>>259
たしかに ascii_only? だとやりたいことに近いけど、アンダーバーとかその他記号も OK になっちゃって、希望する判定基準とは少し違ってきてしまうんだよね。

263 :デフォルトの名無しさん:2017/05/23(火) 17:28:08.27 ID:UVgxThtR.net
>>261
deleteの独自ルールも不安だな
どっちにしろちゃんとテストコード書いとけとしか

264 :デフォルトの名無しさん:2017/05/23(火) 17:43:19.80 ID:OOs1u3xZ.net
「ヒットしてほしい正規表現にマッチするかどうか」で書かれてたほうがよっぽど漏れがないし間違いがないしコードとしても明瞭で安心すると思うがね
countの引数の仕様は知ってる? あれってtrというUNIXコマンドと一緒なんだよ
アレに頼って長々書かれるよりは正規表現のほうがいいな俺は

265 :デフォルトの名無しさん:2017/05/23(火) 18:18:44.65 ID:/xgNS39l.net
OK な文字列以外はどんな含まれ方をしていようと一概に弾くように、delete とか count で OK な文字列だけを列挙する指定の仕方を考えたんだけど、よく考えるとそれでも抜けがある可能性は依然として否定できないわな…
正規表現を使うか使わないかは宗教的な話になりそうだけど、テストコードを書けっていうのはまさしくその通りだわ。

266 :デフォルトの名無しさん:2017/05/23(火) 23:55:10.87 ID:ZEoEO5ey.net
JavaScript では正規表現だな

2回以上、同じ正規表現を使うなら、
コンパイルを1回だけして、使いまわすことで、やや速くなる

267 :デフォルトの名無しさん:2017/05/24(水) 00:37:22.71 ID:NrN6swuV.net
evenArry, oddArry = [], []
ARGV.each_with_index{|arg, i|
evenArry.push(arg) if i.even?
oddArry.push(arg) if i.odd?
}
evenArry.zip(oddArry){|x, y| print [x,y] } if evenArry.size < oddArry.size
oddArry.zip(evenArry){|y, x| print [x,y] } if evenArry.size >= oddArry.size
puts

このコード、Pythonのzip関数は短い方に合わせてくれるのに、rubyのzipメソッドが長い方に合わせて、
短い方の不足分に勝手にnil入れるから、長さ比べて短い方でzipメソッド使うようにしてるんだけど、nilを省くメソッドあったら一行浮く。
何か良いメソッド知りませんか?

268 :デフォルトの名無しさん:2017/05/24(水) 01:20:48.51 ID:n3q9H30C.net
>ruby tes.rb 11 22 33 44 55 66 77
["11", "22"]["33", "44"]["55", "66"]
という出力をしてほしいだけなら
ARGV.each_slice(2).take_while{|e| e.size == 2}.each{|a| print a}

269 :デフォルトの名無しさん:2017/05/24(水) 03:39:14.16 ID:oHzoLy1g.net
>>267
compact

270 :デフォルトの名無しさん:2017/05/24(水) 09:26:39.05 ID:Qxrl1z8p.net
>>268
おお!
次世代言語スレで紹介して貰ったやつのエラー出ない版ですね?
そっちが動くならそっちが良いですね。

>>269
compactですか。
まさに小さい方に合わせるっぽいメソッド名。

両方コードで試してみます。
ありがとうございました。

271 :デフォルトの名無しさん:2017/05/25(木) 13:14:51.22 ID:LTbJxhuY.net
pg gemをbundle installするとこける
gem install では通るんだけどなんでかな

272 :デフォルトの名無しさん:2017/05/27(土) 04:40:36.04 ID:SdHoYqqp.net
rubyからWin32APIのGetLastErrorを使用したいんだけどエラーが出てしまう。
どうしたらいいか教えてください。。
module WIN32API
extend Fiddle::Importer
dlload 'C:\\Windows\\System32\\user32.dll'
extern 'short GetKeyState(int)' #こっちはOK
extern 'char* GetLastError()' #こっちはNG
end

--以下エラー
cannot find the function: GetLastError() (Fiddle::DLError)

273 :デフォルトの名無しさん:2017/05/27(土) 05:15:11.73 ID:6GQ16ypm.net
「user32.dll getlasterror Win32API」で検索!

Library - Kernel32.lib
DLL - Kernel32.dll
には、有りそうだけど、user32.dll には、あるかどうか分からない

DllImport("kernel32.dll", SetLastError = true)

274 :デフォルトの名無しさん:2017/05/27(土) 06:45:17.62 ID:SdHoYqqp.net
>>273
早速ありがとうございました!
無事読み込めました。。。
参考までに修正版のコードはこちらです。

module WIN32API
extend Fiddle::Importer
dlload 'user32.dll','kernel32.dll'
include Fiddle::Win32Types #DWORDとか使えるようにする
include Fiddle::BasicTypes
extern 'DWORD GetLastError()'
end
WIN32API.GetLastError

275 :デフォルトの名無しさん:2017/05/27(土) 10:22:39.80 ID:SdHoYqqp.net
すみませんもう一つ教えてください。
SendInputを使って最終的にはマウス入力/キーボード入力を行おうと考えていますが
うまくいきません。何がおかしいのでしょうか。。
---
module WIN32API
extend Fiddle::Importer
dlload 'user32.dll','kernel32.dll'
include Fiddle::Win32Types
extern 'int SendInput(int,void* ,int)'
extern 'DWORD GetLastError()'
MOUSEINPUT=struct(["DWORD type","int dx","int dy","DWORD mouseData","DWORD dwFlags","DWORD time","ulong dwExtraInfo"])
end
module SendKey
INPUT_MOUSE = 0x00000000
MOUSEEVENTF_ABSOLUTE = 0x00008000
MOUSEEVENTF_MOVE = 0x00000001
end
input = WIN32API::MOUSEINPUT.malloc
input.type=SendKey::INPUT_MOUSE
input.dx=500
input.dy=500
input.dwFlags=SendKey::MOUSEEVENTF_ABSOLUTE|SendKey::MOUSEEVENTF_MOVE
p WIN32API.SendInput(1,input,28) #出力:0 備考:sizeof(MOUSEINPUT)=28
p WIN32API.GetLastError #出力:87(パラメータが間違っています。)
-----

276 :デフォルトの名無しさん:2017/05/27(土) 10:27:11.94 ID:67vlwxuq.net
今回の件と関係あるかはともかくWIN32APIってもう非推奨じゃなかったっけ?

277 :デフォルトの名無しさん:2017/05/27(土) 12:01:00.86 ID:pz2epJPP.net
rubyは32bit版なのかな?

278 :デフォルトの名無しさん:2017/05/27(土) 12:46:05.61 ID:SdHoYqqp.net
Win32API非推奨なんですね。。
ググってみた感じいまはWSHSHELLとかでしょうか?
ちなみにRubyは64bit版を使ってました。。。

279 :デフォルトの名無しさん:2017/05/27(土) 13:10:51.88 ID:reRwAhMh.net
非推奨とか言い出したらそもそもWinでRuby自体がアウトだから気にしなくてよい

280 :デフォルトの名無しさん:2017/05/27(土) 13:21:59.20 ID:olQh0zw8.net
>>272 >>274
そもそもGetLastErrorは最後に呼んだAPIのエラーだから
rubyみたいに前後の行の間で何呼ばれるかわからん環境でまともなエラーとれるとは思えない

281 :デフォルトの名無しさん:2017/05/27(土) 14:00:44.16 ID:4VVIqOhp.net
意図するライブラリがロードされていない or 意図しない関数がコールされているんじゃないか?

C/C++で同じ動作をするコードを書いて何のファイルのどの関数が呼ばれているのか調べた方が良さそうな気も
Rubyから呼ぶ場合に限らずその辺の管理は全てプログラマ任せの上に純正のSDKやIDEの支援も得られないしな

あとWindowsAPIを叩いて作業するならWindowsSDKはほぼ必須

282 :デフォルトの名無しさん:2017/05/27(土) 15:09:14.53 ID:6GQ16ypm.net
>p WIN32API.GetLastError #出力:87(パラメータが間違っています。)

カッコを付ければ?
p WIN32API.GetLastError()

283 :デフォルトの名無しさん:2017/05/27(土) 15:15:15.96 ID:pz2epJPP.net
>>278
64bitだと構造体のサイズが違うよ

284 :デフォルトの名無しさん:2017/05/28(日) 10:53:17.15 ID:pzrDxs4u.net
case文でgetsを使って入力を受け付けたいとき日本語ってどうするんです?
hand = gets.chomp
case = hand
when "あ"
puts "グー”
.
.
.
else
puts "反則"
end
例えばこんな感じの簡単な文だけど
"あ"の中身の部分を1にしたり
そもそも .to_iにして数値にしたりすると
ちゃんと働いてくれるから
そもそも日本語入力はなにかいるんじゃないか、もしくはできないんじゃないか
と思っていて、検索してもわからんのです

285 :デフォルトの名無しさん:2017/05/28(日) 11:23:43.03 ID:eyTJlEl0.net
case = handってなんだ

286 :デフォルトの名無しさん:2017/05/28(日) 11:38:33.26 ID:nOYRngqN.net
print "input anything and Enter> "
input = gets.chomp
puts "default file encoding:"+ __ENCODING__.to_s
puts "actual external encoding: " + input.encoding.to_s

実行結果 (Windowsコマンドプロンプトで単に ruby test.rb と実行)
input anything and Enter> nya-
default file encoding:UTF-8
actual external encoding: Windows-31J

ということで文字列のエンコーディングが違うので別物だと思われてる
Windows-31Jの「あ」とUTF-8の「あ」は比較上別物になる
irb> str = "にゃー"
=> "にゃー"
irb> str.encode("Windows-31J") == str.encode("UTF-8")
=> false
「Rubyの文字エンコーディング」について調べて自分で理解するんだ
これはここでちらっと「おまじない」を述べても逆に泥沼になるぞw

287 :デフォルトの名無しさん:2017/05/28(日) 11:47:56.51 ID:pzrDxs4u.net
>>285
ごめん=はいらんね
まちがえて打ってしまった。それは元の方では書いてない
>>286
よくわかんないけど、とりあえず先に進むよ。
逆に今、文字エンコーディングについて調べても理解出来る自信がないし、
おまじない、もいづれ出てくるかもしれない。
わいみたいな本物初心者にも答えてくれて
ふたりともありがとう。

288 :デフォルトの名無しさん:2017/05/28(日) 11:52:43.05 ID:pzrDxs4u.net
しまった「いづれ」ではなくて「いずれ」だった、なんかこういうミスのほうが
恥ずかしい・・・
しかし文字エンコーディングの件で気になったけど
それは文字コードを指定している場合でも・・・?
なんか最初にそれこそ、そこをおまじないと言っているのかもしれない
けど、# coding: utf-8
みたいなの書いとけって言われるじゃない。
文字化けしないようにとか、そんな感じで。

289 :デフォルトの名無しさん:2017/05/28(日) 11:55:12.07 ID:rKaPw5GE.net
狭義的にはスクリプトファイルのエンコーディングと外部入力文字列のエンコーディングを揃えないといかん
STDINのエンコーディングをスクリプトファイルのエンコーディングに合わせるのが楽だと思う
ruby -E UTF-8 hoge.rbでスクリプト起動しろ
getsで入ってくる文字列が全部UTF-8になる

290 :デフォルトの名無しさん:2017/05/28(日) 12:39:36.05 ID:pzrDxs4u.net
>>289
ちょっとわかんなかった。
色々言っていることの推測はしたんだけど、
そんなファイルねーよ!からはじまり
そんなエンコーディングネーム知らんといわれ、ランタイムエラーといわれ
あ、コマンドプロンプトって文字コードシフトJISとかいうのだから
あかんのかな?って思って
utf-8にしてみたけど、判定がelseに行くのだった。
あははは。
わざわざありがとう。でも、私初心者だからだめみたいだぜ。
おまえなんかwhile文の勉強でもしてなさいってことだと思うわ。

291 :デフォルトの名無しさん:2017/05/28(日) 12:55:41.60 ID:cMT8Sa9/.net
コマンドプロンプトなら"chcp 65001"しないと駄目なんじゃない?
ちょっと手許にwindows機ないからわかんないけど

292 :デフォルトの名無しさん:2017/05/28(日) 13:34:17.41 ID:mQ0E20+1.net
cmd exe の chcp65001 はバグがあって使い物にならない

293 :デフォルトの名無しさん:2017/05/28(日) 15:22:51.06 ID:aUadI2mt.net
VSCode使っている人いない?

デバッグモードでのgetsのって値入力処理はどうすればいいのか分からなくて困っている。

294 :デフォルトの名無しさん:2017/05/28(日) 16:49:16.07 ID:rKaPw5GE.net
STDIN/STDOUTのねじ曲げは現行のIDEでVSCode「でだけ」できない
素のRubyではできるのにね

require 'stringio' if $DEBUG
$stdin = StringIO.open("にゃーん".encode("Windows-31J")) if $DEBUG

puts "You are a cat" if gets.chomp == "にゃーん".encode("Windows-31J")

295 :デフォルトの名無しさん:2017/05/28(日) 17:18:28.96 ID:5PeSitGp.net
pythonのやつをパクるしかない

296 :デフォルトの名無しさん:2017/05/28(日) 17:40:48.08 ID:MqtJ47ff.net
極薄view用意して、そこだけ手動でテストすればいいよ

297 :デフォルトの名無しさん:2017/05/28(日) 18:57:58.47 ID:QwjzxVOm.net
コマンドプロンプトは、Windows-31J, CP932 か

PowerShell, PowerShell_ise は、UTF-8 じゃないの?

298 :デフォルトの名無しさん:2017/05/28(日) 22:05:31.04 ID:OcOYN7N8.net
windowsで真面目にRuby使うならコマンドプロンプトのままじゃ辛い
コンソールエミュで良さそうなの探して入れると良いよ

299 :デフォルトの名無しさん:2017/05/29(月) 00:55:58.04 ID:+B2zTCTS.net
いやVirtualBoxの上のLinuxにSSHクライアントで接続した方がいいよ

300 :デフォルトの名無しさん:2017/05/29(月) 01:06:21.43 ID:zS+u+zXg.net
出力はワイド文字に変換してくれるのでpythonみたいにchcp 65001しなくていいから楽ちん。
入力は気を利かせてくれてないから、$stdin.set_encodingで設定したほうがいいかな
あとはARGVとかDirで取得するファイル名とかをデフォルトでUTF-8にしてくれたらうれしいな
全般的にWindowsに気を利かせてくれているけど、そのノウハウをまとめたページがないから
不親切に見えるだろうな

301 :デフォルトの名無しさん:2017/05/29(月) 13:33:58.90 ID:SjlSz+oM.net
ネットにはデマ情報がいっぱい残ってるので正しい情報をメモ
cmd で UTF-8 使える方法 (chcp 65001 について) ttp://nazochu.blogspot.jp/2011/08/blog-post_26.html
mintty ttp://dogmap.jp/2011/11/15/mintty/
mintty ttp://tanakh.jp/posts/2011-11-15-windows-terminal.html

色々紆余曲折あったけど Git インスコして GitBash 使うのが一番楽っぽい
https://git-for-windows.github.io/

302 :デフォルトの名無しさん:2017/05/29(月) 13:49:40.20 ID:lxl3zEmg.net
>>301
こういうWindows版を使ったこともなさそうな人がおせっかいで書く情報が迷惑でしかない

303 :デフォルトの名無しさん:2017/05/29(月) 18:54:37.47 ID:8MRHN7xk.net
ルビとRubyの話
なぜWordのデフォルトフォントサイズは「10.5」なのか? - ねとらぼ
http://nlab.itmedia.co.jp/nl/articles/1705/29/news020.html

304 :デフォルトの名無しさん:2017/05/29(月) 19:14:35.71 ID:ZV+SCRde.net
今回の民法改正、ソフトウェア受託開発の場合、(検収後ではなく)バグ発見後1年瑕疵担保責任があるということで、地獄かよ、と思ったが、
元々問題が起きがちな受託案件がビジネス的に成立しなくなることで強制的に業界再編につながるなら良いことかもと思うようになった。
一部で地獄を見ても。
https://twitter.com/yukihiro_matz/status/869061879389343744

305 :デフォルトの名無しさん:2017/05/29(月) 19:16:13.40 ID:ZV+SCRde.net
ニュース - 改正民法が成立、「瑕疵担保責任」などシステム開発契約に影響大:ITpro
http://b.hatena.ne.jp/entry/itpro.nikkeibp.co.jp/atcl/news/17/052601508/

306 :デフォルトの名無しさん:2017/05/29(月) 19:33:27.14 ID:00NVazHZ.net
>>305
Ruby終了の教えらせ?

307 :デフォルトの名無しさん:2017/05/29(月) 19:34:02.42 ID:00NVazHZ.net
お知らせ

308 :デフォルトの名無しさん:2017/05/29(月) 21:37:42.32 ID:LfszU9UW.net
契約自由の原則は消えないんだよな
http://www.techvan.co.jp/media/quality/civil-code

rubyとかだと小さいシステムやプロトタイプが多いだろうから
契約に漏らさず明記しておくのが大事か
5年とかもう使えないようなバージョンとか出てきて作り直しになりかねない

309 :デフォルトの名無しさん:2017/05/29(月) 21:50:13.10 ID:0c0Yo+hh.net
個々の契約のほうが優越なのだからふつうはそんなに問題は起きない
最低最悪のラインを決めただけ
いちばん騒いでるのが働いたことのない人といういろいろ縮図なやつだ

310 :デフォルトの名無しさん:2017/05/29(月) 22:06:06.39 ID:LfszU9UW.net
>>309
最低最悪ではなく、平均では?
労働基準法みたいな契約より優先されるものが最低最悪で。

311 :デフォルトの名無しさん:2017/05/30(火) 09:22:17.83 ID:hVv0NVyW.net
客が瑕疵担保責任法の法改正を知ってくると思うから、今後5年無償保証をお願いされるだろう
営業がそれでも仕事を取ってこれるか?たぶん無理だろう。無限の直していたら赤字になる。
こういう保守に弱い言語、ころころ仕様が変わる言語は仕事として発生しなくなってくる。
これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
保守に強い言語のみ生き残れる。

312 :デフォルトの名無しさん:2017/05/30(火) 10:25:03.46 ID:gxWnkgCC.net
客が瑕疵担保責任法の法改正を知ってくると思うから、今後5年無償保証をお願いされるだろう
営業がそれでも仕事を取ってこれるか?たぶん無理だろう。無限の直していたら赤字になる。
こういう保守に弱い言語、ころころ仕様が変わる言語は仕事として発生しなくなってくる。
これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
保守に強い言語のみ生き残れる。

313 :デフォルトの名無しさん:2017/05/30(火) 13:25:40.32 ID:KV35bhXw.net
保守に強いとか関係ないだろ
結局は技術力が高かろうと
エラーは出るからな

314 :デフォルトの名無しさん:2017/05/30(火) 13:27:12.19 ID:52EkKXSJ.net
>>313
これコピペ

315 :デフォルトの名無しさん:2017/05/31(水) 12:38:22.60 ID:nyiBm3r5.net
こぴぺちぱー
http://tamae.2ch.net/test/read.cgi/php/1474523013/

316 :デフォルトの名無しさん:2017/05/31(水) 23:19:57.63 ID:X74K7lOs.net
るびまの ePub 版ってないの?
たまに話題に出てたり個人的にやってる人はいるみたいだけど。

317 :デフォルトの名無しさん:2017/06/01(木) 03:04:21.50 ID:TLZ7U8Co.net
>>308
民法程度なら上書き可能……客の説得が面倒になる、という話だけど
ライブラリのバージョン変えても動くこと、という要件は突っぱねれば5年は持つわね

そりゃどこぞの誰かさんが書き換えてるのに同じように動くかどうかわかりませんわ
こっちが確認したのは特定のバージョン決め打ちでっせ、とね

>>312
C#とJavaは耐性強そうだ

Pythonはダメだ(2のを3でも対応する系クソゴミ改修案件をやった人の意見)、グイドは自称するほど互換性を大事にしねぇ
「もう二度とやりません」と、Cバインディングをぶっ壊したのととString-Bytesでいいやがったんで、次もやる

318 :デフォルトの名無しさん:2017/06/01(木) 12:09:40.74 ID:o/dQD8LP.net
>グイドは自称するほど互換性を大事にしねぇ

2から3の書き換えの感想でそんなこと言ってるのか
頭沸いてんな

319 :デフォルトの名無しさん:2017/06/01(木) 17:59:48.16 ID:VtNuZqDV.net
>>316
そんなことできるのね
チャレンジしようぜ

320 :デフォルトの名無しさん:2017/06/01(木) 18:02:47.78 ID:VtNuZqDV.net
あっ 勘違いしてた
「るびま」と書いてあったな
オレが関心あるのは「るりま」の方だった

321 :デフォルトの名無しさん:2017/06/01(木) 18:14:59.52 ID:n7u6yBLf.net
るりまは元が html5 になってるみたいだし、
メタ情報をちょろっと追加してパッケージングすりゃ ePub になるよ。
そんなに難しいことじゃない。

322 :デフォルトの名無しさん:2017/06/02(金) 09:51:10.10 ID:8FvNWFqN.net
>>321
教えて欲しいんだけど
例えば2.0.0のバージョンのドキュメントをまとめてダウンロードするにはどこに行けばいいんだろ?
https://www.ruby-lang.org/ja/documentation/

323 :デフォルトの名無しさん:2017/06/04(日) 07:56:22.18 ID:4B60732N.net
書き込みできない?

324 :デフォルトの名無しさん:2017/06/04(日) 07:57:07.55 ID:4B60732N.net
322はできることなら削除したい
もうレスを確認する為にここに来ることはない

325 :デフォルトの名無しさん:2017/06/06(火) 16:52:05.29 ID:fbenvtCdR
プログラミング初心者です
rubyの基礎を学習サイトで学び始めているのですがサイト上ではなく自分のpc上でコードを書きたいと思っているのですが
windows xp で開発環境を整えることはできますか?サービス外で事実上不可能とかありますか?
質問がおかしかったらすいません

326 :デフォルトの名無しさん:2017/06/06(火) 19:13:48.69 ID:wrPFF999.net
windowsでirb使うとき何か一文字打たないと
↑キーで履歴が出ないんだけど何とかならない?
ググってreadlineとかbinに入れてみたけどダメだった

327 :デフォルトの名無しさん:2017/06/08(木) 13:19:43.68 ID:oPuedIYN.net
うちはでるよ

328 :325:2017/06/08(木) 21:11:29.66 ID:cdZWf+lt.net
マジか。>>326はActiveScriptRubyだがいろいろ試した結果(環境はWin7 32bit)
ActiveScriptRuby 出ない
+ readline.dll 出ない
RubyInstaller 出ない
+ readline.dll 出る

329 :デフォルトの名無しさん:2017/06/16(金) 16:28:56.85 ID:qOsPLqtM.net
うちのRubyInstaller2(Win8.1)ではirbやpryは大丈夫
jirb(JRubyのirb)は何か一文字打たないと↑が反応しない
あとruby -pe ""も何か一文字撃たないと駄目な模様

330 :デフォルトの名無しさん:2017/06/17(土) 13:52:50.98 ID:CkD5o1Z0.net
これからrubyをやる意味ってなにが考えられますか?

331 :デフォルトの名無しさん:2017/06/17(土) 14:36:25.65 ID:qMkdrUOQ.net
過去に一度だけプチブームになったことがあったんだけど
その原因と、そのあと下火になった理由を探求するとかかな
駄目と分かっている人は初めから駄目だよ、って言ってたんだけど
残念ながら世の中の全員が賢明というわけではなかったから
やはり、一過性のブームとか、時代でとか、そういうのはあるもので
今から追体験したければRubyはよい選択だと思うよ
ただ、さっきも書いたけど、全員が間違ったわけじゃないんだよ
半数以上かそれ以上の人はダメって初めから言ってたんだよ

あとはMarzの勉強かな
あの人、頭の弱い人を騙すことに関してはものすごい技術を持ってるから
そういうのに興味があればって感じ
具体的には「モノ」を中心に考えさせて、大事なものを見えなくさせたり
一見効率的に見えて実は遠回りっていう「局所解」に追い込んだりするその手法
おもしろいのはRuby3.0をどうするのか、なぜか今本人も困ってるところ
人を呪わば穴二つって言うように、他人を追い込むツールを作ってるつもりで
自分自身もまた追い込まれるってのは在るみたいね

332 :デフォルトの名無しさん:2017/06/17(土) 15:18:40.82 ID:KrWMylVm.net
具体論がまったくないところがすごいなw

333 :デフォルトの名無しさん:2017/06/17(土) 16:22:03.43 ID:b4+zDofQ.net
>>330
日本人の場合
あらゆる言語の中で一番易しいプログラミング言語
(子供用のおもちゃを除く)

334 :デフォルトの名無しさん:2017/06/17(土) 16:52:41.05 ID:CkD5o1Z0.net
そうですか
GUIはどれを使えばいいですか?

335 :デフォルトの名無しさん:2017/06/17(土) 17:23:28.18 ID:RyxkXkzJ.net
どうしてもやりたいならjruby+jrubyfx楽よ

336 :デフォルトの名無しさん:2017/06/17(土) 17:39:53.37 ID:ZEU2lDOZ.net
この時点で、rubyだめってヒシヒシ伝わる。

337 :デフォルトの名無しさん:2017/06/17(土) 18:11:55.35 ID:n14YEU6w.net
>>331
初見のコピペ

338 :デフォルトの名無しさん:2017/06/17(土) 18:16:55.55 ID:n14YEU6w.net
>>334
rubyでは向いてないからGUIやめとけ
pythonでGUIやるといいよ

339 :デフォルトの名無しさん:2017/06/17(土) 19:44:55.62 ID:KrWMylVm.net
>>331 の文章とか論理展開とか見てて何かに似てるなーと思っててずっと思い出せなかったが
やっと思い出した

これって、「ゲンダイ」の論調に似てるんだ!w

340 :デフォルトの名無しさん:2017/06/17(土) 19:46:39.93 ID:KgLuH5ks.net
まつもと氏は合理主義のようだけどGUIにはそういうのは及んでないんですか?

341 :デフォルトの名無しさん:2017/06/17(土) 20:05:28.72 ID:x959dLvJ.net
>>340
まつもと氏の行動原理は「IT土建屋死ね」
だからWinでのGUI開発でRubyが広く使われるようなことはあってはならない

342 :デフォルトの名無しさん:2017/06/17(土) 21:40:11.74 ID:83r52Wsn.net
>>330
普通にメジャー言語だから
そのメリットはあると思うけど

他のメジャー言語でも別にいいが
日本語情報が豊富なのが良い

343 :デフォルトの名無しさん:2017/06/17(土) 21:41:18.42 ID:83r52Wsn.net
>>334
Tkが(旧)標準
見た目が簡素だが覚えやすいので
最初はこれがオススメ

344 :デフォルトの名無しさん:2017/06/17(土) 21:42:43.07 ID:83r52Wsn.net
>>331
何がダメでどうすればいいのか言わないなら
たんなる代替なき批判に見える
あとMarzってなんだよ!

345 :デフォルトの名無しさん:2017/06/17(土) 21:44:31.17 ID:83r52Wsn.net
>>340
Tkを標準にしたのは合理的だと思うけど?
もしPythonに移ってもTkは使えるからね

346 :デフォルトの名無しさん:2017/06/17(土) 22:00:59.26 ID:qMkdrUOQ.net
あぁごめんな
ただあの人のインタビューとか読めばわかるけど
逆張り逆張り言ってる
あの人自身もRubyの筋が良いとかメインストリーム的な思想であるとは
考えてないんだよ
ただ、自分の人生の中で逆張りした場合にうまくいくことが多かったので
逆張りし続けているんだとか
だからRuby3.0でも逆張りの一種として
静的型の機能は導入しない方向を検討しているんだろうな
ただそう何度も逆張りが上手くいくとは思わないし
逆張りはしょせん逆張りだろ?あだ花というかなんというか
そういうこともあって結局Rubyはプチブームで終わった現状があるわけだし
変なことして注目を集めることはあってもそれは一過性だよ、芸人じゃあるまいし
しかも逆張りしたときに自分にとって都合がよいことが多かったってだけで
使い手のことは別に考慮されてないんだよなー

347 :デフォルトの名無しさん:2017/06/17(土) 22:03:22.44 ID:KrWMylVm.net
>>346
あいかわらす週刊誌レベルの根拠ない批判しかできないんだなー

348 :デフォルトの名無しさん:2017/06/17(土) 22:07:45.91 ID:qMkdrUOQ.net
普通に考えたら静的型を導入しない理由は全くないんだよ
ただ、あえて理由を挙げるとしたら、最初Rubyは動的型で出発したから
いまさら静的型の機能を入れ込むのは非常に難しいってことなんだよ
過去との互換性もあるし、そういうコミュニティーになっちゃってるしな
もちろんこれは動的型に「逆張り」した結果なんだろうけど
あとあと苦しいわなー

349 :デフォルトの名無しさん:2017/06/17(土) 22:10:52.30 ID:KrWMylVm.net
>>348
もうちょっと言語について勉強してから長文で語ってくれないかなー
正直今のレベルではゲンダイにも載せてもらえないレベルのただの妄言だしさ

350 :デフォルトの名無しさん:2017/06/17(土) 22:22:53.33 ID:qMkdrUOQ.net
ただここまで静的型が「ハマる」とは俺も想像してなかったし
Matzも想像できなかったんじゃろな
何だか知らないが、静的型はすべてにおいて丁度よい感じになってるんだよな
神がかった偶然がいくつも重なってるかんじで、最適解になってる
この牙城はなかなか崩せないよ、一つや二つのメリットじゃないからね
なんでこんなに上手くいったんだろうね

351 :デフォルトの名無しさん:2017/06/17(土) 22:26:25.66 ID:83r52Wsn.net
>>348
>普通に考えたら静的型を導入しない理由は全くない
そんなことない

Python、JavaScriptなど
メジャーな言語が導入してるんだから

352 :デフォルトの名無しさん:2017/06/17(土) 22:31:07.35 ID:KrWMylVm.net
http://hissi.org/read.php/tech/20170617/cU1rZHJVT1E.html
てかこいつ変な人間だったわ
相手しちゃいけないタイプ

353 :デフォルトの名無しさん:2017/06/17(土) 22:59:47.96 ID:qMkdrUOQ.net
まず動的型の根本的な慢性的ともいえる文法上の悩みの種は
どうにかして変数宣言をなくしたい欲求にかられるって点にある
動的型であるから変数宣言に型を書く必要がないので
なんとかして変数宣言自体をなくしたいっていう
まぁ分からなくもない
しかしながら変数宣言には変数の型を決める役割があるのとは別に
「変数のスコープを決める」という役割もあったわけで
安易に変数宣言を削除してしまったRubyやPythonのような言語は
大体において変数のスコープが奇妙なことになっているのじゃ
例えばRubyにおいては「@」であったり、ブロックローカル変数であったり
Pythonであればnonlocalであったり、なにか場当たり的だし
実質的な変数宣言の一種のような気もする
あと、if文や繰り返し文の後ろに続くブロックなどでスコープを持てなくなって
しまったりもな、なんせ、文法上、宣言を代入で代用しているから
代入と宣言の区別がつかないような状態で、かゆいところに手が届かない
だから結局、実は変数宣言は有ったほうが良いんじゃね?ってなって
ならついでに型も書けばってなって、今はさらにこれに加えて
型を書きたくなければ型推論使えば?ってことにまでなっちゃってる
型推論使えば変数宣言をする手間はほぼなくなるし
スコープを細かく制御できるようになるんだから
もう変数宣言が無いことはメリットにならなくなってしまった
まぁこんなのは氷山の一角でジャブだ
コンパイラによる型チェック云々言いたくなるところだがそれ以外にも
文法上の問題としてこういうのもあるということ
その他にも実行性能であったり、ドキュメントの自動生成であったり
リファクタリングの容易さであったり
IDEの入力補完etcのサポートのしやすさであったり
人間も型があったほうが読みやすいんじゃないかとか
結局コメントで型を書いてるんじゃね?とか
色々あるわな
なんか複合的なんだよ
動的型がここまでケチョンケチョンになるとは流石に想像できなかったわ

354 :デフォルトの名無しさん:2017/06/17(土) 23:00:37.97 ID:KrWMylVm.net
http://hissi.org/read.php/tech/20170617/cU1rZHJVT1E.html
はいはい、もう君の素性はバレてるよ

355 :デフォルトの名無しさん:2017/06/17(土) 23:04:50.91 ID:qMkdrUOQ.net
ただ動的型にも良い点があって
「処理系の実装が楽」
しかしこれも実用性を考えて突き詰めていけばJSのV8エンジンのように
加速度的にむしろ大変なことになるというね
とにかく旨みが無い

356 :デフォルトの名無しさん:2017/06/17(土) 23:05:43.09 ID:KrWMylVm.net
http://hissi.org/read.php/tech/20170617/cU1rZHJVT1E.html
はいはい、もう君の素性はバレてるよ

357 :デフォルトの名無しさん:2017/06/18(日) 00:20:30.41 ID:lJ0QohrH.net
LISPみたいに動的型でも宣言ある言語の方がスコープが分かりやすい

358 :デフォルトの名無しさん:2017/06/18(日) 02:54:31.67 ID:MwiRGqjx.net
動的型付けでダックタイピングみたいに
組みやすくなってるメリットがあるから

実際Ruby以外にもPerl、Python、PHPの
P言語はみんな動的型付けになってる

小規模Webサービスのサーバサイド言語
としての用途には動的型が合ってる

359 :デフォルトの名無しさん:2017/06/18(日) 07:50:58.11 ID:ppLsekVC.net
>>358
何か勘違いしてるみたいだけど、ダックタイピングっていうのはオブジェクト指向言語の実装手法の一つで、プログラマにメリットなんかないよ
特にRubyだと多態をダックタイピングに任せるのは嫌われる傾向があって
無意味でも空のメソッドを定義しておいて継承したりするし

360 :デフォルトの名無しさん:2017/06/18(日) 08:09:30.26 ID:ppLsekVC.net
ちなみに、Rubyでダックタイピングが好まれないのはドキュメントよりもコード読めという文化のせいだと思ってる
ダックタイピングだと「このパラメータにはアヒルを渡してくれ」じゃなくて
「このパラメータにはアヒルのように歩きアヒルのように鳴くものを渡してくれ」といちいちドキュメントに書かなきゃいけない
(静的型になる前の)Pythonはドキュメントを重視する文化だから実際そういうドキュメントの書き方をすることもあるんだけどね
Rubyだとそれを避けるために無意味とわかっていても空のスタブとしてアヒルクラスを定義しておいて「アヒルを渡してくれ」と書くわけ

361 :デフォルトの名無しさん:2017/06/18(日) 08:24:04.22 ID:mREyO8+w.net
>>353
Rubyが動的型って言うより、
型宣言不要と特徴付けるのがええんちゃうかなぁ。

変数宣言なしは良いとして、変数のスコープが判りにくくなったってのは、
そうかも。

362 :デフォルトの名無しさん:2017/06/18(日) 08:29:35.01 ID:F94toio2.net
ダックタイピング任せはメンバの追加がしづらいのも問題
静的型ならインターフェースにメンバを足せばコンパイルエラーになるからエラー箇所を直せばいいが
完全なダックタイピングだと手掛かりがなく修正漏れが発生しやすい
とりあえずスタブを継承させるようにしておけばメソッドを足してもメソッド未定義のエラーにはならない

363 :デフォルトの名無しさん:2017/06/18(日) 16:45:30.43 ID:xPH4G83l.net
いまさら$とか@とかつけたくないな

364 :デフォルトの名無しさん:2017/06/18(日) 17:45:55.35 ID:MwiRGqjx.net
>>359
>Rubyだと多態をダックタイピングに任せるのは嫌われる傾向
>>360
>Rubyでダックタイピングが好まれない

勝手に決めんなって
それはJavaみたいな静的型の発想で
Rubyを使おうとする奴の話だろ

インターフェイスの継承不要なのが
ダックタイピングのメリットだから

365 :デフォルトの名無しさん:2017/06/18(日) 17:56:41.46 ID:mREyO8+w.net
Rubyのスクリプトをバックグラウンドで動かすにはどうすれば良いでしょう?
>ruby someScript.rb &

と実行してもTerminal.Appを閉じるとrubyも終了してしまいます。
OSはmacOS Sierraです。

以前、HP-UXで作業して居た時には、xtermを閉じても、logoutしてもバックグラウンドで動き続けてくれました。

launchdとかいうdeamonをコントロールするコマンドがある様なんですけど、これを使って動かさないといけないのでしょうか?

366 :デフォルトの名無しさん:2017/06/18(日) 18:03:58.53 ID:kXxrIi51.net
tmux使え

367 :デフォルトの名無しさん:2017/06/18(日) 18:13:50.36 ID:mREyO8+w.net
>>366
レスTHX
terminal multiplexerを使えば良いのでしょうか?

someScript.rbを動かすには、someScript.plistを書いて
>launchctl load someScript.plist
ってやるらしいのですが、plistファイルなんて書いた事ないぞぉ。

書き方がよく判らん。
なにか、勘違いしてたら、ご指摘を!

368 :デフォルトの名無しさん:2017/06/18(日) 18:27:18.73 ID:mREyO8+w.net
>launchctl load a.plist
/work/a.plist: Invalid property list


property listの書き方がよく判らん。
ただのxmlファイルじゃないのか?コメントの放り込み方が悪いのか?
無効なproperty listだとぉー?

369 :デフォルトの名無しさん:2017/06/18(日) 18:38:44.94 ID:mREyO8+w.net
やったぁー。動き出しタァ。
Terminal.Appを閉じても動いてる。ふぅー。

370 :デフォルトの名無しさん:2017/06/18(日) 19:28:18.01 ID:mREyO8+w.net
俺的忘備録

必須key、3つ
<key>Label</key>
<key>ProgramArguments</key>
<key>KeepAlive</key>

3つ目のやつを<true/>にしないとbackgroundで動かん!
さらに、最後のはOnDemand=falseと等価なのだが、
OnDemandはshould not use!だって。
man launchd.plistに詳細が記載。

371 :デフォルトの名無しさん:2017/06/18(日) 19:51:32.81 ID:mREyO8+w.net
Labelが無いとどうなるんでしょう?

372 :デフォルトの名無しさん:2017/06/18(日) 19:54:50.51 ID:mREyO8+w.net
Invalid or missing service identifier

373 :デフォルトの名無しさん:2017/06/18(日) 20:02:09.12 ID:mREyO8+w.net
さて、stdoutはどうやって拾うのだ?

374 :デフォルトの名無しさん:2017/06/18(日) 20:13:05.46 ID:mREyO8+w.net
man lauchd.plist
して/stdout
すれば出て来た。

375 :デフォルトの名無しさん:2017/06/18(日) 22:47:06.74 ID:o43mtcr6.net
>>365-369
Linux では、プロセス間に親子関係がある。
端末から、Aプロセスを起動すれば、端末が親で、Aが子

「親亀こけたら、子亀もこける」から、端末が終了すると、Aも終了する。
端末から、SSHで、リモートサーバーへアクセスしても、
接続断などで、リモートのシェルが終了すると、
シェルから起動したコマンドも終了してしまう

リモートで、tmux をずっと起動させておけば、コマンドは動き続ける

他には、サービス・デーモンのように、プロセスの親をなくす(デーモン化)

ptree コマンドで、プロセスツリーを見てみ

376 :デフォルトの名無しさん:2017/06/19(月) 00:00:57.99 ID:7PGcweVa.net
>>365
マッキンは知らんので、Linuxだとして。
おそらくプロセスを切り離さないと。

nohup、disownとかぐぐれ。

377 :デフォルトの名無しさん:2017/06/19(月) 09:53:11.25 ID:JRZAs/i8.net
>>375
そんな面倒なことしなくても
hoge.app &
でよくね?

378 :デフォルトの名無しさん:2017/06/19(月) 09:56:20.02 ID:rtjcKsU2.net
>>377
それやっても親子関係が残るからだめだっつってるのに文盲か?

379 :デフォルトの名無しさん:2017/06/19(月) 10:00:51.58 ID:zE2VOzv5.net
>>376
THX

mackin’でもnohup使えた。
launchctlなんて使わなくて良さそう。

>>377
hoge.app&ではterminal.appの終了時にhoge.appがkillされちゃうんだよねぇ。
mackin’では。Linuxでは違うのか?
最近LInux触ってないのでよく知らんのだ。

380 :デフォルトの名無しさん:2017/06/20(火) 00:23:19.32 ID:8wgIueO/.net
pstree コマンドで、プロセスの親子関係をツリー表示して、見てみれば?

結局、Ruby を学んでも、OS を学んでいなければ、
システム系のプログラミングは出来ない

だから普通、プログラマーよりも、LPIC資格を持っている、
サーバー構築・運用者の方が、給料が高い

381 :デフォルトの名無しさん:2017/06/20(火) 00:54:05.18 ID:uMblZ3Am.net
× システム系のプログラミング
○ 運用系のプログラミング

382 :デフォルトの名無しさん:2017/06/20(火) 08:29:32.89 ID:rapwcYHc.net
>>380
system callを知らなくても、まあ、一部知ってるけどRubyスクリプト、スマホアプリは作れるよ。

OSを学ぶって、言うけど、それ幅が広すぎ!
まあ、パタ・ヘネ位は読んでます。

383 :デフォルトの名無しさん:2017/06/20(火) 10:01:32.57 ID:8wgIueO/.net
まあ、プログラマーで、プロセスに親子関係があるとか、
cron の使い方とか、tmux とか、知っている奴はいない

cron あるあるとか、SSH あるあるとか、Linuxでは定番

384 :デフォルトの名無しさん:2017/06/20(火) 10:41:15.76 ID:rapwcYHc.net
>>383
プロセスに親子関係がある。コマンド実行時にshellがforkされるのは知ってたんだけど。。。
以前はnohupなんて使わなくても、
>someCommand &
とすれば
>nohup comeCommand &
した事になったのに!

いつから、nohupなんて現れたのだ?

385 :デフォルトの名無しさん:2017/06/20(火) 10:45:41.82 ID:rapwcYHc.net
どうやらbashは終了時に起動したプロセスにSIGNHUPを送るらしい。

俺が昔使って居た、csh, tcshではそんな事はなかったのに!
時代は変わったんだな。

386 :デフォルトの名無しさん:2017/06/20(火) 12:38:36.99 ID:5s5M5H6z.net
>>384
だよな
いつからだっけ

387 :デフォルトの名無しさん:2017/06/20(火) 12:39:25.49 ID:5s5M5H6z.net
>>385
ああそれか
なんでbashみたいな糞が流行ったんだろ

388 :デフォルトの名無しさん:2017/06/20(火) 12:51:49.38 ID:rapwcYHc.net
zshってのが便利だってのを、webの記事でよく見るけど、
どうなん?

bashが糞なら、zshを使って見るかな。
zshもbashの親戚みたいな動きをするなら、zshも糞って事になるけど。

389 :デフォルトの名無しさん:2017/06/20(火) 13:51:30.44 ID:DOO3yEYl.net
>>388
zsh もデフォの振る舞いは bash とおなじ。
設定で setopt nohup すれば、hup 送らなくなる。
bash でも huponexit オプション外せば送らなくなる。
ソフトウェアのマニュアルも読まずに糞とか言うのは、
自分は所詮そのレベルの人間ですと言ってるようにしか聞こえないよ。

390 :デフォルトの名無しさん:2017/06/20(火) 13:59:24.54 ID:rapwcYHc.net
>>389
はい!
無闇に糞って言った事を、反省します。

391 :デフォルトの名無しさん:2017/06/20(火) 14:18:05.45 ID:rapwcYHc.net
>>389
うぅーん。
macOS Sierraのbashにもshopt huponexitってのがあるが、
どうも、最初からoffになってるにも関わらず、signhupを送ってる。

ためしにonにしてみたが、bash終了時にbackground実行しているプロセスが死んでしまう事に、変わりなし。

nohupコマンドを付けないと、background実行できないみたいだ。

392 :デフォルトの名無しさん:2017/06/20(火) 15:04:00.33 ID:DOO3yEYl.net
>>391
bash の終了を exit じゃなくてウィンドウ閉じるでやってない?
明示してないのにバックグラウンドで動きっぱなしになっていて欲しいユースケースってどんな時なの?
nohup/disown の方が好きな自分からは想像できないわ。

393 :デフォルトの名無しさん:2017/06/20(火) 15:20:19.60 ID:rapwcYHc.net
>>392
Scrapingスクリプトをproxy経由で動かす場合、proxyのレスポンスが悪いので、数時間掛かります。proxyは10箇所を順に変えながらScrapingします。

ruby someScript.rb &で即backgroundで動いて欲しいです。
まあ、慣れればいいだけかもしれんけど、nohupっていうprefixが必要なのは、ちょいとなぁ。

394 :デフォルトの名無しさん:2017/06/20(火) 15:22:05.91 ID:rapwcYHc.net
>>392
Terminal.appは動かしッパでも構わないのですが、
Vim7.4, Vim8.0が時々落ちます。その際、Terminal.appも巻き添いなんです。
すると、Scrapingも落ちちゃって困ってたのです。

395 :デフォルトの名無しさん:2017/06/20(火) 15:23:21.50 ID:rapwcYHc.net
Vimが落ちるのはterminal typeがxterm-256colorが悪さをしていて、ansiへ変更がwork aroundだと聞いて、今様子を見ているところです。

396 :デフォルトの名無しさん:2017/06/20(火) 15:29:54.49 ID:DOO3yEYl.net
>>394
vim 上の shell で実行してるの?
tmux か screen の上で動かすか、あきらめてnohup 書く癖を身につけるしかないかと。

397 :デフォルトの名無しさん:2017/06/20(火) 15:36:38.36 ID:rapwcYHc.net
>>396
nohup書きます。
時代はnohupなんすね。

macOSアプリ作り始めたけど、AppKitってUIKitと似てるけど違うので、混乱するわぁ。

398 :デフォルトの名無しさん:2017/06/20(火) 16:02:58.26 ID:HkCB1WW9.net
rubyスレ?

399 :デフォルトの名無しさん:2017/06/20(火) 16:14:40.13 ID:+dHGS6wU.net
tmux使う方が早い

400 :デフォルトの名無しさん:2017/06/21(水) 00:25:07.92 ID:39OgiOwj.net
>>393
> 即backgroundで動いて欲しいです。

冷静になったら、そうでないほうがたしかによい、と思うはず。
誤ってbgにしたり、bgにしたまま忘れたりした状態でログアウトした場合のリスクを考えれば。

401 :デフォルトの名無しさん:2017/06/21(水) 13:07:38.08 ID:L1LFWazB.net
むしろ、WSH で、Excel など外部アプリを起動すると、Excel のプロセスが残り続けるから、

どんどん、Excel のプロセスが増えていき、
これらをどうやって終了するのか、皆苦しんでいるんだが

402 :デフォルトの名無しさん:2017/06/21(水) 18:38:55.26 ID:xJXAtiMS.net
残らないが?

403 :デフォルトの名無しさん:2017/06/23(金) 10:35:54.52 ID:0OdP20aK.net
>>400
bgの何が問題?

404 :デフォルトの名無しさん:2017/06/23(金) 10:36:22.71 ID:0OdP20aK.net
>>401
馬鹿だな

405 :デフォルトの名無しさん:2017/06/23(金) 13:24:40.77 ID:AzvmtT2M.net
初心者です、自作の汎用関数を定義したのですが、いちいちスクリプト内にコピペするのが面倒なので
外部ファイルにして冒頭でrequireすることにしました。
ですが、ここに具体的なファイルパスを書くと、ファイルの設置場所を変えたい場合に問題があるのでパスは書きたくないです。
require 'myfunc'
と簡便に書ければいいのですが、どこに置けばいいでしょうか?

406 :デフォルトの名無しさん:2017/06/23(金) 13:37:52.68 ID:9PTuVR6v.net
現実の開発ではきちんとバージョン管理するのでフォルダの構成変更なんかそんなに頻繁にやることではない
だからリポジトリを分けるほどでもないなら気にせずパス決め打ちでいい
独立性と再利用性が高いものであればリポジトリを分けてgemにする

407 :デフォルトの名無しさん:2017/06/23(金) 14:21:13.96 ID:AzvmtT2M.net
ありがとうございました

408 :デフォルトの名無しさん:2017/06/23(金) 14:40:20.24 ID:tdHTYauf.net
rails で、自作ライブラリの、autoload なら、

lib/モジュール名/クラス名.rb
lib/foo/bar.rb

module Foo
class Bar

ファイル名は小文字で、単語の区切りは'_'に変える

class FooBar
lib/foo_bar.rb

409 :デフォルトの名無しさん:2017/06/23(金) 14:43:58.67 ID:qsHmY7yg.net
>>405
場合によっては環境変数 RUBYLIBにmyfunc等のパスを淹れるのもあり
https://docs.ruby-lang.org/ja/latest/doc/spec=2fenvvars.html

410 :デフォルトの名無しさん:2017/06/23(金) 18:29:59.15 ID:+um/cK3a.net
>>401
“終了しない excel application”でググったら出てきたけどこの仕様は罠だろ・・・

411 :デフォルトの名無しさん:2017/06/23(金) 18:31:41.63 ID:PAAniHx4.net
馬鹿には無理

412 :デフォルトの名無しさん:2017/06/23(金) 19:09:21.56 ID:F2nCEsS4.net
>>410
COM経由で起動させてるんなら自動で終了する方がきもちわるい

413 :デフォルトの名無しさん:2017/06/23(金) 19:49:53.85 ID:+um/cK3a.net
>>412
自動化処理に使ったプロセスが不要になっても残りっぱなしの方が気持ち悪い

414 :デフォルトの名無しさん:2017/06/24(土) 18:05:14.46 ID:M5zFSS9+.net
>>405
モジュールファイルへの相対パスなら確定できる場合はrequire_relative。
特定ディレクトリの設定だけなら許容できる場合は、そのディレクトリを$:に追加。

415 :デフォルトの名無しさん:2017/06/24(土) 18:06:46.13 ID:M5zFSS9+.net
>>413
プロセス自身にはわからんじゃろ。。。

416 :デフォルトの名無しさん:2017/06/28(水) 09:33:18.25 ID:+O8L6XqQ.net
瑕疵担保責任(かしたんぽせきにん)

瑕疵担保責任のポイント

民法改正で事実上期限が「無制限」になった
バグや設計のミスなどは、瑕疵担保責任
納品物に不具合があれば損害賠償を請求される可能性もある
不具合を指摘されたらすぐに行動をとるべし
軽微なミスでも先延ばししない

http://www.atmarkit.co.jp/ait/articles/1706/26/news014.html
http://itpro.nikkeibp.co.jp/atcl/news/17/052601508/?rt=nocnt

改正法では欠陥に気付いてから1年以内にITベンダーに通知すれば、
通知後5年以内は修正や報酬の減額などを求められるとしている

全ベンダーが泣いた民法改正案を解説しよう その1
http://www.atmarkit.co.jp/ait/articles/1609/14/news009.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_2.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_3.html

ポイント1:修補や損害賠償、契約解除の期限がなくなる

従来あった「瑕疵担保期間は引き渡しから1年」という考えはなくなる。
条文にある通り、注文者は成果物が契約の目的に適合しないことを発見したら、
その「発見したときから1年以内」ならさまざまな請求ができる。発見が10年後なら、
11年後まで請求可能なのだ。

もっとも、現実のユーザーとベンダーの関係でも、たとえ契約書に「瑕疵担保責任期間は納品から1年と」明記されていても、
「2年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、
バグが見つかればユーザーのところに飛んで行き、無償で改修するだろう。

417 :デフォルトの名無しさん:2017/06/28(水) 10:47:59.83 ID:+O8L6XqQ.net
366 :nobodyさん 2017/05/29(月) 16:07:39.16 ID:6v4UcGhE
今回の民法改正、ソフトウェア受託開発の場合、(検収後ではなく)バグ発見後1年瑕疵担保責任があるということで、地獄かよ、と思ったが、
元々問題が起きがちな受託案件がビジネス的に成立しなくなることで強制的に業界再編につながるなら良いことかもと思うようになった。
一部で地獄を見ても。
https://twitter.com/yukihiro_matz/status/869061879389343744

367 :nobodyさん 2017/05/29(月) 16:28:06.55 ID:6v4UcGhE
ニュース - 改正民法が成立、「瑕疵担保責任」などシステム開発契約に影響大:ITpro
http://b.hatena.ne.jp/entry/itpro.nikkeibp.co.jp/atcl/news/17/052601508/

372 :nobodyさん2017/05/29(月) 19:10:37.12 ID:???
Railsでシステム作って納品する

Railsはマイナー、メジャーのアップデートが半年以内に必ずある

客がアップデートする。アップデートによるエラーやバグ、動作の不具合に気づく

気づいてから1年以内に通知すれば、5年間無料保証ゲット

つまりRailsがアップデートするたびに、無償の修正作業を発生するということかな

376 :nobodyさん2017/05/30(火) 09:20:20.09 ID:L5po86sS
>>379>>380>>376
客が瑕疵担保責任法の法改正を知ってくると思うから、今後5年無償保証をお願いされるだろう
営業がそれでも仕事を取ってこれるか?たぶん無理だろう。無限の直していたら赤字になる。
こういう保守に弱い言語、ころころ仕様が変わる言語は仕事として発生しなくなってくる。
これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
保守に強い言語のみ生き残れる。

418 :デフォルトの名無しさん:2017/06/28(水) 19:56:54.80 ID:ZzpJpley.net
> RubyやPHPなど動的言語は確実に廃れる。
軽々しくこういう断言する人間の言葉は話半分どころか1/4以下にして聞け、ってばっちゃが言ってた

419 :デフォルトの名無しさん:2017/06/28(水) 20:15:29.47 ID:kl/WEkBu.net
Rubyが現在進行形で廃れていってるのは確かな事実だけどね

420 :デフォルトの名無しさん:2017/06/28(水) 21:48:23.90 ID:WbQwz649.net
ぶっちゃけて言えば、意味論的には普通なのに文法がぐちゃぐちゃすぎて使いづらい。
Perl のあまりの一貫性のなさに Ruby を試したりしたこともあるが、
多少はマシって程度でうんざりするような無茶苦茶さを指向していることにかわりない。
parse.y が黒魔術の塊だというのは聞いていたが、実際に見てみると常軌を逸している。
せっかく yacc を使ってるのに純粋な LALR として解釈できないようなわけわかんないクソが埋め込まれてて、
もはや統制が取れてない。
mruby をベースにして拡充していった方がいい気がする。

421 :デフォルトの名無しさん:2017/06/30(金) 00:38:26.19 ID:UcGpMueB.net
使いづらいなら他の言語使えばいいじゃん
わざわざRubyスレ覗いてRubyの悪口書いてる暇があるなら他の言語でコード書こうぜ

422 :デフォルトの名無しさん:2017/06/30(金) 01:21:01.84 ID:svEzz20W.net
>>421
だからもう十年以上使ってない。
事実として文法規則のごちゃごちゃしたところはあるという話だよ。
そして事実として私はそれを気に入らなかったという話だよ。

よくある場面を短く書けるとか人間の一般的な感覚に合わせたりもした結果だというのはわかっているし、
Ruby に向いた用途があるのは知ってるよ。
ただ、それの行く先には実装上の行き詰まりが生じそうだという懸念だ。

423 :デフォルトの名無しさん:2017/06/30(金) 01:37:54.59 ID:UcGpMueB.net
>>422
うん、そんな人間がなぜRubyスレを覗いてて、なおかつ悪口を書き込むのか
はっきり言えば粘着質で気持ち悪い

424 :デフォルトの名無しさん:2017/06/30(金) 02:32:52.47 ID:7V8Jdo2I.net
Rubyは読み書きしやすいから使ってる
規則が統一された文法が良ければLispを使えよ

425 :デフォルトの名無しさん:2017/06/30(金) 09:41:10.74 ID:jqp1y4Nc.net
何で使ってない言語を見に来ているの?
暇なの?

426 :デフォルトの名無しさん:2017/06/30(金) 09:50:34.06 ID:flSVgAwO.net
rubyは上級者には不満があるのかもしれんが、俺の様な素人が使うには使いやすい。
メソッドチェインも「.」でつなげていくだけだし、
正規表現使うのにimportとかしなくていいし。
でも複数行のコメントアウトは面倒。

427 :デフォルトの名無しさん:2017/06/30(金) 09:51:37.98 ID:BBkM2EA1.net
>>423

Rubyスレに来て悪態さらすヤツってのは、喩えて言えばこんな感じだ。
最初は、良い会社だと思って就職した。
けど、外から見るのと、入って見るのとでは大違いで、内部は火の車だった。
(例:最近の東芝、タカタ)

転職活動も、うまくいかず、悪態をつかざるを得なくなる。

428 :デフォルトの名無しさん:2017/06/30(金) 10:15:14.59 ID:pDIkSJMf.net
2ちゃんも昔は良かった

429 :デフォルトの名無しさん:2017/06/30(金) 11:25:06.46 ID:BBkM2EA1.net
>>428
そうかぁ?殺人予告とかあったんだぞ!
そんでもって、本当に発生してビックリなんてのが、2chなのだ。

430 :デフォルトの名無しさん:2017/06/30(金) 11:30:06.98 ID:hBaGJvUf.net
>>426
> でも複数行のコメントアウトは面倒。

初心者スレということでいちおうマジレスしておくと
=begin
=end
で囲むと一挙にコメントアウトできる

431 :デフォルトの名無しさん:2017/06/30(金) 11:33:27.81 ID:BBkM2EA1.net
>>430
たしか、こんなのも
__END__

以下の行は全てコメント!
うる覚えだが。

432 :デフォルトの名無しさん:2017/06/30(金) 11:38:01.54 ID:625dciv9.net
>>430
こんな糞みたいなの教えたって誰も使わない

433 :デフォルトの名無しさん:2017/06/30(金) 11:45:54.89 ID:flSVgAwO.net
>>430
すみません。知っているんですが、
jsとかみたいに/**/とかだと入力がラクだなーって話です。

434 :デフォルトの名無しさん:2017/06/30(金) 12:42:16.16 ID:UcGpMueB.net
>>433
メモ帳使ってるわけじゃないんだろうからそれぐらいショートカット使えば差はない

435 :デフォルトの名無しさん:2017/06/30(金) 12:50:26.31 ID:hBaGJvUf.net
タイピングの文字数に拘るあたりが初心者だよな
(↑それが悪いことだとは言っていないし、一切の悪意は無い)
プログラミングを指の労働と捕らえてるんだよな

436 :デフォルトの名無しさん:2017/06/30(金) 13:04:45.36 ID:mtvSOUWH.net
>>430
>>431
どっちもコメントアウト用じゃないから

437 :デフォルトの名無しさん:2017/06/30(金) 13:09:33.76 ID:UcGpMueB.net
>>436
=begin, =end は一時的なコメントアウトにはよく使うよ

438 :デフォルトの名無しさん:2017/06/30(金) 13:35:43.48 ID:2Da2vksV.net
>>435
それはMatz批判か?
処理系を黙らせるためだけの冗長な記述を強いられることは屈辱であると神が仰っている

439 :デフォルトの名無しさん:2017/06/30(金) 13:40:13.66 ID:625dciv9.net
そんなperlのパクリ機能なんかもう使ってる人いないよ
普通は#で複数行コメントアウトするようなエディタ使ってるでしょ

440 :デフォルトの名無しさん:2017/06/30(金) 14:08:18.32 ID:W0OUnv8/.net
黙らせるならexit!やな

441 :デフォルトの名無しさん:2017/06/30(金) 16:49:14.50 ID:tesV9X+3.net
一時的に処理から外したいときは「そういやRubyにも複数行コメントの記述法があったななんだったかな」と思いながら
#と方向キーを交互に連打してるかコメントリージョン機能を使ってるかどっちかだな

442 :デフォルトの名無しさん:2017/06/30(金) 18:29:44.40 ID:4uO/IbWe.net
atomやvscodeだったら Ctrl + / で行コメントの挿入削除

443 :デフォルトの名無しさん:2017/07/01(土) 04:05:27.85 ID:J52nGMUC.net
俺は if false 〜〜〜 else 〜〜〜 end を使ってる
あるいは後置 if false
元の処理を走らせる場合は否定演算子を付けて if !false みたいにしてるなあ

444 :デフォルトの名無しさん:2017/07/01(土) 04:30:56.70 ID:yR6MEKU9.net
>>443
それでは駄目なのだ
まあじきにわかる

445 :デフォルトの名無しさん:2017/07/01(土) 05:26:51.20 ID:PPsHHHSM.net
>>435
まったくその通りだな
「=begin」程度でタイプ数多くてダルいとか

Rubyは記述だと簡潔な方だし
コメントアウトを多用するなんて
書き方してたらそもそも筋が悪い

446 :デフォルトの名無しさん:2017/07/01(土) 11:17:02.68 ID:N+ZXroXE.net
>>415
爺なの?

447 :デフォルトの名無しさん:2017/07/01(土) 14:26:38.71 ID:R60vnDrO.net
同じ処理をさせようとしても
初心者が書くのと慣れてる奴が書くのとですでに差が出てる
a = ['a', 'b', 'c']
b = []
i = 0
a.each {|c| b << (i.to_s + c); i += 1}
p b

↑こーいう書き方する人ほどタイプ数に拘り
↓こーいう人はもはやそこでは騒がない

c = %w(a b c).each_with_index.map {|c, i| i.to_s + c}
p c

448 :デフォルトの名無しさん:2017/07/01(土) 14:59:17.39 ID:yR6MEKU9.net
いい加減壁に向かって物言うのやめたら
誰もそれを話題にしてはいないよ

449 :デフォルトの名無しさん:2017/07/01(土) 15:48:19.58 ID:qX8eRJNR.net
>>447
それはわかる
ダメな奴は抽象度を上げようとせずに同じことを短く書こうとする
地頭悪いのをプログラミングの小手先のスキルで誤魔化してる奴にありがち

450 :デフォルトの名無しさん:2017/07/01(土) 16:44:27.93 ID:R60vnDrO.net
>>449
そうそうw
なんかこう、間違った努力をしちゃうんだよねえ

451 :デフォルトの名無しさん:2017/07/01(土) 19:39:10.28 ID:QATpSz/4.net
>>444
駄目でもないのじゃ。
違う処理を簡単に試してみたいときなんかは、外したい部分にも最低限の文法チェックがかかるので、事故が少なかったりな。

452 :デフォルトの名無しさん:2017/07/01(土) 20:41:44.60 ID:M8KylmXN.net
b = []
b << 要素

1つずつ、配列に追加していく処理だけど、
エラー処理などがいらないなら、簡潔に書くべき

453 :デフォルトの名無しさん:2017/07/01(土) 21:37:44.67 ID:sOThA7TG.net
>>447
> 初心者が書くのと慣れてる奴が書くのとですでに差が出てる

せやね

お前が書くと
c = %w(a b c).each_with_index.map {|c, i| i.to_s + c}

俺が書くと
c = %w(a b c).map.with_index {|c, i| i.to_s + c}

これはタイプ数の問題じゃねーよ?
配列から配列に変換して入れる処理で
eachって単語がでてくることキモいって話

454 :デフォルトの名無しさん:2017/07/01(土) 22:38:49.78 ID:M8KylmXN.net
関数厨は、Ruby・JS のスレにやって来て、

何でもかんでも、map を使って、1行で書いてしまうからなw

455 :デフォルトの名無しさん:2017/07/01(土) 22:44:59.49 ID:Tp0p2tiJ.net
>>453のようなことに特に興味がなくて
正直どっちでもよくね?
って考える普通の人はRubyを使わなくてもよいってことなんだよ
まさにこれがRuby
「タイプ数にこだわるのは初心者」
「そうそうそうなんだよね〜」
とか言いながら動的型言語を使うのって最高でしょ

456 :デフォルトの名無しさん:2017/07/01(土) 23:45:31.46 ID:N+ZXroXE.net
mapperかな

457 :デフォルトの名無しさん:2017/07/01(土) 23:49:19.16 ID:cxvWbv+r.net
いくらRubyのコード効率が良いと言っても可読性を犠牲にするつもりはないな
無用に行数を減らしたりオブジェクト名の長さを減らしたりはしない
そういう書き方をすると後で苦労するのは自分だし

458 :デフォルトの名無しさん:2017/07/01(土) 23:54:52.06 ID:sOThA7TG.net
>>457
可読性というのは読むべき「単語」を減らすものであって
行数を減らすことやオブジェクト名を減らすことは
単語を減らすことにはつながらない。

例えば行数を減らしたとしても、それが 空行や { などの
カッコだけの行を減らした所で単語数は変わらない。
むしろ空行がある方が読みやすい文章となることもある
名前も、短い名前にしても単語数は変わらない

単語数を減らすと結果的に行数が減ることはあるが、
行数を減らすことは可読性を上げる行為ではない。

459 :デフォルトの名無しさん:2017/07/01(土) 23:56:03.86 ID:5xgWPcGQ.net
>>454
本当の関数厨は今時map程度に拘らんぞ。
どの言語でも採用されてるしな。

{|c, i| i.to_s + c }

のがどうにか出来ないか気になるw

460 :デフォルトの名無しさん:2017/07/01(土) 23:56:04.59 ID:sOThA7TG.net
ちなみにさっき書いたこれ。

c = %w(a b c).each_with_index.map {|c, i| i.to_s + c}
c = %w(a b c).map.with_index {|c, i| i.to_s + c}

下の方が「単語数」が減っている。
each with index map ・・・ 4単語
map with index ・・・ 3単語

461 :デフォルトの名無しさん:2017/07/01(土) 23:57:42.07 ID:sOThA7TG.net
>>459
できるぞ

c = %w(a b c).map.with_index {|c, i| "#{i}c" }

462 :デフォルトの名無しさん:2017/07/02(日) 00:03:47.37 ID:0SO6fajC.net
あ、間違った。こうなw

c = %w(a b c).map.with_index {|c, i| "#{i}#{c}" }

俺としては、なんでmapがデフォルトでindexを持ってないかのほうが気になるな。
JavaScriptならこれでいいのに

a = ['a', 'b', 'c']
c = a.map((v, i) => i+v)

463 :デフォルトの名無しさん:2017/07/02(日) 00:18:14.45 ID:IGa4njyh.net
>>462
というかJavaScriptが特殊なんだよ
引数の数のチェックをしないからな

464 :デフォルトの名無しさん:2017/07/02(日) 00:19:08.94 ID:J2BCSwZK.net
JavaScriptはJavaの名前にあやかっただけで全くJavaじゃないって本当ですか?

465 :デフォルトの名無しさん:2017/07/02(日) 00:23:24.49 ID:0SO6fajC.net
>>463
Rubyでもこの文脈では引数の数のチェックをしてないようですが?

%w(a b c).map.with_index {|c| "#{c}" } # 引数が足りなくてもエラーなし
%w(a b c).map {|c, i, x, y, z| "#{i}#{c}" } # 引数が多くてもエラーなし

466 :デフォルトの名無しさん:2017/07/02(日) 00:24:36.29 ID:0SO6fajC.net
>>464
Rubyも宝石の名前にあやかってるだけで全くRubyじゃないよw

467 :デフォルトの名無しさん:2017/07/02(日) 00:24:58.24 ID:J2BCSwZK.net
>>466
なるほどw

468 :デフォルトの名無しさん:2017/07/02(日) 00:29:32.61 ID:WUsDB0eH.net
JavaScriptはLISPっぽい所ある

469 :デフォルトの名無しさん:2017/07/02(日) 00:38:11.58 ID:yqVk05l0.net
>これはタイプ数の問題じゃねーよ?
と言いつつも
>可読性というのは読むべき「単語」を減らすものであって
と言うのであった

そして多くの人はこう思うのであった
「単語数と可読性ってそんなに関係あるか?」
「ここで言ってた可読性って、少々冗長であっても
 読みやすいほうが良いって話じゃなかったの?」

>下の方が「単語数」が減っている。
>each with index map ・・・ 4単語
>map with index ・・・ 3単語

一単語減らせて本当によかったね
>これはタイプ数の問題じゃねーよ? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


470 :デフォルトの名無しさん:2017/07/02(日) 00:49:17.22 ID:0SO6fajC.net
>>469

> >これはタイプ数の問題じゃねーよ?
> と言いつつも
> >可読性というのは読むべき「単語」を減らすものであって
> と言うのであった

矛盾してないよ?

例えばコピペ、コピペを使うとタイプ数は減る。
CTRL+vとたった1文字タイプするだけで、
過去に書いたコードを複製できる。
だけど、読むべき単語は倍増していく


可読性のためにやらなければいけないのは、タイプ数を
減らすことではなくて単語数を減らすこと

471 :デフォルトの名無しさん:2017/07/02(日) 00:55:38.04 ID:0SO6fajC.net
>>469
> 「単語数と可読性ってそんなに関係あるか?」
> 「ここで言ってた可読性って、少々冗長であっても
>  読みやすいほうが良いって話じゃなかったの?」

日本語に置き換えて考えればわかるだろ?
文章はシンプルな方が読みやすい。
ただそれだけのことなんだが。


まああと付け加えるとするならば「誰にとって」の話だな。
もちろんプログラマにとってだ。

これは数学に例えればわかるか?

数学者同士が会話をする時、数式を使ったほうがより簡単に説明できる。
数学者同士の会話で素人がわかるように数式を使わないで
会話するのは話をわかりにくくするだけ
なぜか? 数式を使えば短い単語数で説明できるから。

ここで素人でもわかるように難しい単語を使わない方がいいという意見は
数学者同士の会話で、素人でもわかりやすく話せといってるようなもん。
素人のために生産性を大きく落とすだけ

472 :デフォルトの名無しさん:2017/07/02(日) 00:57:54.25 ID:NbWg8gon.net
>>471
その冗長なレスをまず自覚しろ

473 :デフォルトの名無しさん:2017/07/02(日) 01:08:47.26 ID:yqVk05l0.net
プログラムを書くのであれば誰しも可読性が良いプログラムを書きたいと考える
部分があるかもしれないが、そんなとき、単語数などというものの脳内に
占めるウエイトは、ほぼ無い

「あのプログラムのソースコードは単語数が少ないから非常に読みやすかったよ〜」
なんて会話は、無い

というと、じゃあ単語数が多いほうが良いのか?と言い出すかもしれないが
そもそも単語数など論点にするのがピンボケ

労力の方向がおかしいし、論点がおかしい

474 :デフォルトの名無しさん:2017/07/02(日) 01:14:15.76 ID:0SO6fajC.net
>>472
お前が短く書き直せば?w

475 :デフォルトの名無しさん:2017/07/02(日) 01:15:48.32 ID:0SO6fajC.net
>>473

> 「あのプログラムのソースコードは単語数が少ないから非常に読みやすかったよ〜」
> なんて会話は、無い

無駄がないとかシンプルっていう言い方をしてるはずだよ。
無駄がないとかシンプルとはどういうことか?というと
それは殆どの場合単語数が少ないことを意味してる
単に言い方の違いだねw

476 :デフォルトの名無しさん:2017/07/02(日) 01:23:00.07 ID:yqVk05l0.net
ついでに言っておくと、俺は別に冗長に書けばわかりやすくなるとも思ってない
元の人がそのようなことを言っていたから、そういった風なことも書いたが
俺自身はそうとも思っていない
というか、そういったことは、割とどうでもよいというか
多少コードがシンプルになったぐらいで一喜一憂する気分ではない
そりゃ少しはうれしいが、それはまぁなんていうか、青信号だったラッキー、みたいな感覚
どちらかというと、1円見つけた!のほうが嬉しいかなー

477 :デフォルトの名無しさん:2017/07/02(日) 01:28:42.17 ID:0SO6fajC.net
> 多少コードがシンプルになったぐらいで一喜一憂する気分ではない

割合で考えようか?

4単語が3単語になったら、25%もシンプルになったとみなすことができる

478 :デフォルトの名無しさん:2017/07/02(日) 01:36:42.12 ID:yqVk05l0.net
ほらもう、プログラムの美的センスがまるでないでしょ

>無駄がないとかシンプルとはどういうことか?というと
>それは殆どの場合単語数が少ないことを意味してる

大体において、ソフトウェアの可読性について考えたとき
そのほとんどは設計に依存していると考える人は多いっつーか
まぁ普通の感覚であるところだけど
じゃあなるべく素晴らしい設計をしようって意気込んだ時
「できるだけ単語数を減らせるような設計にしよう」
なんてこと考える奴居るのかね
そんなことがシンプルさの基準になるんかね
これはコードレベルでも同じことだろう
と、俺は思っているわけ

479 :デフォルトの名無しさん:2017/07/02(日) 01:39:30.83 ID:yqVk05l0.net
>4単語が3単語になったら、25%もシンプルになったとみなすことができる

なんでシンプルさの基準が単語数なのか本当に不思議な奴だ
プログラム書いたことないんじゃね?説

480 :デフォルトの名無しさん:2017/07/02(日) 03:26:13.52 ID:0SO6fajC.net
>>478
> 「できるだけ単語数を減らせるような設計にしよう」
> なんてこと考える奴居るのかね

いるだろうな

言語とかライブラリの比較みてみ?

あの言語・ライブラリではこんなに面倒なコードが
たったこれだけのコード(単語数)で書けるって
話になってるから。

481 :デフォルトの名無しさん:2017/07/02(日) 03:29:27.16 ID:0SO6fajC.net
>>479
> なんでシンプルさの基準が単語数なのか本当に不思議な奴だ

単語数だけじゃないけど?

それ以外の条件が同じ時。
単語数が少ないほうがシンプルなコード


それ以外の条件っていうのは、単語の長さはどちらも同程度であること
一行の文字数はどちらも同程度であること
関数の行数はどちらも同程度であること
ファイル数やクラス数や関数数はどちらも同程度であること

それ以外の条件を同じか、同程度にした時
単語数が少ないほうがシンプルなコードになる。

482 :デフォルトの名無しさん:2017/07/02(日) 05:05:29.89 ID:mUyXxhhW.net
各「.」で何の型が返ってきているのか、実装を見ずとも自明になっている。

最悪でも、マウス当てただけで自明になる書き方。

これを守ってるほうが遥かに重要だわ。

483 :デフォルトの名無しさん:2017/07/02(日) 05:55:04.26 ID:X/s5VUlf.net
ああもうあなたが初心者であることはよくわかったので他のスレでやってくれ
https://mevius.2ch.net/test/read.cgi/tech/1475332848/

484 :デフォルトの名無しさん:2017/07/02(日) 06:33:34.29 ID:tl1wWlTJ.net
うますぎるプログラムはいけない

485 :デフォルトの名無しさん:2017/07/02(日) 12:23:01.69 ID:Ey9UZy2f.net
>>462
確かにその文法欲しいな。

486 :デフォルトの名無しさん:2017/07/02(日) 13:05:35.53 ID:NbWg8gon.net
>>478
同意
プログラミングの難しさは設計の難しさ
コードの美しさは設計の美しさ

それが分かっている奴は
初心者が騒ぐ観点で騒がない
真顔で黙ってる

タイプ数が少ない?よかったね
単語数が少ない?よかったねえ

487 :デフォルトの名無しさん:2017/07/02(日) 13:08:21.66 ID:0SO6fajC.net
コードが美しい?よかったねえ

488 :デフォルトの名無しさん:2017/07/02(日) 13:49:07.69 ID:27xX9ykc.net
>>423
改善してほしいところさ。
Ruby を使いたいのに全然使いこなせる気がしない部分をなんとかしてほしいっていう要望は悪口なのか?
いや、ユーザーたちは本当にクソだと思わずに使ってんの?

489 :デフォルトの名無しさん:2017/07/02(日) 17:59:14.19 ID:NbWg8gon.net
既存の言語が気に入らないんなら
自分で作ってみればいいんじゃね?
クソじゃない言語とやらを

490 :デフォルトの名無しさん:2017/07/02(日) 18:07:42.30 ID:IGa4njyh.net
>>488
使ってて言うのならまだしも、10年使ってない人間が言ってもそりゃ悪口にしか聞こえないだろうよ
しかも10年使ってないのにRubyスレを覗いてるという粘着性の高さ

491 :デフォルトの名無しさん:2017/07/02(日) 21:49:13.80 ID:19kDKEGS.net
>>488
Haskell良いぞぉ〜。

492 :デフォルトの名無しさん:2017/07/02(日) 22:48:36.18 ID:ynDhLM7Z.net
Java + Groovy = Kotlin

Groovy == Ruby

つまり、Kotlin は、Ruby, Groovy に静的型チェックを付けたもの。
型チェックがあるから面倒くさいが、型推論もある

または、Java に関数型を付けたものとも言える

493 :デフォルトの名無しさん:2017/07/02(日) 22:51:40.39 ID:WUsDB0eH.net
>>492
使ったことないでしょ君

494 :デフォルトの名無しさん:2017/07/03(月) 00:51:18.19 ID:6nx2OSAK.net
>>462
>デフォルトでindexを持って
それは思う

「with_index」って冗長だし
eachでもデフォで持ってて欲しい

495 :デフォルトの名無しさん:2017/07/03(月) 01:32:13.92 ID:95u0vCaW.net
デフォでindex持ってたらそれこそ冗長じゃないの

496 :デフォルトの名無しさん:2017/07/03(月) 01:33:52.97 ID:NVKo/d7Z.net
>>495
冗長であるとはどういうこと?

497 :デフォルトの名無しさん:2017/07/03(月) 03:30:38.10 ID:6nx2OSAK.net
>>495
たしかに記述が冗長か構成が冗長かだけど別に良くね
イテレータがインデックス持っててもおかしくない

配列はデフォで配列の長さ分かるじゃん
そんなようなもん

498 :デフォルトの名無しさん:2017/07/03(月) 03:42:56.46 ID:2SpTAV0H.net
構成が冗長ってどういうことだろう?
普通、冗長ってそういう意味に使わないよね?

499 :デフォルトの名無しさん:2017/07/03(月) 10:06:01.55 ID:looyCaxt.net
>>494
each_with_index は素の each に比べて 3~4 割遅い。
each のデフォルトで index を持つよりは、遅くても index が使いたいときに明示するという使い方の方がリーズナブルだと思うけど。

500 :デフォルトの名無しさん:2017/07/03(月) 10:29:47.39 ID:edaN+zHQ.net
でもそういう使い分けこそ、まつもとさんに言わせればムダなわけだし
あのひとは機械にできることはすべて機械にやらせるべし、って言ってるからね
コンパイラはインデックスを必要としているかどうか、判断できるわけだから
勝手に使い分けてくれればよいんじゃね?
てことでRubyを静的型にしてオーバーロードで解決すればよいだろう
静的型にするとコンパイル時に型チェックをさせることができるし
最適化もかけやすくなるし、入力補完との相性もよい
機械で出来ることがどんどん増えるから
まつもとさんの機械にできることは〜の考えによく合ってるね

501 :デフォルトの名無しさん:2017/07/03(月) 11:00:51.38 ID:looyCaxt.net
>>500

> あのひとは機械にできることはすべて機械にやらせるべし、って言ってるからね
発言を自分に都合よく拡大解釈してない?

> コンパイラはインデックスを必要としているかどうか、判断できるわけだから
あなたの脳内のコンパイラはそれができるみたいだけど、
現状のMRIにその機能は無いよ。

> てことでRubyを静的型にしてオーバーロードで解決すればよいだろう
> 静的型にするとコンパイル時に型チェックをさせることができるし
> 最適化もかけやすくなるし、入力補完との相性もよい
機械で出来ることがどんどん増えるから

現時点で解決したいならCrystal使ったほうがいいよ。
変数の型を変えると言う言語の根幹に影響する変更が受け入れられるとは思わないけど、あなたがそんなに強く望むのならコミュニティに参加して意見が通るほどの功績を積むのが最短の道。

502 :デフォルトの名無しさん:2017/07/03(月) 20:57:22.46 ID:91Pqu4Id.net
>>501
久々に普通な常識を元にしたレスを見た

503 :デフォルトの名無しさん:2017/07/03(月) 23:47:51.07 ID:7Hia1uWl.net
まあ別にeachにインデックスを渡してても良かったと思うけどね
(3..9).each_with_index {|e| p e }

504 :デフォルトの名無しさん:2017/07/04(火) 04:47:02.02 ID:nYPV9UDZ.net
つーかeach_with_indexが長いから
each_iとかで良かったんじゃね?
極端な省略だけどto_iとかもあるから

505 :デフォルトの名無しさん:2017/07/04(火) 10:42:41.42 ID:olJiM2Cb.net
オブジェクト指向なんだからオブジェクトによって振る舞いが変わればよくね?
なんでこっちで使い分けなきゃならんの?

506 :デフォルトの名無しさん:2017/07/04(火) 11:11:52.06 ID:XKRg/8mz.net
最初に each_with_index つくったのがいまとなっては浅はか
もしかしたら当時 Enumerator がなかったんかもしれんけど

507 :デフォルトの名無しさん:2017/07/04(火) 12:27:20.90 ID:FYa81knm.net
それとは別でeach.with_indexもあるって言うね。。。

508 :デフォルトの名無しさん:2017/07/04(火) 12:29:22.36 ID:jC9x4mB4.net
JavaScriptみたいにcallback関数(ブロック)の引数の数で
挙動を変えられるようにできたら良いんじゃね?

つまり

[1,2,3].map(v => v) だったらインデックスなしのコードが実行されて
[1,2,3].map((v,i) => i + ':' + v) だったらwith_index相当

509 :デフォルトの名無しさん:2017/07/04(火) 12:36:39.44 ID:Qa2xT13J.net
話をぶった切るけど

Rubyで人工知能、それもワトソンのクローンを作りたいんだけど
Ruby界隈ではどうやって人を集めたら良い?
成果としてRubyの人工研究関連の書籍がだせるし、出来上がったソフトかそのサポートでビジネス出来る可能性あるし、何かの縁で研究関連の所と一緒に仕事できるかもしれないし、政経的な所に話を持っていける実績つくしで、
良いことばかりだからやってみたいんだけど

基本、金は出したくないけど、Rubyで大きな事がやりたい

510 :デフォルトの名無しさん:2017/07/04(火) 12:37:00.52 ID:XKRg/8mz.net
>>507
流れに逆らうけど勝手にindex乗るのはきもい
Enumerator#with_index
のみならよかったとおもってる

511 :507:2017/07/04(火) 12:40:29.48 ID:jC9x4mB4.net
補足しておくとJavaScriptは

function foo() {}
function bar(i) {}
function baz(i,j) {}

foo.length => 0
bar.length => 1
baz.length => 2
のように関数定義の引数の数が取得できる

const hoge = (i) => i+1
hoge.length => 1
アロー関数でも使える

function map(callback) { console.log(callback.length + ' arguments') } みたいにしておくと

map(i => i+1) => 1 arguments
map((i, j) => i+1) => 2 arguments
map((i, j, k) => i+1) => 3 arguments
みたいに関数の中で、コールバック関数の引数の数で処理を変更することができる

512 :デフォルトの名無しさん:2017/07/04(火) 12:40:38.40 ID:Fv1Dj8Gj.net
>>509
人は金に群がるから、その性質を利用して人を集めるが良し。

ただし、若い人は、やり甲斐とか求める人も居るから、うまく説得
するのも良し。

513 :デフォルトの名無しさん:2017/07/04(火) 12:42:55.91 ID:Qa2xT13J.net
ワトソンの解説みたいなのをRubyでコード実装して試す本、
ってのなら割と興味もたれて売れると思うんだよ
どうかな?

514 :デフォルトの名無しさん:2017/07/04(火) 12:43:23.19 ID:Fv1Dj8Gj.net
>>509
ワトソンは厳密にはAIでは無い。
人口無能ってやつだ。基本、失敗した技術。
マーケティング的に成功している。
クイズの回答をさせるのとか、いかにも考えて居る風に装って、
実は探索を行うのだ。

515 :デフォルトの名無しさん:2017/07/04(火) 12:44:13.45 ID:Fv1Dj8Gj.net
>>513
Rubyで作る人工無脳、って本があったはず。

516 :デフォルトの名無しさん:2017/07/04(火) 12:45:12.42 ID:Fv1Dj8Gj.net
>>515
>Rubyで作る人工無脳
はじめてのAIプログラミング―C言語で作る人工知能と人工無能

こんなのもある。

517 :デフォルトの名無しさん:2017/07/04(火) 12:47:14.56 ID:Qa2xT13J.net
しってるしってる
だからワトソンのクローンをRubyでつくるんだよ

で、あの人工無能のどこに深層学習やら何やらの技術が使われてるかRuby使って解説する本を出すんだよ

518 :デフォルトの名無しさん:2017/07/04(火) 12:47:34.81 ID:jC9x4mB4.net
>>509
ワトソンよく知らないけど、これが本当なら泥臭いソフトだと思うわ
https://wirelesswire.jp/2016/11/57683/

> しかし、それは失望と呼ぶしかないものでした。
>  WatsonのAPIとして提供されているものは、「自然言語分類」
> 「検索およびランク付け」「文書変換」「会話」「音声認識」
> 「音声合成」といったもので、これは基本的にはディープラーニングとは
> 無関係な、既存技術の寄せ集めに過ぎません。もっというと、
> Watsonを有名にしたはずの、クイズに正解する機能すらありません。
> 少なくとも汎用的は皆無です。

人工無能でも膨大なデータを投入して、ちゃんとした
検索エンジンを使えば、それなりに使えるものができる。
みたいな認識。

519 :デフォルトの名無しさん:2017/07/04(火) 12:47:46.71 ID:Fv1Dj8Gj.net
>>513
ontrogy、オントロジーってのを学ぶのがよろしい。
AI冬の時代ってのがあって、ontrogyを追求した結果、だめだぁー、となって冬の時代に突入した。

520 :デフォルトの名無しさん:2017/07/04(火) 12:51:53.36 ID:jC9x4mB4.net
ワトソンは人工知能ではない
だが商業的には成功している
人工知能ではないが使える技術はある
使える技術=検索エンジン

↓ってことでこれなw

本当に必要ものは人工知能ではなくて検索エンジン [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1498937148/

検索エンジンを求めている客に
人工知能ですよという言葉で近づいて
検索エンジンを売る商売w

521 :デフォルトの名無しさん:2017/07/04(火) 12:54:36.48 ID:2/r2iAfu.net
>>511
引数の数は取得できるし、この話はそういうことじゃなくて、引数の渡し方の問題

522 :デフォルトの名無しさん:2017/07/04(火) 12:55:29.02 ID:Qa2xT13J.net
先ずはワトソンを、組織的かつ学術的に解析するために、
資料集めたり研究者に聞きにいったりする必要があるんだけど、
一人でやるのとは違うから会社みたいに事務というか書類や議事といった形式をまとめないといけない

で、Rubyでやるわけだから誰かruby界隈での人の集め方知っているかな?って思いでレスしたんだ
出版社さんあたりが絡んでくれると、バックボーンができるから(確実に出版にまで漕ぎ着けられるから)うれしいんだけど

523 :デフォルトの名無しさん:2017/07/04(火) 12:57:14.60 ID:Fv1Dj8Gj.net
人工知能とは、Neural Net、しかも学習済みのNeural Net(スペル自信なし)なのだ。

NNの構造に、自己学習、つまり入力から入力を出力するNNを取り入れて居るところに、昨今のNNのbreak throughがある。

この認識でOK?エロい人?

524 :デフォルトの名無しさん:2017/07/04(火) 12:59:01.56 ID:Fv1Dj8Gj.net
>>522
大学の図書室へ行ってまずは、文献調査するのが良いでしょう。
会社も交通費出してくれるでしょう。

少なくとも、二百人位の俺の会社は、文献調査に金出してくれるよ。

525 :デフォルトの名無しさん:2017/07/04(火) 13:01:25.57 ID:jC9x4mB4.net
>>521
mapはデフォルトでインデックスあり(with_index相当)であればいいのにって話じゃないの?

そしたらwith_indexは遅いって話が出たから、
ブロックの引数を見て、indexを参照しているときだけ
with_index相当にすれば、速度は遅くならないって話をしてるんだけど

526 :デフォルトの名無しさん:2017/07/04(火) 13:02:50.26 ID:Fv1Dj8Gj.net
>>522
あんたが、どういう組織に属し、これまでどの様な実績を積んできたか、知らんが、出版社に飛び込みで、話しをしに行ってみれば!

多分、鼻で笑われる。けど、それも良い経験だよ。

527 :デフォルトの名無しさん:2017/07/04(火) 13:03:01.58 ID:Qa2xT13J.net
そもそも人工知能研究ってその当代の計算機性能で出来る、自動で組み合わせて問題を解く研究なんだよ
でも計算機性能で無限じゃないからできることには制限がある
だから人の手等をつかって計算量を減らしたり人手で統計を用意したりして、計算機性能の低さをカバーしてきた
それが計算機性能があがっていきできる事が増えてきた、というのが現在
ワトソンでクイズに答えられるようにまなった

人工知能研究の成果で出来た物は本来はもう人工知能とは呼ばないんだけど、
マーケティング用語というか通りが良いから人工知能ってつけてるわけなんだ

528 :デフォルトの名無しさん:2017/07/04(火) 13:13:51.50 ID:1Tk0DRaF.net
ID変えてネガキャンする流れからは変えられたみたいだけど今度は人工知能に噛み付きだしたか
そんなに噛み付いて荒らすだけならrubyスレにくるな
rubyの興隆が気にくわないとか知ったことではない

529 :デフォルトの名無しさん:2017/07/04(火) 13:26:47.51 ID:2/r2iAfu.net
>>525
rubyでeachの速度なんて気にする人はwhile使うからそんなこと考えなくていいいよ

530 :デフォルトの名無しさん:2017/07/04(火) 13:29:09.59 ID:Qa2xT13J.net
Rubyで人工知能って書籍はすでにいくつかあるけど、
Rubyでワトソンを解説するってのは凄く面白いと思う
いままでワトソンの資料を個人的に集めて見てきたけど、
ワトソンをRubyで誰でも作れるようになれば、これってrailsの次のRubyブームにならない?

531 :デフォルトの名無しさん:2017/07/04(火) 13:39:30.76 ID:jC9x4mB4.net
>>529
俺もwith_indexなんかやめてJavaScriptみたいに
map(やそれに類するもの)は全てインデックスがあればいいと思ってるよ。
速度よりもシンプルさ、可読性のほうが重要

532 :デフォルトの名無しさん:2017/07/04(火) 13:40:58.31 ID:Qa2xT13J.net
深層学習はPythonが有名だけど、
みんながみんな深層学習じゃなくてワトソンのような、技術そのものじゃなくて実用できるものを作りたいんだと思う
だったらRubyで大元の部分をつくっちゃえば良くない?って考えなんだけど

533 :デフォルトの名無しさん:2017/07/04(火) 13:54:58.37 ID:Fv1Dj8Gj.net
昨日と同じく、眠くなってきた。
カフェインを摂取した。

534 :デフォルトの名無しさん:2017/07/04(火) 14:07:04.87 ID:jC9x4mB4.net
>>532
そうするとRubyで?ことになるんだけどな。

なんでかっていうと、ワトソンみたい物を作る時、
「自然言語分類」にはどのライブラリを使うか?
「検索及びランク付け」にはどのライブラリを使うか?
「文書検索」には略
「会話」には略
「音声認識」には略
「音声合成」には略

これらのライブラリをRubyで再実装するわけじゃあるまい?
再実装するならRubyで作るって話でいいけど
そうでないなら何を組み合わせるか?って話で
検索エンジンであればSolrやElasticsearchを使いましょう。
とかになるだろうし、

Rubyで作るというよりか、既存のオープンソースの何かを使って
システムを構成しましょうって話になると思うよ。

Rubyで大本の部分を作るんじゃなくて、大本の部分はあるから
Rubyでそれらをつなぎましょう程度じゃね?

535 :デフォルトの名無しさん:2017/07/04(火) 15:09:51.34 ID:Qa2xT13J.net
深層学習という技術そのものにおいて相も変わらずPythonは有力な一つの候補だし、ネイティブな所は相も変わらずC/C++で書かれたライブラリがあるわけだけど、
(大勢の人がワトソンクローンを理解、組めるように)Rubyなら(コードを)書きやすい、書き換えやすい、(個人的に)図示しやすい
だからRubyで
という話なんだ

ライブラリの選択どうするの?本の構成どうするの?細部をどうするの?ってのは紙面に依るとしか言えない
ページをだいたいこのぐらい見積もるから、こういう構成で行きましょう、ここはこういう形で行きましょう、というのが一般的な普通の流れ
ページが無限ならそれこそRubyの内部の仕組みから全て書けるわけだけど、残念ながらページは有限、でもって何ページになるのかも未定の状態
要はページ数によって内容がダイナミックに変わってしまうという事
それに対して、ページ数やら構成を考えるのに、判断の元となるものが必要となる
個人で書ける本ならその人の持ってるあんちょこでも別段かまわないんだけど、じゃあ複数人でっとなった場合はその個人一人のあんちょこじゃ問題がある(「それって結局、君の場合でしょ?」で終わってしまう)
だからこそ決め打ちでは語れないし、判断の元になるものを"公"に"形式"をとって、(誌面に載るかどうかはおいて置いて)網羅的に準備しなければならないわけなんだ
決め打ちしてそれに基づいて必要とする資料だけを集めて済むなら万々歳なんだけど、そうはいかないんだ

で、Rubyを基本とするからRubyできてもらわなければ困る
だからRuby界隈での実動者が私を含めて必要になるわけなんだよ

自前で用意するものが出てくるかもしれないという話は、当然だけど結局は誌面やら規模やらで判断される

536 :デフォルトの名無しさん:2017/07/04(火) 15:10:33.91 ID:A9sYzzwp.net
NIH症候群にかかるのは企業の要職ばかりではない
フルスクラッチネイティブではない外部ライブラリ拡張ライブラリを「正しくない」と考えてしまうことは…どうしてもある
優れた使い心地のラッパーを作るということは元APIと主言語とUIのすべての理解と研究が必要なのだからもっともっと技術的に誇っていいのだけどもね

537 :デフォルトの名無しさん:2017/07/04(火) 15:13:59.53 ID:Qa2xT13J.net
やっぱりいつの時代も本を書く上ではページ数が全てだよ

538 :デフォルトの名無しさん:2017/07/04(火) 15:18:01.70 ID:JdC3mg/z.net
イテレータの美点は
今までつきまとってきた添え字文化を切り離したとこにあるんだよ
最大サイズ、インデックスの準備、インデックス操作、このへんは本質的じゃないよね
我々がしたいのはホントは、集まってるオブジェクト一個一個を触りたいだけだよねっていう

そのへんわきまえてるのがrubyだと思う
インデックスがデフォで付いてたりするのは原始人じみてる

539 :デフォルトの名無しさん:2017/07/04(火) 15:32:22.71 ID:Fv1Dj8Gj.net
>>538
なるほど!
初めてeachを見た時、面食らったのを思い出した。

540 :デフォルトの名無しさん:2017/07/04(火) 17:46:25.87 ID:nYPV9UDZ.net
>>509
IBMがワトソンにどれだけ投資したかという話
タダで同じものを作るとは虫が良すぎる

541 :デフォルトの名無しさん:2017/07/04(火) 17:48:12.89 ID:nYPV9UDZ.net
>>514
ワトソンは人工知能でしょ

そこらへんのボットは人工無能だけど
ワトソンはクイズに答えたり
病気の治療見つけたりして有能だから
「無能」じゃないでしょ?

542 :デフォルトの名無しさん:2017/07/04(火) 17:50:26.31 ID:nYPV9UDZ.net
>>523
ニューラルネットだけが人工知能じゃないよ
NN系のディープラーニングの
取り上げられ方が目立つってだけで
定義にしちゃうのはただのミーハー

543 :デフォルトの名無しさん:2017/07/04(火) 17:52:57.98 ID:nYPV9UDZ.net
>>522
人を集める、特に企業と絡むっていうのは
先に一部でも成果を公開しないと難しい
向こう側にメリットがないでしょ?

544 :デフォルトの名無しさん:2017/07/04(火) 17:57:26.81 ID:nYPV9UDZ.net
>>530
>ワトソンをRubyで誰でも作れるようになれば
無理無理

誰でもワトソンは無理
誰でもボットなら可能

Rails本体を誰でも作るのは無理だろ
Railsを利用してブログを作るとかなら可能

だからAPIを使ってボットを作るみたいのなら可能

545 :デフォルトの名無しさん:2017/07/04(火) 17:58:01.46 ID:8gzuv+lo.net
「俺がRubyを使いたいから」で金が集まると本気で思ってるのかな
まあ国内技術を使うことが重要であるとか言ってうまく騙せば公的機関から引き出せるかもしれないけど
君のやろうとしていることは本質的には不必要なガラパゴス化を招き日本の衰退を加速させるだけの国賊行為であることを忘れないように

546 :デフォルトの名無しさん:2017/07/04(火) 18:10:32.16 ID:jC9x4mB4.net
>>538
インデックスそのものと、インデックスを使ったループは別だと思うよ。

ハッシュのmapでキーが取れるように、
配列の場合はキーの代わりにインデックスってだけだと思う。

キーとインデックスって本質的には違いはないでしょ?

547 :デフォルトの名無しさん:2017/07/04(火) 18:13:20.70 ID:jC9x4mB4.net
>>544
誰でもワトソンを作るは無理でも、
誰でも既存のオープンソースを繰り合わせて
ワトソン相当を作ることは可能だよ。

ただクイズ番組とかワトソンの成果っていうのは
ワトソンというソフトよりも、大量のデータを投入させた所にあるので、
仮にワトソンそのものを入手したとしても、クイズ番組優勝とかは無理だよ
膨大なデータをひたすら入力する地道な作業が必要

548 :デフォルトの名無しさん:2017/07/04(火) 18:22:23.28 ID:nYPV9UDZ.net
>>547
>ワトソン相当を作ることは可能だよ
甘く見過ぎ
そんな簡単ならIBMより先にもっとできてた

>膨大なデータをひたすら入力する地道な作業が必要
それもワトソンのうちなんじゃないの?

ゲームからデータ抜いたらゲームじゃない
知能から知識抜いたら知能じゃない

549 :デフォルトの名無しさん:2017/07/04(火) 18:24:30.73 ID:8gzuv+lo.net
>>548
ワトソンは知識はユーザーが与えるんだよ
単なる検索エンジンと思えばいい

550 :デフォルトの名無しさん:2017/07/04(火) 18:25:37.93 ID:Qa2xT13J.net
>>544
Rubyでワトソンを解説ってのがスッポ抜けてるけど大事なところだよ

551 :デフォルトの名無しさん:2017/07/04(火) 18:26:26.94 ID:nYPV9UDZ.net
>>549
ワトソンはたんなる検索エンジンじゃない
仕組みが似てる部分はあるけど
たんなる検索エンジンはクイズに答えられない

知識の与え方と引き出し方も
エキスパートシステムのうち
そこをすごく甘く見てる

552 :デフォルトの名無しさん:2017/07/04(火) 18:27:32.37 ID:1Tk0DRaF.net
ネガキャンが人工知能に噛み付いてくたおかげでスレがいくらか平和になったな
相変わらずうざいけど

553 :デフォルトの名無しさん:2017/07/04(火) 18:32:42.18 ID:nYPV9UDZ.net
>>550
ワトソンは無理だから絵に描いた餅だよ

Rubyで人工無能みたいな本はあるし
その辺のラインが現実的だと思う

554 :デフォルトの名無しさん:2017/07/04(火) 18:38:48.19 ID:Qa2xT13J.net
ワトソンの解説をRubyのコードをつかって行うって事が重要なのに
ってなんか話が噛み合わないなと思ったら単にレスを適当にしか読んでなかったのか

納得

555 :デフォルトの名無しさん:2017/07/04(火) 18:41:41.93 ID:jC9x4mB4.net
>>548
> >膨大なデータをひたすら入力する地道な作業が必要
> それもワトソンのうちなんじゃないの?

そこに一般の人が考える人工知能の違いがあるんだよな。
大変な仕事をコンピュータが自動でやってくれるのと同じように考えてしまう。

人工知能は自動で知識をあつめてくれるわけじゃない。

コンピュータが利用できる形にデータ化されているものであれば
それを解析するのは得意だけど、そうなってないものを
データ化する作業っていうのは人間がやるしか無い。

556 :デフォルトの名無しさん:2017/07/04(火) 18:45:16.48 ID:nYPV9UDZ.net
>>554
あのね

WindowsみたいなOS、Googleみたいな検索エンジン、
作ったら大もうけできるのに何で寡占されてると思う?

そこまで行かなくてもRubyみたいな言語作ったら
解説本くらいは書けるだろうけど
Rubyと同じくらい普及してる日本発の言語はないよね?

なんでワトソンなら自分にもできると思っちゃうの?

557 :デフォルトの名無しさん:2017/07/04(火) 18:47:18.87 ID:nYPV9UDZ.net
>>555
違う違う

データを全自動で集めると思ってるわけじゃない
その「データ化する作業」も含めてワトソンでしょって言ってるの

558 :デフォルトの名無しさん:2017/07/04(火) 18:48:27.80 ID:jC9x4mB4.net
>>551
> たんなる検索エンジンはクイズに答えられない

だからクイズに答えれるように人間がデータを入れるんだよ。

クイズの多くは知識問題。
例えば総理大臣の名前とか。

ありとあらゆるクイズの問題と答のペアを登録していくことで
クイズ専用のデータベースを作る。

ウェブサイトの検索エンジンがクイズに答えられないので
データベースががウェブサイトだから。
ウェブサイトは人間用の文章がほとんどなのでクイズのデータとしては適切じゃない

だからクイズに適したデータベースを作り上げる。
そういう作業を人間が行うんだよ。

それを行える人間は知能があるということになるし、
人間の知能を使ってデータベース化すれば
人工知能とやらはデータベースを検索するだけでいい。

559 :デフォルトの名無しさん:2017/07/04(火) 18:50:11.16 ID:jC9x4mB4.net
>>566
> その「データ化する作業」も含めてワトソンでしょって言ってるの

人間が行う作業も含めて、ワトソンっていってる?
例えば自動車を運転する人間は、自動車の一部。みたいな

560 :デフォルトの名無しさん:2017/07/04(火) 18:51:28.49 ID:nYPV9UDZ.net
>>558
それは対話UIの部分を軽視してる

たしかにエキスパートシステムも
DBの問い合わせは行うが
たんなる検索エンジンとの違いは
対話システムを備えているところで
そこが思っているほどかんたんじゃないんだな

561 :デフォルトの名無しさん:2017/07/04(火) 18:55:30.46 ID:8gzuv+lo.net
IBMのビジネスモデルは基本的にパッケージ販売とSIなので、
学習済みのワトソンのAPIを提供して終わり、だとあまり意味がないわけ
IBMとしては、クソ高いパッケージとして買わせてサポートもがっつり付けてもらって、その上あわよくば下請人員まで投入して大規模案件を作りたい
だからワトソンはセルフサービスでなきゃいけないんだよ
応用として医療分野を執拗に推してるのも、医療分野はプライバシーの問題があるのでSaaSに食われにくいという面があるの

562 :デフォルトの名無しさん:2017/07/04(火) 18:57:49.38 ID:nYPV9UDZ.net
>>559
たとえばRubyは標準ライブラリまで含めて
みんなRubyとして使ってるでしょ?

Rubyのコアな言語の文法だけを模倣するなら
誰でもできるかもしれないが実用に耐えない

同じようワトソンのコアな検索部分だけなら
模倣できるだろうけど実用に耐えない

ワトソンなんて検索エンジンだから簡単だよって言うのは
Rubyなんてインタプリタだから簡単だよって言ってるのと同じ

563 :デフォルトの名無しさん:2017/07/04(火) 19:03:28.55 ID:jC9x4mB4.net
>>560
対話システムは難しいが、その反面間違っても
許されるシステムだから、ある意味簡単とも言える。

そもそも人間同士であっても、相手の言ってることが100%
通じるわけじゃない。言う側に問題がある場合だってあるしね

ある程度正しければ許されるシステムだから裏技が使える。
それは意味を理解しなくても、単語の重要度さえ判断できればいいんじゃないか?
ということ。人間とは違ったアプローチで実装できる。

対話システムというよりも、重要度判断システム
それでもいいんだよ。ある程度の正しさがあれば許されるからね。

564 :デフォルトの名無しさん:2017/07/04(火) 19:08:32.62 ID:jC9x4mB4.net
>>561
> 学習済みのワトソンのAPIを提供して終わり、だとあまり意味がないわけ

面白い(当たり前?)のは、分野ごとに学習済みデータが存在するということ

素人(?)考えで言えば、すべての分野を学習させたスーパーワトソンを
一つだけ提供すればいいと思うかもしれないが、そうはならない。

ようは学習というのはデータベースにすぎないので、
違う業界のデータベースを混ぜて使うと、関係ないデータが
検索で引っかかるようになる、つまりノイズが多い。

そういうところを柔軟に判断してはくれないんだよね。
知能があるわけじゃなくて、単なる検索エンジンだから。

565 :デフォルトの名無しさん:2017/07/04(火) 19:11:35.56 ID:jC9x4mB4.net
結局重要なのはデータベース(学習データ)であるし、
そのデータベースを作るのは人間の地道な作業で、
ワトソンっていうのは最終的には学習データ販売ビジネスになります。

566 :デフォルトの名無しさん:2017/07/04(火) 19:17:37.33 ID:1Tk0DRaF.net
ID:8gzuv+lo
ID:nYPV9UDZ
ID:jC9x4mB4
この三つのIDが延々ワトソンの謎を話し合っているけど、けっして誰もワトソンの構造について説明しようとしないよな

自演かこれ
誰か団子呼んでこいよ

567 :デフォルトの名無しさん:2017/07/04(火) 19:21:22.51 ID:jC9x4mB4.net
>>566
ワトソンの構造はこちら

https://wirelesswire.jp/2016/11/57683/

> サンプルのソースコードはGithubで公開されています。 
>
>  まずは、IBMが先端技術と考える、その素晴らしい
> "コグニティブコンピューティング"のソースコードを御覧ください。

データがないと何もできないってのがわかるだろう?

568 :デフォルトの名無しさん:2017/07/04(火) 19:24:15.28 ID:nYPV9UDZ.net
同じ話の繰り返しになるからそろそろ切り上げたいけど
Googleなんて検索エンジンだから簡単かっていえば困難でしょ?

データを含まないデータベースの問い合わせ部分だけならできても
ネット全体の規模で検索できるから普及したわけであって

それをなんでワトソンなら自分にもできると思っちゃうのか?
っていうのが言いたい

569 :デフォルトの名無しさん:2017/07/04(火) 19:34:05.92 ID:jC9x4mB4.net
まあワトソンと同等レベルのソフトウェアはできるだろう。
だけど、データベース作成の人力作業コストはどうにもならないってことだ。

データがオープンになればいいんだがねw

570 :デフォルトの名無しさん:2017/07/04(火) 19:41:51.75 ID:1Tk0DRaF.net
自演あきた?
ならば良し

571 :デフォルトの名無しさん:2017/07/04(火) 19:58:39.76 ID:olJiM2Cb.net
ワトソンのことはよく知らんが、>>567のリンク先のことが本当だったとしたら
あまり面白いものではないな

それはそうとして、別の観点からちょっと思うことがあって
2chで人を集めて研究して本を出版しようって発想がかなりアレなんだわな
2chで人を集めたってゲームですらまともに完成するほうが珍しいってのに
本を出版したりアプリ売って金儲けとかもうね

もし本当にそういうことがしたいんなら、本人だけで
ほぼ完成させて、デモも動いているんだけど、どうよこれ
ぐらいまでは最低でも持って行っておかないと誰も相手にしないっつーかありえないよ
そこまでやっても多分うまくいかないと思うけど

本来なら本人が優秀なら実社会で勝手に人が集まってきて勝手に輪ができて
それでどうこう、って話なんだよ
それを、なんで、2chで人集め?
って時点でもう
それもこんな人の減った末期の2chで

572 :デフォルトの名無しさん:2017/07/04(火) 20:06:46.34 ID:1Tk0DRaF.net
スレチ

うせろ

573 :デフォルトの名無しさん:2017/07/04(火) 20:27:17.39 ID:1Tk0DRaF.net
粘着野郎は食事か風呂のどっちかか
あいつ0時過ぎたらまたID変えてまくって何食わぬ顔で荒し行為繰り返しやがる
うぜー

574 :デフォルトの名無しさん:2017/07/04(火) 20:39:45.57 ID:/bsbbamh.net
>>571
技術は面白くないが役に立つ

575 :デフォルトの名無しさん:2017/07/04(火) 20:44:12.57 ID:KFTmH+Xw.net
>>509
多分Ruby使える人で人工知能に詳しい人を探すより、大学訪ねて人工知能に詳しい人にRuby教えた方が手っ取り早い。

576 :デフォルトの名無しさん:2017/07/04(火) 22:31:25.00 ID:C0QCHaIb.net
ちょっと前まで何十億掛けてAIに東大の入試問題解かせて合格させようってプロジェクトがあったけど
それ以上のプロジェクトを気軽に始めようとする人って素敵☆()

壮大な目的はあるけど人集めが初心者スレなのは笑う所かなw

577 :デフォルトの名無しさん:2017/07/04(火) 22:44:59.86 ID:KFTmH+Xw.net
案外そういう怖いもの知らずのが成功するから世の中分からんね。
パラボラアンテナもスパコンのけい

578 :デフォルトの名無しさん:2017/07/04(火) 22:46:30.79 ID:KFTmH+Xw.net
途中で送信。。。
スパコンの京も、海外より予算少ないのに海外より性能良かった。
パラボラアンテナなんか、それで世界に広がった。

579 :デフォルトの名無しさん:2017/07/04(火) 22:47:49.56 ID:KFTmH+Xw.net
フロッピーディスク、切り口で怪我をしない缶詰めetcetc...

580 :デフォルトの名無しさん:2017/07/04(火) 23:28:44.33 ID:olJiM2Cb.net
まずまともな人望があったらこんなところで人集めの質問しないだろってのがあってだね
逆に一人でもやり遂げてやるぜって訳でもなさそうだし
そーゆー部分を見て、判断しよるよ、大人は
内容とか以前に

581 :デフォルトの名無しさん:2017/07/05(水) 05:47:53.58 ID:WM8wHrYP.net
どうやって正答のための元となるデータを形成するか、どうやって問から正答を導く処理を行うか
この二つがワトソンにとって重要な部分なんだけど、文で色々書くよりRubyのコードで示した方がわかりやすいと思う
IDをかえて一人で書き込んでいる人のレスみてるとやっぱりそこを理解できていないみたい

582 :デフォルトの名無しさん:2017/07/05(水) 12:01:58.02 ID:Qpg00Afa.net
>>429
ハトむぎ茶だっけ

583 :デフォルトの名無しさん:2017/07/05(水) 13:25:37.62 ID:UBafGJG+.net
ヒヒヒヒヒ

584 :デフォルトの名無しさん:2017/07/05(水) 13:44:49.29 ID:Qpg00Afa.net
っつーかむぎ茶も出所しておまいらくらいの歳になってんだな
2chに住み着いてるかもな

585 :デフォルトの名無しさん:2017/07/05(水) 16:49:24.95 ID:ZXlk9SbS.net
スレの流れをぶった切って質問。
当方、数日前に
Rubyを2.1.5 -> 2.4.1へとアップグレードしたのだが、
なんかスクリプトの実行速度が3割から4割遅くなった。

実際のところ、以前の2.1.5はgcc5.3.0でソースからビルドしたブツで、
今回入れた2.4.1はgcc7.1.0(これもちょっと前に入れた)でビルドしている。

ちなみにうちの環境だとdtrace関係でminirubyが落ちるので、
configure --disable-dtraceが必要だった。(2.1.5は無い)

正直rubyが遅くなったのかgcc等他に問題があるかどうかも判らないんだが、
2.1以降の各バージョンでのベンチマークとか、
変更点で遅くなったとかの情報が集まっているサイト等、
知っていたら教えて欲しい。

ちなみにOSは32bit版FreeBSD 10.1系とかなりマイナーな環境。

586 :デフォルトの名無しさん:2017/07/05(水) 18:14:21.42 ID:WM8wHrYP.net
プロファイラで旧と新それぞれまわしてどこに時間がかかってるかみてみたら?
http://blog.livedoor.jp/sonots/archives/39380434.html

587 :デフォルトの名無しさん:2017/07/05(水) 18:40:35.78 ID:nlxiuXwv.net
>>585
ruby-2.4.1もgcc5でビルドして比較してみたらどう?
あるいはruby-2.1.5をgcc7で比較するとか
新しいものが常に最良とは限らないし

588 :デフォルトの名無しさん:2017/07/05(水) 18:54:07.87 ID:nlxiuXwv.net
>>587
自己補足

個人的で尖りまくったものを述べるよ
以前、とあるInteger関係のベンチマークを比較した事があったけど
(速い) ruby-2.4 > (ruby-2.3, ruby-2.2) > ruby-2.0 > ruby-2.1 (遅い)
という結果になった

ゴンパイラはgcc8-devel、FreeBSD-11-AMD64上で実行

589 :デフォルトの名無しさん:2017/07/05(水) 20:40:32.03 ID:IBgoqo2I.net
http://takenaka-akio.org/etc/benchmark/
どうも、40倍〜200倍ぐらいは遅くなることを覚悟しないとダメ見たよ
仮に100倍遅くなるとしたら、3GHzのCPUが「30MHz」相当になるってことだから
ちょっと無視できるようなものではないね
コードの書き方を工夫するなどしても、100倍の差はなかなか埋まるものではないよな
もともと1秒で済んでいたはずの処理に100秒もかかることになるし
ここまで遅いと、ちょっとしたことが命取りになってくる
最初見積もっていたより処理に二倍の時間がかかかるようになってしまった場合
1秒が2秒になるのは1秒増えるだけだから我慢できても
100秒が200秒になるのは、追加の+100秒もは我慢できないとおもうよ

590 :デフォルトの名無しさん:2017/07/05(水) 21:36:48.67 ID:LKhZWwoW.net
すまん
誰か>>589 の言っている事を翻訳してくれ

591 :デフォルトの名無しさん:2017/07/05(水) 21:42:41.90 ID:z3CI8qH6.net
処理の規模によってはアルゴリズム考えないとヤヴァイぞ☆
って言ってる。

592 :デフォルトの名無しさん:2017/07/05(水) 21:57:18.69 ID:i6JVabOm.net
アセンブラで書くのが絶対的正義ってことでしょ

593 :デフォルトの名無しさん:2017/07/05(水) 22:00:41.82 ID:IBgoqo2I.net
二つの意味が含まれているから確かにわかりにくな

まず一つ目は、既に100倍ぐらい遅いんだから
今更、3〜4割遅くなったぐらいで騒ぐほどのことじゃない
速度が欲しかったらほかの言語を使え

二つ目は、100倍も遅いということは、3.0GHzの最新CPUを使っていたとしても
実質30MHzのCPUを使っているようなものだから
ほんのちょっとしたことが命取りで、更なる3〜4割もの性能ダウンは到底無視できない
考えてもみれば、100MHzのCPUが主流だったころは、本当にシビアだったとおもう
最適化最適化で、1クロック縮めるのに命を懸けている人たちもいたね
今更そういった時代に逆戻りしてしまうのはなんだかなーと思うし
速度がほしかったらほかの言語を使え

何故か同じ結論にたどり着くわけだが、Rubyではよくあること

594 :デフォルトの名無しさん:2017/07/05(水) 22:03:48.33 ID:z3CI8qH6.net
昔はね。
C++でさえCからすれば遅い言われてた。
(これは理論上今でも、再利用性を得る代わりに遅くなる。C++はCの後継として、遅くなるのを最小限に抑える仕様。でも確実に遅い)
でも、CPUの進歩やコンパイラの進歩で人間が直接アセンブラ触るより速いと言われてる。

595 :デフォルトの名無しさん:2017/07/05(水) 22:09:10.95 ID:W7p06HKZ.net
Railsみたいに、I/O 処理があれば、C/C++でも遅くなるから、Rubyと大差ない

一方、数学・アルゴリズム系で、I/O 処理がなければ、C/C++が断然速い

596 :デフォルトの名無しさん:2017/07/05(水) 22:21:10.70 ID:LKhZWwoW.net
つまりちょっと前からいるIDを変えてトンチンカンな書き込みを続ける例の荒らしだな

失せろ、スレチだボケェ

597 :デフォルトの名無しさん:2017/07/05(水) 22:26:23.22 ID:IBgoqo2I.net
>でも、CPUの進歩やコンパイラの進歩で人間が直接アセンブラ触るより速いと言われてる。

まさにその通りだ
ここでもいくつかのことが言えて

一つ目は普通にC/C++使っとくのが現状最速だろうってことと

二つ目は当時はアセンブラと比べたらC/C++ですら遅いといわれていたが
別に100倍も遅かったわけではない、ということと

三つ目は、二つ目の続きなわけだけど
アセンブラと比べてC/C++が遅いといっても100倍も遅かったわけではないんだが
CPUがあまりに遅かったからちょっとのことで騒いでいた
Rubyは3.0GHzのCPUを使っていても実質的には30MHzのCPUでプログラムを動かしているようなものだから
まるで当時のような状況、ちょっとのことが命取りな状況、ということと

四つ目は、100MHzのCPUが主流だったころ、もし100倍の性能のCPUが発売されたら
みんなそっち使うよね、ってこと
できることが全然違う、速度的には新幹線と徒歩ぐらい違う
東京から大阪へ行くのに、新幹線なら、考えうる限りの寄り道しまくっても絶対徒歩より早く着く
と、言い切れるぐらいには速度差がある、ので、コーディングで手を抜けそうだね、ってことと

五つ目は、既にC/C++の最適化は鬼のような状況で、普通の人がアセンブラで書いても
到底太刀打ちできない(SEEは別)
C/C++はアセンブラより速くなったといえるだろうし、克服したといえるし、良い選択になっているが
一方で、今現在、RubyはC/C++よりも100倍遅いという現実がある

「でも、CPUの進歩やコンパイラの進歩で
 (Rubyを使ったほうが)人間が直接C/C++を触るより速いと言われてる。」

という風な文章は成り立たない

598 :デフォルトの名無しさん:2017/07/05(水) 22:35:31.37 ID:i6JVabOm.net
>>597
その代わり面倒なコードがてんこ盛りで生産性の落ち方が半端ない
そこまでの速度を要求されるコードなんてほとんどないんだから、生産性の方が重要だよね、
ってのが高級言語の考え方なんだから速度だけにフォーカスした考えは世の中の高級言語を
すべて否定するものだ

599 :デフォルトの名無しさん:2017/07/05(水) 22:59:13.93 ID:IBgoqo2I.net
>>598
またいくつか言えて

>その代わり面倒なコードがてんこ盛りで生産性の落ち方が半端ない

本当にそう言えるのかどうなのか
今現在の状況で、静的型言語に比べて動的型言語の生産性がはるかに高い
と言い切れる人はいったいどれだけいるんだろうか
むしろ動的型言語のほうが生産性がない、という風潮ではないだろうか
だってここ最近新しく出てきた言語は当たり前のように静的型だし
それを売りにしている

で、これもかなり譲って、生産性は同等ぐらい、と考えるのなら
「実行速度100倍差」が重くのしかかる
3.0GHzの最新CPUを使っても30MHzと同等
ここまで遅いと、別の方向で頭を使う

C/C++が新幹線の「のぞみ」だとしたら
JavaやC#は「ひかり」ぐらいの速度、あるいはそれ以上は普通に出る
これなら同じ土俵に立っているといえるし
そのうえで生産性などを考える、これはわかる
だから俺は別に生産性etcの高級言語の考え方を否定する立場はとってない

しかしRubyの速度は「徒歩」である
こうなればまた考え方が変わってくる

600 :デフォルトの名無しさん:2017/07/05(水) 23:10:18.58 ID:i6JVabOm.net
>>599
JavaだってC/C++に比べれば降級言語で速度も遅いが、普通に使われている
それはC/C++より生産性が(まだ)マシだからだ
これは静的型とか動的型とかは関係ない

つまり速度だけにフォーカスした比較は大きく間違ってるということだ

601 :デフォルトの名無しさん:2017/07/05(水) 23:19:57.66 ID:k8UT78WG.net
続きは「C/C++はRubyより100倍早いスレ part24」でやってくれ

602 :デフォルトの名無しさん:2017/07/05(水) 23:20:10.86 ID:WM8wHrYP.net
588ってどのレスへの返しなの?
遡って100レス程見たけどどこからも繋がっていないように見えるんだけど

こういうのはちょっと怖い

603 :デフォルトの名無しさん:2017/07/05(水) 23:22:21.12 ID:IBgoqo2I.net
>>600
C/C++が新幹線の「のぞみ」だとしたら
JavaやC#は「ひかり」ぐらいの速度、あるいはそれ以上は普通に出る
これなら同じ土俵に立っているといえるし
そのうえで生産性などを考える、これはわかる
だから俺は別に生産性etcの高級言語の考え方を否定する立場はとってない

しかしRubyの速度は「徒歩」である

そのうえ、生産性が高いかどうかすら分からないというのは
>>599に書いた通り

604 :デフォルトの名無しさん:2017/07/05(水) 23:26:32.17 ID:i6JVabOm.net
>>603
徒歩でも問題ない場面であれば気にしなくてもいい
そして世の中のほとんどは徒歩で問題ない

徒歩でも問題ないところに「いや新幹線が必要なんだ!」なんてのはもはや技術的な問題ではなく、
ただの思考停止

605 :デフォルトの名無しさん:2017/07/05(水) 23:37:18.10 ID:nlxiuXwv.net
>>603
zlibで圧縮処理する場合、Cとrubyでどんだけ差が出るかわかる?
rubyを徒歩に例えているけど、途中で新幹線を利用してるんだぞ

606 :デフォルトの名無しさん:2017/07/05(水) 23:38:31.89 ID:IBgoqo2I.net
それは「徒歩」とか「新幹線」という言葉にとらわれすぎである
これは単に、あまりにも速度差が有るということを表現するために
「徒歩」とか「新幹線」とか言っているわけで
利便性その他まで含めて比喩しているわけではないんだぞ

なおかつ、生産性が高いかどうかすら怪しいというのは>>599にも書いたし
実際世の中そういう空気になっているじゃろ

生産性が低くて速度が遅かったら後は何が残る?

もし生産性が同程度だったとしても、それならば速いほうが良いだろ
100倍も圧倒的な差があるんだから
多少非効率な書き方したっておつりがくるぞ

607 :デフォルトの名無しさん:2017/07/05(水) 23:40:47.70 ID:VZUi/cSm.net
>>599
> 今現在の状況で、静的型言語に比べて動的型言語の生産性がはるかに高い
> と言い切れる人はいったいどれだけいるんだろうか

どちらかがどちらかを上回るって話じゃないからなぁ。

動的言語だと書くのが楽。型を書かなくてもいい場面が多いから
短いコードで目的を達成できる。その点で生産性が高いと言えるが、
大規模アプリでは、型が書いてないためにコードの把握に時間がかかる。

静的型言語では要所要所に型が書いてあって、記述量は増えるが
その分コードを把握しやすく、コンパイラが見つける矛盾の量も増える。


だから開発するものがどれだけの規模のコード量かで生産性が高い方が決まる。
つまり静的型言語の方が高い場合と、動的型言語の方が生産性が高いかの境目があるということ

しかしその境目がまた問題で、技術力が高い人であれば短いコードでシンプルに書くことができる。
だから境目は技術力が高い人ほど動的型言語の方が生産性が高いことを示すことになる。

608 :デフォルトの名無しさん:2017/07/05(水) 23:41:32.36 ID:i6JVabOm.net
>>606
> それならば速いほうが良いだろ
別に?
徒歩5分のところに行くのに新幹線と車と自転車と徒歩とどれがいい?とか聞かれても「どれでもいいや」
って思うだけだし

609 :デフォルトの名無しさん:2017/07/05(水) 23:47:31.26 ID:VZUi/cSm.net
徒歩5分のところに新幹線や車を使ったら
たいてい遅くなるぞw

610 :デフォルトの名無しさん:2017/07/05(水) 23:53:49.42 ID:VZUi/cSm.net
技術力が高い人ほど動的型を好むのは
たまたまとかいうわけじゃなくて、
短く書けてしまうから「この程度の小さな規模」の
コードになってしまうことが多いからなわけだよね

611 :デフォルトの名無しさん:2017/07/06(木) 00:02:07.40 ID:AOJFjP+S.net
>>608
あるコマンドかアプリか処理か、何か知らんが、何かあって
処理に5分もかかったら、対話性などというものはないし
まず使い方そのものからして考え直さなければならない
進捗ぐらいは表示したいし、アプリの構成そのものからして考えないとな
5分という時間は何もしないには長すぎるので、作業いったん中断ってところだな

これが100倍速いと3秒で終わる
3秒なら、まぁ、待てるかな
ちょっと遅いが、ギリギリ、リアルタイムな対話といえるレスポンスだな
作業は中断しないな

5分と3秒の違い、わからない?

あと、徒歩五分のコンビニに行くにしても、瞬間移動が使えるなら
俺はそういった能力、ほしいな
大は小を兼ねるというし
瞬間移動が使えることで生産性が落ちるわけでもないしな

612 :デフォルトの名無しさん:2017/07/06(木) 00:05:57.18 ID:AOJFjP+S.net
まぁフォトショップでフィルタをかけるとか、なんでもよいんだけど
5分待たされるのはしんどいよ
ほんと、作業が中断しちゃう
コーヒー飲むかタバコ吸うかウンコするか

3秒ならまぁ何とかってところ

613 :デフォルトの名無しさん:2017/07/06(木) 00:06:41.72 ID:EqEhEZ9Z.net
>>611
徒歩というたとえだから5分と設定しただけだよ

実際に計算だけで5分かかるような処理ならそりゃC/C++を使うだろうし、そんな処理をガンガン書く場面は
想定できないし問題ないよ

614 :デフォルトの名無しさん:2017/07/06(木) 00:15:20.73 ID:EqEhEZ9Z.net
要するに徒歩5分はスクリプトで言えば1秒以内に終わる処理だね
1秒を0.01秒に縮められます!とか言われても、でも1秒で十分なんでって思うだけだしね

615 :デフォルトの名無しさん:2017/07/06(木) 00:22:28.74 ID:hXlN8tOU.net
結局何を主張してるのか理解出来ねえ
rubyなんざ使い物にならねえよって>>611が言いたいのか?
同意を得たいなら他のスレで暴れろよな

616 :デフォルトの名無しさん:2017/07/06(木) 00:36:23.27 ID:AOJFjP+S.net
そもそもからしておかしいんだよ
プログラムの実行速度が速すぎるのが原因で生産性が落ちることはない
聞いたこともない
大は小を兼ねるということわざが当てはまって、速すぎて困るということはない

プログラムの実行速度が速いことのトレードオフだけど、これも良くわららない状況だ
今現在はどちらかというと静的型のほうが生産性があるんじゃないか、とすら言われている
そんな状況で100倍も遅かったら、どうなるんだ?
3.0GHzのCPUでも実質的には30MHz相当

あと、静的型言語が速い傾向があるといっても、本当に誰も何もせずに速いってわけじゃなく
コンパイラが最適化を相当キバってくれているから速いわけだ
プログラマがちまちま考えなくてもコンパイラが頑張ってくれる、という方面での生産性という見方もあるし
速くなった分は余裕ができるのでプログラムを手抜きできるっていう生産性もある

また、動的型言語であっても速いのはある
例えばJSは静的型と同じ土俵に立てるぐらいに速いだろ?
これをもってしてMatzは動的型でも速度は出せるって言い張るんだけど
そのような実装を用意できてない状態でそんなこと言って何になるんだ?

617 :デフォルトの名無しさん:2017/07/06(木) 00:38:42.41 ID:EqEhEZ9Z.net
>>616
> 大は小を兼ねるということわざが当てはまって、速すぎて困るということはない
別にRuby程度の速度で困ることもない場面がほとんどなので、問題はない

618 :デフォルトの名無しさん:2017/07/06(木) 00:39:54.73 ID:DNqxUdzY.net
> そんな状況で100倍も遅かったら、どうなるんだ?
> 3.0GHzのCPUでも実質的には30MHz相当

その計算をすることに意味はない。
今後一切やめてくれって言いたいレベル。

現実としてその違いは、重大な問題を引き起こすかどうかで決まる。
わからないと言うならば、問題は起こってないということだ。

619 :デフォルトの名無しさん:2017/07/06(木) 00:43:06.60 ID:DNqxUdzY.net
> プログラムの実行速度が速すぎるのが原因で生産性が落ちることはない

当たり前だ。実行速度と生産性は無関係だからだ。

無関係といったんだ。実行速度を速くしても生産性は落ちないとは言ってないからな。

無関係ということは、実行速度を速くすることで
 生産性が落ちる場合もあるし、
 生産性が落ちない場合もある
 生産性が上がる場合だってある
ということだ

> 大は小を兼ねるということわざが当てはまって、速すぎて困るということはない

速くするため生産性が落ちるのであれば困る。

620 :デフォルトの名無しさん:2017/07/06(木) 01:01:27.03 ID:AOJFjP+S.net
Rubyが今の100倍速くなったとしたらどうなんだ?
前のままで十分だったから遅くしてくれ、戻してくれ、とはならんだろ
速いほうがいいに決まっているのに、遅くてもよいと言い張るのは
すでに普通の感覚を失ってしまっている
Ruby3.0ではどうにかネイディブスレッドを導入しようという話だが
これもどうにか実行効率を上げよう試みだ
結局速いほうが良いという話

ものすごく変な言い方をすると、Rubyが今の100倍速かったら
もっといろいろなことにRubyを使えるはずなのに
そういったことをユーザー自ら否定してしまうのは変なコミュニティーだ
「自分たちはこれでよいんだ」的な
でも1億あげるっていったら間違いなく飛びつく

速度を落としてまで動的型にしたが
それもちょっと前からどちらかというとメリット無いんじゃねと言われていて
今ではその評価もすっかり固まってしまったが
これなら何故速度を犠牲にしたのか意味がよくわからない状況

621 :デフォルトの名無しさん:2017/07/06(木) 01:03:39.40 ID:EqEhEZ9Z.net
>>620
> 結局速いほうが良いという話
大事な前提条件が抜けている
「コードが変わらないならば」という条件がな

622 :デフォルトの名無しさん:2017/07/06(木) 01:12:20.24 ID:AOJFjP+S.net
必ずしもコードが変わらない場合にのみ速度が速いことが歓迎される
というわけでもなかろう
処理系の実行速度が速いことには何時でも一定の価値基準がある

623 :デフォルトの名無しさん:2017/07/06(木) 01:13:25.30 ID:EqEhEZ9Z.net
>>622
> Rubyが今の100倍速くなったとしたらどうなんだ?
君がこういう前提を出したんだよ?

624 :デフォルトの名無しさん:2017/07/06(木) 01:13:59.37 ID:AOJFjP+S.net
周りを見渡せばRubyよりも100倍速い言語や処理系が既にあって
しかもRubyのような動的型は失敗だったんじゃないかという空気だ

625 :デフォルトの名無しさん:2017/07/06(木) 01:16:51.07 ID:EqEhEZ9Z.net
>>624
君の頭の中ではそうなんだろうね
世間に出た方がいいと思うよ

626 :デフォルトの名無しさん:2017/07/06(木) 01:32:38.58 ID:hXlN8tOU.net
>>624
お前が吐き出した空気じゃねえか
澱み杉

627 :デフォルトの名無しさん:2017/07/06(木) 07:30:15.82 ID:LqVtic6r.net
失敗も何も動的言語は生まれた時から「動作は遅いが作るのが早くできるので素晴らしい、しかしそれゆえ脆いので長期堅牢には向かない」ときちんと認識されていた
完璧を目指していたことなど一度たりとてない

628 :デフォルトの名無しさん:2017/07/06(木) 09:30:16.79 ID:jsnas7L+.net
そもそもMatzが遊びで作った言語だろ?
それをわざわざ公開してくれて
我々は彼の善意によってタダで使わせてもらってんだろ?

そのへんの間隔というか距離感というか
忘れちゃってる奴おるよな
自分のオカンに対して無限に批判するような態度の

629 :デフォルトの名無しさん:2017/07/06(木) 09:43:08.71 ID:k46M2gqo.net
文句があるなら自分で言語作ればいいじゃん。

630 :デフォルトの名無しさん:2017/07/06(木) 10:11:36.56 ID:IrPrEl9j.net
仇ばかり広めやがっておいたが過ぎる

631 :デフォルトの名無しさん:2017/07/06(木) 11:25:53.97 ID:YVvleWfm.net
RubyでつくるRubyとかでも読もうよ

632 :デフォルトの名無しさん:2017/07/06(木) 12:15:37.69 ID:OTGRz3s4.net
リファクタリングのRuby版読むと、
Rubyのコードが如何に解説するのに向いているかわかる

こんな感じのRubyのコード使った解説本はもっと増えて良い

633 :デフォルトの名無しさん:2017/07/06(木) 12:41:45.00 ID:JvJmzwJo.net
とりあえず
> 今現在はどちらかというと静的型のほうが生産性があるんじゃないか、とすら言われている
このソースが欲しいとこだな
まーこいつの妄想だろうが

634 :デフォルトの名無しさん:2017/07/06(木) 13:20:06.18 ID:YVvleWfm.net
リファクタリングするときとかIDEの力を借りれば
静的のほうが生産性が上がるかもとは
散々言われてきたが?

635 :デフォルトの名無しさん:2017/07/06(木) 13:39:42.81 ID:tNWdrmh7.net
>>632
それ暗にRubyはクソコードはが多いとdisられてるんじゃね

636 :デフォルトの名無しさん:2017/07/06(木) 22:14:31.93 ID:DNqxUdzY.net
>>620
> Rubyが今の100倍速くなったとしたらどうなんだ?
速い代わりに、C++言語みたいになったりしたら
戻してくれって言うよ。生産性が落ちるんだから当たり前じゃないかw

637 :デフォルトの名無しさん:2017/07/06(木) 22:19:42.92 ID:DNqxUdzY.net
プログラム言語っていうのは道具だからね。(その言語の開発者以外は)

一般的な道具で考えてみればわかる
速いけど不便。少し遅いけど便利。

遅くても実用上問題なければ、便利な方を
取ることの方が多いだろう。

誰もがF1カーに乗るわけじゃあるまいしw

638 :デフォルトの名無しさん:2017/07/06(木) 23:14:22.78 ID:jsnas7L+.net
既存の言語に文句いうやつが
その言語以上の素晴らしい言語を作った例は皆無

あるとしたら…それこそperlに対するrubyくらいのもん

639 :デフォルトの名無しさん:2017/07/06(木) 23:19:58.00 ID:OTGRz3s4.net
633 :
デフォルトの名無しさん
2017/07/06(木) 13:20:06.18 ID:YVvleWfm
リファクタリングするときとかIDEの力を借りれば
静的のほうが生産性が上がるかもとは
散々言われてきたが?
634 :
デフォルトの名無しさん
2017/07/06(木) 13:39:42.81 ID:tNWdrmh7
>>632
それ暗にRubyはクソコードはが多いとdisられてるんじゃね

流石にこれは気持ちわる過ぎる

640 :デフォルトの名無しさん:2017/07/06(木) 23:24:14.70 ID:DNqxUdzY.net
>>634
> リファクタリングするときとかIDEの力を借りれば
> 静的のほうが生産性が上がるかもとは

大規模システムの場合はそうだけど、
小規模の場合は大差ない。

そして技術力が高い人ほど、システムを小規模に保つことができる。

技術力が高い人ほど動的の方が生産性が高い場合が多くなる

641 :デフォルトの名無しさん:2017/07/06(木) 23:29:32.44 ID:OTGRz3s4.net
そんなに健常者に混じりたいのか?

642 :デフォルトの名無しさん:2017/07/07(金) 01:03:55.66 ID:6Wd58F7c.net
OpenGLのgemつっこんでぐりぐり動かしてるけど、
テクスチャ関連やアニメーションモデルのデータの持ち方がいまいちピンと決まらない
その場で決めても後日、なんか手をいれなければならなくなる気がして二進も三進も

Rubyならでは冴えたやり方ってない?

643 :デフォルトの名無しさん:2017/07/07(金) 05:22:24.20 ID:1OiH67XQ.net
>>597
>>594だけど、おいらのレスに乗っかって何やら面白いことになってんね。
自分で関数から何からLLで書けばそうなんだけど、LLのライブラリじゃCで書かれてること多いからね。
それにI/O多いLLお得意の文字列処理とかは>>595の言う通り大差ない。
計測した事あるけど誤差の範囲って言って良い。
小説何十冊分が1ファイルに入ったりした時に差が体感できる程度。
100冊分超えたらCや他のコンパイラ言語検討して良いと思う。
30MHZが遅いって言ってもPICとかのマイコンは4MHzとかで、それでも十分人間より速い。

Prolog勉強した時はプログラミング言語は本来こうあるべきって書いてるページあって、方向性はそうだけど、その解は絶対Prologじゃねーって思ったけども。
確かにここまでCPU速くなったなら、人間がコンピュータのアーキテクチャに合わせる必要はない。
とは言え、CPUのx86と同じ、すでにコード資産が無視出来ないんよな。。。

644 :デフォルトの名無しさん:2017/07/07(金) 08:48:43.90 ID:ntVt91QO.net
バージョン上げたgccでrubyのバージョン更新したら遅くなったからgccに要因があるのかrubyに要因があるのかヒントになる情報をくれって>>585 が訊いてるのに
なぜこんなアホな話が出てくるんだ?

645 :デフォルトの名無しさん:2017/07/07(金) 11:01:19.92 ID:ntVt91QO.net
晒しage

646 :584:2017/07/07(金) 12:15:57.82 ID:de0deAJS.net
まあ関係ない話はおいといて…

>>586
gemの入れ直しが面倒なのでプロファイラは後回しの予定.
>>587
家のマシンだとgccの入れ替えに10時間かかるんだ……(フルビルドしてるせいだけど)
というわけで手元にソースがあった3種類のrubyをgcc7.1.0でビルドし直して入れ替えて
問題のスクリプトをtimeで計ってみた。

ruby2.1.2 2.0秒 -> ruby2.3.1 2.4秒 -> ruby2.4.1 2.8秒
もちろんioとか抜いたuser時間ね。

修正履歴をざっと調べたところ
Bignum(だっけ?とにかくでかい整数)周りの修正が影響しているんじゃないかと現在考慮中。

647 :デフォルトの名無しさん:2017/07/07(金) 12:35:48.56 ID:6Wd58F7c.net
二日前の話をなぜ今に?

もしかして情報がもっと欲しいの?
だったらrubyのソースコードを読むしか無いよ

648 :584:2017/07/07(金) 14:11:00.10 ID:de0deAJS.net
>>647
あーいや、情報についてはあんまり期待してない。

もともと
「実際に体感できるレベルで速度低下してるが適当にググっても情報が無い」+
「gccの入れ替え面倒というか今週暑過ぎ」
というのが質問の理由だったからね.

実際幾つか他の適当なスクリプトでも実行時間を計測して比較してみたところ、
ここまで大きな速度低下は無かったというのもあって今では少し安心してる。
入れ替え後最初に実行したスクリプトで地雷を踏んだのは運が悪かった。

649 :デフォルトの名無しさん:2017/07/07(金) 14:38:37.78 ID:6Wd58F7c.net
ますますわからない
何を求めての書き込みだったの?

650 :デフォルトの名無しさん:2017/07/08(土) 13:12:39.97 ID:3StuOUHl.net
>>620
>>636
CとのインターフェースならPythonの方が良いよ

651 :デフォルトの名無しさん:2017/07/08(土) 13:18:08.48 ID:lhqNZaXL.net
いつまその話引っ張るつもりだよ

652 :デフォルトの名無しさん:2017/07/08(土) 13:19:15.07 ID:lhqNZaXL.net
いつまでその話引っ張るつもりだよ

653 :デフォルトの名無しさん:2017/07/08(土) 14:06:59.57 ID:fcf9I7tU.net
これをRubyで解きなさい
普通のパズルではない「正規表現クロスワード」がBBCラジオに登場 - GIGAZINE
http://gigazine.net/news/20170707-regular-expression-puzzle/

654 :デフォルトの名無しさん:2017/07/08(土) 15:45:07.53 ID:FfZt44/H.net
>>646
まさか、Fixnum関係ではないよなあ?
ペナルティがないこともIntegerに統合した理由だろうと思ってたんだけど。

655 :デフォルトの名無しさん:2017/07/11(火) 01:41:06.03 ID:MbVhLJ6O.net
railsスレから移動してきました。

def index
UNIXSocket.open('/tmp/myapp.sock') do |sock|
sock.write(params.to_query)
rt = sock.readline
render text: rt
end
end

みたいなことがしたいのですが、どうも
rt = sock.readline
のところで処理が止まってしまうように見えています。
renderの部分まで処理を進めるにはどのような書き方をすればよいのでしょうか。
教えて頂けますと嬉しいです。

656 :デフォルトの名無しさん:2017/07/11(火) 02:00:52.46 ID:7uNv3Rqd.net
sock.write(params.to_query)
rt = sock.readline

書き込んで、読み込む?
矛盾してないか?
読み書き両用なのか?

もし両用なら、相手からの返事を待っているのだろう

657 :デフォルトの名無しさん:2017/07/11(火) 02:19:22.94 ID:MbVhLJ6O.net
レスありがとうございます。
やりたいこととしては、socket.writeでソケットにクエリを投げて
通信先で処理を行ってレスポンスが返ってくるので、
それを sock.readline で読み取るという双方向な感じのことです。

通信先のプロセスをkillするとなぜか処理が進んで、rtに正しいデータが格納され、
render まで処理が進むのですが・・アドバイスいただけると幸いです。

658 :デフォルトの名無しさん:2017/07/11(火) 02:34:39.39 ID:3Ue5zlRS.net
>>657
flushしてみるとか?

659 :デフォルトの名無しさん:2017/07/11(火) 02:46:23.42 ID:MbVhLJ6O.net
レスありがとうございます。
すみません自己解決しました。

def index
s = UNIXSocket.new("/tmp/myapp.sock")
s.send(params.to_query, 20)
render text: s.recv(20)
end

こっちの方の書き方を試してみたところ、うまくいきました。(20は適当な数値)
何がどう違うのかよくわからないですが・・

660 :デフォルトの名無しさん:2017/07/11(火) 08:15:25.04 ID:qelYWZQu.net
>>659
656ではないけど確認。
flushはダメだった?

661 :デフォルトの名無しさん:2017/07/11(火) 08:15:55.92 ID:qelYWZQu.net
657の間違い

662 :デフォルトの名無しさん:2017/07/11(火) 19:44:38.95 ID:3Ue5zlRS.net
>>659
sendで使っている数値の20だけど、第二引数は flags になってる

mingw32(windows)だと (MSG_MAXIOVLEN | MSG_DONTROUTE)
linuxだと (MSG_PROBE | MSG_DONTROUTE)
FreeBSDだと (MSG_TRUNC | MSG_DONTROUTE)

を意味することになり、あなたの意図するところじゃないはず

recvの方は第一引数で最大20バイトの読み込みを意味するけど、
readlineは改行まで読み込むメソッドだから、振る舞い方に違いがある


一つの通信単位が任意長で、改行で終わらせたいなら
s.send(params.to_query, 20) を s.puts(params.to_query); s.flush

s.recv(20) を s.readline じゃだめかな?

もっとも params.to_query に改行が含まれているとうまく行かないけれど

663 :デフォルトの名無しさん:2017/07/12(水) 06:30:11.01 ID:HQm2gXhD.net
バッファリングされているから、flush で出力するのか

664 :デフォルトの名無しさん:2017/07/12(水) 10:12:13.87 ID:z1EDa6/Q.net
>>662
そのあたりは、通信先のkillで挙動が変わらないのでは?
どうせ真のkillではないんだろうし、flushがありがちじゃない?

665 :デフォルトの名無しさん:2017/07/13(木) 10:59:11.29 ID:0lfkoIF4.net
エラーの時のスタックトレースがコンソールに大量のログが出るのを減らすことってできませんか?

666 :デフォルトの名無しさん:2017/07/13(木) 11:41:39.10 ID:DhWBmBwc.net
logger使え

667 :デフォルトの名無しさん:2017/07/13(木) 12:17:59.84 ID:FtHnJB7n.net
エラーなんだから仕方なかろうよ
もしプロダクションレベルであんまり内部パスとか詳らかにしたくないというのなら全体をrescueするしかないね
begin

# main_thread()

rescue RuntimeError => e
warn e.message
exit(1)
end

RuntimeErrorじゃないのだったら適当に増やしとけ

668 :デフォルトの名無しさん:2017/07/13(木) 17:38:19.70 ID:fH9gUBRZ.net
ruby -W0 で起動して減らなかったらどうしようもない
そういう便利オプションみたいなのはないのですわ

669 :デフォルトの名無しさん:2017/07/14(金) 12:23:44.38 ID:M2zlfEHR.net
○○課
○○課○○室
○○課○○係
○○課○○室○○係
○○課○○ライン

みたいな文字列を入れたときに

[○○課]
[○○課, ○○室]
[○○課, ○○係]
[○○課, ○○室, ○○係]
[○○課, ○○ライン]

みたいに分割してくれる関数を作りたいのですが上手くいきません
いい方法はないでしょうか

670 :デフォルトの名無しさん:2017/07/14(金) 12:53:09.53 ID:M2zlfEHR.net
>>669
とても下手くそなやり方だと思いますが一応できました

def my_split(str)
 arr = Array.new
 str_arr = Array.new
 arr.push 0
 str.each_char.with_index do |ch, i|
  arr.push i+1 if ch == "課".encode("windows-31j")
  arr.push i+1 if ch == "室".encode("windows-31j")
  arr.push i+1 if ch == "係".encode("windows-31j")
 end
 arr.each_with_index do |e, i|
  str_arr.push str.slice(arr[i-1]..(arr[i]-1)) unless i == 0
 end
 str_arr
end

671 :デフォルトの名無しさん:2017/07/14(金) 14:04:05.91 ID:Oez5CIDd.net
>>669
def spj(s)
reg = Regexp.new("[課室係]|ライン")
a1=s.split(reg)
a2=s.scan(reg)
return a1.zip(a2).map{|x| x.join("")}
end

672 :デフォルトの名無しさん:2017/07/14(金) 14:48:32.40 ID:JyiCltLg.net
>>669
"○○課○○室○○係"..scan /.*?(課|室|係|ライン)/ # => ["○○課", "○○室", "○○係"]
なお○○の部分に"課"等の文字が来てはいけない

673 :デフォルトの名無しさん:2017/07/14(金) 15:50:02.09 ID:NNElhd0j.net
そーか頭も含めりゃ確かにscanだけでいいのか。ボケてるな。

674 :668:2017/07/14(金) 17:28:16.98 ID:+o1J8cU+.net
>>671>>672
ありがとうございます
すごくシンプルに書けるんですね

675 :デフォルトの名無しさん:2017/07/14(金) 23:19:58.67 ID:nq2jK5zh.net
>>671
おー、かっけー。

こういうのがすぐ頭に浮かぶようになりたい。

676 :デフォルトの名無しさん:2017/07/15(土) 00:52:30.17 ID:1BB6lano.net
scanて文字切り出しに便利だよね

677 :デフォルトの名無しさん:2017/07/15(土) 16:03:05.98 ID:5dwax4jd.net
おまえらどう書くかより何を作るかに集中しろや

678 :デフォルトの名無しさん:2017/07/15(土) 16:06:46.01 ID:leA2r81r.net
>>677
エンジニアの三大美徳のひとつ、「傲慢」を否定しちゃいけません

679 :デフォルトの名無しさん:2017/07/15(土) 16:46:46.89 ID:N0flRzpM.net
七大美徳も忘れるな

暴食、色欲、強欲、憤怒、怠惰、傲慢、嫉妬

680 :デフォルトの名無しさん:2017/07/15(土) 19:43:02.39 ID:37mK/jgH.net
>>678
あとの二つもおねがい

681 :デフォルトの名無しさん:2017/07/15(土) 21:43:00.98 ID:leA2r81r.net
>>680
怠惰、短気

682 :デフォルトの名無しさん:2017/07/15(土) 23:48:56.02 ID:oxvwpB//.net
>>677
それはこのスレで語ることではない

683 :デフォルトの名無しさん:2017/07/15(土) 23:50:17.93 ID:oxvwpB//.net
>>680
遅刻、有休

684 :デフォルトの名無しさん:2017/07/16(日) 00:35:02.61 ID:Ki8GsNb9.net
仮病で有休

685 :デフォルトの名無しさん:2017/07/16(日) 14:47:36.60 ID:m8yy8euc.net
俺のパソコンは納期前によく壊れる
困ったものだ

686 :デフォルトの名無しさん:2017/07/16(日) 18:59:56.18 ID:yo5XpH/o.net
壊れてもバックアップ環境あるから
使いにくくなって効率下がるだけで他は変わらない

687 :デフォルトの名無しさん:2017/07/17(月) 11:01:21.40 ID:cSztc20o.net
未だにgemって良く判らない。インタプリタなども含めて一式を配布するような場合は邪魔でしかない印象

688 :デフォルトの名無しさん:2017/07/17(月) 11:05:59.42 ID:5WhJSLEy.net
外部のライブラリをスッ…とインスコできるやつ、色々作ってる側からすると便利、まああんまり好きじゃないけど

689 :デフォルトの名無しさん:2017/07/17(月) 11:14:05.33 ID:fxU6unKK.net
バージョン変わって依存関係めちゃくちゃなって
何か月とか何年かあとになって
再度同じ環境構成しようとしても
以下略

690 :デフォルトの名無しさん:2017/07/17(月) 11:38:02.62 ID:PBO0/BLN.net
>>687
Rubyはそんな使い方しないからね
RailsのDSLなんだから

691 :デフォルトの名無しさん:2017/07/17(月) 11:59:55.25 ID:V9kDayPy.net
>>687
>インタプリタなども含めて一式を配布するような場合
Rubyでそういうことをしてはいけない
スクリプト言語にとってのインタプリタバイナリはライブラリ選択前に既にインストールされているものなのだ
rubyがインストールされ(てい)ない環境でも実行して欲しいようなものをRubyで作っては「絶対に」いけない

692 :デフォルトの名無しさん:2017/07/17(月) 13:21:14.47 ID:Uy8niamL.net
vagrant, chef, SASS とかに、Ruby の実行環境も入れて、配布しているだろ?

693 :デフォルトの名無しさん:2017/07/17(月) 13:41:49.80 ID:CuRtYSJT.net
>>692
VagrantやChefはユーザーによるスクリプティングを可能にするためにRubyを入れてるんであって、
プロダクトをRubyで作っちゃったから仕方なくRubyを入れてるわけではないよ
一方SASSはRubyで作っちゃった例だけど、Rubyが嫌われてnodeへ移行した

694 :デフォルトの名無しさん:2017/07/17(月) 14:20:06.37 ID:H+ZLTTJY.net
> Rubyが嫌われてnodeへ移行した
nodeには移行してない
Cに移行している

695 :デフォルトの名無しさん:2017/07/17(月) 16:57:19.47 ID:shGqANuA.net
そんな時のためのmrubyにはならないのか

696 :デフォルトの名無しさん:2017/07/17(月) 17:05:21.70 ID:CuRtYSJT.net
残念ながらmrubyが獲るはずだったポジションはNodeに獲られちゃった

697 :デフォルトの名無しさん:2017/07/17(月) 18:22:28.87 ID:cSztc20o.net
gemを使わないで何とかしようとすると情報が一気に減るんだよな。下手するとビルド方法の資料すらなかったり

>>689
あるあるすぎる。今まさにそれで頭を抱えている。昔出来たはずのことを再現しようとしているけどどうしたものか・・・

>>690-691
exerbやocraを全否定ですか

>>695
mrubyは検討したけど使えそうなライブラリが無くてcrubyにせざるを得なかった。ライセンス不明はやめてほしい

698 :デフォルトの名無しさん:2017/07/18(火) 00:28:34.69 ID:2jGZGtzj.net
わかってると思うけど、Rubyのネガキャンやってるのがこのスレに粘着してる
こういうのは見付け次第叩いてやらないといけない

699 :デフォルトの名無しさん:2017/07/18(火) 00:50:06.81 ID:tovqy0R7.net
>>692みたいにヘタに突っついて論破されるのも準アンチ行為だから注意な

700 :デフォルトの名無しさん:2017/07/18(火) 07:19:41.41 ID:soRF6X66.net
いまだにRuby万能説に縋りRuby万能を否定されると発狂する人が住んでるのか
それは10年も前に終わった言説だ
いつまで寝ているんだ目を覚ませ

701 :デフォルトの名無しさん:2017/07/18(火) 12:48:36.31 ID:6DbTRi2A.net
Ruby が最上流。
他の言語よりも、常に、2, 3年早い

Rails, vagrant, chef, SASS など

DSL では、Ruby, Groovy が優れているから、
最初にこれらの言語で作られてから、Python, JS へ移植される

Kotlin も注目されているけど、型を指定するのが面倒。
まあ、型を省略して、型推論もできるけど

702 :デフォルトの名無しさん:2017/07/18(火) 16:13:18.86 ID:bC2KM4MS.net
rubyが最上流?
ワロス
そんな優れてるならphpもpythonも喰ってるよ。

しかも、落ち目だし。

703 :デフォルトの名無しさん:2017/07/18(火) 16:18:08.82 ID:bC2KM4MS.net
しかも、型省略して型推論とか微妙な言い回ししてるあたり、分かってない臭がすごくてやばい

704 :デフォルトの名無しさん:2017/07/18(火) 17:14:45.02 ID:PS9r5OZ5.net
>>703
C#のvarみたいなもののことなんじゃないの?

705 :デフォルトの名無しさん:2017/07/18(火) 18:59:56.81 ID:jUpeemmL.net
Kotlinの型推論はただの典型的な型推論ですよ
それこそ「型指定が必要だけど型推論に任せることもできます→まあ便利」で済むレベル
わかってないのは間違いないのだろうけれど

706 :デフォルトの名無しさん:2017/07/19(水) 22:04:21.42 ID:nwQCI0l5.net
たとえばArrayにメソッドfuncAを追加する時は
class Array
 def funcA
  return ["AAA"]
 end
end
みたいに書けば出来ますがこれをCの拡張ライブラリにしたい場合ってどうすれば良いんでしょうか?
Cからメソッドの登録を行う場合は
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(), int argc)
を使用するようですが第一引数をどのように得ればいいのか判りません

707 :デフォルトの名無しさん:2017/07/19(水) 22:15:34.36 ID:kPQDkgCo.net
rb_define_method(rb_cArray, "funcA", hoge_func_a, 1);

static VALUE hoge_func_a(VALUE self, VALUE arg1) { }

708 :デフォルトの名無しさん:2017/07/19(水) 22:52:50.29 ID:nwQCI0l5.net
え?"Array"というRubyの名前空間上の文字列?からklassを得る方法って無いの?
実際にメソッドを追加したいのは拡張ライブラリなんだけど、クラスやメソッドの登録は
関数内で行われていてklassが明示的に外部へ公開されているようには見えないのだが・・・

709 :デフォルトの名無しさん:2017/07/20(木) 01:14:47.75 ID:pXT/1iWX.net
>>708
組み込みクラスやモジュールに関してはグローバル変数として用意されている
ruby/ruby.hを見るべし
https://github.com/ruby/ruby/blob/trunk/include/ruby/ruby.h#L1871


ちなみにこういう事もできる

#include <ruby/intern.h>

VALUE cDigestBase = rb_path2class("Digest::Base");

710 :デフォルトの名無しさん:2017/07/20(木) 09:35:50.76 ID:s/SNqpfK.net
naoyaのはめ撮り動画アップされたね

711 :デフォルトの名無しさん:2017/07/20(木) 14:22:33.47 ID:+aBWrhxZ.net
697の見え見えの釣り針にひっかかる粘着なんておらんやろ
って思ってたけど、見事に食い付いてるな

マジスゲー

712 :デフォルトの名無しさん:2017/07/20(木) 22:29:26.18.net
>>709
ありがとう
弄りたいのは野良の拡張ライブラリです
rb_path2classで出来そうなのでこれを使ってみます

713 :デフォルトの名無しさん:2017/07/22(土) 14:27:06.95 ID:GRw82bJl.net
拡張ライブラリをコンパイルする時に任意の場所にあるヘッダファイルやライブラリファイルを
探索させるようにするにはどのようにすればいいのでしょうか

714 :デフォルトの名無しさん:2017/07/22(土) 14:50:45.74 ID:ZFWxmOeg.net
それRuby全く関係ない
Cのコンパイラだけの問題

715 :デフォルトの名無しさん:2017/07/22(土) 14:59:47.85 ID:6KQ6+UpV.net
>>713
extconf.rb 内で have_header や have_library を使う
使い方は ruby に含まれる doc/extension.ja.rdoc を見よ

https://github.com/ruby/ruby/blob/trunk/doc/extension.ja.rdoc#appendix-c-extconfrb%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E9%96%A2%E6%95%B0%E3%81%9F%E3%81%A1

716 :デフォルトの名無しさん:2017/07/22(土) 15:46:06.83 ID:GRw82bJl.net
>>714
そうですけどextconf.rbで作ったMakefileをいちいち手編集するのは正攻法ではないですよね

>>715
have_header("C:\\foo\\hoge.h")
とか
have_header("C:/foo/hoge.h")
とかやってもnoと言われてしまいます

717 :デフォルトの名無しさん:2017/07/22(土) 15:56:18.40 ID:GRw82bJl.net
あ、自己解決。dir_configを使えば良かったのか
dir_config("myproject")
とか書いて
ruby extconf.rb --with-myproject-include=C:\foo
とかするとそのディレクトリを探索対象に加えてくれるみたいです

718 :デフォルトの名無しさん:2017/07/22(土) 16:07:27.55 ID:LM/qA1ao.net
mkmf.rbでdir_config("opt")してくれてるので、--with-opt-includeならはじめから使える

719 :デフォルトの名無しさん:2017/07/22(土) 20:13:36.13 ID:6KQ6+UpV.net
>>716
まだ見てるかな?
すまない、find_header、find_library を伝えるべきだったな

720 :デフォルトの名無しさん:2017/07/23(日) 03:04:04.86 ID:nJm1oPvD.net
IDE には、ライブラリパスの参照という、ボタンがあるはず

721 :デフォルトの名無しさん:2017/07/23(日) 08:53:05.99 ID:1hI9T8Bk.net
ひとまず形にはなった。ALLOC_Nの開放の仕方が判らないのでALLOCA_Nにした
ALLOC〜って初期化してくれないんだな。ゴミが混じってメモリ破壊の
バグがあるのかとしばらく悩んだ。でもCはど素人だしなんかありそう

>>719
コマンドラインの方が容易に変更できるのでdir_configで行こうと思います

722 :デフォルトの名無しさん:2017/07/23(日) 10:43:01.15 ID:FBMkfY4k.net
>>721
ruby/ruby.hを大文字のALLOCで文字列検索してみ
RB_ZALLOCとかRB_ZALLOC_Nとかが0で初期化してくれる

あと確保したこれらはxfree(void*)で解放してね

723 :デフォルトの名無しさん:2017/07/23(日) 21:56:04.93 ID:1hI9T8Bk.net
>>722
ありがとう。ZALLOC_N&xfreeにしてみました
ALLOCA_Nってruby/ruby.hをみたらallocaを呼んでいるだけじゃないかw

拡張ライブラリ内部における動的なメモリの確保ってどうするのが好ましいんだろうな
スタックに積む方法はメモリのリークはないけどスタックを圧迫する(.今の環境だったら気にするほどでもない?)
allocして後にfreeする方法だと意図せず途中で抜けた時にメモリがリークする
Rubyの文字列を作ってそれを利用すると言う方法を紹介しているblogもあったけど・・・う〜む・・・

724 :デフォルトの名無しさん:2017/07/23(日) 23:04:03.89 ID:FBMkfY4k.net
>>723
俺も外部の人間だから本当に適切な方法なんて知らないけど……

VALUE bufvalue;
size_t bufsize = 1024;
void *ptr = RB_ALLOCV(bufvalue, bufsize);

任意の処理を行う
ここで例外が発生しても次のGCで勝手に開放される
bufvalueはrubyの世界へと出さないように気をつける

/* メモリの即時開放(freeされる) */
RB_ALLOCV_END(bufvalue);



VALUE bufstr = rb_str_buf_new(bufsize);
void *ptr = RSTRING_PTR(bufstr);

任意の処理を行う
rubyの世界に出しても問題なし
ただし出したあとで再び使う場合は必ず
rb_str_modify(bufstr); /* freezeされたらaboneするけどな */
ptr = RSTRING_PTR(bufstr);
をやり直す

/* メモリの開放(即時開放されるかは実装任せ) */
rb_str_resize(bufstr, 0);


こんな感じかな

725 :デフォルトの名無しさん:2017/07/24(月) 00:44:09.77 ID:7DZLuR6j.net
今気がついたのだが・・・
自作メソッドの入力値が不適切→rb_raiseを叩く→Segmentation fault
rb_raiseの引数に動的な物は含まれていないし、未解放のメモリがあるわけでもないしどうなっているんだ
例外を発生させる時の作法とかあるのだろうか

しかも2個作ったメソッドの片方だけこの現象が起きる。処理内容に問題があるわけではないけど
これを放置するのはマズイよな

>>724
ありがとう。参考になります

726 :デフォルトの名無しさん:2017/07/24(月) 05:46:45.69 ID:q6ge4pC6.net
メモリスタック確認するのが一番じゃね?適当だけど

727 :デフォルトの名無しさん:2017/07/24(月) 08:11:09.42 ID:rFx+DNZY.net
なるほど・・・ってVC++環境でコアダンプってどうやって取れば良いんだろ
ググるとWindows Error Reportがトラップしている時にタスクマネージャからダンプさせる
とか出てくるけどトラップされている訳じゃないのでこの方法は使えないし・・・
それともどこかにダンプが保存されているんだろうか

728 :デフォルトの名無しさん:2017/07/24(月) 12:01:57.41 ID:YHai+DFK.net
プロセスにアタッチしてブレイクしたら。

729 :デフォルトの名無しさん:2017/07/24(月) 19:26:11.30 ID:R/9Imr1c.net
困った時のprintfデバッグ

730 :デフォルトの名無しさん:2017/07/26(水) 14:44:00.57 ID:P+h1MRRW.net
【Unity】ソートアルゴリズム12種を可視化してみた - Qiita
http://qiita.com/r-ngtm/items/f4fa55c77459f63a5228

731 :デフォルトの名無しさん:2017/07/27(木) 10:11:51.47 ID:FeDFxsXm.net
ソフトウェアデザインがインターフェースの記事を丸々パクって問題になったことがあったな

732 :デフォルトの名無しさん:2017/07/29(土) 18:02:23.06 ID:Xgmp5DuD.net
VisualC++でビルドすると--disable-debug-envを付けてもデバッグビルドになってしまうように見えるけど気のせいかな・・・
インストールされるサイズが--enable-debug-envと比べてちっとも変わらない
生成したMakefileにデバッグ関係のオプションを削ったCFLAGSとLDFLAGSを書き込んだらインストールサイズが大分小さくなった

733 :724:2017/07/31(月) 01:44:48.62 ID:0NH1HYUL.net
ようやく原因がわかった
rb_scan_argsの第3引数が"22"と不適切な値にしていたことが原因だった。適切な"2"にしたら問題なくなった
複数のスレッドが動いているため?か例外を起こす場所が一定になるわけではない模様
rb_pでデバッグしていくと>>725の位置で例外が起きる(rb_raiseの第一引数がぶっ壊れていると
思われる)んだけど、デバッガで追いかけるとrb_scan_args内部で例外が起きる

734 :デフォルトの名無しさん:2017/07/31(月) 02:05:04.23 ID:9Hgupd7z.net
要約すると
Ruby ⇔ C と行き来するのはえらく面倒だ
ってことだな
これなら、Rubyを使うことそのものが目的じゃないのならだが
初めから Java、C#、C++ などを使ったほうが良かったってこったな

735 :デフォルトの名無しさん:2017/07/31(月) 07:03:37.88 ID:VY/jm5nF.net
というか今時はRPCやメッセージキューを使って完全に分離してしまえばいい
WindowsでRubyの時点でどのみち実用性のないオナニーなんだから好きにすればいいけど

736 :724:2017/07/31(月) 08:10:27.67 ID:S3S/4XWd.net
引数を間違えると警告もなくメモリをぶっ壊す関数って絶対にこれだけじゃないよね・・・
今回の件で困ったことまとめ
・VC++のコマンドラインからビルドした物をデバッグする例が全然見つからない
 VC++のIDEで開発したプロジェクトやgcc&makeで開発した物をgdbでデバッグする例なら沢山出てくるんだけどな
・CLIアプリケーションのためかデバッガから起動させるとgem関係のファイルがないとRubyが例外を吐いて動かない
 requireの後に$<.getsを書いてコマンドプロンプトから起動。デバッガからアタッチしてブレークポイントをセット後に
 Enterを入れて実行を再開。ただし100%上手くいくわけではない模様。無限ループ?にはまる時もある
 エントリーポイントで止めて環境変数やカレントディレクトリを適切に設定した後に再開すれば動くのかな?
 やり方が判らないけど
・RubyがSegmentation faultをトラップしてしまうためにメモリダンプを取れない?
 signal.cやwin32.cでそれっぽそうなところを書き換えてみたけどトラップを止めさせることは出来なかった
 どこを弄ればいいのだろうか・・・

C/C++は不慣れなので変なことを書いていたらスマン

737 :デフォルトの名無しさん:2017/07/31(月) 15:59:11.85 ID:2wHF06gt.net
ファイル名以外でファイルを識別するにはどうしたらいいんだ?
ファイル名変更したとしてもファイル名変更前とファイル名変更後のファイルを同じものとしてみたい
ファイルクラスのドキュメント見てみたけとそれらしいのはなかった

738 :デフォルトの名無しさん:2017/07/31(月) 16:30:54.00 ID:PivEBbdv.net
何を以て同じファイルとみなすかに依る
単に内容だけ比較するなら FileUtils.#cmp を使うと良いよ

https://docs.ruby-lang.org/ja/latest/method/FileUtils/m/cmp.html

739 :デフォルトの名無しさん:2017/07/31(月) 23:41:34.38 ID:X3kyqB8s.net
>>737
ファイルシステム次第なんじゃないの。
Linuxならだいたいinodeでいいだろうし。

740 :デフォルトの名無しさん:2017/08/01(火) 01:21:43.84 ID:eJYTTdCf.net
>>738
こんな便利なメソッドがあったのか
でも変更前のファイルが残ってるやけじゃないからここでは使えないかな…

>>739
https://docs.ruby-lang.org/ja/latest/class/File=3a=3aStat.html
LINUXだからこの辺使ってinodeで判別できそう!ありがとう!

741 :デフォルトの名無しさん:2017/08/01(火) 08:33:14.08 ID:YiDwID17.net
>>740
そういう用途なら、ハードリンクに注意。

742 :デフォルトの名無しさん:2017/08/01(火) 11:24:21.35 ID:QsBohnup.net
inodeは再利用されるからいつかギョッとするときが来ると思う
https://ideone.com/zPXgqb

743 :デフォルトの名無しさん:2017/08/01(火) 16:59:50.09 ID:T1EbqLjy.net
いまどきのファイルシステムなら拡張属性つかえんじゃない?
索引つくれないと面倒だけど中身比較するよかまし

744 :デフォルトの名無しさん:2017/08/01(火) 19:11:35.76 ID:ggiqqoER.net
>>743
拡張属性をRubyから使うのは面倒じゃないか?

オレとしては、要件を考え直すことを勧めたいが。
そういうアプリを見ないのはそれだけの理由があるんだから。

745 :デフォルトの名無しさん:2017/08/01(火) 19:40:15.57 ID:PARHYe6N.net
まあ「inode見ればファイル名変更にも追従できる!」なんてやらなきゃいけない時点でなにかがとてつもなくおかしいわな
gitみたいなかんたんファイル変更検知機能付きアプリケーションを見てみると絶望できるかもしれないね

746 :デフォルトの名無しさん:2017/08/02(水) 13:55:20.56 ID:5on7mlkV.net
rubyでcoincheck apiを使ってみたいんだけど、いまドットインストールを見終わって、たのしいRubyを見終わったんだけど、opensllとかuriとかnet/httpとかの使い方はどうやったら分かるようになるのかな

747 :デフォルトの名無しさん:2017/08/02(水) 20:17:50.89 ID:Y8o6EGzu.net
それくらいはマニュアル見ろよ
ということでマニュアルの読み方の勉強が必要

ただ、それらのライブラリはプロトコルをちっとも隠蔽してくれてないのでOpenSSLやURIやHTTPの基礎知識は必須だぞ
普通なら使いたいapi試しながら勉強しろと言うんだが絶妙にトライアルアンドエラーのしにくい分野のapiなのが辛いな

748 :デフォルトの名無しさん:2017/08/03(木) 19:35:54.85 ID:Yq3e1WJ9.net
Ruby並みに生産性が高く、C並みに高速で何でも作れる言語があったら神

749 :デフォルトの名無しさん:2017/08/03(木) 19:55:35.10 ID:eWbe8h/f.net
KotlinあたりにRubyっぽいライブラリがあれば案外簡単に実現できそう

750 :デフォルトの名無しさん:2017/08/03(木) 19:59:35.69 ID:Yq3e1WJ9.net
Javaがないと動かない時点で全然C並みじゃない

751 :デフォルトの名無しさん:2017/08/03(木) 21:17:20.06 ID:Wy5AX0em.net
>Ruby並みに生産性が高く、C並みに高速で何でも作れる言語

じゃーC++だね
生産性はJavaやC#には負けるかもしれないが
静的型言語だから少なくともRubyより生産性あるしな

752 :デフォルトの名無しさん:2017/08/03(木) 21:59:48.18 ID:yhj86Quo.net
>>751
C++の生産性が高いって、マジ発言っすか?
C++である程度の規模のアプリ書いたことある?

753 :デフォルトの名無しさん:2017/08/03(木) 22:12:01.14 ID:Wy5AX0em.net
8万行ぐらいのフリーソフトなら作ったことあるけど
逆にRubyでこの規模のソフト開発するのは嫌だなぁ

754 :デフォルトの名無しさん:2017/08/03(木) 22:14:29.74 ID:Wy5AX0em.net
C++は割と何でも作れる懐の深い言語だと思うよ
速度も最速といってよいレベルだし
C++で作って重かったらもう諦めるっつーか
諦めも付く

755 :デフォルトの名無しさん:2017/08/03(木) 22:16:49.93 ID:Wy5AX0em.net
そもそも
>ある程度の規模のアプリ書いたことある?
って聞き方がおかしいんだよなぁ
どちらかと言えばRubyは短いプログラムをサクッと作るのが得意分野なのに
ある程度の規模が前提なら、そりゃ、静的型の方が良いだろうよ

756 :デフォルトの名無しさん:2017/08/03(木) 22:20:14.12 ID:rbKeWnbz.net
一般的にメモリの保護機構を持たないと言うだけでその言語の生産性はかなり下がる
後に開発された言語の多くがメモリの保護機構を用意していることからもこれは明らか
C++でコンパイルが通れば一発動作のスーパーハッカーなら生産性は高いだろうけど
そりゃ言語の生産性が高いわけではなくそいつが凄いだけw

757 :デフォルトの名無しさん:2017/08/03(木) 22:22:18.12 ID:yhj86Quo.net
>>754
それと生産性の高さとは何も関係ないけどね

758 :デフォルトの名無しさん:2017/08/03(木) 22:27:07.72 ID:JmT9ks+l.net
rubyなら8千行

759 :デフォルトの名無しさん:2017/08/03(木) 22:27:27.39 ID:Wy5AX0em.net
だから
>(C++は)生産性はJavaやC#には負けるかもしれないが
って書いただろ
でもRubyより有ればひとまずそれで良いんだろ?
しかも>>752なんかは「ある程度の規模」って条件を指定してるし

760 :デフォルトの名無しさん:2017/08/03(木) 22:29:36.38 ID:yhj86Quo.net
>>759
C++はRubyより生産性は明らかに低いよ
メモリ管理は面倒だし、ちょっとなにかやればSEGVするし

761 :デフォルトの名無しさん:2017/08/03(木) 22:36:03.43 ID:Wy5AX0em.net
それでも静的型の方が生産性があるってのが業界のFAだろ?
最近出てきた言語はどうなってる?当たり前に静的型の機能を持ってるだろ
あと、C++はRubyよりシェア(という言い方が適切かは分からないが)高いし
コミュニティーも活発だよ
だから
>Ruby並みに生産性が高く、C並みに高速で何でも作れる言語
の回答はC++だ
他に選択肢有るか?

762 :デフォルトの名無しさん:2017/08/03(木) 22:37:48.85 ID:Wy5AX0em.net
あと、C++はライブラリも結構豊富な方だと思うよ
Cのライブラリも使えるし、まぁ、大体は何でも
言語の生産性を考えたとき、利用者が多いことも有利に働くよ

763 :デフォルトの名無しさん:2017/08/03(木) 22:44:10.59 ID:yhj86Quo.net
>>761
> 最近出てきた言語はどうなってる?当たり前に静的型の機能を持ってるだろ
最近出てきた言語はどうなってる?当たり前にメモリ管理機能を持ってるだろ

静的型のメリットをメモリ管理のデメリットが塗りつぶしてるんだよ、C++は

764 :デフォルトの名無しさん:2017/08/03(木) 22:48:11.18 ID:Wy5AX0em.net
Boehm GCでも使えばよいだろ

765 :デフォルトの名無しさん:2017/08/03(木) 22:51:34.98 ID:Wy5AX0em.net
それに周りを見渡してみればC++で書かれた
大規模中規模アプリが山のようにあるのに
本当に生産性が低いといえるのかどうなのか

766 :デフォルトの名無しさん:2017/08/03(木) 22:58:07.67 ID:6SHaFuae.net
生産性が高ければそこそこの「シェア」も自然とあるだろうが
そこそこの「シェア」があるからといって生産性が高いとは限らない

767 :デフォルトの名無しさん:2017/08/03(木) 23:01:51.14 ID:yhj86Quo.net
>>764
それだとC++のメリットないじゃん
Java使えばいいじゃん

768 :デフォルトの名無しさん:2017/08/03(木) 23:02:53.79 ID:yhj86Quo.net
>>765
スーパーハカーがよってたかって書いてるからね
残念ながら一般人はスーパーハカーではない

769 :デフォルトの名無しさん:2017/08/03(木) 23:08:35.02 ID:Wy5AX0em.net
>>766
>生産性が高ければそこそこの「シェア」も自然とあるだろうが
いいこと言うね、つまりRubyは生産性が無いってことだな

>>767
Java使えばよいよ
ただ、質問者?はC並みの速度って注文を付けてるからね
だったらC++だね、と
それでもRubyよりは生産性有るから問題ないだろう

>>768
君の思ってる一般人の基準がおかしいんじゃないの?

770 :デフォルトの名無しさん:2017/08/03(木) 23:10:08.67 ID:yhj86Quo.net
>>769
> 君の思ってる一般人の基準がおかしいんじゃないの?

君の方がおかしいよ
C++の方が生産性が高いかどうかアンケとってみた方がいいよ

771 :デフォルトの名無しさん:2017/08/03(木) 23:11:31.02 ID:9Ns8iW3Z.net
>>760
メモリ管理が面倒と思えるのは下手な証拠
C++ の RAII は手放せないのだが,他の言語でこの手の手法は使えないんだよね

772 :デフォルトの名無しさん:2017/08/03(木) 23:12:12.72 ID:yhj86Quo.net
第一、なんでそんな人間がRubyスレ覗いてるの?
君の意見だとRubyには見るべきところなんて一切ないはずなのにさ

別の言語を叩いてスッキリしたいのか、煽ってるだけなのかどっちかだよね
どちらにしても性格最悪だね

773 :デフォルトの名無しさん:2017/08/03(木) 23:17:01.30 ID:9Ns8iW3Z.net
>>772
そりゃ ruby を愛しているからだよ(ぼそ)

774 :デフォルトの名無しさん:2017/08/03(木) 23:20:08.59 ID:Wy5AX0em.net
>>771
実際問題、スマポもあるしな
問題になるのは循環参照がある場合だけだけど
でもそれは設計段階でわかることだから
片方をweak_ptrにすれば良いだけだしな
言うほど面倒ということもないし
世の中のC++アプリは普通に動いてるし
あと、短い間しか生きてない、常駐しないプログラムなら
メモリをいちいち開放する必要もないしな
OSに任せておけばよいだろうよ

>別の言語を叩いて
俺は別にC++に所属しているわけじゃないし
「別」も糞もない、俺にとってC++もRubyも一言語にすぎないよ

775 :デフォルトの名無しさん:2017/08/03(木) 23:21:25.18 ID:Wy5AX0em.net
だいぶズレてきてしまっているけど、もともとは
>Ruby並みに生産性が高く、C並みに高速で何でも作れる言語
ってお題だぞ
C++しか無いだろ

776 :デフォルトの名無しさん:2017/08/03(木) 23:24:01.10 ID:rbKeWnbz.net
C++の生産性が次世代C、C++を目指して開発されたD、Go、Rustなどを上回ることはないと断言して良いはず
C++の名を挙げるならその前にこれらを挙げるべきだ

777 :デフォルトの名無しさん:2017/08/03(木) 23:28:11.69 ID:Wy5AX0em.net
シェアが少なかったり使える人が少ない言語なんか選んじゃだめだよ
今は生産性の話をしているのに
だからC++なのさ

778 :デフォルトの名無しさん:2017/08/03(木) 23:28:54.47 ID:rbKeWnbz.net
シェアと生産性はなんの関係もないw

779 :デフォルトの名無しさん:2017/08/03(木) 23:30:28.02 ID:6SHaFuae.net
>>769
「生産性が高ければそこそこの「シェア」も自然とあるだろうが
そこそこの「シェア」があるからといって生産性が高いとは限らない」
という言説からどういう論理で
「つまりRubyは生産性が無いってことだな」
という結論が出るんですかね
これらから言えることは飽くまで「シェア」があることからは生産性に関して何も推論できないということ
肝心なところの説明がふわっとしてて独善的なんだよ

780 :デフォルトの名無しさん:2017/08/03(木) 23:31:12.11 ID:Wy5AX0em.net
特にD言語なんか挙げてる時点で何もわかってないね
あれはもうダメでしょ、誰がどう見ても
D言語の開発がいつ始まったか知らないけど
10〜15年ぐらい経ってこの状況なのに
これから先どう化けるってのよ
あんなので開発するのは生産性以前の問題だよ

781 :デフォルトの名無しさん:2017/08/03(木) 23:33:45.92 ID:yhj86Quo.net
結局何が言いたいんだろうね
Rubyなんて使えないってことですかね?
だとしたらそれはRubyスレで語ることですかね?

782 :デフォルトの名無しさん:2017/08/03(木) 23:38:14.16 ID:Wy5AX0em.net
>>779
自分で
>生産性が高ければそこそこの「シェア」も自然とあるだろう
って言ったんだろ
言い換えれば、シェアが無い言語は生産性が無いってことになるだろ?
分かりにくかったら会話風にして例を出してやろうか?
A:Rubyって生産性高いんですか?
B:生産性が高ければそこそこの「シェア」も自然とあるだろう(実際には無い)
A:あ、低いんだ・・・

>これらから言えることは飽くまで「シェア」があることからは生産性に関して何も推論できない
そういうことが言いたかったら
「生産性が高くてもシェアがあるとは限らないし
 シェアがあるからと言って生産性が高いとも限らない」
っていうべきじゃん
でも君の言ったのは
「生産性が高ければそこそこの「シェア」も自然とあるだろう」
だからね、お忘れなく

783 :デフォルトの名無しさん:2017/08/03(木) 23:39:38.23 ID:Wy5AX0em.net
>>781
>>775

784 :デフォルトの名無しさん:2017/08/03(木) 23:40:45.06 ID:yhj86Quo.net
>>783
そういう言語があるならRubyスレ覗かないよね?
なんで覗いてるの?

785 :デフォルトの名無しさん:2017/08/03(木) 23:42:53.41 ID:Wy5AX0em.net
Rubyの初心者だからだよ

786 :デフォルトの名無しさん:2017/08/03(木) 23:43:34.73 ID:rbKeWnbz.net
生産性は成果/コスト
C++を含むC系言語の生産性ってどのくらいなんだろうね
非標準ライブラリの信頼性検査コストや、デバッグのコスト、言語仕様に
起因する事故の損失や対応に要したコストを積み重ねたら悲惨なことになりそう

787 :デフォルトの名無しさん:2017/08/03(木) 23:46:00.36 ID:yhj86Quo.net
>>785
初心者がなぜRubyはC++より生産性が低いって断言してるの?
使ってもいないくせに断言できるわけないよね?

788 :デフォルトの名無しさん:2017/08/03(木) 23:52:39.73 ID:85r5WZPx.net
ぶっちゃけて言うと、メモリ管理がびみょいC++は生産性低いかも知らん



「特定の業種だと」C++がデフォルトって話にはなるわな
なに組み込んでんの? 的な意味で
ゲームもそうらしいが俺はゲーム業界知らんので

あとは単純な「慣れ」の問題もあるだろう
「慣れ」は個人の主観的感想
キチンとポジション明確にしてる人(例:「俺組み込みやってるんだけどさ」と前置きがあったといった人)
が言ったのでなければ無視すべき項目

とりあえず >> 768 の
> それでもRubyよりは生産性有るから問題ないだろう
という一文を見る限り、RubyじゃなくてC++スレに行くべき人ではないかなぁと判断している
RubyよりC++のほうが得意ならC++の話をC++スレでしているべきだ

789 :デフォルトの名無しさん:2017/08/03(木) 23:55:37.05 ID:6SHaFuae.net
「生産性が高ければ「シェア」もある」は
「「シェア」がある」が真ならこの命題は満たされてこれ以上『生産性に関して何も推論できない』でしょ
もちろんこのことから「シェア」がなければ生産性が高くないと言えるという指摘は正しい
しかしそれまでにC++はRubyより「シェア」があるとは言っているがRubyには「シェア」が無いとは言っていないのでふわっとしてて独善的と評しただけの話

790 :デフォルトの名無しさん:2017/08/03(木) 23:56:56.33 ID:85r5WZPx.net
うわー俺酔っぱい度高ぇな、もう寝るか

あと久々にRubyist Magagineみたら「RubyからPython蹴ったら統計処理の対応できなくね?」という
変態の記事があったので……ああ、うんRuby使いっぽいなって思った(小学生の日記風感想)
Pygmentsもそれで対応してるからな、どんだけ他人の成果を再利用するつもりだあいつら(いい意味で)

791 :デフォルトの名無しさん:2017/08/04(金) 00:01:33.92 ID:6xnwiv0x.net
「C++のほうがRubyより生産性高い ※個人の感想です」

とか書いておいたら誰もケチ付けなかったと思うがねえ
レスは全部「お前の中ではな」になるだろうが

792 :デフォルトの名無しさん:2017/08/04(金) 01:04:33.14 ID:2RnUdeBz.net
横に長い言語は生産性が高い。

793 :デフォルトの名無しさん:2017/08/04(金) 08:10:50.87 ID:NssrcL9O.net
つーか言語の評価に標準ではないライブラリを持ち込んでいる時点で頭のおかしい人だろ
これが許されるならRubyで数値計算ライブラリや画像処理ライブラリを利用した時の速度をもって
Rubyでも高速に演算できると主張できてしまう。そんなことを吠えている奴がいたらアホ丸出しw

794 :デフォルトの名無しさん:2017/08/04(金) 09:14:05.59 ID:PF1N3/4o.net
>>791
言語を比較する際に、生産性のみを論点にするのはナンセンスだ。
生産者は人間および組織であって、その人間、組織の言語習熟度が生産性に大きく影響するからだ。



言語を比較する際に、
1. 学習容易さ
2. 作ったアプリの実行効率(実行に要する、時間、バッテリーの効率性)
3. 多様なアプリを作れるか?
4. 大規模、多人数組織でアプリを構築容易か?

こういった観点で比較しないと!

795 :デフォルトの名無しさん:2017/08/04(金) 09:44:59.17 ID:ABZoxKZM.net
初心者なら明らかにrubyのが生産性高いな
自分でプログラミング用のツール組むようになってくるとどの言語も大差なくなってくる気がする
簡素に書けるとかはストレスやミスを減らすのには役立つけど
自分がフレームワーク使ったり作ったりして結局ビジネスロジック記述だけが最終的な仕事だと思ってるからかもしんない

796 :デフォルトの名無しさん:2017/08/04(金) 10:22:37.37 ID:PF1N3/4o.net
Ruby初心者が毎日
# sample.rb
foo 14
bar 15
boo { | val | val > 5 }
bar 18

こんなビジネスロジックを記述するDSLばかり仕事で書かされていても、
Rubyについて習熟する事にはならない。

このファイルsample.rbがconfig.instance_eval File.read sample.rb
されている事を知らないと、全く何やってるか?判らんだろうなぁ。

おまけに、configがどのクラスのインスタンスなのか?判らんと初心者は、
生産活動しているとは言え、それはロボットと同じだ。

Railsアプリなんかは、こんな感じじゃ無いのか?

797 :デフォルトの名無しさん:2017/08/04(金) 10:28:16.49 ID:PF1N3/4o.net
SinatraのDSLの例

#sinatra.rb
get '/' do
'how are you?'
end

get '/path/to' do
"this is [/path/to]"
end

get '/erb_template_page' do
erb :erb_template_page
end

こんなん、がWebサイトになるなんて、初心者は納得できるのだろうか?

798 :デフォルトの名無しさん:2017/08/04(金) 10:36:36.83 ID:ABZoxKZM.net
お前だってtcpとかhttpレスポンスヘッダいちいち書かないだろ
大事なのは理解してるか、何かあったとき対応できるか

799 :デフォルトの名無しさん:2017/08/04(金) 11:24:56.64 ID:zdzyWEfw.net
プログラミング好きな奴がWebに籠もりたがるのは、仕事でソフトウェア開発すれば気持ちがわかるよ
手の届かないところに自分のコードをリリースするということがどれほど忌々しいことか

800 :デフォルトの名無しさん:2017/08/04(金) 14:03:05.98 ID:7yKCvYxX.net
実行環境を制御できないこともね
たとえ仮想でもサーバごと納品できるのは(その点においてだけ)最高
JavaScript書かなくてもよくなればもっといいんだけど、まあ、そこは現実のお金との兼ね合いということで
うまくいっている部分があればあるほど我慢もききますわいな

801 :デフォルトの名無しさん:2017/08/04(金) 15:15:50.08 ID:Mgeezcro.net
これだけ反応があってモゴモゴしてるってことは図星だったってことだな
>少なくともRubyより生産性あるしな

802 :デフォルトの名無しさん:2017/08/04(金) 18:32:45.78 ID:szkrtuN4.net
>>801
アレはRuby初心者がRubyのことを知らないのに煽りで書いた文章だよ
本気にしちゃダメ

803 :デフォルトの名無しさん:2017/08/04(金) 19:57:38.99 ID:US5e0j3V.net
>>795
> どの言語も大差なくなってくる気がする

あーそれ分かる
意外とねぇ、言語ごとのあれこれってのはどうにでもなる
どうにでもならない部分は逆に言うとどの言語でも同じ
苦しむところはどこでも同じと思う

804 :デフォルトの名無しさん:2017/08/04(金) 21:02:33.10 ID:Mgeezcro.net
だとしたら実行速度が速い言語ほど優秀って事になりますね
1.5倍ぐらいなら全然許容範囲だろうけど
50倍〜100倍遅い言語は存在価値ありませんよね

805 :デフォルトの名無しさん:2017/08/04(金) 21:15:48.69 ID:szkrtuN4.net
>>804
はいはい、また君か

806 :デフォルトの名無しさん:2017/08/04(金) 21:42:15.51 ID:Jq4PnWl3.net
出来ることに大差ないっていう文言を生産性等に大差がないと臆することなく換言する図々しさよ

807 :デフォルトの名無しさん:2017/08/04(金) 21:47:51.74 ID:Mgeezcro.net
>初心者なら明らかにrubyのが生産性高いな
>自分でプログラミング用のツール組むようになってくるとどの言語も大差なくなってくる気がする

>あーそれ分かる
>意外とねぇ、言語ごとのあれこれってのはどうにでもなる

↑これは生産性についての話じゃないのかね?

808 :デフォルトの名無しさん:2017/08/04(金) 23:51:53.04 ID:US5e0j3V.net
日付変わる前に見たので一応レスしとく

>>807
ごめん
流れも読んでないし
さらに
切り取って部分的にレスしただけ
生産性とかについて特にコメントしたつもりはない
何に大差が無いかについては
実はなーんも考えてない

809 :デフォルトの名無しさん:2017/08/05(土) 00:01:37.19 ID:CDgy3mrn.net
>何に大差が無いかについては
>実はなーんも考えてない

そういうことにしないとRubyに良いところが何も無くなるからな
遅い、だけが残る

810 :デフォルトの名無しさん:2017/08/05(土) 06:58:32.21 ID:pAL2FsqO.net
速度はだいたいIOがボトルネック
なのでどの言語でも実行時間同じになってくる

一部のアプリでは速度が大事でアセンブラとかで最適化されてたりもするけど

811 :デフォルトの名無しさん:2017/08/05(土) 07:00:10.28 ID:pAL2FsqO.net
>>806
生産性を上げるツールやマクロ作れない初心者にはそうかもね

812 :デフォルトの名無しさん:2017/08/05(土) 08:01:57.22 ID:Zex8il51.net
漏れは、10言語ぐらい知っているけど、DSL を作りやすい、Ruby が圧倒的。
次いで、Groovy

vagrant, chef, SASS, Homebrew とか、ツールを作る際、
真っ先に、Ruby を候補に上げる

型安全性を高めるなら、Kotlin。
Kotlin = Java + Groovy

GC が無い、C/C++ などは、数年やってもバグるから、まともなアプリを作れない。
MISRA-C とか、安全にするには、学習コストが高い

派遣で行けば、分かるけど、数十人来ても、即さよならw
できる人が見つからない

デバイスとか、やる事が低レベルだから、
募集企業は、コンピューターリテラシーが必要って書いてる

コンピューターリテラシーって書いてる所は、要注意。
コンピューターのすべてを知ってる人の意味だから、
何百年勉強しても、分かることは、絶対にあり得ない

「Linux プログラミング・インタフェース」の著者は、
Linuxのman ページを書いてるけど、世界で唯一の、すべてを知る人

813 :デフォルトの名無しさん:2017/08/05(土) 08:10:39.26 ID:INBBpNiE.net
LLVMのruby実装も頓挫しちゃってるみたいね

814 :デフォルトの名無しさん:2017/08/05(土) 13:09:40.79 ID:ncTzjPCq.net
バージョンアップのたびに、互換性を心配しなくちゃいかんのが面倒。
Microsoftとかすこしはみならえ。

815 :デフォルトの名無しさん:2017/08/05(土) 13:35:28.94 ID:pAL2FsqO.net
>>812
別にツールは対象となる言語で作る必要はないけどね

816 :デフォルトの名無しさん:2017/08/05(土) 13:36:41.39 ID:CKOXuY3S.net
rubyも長期サポート対象となるバージョンを出せば多少はよくなるかな
と思ったけどエンタープライズエディションってのがあったっけ

817 :デフォルトの名無しさん:2017/08/05(土) 14:53:35.10 ID:wQFjSmwa.net
MatzをはじめとしたMRIの連中はドカタIT大嫌いだから望みはないよ
実際、意図的にドカタITとは馴染まないようにしてる面もあるみたいだし

818 :デフォルトの名無しさん:2017/08/06(日) 06:23:44.08 ID:HgYWswov.net
RubyでElectoronみたいなツールないの?
Rubyだとマルチプラットフォームで動くGUI付きのアプリ作りづらいわ

819 :デフォルトの名無しさん:2017/08/06(日) 06:44:56.72 ID:8894pkNA.net
> Rubyだとマルチプラットフォームで動くGUI付きのアプリ作りづらいわ
それはRubyの仕事ではないからもうちょっとツールキットに優しい言語使え、がいちおう答ではあるのだが

820 :デフォルトの名無しさん:2017/08/06(日) 08:55:36.45 ID:mR27ajyC.net
簡単な物ならJRuby+JavaFXでサクッと作れるよ

821 :デフォルトの名無しさん:2017/08/06(日) 09:28:36.41 ID:6pWMTSH/.net
クライアントJavaとかもう世間の認識では存在自体がウィルスだから

822 :デフォルトの名無しさん:2017/08/06(日) 13:21:15.86 ID:ImnldfPH.net
そりゃjavaアプレットの話じゃね?

823 :デフォルトの名無しさん:2017/08/06(日) 21:04:44.54 ID:kcWz1cTJ.net
マルチプラットフォームのGUIはだいたいクソ。
よっぽど本気のアプリでなければ。

824 :デフォルトの名無しさん:2017/08/06(日) 21:07:30.87 ID:fFJNwhsI.net
wxRubyは悪くない感じだが最近のRubyで使えるコンパイル済みバイナリが無かった気がする

825 :デフォルトの名無しさん:2017/08/07(月) 01:29:48.60 ID:A20vwfd9.net
SDLとRubyで良いじゃん
winでもlinuxでもmacでも可能で、
互換性もばりばりあるだろ

826 :デフォルトの名無しさん:2017/08/07(月) 19:48:29.80 ID:8DHQ/UcZ.net
起動速度が気にならないのであれば>>820もあり。起動時間はwxRubyの方が早いと思う

827 :デフォルトの名無しさん:2017/08/07(月) 22:27:29.16 ID:RsgpLAOY.net
Ruby/TKとかどうなんだろ?

828 :デフォルトの名無しさん:2017/08/08(火) 00:00:33.50 ID:3lFQ60WO.net
>>827
機能的に間に合うならあり。標準で使えるしwxRubyより安定していると思う

829 :デフォルトの名無しさん:2017/08/08(火) 00:05:21.54 ID:Nlx7hk6l.net
>>827
最近のバージョンで、とうとう標準ではなくなったんだろ。

830 :デフォルトの名無しさん:2017/08/08(火) 00:28:18.36 ID:m8GLf68F.net
まさに「Perlがあるのに何故Rubyを作るのですか?」状態だなww
ジョークのように思えて実は的を得ているのが面白い

831 :デフォルトの名無しさん:2017/08/08(火) 00:46:50.98 ID:qcoC0xc5.net
自分用のソフトだとGUI必要になること滅多にないな
画像や動画関係のソフトはともかく

832 :デフォルトの名無しさん:2017/08/08(火) 02:57:24.40 ID:HqOSCtNa.net
>>812
>世界で唯一の、すべてを知る人
いやいやそれは言い過ぎ
「Linuxのすべてを知る人」ならともかく

無名だけどメチャクチャ有能な奴が
グーグルとかにいっぱいるから

833 :デフォルトの名無しさん:2017/08/08(火) 03:03:21.71 ID:HqOSCtNa.net
>>814
Win32APIとか長持ちしてるからな
Javaもそうだが大企業が作ってる言語は
後方互換性がしっかりしてるよな

RubyみたいなLLは
行き当たりばったりでバージョンアップしてる

834 :デフォルトの名無しさん:2017/08/08(火) 03:06:05.95 ID:HqOSCtNa.net
>>819
>それはRubyの仕事ではない
オブジェクト指向はGUIで真価を発揮するので
むしろRuby本来の仕事だと思う

良いGUIツールキットがないのはRubyの弱点
まあRailsのWebアプリが主力なんだろうけど……

835 :デフォルトの名無しさん:2017/08/08(火) 03:07:45.02 ID:HqOSCtNa.net
>>827
Tkは見た目がショボイとかで
すごく不人気で標準から外された

でも個人的には学習量が少なくて
手軽に使えて良いと思う
Pythonとか他言語でも潰しが利くし

836 :デフォルトの名無しさん:2017/08/08(火) 03:09:41.42 ID:HqOSCtNa.net
>>831
ユーザの選択が複数必要なときにCLIだと困る
けっこうGUIが欲しいときはちょくちょくある

837 :デフォルトの名無しさん:2017/08/08(火) 07:36:09.02 ID:9yxzxkwB.net
配る時にGUIが欲しくなるんだよね

838 :デフォルトの名無しさん:2017/08/08(火) 09:42:20.79 ID:z6OjstMn.net
わざわざ起動引数を指定させたり説明したりミニスクリプト作ってメソッドを呼んでもらったりするよりかは
10行程度の記述でボタンやテキスト欄やスライダーなどを作りそこから指定できるようにしたほうが絶対便利で楽だろうということでRuby/Tkが採用されたのだが
フツーの人が期待するところのGUIアプリケーションというのはそういう機能重視の素朴なものではなくもっとリッチで精緻で高速描画なものであったのだというオチである
まあガチプログラマの考える添付GUIサポートライブラリなんてのはそんなもんだw
Tkもツールキット部分の見た目は頑張ってたのだがね

839 :デフォルトの名無しさん:2017/08/08(火) 11:42:08.06 ID:akdCGEty.net
>>833
× RubyみたいなLL
○ Ruby

いわゆるLLでも、Perl5は高い互換性を維持してる。
あっちはさすがの伝統と資産があるからな。

840 :デフォルトの名無しさん:2017/08/08(火) 13:01:36.82 ID:HqOSCtNa.net
でもPerlよりRubyの方が
読み書きしやすいから
もっぱらRuby使ってる

Rubyの長所は可読性が大きい

841 :デフォルトの名無しさん:2017/08/08(火) 18:16:05.55 ID:/HyVzMZd.net
短く書けることは正義
見通しの良さを生かしてDRYを徹底し
その場限りの言語を作って構造を要約する
省力に拘るオタク遊びをするだけで
最も読みやすいプログラムが勝手にできるし
読みやすいからコメント入れる作業もほぼ不用

842 :デフォルトの名無しさん:2017/08/08(火) 19:54:43.96 ID:9yxzxkwB.net
昔wxRubyでGUIアプリを作った時はGUI関係のコードが7〜8割いっていた気がする。GUIって効率悪いよね

843 :デフォルトの名無しさん:2017/08/08(火) 20:44:41.18 ID:HqOSCtNa.net
プログラマ側はCLIの方が作りやすいけど
一般ユーザが使いにくいので
商業アプリではほぼGUI必須だね

844 :デフォルトの名無しさん:2017/08/08(火) 23:08:29.20 ID:OEX1Zqjt.net
>>830
ほんと、PerlがあればRubyなんていらないよな
多様性なんて害悪だよな

845 :デフォルトの名無しさん:2017/08/08(火) 23:38:22.50 ID:m8GLf68F.net
Rubyがもっと素晴らしいものだったらよかったんだよ
例えば今風の最新の静的型の機能を持ったスクリプト言語とか
もし当時あったら珍しかったんじゃないかな
https://ja.wikipedia.org/wiki/Standard_Template_Library
↑はC++のテンプレートの話だが、「歴史」の項目が面白い
Matzが一所懸命Ruby作ってた裏では天才たちがこんなことしてたんだな
動的型のような将来性のない(今となっては負の遺産)もの作ってもしょうがないだろ
まさにPerlがあるのに何故Rubyを作るのですか?だな
今後どうなるのかわからないけど、もう、どうにもならないでしょ
本人も静的型は入れたくない(というか入れれない)ってゲロってるし
今後Rubyの時代は絶対来ない、コボルみたいな存在になるんだよ

846 :デフォルトの名無しさん:2017/08/08(火) 23:44:09.88 ID:m8GLf68F.net
当時JavaもC++のテンプレートを馬鹿にしていて
あんなものはオブジェクト指向じゃない
オブジェクト指向言語のJavaにあんなものは必要ない
って言ってたんだけど
結局似たようなのを導入したよね
やっぱコンパイル時に型チェックが入るのはメリット有るんだよ

847 :デフォルトの名無しさん:2017/08/08(火) 23:44:13.51 ID:qcoC0xc5.net
必要なやつがお実装すりゃいい

848 :デフォルトの名無しさん:2017/08/08(火) 23:52:56.74 ID:OEX1Zqjt.net
>>845
意味が通じなかったかwww
ごwめwんwねwww

849 :デフォルトの名無しさん:2017/08/09(水) 00:04:27.70 ID:hEgnFYnk.net
君が多様性があったほうが良いと思っているのは承知だけど
それならそれで、もっと良いものじゃないと意味ないだろ、ということだ

850 :デフォルトの名無しさん:2017/08/09(水) 00:09:22.53 ID:hEgnFYnk.net
Perlを増築してオブジェクト指向を導入する方向で頑張ってもよかったんだよ
そしたら過去のPerlの資産も使えるからね
だけどそれが気に入らないから一から作ったんなら
もっと最善を尽くさなきゃ作る意味ないでしょ
特に最初の一歩は重要で、Rubyは動的型にしてしまったから
今現在にっちもさっちもいかなくなったわけ

851 :デフォルトの名無しさん:2017/08/09(水) 00:52:16.87 ID:zBzPXqGw.net
Perlは覚えようとして挫折してRubyに流れ着いたのは自分だけか
Perlはパッと見て何をやっているのか全然判らない

852 :デフォルトの名無しさん:2017/08/09(水) 01:14:55.85 ID:v3IDtueA.net
>>849
俺が思ってる事に勝手に限定してんじゃねえよ
Perlが標榜するものの一部だろうが
それに人間性に問題があるのか知性に問題があるのか知らねえけど、
Perl6ならオブジェクト指向プログラミングが可能だし変数を型で縛れるぞ

853 :デフォルトの名無しさん:2017/08/09(水) 01:19:24.43 ID:v3IDtueA.net
>>851
俺は一度Ruby-1.6シリーズを触ったけどその時は合わなくてPerlに行った
PerlでCGIゲームを書いたけど結局1年半でRubyに流れ着いた
その時はRuby-1.8.1か2になってたかな
それからは個人利用だとRubyが中心になってる
決定的となったのはRuby Hacking Guideの存在だったな
Web版で済ませましたスンマセン

854 :デフォルトの名無しさん:2017/08/09(水) 08:17:40.99 ID:/WbeABcG.net
Rubyが動的言語なのは必然
何も分かってない

影響を受けたPerl、Lisp、Smalltalkが動的言語
利用形態が近いLAMPのP言語のPerl、Python、PHPが動的言語

855 :デフォルトの名無しさん:2017/08/09(水) 09:35:00.76 ID:ocU/hJiZ.net
>>853
>Ruby Hacking Guide
これって、今でもWeb版が閲覧できね。
知らんかった。

856 :デフォルトの名無しさん:2017/08/09(水) 18:40:53.88 ID:C8BEXwt3.net
Win7(32bit)上のRubyInstaller2からwin32oleを使ってデータベースに接続しようとしてるんだけど
ODBCデータソースのOpenで例外が出てしまう。
エラーメッセージは↓
システムエラーコード126 指定されたモジュールが見つかりません (〜)
カッコ内はODBCドライバのフルパスが書かれているけどファイルは間違いなくそこにある。
試しにActiveScriptRubyでやってみたらうまく繋がる。
これってどんな原因が考えられるでしょうか?

857 :デフォルトの名無しさん:2017/08/09(水) 18:58:08.43 ID:hEgnFYnk.net
>>854
ダメなものの真似する意味あるの?
Pythonは動的型にしたおかげで苦しんだよね

858 :デフォルトの名無しさん:2017/08/09(水) 21:47:11.29 ID:v3IDtueA.net
>>856
不確かな答えになるけど
ODBCドライバが依存しているライブラリが読み込めないから?
環境変数のPATHを確認してみると違いがあるのかな
ruby -e 'p ENV["PATH"]'

あとはActionScriptRubyのruby.exeがあるディレクトリに移動してRubyInstaller2のruby.exeを起動してみるとか

859 :デフォルトの名無しさん:2017/08/09(水) 21:53:39.57 ID:v3IDtueA.net
>>858の追記
ググったらかなりの数がヒットしたから解決できるかもよ
https://www.google.com/search?q=ODBC+システムエラーコード126+指定されたモジュールが見つかりません

860 :デフォルトの名無しさん:2017/08/10(木) 00:54:17.37 ID:CnaRda9Q.net
>>857
別に苦しんでないけど?

861 :デフォルトの名無しさん:2017/08/10(木) 03:49:56.14 ID:HGihyxQL.net
今現在も苦しんでる途中といってよいんじゃないかな
初めから静的型を導入してれば何でもなかったのにな
Pythonのこの様子をみてmarzは
Rubyに静的型を入れるのを止めたわけで
どのみち行くも留まるも地獄
初めから静的型にしておくのが正解だったわけだな

動的型っていったい何のために有るんだろうな
開発速度も実行速度も遅いんじゃ意味わからないよな
処理系を用意するのが楽ってこと以外はメリットが見当たらない

862 :デフォルトの名無しさん:2017/08/10(木) 04:03:30.21 ID:HGihyxQL.net
JSも非常に苦労が絶えないよね
まず使いにくいから静的型のTypeScriptとか作られたり
ブラウザのJSエンジンも速度上げるためにキチガイじみたことやってるよね
なしてこんなことにって感じ
動的型って世の中を混乱させて無駄なエネルギーを使わすために有るんかね

863 :デフォルトの名無しさん:2017/08/10(木) 04:08:47.85 ID:2C7jZkmh.net
スレ違い

864 :デフォルトの名無しさん:2017/08/10(木) 06:58:53.68 ID:1rmPYDcN.net
スレが伸びてると思ったらまた例の粘着荒しか
こんなのを生み出したこいつの親に製造責任とって欲しいよ、ホント

win32oleの話題が出てるけど、
ファイルダイアログ扱うCOMってOSのメインバージョン、xpとかvistaとか7とか違っていても共通でいけるの?
それともメインバージョン毎に異なるCOM使わないといけないの?

865 :デフォルトの名無しさん:2017/08/10(木) 07:05:51.34 ID:1rmPYDcN.net
メインじゃなくてメジャーだったな

866 :デフォルトの名無しさん:2017/08/10(木) 07:36:31.27 ID:CnaRda9Q.net
>>861
だから苦しんでないけど?

867 :デフォルトの名無しさん:2017/08/10(木) 09:29:44.68 ID:HGihyxQL.net
>>866
TypeScriptって凄い名前でしょ
なんたって「Type」Scriptだもんな
言いたいことが名前に表れてる
何に対するアンチテーゼなのか明確
これが今後の常識

868 :デフォルトの名無しさん:2017/08/10(木) 09:36:29.21 ID:stL+geP9.net
>>856
"mfc71.dll"、"msvcp71.dll"、"msvcr71.dll"の3つのファイルを入手してOSのシステムディレクトリ"c:¥windows¥system32"に保存すればよい。

869 :デフォルトの名無しさん:2017/08/10(木) 09:40:32.90 ID:stL+geP9.net
VC++ 2010(32bit版)、VC++ 2012(32bit版、64bit版)、VC++2013(32bit版、64bit版)の計5つのランタイムの内、1つをinstallすれば解決できるかも。

まあ、この手のエラーは、ランタイム地獄とか、DLL Hellとかで検索!

870 :デフォルトの名無しさん:2017/08/11(金) 16:38:50.24 ID:XzR2MkFB.net
プログラム初心者がrubyを1から学ぶ上でおすすめの本とおすすめのサイト・ブログを教えてほしいです。
ちなみにルビィの冒険はすでに持ってます。
というかルビィの冒険を読んで興味持ちました。

871 :デフォルトの名無しさん:2017/08/11(金) 17:43:52.20 ID:rRCrIO51.net
ルビィの冒険

はじめてのRuby

パーフェクトRuby

Rubyベストプラクティス
EffectiveRuby
メタプログラミングRuby1版or2版
Rubyによるデザインパターン

リファクタリングRubyエディション
Rubyのしくみ。

ウェブアプリ方面
パーフェクトRubyonRails
RubyonRails5アプリケーション・プログラミング
Docker教科書
JapaScript本格入門第二版
入門Git
GitHub実践入門
SQL 第2版 ゼロからはじめるデータベース操作
達人に学ぶ SQL徹底指南書
SQLアンチパターン

872 :デフォルトの名無しさん:2017/08/11(金) 17:57:19.54 ID:yo7J1RVM.net
JapaScriptってなんか国産っぽい

873 :デフォルトの名無しさん:2017/08/11(金) 18:27:13.22 ID:XzR2MkFB.net
>>871
沢山ありがとうございます!
ちなみに発売日が古い本でも問題はないでしょうか?
昔と今との変更点とかで

874 :デフォルトの名無しさん:2017/08/11(金) 18:35:22.99 ID:7nyPWQh8.net
>>873
残念ながら大有り
そこに気づけただけでも君はバカではないようだ

875 :デフォルトの名無しさん:2017/08/11(金) 20:51:31.14 ID:rRCrIO51.net
>>873
基礎的なことを学んでいくなら問題はない、

しかしJavaScript等は最近大幅なテコ入れがあった。
だから不安なら、ここ最近1年以内の本を買ったほうがいい。

またそもそも基礎的な事、基本的な事なら10年以内の本でも
名著であり続ける。だがその数は少ない。

876 :デフォルトの名無しさん:2017/08/11(金) 23:43:16.47 ID:iboA2f8X.net
>>870
たのしいRubyが定番の入門書

877 :デフォルトの名無しさん:2017/08/12(土) 03:50:23.72 ID:oUZskOr3.net
Rubyの言語仕様をある程度覚えたら、
次にリファクタリングRubyエディションを読むと良い
コードの最も筋の良い書き進め方を会得できるし、一般的なプログラミング作法の本質を学べる
コードをバリバリ書けるようになるし、Rubyを便利に使いこなす理解も深まる

878 :デフォルトの名無しさん:2017/08/12(土) 05:52:30.53 ID:w+TtGEkw.net
ary = ["a", "b"]

ary[0] = ary[0] + "x"
puts ary[0] #=> ax

ary[1] =+ "y"
puts ary[1] #=> y

上なら、文字列が連結されて、
下なら、b が消えて、上書きになるのは、なぜ?

文字列の、=+ 演算子は意味が異なるの?

879 :877:2017/08/12(土) 06:04:00.61 ID:w+TtGEkw.net
ary = ["a", "b"]

ary[0] = ary[0] + "x"

# ary[1] =+ "y"
ary[1] += "y"

puts ary

表示
ax
by

自己レス
+= だったか。
=+ と逆に書いていたw

でも、コンパイルエラーが出ない

880 :デフォルトの名無しさん:2017/08/12(土) 06:10:46.47 ID:YomJun0W.net
よっぽど仮想学習的な環境でない限りNoMethodErrorが出るよ
irb> a = %w(a b)
irb> a[1] =+ "y"
NoMethodError: undefined method `+@' for "y":String

881 :デフォルトの名無しさん:2017/08/12(土) 08:30:27.74 ID:4WztSMRy.net
Ruby2.3からString#+@(immutableならば複製)が追加されている。
https://docs.ruby-lang.org/ja/2.3.0/class/String.html#I_--2B--40

882 :877:2017/08/12(土) 08:33:50.03 ID:w+TtGEkw.net
paiza.IO で実行したけど、コンパイルエラーにならなかった

883 :デフォルトの名無しさん:2017/08/12(土) 08:47:10.82 ID:4WztSMRy.net
>>882
paizaは2.4系だから。あと細かいけど、インタプリタだからコンパイルエラーと呼ぶのは違う気がする

884 :デフォルトの名無しさん:2017/08/12(土) 11:48:52.04 ID:CSnAjTr3.net
文字列のimmutable化による変更のひとつとして、Stringクラスに単項演算子+、-が追加されてる。
ttp://qiita.com/iwamot/items/2ddf8de09d5dbcad2df9

こういう事情らしい。
http://d.hatena.ne.jp/ku-ma-me/touch/20151004
Rubyはやっぱりクソ。互換性に対する配慮が甘い。

885 :デフォルトの名無しさん:2017/08/12(土) 11:53:23.96 ID:CSnAjTr3.net
>>883
言いたいことはわかるが、コンパイルエラーでも問題ないと思う。
実行前の文法エラーなのであれば、あきらかに事前のコンパイル段階のエラーなんだから。

886 :デフォルトの名無しさん:2017/08/12(土) 11:59:10.11 ID:CSnAjTr3.net
あ、>>885に追記。
インタプリタどうこうの点についてのつもりなので、念のため。
881がコンパイルエラーといってるのはおかしいと思うよ。

887 :デフォルトの名無しさん:2017/08/12(土) 12:02:12.46 ID:45XD5hPK.net
>>884
誰かと思えば遠藤さんか
それなら説得力あるな

888 :デフォルトの名無しさん:2017/08/12(土) 12:33:20.77 ID:4WztSMRy.net
>>884
+@, -@の追加は別にいいけど3.0以降のデフォルトimmutable化はさすがに勘弁して欲しいなあ、Railsの声が強すぎる……

>>885
RubyのNoMethodError(というかException全般)は実行を試みて初めて出されるから実行時のエラーだよ。(ランタイムエラーと呼びたいがRuntimeErrorクラスと混同しかねないので悩ましい)
endが足りないとかのSyntax Errorとは別物だと思うけど。こっちは実行前の構文解析。

889 :デフォルトの名無しさん:2017/08/12(土) 13:33:01.18 ID:K4TPp3Ad.net
>3.0以降のデフォルトimmutable化
定数は自動的にfreezeするくらいの対応で良かったな

890 :デフォルトの名無しさん:2017/08/12(土) 13:41:07.20 ID:zBhrUX+c.net
だからそれじゃRailsさんは満足しないんだって

891 :デフォルトの名無しさん:2017/08/12(土) 13:46:16.09 ID:K4TPp3Ad.net
Rails(無理)が通ればRuby(道理)が引っ込む

892 :デフォルトの名無しさん:2017/08/12(土) 13:57:56.00 ID:pblAmUa6.net
RoRのためのrubyをフォークしろって事だな

893 :デフォルトの名無しさん:2017/08/12(土) 14:01:19.65 ID:zBhrUX+c.net
Railsという単一の言語でいいと思うのよ実際

894 :デフォルトの名無しさん:2017/08/12(土) 14:25:04.02 ID:zLZ79VVH.net
Railsさんを追い出したら島根のお役所へのPRに使えるようなRuby採用事例がほとんど無くなって金貰えなくなるからね
Chefみたいなインフラ系の事例を出されても役所の人「ハァ?」だろうし

895 :デフォルトの名無しさん:2017/08/12(土) 14:51:06.74 ID:4WztSMRy.net
RoR上でのみデフォルトでimmutable、ってのも立派な"Rail"じゃないのかなあ。
どうせマジックコメントで切り替えられるようにするんだったらわざわざRuby全体のデフォルトを変えんでもいいでしょうに……

896 :デフォルトの名無しさん:2017/08/12(土) 15:19:12.43 ID:K4TPp3Ad.net
>>893
よくねーよ

Rubyで作れるのは
Webアプリだけじゃねーから

Railsみたいなフレームワークを
言語仕様にしちゃうと窮屈になる

897 :デフォルトの名無しさん:2017/08/12(土) 15:26:53.07 ID:zLZ79VVH.net
>>896
他に何に使われていようが、金を産んでるのもMRIにコミットしてる開発者が作ってるのも事実上Webアプリだけだから
他は無視しても全く問題ないのよ、残念なことに

898 :デフォルトの名無しさん:2017/08/12(土) 15:28:23.95 ID:K4TPp3Ad.net
>>897
そんな発想だから
機械学習とかWeb以外の
ライブラリが充実してるPythonに
国際的に負けてしまう

899 :デフォルトの名無しさん:2017/08/12(土) 15:29:12.97 ID:MaFRFCaQ.net
>>896
知らんよ
RailsがRailsで何を作ろうが関知するものではない

900 :デフォルトの名無しさん:2017/08/12(土) 23:34:01.47 ID:QBhBJkcV.net
>>871
俺的今日のNo1、カキコ

901 :デフォルトの名無しさん:2017/08/13(日) 00:56:22.58 ID:SYaWjJhn.net
Rubyが、ドンドン、Elixir に近づいていく

>>888
そう言えば、「メタプログラミング Ruby」にも、
NoMethodError を上書きするな、って言う格言があった

902 :デフォルトの名無しさん:2017/08/13(日) 01:10:49.40 ID:PA7iDDOj.net
これも結局速度のために手動で変な最適化をプログラマに課してるだけのことだよな
こーゆーノリはC言語時代にはよくあったと思うけど
なんせ当時のCPUは今から考えるとものすごく遅かったからなぁ
だけど今時だとCPUも速いしコンパイラの最適化も凄いから
特に何も考えなくても十分に速いので、変な最適化に技巧を凝らすより
読みやすいコード書けってのが主流だよな
だけどRubyはメジャー言語より平気で50倍とか遅いし
コンパイラの最適化も糞なので手動で最適化するんだなwww

3.0GHzの最新CPUを使ってても50〜100MHzのCPU相当の速度になるし
加えてコンパイラの最適化も糞で手動で最適化とか
まるで20年ぐらい前の感じだな

動的型でプログラミングが楽になるはずが
静的な型チェックもなければ速度が遅くて手動で最適化とか
本当に動的型は素晴らしいですね

903 :デフォルトの名無しさん:2017/08/13(日) 01:15:14.97 ID:WE0t0sIJ.net
スクリプトで手間暇かけて凝ったアルゴリズムで計算量減らすより
C++でブルートフォースしちゃった方がてっとり早くて速かったりするのはよくある話
スクリプト向きのタスクか否かを感覚的に見抜けることは大切

904 :デフォルトの名無しさん:2017/08/13(日) 01:20:36.73 ID:PA7iDDOj.net
今もう2017年だよな
Rubyはこんな最適化のために
今更言語仕様を変えるだとか変えないとかで盛り上がってて
何なんだろうな
これから先もずっとこんな調子なのかね
元の実行速度が遅いから速くするための最適化のために言語仕様をどうのこうの

今はforループを自動で並列展開してマルチスレッドとかSIMDとかで
コンパイラに頑張ってもらって速度を稼ごうとか
そういうこと言ってる時代なのに
やってることがあまりにも原始的というかなんというか
技術的に何も面白くないし、触ってて本当に楽しいんだろうか?
よく考えられた静的型のシステムがあるわけでもないし
化石言語だな
ありとあらゆることをプログラマに丸投げ

905 :デフォルトの名無しさん:2017/08/13(日) 01:31:38.50 ID:PA7iDDOj.net
ありとあらゆることが悪い方に作用している様は本当にすごいよ
動的型のおかげでそもそも遅そうなのにろくに最適化もかからないから鈍足
遅すぎるのでプログラマが手動で最適化してください
加えて静的な型チェックもしないのでテストするなりなんなり
プログラマが頑張ってください
動的型って何なんだろうね

906 :デフォルトの名無しさん:2017/08/13(日) 02:53:31.36 ID:9GyPh5fY.net
専ブラを使っている人は次の正規表現をNGIDとして突っ込んでおきましょう
\b(ppLsekVC|qMkdrUOQ|IBgoqo2I|AOJFjP\+S|bC2KM4MS|Wy5AX0em|m8GLf68F|hEgnFYnk|HGihyxQL|PA7iDDOj)\b

907 :デフォルトの名無しさん:2017/08/13(日) 04:14:05.84 ID:SQfD9dn9.net
ワッチョイじゃないからあんまり意味ないんだよなぁ
1行読んで心のNGフィルターに突っ込んでるから問題ないけど

908 :デフォルトの名無しさん:2017/08/13(日) 14:33:04.78 ID:bHAx/aO4.net
ま〜た涌いてるのか
はよー親に製造責任とってもらえよ

909 :デフォルトの名無しさん:2017/08/17(木) 15:09:10.89 ID:ESEriUZI.net
趣味で作られた「オレ様の考える最強言語」にちょっと高望みしすぎじゃないの とか言っちゃダメかな

910 :デフォルトの名無しさん:2017/08/17(木) 15:16:46.98 ID:+kyvImyc.net
初心者スレで暴れまわって機能不全に陥れるとは
Rubyは完全に澱んでるな
Pythonコミュニティとすっかり差が開いてしまった

人気ランキング1位
Pythonは今のうちに習得すべき?『スラスラわかるPython』著者・岩崎さんとPyCon JP理事の寺田さんが語る:CodeZine(コードジン)
http://codezine.jp/article/detail/10329

911 :デフォルトの名無しさん:2017/08/17(木) 18:26:41.54 ID:iwOtRZLz.net
>>909
いわゆるスクリプト言語の多くがそうなんだよなあ。

912 :デフォルトの名無しさん:2017/08/17(木) 20:41:32.26 ID:ENaOxomf.net
コマンドライン引数が表示できません。
OSはwin10、rubyのバージョンは2.4.1-2-x64です。

コードはprint_arg_1.rbという名前で、
#!c:/ruby/bin/ruby
print ARGV[0]

コマンドプロンプトには
c:\ruby\samples>print_arg_1.rb A

と入れてみるのですが、何も(エラーも)表示されません。
Aと表示させるつもりなのですが・・・。
ちなみに、powershellに入力した場合はAと表示できます。

913 :デフォルトの名無しさん:2017/08/17(木) 20:44:36.46 ID:KIRXYCO4.net
c:\ruby\samples>print_arg_1.rb A
のAの前のスペースが全角だからじゃね

914 :デフォルトの名無しさん:2017/08/17(木) 21:09:45.66 ID:ENaOxomf.net
>>913
すいません、そこは半角でした
半角で入れてみても、うまくいきません

915 :デフォルトの名無しさん:2017/08/17(木) 21:12:53.32 ID:KIRXYCO4.net
>>914
ruby -e "p ARGV[0]" A
ってやったら
"A"
って出力される?

916 :デフォルトの名無しさん:2017/08/17(木) 21:16:37.74 ID:KIRXYCO4.net
ruby hoge.rb A
頭にrubyをつけてみては

917 :デフォルトの名無しさん:2017/08/17(木) 21:28:46.60 ID:ENaOxomf.net
>>916

コードを
#!c:/ruby/bin/ruby
p ARGV[0]
と書き換えるということですか?

やってみたところ、nilとでました

918 :デフォルトの名無しさん:2017/08/17(木) 21:50:18.63 ID:eXIxbYLq.net
powershellではどう入力したの

919 :デフォルトの名無しさん:2017/08/17(木) 22:00:16.19 ID:ENaOxomf.net
>>918
.\print_arg_1.rb A
と入力しました。
"A"と出力されます。

920 :デフォルトの名無しさん:2017/08/17(木) 22:07:40.53 ID:eXIxbYLq.net
謎すぎてわからん

921 :デフォルトの名無しさん:2017/08/17(木) 22:18:52.38 ID:CKP1LJFf.net
コマンドプロンプトからwhere ruby
多分rubyがバッチファイル

922 :デフォルトの名無しさん:2017/08/17(木) 23:48:20.77 ID:+Rt8Y1Dv.net
バッチファイルだとしても引数渡さないとかアホやろ

923 :デフォルトの名無しさん:2017/08/18(金) 00:04:08.29 ID:pRy4OxRt.net
windowsの関連付けのバグじゃないのかな

924 :デフォルトの名無しさん:2017/08/18(金) 01:34:08.78 ID:0sQWyUaj.net
以下、そういうときの正確な状況を確認する方法。

次のコマンドラインを実行して、関連付けを確認。
assoc .rb

その出力結果を引数にしてftypeを実行して、実行されるコマンドラインを確認。

925 :デフォルトの名無しさん:2017/08/18(金) 05:42:06.33 ID:kayGF/0k.net
powershellで実行してるものと、コマンドプロンプトで実行してるものが別ファイルである可能性くらいしか無いのでは

926 :デフォルトの名無しさん:2017/08/18(金) 09:35:17.44 ID:dcEfP3Wf.net
rubyでOpenglいじってるけどコード書き換えやすくて楽しすぎ
他にも楽しそうなもの無い?

927 :デフォルトの名無しさん:2017/08/18(金) 10:03:46.81 ID:5/NGjmsA.net
Sequel4でSQL server上の日本語てんこ盛りのテーブルに接続できるか試しているんですが
日本語以前にシンボルを使ったアクセスだと全部upcaseされているっぽくて
大文字小文字混在の識別名?が指定できなくて詰んでます。

これどこで設定すればいいんでしょうか?

928 :デフォルトの名無しさん:2017/08/18(金) 11:21:40.62 ID:MkY1nhvU.net
.\print_arg_1.rb A
.\ は、カレントフォルダだから、相対パス付き

c:\ で始まっていたら、絶対パス

print_arg_1.rb A
これは、パスではない。
print_arg_1.rb というコマンドになるから、そんなコマンドは存在しない

基本は、実行したいスクリプトファイルのあるフォルダへ、
cd で移動して、そのフォルダで、.\ を付けて、
.\print_arg_1.rb A
とする

#!c:/ruby/bin/ruby
Windows でも、シバンが使えるのか。
パス区切り文字は、/ でも認識できるのか

929 :デフォルトの名無しさん:2017/08/18(金) 12:56:54.66 ID:TX/e1x6q.net
>>926
OpenCVとか?

930 :デフォルトの名無しさん:2017/08/18(金) 13:02:16.70 ID:TX/e1x6q.net
>>928
> Windows でも、シバンが使えるのか。

使えるともそうでもないともいえる。
シェルではなく、Ruby自身が解釈する。

https://docs.ruby-lang.org/ja/latest/doc/spec=2frubycmd.html#shebang

931 :デフォルトの名無しさん:2017/08/18(金) 16:02:30.99 ID:eIpnBeVf.net
しまねω
http://www3.nhk.or.jp/news/html/20170818/K10011103391_1708181154_1708181155_01_02.jpg

932 :デフォルトの名無しさん:2017/08/19(土) 00:44:19.65 ID:drv+oAyy.net
rbのファイルタイプを常に
ruby.exeで開くように設定したんだろう
そのときにたぶん"%1"ぐらいは設定されてるのだろうけど

933 :デフォルトの名無しさん:2017/08/19(土) 01:00:58.21 ID:WAJdahb2.net
pythonのインストーラーが尋ねる2通りの選択
pathに設定するかwindowsシステムにアプリケーションを登録(推奨)みたいなやつがあって謎だったが
今意味が分かった

934 :デフォルトの名無しさん:2017/08/19(土) 12:53:30.00 ID:9KU7ntuJ.net
環境変数PATH をいじくったら,

すべてのコマンドの起動に影響するから、大変

935 :デフォルトの名無しさん:2017/08/19(土) 13:10:45.58 ID:s/Tmv27m.net
WindowsでのRubyプログラムで
一番大変なのは環境構築だからな
環境変数がどうこうはよく調べておくように

936 :デフォルトの名無しさん:2017/08/19(土) 13:47:01.70 ID:9KU7ntuJ.net
pyenv, rbenv など、仮想環境を使うと、
環境変数PATH の先頭に追加するから、極めて危険

〜python2
〜python3;〜python2

例えば、python コマンドの実行ファイルが、
〜python2 ではなく、先に、〜python3 のパスで見つかるから

そのコマンドが、どの実行ファイルを起動しているのか、くれぐれも注意せよ

937 :デフォルトの名無しさん:2017/08/19(土) 15:34:54.77 ID:vQyZjPpv.net
ruby って -K で文字コード指定して実行出来るみたいだけど
バージョン指定して実行するようなオプションってあったっけ

938 :デフォルトの名無しさん:2017/08/19(土) 15:37:33.84 ID:shqQNwwD.net
>>937
ない

939 :デフォルトの名無しさん:2017/08/20(日) 20:41:41.88 ID:UK9Z84hT.net
version指定というか、ruby処理系を指定しての実行なら可能なはず
上ででてきた#!c:/ruby/bin/rubyを応用して、
version毎にディレクトリ作ってパス指定

940 :デフォルトの名無しさん:2017/08/20(日) 21:16:31.03 ID:RkJWvq6Y.net
rbenv 入れろ

941 :926:2017/08/21(月) 10:32:12.71 ID:b3IxGKL2.net
突き止めました
エクステンションを導入して変換を無効化すればよかったです。

DB.extension :identifier_mangling
DB.identifier_input_method = nil
DB.identifier_output_method = nil

942 :926:2017/08/21(月) 15:46:43.43 ID:b3IxGKL2.net
間抜けなことしてました。
ODBC使うのにsequelが自前でやってると思ったらruby-odbc使ってた。
だからodbc-utf8を先にrequireしないとutf8が通らなくて日本語以前だった。
ほかにもfreeTDSでutf-8だと指定効かないとか気がつかなかった。

bundlerが依存関係全部処理してたから気がつかなかった…

943 :デフォルトの名無しさん:2017/08/21(月) 19:28:02.56 ID:QB5Pvnbo.net
おつかれい

944 :926:2017/08/21(月) 21:57:25.45 ID:b3IxGKL2.net
ありがと。

さらに問題発覚。というかsequelの手抜きなんだけど
likeを発行するときにsql server向けの互換レイヤはLatin1_General_*を強制的に付け足す。
ハードコードされてて切り替えできない。とりあえずlib/sequel/adapters/shared/mssql.rbにパッチ当てたけど
gitみてもこの辺対処されて無いっぽい。5になれば期待できそうな感じはあるけど。

あーやっとやっつけ集計バッチをこれで置換できるかもしれん
あとはsinatraとhamlとsassか…

945 :926:2017/08/22(火) 11:19:06.95 ID:BnyIu5Np.net
いろいろいじった結果
FreeBSD 11.1R
ruby 2.4.0
sequel 4.48.0
ruby-odbc 0.99998
unixODBC 2.3.4
freeTDS 1.00.131,1
Microsoft SQL Server 2008 R2
の組み合わせで日本語てんこ盛りのデータベースを読むは問題なさそう。作ったり書いたりはこれからだけど基本集計だけだし。
結局utf8周りの設定は一切合切消してもrequire 'odbc-utf8'があれば普通に日本語通ってしまった。
数年前に試したときにうまくいかなかったのも多分これのせいだったんだろう。

946 :デフォルトの名無しさん:2017/08/23(水) 08:24:54.57 ID:UQYl7YfQ.net
そういば、1.8かどうか忘れたけど、
Arrayの派生クラス同士に+をつかって、新しい派生クラスのインスタンス出力しようとしたら、
派生元のArrayのインスタンスが出力されることがあったな

長い間気づかずどつぼにハマッてたのを思いだした

947 :デフォルトの名無しさん:2017/08/23(水) 08:33:32.73 ID:UQYl7YfQ.net
Arrayの派生クラス同士に

Arrayの派生クラスのインスタンス同士に

948 :デフォルトの名無しさん:2017/08/23(水) 14:36:30.50 ID:PKj56klS.net
たいがいの言語でそうなっちゃうでしょ。
まあしかたないね。

949 :デフォルトの名無しさん:2017/08/23(水) 19:49:57.47 ID:XbrvJbom.net
>たいがいの言語でそうなっちゃうでしょ。

そんなことないよ
静的型だったならどこかでコンパイルエラーになって気づけた可能性もあるよ

950 :デフォルトの名無しさん:2017/08/23(水) 20:17:43.31 ID:UQYl7YfQ.net
まーた涌きやがったかコイツ

まぁRubyだからこそ直接Arrayクラスのメソッドをself.classをつかったコードに書きえて、
派生先のクラスでも問題なく動かすようにできるわけだけど
当時もそうやって楽に対応できたし、今のverなら書き換える必要も無く対応してるんじゃないか?
確認してないけど

951 :デフォルトの名無しさん:2017/08/24(木) 04:24:49.42 ID:tqCPVr7b.net
このような実例があると
動的型にすると無駄な時間が増えることが
初心者にも分かりやすくてよいですね

952 :デフォルトの名無しさん:2017/08/24(木) 07:03:14.83 ID:gO5USKuu.net
普通、配列のような基本的なクラスからは、クラスを派生させない

継承を使うのは、自分で作ったクラスか、
継承されることが前提のクラスだけ

一般的には、継承より包含を使う

包含の方が、継承よりも柔軟だから、
配列のような基本的なクラスには、合っている

953 :デフォルトの名無しさん:2017/08/24(木) 12:21:31.80 ID:NrLz+nwx.net
DSLに何言ってんだか
Rubyの書きやすさ書き換えやすさは他の言語にない重要なポイントのひとつだろ

954 :デフォルトの名無しさん:2017/08/24(木) 12:32:10.15 ID:5a7RKQDl.net
>>953
意味不

955 :デフォルトの名無しさん:2017/08/24(木) 14:28:41.04 ID:gfjynZsV.net
>>949
静的型とか動的型とか全く関係ない

>>946
マニュアルくらい読もうぜ
Array#+ は self + other -> Array
https://docs.ruby-lang.org/ja/2.4.0/method/Array/i/=2b.html

pryでshow-doc, show-sourceすればすぐ分かる内容
show-source Array#+

>>952
言いたいことはわかるがArrayを派生したい場合だってある
Rubyはそういうことを制限しない言語
そのかわりに相応の力量が求められる

956 :デフォルトの名無しさん:2017/08/24(木) 14:56:19.91 ID:gfjynZsV.net
Arrayから直接派生させるよりも、
EnumerableやForwardable使うほうが普通だとは思うけどね

957 :デフォルトの名無しさん:2017/08/24(木) 15:12:33.89 ID:+u51O4Tc.net
結果収束的には「可能ではあるが極力行わないようになる」こと自体は間違いはない
なんでもかんでもメソッドチェーンにしないのと似たような感覚
ただし(古い表現だが)足元を弾痕穴だらけにしないとわからない感覚なので、未経験者に最初から指示するようなものでもないな
それはそれで「本当は何もできないやらないわかっていない」机上の人だろう

958 :デフォルトの名無しさん:2017/08/24(木) 15:38:18.44 ID:NrLz+nwx.net
DSLに何言ってんだか
Rubyの書きやすさ書き換えやすさは他の言語にない重要なポイントのひとつだろ

959 :デフォルトの名無しさん:2017/08/24(木) 16:33:57.27 ID:gfjynZsV.net
>>957
Arrayを継承したいと考えた理由次第だろ

モンキーパッチ、リファインメント、継承、コンポジション
それぞれメリットデメリットあるんだから初心者であっても
そのトレードオフが理解して自分で判断できるようにならないとダメだよね?

基本クラスであってもどういう方式を選ぶのがいいのかは状況次第だから
背景理由を無視して、一つの選択肢を採用したほうがいいっていうのはちょっとっ極端に感じるよ

960 :デフォルトの名無しさん:2017/08/24(木) 20:44:43.22 ID:tqCPVr7b0.net
🐒

961 :デフォルトの名無しさん:2017/08/24(木) 20:49:02.11 ID:tqCPVr7b.net
>>955
仮にArrayを継承させたとして
何かのメソッドで思っていた型と違う型が返ってきたとして
静的型ならコンパイルエラーになって即気づける可能性が高いよね
せっかく>>946がRubyが動的型のせいで
> 長い間気づかずどつぼにハマッてたのを思いだした
って告白してくれてるのに

あるメソッドが、どのような仕様になってるかなんて
そんなものはどのような仕様にでも実装できてしまうわけで
(そう書けばそう動く、というだけ)
大事なのは、勘違いしたとき、間違ったときに、直ぐに気づけるかどうか

だからArrayを継承すべきじゃないとかってのは話の本質じゃなくて
長い間気づかずドツボにハマってたのは何故かって部分なんだよ

962 :デフォルトの名無しさん:2017/08/24(木) 20:50:35.58 ID:tqCPVr7b.net
俺みたいなののほうがマトモなこと言ってるのがもう不思議なぐらいだろ?

963 :デフォルトの名無しさん:2017/08/24(木) 20:50:57.98 ID:tqCPVr7b.net
それぐらいダメってことなんだよ、言語もコミュニティーも

964 :デフォルトの名無しさん:2017/08/24(木) 21:04:10.31 ID:sQWhHmgZ.net
はいはいNGNG

965 :デフォルトの名無しさん:2017/08/24(木) 21:37:49.84 ID:gfjynZsV.net
>>961
言語を使う側の能力の問題を
全部言語のせいにしちゃだめだよ

var result = myArray1 + myArray2

↑みたいに型推論使ってたら似たような事起きるだろ
それは型推論自体がダメだからなのか? 型推論使用禁止にする?
使う道具のメリットデメリットをちゃんと理解して使いこなせてないからだろ

静的型にメリットがあるのはわかるが結局それはトレードオフなんだよ
何を選択するかの問題

966 :デフォルトの名無しさん:2017/08/24(木) 21:46:32.32 ID:tqCPVr7b.net
その場合でもresultをどこかに渡したり
継承で拡張したメソッドを使ったり
実用的なことをしようとした瞬間にコンパイルエラーになる
お前はそのresultを何も使わずにそのまま捨てるのか?
結局、現実的な部分が全くないんだよね
机上の空論、それがRuby

967 :デフォルトの名無しさん:2017/08/24(木) 21:51:04.51 ID:tqCPVr7b.net
しかも俺は
>気づける可能性が高いよね
とも書いてるわけで
現実的にはどこかの段階でコンパイルエラーになる可能性が高い、と

968 :デフォルトの名無しさん:2017/08/24(木) 21:55:21.82 ID:Z79NM4TL.net
スレッドの進行を妨害するのは止めてください
みんなが迷惑を被っています

969 :デフォルトの名無しさん:2017/08/24(木) 21:56:03.09 ID:yIhxd10m.net
コンパイルが通ってもその後テストを走らせることになるけどな

970 :デフォルトの名無しさん:2017/08/24(木) 22:02:02.88 ID:gfjynZsV.net
>>966
オーバーライドしたメソッド呼び出してもコンパイルエラーにならないだろ
静的型でも同じこと十分起こりえるよ

運良くコンパイルエラーで拾えるケースだけ上げて
静的型使うべきなんていう主張はナンセンス

力量が低いやつは静的型選んだほうがいいよっていうアドバイスなら
まだ理解できるけどね

971 :デフォルトの名無しさん:2017/08/24(木) 22:05:10.57 ID:Z79NM4TL.net
再三にわたり伝えましたが、もう一度
スレッドの進行を妨害するのは止めてください
みんなが迷惑を被っています

972 :デフォルトの名無しさん:2017/08/24(木) 22:10:19.62 ID:tqCPVr7b.net
起こりえるが、可能性は低いわけだ
運良くコンパイルエラーで拾える、というより
運悪くコンパイルエラーで拾えないケースもありうる、ということ

運が良くないとコンパイルエラーで拾えないんなら
静的型言語はこんなに普及してないし、もてはやされてもない
現実が全く見えていないんだね

973 :デフォルトの名無しさん:2017/08/24(木) 22:10:38.73 ID:kEm5qs8H.net
>>968
LLスレで相手にされなくなったからな
隔離スレの自覚持って欲しいもんだ

974 :デフォルトの名無しさん:2017/08/24(木) 22:13:45.33 ID:gfjynZsV.net
>>971
「だから動的型はダメなんだ」とか思っちゃう初心者が出ないように
きちんと反論しとくことは重要じゃねーの?

>再三にわたり伝えましたが、
って>>968の1回だけじゃんww

975 :デフォルトの名無しさん:2017/08/24(木) 22:18:05.33 ID:lIOBscyk.net
>>974
私たちにとってはなんら重要ではありません
お帰りください

976 :デフォルトの名無しさん:2017/08/24(木) 22:19:22.21 ID:gfjynZsV.net
>>972
型推論禁止すれば運悪くコンパイルエラーで拾えないケースも潰せるね

977 :デフォルトの名無しさん:2017/08/24(木) 22:20:59.16 ID:gfjynZsV.net
>>975
なんでお前が勝手に決めてんの?

978 :デフォルトの名無しさん:2017/08/24(木) 22:23:28.89 ID:lIOBscyk.net
>>977
あなたにはもうそれを判断できるだけの客観的知性が残っていないからです

979 :デフォルトの名無しさん:2017/08/24(木) 22:26:09.58 ID:yIhxd10m.net
>>970
力量が低いだけに留まらず、現実逃避する頭の悪い知ったかぶりのお馬鹿さんなら
あなたが話しかけてるそこにいますよ

980 :デフォルトの名無しさん:2017/08/24(木) 22:39:55.72 ID:tqCPVr7b.net
俺が言うのもなんだけど
ID:Z79NM4TLやID:lIOBscykのが正解だと思うよ
「そんなことは初めから分かってて承知の上で使っているのだから
 放っておいてくれ」
って所でしょ
欠点を認められずに使ってる方が異常

981 :デフォルトの名無しさん:2017/08/24(木) 23:09:32.94 ID:Z79NM4TL.net
スレッドの進行を妨害するのは止めてください
みんなが迷惑を被っています
スレッドの趣旨が分からないなら1を読んで下さい
これ以上妨害を続ける場合は、過去の妨害行為時のログを元に弁護士との相談の上、
措置を取ります

982 :デフォルトの名無しさん:2017/08/24(木) 23:11:07.39 ID:h4EzWrOx.net
自分が何をしてるか全く理解できないんだろうな
レスがつくことそのものに興奮してここがどこかも判断できていない

貴方達そのものを我々は必要としていない
貴方達が書き込んだそのものを私たちは歓迎しない
我々私たちの望みはひとつだけ、二度とここに来るな

983 :デフォルトの名無しさん:2017/08/24(木) 23:27:57.47 ID:tqCPVr7b.net
何か映画とかで、スラム街とか田舎町の住人に言われそうなセリフ

984 :デフォルトの名無しさん:2017/08/24(木) 23:38:06.01 ID:Z79NM4TL.net
スレッドの進行を妨害するのは止めてください
みんなが迷惑を被っています
スレッドの趣旨が分からないなら1を読んで下さい
これ以上妨害を続ける場合は、過去の妨害行為時のログを元に弁護士との相談の上、
措置を取ります

985 :デフォルトの名無しさん:2017/08/24(木) 23:39:36.79 ID:c/yv4qcw.net
過去のgem配布サイト復活しないかな

986 :デフォルトの名無しさん:2017/08/25(金) 05:58:03.30 ID:ZShOFEd5.net
「Effective Ruby」項目21にも書いてある

コアクラスを継承するな。委譲・包含(Forwardable)を使え。
is-a よりも、has-a を使え

たいていの言語では、String型なども継承できない。
final 指定されてる

初心者は、コレクションを継承したがるが、アンチパターン。
継承すれば、バグるだけ

たいていの「Effective 何々」とか、デザインパターンの本にも、書いてある

987 :デフォルトの名無しさん:2017/08/25(金) 06:40:42.06 ID:aRYPlL4U.net
>>982
例の人は自分が来るせいで誰も居なくなったんだってわかってないからな
コミュニティは衰退したのではなく特定の人物の書き込みにより破壊されたのだ

988 :デフォルトの名無しさん:2017/08/25(金) 07:08:25.93 ID:w/d6Mddl.net
Arrayのような多くの人が慣れ親しんだインタフェースを提供したいと考えてるんだが、
それ自体が慣れで運用してしまうから問題、ということなのか?
極端な話myaddとかにした方がいいのか

989 :デフォルトの名無しさん:2017/08/25(金) 07:24:38.55 ID:w/d6Mddl.net
>>986
アンチパターン名は?

990 :デフォルトの名無しさん:2017/08/25(金) 10:40:58.89 ID:ZShOFEd5.net
JavaScript の、prototype.js なども、コアクラスを上書きして、挙動が変わるから、
皆から、うっとうしがられてる

とにかく、バグるから、個人で、コアクラスを修正してはいけない

やってもいいのは、Date クラスに、便利な関数を追加したり、
Rails とか、使用説明書・メンテナンスもしっかりしている、
有名なフレームワークだけ

991 :デフォルトの名無しさん:2017/08/25(金) 11:07:17.19 ID:8cxOpMBd.net
↑こいつはRuby畑の人間じゃないな

992 :デフォルトの名無しさん:2017/08/25(金) 11:27:54.95 ID:BwHFndLq.net
>>986
項目21の根拠はなんでしょう?

1. 継承を使うとなるとSuper Classの詳細を知る必要がある。
2. 移譲なら使いたい機能をつまみ食いすれば良いので楽。

こう言う事でしょうかねぇ?

993 :985:2017/08/25(金) 12:26:40.27 ID:ZShOFEd5.net
例えば、親のArray から、子のDerivedArray を派生させて、
reverse を呼んでも、子クラスを返さず、親クラスを返してしまう

全メソッドを、派生クラスに対応させるのが、無理だから

委譲で、Forwardable モジュールの、def_delegators で、
使うメソッドだけ、宣言する方が簡単

漏れも、10言語以上、数十冊の本を読んでるけど、
配列など、コアクラスを継承した、ソースコードは見た事がないし、
たいていの言語で、継承よりも委譲を使うように書いてある

そういう論文も多い

994 :デフォルトの名無しさん:2017/08/25(金) 12:36:03.24 ID:BwHFndLq.net
>>993
ところで、論文はどのJournalから?

995 :985:2017/08/25(金) 13:01:27.87 ID:ZShOFEd5.net
「c++ 継承 委譲」で検索!

ほとんどの論文が、継承よりも委譲

996 :デフォルトの名無しさん:2017/08/25(金) 15:26:58.12 ID:W3qddKKH.net
クロージャーつかおう

997 :デフォルトの名無しさん:2017/08/25(金) 15:28:23.63 ID:sLUvaIRs.net
a=[[1,2],3,4,5,[6,7],8,[9,10],[11,12],[13,14]]
b=[[1,3,4,5,6,8,9,11,13],[2,3,4,5,7,8,10,12,14]]
aの配列からbの配列を作り出すにはどの様にしたらいいでしょう?

998 :デフォルトの名無しさん:2017/08/25(金) 15:32:56.84 ID:BwHFndLq.net
>>997
>a=[[1,2],3,4,5,[6,7],8,[9,10],[11,12],[13,14]]
まずは、
a=[[1,2],[3, 3],[4,4],[5,5],[6,7],8,[9,10],[11,12],[13,14]]
を作る。

999 :デフォルトの名無しさん:2017/08/25(金) 15:36:12.98 ID:BwHFndLq.net
ar = []
a.each do |e|
if !e.instance_of?(Array) then
ar << [e, e]
else
ar << e
end

まずはこんな感じ!

1000 :デフォルトの名無しさん:2017/08/25(金) 15:50:59.00 ID:4MOWRfGQ.net
>>997
b = a.each_with_object([[],[]]) {|(x, y), acc| acc[0] << x; acc[1] << (y || x) }

1001 :デフォルトの名無しさん:2017/08/25(金) 16:00:09.35 ID:HsL9LVKJ.net
次スレ
Ruby 初心者スレッド Part 61
https://mevius.2ch.net/test/read.cgi/tech/1503644351/

1002 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1002
308 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★