Ruby 初心者スレッド Part 66

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 2a2c-RM0q)
垢版 |
2020/01/04(土) 01:15:34.30ID:X7t3Qsuc0
プログラミング言語 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
2020/08/20(木) 09:46:21.48ID:Myo84Br30
>>715
それも違う。RubyはUnicode対応で作られてる
だから内部もUnicode
Windows側からUTF16で渡された場合はUnicodeで受け取るし
ANSIで渡された場合はUnicodeに変換して処理する
出力する場合はその反対
2020/08/20(木) 10:42:37.67ID:nWR09WFB0
Ruby の文字列は、混在できる

ある文字列は、CP932 で、
別の文字列は、UTF-8 とか

何もしなければ、変換されない
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 }
2020/08/20(木) 12:03:56.57ID:tyNv301J0
>>715,720
君たちまずマニュアルを読もうか
https://docs.ruby-lang.org/en/2.7.0/Encoding.html
2020/08/20(木) 13:07:43.70ID:UjCnOWKd0
>>718
解析が大変かどうかはものによる。
セッションIDベースのWebアプリならともかく、ログインなしの掲示板なら大したことはないやろ。
2020/08/20(木) 22:50:29.80ID:Uplnh7Gz0
>>720 変換はせんだろ
2020/08/21(金) 01:31:14.88ID:SPVvFNrm0
Rubyをしばらく使ってきたが、やっぱり、ブロックの最後がendであることや、
0,1が共に真であること、複数行コメントが書きにくいこと、
構造体の書き方が new Person ではなく、Person.newであること、
Directory関連でワイルドカードを使うと、関連フォルダを全て変数に読み込んでから
動作し始めること、などが使いにくいので、node.jsに乗り換えようかなと思ってる。
Rubyが良い点は、それらの機能は使ったことは無いけど、
・最初から用意されているメソッド群でmethodチェーンが書けること。
・ブロック関数が書けること。
かな。
でも、使ったことがないということは、優先順位が低いと言うことではなかろうか。
2020/08/21(金) 10:50:02.63ID:w5e9p4kz0
え。
そんな調子だと何を使ってもダメそう。w
2020/08/21(金) 13:05:57.88ID:SPVvFNrm0
>>727
個人的には、実世界では、能力はかなり高いと評価されているけれど。
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 型の場合
730デフォルトの名無しさん (エムゾネ FF9f-fHWV)
垢版 |
2020/08/21(金) 14:31:29.79ID:2LaXNW9iF
nil == false
は false
2020/08/21(金) 14:33:13.81ID:w5e9p4kz0
>>728
相対評価は、まわりのレベルがわからんので、なんとも。
元コメから判断すると、周辺まるごと低いのかな?と思わざるを得ない。w

まあ、たまたま自分が使ってない特定機能をアレコレ言うのはアホに見えるのはたしか。
2020/08/21(金) 14:35:00.79ID:w5e9p4kz0
>>729
型のないRubyでそんなことを言われても。w
そんなの、たいした違いじゃないよ?
2020/08/21(金) 14:49:57.72ID:SPVvFNrm0
>>731
そんなことない。
非常に上層のごく一部の人しか入れないところだと言われている。
734デフォルトの名無しさん (エムゾネ FF9f-fHWV)
垢版 |
2020/08/21(金) 15:22:52.16ID:2LaXNW9iF
スキンのひとか
735デフォルトの名無しさん (JP 0H7f-08ol)
垢版 |
2020/08/21(金) 15:35:51.23ID:dYZcDjdTH
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

