Ruby 初心者スレッド Part 65

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f80-JI52)
垢版 |
2018/12/22(土) 04:43:34.03ID:84E3pYZa0
プログラミング言語 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
2019/04/12(金) 02:31:01.87ID:WO5SLys30
Vagrant, Chef, Homebrew など、環境構築運用でシェルスクリプトの代わりには、Ruby で書く。
rbenv(anyenv) も、Rubyか?

他にも、SASS とか、他の言語よりも、数年早いから、
実験段階のものや、アクセスが少ない、中小企業向けに良い

大規模になってきたら、他の言語に変える
2019/04/12(金) 07:29:49.69ID:xRzutCJ1a
>>319
高負荷な処理の開発においては、検証すらままならないほどに遅くなることが普通にある(Cで書いててもね)
そもそも最初からパフォーマンスが問題になることが分かっているなら、速度自体もアルゴリズムの良し悪しを決める重要なファクターだ
まあRuby使いには想像しにくい世界かもね
2019/04/12(金) 11:06:50.87ID:+AQGVq0O0
>>320
>大規模になってきたら、他の言語に変える
って>>292の話と全く変わらないな
2019/04/12(金) 13:41:56.03ID:L59U/aC10
>>320
> rbenv(anyenv) も、Rubyか?

rbenvもanyenvもその兄弟(*env)たちもシェルスクリプトで作られてるよ。

https://github.com/rbenv/rbenv の緑のバーをクリックすりゃわかるだろ?
Shell 96.5% Ruby 1.5% C 1.4% Other 0.6%

環境構築というか、"端末の"環境構築なので
端末を提供しているシェルスクリプトが一番相性が良い
2019/04/12(金) 13:47:31.31ID:L59U/aC10
あとrubyの環境を整えるのに、rubyが必要とかありえないわなw


それにruby遅いねん。(ruby以外のスクリプト言語もそうだろうけど)

$ time ruby -e 'print "ruby"'
ruby
real 0m0.054s
user 0m0.042s
sys 0m0.013s

$ time sh -c 'echo "sh"'
sh

real 0m0.001s
user 0m0.000s
sys 0m0.001s
2019/04/12(金) 14:33:52.25ID:L59U/aC10
Perlは少しはマシだな

$ time perl -e 'print "perl"'
perl
real 0m0.003s
user 0m0.000s
sys 0m0.002s

$ time php -r 'print "php";'
php
real 0m0.016s
user 0m0.016s
sys 0m0.000s

$ time python -c 'print "python";'
python

real 0m0.016s
user 0m0.012s
sys 0m0.004s
2019/04/12(金) 14:37:23.94ID:L59U/aC10
>>324-325 ちなみにこれ *envを使っていないLinux環境です。

*env を使うと各インタプリタ起動前にオーバーヘッドが入るから遅くなるが
これはそれがない純粋な速度ということ
2019/04/12(金) 14:56:49.04ID:LhXUTlO1M
それでもほぼ起動のオーバーヘッドだろう
RubyはRails専用なので長時間動作が前提だから起動時間はあまり重視されてないんだろうね
2019/04/12(金) 15:03:10.45ID:HYW7LIPs0
ツイッターってrailsって本当?
329デフォルトの名無しさん (エムゾネ FF33-grM/)
垢版 |
2019/04/12(金) 15:26:10.57ID:VR9mZ4dFF
スタートアップで使ってたってだけで
もう使ってないから

遅すぎて見切られた
330デフォルトの名無しさん (アメ MM4d-nfNM)
垢版 |
2019/04/12(金) 15:58:45.73ID:EM6Ln3LKM
ツイッターがRailsていつの時代の話だよwww原始人かww
今でもScalaなのかどうかが気になるわwwww
2019/04/12(金) 16:30:59.42ID:kdt5VzkQ0
>>327
> それでもほぼ起動のオーバーヘッドだろう

>>326で言ってるオーバーヘッドっていうのは
各言語用のインタプリタ起動のオーバーヘッドではなくて、
*envの仕組み上、追加で存在するオーバーヘッドのこと。

