Ruby 初心者スレッド Part 60 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/29(土) 02:01:58.34ID:urVXnFrH
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

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

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

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

逆引きRuby
http://www.namaraii.com/rubytips/
2017/05/17(水) 23:27:09.81ID:SKu/yZ4u
>>197
それを言うならRubyだってMatzが全部決めてる訳じゃないよ
2017/05/17(水) 23:27:10.61ID:y0sg8W2t
調べた

https://ja.wikipedia.org/wiki/C_Sharp 開発者 マイクロソフト
https://ja.wikipedia.org/wiki/Java 開発者 オラクル
2017/05/17(水) 23:27:20.00ID:Noyf0zx+
コンパイラとインタプリタじゃ難易度全然違うしな。
C#の作者なんかはTurbo Pascal,同C,同C++,Delphi,C++Builder,Visual J++,VC#,TypeScriptと、言語もだけどライブラリも設計してる。
ベテラン中のベテラン。
センスも経験も数段上。
2017/05/17(水) 23:28:28.62ID:Noyf0zx+
あ、言語はオリジナルはC#とTypeScriptだけだから、コンパイラとライブラリの設計がほとんどやね。
2017/05/17(水) 23:30:32.17ID:zoT6JpA4
JavaとかC#はチームで作ったものだからね
基本的な部分はチーフがやったとしても全体を作り上げたのはチームだから
チーフがすべての部分についてウルトラスーパーハカーである必要はないんだよ
2017/05/17(水) 23:46:22.36ID:0i9RfNds
Javaは忘れたがC#はアンダース・ヘルスバーグって人が作ったもん、余談だがDelphi作った人だからC#はとてもDelphiくさい
2017/05/17(水) 23:54:49.77ID:q+Jp+PKK
日本人って何かにつけて神とあがめ立てて思考停止する奴が多いよね。なぜそうなのか、どうやったのかとか考えようとしない
2017/05/18(木) 00:02:07.55ID:d+oDyp66
4月に、Win10の、Windows Subsystem for Linux(WSL)の大きな更新があった。
誰か、WSLから、Rubyを使っている人、いる?

居たら、報告して

日経Linux 6月号に、WSL の特集あり
2017/05/18(木) 00:36:47.85ID:HnnQPjdl
>>193
ツイートが連続してて、そのリンクはろうとしたけどめんどくさいので、かわりにこれで。
ttp://i.imgur.com/uCg2V4P.png
だんだん思い出したけど、スーパーハッカーとかスーパープログラマーで調べてたんだった。
ルビーの作者でもスーパープログラマーじゃないなら、どうしていいのかわかんないな。日本にいなさそう。
2017/05/18(木) 00:42:18.01ID:mKKG/7h8
すごいプログラマだけどもスーパープログラマーという方向性の人ではないと思う
なんというか、仮面ライダーとウルトラマンくらい傾向が違う
だいたい正義の味方のだいたい超能力人間なんだけど、まとめると違和感
2017/05/18(木) 01:07:17.85ID:dz2c6KN5
>>206
プロの一流の選手を、ドラフトにひっかかりもしなかった三流が「あの選手は大したことない」と言ってるみたいな感じか。
たまにいるよな、こういうの。
209デフォルトの名無しさん
垢版 |
2017/05/18(木) 02:12:28.50ID:k2/bnmai
こんなレベルの人の集まりかと思わせる雑談だな
これもパートスレの弊害だろ
2017/05/18(木) 02:28:27.52ID:n0l9x2sF
>>205
rbenv で入れて使ってる。
ちょっとしたスクリプト動かすのに便利。
2017/05/18(木) 07:40:51.40ID:HnnQPjdl
>>208
どちらかというと、半分以上は嫉妬心だと思う。つまりやっかみ。
大学の演習で作るようなレベルのものと、世界中のサービスで使われるレベルのものとでは、難易度がはるかに違うのにな。
2017/05/18(木) 07:58:52.21ID:jHW9tOS8
設計技術と実装技術って無関係とは言わずとも別物だけど区別出来ていない人は多い
プログラミングは後者である
2017/05/18(木) 07:58:54.30ID:uGmNBL+O
Matzさんはプログラミング言語の知識は凄いけど最適化周りは今一つってのは共通認識だと思っていたが…昔からずっと「Rubyは遅い」って皆でブーブー言ってたじゃない
でも前者の能力持ってる人は稀有だからやっぱりスーパープログラマーに違いないと思うよ

