プログラミング言語 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:84E3pYZa0752デフォルトの名無しさん (ワッチョイ b35f-dFI/)
2019/10/20(日) 09:10:18.66ID:X1mKFDBe0 0.step do |i|
p case i % 4
when 0 then 1
when 1 then 0
when 2 then -1
when 3 then 0
end
end
a = [1,0,-1,0]
0.step{|i| p a[i%4] }
>>750
> Linux では、Ruby2.6.5 が最新だが、Windows では、1つ前のバージョンを使うこと!
私の観測範囲が狭いのか2.6.5を使わない理由が見つからないのだが、なにかバグありました?
p case i % 4
when 0 then 1
when 1 then 0
when 2 then -1
when 3 then 0
end
end
a = [1,0,-1,0]
0.step{|i| p a[i%4] }
>>750
> Linux では、Ruby2.6.5 が最新だが、Windows では、1つ前のバージョンを使うこと!
私の観測範囲が狭いのか2.6.5を使わない理由が見つからないのだが、なにかバグありました?
753デフォルトの名無しさん (オッペケ Sr47-sprL)
2019/10/20(日) 09:57:11.30ID:V17Fc59sr >>748
(1..).each{|i| p (-1)**((i & 2) >> 1) * (i & 1)}
(1..).each{|i| p (-1)**((i & 2) >> 1) * (i & 1)}
754750 (ワッチョイ 122c-pTuN)
2019/10/20(日) 10:13:18.00ID:ADDbXmaX0 >>752
Windows 用のRuby は、いつも1つ前のバージョンを使う!
RubyInstaller のサイトにも、最新版を使わないようにと、いつも書いてある
Windowsでは、MSYS2 でコンパイルするモジュールなどが、
最新版に対応していないので、1年ぐらい待つ必要がある
Windows 用のRuby は、いつも1つ前のバージョンを使う!
RubyInstaller のサイトにも、最新版を使わないようにと、いつも書いてある
Windowsでは、MSYS2 でコンパイルするモジュールなどが、
最新版に対応していないので、1年ぐらい待つ必要がある
755デフォルトの名無しさん (ワッチョイ 6b7d-sepG)
2019/10/20(日) 10:18:26.35ID:lW4NmDBF0 >>748
loop{ puts 1, 0, -1, 0 }
loop{ puts 1, 0, -1, 0 }
756デフォルトの名無しさん (ワッチョイ b35f-dFI/)
2019/10/20(日) 11:35:59.48ID:X1mKFDBe0 >>754
RUBYINSTALLER-HEAD(https://github.com/oneclick/rubyinstaller2/releases/tag/rubyinstaller-head)については書いてありますが
latestについては記述見つかりませんでしたが、どこに書いてありますか?
> MSYS2 でコンパイルするモジュールなどが、
コンパイル済みのfat-gemが問題起こしてる印象があり、なくならねぇかな・・・と思ってますね
RUBYINSTALLER-HEAD(https://github.com/oneclick/rubyinstaller2/releases/tag/rubyinstaller-head)については書いてありますが
latestについては記述見つかりませんでしたが、どこに書いてありますか?
> MSYS2 でコンパイルするモジュールなどが、
コンパイル済みのfat-gemが問題起こしてる印象があり、なくならねぇかな・・・と思ってますね
757750 (ワッチョイ 122c-pTuN)
2019/10/20(日) 12:06:18.48ID:ADDbXmaX0 https://rubyinstaller.org/
以前は、このトップページか、Download のページに書いてあったけど、文章が変わったみたい
まあでも、このスレでも、Windows では、最新バージョンは使うなという書き込みがあったから、
たぶん、1つ前のバージョンを使わないと、依存関係が解決できないのだろう
とにかく、Mac を使っている人は、Windowsの依存関係が地獄だから、皆Macへ移った
以前は、このトップページか、Download のページに書いてあったけど、文章が変わったみたい
まあでも、このスレでも、Windows では、最新バージョンは使うなという書き込みがあったから、
たぶん、1つ前のバージョンを使わないと、依存関係が解決できないのだろう
とにかく、Mac を使っている人は、Windowsの依存関係が地獄だから、皆Macへ移った
758デフォルトの名無しさん (ワッチョイ d201-4js2)
2019/10/20(日) 12:16:45.81ID:MDf6mYD+0 [1,0,-1,0].cycle {|x| puts x} #無限
[1,0,-1,0].cycle(3) {|x| puts x} #サイクル数指定
[1,0,-1,0].cycle.take(10).each {|x| puts x} #要素数指定
cycle再発明したいならEnumeratorを返す方法を学ぶ
[1,0,-1,0].cycle(3) {|x| puts x} #サイクル数指定
[1,0,-1,0].cycle.take(10).each {|x| puts x} #要素数指定
cycle再発明したいならEnumeratorを返す方法を学ぶ
759デフォルトの名無しさん (ワイーワ2 FF6a-uHRg)
2019/10/20(日) 12:46:50.25ID:9lZC9vgyF ひょっとすると Ruby は糞なのかも知れない
10.times{|n|puts Math::cos(n*Math::PI/2) <=> 0}
10.times{|n|puts Math::cos(n*Math::PI/2) <=> 0}
760デフォルトの名無しさん (ワイーワ2 FF6a-uHRg)
2019/10/20(日) 12:48:22.43ID:9lZC9vgyF 10.times{|n|puts Math.sign(Math::cos(n*Math::PI/2))}
10.times{|n|puts Numeric.sign(Math::cos(n*Math::PI/2))}
10.times{|n|puts Number.sign(Math::cos(n*Math::PI/2))}
10.times{|n|puts Numeric.sign(Math::cos(n*Math::PI/2))}
10.times{|n|puts Number.sign(Math::cos(n*Math::PI/2))}
761デフォルトの名無しさん (ワイーワ2 FF6a-uHRg)
2019/10/20(日) 12:56:08.24ID:9lZC9vgyF 糞は漏れだった orz
10.times{|n|puts Math::cos(n*Math::PI/2).to_i}
10.times{|n|puts Math::cos(n*Math::PI/2).to_i}
762デフォルトの名無しさん (オッペケ Sr47-sprL)
2019/10/21(月) 12:00:03.97ID:ZDMJHUdnr >>758が一番スマートだな
763デフォルトの名無しさん (ワッチョイ 3714-V5T5)
2019/10/21(月) 13:13:03.03ID:a2dL9b0A0 >>760みたいに下手に計算するより早いしね!
764デフォルトの名無しさん (オッペケ Sr47-sprL)
2019/10/21(月) 13:27:57.28ID:ZDMJHUdnr いやそもそも>>759-761は間違ってる
765デフォルトの名無しさん (ワッチョイ 3714-V5T5)
2019/10/21(月) 13:42:33.89ID:a2dL9b0A0766デフォルトの名無しさん (オッペケ Sr47-sprL)
2019/10/21(月) 14:06:09.86ID:ZDMJHUdnr 流石に本気で三角関数使って実装しようなんて思ってないだろうしそこは別にネタで言ってんだと思うけど
ネタとしても面白くはないけど
ネタとしても面白くはないけど
767デフォルトの名無しさん (アウアウウー Sa43-gDzD)
2019/10/21(月) 16:50:50.88ID:RCZWOoQNa そもそも>>748はhello worldレベルの初心者だろうに、回答者が求めてるものを無視して俺の解き方見てくれ!って奴ばかりなのは問題だと思う
768デフォルトの名無しさん (ワイーワ2 FF6a-uHRg)
2019/10/21(月) 17:07:36.09ID:5+ah6i6TF 禁止事項
トリを使おうとしている質問者に対して、そんなトリはやめろとかという、斜め上からのアドバイス
質問者そっちのけでの昔語り(昔はもっと苦労したもんだ、今の若い者は…)
知らないのに、使ったことないのに、知ったかぶりでの書き込み
ググれという誰でも言えそうな忠告
俺は知ってるけど言わない等といった、実社会での扱われ方からの僻みから来る
意地悪な言辞
回答はあくまでボランティアなので、質問者は、回答がつかなかったり、
期待に沿った回答が得られなかったからといって切れたりしないように。
また、わざとそういう困った質問者を演じて釣りに来る人もいるかもしれないので、
回答者も、むかついたからといって、いちいち切れて反応せずスルーしよう。
そして質問者はもう出て来ない
トリを使おうとしている質問者に対して、そんなトリはやめろとかという、斜め上からのアドバイス
質問者そっちのけでの昔語り(昔はもっと苦労したもんだ、今の若い者は…)
知らないのに、使ったことないのに、知ったかぶりでの書き込み
ググれという誰でも言えそうな忠告
俺は知ってるけど言わない等といった、実社会での扱われ方からの僻みから来る
意地悪な言辞
回答はあくまでボランティアなので、質問者は、回答がつかなかったり、
期待に沿った回答が得られなかったからといって切れたりしないように。
また、わざとそういう困った質問者を演じて釣りに来る人もいるかもしれないので、
回答者も、むかついたからといって、いちいち切れて反応せずスルーしよう。
そして質問者はもう出て来ない
769デフォルトの名無しさん (ワッチョイ 37e7-6fT3)
2019/10/21(月) 17:50:42.35ID:fwYGRAlp0770769 (ワッチョイ 37e7-6fT3)
2019/10/21(月) 19:35:56.70ID:fwYGRAlp0771デフォルトの名無しさん (オッペケ Sr47-sprL)
2019/10/22(火) 11:21:00.25ID:wZUXcjF6r いやどうみてもnがちょっとでかくなったら正しくなくなることくらい自明だろ
同じ発想でやりたいなら複素平面とかπ/2の回転行列とか使って計算すればいいだけ
ただし奇を衒った回答としては斬新さにかけて面白くないと言っている
で>>758が一番スマート(かつ自分でもそうする)って言ってるんだがなんなんやこいつ
同じ発想でやりたいなら複素平面とかπ/2の回転行列とか使って計算すればいいだけ
ただし奇を衒った回答としては斬新さにかけて面白くないと言っている
で>>758が一番スマート(かつ自分でもそうする)って言ってるんだがなんなんやこいつ
772デフォルトの名無しさん (ワイーワ2 FF6a-uHRg)
2019/10/22(火) 11:24:07.59ID:fxbuxtP/F >nがちょっとでかくなったら正しくなくなる
2π で mod すればいい
2π で mod すればいい
773デフォルトの名無しさん (ワッチョイ 7f73-pTuN)
2019/10/22(火) 11:42:16.77ID:Bl/xGts70 質問したものです。皆さん様々な意見ありがとうございます。考えてくださってとても感謝しています。
皆さんのを見ながらなんとかできました!
ありがとうございました。
皆さんのを見ながらなんとかできました!
ありがとうございました。
774デフォルトの名無しさん (ワッチョイ 6373-sEIE)
2019/10/26(土) 11:19:55.92ID:VCWPcpX80 def break_test
return break
end
i = 10;
while i > 0
next_test
}
放置すれば無限ループになるのをbreak_testでループを
抜けたいのですが、関数?からnext や breakなどを
返すようにできないのでしょうか。
return break
end
i = 10;
while i > 0
next_test
}
放置すれば無限ループになるのをbreak_testでループを
抜けたいのですが、関数?からnext や breakなどを
返すようにできないのでしょうか。
775デフォルトの名無しさん (ワッチョイ 6373-sEIE)
2019/10/26(土) 11:21:02.82ID:VCWPcpX80 ごめんなさい、
i = 10;
while i > 0
break_test
}
でした。
i = 10;
while i > 0
break_test
}
でした。
776デフォルトの名無しさん (ワッチョイ ff2c-vu2g)
2019/10/26(土) 12:47:43.93ID:751XFDvk0 そういうキーワードそのものは、返せないだろ
戻り値は、0, 1 などの整数とか、
フラグとして、true, false の真偽値とか、
:next, :break みたいなシンボルとか、文字列とか
戻り値は、0, 1 などの整数とか、
フラグとして、true, false の真偽値とか、
:next, :break みたいなシンボルとか、文字列とか
777デフォルトの名無しさん (ワッチョイ ffa5-7KPZ)
2019/10/26(土) 13:32:18.57ID:aCoOcfZt0 キーワードデリゲーションをすればいいんだろ
かんたんじゃん
かんたんじゃん
778デフォルトの名無しさん (ワッチョイ ff01-E1XV)
2019/10/26(土) 13:42:24.92ID:ZMkO6rZZ0779デフォルトの名無しさん (ワッチョイ bf33-1RvR)
2019/10/26(土) 19:48:47.03ID:zP6esb2p0 >>774
斬新な発想だな。w
Rubyに限らず一般的に、制御を移すしくみは、関数(メソッド)の範囲を越えることはできない。
ただし、「例外」ならそれ以降をすっとばすことができるので、break相当ならできるかも?
# 勧めないけど。
斬新な発想だな。w
Rubyに限らず一般的に、制御を移すしくみは、関数(メソッド)の範囲を越えることはできない。
ただし、「例外」ならそれ以降をすっとばすことができるので、break相当ならできるかも?
# 勧めないけど。
780デフォルトの名無しさん (ワッチョイ bf33-1RvR)
2019/10/26(土) 19:56:33.83ID:zP6esb2p0781デフォルトの名無しさん (ワッチョイ 6373-sEIE)
2019/10/26(土) 22:09:58.48ID:VCWPcpX80 >>778
実際はwhileじゃなくて
xxxxx.each do |key|
同じようなことする関数(引数)
同じようなことする関数(引数)
同じようなことする関数(引数)
end
の中で関数の中身がある条件だったら
nextで残りをやらずにeach.doの最初からやりたいんですけど
引数の値が違うだけなのに
例えば関数にTrueを返したら next しろとか条件をいちいち
付けるのもめんどくさいと思い、質問してみました。
実際はwhileじゃなくて
xxxxx.each do |key|
同じようなことする関数(引数)
同じようなことする関数(引数)
同じようなことする関数(引数)
end
の中で関数の中身がある条件だったら
nextで残りをやらずにeach.doの最初からやりたいんですけど
引数の値が違うだけなのに
例えば関数にTrueを返したら next しろとか条件をいちいち
付けるのもめんどくさいと思い、質問してみました。
782デフォルトの名無しさん (ワッチョイ 6373-sEIE)
2019/10/26(土) 22:13:03.44ID:VCWPcpX80 xxxxx.each do |key|
if 同じようなことする関数(引数) then next
if 同じようなことする関数(引数) then next
if 同じようなことする関数(引数) then next
end
Rubyにあまり詳しくないのでよくわからないのですが
こんな感じなのでしょうか?
if 同じようなことする関数(引数) then next
if 同じようなことする関数(引数) then next
if 同じようなことする関数(引数) then next
end
Rubyにあまり詳しくないのでよくわからないのですが
こんな感じなのでしょうか?
783デフォルトの名無しさん (ワッチョイ a3e0-Oqw9)
2019/10/26(土) 23:35:07.98ID:BPSgYag60 慣習的に返り値を成否にすることが多いから論理を逆にして
xxxxx.each do |key|
同じようなことする関数(引数) &&
同じようなことする関数(引数) &&
同じようなことする関数(引数)
end
xxxxx.each do |key|
next unless 同じようなことする関数(引数)
next unless 同じようなことする関数(引数)
同じようなことする関数(引数)
end
xxxxx.each do |key|
同じようなことする関数(引数) &&
同じようなことする関数(引数) &&
同じようなことする関数(引数)
end
xxxxx.each do |key|
next unless 同じようなことする関数(引数)
next unless 同じようなことする関数(引数)
同じようなことする関数(引数)
end
784デフォルトの名無しさん (ワッチョイ ff01-E1XV)
2019/10/27(日) 00:24:39.23ID:wfElRmia0 >>781
なるほど
自分ならオプショナルチェーン的なのを使うか
「同じようなことする関数」をメソッドオブジェクトかProcにして配列に入れて
true返したらnextしろって書くのを1箇所にする
https://ideone.com/I7hyOs
https://ideone.com/VQMgg2
なるほど
自分ならオプショナルチェーン的なのを使うか
「同じようなことする関数」をメソッドオブジェクトかProcにして配列に入れて
true返したらnextしろって書くのを1箇所にする
https://ideone.com/I7hyOs
https://ideone.com/VQMgg2
785デフォルトの名無しさん (ワッチョイ ff2c-vu2g)
2019/10/27(日) 05:02:59.99ID:hJUpCTqv0 jQuery.each( object, callback )
これは、jQueryの繰り返し処理用の関数。
配列/オブジェクトで使える
繰り返し処理中に、ループを抜けたい場合(一般的なループ処理で言うところのbreak)、
コールバック関数で、falseを返すことで実装できます。
それ以外の値を返した場合は、無視されます
これは、jQueryの繰り返し処理用の関数。
配列/オブジェクトで使える
繰り返し処理中に、ループを抜けたい場合(一般的なループ処理で言うところのbreak)、
コールバック関数で、falseを返すことで実装できます。
それ以外の値を返した場合は、無視されます
786デフォルトの名無しさん (ワッチョイ 53f3-cmPQ)
2019/10/27(日) 05:08:22.73ID:+BT3KxOb0787デフォルトの名無しさん (ワッチョイ c314-BWw0)
2019/10/27(日) 10:29:27.71ID:EzDt4vDz0 ifのネストができないとかなので
qiitaの「オレオレ言語作ってみた」記事レベル
qiitaの「オレオレ言語作ってみた」記事レベル
788デフォルトの名無しさん (オッペケ Sr47-eGmw)
2019/10/27(日) 10:35:17.49ID:4XYnNnzNr いや、さすがにそれよりは完成度高かったよ
789デフォルトの名無しさん (ワッチョイ 2314-BWw0)
2019/10/27(日) 10:40:08.22ID:Lik42TLZ0 あとgithubプロジェクトには、オブジェクトファイルとか
vimのスワップファイルとかも入っていて周辺知識もない
つまりはプログラミング全般の幅広い知識をつけて、
言語開発できるレベルになったと言うより
言語作ってみたくて、それ関連の知識をぐぐってコピペした程度
再帰を知ってるかも怪しいw
vimのスワップファイルとかも入っていて周辺知識もない
つまりはプログラミング全般の幅広い知識をつけて、
言語開発できるレベルになったと言うより
言語作ってみたくて、それ関連の知識をぐぐってコピペした程度
再帰を知ってるかも怪しいw
790デフォルトの名無しさん (オッペケ Sr47-eGmw)
2019/10/27(日) 10:44:23.07ID:4XYnNnzNr 中学生相手に謎のマウントとって恥ずかしくないんかこのおっさん
791デフォルトの名無しさん (ワッチョイ 6f8c-cmPQ)
2019/10/27(日) 11:37:21.19ID:vygsvak+0 どこにも新人を虐め殺す人はいる。
792デフォルトの名無しさん (ワッチョイ ff2c-vu2g)
2019/10/27(日) 11:58:18.66ID:hJUpCTqv0 養成読本シリーズのムック本が出た!
Software Design plusシリーズ
Ruby on Rails 6 エンジニア養成読本、2019/10/26
著者は、すがわらまさのり,前島真一
Software Design plusシリーズ
Ruby on Rails 6 エンジニア養成読本、2019/10/26
著者は、すがわらまさのり,前島真一
793デフォルトの名無しさん (ワッチョイ ffa5-7KPZ)
2019/10/27(日) 12:17:41.60ID:Cn2fohUL0 養成ギプスじゃねーのなこのシリーズ
794デフォルトの名無しさん (ワッチョイ 6373-ynHG)
2019/10/28(月) 23:21:57.76ID:FXEIy8w10795デフォルトの名無しさん (ワッチョイ 6373-ynHG)
2019/10/29(火) 06:00:13.39ID:wBa+308I0796デフォルトの名無しさん (ワッチョイ 6373-ynHG)
2019/10/29(火) 06:25:03.68ID:wBa+308I0 >>785
Ruby on Rails入れてませんがjqueryが使えるのでしょうか。
Ruby on Rails入れてませんがjqueryが使えるのでしょうか。
797デフォルトの名無しさん (スップ Sd1f-PDRl)
2019/10/29(火) 23:05:22.63ID:wWZj5nZGd github の ignoreとか適当だから、objとか普通にアップしてるな。
仕事ならまだしも、個人ねやつなんか、完全やバックアップもくてきだから、
あまりにデカイみだな .db とか除いて、全部あっふだわ。
個人のリポジドリも200とか超え始めると、一つ一つ丁寧に設定なんかしとれんわ。
githubやエディタ独自仕様に振り回される必要なし。
仕事ならまだしも、個人ねやつなんか、完全やバックアップもくてきだから、
あまりにデカイみだな .db とか除いて、全部あっふだわ。
個人のリポジドリも200とか超え始めると、一つ一つ丁寧に設定なんかしとれんわ。
githubやエディタ独自仕様に振り回される必要なし。
798デフォルトの名無しさん (ワッチョイ 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/mjBNM■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 清涼飲料水から麻薬成分東京都が注意喚起 [おっさん友の会★]
- 【悲報】ネトウヨが大田實中将の「沖縄県民斯く戦えり」って訣別電出しながら昔の沖縄県民は立派だったって嘆いてた😰 [616817505]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 【動画】男女混合レスリングのガチ試合の様子がこちら [738130642]
- 生活保護廃止、公務員の給与に最低賃金を適用⇦これをやるだけで国民の9割の不満が解消されるのにやらない理由 [218488394]
- んなっしょい🍬禁止🈲のお🏡
