プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ
質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 64
https://mevius.5ch.net/test/read.cgi/tech/1535797516/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
Ruby 初心者スレッド Part 65
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f80-JI52)
2018/12/22(土) 04:43:34.03ID:84E3pYZa0798デフォルトの名無しさん (ワッチョイ ff2c-vu2g)
2019/10/30(水) 01:59:02.44ID:p2ffZ2o00799デフォルトの名無しさん (エムゾネ FF1f-Tlcr)
2019/10/30(水) 13:12:15.78ID:Jt7N9BVBF800デフォルトの名無しさん (ワッチョイ ca2c-0B+f)
2019/11/04(月) 16:33:35.55ID:Zu03xGz40 あるフォルダ内の子フォルダだけを取得するのに、こう書いているのですが、
PowerShell みたいに、ls -Directory
など、もっと簡単に書けないの?
target_dir = "C:/Users/Owner/Documents/*"
p dest_dirs = Dir.glob( target_dir ).select { |path| File.directory?( path ) }
return if dest_dirs.length == 0 # フォルダが存在しない
PowerShell みたいに、ls -Directory
など、もっと簡単に書けないの?
target_dir = "C:/Users/Owner/Documents/*"
p dest_dirs = Dir.glob( target_dir ).select { |path| File.directory?( path ) }
return if dest_dirs.length == 0 # フォルダが存在しない
801デフォルトの名無しさん (ミカカウィ FF27-xbEI)
2019/11/04(月) 16:36:49.84ID:6GYoHHZPF RubyはUNIXで使うものであり、シェルコマンドも積極的に使うのが前提
Rubyから普通にlsを呼べ基地外
Rubyから普通にlsを呼べ基地外
802デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/04(月) 19:06:35.57ID:KBcuTkU10 単発で使う分には十分簡単に書けてると思うが
繰り返し書く必要があるなら自分でメソッド抽出すればよくね?
繰り返し書く必要があるなら自分でメソッド抽出すればよくね?
803800 (ワッチョイ ca2c-0B+f)
2019/11/04(月) 19:37:03.85ID:Zu03xGz40 Dir.glob( "パス", :directory )
みたいに、ブロックじゃなくて、
オプション・シンボルなどで、簡単に指定できれば
みたいに、ブロックじゃなくて、
オプション・シンボルなどで、簡単に指定できれば
804デフォルトの名無しさん (アウアウカー Sacb-ENpr)
2019/11/04(月) 20:32:46.29ID:15pQYryDa >>800
むしろPowerShellが凄い
むしろPowerShellが凄い
805デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/04(月) 22:33:04.21ID:KBcuTkU10 Dir.glob('*/')
806デフォルトの名無しさん (アウアウウー Sa2f-x9nz)
2019/11/05(火) 21:08:09.25ID:z9XdE4jra rubyを使い出して2週間なのですが困っています。
今は汎用機のログの一括処理に使っているのですが、
半角カナや漢字が文字化けして読み込まれます。
ログファイルはwindowsにsjisで保存されていて、
これをsjis指定で読み込んでも\x33等と化けます。
どうすれば半角カナが化けないように読めるのでしょうか。
今は汎用機のログの一括処理に使っているのですが、
半角カナや漢字が文字化けして読み込まれます。
ログファイルはwindowsにsjisで保存されていて、
これをsjis指定で読み込んでも\x33等と化けます。
どうすれば半角カナが化けないように読めるのでしょうか。
807デフォルトの名無しさん (ワッチョイ c68c-fAkU)
2019/11/05(火) 22:01:22.14ID:+vsp0I/Q0 sjis指定で読み込んでると思い込んでるだけで実際はutf-8になってるんじゃないかな
あるいはログがsjisと思い込んでるだけという線もありうる
もしくは書き出しがsjisになってないとか
可能性を挙げたらきりがない
コードをさらすのが解決への近道
あるいはログがsjisと思い込んでるだけという線もありうる
もしくは書き出しがsjisになってないとか
可能性を挙げたらきりがない
コードをさらすのが解決への近道
808デフォルトの名無しさん (アウアウウー Sa2f-xbEI)
2019/11/05(火) 22:19:23.14ID:HJJtuDtXa 汎用機のデータをRubyで処理とか懐かしいな
俺もやってたわ
結局転職するのが唯一にして最良のソリューションだから、あまり変なことに拘って時間を無駄にするよりAWSの勉強でもしたほうがいいよ
俺もやってたわ
結局転職するのが唯一にして最良のソリューションだから、あまり変なことに拘って時間を無駄にするよりAWSの勉強でもしたほうがいいよ
809デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/05(火) 23:08:03.80ID:rzC/SdAh0 >>806
どういう環境を使って
どういう方法でエンコーディング指定をしていて
どうやって読み込んで、どこに出力して、出力結果をどうやって確認してるのか?
そういう情報が必要
Ruby関係なくエンコーディングに対する理解を深めたほうが良さげ
基本的には外部エンコーディングと内部エンコーディングを指定すれば問題なし
https://docs.ruby-lang.org/ja/2.6.0/class/IO.html#io_encoding
>File.read('sjis.log', mode: "rt:sjis:utf-8")
どういう環境を使って
どういう方法でエンコーディング指定をしていて
どうやって読み込んで、どこに出力して、出力結果をどうやって確認してるのか?
そういう情報が必要
Ruby関係なくエンコーディングに対する理解を深めたほうが良さげ
基本的には外部エンコーディングと内部エンコーディングを指定すれば問題なし
https://docs.ruby-lang.org/ja/2.6.0/class/IO.html#io_encoding
>File.read('sjis.log', mode: "rt:sjis:utf-8")
810デフォルトの名無しさん (アウアウウー Sa2f-x9nz)
2019/11/06(水) 00:03:50.72ID:lUVlDRaka >806です
解決しました。
エンコードにsjisではなくwindows-31Jを
指定すると半角カナを文字化けせずに読めました。
ファイルの文字コードは確実にsjisなのに、
なんでsjis指定で読み込んだら化けるのか分かりませんが、
ひとまず解決です。
解決しました。
エンコードにsjisではなくwindows-31Jを
指定すると半角カナを文字化けせずに読めました。
ファイルの文字コードは確実にsjisなのに、
なんでsjis指定で読み込んだら化けるのか分かりませんが、
ひとまず解決です。
811デフォルトの名無しさん (アウアウウー Sa2f-x9nz)
2019/11/06(水) 00:05:50.13ID:lUVlDRaka812デフォルトの名無しさん (ワッチョイ 7a33-DbiX)
2019/11/06(水) 02:48:09.37ID:normnvJW0 >>810
一般に、Shift_JIS(標準規格)とcp932(Windowsカスタム)は別物。
Rubyでもそうらしい。
https://docs.ruby-lang.org/ja/latest/class/Encoding.html#S_ALIASES
一般に、Shift_JIS(標準規格)とcp932(Windowsカスタム)は別物。
Rubyでもそうらしい。
https://docs.ruby-lang.org/ja/latest/class/Encoding.html#S_ALIASES
813デフォルトの名無しさん (アウウィフ FF2f-DOEl)
2019/11/06(水) 11:43:12.78ID:o3tEvZiYF 半角カタカナ ← 混ぜるな危険
30年くらい前の話
30年くらい前の話
814デフォルトの名無しさん (アウアウウー Sa2f-x9nz)
2019/11/06(水) 11:50:52.64ID:SpldiVNta815デフォルトの名無しさん (アウアウウー Sa2f-x9nz)
2019/11/06(水) 11:52:59.82ID:SpldiVNta >>813
漢字も駄目なのでやや難易度高しです。
漢字も駄目なのでやや難易度高しです。
816デフォルトの名無しさん (アウウィフ FF2f-DOEl)
2019/11/06(水) 12:34:12.51ID:o3tEvZiYF いいがかりは止せ
SJISファイルじゃないんだから当然だろ
SJISファイルじゃないんだから当然だろ
817デフォルトの名無しさん (ワッチョイ ca2c-0B+f)
2019/11/06(水) 13:41:03.82ID:ZR40S1lI0 Windows では一般用語として、sjis と書くけど、
厳密には、sjisを拡張した、CP932 の事です。
だから、MS が独自に拡張した部分は、sjisではない!
漏れは、Windows で、PowerShell を使って、クリップボード処理を書いているけど、
Windows(CP932) ←→ Ruby(utf8) と、外部環境とruby内で、文字コードを変換している
クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
厳密には、sjisを拡張した、CP932 の事です。
だから、MS が独自に拡張した部分は、sjisではない!
漏れは、Windows で、PowerShell を使って、クリップボード処理を書いているけど、
Windows(CP932) ←→ Ruby(utf8) と、外部環境とruby内で、文字コードを変換している
クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
818デフォルトの名無しさん (ワッチョイ de14-EL77)
2019/11/06(水) 15:16:56.50ID:Z1mcKm+J0 別にMSがSJISを拡張したんじゃないけどな。
そもそもSJIS本家を作ったのがMS(+他)なわけで。
じゃあ拡張したのは誰かというとIBMとかNECだよ
まあそもそも拡張可能にしていんだけどな
MSなどがSJISを作った。IBMやNECが拡張した。
それらを取り込んでWindowssのCP932とした。というのが正しい流れ
ちなみにAppleもSJISを拡張してる。それはMacJapaneseと呼ばれる。
拡張部分がIBMやNECが拡張した部分とかぶってるので互換性がないんだけどな
そもそもSJIS本家を作ったのがMS(+他)なわけで。
じゃあ拡張したのは誰かというとIBMとかNECだよ
まあそもそも拡張可能にしていんだけどな
MSなどがSJISを作った。IBMやNECが拡張した。
それらを取り込んでWindowssのCP932とした。というのが正しい流れ
ちなみにAppleもSJISを拡張してる。それはMacJapaneseと呼ばれる。
拡張部分がIBMやNECが拡張した部分とかぶってるので互換性がないんだけどな
819デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/06(水) 15:39:23.65ID:Fx0hE3mY0 >Encoding.aliases.select {|_,v| v == "Windows-31J"}
{"CP932"=>"Windows-31J",
"csWindows31J"=>"Windows-31J",
"SJIS"=>"Windows-31J",
"PCK"=>"Windows-31J"}
Rubyでは"SJIS"も"CP932"もWindows-31Jのエイリアスなんだけど
SJISの指定をWindows-31Jに変更して解決する事があるんですねー(棒)
{"CP932"=>"Windows-31J",
"csWindows31J"=>"Windows-31J",
"SJIS"=>"Windows-31J",
"PCK"=>"Windows-31J"}
Rubyでは"SJIS"も"CP932"もWindows-31Jのエイリアスなんだけど
SJISの指定をWindows-31Jに変更して解決する事があるんですねー(棒)
820デフォルトの名無しさん (ワッチョイ c68c-fAkU)
2019/11/06(水) 18:22:07.75ID:8bqr3nzy0 半角カナや大半の漢字はsjis範囲内だからきちんとsjisで読めばほぼ文字化けはないはず
つまりsjisで読めていなかったということ
つまりsjisで読めていなかったということ
821デフォルトの名無しさん (ワッチョイ 0314-EL77)
2019/11/06(水) 19:09:22.79ID:wTTuQQRz0 >>819
エンコーディングは同じで文字集合が違うだけだからね
エンコーディングは同じで文字集合が違うだけだからね
822デフォルトの名無しさん (ワッチョイ 077d-qsv/)
2019/11/06(水) 19:26:39.67ID:GIJSYcug0 リファレンスマニュアルの aliases -> Hash の例
"SJIS"=>"Shift_JIS" は間違いですね
Encoding::SJIS == Encoding::CP932 #=> true
Encoding::SJIS == Encoding::Windows_31J #=> true
Encoding::SJIS == Encoding::Shift_JIS #=> false
"SJIS"=>"Shift_JIS" は間違いですね
Encoding::SJIS == Encoding::CP932 #=> true
Encoding::SJIS == Encoding::Windows_31J #=> true
Encoding::SJIS == Encoding::Shift_JIS #=> false
823デフォルトの名無しさん (アウウィフ FF2f-DOEl)
2019/11/06(水) 19:55:23.52ID:o3tEvZiYF HTML (HTTP) で Encoding Shift_JIS って書くと怒られた思い出
824デフォルトの名無しさん (ワッチョイ 8a01-ODnH)
2019/11/06(水) 20:51:13.84ID:Fx0hE3mY0 >>821
いやいやいや
文字集合と符号化方式を別々に選択できる状況ならともかく
「ファイル読み取り時のエンコーディング指定」とかの文脈で使うエンコーディングって用語は
狭義の符号化方式だけでなく文字集合も含めた上位の概念だから
いやいやいや
文字集合と符号化方式を別々に選択できる状況ならともかく
「ファイル読み取り時のエンコーディング指定」とかの文脈で使うエンコーディングって用語は
狭義の符号化方式だけでなく文字集合も含めた上位の概念だから
825デフォルトの名無しさん (ワッチョイ 0314-EL77)
2019/11/06(水) 21:02:49.31ID:wTTuQQRz0826デフォルトの名無しさん (ワッチョイ df33-rCU0)
2019/11/07(木) 00:17:25.40ID:gr4VkOsJ0 >>818
エンコーディングと機種依存文字をごっちゃにしてるやろ。
エンコーディングと機種依存文字をごっちゃにしてるやろ。
827デフォルトの名無しさん (ワッチョイ 2b14-6wYC)
2019/11/07(木) 01:13:21.86ID:sEmiRyTj0828デフォルトの名無しさん (ワッチョイ ef8c-z4KY)
2019/11/07(木) 02:15:26.05ID:QKW84+pO0 ガイジか?
829デフォルトの名無しさん (ワッチョイ 2b14-6wYC)
2019/11/07(木) 02:20:56.81ID:sEmiRyTj0 理解できなくなったら、このようなレスをするんだよなw
830デフォルトの名無しさん (ワッチョイ 2b14-6wYC)
2019/11/07(木) 02:31:19.18ID:sEmiRyTj0 例えば、Unicodeは文字集合(キャラクタセット、Coded Character Set)で
UTF-8とかUTF-16というのが符号化方式(エンコード、Character Encoding Scheme)
Unicodeも拡張可能でバージョン番号があって文字集合の内容が変わってる。
Unicode 1.0では文字集合の中の文字数は7,161文字
最新のUnicode 12.1では137,929文字も収録文字数が増えてる。
エンコーディングは変わっていないが文字集合は変わってるので
古いバージョンにしか対応してないコンピュータで、
最新のUnicodeを表示させると一部文字化けする
ただし管理団体の手によって収録文字は決められてるので
ShiftJISの頃のような各社バラバラで互換性がないってことにはならない
(ただし私用領域を使ってる場合は除く)
UTF-8とかUTF-16というのが符号化方式(エンコード、Character Encoding Scheme)
Unicodeも拡張可能でバージョン番号があって文字集合の内容が変わってる。
Unicode 1.0では文字集合の中の文字数は7,161文字
最新のUnicode 12.1では137,929文字も収録文字数が増えてる。
エンコーディングは変わっていないが文字集合は変わってるので
古いバージョンにしか対応してないコンピュータで、
最新のUnicodeを表示させると一部文字化けする
ただし管理団体の手によって収録文字は決められてるので
ShiftJISの頃のような各社バラバラで互換性がないってことにはならない
(ただし私用領域を使ってる場合は除く)
831デフォルトの名無しさん (ワッチョイ ef8c-z4KY)
2019/11/07(木) 03:28:55.37ID:QKW84+pO0 外字と引っ掛けた洒落や
気い悪くしたんならすまんかった
気い悪くしたんならすまんかった
832デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/07(木) 08:58:28.91ID:debRpYWr0 >>830
>エンコーディングは変わっていないが文字集合は変わってるので
>最新のUnicodeを表示させると一部文字化けする
じゃ文字集合だけ更新すれば文字化け解消するのかな?
文脈理解せず無意味なレス繰り返してるとそりゃ外字言われるわ
>エンコーディングは変わっていないが文字集合は変わってるので
>最新のUnicodeを表示させると一部文字化けする
じゃ文字集合だけ更新すれば文字化け解消するのかな?
文脈理解せず無意味なレス繰り返してるとそりゃ外字言われるわ
833デフォルトの名無しさん (ワッチョイ 9f2c-E8Ce)
2019/11/07(木) 11:38:26.80ID:LDERshfw0 そりゃ、新しい文字集合を使うと、新しい絵文字も正しく表示されるだろ?
834デフォルトの名無しさん (ワッチョイ 2b14-6wYC)
2019/11/07(木) 12:52:46.05ID:sEmiRyTj0 正確に言えば、新しい文字集合に対応したフォントを使うとだね。
>>832の言う「文字集合だけ更新すれば」が意味不明だが
「仕様書を更新すれば、なにも変更はいらない」って意味なら
そんなことは誰も言ってない
>>832の言う「文字集合だけ更新すれば」が意味不明だが
「仕様書を更新すれば、なにも変更はいらない」って意味なら
そんなことは誰も言ってない
835デフォルトの名無しさん (ワッチョイ ef8c-z4KY)
2019/11/07(木) 20:03:36.67ID:1chRDjs40 ㋿
最近だと令和対応が記憶に新しいな
最近だと令和対応が記憶に新しいな
836デフォルトの名無しさん (ワッチョイ 9f2c-E8Ce)
2019/11/08(金) 15:49:09.19ID:bNpOstnB0 よく出てくる、&:メソッド名は、proc オブジェクトですが、
たまに出てくる、:メソッド名は、何ですか?
違いが、よく分からない
nums = %w(1 2 3 4).map!( &:to_i ) # 数値の配列
p nums.inject( :+ ) # 10
たまに出てくる、:メソッド名は、何ですか?
違いが、よく分からない
nums = %w(1 2 3 4).map!( &:to_i ) # 数値の配列
p nums.inject( :+ ) # 10
837デフォルトの名無しさん (ドコグロ MM3f-keNo)
2019/11/08(金) 17:07:06.66ID:GYgLC2XDM シンボル
実用的には単なる変更不可能な文字列と見做してよい
Rubyの初期からの大きな失敗の一つで、特に意味はない
実用的には単なる変更不可能な文字列と見做してよい
Rubyの初期からの大きな失敗の一つで、特に意味はない
838デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/08(金) 18:26:17.63ID:q9/Fdf+e0 マニュアルの「シンボルの実装と用途」ってところを読むと良いと思う
https://docs.ruby-lang.org/ja/2.6.0/class/Symbol.html
&:to_iも":to_i"がシンボルで、そのシンボルが"&"で修飾されてるだけ
"&"はProcオブジェクトやto_procメソッドを持つオブジェクトをブロックとして渡す時に引数につける修飾記号
実行時にSymbol#to_procが呼ばれてそれがブロックとして渡される
https://docs.ruby-lang.org/ja/2.6.0/class/Symbol.html
&:to_iも":to_i"がシンボルで、そのシンボルが"&"で修飾されてるだけ
"&"はProcオブジェクトやto_procメソッドを持つオブジェクトをブロックとして渡す時に引数につける修飾記号
実行時にSymbol#to_procが呼ばれてそれがブロックとして渡される
839デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/08(金) 18:31:13.82ID:q9/Fdf+e0 mapはシンボルを引数にとらないからmap(&:to_i)でブロックとして渡すけど
injectはシンボルを引数に取るからinject(:+)で実行できる
inject(&:+)としてブロックとして渡してもいいけど無駄処理が入るので普通はやらない
injectはシンボルを引数に取るからinject(:+)で実行できる
inject(&:+)としてブロックとして渡してもいいけど無駄処理が入るので普通はやらない
840836 (ワッチョイ 9f2c-E8Ce)
2019/11/08(金) 18:48:10.88ID:bNpOstnB0 漏れは、いつも、メソッドがシンボルを引数に取るかどうか、分からないから、
ひとまず、map!( :to_i ) みたいに、シンボルを渡して、エラーになったら、
map!( &:to_i ) と、& を付けることにしている
ひとまず、map!( :to_i ) みたいに、シンボルを渡して、エラーになったら、
map!( &:to_i ) と、& を付けることにしている
841デフォルトの名無しさん (ワッチョイ df33-rCU0)
2019/11/08(金) 21:56:04.93ID:ZY78KkPA0842デフォルトの名無しさん (ワッチョイ 0fd3-QrFL)
2019/11/08(金) 22:54:04.88ID:u/1VJcWC0 ていうか、なんでそんな半端な設計なの?
injectのみシンボル受け取れるようにするメリットってなに?
injectのみシンボル受け取れるようにするメリットってなに?
843デフォルトの名無しさん (ワッチョイ eb14-6wYC)
2019/11/08(金) 23:51:37.33ID:sLgGgSr40 シンボル・・・型が無い言語で、型を気付かれないように書くための手段の一つ
型がないとされる言語でも、123は数字だが、"123"は文字というように
書き方で型をこっそりと記述している。
他にも/abc/は正規表現型、1.0は浮動小数点型などの定義方法がある。
シンボルはその一つで、:で始めることにより、シンボル型の値を書くことができる
型がないとされる言語でも、123は数字だが、"123"は文字というように
書き方で型をこっそりと記述している。
他にも/abc/は正規表現型、1.0は浮動小数点型などの定義方法がある。
シンボルはその一つで、:で始めることにより、シンボル型の値を書くことができる
844デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/08(金) 23:57:04.08ID:q9/Fdf+e0845デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/08(金) 23:59:15.28ID:q9/Fdf+e0 >>843
その「型が無い言語」とか「型がないとされる言語」という理解は間違ってるよ
その「型が無い言語」とか「型がないとされる言語」という理解は間違ってるよ
846デフォルトの名無しさん (ワッチョイ 9f9c-G+r6)
2019/11/09(土) 00:09:55.38ID:PhKUzZj90 シンボルと文字列を区別したのは失敗だったとmatzも言ってるな
streamという途中でぶん投げた新言語ではその区別がなくなってる
streamという途中でぶん投げた新言語ではその区別がなくなってる
847デフォルトの名無しさん (ワッチョイ eb14-6wYC)
2019/11/09(土) 02:32:49.02ID:d5YSql6x0 >>845
反論は「あってるよ」だけで十分そうだねw
反論は「あってるよ」だけで十分そうだねw
848デフォルトの名無しさん (ドコグロ MM3f-keNo)
2019/11/09(土) 12:03:54.60ID:u1W/mjBNM >>842
文字列リテラルよりも記述が簡便だからという理由により、本来文字列を使うべき用途にもシンボルが乱用された結果、
シンボルGCなどという頭の悪いものが誕生したりしたんだよな
誰がどう見ても完全に失敗
文字列リテラルよりも記述が簡便だからという理由により、本来文字列を使うべき用途にもシンボルが乱用された結果、
シンボルGCなどという頭の悪いものが誕生したりしたんだよな
誰がどう見ても完全に失敗
849デフォルトの名無しさん (ワッチョイ 9f2c-E8Ce)
2019/11/09(土) 12:04:25.68ID:Ypm9+s0e0 シンボルは、識別子を表すために作られたのか、数字で始められないだろ。
下はエラーになる
p :"1" # OK
p :1 # エラー
下はエラーになる
p :"1" # OK
p :1 # エラー
850デフォルトの名無しさん (ワッチョイ 0fd3-QrFL)
2019/11/09(土) 12:13:45.55ID:X62CmnUE0851デフォルトの名無しさん (ドコグロ MM3f-keNo)
2019/11/09(土) 12:16:59.76ID:u1W/mjBNM852デフォルトの名無しさん (ドコグロ MM3f-keNo)
2019/11/09(土) 12:19:33.79ID:u1W/mjBNM853デフォルトの名無しさん (ワッチョイ 9f01-vL98)
2019/11/09(土) 14:08:02.54ID:MvykJ39t0 >>850
sliceやchunkのような分割系以外は
ブロックがなければEnumeratorを返すのを基本ルールにしてるから
mapはシンボルを取る形がないんじゃないかな
injectはEnumeratorを返すものじゃないから
ちょっと気を利かしてシンボルを取る形を加えたのかもね
sliceやchunkのような分割系以外は
ブロックがなければEnumeratorを返すのを基本ルールにしてるから
mapはシンボルを取る形がないんじゃないかな
injectはEnumeratorを返すものじゃないから
ちょっと気を利かしてシンボルを取る形を加えたのかもね
854デフォルトの名無しさん (ワッチョイ 068c-W3rk)
2019/11/14(木) 00:10:26.40ID:GMI1Y3D90 今年が2.7ってことは
2022年には3か2.10か
2022年には3か2.10か
855デフォルトの名無しさん (アウアウカー Sa89-AiI5)
2019/11/14(木) 17:40:11.04ID:BO+nDgNta Rubyで2値の差を得る簡単なメソッドとかないかな
def diff(num1, num2)
max = [n1, n2].max
min = [n1, n2].min
(max - min)
end
p diff(-3, 7) #=> 10
とかだと見てくれ良くないし無駄も多い
def diff(num1, num2)
max = [n1, n2].max
min = [n1, n2].min
(max - min)
end
p diff(-3, 7) #=> 10
とかだと見てくれ良くないし無駄も多い
856デフォルトの名無しさん (オッペケ Sr11-iZ7S)
2019/11/14(木) 18:15:34.71ID:baSi3t2Kr (num1 - num2).absじゃあかんのか?
857デフォルトの名無しさん (ワッチョイ 8201-NhnT)
2019/11/15(金) 01:07:32.58ID:em064pO70 オラもそう思った
858デフォルトの名無しさん (アウアウエー Sa8a-9qGC)
2019/11/15(金) 07:32:43.98ID:1PuPU5S7a >>854
最初の小数点の次の数は二桁以上にしない縛りなかったっけ?
最初の小数点の次の数は二桁以上にしない縛りなかったっけ?
859デフォルトの名無しさん (アウアウウー Sa9d-5f43)
2019/11/21(木) 19:57:13.88ID:0YdMrNdaa Rubyの平均年収は全言語中最低
https://tech.nikkeibp.co.jp/atcl/nxt/column/18/01068/111100004/
https://tech.nikkeibp.co.jp/atcl/nxt/column/18/01068/111100004/
860デフォルトの名無しさん (ワッチョイ f98f-Sa3v)
2019/11/21(木) 23:28:58.12ID:tUWUNbqx0 そんなに年収ほしければCOBOLやれば?
861デフォルトの名無しさん (ワッチョイ 9305-CPe6)
2019/11/23(土) 01:26:32.66ID:DazDco060 今月までプログラミングに一切触れたことのなかった初心者です
引数を配列にして
メソッド内で変数aに引数を代入
その後変数aの0番目にnを代入すると引数の0番目まで巻き添えでnになってしまうんですがそういう仕様なんでしょうか?
配列だけで起こる現象のようなんですが
method(0,1)と呼んで
def method(array)
a = array
a[0] = 10
puts a
puts array
end
とするとaもarrayも[10,1]となってしまいます
引数を配列にして
メソッド内で変数aに引数を代入
その後変数aの0番目にnを代入すると引数の0番目まで巻き添えでnになってしまうんですがそういう仕様なんでしょうか?
配列だけで起こる現象のようなんですが
method(0,1)と呼んで
def method(array)
a = array
a[0] = 10
puts a
puts array
end
とするとaもarrayも[10,1]となってしまいます
862デフォルトの名無しさん (ワッチョイ 9305-CPe6)
2019/11/23(土) 01:27:53.59ID:DazDco060 method([0,1])でした
失礼しました
失礼しました
863デフォルトの名無しさん (ワッチョイ 9301-wiXz)
2019/11/23(土) 03:03:35.14ID:8xX8HZu80864デフォルトの名無しさん (ワッチョイ 9305-CPe6)
2019/11/23(土) 10:59:21.53ID:DazDco060865デフォルトの名無しさん (ワッチョイ 9301-wiXz)
2019/11/23(土) 14:01:09.34ID:8xX8HZu80 >>864
使い方にもよるのかもしれんが階層が浅くて固定ならdupで十分じゃない?
foo = [[1,2], [3,4], [5,6,7]]
bar = foo.dup
bar[0] = [9,9,9]
foo #=> [[1, 2], [3, 4], [5, 6, 7]]
bar #=> [[9, 9, 9], [3, 4], [5, 6, 7]]
bar[1].push 200
foo #=> [[1, 2], [3, 4, 200], [5, 6, 7]]
bar #=> [[9, 9, 9], [3, 4, 200], [5, 6, 7]]
bar[2] = bar[2].dup.push 300
foo #=> [[1, 2], [3, 4, 200], [5, 6, 7]]
bar #=> [[9, 9, 9], [3, 4, 200], [5, 6, 7, 300]]
階層が深くて手動でdupするのが大変ならdeep_dup
require 'active_support'
require 'active_support/core_ext/object/deep_dup'
baz = foo.deep_dup
baz[1].push 300
foo #=> [[1, 2], [3, 4, 200], [5, 6, 7]]
baz #=> [[1, 2], [3, 4, 200, 300], [5, 6, 7]]
使い方にもよるのかもしれんが階層が浅くて固定ならdupで十分じゃない?
foo = [[1,2], [3,4], [5,6,7]]
bar = foo.dup
bar[0] = [9,9,9]
foo #=> [[1, 2], [3, 4], [5, 6, 7]]
bar #=> [[9, 9, 9], [3, 4], [5, 6, 7]]
bar[1].push 200
foo #=> [[1, 2], [3, 4, 200], [5, 6, 7]]
bar #=> [[9, 9, 9], [3, 4, 200], [5, 6, 7]]
bar[2] = bar[2].dup.push 300
foo #=> [[1, 2], [3, 4, 200], [5, 6, 7]]
bar #=> [[9, 9, 9], [3, 4, 200], [5, 6, 7, 300]]
階層が深くて手動でdupするのが大変ならdeep_dup
require 'active_support'
require 'active_support/core_ext/object/deep_dup'
baz = foo.deep_dup
baz[1].push 300
foo #=> [[1, 2], [3, 4, 200], [5, 6, 7]]
baz #=> [[1, 2], [3, 4, 200, 300], [5, 6, 7]]
866デフォルトの名無しさん (ワッチョイ 132c-4eZD)
2019/11/23(土) 20:53:58.93ID:fygFNKSM0 年収は、5大SIer, Java などの土方系・奴隷、多重請負構造では、1社間に入る度に、3割抜かれる!
顧客が100万円払っても、間1 が、30万円抜いて、
自社には70万円で来るので、自分の給料は、25万円ぐらいw
顧客が100万円払っても、間1 が、30万円抜いて、間2 が、20万円抜くと、
自社には50万円で来るので、自分の給料は、20万円ぐらいw
だから、ハローワークのIT 講座でも、奴隷になる2次請け以降に、就職しないように言われる。
Javaの平均年収が600万円なら、300万円の奴隷と、900万円の大企業の奴隷使いがいる。
元々、大企業の人は、給料が良いだけ。
給料は言語に関係ない。労働形態による!
抜きを警戒する人は、派遣なら3割抜かれて、後は自分の給料になるけど、
仕事がない期間の保証がない。
それか、フリーランスのエージェントで、1割ぐらいの抜きを探すか
一方、Ruby などの自社サービス系は、多重請負構造じゃないから抜かれない
顧客が100万円払っても、間1 が、30万円抜いて、
自社には70万円で来るので、自分の給料は、25万円ぐらいw
顧客が100万円払っても、間1 が、30万円抜いて、間2 が、20万円抜くと、
自社には50万円で来るので、自分の給料は、20万円ぐらいw
だから、ハローワークのIT 講座でも、奴隷になる2次請け以降に、就職しないように言われる。
Javaの平均年収が600万円なら、300万円の奴隷と、900万円の大企業の奴隷使いがいる。
元々、大企業の人は、給料が良いだけ。
給料は言語に関係ない。労働形態による!
抜きを警戒する人は、派遣なら3割抜かれて、後は自分の給料になるけど、
仕事がない期間の保証がない。
それか、フリーランスのエージェントで、1割ぐらいの抜きを探すか
一方、Ruby などの自社サービス系は、多重請負構造じゃないから抜かれない
867デフォルトの名無しさん (ワッチョイ 132c-4eZD)
2019/11/23(土) 21:01:37.75ID:fygFNKSM0 C/C++ 以外のほとんどの言語では、参照がコピーされるだけ!
インスタンスを作っていない
だから、実際のインスタンス数は、clone, dup, new された回数を、チェックすれば良い
インスタンスを作っていない
だから、実際のインスタンス数は、clone, dup, new された回数を、チェックすれば良い
868デフォルトの名無しさん (ワッチョイ fb8c-qZD/)
2019/11/23(土) 22:03:14.93ID:uAZdpObm0 土方系の仕事って何ですか
869デフォルトの名無しさん (ドコグロ MM63-5f43)
2019/11/23(土) 22:07:51.58ID:jA/F562DM870デフォルトの名無しさん (ワッチョイ 6914-6o6Z)
2019/11/24(日) 01:52:22.27ID:iwyjZSbL0 >>868
顧客に価値を提供すること
顧客に価値を提供すること
871デフォルトの名無しさん (ワッチョイ 139c-rLNN)
2019/11/24(日) 02:00:18.56ID:2vFps37N0 土方にはなるな
SIerにはなるな
SIerにはなるな
872デフォルトの名無しさん (アウアウウー Sa9d-5f43)
2019/11/24(日) 02:02:59.56ID:Q6cceAnpa しかし現実には大半のRubyistよりもSIerのドカタの方が給料は高いのであった
873デフォルトの名無しさん (ワッチョイ 3333-a70H)
2019/11/24(日) 04:46:27.73ID:kT5P2hJJ0 給料だけでもないやろ。
つーか、どうでもいいから。んな話は。
つーか、どうでもいいから。んな話は。
874デフォルトの名無しさん (ワッチョイ f98f-Sa3v)
2019/11/24(日) 15:33:55.35ID:Gqvqz24c0 要件定義、外部設計を受注できるプライマリの
会社に行かないと高収入はないよ。
内部設計、プログラミングは下流工程だから下請けに流される。
3割抜くとか言うが、粗利3割はどの業界でも普通だし。
会社に行かないと高収入はないよ。
内部設計、プログラミングは下流工程だから下請けに流される。
3割抜くとか言うが、粗利3割はどの業界でも普通だし。
875デフォルトの名無しさん (ワッチョイ fb8c-qZD/)
2019/11/24(日) 18:51:34.90ID:ednGVdun0 言語を知っている。いや知っているだけで金になる仕事はないから
876デフォルトの名無しさん (ワッチョイ 132c-4eZD)
2019/11/24(日) 23:07:40.54ID:Q5WFFNoW0 上流工程が、下級工程の給料を決める
だから、YouTube で有名なKENTA が、
クライアント側ではなく、サーバー側・構築運用へ行った
今世紀最大の起業家、Ruby でVagrant を作った、
HashiCorp のMitchell Hashimoto も、Go でTerraform を作った!
富・技術革新が集中する所に、Hashimoto は行く!
実際に、車のメーカーの企業の時価総額は変わらないけど、
アマゾン・Google などのサーバー屋は、100兆円企業になってる!
だから、YouTube で有名なKENTA が、
クライアント側ではなく、サーバー側・構築運用へ行った
今世紀最大の起業家、Ruby でVagrant を作った、
HashiCorp のMitchell Hashimoto も、Go でTerraform を作った!
富・技術革新が集中する所に、Hashimoto は行く!
実際に、車のメーカーの企業の時価総額は変わらないけど、
アマゾン・Google などのサーバー屋は、100兆円企業になってる!
877デフォルトの名無しさん (ワッチョイ 139c-rLNN)
2019/11/25(月) 04:07:09.54ID:gVPe0v4t0878デフォルトの名無しさん (ワイーワ2 FF63-KqLj)
2019/11/25(月) 12:33:00.08ID:pjJuONFZF >上流工程が、下級工程の給料を決める
>クライアント側ではなく、サーバー側・構築運用へ行った
上流ってそういう意味か?ωωω
>クライアント側ではなく、サーバー側・構築運用へ行った
上流ってそういう意味か?ωωω
879デフォルトの名無しさん (ドコグロ MMe5-5f43)
2019/11/25(月) 16:27:01.28ID:Lb2w9ntUM Amazonの売上の大半はEC
Googleの売上の大半は広告
どっちも実際には上物で稼いでいて、AWSやGCPの売上比率は15%程度に過ぎない
キチガイの目に映る世界と実態の間にはは大きな乖離があることがわかるだろう
Googleの売上の大半は広告
どっちも実際には上物で稼いでいて、AWSやGCPの売上比率は15%程度に過ぎない
キチガイの目に映る世界と実態の間にはは大きな乖離があることがわかるだろう
880デフォルトの名無しさん (ワッチョイ f914-6o6Z)
2019/11/25(月) 17:19:36.92ID:vZmdeQAZ0 まあ利益出してるところじゃなくて"売上"というのなら、
ECが一番やろうな。そりゃ
ECが一番やろうな。そりゃ
881デフォルトの名無しさん (ワッチョイ 922c-Ql8R)
2019/11/28(木) 00:37:50.62ID:WsOSEkue0 Windows10, WSL, Ubuntu 16.4 で、
libruby2.3, ruby2.3 の更新が来た!
Ruby2.3 は、もうサポート切れだけど、まだ誰かがサポートしてるw
Ubuntu チームか
libruby2.3, ruby2.3 の更新が来た!
Ruby2.3 は、もうサポート切れだけど、まだ誰かがサポートしてるw
Ubuntu チームか
882デフォルトの名無しさん (オイコラミネオ MM91-pi24)
2019/11/28(木) 17:42:14.05ID:dnvj190uM ビルドしてるだけやろ。
883デフォルトの名無しさん (ワッチョイ 922c-Ql8R)
2019/11/30(土) 04:33:29.25ID:HbGyzSLF0 Vagrant, Chef, RSpec, Serverspec などの、
DSL の書き方だけができる、ライブラリ・フレームワークはないの?
DSL の書き方だけができる、ライブラリ・フレームワークはないの?
884デフォルトの名無しさん (ワッチョイ 1214-Sv7j)
2019/11/30(土) 07:04:52.88ID:WKFbtD9B0885883 (ワッチョイ 922c-Ql8R)
2019/11/30(土) 09:10:10.03ID:HbGyzSLF0 環境の構築テストなどを、すごく簡潔に、宣言っぽく書いている
例えば、ファイル・ディレクトリなどを作る場合でも、エラー処理もなく、1行で書いてる。
Maven, Gradle も、こういう宣言っぽい感じかな?
便利だなと思って
例えば、ファイル・ディレクトリなどを作る場合でも、エラー処理もなく、1行で書いてる。
Maven, Gradle も、こういう宣言っぽい感じかな?
便利だなと思って
886デフォルトの名無しさん (ワッチョイ a9da-o7DB)
2019/12/02(月) 07:50:51.40ID:sFARCTmI0 k-sato_at_oiaxって実はもう死んでたりするの?
887デフォルトの名無しさん (ワッチョイ 922c-Ql8R)
2019/12/02(月) 22:47:05.03ID:H5nAExhM0 改訂4版 基礎 Ruby on Rails、黒田努・佐藤和人、2018/9/7
この本が、株式会社オイアクス監修だろ。
著者2人は、株式会社ルビキタスにも所属している
この本が、株式会社オイアクス監修だろ。
著者2人は、株式会社ルビキタスにも所属している
888デフォルトの名無しさん (ワッチョイ 12a5-dfs3)
2019/12/03(火) 09:08:31.07ID:I9YoNGrF0 義務教育にrubyが組み込まれなかった時点でrubyは終わりだろ
ポジション取られたのがscratch
ついでにオブジェクト脳の本の社長起立プログラム、あれ最高にキモイ
ポジション取られたのがscratch
ついでにオブジェクト脳の本の社長起立プログラム、あれ最高にキモイ
889デフォルトの名無しさん (ワッチョイ 232c-+J45)
2019/12/05(木) 09:12:33.74ID:fTTGdtWT0 Windows のPowerShell で、1-liner で、webrick サーバーを立てるのに、
上だとエラーになって、
下のように、%Q("./") でクォートすると、正常に動くのは、なぜでしょう?
どういうカラクリなの?
ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => "./", :Port => 8888).start'
ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => %Q("./"), :Port => 8888).start'
上だとエラーになって、
下のように、%Q("./") でクォートすると、正常に動くのは、なぜでしょう?
どういうカラクリなの?
ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => "./", :Port => 8888).start'
ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => %Q("./"), :Port => 8888).start'
890デフォルトの名無しさん (オッペケ Src1-8zr5)
2019/12/05(木) 09:19:26.64ID:wT3fRGGOr windowsで-e の後にシングルクォーテーション使ってるからでしょ
ruby -e 'puts "hello"'
でもエラーになるぞ
ruby -e 'puts "hello"'
でもエラーになるぞ
891デフォルトの名無しさん (オッペケ Src1-8zr5)
2019/12/05(木) 09:20:45.92ID:wT3fRGGOr ちな
ruby -e 'puts \"hello\"'
や
ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => \"./\", :Port => 8888).start'
なら問題ない
ruby -e 'puts \"hello\"'
や
ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => \"./\", :Port => 8888).start'
なら問題ない
892889 (ワッチョイ 232c-+J45)
2019/12/05(木) 10:48:53.10ID:fTTGdtWT0 ruby -e 'puts "hello"'
は、コマンドプロンプトではエラーにならないが、
PowerShell ではエラーになるw
ruby -e 'puts %Q("hello")'
は、コマンドプロンプト・PowerShell の両方で正常
ruby -e 'puts "hello"'
が、コマンドプロンプト・PowerShell から、Rubyに渡る際に、どう変換されるのか?
そのカリクリを知りたい
は、コマンドプロンプトではエラーにならないが、
PowerShell ではエラーになるw
ruby -e 'puts %Q("hello")'
は、コマンドプロンプト・PowerShell の両方で正常
ruby -e 'puts "hello"'
が、コマンドプロンプト・PowerShell から、Rubyに渡る際に、どう変換されるのか?
そのカリクリを知りたい
893デフォルトの名無しさん (アウウィフ FFa9-MVf8)
2019/12/05(木) 10:57:49.63ID:IbmhSLeWF WSL使え
あるいはWindowsのコマンドプロンプトなら
ruby -e "puts 'hello'"
あるいはWindowsのコマンドプロンプトなら
ruby -e "puts 'hello'"
894デフォルトの名無しさん (オッペケ Src1-8zr5)
2019/12/05(木) 11:11:38.90ID:wT3fRGGOr だから'使うなっつってんだろアホか
895デフォルトの名無しさん (ワッチョイ 7501-MVf8)
2019/12/05(木) 11:21:52.16ID:q0kDwfyl0 製造者がWindowsが憎いMicrosoftが憎いと言ってるのに、わざわざWindows上で使わなくても。
896デフォルトの名無しさん (ワッチョイ 8333-lxm3)
2019/12/05(木) 21:12:26.41ID:h+M+c6Hd0 コマンドプロンプトのクォート解釈は、控えめに言ってメチャクチャだからな。
昔のものだし、しかたない。
それに比べたら、PowerShellははるかにまともで現代的。
昔のものだし、しかたない。
それに比べたら、PowerShellははるかにまともで現代的。
897889 (ワッチョイ 232c-+J45)
2019/12/05(木) 23:40:17.64ID:fTTGdtWT0 まとめ。
Windows10 で、1-liner のruby -e で順に、1〜3 を実行した場合
1. 'puts "hello"'
2. 'puts %Q("hello")'
3. "puts 'hello'"
1〜3は、コマンドプロンプトと、WSL, Ubuntu 16.04 では、
hello, "hello", hello
PowerShell では、
エラー, "hello", hello
Windows10 で、1-liner のruby -e で順に、1〜3 を実行した場合
1. 'puts "hello"'
2. 'puts %Q("hello")'
3. "puts 'hello'"
1〜3は、コマンドプロンプトと、WSL, Ubuntu 16.04 では、
hello, "hello", hello
PowerShell では、
エラー, "hello", hello
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 【青森・はぐれ子グマがラーメン店襲撃】「笑えないです」ボコボコにしてクマを返り討ち レジェンド男性はまぶたが腫れあがり骨折 ★2 [ぐれ★]
- 中国「高市許さん😡」ジャップメディア「熊!🐻!」 [809488867]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
- 🏡
- 今季最強寒気襲来!!!!
- 【高市早苗】習近平激怒か [115996789]
- 今猛烈に食べたいもの挙げてけwwwwwwww