*envは例えばrubyだったら、rubyのバイナリを直越実行するのではなく、
rubyの指定されたバージョンを起動するためのシェルスクリプトを実行する。

>>324-325は、*envを使ってないから、各言語用のインタプリタ本来の
起動時間ですよって話。
2019/04/12(金) 18:26:13.37ID:xKzG8Z1CM
IOのオーバーヘッドもあるんじゃないの?
RubyはUnicodeの確認とかしてそう。
逆に、BashやPerl5はしてなさそう。
2019/04/12(金) 19:31:58.44ID:kdt5VzkQ0
なんだよ?Unicodeの確認って
単に「Rubyは起動が遅い。」でいいだろw
2019/04/12(金) 23:32:32.24ID:5JLil1XU0
出力にかかる時間を計ってる以上、「起動」の時間はわからんだろ。
Unicodeうんぬんは、文字の妥当性を検証してる気がしたから。バイナリを流すとエラーになったような。

きっとRubyは遅いだろうと思うが、それでも、おまえの確認は証明になっていないぞ。
2019/04/12(金) 23:39:02.39ID:kdt5VzkQ0
>>334
Rubyは起動か文字列出力が遅い
2019/04/12(金) 23:46:43.64ID:kdt5VzkQ0
はぁ、くだらね。Rubyが遅いという結論は変わらないんだから
こっちは、起動が遅くても文字列出力が遅くても構わんのだがなーw

はい。やっぱりRubyは起動が遅いです。
php、pythonの3.5倍、Perlの17倍、shの50倍遅いです。

$ time ruby -e ''
real 0m0.053s
user 0m0.049s
sys 0m0.004s

$ time sh -c ''
real 0m0.001s
user 0m0.000s
sys 0m0.001s

$ time perl -e ''
real 0m0.003s
user 0m0.003s
sys 0m0.000s

$ time php -r ''
real 0m0.015s
user 0m0.004s
sys 0m0.011s

$ time python -c ''
real 0m0.014s
user 0m0.011s
sys 0m0.004s
2019/04/12(金) 23:48:50.10ID:kdt5VzkQ0
だいたい。たかが出力にそんなに時間がかかるわけ無いだろ
real 0m0.054s の大部分が起動ではなくて、
出力の時間だっていうのなら、それはそれで大爆笑もんだろ
起動よりも出力のほうが時間かかるって言ってんだから
2019/04/13(土) 02:52:14.07ID:+rbgtPEq0
なんでそんな人間がRubyスレを覗いてるんだろうねぇ…
Rubyが嫌いならRubyスレなんて覗かなきゃいいだけなのに
339デフォルトの名無しさん (アウアウエー Sae3-grM/)
垢版 |
2019/04/13(土) 03:03:39.84ID:cdJINjrpa
ごみん
2019/04/13(土) 07:06:14.59ID:blG/UTRx0
シェルスクリプトでループしたら、5分以上掛かる。
プロセスも、10万以上起動されるし

Ruby なら、3秒ぐらい

だから、シェルスクリプトで書かない
2019/04/13(土) 08:05:07.56ID:bIdtQ5MW0
> シェルスクリプトでループしたら、5分以上掛かる。
> プロセスも、10万以上起動されるし