アニメーターの大塚康生さんが「宮さん(宮崎駿)は描くの早いけど絵は上手くない」って評してるけどMatzはプログラミング言語界の宮崎駿みたいなもんだよ
ある方向は秀でてるけどある方向はそれほどでもない。だけどスーパー○○には違いない
2017/05/18(木) 08:10:53.60ID:jHW9tOS8
Rubyが遅いのはコーディング技術の不足よりシステム設計の制約だと思っていたけど違うのか?
あのシステム設計がJIT化の障害にもなっているみたいだし、Intelのプログラマー陣に書かせたら
爆速に!とはいかないと思うんだが
2017/05/18(木) 08:52:05.04ID:a7kCQWZC
愚直なプログラミングだからドキュメントなしでやってこられたけど、未だにドキュメントが完成してないのは驚きである
2017/05/18(木) 09:02:19.96ID:mKKG/7h8
○○がないなんて非常識で公式やる気なさすぎでウチでは使えないよ、という人たちにスルーされたからこそ今があるのでは
Linuxみたいなもんだw
2017/05/18(木) 09:40:39.90ID:W+cXBvNa
>>213
> だけどスーパー○○には違いない
スーパーマツモト?
218デフォルトの名無しさん
垢版 |
2017/05/18(木) 10:21:34.30ID:k2/bnmai
いまさらかもしれないがプログラマってすごく偏ってるのかな
存在も考え方も
2017/05/18(木) 12:17:40.22ID:nGaj6J50
C#の作者は普通の企業戦士としてクソ有能らしいね
ハッカーやアーキテクトとしての専門的技能を十二分に備えた上で、
マネージャとしてチームを率いて製品を作り上げられる超人
220デフォルトの名無しさん
垢版 |
2017/05/18(木) 15:06:50.15ID:6nNpr9wz
Rubyが普及(ω)したのはドキュメントを書かなかったからだよ
2017/05/19(金) 00:02:38.38ID:JAygot/q
軽々しく他人のことを神だの超人だの言っちゃう人って実力は大したことないのにプライドだけ高いんだなろうな
しかも多分その自覚が無い。自分の能力が大したことないことを自覚できていればそういう表現の仕方はしないはずだし
神格化するより研究し自分の能力を伸ばすことを考えるはず
2017/05/19(金) 01:30:43.67ID:4+vIujWP
一流を認められない人に成長はない
2017/05/19(金) 01:45:17.48ID:ge9DZPXJ
よっぽど何かコンプレックスあるんだろうねこの人

ああ、この人ってのはこのスレに何日も同じようなことグチグチグチグチとえんえん書き続けてる人ね
224デフォルトの名無しさん
垢版 |
2017/05/19(金) 06:30:50.15ID:eboDhNue
矛盾を含んだ文章ってスパゲッティコードみたいだよね
225デフォルトの名無しさん
垢版 |
2017/05/19(金) 06:33:50.64ID:eboDhNue
そうだ
Rubyが好きなのは
Pythonみたいにインデント強制されないし
Javaみたいに大文字小文字まで強制されないからなんだ
2017/05/19(金) 08:24:53.47ID:wMmgU2C4
>>206
なんで時系列が逆順なんだよw
2chでも古い書き込みが上で新しいほど下になってるだろ。
そのほうが自然なんだからそうしろ

>>223
>よっぽど何かコンプレックスあるんだろうねこの人
成功した人に嫉妬してる暇があれば自分で何か作ればいいのに、そうする人は少ない
2017/05/19(金) 08:29:07.55ID:ax6ergs3
自分で何もできないから他人に嫉妬する、まあ俺のことなんですけどね
2017/05/19(金) 15:13:31.24ID:4aXBqFa1
>>225
Javaのは強制でないだろ
2017/05/19(金) 23:21:36.00ID:vjfQYplO
実際に結果を出した人は
その結果の現実における実在性から人生に安定感なり心の余裕が出てくるように見えますよね。
2017/05/19(金) 23:29:01.51ID:JAygot/q
本当の天才や神もたまにいるけどきわめて稀。ほとんどの場合は普通の能ある人
大抵の場合聞き上手&話し上手でコミュ力が高いのと論理的な思考・判断が出来る

