Ruby 初心者スレッド Part 62
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2017/11/24(金) 00:35:29.31ID:rLZHdQ3Q
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 61
https://mevius.5ch.net/test/read.cgi/tech/1503644351/

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

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

逆引きRuby
http://www.namaraii.com/rubytips/
0002デフォルトの名無しさん
垢版 |
2017/11/24(金) 00:36:08.95ID:rLZHdQ3Q
たのしいRuby 第5版、2016

Effective Ruby、2015

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

Rubyのしくみ、2014

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

リファクタリング:Rubyエディション、2010
0003デフォルトの名無しさん
垢版 |
2017/11/24(金) 01:29:56.00ID:rLZHdQ3Q
開発環境

RDE
Windows用IDE
https://ja.osdn.net/projects/sfnet_rubyde/
以下、RDEの使用説明
http://rubyde.sourceforge.net/hiki/ja/FrontPage.html

サクラエディタ
Windows用高機能エディタ
https://ja.osdn.net/projects/sfnet_sakura-editor/
以下、ruby用設定の説明
http://supportdoc.net/support-sakura/ruby.html

Emacs
GNUの高機能エディタ
以下、EmacsでのRuby開発について
https://qiita.com/hiconyan/items/582e27128decfe9d249e

VSCode
マルチOSに対応したマイクロソフト社製のソースコードエディタ
https://code.visualstudio.com/download
0004デフォルトの名無しさん
垢版 |
2017/11/24(金) 01:46:47.26ID:rLZHdQ3Q
RDEのデバッグ機能を使う場合、設定においてデバッグオプションを「-r debug2」から「-r debug」と書き換えて、
ruby付属のdebug.rbを使うようにすること
RDE付属のdebug2.rbはruby1.8用のスクリプトのため、現在のrubyのversionには使えません
0007デフォルトの名無しさん
垢版 |
2017/11/26(日) 20:55:02.73ID:zBIai8/a
前スレにも書いたけど中級者上級者向けのRuby本が必要だと思う
それもruby界隈で一般化された題材じゃなくてまだ広く知れ渡っていない専門的な題材を扱った本を
Openglとか分散VMとか大規模演算rubyとか他にもこういう題材は結構あると思う
0008デフォルトの名無しさん
垢版 |
2017/11/26(日) 21:55:29.31ID:OhY/q4lK
現段階で専門的な題材の書籍を出しても赤字になるだけで厳しいと思う
だったらまだ一般的なプログラミング雑誌で連載する方が見込みはあるんじゃないかなあ
あとは教育機関・研究機関における浸透度合いを高めるところも攻めた方がいい
それと会社のお偉いさんはRubyの案件をさらに増やして

とりあえず日本で有人月面着陸を計画してるからmrubyも載せようぜ
0009デフォルトの名無しさん
垢版 |
2017/11/26(日) 22:38:23.64ID:e8MWK5Ug
初心者向け書籍で裾野を広げまくったからニーズはあるだろ
いわば教科書を読んで基礎を学んで、それらを試せる応用分野をみんな探している所
Rubyと+αの専門性の高いものを出せば、目的はないけど何か読みたいって層にはドンピシャで来る
web系はRailsやWEBrickでこれからも出るし、科学計算や3Dとか教養シリーズみたいな感じで出せば全然いける
0010デフォルトの名無しさん
垢版 |
2017/11/26(日) 22:48:35.39ID:LT7w1DpA
データ分析系は
Pythonが流行してるから
そっちで本出すだろ

Rubyだとライブラリと
速度がネックになるから
0011デフォルトの名無しさん
垢版 |
2017/11/26(日) 23:21:25.25ID:azT4+Y0L
>>9
cadをやってるから、物理演算とかシミュレート系をだして欲しい
あと、組込み向けにソースコンパイルやらRuby-C間の解説とか
0012デフォルトの名無しさん
垢版 |
2017/11/26(日) 23:44:18.39ID:e8MWK5Ug
>>10
学んだRubyで何かする本が求められていると言っているのに、
何故Pythonが出てくるんだ?
0013デフォルトの名無しさん
垢版 |
2017/11/27(月) 00:33:15.55ID:o0pIkOSz
rubyコンとかRuby勉強会とかどんな感じ?
マシンスペック的にはどんなのもっていけばいい?
0014デフォルトの名無しさん
垢版 |
2017/11/27(月) 01:59:56.02ID:x+zk8UEy
開発マシンの、CPU は i7、メモリは最低でも 8GB(16GB が望ましい)
Windows 10 pro
WSL・仮想OS で、Linux

Mac の人も多い
0015デフォルトの名無しさん
垢版 |
2017/11/27(月) 07:55:32.25ID:gt4bCosJ
>>12
Rubyはrails以外に使い道無いから他の事したいなら他の言語覚えろよ
0016デフォルトの名無しさん
垢版 |
2017/11/27(月) 12:11:21.22ID:W0wAPtjw
>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
0017デフォルトの名無しさん
垢版 |
2017/11/27(月) 13:14:45.58ID:o0pIkOSz
>>15
荒らし行為をやり続けてPythonスレから追い出されたの?
ここじゃ病気は治せないから病院に行ったほうがいいよ

>>14
やっぱり結構なマシンを持って行くんだね
ARMプロセッサ積んだボードにrubyをクロスコンパイルして入れた自作のマシンとか考えてたけど、
低スペックでもWinノートPCを買っておいた方が良いか
0018デフォルトの名無しさん
垢版 |
2017/11/27(月) 18:50:34.20ID:agUtcdpR
最近の荒らしはやり方が雑だよな
殆ど単発の自演しか涌かないし
出て来ても「はいはい、荒らしてますよ〜」みたいな嫌々やらされてる感しかない
0019デフォルトの名無しさん
垢版 |
2017/11/27(月) 19:23:05.97ID:x+zk8UEy
Ruby は、Linux 必須だから、WSL・仮想OS ・Docker などが必須

2つのOS を動かすから、メモリは最大限積む必要があり、
CPU はi7 にすると、16GB まで積める。
i3, i5 だと、8GBまでかな?

それと、たいていのプログラム言語の本の動作条件が、Windows Pro

一般的に、開発用PC は、高スペック。
画面も、フルHD 以上
0021デフォルトの名無しさん
垢版 |
2017/11/27(月) 21:44:22.84ID:agUtcdpR
自演も中途半端
もうただ単に定型文を打つだけで満足してて、
荒れたかどうかも気にしなくなってるんだよな
夏休みの宿題やらされてる子供かよ
0022デフォルトの名無しさん
垢版 |
2017/11/27(月) 22:51:47.97ID:rAG/Bhsm
「また自演した」「このスレには自演が居るから」「このスレには自演がいます!いますよ!ほら!」としか書くことがなくなったんだろうなと思う
本当に他人から貰ったレスというのは自分がいちばんよくわかってて、そしてそれは本レスにおいても自演指摘レスにおいてもおそらく極めて少ない
住人の冷めた態度が効いてると表現することはできなくもないが
0023デフォルトの名無しさん
垢版 |
2017/11/27(月) 23:02:26.98ID:SI4QCwP5
静的型マンセーの粘着がいるのは確かだが、何でもかんでも自演自演言ってるやつもちょっと病的だよな
ちょっとネガティブな発言しただけなのに荒らしの自演認定されたことあるし
0024デフォルトの名無しさん
垢版 |
2017/11/27(月) 23:32:26.87ID:W0wAPtjw
上の人は荒らしだからスルーでお願いします

>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
0026デフォルトの名無しさん
垢版 |
2017/11/27(月) 23:53:05.49ID:rAG/Bhsm
>>23
スレ住人が過去に何度か同調したことがあるのだが、
そのせいで自分が こ れ 以 降 何 を し て も 正義で多数派で「こちら側」に居れると勘違いしてしまったらしいのだ
いつか自分が「あちら側」に追いやられていたことに気づく日がくればいいと思う
0027デフォルトの名無しさん
垢版 |
2017/11/28(火) 00:02:17.19ID:1+J/qigr
そうやって嫌々やってるからまたボロを出す
22:51:47.97
23:02:26.98
こんだけ時間くっつけて発言すればバカにさえ自演だってわかる
しっかり頭を働かせろ

ゆとり世代か何かか?
0028デフォルトの名無しさん
垢版 |
2017/11/28(火) 00:03:55.96ID:qPKDeu2+
だから、まあ、我々はふたつの荒らしを並行同時にあしらいながら進まねばならなくなっている
「やってはいけないこと」「さわってはいけないもの」は倍以上に増え、発言の困難性は以前より遥かに増した
難儀なことだ
0029デフォルトの名無しさん
垢版 |
2017/11/28(火) 00:07:19.20ID:TcvLN2I4
完動する事を確認しているDLライブラリ使ったスクリプトを、思いつきでrubyに付属のdebug.rbで診たら、
dllの関数呼び出しの所で`unknown symbol "関数名"' (RuntimeError)がでてなかなかブレークポイントまで進めません
一部の止まるエラーを抑えたり、スクリプト上の一定部分だけデバッガー無効化したりすることは可能ですか?
0030デフォルトの名無しさん
垢版 |
2017/11/28(火) 00:39:00.64ID:yd/D5jJi
>>28は俺らを辟易させることが目的らしい
でもそれって俺等がいつも通りに荒らしをバカにしながら会話し続けたらどうするの?
いつまでもあの騙せそうにない自演でレスを稼いでくれる?
0032デフォルトの名無しさん
垢版 |
2017/11/29(水) 04:08:52.30ID:zX4fkY5X
debug.rbはkernelのset_trace_funcで登録したprocを、デバッギーの行毎に呼び出してる
だから呼び出されたくない行は登録するproc内でif文を使って分岐させてやれば良い

やってることはそれ程難しくないし、debug.rbに10行程度書き加えれば出来るよ
0033デフォルトの名無しさん
垢版 |
2017/11/29(水) 18:32:32.11ID:MwOAAXQr
>>29
DEBUGGER__クラス内の一番下段の下記を、
stdout.printf "Debug.rb\n"
stdout.printf "Emacs support available.\n\n"
RubyVM::InstructionSequence.compile_option = {
trace_instruction: true
}
set_trace_func proc { |event, file, line, id, binding, klass, *rest|
DEBUGGER__.context.trace_func event, file, line, id, binding, klass
}
0034デフォルトの名無しさん
垢版 |
2017/11/29(水) 18:44:22.06ID:MwOAAXQr
下のに書き換え、
@@ignore_ = {}
def DEBUGGER__.ignore_(ignorefl = @@ignore_)
return @@ignore_ = ignorefl
end
stdout.printf "Debug.rb\n"
stdout.printf "Emacs support available.\n\n"
RubyVM::InstructionSequence.compile_option = {:trace_instruction => true} if RUBY_VERSION > "1.9.0"
set_trace_func proc { |event, file, line, id, binding, klass, *rest|
tb = caller(0);last_i = "";i_name = "";i_num = 0;
last_i = tb[-1] if tb.size > 0
last_i.dup.each_line(":"){ |i_line|
if i_line .to_i > 0 || (i_line.chop).to_i > 0
break if i_name.size < 1
i_num = (i_line[-1] == ":" ? (i_line.chop).to_i : i_line .to_i)
i_name = i_name.chop
break
else
i_name += i_line
end
}
if i_num > 0 && DEBUGGER__.ignore_.include?(i_name) && DEBUGGER__.ignore_[i_name].include?(i_num)
# debug_skip
else
DEBUGGER__.context.trace_func event, file, line, id, binding, klass
end
}
0035デフォルトの名無しさん
垢版 |
2017/11/29(水) 18:51:55.61ID:MwOAAXQr
デバッグするソースファイルの最初の方に以下を書き加え、debugをスキップしたいファイルをignorefに、行をRangeかArrayでignorelにいれる
if defined? DEBUGGER__
ignoref = __FILE__
ignorel = []# 27..48
DEBUGGER__.ignore_[ignoref] = ignorel
end

debugのスクリプトそのものを書き換えるんじゃなくて、
複製して別名をつけたものを書き換えて使ったほうが良いよ
0036デフォルトの名無しさん
垢版 |
2017/11/30(木) 01:37:59.97ID:XY2yKXS8
Rubyでopenglのシェーダーを扱った本、技術評論社辺りから出してくれないかな
こういうのこそRuby向けだよ
0037デフォルトの名無しさん
垢版 |
2017/11/30(木) 13:11:26.74ID:dNsMGYhb
OpenGL自体のgemとかはそろってるから、
ミクミク互換やXファイル互換のソースを添付して出せば売れそうだけどな
0038デフォルトの名無しさん
垢版 |
2017/12/01(金) 01:22:55.57ID:UulhXT9P
# frozen_string_literal: false
ソースの最初に上のように書かれてるのを見つけたけどどいう意味?
他にもこういうのあるの?
0039デフォルトの名無しさん
垢版 |
2017/12/01(金) 04:44:53.26ID:zZy3ktkC
>>38
ruby-3以降はリテラル文字列がfrozenされることになるけど、
そうさせないためのマジックコメントでリテラル文字列の破壊的動作が許されるようにしている

ruby-2.3以降であればruby --enable frozen-string-literal <ファイル名>でrubyを起動することで、
リテラル文字列をfrozenされた状態とする挙動を試すことができる

# これまでの挙動
$ ruby -e 'p "A".downcase!'
"a"

# ruby-3以降のリテラル文字列の挙動を試す (ruby-2.3以降)
$ ruby --enable frozen-string-literal -e 'p "A".downcase!'
-e:1:in `downcase!': can't modify frozen String (RuntimeError)
from -e:1:in `<main>'
0041デフォルトの名無しさん
垢版 |
2017/12/02(土) 12:25:58.45ID:S9pj625T
二項演算子型のシンタックスシュガーって場合によっては意図したとおりに動いてくれないんだね

Math::PI %1 #=> unknown type of %string
Math::PI *1 #=> undefined method `PI' for Math:Module
Math::PI /1 #=> unterminated regexp meets end of file
Math::PI >1 #=> true

pi = Math::PI
pi %1 #=> unknown type of %string
pi *1 #=> 3.141592653589793
pi /1 #=> 3.141592653589793
pi >1 #=> true
0042デフォルトの名無しさん
垢版 |
2017/12/02(土) 12:28:39.60ID:S9pj625T
pi %1 #=> unknown type of %string
じゃなくて
pi %1 #=> 0.14159265358979312
だった
定数だとうまくいかない模様
0045デフォルトの名無しさん
垢版 |
2017/12/02(土) 13:50:50.68ID:XRYOyseR
今年もクリスマスイブに何か発表ある?
0046デフォルトの名無しさん
垢版 |
2017/12/03(日) 03:01:00.42ID:IGABZHMD
>>39
さんくす
0048デフォルトの名無しさん
垢版 |
2017/12/05(火) 03:46:28.43ID:XHolF61u
Rubyの型システムは早ければ2020年のオリンピック頃にお目見えか
どんな物になるんだろう
0049デフォルトの名無しさん
垢版 |
2017/12/05(火) 16:37:09.15ID:tba/yJ/+
Rが楽しくて勝手にやってるんだが
rubyはどうやって勉強すればいいんだ
>>2の自分に合うのを買えばいいのかな?
0050デフォルトの名無しさん
垢版 |
2017/12/05(火) 16:48:30.13ID:lVtWIMct
他言語の経験あるなら
プロを目指す人のためのRuby入門という入門書が新しくておすすめ(出たばかり)
0051デフォルトの名無しさん
垢版 |
2017/12/05(火) 17:04:59.24ID:04pPds2q
本は買った後、
分からない事があれば、ここで環境とコード示して聞けば良いよ
誰かが答えてくれるから
0052デフォルトの名無しさん
垢版 |
2017/12/05(火) 23:05:42.39ID:bv7GN3wK
たのしいRuby 第5版、2016

R を知ってるなら、これも読む。
みんなのPython 第4版、2017

この2冊は、表裏一体。
ただし、先に「たのしい」から読むこと
0054デフォルトの名無しさん
垢版 |
2017/12/06(水) 04:53:57.53ID:j5o9izkC
>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
0056デフォルトの名無しさん
垢版 |
2017/12/06(水) 21:44:56.35ID:sdwtDf9T
RubyでOpenGLの書籍も来い
0059デフォルトの名無しさん
垢版 |
2017/12/06(水) 21:57:47.76ID:j5o9izkC
3Dモデリングなら速度要らなさそう
あと可視化の分野辺り


というか、ゲームじゃなければ速度いらないだろ
0060デフォルトの名無しさん
垢版 |
2017/12/06(水) 22:11:16.54ID:sdwtDf9T
3Dモデルというか、OpenGL学ぶのに最適だよRubyは
教材として出せば良いのに
商材として出すならMMDやXといった各種3Dモデル形式に対応した3DモデリングソフトをRubyで書いてCD付録として書籍につければ良い
そのRubyコード目当てに買う人は多いだろうし、Rubyで書いてるから書き換えやすく、改造もしやすい
0061デフォルトの名無しさん
垢版 |
2017/12/06(水) 23:53:59.61ID:9Cl2Q0EY
残念ながらそれはない
Rubyはまともに使うつもりないなら学習のオーバーヘッドが大きすぎる
今ならJavaScriptとWebGLでいいよ
0062デフォルトの名無しさん
垢版 |
2017/12/07(木) 02:09:30.99ID:5ii6i5Is
おまえがネガキャンしても無意味だ
0063デフォルトの名無しさん
垢版 |
2017/12/07(木) 02:49:15.45ID:mIJMiEiv
openglか
確かラッパーのgemがいくつかあるんだよな
初期のでglVertexPointerやらglColorPointerやら使って三角形を描画するとかやった記憶がある
今のgemはVBOやシェーダは使えるのか?
0064デフォルトの名無しさん
垢版 |
2017/12/07(木) 03:59:25.76ID:GxHPFgmw
3Dモデラーソフトのソースが付くなら欲しい
ゼロから書くのは面倒だけど既にある程度完成しているなら、
自分で足りない所だけ追加して楽できる
0065デフォルトの名無しさん
垢版 |
2017/12/07(木) 16:46:28.15ID:al0lHo8n
>>63
gemをちょっとググってみたけどopengl4.xに対応しててそれ用の関数もある
shaderがどこまで出来るかは自己の環境次第なんじゃね?
まあ、最近はopengl4.x使える環境がデフォだけど
0066デフォルトの名無しさん
垢版 |
2017/12/07(木) 22:06:15.41ID:mIJMiEiv
みんな、Rubyのリファクタリングツール使ってる?
今まで手動でやってきたんだけど、何かお勧めツールかgemある?
0068デフォルトの名無しさん
垢版 |
2017/12/07(木) 22:35:19.73ID:p8nuhjj6
rspec
rubyは静的解析が極めて困難な言語であり、リファクタリングを機械的に安全に行うことはできない
テストをちゃんと書いておいて、実際に繰り返し動かしながら結果的に元の挙動が再現されるように慎重に行う必要がある
0069デフォルトの名無しさん
垢版 |
2017/12/07(木) 23:56:42.24ID:kyxQutt+
テストはバグが有ることを証明することはできるが
バグがないことを証明することはできない
故にいくらテストを書いても安心できない
0070デフォルトの名無しさん
垢版 |
2017/12/08(金) 00:13:02.65ID:AScviHBw
お前のツールでリファクタリングしたらバグったやないか客の業務止まっとるんやぞどないしてくれんねんボケエ!!!
こうなるのが目に見えてるんだからツール作る方もやりたくないわな
静的リファクタリングを動的型言語に求めるのは筋違い
0071デフォルトの名無しさん
垢版 |
2017/12/08(金) 00:48:46.54ID:yFCS8xkj
また言ってるのかこいつ
はやく精神科に見てもらえ


ruby会議16か15でリファクタリングのgemのOHPあったけど、
ぐぐったら出てくるから見てみ
0072デフォルトの名無しさん
垢版 |
2017/12/08(金) 01:08:24.02ID:ra4CwiYK
>>2 のリファクタリング:Rubyエディションを読めばわかるけど、
ツールで自動化するのは問題なく、むしろポイントはツールの使い勝手とか連携させるとかの方
リファクタリング機能自体にはあんまり差異は無い
例の自演荒らしはそれを知らずに静的云々とか煽ってるけど
0073デフォルトの名無しさん
垢版 |
2017/12/08(金) 01:33:37.38ID:AScviHBw
>>72
さすがにリファクタリングに関して静的型と差異がないというのは贔屓目に見ても無理があるわ
例えばクラスのメソッドのリネームを安全に行うには、そのメソッドを使っている箇所を全て正確に特定しなければならない
静的型なら造作もないことだけど、ちょっと頭使えばわかることだが動的型では原理的に不可能
0074デフォルトの名無しさん
垢版 |
2017/12/08(金) 01:35:02.78ID:T1izFLQz
Ruby技術者試験受けるよ!
アドバイスとかあったらお願いします
ちなみに、今年中にsilver受験するつもり
0075デフォルトの名無しさん
垢版 |
2017/12/08(金) 01:36:07.26ID:AScviHBw
あと、Rubyに限ったことじゃないけどスクリプト言語は識別子を短くする傾向があるから、
単純にgrepで抽出するのも困難を極める
もちろん静的型では一文字メソッドだろうと全く問題ないけどね
0076デフォルトの名無しさん
垢版 |
2017/12/08(金) 02:01:33.10ID:AScviHBw
何が言いたいかというと、リファクタリングにツールの力を借りたくなるようなものを動的型で作るなら必ずテストを書けってことだ
絶対に安全というわけではないが気休めにはなる
テストのない大規模なRubyのソースは単なる糞の山であり、確実にメンテ不能に陥る
0077デフォルトの名無しさん
垢版 |
2017/12/08(金) 02:24:45.46ID:DD2Dk6IR
strArray = %w(a b c a c)
strHash = strArray.each_with_object(Hash.new(0)) { |str, h| h[str] += 1 }

p strHash #=> {"a"=>2, "b"=>1, "c"=>2}

使われている文字が、一番多いもの(複数可)と、その回数を求める。
ひとまず、Hash に使われている回数を入れたけど、

ここから最大のもの、a, c の、2回を求めるには、どうすれば良い?
0078デフォルトの名無しさん
垢版 |
2017/12/08(金) 02:44:53.49ID:yFCS8xkj
>ID:AScviHBw
連投の癖から見ても例のあいつだな
話題すりかえれると思ってんのかゴミ
0079デフォルトの名無しさん
垢版 |
2017/12/08(金) 02:47:13.84ID:cpGshdOM
yFCS8xkjは例のアイツを記憶している
それぐらい例のアイツを意識しまくっている
0081デフォルトの名無しさん
垢版 |
2017/12/08(金) 02:52:47.39ID:cpGshdOM
自演じゃねーしw

例え自演だとしても、お前が例のアイツを忘れられない
ってのは事実だろう?だってそれっぽい書き込みをみたら
思い出してしまったんだし。

俺はどうでもいい人のことなんか覚えられないなぁw
0083デフォルトの名無しさん
垢版 |
2017/12/08(金) 03:05:51.79ID:cpGshdOM
そういや上の方でrspecって名前が出てたけど、
rspecの使い方をマスターするのは重要だな。

contextとlet、この2つの正しい使い方は
ちゃんと理解しないといけない
たんなるグループわけとか変数の代わりではない
0084デフォルトの名無しさん
垢版 |
2017/12/08(金) 03:11:55.00ID:cpGshdOM
少しヒントを出すか。

context(describe)はテスト対象のコードが複雑なら遠慮なくネストすること
もちろんテスト対象のコードはなるべくシンプルにするものだから
その場合はテストコードもcontextのネストも深くはならないのだが、
条件分岐があればそれに対応してcontextもネストさせてよい

そしてletは名前を遠慮なくかぶらせていい。
一般的には外側のスコープと同じ名前の変数を作るのは良くないことだが
describeとcontextのネストの中で、外側と同じ名前の変数は遠慮なく作っていい。
というか外側のletはデフォルト値、内側のletはそれを上書きする。そういう扱い
0085デフォルトの名無しさん
垢版 |
2017/12/08(金) 03:18:31.95ID:ra4CwiYK
いつもネガキャンがバレたら即自演荒らし始めるけど、
もしかして何かの病気?
0086デフォルトの名無しさん
垢版 |
2017/12/08(金) 03:20:06.76ID:cpGshdOM
いつもと違う=別人 という発想に至れないのが残念な人だなw
思い込みハゲしいぜハゲ
0087デフォルトの名無しさん
垢版 |
2017/12/08(金) 03:25:08.37ID:JkPU7Xcj
>>77
x = strArray.uniq.group_by{|e| strArray.count(e)}
# 最大値
m = x.keys.max # => 2
# 最大値を返す要素
x[m]. #=> ["a", "c"]
0088デフォルトの名無しさん
垢版 |
2017/12/08(金) 03:25:58.22ID:ra4CwiYK
ここまで「ネガキャンをしていたのは自分です」と告白してくれる人も珍しい
こんな正直な人なかなかいない

連投する癖は相変わらずウザイけど
0089デフォルトの名無しさん
垢版 |
2017/12/08(金) 03:31:15.22ID:cpGshdOM
>>88
ネガキャンしてたのはお前だろw

何も言わないなら図星だし
必死に否定するのは怪しい
正直に答えろ

という理屈で語らないでくださいよw
俺ネガキャンしてないし
0090デフォルトの名無しさん
垢版 |
2017/12/08(金) 03:51:22.77ID:ra4CwiYK
いつもネガキャンがバレたら即自演荒らし始めるけど、
もしかして何かの病気?
0092デフォルトの名無しさん
垢版 |
2017/12/08(金) 04:13:17.16ID:uDZwOU33
ネガキャン失敗を晒しあげ
0093デフォルトの名無しさん
垢版 |
2017/12/08(金) 05:21:46.31ID:ra4CwiYK
>>91
お前って行動を振り返る癖がないんだな
墓穴を掘るのは別に止めないけど、病気ならはやく病院に行った方が良いよ
0094デフォルトの名無しさん
垢版 |
2017/12/08(金) 05:27:36.83ID:T81djMMQ
毎回同じようなこと繰り返してるけど、今のrubyで問題ないと思ってるやつのほうが相当やばいと思うけどね
0095デフォルトの名無しさん
垢版 |
2017/12/08(金) 05:33:53.21ID:uDZwOU33
荒らし「毎回同じようなこと繰り返してるけど、今のrubyで問題ないと思ってるやつのほうが相当やばいと思うけどね」(荒す口実にしないとは言っていない)
009677
垢版 |
2017/12/08(金) 06:05:43.38ID:DD2Dk6IR
strArray = %w(a b c a c)
strHash = strArray.each_with_object(Hash.new(0)) { |str, h| h[str] += 1 }

p strHash #=> {"a"=>2, "b"=>1, "c"=>2}

maxCount = strHash.values.max #=> 2
p strHash.select {|k, v| v == maxCount } #=> {"a"=>2, "c"=>2}

key, rassoc を使うと、最初に一致した、1つしか返さない。
p strHash.key(maxCount) #=> "a"
p strHash.rassoc(maxCount) #=> ["a", 2]

>>87
ありがとう。その方法でも出来ますね
0099デフォルトの名無しさん
垢版 |
2017/12/08(金) 06:41:08.45ID:61INIGrw
単発でネガキャン繰り返してた奴=自演しながら静的静的言い続けてる荒らし
は確定か
次、荒らしがやりそうなのは
荒らしをスルーして書き込みさせてたIDでの"加勢"かな?
0100デフォルトの名無しさん
垢版 |
2017/12/08(金) 07:38:48.25ID:AScviHBw
少なくともID:AScviHBwはRubyと関係ないことは言ってないし別に間違ったことも言ってないでしょ
静的型の方がリファクタリングしやすい、くらいMatzでも発言したことあるぞ
さすがにこんなのまで荒らし扱いするのはこのスレくらいだよ
0102デフォルトの名無しさん
垢版 |
2017/12/08(金) 09:57:04.25ID:v/VLqoKO
>>100
>少なくともID:AScviHBwはRubyと関係ないことは言ってないし別に間違ったことも言ってないでしょ

確かに動的型付けであるRuby とは関係あるし、間違っていることも言っていない
ただしそれは Ruby 固有の問題ではなく動的型付け言語全般に共通のこと
にもかかわらずRubyスレに粘着してクソレスを連投してるから荒らしと言われる

たとえば>>76を改変すると:
  >テストのない大規模なPythonのソースは単なる糞の山であり、確実にメンテ不能に陥る
この文章は動的型付け言語であるPythonと関係するし、間違ってもいないでしょ
0103デフォルトの名無しさん
垢版 |
2017/12/08(金) 10:28:17.37ID:3HBH94ah
それはRubyユーザーがRubyのスレでRubyについて何か書き込むのは当たり前では?
その意味で、唐突にPythonなど他の言語を持ち出す方が荒らしでは?
もう一度書くけど、RubyユーザーがRubyのスレでRubyについて書くのは当たり前では?

逆にPythonユーザーがPythonスレに何か書き込むとき
同じことがRubyにも言えたら、ここにも何か書き込まなきゃならないのか?
0104デフォルトの名無しさん
垢版 |
2017/12/08(金) 11:06:13.77ID:+YVZNSfe
まあ歓迎しない空気があるスレで歓迎しない話題を延々と続けるのもどうかとは思うが。
0105デフォルトの名無しさん
垢版 |
2017/12/08(金) 12:25:20.39ID:T81djMMQ
最近のrubyの明るい話題と言えば、require 'pp' と書く必要がなくなったことくらいだな
0106デフォルトの名無しさん
垢版 |
2017/12/08(金) 15:14:06.90ID:ra4CwiYK
荒らしよ
お前のやっている行為が荒らし行為じゃないって言うなら
ruby-listやruby-devに行けよ
0107デフォルトの名無しさん
垢版 |
2017/12/08(金) 15:55:17.61ID:v/VLqoKO
>>103
>RubyユーザーがRubyのスレでRubyについて書くのは当たり前では?

もちろん、それなら当たり前だよ
でも ID:AScviHBw がやった、RubyユーザーでもないのにRubyスレで
Rubyに限らない一般論を連投する行為は当たり前じゃないだろ?
  http://hissi.org/read.php/tech/20171208/QVNjdmlIQnc.html

たとえばRailsユーザーがRubyスレでRailsについて連投するのは当たり前じゃないし、
そこでWebProg板の専用スレへの誘導を促されても移動せずに屁理屈をこね回していれば、
その行為に対して荒らし認定されるのは当たり前だろ?

ということで、これ以上「動的型付け言語におけるリファクタリング」うんぬんを
語りたければ、専用の隔離スレがあるからそちらへ移動を願う

・静的型付け言語の潜在開発生産性は今の100倍 ×5
  http://mevius.2ch.net/test/read.cgi/tech/1385273168/
・リファクタリングをただのコード修正と思ってる人へ
  http://mevius.2ch.net/test/read.cgi/tech/1275121556/
0108デフォルトの名無しさん
垢版 |
2017/12/08(金) 16:03:31.33ID:61INIGrw
次から初心者スレでネガキャンや自演を繰り返す輩は
ruby-listやruby-devに来れないなら荒らし認定して良いだろう

ruby-listやruby-devに来たなら書き込み時のIDとレス番をしっかり伝えて発言しろよ
0110デフォルトの名無しさん
垢版 |
2017/12/08(金) 20:29:36.48ID:3HBH94ah
RubyユーザーがRubyに思うことを書き込むときに
他の言語にも言えることだったら書き込んではいけないというのはおかしい
他の言語は関係なかろう、Rubyユーザーなのだから
0113デフォルトの名無しさん
垢版 |
2017/12/08(金) 21:58:28.54ID:ra4CwiYK
この荒らしは自演で嘘ばかりついて人を騙す事しかしないけど、
ruby-listやruby-devの名が出た途端にダンマリ
もしかして過去に追い出された口かな?