お前の書き方が悪いんだろw
2019/04/13(土) 14:26:56.18ID:sX5qVOZG0
>>340
ウソでなければ、極端すぎる。
シェルどうこうじゃなく、ただやりかたがまずいことを疑うな。
2019/04/13(土) 14:27:50.19ID:sX5qVOZG0
まさか、Cygwinだったりしないよな?
2019/04/13(土) 16:50:14.26ID:l6UxczrL0
ruby --disable-gems -e ''
ならそんなに時間かからないはずだけど。
2019/04/13(土) 17:19:39.65ID:YpOFfnixa
>>342
そいつは何言っても自分を省みることのできない奴だから、構うだけ無駄だと思うよ
2019/04/15(月) 21:00:33.40ID:UzKyMZCIa
>>338
日本が嫌いなのに日本にしがみついてる朝鮮人みたいなもんだよ。
2019/04/16(火) 08:48:21.04ID:LiYaAaxe0
Rubyて「楽しく開発ができる」って言うじゃない?
2019/04/16(火) 09:21:31.52ID:V3kPCGsbM
うん
Rubyしかできない人ほどそう言うね
2019/04/16(火) 09:32:48.43ID:jMhdT2ep0
その逆、「開発がヘヴィで苦行なデスマーチになりまーーーす!」と宣伝する言語は無い
一般的には、どんな言語や商品でもそう宣伝する、そうしない商品は無い
2019/04/16(火) 09:44:32.83ID:nXxzoFc/M
>>347
開発当初はその通り
Railsがしゃしゃり出てくる前もまあ当時の他言語と比べてまあ妥当
Rubyデツクルモノ=Railsとなってからは「Ruby別に楽しくないじゃん」とか言われるようにはなった
メモリ16GBとSSDで意識高い系言語もIDEでぐわんぐわん言わせられる昨今、Rubyのそのへんのメリットは比較上は薄い
351デフォルトの名無しさん (ワッチョイ b102-2EiJ)
垢版 |
2019/04/16(火) 10:39:23.01ID:S7eq1ncA0
>>347
ごめん。
RubyよりHaskellが楽しい。
352デフォルトの名無しさん (ワッチョイ 992d-U5P5)
垢版 |
2019/04/16(火) 10:54:33.68ID:xaQ/mbi+0
助成金サギみたいなのはやめようぜ
353デフォルトの名無しさん (ワイーワ2 FF63-grM/)
垢版 |
2019/04/16(火) 11:56:14.82ID:vZl8q5zBF
ほんとうはデスマになってるのに
Ruby使うことでラリって気持ちいいから
デスマに気付いてないケースは多そうだ
2019/04/16(火) 13:37:30.80ID:V3kPCGsbM
後のこと一切気にしなくていいならJavaでも楽しいよ
最近Rubyにヘイトが集まってるのは、Rails全盛期にそうやって乱造されたアプリの便所掃除の仕事の割合が増えてるから
355デフォルトの名無しさん (アメ MM4d-nfNM)
垢版 |
2019/04/16(火) 14:09:38.51ID:HGB3ondZM
書きやすく 読みにくい
→楽しく適当に書かれたウンコードの保守押し付けられた奴らブチ切れ
当然書いた本人はもういないw
356デフォルトの名無しさん (ワイーワ2 FF63-grM/)
垢版 |
2019/04/16(火) 15:42:10.89ID:vZl8q5zBF
perlの読み難さに嫌気が差して造られた言語なのにperlの悪い所を引き摺ってるからな
2019/04/18(木) 11:40:30.01ID:zHViXhbq0
パターンマッチだって
https://bugs.ruby-lang.org/issues/14912
358デフォルトの名無しさん (ワッチョイ 5e2c-LwVf)
垢版 |
2019/04/20(土) 14:24:37.48ID:rcvSJkam0
社員50人の「Ruby 開発」という会社の求人を見た。
東京・大阪で求人

Rubyでは、国内3位だって!

Cookpad, マネーフォワードに次ぐ会社か?
上場してるのか?
2019/04/20(土) 15:03:38.48ID:rcvSJkam0
変換表を使って、置換できるのは便利!

hash = { 'ab' => 'あ', 'xy' => 'ん' }

p re = Regexp.union( hash.keys ) #=> /ab|xy/

p "9xy9ab9xyx".gsub( re, hash )
#=> 9ん9あ9んx

gsub(pattern, hash) -> String
文字列中の pattern にマッチした部分をキーにして、hash を引いた値で置き換える