VM + ASM を書いた (C#, DX) * x86 ではない!
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ

VM + ASM のダウンロード
ttp://up.x0000.net/files/TSimulang.zip
2020/08/22(土) 00:05:39.01ID:cH1OO8njr
「実世界では、能力はかなり高いと評価されている」っていう言い回しが最高に知性を感じないんですけど
いや煽りとかじゃなくマジで
2020/08/22(土) 00:13:16.02ID:rn2pygew0
異世界では無双している
2020/08/22(土) 02:33:00.24ID:orN/hav20
>>736
非常に上層のごく一部の人しか入れないんだぞ!
739デフォルトの名無しさん (ワッチョイ ff8c-IEoI)
垢版 |
2020/08/22(土) 08:20:46.05ID:lfF/bqLu0
非情に上層のごく一部の人しか入れないんだぞ!
2020/08/22(土) 08:46:37.28ID:j5SL9Fsb0
>>736
あんまりちゃんと人と会話したりまともな本とかは読んだことがなくて、丁寧にかつちょっとカッコつけて話そうとしたらラノベとかで覚えた変な言い回ししか出てこなかった、と予想してみる
741デフォルトの名無しさん (ワッチョイ ffbb-ZIaG)
垢版 |
2020/08/22(土) 15:31:25.70ID:rjSk5doP0
まあ、能力の高いっていうそこのお方は、Youtubeで流行ってる学歴ジャンケンでもして能力を示した方がいいんじゃん?
学歴だけが能力を示すものじゃないにしても、能力がどうの言い張るだけよりずっとマシだし、おおよその実力が周りの人も推定できるだろうからいいぜ!
2020/09/01(火) 22:10:17.03ID:vLz2GEqc0
Rubyは、node.jsに比べて、ファイル出力のメソッド名が短いので楽。
fp=File.open("filename","w");
fp.print( "nanigshi=#{変数名}\n" );
みたいに書ける。node.jsだと、
fd = fs.openSync("filename", "w");
fs.writeSync(fd, `nanigshi=${変数名}\n` );
となり、キーワードが長い。逆引用符`が打ち込みにくいという
欠点も有る。
2020/09/01(火) 22:45:30.43ID:Bhx0z62Fr
US配列なら楽だぞ
2020/09/01(火) 22:58:40.10ID:JyDU62SB0
>>742
「Sync」をあえて表現してるんやろ。
ポリシーの問題。
2020/09/01(火) 23:33:04.32ID:knLE24Nq0
ブロックと;省略で
File.open("filename","w") { |file| puts "nanigshi=#{変数名}" )
みたいに書くのがRubyっぽくない?
2020/09/02(水) 02:02:43.13ID:0/6Ab1gT0
クローズしちゃうだろ
2020/09/02(水) 15:16:44.13ID:Wngy4TOD0
>>744
でも、コンピュータ黎明期の非常に古くから open, write は、同期的だったの
だから、互換性を考えれば、逆さまにしたのは問題。
2020/09/02(水) 15:21:09.21ID:Wngy4TOD0
open, writeといえば、Unix/Linux/Windows/Macでも動作がほぼ同じな
非常に大事なもので、特にUnix/Linuxでは、「全てがファイル」という設計
思想であり、その根幹を成すのが、これらの関数で、あらゆる概念の基礎と
なっているので、その動作を変更するのはあらゆる場所に悪影響を及ぼす。
Unix系では、OSの動作の90%以上が、open, writeに依存した設計に
なっているといってもかごんでは無いくらい、基礎中の基礎。
その動作を変更することは、自然法則を変更するくらい驚天動地の試み。
重力が引力ではなく斥力になってしまうくらいで、太陽も惑星も存在し得ない
位の結果となる。
2020/09/02(水) 15:57:35.42ID:iCfAZPhu0
>>747
Cとの互換性がー、とか非同期重視のアグレッシブなNode.jsに言うの?w
2020/09/02(水) 16:53:35.95ID:X9xcF9vI0
>>748
でもネットワークはファイルじゃないんですよ
全てがファイルという設計と言っても
その程度のものなんです。
2020/09/02(水) 17:55:27.42ID:Wngy4TOD0
>>749
Cとの互換性というより、UnixやWindowsなどのあらゆるOSの基礎の部分との
互換性。
それくらい、open, writeは、OSの基礎に根ざしていて、勝手に働きを変えるべき
じゃない。
働きを変えたいなら、変えた方の関数の名前を少し変えるべき。
それで十分なのに、名前と働きをさかさまにしてはいけなかった。
2020/09/02(水) 18:19:28.61ID:0/6Ab1gT0
rubyInstallerでruby 2.7入れたんだがirbのレスポンスがめちゃくちゃ遅くて
かなりゆっくりキーボード入力しても入力を取りこぼすんだけど
速くする方法ありませんか?
2020/09/02(水) 21:47:08.53ID:iCfAZPhu0
>>751
いちいちAsyncをつけろというのか?
Node.jsのポリシーにあわんやろ。
郷に入っては郷に従え。

オレも知らんけど。w
754デフォルトの名無しさん (アウウィフ FF8b-th+2)
垢版 |
2020/09/03(木) 10:05:34.13ID:DK3Ul6vKF
Sync.js
755デフォルトの名無しさん (ワッチョイ 272c-3NJ+)
垢版 |
2020/09/04(金) 00:42:11.02ID:Wl7qFIBb0
Node.js は非同期が基本。
Windows では、50ms 以上掛かるものは、非同期にするのが基本

>>752
irb とか、そんな面倒なものは使わない

VSCode の拡張機能・Code Runner(Run Code)で、
ファイル全体、または、コード片を選択して実行できる
2020/09/04(金) 03:38:08.87ID:Akgzavid0
VSCodeでCode Runnerね。オーケーオーケー
2020/09/04(金) 05:36:12.08ID:ovAJuzA/0
穴ほって埋めるやつか
2020/09/04(金) 10:18:21.30ID:icCvRHhg0
平安京エイリアンか。
759デフォルトの名無しさん (ワッチョイ 272c-3NJ+)
垢版 |
2020/09/05(土) 22:17:01.41ID:dAk5cbFF0
エンジニアチャンネル粟島、9/4

プログラミングでYouTube動画の編集作業を自動化する
https://www.youtube.com/watch?v=2nDkNHeCKs4

プログラミングで、自動的に無音部分をカットして、動画をつなげる。
Python で作ってる

皆、何時間も掛かって編集しているから、
誰か、Ruby で作って、公開しろ

粟島に、スーパー・プログラマーの称号を独り占めさせるのは、癪にさわる
760デフォルトの名無しさん (アウウィフ FF8b-th+2)
垢版 |
2020/09/06(日) 14:32:01.97ID:pKWvrGW4F
ffmpeg 呼んでるだけだから ruby で同じことすればいいだけ
そもそも youtube の web 上の作業を自動化するのかと思ったらそうでもないし
誤解を招く
2020/09/07(月) 11:58:27.72ID:IF51aHwX0
粟島に、敵対心むき出しの、凡才プログラマーKBOY に教えてやったら?

エンジニアチャンネル粟島

【検証】現役プログラマーは30万円の案件を何時間で出来るのか?
https://www.youtube.com/watch?v=rt_X6n9oWa4

YouTube API で、指定条件に当てはまる、動画を集める(filtering)のを、Ruby で、1時間で作った。
つまり、時給30万円!

これも最終的に、30人が応募して、数千円になったらしいがw
762デフォルトの名無しさん (エムゾネ FF7f-j7FC)
垢版 |
2020/09/07(月) 12:03:06.35ID:K0kNn/CsF
闇サイトのバイトか
763デフォルトの名無しさん (ワッチョイ 4b2c-8GNv)
垢版 |
2020/09/23(水) 01:34:43.74ID:vUEpR4nB0
エンジニアチャンネル・小川

【悪用厳禁】Amazonの価格を監視するシステムを作ってみた
https://www.youtube.com/watch?v=Gr6FJUOfMHc

Amazon のAPI を使って、価格を監視して、LINE へ通知する
2020/09/28(月) 08:01:27.35ID:ZnjqOblj0
このサイトIRB代わりに使ってたんですがバージョン2.1.5とめっちゃ古いです
ライブコーディング?機能のついた同種のサイトってないですか
http://fatiherikli.github.io/fil/#eyJwYXRoIjoiSVJCLnJiIiwic291cmNlIjoicCBSVUJZX1ZFUlNJT04ifQ==
765デフォルトの名無しさん (ワッチョイ d32c-G8Sl)
垢版 |
2020/10/01(木) 08:39:12.41ID:theiHz1p0
JSON ファイルの中身が、下のようなユニコード・コードポイントの表示が多くて、読めない

{{\u30ab\u30ec\u30f3\u30c0\u30fc 10\u6708}}

ファイルを丸ごと読めるように、変換する方法を教えて!
2020/10/01(木) 08:49:16.51ID:theiHz1p0
>>764
paiza.jp は比較的、新しいバージョンだったと思う

puts RUBY_VERSION
と入力してみ
2020/10/01(木) 21:03:03.13ID:BMjHKKQ5r
>>764
そもそものopalのサイト使えば?
https://opalrb.com/try/

>>765
標準出力に出力すれば?
768765 (ワッチョイ d32c-G8Sl)
垢版 |
2020/10/01(木) 22:25:46.66ID:theiHz1p0
JSON ファイルをcat しても、変換されませんでした!

普通の英数字と、\u6708 みたいな文字が混じっているファイルです
769デフォルトの名無しさん (ラクッペペ MM7f-0zgZ)
垢版 |
2020/10/02(金) 09:07:20.78ID:ugOoTtJuM
matlabでのfiltfilt()のように、ゼロ位相デジタルフィルター処理ができる関数はなんでしょうか
770デフォルトの名無しさん (ラクッペペ MM7f-0zgZ)
垢版 |
2020/10/02(金) 11:29:50.32ID:36KHjBX6M
すみませんでした
771765 (ワッチョイ d32c-IT45)
垢版 |
2020/10/03(土) 07:39:23.69ID:/wA+nWqo0
c@at input.json | pe@rl -@Xpne 's/\\u([0-9a-fA-F]{4})/c@hr(h@ex($1))/eg'
(投稿できないので、@を入れました)
で、日本語で表示されました!

これを、Ruby では、どう書きますか?
正規表現で、\u6708 みたいな文字を、どう変換するの?
2020/10/03(土) 09:17:06.76ID:DiO6Np8S0
Rubyだと、正規表現にマッチした部分を引数にして関数に渡してくれる
メソッドが有る筈だから、それを使えば出来るはず。
773デフォルトの名無しさん (ワッチョイ b37c-gW4a)
垢版 |
2020/10/03(土) 09:27:06.27ID:F7oAx4CC0
-Ks -Ke -Ku があるから -Kw もあるはずだろう(驚き最小)
2020/10/03(土) 09:32:00.87ID:DiO6Np8S0
>>771
以下のようにすれば、\uXXXX の部分を unicode コードとして文字に直した後のテキストが
標準出力に出力されるのではないかと思われる。
なお、試して無いので実際に動くかどうかは分からない。
$1.to_i(16)は、$1 に入っている文字列を 16進数とみなして整数値に直しているつもり。
x.chr は、数値 x を文字コードとして対応する文字に直しているつもり。
gsub は、正規表現に合致した部分を後続のブロックの中の $1 に入れて、結果に
置換しているつもり。

[test.rb]

strJson = JSONを読み込んだ文字列;

print( strJson.gsub( /\\u([0-9a-fA-F]{4})/ ) { $1.to_i(16).chr } );
2020/10/03(土) 09:45:21.01ID:MOu6VxbMr
そういうことならJSON.load使えば?

require 'json'
JSON.load(fname)

愚直にやるならArray#packを使いましょう。

str.gsub(/\\u(\h{4})/){[$1].pack('H*').unpack('n*').pack('U*')}
2020/10/03(土) 10:47:42.33ID:DiO6Np8S0
>>774
間違いがあった。正しくは、
print( strJson.gsub( /\\u([0-9a-fA-F]{4})/ ) { $1.to_i(16).chr("UTF-8") } );
2020/10/03(土) 10:58:07.83ID:DiO6Np8S0
"UTF-8"ではなくて、"UTF16-BE"か、"UTF16-LE"かも知れない。
試して上手く行くのを選んで欲しい。
2020/10/03(土) 11:41:59.34ID:/wA+nWqo0
>>775
>>776
でも、正常に動きました。ありがとう。
JSON.load で、自動的に読めるようになるのが便利

require 'json'

json = File.read( "input.json" )
p JSON.load( json )

p json.gsub(/\\u(\h{4})/){[$1].pack('H*').unpack('n*').pack('U*')}

print( json.gsub( /\\u([0-9a-fA-F]{4})/ ) { $1.to_i(16).chr("UTF-8") } );
2020/10/03(土) 12:38:03.63ID:1IyBCfpu0
👨‍👩‍👧‍👦1コードポイント1文字とは限らないし¥uの後は4桁とは限らないよね👨
2020/10/03(土) 13:09:59.31ID:/wA+nWqo0
それなら、単純な正規表現では、ダメ。
実際に存在する、コードポイントを調べないといけない

ひょっとしたら、JSON.load は、それに対応しているかも
2020/10/04(日) 15:56:43.31ID:P8Zgc9xR0
>>780
全ての文字を utf16 に変換してから、utf8に再変換すればいい気がする。
第一段階の変換で、ついでに \uXXXX の部分を 単純に 16BIT 整数に直せばいいはず。
782765 (ワッチョイ d32c-IT45)
垢版 |
2020/10/05(月) 01:16:19.79ID:z7kgQPv30
\u は、4・8桁の2種類あるのか?
2020/10/05(月) 08:08:05.24ID:z7kgQPv30
👨‍👩‍👧‍👦 は、4つの文字が連結したような感じ

\uD83D\uDC68\u200D
\uD83D\uDC69\u200D
\uD83D\uDC67\u200D
\uD83D\uDC66

\U0001F468\U0000200D
\U0001F469\U0000200D
\U0001F467\U0000200D
\U0001F466

\u{1F468}\u{200D}
\u{1F469}\u{200D}
\u{1F467}\u{200D}
\u{1F466}
784デフォルトの名無しさん (ワッチョイ b37c-N+m6)
垢版 |
2020/10/05(月) 10:14:21.95ID:H6rSrLtq0
もう ruby 関係無いだろ
良い加減消えろ

推奨スレ
mevius.5ch.net/test/read.cgi/tech/1545032904/
mevius.5ch.net/test/read.cgi/tech/1593777227/
785デフォルトの名無しさん (ワッチョイ 672c-JAxH)
垢版 |
2020/10/11(日) 00:59:43.22ID:B+MSoWxK0
( line, ary ), line_num
この( ) をなくすと、エラーになる

TEXT = <<'EOT'
a
b
EOT

line_numbers = TEXT.each_line.with_object( [ ] ).with_index( 1 ) do | ( line, ary ), line_num | # 各行・蓄積変数・行番号
ary.push( line_num )
puts "#{ line_num } : #{ line }"
end

p line_numbers

出力
1 : a
2 : b
[1, 2]
2020/10/11(日) 18:44:20.92ID:vt3DXswMr
>>785
仕様通りです
787デフォルトの名無しさん (ワッチョイ c308-8Ti4)
垢版 |
2020/10/13(火) 15:52:15.31ID:Iy+8ZYjV0
初心者です
Windows10でrubyのバージョンは2.4です
gets.chompで日本語の文字列を入力しprintで出力したら文字化けするのですがどうしたら治りますか?
2020/10/13(火) 16:24:17.23ID:y5Oy6HcC0
漏れは、WSL, Ubuntu 18.04 を使っているけど、
Ruby Installer のMSYS 2 かい?

日本語入力が難しい

ファイルか、端末の文字コードの設定だろう。
BOM 無しUTF-8(UTF-8N)

ユーザー環境変数に、RUBYOPT を作って、--encoding=UTF-8 を設定するとか。
ただし、irb が、コマンドプロンプトでは使えなくなるので、
PowerShell しか使えなくなる

VSCode の拡張機能、Code Runner で、
選択したコード片、またはファイル全体を実行できる

これで、irbは使わなくてもよいけど、デバッグで、pry が使えなくなるかも。
pry は、irbを使っているのかも?
2020/10/13(火) 16:34:59.69ID:y5Oy6HcC0
2020-10-06
RubyInstaller 2.7.2-1, 2.6.6-2 and 2.5.8-2 released

Windows では最新版を避けて、2.6.6-2 を使えば?

漏れは、Windows 10, WSL, Ubuntu 18.04 で、
VSCode の拡張機能、Remote WSL も使う

Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた

yarn は、Windows側に入れて、WSL から、拡張子なしのyarn コマンドを呼べる。
これは、#!/bin/sh で始まるシェルスクリプト

anyenv は多言語向きで、rbenv, nodenv, pyenv, phpenv などを同じ使い方で、統一的に扱える
2020/10/13(火) 16:44:54.23ID:y5Oy6HcC0
Windows 版Ruby の日本語入力では、

コマンドプロンプトよりも、
PowerShell を使う方が良いのかも?

日本語出力は問題ない。
もし、フォントがかすれて表示されたら、バグっているけど
2020/10/13(火) 16:56:07.22ID:y5Oy6HcC0
>>788
修正

>ユーザー環境変数に、RUBYOPT を作って、--encoding=UTF-8 を設定するとか。
>ただし、irb が、コマンドプロンプトでは使えなくなるので、
>PowerShell しか使えなくなる

RUBYOPT に、--encoding=UTF-8 を設定すると、
コマンドプロンプト・PowerShell の両方で、irbが起動しなくなる

C:/Ruby25-x64/lib/ruby/site_ruby/rbreadline.rb:6135:in `delete': invalid byte sequence in UTF-8

コマンドプロンプト・PowerShell の文字コードの設定で、使えるようになるのかな?
漏れは、VSCode, Code Runner を使っているから、irbを使っていない
2020/10/13(火) 17:01:18.58ID:v339nyYs0
>>787
ridk use で切り替えられるから最新版を試すと良い
このへんの問題も改善されてたはず
2020/10/13(火) 17:05:42.76ID:y5Oy6HcC0
RUBYOPT に、--encoding=UTF-8 を設定すると、

コマンドプロンプト・PowerShell の文字コードの設定で、
chcp 65001
と入力したが、どちらもエラーで、irbが起動しない

でも、irbを使わなければ、
RUBYOPT に設定するのは、便利なんだけど
2020/10/13(火) 17:09:23.25ID:y5Oy6HcC0
>>792
ほう
795デフォルトの名無しさん (ワッチョイ c308-8Ti4)
垢版 |
2020/10/13(火) 17:24:55.62ID:Iy+8ZYjV0
みんなありがとうございます
環境変数って編集したら再起動しないといけないとかありますか?
2020/10/13(火) 17:43:39.31ID:y5Oy6HcC0
OS の再起動は、いらないと思う。
Ruby の再起動だけで良いと思う

PowerShell で、以下を入力して、正しく設定されたか、確認してみ
ls env:
2020/10/13(火) 19:42:36.62ID:MMOmBqSMr
pryがirb使ってるわけないじゃん。(「irb使う」ってのもよくわからんが)
readlineのライブラリがマルチバイト未対応なだけだから
日本語扱うならnoreadlineで起動すればいいよ。
2020/10/14(水) 05:06:57.79ID:z5Uy/Vd30
pry, rails console を起動すると、irb が起動されるのかな? と思っていた。
画面が似てるでしょ?

例えば、Windows 10, WSL, Ubuntu 18.04 を起動すると、
コマンドプロンプトと同じ画面が起動される

そういうのと同じなのかな? と思って
799デフォルトの名無しさん (ワッチョイ 2b08-TJC9)
垢版 |
2020/10/14(水) 08:31:15.20ID:kgj1R+5V0
RUBYPORT変えてやってみたけどだめでした.
コマンドプロンプトとPowerShellは両方文字化けします.
bash on Windowsだと問題なく動きます. 学校で配布された教材がコマンドプロンプトしか使っておらず, 与えられたサンプルプログラムはバージョン2.4以下じゃないと動かないらしいです. 留年しそう.
2020/10/14(水) 09:58:02.17ID:z5Uy/Vd30
>RUBYPORT
RUBYOPT だよ。
ユーザー環境変数に、RUBYOPT に、--encoding=UTF-8 を設定する

PowerShell で、以下を入力して、正しく設定されたか、確認してみ
ls env:

irb さえ使わなければ、文字化けしないはず!

たぶん、ファイルの設定だろう。
sjis・CP932 じゃなく、BOM 無しUTF-8(UTF-8N)

それで、PowerShell から「ruby a.rb」などで実行できるはず。

または、VSCode のCode Runner でも出来る。
ただし、Code-runnerの設定ファイルで、File Directory As Cwd をチェックしておく
2020/10/14(水) 10:01:17.73ID:rQGDkRcC0
学校での話なら、友達か先生かに聞けよ。
2020/10/14(水) 10:07:17.92ID:z5Uy/Vd30
ただし、RUBYOPT に、--encoding=UTF-8 を設定した場合、
chcp はデフォルトの、CP932 のままにしておく!
65001 にしない

コマンドプロンプト・PowerShell で、chcp と入力してみ
2020/10/14(水) 10:21:16.97ID:z5Uy/Vd30
>>802
修正

>chcp はデフォルトの、CP932 のままにしておく!
>65001 にしない

RUBYOPT に、--encoding=UTF-8 を設定した場合、
CP932/65001 のどちらでも、文字化けしない。正常に動く
804デフォルトの名無しさん (ワッチョイ 2b08-TJC9)
垢版 |
2020/10/14(水) 11:42:15.98ID:kgj1R+5V0
>>803
ごめん!RUBYOPT変えた!
ファイルの設定ってプログラム書いてるテキストファイルの設定ってことですか?どうやって変えるのでしょうか? 一応Rubyopt変えただけだと文字化けしちゃってchcp 65001って実行してプログラム起動させたらコマンドプロンプトは落ちちゃった. PowerShellはもう日本語全部文字化けしちゃった
2020/10/14(水) 12:29:05.96ID:z5Uy/Vd30
たぶん、エディタの文字コードの設定メニューあたりから、
BOM 無しUTF-8(UTF-8N)に設定する

一番よいのは、VSCode で、Code Runner を使う
2020/10/14(水) 19:15:13.60ID:Y0U/d7P+r
>>799
noreadlineで起動すればいいって言ってんじゃん
2020/10/15(木) 06:56:58.31ID:7eWumHpU0
RUBYOPT に、--encoding=UTF-8 を設定すると、

irb --noreadline
で起動しても、エラーになる
2020/10/15(木) 07:13:17.57ID:7eWumHpU0
RUBYOPT に、--encoding=UTF-8 を設定すると、

irb --noreadline

irb -E UTF-8
irb -E Shift_JIS
で起動しても、エラーになる
2020/10/15(木) 07:32:54.02ID:7eWumHpU0
Windows では、RUBYOPT の、--encoding=UTF-8 と、irb は両立しない

irb を捨てて、VSCode のCode Runner を使う方がよい。
これで、選択したコード片、またはファイル全体を実行できる

その代わり、pry, rails console が使えなくなるかも?
よく分からないけど
2020/10/15(木) 14:56:39.44ID:FYvAP3o60
powershellじゃなくてレガシーコンソールのコマンドプロンプトを使わないとダメだったはず
2020/10/15(木) 15:46:22.07ID:7eWumHpU0
>>808
は、PowerShell・コマンドプロンプトのどちらでも、エラーになる
2020/10/17(土) 14:09:06.36ID:cX3MrjsP0
4,000行ほどのRubyプログラムをnode.jsに乗り換えようと思ってましたが
やっぱりRubyの方が便利な気がしてきました。
JSはローカル変数がちゃんと作れることやapplyが使えること、ifブロックやコメントの書き方などが
好きだったんですが元々ブラウザ用だったせいかファイル関連が非同期推奨ですし
stdoutとfileの違いもちゃんと意識しないといけなくなっているようです。
ファイル関連のライブラリも非同期のみの対応の場合も多いようで、Rubyに比べると
使い勝手に問題が有りそうです。
スクリプト言語の目的は簡単にプログラムしたいことですが、node.jsよりRubyの方が
ファイル関連は簡単なようです。
2020/10/18(日) 01:39:25.66ID:xeOKOt4d0
Rubyはちゃんとしたブロック変数が作りにくいことが欠点だと思っていたのですが
逆にnode.jsの場合、グローバル変数とローカル(ブロック)変数の違いが
最初の定義時にlet(またはvar)を書くかどうかだけで区別されており、
それはそれで危険な場面もあるように気付きました。
Rubyの場合は、先頭が$で始まる変数はグローバルになり、大文字で始まる変数は
グローバル定数になりますので、有る意味では安全ですし、命名規則としても
全てのプログラマで共通になりソースの分かり易さに貢献している可能性があります。
node.jsの場合、let文を書き忘れただけでグローバル変数になるのは原因不明の
バグが入り込む可能性を増やしている可能性があります。
また、Rubyは、system関数が便利です。
実際に使用してみた感想としてRubyは全体的に安定している印象を持ちましたが、
node.jsは、インストール時の一番大事な環境変数ですら自動設定されておらず、
プログラマー以外の人にプログラムを配布することは絶望的です。
814デフォルトの名無しさん (ワッチョイ 5b2c-UsEC)
垢版 |
2020/10/18(日) 18:18:43.72ID:WlQf1Fni0
>最初の定義時に、let(またはvar)を書くかどうかだけで区別されており
VSCode ESLint とかで、チェックできるのでは?

Windows でも、50ms 以上掛かる、IO は非同期を推奨してるから、書きにくい

でも、Ruby on Rails 6 では、デフォルトで、Node.js, Webpack を使う

ただし、GUI はHTML, CSS/SASS, Bootstrap, JavaScript(JS)だけど、
サーバー側言語には、Rubyを使う

Rubyには最初から、C と同様、関数スコープがあった。
ES2015 で、JS にも出来たのかな?
2020/10/18(日) 18:30:15.98ID:WlQf1Fni0
YouTube で有名な雑食系エンジニア・KENTA は、
初心者が進む道を、サーバー側言語のRuby → Go を王道としてる

この2つ以外は、出てこない。
JavaScript, Python から始めろって絶対に言わない!

Python から始めてはいけないって言ってる。
「AIや機械学習に興味があるのでPythonから勉強」は誤りです。【YAGNIの法則】

KENTA は、10言語以上知っていて、
登録者数5万人、月千円のサロンが、2千人もいるから、
十分にヒアリングしてるし、どの言語が挫折確率が高いか、よく分かっている
2020/10/18(日) 18:36:30.11ID:xWXtsYNK0
KENTA「Rubyに拘泥する奴は伸びない。さっさと他の言語に進め」
2020/10/18(日) 19:10:33.77ID:Ie2s5K3J0
>>814
Cは、関数スコープというより、ブロックスコープ。
Rubyとは違う。
818デフォルトの名無しさん (ワッチョイ 6b01-ntOo)
垢版 |
2020/10/18(日) 20:35:28.25ID:2aU6LfzH0
KENTA「C++を始めるべき」
2020/10/23(金) 17:32:28.92ID:iE1/WHvK0
VSCodeなどにHTMLのLivePreview機能がありますが、
erbのLivePreview対応アプリケーションってありますか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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