嫉妬している暇があるなら成功している人を分析した方が建設的だし結果を出す近道だろう
2017/05/19(金) 23:33:19.60ID:ivu0jzcH
>>223
キチガイに絡まれたスレは悲惨だな
232デフォルトの名無しさん
垢版 |
2017/05/20(土) 04:52:57.18ID:Gofa0r8M
キチガイか・・・
この言葉の取り方も人それぞれだろうけど。

もっと適当な新しい言葉はないものかね
ネットコミュニティで使えるような・・・
粘着、凝り固まった、共鳴しがたい論理、複数人を装うタイプ
ついでに嫉妬、妬みもいれとこか
そんな人をいう言葉
233デフォルトの名無しさん
垢版 |
2017/05/20(土) 05:05:32.15ID:Gofa0r8M
そんなことより
誰かマジで教えてくれないか

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

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

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

もういちど書くけど
RoRじゃなくて素のRubyで
一番シンプルにsinatraとかフレームワークを使わずに
herokuでindex.rbをトップページに表示したい
234デフォルトの名無しさん
垢版 |
2017/05/20(土) 05:11:20.26ID:Gofa0r8M
>>233
これだけじゃ意味が伝わらないかもしれないから
やってることをわかってもらえるようなgithubを
24時間以内に用意するわ
なんせrubyもgithubもherokuもやり始めたばかりの素人なもので
ちょっとしたことでも時間がかかるので24時間以内な
235デフォルトの名無しさん
垢版 |
2017/05/20(土) 05:17:48.16ID:Q4Q/cnZ9
そして一年が過ぎた・・・
2017/05/20(土) 05:46:34.75ID:WmFfeyqJ
chef, vagrant から、VirtualBox で、Linux

それか、4月に、Win10の、
Windows Subsystem for Linux(WSL)の大きな更新があったから、WSLでするとか?
237デフォルトの名無しさん
垢版 |
2017/05/20(土) 06:58:20.85ID:S1Z+OH1L
IniFile使って初期化ファイルに"a\\b\\c\\r\\z"と書き込んで読み出してみたら
"a\\b\\c\r\\z"になっててハマったという愚痴
2017/05/20(土) 09:13:37.26ID:4bKGcQHk
アイデアをかっぱらうと成功者になれる。
2017/05/20(土) 17:53:17.49ID:5kEYc3L0
>>233
Qiita記事漁ってたらそれっぽいの見つけたけど
やりたい事ってこういう事?
Herokuで単純なrubyスクリプトを定期的に実行する
http://qiita.com/kasei-san/items/909f17c2c42b7e3a8489
2017/05/20(土) 18:12:45.66ID:abd2HxZJ
>>233
PythonかNode.jsでAWS Lambdaおすすめ
241デフォルトの名無しさん
垢版 |
2017/05/20(土) 19:00:59.25ID:Gofa0r8M
>>239
それは見てなかった
でも最初の設定のgithub元はRailsのようだ
もっと単純にやりたい
どっちかというとこれに近いと思う
http://qiita.com/higuma/items/9baac9e97eeb862ef64e
これどおりにしても動作しなかったけど。
242デフォルトの名無しさん
垢版 |
2017/05/20(土) 19:02:15.16ID:Gofa0r8M
>>240
先のステップの課題として覚えておくわ
243デフォルトの名無しさん
垢版 |
2017/05/20(土) 22:54:23.09ID:Gofa0r8M
233の続き
誰かが間違いを指摘してくれることに望みをかけてここに公開する
244のqiitaを参考にしているのだけど
やったこと
githubは
https://github.com/sasisu/aiue01
これからherokuの方へdeploy
そうすると
https://aiue01.herokuapp.com/
このAplication errorのページになる
herokuはheroku/rubyのBuildpacksを適用