hash = {'b'=>'B', 'c'=>'C'}
p "abcabc".gsub(/[bc]/){hash[$&]} #=> "aBCaBC"
p "abcabc".gsub(/[bc]/, hash) #=> "aBCaBC"
2019/04/21(日) 00:33:20.95ID:WKly27nG0
このメソッド設計したやつ頭悪そう
2019/04/21(日) 01:10:32.26ID:8e51ow7Fa
直交性のかけらもない醜悪な仕様だね
2019/04/21(日) 01:22:08.98ID:ODZGWBWT0
直交性の権化とも言えるJavaのライブラリがいいかといえば、そうとも言えないわけで
バランスって大事だよね
2019/04/21(日) 08:25:50.68ID:lCttlvu0M
キャプチャとかグループ参照とかそのへんの問題だと聞いた
ブロック引数じゃないと先に評価されちゃう
2019/04/21(日) 12:41:01.28ID:37BYu4xvM
ブロック使わないと正規表現による置換が全て表現できないとわかった時点で第2引数廃止するべきだったってのは、
まあその通りではあるにはあるのだけども
2019/04/21(日) 13:14:59.11ID:z90qN1ox0
んなこというのは、Ruby者だけやろ。
ふつうは、使い分けりゃいいんだよ。
まあ、他の言語にさんざケチをつけまくったわけだから、Rubyにもケチをつけんとな。

どうでもいい改善のために、後方互換を壊すのはクソ過ぎだが。
366デフォルトの名無しさん (ワッチョイ 092d-RDgi)
垢版 |
2019/04/24(水) 15:15:30.27ID:NuE3hWAT0
最近、Rubyで簡単に稼げたとうたって謎の講座を売りつけようとしてるやつがえっらい増えてんな
HTMLで稼げた系の方が遥かに多いものの、SNSにも動画サイトにもすげえ数あるわ
情報商材屋もアフィリエイトや仮想通貨ネタじゃ食ってけなくなってHTMLネタや延いてはRubyネタまで来たんだろか?
367デフォルトの名無しさん (ワイーワ2 FF1a-ZG7F)
垢版 |
2019/04/24(水) 15:53:51.84ID:KVKHKBwPF
補助金に群がる日本恒例のあれやろ
368デフォルトの名無しさん (アウアウウー Sa1b-ScLU)
垢版 |
2019/05/10(金) 13:07:53.40ID:+ugiu1c8a
Cygwinでruby-test-unitを入れたら/usr/share/gems/にインストールされた。

bundle exec ruby hoge.rbとかするとtest-unitがないって言われる。

gem envするとGEM PATHSに/usr/share/gems/がはいってる。
bundle envするとGem Pathに/usr/share/gems/が入ってる。
bundle exec gem envするとGEM PATHに/usr/share/gems/が入ってない。

bundler使いつつ/usr/share/gems/にあるtest-unitを使うにはどうするのが一番スマート?
2019/05/11(土) 08:15:27.14ID:bKjSBhWB0
Windows では、Ruby Installer のMSYS2 を使うのでは?

漏れは、MSYS2を入れてない(ポータブル版を使っている)から、
web socket などはコンパイルできないけど

64ビットOS で、Ruby 2.4/2.5 なら、
C:\Ruby24-x64
C:\Ruby25-x64

2.6 は、まだ使わず、1年は様子を見た方がよい
370デフォルトの名無しさん (ワッチョイ 375f-4N0r)
垢版 |
2019/05/11(土) 12:41:03.42ID:td9YBJ3L0
windows で ruby はマジでお薦めしない
四の五の言わず VM 入れろ
2019/05/11(土) 14:19:54.60ID:D877RybE0
WSLでいいよ。楽だし。
2019/05/11(土) 15:27:11.07ID:kOi/VI9x0
WSLは、2でかなり様変わりするようやな。。。
素人はまだしばらく様子を見てたほうがエエんちゃう?
2019/05/11(土) 18:03:57.12ID:D877RybE0
もうとっくに様子を見る次期は終わってるよ。
WSLは十分実用になる
2019/05/11(土) 21:06:38.06ID:btpUiiWv0
windowsでそこまでやりたいか?
特にRubyを使うメリットゼロだろ
素直にlinux使えよって思う
2019/05/11(土) 21:48:13.92ID:kOi/VI9x0
>>373
2は別物だと知ってるか?
2019/05/11(土) 22:12:16.55ID:JJsQ24Nt0
RubyってLinuxじゃなくね
2019/05/11(土) 22:23:46.69ID:D877RybE0
>>375
WSLとWSL 2は共存可能