だからruby-listやruby-devにいけないのか
0114デフォルトの名無しさん
垢版 |
2017/12/08(金) 21:59:58.96ID:TcYdv7Hd
ruby から numpy 使えば文句なさそう
って一瞬思ったがそれなら最初から python でいいや
0115デフォルトの名無しさん
垢版 |
2017/12/08(金) 22:03:16.63ID:8wQDKBTk
100デフォルトの名無しさん2017/12/08(金) 07:38:48.25ID:AScviHBw
少なくともID:AScviHBwはRubyと関係ないことは言ってないし別に間違ったことも言ってないでしょ
静的型の方がリファクタリングしやすい、くらいMatzでも発言したことあるぞ
さすがにこんなのまで荒らし扱いするのはこのスレくらいだよ
0116デフォルトの名無しさん
垢版 |
2017/12/08(金) 22:25:47.08ID:gOxqVObs
Ruby3で予定されてるType Checkingのことでちょっと聞きたいんだけど
def sum(x: Integer, y: Integer)
って言う形にするって見たんだけど、キーワード引数はどういう形でこの先生き残ればいいのか教えて下さい
0117デフォルトの名無しさん
垢版 |
2017/12/08(金) 22:33:35.37ID:ra4CwiYK
例の荒らしが荒らす前に答えとく
まだ型システムがどうなるかは決定してないから、
誰もわからない
一応、2020年のオリンピック頃に何か発表されるようだけど、
キーワード引数には言及されてないと思う
0118デフォルトの名無しさん
垢版 |
2017/12/08(金) 22:49:19.36ID:PDg411NM
>>112
ruby-devでいいから発言してみたら?
スレ内でやってた事が荒らし行為じゃないなら、皆が納得するわけだし
判り易い様にIDとレスの番号も書いてね
0119デフォルトの名無しさん
垢版 |
2017/12/08(金) 23:05:52.19ID:ra4CwiYK
その場合、発言できないとなるとみんなから荒らし認定されるわけだけど


俺は出来ない方に一票
日付変更でIDリセットを狙ってるんだよ
呼吸するように嘘を吐く性格だからもう絶対出て来ないのは判りきっている
0121デフォルトの名無しさん
垢版 |
2017/12/08(金) 23:10:46.95ID:cpGshdOM
ruby-devはrubyの開発者のためだから場所が正しくない
Ruby初心者の質問と回答はここしかないな
0125デフォルトの名無しさん
垢版 |
2017/12/08(金) 23:39:14.89ID:DD2Dk6IR
荒らしと会話するな。
会話して、話を続ける者も、荒らしと同じ

荒らしを無視しないと、ずっと荒らされる。
荒らしは無視されるのが、辛い

>>116
Haxe のデフォルト引数は、以下。
? は、null になる

function f(x:int = 0, ?y:String):Void{ }
0127デフォルトの名無しさん
垢版 |
2017/12/08(金) 23:42:38.02ID:8wQDKBTk
これは自演ですわ


125デフォルトの名無しさん2017/12/08(金) 23:39:14.89ID:DD2Dk6IR
126デフォルトの名無しさん2017/12/08(金) 23:40:59.47ID:cpGshdOM
0129デフォルトの名無しさん
垢版 |
2017/12/08(金) 23:52:28.13ID:ra4CwiYK
荒らし認定完了したな


こんなに何ヶ月も粘着するなら、
ネガキャンや荒らす奴はruby-listやruby-devに書き込んでからスレにレスしてもらう事にするか
本人承認って事で
嫌ならネガキャンや荒らし行為しなければ良いだけだし
0131デフォルトの名無しさん
垢版 |
2017/12/08(金) 23:54:25.19ID:cpGshdOM
その荒らしだと認めたら、荒らし決定
でも荒らしと認めなかったら、荒らし決定

っていうのやめたら?
ほんと必死すぎだよw
0133デフォルトの名無しさん
垢版 |
2017/12/08(金) 23:57:30.52ID:8wQDKBTk
>>132
「初心者スレでないとネガキャンと荒らし行為ができない」とかなにアホな事を公言してるの?
頭大丈夫?
自分でなにを言ってるのか理解してる?

自分の書き込みを読み返せないの?
0134 ◆E3QFtFJzWU
垢版 |
2017/12/08(金) 23:58:00.23ID:cpGshdOM
うーん、とりあえずトリップつけておこうかな
0138 ◆E3QFtFJzWU
垢版 |
2017/12/09(土) 00:01:31.26ID:/arVeZ+Z
ちなみにトリップつけたのは
日付変わってID変わるのを待って逃げたなとか
言わさないため
0140デフォルトの名無しさん
垢版 |
2017/12/09(土) 00:03:53.78ID:Q5h5RL93
腹いてーwwwwwwwwwww
0141デフォルトの名無しさん
垢版 |
2017/12/09(土) 00:07:27.23ID:/arVeZ+Z
俺はさっきも言ったとおりネガキャンも荒らしもしてないので
逃げる必要もない。だからあえてIDが変わっても
俺だとわかるようにした。
本当の荒らしは逃げる頃だろう
0143125
垢版 |
2017/12/09(土) 00:25:45.47ID:zmyZSbxv
荒らしと会話するな。
会話して、話を続ける者も、荒らしと同じ

荒らしを無視しないと、ずっと荒らされる。
荒らしは無視されるのが、辛い
0144デフォルトの名無しさん
垢版 |
2017/12/09(土) 00:26:47.64ID:CCmdYb7I
俺も今いる荒らしに謎の自演認定されたことあるわ(もちろん間違い)
語り口からあぼーんしやすいから関わらないようにしよう
0148デフォルトの名無しさん
垢版 |
2017/12/09(土) 00:36:49.54ID:/arVeZ+Z
お前は待ってないだろw
初めてのIDなんだから初めてこのスレで発言した人じゃん?
0150デフォルトの名無しさん
垢版 |
2017/12/09(土) 00:46:24.36ID:/arVeZ+Z
トリップはIDが違っても同じ人物であることを示すための
一時的なものだぞw
015177
垢版 |
2017/12/09(土) 00:46:47.45ID:zmyZSbxv
>>96 で、
>maxCount = strHash.values.max #=> 2
>p strHash.select {|k, v| v == maxCount } #=> {"a"=>2, "c"=>2}

これをもっと簡単に選択できないかな?
ブロックに条件を設定して

Hash の値が、最大のものを取得する(複数可)
0152デフォルトの名無しさん
垢版 |
2017/12/09(土) 00:51:08.82ID:/arVeZ+Z
つーかなんでRubyスレでも似たようなことやってるんだ?って
思ったら、向こうから持ってきた話題かよw

向こう(JavaScript)での回答を書いておくよ

const counts = _.countBy(['みかん','りんご','みかん','ばなな','りんご','りんご']);
const max = _.max(_.values(counts));
const picked = _.pickBy(counts, _.partial(_.eq, max));
const items = _.keys(picked);
console.log(items);
// => ["りんご"]

このcountByってのがRubyにはないみたいね
(と言っても、countByっていうのはJavaScript標準ではなく
lodashという有名なライブラリだけど)
0153デフォルトの名無しさん
垢版 |
2017/12/09(土) 00:56:26.93ID:JRYZIrF0
これで荒らし確定、と

何ヶ月も粘着がスレを荒したため、
これから対策でネガキャン等行為を行う人がいた場合はruby-listやruby-devへ誘導するようにお願いします
自演でIDを変えて荒らをし繰り返すため、加勢するIDも含めて誘導するようお願いします

荒らしはruby-listやruby-devを追い出されたため現在、出入り禁止になっています
0156デフォルトの名無しさん
垢版 |
2017/12/09(土) 01:07:25.12ID:+EgCPyTt
つまりは荒らし本人だったわけか、あんなに「自分は違う」とか言っておいて

人を騙す事もなんとも思っていない隣国の住人みたいな奴だなお前
0158デフォルトの名無しさん
垢版 |
2017/12/09(土) 01:12:50.76ID:v8w6iGdG
発言できないのを自分で認めちゃったかー
祭りが終わっちまったな

というか、自分で墓穴掘った事にも気が付いていなさそう
0159デフォルトの名無しさん
垢版 |
2017/12/09(土) 01:13:58.12ID:/arVeZ+Z
あー、ほんまもんのアホだったkw

荒らしが書き込みできないと言ったのであって
俺は荒らしじゃないんだから関係ないんだよ。
0160デフォルトの名無しさん
垢版 |
2017/12/09(土) 01:17:34.96ID:/arVeZ+Z
そもそも告知されてない限り「追い出された」なんて事例が
存在することは、追い出された本人にしかわかりようがないんやで
0163デフォルトの名無しさん
垢版 |
2017/12/09(土) 01:22:52.71ID:zWazrV9P
ああ、これは例の荒らしの特技、連投ですわ


159デフォルトの名無しさん2017/12/09(土) 01:13:58.12ID:/arVeZ+Z
あー、ほんまもんのアホだったkw

荒らしが書き込みできないと言ったのであって
俺は荒らしじゃないんだから関係ないんだよ。

160デフォルトの名無しさん2017/12/09(土) 01:17:34.96ID:/arVeZ+Z
そもそも告知されてない限り「追い出された」なんて事例が
存在することは、追い出された本人にしかわかりようがないんやで

161デフォルトの名無しさん2017/12/09(土) 01:18:15.65ID:/arVeZ+Z
まあ追い出した側かもしれんがね
(そんなやつがここに来るか?)
0167デフォルトの名無しさん
垢版 |
2017/12/09(土) 01:37:31.18ID:hbOJEhsM
Rubyスレに幼稚なレスが多いのって、Rubyが初心者にオススメ!なんて看板掲げてるからだよな
0168召喚の儀
垢版 |
2017/12/09(土) 01:38:00.68ID:sJnBhFUt
おい荒らし、餌だ


144デフォルトの名無しさん2017/12/09(土) 00:26:47.64ID:CCmdYb7I
俺も今いる荒らしに謎の自演認定されたことあるわ(もちろん間違い)
語り口からあぼーんしやすいから関わらないようにしよう
0169デフォルトの名無しさん
垢版 |
2017/12/09(土) 01:46:35.31ID:JRYZIrF0
>>166
荒らしさーん、Rubyコミュでの発言はまだ無理ですか?
自演してる暇あったら発言してくださいよ

1、2分で終わる事じゃないですか?
017077
垢版 |
2017/12/09(土) 01:48:08.68ID:zmyZSbxv
>>152
Underscore の、_.countBy と同じで、
Ruby では、group_by (Enumerable)で、要素をグループ分けできる

strHash = {"a"=>2, "b"=>1, "c"=>2}

maxCount = strHash.values.max #=> 2
p strHash.select {|k, v| v == maxCount } #=> {"a"=>2, "c"=>2}

Hash の値が、最大のものを取得する(複数可)のに、
2行書いてるけど、もっと簡単に書けないのかなと思って

答えが1つなら、簡単に書けるけど、
複数の場合の方法が、見つからない
0171デフォルトの名無しさん
垢版 |
2017/12/09(土) 01:52:16.23ID:sJnBhFUt
これを張っておこう

>単発でネガキャン繰り返してた奴=自演しながら静的静的言い続けてる荒らしは確定か
>次、荒らしがやりそうなのは
>荒らしをスルーして書き込みさせてたIDでの"加勢"かな?
0173デフォルトの名無しさん
垢版 |
2017/12/09(土) 02:01:56.81ID:hHujkNr/
俺もruby-listとruby-devで発言をずっと待ってるんだけど、
1、2分でおわることなのに何故、逃げ回ってるの?

つーか、逃げないとか言ってたのに
どうしてそれほど人に嘘をついて騙そうとするの?
0174デフォルトの名無しさん
垢版 |
2017/12/09(土) 02:05:21.82ID:/arVeZ+Z
> 荒らしさーん、Rubyコミュでの発言はまだ無理ですか?

荒らしだと自覚がある人はruby-listとruby-devで発言してやってください
0176デフォルトの名無しさん
垢版 |
2017/12/09(土) 02:10:17.22ID:/arVeZ+Z
なんで用事がないのに書き込まないといけないんだろう?
不思議だ。荒らせと言ってるのかな?
俺荒らしじゃなしし
0177デフォルトの名無しさん
垢版 |
2017/12/09(土) 02:11:37.40ID:hHujkNr/
荒らしって疑われたら、自演でまともなやり取りして疑いをかわそうとするけど、
遅いよね

普通の人はまともですアピールなんかしない
普通の人は自演なんてできないからね、しかたがない
アピールするのは自演できる荒らしだけ
0180デフォルトの名無しさん
垢版 |
2017/12/09(土) 02:13:28.83ID:/arVeZ+Z
つーか、JavaScriptスレでも一緒だけど
本当の荒らしってスレに関係ないことをずーっと言ってるんだよ
俺は同じことをJavaScriptスレでも指摘してる。
本当の荒らしは誰かって
0182デフォルトの名無しさん
垢版 |
2017/12/09(土) 02:16:17.79ID:H3vgf6HH
>>181
お前、まだいたの?
へたくそな自演してないで失せろよ
0184デフォルトの名無しさん
垢版 |
2017/12/09(土) 02:43:12.45ID:H3vgf6HH
二代目テンプレつくったよ


粘着する荒らしがスレを何ヶ月も荒らしたため、
ネガキャン等行為を行う人がいた場合はruby-listやruby-devへ誘導するようにお願いします
自演でIDを変えて荒らをし繰り返すため、加勢するIDも含めて誘導するようお願いします

荒らしはruby-listやruby-devを追い出されたため現在、出入り禁止になっています
そのため過去、誘導されると逃げ回った経過があるので、コミュニティで発言を確認するまで誘導してください
0185デフォルトの名無しさん
垢版 |
2017/12/09(土) 02:45:16.67ID:/arVeZ+Z
透明あぼ〜んにしてみた
これで俺が見えるのは、毎回ID変更してる人だけになったよ
0187デフォルトの名無しさん
垢版 |
2017/12/09(土) 02:50:44.63ID:/arVeZ+Z
77 名前:デフォルトの名無しさん[sage] 投稿日:2017/12/08(金) 02:24:45.46 ID:DD2Dk6IR [1/3]
strArray = %w(a b c a c)
strHash = strArray.each_with_object(Hash.new(0)) { |str, h| h[str] += 1 }

p strHash #=> {"a"=>2, "b"=>1, "c"=>2}

使われている文字が、一番多いもの(複数可)と、その回数を求める。
ひとまず、Hash に使われている回数を入れたけど、

ここから最大のもの、a, c の、2回を求めるには、どうすれば良い?

87 名前:デフォルトの名無しさん[sage] 投稿日:2017/12/08(金) 03:25:08.37 ID:JkPU7Xcj
>>77
x = strArray.uniq.group_by{|e| strArray.count(e)}
# 最大値
m = x.keys.max # => 2
# 最大値を返す要素
x[m]. #=> ["a", "c"]

96 名前:77[sage] 投稿日:2017/12/08(金) 06:05:43.38 ID:DD2Dk6IR [2/3]
strArray = %w(a b c a c)
strHash = strArray.each_with_object(Hash.new(0)) { |str, h| h[str] += 1 }

p strHash #=> {"a"=>2, "b"=>1, "c"=>2}

maxCount = strHash.values.max #=> 2
p strHash.select {|k, v| v == maxCount } #=> {"a"=>2, "c"=>2}

key, rassoc を使うと、最初に一致した、1つしか返さない。
p strHash.key(maxCount) #=> "a"
p strHash.rassoc(maxCount) #=> ["a", 2]
0192デフォルトの名無しさん
垢版 |
2017/12/09(土) 03:03:08.34ID:JRYZIrF0
ID:/arVeZ+Zは昨日からずっと逃げ回ってたんだっけ?
さっそくテンプレを張らせて頂く


粘着する荒らしがスレを何ヶ月も荒らしたため、
ネガキャン等行為を行う人がいた場合はruby-listやruby-devへ誘導するようにお願いします
自演でIDを変えて荒らをし繰り返すため、加勢するIDも含めて誘導するようお願いします

荒らしはruby-listやruby-devを追い出されたため現在、出入り禁止になっています
そのため過去、誘導されると逃げ回った経過があるので、コミュニティで発言を確認するまで誘導してください
019377
垢版 |
2017/12/09(土) 03:15:35.50ID:zmyZSbxv
(acc, b) => { acc <= b }
こういう判別関数があったとして、求める答えが、1つだけなら簡単。

例えば、入力が[3, 2, 3, 5]でも、
バッファに持っている値は、[3, 3, 3, 5]の順番で、1つだけで済むけど、

答えが複数可能になると、[3, 3, [3, 3], 5]の順番で、
途中でバッファに複数を持つ必要がある

こういう処理が難しいから、答えを1つしか返さないのだろう

あるレコードの列の値、Hash の値、あるオブジェクトのプロパティの値が、
最大のものを求める(複数可能)という、簡単な関数が、意外と見つからない
0194デフォルトの名無しさん
垢版 |
2017/12/09(土) 03:23:13.41ID:/arVeZ+Z
個人的には二回やればいいと思うんだよね。

多分一回でやったほうが速いと思ってるんだろうけど
ループの中で複雑なことをやるとCPUのキャッシュから溢れてしまうので
シンプルな処理のループを二回やるほうが速いのではないかって思ってる
あとマルチコアだと別々に処理できるかもしれないしね
まあ実際に検証はしてないんだけどさ
0197デフォルトの名無しさん
垢版 |
2017/12/09(土) 03:32:23.28ID:JRYZIrF0
荒らしじゃ無いよアピールしてるけど、
ここ数ヶ月、Rubyスレに粘着して自演で荒らし行為を繰り返してた荒らし本人
それで昨日、皆がブチ切れて、
ruby-listかruby-devのどちらかで発言して本人確認しろって事になったんだけど
ID:/arVeZ+Zが逃げ回り、その道中もアホな自演で墓穴堀りまくって、今に至る
0199デフォルトの名無しさん
垢版 |
2017/12/09(土) 04:04:00.12ID:JRYZIrF0
うん
昨日のレスとか見ると分るけど、
連投する癖とかまんまで今日のIDは

ID:zmyZSbxv
ID:/arVeZ+Z
ID:kKoELm7m
ID:hbOJEhsM
ID:CCmdYb7I

今は、昨日の自演で使った別IDと会話ごっこしてる

それで、ID:/arVeZ+Z がRubyコミュニティで発言できなかったから皆で、
今後の対策として荒らし行為やネガキャンを行う人がいた場合は、
ruby-listとruby-devに誘導する事になった
020077
垢版 |
2017/12/09(土) 04:10:47.76ID:zmyZSbxv
>>194
strHash = {"a"=>2, "b"=>1, "c"=>2}

maxCount = strHash.values.max #=> 2
p strHash.select {|k, v| v == maxCount } #=> {"a"=>2, "c"=>2}

全要素をなめて、最大値を求めて、
もう1回、全要素をなめて、
その最大値を使っている、オブジェクトを求めるのに、抵抗を感じるw

普通、2回も全要素をなめるか?w
0201デフォルトの名無しさん
垢版 |
2017/12/09(土) 04:34:45.05ID:su9Dppjp
これが昨日のID変えれなかった自演失敗例

>100デフォルトの名無しさん2017/12/08(金) 07:38:48.25ID:AScviHBw
>少なくともID:AScviHBwはRubyと関係ないことは言ってないし別に間違ったことも言ってないでしょ
>静的型の方がリファクタリングしやすい、くらいMatzでも発言したことあるぞ
>さすがにこんなのまで荒らし扱いするのはこのスレくらいだよ

で、それを自演でカバーしようとしたのがこれ

>79デフォルトの名無しさん2017/12/08(金) 02:47:13.84ID:cpGshdOM
>yFCS8xkjは例のアイツを記憶している
>それぐらい例のアイツを意識しまくっている

で、うまくトリップで引継ぎさせたIDがこれ

>ID:/arVeZ+Z

で、後に加勢させるため昨日から荒らしをスルーして投稿させてたIDがこれ

>ID:zmyZSbxv

話を遮る所からもご覧のとおりアボーンしてるから見えてないんだよ

ID:zmyZSbxv=ID:/arVeZ+Z
0202デフォルトの名無しさん
垢版 |
2017/12/09(土) 04:52:18.43ID:ptiAgEOA
もういいよ
当分は何も出来ないだろうし又ネガキャンや荒らしやって来たらテンプレでとっちめまくるから
0203デフォルトの名無しさん
垢版 |
2017/12/09(土) 04:53:26.04ID:/arVeZ+Z
>>200
二回舐めても良いんじゃない?って思ってる
メモリはキャッシュに入るだろうし、
ループとかCPUの投機的実行が当たりやすいだろうから
そんなに時間変わらないんじゃないかって思ってる
検証してみてくれ
0205デフォルトの名無しさん
垢版 |
2017/12/09(土) 05:11:54.17ID:JRYZIrF0
将来、型システムが導入される事になったらやっぱり型もオブジェクトになんのかな
型の呼び出しや定義なんかもRubyっぽくメタプログラミングやワンライナーで書けたり
0206デフォルトの名無しさん
垢版 |
2017/12/09(土) 05:53:50.28ID:PWfKTZji
事前エラーだー最適化だー高速化だーっと言って型を検討してるわけだが、
今更テンプレートのような型マクロとかテキストマクロの時代に戻るわけではないだろうし
Ruby的に下のようなぶっとんだ書き方も無きにしも非ず
def foo(x : (@flag ? String : Array) , y : (@flag ? String : Array) )
p x,y
end
まぁ、これだと事前チェックの時に実行時情報が必要になるから何か仕掛けが必要なんだが
0207デフォルトの名無しさん
垢版 |
2017/12/09(土) 07:21:40.66ID:JRYZIrF0
>>206
その書き方を出来るようにするには、
実行時情報よりも型チェックのために事前に走らせる部分をRubyのコードから抜き出す必要があるけど?
0208デフォルトの名無しさん
垢版 |
2017/12/09(土) 08:54:23.61ID:puk20IRY
>>205
型もオブジェクトになんのかなというか、すでにRubyには
クラスと呼ばれる(部分型付された)型が存在し、知られているように
クラスはClassクラスのインスタンス、いわゆるオブジェクトだね
で、型システムの導入で変わるのは、オブジェクトがメソッドを
受け付けた時に行われる検査が実行時のみであった(動的型付け)のが
どこまで実行前にできる(静的型付け)ようになるのか?という議論になる

そして静的片付けには型(=クラス)をコードで宣言する明示的片付けと
宣言しない暗黙的片付けの二種類があって、>>206は前者に該当する
ここでMatzがたびたび主張している「型を書きたくない」という方針は
後者の暗黙的片付けであり、これは「Rubyの構文を大きく変更しない」
という別のMatzの方針とも一貫している
いいかえると型宣言構文の新規追加が必須な明示的片付けは採用したくないという意味

まとめると、理想的にはRubyユーザーから見ると既存の構文はなんら変更もなく
(=互換性を維持したまま)型システム導入の利点を享受できるようになる
ただしこれはあくまで理想的な姿であって、技術的に高度な型システムの導入において
どこまで妥協できる/する/すべきと言った様々な取捨選択が議論されているところ
0209デフォルトの名無しさん
垢版 |
2017/12/09(土) 08:58:19.29ID:Xp00eVEZ
>>207
そうじゃない
この場合、xの型は String | Array として扱うべき
フロー解析によって、その後コード上で flagで分岐した時点でthenブロックではString, elseブロックではArrayと確定する
TypeScriptはそういう方式
0210デフォルトの名無しさん
垢版 |
2017/12/09(土) 14:15:40.37ID:HCMuc4Gp
>>208
なるほど、良くまとまってますな
要するに、もはや静的型チェックが有ったほうが良かったのは
社会主義が資本主義に負けたのと同じぐらい分かりやすいレベルで
誰の目にも実験的/経験的に明らかというか
動的型のプロパガンダ的な嘘がバレて広く知れ渡ったので
今までは北朝鮮みたいにあんな調子で押し通していたが
いよいよ立ち行かないので、あれだけ言っといて今更恥ずかしいことではあるが
恥を忍んでRuby3.0で静的型チェックを入れたい
という背景があるってことだね
で、ここまではRuby触ってる人なら当たり前の常識なわけだが

もし、明示的な型宣言を文法に入れるなら、変数宣言をするということになり
変数宣言をするということは、型だけじゃなく変数のスコープも宣言出来るということで
CやJavaなどで見られる、いわゆる普通のレキシカルスコープを採用できるし
「@」のような気職の悪いものは要らなかったという結論になるわけだな
なんで変数宣言を入れるということは、静的型に白旗を上げるということだけではなく
「変数宣言を変数への最初の代入で代用するから変数宣言と代入の文法的区別がつかない」
という文法的問題、気色の悪いスコープについても意味が無かったということで
おおよそ変数周りのすべてて雪崩的に設計ミスだったということになる
ここまで壮大に間違ったなら、一から作り直した方が良いんだろうが
それならユーザー視点で考えると、間違ってない他の真っ当な言語を使えばよい話になるので
Rubyは大きく間違っているが、もはや間違ったまま行くしかない
とMatzは考えているってのが>>208なわけか
(流石のMatzもこの程度のことに気が付いていないとは思えない、言わないだけで)
ただ宗教的な感覚も絡んできて、誤った考え方でもある一定の信者はつくもので
Rubyはあえてそこを狙っているわけで(Matzはインタビューなどで逆張り逆張りと良く言っていた)
初めから分かっててわざと間違えた可能性もあるし、あるいは両方か
まぁペテン師だ
0211デフォルトの名無しさん
垢版 |
2017/12/09(土) 14:50:03.37ID:HCMuc4Gp
まぁ単純に考えても、今更、静的型を導入するぐらいなら
初めから静的型にしておけばよかったのは言うまでもない
仮に静的型が最近出てきた考え方でRubyを開発した当時は知りもしなかった
というなら仕方がないが、静的型は昔からあったし、RubyはCで書かれたわけで
知らなかったというのはあり得ないし、むしろ自分は静的型の恩恵を受けて
Rubyを開発したわけであって
そこは明確な意思をもって、あえて動的型にしたわけだから、今更静的型にするのはどうよ
(なら、初めからしておけよ、と思うだろ?)
ただもしRubyが静的型だったのならC/C++やJavaと競合して生き残れる理屈が無かったし
それもあって動的型にした部分もあるんだろうし
あまり言いたくはないが、そういうのを世間一般では悪魔に魂を売ったとかと表現して
それでカルト宗教というかドーピングというか、まぁ社民党にも支持者はいるわけで
そこを狙ったんなら、今更クリーンにっつっても、ブレるっつーか、民進党の前原代表みたいになるし
メジャー行けばもっと大きな勢力がひしめいてるわけだから
今まで通りマイナーメジャーでやってくのが良いんじゃね?と思わんでもない
いやぁこれは、メジャーマイナーとマイナーメジャーのどちらのほうが良いのかという
Pythonはメジャーマイナーを狙いに行ってるようなので
一つ席が空いたという部分も含めてRubyはマイナーメジャーを狙う感じなんだろう
Matzが好きな逆張り的な意味で
0213デフォルトの名無しさん
垢版 |
2017/12/09(土) 16:18:52.76ID:jtqcr+t2
>>210
あほか、
何でわかりやすいレベルなんだよ。
お前の中の価値観ではそうだというレベルの話じゃねーか。
0214デフォルトの名無しさん
垢版 |
2017/12/09(土) 16:21:32.60ID:jtqcr+t2
嘘で押し通すというのは
トランプ大統領がエルサレムの首都認定が
世界中からバッシングを浴びたと報道しているやつだ。これが嘘

本来ならエルサレムが首都になって嬉しいという声があるはずなのに
そういう報道が一切ない。
トランプの大統領選前と同じで嘘を押しとうそうとしているわ。
0215デフォルトの名無しさん
垢版 |
2017/12/09(土) 16:48:54.96ID:HCMuc4Gp
「静的型があったほうが良かったのは分かりやすいレベルで明らか」
それを俺の頭の中だけの話で嘘っぱちだというのは勝手だが
ではなんで動的型の権化みたいなRubyで
次期メジャーバージョンアップで静的型などという話が持ち上がってるんだ?
となるわなぁ
少なくとも次期Rubyを策定している連中はそう考えてるわけで
とりあえずRubyにおいては真実だし、このスレ的にはそれ以上の論証は要らないんだが
一般的に言っても最近出てきた目ぼしい言語は当たり前に静的型だし
つまり嘘で押し通そうとしているのはお前だが
ではなぜ嘘をついたのか?目的はなんだ?
身を守るための嘘なら仕方ないんだが、こんな掲示板でそんな必要ないし
利害関係のない掲示板でなんで嘘をつきまわるんだ?
0217デフォルトの名無しさん
垢版 |
2017/12/09(土) 17:50:31.43ID:yzhjOMYr
ID:/arVeZ+Z
おい糞野郎
臭い自演してないで失せろボケ
0219デフォルトの名無しさん
垢版 |
2017/12/09(土) 17:59:43.05ID:yzhjOMYr
な、召喚の儀で呼べただろ?
0220デフォルトの名無しさん
垢版 |
2017/12/09(土) 18:31:50.87ID:ojM2xQr7
>>218
みんなが言ってる通りruby-listで発言してみてはどう?
本当に違うならそれで証明が出来ると思う
0221デフォルトの名無しさん
垢版 |
2017/12/09(土) 19:02:37.47ID:JLcgGjoy
>>218はこのまま逃げ回ってIDリセットを狙ってる
昨日のレス読めば分かるけど、
結局は口先で騙して逃げることしかしてない
トリップも消したし
0224デフォルトの名無しさん
垢版 |
2017/12/09(土) 19:10:08.10ID:JRYZIrF0
昨日も今日もID:/arVeZ+Zが叩かれてる間はネガキャンも静的云々も出てこなかったね
なんでかなー(棒)
0225デフォルトの名無しさん
垢版 |
2017/12/09(土) 19:16:15.66ID:JLcgGjoy
>>223
俺もruby-listかruby-devで発言をずっと待ってるんだけど
逃げ回らないでくれる?