何かが足りないか間違えてるか
それとも全く勘違いなことをしているのか
わからない 👀
Rock54: Caution(BBR-MD5:b95868ef2c0ed5e765a4d10ada4cf289)
2017/05/21(日) 01:32:34.60ID:Fqssqcja
>>240
Pythonスレで言いなよ
2017/05/21(日) 02:01:38.54ID:1evlh7eH
Herokuの説明書を読んだら?

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

まず、どこでエラーが起きたのか、切り分ける。
それがデバッグの基本
246デフォルトの名無しさん
垢版 |
2017/05/21(日) 07:01:26.49ID:kt8opZkV
>>245
まぁな
247デフォルトの名無しさん
垢版 |
2017/05/21(日) 21:55:20.21ID:kt8opZkV
24時間経っても>>243の応答が無いのでリンク先は削除しておきます

これからレスをしてもらってもすぐには見れないと思うので。
2017/05/22(月) 08:26:38.46ID:oFkfOiZj
>>206
これはScalaの有名な人だね。調子こいたことを言ってMatzにたしなめられることが複数回あったようだから、逆恨みしてるんだろう。

なお有名な言語の作者たちは互いに尊敬しあってるよ。一流ってそういうもの。
2017/05/22(月) 21:31:51.11ID:fASqKLCq
1.8.xの頃の拡張ライブラリを最近の2.x.xで使えるように改造したいのですが
Rubyの各バージョン間の拡張ライブラリのインターフェイスの差異がまとまっている資料とかないですかね?
2017/05/22(月) 23:55:24.58ID:ENAWgACr
『Rubyレシピブック 第3版 303の技』という本を書店に残っているのを偶然見つけたのですが
Ruby1.8〜1.9、JRuby1.5を対象にしているとあり
現行の2.2系、2.3系と互換性があるのかが分からず購入を迷っています

またもしあれば1.8系、1.9系、2.xx系以降の互換性や追加機能をまとめたサイトなどがあれば教えて欲しいです
2017/05/23(火) 00:15:49.33ID:9lq+WTHz
プロジェクトマネージャーとしては絶望的にセンスが無いとは思ったことはある。
2017/05/23(火) 01:52:19.84ID:OOs1u3xZ
Ruby2.0なら使えるんだけどね
それ以前のは「どうして使えないのか」「どこを変えればいいのか」の手間と情報の加減上全く勧めない
問題は2.xの逆引きレシピ本のいいのが現行では無いことだが
253デフォルトの名無しさん
垢版 |
2017/05/23(火) 05:16:29.68ID:ZEoEO5ey
レシピ本には、そんな長いコードは載っていないから、
動かなければ、自分ですぐに修正できるのでは?

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

Railsの1日後とか、良いよな。
1.days.from_now
2017/05/23(火) 06:50:04.85ID:qRgUoCZd
>>248
すいませんが若気のいたりということで大目にみてもらえませんか?
日本のScala界では貴重な人材なので。

それよりMatzの講演について話そうぜ!
http://srknr.hatenablog.com/entry/2017/05/20/235839
2017/05/23(火) 08:14:22.26ID:Mb7W8Mqo
>>252
やっぱり2.x系のもので無いと互換性が厳しいですか・・・・・・
新しいレシピ本が出るまで見送りたいと思います
2017/05/23(火) 16:42:43.02ID:xunAucQT
Ruby で文字列が英数字とハイフンのみで構成されていることの確認 (バリデーション) を正規表現を使わずに実現するのに、
string.delete("a-zA-Z0-9-").empty?
っていうやり方でとりあえず間に合わせてるんだけど、他にスマートな書き方ある?
2017/05/23(火) 16:55:02.24ID:UVgxThtR
正規表現を使わない理由がわからないと
何言ってもそれはなしでと言われそう
2017/05/23(火) 16:57:40.08ID:nu8Noumz
>>256
ぱっとリファレンス見てきたけどcountに条件逆で渡した上で0か調べるってどうかな
2017/05/23(火) 16:59:58.40ID:nu8Noumz
ascii_only?ってメソッドあるけど完璧な動作ではないよなぁ多分
2017/05/23(火) 17:12:57.96ID:/kxvtD+k
>>258
おお、情報ありがとう!
こんな感じかな。
たしかに処理的にだいぶ分かりやすくなったかも。