https://news.mynavi.jp/article/20190508-820096/
> MicrosoftはWSL 2は通常のアップデートの中で提供し、WSLとWSL 2の共存も可能だとしている。

WSL2はまだでてないし、様子見というのはわかる。
だがWSLは様子見の段階は終わってる。

WSL2は様子見してても、WSLを使わない理由はない
WSL2はWSLを改善するのが目的なので、様子見の段階は有るにしろ
最終的にはWSLよりも良いものになる

今はWSLを使えばよい。WSL2が実用レベルだとわかったら乗り換えれば良い
2019/05/12(日) 12:44:36.55ID:SDh+fgbA0
素人は、状況が落ち着いてから乗っかればいいんだよ。
379369 (ワッチョイ 9f2c-NS0m)
垢版 |
2019/05/12(日) 13:38:51.73ID:dSbddX8d0
漏れは、Windows 10 で、Ruby 2.4 を、C:\Ruby24-x64 に入れてる

同時に、WSL, Ubuntu16.04 で、Ruby 2.3を入れてる。
Ubuntu18.04 なら、さらに、Ruby のバージョンも上がっているかも


ただし、1-liner を書く際、Linux では、これで動く。
ls | ruby -ne 'puts $_.center(20, "-")'

一方、Windows では、" でバグるから、
ls -name | ruby -ne 'puts $_.center(20, %Q("-"))'

"-" の部分を、Ruby の% 記法で囲んで、%Q("-") としないと正常に動かない

%, %Q で、ダブルクォーテーションをエスケープできる。
\"-\"
380デフォルトの名無しさん (ワッチョイ 572d-vM1y)
垢版 |
2019/05/12(日) 14:48:42.32ID:eMjN+/Cm0
>>376
みんなコードを書くのはMac、実行がLinuxってのが普通になっちゃってるからな
Windows版は、「高卒用パソコンなんてサポートしてどうするの」ぐらいの扱いがされてる
2019/05/12(日) 15:19:52.63ID:OoMn1CYl0
>>379
> 一方、Windows では、" でバグるから、
WSLで動かしてるけど、Linuxと同じように使えるよ?
2019/05/12(日) 20:27:41.49ID:EJ9HeJOja
>漏れは、Windows 10 で、Ruby 2.4 を、C:\Ruby24-x64 に入れてる

って言ってるやんけ
2019/05/12(日) 21:19:22.35ID:dSbddX8d0
>>379
では、

これは、Windows 10, WSL, Ubuntu16.04 上でやった。
ls | ruby -ne 'puts $_.center(20, "-")'

一方、Windows 上のPowerShell(PS) では、" でバグるから、 %Q("-") が必要。
ls -name | ruby -ne 'puts $_.center(20, %Q("-"))'

つまり、bash, PS など、シェルの種類によって、書き方を変えなければならない

まあ、ls, ls -name とか、他の部分も異なるけど
2019/05/12(日) 21:20:07.98ID:9Y9I0g9l0
お前らずーーーーと同じ話してるな
2019/05/12(日) 21:35:50.19ID:SDh+fgbA0
>>383
全部%クォートで書けば解決!
2019/05/13(月) 14:56:49.71ID:2i/QV07+0
だから、Windowsを使うのを止めれば、すべて解決だよ。
2019/05/13(月) 15:12:47.42ID:biecMsFD0
WindowsでWSLを使ったら全部解決した。ワロタ
MSすごいな。
2019/05/13(月) 21:18:12.41ID:D6B785Bh0
MSのLinuxへの貢献度は昔から高かった。
389デフォルトの名無しさん (アウアウエー Sadf-4N0r)
垢版 |
2019/05/13(月) 21:58:08.28ID:XgdYNs3Ba
ruby が何か努力した訳ではないな
M$ が頑張ってくれただけ
390デフォルトの名無しさん (ワッチョイ f0ba-N32O)
垢版 |
2019/05/20(月) 23:17:13.22ID:uii5Lp4R0
初心者すぎてすみませんがprogateのrubyを2回やり終えたんですが
次は何やるのがお勧めでしょう?
同じくprogateのruby on railsに進むべきか
たのしいrubyや3ステップで学ぶruby入門などの書籍を読むべきか
あるいは他に何かありますでしょうか?
2019/05/21(火) 00:23:24.65ID:Ks32/nFwa
>>390
いいから何か作ってみなよ
392デフォルトの名無しさん (ワッチョイ f82d-Q2B8)
垢版 |
2019/05/21(火) 02:18:15.20ID:NmxJjL0u0
>>390
俺と一緒にRubyMotionをやらないか
2019/05/21(火) 09:41:17.03ID:2vqnZrlM0
>>392
やる!
2019/05/21(火) 12:37:52.02ID:ZAINLMmO0
この3冊を読む。
たのしいRuby 第6版、2019/3/19
Effective Ruby、2015
改訂2版 Ruby逆引きハンドブック、2018/8/28