いつになったら発言するの?
0228デフォルトの名無しさん
垢版 |
2017/12/09(土) 20:01:45.91ID:PLdtTEIG
>>227
1.rubyをネガキャン(個人的には荒らしとまではいかない程度)する人が元から住みついていた
2.自分に対して否定的な意見は全て自演と決めつける狂人が発生(JRYZIrF0 [や単発ID)
  弁護士云々言ったりコピペ連投したりする人
3.せっかく質問があっても2のせいで流れてもうわかんね ← 今ここ
0230デフォルトの名無しさん
垢版 |
2017/12/09(土) 20:03:52.96ID:ZQM0F59y
ID:/arVeZ+Zがここ何ヶ月かこのスレに粘着して荒らしてた本人だと判明
で、分りやすい自演を繰り返して誤魔化すからruby-listかruby-devで発言して本人確認しろって事になった
それらからID:/arVeZ+Zが絶賛逃げ回ってる所
必死チェッカーで調べてみ?
これぞ粘着の本領だって分るレス数だから

今後の対策としてはID:/arVeZ+Zを念頭に荒らし行為やネガキャンを行う人がいた場合はruby-listとruby-devに誘導する事になった
0231デフォルトの名無しさん
垢版 |
2017/12/09(土) 20:10:24.80ID:xil3RrnV
荒らしと言われてる方はまだrubyの話してるけど、それに反応してる方がただのキチガイになって迷惑すぎる
あーまた馬鹿なこと言ってるわって相手にしないでおくか、rubyの話としてマジレスするかのどっちかにしなさい
0232デフォルトの名無しさん
垢版 |
2017/12/09(土) 20:15:40.04ID:PLdtTEIG
ruby?-d?ev云々いって/?a?r?V?e?Z?+?Zに絡んでいる人(全部同一人物。もしくは多くて2人程度と思われる)が荒らしなのでスルーしましょう
0234デフォルトの名無しさん
垢版 |
2017/12/09(土) 20:29:52.03ID:zmyZSbxv
荒らしに、レスを付けるな。
荒らしと会話するな。
荒らしが、ずっと居座るだけ

この板では、何かを答えても、
「知らんくせに答えるな」ってレスが付いて、
「そうだよな」って、すぐにそのレスに賛同する、レスが付く

荒らしに、すぐに賛同する奴が、いる訳がないのに。
それが、どんな深夜にも起こる

とにかく単発ID の奴は、荒らしと見て、スルーする事!
0235デフォルトの名無しさん
垢版 |
2017/12/09(土) 20:32:50.99ID:ECkYCn8N
>>232
お前のギャグさいこーwwwww
0239デフォルトの名無しさん
垢版 |
2017/12/09(土) 20:48:58.33ID:/arVeZ+Z
IDを変えて逃げたとか思ってたんだろうなw
だからID変えてないことがわかると
恥ずかしくなって発言できなくなってしまう
それにお前は毎回IDを変えてるよね(誰のことかわかるよね?w
0240デフォルトの名無しさん
垢版 |
2017/12/09(土) 20:49:36.99ID:ECkYCn8N
223が自演できるのは書き込み時間からわかったけど
荒らしてたのは本当にこいつなの?
0241デフォルトの名無しさん
垢版 |
2017/12/09(土) 20:51:29.23ID:/arVeZ+Z
IDは変えたら戻すことはできないから自演してない証拠になるからな
その反面、毎回IDを変えることはできるから
違うIDで同じようなことを言ってると自演とばれるわけだ
0242デフォルトの名無しさん
垢版 |
2017/12/09(土) 20:58:58.11ID:zmyZSbxv
JavaScript のスレでも、やってる。
荒らしは、全部のスレで、いちゃもんを付けてくる。
そのくせ、プログラミングの話をした事はない

他人のレスを、やたら探したりする。
他人のレスを探しても、1円にもならないのに

荒らしは、仕事した事がないはず
0243デフォルトの名無しさん
垢版 |
2017/12/09(土) 21:03:22.23ID:/arVeZ+Z
ライブラリの話をすんなってうるさいアイツのことだなw
同一人物でなければ、荒らしの脳内構造は一緒ってことなんだろう
スレと関係ない話しかしない

俺はもちろんスレと関係ある話をした
0244デフォルトの名無しさん
垢版 |
2017/12/09(土) 21:17:18.85ID:ECkYCn8N
ごめん、223が荒らしだったわ
0245デフォルトの名無しさん
垢版 |
2017/12/09(土) 21:24:17.46ID:/arVeZ+Z
何度も言わなくてもいいよ
お前ぐらいしかそんなこと言ってない
何度も言っても、こうしてバラされたら効果ゼロ

235 名前:デフォルトの名無しさん[] 投稿日:2017/12/09(土) 20:32:50.99 ID:ECkYCn8N [1/3]
>>232
お前のギャグさいこーwwwww

240 名前:デフォルトの名無しさん[] 投稿日:2017/12/09(土) 20:49:36.99 ID:ECkYCn8N [2/3]
223が自演できるのは書き込み時間からわかったけど
荒らしてたのは本当にこいつなの?

244 名前:デフォルトの名無しさん[] 投稿日:2017/12/09(土) 21:17:18.85 ID:ECkYCn8N [3/3]
ごめん、223が荒らしだったわ
0246デフォルトの名無しさん
垢版 |
2017/12/09(土) 21:49:29.83ID:KAnpleQL
せいぜい20レス/日のこのスレで彼は今も我らのために見えない敵と戦ってらっしゃるのだ
以下テンプレにいくつか追加

>粘着する荒らしがスレを何ヶ月も荒らしたため、
>ネガキャン、逸脱した連投、荒らし行為を行う人がいた場合は対策としてruby-listやruby-devへ誘導するようにお願いします
>自演でIDを変えて荒らしを繰り返すため、加勢するIDも含めて誘導するようお願いします
>
>荒らしはruby-listやruby-devを追い出されたため現在、出入り禁止になっています
>そのため過去、誘導されると逃げ回った経過があるので、コミュニティで発言を確認するまで誘導してください
0247デフォルトの名無しさん
垢版 |
2017/12/09(土) 22:18:52.50ID:HCMuc4Gp
俺は極たま〜〜に静的型どうのこうのの長文を書き込むことがあるぐらいで
言うほど連続投稿しないし、毎日書き込んだりしないし、チラ裏の日記みたいな感じで
特にここ最近半月ほどはスレが荒れていたこともあって何も書き込まないようにしてたんだが
過剰に反応して何にでも荒らし認定する一部のアレな人が全然関係ない人を攻撃していて
攻撃された人は気の毒だなぁとか思いながら、変なことになってるなぁと傍観していたんだが
その流れがあまりにもアレすぎたのか、いよいよ本物が居付いてしまったようだけど
自業自得とはいえ残念なことだな
他の真っ当な住人からしたら随分迷惑なことだろうし、俺も嫌かなぁ

結果的には俺の書き込みに過剰に反応する必要は無かったし
元々荒らしと言われるほど、ひどい内容や投稿スタイルではなかったはずなんだが
(ここが何処かを考えれば、通常、それぐらいは普通にあり得るかなぁという範囲)
実際には過剰反応している奴が意味のない書き込みで一番このスレを荒らしていたし
そのことは他の住人からもちょくちょく指摘が入ってたと思うんだがねぇ
というか、そのあいだ俺は書き込んでなかったんだが・・・しかしまぁ結果的にこの事態だわ

俺も勉強になって、自分たちに都合の悪い事実を、荒らし認定などで黙殺しようとしても
事実を黙殺する歪のようなもので、もっと酷いことになるんだな
嘘が雪だるま式に広がって〜とよく似ている
こういうときは沈黙は金だね
0249デフォルトの名無しさん
垢版 |
2017/12/09(土) 22:25:40.22ID:jtqcr+t2
悪貨が良貨を駆逐するってやつだ
良心的なやつがここにいても
アホが次から次に湧いてくるから
心がおられる。

そしてgoとかPythonとかkotolinとかにいってしまう。
0250デフォルトの名無しさん
垢版 |
2017/12/09(土) 22:26:53.94ID:/arVeZ+Z
> そしてgoとかPythonとかkotolinとかにいってしまう。

それこそまさに悪貨が良貨を駆逐するってやつだな
今他の何かを駆逐して生き残ってるやつは全部悪貨なんだよ!
0252デフォルトの名無しさん
垢版 |
2017/12/09(土) 23:10:08.11ID:PLdtTEIG
NGワードになったんでideoneにIDを列挙しておくけど
https://ideone.com/sMHbO4
ID:/arVeZ+Zを誹謗する48個のレスはID:JRYZIrF0を除いて全部のIDがほぼ単発かつ、単発でないものは全て安価がかぶらない
全部ID:JRYZIrF0が自演してることはほぼ明らか
こいつ病気なんじゃねえの
このスレの癌だよ
0254デフォルトの名無しさん
垢版 |
2017/12/09(土) 23:30:09.58ID:lAUVYRHS
Setクラスってどういうときに使いますか?

Arrayクラスインスタンスにuniqかけて集合だと考えてたけど違うのではと思ったもので。
0255デフォルトの名無しさん
垢版 |
2017/12/09(土) 23:58:52.32ID:JRYZIrF0
ここまで自演
----------------------------
0259デフォルトの名無しさん
垢版 |
2017/12/10(日) 00:17:50.29ID:MJKB1Uts
ruby-devでリテラルの最適化の話がずっとあるけど、
やっぱ、ArrayもStringみたいになるのかな?
0260デフォルトの名無しさん
垢版 |
2017/12/10(日) 00:32:18.71ID:/jbkU8iJ
>>254
uniq だと O(n) かかるので
Set だとハッシュを使っているだろうから O(1) でいけるんじゃないかな
0261デフォルトの名無しさん
垢版 |
2017/12/10(日) 00:37:16.10ID:fgyE63pk
>>259
3の型付けなんて最適化や速度upで入れたいって言ってるわけでなぶんそうなるだろ
ruby-listでfrozen_string_literal前提の話とかちょろちょろ見るようになったし

型そのものはあんまり興味ない
希望の書き方とかる?
0262デフォルトの名無しさん
垢版 |
2017/12/10(日) 00:38:47.43ID:fgyE63pk
タイプミスった、ごめん

>>259
3の型付けなんて最適化や速度upで入れたいって言ってるわけでなぶんそうなるだろ
ruby-listでfrozen_string_literal前提の話とかちょろちょろ見るようになったし

型そのものはあんまり興味ない
希望の書き方とかる? -> 希望の書き方とかある?
0263デフォルトの名無しさん
垢版 |
2017/12/10(日) 00:50:55.71ID:MJKB1Uts
あんまりイメージわかないけど、可能なら型をrubyの文法のif文とかメソッドチェーンに組み込みたい

一度、ここでアンケとってruby-listで型の希望の書き方とか立ててみる?
0264デフォルトの名無しさん
垢版 |
2017/12/10(日) 01:14:35.57ID:XVX0tsBl
ruby-listに直でアンケとっても良いけど
荒らしもいなくなった様だからやってっみる?
0266デフォルトの名無しさん
垢版 |
2017/12/10(日) 01:40:44.61ID:ZzgYAKrD
投稿時はruby-listかruby-devのどちら向けの話題なのかワードを入れておく?

x : Integer
は、ありきたりというか仮引数の時ハッシュと間違いやすいだろ
繋げて書けるように
Integer =_ x = nil
みたいなのどうよ
0267デフォルトの名無しさん
垢版 |
2017/12/10(日) 01:44:56.11ID:nRE+Ifdg
元々、荒らしは、全部のスレで、いちゃもんを付けてくる。
漏れも、何回も攻撃されてる

単発ID で「間違ったこと書き込むな」とか、荒らしが書き込むと、
すぐに違うID で「そうだよな」みたいに、荒らしに同調するレスが付く。
深夜でもそうだから、荒らしに同調する奴が居るなんて、あり得ない

プログラミングの話は、一切できないくせに、批判ばっかり書いてるのが荒らし

ただ、Ruby, JavaScript のスレでは、
荒らしにかまうから、喜んで居着いてるだけ

荒らしは一切、無視すべし!
仕事をした事もない奴と、話をしても仕方がない
0268デフォルトの名無しさん
垢版 |
2017/12/10(日) 01:49:21.28ID:nRE+Ifdg
スレに、ワッチョイが無いから、荒らしが来る

ワッチョイを導入すれば良い。
そうすれば、自演できない
0271デフォルトの名無しさん
垢版 |
2017/12/10(日) 01:57:14.83ID:8z/4vDLR
荒らされてると聞いてきたら型の話してる…
しばらく界隈から離れてたら静的型付け実装か
0273デフォルトの名無しさん
垢版 |
2017/12/10(日) 02:12:19.13ID:ZzgYAKrD
いや、自分の希望の書き方なんだから人気のある書き方でなくても良いでしょ
それにもしかしたらruby-listで大人気になるかもしれないし

後、さっき思いついたけど
definedtype?( Type )
みたいなのどう?
0274デフォルトの名無しさん
垢版 |
2017/12/10(日) 02:28:55.59ID:9Zlb3ltO
なんで型の希望の話になってんの?

すまんが今来て、この1スレからさらっと読んだけど理解できんかった。

とりあず、このスレからruby-listに要望だずにしても
下記まとめなんかあるといいかも(オレがほしいw
・経緯
・メリット
・デメリット
・他の言語の場合、例

OOP言語で簡単なのがrubyの良いところだと思う。
0275デフォルトの名無しさん
垢版 |
2017/12/10(日) 02:32:48.91ID:8I95hEEE
簡単ではないだろ
Rubyはとんでもなく複雑な言語で、メジャーな言語の中だとC++の次くらいには複雑なんじゃないの
ちなみにRubyが複雑なのはMatzも認めてるよ
0277デフォルトの名無しさん
垢版 |
2017/12/10(日) 02:57:07.13ID:UtvIbdgM
荒らしがそろそろ暴るだろうから今のうちにテンプレを張っておく

>粘着する荒らしがスレを何ヶ月も荒らしたため、
>ネガキャン、逸脱した連投、荒らし行為を行う人がいた場合は対策としてruby-listやruby-devへ誘導するようにお願いします
>自演でIDを変えて荒らしを繰り返すため、加勢するIDも含めて誘導するようお願いします
>
>荒らしはruby-listやruby-devを追い出されたため現在、出入り禁止になっています
>そのため過去、誘導されると逃げ回った経過があるので、コミュニティで発言を確認するまで誘導してください
0278デフォルトの名無しさん
垢版 |
2017/12/10(日) 03:21:46.15ID:1HHF8E2/
ruby-listだと恥ずかしくて聞きにくいのでこちらで質問します

a = [[1,2,3],nil, 4..10]
a.include?(5) => false
これで、trueにならないのはどうしてですか?
0279デフォルトの名無しさん
垢版 |
2017/12/10(日) 03:27:29.16ID:FZ4Yj2IT
>>274
そうだな
RubyはOOPで一番簡単な言語だと思う

>>275
むしろメジャーな言語の中で
一番シンプルだと思う
たとえばJavaScriptの方が複雑
0280デフォルトの名無しさん
垢版 |
2017/12/10(日) 03:44:33.44ID:UMP8yhyZ
>>278
a.include?(5) を小さく噛み砕くと以下になる
([1,2,3] == 5) || (nil == 5) || ((4..10) == 10)
これがtrueにならない理由


>>279
お前、まだ居るんか?
とっとろ消えろ
0281デフォルトの名無しさん
垢版 |
2017/12/10(日) 04:36:57.56ID:rydPLt/1
荒らしの連投が収まったからか、昨日、一昨日の書き込みに比べてえらく穏やかになったな
マジruby-list様々
0282デフォルトの名無しさん
垢版 |
2017/12/10(日) 04:56:13.97ID:fgyE63pk
>>278
Ruby2.4 リファレンスより
include?(val) -> bool
配列が val と == で等しい要素を持つ時に真を返します。

荒らしよけruby-list
0283デフォルトの名無しさん
垢版 |
2017/12/10(日) 05:52:58.55ID:nRE+Ifdg
荒らしは、色んなスレに、いちゃもんを付けてる。
JavaScript, Ruby のスレだけではなく、全部のスレを荒らしてる

荒らしは、仕事をした事がないから、反応するものには、何にでも噛みつくだけ

徹底的に、無視した方が良い
0285デフォルトの名無しさん
垢版 |
2017/12/10(日) 08:42:40.84ID:KNXh5gp+
rubyで型を書けるようになったとしても、コメントにアノテーションとして書けるようにするくらいが無難だろうて
0286デフォルトの名無しさん
垢版 |
2017/12/10(日) 16:46:51.98ID:IY8S1+HK
荒らしはあぼーんはずして見に来てるくせに、
毎回の見えてないアピールが糞うざい
0287デフォルトの名無しさん
垢版 |
2017/12/10(日) 19:04:47.93ID:4uyVh43l
メソッドの引数、戻り値の型保証を目的としたgems
* contracts
* rubype
他にも色々あるけど触ったことがあるのはこのくらいだな
0290デフォルトの名無しさん
垢版 |
2017/12/10(日) 22:15:37.82ID:TsNv+js2
型システムに関する最新の教科書であるTAPL本だとクラス=型だけど、
TAPL本を古典と言い切ってしまえる>>289は異次元世界の住人なのかな?
0291デフォルトの名無しさん
垢版 |
2017/12/10(日) 22:24:25.24ID:ML6lMJWk
TAPL本を古典なんてどこにも書いてないんだが?

なに一人連想ゲームしてんの?
0292デフォルトの名無しさん
垢版 |
2017/12/10(日) 23:46:36.31ID:EJLWoC7C
型チェックってどうして望まれてるの?
Kernel#instans_of? とか Module#=== を使って
TypeErrorを投げればいいんじゃないのと初心者としては思うんだけど、誰か教えて><
0293デフォルトの名無しさん
垢版 |
2017/12/11(月) 00:11:37.08ID:toSfFiY3
>ruby-devはrubyの開発者のためだから場所が正しくない
>Ruby初心者の質問と回答はここしかないな

みたいなカン違いししてるのでなければruby-devで聞きなよ
0294デフォルトの名無しさん
垢版 |
2017/12/11(月) 00:22:43.20ID:zjLRjNAe
結局、荒らしはrubyコミュで発言せず逃げたままか
ruby-listやruby-devでいったい何をしでかしたんだアイツ?
0295デフォルトの名無しさん
垢版 |
2017/12/11(月) 00:32:30.84ID:Iio3nuGz
>>1のテンプレ見て思ったんだけど、
各Rubyコミュへの案内も入れた方が良いんじゃないか?
ruby-listとruby-devとruby-core辺りでいいからさ
0296デフォルトの名無しさん
垢版 |
2017/12/11(月) 00:45:28.12ID:3l4LlxuK
>>292
大規模プログラミング症候群に患わった人たちがおもに困ってる

それとinstans_of?とかModule#===とかが目立つのはRubyらしくない
引数として与えられたオブジェクトは必要なメソッドがあるものとして記述する方がいい (ダックタイピング)
ifやcaseでやたらとクラス名が出てくるべきじゃない
こういう振り分け処理はrefinmentできれいに分離できるし何より見通しが良くなる

case obj
when nil
  ...
when Integer
  ...
when ...
  ...
else
  raise TypeError
end

これはrefinmentと組み合わせれば

obj.do_it

だけで済むし分岐のための Module#=== が呼ばれなくなるから処理速度も悪くならないはず

特に似たような処理が散乱して困るようならば検討するべき
0297デフォルトの名無しさん
垢版 |
2017/12/11(月) 00:54:42.06ID:zjLRjNAe
ruby-coreは英語だけどいいのか?
0298デフォルトの名無しさん
垢版 |
2017/12/11(月) 01:33:14.94ID:4q7JrCp0
switch 文で、型によって分岐していたら、オブジェクト指向ではない。
多くは、設計の間違い

型が増えるたびに、switch 文を修正しないといけなくなる

修正の度に、設定ファイルを書いているデザイナーが、
プログラマーに頼まなければならなくなるから、

プロジェクトの人材配分ができなくなる
0300デフォルトの名無しさん
垢版 |
2017/12/11(月) 03:05:20.05ID:cnSlApZQ
型はなくていいけど、宣言していない変数は使えないようなオプション欲しい
0303デフォルトの名無しさん
垢版 |
2017/12/11(月) 17:28:47.01ID:Iio3nuGz
自演を繰り返してる奴はruby-listやruby-devを避けてるから問題ない
そもそも入る事が出来ないらしい
それで、どういうテンプレにする?
0304デフォルトの名無しさん
垢版 |
2017/12/12(火) 00:09:35.42ID:MTvcfECB
ruby-devやruby-core入れるだけで荒らし避けになるとかスゲー
とりあずテンプレ案を出すのは次スレ立てる直前でどうよ?
0305デフォルトの名無しさん
垢版 |
2017/12/13(水) 02:24:54.64ID:bN1wPs8n
Methodのsource_locationみたいなソースの定義や構造の解析に役立つメソッドを探しているけど、
Classやモジュール、オブジェクトにはこういったメソッドないよね?

あれば便利だと思うのに
0306デフォルトの名無しさん
垢版 |
2017/12/13(水) 05:18:23.32ID:wC6gbn87
>>305
Pryの show-doc と show-source 便利だよ
pry-docも合わせて使えばCで書かれた組み込みクラスやメソッドのソースも表示可能
0307デフォルトの名無しさん
垢版 |
2017/12/14(木) 01:05:44.67ID:RXlgLxSu
Methodのsource_locationは処理に直接挿入できるから便利なのであって、
そこを理解していないだろ
0308デフォルトの名無しさん
垢版 |
2017/12/15(金) 01:34:17.23ID:XFw1hYkv
Rubyコードのリファクタリングに関したgemってある?
結構前にリファクタリングのrubyエディションを読んでから興味持ったんだけど
0309デフォルトの名無しさん
垢版 |
2017/12/15(金) 07:40:23.15ID:qyzTygXP
原理的に困難って上で言われてるでしょ
こればっかりは個人の信条や宗教の問題じゃなく本当に原理的な問題だから諦めろ
Rubyのリファクタリングや型検査に関しては、無理に静的解析するんじゃなくて、
実際にモジュールをロードしてみて実行時のクラス構造を見て処理するような新しい発想が必要だと思うわ
0310デフォルトの名無しさん
垢版 |
2017/12/15(金) 13:34:32.77ID:AXI+pgWQ
>>309
>リファクタリング:Rubyエディション、2010
を読むまでは俺もお前と同じ勘違いをしてた
どのような言語でもテクニックとしてリファクタリングが出来るという事が書いてあるから一度読め
特にrubyは、その記述性からリファクタリングテクニックがぴったり合う
0312デフォルトの名無しさん
垢版 |
2017/12/15(金) 22:04:52.20ID:AXI+pgWQ
リファクタリングテクニックを適用するだけの事に、正しさの保障とか難癖つけても無駄
俺も以前は、カン違いしていた口だから偉そうな事は言えないけど
0313デフォルトの名無しさん
垢版 |
2017/12/15(金) 23:07:30.00ID:XFw1hYkv
>>309
Rubyにリファクタリングが合わないならリファクタリングrubyエディションなんて書籍は出版されないのでは?
内容も、何も考えなくても機械的に適用すればリファクタリングが出来てしまうテクニック集の例示だし

それと故意に話しを摩り替えられたけど聞きたかったのはリファクタリング関連のgemの事
0316デフォルトの名無しさん
垢版 |
2017/12/16(土) 01:25:30.77ID:plaGBrRo
なんかできるできないの話に持っていって(持って行かれて?)
負けてるやつがいるなw

Rubyでもなんでもリファクタリングはできるよ。
ただ同じリファクタリングをしても時間がかかる言語と
そうでない言語があるって話
0317デフォルトの名無しさん
垢版 |
2017/12/16(土) 01:59:08.24ID:SSRXngMG
>>313
こんなにRuby信者が寄ってきてるのに何一つ出てこないことが何よりの答えだろうね
そもそもRubyってツールでコードを弄るのをダサいと考える文化があるのよ
コードを生成するくらいならメタプログラミングで実行時に何とかするべきだし、
ツールで機械的に適用できるような局所的なリファクタリングなら手でやったほうが早い、っていうのがRuby的な思考
静的言語のIDEに付いてるようなインターフェイスの抽出とかメンバのリネームといった広域的なリファクタリングは便利なものだけど、
ああいうのは実際「原理的に困難」なので
0318デフォルトの名無しさん
垢版 |
2017/12/16(土) 05:32:22.64ID:2bqvN76b
>>316
>>317
ネガキャン失敗して顔真っ赤にしながらレスを書いていると思うと最高
0319デフォルトの名無しさん
垢版 |
2017/12/16(土) 14:05:47.39ID:VgVQwchc
有能なRubyistである>>318がパッと作ってgithubのURL貼ればそれで済む話だぞ
Matzもコードで語れっていつも言ってるでしょ
0321デフォルトの名無しさん
垢版 |
2017/12/16(土) 23:26:30.07ID:RIeUS8wT
リファクタリングと言えばrubyでRipper使えばコードを構文木化して扱えるよ
だから処理系自身にrubyコードを書き換えさせる事も出来る
それからgemもparseなんちゃらみたいなのが結構出てくるから割とありきたりなネタ

知ったかで騙ってる荒らしだけが無知を披露中
0323デフォルトの名無しさん
垢版 |
2017/12/16(土) 23:47:36.74ID:2bqvN76b
またまたネガキャン大失敗の巻きか?
プゲラッチョ
0324デフォルトの名無しさん
垢版 |
2017/12/16(土) 23:58:10.67ID:VgVQwchc
構文木ってソースコードのDOMでしかないからなあ
>>322も言ってるけどそれでコードの意味がわかるわけじゃない
しかもRubyのASTの場合、静的解析やコード生成ではなく実行することしか考慮されてなくて、
CALLとシンボルだらけで大幅に情報が失われてる
自分でやってみりゃわかるけどかなり扱いづらい代物だよ
0325デフォルトの名無しさん
垢版 |
2017/12/16(土) 23:59:37.87ID:2deUmEBo
--dump=parsetreeオプションか、--dump=insnsオプションで使わないの?
0327デフォルトの名無しさん
垢版 |
2017/12/17(日) 00:23:33.21ID:ZaumiUQl
使いづらいって言われてもそれは主観でしかないよな?
しかも実質、リファクタリング関連のgemを製作する側がどうのこうのであって、
gem利用者には関係なくない?

そもそも他言語での自己書き換えの扱いはもっとやっかいだぞ?
0328326
垢版 |
2017/12/17(日) 00:23:43.41ID:cjnEvY5x
一応補足しとくけど、ruby処理系にそういう機能があるかどうかじゃなくて
dump=parsetreeで出力されたASTから元のソースを復元するツールを作ってみてくれ、という意味だぞ
ちなみにripperでも同じだ
もちろん細かいスペースの差異とかは無視するとしても、不可能なのがわかるよ
リファクタリングや静的解析に使うなら処理系付属のは使い物にならないので専用のASTが絶対に必要だ
0329デフォルトの名無しさん
垢版 |
2017/12/17(日) 00:29:01.32ID:ZaumiUQl
構文木と並行して字句解析つかえば何も問題ないぞ
というか、そういうgemがごろごろあるぞ?

また知ったかしちゃったのかな?
0330デフォルトの名無しさん
垢版 |
2017/12/17(日) 00:34:09.11ID:cjnEvY5x
>>329
意味不明だなあ
字句解析の結果をどうやってASTに紐付けるの?
結局独自に構文解析するんなら、それはつまり「専用のASTが必要」ということになるわけだけど、
自分で言ってること理解してる?
0331デフォルトの名無しさん
垢版 |
2017/12/17(日) 00:40:42.77ID:X5PuZ6e5
荒らしはrubyでリファクタリング出来る事が物凄く不満らしいけど、親でも殺されたのか?
これでも読んで落ち着け
つリファクタリング:Rubyエディション、2010
0332デフォルトの名無しさん
垢版 |
2017/12/17(日) 00:51:54.13ID:ZaumiUQl
>>330
だからgemがごろごろあるだろ
現実に存在するgemを否定しても現実は変わらんぞ?

そもそも妄想を騙るならruby-devかruby-listで発言しろ
ここはおまえの妄想ノートじゃねよボケ
0333デフォルトの名無しさん
垢版 |
2017/12/17(日) 00:52:55.58ID:Hi83U6qj
リファクタリングはどの言語でもできる
ただやりにくい言語とそうでない言語が有る
Rubyはやりにくい。時間がかかる
0334デフォルトの名無しさん
垢版 |
2017/12/17(日) 00:55:41.57ID:X5PuZ6e5
>>333
自演ばれてんぞ
0337デフォルトの名無しさん
垢版 |
2017/12/17(日) 01:05:40.92ID:vwVDXOLh
俺には>>336もプロレスの自演に見えるけどね
批判的意見に毎回バカっぽく突っかかって論破されてる噛ませ役
0338デフォルトの名無しさん
垢版 |
2017/12/17(日) 01:06:56.15ID:X5PuZ6e5
>>337
も自演か
0339sage
垢版 |
2017/12/17(日) 01:22:18.66ID:bfi3jyev
リファクタリングって頭空っぽにして代数的に適用すれば安全にコードを変えられるテクニックの事だろ?
なんで時間がかかるとか難しいとか話しが出てるんだ?
0340デフォルトの名無しさん
垢版 |
2017/12/17(日) 01:48:45.01ID:ZaumiUQl
リファクタリングが何か知らない奴が混じってて必死でrubyのネガキャンしてるだけ
ruby-devやruby-listだとすぐ嘘がばれるから

もうこの荒らしは排除いいよ
0341デフォルトの名無しさん
垢版 |
2017/12/17(日) 02:32:17.52ID:Hi83U6qj
>>339
> 代数的に適用すれば安全にコードを変えられるテクニックの事だろ?
> リファクタリングって頭空っぽにして代数的に適用すれば安全にコードを変えられるテクニックの事だろ?
> なんで時間がかかるとか難しいとか話しが出てるんだ?

代数的に適用するためには、十分な情報が必要だからだよ。

例えば2つの数値の掛け算の答があったとする
その答から、なんとなんの数値の掛け算かを求めるのは大変
答が複数あることもあるからだ
だけどそのうちひとつの数値がわかっていれば、答はすぐに分かる


型にも同じ話が言える。静的型付け言語の場合は、変数に型が定義されているから
そこから代数的に安全にコードを変えられるテクニックが使える

だけど型がわからなければ、そこから代数的に安全にコードを変えられるテクニックが使えない。
だから時間がかかる。一部の人はそのことを”できない"と表現しているがj。
それは違う。いくつもの可能性を検討して、これだ!と安心できるまで時間がかかるのだ。
0342デフォルトの名無しさん
垢版 |
2017/12/17(日) 02:47:32.03ID:BeMxy3i4
また自演の長文か

そんなに主張したい事があるなら初心者スレじゃなくruby-devかruby-listで言え
わざわざ初心者スレで嘘をばらまく必要は無いだろう
0343デフォルトの名無しさん
垢版 |
2017/12/17(日) 03:00:08.85ID:X5PuZ6e5
リファクタリングにちなんで、
みんなはコードに自己書き換えの処理させる時って何を使ってる?
0344デフォルトの名無しさん
垢版 |
2017/12/17(日) 03:28:07.16ID:BeMxy3i4
初心者スレでイキってる荒らしはこういう質問が来ると急に大人しくなるんだよな

俺は普通にdefine_methodを使うぐらいしかしていない
0346デフォルトの名無しさん
垢版 |
2017/12/17(日) 03:47:09.35ID:X5PuZ6e5
質問に答えられないのはわかった
0348デフォルトの名無しさん
垢版 |
2017/12/17(日) 03:54:31.53ID:X5PuZ6e5
>>347
お前に言ってるんだが
0349デフォルトの名無しさん
垢版 |
2017/12/17(日) 03:58:35.63ID:Hi83U6qj
え? その前に俺の>>342のレスに答えてよ
おとなしくなるって、俺のレスに答えられなくなるって
話だと思ったよ
0350デフォルトの名無しさん
垢版 |
2017/12/17(日) 04:02:09.36ID:vi6El7FV
ソースを直で修正し再ロードして実行までをrubyコード内で記述できるわけだから、
言ってしまえばなんだって出来る

gemでparse2rubyとか色々あるし
0351デフォルトの名無しさん
垢版 |
2017/12/17(日) 04:18:39.08ID:X5PuZ6e5
>>349
ID:Hi83U6qj「俺はID:BeMxy3i4だ」と言われても、
スレを妨害してるのはお前しかいないんだが
0352デフォルトの名無しさん
垢版 |
2017/12/17(日) 04:48:50.54ID:PRNmBS9S
>>349
いつまで逃げ回る気だ荒らし
本人確認するかruby-devかruby-listで早く発言しろ

>>351
Ripper.sexp_rawで良い具合にメソッドを書き換えて使ってる
0353デフォルトの名無しさん
垢版 |
2017/12/17(日) 08:13:32.84ID:6NwF6CYy
「ruby-devかruby-listで発言しろ」って言いまくってる奴は単発IDでの自演常習犯だから絡まないでスルーしましょう
>>252でも説明したけど自治の振りをした粘着荒らしです
0354デフォルトの名無しさん
垢版 |
2017/12/17(日) 09:16:34.42ID:X5PuZ6e5
自演を繰り返す荒らしがスレ住民全員を荒らし認定か
ruby-devかruby-listで発言するのがそれほど怖いのかな?
0356デフォルトの名無しさん
垢版 |
2017/12/17(日) 11:54:17.21ID:Hi83U6qj
>>351
それ間違えたw 本当は>>341と書くつもりだった

透明あぼ〜んされてて見えなかったから
ずれてしまったのかな?
0357デフォルトの名無しさん
垢版 |
2017/12/17(日) 12:02:37.42ID:X5PuZ6e5
スレッドの進行を妨害して荒らすな
0358デフォルトの名無しさん
垢版 |
2017/12/17(日) 13:07:26.56ID:7FFT55NR
ちょいと質問です。
Cだと"__"から始まったり、"_"+大文字となったりする識別子は予約扱いだと明文化されてるけど、Rubyはどうなのかちょっと気になってます。
組み込みで__FILE__ __LINE__ __method__とかが定義されているのは知ってます。

gemライブラリの中で2つのアンダースコート"__"から始まり、同じく"__"で終わるメソッド名を定義しようかと考えてるけど、問題ないかなと思って。
0359デフォルトの名無しさん
垢版 |
2017/12/17(日) 13:28:17.09ID:Hi83U6qj
@で始まる変数はインスタンス変数
@@で始まればクラス変数
$で始まれば組み込み変数
大文字で始まれば定数
selfもnilもtrueもfalseも変数
0360デフォルトの名無しさん
垢版 |
2017/12/17(日) 13:31:03.53ID:X5PuZ6e5
リファレンスで擬似変数の所を見てかぶりそうなのをさければ問題ない
かぶっても見分けられるなら問題ない
0361デフォルトの名無しさん
垢版 |
2017/12/17(日) 13:36:18.37ID:CQTxJs7f
Ripper.sexpつかえばソースの自己書き換えできるだろ

誰だよ出来合ないって言ったのは
0363デフォルトの名無しさん
垢版 |
2017/12/17(日) 14:16:42.77ID:CQTxJs7f
require "ripper"
require "pp"
pp Ripper.sexp("class Foo p self end")
#[:program,
# [[:class,
# [:const_ref, [:@const, "Foo", [1, 6]]],
# nil,
# [:bodystmt,
# [[:command,
# [:@ident, "p", [1, 10]],
# [:args_add_block, [[:var_ref, [:@kw, "self", [1, 12]]]], false]]],
# nil,
# nil,
# nil]]]]
これでリファクタリングが難しいとか時間がかかるとか言ってた奴もいたな
0366デフォルトの名無しさん
垢版 |
2017/12/17(日) 14:42:49.46ID:Hi83U6qj
>>365
何を言ってるの?

リファクタリングっていうのは人が
どうすべきかを考えるんだよ

今何が問題で、どうすべきかを考えるためには
ソースコードを読んで理解しなければならない。

その理解するまでの時間の話なんだけど

で、そのコードをどうしたいのか俺には分からん
まずそこからだよね。君が説明するべきことは
0367デフォルトの名無しさん
垢版 |
2017/12/17(日) 15:09:58.55ID:CQTxJs7f
メソッド抽出、インライン化、メソッドシグニチャの変更と、
IDEにある主なリファクタリング機能なんだが
これをrubyには出来ないと言ってた奴が居るらしい
0369デフォルトの名無しさん
垢版 |
2017/12/17(日) 15:45:11.24ID:X5PuZ6e5
Kernelモジュールに__で始まるメソッドがあるからそれにも気をつけろ
わからないことがあったら一度自分でリファレンスを検索して細部までしっかり見ろ
0370デフォルトの名無しさん
垢版 |
2017/12/17(日) 15:51:07.46ID:F+iLZcQ1
>>367
メソッド抽出はできるけどインライン化やシグニチャの変更は安全には行えないよ
実際にどのメソッドが呼ばれるかは実行してみるまで分かんないし、メタプログラミングでメソッドが存在しない場合すら珍しくない
0371デフォルトの名無しさん
垢版 |
2017/12/17(日) 16:13:40.93ID:X5PuZ6e5
シグニチャの変更は、Ripper.sexpからの配列をまわして旧シグニチャを指定のに書き換えてソースに戻せば良いように見える
そもそもrubymineで出来る
インライン化なんて普通に:assign部分を使われてるところで展開すればいいだけだからシグニチャの変更より楽そう
逆に変数の切り出しも出来るだろこれ

ちょっとコードを書いてみるか
0372デフォルトの名無しさん
垢版 |
2017/12/17(日) 16:34:07.16ID:DhuU3UWX
ElectronみたいにWebベースでGUIを作ってRubyで動的処理を行うフレームワークとかないんかな
ActiveScriptRubyは近いけどWin/IE限定の上にRScriptをインストールする必要があるのがイマイチ
インストール不要で軽量・軽快なのが欲しい
0374デフォルトの名無しさん
垢版 |
2017/12/17(日) 19:08:51.91ID:Hi83U6qj
結局Rubyでは候補を出すところまでしかできないんだよね
代数的に適用することができない

その変更が正しいかどうかをコード全体を読んで
考えないといけないから、時間がかかってしまう
0375デフォルトの名無しさん
垢版 |
2017/12/17(日) 19:09:35.99ID:Hi83U6qj
>>367
> メソッド抽出、インライン化、メソッドシグニチャの変更と、
> IDEにある主なリファクタリング機能なんだが

少ないね
0376デフォルトの名無しさん
垢版 |
2017/12/17(日) 22:52:07.76ID:X5PuZ6e5
荒らすな
0382デフォルトの名無しさん
垢版 |
2017/12/18(月) 08:25:44.94ID:9Kb0ajxH
2ch学習法(今なら5chか)って言われてたやつが通じると思ってるんだろうけどな。
0383デフォルトの名無しさん
垢版 |
2017/12/18(月) 12:55:26.65ID:L2o9nXM3
初心者スレはスレ消費激しいけどアンチスレはぜんぜん流行ってないな
アンチ死んでる?
0385デフォルトの名無しさん
垢版 |
2017/12/18(月) 15:10:45.19ID:aXpCltYZ
アンチは寂しくて初心者スレに来ちゃうわけか
0386デフォルトの名無しさん
垢版 |
2017/12/18(月) 15:26:16.95ID:XEro/kye
>>371を参考にしたらリファクタリング機能を組めた
ソース読み込んでS式書き換えてソースに書き戻すって処理だけど俺でも簡単に出来るんだな
0388デフォルトの名無しさん
垢版 |
2017/12/18(月) 16:10:14.00ID:zBhLgaSa
こっちでは問題にすらなってない
俺ですら出来るレベルだけど、それでも無理ならVMにバイトコード見せてもらったら?
0389デフォルトの名無しさん
垢版 |
2017/12/18(月) 16:25:37.10ID:4mfkLjZ7
>>387
そんな事も分からないお前が無能なだけ
もう来なくていいぞ
0390デフォルトの名無しさん
垢版 |
2017/12/18(月) 16:30:56.90ID:zBhLgaSa
[:var_ref, [:@kw, "self", [2, 0]]]みたいなノードがありそれを上にたどって行くとselfが何か判る
S式は慣れれば読めるし、処理も楽
0391デフォルトの名無しさん
垢版 |
2017/12/18(月) 17:48:23.09ID:e/V/7Ip9
入れ替えることができちゃうから実際には単純にはいかないってことを言いたかっただけ
0393デフォルトの名無しさん
垢版 |
2017/12/18(月) 21:26:15.43ID:SUjpjhtq
いや、
リファクタリング前のソースコード からS式を作って

そのS式から「リファクタリングされたソースコードを生成して見せる」って
言うのならどうぞwどうぞw って話だけど

可能不可能の話なら可能。だけど大変すぎなのでやらない
それを「リファクタリングできない」っていう表現で>>392は書いた
0395デフォルトの名無しさん
垢版 |
2017/12/18(月) 21:33:39.72ID:SUjpjhtq
>>394
俺もS式から(可読性が高い)リファクタリングされた
ソースコードを作り出すのは不可能だと思ってるよw
だからダンプするまでもない

何が言いたいのかって言うと、リファクタリングの話題で
S式、S式、って何が言いたいんだこいつ?ってこと
S式はリファクタリングと何の関係もありません
0396デフォルトの名無しさん
垢版 |
2017/12/18(月) 21:35:19.46ID:SUjpjhtq
S式から可読性が悪い変なソースコードに変換することはできるだろうが
そりゃリファクタリングと真逆な行為だしな
0397デフォルトの名無しさん
垢版 |
2017/12/18(月) 21:53:35.09ID:ZBmMrMTz
そうそう
ripperのASTはコード生成には不向きであると言ってるだけで、別にRubyを否定しているわけじゃないのに何を必死に喚いてるんだろうね
コード生成に関しては、単に「文法上の同値の解釈」を一切入れない、より低レベルなパーサを作って正確なASTを得らればいいだけのことだ
動的型だって静的型にはない良さが沢山あるのに、アンチ連呼君はそこを無視して「静的型にできることは全てRubyにもできる」という無茶な主張を続けている
そうやって本質を理解しないまま無理筋で反論するから馬鹿にされるんだといいかげん気付け
0398デフォルトの名無しさん
垢版 |
2017/12/18(月) 23:16:47.78ID:LVUvAKSO
初心者だからRubyとPythonの違いがわからんのだけど、どう違うんだ?
Rubyがもっと流行ってもいいと思うんだけど
0399デフォルトの名無しさん
垢版 |
2017/12/18(月) 23:28:55.91ID:tRPcthrg
おいアンチ、
初心者騙してないでいい加減アンチスレに帰れよ
おまえがリファクタリングできないのは判ったから
0400デフォルトの名無しさん
垢版 |
2017/12/19(火) 00:03:52.94ID:iE/A7V+0
自分でうまくソースコードに書き戻す処理が書けないのをRubyの所為にしてはダメだろう

どうしてもやりたい場合はRipper2rubyってgemを使え
0401デフォルトの名無しさん
垢版 |
2017/12/19(火) 00:16:12.52ID:si5W7uAD
可能不可能の話に持っていくから(わざとやってる?)
話がややこしくなるんだよ

構文解析は、静的でも動的でもできる。
その時、どれだけの情報を得られるかっていうのは
型情報を書いてある静的のほうが多いのは明白
(動的のメリットは書かなくて良いことなんだから、動的の方が多くなることはない)

静的のほうがより多くの情報を得られる。
それがリファクタリングをする上での情報の多さにつながり、
リファクタリングを自動化する上での情報にもつながる。

静的のほうが予め書いておく情報が多い分、静的解析でわかることが多い。
動的だとわからない情報は、人がコードを見て推測するしかない
人の作業は遅い、リファクタリングの速度につながってくる

リファクタリングが可能か不可能かの話じゃない
作業する時の速度の話
0405デフォルトの名無しさん
垢版 |
2017/12/19(火) 00:32:24.61ID:si5W7uAD
俺が言っても信用しないのだろうから、

http://washiiku.hatenablog.com/entry/2014/12/19/054914

> 上に書いたように変数の型をエディタが察してくれるので、
> 対応するメソッドなどにジャンプしたり、逆に使用されている
> 箇所も一覧で表示できます(ただし静的言語ほど正確ではない)

> JetBrains系ではお馴染みですがリファクタリングが便利です。
> スコープ内の変数名の変更が定番ですが、クラス名などグローバルな
> 名前は型情報からプロジェクト全体のリファクタリングをしてくれます。
> (上述したとおり静的言語ほど正確ではないので、大規模な変更は実用的ではない)


この正確でないというのが問題で、結局人が判断する部分が多くなる。
大規模な変更は実用的ではないのは何故かと言うと
大規模=変更箇所が多い=人が判断する場所が多いので
正しいこと判断するのが大変
0408デフォルトの名無しさん
垢版 |
2017/12/19(火) 00:41:45.22ID:cabpZd/N
出来る出来ないの話じゃないって自分で言い出してからまだ30分も経ってないのに、
出来る出来ないの話に戻したな
これでは誰もアンチを信じてくれないわ
0409デフォルトの名無しさん
垢版 |
2017/12/19(火) 00:46:31.62ID:si5W7uAD
動的言語がなぜリファクタリングに弱いかというと
いつクラスの定義が定まるかを考えてみればわかる

まずリファクタリングというのはソースコードを修正する
そしてクラスの定義はソースコードから生成される

この時、ソースコードからクラスの定義が単純に決まれば良いのだが
動的言語では、実行するまでクラスの定義が決まらない

ならば実行すればいいと思うかもしれないが、何をどう実行すれば
クラスの定義が定まるのかを知る方法がない

つまりクラスをリファクタリングする場合、
クラスの完成形を知ることができないので、
人間が判断するしかなくなってしまい時間がかかる
0410デフォルトの名無しさん
垢版 |
2017/12/19(火) 00:47:31.81ID:OxL2RNB7
>>409
長文はいいから自分のスレへ帰れ
ここはおまえの日記帳じゃない
0411デフォルトの名無しさん
垢版 |
2017/12/19(火) 00:48:21.71ID:si5W7uAD
>>408
> 出来る出来ないの話に戻したな
いつ俺が出来る出来ないの話に戻した?

実際にRubyMineを使っている人が、
出来ないって言ってるって話?
0412デフォルトの名無しさん
垢版 |
2017/12/19(火) 00:49:30.71ID:OxL2RNB7
>>411
アンチが初心者スレで暴れるなら
0413デフォルトの名無しさん
垢版 |
2017/12/19(火) 00:49:36.49ID:si5W7uAD
>>410
> ここはおまえの日記帳じゃない

そりゃ俺の日記帳じゃないよw
みんなの日記帳だよ

便所の落書きなんていい方もされているが
俺はその言い方は好きではない
0418デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:01:02.38ID:cabpZd/N
アンチスレで好きなだけやれ
ここはお前のようなアンチのためのスレではない
0421デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:05:19.68ID:cabpZd/N
見えない敵と闘っていないでアンチスレへ帰れ
そこなら好きなだけ自演しても誰も文句を言わないから
0422デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:06:10.31ID:si5W7uAD
はっきり言わないと理解できないのかな?
俺はアンチスレには行きません
何度言われてもね
0423デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:09:10.98ID:cabpZd/N
アンチやりたいならアンチスレへ行け
ここは初心者のためのスレだ

初心者を騙すためのスレではない
0428デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:14:15.45ID:si5W7uAD
荒らしてないよ?
Rubyでリファクタリングは静的言語よりも
大変だって話をしてる
0429デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:15:12.45ID:cabpZd/N
初心者スレじゃないと話せないことなのか?
アンチスレでは話せないのか?
0430デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:17:14.70ID:si5W7uAD
初心者スレ以外でも話せるよ
ただしアンチじゃないからね。Rubyの特徴を言っているだけ
アンチスレ以外のRubyスレどこででも話をする
0431デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:19:57.23ID:cabpZd/N
お前のやってきたことはアンチ以外の何者でもないんだが

これからも、同じ事を続けていく気か?
0433デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:23:17.40ID:cabpZd/N
つまり、他の人にアンチ行為と受止められていると判ってて、
故意に続けるわけだな?
やめる気は無いのか?
0435デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:25:41.82ID:cabpZd/N
他の人に故意に不快を与える行為を続けるという事だね
板やレスの利用等を理解しているか?
0437デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:29:43.14ID:cabpZd/N
つまり、わかった上でやっているという事だね

それと、いまさらだがruby初心者?
0439デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:32:59.85ID:cabpZd/N
つまりRuby初心者だから間違ったことを言っていたという事だね

それはつまり、これからも間違った事を言い続けるって事かな?
0441デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:36:06.55ID:cabpZd/N
その返答は、今後は反省して間違ったことを言わない、って事を意味しているのかな?
0442デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:39:05.84ID:si5W7uAD
           __
        , ‐' ´   ``‐、             / ̄:三}
.     /,. -─‐- 、.   ヽ        /   ,.=j
 _,.:_'______ヽ、 .!       ./   _,ノ
  `‐、{ へ  '゙⌒ `!~ヽ. !     /{.  /
    `! し゚  ( ゚j `v‐冫   , '::::::::ヽ、/     そんなことより野球しようぜ!
.    {.l   '⌒      ゙ 6',!   / :::::::::::::::/ __
.     〈  < ´ ̄,フ  .ノー'_ , ‐'´::::::::::::::;/ (_ノ)‐-、
.      ヽ.、 ` ‐", ‐´‐:ラ ':::::::::::::::: ;∠.   ヽ_}  ゙ヽ
        ,.r` "´  /:::::::::::::::::::ィ´  `ゝ  !、  /
     /       / :::::::::::::::: ; '´   /´\ /   r'\
.     i      ! ::::::::::::::/ 墨 | .!::::::::/ヽ、.._!ヽ. ヽ、
     {      {:::::::::::;:イ /   ‖i:::::::/:::::::::::::/  \
.      ヽ       ヽ,.ァ‐'´ /ヽ 二 ,/`ヽ、::::::::: /
0443デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:41:22.11ID:cabpZd/N
君は、いままでアンチを繰り返し多くの人を故意に不快にさせてきたわけだが、
今後も続けるのかい?
0444デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:42:11.51ID:si5W7uAD
飽きた、>>409まで内容巻き戻すわ

動的言語がなぜリファクタリングに弱いかというと
いつクラスの定義が定まるかを考えてみればわかる

まずリファクタリングというのはソースコードを修正する
そしてクラスの定義はソースコードから生成される

この時、ソースコードからクラスの定義が単純に決まれば良いのだが
動的言語では、実行するまでクラスの定義が決まらない

ならば実行すればいいと思うかもしれないが、何をどう実行すれば
クラスの定義が定まるのかを知る方法がない

つまりクラスをリファクタリングする場合、
クラスの完成形を知ることができないので、
人間が判断するしかなくなってしまい時間がかかる
0445デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:43:46.18ID:cabpZd/N
ではもう一度聞こう
今後は反省して間違ったことを言わない、という意思はあるのかな?
0448デフォルトの名無しさん
垢版 |
2017/12/19(火) 01:54:22.14ID:RoMU0mit
アンチスレに帰れよアンチ
0450デフォルトの名無しさん
垢版 |
2017/12/19(火) 03:08:47.58ID:GcPOv6XA
Ripper.sexp_rawからRipper.sexpに戻すと:stmts_add等が削られて微妙にやりにくい
全部rawの方でいい気がするがRipper.sexpってどういう時に使うんだ?
0451デフォルトの名無しさん
垢版 |
2017/12/19(火) 04:03:20.54ID:UdKVtF6e
あれてんなw
型の次は、リファクタリングかよ

初心者の内容か?

俺の場合GoFなんかで書き直したい病が持病です。
んでrspec漏れてしょうもないバグおこす。
ほどほどに持病と付き合おうw
0453デフォルトの名無しさん
垢版 |
2017/12/19(火) 05:28:28.56ID:GcPOv6XA
やっぱり表示用なんだ

それから出力された配列の操作なんだけど、
配列の中ごろ特定の要素を基に「上の配列に○○が在りかつ後ろの要素に△△があったら××」、
みたいな同定の仕方をしてるんだけど問題ある?
0455デフォルトの名無しさん
垢版 |
2017/12/19(火) 07:00:22.12ID:ykexPK2V
リファクタリングで香ばしい展開になっててわろた

オレがおっさんになったのが、たまたま住人がアホなのか、2ch民全体のレベルが下がったのか
0457デフォルトの名無しさん
垢版 |
2017/12/19(火) 07:38:28.19ID:yvsoeKM9
>>455
Rubyはとっつきやすい分、ニワカとか、簡単だと思って挫折した勘違い君も多いからな。
リファクタリングにしても、用語の定義とか目的知らずに書いてるなあ、ってのばかり。
きちんと理解しようと思ったら、ガウディ本(CTMCP)で計算モデルを理解するのがお勧め。
あと「リファクタリング:Rubyエディション」とかで、以下を把握できる。
・リファクタリングはプログラム改善に使われることが多い。
・数多ある改善基準のうち、リファクタリングは何を対象にしているのか?
・改善手法は、計算モデルと、改善の目的により様々。
0458デフォルトの名無しさん
垢版 |
2017/12/19(火) 10:23:42.83ID:si5W7uAD
>>457
なんかリファクタリングを理解してないようにみえる。

リファクタリングと計算モデルがどうつながるのか説明してみ
その後、あんたの意見と同等の話をしているサイトを言ってみ

リファクタリングと計算モデルは
ほとんどつながりがないことがわかるからさ
0459デフォルトの名無しさん
垢版 |
2017/12/19(火) 12:22:26.77ID:B3Kk66cH
結局、荒らしはアンチスレに帰らんかったのか
そりゃアンチスレも落ちぶれるわ
0460デフォルトの名無しさん
垢版 |
2017/12/19(火) 22:13:01.86ID:5rvtlxA7
>>428
>Rubyでリファクタリングは静的言語よりも
>大変だって話をしてる

いいや、している話は:
  「動的型付け言語は静的型付け言語よりも大変だ」
だよ
その主張は(個人的には)認めるけど、それだけでRubyスレに
粘着するのは荒らし行為そのものではないかな?
  http://hissi.org/read.php/tech/20171219/c2k1Vzd1QUQ.html

それだけ「動的型付け言語におけるリファクタリング」に関心があるなら、
>>107 で紹介した専用スレへ移動すべきだよ
0461デフォルトの名無しさん
垢版 |
2017/12/20(水) 00:18:03.50ID:n7Ixbq8J
>>460
俺はそんなことは言ってないので他人の意見だね
Rubyが大変なのはソースコードを読むときだよ。書くときは比較的楽。
楽の意味がわからないなら、タイプ数が少ないと言い換えても良い

Rubyは書くときは楽で、読むときは大変
静的型付け言語はその逆

理由はまんまだが型という情報が書いてあるから。
情報を多く書かなければいけない静的型付け言語は大変で
でも情報が多く有るから静的型付け言語はわかりやすい

ただし前提として複数のモジュール(クラス等)から成り立ってる場合と
言ったほうが良いかもな。ローカル変数なんかは型が書いて無くても
すぐ近くにコードがあって該当の関数しか見なくていいから型がなくても大丈夫

一番の問題は複数モジュールから成り立っていて、特に別ファイルに分かれている場合
こういうのはドキュメントとして型情報を書いておかないと、わけわからなくなる
だけどドキュメントとして型情報書くなら、タイプ数は静的型付け言語より多くなってしまうので本末転倒


Rubyは書くときは楽(ドキュメントを書かないという前提)で、読むときは大変
ドキュメントを書くなら、それはソースコードに一元化した方がいいよって話になる
0464デフォルトの名無しさん
垢版 |
2017/12/20(水) 02:10:20.76ID:wlycKVFQ
rubyの可読性のよさには感動する

DSLとかすごい

たまーにendだらけになるのは難点w
0465デフォルトの名無しさん
垢版 |
2017/12/20(水) 02:23:39.76ID:Jv20jxkb
動的にリファクタリングさせるコード書いてるけど、
書けないやつはrubymine使えば良くね?
0466デフォルトの名無しさん
垢版 |
2017/12/20(水) 02:51:18.20ID:s+zCj7ov
配列の操作そのものが難しいと勘違いしてるんじゃないか?
配列の操作に使うコードって大概は下みたいに10行前後で書けるだろ
class Array
def acces(ary = [])
return self if ary.empty?
colect_int = ary.dup
result = self[colect_int.shift]
return colect_int.empty? ? result : result.acces(colect_int)
end
end
0467デフォルトの名無しさん
垢版 |
2017/12/20(水) 05:23:54.83ID:Jv20jxkb
配列が苦手とか言われても
パーサから順にイベントを渡されて処理するより明らかに難易度低いだろ
0468デフォルトの名無しさん
垢版 |
2017/12/20(水) 06:54:28.40ID:6Esz8d8C
今のところ、リファクタリングについて誰ひとり説明できてないぞ?
もっとシンプルに表現できるだろw
0469デフォルトの名無しさん
垢版 |
2017/12/20(水) 08:05:26.87ID:DZ3d9p1Y
>>468
というお前さんも説明出来ない訳だが。
0470デフォルトの名無しさん
垢版 |
2017/12/20(水) 08:07:18.11ID:DZ3d9p1Y
>>458
数十レスも書いといて「リファクタリングとはこういうものだ」とすら書けない奴が何か言ってる。
0471デフォルトの名無しさん
垢版 |
2017/12/20(水) 08:45:35.24ID:Za3FAu+s
おい無職
自演はやめとけ
0473デフォルトの名無しさん
垢版 |
2017/12/20(水) 18:57:50.54ID:2lbW5JOk
RubyVM::InstructionSequence.compile("class Hoge end").eval
のコードを実行したら直後に
p Hoge.new
って問題無く書けるのか
コンテクストが別々だと勘違いしてた
0476デフォルトの名無しさん
垢版 |
2017/12/20(水) 22:48:45.50ID:4hmeAMNm
>>466
> 配列の操作そのものが難しいと勘違いしてるんじゃないか?
> 配列の操作に使うコードって大概は下みたいに10行前後で書けるだろ

書けてないだろ?
それ何の処理するコードだよ

[1,2,3].acces([])
=> [1, 2, 3]

[1,2,3].acces([1])
=> 2

[1,2,3].acces([1,2])
NoMethodError: undefined method `acces' for 2:Integer
from (irb):6:in `acces'
from (irb):29
from C:/Ruby24-x64/bin/irb.cmd:19:in `<main>'

お前がそれじゃ、配列は難しいという結論にしかならんぞ
0477デフォルトの名無しさん
垢版 |
2017/12/20(水) 22:56:44.83ID:4hmeAMNm
>>468
> 今のところ、リファクタリングについて誰ひとり説明できてないぞ?
> もっとシンプルに表現できるだろw

ソフトウェアの外部的振る舞いを保ちつつ、理解や修正が簡単になるように、内部構造を改善すること


補足を追加するならば、
振る舞いを保てていればいいので、アルゴリズムを変えてもOK
というか、無駄があったりしてわかりにくいアルゴリズムを
理解や修正が簡単になるように書き換えることもリファクタリングの一つ

何が言いたいかというと、リファクタリングはパースした結果が
一致するように書き換えることではないということ
パースできたからといって、リファクタリングができたことにはならない
0479デフォルトの名無しさん
垢版 |
2017/12/21(木) 01:18:36.01ID:l5/5gdQz
>>477
アンチスレへ帰れ
おまえが働いていないのはわかったから
0480デフォルトの名無しさん
垢版 |
2017/12/21(木) 01:42:59.97ID:prpojwIY
>>479
いい加減学習しよう

422 自分:デフォルトの名無しさん[sage] 投稿日:2017/12/19(火) 01:06:10.31 ID:si5W7uAD [10/23]
はっきり言わないと理解できないのかな?
俺はアンチスレには行きません
何度言われてもね
0482デフォルトの名無しさん
垢版 |
2017/12/21(木) 02:49:55.63ID:l5/5gdQz
>>480
初心者を騙していないではやくアンチスレへ帰れ
デマばかり垂れ流しやがって
0483デフォルトの名無しさん
垢版 |
2017/12/21(木) 03:03:06.96ID:h5j2wgPh
例えば、構造やサイズが変わる多次元配列の要素を辿って行く必要がある場合、
添え字だけ集めて一括指定で辿れる様にするのって普通?
0485デフォルトの名無しさん
垢版 |
2017/12/21(木) 12:10:12.13ID:ow9tew52
>>477
>ソフトウェアの外部的振る舞いを保ちつつ、理解や修正が簡単になるように、内部構造を改善すること

オブジェクト指向知らないやつがググってコピペか・・・つまらん。
0488デフォルトの名無しさん
垢版 |
2017/12/21(木) 18:29:48.77ID:ztrEyuDD
文字列に対して
・0〜9の一桁の数であれば頭に0を付け足す(例:00,01
・10以降はそのまま
という処理を行いたいんですが、正規表現でスパッとかけたりするんでしょうか
イメージとしては
text = "9"なら09
text = "10"なら10
として出力(print)がしたいです
gsubで置換できないか試しているのですがうまいこといかず・・・
アドバイス頂けますと幸いです
0489デフォルトの名無しさん
垢版 |
2017/12/21(木) 18:34:23.75ID:2OtOKx8R
正規表現よりも sprintfフォーマットを使おう
puts "%02d, %02d,%02d,%02d" % [1,5,10, 100]
#=> 01, 05,10,100
0491デフォルトの名無しさん
垢版 |
2017/12/21(木) 18:51:00.27ID:2OtOKx8R
ちなみにあえてgsubでやるなら
'1'.gsub(/^(?=\d$)/, '0') #=> "01"
'42'.gsub(/^(?=\d$)/, '0') #=> "42"
0492デフォルトの名無しさん
垢版 |
2017/12/21(木) 18:51:08.76ID:8yE94KQ4
%w(0 1 5 9 11 99 108 1024 16384).each do |x|
  p x.sub(/^([0-9])$/) { "0#$1" } # キャプチャを使った例
  # p x.sub(/^(?=[0-9]$)/) { "0" } # 先読みを使った例
  # p "%02d" % x.to_i # 整数値に変換して書式文字列を使った例
end

"00"
"01"
"05"
"09"
"11"
"99"
"108"
"1024"
"16384"
0493デフォルトの名無しさん
垢版 |
2017/12/21(木) 19:24:42.40ID:gRGJJy1x
ありがとうございます!sprintf、こういう風に使えるのですか。便利ですね・・・
正規表現での場合も教えていただきありがとうございました
勉強になりましたm(_ _)m
0495デフォルトの名無しさん
垢版 |
2017/12/21(木) 19:32:53.88ID:aIK1VRoC
正規表現は後で泣くからなるべく使わないほうがいい。
もし使うのなら
複雑のは避けて
シンプル+シンプルと組み合わせて使うといい。
0497デフォルトの名無しさん
垢版 |
2017/12/21(木) 22:24:14.24ID:OUKJWky+
>>461
>俺はそんなことは言ってないので他人の意見だね

いいや、もろに言ってるよ
君のレスに含まれるRubyという単語を改変してみた:

  >動的型付け言語が大変なのはソースコードを読むときだよ。書くときは比較的楽。
  >楽の意味がわからないなら、タイプ数が少ないと言い換えても良い
   :
  >理由はまんまだが型という情報が書いてあるから。
  >情報を多く書かなければいけない静的型付け言語は大変で
  >でも情報が多く有るから静的型付け言語はわかりやすい

なんら違和感もないだろう?あいも変わらずごく当たり前な一般論を語っているだけ

さあ、Rubyに限定されない「動的型付け言語におけるリファクタリング」を
語りたいのなら、このスレに粘着せず、>>107で紹介した専用スレへ移動しなさい
0498デフォルトの名無しさん
垢版 |
2017/12/21(木) 22:29:08.65ID:prpojwIY
>>497
改変しておいて、俺が言ってるとか意味不明
改変しなければ、言ってないってことじゃないか
0499デフォルトの名無しさん
垢版 |
2017/12/22(金) 10:53:32.70ID:zY/Ujd0Y
496から498までの自演を見てると小学生の演劇見せられてる気分になる

って事で晒しage
0500デフォルトの名無しさん
垢版 |
2017/12/22(金) 15:56:43.92ID:o0zFMz04
>>497
>>461 はたぶんちょっと勘違いしてる。

単純に静的言語はコンパイルである程度構文エラーを検出できるから楽を、
リファクタリングが楽だと思ってるんじゃないかな

リファクタリングの考え方は言語は関係ないよ
0502デフォルトの名無しさん
垢版 |
2017/12/22(金) 16:08:37.20ID:OF22/s+V
ruby2.5は何が来るかな
0503デフォルトの名無しさん
垢版 |
2017/12/22(金) 17:59:37.34ID:2CqGXpCv
これでTypeScriptやPython方式の型ヒンティングが来たらコミュニティが大荒れするだろうな
0504デフォルトの名無しさん
垢版 |
2017/12/22(金) 18:04:00.26ID:hLTr5w9I
Ruby 2.5.0-rc1 リリース (12月14日)
https://www.ruby-lang.org/ja/news/2017/12/14/ruby-2-5-0-rc1-released/

★ 新機能 ★
* バックトレースおよびエラーメッセージが逆順に出力されるようになった (Railsゴリ押し?)
* トップレベルにおける定数検索の削除
* rescue/else/ensure が do/end ブロック内にも直接書けるようになった
* yield_self の追加

★ パフォーマンスの改善 ★
(略...

★ その他の注目すべき 2.4 からの変更点 ★
* Onigmo 6.1.3 の取り組み (実際は Ruby 2.4.1 にて取り込み済み)
* bundler の取り込み
その他略...

詳細は https://github.com/ruby/ruby/blob/v2_5_0_rc1/NEWS に書かれてる

☆彡 ☆彡 ☆彡 ☆彡 ☆彡

第三者の記事:
* サンプルコードでわかる!Ruby 2.5の主な新機能と変更点 https://qiita.com/jnchito/items/f182b6f0093a6a3701a1
0506デフォルトの名無しさん
垢版 |
2017/12/22(金) 21:24:19.52ID:6yk8gXaG
>>500
> 単純に静的言語はコンパイルである程度構文エラーを検出できるから楽を、
> リファクタリングが楽だと思ってるんじゃないかな

違うよ。静的型付け言語の場合が簡単なのは、
ソースコード上に型が書いてあるからだよ
コンパイルエラーは関係ない

例えば

class Klass {
0507デフォルトの名無しさん
垢版 |
2017/12/22(金) 21:28:48.59ID:6yk8gXaG
(間違って途中で送信した)

例えば

class Klass {
  function foo() { }
}

みたいなクラスがあって、
fooをbarに書き換える時

↓ このように型が書いてあれば、ここのfooもbarに
書き換えなきゃいけないとわかる

function f(Klass k) {
 k.foo();
}


↓ でもこの場合は、書き換えれば良いのかわからない

function f(k) {
 k.foo();
}

ソースコード全体から、fを呼び出している所をすべて探して
引数にKlassクラス(もしくはそれを継承したクラス)を
渡していることを確認しなければいけない
0508デフォルトの名無しさん
垢版 |
2017/12/22(金) 21:38:46.01ID:6yk8gXaG
今回は一番簡単な例としてメソッド名の変更を例にしたが
例えば、メソッドの引数の数が変わったときも
型がわかれば、メソッドが特定できるので、変えなければいけない場所がわかる
メソッドが消えたこともわかる
クラス名で検索すれば、そのクラスを使ってるモジュールもわかるしね

シグネチャの変更に関わる部分は、静的型付け言語の場合は
すごく簡単に変更すべき場所を特定できる
0510デフォルトの名無しさん
垢版 |
2017/12/22(金) 21:42:20.33ID:2CqGXpCv
Rubyの静的解析の難しさに関して言えば、単にソースに型が書いてないというだけではないんだよなあ
Rubyって、静的なクラス定義というのがそもそも存在しないんだよ
動かしてみて、RubyのVMのメモリ上に結果としてクラスオブジェクトができて、そこではじめてクラスが定義されたことになるの
この式のクラスは何か?とか考える以前に、クラスなんてものは動かしてみるまで無いの
0511デフォルトの名無しさん
垢版 |
2017/12/22(金) 21:48:13.59ID:6yk8gXaG
そう。それもあるね。

動くか、動いてないかの二択じゃないか?って
思うかもしれないがぜんぜん違う。

動いてない状態というのは一つしかないが、
動いている状態というのは無限に近い数ある
「0」と「0以上」の違いと同じ

動いてないという一つの状態なら、全部を調べることも可能だが、
動いているという無限にある状態は、調べ上げることは不可能
0512デフォルトの名無しさん
垢版 |
2017/12/22(金) 22:04:35.06ID:5nY8hqH+
>>498
Rubyの箇所をJavaScriptやPythonといった他の動的型付け言語へ
改変しても当てはまる事柄しか語っていないと指摘しているんだよ
以下 >>506-509 まで、Rubyには限定されないありふれた一般論が続く


>>501
つまり、そうゆうこと


>>511
>Rubyって、静的なクラス定義というのがそもそも存在しないんだよ

これも「動的型付け言語って、静的なクラス定義というのがそもそも存在しない」という話だね
Rubyに限らずJavaScriptやPythonといった他の動的型付け言語であれば、
「クラスなんてものは動かしてみるまで無い」のが動的型付けの原理だよ
0513デフォルトの名無しさん
垢版 |
2017/12/22(金) 22:17:37.91ID:6yk8gXaG
「クラスなんてものは動かしてみるまで無い」かもしれないが、
「仕様(やりたいこと)は動かしてみなくてもある」

ソースコードは動かさなくても「そのクラスは○○であること」
(○○にはメソッドが有ることとかはいります)を前提に
書いてあるというのに「動かしてみるまで無い」ことに意味があるのだろうか
0515デフォルトの名無しさん
垢版 |
2017/12/22(金) 22:25:46.71ID:6yk8gXaG
>>514
反論して良いんだよ?
Railsがなんだって?

普通はデータベースにそのフィールドが
有るという前提でコード書くよね?
0517デフォルトの名無しさん
垢版 |
2017/12/22(金) 22:32:17.34ID:6yk8gXaG
>>516
DBのスキーマを実行時に変えたりすることなんてまず無いだろ
実行前にスキーマは決まってる。
ならクラスも実行前に生成することは可能なわけだが?

Railsが実行後に決めているからと言って、実行時に決まることにはならない
スキーマは実行前に決まっているし、今話してるソースコードだって
そのフィールドが存在するという前提のソースコードを書いてるだろ
動的に生成してるその情報は、本当は実行前に決まってるんやで?
0518516
垢版 |
2017/12/22(金) 22:43:01.67ID:2CqGXpCv
可能かどうかとやるかどうかは別問題だろう
それRuby3の型検査の仕様として提案してみろ、このスレどころではなく罵倒と嘲笑の的だぞ
0519デフォルトの名無しさん
垢版 |
2017/12/22(金) 22:44:49.43ID:6yk8gXaG
>>518
これのどこが型検査の仕様なんだ?
そりゃ馬鹿にされるだろうな
型検査の仕様だと言ったお前が
0520デフォルトの名無しさん
垢版 |
2017/12/22(金) 22:49:53.16ID:6yk8gXaG
動的言語といっても本当に動的に決まることはほとんどなく
静的に決まってる情報を元に動的に作ってるだけなんだよな。

だから実行するたびに毎回同じものが作られる。
毎回同じものを作るなら、キャッシュするかのように
最初から作っておけば良いわけさ
0521デフォルトの名無しさん
垢版 |
2017/12/22(金) 22:50:08.15ID:2CqGXpCv
>>519
DBスキーマまで考慮したメタプログラミング対応の静的解析ツールを作るってこと?
実用的なものができると本気で思うなら作ればいいんじゃね?
みんな喜ぶし、そんな実績があればそれこそMRIの主要メンバーとしてRuby3の仕様決定を主導できるぞ
頑張れよ
0522デフォルトの名無しさん
垢版 |
2017/12/22(金) 23:01:34.92ID:6yk8gXaG
>>521
だから動的言語の仕様じゃ無理だって話してるじゃんw

ソースコードにクラスという型を書いてあるから多くのリファクタリングが簡単に出来るようになる
静的に決まってるならソースコードに静的に書けるわけで、
静的に書いておけば、リファクタリングが簡単に早くできるって話をしてる
0523デフォルトの名無しさん
垢版 |
2017/12/22(金) 23:36:34.81ID:5nY8hqH+
>>522
だからそれはRubyだけでなくJavaScriptやPythonを含む
大半の「動的型付け言語じゃ無理だ」っていう当たり前の話だろ?
0526デフォルトの名無しさん
垢版 |
2017/12/23(土) 07:28:35.18ID:SJqo2RLv
リファクタリングはシンプルにしていくのが目的なのに、話を小難しく複雑にしたいのはなぜだ
>>512 とか。

動的言語うんぬんゆってるやつから不吉な匂いがする
0527デフォルトの名無しさん
垢版 |
2017/12/23(土) 10:11:10.96ID:f0qvO5Sa
>>526
リファクタリングは、シンプルにしていくのが目的
だから、話を小難しく複雑したくない?

シンプルにしたいのはリファクタリングであって
「話」の話は関係ないよ
0531デフォルトの名無しさん
垢版 |
2017/12/23(土) 10:58:49.51ID:YmDQ4aAw
Rspecで下みたいな書き方ってあり?
それとも避けられる?

# def f n
# n + n
# end

context 'fの引数が0から255のとき' do
??256.times do |i|
????it { expect( f(i) ).to eq (2 * i) }
??end
end
0532デフォルトの名無しさん
垢版 |
2017/12/23(土) 11:05:45.83ID:QLWK33W3
>>531
テストの一般論で言えばダメ
それ結局同じことを実装とテスト両方に書いてるだけで、テストとして意味をなしてない
テストは入出力ともどんな低脳か見ても間違えようのない具体的な値を書くのが鉄則
0533デフォルトの名無しさん
垢版 |
2017/12/23(土) 11:10:32.49ID:YmDQ4aAw
>>532
じゃあもし0から255まで全部パスするか書きたいときは
it { expect( f(0) ).to eq (0) }
it { expect( f(1) ).to eq (2) }
...
ってズラっと列挙しろってこと?
0534デフォルトの名無しさん
垢版 |
2017/12/23(土) 11:14:45.72ID:QLWK33W3
あと、「nの2倍を返す」という観点と「入力は0から255まで」という観点がごっちゃになってるのも良くない
この場合、前者を代表値(5とか)でテストして、それに加えて後者の観点で境界値(0と255)を試すくらいでいいと思うよ
代表値は冗長かもしれないけど前者の観点をわかりやすく表現するという意味では価値はある
0535デフォルトの名無しさん
垢版 |
2017/12/23(土) 11:18:46.43ID:LnjVX11P
プロパティテストにしろよ。
0538デフォルトの名無しさん
垢版 |
2017/12/23(土) 15:29:55.01ID:UWK7YGb5
荒らしがハッスるしとる
やっぱアンチも人のいないアンチスレより人の多い本スレに来てしゃべりたいのか

かわいそう
0539デフォルトの名無しさん
垢版 |
2017/12/23(土) 15:32:00.40ID:f0qvO5Sa
あ、いや、いままでとちょっと違うことを書き込もうと思ったけど
ID変わってたかなーって思っただけ
変わってなかったので違う話はしないよw
あと他のスレには行かないと何度もいってる
あきらメロン
0540デフォルトの名無しさん
垢版 |
2017/12/24(日) 09:48:03.56ID:24EH1p52
https://rubyinstaller.org/downloads/

Windows10 に、Ruby を入れようと、
上のページの、7-Zip Archives から、Ruby 2.4(x64)をダウンロードすると、
rubyinstaller-2.4.3-1-x64.7z というファイル名だった。
これを、7-Zip で解凍すると、56MB になった

C:\Ruby24-x64\
とフォルダ名を変えたけど、ここからどうやってインストールするの?

それとも、これはインストーラーではないのかな?
0541デフォルトの名無しさん
垢版 |
2017/12/24(日) 10:02:29.66ID:naA/wMe4
環境を書いてから
何したいかを言え
0543540
垢版 |
2017/12/24(日) 10:48:40.19ID:24EH1p52
圧縮された書庫だから、7-Zip Archives から、Ruby 2.4(x64)をダウンロードしたけど、
これはインストーラーとは違うものなのか?
rubyinstaller-2.4.3-1-x64.7z というファイル名だったけど

7-Zip Archives の上にある、RubyInstallers から、Ruby 2.4(x64)をダウンロードしてみるわ
0544540
垢版 |
2017/12/24(日) 11:01:29.86ID:24EH1p52
PowerShell で、7-Zip Archives 中の、\bin\ridk.ps1 version を実行してみた

PS C:\Ruby24-x64\bin> .\ridk.ps1 version
---
ruby:
path: C:/Ruby24-x64
version: 2.4.3
platform: x64-mingw32
ruby_installer:
package_version: 2.4.3-1
git_commit: 36aac73
os: Microsoft Windows [Version 10.0.16299.125]

やっぱり、これも、RubyInstaller なのかな?
よくわからない
0545デフォルトの名無しさん
垢版 |
2017/12/24(日) 11:02:00.42ID:A3ERayLu
Rubyにパイプラインオペレータってないの?

JavaScriptだと

exclaim(capitalize(doubleSay("hello")));
というカッコの入れ子が

"hello" |> doubleSay |> capitalize |> exclaim;

とシェルスクリプトのパイプのように
流れるような形で記述できるようになるらしいんだけど
0546デフォルトの名無しさん
垢版 |
2017/12/24(日) 11:05:46.33ID:mMj7aGtc
>>545
そんなのがあると誰もオブジェクト指向しなくなるからRubyの思想には合わないだろ
素直にメソッドチェインでやるか、さっさと関数型言語に乗り換えるべき
0547540
垢版 |
2017/12/24(日) 11:08:13.75ID:24EH1p52
7-Zip Archives からダウンロードした、Ruby 2.4(x64)は、
ひょっとして、CUI 版のインストーラーなのかな?
(rubyinstaller-2.4.3-1-x64.7z というファイル名だった)

7-Zip Archives 中の、\bin\ridk.ps1 に引数を付けて、
インストールするのかも知れない

よくわからないけど。
インストーラーじゃないかも知れないし
0550540
垢版 |
2017/12/24(日) 11:29:56.75ID:24EH1p52
7-Zip Archives から、Ruby 2.4(x64)をダウンロードすると、
rubyinstaller-2.4.3-1-x64.7z というファイル名だった。
これを、7-Zip で解凍すると、56MB になった

56MB もあるし、\bin の中には、ruby.exe, rubyw.exe もある。
実行環境が揃っているような気もする

実はポータブル版で、環境変数PATH を通せば、実行できるのかも知れない

よくわからないけど、何か捨てがたいw
0551540
垢版 |
2017/12/24(日) 11:37:26.57ID:24EH1p52
PowerShell で、7-Zip Archives 中の、\bin\ruby.exe -v を実行してみた

PS C:\Ruby24-x64\bin> .\ruby.exe -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [x64-mingw32]

やっぱり、7-Zip Archives の中にあるやつは、ポータブル版じゃないのか?
ひょっとして、実行もできるかも?
0552デフォルトの名無しさん
垢版 |
2017/12/24(日) 12:51:21.82ID:W/aeQ+z1
実行できて当たり前なのに何を言っているのか
インストーラーはパスを通したりするだけだぞ
0553540
垢版 |
2017/12/24(日) 13:37:01.71ID:24EH1p52
7-Zip Archives からダウンロードした、Ruby 2.4(x64)は、
環境変数PATH が通っていないだけで、実行できるの?

ここに、実行環境が一式が揃っているの?
つまり、どこにでも移動できるポータブル版?
0554デフォルトの名無しさん
垢版 |
2017/12/24(日) 13:55:33.60ID:A3ERayLu
>>548
期待したけど、やっぱりRubyの文法からは抜け出せないか
DSLが得意と言っても所詮Rubyの言語であることに変わりはないしな
0555デフォルトの名無しさん
垢版 |
2017/12/24(日) 13:58:58.91ID:A3ERayLu
>>546
まあ頭が固いw

a + b はオブジェクト指向じゃないっていうんですか?
a.add(b) ってしなきゃいけないですね
0556デフォルトの名無しさん
垢版 |
2017/12/24(日) 14:12:36.12ID:BNj/0IJ2
>>555
Rubyに文句を言う前にまずはRubyの仕様くらいちゃんと理解しよう
+は全く特別なところのないごく普通のインスタンスメソッド呼び出しだぞ
関数型でaddにパイプライン使うとしたら
b |> add(a) # add(a, b)に相当
こうなるわけだが、理解してるか?
0557デフォルトの名無しさん
垢版 |
2017/12/24(日) 14:15:02.58ID:A3ERayLu
>>556
まあ君はJavaScriptの仕様を知らなくて当然だろうけどね

|> オペレータっていうのは、引数を一つの関数呼び出しの
シンタックスシュガーに過ぎない
だから関数呼び出しを行ってるのと一緒

関数呼び出しをするとオブジェクト指向にならないのか?
そんなわけあるかw
0558デフォルトの名無しさん
垢版 |
2017/12/24(日) 14:29:26.20ID:BNj/0IJ2
>>557
ある機能が言語に追加されることでコーディングのスタイルが大きく変わってしまうことはよくある。
まあそういう経験則的な話は君には通じなそうだから、もっと具体的にRubyとの相性の悪さを説明してあげよう。
まず、関数型言語やJavaScriptでは裸の関数名は第一級関数(関数オブジェクト)だが、Rubyではメソッド呼び出しになってしまう。
だから>>548のようにシンボルを使った汚いハックをするか、|>の後にくる識別子は第一級関数として扱うという特別ルールを設けることになる。
特別ルールを設けたとしても、>>556のaddの例みたいな使い方には対応できない。
君は関数型言語を知らないみたいだから説明しとくと、add(a)はadd関数の第一引数にaを部分適用(カリー化)した引数一個の関数を返す。
|>の直後には必ず関数名が来るというルールだと、これは実現できないのはわかるよね。
0559558
垢版 |
2017/12/24(日) 14:33:34.04ID:BNj/0IJ2
それと、Rubyの関数は殆どがインスタンスメソッドであるというのも忘れてはいけない。
x |> y.hoge
これは y.hoge(x) と解釈すべきだろうか?
それともy.hoge()(x)かな?
今のRubyの仕様からすると後者が自然だと思わない?
0560デフォルトの名無しさん
垢版 |
2017/12/24(日) 14:46:41.85ID:bBhW4Y9m
ようお前ら。
Ruby 2.5が来るのは明日だぞ。
gem作ってる奴はちゃんと準備出来てるか?
Ruby2.5にした途端に泣きを見ることのないようにしとけよ。
0561デフォルトの名無しさん
垢版 |
2017/12/24(日) 15:29:04.65ID:A3ERayLu
>>558
あ、なるほどw シンタックスシュガーって言ってるのに、
あんたは関数型の仕様に変更すると思い込んでるわけかw

俺、Rubyを関数型にしろなんて一言も言ってないよ?
JavaScriptが関数型になったなんて一言も言ってないよ?

ただ、関数呼び出しのネストは見づらいから、一つの引数を取る関数の呼び出しを
|> でつなげた "書き方" ができると良いねって話しかしてないんだよ

> 今のRubyの仕様からすると後者が自然だと思わない?
理由が書いてないから判断不可能だね

>>556
> 関数型でaddにパイプライン使うとしたら
> b |> add(a) # add(a, b)に相当
> こうなるわけだが、理解してるか?

ぷぷw |> という記号を使っだけで、関数型になるべきだなんて
思い込んでるからそういう結論になる。馬鹿だねぇ

JavaScriptの関数型でない単なるパイプラインオペレータは引数が1つの
関数を受け取ることしかできない。 カリー化?そんなものはしない。
関数型のパイプラインオペレータを導入なんて話はしてないんだから当然の結論

引数が複数の関数を使いたければ、アロー関数でそうなるように書くだけの話

https://github.com/tc39/proposal-pipeline-operator
let newScore = person.score |> double |> (_ => add(7, _)) # アンダースコアは只の変数、iでもaでも良い

papp proposalのpappメソッドを使うとこう書くこともできるようだけど
let newScore = person.score |> double |> add.papp(7)
0562デフォルトの名無しさん
垢版 |
2017/12/24(日) 15:52:11.56ID:2eVeUlKQ
>>554
Ruby使うんだから当たり前の話でそ?
Rubyじゃないスタイルでどうしても書きたいならすでにRubyを使う必要はないと思うんだけど
0564デフォルトの名無しさん
垢版 |
2017/12/24(日) 16:00:56.08ID:2eVeUlKQ
Juliaいいね。これから大注目の言語だよ
ただ、現状は起動が激重なのでJuliacとかが公式採用されないとつらいかも
そういう意味ではJavaに似てるのかも(言語仕様という意味ではなく)
0565デフォルトの名無しさん
垢版 |
2017/12/24(日) 16:12:39.10ID:BNj/0IJ2
Juliaはクソ重い計算やデータの処理を長時間ぶっ通しで動かすための言語だよ
Rubyと比べるようなもんではないし、起動時間が問題になるようなものに使うのも間違い
0566デフォルトの名無しさん
垢版 |
2017/12/24(日) 20:04:37.70ID:4g6ysjQ5
>>545
>流れるような形で記述できるようになるらしいんだけど

できるようになるといふのは、以下の提案かな?
・ESNext Proposal: The Pipeline Operator
 https://github.com/tc39/proposal-pipeline-operator

調べてみると、これはあくまで提案(proposal)であって、
5段階あるECMAScript(= JavaScript)仕様策定過程の2番目に過ぎない
 0. Strawman
 1. Proposal <― パイプライン演算子の状態
 2. Draft
 3. Candidate
 4. Finished
当然、現時点でその実装は存在しておらず「絵に描いた餅」に過ぎない
言い換えると、「こんなのできたらいいなあ」といふ話だよね?
0567デフォルトの名無しさん
垢版 |
2017/12/24(日) 20:35:54.14ID:4g6ysjQ5
>>561
>関数型のパイプラインオペレータを導入なんて話はしてないんだから当然の結論

え、こう書けないっていうの?
  let newScore = person.score |> double |> add(7)
もし pipeline proposal が Finished(採用決定)になったとしても、このコードを
  let newScore = person.score |> double |> (_ => add(7, _))
こうも冗長に書かなけりゃならないなんて、ダサイというか中途半端な提案だと思う

>>554の言葉を借りると:
  期待したけど、やっぱりJavaScriptの文法からは抜け出せないか
  新しい提案と言っても所詮JavaScriptの言語であることに変わりはないしな
っていう感想です

しかも更にpapp proposal(部分適用サポートの提案)がFinishedになったと仮定してもなお
  let newScore = person.score |> double |> add.papp(7)
こうなっちゃうなんて、もう少し練り直してから提案した方がいいと思うんだけどなぁ
0568540
垢版 |
2017/12/24(日) 22:02:54.10ID:24EH1p52
JS は、Ruby, Elixir の影響が強い。
Kotlin も、Groovy, Ruby の影響が強い

誰か、
>>540
の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)をどうすればよいのか、教えてほしい
0570デフォルトの名無しさん
垢版 |
2017/12/24(日) 23:05:16.75ID:A3ERayLu
>>567
> え、こう書けないっていうの?

少しは頭を働かせようよw

そこにある、add(7) が引数を一つ取る関数を返すなら書けるよ
それを汎用化したのがpapp。それにJavaScriptでカリー化する方法だってある

JavaScriptは関数型言語じゃないんだから、関数型言語の方からみて
ダサいとか言うなよw お前、関数型に洗脳されてるだろw

関数型を取り入れたなんて話はしてない。お前が言い出しただけ。
単にパイプラインオペレータという関数のネストを見やすくする機能を
追加するってだけの話
0571デフォルトの名無しさん
垢版 |
2017/12/24(日) 23:07:29.50ID:2eVeUlKQ
>>570
Rubyについてはこんな書き方しかできないのかと毒づいておいて、JavaScripitについては全力擁護
これをRubyスレでやらかしてたら荒らし認定を食らってもしょうがないレベルだぞ
0572デフォルトの名無しさん
垢版 |
2017/12/24(日) 23:12:18.94ID:A3ERayLu
>>566
> 当然、現時点でその実装は存在しておらず「絵に描いた餅」に過ぎない
知らないなら、知ったかぶりして語らないでよw

JavaScriptは5段階あるECMAScript(= JavaScript)仕様策定過程を
必ず0から一つづつ上げて行かないといけない
だからどんな仕様だって最初は0から始まる

こういう提案から仕様化されるまでのプロセスが明確になってるのは素晴らしいことだよ

で、Stage 1だが

https://azu.github.io/slide-what-is-ecmascript/slide/12.html
・プロポーザルの目的や解決方法を示す
・Polyfillやデモ等を用いて解説する

どういうことかというとPolyfillやデモ等があるってことだ。
わかりやすく言うと、すでに使う方法があるってことだ。それがこれ
https://www.npmjs.com/package/babel-plugin-transform-pipeline

なので絵に描いた餅ではない。絵に描いた餅はStage 0
その0を脱却して、すでに使う方法が出来たということ
0573540
垢版 |
2017/12/24(日) 23:16:34.36ID:24EH1p52
7-Zip Archives の所からダウンロードした、Ruby 2.4(x64)を解凍し、
C:\Ruby24-x64 に改名して、

Windows10 で、ユーザー環境変数に、C:\Ruby24-x64\bin を追加したら、
PowerShell で、ruby コマンドが使えるようになった

PS C:\Users\Owner\Documents\Ruby> ruby -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [x64-mingw32]

C:\Ruby24-x64\bin には、erb, gem, irb, rake, ruby.exe, rubyw.exe
などのコマンドがあるから、
7-Zip Archives の所にあるものも、Rubyのポータブル版の実行環境なのかも
0574デフォルトの名無しさん
垢版 |
2017/12/24(日) 23:17:27.23ID:2eVeUlKQ
>>572
でさ、結局何が言いたいの?
JavaScriptサイコーってのが言いたいのなら完全にスレ違いだよ
0575540
垢版 |
2017/12/24(日) 23:23:27.95ID:24EH1p52
ちなみに、rubyinstaller の 7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)は9MB で、解凍すると56MB になった

1/6 に圧縮されている
0577デフォルトの名無しさん
垢版 |
2017/12/25(月) 00:01:06.18ID:h6gXOlbY
>>570
>関数型を取り入れたなんて話はしてない。お前が言い出しただけ。

>>556 とは別人だけど、IDを確認できないほど冷静さを失っているのかな?

また、そもそも>>545の exclaim, capitalize, doubleSay という関数単位で部品化して
パイプライン演算子で組み立てるという発想そのものが関数型プログラミングであり、
それを自分(ID:A3ERayLu )から言いだしたという認識ができていないのかね?


>単にパイプラインオペレータという関数のネストを見やすくする機能を追加するってだけの話

だよね、関数型のパイプライン演算子と同じ名前だけど中身は微妙に異なるJavaScript固有の方言が
一つ提案されたという、ただそれだけの話
しかも最終的に採用されるか否かも確定すらしていない Proposal 段階でしかないといふ
0578デフォルトの名無しさん
垢版 |
2017/12/25(月) 00:21:34.94ID:mSK8fdnz
> また、そもそも>>545の exclaim, capitalize, doubleSay という関数単位で部品化して
> パイプライン演算子で組み立てるという発想そのものが関数型プログラミングであり、

関数呼び出しの形を変えただけ、
関数型プログラミングとは全く関係ない
0579デフォルトの名無しさん
垢版 |
2017/12/25(月) 00:25:59.73ID:h6gXOlbY
>>576
関数型言語のパイプライン演算子がサイコーという話なら同意するし、
それがオブジェクト志向言語であるRubyにとって今すぐ必要かどうかは別にして、
数ある将来のRuby構想に向けた提案の一つとして理解したい

でも >>561,570で自身(ID:A3ERayLu)が語っているように、
JavaScriptのそれは関数型ではないJavaScript固有の方言なんだろ?
JavaScriptが独自の道に進もうとしてるなら「どうぞお好きになさいませ」だし、
それにRubyも従うべきという話に至っては「何を考えてるの?」としか言えないね


>>570
>単にパイプラインオペレータという関数のネストを見やすくする機能を
>追加するってだけの話

どちらかというと日常的にカッコだらけになるのはPythonだから、
そちらへ提案した方がいいんではないかな
http://mevius.2ch.net/test/read.cgi/tech/1491491123/44-46

関数型プログラミングを公式文書で否定しているPythonだから、
関数型ではないパイプライン演算子の提案はきっと喜ばれるよ
0580デフォルトの名無しさん
垢版 |
2017/12/25(月) 00:38:42.38ID:W15ZQhn0
いずれにせよ>>559のようにメソッド呼出の括弧省略の問題があるからJavaScriptやCaml系のようなクリーンなシンタックスにはならないけどね
&:symbolとか->みたいなハック感溢れる醜い構文になる
0581デフォルトの名無しさん
垢版 |
2017/12/25(月) 01:02:31.40ID:h6gXOlbY
>>580
いや、オブジェクト指向言語のRubyなら、現時点でも
簡潔にメソッドチェーンで流れるようなコードが書ける

以下は>>545の例:
 https://ideone.com/aExbWe

refinements に関しては以下の記事が分かりやすかったのでご参考
・Ruby の refinements の使い途 - Qiita
 https://qiita.com/scivola/items/dc49d56c90fd0cb6d4d3

で、何かご不満はございますか?
0583デフォルトの名無しさん
垢版 |
2017/12/25(月) 01:05:56.92ID:mSK8fdnz
>>581
> で、何かご不満はございますか?

はい。

def foo(i); end
def bar(i); end
def baz(i); end

となっているものの baz(bar(foo(1)) という呼び出しを
メソッドチェーンで繋げないということです。

パイプラインオペレータならこの通り
1 |> foo |> bar |> baz
0584デフォルトの名無しさん
垢版 |
2017/12/25(月) 01:53:39.67ID:h6gXOlbY
>>582
>JavaScriptは元から関数型じゃないし

うーみゅ、やっぱりJavaScriptって誤解されてるのね
・クロージャって何がいいの?
http://mevius.2ch.net/test/read.cgi/tech/1415419907/224

リンク切れ邦訳版「JavaScriptの勉強:世界で最も誤解されたプログラミング言語」
http://web.archive.org/web/20130120204931/http://d.hatena.ne.jp/brazil/20050829/1125321936
>  Cの皮を被ったLisp
>
>  JavaScriptには、Cのような中括弧や不格好なforステートメントがあるため、
>  一般的な手続き型言語のように見えますが、それは誤りです。JavaScriptはCやJavaよりも、
>  LispやSchemeのような関数型言語と多くの共通点を持っているのです。JavaScriptには、
>  リストの代わりに配列があり、プロパティリストの代わりにオブジェクトがあります。
>  関数はファーストクラスであり、クロージャも備えています。つまり括弧の対応をとる手間なしに、
>  ラムダを利用できるのです。


>>583
それに関しては納得
前スレで書いたように、Rubyにおいてメソッドは一級市民(ファーストクラス)ではありませんからね
・Ruby 初心者スレッド Part 61
 http://mevius.2ch.net/test/read.cgi/tech/1503644351/210
0588デフォルトの名無しさん
垢版 |
2017/12/25(月) 02:19:08.95ID:h6gXOlbY
>>585
まったくそのとおりですね
といふことで、JavaSciptのパイプライン演算子を提案されている方は、
JSスレヘお帰りになられるか、もしくわ

  日常的にカッコだらけになってしまうPython(>>579)

スレへ移動されるよう希望します

特にRubyと違ってPythonは関数が一級市民ですから、
JavaScriptの手法を適用するのは(Rubyよりも)容易でしょう
0589デフォルトの名無しさん
垢版 |
2017/12/25(月) 10:22:56.25ID:yHCsyXBb
Windows10 の、VS Code で、irb (PowerShell ターミナル)を起動して、

put "abc"
なら、実行できるけど、

put "あいう"
のように日本語があると、実行できないね
0590589
垢版 |
2017/12/25(月) 10:27:56.95ID:yHCsyXBb
put "abc" # あ

のように、コメントに日本語がある時は、実行できる
0592589
垢版 |
2017/12/25(月) 12:11:57.01ID:yHCsyXBb
知らないけど、UI 部分を、C言語とかで作っているから、
いつまで経っても修正できないのだろう

UI 部分は、VS Code みたいに、
ブラウザ技術を使っている、Electron で作れば良かった
0596デフォルトの名無しさん
垢版 |
2017/12/25(月) 21:52:41.67ID:YHWK2l8N
yield_selfはこれまでメソッドチェーンをしたくてもできなかった場合で活躍するね
途中の一時変数は用無しになった
0597デフォルトの名無しさん
垢版 |
2017/12/25(月) 22:38:48.18ID:h6gXOlbY
昨日のパイプライン演算子に関する話の中に出てきた >>583 のようなケースが
以下のように書けるようになる

https://ideone.com/hZI7wT

・Ruby 2.5 の yield_self - Qiita
 https://qiita.com/stomk/items/58dce3e5e294639ab1c9

F# や Elixir の登場ですっかり世間の認知度がアップしたパイプライン演算子、
すっかりハマって
「プログラミングスタイルをパイプライン形式(いわゆるメソッドチェーン)で統一して書きたい!」
という欲求を抑えられない人たちにとっては嬉しいメソッドの新設ではないかと思われ

個人的には、メソッド名は apply もしくはそれを短くした app が
感覚的に合っていた(エイリアスを定義するだけなんだけどね)
0598デフォルトの名無しさん
垢版 |
2017/12/25(月) 22:46:27.01ID:mSK8fdnz
ふっふっふ、ようやく気づいたかね?
昨日のパイプライン演算子の話は
ここにつながるのだよ
0599デフォルトの名無しさん
垢版 |
2017/12/25(月) 23:07:16.77ID:h6gXOlbY
つまり:
・JavaScriptでは現時点だと最終的に採用されるか否かも定かでない Proposal 段階で、
 実験的な実装をいじってあーだこーだ議論している真っ最中
・一方、Rubyではとっくに議論を終えて公式にリリースを終えてしまった
といふ話ですね
0600デフォルトの名無しさん
垢版 |
2017/12/25(月) 23:20:17.82ID:YHWK2l8N
ちょっと面白い発見
ppを使うのにrequire要らずだってあったから試してみたけど、
使った最初に自動でrequireするようになってる

$ ruby25 --disable-gems -e 'puts $"'
enumerator.so
thread.rb
rational.so
complex.so
/usr/local/lib/ruby/2.5/amd64-freebsd11/enc/encdb.so
/usr/local/lib/ruby/2.5/amd64-freebsd11/enc/trans/transdb.so

$ ruby25 --disable-gems -e 'pp $"'
["enumerator.so",
 "thread.rb",
 "rational.so",
 "complex.so",
 "/usr/local/lib/ruby/2.5/amd64-freebsd11/enc/encdb.so",
 "/usr/local/lib/ruby/2.5/amd64-freebsd11/enc/trans/transdb.so",
 "/usr/local/lib/ruby/2.5/prettyprint.rb",
 "/usr/local/lib/ruby/2.5/pp.rb"]
0601デフォルトの名無しさん
垢版 |
2017/12/26(火) 14:56:29.62ID:75dqQ4yg
private methodを定義する時ってどう書くのが普通?

private def foo
__bar
end

def foo
__ bar
end
private :foo

# クラスの後ろにまとめて定義
private
def foo
__bar
end
0602デフォルトの名無しさん
垢版 |
2017/12/26(火) 16:40:03.50ID:pHnCZ49/
自分の好きなタイミングで
0604デフォルトの名無しさん
垢版 |
2017/12/26(火) 17:36:54.63ID:Zhknjblq
俺は後ろにまとめて書くようにしてる。
ついでに言うとprivateが連続した場合2個目以降のprivateは不要だが、パッと見て分かるように常に付けている。

最近は触って欲しくないメソッドはリファインメントを使うっていう手法を覚えたけど、これは異端なのか分からない。
0605デフォルトの名無しさん
垢版 |
2017/12/26(火) 22:52:56.50ID:pHnCZ49/
アンチ息してる?
アンチスレ死亡してるみたいだけど
0607デフォルトの名無しさん
垢版 |
2017/12/26(火) 23:45:46.61ID:p5HaZQjy
そもそもRubyのprivateって実質的な強制力はほぼゼロでコメントとしての意味くらいしかないからな
そういう意味ではよほど小さなクラスを除けば全部に付けないとあまり意味ないんじゃないか
0608デフォルトの名無しさん
垢版 |
2017/12/27(水) 01:21:36.89ID:kb3Qecdj
アンチがアンチスレの存在をすっごい嫌がってるのは、本スレで暴れたいからだろうな

だが、断る
アンチはあの過疎ったアンチスレへ帰るべきだ
0609デフォルトの名無しさん
垢版 |
2017/12/27(水) 01:24:11.45ID:Kn/lt9VX
結局ここにアンチが来てなくても
アンチの話題をしたいわけなんだよな
もう病気だと思うよw
0611589
垢版 |
2017/12/27(水) 01:58:58.62ID:u0gTyM9V
>>589-592
自己レス

irb -E CP932

irb の起動時に、オプションを付けると、日本語文字列も正常になった

puts "あ"

Ruby は、Windows でも無敵やな!
0612デフォルトの名無しさん
垢版 |
2017/12/27(水) 04:54:44.27ID:vGbq0nNV
>>601
人それぞれでいいと思うけど、自分はクラスの後ろにまとめて定義する派だね
ドキュメンテーションとしての可読性を重視し、あるクラス定義において
デフォは公開したいメソッドだけどキーワード private で宣言した以降の
セクションは非公開にしたいという意図がある

 class Klass
   公開したいメソッドの定義セクション
 private
   不公開なメソッドの定義セクション
 end

個別に宣言する private :foo を使うケースは、公開するつもりでクラスを設計したけど、
リファクタリングの過程で「このメソッドは非公開でもいいんじゃね?」と疑問を感じたら
private :foo を付けテストを流して実験するといった一時的なもの


>>607
確かに、メンバ変数のアクセス制限という概念が無く、全ての変数がpublicとして扱われるのよね
 https://qiita.com/nkennek/items/8c54365cb873cca8730a
 http://woodyring.blog.so-net.ne.jp/2013-05-25-1
ああ中途半端でめんどくさ
0614デフォルトの名無しさん
垢版 |
2017/12/27(水) 14:47:08.38ID:K4eQH++r
メンバ変数なんてない
インスタンス変数の事を言ってるならそもそもオブジェクトの外からはアクセスできない
0615デフォルトの名無しさん
垢版 |
2017/12/28(木) 23:13:58.27ID:zlcR2/4C
みんな、デバッグはpで済ましてる?
それとも何かツール使ってる?
0619デフォルトの名無しさん
垢版 |
2017/12/30(土) 03:43:26.25ID:Codmlyj+
最近、debug.rb知って使うようになったけど


pで間に合うデバッギングしかまだやってないんだよな
0620540
垢版 |
2017/12/30(土) 08:54:20.80ID:M2I24uN0
RubyInstallers の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)は、Rubyのポータブル版の実行環境だった。
Ruby 2.4(x64)は9MB で、解凍すると56MB になった

これだけでも、ファイルI/O など、結構遊べる

デフォルトで、erb, irb, minitest, sinatra などが入っている。
RSpec は入っていないけど

先に、bundler gem を入れて、
VS Code の画面で、Ruby Solargraph という拡張機能を入れると、
solargraph gem がインストールされるので、VS Code で補完ができる

VS Code で、Ruby のデバック用の拡張機能を入れようとすると、
Windows のネイティブコードにコンパイルする必要があるから、
The MSYS2 DevKit を入れる必要がある。
これが、1.7GB もあるらしいので、入れない方が良い

1行ずつデバッグせず、p などで表示しながら作るのが良い

MSYS2 DevKit を入れない範囲で、プログラミングするのが簡単
0623デフォルトの名無しさん
垢版 |
2017/12/30(土) 15:07:11.63ID:KgXg1sy3
英語が読めなかったんですね。すみませんでした
マニュアルには「コロンとコンマの区切りの後にspace:で指定した文字列がおかれる」と書いてあります
0627デフォルトの名無しさん
垢版 |
2017/12/30(土) 17:05:16.47ID:20iing1R
何しても`,'の後ろには入らないね
バグっていうよりマニュアルの不備なのかな
0628デフォルトの名無しさん
垢版 |
2017/12/30(土) 17:25:46.52ID:IKvN98q1
,の後ろにスペース入れるのは一般的なフォーマットだから、常識的にはドキュメントの方が正しいでしょ
直してプルリク出せ
0629デフォルトの名無しさん
垢版 |
2018/01/02(火) 13:03:30.40ID:nZWiMujw
明けおめ
今年初のRubyスレ書き込み
0630デフォルトの名無しさん
垢版 |
2018/01/02(火) 22:10:18.61ID:Q+9WD3Xu
新年からRailsを勉強中。環境はwin64 

<%= csrf_meta_tags %>

<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'default', 'data-turbolinks-track': 'reload' %>
</head>

さっきから、こいつに対してExecJS::ProgramError hogehoge#indexってエラーを吐いてばかり

coffee-scciptも1.8.0にしてもさっぱり解決せず。libv8とtherubyracerを入れろとか書いてるけど、
さっきから2時間以上苦戦してるが、全くインストールできずエラーばっかり

何なんだこれ
0631デフォルトの名無しさん
垢版 |
2018/01/02(火) 22:12:28.67ID:Q+9WD3Xu
違った、viewの中身はこいつだ

<!DOCTYPE html>

<html>

<head>

<title>hogehoge</title>

<%= csrf_meta_tags %>


<%= stylesheet_link_tag "application", media:"all", "data-turbolinks-track"=> true %>

<%= javascript_include_tag "application", "data-turbolinks-track" => true %>

</head>


<body>

<%= yield %>

</body>

</html>
0632デフォルトの名無しさん
垢版 |
2018/01/02(火) 22:13:36.50ID:NRmrCA2E
今時WinでやるならWSLを使おう
どうせ運用はLinuxなんだからそれに慣れる意味でもな
あと、オワコンCoffeeなんか今更使っちゃダメ
0633デフォルトの名無しさん
垢版 |
2018/01/02(火) 22:30:29.29ID:Q+9WD3Xu
タイトルでそう思ったけど、ここ初心者スレじゃなかったのか
仕方ない、自分でもうしばらく足掻くか
0634デフォルトの名無しさん
垢版 |
2018/01/02(火) 22:32:05.53ID:ZaEks4dH
WSL使おうってアドバイスがあるのにさらっと無視するようじゃ、初心者スレ云々の問題じゃないかと思われる
0636デフォルトの名無しさん
垢版 |
2018/01/02(火) 22:42:47.77ID:ZaEks4dH
だったらWSL使えないって言えよ
そしたらVMWare使えってアドバイスもらえるんだからさ
0637デフォルトの名無しさん
垢版 |
2018/01/02(火) 22:44:20.68ID:IA96dLm2
答えのわからない質問に、的はずれな回答しなくていいから
わからないなら黙ってなさい
0638デフォルトの名無しさん
垢版 |
2018/01/03(水) 00:44:42.35ID:0mS9Giqv
原因わかったよ、鋸使わなかったから
鋸使ったらうまくいった

あとで調べたらWSLは互換性がどうたらとか書いてたし、VM使うほど容量に余裕ないんで
でもまあwindowsよりLinux使えってのが大きなヒントになったのは確か
0639デフォルトの名無しさん
垢版 |
2018/01/03(水) 00:53:49.79ID:BK81yZAH
互換性はWSLの方が遥かにマシだぞ
WinのRubyなんか動いたらラッキーレベルのおまけ
0640デフォルトの名無しさん
垢版 |
2018/01/03(水) 06:24:30.41ID:LyakWDNT
>>620
に書いておいた

The MSYS2 DevKit などで、
Windows のネイティブコードにコンパイルしているようなものは、基本的に使えない。
それに、コンパイルできても、正常に動くとは限らないし

Nokogiri などの各gem が、バージョンアップに対応しないから、
Rails 5 などは使えない

各gem を作っている人は、皆手弁当でやっているから、
OS のバージョンアップに一々、対応していられない

Ruby の対応状況と、各gem の対応状況は、全く違うし、作者も別人。
とにかく、gem を使うものは、gem のバージョンに合わせて、
Ruby, Rails のバージョンを下げないといけない

Ruby 使いは、vagrant, chef を使う。
または、WSL, Docker など
0641640
垢版 |
2018/01/03(水) 08:15:54.66ID:LyakWDNT
基本的に、gem の作者が、Windows10 用のバイナリを配布していない、
gem は、作者によって動作が保証されていない

それを、The MSYS2 DevKit などで、ユーザーが勝手に、
Windows のネイティブコードにコンパイルして、動かしているようなものは、
基本的には安全ではない。
コンパイルできても、正常に動くとは限らないから

gem の作者でもないユーザーが、勝手にコンパイルして動かしても、安全性を証明できない

gem の作者が配布している、バイナリのバージョンまで、
Ruby, Rails のバージョンを下げる必要がある

Windows10 の場合は、RubyInstallers に、最初から入っている、
erb, irb, minitest, sinatra などで遊ぶ。

gem も、ユーザーがコンパイルする必要のない、gem の範囲で、遊ぶのが良い
0642デフォルトの名無しさん
垢版 |
2018/01/03(水) 12:59:19.24ID:vVUVg3Hi
gemの範囲で遊ぶのが良い までは読んだ

まあ遊びというか入門勉強用にしとけばいいわけだな。遊びでも触っておけば、本番で構築が必要になった時
いくらでも応用利くから。MVCも他のフレームワークとあまり変わらなさそうだし
0643デフォルトの名無しさん
垢版 |
2018/01/03(水) 13:59:57.88ID:7RCD6iyC
何故、荒らしはアンチスレに帰らないで本スレで自演してるの?
さみしいの?
0644デフォルトの名無しさん
垢版 |
2018/01/03(水) 14:12:30.27ID:xfm5wXWm
>>643
アンチもクソも、現実を直視しよう
Rubyのコアのコミュニティに行くとWin使いには人権ないぞ
このスレはまだマシな方だよ
0645デフォルトの名無しさん
垢版 |
2018/01/03(水) 14:57:18.33ID:vVUVg3Hi
人権とかいう排他的な言い方しなくても、win環境には適応しきれていないのはわかったよ
rails new hogehogeコマンドで新たなアプリケーション作ってもまともに動かないことも分かったし
社内PCにはVMぐらいは作ってあるから、そっちでいくらでも試せる

今度はサーバ設定ツールにvagrant、chef、Docker、WSLとか書かれてるけど
どれが一番オススメかは聞いておきたい
0646デフォルトの名無しさん
垢版 |
2018/01/03(水) 15:31:56.84ID:SZxPYOzJ
なんかもう言ってることがすごいな
>The MSYS2 DevKit などで、ユーザーが勝手に、
>Windows のネイティブコードにコンパイルして、動かしているようなものは、
>基本的には安全ではない。
0647デフォルトの名無しさん
垢版 |
2018/01/03(水) 16:02:22.19ID:Z3K4Tirs
サーバー設定はchef-soloが簡単かなー

鯖は最終借りて使うことになるし
AWS,VPSなんかに使いまわしできる。

dockerなんかも便利

web系はLinuxは必須。
0650デフォルトの名無しさん
垢版 |
2018/01/03(水) 19:29:07.03ID:tD4HLGIX
>>647
ansibleの方がマシ
ただ俺に言わせりゃ冪等性が必要ない
使い捨てマシンの設定はシェルスクリプトでいい
0651デフォルトの名無しさん
垢版 |
2018/01/03(水) 20:20:36.21ID:vVUVg3Hi
>>649
アンチスレとかあるんか?そんな技術どうこうに、わざわざアンチとか騒いで
何か開発上のメリットでもあるのか?
0652デフォルトの名無しさん
垢版 |
2018/01/03(水) 22:02:49.25ID:ML6+3XhW
嘘を吹聴してる荒らしはまだおるんか?
はよーアンチスレへ帰れ

初心者スレで嘘ばっかりつきやがって
0653デフォルトの名無しさん
垢版 |
2018/01/03(水) 23:03:06.29ID:vVUVg3Hi
そこまで言うなら
他のスレに貼り付けてやろうか?
Ruby開発者はこんな連中ばっかりだと

Pythonスレとかあたりに
0654デフォルトの名無しさん
垢版 |
2018/01/03(水) 23:07:20.10ID:vVUVg3Hi
俺はPHPとかJavaScriptはMVCフレームワーク含めて経験あるし、納品実績もあるけど

RubyやRailsは本当に初心者だよ、去年まではRailsなんて名前しか知らんかった
一応上司に勉強しといた方がいいって勧められて、せっかくの正月休みなんで
意気込んで勉強してたんだよ

こんなところで質問した自分が心底馬鹿だったわ

初心者を罵倒するスレに改名してくれ
0655デフォルトの名無しさん
垢版 |
2018/01/03(水) 23:08:40.92ID:ML6+3XhW
おまえ、
他のスレを荒らすのもええ加減にやめろ
みんな迷惑しとるやろうが
0656デフォルトの名無しさん
垢版 |
2018/01/03(水) 23:21:54.41ID:dC+KJDFP
>648デフォルトの名無しさん2018/01/03(水) 16:02:34.32ID:vVUVg3Hi
>結局Vagrant使ってVB入れて続きを動かしてみることにした

例の荒らしがとうとう他スレに移住してくれるわけか
これはめでたい
0657デフォルトの名無しさん
垢版 |
2018/01/04(木) 00:11:00.11ID:Db2jLLtK
Docker、2016、オライリー

実践 Vagrant、Mitchell Hashimoto、2014、オライリー

Vagrant, Packer などで有名な、HashiCorp の創始者


Chef実践入門 - コードによるインフラ構成の自動化、2014

cookbookは各社が公開している

Chef社のopscode、Railsを作っている Basecamp社、
Berkshelfを作っている Riot Games社、
Pivotal Trackerを作っている Pivotal Sprout社、
aws, engine yard
0659640
垢版 |
2018/01/04(木) 01:01:51.01ID:Db2jLLtK
CentOS は、64ビット版のみで、32ビット版はもうやっていない。
Linux も徐々に、32ビット版を作らなくなってきた

Ruby で、ユーザーが勝手に、ソースコードからコンパイルしているような、
32ビット版のgem は、使えなくなってくる

gem の作者がほったらかしで、64ビット版をサポートしていないから、
こういうgem に依存しているアプリは、Linux でも動かなくなっていく
0661デフォルトの名無しさん
垢版 |
2018/01/04(木) 02:54:14.07ID:IBQXDyQ6
これ、朝になったらアンチが発狂して自演繰り返すパターンだわ
俺知ってる
0662540
垢版 |
2018/01/04(木) 07:31:26.40ID:Db2jLLtK
Windows10 Home で、RubyInstallers の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64) ポータブル版、The MSYS2 DevKit 無しで、

Nokogiri をインストールしたら、
コンパイル無しで、Windows用のバイナリgem がインストールできたのか?w
The MSYS2 DevKit は、インストールしていないけど

PS C:\Users\Owner\Documents\Ruby\proj01> bundle install
Fetching gem metadata from https://rubygems.org/..............
Resolving dependencies...
Using bundler 1.16.1

Fetching mini_portile2 2.3.0
Installing mini_portile2 2.3.0

Fetching nokogiri 1.8.1 (x64-mingw32)
Installing nokogiri 1.8.1 (x64-mingw32)

Bundle complete! 1 Gemfile dependency, 3 gems now installed.

Use `bundle info [gemname]` to see where a bundled gem is installed.

Post-install message from nokogiri:

Nokogiri is built with the packaged libraries: libxml2-2.9.5, libxslt-1.1.30, zlib-1.2.11, libiconv-1.15.
0663540
垢版 |
2018/01/04(木) 10:00:23.11ID:Db2jLLtK
Windows10 Home で、RubyInstallers の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64) ポータブル版 (The MSYS2 DevKit 無し)に、最初から、

libxml2-2.9.5, libxslt-1.1.30, zlib-1.2.11, libiconv-1.15
などのコンパイル済みライブラリが入っているみたい

なので、The MSYS2 DevKit が無くても、
Nokogiri gem を入れるだけで動く

やってみたら、Nokogiri は、確かに動いた!

インストールの最難関と言われる、Nokogiri が、簡単にインストールできた!w
Ruby 2.4, gem, Nokogiri などの進化を感じた
0664デフォルトの名無しさん
垢版 |
2018/01/04(木) 10:31:04.56ID:M7dikhfh
>ID:Db2jLLtK
何度も言うが自演を繰り返して荒らすなら
アンチスレへ行け
0665デフォルトの名無しさん
垢版 |
2018/01/04(木) 14:21:55.97ID:0iUUJ0bW
質問
Arrayで事足りるケースにしかまだ出会ってないけど
Enumerableってどういう時に使うの?
0667デフォルトの名無しさん
垢版 |
2018/01/04(木) 22:09:15.03ID:ByuqHChs
初歩の初歩な質問ですけど…
配列に0から99までの数字を一括で格納したいです
a = [0,1,2...と記述していてはとても長くなるので…
どうすれば良いのでしょうか?
0670デフォルトの名無しさん
垢版 |
2018/01/04(木) 22:21:04.48ID:gbqCK9B9
そういえば (0..99).to_a で気づいたけど、>>665 のいう Enumerable は Range クラスも持ってるな
ちょうどいい例じゃね?
0673540
垢版 |
2018/01/05(金) 10:23:43.97ID:JCua7yNV
Windows10 Home 64ビット版に、
RubyInstallers の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)ポータブル版、The MSYS2 DevKit 無しで、
コンパイルせずに入れられる gem だけで、遊んでみた

以下は、入れた gem です

先に、bundler を入れて、以後のgem は、bundle install で入れた

rack-test は、sinatra のテストに使う。
Nokogiri

VS Code の拡張機能用の、solargraph

入れたgem と、irb, erb, minitest, sinatra が、正常に動いた
0674デフォルトの名無しさん
垢版 |
2018/01/05(金) 21:48:51.55ID:cNE023Or
#{hoge}などの形で入力をそのまま正規表現に入れた場合に、入力に正規表現が含まれていると意図しない挙動が起こると聞いたのですが、どのように回避するのが良いのでしょうか?
0676デフォルトの名無しさん
垢版 |
2018/01/05(金) 22:28:18.08ID:wqtMql/4
>>674
#{hoge}などの形で入力をそのまま正規表現に入れない。
具体的には、Regexp.escape などでエスケープ処理した文字列を利用する。
0677デフォルトの名無しさん
垢版 |
2018/01/05(金) 23:28:05.64ID:MlGJfS7x
空港のwifiからアクセスした際にログイン出来ないという報告がありましてログを見たところ
ActionController::InvalidAuthenticityTokenというエラーが出ていました
CSRF対策の仕組みが関係することは分かったのですが
なぜこれが発生するのか分かる方いらっしゃいませんでしょうか
0678デフォルトの名無しさん
垢版 |
2018/01/06(土) 02:50:42.13ID:nSHs9ovb
空港やホテルは、設定が厳しい。
LAN 内ですら、お互いに通信できないだろ

隣の人のスマホと、アクセスできないだろ
0680デフォルトの名無しさん
垢版 |
2018/01/06(土) 04:48:47.53ID:nSHs9ovb
空港やホテルの、wifiは危険だから、設定が厳しい

「空港 wifi セキュリティ」で検索!
0681540
垢版 |
2018/01/06(土) 07:03:24.91ID:nSHs9ovb
Windows10 Home 64ビット版に、
RubyInstallers の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)ポータブル版、The MSYS2 DevKit 無しで遊んでみた

日本語については、
Windows の設定画面から、ユーザー環境変数へ追加します。変数名・値は、
RUBYOPT
--encoding=UTF-8

これで外部エンコーディング・Encoding.default_external が、
Windows-31J から、UTF-8 へ変更されるので、
Ruby 起動時のコマンドライン引数に、日本語を使えます

ただし、この環境変数を追加すると、irb が動かなくなる。
この環境変数が無ければ、

irb -E CP932
で、Windows-31J で、正常に動くので、
irb を使う人は、環境変数を追加せずに使う
0682デフォルトの名無しさん
垢版 |
2018/01/06(土) 10:01:00.08ID:UsOHfVJQ
>>681
大変申し訳ないが一回だけ言うね
日記の続きは貴方の個人的なブログでお願いしたい
ここはみんなのスレなのでご理解ください
0683デフォルトの名無しさん
垢版 |
2018/01/06(土) 12:53:30.03ID:HbY4/bGY
続きはCMのあとで
0684デフォルトの名無しさん
垢版 |
2018/01/06(土) 12:58:28.05ID:jet593Ss
備忘録とか日記のネタとか書くのは問題ないだろ
普段はそこまで賑わっているスレじゃないんだから
雑談OKなわけだし、初心者にはありがたい情報じゃないのかな
0685デフォルトの名無しさん
垢版 |
2018/01/06(土) 13:52:44.37ID:FAOceAzc
レス読んでないけど、情報共有するならここに書くよりかQiitaにあげた方が有益だと思うけどね

まぁどっちでもいいわ
0686540
垢版 |
2018/01/06(土) 14:44:04.22ID:nSHs9ovb
irb のソースコードを見て、誰か、

外部エンコーディング・Encoding.default_external が、
UTF-8 でも動くように、修正してくれないかな?

それと、Windows で、Ruby を使っている人も、書き込んでほしい。
Windows の、Ruby 使いが少ない
0687デフォルトの名無しさん
垢版 |
2018/01/06(土) 14:49:07.31ID:ul9KuZX2
自分で直してPull Reques出せ
基本的にWin使いに人権はないので、Winのためにソースを汚すことは嫌われるから注意
0689540
垢版 |
2018/01/06(土) 16:33:25.64ID:nSHs9ovb
irb がクソみたいな描画ライブラリを使わずに、
GUI だけを、PowerShell を使ってくれたら良いのに。
PS なら、UTF-8 だし

ロジック・GUI が分離できていて、
簡単に、PS に切り替えられたら良いのに
0690デフォルトの名無しさん
垢版 |
2018/01/07(日) 10:13:45.01ID:X58Odkk6
お前は何を言ってるんだ
RubyはUNIXにべったり密結合している
それを良く思っていないのはRuby村においては被差別民であるWin使いだけ
0691デフォルトの名無しさん
垢版 |
2018/01/07(日) 16:15:03.18ID:Jk6U4+ev
自演ばれてんぞアンチ
0692デフォルトの名無しさん
垢版 |
2018/01/09(火) 00:08:55.57ID:TW5vurZJ
Windows で、Headless Chrome でテストしている香具師いる?

Windows 10, Ruby, Chrome, Selenium WebDriver は、64ビット版だけど、

Windows 用の、ChromeDriver は、32ビット版しかないけど、これで正常に動くの?
0697デフォルトの名無しさん
垢版 |
2018/01/09(火) 23:30:05.47
>>695
RubyのJSON.parseがUnicodeコードポイントエスケープに未対応なのかな?
「¥u{XXXXX}」を「¥uXXXX¥uXXXX」に変換してやればよさそうだけどね
0698692
垢版 |
2018/01/10(水) 07:38:19.49ID:8FRtzSYP
Windows 10 Home, Ruby, Chrome, Selenium WebDriver は、64ビット版で、
ChromeDriver (32ビット版)も使えるけど、

Chrome v63 を、headless で使うと、エラーになる
「failed to launch gpu process.」

--headless, --disable-gpu を設定する必要がある

selenium-webdriver は、コンパイル無しで、gem を簡単にインストールできた

>>695-697
Ruby 2.4 からは、5バイト以上の絵文字なども、正規表現で使えると聞いた。
JSON では、そういう文字も使えないの?
0699デフォルトの名無しさん
垢版 |
2018/01/10(水) 12:32:40.29ID:8FRtzSYP
ReactDOM.render(
<div>
<h1>Hello, world!</h1>
<h2>texttext</h2>
</div>,
document.getElementById('app')
);

JavaScript の中に、直接HTML を書ける、
JSX みたいな書き方が、Ruby にある?

出来れば、erb のような書き方は、避けたい
0701デフォルトの名無しさん
垢版 |
2018/01/12(金) 18:18:49.39ID:nl8PJm0M
iCloud 9のコマンドプロンプト打っても俺のパソコンに反映されないんですが助けて
0702デフォルトの名無しさん
垢版 |
2018/01/12(金) 22:23:27.82
>>698
規格上は使えるけどRubyのJSONライブラリがまだ対応していないっぽい
0703デフォルトの名無しさん
垢版 |
2018/01/21(日) 21:58:25.57ID:Ycn/1JW2
改訂2版 パーフェクトRuby、Rubyサポーターズ、2017

この本は、ツールの説明なども多いから、読むのに時間がかかる
0704デフォルトの名無しさん
垢版 |
2018/01/22(月) 21:44:30.05ID:q3uir/RO
keyには現状:aか:bしか来ないけど将来的には増えるかもしれないとする。
ダックタイピングを意識して次みたいに書いてみたんだけどこれだと、
keyの種類が増えた時にそれに対応するクラスだけじゃなくてcase文も増やさないといけなくなる。
上手い書き方無いかな?
def hoge(key, value)
 x = case key
   when :a then A.new(value)
   when :b then B.new(value)
   end
 x.huga
 x.hage
end
0707デフォルトの名無しさん
垢版 |
2018/01/22(月) 22:52:38.55ID:pYe1Cwj7
それは、典型的なオブジェクト指向の利点

派生クラスを使えば、switch〜case 文が無くなるから、
その部分の修正もしなくてよい

各派生クラスで、クラス内でオーバーライドされた、同名のメソッドを呼ぶだけ
0708デフォルトの名無しさん
垢版 |
2018/01/22(月) 23:04:44.47ID:cFg1Yiat
レンタルサーバーにRubyをインストールする手順に関する質問はここで良いでしょうか?
Railsの方が良いでしょうか?
0709デフォルトの名無しさん
垢版 |
2018/01/22(月) 23:35:54.90ID:/Sj7yLHe
Webサイトちょっと動かしたいだけなら自分で運用構築なんて時間の無駄だからPaaS使うことを強くお勧めする
0710デフォルトの名無しさん
垢版 |
2018/01/23(火) 13:19:28.04ID:CDVCaOOu
環境構築には、vagrant, chef は、Ruby でレシピ(手順書)を書ける。
Docker もある

仮想環境コンテナ総合スレ Docker、Vagrant等 [無断転載禁止]c2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1487235664/l50
0713デフォルトの名無しさん
垢版 |
2018/01/24(水) 23:02:47.87ID:ap7jtKrX
今日mechanizeを使い出したんだけどいいなこれ
なんで今まで使わずにスクレイピングしてたんだろってくらい感動した
0715デフォルトの名無しさん
垢版 |
2018/01/25(木) 15:25:13.47ID:d3UPMMWN
バージョン2.2.0以降次のコードがSecurityErrorにならないんだけど、仕様が変わってマニュアルの情報が古くなってるのかな?
$ ruby -ve '$SAFE = 1; open(ARGV[0])' hoge
Traceback (most recent call last):
2: from -e:1:in `<main>'
1: from -e:1:in `open'
-e:1:in `initialize': No such file or directory @ rb_sysopen - hoge (Errno::ENOENT)
0717デフォルトの名無しさん
垢版 |
2018/01/25(木) 19:53:33.66ID:8RoLWIQ9
>>715
ARGVの文字列がexternal_str_new_cstr()で作られてるみたいだけど、
windowsだとUTF8_PATHが真になって、文字列がrb_external_str_new_cstr()で作られてないから
taintになってないっぽい
0718デフォルトの名無しさん
垢版 |
2018/01/26(金) 19:35:15.96ID:ywFtALU+
atomのautocomplete-rubyが動かないです
rsenseのパスは通しているのですがエラーが出ます
rsense startを実行後、localhost:47367にアクセス出来ないことから
rsenseのエラーだとは思うのですが対策がわかりません。
ruby 2.4.1、rsense 0.5.18 です
https://teratail.com/questions/67165
ではJRuby 1.7.26にしてからrsenseをインストールするとできると書いてありましたが、JRuby 1.7.26ではrsenseがインストールできませんでした。
エラーは下記
autocomplete-ruby: exec error: Error: Command failed: ~/.rbenv/versions/2.4.1/bin/rsense
start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book
rsense version 0.5.18
Usage: rsense <start|stop|restart>
/bin/sh: line 1: start: command not found
(You might need to set the rsense path, see the readme)
0719デフォルトの名無しさん
垢版 |
2018/01/26(金) 22:16:50.68ID:lWqampzR
>/bin/sh: line 1: start: command not found
start コマンドは存在しない

>(You might need to set the rsense path, see the readme)
rsense のユーザー環境変数PATH を設定しないといけないのかな?
まあ、readme を読んで

>autocomplete-ruby: exec error: Error: Command failed: ~/.rbenv/versions/2.4.1/bin/rsense
> start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book

これは全体で、1行のコマンドじゃないのか?
これを、rsense の後ろで、改行して打ったのか?

1行で打つか、または行末で改行を、\(バックスラッシュ)でエスケープすれば?
行末を「rsense \」とする
0720デフォルトの名無しさん
垢版 |
2018/01/26(金) 22:22:02.58ID:lWqampzR
端末・コマンドプロンプトなどで、
which rsense, where rsense などと打てば、

rsense の実行ファイルがあるディレクトリが、
環境変数PATH に設定されているかどうかがわかる
0721デフォルトの名無しさん
垢版 |
2018/01/26(金) 22:26:40.41ID:lWqampzR
rsense の実行ファイルがあるディレクトリが、
環境変数PATH に設定されているなら

~/.rbenv/versions/2.4.1/bin/rsense のように、パスを付けて書かなくても、
単に、rsense と打っても、実行ファイルを探せる

rsense start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book

だから、こう打てばよい
0722692
垢版 |
2018/01/26(金) 22:52:43.92ID:lWqampzR
Windows10 で、poltergeist のインストールに失敗

Fetching websocket-driver 0.7.0
Installing websocket-driver 0.7.0 with native extensions
MSYS2 could not be found.

websocket-driver-0.7.0-java.gem をダウンロードしたけど、MSYS2 を入れていないから。
(MSYS2 は、2GB 近くあるらしいので、わざと入れていない)

このgem ファイルは、Windows用のコンパイル済みバイナリではないの?

Anemone, mechanize は、静的なHTML用じゃないの?
JavaScript も解釈できるの?

poltergeist から、phantomJS を使おうとしたけど、インストールできないから、
>>698
で書いたように、Chrome のヘッドレスモードを使っている
0723718
垢版 |
2018/01/26(金) 23:10:28.98ID:ywFtALU+
>>719
atomでの話とターミナルでの話が混ざっていてすみません。
atomでパスを ~/.rbenv/versions/2.4.1/bin/rsenseと書くと718で書いたエラーが出ます。
エラー内容はstartコマンドがないと言っているので確認のため
ターミナルで$ rsense startと打つとプロセスは走ります。
ただプロセスが走っているのにlocalhost:47367にアクセスできません。
0724デフォルトの名無しさん
垢版 |
2018/01/26(金) 23:32:26.03ID:lWqampzR
localhost は、つながらないとか、色々とバグるから、
127.0.0.1:47367 を使うこと

rsense start で、サーバーは確かに、47367 ポートで起動しているのか?

lsof とかで、開いているポートを調べる
0725デフォルトの名無しさん
垢版 |
2018/01/26(金) 23:46:55.80ID:lWqampzR
>atomでパスを ~/.rbenv/versions/2.4.1/bin/rsenseと書くと718で書いたエラーが出ます

漏れも、VS Code を使っているけど、

VS Code 内のPowerShell では、よくバグるから、
外部でPowerShell を起動して使っている

外部から、コマンドプロンプト・端末・PowerShell を起動してやれば?
0726デフォルトの名無しさん
垢版 |
2018/01/26(金) 23:58:30.46ID:lWqampzR
>atomでパスを ~/.rbenv/versions/2.4.1/bin/rsenseと書くと718で書いたエラーが出ます

~(チルダ)が、自分のホームディレクトリに解決できないとか?

.rbenv って、探索パスの順序を入れ替える、仮想化技術だろ。
環境変数PATH の一番前に、追加しているから、危険で影響が大きそう。
.rbenv について、よく調べた方が良いかも

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

また、rbenvでrubyをインストールしたり、gemでパッケージをインストールした後は、
rbenv rehashを実行しなければならないとか
0727デフォルトの名無しさん
垢版 |
2018/01/27(土) 00:21:43.19ID:PF3DsJ0N
> .rbenv って、探索パスの順序を入れ替える、仮想化技術だろ。

なにも仮想化してないので、仮想化技術ではない
0728デフォルトの名無しさん
垢版 |
2018/01/27(土) 01:59:43.65ID:lUeqkPr+
pyenv, virtualenv(venv)などのPythonの仮想環境構築も、これと同じ

環境変数PATH の前方に、パスを追加して、実行するコマンドの探索パスを変えることで、
実行されるファイルを変える
0729718
垢版 |
2018/01/27(土) 19:34:18.97ID:sDN5LFGv
rsenseがどうにも動かないのでatomでは他の補完パッケージを使うことにしました
0730デフォルトの名無しさん
垢版 |
2018/01/27(土) 20:20:50.96ID:lUeqkPr+
bundle exec を付けないと、パスが探せないとか
0731718
垢版 |
2018/01/27(土) 20:33:08.71ID:sDN5LFGv
>>730
ターミナルではコマンドが実行できるのでパスは通っているはずなんですが
指定されたポートのローカルサーバーにアクセス出来ない。
($ rbenv which rsense で ~/.rbenv/versions/2.4.1/bin/rsense が出ます)
atomではパスを通す前はno such directryのエラーがパスを通すとcommand not foundになるので
パス自体は通っているとは思うのですがコマンドが見つからない理由がわからない。
すみません、いろいろ言ってもらったのですが改善できなそうでした。
0732デフォルトの名無しさん
垢版 |
2018/01/28(日) 23:07:14.79ID:+HoRx5lM
Rubyスクリプト内から別のRubyスクリプトを実行して、エラーが出ても元のRubyスクリプトの処理を止めない方法はありますか?
0733デフォルトの名無しさん
垢版 |
2018/01/28(日) 23:22:35.75ID:ALu/+v8Q
シェルコマンドでruby実行すればいいだろ
所詮Rubyなんか書捨てスクリプトなんだからスマートさなんか気にしないで手っ取り早い方法を選べばいい
0735デフォルトの名無しさん
垢版 |
2018/01/31(水) 00:19:33.04ID:ah9e2u9N
>>719
にも書いたけど、

>autocomplete-ruby: exec error: Error: Command failed: ~/.rbenv/versions/2.4.1/bin/rsense
> start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book

これを、1行で打たないといけない!
これを、rsense の後ろで、改行したらダメ!

それか、{ユーザー名} のユーザー名に全角文字を使ったとか、半角空白が入っているとか。
どこかに半角空白が入っていると、そこで区切られるから、引数が多くなるのでエラーになる。
だから、" " で囲う必要がある

--path "/Users/{ユーザー名}/Programming/ruby-book"
これを、" " で、囲ってみ

>>731
エラーメッセージが、no such directry から、command not found に変わったなら、
rsense コマンドは使えるけど、たぶん、そのサブコマンドが間違っている

>Usage: rsense <start|stop|restart>
rsense の後に、これらのサブコマンドを正しく続けなければならない

>>721
にも書いたけど、
~/.rbenv/versions/2.4.1/bin/rsense のように、パスを付けて書かなくても、
単に、rsense と打っても、実行ファイルを探せる

rsense start --port 47367 --path "/Users/{ユーザー名}/Programming/ruby-book"

それと、Linux なら、/var/log の下にあるログファイルを見て、
もっと詳しいエラーメッセージを取得して検索する
0736デフォルトの名無しさん
垢版 |
2018/01/31(水) 01:31:31.84ID:ah9e2u9N
>>732-734
外部コマンドをバッククォートで囲むとか、IO.popen を使って、
終了ステータス「$?」で分岐する

Rubyで外部コマンドを実行して結果を受け取る方法あれこれ
https://qiita.com/tyabe/items/56c9fa81ca89088c5627

resText = ""
IO.popen("where notepad") { |io| resText = io.read }

puts "終了ステータス : #{$?}"
puts resText

出力結果
終了ステータス : pid 9872 exit 0
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
0737デフォルトの名無しさん
垢版 |
2018/02/07(水) 21:03:36.63ID:/4oaORK0
Windows向けのRubyバイナリですが
ASRの2.5はいつ出るんでしょうか?
RubyInstallerはOLEがうまく動かないのでASRを使っています。
0738デフォルトの名無しさん
垢版 |
2018/02/07(水) 21:24:44.94ID:N9vep8wO
RubyはWindowsで使うものではない
WinでRubyなんてプロダクションでは全く使われていないので、最新バージョンに追従しなければ何かまずいことになるというプレッシャーは無く、
有志が気が向いたときに遊びでやってるだけだ
そんなものに期待するのがそもそもの間違い
いい加減諦めてWSLかVMかMacに移行しなさい
0739デフォルトの名無しさん
垢版 |
2018/02/07(水) 21:42:14.34ID:ZXClH+OJ
WindowsでRuby使うとかマゾもいいとこ。
おとなしくPythonにしとけばいいのに。
日本語の情報が豊富!とか言って初心者釣ってたやつらにも責任がある。
コミュニティがシェア9割のWindowsを親の仇のように嫌ってる時点で初心者向けなんか有り得ないというのに。
0740デフォルトの名無しさん
垢版 |
2018/02/08(木) 04:05:47.94ID:31uXy/SD
Windows10 Home で、WSL(Windows Subsystem for Linux)正式版を簡単に導入できた

MS Store から簡単に、Ubuntu 16.04 をダウンロードできた。
サイズは、200MB ほど

パッケージマネージャーで、Ruby 2.3 も簡単にインストールできた
0743737
垢版 |
2018/02/08(木) 18:58:35.45ID:zFeCrx9M
>>742
リモートのデータベースに接続できない
0744デフォルトの名無しさん
垢版 |
2018/02/08(木) 19:31:35.11ID:x393c3Y0
最近のwindowsは32bit版のODBCと64bit版のODBC分かれてるから
データソース作るときにどっちか逆になると繋がらないことがたまによくある
0745737
垢版 |
2018/02/08(木) 20:06:16.19ID:zFeCrx9M
環境はwindows7の32bitだ
そんで同じスクリプトで
ASRなら繋がるけどRubyInstallerだと繋がらないんだ
0748デフォルトの名無しさん
垢版 |
2018/02/09(金) 18:48:38.40ID:g1sd4Kag
AWSのCloud9のRubyで アラーム代わりにwavやmp3を再生したいんですけど、かんたんにできるでしょうか
0749デフォルトの名無しさん
垢版 |
2018/02/09(金) 19:25:09.92ID:FL1yxC1J
bokete みたいなwebサイト作りたいんですけど何種類かアイデアあるんすけど
ruby ➡ Ror
php ➡ WordPress

どっちがいいっすか?
0750デフォルトの名無しさん
垢版 |
2018/02/10(土) 01:08:50.39ID:TNdj3qFT
ruby -e "puts 'abc'"
ruby -e 'puts "abc"'

1-liner で、上はWindows、下はLinux でのクォーテーションだけど、
簡単に相互を置換する方法はない?

ruby -e "puts 'abc'"
例えば、これの、" を' に置換すると、

ruby -e 'puts 'abc''
となって、区別できなくなる

>>749
もちろん、Rails
0752デフォルトの名無しさん
垢版 |
2018/02/10(土) 08:42:39.65ID:BVqOrgag
>>750
WindowsだろうがLinuxだろうがワンライナーならどちらのクォーテーション・マークでも動作するから置換する必要はない
それでも置換するなら、簡単なものなら..tr('"\'','\'"')
真面目にやるなら式中の"を%Qに'を%qにでもすればいいんじゃない
0753デフォルトの名無しさん
垢版 |
2018/02/10(土) 17:44:21.82ID:3K6ZWpKd
Array#zipに関する質問です。
aを二次元座標[x, y]の配列として
a[0].zip(*a[1..-1])と同じ動作を効率的にできるだけ短く書くコードを教えてください。
0754デフォルトの名無しさん
垢版 |
2018/02/10(土) 17:55:38.94ID:eFhUfahp
>>753
そんなところをハックしてもパフォーマンスは一ミリも改善しません
速くしたいなら他の言語を使うか、SQLをチューニングましょう
0758デフォルトの名無しさん
垢版 |
2018/02/11(日) 18:24:55.59ID:ONLKHfKt
>>757
transposeなんてメソッド存在していたとは……知らなかった。
というかriのArray#zipで言及して欲しい。
0760デフォルトの名無しさん
垢版 |
2018/02/11(日) 20:17:25.63ID:JLQLPcxv
よく使うクラスだけでもマニュアル全部読んでおくといいよ大した量じゃないし
0761デフォルトの名無しさん
垢版 |
2018/02/12(月) 13:39:48.05ID:S+p/PDus
普通は、transpose ぐらいあるだろ。
R なんて、行列が逆だから、transpose が無かったら、混乱する

module Enumerable だけは、読んでおけ
0762デフォルトの名無しさん
垢版 |
2018/02/14(水) 16:44:54.84ID:gwupYb1h
Windows10 の、Chrome の自動操作で、
SeleniumWebDriver では、Ruby から起動したブラウザが、閉じてしまう。
sleep で、待つ事はできるけど

ブラウザが閉じないように、出来ないの?
それか、iMacros を使うしかないのか?
0763デフォルトの名無しさん
垢版 |
2018/02/17(土) 22:07:32.61ID:IU1gsQgu
ActiveRuby (Beta 版)と言う、Rails など、40 gem、有用なライブラリ一式をまとめた、
Windows 用の、Precompiled Ruby があるね

Ruby 2.3.4 で、容量は、1GB
0767デフォルトの名無しさん
垢版 |
2018/02/21(水) 12:00:51.75ID:YvXKEUAS
RubyのClassクラスはObjectクラスのインスタンス。

そんでもって、自作MyClassクラスを作れば、Classクラスのインスタンスとなる。同時に、Objectクラスを継承する。

ってことは、Objectのインスタンスメソッド、ClassのインスタンスメソッドをMyClassのインスタンスは継承している。
0768デフォルトの名無しさん
垢版 |
2018/02/21(水) 20:05:24.59ID:HEIjAjBo
Classクラスのクラスメソッドは、
自作MyClassクラスのクラスメソッドとなるか?
0770デフォルトの名無しさん
垢版 |
2018/02/21(水) 21:00:07.80ID:HEIjAjBo
Classクラスの特異クラスのインスタンスメソッドは、
自作MyClassクラスのクラスメソッドとなるか?
0771デフォルトの名無しさん
垢版 |
2018/02/21(水) 21:07:50.97ID:HEIjAjBo
オブジェクトの特異クラスのメソッドは、
そのオブジェクトの特異メソッドとなる。
では、オブジェクトの特異クラスのそのまた特異クラスのメソッドは、
そのオブジェクトの特異クラスメソッドとなるか?
0772デフォルトの名無しさん
垢版 |
2018/02/21(水) 21:13:10.82ID:6K5cWIBm
ご覧ください。
こういう処理すべき本質と離れた下らないことしか話すことのないクソ言語とハエ信者たちです。
0773デフォルトの名無しさん
垢版 |
2018/02/21(水) 22:26:16.94ID:No3TMOHA
ご覧ください
こういうプログラミングの話題でない煽りしかできない底辺です
0775デフォルトの名無しさん
垢版 |
2018/02/22(木) 18:58:12.64ID:mWjDtu6E
>>772 に言わせれば:
・以下の記事の内容は「処理すべき本質と離れた下らないこと」であり、
・以下の記事に登場するのは「クソ言語」であり、
・以下の記事の著者は「ハエ信者」なんだろね

Pythonのオブジェクトとクラスのビジュアルガイド – 全てがオブジェクトであるということ
http://postd.cc/pythons-objects-and-classes-a-visual-guide/
0776デフォルトの名無しさん
垢版 |
2018/02/22(木) 19:49:41.37ID:w/32fA/q
pythonごときクソ言語に劣等感抱いててワロタwww
追い詰められ過ぎwww消えそうwwwww
0778デフォルトの名無しさん
垢版 |
2018/02/22(木) 22:26:35.15ID:K6gwUVsb
Ruby にも、アルゴリズム・数学系のライブラリが揃っていれば、
蛇には負けぬものを。ぐぬぬぬぬ

実際、プログラミングコンテスト・パズル系は、Rubyで説明することが多いのに
0781デフォルトの名無しさん
垢版 |
2018/02/25(日) 04:05:29.41ID:pcyqC+jB
numbers = (1..7).to_a

この配列を、前から走査して、ある数字が見つかった時、
その数字より前の配列と、その数字を含めて、その数字より後ろの配列に、
1-pass で分ける、簡潔な書き方はありますか?

partition, group_by, each_with_object とか?

例、4 が見つかった場合
[1,2,3]
[4,5,6,7]
0783デフォルトの名無しさん
垢版 |
2018/02/25(日) 08:53:07.29ID:Mg3bT8JO
元の配列に4が1つしかなくてソート済みならpartitionでいいんじゃない
numbers.partition{|e| e < 4}

そうじゃないなら素直にやるしかないかと
i = numbsers.find_index(4)
numbers[0...i]
numbers[i..-1]

もしくは
numbers.take_while{|e|e != 4}
numbers.drop_while{|e|e != 4}
0784781
垢版 |
2018/02/25(日) 08:59:55.65ID:pcyqC+jB
SASS, HAML, Markdown とか、皆どれを使っているの?

>>783
ありがとう。素直にやるしかないですか
0787デフォルトの名無しさん
垢版 |
2018/02/25(日) 11:58:14.59ID:OLqFO2yC
[1, 2, 3, 4, 5, 6, 7].slice_before(4).to_a
=> [[1, 2, 3], [4, 5, 6, 7]]


(to_aはEnumeratorをそのまま使うようにすれば不要)
0788デフォルトの名無しさん
垢版 |
2018/02/25(日) 12:22:26.69ID:caIICGcE
これからRuby on RAILS勉強するんですけど
なんかいい参考書とかHPありますか?
0789781
垢版 |
2018/02/25(日) 12:57:24.51ID:pcyqC+jB
>>787
(1..7).slice_before(4).to_a
=> [[1, 2, 3], [4, 5, 6, 7]]

[1,2,4,5,4,6].slice_before(4).to_a
=> [[1, 2], [4, 5], [4, 6]]

slice_before だと、探している数字が複数回あると、
そこから新たに、グルーピングが始まる

>>788
改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015
実践Ruby on Rails 4: 現場のプロから学ぶ本格Webプログラミング、黒田努、2014

黒田の本は、わかりやすい。
ただし、他の著者で、Rails 5 の本も出ているかも
0790デフォルトの名無しさん
垢版 |
2018/02/25(日) 13:36:01.35ID:OLqFO2yC
> slice_before だと、探している数字が複数回あると、
> そこから新たに、グルーピングが始まる

仕様どおりだろ
0791デフォルトの名無しさん
垢版 |
2018/02/27(火) 16:15:39.63ID:shVfNcyg
erbとかのテンプレートを元に画像を生成するgemってありませんか?
thinreportsでpdfではなくbmp,pngなどの画像を出力する感じです
0792デフォルトの名無しさん
垢版 |
2018/02/27(火) 21:18:11.05ID:PLAOSS1/
「selenium webdriver screenshot」で検索!

Electron でも出来る
0796デフォルトの名無しさん
垢版 |
2018/02/28(水) 21:12:02.76ID:mIXPiXOq
TSVデータを処理したいんですが
末尾の空白文字(タブ)がいつの間にか消えてしまいます

splitが自動削除するのは分かったけど他でも消えてる様です
この暗黙の空白削除現象を検索しても引っかからないんですがいい検索単語はないですか?
あと勝手に削除する理由はなんなんでしょう
0798796
垢版 |
2018/02/28(水) 22:18:52.36ID:mIXPiXOq
原因分からなかったけど解決しました

ループ内で毎回Hashに加えていくのを一旦stringにまとめてから
ループ後のHashに加えるようにしたら"\txxxxx\t\n"の後ろのタブが消えなくなりました
0799796
垢版 |
2018/02/28(水) 22:22:19.89ID:mIXPiXOq
前に壊したデータ読み直してました
0800デフォルトの名無しさん
垢版 |
2018/03/02(金) 00:03:53.83ID:7c4/pzB6
windows環境でrRubyinstaller2でインストールしてruby.exeのパスに非アスキー文字が含まれていると
requireしたときに$LOAD_PATHの非アスキー部分が文字化けしてload errorが起きるんですけど何か対処法はありませんでしょうか?
その場的に今はUTF-8で書いたコードの中で$LOAD_PATHに対応するパスを挿入して動かしてるんですが。。。
諸事情によりrubyはアスキー文字配下にインストールできないものとします
0803デフォルトの名無しさん
垢版 |
2018/03/02(金) 07:54:43.19ID:mIGjbFX+
Windows のirb でも、ascii 以外は正常に動かないから、
irb を使う時だけ、WSL・Ubuntu の方を使っている

UTF-8 では、cp932(shift-jis)が読めないのだろう

起動時オプションで、cp932 を指定すれば、読めるかも知れないけど、
逆にRuby 内部で、cp932 はヤバイのじゃないか?

UTF-8以外を使うと、他のアプリと通信できないとか、バグりそう

とにかく、PC のユーザー名・パス名などに、半角英数字以外を使うと、
多くのアプリでバグる
0804803
垢版 |
2018/03/02(金) 11:51:22.61ID:mIGjbFX+
Windows のPowerShell から、Ruby の1-liner を実行すると、ファイル名だけが\x 表示された。
PowerShellのデフォルト文字コードが、UTF-8 だから、フォルダ名は正常に表示された

> ruby -rfileutils -e "puts FileUtils.pwd"
C:/Users/Owner/Documents/あいう

> ruby -e "p Dir.glob('*')"
["\x{8345}\x{8343}\x{838B}\x{8358}.txt", "\x{8376}\x{838D}\x{834F}\x{838C}.txt"]

> ruby -E :shift_jis -e "p Dir.glob('*')"
起動オプションに、外部エンコーディングをUTF-8のままで指定せず、
内部エンコーディングだけをshift_jis に指定すると、正常に表示された
["ウイルス.txt", "プログレ.txt"]

漏れは一々、起動時やファイル内に、文字コードを指定するのが面倒なので、
Windowsのユーザー環境変数に、RUBYOPT を追加して、--encoding=UTF-8 を設定している。
ただし、こうすると、irb が動かなくなるので、Windows10 のWSL・Ubuntu のirb を使っている

一方、WSL・Ubuntu・bash から、上記を実行すると、
デフォルトで、どちらも正常に表示された

Windows で実行する場合は、PowerShellはUTF-8、コマンドプロンプトはCP932 がデフォルトだから、
これらのシェルの文字コードか、Ruby側の文字コードを指定する

まあ、shift_jis の処理は、危険だと思う。
@などのWindows独自のCP932文字(環境依存文字)があって、
shift_jis・CP932は微妙に異なるから、どこまで正常に動くか分からない
0805デフォルトの名無しさん
垢版 |
2018/03/02(金) 12:00:42.65ID:OCKmRFPd
なにをごちゃごちゃやってんだ?

こういうのは変換すべきレイヤーで変換するだけの話だろ
Rubyのスクリプト(に限らないが)は
どこでも同じように動かすんだから
ソースコードも内部も UTF-8だ
画面への入出力時に変換させればいいだけ

コマンドプロンプトをUTF-8に変換するって手もある
海外じゃCP932という日本専用の文字コード使ってないことぐらいわかるだろ?
0806デフォルトの名無しさん
垢版 |
2018/03/02(金) 12:39:35.62ID:vnF4MMGw
元々はwindowsのワイド文字をうまくutf8に変換してやってこうという方針だったのに
nobuがロケールに変換させまくって動かないだけ
まあ誰もバグ報告しないのも悪いけど
0807803
垢版 |
2018/03/02(金) 13:14:57.35ID:mIGjbFX+
Rubyist は、RubyでGem を作れるけど、C で低レベルなI/O を書けるわけじゃない

また、Linux・Windows の両方に対応させるのは、難しい
0808803
垢版 |
2018/03/02(金) 16:17:45.17ID:mIGjbFX+
library irb/input-method
https://docs.ruby-lang.org/ja/latest/library/irb=2finput=2dmethod.html

class IRB::ReadlineInputMethod のソースコードを見れば良いの?
それとも、GNU Readline のソースコードかな?

Windows のirb で、日本語がバグるのは、
根本的に、GNU Readline が、Windowsの日本語を考慮していないからじゃないの?
0809デフォルトの名無しさん
垢版 |
2018/03/02(金) 16:40:11.45ID:ypGJ9h8+
というかrubyコミュニティがwindowsを考慮してない。
むしろ怨み、蔑み、嫌っている。昔から。
0810デフォルトの名無しさん
垢版 |
2018/03/02(金) 17:18:20.26ID:0lL3/u0V
>>809
そだねー
0811803
垢版 |
2018/03/02(金) 17:55:40.44ID:mIGjbFX+
console.log("あ");

Windows で、node (REPL)を実行したけど、
日本語を入力しても、PowerShell・コマンドプロンプトの両方で、正常に動く
0812デフォルトの名無しさん
垢版 |
2018/03/02(金) 23:07:42.42ID:wSJnGqkk
RubyはLinuxで動かすようにすればいいよ
WindowsでちょこっとしたやりたいことがあるならC#使え、と
どうせ仕事でやってるRubyはLinuxで動くんだからさ

Windowsマシンでの開発ならVMかDocker使えばすべて解決
0813デフォルトの名無しさん
垢版 |
2018/03/03(土) 01:14:23.68ID:vdurK0jv
ありがとうございました
ググってみたら結構前から報告されていたバグみたいなので諦めることにします
0814デフォルトの名無しさん
垢版 |
2018/03/03(土) 01:19:41.29ID:GGmAMA7z
>>800
$LOAD_PATHをforce_encoding()で環境に適応したエンコーディングを設定したら?
あるいは、バイナリに設定して、むりやりそれっぽいバイトデータをつっこむとか?
0816デフォルトの名無しさん
垢版 |
2018/03/03(土) 15:41:40.19ID:VQ/a88pK
cmd で chcp 65001 するくらいなら
git for windows インスコして git bash (mintty) 使うと幸せになれるぞ
0817デフォルトの名無しさん
垢版 |
2018/03/03(土) 15:43:54.56ID:x/6oRrTp
65001 は右端とか折り返し表示がバグるね
0818803
垢版 |
2018/03/03(土) 15:49:49.91ID:HcfLoqAp
Ruby の起動オプションに、外部・内部エンコーディングか、RUBYOPT で指定できる。
ファイル内でも指定できる

それと、PowerShell・コマンドプロンプト、WSL・Ubuntu・bash で指定できる

これらの組み合わせの中で、文字化けしない組み合わせを探す

または、$LOAD_PATH の辺りで、指定するとか
0819デフォルトの名無しさん
垢版 |
2018/03/03(土) 17:58:14.02ID:URsJSGy/
Rubyの2.5.0p2をRubyインストーラーでインストールしたらRubyの2.5.0p0だった・・・
0823デフォルトの名無しさん
垢版 |
2018/03/03(土) 21:55:10.06ID:GRjh9/QH
そういうことだから理解できない初心者は間違ってもrubyなんか使おうと思わないようにね。
初心者や子供にruby勧めてくるのは例外なくマウント取りたいだけのクズだぞ。
0824デフォルトの名無しさん
垢版 |
2018/03/03(土) 21:56:04.27ID:ETPjeMg1
書籍のサンプルコードの一部です
この@memoという変数はいわゆる辞書形式のデータ構造で
[remain, pre]は辞書のキー(複合キー?)という理解でいいんでしょうか
ちなみに@を付けないとどうなりますか
変数名に記号が付くのが凄く気になります

@memo = {}
# 計算結果をメモする
@memo[[remain, pre]] = cnt
0825デフォルトの名無しさん
垢版 |
2018/03/03(土) 22:30:11.11ID:gHPIEkfR
>>824
[remain, pre]は辞書のキーって理解であってる
irb等のREPLで試すとすぐ分かる
@はインスタンス変数に付けるプレフィクス
0828デフォルトの名無しさん
垢版 |
2018/03/04(日) 04:12:18.75ID:aAfADGFK
オブジェクトはなんでもイケるんじゃなかったっけ?
ハッシュ値さえちゃんと返せば。
0829デフォルトの名無しさん
垢版 |
2018/03/04(日) 11:33:10.30ID:7gUy2hud
キーにした配列を変化させた時はrehashしないとキーが一致しなくなる
文字列のキーは変化させても、キーはセットしたときのまま
0830デフォルトの名無しさん
垢版 |
2018/03/04(日) 11:34:10.89ID:Oz1ASWrr
なるほどね。先入観として[a,b]ってかいたら毎回newされて、
キーとしては未定義値のnil固定か、別オブジェクト扱いで不定になるか、と思えた
0831デフォルトの名無しさん
垢版 |
2018/03/05(月) 16:37:38.89ID:62GuhFZ7
str = <<'EOT'
str = << 'EOT'

here doc で、下のように、<< の後ろに半角空白があると、文法エラーになる

それと、WSL のUbuntu 側にインストールしたRuby で、
Windows 側にあるCSV ファイルを処理すると、

改行コードが異なるから、不正な形式のファイルと言われる。
改行コードを、LF だけに変えると、正しく処理できる
0833831
垢版 |
2018/03/05(月) 19:10:41.11ID:62GuhFZ7
options に行区切りを指定したら、

WSL のUbuntu 側にインストールしたRuby で、
Windows 側にあるCSV ファイルを処理できた

row_sep: "\r\n" では出来たが、
row_sep: :auto では、エラーになる
0834デフォルトの名無しさん
垢版 |
2018/03/05(月) 21:53:10.11ID:K/Y9LwEe
require ‘pry’
def foo;@a = 1;end
binding.pry

このコードを実行し、出て来たプロンプトで
> cd Object
> instance_methods(false)
=> [:to_yaml, :to_yaml_properties, :pry, :__binding__, :psych_to_yaml]

と出ました。fooメソッドが見つかりません。
トップレベルで定義したfooメソッドはObjectのメソッドに成るのでは?

ちなみにコマンドラインでpryとタイプして
[1] pry(main)> def foo;@a=0;end
=> :foo
[2] pry(main)> cd Object
[3] pry(Object):1> instance_methods(false)
=> [:to_yaml, :to_yaml_properties, :pry, :__binding__, :psych_to_yaml, :foo]
[4] pry(Object):1>
ちゃんとfooが見えます。
0835デフォルトの名無しさん
垢版 |
2018/03/05(月) 22:05:54.92ID:K/Y9LwEe
自己解決しました。
[1] pry(main)> self.private_methods(false)
とすれば見えました。
0837デフォルトの名無しさん
垢版 |
2018/03/15(木) 18:29:02.24ID:5enxwtKu
RubyからDB扱うときって皆は何のライブラリ使ってるの?
0838デフォルトの名無しさん
垢版 |
2018/03/15(木) 19:28:59.60ID:tIXtXy4E
RubyでDBを扱う場合、プロダクションで使われているのは世界で唯一ActiveRecordのみ
0839デフォルトの名無しさん
垢版 |
2018/03/15(木) 21:18:59.56ID:OYGfq7D7
インターフェースじゃん。
バックでmysqlとか動いてるぞ。
いいからちゃんと勉強しろよ。
0841デフォルトの名無しさん
垢版 |
2018/03/15(木) 23:24:57.24ID:xG9lbsTH
>>837
ActiveRecordが大半なのは間違いない

ORMを求めてるならsequel、rom、hanami等
素のDBライブラリならmysql2, sqlite3-ruby, ruby-pg
ArelでSQLを構築してDBライブラリ使ってSQL実行してもいい
0842デフォルトの名無しさん
垢版 |
2018/03/16(金) 15:24:05.43ID:3ma6aQHv
sqlite3
0843デフォルトの名無しさん
垢版 |
2018/03/16(金) 18:23:28.28ID:2Gd98HT2
>>839
Rails屋がSQLすら書けなさそうに見えて腹立つのは分からんでもないけど、今はDBインターフェースの話しかしてないぞ
0844デフォルトの名無しさん
垢版 |
2018/03/16(金) 23:22:04.16ID:yiSYhWxU
「Node.js超入門、掌田津耶乃、2017」を読んでいるけど、JavaScript の基本は、Ruby

Ruby のSinatra, JS のNode.js を、full scratch で書くと、ほぼ同じ

Rails, JSのExpress + Bookshelf が、ほぼ同じ
0846844
垢版 |
2018/03/17(土) 00:05:48.37ID:nxO/ldT7
プログラミング本では、掌田が第一人者。
Unity, UE4 などのゲームエンジンから、最近は、Python, Node.js にも進出

売れる・成長する分野には、必ず掌田が参入してくる。
業界の風見鶏

「Node.js超入門、掌田津耶乃、2017」
この本で、Sinatra, Rails を学ぶ方が簡単。
20時間ほどで読める

後は、YouTube の動画で、OK
0848デフォルトの名無しさん
垢版 |
2018/03/17(土) 00:34:45.99ID:4Xu/HAYS
今の時代、開発速度が速すぎて誰も良い本なんか書けないよ
それを書き終わる頃には時代遅れになってるんだから
0850デフォルトの名無しさん
垢版 |
2018/03/17(土) 01:55:30.84ID:+wQGtQt+
掌田津耶乃はだめな本
山田 祥寛は良い本

という評価が一般的
掌田津耶乃は何冊か読んでいるけど、
見比べてみるとたしかにダメダメなんだなぁ。
0853デフォルトの名無しさん
垢版 |
2018/03/17(土) 09:18:19.49ID:nxO/ldT7
最近は、Python にも、なでしこの作者・クジラ飛行机、
大津真、掌田も、乗り込んできた

この辺は、売れ筋には参入してくる著者

中でも掌田は、ゲームエンジン・言語・Javaのフレームワーク・Node.js など万能
0854デフォルトの名無しさん
垢版 |
2018/03/17(土) 12:59:20.73ID:OC0Ef+g3
またあらぶっとるんか糞荒らし
はやくRubyコミュで発言しろよ屑
0855デフォルトの名無しさん
垢版 |
2018/03/17(土) 14:32:15.41ID:+wQGtQt+
要はね
掌田の出版本を見てみるとわかるが、
初心者を食い物にしている
初心者専用の作者なわけよ、

だからレビューとかで
表面だけかじって書いたかのような本とか
書かれちゃうわけよ。

深く知りもしないであれだけの数の本を書けるわけないよね。
だから掌田はおすすめできないんだわ。

初心者にはいいかもしれないよ?
初心者向けの本ばかり何冊も何年も書き続けているから。
0857デフォルトの名無しさん
垢版 |
2018/03/17(土) 16:43:12.02ID:cWw1OMJa
>>855
ほんそれ
0858844
垢版 |
2018/03/17(土) 19:43:45.96ID:nxO/ldT7
デザインもカラフルで、図解してあるから、すごくわかりやすい。
売れるから、こういう外注予算が大きい

オライリーでは、図解・デザインは無いから、読むのに時間が掛かる。
図解は視覚だから、瞬時に理解できるけど、
言葉の説明だと、それを図に置き換えて、考えないといけないから大変

掌田の本は、ものすごく短時間で理解できるから、効率的。
すごく消化・吸収に良いし、
時間も節約できるから、時給換算すれば大得

漏れには、時間が掛かる・細かい・理解できない、100の知識はいらない。
短時間で、よくわかる、50の基礎知識がさえ有ればよい。
あとは動画を見て、応用するから

「Node.js超入門、掌田津耶乃、2017」
この本で、Sinatra, Rails が分かる

「10日でおぼえる jQuery 入門教室 第2版、山田祥寛(よしひろ)、2013」
この本で、Nokogiri が分かるのと同じ

本が出ていない場合とか、難しい本しかない場合に、非常に役に立つし、速い
0860デフォルトの名無しさん
垢版 |
2018/03/18(日) 12:36:10.41ID:Gg1K6bSi
>>859
頭使ってる?
掌田津耶乃が何冊初心者用の本を出しているか知っている?
ちょっと考えれば、
英語、ドイツ語、フランス語の言語学習の本を書いたとしたら
その言語のことをどこまで知っていて本を書いているんだろうとか気にならないの?
もし気にならないんだったら、表面的な知識だけで満足しているお前とは合わないのでバイバイ ノシ

Amazon.co.jp: 掌田 津耶乃:作品一覧、著者略歴
https://www.amazon.co.jp/%E6%8E%8C%E7%94%B0-%E6%B4%A5%E8%80%B6%E4%B9%83/e/B004L5AED8/ref=sr_tc_2_0?qid=1521344021&;sr=8-2-ent
掌田津耶乃(しょうだつやの)。ほぼ男性。テクニカルライター兼3流プログラマ。

自分でも3流プログラマと認めているのに、まったく信者って奴は・・・
0862デフォルトの名無しさん
垢版 |
2018/03/18(日) 12:55:57.40ID:QAeUSVF3
基本的に流行ってるものを、ざっと調べてまとめただけなんだろうな
だから初心者レベルのところまでしか書けない
概要を知るところまでで、あれを参考にしてコードを書いてはいけない
0863デフォルトの名無しさん
垢版 |
2018/03/18(日) 16:36:38.11ID:Aq9RvNC1
HypaerCardの本も出してたから もう30年以上初心者向けの本出してるベテラン 
0864デフォルトの名無しさん
垢版 |
2018/03/18(日) 19:04:35.10ID:Pu83I0V3
Amazonのレビューでよく思うけど、海外の人は褒めるのが上手。いい面を見てる
日本人は100点じゃなきゃ糞みたいな心の狭い人が多い
初心者向けの本なんかにケチつけなくてもいいだろうに
今は公式サイトのドキュメントが充実してる時代なんだから、ほぼ公式くらいのことしか書かんだろうよ
0865デフォルトの名無しさん
垢版 |
2018/03/18(日) 19:43:48.34ID:Gg1K6bSi
そうだな、ネイティブと喋れない、英検準2級、TOEIC500点ぐらいの人が教えているって感じ。
そんなイメージが掌田津耶乃さん。
0867デフォルトの名無しさん
垢版 |
2018/03/18(日) 21:55:23.04ID:JzaiKxSG
>>860
いや長文必死にならなくても、お前さんが自分で解説するだけの知力すら無いってのは分かったから。
0868デフォルトの名無しさん
垢版 |
2018/03/18(日) 21:59:08.72ID:QAeUSVF3
なんで作者本人が自分で三流ですって言ってるのに、
他人が三流であると解説する必要があるんだ?
0870デフォルトの名無しさん
垢版 |
2018/03/18(日) 23:24:43.53ID:JFJ3EKTR
Java, Ruby のフレームワークを書ける人は、少ない。
山田祥寛(よしひろ)、掌田津耶乃、宮本信二、黒田努など

山田は会社向けの、1日4万円の講座などを開いている

一方、掌田は初心者向け。
Unity, UE4 などのゲームエンジン、
Python などの売れ筋言語、
Spring などのJavaのフレームワーク、
Node.js + Express などのJavaScript のフレームワークなど、万能

山田は会社員、掌田は初心者と、ターゲットが異なる。
もし、同じターゲットなら、両雄並び立たずで、共倒れするから
0871デフォルトの名無しさん
垢版 |
2018/03/18(日) 23:54:42.62ID:3ZuC3w8U
自演注意
自演注意
自演注意
0872デフォルトの名無しさん
垢版 |
2018/03/19(月) 04:32:11.24ID:csFbH6Mx
File.open('test.txt', 'r+') do |io|
text = io.read
io.rewind

io.write 'あ'
p io.pos #=> 3

io.truncate io.pos
end

読み書き両用ファイルの、ファイルサイズを減らして、上書きできた

io.rewind で、ファイルポインタを先頭に巻き戻す。
io.truncate io.pos で、現在のファイルポインタの位置で、ファイルを切り詰める
0874デフォルトの名無しさん
垢版 |
2018/03/21(水) 00:56:42.17ID:p8DsWgGG
変なこと聞くけどさ、rspecでさ、まあ適当にサンプル書くけど

describe "hoge do
 before do
  ・・・
 end

 context do
  let(:a) { 1 }
  ・・・
  it 'hage' do
   expect(a).to be 1
  end
 end
end

コレに限った話じゃなくて、rspecの使い方で内側のブロック(例えばitの中)から
外側のブロック(例えばcontextの中)の状態(例えば変数)を
書き換えるのを禁止にしても何の問題もないよね?もちろん参照するのはOK。
テストはどう有るべきかを考えたら、むしろそうした方が良いぐらいじゃないかって思うんだけどどうかな?
0875デフォルトの名無しさん
垢版 |
2018/03/21(水) 01:22:34.72ID:qUqb4QSc
ネストしたcontextで
内側のcontextが外側のcontextで設定した状態を
書き換えるような形でテストを書いても別にいいと思うけどな
0878デフォルトの名無しさん
垢版 |
2018/03/21(水) 07:02:14.53ID:wxFTzoek
外部への依存が少なければ、個々のテストの独立性が高いから、
バグが減るし、テストを並行実行できる

それが理想だけど、実現するのは難しそう
0880デフォルトの名無しさん
垢版 |
2018/03/21(水) 16:22:28.39ID:p8DsWgGG
>>879
上書き?
letは新たにローカル関数を作るようなもので
親ブロックのaを上書きなんかしてないよ
0883デフォルトの名無しさん
垢版 |
2018/03/30(金) 15:22:33.47ID:87KFZNYL
Chrome 65 になったら、selenium webdriver が動かなくなったので、
chrome driver 2.37 を、ダウンロードしてみた

これで動くかどうかは、まだ試してないけど
0884883
垢版 |
2018/03/30(金) 20:31:06.53ID:87KFZNYL
新しいバージョンの、chrome driver にしたら動いた
0885デフォルトの名無しさん
垢版 |
2018/04/01(日) 16:44:40.27ID:0KaYXtgi
すみません、質問があります。
他人様の書いたコードを読んで写経しながら勉強していた所、
begin
#何らかの処理A(特に例外を出しそうな処理ではない)
end until hoge

という記述があったのですが、この書式の意味というか意図がいまいちつかめなくて困っています。
自分でコードを書いて試してみた所、この記述はhogeがtrueでもfalseでも処理Aを実行しており、
特に「until hoge」の部分で何を制御したいのかがわかりません。

(begin
#処理
end) until hoge

例えば、↑の書き方だと単純なuntil文の後置修飾になるので意味がわかるのですが、
上述のような書式で書く理由や、こう書くとどういうメリットがあるかを教えていただけますと嬉しいです。
よろしくお願いいたします。
0887デフォルトの名無しさん
垢版 |
2018/04/01(日) 17:15:27.40ID:9myXjpPz
>>885
下のAとBは同じことをするんだけど、Aだと1行目と4行目が同じでもやっとするのでBのように書いているのでは
個人的にはbegin〜endをメソッドにしてこうは書かないけど
begin〜end untilのほかにもbegin〜end whileも同様

# A
i = Time.now.sec
until i % 3 == 0
p i
i = Time.now.sec
end

# B
begin
i = Time.now.sec
p i
end until i % 3 == 0
0888デフォルトの名無しさん
垢版 |
2018/04/01(日) 17:18:46.83ID:9myXjpPz
訂正

# A
i = Time.now.sec
p i
until i % 3 == 0
i = Time.now.sec
p i
end

# B
begin
i = Time.now.sec
p i
end until i % 3 == 0
0889デフォルトの名無しさん
垢版 |
2018/04/01(日) 17:32:20.95ID:0KaYXtgi
>>887-888
ご回答頂きどうもありがとうございます。
なるほど、この書式だとbegin~end内の処理が1回は必ず実行されて、
その後に条件文で判定されるようになるので、同じ処理(例だと代入処理)を2度書かなくて済むようになるんですね。

とても勉強になりました。

個人的にはコード行数が増えたり同じ処理が連続するよりも、
ひと目で意図する処理が他人に伝わらないのはちょっと嫌なのでこの書き方は真似しないようにします……。
0890デフォルトの名無しさん
垢版 |
2018/04/01(日) 17:40:44.12ID:KXX7rc47
いや、それはおかしい。
リトライやリドゥーみたいな処理で、必要であれば、ためらわずそう書くべき。多少わかりにくくても。
いずれ慣れるから。

なんなら、先頭にコメントをつけとけば。
0892デフォルトの名無しさん
垢版 |
2018/04/01(日) 18:00:28.18ID:ZcGM330i
(なにかしら).method

do
なにかしら
end メソッド


みたいなもんだからRuby規則に沿っているだろ
0895デフォルトの名無しさん
垢版 |
2018/04/01(日) 18:27:29.70ID:Aa3HndXz
英語的な自然さを求めるなら、loopをendのエイリアスということにして loop while/until かな
VBがそんな感じだったはず
まあジャップ製言語だから仕方ないね
0896デフォルトの名無しさん
垢版 |
2018/04/01(日) 18:31:46.49ID://EuH1G7
>>893
beginの中が長いと上から読んでてループするんだかrescueするんだかわかりにくいからじゃない?
ruby-style-guideはコメントを極力書かないで済むようにするのが目的の一つだから
まあ個人的には首肯しかねるルールもいくつかあるけどね
0897デフォルトの名無しさん
垢版 |
2018/04/01(日) 18:43:23.68ID:hwmab9Mq
>>896
それもあるね
日本人からすると「〜〜(長い長い手続き)〜〜をループさせろ」は自然な流れだけど、
向こうの人からすると「結論から話せやファッキンジャップ」だろうな
0899デフォルトの名無しさん
垢版 |
2018/04/02(月) 12:57:38.84ID:g/2XFKpH
ブロッキング条件なら後に来るの自然に感じる
長過ぎるとってのはどんなブロックでも同じ
0901デフォルトの名無しさん
垢版 |
2018/04/02(月) 13:11:22.76ID:6hj+x7xd
おいおい…
「を」は対格を作る格助詞だぞ。
記号で書くとV(=verb=動詞)O(=object=目的語)だ。
SVは
S(=subject=主語)V(=verb=動詞)で、
S「が」Vする、だ。
0904デフォルトの名無しさん
垢版 |
2018/04/02(月) 14:10:59.70ID:HZoT/r0A
それより>>894だろうな
begin〜end系言語で結びにend whileなんて書くのrubyくらいじゃないか?
たいてい>>895みたいにendを別の単語に変えてる
0906デフォルトの名無しさん
垢版 |
2018/04/03(火) 03:47:06.97ID:hZewAlsv
>>889
同じ処理を、別の場所に2回書くと、

修正時に、2か所とも修正しないといけないから、
どちらかを修正し忘れる事があるので、危険
0909デフォルトの名無しさん
垢版 |
2018/04/04(水) 02:02:25.22ID:h2UR4/YM
Reuse
Reduce
Recycle
Ruby
0910デフォルトの名無しさん
垢版 |
2018/04/05(木) 14:25:03.13ID:eFdDptlj
selenium-webdriver で、Chrome のHeadless mode で、
5ch の投稿者名・書き込み内容を、抜き出してみた

driver.navigate.to "https://mao.5ch.net/test/read.cgi/linux/1479499953/8-9";

elements = driver.find_elements(:css, 'div[data-id]')

elements.each do |elem|
str = elem.attribute('data-id') + ' 投稿者 :'

# CSS では、コンテキストの直下を表現できないので、xpath を使う
# str += elem.find_element(:css, '> div.meta > span.name').text
str += elem.find_element(:xpath => "div[@class='meta']/span[@class='name']").text
puts str

str = '内容 :'
str += elem.find_element(:xpath => "div[@class='message']/span").text
puts str
end
0911デフォルトの名無しさん
垢版 |
2018/04/07(土) 05:31:34.17ID:Cc4pa2fK
三ヶ月在れば一つのプログラム言語を習得しアプリケーションを作ることが出来るw
https://mevius.5ch.net/test/read.cgi/win/1504394535/9

おいらは習作はしない、他愛ないことはやらないのだ
https://mevius.5ch.net/test/read.cgi/win/1503735829/881-883

C#なんてのはVZの開発環境にないwww
https://mevius.5ch.net/test/read.cgi/win/1520923324/913

ワロタ、ワロタ
https://echo.5ch.net/test/read.cgi/win/1467974448/129-132
0912デフォルトの名無しさん
垢版 |
2018/04/08(日) 14:20:42.12ID:JYaIVkeP
10年以上前に学校でスクリプト言語を勉強してたときはPHPが流行ってて
Perlもあったけど少し古いかなって感じ。ただとにかくJAVAが騒がれててJSP+tomcatなんかもやったな。
Rubyはあったけどそんなに話題にならず。
で最近、またスクライピングがやりたくて色々調べたら
もうPHPも下火?でRubyとpythonとかいう言語が主流みたいですね。
0913デフォルトの名無しさん
垢版 |
2018/04/08(日) 15:16:13.15ID:nkM5b3tX
Rubyは主流じゃない
0914デフォルトの名無しさん
垢版 |
2018/04/08(日) 16:26:08.93ID:ikNNlzZg
PHPが下火でRubyが主流がねーわ。
人気を捏造しないと好きな言語も恥ずかしくて使えないのか軟弱者め。
たとえ世界の全てが使わなくても自分だけはRubyを使い続けるという気概を持てよ情けない奴
0915デフォルトの名無しさん
垢版 |
2018/04/08(日) 17:41:41.41ID:mE+8rAwy
2ch/5chでは、日本人が作ったというだけで、だめ扱いする書き込みがあるから
注意すべし。どこかぞの国から書き込まれている事がある。
0916デフォルトの名無しさん
垢版 |
2018/04/09(月) 11:49:58.15ID:M/BmQ9Z1
以下の半角空白区切りの行から、稼働時間を求めるには、どうやるの?
夜、24:00 以上の数字もあります

2018/09/09 09:45-24:00
2018/10/10 23:00-27:15
0917デフォルトの名無しさん
垢版 |
2018/04/09(月) 12:21:03.03ID:2h6IFanV
>>916

date = "2018/09/09 09:45-24:00"
m = date.match(/(\d\d):(\d\d)-(\d\d):(\d\d)/)[1, 4].map(&:to_i)
min = (m[2] - m[0])*60 + m[3] - m[1]
p "%d:%d" % min.divmod(60) # => "14:15"
0918916
垢版 |
2018/04/09(月) 13:15:44.73ID:M/BmQ9Z1
ありがとう

Date, DateTime, Time などの形で、引算で求められませんか?
0919デフォルトの名無しさん
垢版 |
2018/04/09(月) 13:42:09.51ID:2h6IFanV
date = "2018/09/09 09:45-24:00"
m = date.match(%r!\A(?<year>\d{4})/(?<month>\d\d)/(?<day>\d\d) (?<begh>\d\d):(?<begm>\d\d)-(?<finh>\d\d):(?<finm>\d\d)\z!)
beg = Time.new(m[:year], m[:month], m[:day], m[:begh], m[:begm])
fin = Time.new(m[:year], m[:month], m[:day], m[:finh], m[:finm])
min = (fin - beg)/60
p "%d:%d" % min.divmod(60) # => "14:15"
0920916
垢版 |
2018/04/09(月) 14:17:26.06ID:M/BmQ9Z1
ありがとう

24:00 では、Time インスタンスを作れるけど、
27:15 では、エラーで作れなかった

回避策を考えてみます
0921デフォルトの名無しさん
垢版 |
2018/04/09(月) 14:23:48.18ID:GdkyYm9A
pythonスレにマルチするのやめれ
0922デフォルトの名無しさん
垢版 |
2018/04/09(月) 14:39:12.15ID:2h6IFanV
>>920

date = [
"2018/09/09 09:45-24:00",
"2018/10/10 23:00-27:15"
]
begfin = lambda do |m|
d = Time.new(m[:year], m[:month], m[:day])
[[m[:begh], m[:begm]], [m[:finh], m[:finm]]].map { |hour, min|
3600 * hour.to_i + 60 * min.to_i
}
end
date.each do |d|
m = d.match(%r!\A(?<year>\d{4})/(?<month>\d\d)/(?<day>\d\d) (?<begh>\d\d):(?<begm>\d\d)-(?<finh>\d\d):(?<finm>\d\d)\z!)
beg, fin = begfin[m]
min = (fin - beg)/60
puts "%d:%d" % min.divmod(60) # => "14:15"
end
# =>
14:15
4:15

ってマルチかい
0923916
垢版 |
2018/04/09(月) 15:24:13.18ID:M/BmQ9Z1
python スレの書き込みとは別人。
ID も異なるはず

その書き込みを見て、Ruby ではどうプログラミングするべきか、考えてみたが難しかった
0925916
垢版 |
2018/04/09(月) 16:17:52.99ID:M/BmQ9Z1
d = Time.new(m[:year], m[:month], m[:day])
d_next = d + 60 * 60 * 24

24時以上の場合は、hour から24を引いて、1日足すけど、これはややこしい
0928916
垢版 |
2018/04/10(火) 00:28:34.01ID:oEQHPFsL
表計算ソフトなどで、時間管理していると、こういう表記もある。
2018/10/10 23:00-27:15

上を一旦、変換して
2018/10/10 23:00-24:00
2018/10/11 00:00-03:15

これも、1日足すのも結構、難しい。
Date, DateTime に変換してから、1日足さないと、月末・うるう年などで、バグる

>>925
>d_next = d + 60 * 60 * 24
これで1日足すのも、うるう秒の時が、どうなるか不安
0932デフォルトの名無しさん
垢版 |
2018/04/10(火) 08:52:25.96ID:OCO/nUgk
RubyのDateTimeは充分以上だよ。
日付を増減するときは、それ時分秒の値はさわらずに、めんどくさくても日の値を変更すればいい。
0937デフォルトの名無しさん
垢版 |
2018/04/10(火) 18:25:57.56ID:6CkCb20Q
えーっ、そんなこといちいち書かなきゃいけないのw?rubyなら組込メソッドで一発だよwww
「時間は?」
       ____
    /      \
   /  ─    ─\
 /    (●) (●) \ 必要ない。計算すればいい
 |       (__人__)    |
 \     ` ⌒´   /
,,.....イ.ヽヽ、___ ーーノ゙-、.
:   |  '; \_____ ノ.| ヽ i
    |  \/゙(__)\,|  i |
    >   ヽ. ハ  |   ||
0938デフォルトの名無しさん
垢版 |
2018/04/10(火) 18:40:12.63ID:+90qRIYS
RubyはUNIX文化だから、時刻はUNIXタイムスタンプを生で扱うのが基本
MRIのコアの連中自身が使ってないから改善されないんだろう
0939デフォルトの名無しさん
垢版 |
2018/04/11(水) 00:12:29.76ID:5V3NvSPI
rubyなら日本の休日祝日にも対応してるはず
0942デフォルトの名無しさん
垢版 |
2018/04/13(金) 22:56:58.03ID:AzlDcdDn
Windowsの文字エンコードはLinux/Unixよりも対応の幅が広い。

まずNT系は古くからUnicode(UTF-16)に対応
Unicode対応アプリであれば全世界で共通に使える

それでいて9x系との互換性のために、Unicodeに対応してないアプリは
それぞれの国のエンコード設定が使用される

その設定はコントロールパネルから変更できるのだが
その変更できる文字コードがLinux/Unixよりも遥かに多い
しかもANSIと互換性がない文字コードでも使用可能
0943デフォルトの名無しさん
垢版 |
2018/04/14(土) 03:27:42.04ID:lnTeyTPJ
chcp 65001 バグ治してから言え
0944デフォルトの名無しさん
垢版 |
2018/04/14(土) 03:48:53.88ID:6pCy057f
>>943
それはどちらかと言えばコマンドプロンプトの問題なんだが、
WSL対応関係で強化されて、めだった不具合なくなってるよ
0945デフォルトの名無しさん
垢版 |
2018/04/15(日) 21:31:41.02ID:r1bqrkta
OneDriveでコード管理していたのだけど、
久しぶりにコーディング(エディタはVSCode)してOneDrive上のRubyファイルを実行しようとしたら
[BUG] Segmentation fault
というエラーがでて、
puts 'A'
というコードさえ実行出来なくなっていた。

ローカルハードディスクに落としたら実行出来たんだけどどうしたものだろう。
0947デフォルトの名無しさん
垢版 |
2018/04/15(日) 22:51:17.13ID:MhEmdnyU
そっか。
ありがとうございます。

別にOneDriveをストレージにしても問題ないということだね。
試行錯誤してみます。
0948デフォルトの名無しさん
垢版 |
2018/04/15(日) 23:30:04.01ID:xpwShDOv
WebDAVか
0949945
垢版 |
2018/04/16(月) 07:27:54.33ID:1U+gAd+J
GoogleDrive上のRubyファイルは動いた。

何か仕様変更があったのかしら。
ともかく、現状、GoogleDriveでコード管理することにします。
0951デフォルトの名無しさん
垢版 |
2018/04/16(月) 09:47:03.26ID:75OnkAat
Azureで自前のgitとSSH鯖で桶
0952デフォルトの名無しさん
垢版 |
2018/04/16(月) 09:53:08.11ID:PnJWHI/9
AzureならGitはVSTS使うのが普通だろ
AWSならCodeCommit使えば完全無料だ
今時たかがGitのホスティングごときにサーバー運用の手間かけるとか頭悪すぎ
0954デフォルトの名無しさん
垢版 |
2018/04/16(月) 10:10:23.68ID:pZQ1SPWZ
> AWSならCodeCommit使えば完全無料だ

AWSの方は完全無料なのか?って思ったら
やっぱり無料制限あるじゃんw
だいたい一緒みたいね

https://aws.amazon.com/jp/codecommit/pricing/
最初の 5 人のアクティブユーザー
50 GB のストレージ/月
10,000 回の Git リクエスト/月
0956デフォルトの名無しさん
垢版 |
2018/04/16(月) 10:33:36.56ID:X9HGFo0K
いやコミットじゃなくてプッシュやフェッチか
人間の手動操作なら事実上無制限だな
0957デフォルトの名無しさん
垢版 |
2018/04/16(月) 10:40:27.16ID:pZQ1SPWZ
>>956
1 push 1リクエストとは限らんぞ、どういう計算しているか知らんけど、
例えば1 pushに含まれる1ファイルが1リクエストになってるかもしれない
そう考えるとGoogleの方がわかりやすいかもね。
0958デフォルトの名無しさん
垢版 |
2018/04/16(月) 10:45:48.83ID:pVewTO76
>>957
ファイル単位なら1万くらいcloneや最初のpushで一発で超過するじゃん
一般的な使い方で超過することはめったにないって書いてるからさすがにそれはないだろ
0959デフォルトの名無しさん
垢版 |
2018/04/16(月) 15:08:56.12ID:lu0LQeBN
>>960
踏んだらすれたてよろしく
0960デフォルトの名無しさん
垢版 |
2018/04/16(月) 15:17:41.22ID:r1/f7Sud
うんこ
0964デフォルトの名無しさん
垢版 |
2018/04/16(月) 17:25:19.50ID:pZQ1SPWZ
>>963
今はgitの話では?
他のことしたいなら、他のもの使えばいいだけだし
gitは○○を使うって話をしてるんだよ
0965デフォルトの名無しさん
垢版 |
2018/04/16(月) 18:47:04.65ID:PnJWHI/9
>>964
たぶん963は、サーバーをGitだけでなく他の用途にも使うと言ってるんだと思うよ
すごく筋の悪い思考だと思うけどね
0966デフォルトの名無しさん
垢版 |
2018/04/17(火) 03:27:09.27ID:QMWYQNUe
スジはなめるためにある
0969デフォルトの名無しさん
垢版 |
2018/04/18(水) 00:43:52.27ID:lRwbg5zI
>>967
おつ
0970デフォルトの名無しさん
垢版 |
2018/04/18(水) 01:12:53.91ID:6DBcsPYG
>>968
逆に聞くが、あえてGit自前運用かつサーバー相乗りという選択肢を選ぶ積極的な理由が何か一つでもあるの?
コストが高い、信頼性が低い、運用が面倒臭い、便利なWebインターフェイスもない、CIなど外部との連携もしづらい
また、サーバーに複数のサービスを同居させるのは、運用が面倒になるので一般的には避ける方向で検討するのが基本だ
オンプレならハードのコストやハード運用も勘定に入れた結果そうせざるを得ない場合も多いが、
クラウドなら安く小さいサーバーを沢山持ててハード運用の手間もないから問題にならない
0971デフォルトの名無しさん
垢版 |
2018/04/18(水) 01:21:24.00ID:UfQjex1N
関数の取扱いが非常に筋の悪い言語があるらしい。
何かしらのメソッドとして表したいという、初期設計時のオナニーがこの事態を招いた。
block、proc、lambdaと笑っちゃうくらいぐっちゃぐちゃ。
どういうときにどの形式使えばいいのか、変換するルールは…
はい、お約束。全部覚えましょうw
一事が万事この調子だよなw
そのうち「3+5を計算する機能」レベルで組み込まれてしかも数通りバリエーションが仕込まれそうw
宣伝文句は「えーっ、3+5計算するのにそんなこと書かなきゃいけないの?wそれrubyなら組み込みの呼び出すだけで一発だよ?ww」
0972デフォルトの名無しさん
垢版 |
2018/04/18(水) 02:03:46.12ID:1MQV5vND
>>970
git使うだけで面倒とかどれだけ初心者想定してんだよ
うちはredmineと連携させてるからwebからも見れるよ
バックアップも他と一緒にとってるから楽よ
別にホストがクラウドでないなんて言ってないし
0975デフォルトの名無しさん
垢版 |
2018/05/03(木) 09:37:28.31ID:vrPjbtA8
なんかbundlerがエラー吐くようになってしまって困っています。
対応策は知りませんか?

Traceback (most recent call last):
2: from /usr/local/bin/bundler:23:in `<main>'
1: from /usr/local/lib/site_ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/usr/local/lib/site_ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)
0976デフォルトの名無しさん
垢版 |
2018/05/03(木) 12:26:03.69ID:vrPjbtA8
bundler -v
も動かないです。
0978デフォルトの名無しさん
垢版 |
2018/05/03(木) 15:03:53.22ID:bkPu29QU
super electromagnetic yoyo
0980デフォルトの名無しさん
垢版 |
2018/05/04(金) 16:02:47.13ID:FNtgJ1dj
>>912
Ruby、Pythonが主流なのか?

俺、Ruby使いだけど、主流言語使ってる気分にはなれない。
0982デフォルトの名無しさん
垢版 |
2018/05/04(金) 16:24:40.64ID:plo/RuVs
google、ms・・・流れ込んでる資金量・人員数が違う
あれだけ人・金かけられたらどんなクソ言語でも主流になる
そうさせたのはブラウザで唯一実行可能というアドバンテージだったがそういう意味では今後はrustやgoにも可能性はある
rubyはそれもない
0984デフォルトの名無しさん
垢版 |
2018/05/08(火) 04:34:33.88ID:ws+EcsEk
@lru_cache(maxsize=None)
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)

>>> [fib(n) for n in range(16)]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]

Ruby には、上のPython のような、デコレーターは無いの?

上はフィボナッチだが、引数・答えを、メモ化するような関数はある?
0987デフォルトの名無しさん
垢版 |
2018/05/08(火) 09:01:44.06ID:ws+EcsEk
class A
def initialize (a = 5)
@a = a
end
p (0..@a)
end

p a = A.new

>p (0..@a)
@a が初期化されていないのか、エラーになる

クラス内の地の文は、A.new・initializeよりも、先に実行されてしまうのか?

>>985-986
ありがとう
0989デフォルトの名無しさん
垢版 |
2018/05/08(火) 12:18:20.40ID:XzXTdruW
スレたてられなかったから誰か代わりに建ててくれないか

>>987
ついでだけどその書き方だと p (0..@a) の @a は A のインスタンスのインスタンス変数じゃなくて、 A という『Class クラスのインスタンス』のインスタンス変数だから注意ね
0991デフォルトの名無しさん
垢版 |
2018/05/08(火) 22:51:57.39ID:FvmTtIIh
>>987
クラス内の文は、記述順に実行される。
defは、メソッド定義の宣言部というよりは、実行文なので、同様。
0992987
垢版 |
2018/05/08(火) 23:24:38.69ID:ws+EcsEk
class A
def initialize (a = 5)
@a = a
puts "init : #{@a.class}" # 1
end

puts @a.class # 2
end

p a = A.new
p b = A.new(2)

出力結果
NilClass

init : Integer
#<A:0x00000000050dc230 @a=5>

init : Integer
#<A:0x00000000050dc078 @a=2>

実行前のファイル読み込み時に、1回だけ、#2 puts が呼ばれて、
initialize内の#1 puts は、new 毎に呼ばれる
0994デフォルトの名無しさん
垢版 |
2018/05/09(水) 00:19:25.75ID:p+TFQEkm
ファイル内の空行数を数える

ruby -e "puts File.read(\'test22_data.txt\').scan(/^$/).length"
ruby -e 'puts File.read(\"test22_data.txt\").scan(/^$/).length'

Windows PowerShell で、1-liner を実行する際、
クォーテーション内に、クォーテーションがある時に、\ でエスケープしないと、
PowerShell が、内側のクォーテーションを除去してしまって、エラーになるけど、
皆こういう場合、どうしてる?
0997デフォルトの名無しさん
垢版 |
2018/05/09(水) 08:36:03.80ID:DadRmw9B
>>995
+1
0998デフォルトの名無しさん
垢版 |
2018/05/09(水) 08:36:55.27ID:DadRmw9B
>>996
ほんそれ
0999デフォルトの名無しさん
垢版 |
2018/05/09(水) 08:37:56.36ID:DadRmw9B
>>994
1-liner にこだわるのはなぜ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 166日 8時間 2分 58秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況