string.count("^a-zA-Z0-9-").zero?
2017/05/23(火) 17:22:10.11ID:/kxvtD+k
>>257
どうしても正規表現を使わないと実現出来ない処理でもないんじゃないかと思ったのと、セキュリティ的にチェック漏れが怖いっていうのが理由かな。
正規表現に詳しくて、間違いない自信があれば正規表現でも良いんだけど、俺にはその自信がない。。
2017/05/23(火) 17:25:33.79ID:/kxvtD+k
>>259
たしかに ascii_only? だとやりたいことに近いけど、アンダーバーとかその他記号も OK になっちゃって、希望する判定基準とは少し違ってきてしまうんだよね。
2017/05/23(火) 17:28:08.27ID:UVgxThtR
>>261
deleteの独自ルールも不安だな
どっちにしろちゃんとテストコード書いとけとしか
2017/05/23(火) 17:43:19.80ID:OOs1u3xZ
「ヒットしてほしい正規表現にマッチするかどうか」で書かれてたほうがよっぽど漏れがないし間違いがないしコードとしても明瞭で安心すると思うがね
countの引数の仕様は知ってる? あれってtrというUNIXコマンドと一緒なんだよ
アレに頼って長々書かれるよりは正規表現のほうがいいな俺は
2017/05/23(火) 18:18:44.65ID:/xgNS39l
OK な文字列以外はどんな含まれ方をしていようと一概に弾くように、delete とか count で OK な文字列だけを列挙する指定の仕方を考えたんだけど、よく考えるとそれでも抜けがある可能性は依然として否定できないわな…
正規表現を使うか使わないかは宗教的な話になりそうだけど、テストコードを書けっていうのはまさしくその通りだわ。
266デフォルトの名無しさん
垢版 |
2017/05/23(火) 23:55:10.87ID:ZEoEO5ey
JavaScript では正規表現だな

2回以上、同じ正規表現を使うなら、
コンパイルを1回だけして、使いまわすことで、やや速くなる
2017/05/24(水) 00:37:22.71ID:NrN6swuV
evenArry, oddArry = [], []
ARGV.each_with_index{|arg, i|
evenArry.push(arg) if i.even?
oddArry.push(arg) if i.odd?
}
evenArry.zip(oddArry){|x, y| print [x,y] } if evenArry.size < oddArry.size
oddArry.zip(evenArry){|y, x| print [x,y] } if evenArry.size >= oddArry.size
puts

このコード、Pythonのzip関数は短い方に合わせてくれるのに、rubyのzipメソッドが長い方に合わせて、
短い方の不足分に勝手にnil入れるから、長さ比べて短い方でzipメソッド使うようにしてるんだけど、nilを省くメソッドあったら一行浮く。
何か良いメソッド知りませんか?
2017/05/24(水) 01:20:48.51ID:n3q9H30C
>ruby tes.rb 11 22 33 44 55 66 77
["11", "22"]["33", "44"]["55", "66"]
という出力をしてほしいだけなら
ARGV.each_slice(2).take_while{|e| e.size == 2}.each{|a| print a}
2017/05/24(水) 03:39:14.16ID:oHzoLy1g
>>267
compact
2017/05/24(水) 09:26:39.05ID:Qxrl1z8p
>>268
おお!
次世代言語スレで紹介して貰ったやつのエラー出ない版ですね?
そっちが動くならそっちが良いですね。

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

両方コードで試してみます。
ありがとうございました。
2017/05/25(木) 13:14:51.22ID:LTbJxhuY
pg gemをbundle installするとこける
gem install では通るんだけどなんでかな
2017/05/27(土) 04:40:36.04ID:SdHoYqqp
rubyからWin32APIのGetLastErrorを使用したいんだけどエラーが出てしまう。
どうしたらいいか教えてください。。
module WIN32API
extend Fiddle::Importer
dlload 'C:\\Windows\\System32\\user32.dll'
extern 'short GetKeyState(int)' #こっちはOK
extern 'char* GetLastError()' #こっちはNG
end

