プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ
質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 65
https://mevius.5ch.net/test/read.cgi/tech/1545421414/
るりまサーチ (リファレンス検索)
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 66
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 2a2c-RM0q)
2020/01/04(土) 01:15:34.30ID:X7t3Qsuc0629デフォルトの名無しさん (ワッチョイ 2e63-cv7i)
2020/08/12(水) 02:52:44.69ID:02pnoruX0 rubyの0はメモリに何も入ってないのを表すんじゃなくてNumericクラスのインスタンス
何かのインスタンスなんだから真なのは自然
rubyの全てオブジェクトという基礎を無視するのは困る
何かのインスタンスなんだから真なのは自然
rubyの全てオブジェクトという基礎を無視するのは困る
630デフォルトの名無しさん (ワッチョイ 4d61-CWhB)
2020/08/12(水) 03:08:54.56ID:2N2Ra+Iw0631デフォルトの名無しさん (ワッチョイ 4d61-CWhB)
2020/08/12(水) 03:12:27.26ID:2N2Ra+Iw0 数学の世界でも、真理値表では、0が偽、1が真。
andを「論理積」というのは、andを掛け算(つまり「積」)に置き換えてみると
結果が同じになり、
orを「論理和」というのも、足し算を「飽和演算」とする場合に、足し算に
置き換えられるからで、
それらは、0を偽とした場合にのみ成り立つ。
0も1も真としてしまっては、これら、論理積、論理和という言葉の定義すら
理解しにくくなってしまうだろう。
andを「論理積」というのは、andを掛け算(つまり「積」)に置き換えてみると
結果が同じになり、
orを「論理和」というのも、足し算を「飽和演算」とする場合に、足し算に
置き換えられるからで、
それらは、0を偽とした場合にのみ成り立つ。
0も1も真としてしまっては、これら、論理積、論理和という言葉の定義すら
理解しにくくなってしまうだろう。
632デフォルトの名無しさん (ワッチョイ 7133-UdbQ)
2020/08/12(水) 04:29:24.89ID:RMBTHnXK0633デフォルトの名無しさん (ワッチョイ 468c-/3LZ)
2020/08/12(水) 05:16:20.30ID:pHDlYbYE0 いやいや、そもそも0や1が真になるのがおかしい
if 0 then 〜 はエラーにすべきだろう
if 0 then 〜 はエラーにすべきだろう
634デフォルトの名無しさん (ワッチョイ ed35-ZVh2)
2020/08/12(水) 07:16:25.66ID:MEC6nwIV0 俺は、Rubyではnil, falseだけが偽とする。0を偽としないって設計は好きだな。
Conventionalな考え方とは異なるってのも別に良いじゃん。
そんなConventionalな、つまり従来の考え方を踏襲しない言語なんて一杯あるし。
これが気に入らんのは、Kotlinでfunで関数定義するやつ。
Conventionalな考え方とは異なるってのも別に良いじゃん。
そんなConventionalな、つまり従来の考え方を踏襲しない言語なんて一杯あるし。
これが気に入らんのは、Kotlinでfunで関数定義するやつ。
635デフォルトの名無しさん (ワッチョイ 454e-/dLM)
2020/08/12(水) 07:25:45.86ID:q4xTlvo30 まあ一番基本的であろうdefで作った関数(ほんとは関数じゃないというのは置いといて)が第一級市民(オブジェクトと言うと誤解を招くので)として扱われない仕様には若干古くささを感じる。
JSどころかPythonですらできるのに…
引数ゼロで呼び出しかかっちゃうんだよなぁ…
()省略文法の弊害。
今思えば必須でよかったんじゃないか?()くらい
JSどころかPythonですらできるのに…
引数ゼロで呼び出しかかっちゃうんだよなぁ…
()省略文法の弊害。
今思えば必須でよかったんじゃないか?()くらい
636デフォルトの名無しさん (ワッチョイ e52c-dj0b)
2020/08/12(水) 08:00:48.62ID:UVmFgkue0 Ruby では、関数・ブロック(クロージャ)の2つのスコープがある。
2つないと、バグりやすい
関数は、クロージャと違って、スコープが厳しい。
C と同じで、外側の変数を通さないから、バグが少ない
Go も、Rubyを見習ったし、
JavaScript も、新たなスコープを作った
2つないと、バグりやすい
関数は、クロージャと違って、スコープが厳しい。
C と同じで、外側の変数を通さないから、バグが少ない
Go も、Rubyを見習ったし、
JavaScript も、新たなスコープを作った
637デフォルトの名無しさん (ブーイモ MM85-bVkb)
2020/08/12(水) 08:34:16.06ID:lEc3olaBM 老害の極み
1 and 0 なんてコードを書こうとするほうがどうかしてる
1 and 0 なんてコードを書こうとするほうがどうかしてる
638デフォルトの名無しさん (ワッチョイ ed35-ZVh2)
2020/08/12(水) 08:38:11.02ID:MEC6nwIV0639デフォルトの名無しさん (アメ MM55-/dLM)
2020/08/12(水) 08:49:24.26ID:1xAI9U35M ぶっちゃけ今どきるびぃみたいな型なしクソ言語にしがみついてるやつらが老害だけどなw
640デフォルトの名無しさん (テテンテンテン MM26-ocCp)
2020/08/12(水) 09:10:24.00ID:fvB0TNCqM >>635
オブジェクト指向原理主義的には、メソッドはオブジェクトに対してメッセージを送信した結果生じるオブジェクトの「反応」なんだよ
そこは完全にオブジェクト側に任されていて、オブジェクト自体がRubyの仮想マシン上でどう実装されてるかすらも呼び出し側が期待するべきではないの
JavaScriptだとオブジェクトが単なる連想配列であるという前提のもとでそこからメソッドを引っ張り出して呼び出すわけだけど、それはある意味オブジェクトのカプセル化を破っているというわけ
そういう思想的背景を理解すれば、Rubyのメソッドが第一級関数ではない理由は君にも納得できるんじゃないかな
まあその思想に拘ることにどれだけ実用的意義があるかは別問題で、俺もRubyが時代遅れだというのは同意するけどね
オブジェクト指向原理主義的には、メソッドはオブジェクトに対してメッセージを送信した結果生じるオブジェクトの「反応」なんだよ
そこは完全にオブジェクト側に任されていて、オブジェクト自体がRubyの仮想マシン上でどう実装されてるかすらも呼び出し側が期待するべきではないの
JavaScriptだとオブジェクトが単なる連想配列であるという前提のもとでそこからメソッドを引っ張り出して呼び出すわけだけど、それはある意味オブジェクトのカプセル化を破っているというわけ
そういう思想的背景を理解すれば、Rubyのメソッドが第一級関数ではない理由は君にも納得できるんじゃないかな
まあその思想に拘ることにどれだけ実用的意義があるかは別問題で、俺もRubyが時代遅れだというのは同意するけどね
641デフォルトの名無しさん (アウアウウー Saa5-Z0Eo)
2020/08/12(水) 09:42:55.58ID:/4eCUYwNa これ本当なのですか?
Ruby on Rails では、サーバー側がRubyで、
クライアント側が、React + Bootstrap も多いけど、
サーバー側をJavaScript(JS), Node.js にすれば、
言語が1つになるので、開発が楽になると主張する人もいるけど、
あまりに、JSは巨大だから、かえって難しくなる
だから、Rails では、Node.js, Webpack, Babel をコンパイルツールとして使っているだけ
Ruby on Rails では、サーバー側がRubyで、
クライアント側が、React + Bootstrap も多いけど、
サーバー側をJavaScript(JS), Node.js にすれば、
言語が1つになるので、開発が楽になると主張する人もいるけど、
あまりに、JSは巨大だから、かえって難しくなる
だから、Rails では、Node.js, Webpack, Babel をコンパイルツールとして使っているだけ
642デフォルトの名無しさん (アウアウウー Saa5-ocCp)
2020/08/12(水) 09:55:36.17ID:sCXl4KJWa > あまりに、JSは巨大だから、かえって難しくなる
ここが飛躍していて意味不明である
RailsはサーバーサイドだけであってもJSよりRubyで書いた方が簡単だと思っている奴が使うためのフレームワークであり、それに正しいもクソもない
そう思う奴が少なければ自然に廃れるだけだし、事実廃れている
ここが飛躍していて意味不明である
RailsはサーバーサイドだけであってもJSよりRubyで書いた方が簡単だと思っている奴が使うためのフレームワークであり、それに正しいもクソもない
そう思う奴が少なければ自然に廃れるだけだし、事実廃れている
643デフォルトの名無しさん (ワッチョイ e52c-dj0b)
2020/08/12(水) 10:22:22.84ID:UVmFgkue0 JS は最近まで、基本型であるハッシュも無かった
皆、オブジェクトをハッシュの代わりに使っていたけど、
__proto__ という属性名を使うと、バグってしまう
こういう事も知ってる香具師は、まずいない。
標準機能が少なくて、自作すると、様々な引掛けに掛かってしまう
var myObj = { };
str = 'abc';
myObj[ str ] = 1;
console.log( myObj[ str ] ); // 1
str = '__proto__';
myObj[ str ] = 2;
console.log( myObj[ str ] ); // 2 ではなく、{ }
皆、オブジェクトをハッシュの代わりに使っていたけど、
__proto__ という属性名を使うと、バグってしまう
こういう事も知ってる香具師は、まずいない。
標準機能が少なくて、自作すると、様々な引掛けに掛かってしまう
var myObj = { };
str = 'abc';
myObj[ str ] = 1;
console.log( myObj[ str ] ); // 1
str = '__proto__';
myObj[ str ] = 2;
console.log( myObj[ str ] ); // 2 ではなく、{ }
644デフォルトの名無しさん (ワッチョイ aebb-jUmA)
2020/08/12(水) 10:28:49.86ID:0iqLL9pv0 Railsは、PHP全盛期に誰が使っても大穴が開かないから人気があっただけでさ
Node.js等に優秀なフレームワークが出そろった今ではもう、使う価値はほとんどないよ・・・・
Node.js等に優秀なフレームワークが出そろった今ではもう、使う価値はほとんどないよ・・・・
645デフォルトの名無しさん (ワッチョイ 7133-UdbQ)
2020/08/12(水) 12:33:47.08ID:RMBTHnXK0646643 (ワッチョイ e52c-dj0b)
2020/08/12(水) 12:51:13.63ID:UVmFgkue0 使っている単語を集めるアプリで、__proto__ が使われていたら、バグる
Haxe では、この仕様を回避するために、すべての属性名の先頭に、@ を付けていた。
@abc, @__proto__ みたいにする
でも、__proto__ も、ブラウザが慣習として使っているだけのもので、
規格で決まっているわけでもないので、変わるかも知れない
もし変わったら、突然アプリがバグってしまう
各社が、勝手に決めている部分も多いから、プログラミングしにくい。
言語の標準機能が少ないから、配列の便利な操作でも、
Lodash など外部のライブラリを使うしかない
Haxe では、この仕様を回避するために、すべての属性名の先頭に、@ を付けていた。
@abc, @__proto__ みたいにする
でも、__proto__ も、ブラウザが慣習として使っているだけのもので、
規格で決まっているわけでもないので、変わるかも知れない
もし変わったら、突然アプリがバグってしまう
各社が、勝手に決めている部分も多いから、プログラミングしにくい。
言語の標準機能が少ないから、配列の便利な操作でも、
Lodash など外部のライブラリを使うしかない
647デフォルトの名無しさん (テテンテンテン MM26-tgXM)
2020/08/12(水) 13:21:10.21ID:/qrw2h6bM 標準なのかRailsの独自拡張なのかの区別すら困難なほどにRailsにクソミソに汚されたRubyの悪口はやめなさい
少なくともJSにおいては、標準ライブラリを汚すような行儀の悪いライブラリが広く一般的に使用されたりはしていない
少なくともJSにおいては、標準ライブラリを汚すような行儀の悪いライブラリが広く一般的に使用されたりはしていない
648デフォルトの名無しさん (オッペケ Srf1-wvIG)
2020/08/12(水) 13:25:19.87ID:kGuev0jHr TSでいいじゃない 人間だもの
649デフォルトの名無しさん (ワッチョイ 8201-FRDO)
2020/08/12(水) 14:24:08.46ID:HozojyCs0 暑くなるとどのスレにも変なのが湧くね
知ってて批評する分にはいいけど知ったか批評しかなく中身がない
知ってて批評する分にはいいけど知ったか批評しかなく中身がない
650デフォルトの名無しさん (ブーイモ MMb6-bVkb)
2020/08/12(水) 15:43:20.47ID:8Nm8vDB1M unixの世界では0がtrue、1を含むそれ以外がfalse。
慣習よりも実益が上回るなら、慣習に従う必要なんてない。
Swift、Kotlin、Go、Rustらのメジャーな新言語で0や1をそのまま真偽値として使える言語は一つとしてないのは、JSのtruthy/falsyはバグの温床だから。
慣習よりも実益が上回るなら、慣習に従う必要なんてない。
Swift、Kotlin、Go、Rustらのメジャーな新言語で0や1をそのまま真偽値として使える言語は一つとしてないのは、JSのtruthy/falsyはバグの温床だから。
>>650
それはシェルが扱う「プログラムの」返値のときで、しかも意味は 0 が正常終了、1 が非正常終了、と、ちょっと違う
それはシェルが扱う「プログラムの」返値のときで、しかも意味は 0 が正常終了、1 が非正常終了、と、ちょっと違う
652デフォルトの名無しさん (ワッチョイ 7133-UdbQ)
2020/08/12(水) 17:41:31.55ID:RMBTHnXK0654デフォルトの名無しさん (ワッチョイ 7133-UdbQ)
2020/08/12(水) 18:29:24.32ID:RMBTHnXK0 >>653
「終了」だけの話じゃないから。
「終了」だけの話じゃないから。
655デフォルトの名無しさん (ワイーワ2 FF8a-jwrZ)
2020/08/13(木) 10:20:15.54ID:m1xh97jBF656デフォルトの名無しさん (ワッチョイ 7133-UdbQ)
2020/08/13(木) 11:02:33.72ID:HLH3bdVq0657デフォルトの名無しさん (ワッチョイ 4d61-CWhB)
2020/08/13(木) 11:27:21.81ID:+ydphYXd0 >>650
それは真偽値じゃなく、0が成功、0以外がエラーで、番号でエラーの種類を表しているだけ。
Unixでは、誕生の時から、Cと二人三脚だったが、Cはもともと1が真、0が偽だった
わけだから、Unixも当然、1が真、0が偽。
エラー番号は、真偽値とは直接関係が無く、Unixとは関係ないMS-DOSや
PC-8801のアセンブラの世界でも、0が成功、0以外でエラーの種類を表すことが
多かった。なぜかといえば、それが効率が良かったから。
当時のCPUは非力だったので、そのように1つの整数で多くの情報を表すと、
飛躍的に体感速度が上がったからそうなっていた。
それは真偽値じゃなく、0が成功、0以外がエラーで、番号でエラーの種類を表しているだけ。
Unixでは、誕生の時から、Cと二人三脚だったが、Cはもともと1が真、0が偽だった
わけだから、Unixも当然、1が真、0が偽。
エラー番号は、真偽値とは直接関係が無く、Unixとは関係ないMS-DOSや
PC-8801のアセンブラの世界でも、0が成功、0以外でエラーの種類を表すことが
多かった。なぜかといえば、それが効率が良かったから。
当時のCPUは非力だったので、そのように1つの整数で多くの情報を表すと、
飛躍的に体感速度が上がったからそうなっていた。
658デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/13(木) 19:09:06.75ID:Tr7DEHMo0 dllでchar* hoge(){
}
}
659デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/13(木) 19:11:24.89ID:Tr7DEHMo0 dllで
char* hoge(){
return msg;
}
ってやったのをrubyではどうやってうけとればいいんですか?
お願いします
char* hoge(){
return msg;
}
ってやったのをrubyではどうやってうけとればいいんですか?
お願いします
660デフォルトの名無しさん (ワッチョイ e52c-178q)
2020/08/14(金) 05:15:39.54ID:SCMnTycc0 「ruby dll 呼び出し」で検索すれば?
ただ、Windows 用にコンパイルしても、正常に動くかな?
ただ、Windows 用にコンパイルしても、正常に動くかな?
661デフォルトの名無しさん (アウウィフ FFa5-jwrZ)
2020/08/14(金) 15:59:11.59ID:XKPWE/tlF ffi
662デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 16:44:23.46ID:MuRP3aMr0 require 'fiddle/import'
module M
extend Fiddle::Importer
dlload "D:./myruby.dll"
extern "char* gethoge()"
end
ss = M.gethoge
puts ss
文字化けします
module M
extend Fiddle::Importer
dlload "D:./myruby.dll"
extern "char* gethoge()"
end
ss = M.gethoge
puts ss
文字化けします
663デフォルトの名無しさん (ワッチョイ 7133-UdbQ)
2020/08/14(金) 17:05:39.60ID:B0hSR/wp0 文字コードが違うんやろ。
変換すれば。
変換すれば。
664デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 17:27:30.31ID:MuRP3aMr0 変換のしかたがわからないのです
665デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 17:28:37.41ID:MuRP3aMr0 dllはshiftjisです
666デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 17:30:52.13ID:MuRP3aMr0 `require': cannot load such file -- ffi
667デフォルトの名無しさん (ワッチョイ 1e7d-yoZq)
2020/08/14(金) 17:44:20.45ID:cCFmHkiX0 >>662
ss = M.gethoge.force_encoding( Encoding::CP932 )
ss = M.gethoge.force_encoding( Encoding::CP932 )
668デフォルトの名無しさん (エムゾネ FF62-jwrZ)
2020/08/14(金) 18:18:09.19ID:zY2s9ydfF ruby -Ks
669デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 18:24:57.25ID:MuRP3aMr0 一通りやったのに問題解決しませんでした、諦めました
どうもありがとうございました
どうもありがとうございました
670デフォルトの名無しさん (オッペケ Srf1-wvIG)
2020/08/14(金) 18:35:40.73ID:5nafUaAcr dllがShift-JISでrubyがUTF-8でターミナルがWindows-32Jとかなんじゃねえの
情報を小出しにされたんじゃわかるわけない
情報を小出しにされたんじゃわかるわけない
671デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 18:40:48.13ID:MuRP3aMr0 それです
ターミナルがよくわかりません
ターミナルがよくわかりません
672デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 18:42:22.56ID:MuRP3aMr0 ターミナルはshiftjisでした
673デフォルトの名無しさん (オッペケ Srf1-wvIG)
2020/08/14(金) 18:58:09.61ID:5nafUaAcr そもそも本当に文字化けなのか?
想定する文字列と
p ss
した結果は?
想定する文字列と
p ss
した結果は?
674デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 19:03:22.47ID:MuRP3aMr0 #<Fiddle::Pointer:0x000000000313e7d0 ptr=0x00007ffea5c03038 size=0 free=0x0000000000000000>
675デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 19:04:10.92ID:MuRP3aMr0 require 'fiddle/import'
module M
extend Fiddle::Importer
dlload "D:./myruby.dll"
extern "char* gethoge()"
end
p M.gethoge
system "pause"
module M
extend Fiddle::Importer
dlload "D:./myruby.dll"
extern "char* gethoge()"
end
p M.gethoge
system "pause"
676デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 19:06:41.96ID:MuRP3aMr0 想定する文字列は「こんにちは!」です
677デフォルトの名無しさん (ワッチョイ 1e7d-yoZq)
2020/08/14(金) 19:07:56.76ID:cCFmHkiX0 p M.gethoge.encoding
678デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 19:08:46.36ID:MuRP3aMr0 puts M.gethoge
だと
S0�0k0a0o0�
だと
S0�0k0a0o0�
679デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 19:10:43.30ID:MuRP3aMr0 >>677
undefined method `encoding' for #<Fiddle::Pointer:0x0000000002c42230> (NoMethodError)
undefined method `encoding' for #<Fiddle::Pointer:0x0000000002c42230> (NoMethodError)
680デフォルトの名無しさん (ワッチョイ 1e7d-yoZq)
2020/08/14(金) 19:16:58.97ID:cCFmHkiX0 p M.gethoge.to_s.encoding
681デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 19:19:22.81ID:MuRP3aMr0 >>680
#<Encoding:ASCII-8BIT>
#<Encoding:ASCII-8BIT>
682デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 19:21:07.40ID:MuRP3aMr0 #include <stdio.h>
char name[] = "こんにちは!";
extern "C" __declspec(dllexport) char* __stdcall gethoge() {
return name;
}
dll側です
char name[] = "こんにちは!";
extern "C" __declspec(dllexport) char* __stdcall gethoge() {
return name;
}
dll側です
683デフォルトの名無しさん (ワッチョイ 1e7d-yoZq)
2020/08/14(金) 19:28:01.98ID:cCFmHkiX0 puts M.gethoge.to_s.force_encoding( Encoding::CP932 )
684デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 19:29:32.82ID:MuRP3aMr0685デフォルトの名無しさん (オッペケ Srf1-wvIG)
2020/08/14(金) 19:38:38.19ID:5nafUaAcr hoge.dllコンパイルしてたら解決してた
良かったね
良かったね
686デフォルトの名無しさん (ワッチョイ dd5f-XQXO)
2020/08/14(金) 19:58:30.98ID:MuRP3aMr0 >>685
ありがとうございました
ありがとうございました
687デフォルトの名無しさん (ワッチョイ e52c-178q)
2020/08/14(金) 22:28:15.31ID:SCMnTycc0 Windows で、Ruby を使うのは、CP932 で苦しむ。
ちょっとした処理でも、外部・CP932 → Ruby内部・UTF-8 → 外部・CP932
クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
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
ちょっとした処理でも、外部・CP932 → Ruby内部・UTF-8 → 外部・CP932
クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
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
688デフォルトの名無しさん (ワッチョイ 8201-FRDO)
2020/08/14(金) 23:58:52.64ID:sxmwfi0L0689デフォルトの名無しさん (ワッチョイ 9d6a-2ych)
2020/08/18(火) 19:07:20.91ID:7fbjefcm0 mechanizeのform送信を使って5chに書きこむことはできますか?
textareaにvalue値を入れ、submitし、承諾しますか?の画面まで行けたのですが、そこから同じようにsubmitしてもページ遷移が起こらずそのままみたいです
textareaにvalue値を入れ、submitし、承諾しますか?の画面まで行けたのですが、そこから同じようにsubmitしてもページ遷移が起こらずそのままみたいです
690デフォルトの名無しさん (オッペケ Srf1-wvIG)
2020/08/18(火) 19:31:46.44ID:AGh/qXAtr >>689
cookie
cookie
691デフォルトの名無しさん (ワッチョイ 9d6a-2ych)
2020/08/18(火) 19:53:02.69ID:7fbjefcm0 >>690
具体的にcoockieをどうすれば良いでしょうか?
具体的にcoockieをどうすれば良いでしょうか?
692デフォルトの名無しさん (エムゾネ FF62-jwrZ)
2020/08/18(火) 20:08:47.36ID:h5vNCvfYF hanamogera
tepodon
tepodon
693デフォルトの名無しさん (ワッチョイ 6285-UC6e)
2020/08/18(火) 21:43:20.22ID:HR/M/dGq0 >>687
>Windows で、Ruby を使うのは、CP932 で苦しむ。
>ちょっとした処理でも、外部・CP932 → Ruby内部・UTF-8 → 外部・CP932
Rubyを生半可に知ったつもりの人にありがちな勘違いだな
まず、多言語化に対応した多くのプログラミング言語は、
内部エンコーディングとしてUTF-8を採用している、ここまでは間違いではない
しかしながらRubyは内部エンコーディングとして特定のエンコーディングを採用せず、
文字列(String)オブジェクトの属性としてエンコーディング情報を保持する
方式を採用した
だから>>688氏が指摘しているように、エンコーディングをCP932で統一できるなら、
Rubyであれば 外部・CP932 → Ruby内部・CP932 → 外部・CP932 と
エンコーディングフリーなプログラミンングを実践できる
・Ruby 2.7.0 リファレンスマニュアル > 多言語化
ttps://docs.ruby-lang.org/ja/latest/doc/spec=2fm17n.html
・Rubyのエンコーディング
ttps://www.sl*d*share.net/tmtm/ruby-nseg30
・Rubyのエンコーディング
ttps://tmtms.h*t*n*blog.com/entry/20120812/ruby_encoding
ありふれた言語、たとえばPythonであれば内部エンコーディンングはUTF-8固定だから:
>Windows で、Python を使うのは、CP932 で苦しむ。
>ちょっとした処理でも、外部・CP932 → Python内部・UTF-8 → 外部・CP932
という指摘は正しい
>Windows で、Ruby を使うのは、CP932 で苦しむ。
>ちょっとした処理でも、外部・CP932 → Ruby内部・UTF-8 → 外部・CP932
Rubyを生半可に知ったつもりの人にありがちな勘違いだな
まず、多言語化に対応した多くのプログラミング言語は、
内部エンコーディングとしてUTF-8を採用している、ここまでは間違いではない
しかしながらRubyは内部エンコーディングとして特定のエンコーディングを採用せず、
文字列(String)オブジェクトの属性としてエンコーディング情報を保持する
方式を採用した
だから>>688氏が指摘しているように、エンコーディングをCP932で統一できるなら、
Rubyであれば 外部・CP932 → Ruby内部・CP932 → 外部・CP932 と
エンコーディングフリーなプログラミンングを実践できる
・Ruby 2.7.0 リファレンスマニュアル > 多言語化
ttps://docs.ruby-lang.org/ja/latest/doc/spec=2fm17n.html
・Rubyのエンコーディング
ttps://www.sl*d*share.net/tmtm/ruby-nseg30
・Rubyのエンコーディング
ttps://tmtms.h*t*n*blog.com/entry/20120812/ruby_encoding
ありふれた言語、たとえばPythonであれば内部エンコーディンングはUTF-8固定だから:
>Windows で、Python を使うのは、CP932 で苦しむ。
>ちょっとした処理でも、外部・CP932 → Python内部・UTF-8 → 外部・CP932
という指摘は正しい
694デフォルトの名無しさん (ワッチョイ 8201-FRDO)
2020/08/18(火) 22:19:28.71ID:KlQrPk6/0 CSI方式を採用した背景はこれ読むといいよ
https://jp.quora.com/Ruby-deha-naze-UCS-seiki-ka-wo-saiyou-shi-tei-nai-node-shou-ka/answers/141570426
↓こう書いとけばリテラルもI/OのデフォルトもCP932
#! /usr/bin/env ruby -E CP932:CP932
# encoding: CP932
https://jp.quora.com/Ruby-deha-naze-UCS-seiki-ka-wo-saiyou-shi-tei-nai-node-shou-ka/answers/141570426
↓こう書いとけばリテラルもI/OのデフォルトもCP932
#! /usr/bin/env ruby -E CP932:CP932
# encoding: CP932
695デフォルトの名無しさん (テテンテンテン MM4f-f6AD)
2020/08/19(水) 00:17:36.61ID:45CsPPnjM エンコーディングのコストなんてIOに比べりゃ無視できる
ぶっちゃけRubyのやり方は百害あって一利無し
ぶっちゃけRubyのやり方は百害あって一利無し
696デフォルトの名無しさん (ワッチョイ 7fa5-u2+K)
2020/08/19(水) 00:28:27.54ID:dM5o8vR90 windowsのファイルシステムのエンコーディングを中途半端なままにしたことで、
windowsユーザーへの嫌がらせになった以外に何の意味もなかった
windowsユーザーへの嫌がらせになった以外に何の意味もなかった
697デフォルトの名無しさん (ワッチョイ 7f47-fHWV)
2020/08/19(水) 01:42:46.33ID:Ch6IfZIA0698デフォルトの名無しさん (ワッチョイ 9f33-KILr)
2020/08/19(水) 01:52:26.05ID:zoQbwZV20699687 (ワッチョイ 1f2c-7CyN)
2020/08/19(水) 02:07:17.75ID:w/3evjlx0 UTF-8 以外は実績が無いから、文字列処理とか、怖くて使えないだろ。
誰も使っていないから
文字列を、正しく数値に変換できるのかとか
IO の境界で、変換する方が安全だと思う
誰も使っていないから
文字列を、正しく数値に変換できるのかとか
IO の境界で、変換する方が安全だと思う
700デフォルトの名無しさん (ワッチョイ 1f2c-7CyN)
2020/08/19(水) 02:33:17.91ID:w/3evjlx0 >>689
RubyでCookieの読み込みや保存を幸せにする(Mechanize&Selenium)
https://rooter.jp/web-crawling/ruby-cookie/
「ruby mechanize cookie」で検索すれば?
漏れは、selenium webdriver で、実際のブラウザを操作しているだけだから、
クッキーの事も、考えたことはない。
ブラウザが勝手にやる
プログラミングでは、入力して、ボタンを押すだけだから、簡単。
下は、yahoo のログインの例
driver.navigate.to "https://login.yahoo.co.jp/config/login_verify2?.src=ym"
element = driver.find_element(:id => "username")
element.send_key "ユーザー名"
driver.find_element(:id => "btnNext").click
element = driver.find_element(:id => "passwd")
element.send_key "パスワード"
driver.find_element(:id => "btnSubmit").click
RubyでCookieの読み込みや保存を幸せにする(Mechanize&Selenium)
https://rooter.jp/web-crawling/ruby-cookie/
「ruby mechanize cookie」で検索すれば?
漏れは、selenium webdriver で、実際のブラウザを操作しているだけだから、
クッキーの事も、考えたことはない。
ブラウザが勝手にやる
プログラミングでは、入力して、ボタンを押すだけだから、簡単。
下は、yahoo のログインの例
driver.navigate.to "https://login.yahoo.co.jp/config/login_verify2?.src=ym"
element = driver.find_element(:id => "username")
element.send_key "ユーザー名"
driver.find_element(:id => "btnNext").click
element = driver.find_element(:id => "passwd")
element.send_key "パスワード"
driver.find_element(:id => "btnSubmit").click
701700 (ワッチョイ 1f2c-1yu9)
2020/08/19(水) 07:23:42.56ID:w/3evjlx0 selenium webdriver なら、これで、
この板のtest スレの、書き込み確認画面が出る。
ひょっとしたら、確認画面が出ないかも知れない
require "selenium-webdriver"
options = Selenium::WebDriver::Chrome::Options.new
options.add_option( :detach, true ) # ブラウザを切り離す
options.add_argument( '--start-maximized' ) # 画面最大
driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 15 # default timeout
# プログラム板のtest スレ
driver.navigate.to "https://mevius.5ch.net/test/read.cgi/tech/1597362675/1"
element = driver.find_element( :css => ".formbody textarea" )
element.send_key "あい"
driver.find_element( :css => ".formbody input.submitbtn" ).click
この板のtest スレの、書き込み確認画面が出る。
ひょっとしたら、確認画面が出ないかも知れない
require "selenium-webdriver"
options = Selenium::WebDriver::Chrome::Options.new
options.add_option( :detach, true ) # ブラウザを切り離す
options.add_argument( '--start-maximized' ) # 画面最大
driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 15 # default timeout
# プログラム板のtest スレ
driver.navigate.to "https://mevius.5ch.net/test/read.cgi/tech/1597362675/1"
element = driver.find_element( :css => ".formbody textarea" )
element.send_key "あい"
driver.find_element( :css => ".formbody input.submitbtn" ).click
702700 (ワッチョイ 1f2c-1yu9)
2020/08/19(水) 09:15:13.90ID:w/3evjlx0 >>701
の続きに、以下を書くと、確認画面に切り替わった後の処理も、できる
単に、input[type=submit] のボタンを待つと、
遷移前後の両方のページで、ヒットするので、
確認画面に切り替わったかどうか、判別できない
遷移後のページだけに存在する、要素を待てば、
それが出現するまで、wait できるかも
sleep 7
# 確認画面が出る。https://mevius.5ch.net/test/bbs.cgi
puts driver.current_url # 切り替わったかどうか、URL を表示する
# ボタンのラベルを表示する
puts driver.find_element( :css => "input[type=submit]" ).attribute( "value" )
の続きに、以下を書くと、確認画面に切り替わった後の処理も、できる
単に、input[type=submit] のボタンを待つと、
遷移前後の両方のページで、ヒットするので、
確認画面に切り替わったかどうか、判別できない
遷移後のページだけに存在する、要素を待てば、
それが出現するまで、wait できるかも
sleep 7
# 確認画面が出る。https://mevius.5ch.net/test/bbs.cgi
puts driver.current_url # 切り替わったかどうか、URL を表示する
# ボタンのラベルを表示する
puts driver.find_element( :css => "input[type=submit]" ).attribute( "value" )
703デフォルトの名無しさん (ワッチョイ 1f6a-RTUg)
2020/08/19(水) 10:10:18.21ID:jdryYSd80 >>700さんのリンク先参考に見よう見まねでとりあえずやってみたんですけど、いまいちcookie_jarとかよくわからない・・・
require 'mechanize'
require 'yaml'
agent = Mechanize.new
agent.user_agent_alias = "Windows Mozilla"
agent.get('https://mevius.5ch.net/test/read.cgi/tech/1578068134/l50')
cookie_str = agent.cookies.map{|e| e.set_cookie_value}.join(", ")
#puts cookie_str
agent2 = Mechanize.new
HTTP::Cookie.parse(cookie_str, "https://mevius.5ch.net/test/read.cgi/tech/1578068134/l50").each{ |cookie| agent2.cookie_jar << cookie }
cookie_yml = agent.cookies.map{ |e| e.to_yaml }.join
#puts cookie_yml
agent2.cookie_jar << YAML.load(cookie_yml)
#pp agent2.cookie_jar
agent2.user_agent_alias = "Windows Mozilla"
page = agent2.get('https://mevius.5ch.net/test/read.cgi/tech/1578068134/l50')
form = page.form_with(:action=>'//mevius.5ch.net/test/bbs.cgi')
form.field_with(:name=>'MESSAGE').value = 'テスト'
next_page = agent2.submit(form)
form2 = next_page.form_with(:action=>'../test/bbs.cgi?guid=ON')
require 'mechanize'
require 'yaml'
agent = Mechanize.new
agent.user_agent_alias = "Windows Mozilla"
agent.get('https://mevius.5ch.net/test/read.cgi/tech/1578068134/l50')
cookie_str = agent.cookies.map{|e| e.set_cookie_value}.join(", ")
#puts cookie_str
agent2 = Mechanize.new
HTTP::Cookie.parse(cookie_str, "https://mevius.5ch.net/test/read.cgi/tech/1578068134/l50").each{ |cookie| agent2.cookie_jar << cookie }
cookie_yml = agent.cookies.map{ |e| e.to_yaml }.join
#puts cookie_yml
agent2.cookie_jar << YAML.load(cookie_yml)
#pp agent2.cookie_jar
agent2.user_agent_alias = "Windows Mozilla"
page = agent2.get('https://mevius.5ch.net/test/read.cgi/tech/1578068134/l50')
form = page.form_with(:action=>'//mevius.5ch.net/test/bbs.cgi')
form.field_with(:name=>'MESSAGE').value = 'テスト'
next_page = agent2.submit(form)
form2 = next_page.form_with(:action=>'../test/bbs.cgi?guid=ON')
704デフォルトの名無しさん (ワッチョイ 1f6a-RTUg)
2020/08/19(水) 10:13:04.91ID:jdryYSd80 agent2.submit(form2)
705700 (ワッチョイ 1f2c-1yu9)
2020/08/19(水) 10:21:48.83ID:w/3evjlx0 そりゃ、個別のページのクッキーを解析したり、大変だよ。
お金をもらえる訳でもないのに、他人が作ったシステムを分析するのは
それが嫌だから、漏れらは、selenium webdriver で、ブラウザにやらせる。
入力したり、ボタンを押したり、ブラウザを操作するだけだから、まだマシ
お金をもらえる訳でもないのに、他人が作ったシステムを分析するのは
それが嫌だから、漏れらは、selenium webdriver で、ブラウザにやらせる。
入力したり、ボタンを押したり、ブラウザを操作するだけだから、まだマシ
706700 (ワッチョイ 1f2c-1yu9)
2020/08/19(水) 10:32:07.88ID:w/3evjlx0 >>703
>form = page.form_with(:action=>'//mevius.5ch.net/test/bbs.cgi')
>form2 = next_page.form_with(:action=>'../test/bbs.cgi?guid=ON')
これらには、https: とか、付いていないけど、動くの?
>form = page.form_with(:action=>'//mevius.5ch.net/test/bbs.cgi')
>form2 = next_page.form_with(:action=>'../test/bbs.cgi?guid=ON')
これらには、https: とか、付いていないけど、動くの?
707700 (ワッチョイ 1f2c-1yu9)
2020/08/19(水) 10:38:39.32ID:w/3evjlx0 簡単に言えば、serialize と同じなんだろう。
異なるアプリに、Ruby のオブジェクトを渡せない
1 などの数値も、"1" みたいな文字列になってしまうのだろう。
すべての型情報が無くなって、文字列になる。
だから、YAML.load とかを、使っているのだろう
今なら、JSON を使う事が多い
異なるアプリに、Ruby のオブジェクトを渡せない
1 などの数値も、"1" みたいな文字列になってしまうのだろう。
すべての型情報が無くなって、文字列になる。
だから、YAML.load とかを、使っているのだろう
今なら、JSON を使う事が多い
708デフォルトの名無しさん (ワッチョイ 1f6a-Mhwj)
2020/08/19(水) 14:06:31.62ID:jdryYSd80 agent.getの時点でcookieの情報って得られてるんですね
709デフォルトの名無しさん (ワッチョイ 1f6a-Mhwj)
2020/08/19(水) 14:20:11.51ID:jdryYSd80 >>705
seleniumはブラウザ操作でmechanizeはhttp解析?みたいな感じですか?
seleniumはブラウザ操作でmechanizeはhttp解析?みたいな感じですか?
710デフォルトの名無しさん (ワッチョイ 1f35-6L5+)
2020/08/19(水) 20:08:35.13ID:JONuvCWb0 >>689
よく調べたわけじゃ無いけど、
CSRF, クロスサイトリクエストフォージェリ、サイバー攻撃の一種対策されてるんじゃないかなぁ。
つまり、何某かのTokenが5chから送られていて、そいつをPOSTしないといけないとか。
5chのサイトからPOSTする時には、<input type=“hidden” value=“Token” name=“CSRF対策”>とかのタグがあって、Submitと共に自動送信される。
よく調べたわけじゃ無いけど、
CSRF, クロスサイトリクエストフォージェリ、サイバー攻撃の一種対策されてるんじゃないかなぁ。
つまり、何某かのTokenが5chから送られていて、そいつをPOSTしないといけないとか。
5chのサイトからPOSTする時には、<input type=“hidden” value=“Token” name=“CSRF対策”>とかのタグがあって、Submitと共に自動送信される。
711700 (ワッチョイ 1f2c-1yu9)
2020/08/19(水) 22:43:49.56ID:w/3evjlx0 プログラム板のtest スレと、その確認画面は、どちらも、mevius.5ch.net だから、
クロスドメインアクセスにはならない
ただ、HTML は本来、1回限りのアクセスで、前後のページには関係がない。
それを関係があるようにするために、ブラウザのクッキーを使って、セッションを結ぶ
こういうセッションがあるものは難しい。
5ch 側は仕様を知っているけど、分析する方は、仕様を知らないから、
ずっと他人のアプリを解析しなければならない
漏れは、解析するのが面倒だから、selenium webdriver を使って、ブラウザにやらす。
ただ、これはブラウザの操作でも、難しい
クッキーが無ければ確認画面が出て、有れば確認画面が出ない。
こういう条件判断をしないといけないから、難しい
Ruby on Rails でも、システムテストには、Capybara を使うけど、
これは、seleniumで、Headless Chrome を使っている
他人のアプリの解析は、HTML ヘッダーなどを分析しないといけないから、かなり難しい。
スクレイピングをやってる香具師で、こういうのを知ってる香具師は、まずいない。
HTMLヘッダーなんて、無数の項目があるから
クロスドメインアクセスにはならない
ただ、HTML は本来、1回限りのアクセスで、前後のページには関係がない。
それを関係があるようにするために、ブラウザのクッキーを使って、セッションを結ぶ
こういうセッションがあるものは難しい。
5ch 側は仕様を知っているけど、分析する方は、仕様を知らないから、
ずっと他人のアプリを解析しなければならない
漏れは、解析するのが面倒だから、selenium webdriver を使って、ブラウザにやらす。
ただ、これはブラウザの操作でも、難しい
クッキーが無ければ確認画面が出て、有れば確認画面が出ない。
こういう条件判断をしないといけないから、難しい
Ruby on Rails でも、システムテストには、Capybara を使うけど、
これは、seleniumで、Headless Chrome を使っている
他人のアプリの解析は、HTML ヘッダーなどを分析しないといけないから、かなり難しい。
スクレイピングをやってる香具師で、こういうのを知ってる香具師は、まずいない。
HTMLヘッダーなんて、無数の項目があるから
712700 (ワッチョイ 1f2c-1yu9)
2020/08/19(水) 22:57:07.95ID:w/3evjlx0 たぶん、Mechanizeは、Nokogiri みたいなものなんだろう
その時点のHTML を取得するだけ。
ちょっとした、GET, POST などは、出来るけど
JavaScript, Ajax で動的にページを作ったものには、対応できないとか
その時点のHTML を取得するだけ。
ちょっとした、GET, POST などは、出来るけど
JavaScript, Ajax で動的にページを作ったものには、対応できないとか
713デフォルトの名無しさん (ワッチョイ 1f35-6L5+)
2020/08/20(木) 06:07:11.62ID:5ApdpCMn0 >>712
MechanizeはServerから受け取ったCookieを返すよ。
だから、POSTしたパラメータに問題があって上手くいかないのだ。
書き込み画面のHTMLからinputタグをscrapingしてhidden属性の付いてるのを探す事が先決。
見つかったらそのname, valueを取り出してPOSTパラメータへセットしてやれば良い。
MechanizeはServerから受け取ったCookieを返すよ。
だから、POSTしたパラメータに問題があって上手くいかないのだ。
書き込み画面のHTMLからinputタグをscrapingしてhidden属性の付いてるのを探す事が先決。
見つかったらそのname, valueを取り出してPOSTパラメータへセットしてやれば良い。
714デフォルトの名無しさん (ワッチョイ 1f35-6L5+)
2020/08/20(木) 06:08:32.79ID:5ApdpCMn0 seleniumが簡単だが、動作が重い。
Mechanizeでがんばれ!
Mechanizeでがんばれ!
715デフォルトの名無しさん (ワッチョイ 1f35-6L5+)
2020/08/20(木) 06:38:17.41ID:5ApdpCMn0 >>687
これは違う!
外部・CP932 → Ruby内部・CP932 → 外部・CP932
が正解。
Ruby内部は、外部・CP932であればCP932だし、UTF-8なら、それに合わせて、Ruby内部・UTF-8なのだ。
これは違う!
外部・CP932 → Ruby内部・CP932 → 外部・CP932
が正解。
Ruby内部は、外部・CP932であればCP932だし、UTF-8なら、それに合わせて、Ruby内部・UTF-8なのだ。
716デフォルトの名無しさん (ワッチョイ 1f35-6L5+)
2020/08/20(木) 06:39:16.98ID:5ApdpCMn0 >>708
agent.cookies
agent.cookies
717デフォルトの名無しさん (ワッチョイ 1f35-6L5+)
2020/08/20(木) 07:05:48.71ID:5ApdpCMn0 大抵のWebサイトのFormは、Formを表示したBrowserからしか、POSTできない様になっている。
その仕組みは、ServerがFormを表示するするHTMLを生成する時に、Tokenを埋め込み、そのTokenが帰って来なかったPOSTを弾くと言うものだ。
TokenはFormが表示されるごとに変更さる。(one time Token)
https://html-coding.co.jp/knowhow/security/csrf/
その仕組みは、ServerがFormを表示するするHTMLを生成する時に、Tokenを埋め込み、そのTokenが帰って来なかったPOSTを弾くと言うものだ。
TokenはFormが表示されるごとに変更さる。(one time Token)
https://html-coding.co.jp/knowhow/security/csrf/
718700 (ワッチョイ 1f2c-1yu9)
2020/08/20(木) 07:13:47.07ID:nWR09WFB0 Rails にもある、CSRF のセキュリティー・トークンとかか?
2つのページが、同じセッションと判別できるような、仕組みを探さないといけない。
他人が作った、アプリを解析するのは大変
2つのページが、同じセッションと判別できるような、仕組みを探さないといけない。
他人が作った、アプリを解析するのは大変
719デフォルトの名無しさん (ワッチョイ 1f35-6L5+)
2020/08/20(木) 07:53:19.33ID:5ApdpCMn0720デフォルトの名無しさん (ワッチョイ 9f14-YpYZ)
2020/08/20(木) 09:46:21.48ID:Myo84Br30 >>715
それも違う。RubyはUnicode対応で作られてる
だから内部もUnicode
Windows側からUTF16で渡された場合はUnicodeで受け取るし
ANSIで渡された場合はUnicodeに変換して処理する
出力する場合はその反対
それも違う。RubyはUnicode対応で作られてる
だから内部もUnicode
Windows側からUTF16で渡された場合はUnicodeで受け取るし
ANSIで渡された場合はUnicodeに変換して処理する
出力する場合はその反対
721デフォルトの名無しさん (ワッチョイ 1f2c-1yu9)
2020/08/20(木) 10:42:37.67ID:nWR09WFB0 Ruby の文字列は、混在できる
ある文字列は、CP932 で、
別の文字列は、UTF-8 とか
何もしなければ、変換されない
ある文字列は、CP932 で、
別の文字列は、UTF-8 とか
何もしなければ、変換されない
722デフォルトの名無しさん (ワッチョイ ff7d-hMmK)
2020/08/20(木) 11:13:11.83ID:FC2EZr4O0 >>719
kan = [
"\xE6\xBC\xA2\xE5\xAD\x97".force_encoding( Encoding::UTF_8 ),
"\x8A\xBF\x8E\x9A".force_encoding( Encoding::CP932 ),
"\xB4\xC1\xBB\xFA".force_encoding( Encoding::EUC_JP ),
"\x1B\x24B4A;z\x1B(B".force_encoding( Encoding::ISO2022_JP )
]
puts kan
kan.combination(2){ |a,b| p a == b }
kan.size.times{|n| puts kan.inject(''){|r,s| r << s.encode(kan[n].encoding) } }
puts kan.map{|s| s.encoding }
kan = [
"\xE6\xBC\xA2\xE5\xAD\x97".force_encoding( Encoding::UTF_8 ),
"\x8A\xBF\x8E\x9A".force_encoding( Encoding::CP932 ),
"\xB4\xC1\xBB\xFA".force_encoding( Encoding::EUC_JP ),
"\x1B\x24B4A;z\x1B(B".force_encoding( Encoding::ISO2022_JP )
]
puts kan
kan.combination(2){ |a,b| p a == b }
kan.size.times{|n| puts kan.inject(''){|r,s| r << s.encode(kan[n].encoding) } }
puts kan.map{|s| s.encoding }
723デフォルトの名無しさん (ワッチョイ 7f01-08ML)
2020/08/20(木) 12:03:56.57ID:tyNv301J0724デフォルトの名無しさん (ワッチョイ 9f33-KILr)
2020/08/20(木) 13:07:43.70ID:UjCnOWKd0725デフォルトの名無しさん (ワッチョイ ff8c-rgzE)
2020/08/20(木) 22:50:29.80ID:Uplnh7Gz0 >>720 変換はせんだろ
726デフォルトの名無しさん (ワッチョイ 1f61-VqLe)
2020/08/21(金) 01:31:14.88ID:SPVvFNrm0 Rubyをしばらく使ってきたが、やっぱり、ブロックの最後がendであることや、
0,1が共に真であること、複数行コメントが書きにくいこと、
構造体の書き方が new Person ではなく、Person.newであること、
Directory関連でワイルドカードを使うと、関連フォルダを全て変数に読み込んでから
動作し始めること、などが使いにくいので、node.jsに乗り換えようかなと思ってる。
Rubyが良い点は、それらの機能は使ったことは無いけど、
・最初から用意されているメソッド群でmethodチェーンが書けること。
・ブロック関数が書けること。
かな。
でも、使ったことがないということは、優先順位が低いと言うことではなかろうか。
0,1が共に真であること、複数行コメントが書きにくいこと、
構造体の書き方が new Person ではなく、Person.newであること、
Directory関連でワイルドカードを使うと、関連フォルダを全て変数に読み込んでから
動作し始めること、などが使いにくいので、node.jsに乗り換えようかなと思ってる。
Rubyが良い点は、それらの機能は使ったことは無いけど、
・最初から用意されているメソッド群でmethodチェーンが書けること。
・ブロック関数が書けること。
かな。
でも、使ったことがないということは、優先順位が低いと言うことではなかろうか。
727デフォルトの名無しさん (ワッチョイ 9f33-KILr)
2020/08/21(金) 10:50:02.63ID:w5e9p4kz0 え。
そんな調子だと何を使ってもダメそう。w
そんな調子だと何を使ってもダメそう。w
728デフォルトの名無しさん (ワッチョイ 1f61-VqLe)
2020/08/21(金) 13:05:57.88ID:SPVvFNrm0 >>727
個人的には、実世界では、能力はかなり高いと評価されているけれど。
個人的には、実世界では、能力はかなり高いと評価されているけれど。
729デフォルトの名無しさん (ワッチョイ 1f2c-1yu9)
2020/08/21(金) 14:15:07.59ID:tDzk/wNZ0 0, 0.0, 空文字列、空配列、空辞書など、
各型に、偽がある言語は、バグる
Ruby の偽は、nil, false だけ
MISRA-C でも、( a ) みたいに、単独の数値型の変数で、真偽値を表すのは禁止されてる。
0 なら偽として使う方法
Ruby で、if ( b ) みたいに書けるのは、nil の時だけ偽だから。
0, 0.0, 空文字列、空配列、空辞書などでも真
または、b がbool 型の場合
各型に、偽がある言語は、バグる
Ruby の偽は、nil, false だけ
MISRA-C でも、( a ) みたいに、単独の数値型の変数で、真偽値を表すのは禁止されてる。
0 なら偽として使う方法
Ruby で、if ( b ) みたいに書けるのは、nil の時だけ偽だから。
0, 0.0, 空文字列、空配列、空辞書などでも真
または、b がbool 型の場合
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- NHK、受信料の未払い世帯に督促強化へ 民事手続きの新組織を設置 差し押さえなどの強制執行も ★2 [1ゲットロボ★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【実況】博衣こよりのえちえち朝こよ🧪 ★2
- 【実況】博衣こよりのえちえち朝こよ🧪
- Full Count、THE ANSWER、ENCOUNT、Hint-Pot… 日本人をホルホル漬けにしてくれる「Creative2」サイトの魅力 [452836546]
- カカロット、腰痛い
- 【!?】高市早苗「靖国神社電撃参拝プラン」浮上!これもう戦争だろ… [481941988]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