「たのしいRuby」だけ読んでも、そこそこプログラミングできる!

Linux の基本コマンドを30ぐらい見て、
1-liner とか、パイプラインのフィルターでも作ってみれば?

他には、Enumerable の文書で、どういう機能があるか理解する
2019/05/29(水) 22:37:17.50ID:axNbAI7/M
例えばNet::HTTPみたいな::がある場合のautoloadってどう書けばいいの?
現時点ではautoload :Net,'net/http'みたいにしてるんだけど、
これだとNet::SMTPを参照しても読み込んじゃうよね
2019/05/31(金) 00:09:30.12ID:P50R/Vqw0
キーワードなのかKernel関数なのかさっぱりわからないんですが見分け方を教えてください
rubyの場合は動的直接拡張もあるのでパンクしてやばいです
2019/05/31(金) 07:25:34.79ID:sU0K1/9C0
>>396
予約語は公式リファレンスに書いてある
2019/05/31(金) 23:50:45.29ID:TSXZ3QWc0
>>396
IDE使えばいいんじゃね
2019/06/04(火) 08:33:21.09ID:oR7ssn0w0
初心者にも満たない学習者です
他人様のコードで申し訳ないんですが

(ttp://2d6.parasite.jp/rgss/script/restart.html)

class Scene_Title
 (中略)
 def read_save_data(file)
  (中略)
  characters = Marshal.load(file)
  (中略)
  Graphics.frame_count = Marshal.load(file)
  (中略)
  $game_variables   = Marshal.load(file)
  $game_self_switches = Marshal.load(file)
  (中略)
 end
end

これ、どう読んで解釈したら良いんでしょうか
Marshal.load()ってunserializeやってくれる関数ですよね
何回も"file"を読んで、同一の内容を、それぞれ違う変数・グローバル変数に入れてる?
それとも同一の内容じゃない?読むのは1回だけ?

OSやversionはすみませんわかりません
ツクール関係だとは思うのですが、ツクール関係独特のものなのかどうかもわからず
2019/06/04(火) 11:25:24.98ID:FCkMXnZ60
シリアライズされてるなら同名の変数にキチっと入れてくれるんじゃないの
401デフォルトの名無しさん (ワイーワ2 FFa2-dkMk)
垢版 |
2019/06/04(火) 11:29:47.34ID:uvNmGZETF
最適化されてない自動生成のコードだろ
2019/06/04(火) 12:20:57.18ID://1XsOfQ0
同じファイルを何回も読むのは、無駄

でも中略部分で、そのファイルに書き込んで、ファイルの内容を変えているなら、
再読み込みする意味があるけど

解説が付いていない、他人のソースコードを分析しない方がよい。
書いた人は、プログラムの仕様を知っているけど、
読む人は、仕様を知らないから、かなりの時間を損する

仕様(質問)からプログラム(答え)は書けるけど、
プログラム(答え)から仕様(質問)を把握するのは、極めて難しいから

つまり、なぜこういうプログラムになったのか、の「なぜ」を解明するのが極めて難しい

物理現象と同じ。
法則から現象は推測できるけど、現象から法則を導き出すのは、極めて難しい

>>396
VSCode でも、キーワードなどは色分けされる
2019/06/04(火) 12:49:27.49ID:oR7ssn0w0
ありがとうございます
特に中略部分でfile側が変化しているということはないようです

つまり、暗黙的に何か、Marshal.load()が左辺の変数名に拘束されるとか
Marshal.load()のfileオブジェクトからの読み取りがスタック的になってるとか
そういうのは無くて、普通に読んでいって大丈夫ということなんですね

>>402
おっしゃることもわかるんですけど
自分は作法が全然わからない時は特に、リファレンス見つつ他人のコードを見つつ勉強が効率良くて
2019/06/04(火) 17:36:22.57ID://1XsOfQ0
他人のクソコードを分析しても、時間の無駄。
普遍的な知識を得られない。
他人の仕様を推測するだけ

この3冊を読んで、プログラミングのお題スレの問題を解いた方が、力がつく。
Sinatra, Rails をやっても良いし

こういう勉強が普遍的で、他言語にも応用できるし、自分で考えるから成長できる

他人のソースコードを持ってきて、これはどんな事をやってるのですか? って質問する者が多いけど、
他人は仕様を知ってるけど、質問者は仕様を知らないから、極めて不利

一方、プログラミングのお題スレでは、仕様が与えられているだろ。
こういう場合には、他人のコードを見ても、意味がわかる。
だから勉強になる!

プログラミングとは、仕様からプログラムを作るもので、
プログラムから仕様を解明するものじゃないので、時間を失うだけ!
特に初心者にとっては、良い本などで、体系的に浅く学ぶのを勧める

推薦書
たのしいRuby 第6版、2019/3/19
改訂2版 Ruby逆引きハンドブック、2018/8/28

Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、間違いやすいポイントを解説
2019/06/04(火) 17:40:50.53ID:8o3tMmIE0
宣伝費、いくら貰えるんだろう?
2019/06/04(火) 18:16:47.29ID:aXH0FNpKM
いつものキチガイを相手にするつもりはないけど、質問者が誤解しないようにコメント
仕事のプログラミングだと基本的にソース眺めてる時間のほうが長いよ
ましてRubyも今や落ち目で便所掃除の仕事ばかり増え、全く新しいものを作る機会は減る一方だ
2019/06/04(火) 19:17:17.46ID:LGhp/e100
>>405
ないよ
そんなものがあったら3日でBANだ
2019/06/04(火) 20:11:05.76ID:P882eZbVM
>>403
参考にするのなら、別のソースにしたほうがエエんちゃう?
2019/06/04(火) 20:28:11.60ID:oR7ssn0w0
開発/運用側に立ってるとネットなんて
宣伝と、自作自演・サクラと、ユーザ奪い合い荒らしと
この3つばっかりって身にしみてるもんですし

>>408
たまたまMarshal関係で調べてて出くわしたもので
rubyがこういう(>>399)書き方・使い方がデフォな言語なのかどうかを
知りたかったというのがほとんどなので
2019/06/04(火) 21:00:20.80ID:7lg/KHrxa
>>409
開発運用側に立ってなんて言うからには他の言語での開発経験があるのだろうけど、それで>>399の理解というのは謎だなと思った
2019/06/04(火) 21:35:03.46ID://1XsOfQ0
だから、他人のクソコードを見ても、時間を損しただけだろ。
得るものなんてない

「Marshal.load」で検索すれば良いだけだから

こういうAPI の知識は、文書を見れば良いだけ。
他人がどう使っているか、考えたりするものじゃない

考えるのは、仕様からプログラムに翻訳する所。
こういう単なる知識は、検索するのが早い

それに、その他人が間違ってるかも知れない。
クソコードになるほど考えさせられて、時間を無駄使いさせられるw

だから、良い本を勧めるわけ。
良いコードはシンプルで、そのまま英語のように読める!

他人のコードから、仕様を推測するなんて、漏れはやらない。
出来たとしても所詮、推測だし、得るものはない

漏れも仕事で、多言語で、仕様書がないコードを解析してきたけど、得るものはほとんどない。
せいぜい、重箱の隅をつつくような知識ぐらいしか得られない。
その知識も他で役に立たない。転用できない

なぜかと言うと、その仕様は他人に与えられたものだから。
自分には、それとは異なる仕様が与えられるから!

普遍的な、多くの言語でも使えるような知識は、良い本から得られることが多い。
それを元に、プログラミングのお題スレの問題を解いた方が、力がつく!
2019/06/04(火) 21:39:18.98ID:jFAGFsyFa
そのMarshalのコードはかなり無駄だがファイルの内容が小さいから富豪的にやってるだけだと思う
実際はちゃんとセーブデータから該当するデータを読むという処理にすべき
2019/06/04(火) 21:59:55.03ID://1XsOfQ0
それに何回も同じファイルへの読み込むのは、
他のプロセスで、そのファイルを書き換えているからかも知れない

だから、ひょっとして書き変わっているかも知れないから、
出来るだけ新しいファイルを、読み込もうとしているのかも知れない

結局こういうように、仕様に対する推測ばかりするようになる

バグのほとんどは設計段階で生じる。
仕様がおかしかったら、必ずクソコードになってしまうw

これはもはや、プログラミングではない!
このように漏れらはいつも、設計・仕様の話ばかりしている。
顧客の要求定義も知らないのにさ!ww

漏れは、こういう仕事をさんざんやってきた。
その度に同僚同士で、クソコードを分析しても得られるものはないし、
時間の浪費だよねって、常々言い合ってきたw

お金をもらえるからやってるだけで、勉強にはならない。
勉強効率で言えば、1/100 とか

重箱の隅をつつくような断片的な知識は、覚えられられないし転用できない。
体系的に学ぶ必要がある
2019/06/04(火) 22:59:30.82ID:0PWK+f1w0
fileに複数のオブジェクトがdumpされてて
それを順番にloadしてるだけだぞ
2019/06/04(火) 23:41:11.09ID://1XsOfQ0
Marshal.load(port, proc = nil) -> object

port は、String か IO と書いてある

同じファイルを何回も読み込んでいるのではなく、
複数のオブジェクトがある場合、
一度にすべてを読み込まず、1つずつ順番に読み込んでるという事かな?

結局こういうように、どう作っているのか、他人の仕様の推測ばかりするようになる

このように漏れらはいつも、設計・仕様の話ばかりしている。
顧客の要求定義も知らないのにさ!ww

結局、他人がどう作っているのかなんて、わからない!
所詮どこまで行っても、推測に過ぎない!
2019/06/05(水) 01:28:30.54ID:UB83J14X0
仕様は>>399が(中略)したところに書いてあったぞ
2019/06/05(水) 01:30:04.71ID:Oo3xyqZm0
全部コピペしてくれ
気になって寝られない
2019/06/05(水) 02:34:30.81ID:UjRB/6p50
>>415
APIの仕様は文書で調べればいいだけと自分で>>411で書いているくせに、>>415では何で頓珍漢な当て推量をする流れなんだ?
いつもどこかで聞いてきたようなお題目を並べてはいるが、上っ面の字面だけを覚えているだけだろう。本人は実践できてないし理解もしていない。
419402 (ワッチョイ 6a2c-n0I8)
垢版 |
2019/06/05(水) 22:44:36.03ID:9aT8oaGi0
Marshal.load(port, proc = nil) -> object
port は、String か IO と書いてあって、仕様を知らないと、どちらかわからないから!

漏れの印象では、Marshal は、dup, clone などのdeep copy 関係のクラス

質問者のは、文字列化して外部プロセスに送ったり、
外部プロセスから文字列をもらって、オブジェクトを構築したりする用法かな?

JSON.parse, stringify みたいな感じなのかな?

「Ruby逆引きハンドブック」では、分散(distributed)Ruby, dRuby を使ってる。
外部ホスト・プロセスで動く、Rubyとの通信

dRubyでは、Marshalによる値渡しが基本みたい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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