--以下エラー
cannot find the function: GetLastError() (Fiddle::DLError)
273デフォルトの名無しさん
垢版 |
2017/05/27(土) 05:15:11.73ID:6GQ16ypm
「user32.dll getlasterror Win32API」で検索!

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

DllImport("kernel32.dll", SetLastError = true)
2017/05/27(土) 06:45:17.62ID:SdHoYqqp
>>273
早速ありがとうございました!
無事読み込めました。。。
参考までに修正版のコードはこちらです。

module WIN32API
extend Fiddle::Importer
dlload 'user32.dll','kernel32.dll'
include Fiddle::Win32Types #DWORDとか使えるようにする
include Fiddle::BasicTypes
extern 'DWORD GetLastError()'
end
WIN32API.GetLastError
2017/05/27(土) 10:22:39.80ID:SdHoYqqp
すみませんもう一つ教えてください。
SendInputを使って最終的にはマウス入力/キーボード入力を行おうと考えていますが
うまくいきません。何がおかしいのでしょうか。。
---
module WIN32API
extend Fiddle::Importer
dlload 'user32.dll','kernel32.dll'
include Fiddle::Win32Types
extern 'int SendInput(int,void* ,int)'
extern 'DWORD GetLastError()'
MOUSEINPUT=struct(["DWORD type","int dx","int dy","DWORD mouseData","DWORD dwFlags","DWORD time","ulong dwExtraInfo"])
end
module SendKey
INPUT_MOUSE = 0x00000000
MOUSEEVENTF_ABSOLUTE = 0x00008000
MOUSEEVENTF_MOVE = 0x00000001
end
input = WIN32API::MOUSEINPUT.malloc
input.type=SendKey::INPUT_MOUSE
input.dx=500
input.dy=500
input.dwFlags=SendKey::MOUSEEVENTF_ABSOLUTE|SendKey::MOUSEEVENTF_MOVE
p WIN32API.SendInput(1,input,28) #出力:0 備考:sizeof(MOUSEINPUT)=28
p WIN32API.GetLastError #出力:87(パラメータが間違っています。)
-----
2017/05/27(土) 10:27:11.94ID:67vlwxuq
今回の件と関係あるかはともかくWIN32APIってもう非推奨じゃなかったっけ?
2017/05/27(土) 12:01:00.86ID:pz2epJPP
rubyは32bit版なのかな?
2017/05/27(土) 12:46:05.61ID:SdHoYqqp
Win32API非推奨なんですね。。
ググってみた感じいまはWSHSHELLとかでしょうか?
ちなみにRubyは64bit版を使ってました。。。
2017/05/27(土) 13:10:51.88ID:reRwAhMh
非推奨とか言い出したらそもそもWinでRuby自体がアウトだから気にしなくてよい
2017/05/27(土) 13:21:59.20ID:olQh0zw8
>>272 >>274
そもそもGetLastErrorは最後に呼んだAPIのエラーだから
rubyみたいに前後の行の間で何呼ばれるかわからん環境でまともなエラーとれるとは思えない
2017/05/27(土) 14:00:44.16ID:4VVIqOhp
意図するライブラリがロードされていない or 意図しない関数がコールされているんじゃないか?

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

あとWindowsAPIを叩いて作業するならWindowsSDKはほぼ必須
2017/05/27(土) 15:09:14.53ID:6GQ16ypm
>p WIN32API.GetLastError #出力:87(パラメータが間違っています。)

カッコを付ければ?
p WIN32API.GetLastError()
2017/05/27(土) 15:15:15.96ID:pz2epJPP
>>278
64bitだと構造体のサイズが違うよ
284デフォルトの名無しさん
垢版 |
2017/05/28(日) 10:53:17.15ID:pzrDxs4u
case文でgetsを使って入力を受け付けたいとき日本語ってどうするんです?
hand = gets.chomp
case = hand
when "あ"
puts "グー”
.
.
.
else
puts "反則"
end
例えばこんな感じの簡単な文だけど
"あ"の中身の部分を1にしたり
そもそも .to_iにして数値にしたりすると
ちゃんと働いてくれるから
そもそも日本語入力はなにかいるんじゃないか、もしくはできないんじゃないか
と思っていて、検索してもわからんのです
2017/05/28(日) 11:23:43.03ID:eyTJlEl0
case = handってなんだ
2017/05/28(日) 11:38:33.26ID:nOYRngqN
print "input anything and Enter> "
input = gets.chomp
puts "default file encoding:"+ __ENCODING__.to_s
puts "actual external encoding: " + input.encoding.to_s

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

ということで文字列のエンコーディングが違うので別物だと思われてる
Windows-31Jの「あ」とUTF-8の「あ」は比較上別物になる
irb> str = "にゃー"
=> "にゃー"
irb> str.encode("Windows-31J") == str.encode("UTF-8")
=> false
「Rubyの文字エンコーディング」について調べて自分で理解するんだ
これはここでちらっと「おまじない」を述べても逆に泥沼になるぞw
287デフォルトの名無しさん
垢版 |
2017/05/28(日) 11:47:56.51ID:pzrDxs4u
>>285
ごめん=はいらんね
まちがえて打ってしまった。それは元の方では書いてない
>>286
よくわかんないけど、とりあえず先に進むよ。
逆に今、文字エンコーディングについて調べても理解出来る自信がないし、
おまじない、もいづれ出てくるかもしれない。
わいみたいな本物初心者にも答えてくれて
ふたりともありがとう。
288デフォルトの名無しさん
垢版 |
2017/05/28(日) 11:52:43.05ID:pzrDxs4u
しまった「いづれ」ではなくて「いずれ」だった、なんかこういうミスのほうが
恥ずかしい・・・
しかし文字エンコーディングの件で気になったけど
それは文字コードを指定している場合でも・・・?
なんか最初にそれこそ、そこをおまじないと言っているのかもしれない
けど、# coding: utf-8
みたいなの書いとけって言われるじゃない。
文字化けしないようにとか、そんな感じで。
2017/05/28(日) 11:55:12.07ID:rKaPw5GE
狭義的にはスクリプトファイルのエンコーディングと外部入力文字列のエンコーディングを揃えないといかん
STDINのエンコーディングをスクリプトファイルのエンコーディングに合わせるのが楽だと思う
ruby -E UTF-8 hoge.rbでスクリプト起動しろ
getsで入ってくる文字列が全部UTF-8になる
290デフォルトの名無しさん
垢版 |
2017/05/28(日) 12:39:36.05ID:pzrDxs4u
>>289
ちょっとわかんなかった。
色々言っていることの推測はしたんだけど、
そんなファイルねーよ!からはじまり
そんなエンコーディングネーム知らんといわれ、ランタイムエラーといわれ
あ、コマンドプロンプトって文字コードシフトJISとかいうのだから
あかんのかな?って思って
utf-8にしてみたけど、判定がelseに行くのだった。
あははは。
わざわざありがとう。でも、私初心者だからだめみたいだぜ。
おまえなんかwhile文の勉強でもしてなさいってことだと思うわ。
2017/05/28(日) 12:55:41.60ID:cMT8Sa9/
コマンドプロンプトなら"chcp 65001"しないと駄目なんじゃない?
ちょっと手許にwindows機ないからわかんないけど
2017/05/28(日) 13:34:17.41ID:mQ0E20+1
cmd exe の chcp65001 はバグがあって使い物にならない
2017/05/28(日) 15:22:51.06ID:aUadI2mt
VSCode使っている人いない?

デバッグモードでのgetsのって値入力処理はどうすればいいのか分からなくて困っている。
2017/05/28(日) 16:49:16.07ID:rKaPw5GE
STDIN/STDOUTのねじ曲げは現行のIDEでVSCode「でだけ」できない
素のRubyではできるのにね

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

puts "You are a cat" if gets.chomp == "にゃーん".encode("Windows-31J")
2017/05/28(日) 17:18:28.96ID:5PeSitGp
pythonのやつをパクるしかない
2017/05/28(日) 17:40:48.08ID:MqtJ47ff
極薄view用意して、そこだけ手動でテストすればいいよ
2017/05/28(日) 18:57:58.47ID:QwjzxVOm
コマンドプロンプトは、Windows-31J, CP932 か

PowerShell, PowerShell_ise は、UTF-8 じゃないの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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