[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/13 18:23 / Filesize : 307 KB / Number-of Response : 1052
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 66



1 名前:デフォルトの名無しさん [2020/01/04(土) 01:15:34.30 ID:X7t3Qsuc0.net]
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 65
https://mevius.5ch.net/test/read.cgi/tech/1545421414/

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

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

逆引きRuby
www.namaraii.com/rubytips/

Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

213 名前:197 mailto:sage [2020/03/01(日) 00:44:56.42 ID:NSpMdQYF0.net]
さすがに日本人で、シルトと比べられる著者は、いないだろ

たいてい読み応えがあるのは、Effective シリーズなどの外人著者

214 名前:デフォルトの名無しさん [2020/03/01(日) 10:00:51.93 ID:JWAFHnbAM.net]
しつもんです
haskellだったら
[(x,y,z) | x <- [1..9], y <- [1..9], z <- [1..9], x * y * z == 24]
こう書けるものはrubyではせいぜい
p [*1..9].repeated_permutation(3).select {|a| a.sum == 24}
こう書くしかありませんか?簡潔に表現したいです

さらにhaskellでは
[(x,y,z) | x <- [1..9], y <- [1..8], z <- [1..7], x * y * z == 24]
などと書けるので柔軟ですがその場合rubyなら
p (1..9).map {|x| (1..8).map {|y| (1..7).map {|z| [x,y,z]}}}.flatten(2).select {|a| a.sum == 24}
こう書くしかありませんか?簡潔に表現したいです

215 名前:デフォルトの名無しさん (ワッチョイ 0314-IyPa) mailto:sage [2020/03/01(日) 10:43:49 ID:n6wzTSL90.net]
> haskellだったら
> [(x,y,z) | x <- [1..9], y <- [1..9], z <- [1..9], x * y * z == 24]
> こう書けるものは

haskell: 66文字

> rubyではせいぜい
> p [*1..9].repeated_permutation(3).select {|a| a.sum == 24}
> こう書くしかありませんか?簡潔に表現したいです

ruby: 58文字


Rubyの方が簡潔です

216 名前:デフォルトの名無しさん (ワッチョイ 6f5f-jGfF) mailto:sage [2020/03/01(日) 11:35:40 ID:qmcGlirD0.net]
> p (1..9).map {|x| (1..8).map {|y| (1..7).map {|z| [x,y,z]}}}.flatten(2).select {|a| a.sum == 24}
p [[*1..9], [*1..8], [*1..7]].then{|x, *a| x.product(*a)}.select{|a| a.sum == 24}
p [*1..9].product([*1..8],[*1..7]).select{|a| a.sum == 24}

好きな方を

ところで、そのHaskellコードにはp相当が無いように見えますが
Haskellってprintしなくていいんですか?

217 名前:デフォルトの名無しさん mailto:sage [2020/03/01(日) 12:14:22.10 ID:8hJkpeX/a.net]
元から間違っているがsumではない

218 名前:デフォルトの名無しさん mailto:sage [2020/03/01(日) 12:53:48.43 ID:JWAFHnbAM.net]
あごめんsumじゃなかったわw
みなさんどうもありがとうございました

219 名前:デフォルトの名無しさん (ワッチョイ 067d-X91k) [2020/03/01(日) 18:13:12 ID:RW98tzZT0.net]
rubyでtwitterとかyoutubeどうやって作るの?
全くイメージが沸かない
ツイートがリアルタイムで他者にも表示されるのってどういう仕組み?

220 名前:デフォルトの名無しさん (ワッチョイ cb4f-mnKr) mailto:sage [2020/03/01(日) 21:01:11 ID:QPyt1UlH0.net]
httpとブラウザの仕様の話なのでrubyは関係ない

221 名前:デフォルトの名無しさん (アウアウエー Sac2-DFeu) mailto:sage [2020/03/01(日) 21:57:35 ID:F2v5Atsqa.net]
scaffold で一発で作るという意味だろう



222 名前:デフォルトの名無しさん mailto:sage [2020/03/01(日) 22:44:11.42 ID:NSpMdQYF0.net]
0から手を動かして作るRailsチャットアプリ【チュートリアル】
ttps://www.youtube.com/watch?v=WCsgcp5dg7M

Ruby on Rails で、Web Socket を使う、とだこうきの動画

223 名前:デフォルトの名無しさん mailto:sage [2020/03/01(日) 22:47:44.78 ID:QZXNPr7ra.net]
>>213
JavaScriptでサーバー側のAPIを叩き、サーバーがそれに対して結果を返し、JavaScriptでその結果を画面に反映させる
基本はこれだけ
Rails任せじゃなくてちゃんとWebの仕組みを理解してAPIを実装しなきゃいけないし、JavaScriptもゴリゴリ書かなきゃいけない
SQSなどのAWSやGCPのマネージドサービスや、Ka

224 名前:fkaのようなデータ基盤系のOSSなど高度なバックエンド技術の活用も必要だ
Railsのチュートリアルに毛が生えたような典型的なWebとは次元が違う
[]
[ここ壊れてます]

225 名前:デフォルトの名無しさん mailto:sage [2020/03/01(日) 23:24:11.39 ID:J3IrN4Ey0.net]
クライアントがブラウザとは限らないが
いずれにしろrubyは全く関係ない

web push
server-sent events
push notification service (e.g. APNs)

↑この辺りを学べばいい
単なる通知用途で生のweb socketを
ゴリゴリ書いたりはしないんじゃないかな

226 名前:デフォルトの名無しさん (ドコグロ MMea-ff41) mailto:sage [2020/03/01(日) 23:52:21 ID:H/U8nx/nM.net]
プログラミングスクールでRails勉強しました系だとプル型のアプリの作り方しか知らないだろうから、クライアントへの通知の実装方法以前に、
そもそもユーザーがツイートしたときに受信者に対して通知をキックするところの仕組みが想像できないんだろうな
そのへんはいわゆるバックエンドってやつで、ユーザー数が増えてもスケールするためには小手先のコーディングだけでなくAWSのインフラ設計まで含めた作り込みが必要
Railsできますウェーイみたいなのとは一線を画す、いい大学出たガチな連中が鎬を削ってる世界だ

227 名前:デフォルトの名無しさん (ワッチョイ ca2c-rVtL) mailto:sage [2020/03/02(月) 00:40:51 ID:8PHDRupm0.net]
Ruby による今世紀最大の起業家、Vagrant のMitchell Hashimoto(HashiCorp)も、
Go のTerraform へ行った

今や主戦場は、Docker, Kubernetes になった

でも、サーバーの基本は、Ruby。
Node.js も、Rubyのコピーだから

Spring Boot も、Rails のコピー

228 名前:デフォルトの名無しさん mailto:sage [2020/03/02(月) 01:33:56.26 ID:AuxsFe1o0.net]
>>217
>>219
おまえもウェーイ系なのに無理してレスすんな

229 名前:デフォルトの名無しさん mailto:sage [2020/03/05(木) 19:13:20.03 ID:h922Dn8C0.net]
>>204
>柴田望洋はC言語系で何冊か読んだが
>内容がすごく簡潔で短い時間でまとめ的な知識を頭に入れたり
>特定のトピックを復習したいときには有用

いかにも教科書って感じの本書くよね
オレもオススメできる著者だと思うぞ!

230 名前:デフォルトの名無しさん (ブーイモ MM7f-Pim3) mailto:sage [2020/03/05(木) 19:35:07 ID:1tYxfkRNM.net]
本屋いったらrubyの本は駆逐されてた

231 名前:デフォルトの名無しさん (ワッチョイ cbad-wzO4) mailto:sage [2020/03/05(木) 21:34:51 ID:h922Dn8C0.net]
すっかりPythonの本に置きかわったよな!
やっぱ人工知能ブームに乗れなかったのがデカイ



232 名前:デフォルトの名無しさん (ワッチョイ 9fa5-HL4i) mailto:sage [2020/03/06(金) 14:08:05 ID:gkPkCuAw0.net]
・P系言語には絶対にPを付けるべきであった
・endがある言語には終わりがある

オカルト方面の理由だとこのようになる

「pascalは終わった」とは業界の定型句だが終わったのはendがあるからだ
なので「end」という文字の視覚的影響は思いの他大きいのではなかろうか

代わりにpythonはselfを見続けることになる

他の理由としては、我々は「ぱい」と発音したい生物である、という、これまたオカルトな理由だ
特にPから始まる単語は人類にとって基本的・根源的らしい
「PyPI」とかどーすんだコレとか思っちゃうような発音の存在こそが、pythonを存続させている大きな原動力だ

233 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 16:38:00.92 ID:Z17kfdKR0.net]
なぜ差が付いたか RubyとPython
――(日本語圏の)慢心、(AI)環境の差

234 名前: []
[ここ壊れてます]

235 名前:デフォルトの名無しさん (アウアウエー Sa3f-xiWk) mailto:sage [2020/03/06(金) 20:06:25 ID:dfpAZ0dma.net]
cobol には end があるが、しぶとく生き残っている
早く絶滅してほしいものだが

236 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 21:40:53.72 ID:f8XVsIbI0.net]
Rubyの方がCOBOLより先に死滅する希ガス

237 名前:デフォルトの名無しさん [2020/03/06(金) 22:57:29.86 ID:rcgbHB5O0.net]
慢心と言うより
補助金事業になったら碌なことにならない例の一つ

238 名前:デフォルトの名無しさん (ワッチョイ cbad-wzO4) mailto:sage [2020/03/07(土) 03:49:31 ID:meF2wfp30.net]
補助金が腐らせるの
日本のあるあるだな!

239 名前:デフォルトの名無しさん (ワッチョイ ef8c-NYnE) [2020/03/07(土) 12:58:20 ID:Q0oLpIzl0.net]
>>226
コメントアウトの仕方

240 名前:デフォルトの名無しさん (ワッチョイ 2ba5-Inmc) mailto:sage [2020/03/07(土) 13:58:54 ID:H7f33zo10.net]
Rubyは日本の言語ではなくて
日本発だけど
日本からアメリカのユタ州に税金を抜かれるだけの言語だ

241 名前:デフォルトの名無しさん [2020/03/07(土) 16:10:40.97 ID:ZoK+qwRc0.net]
補助金で食える人数も限られてるから、余計に閉鎖的になってく



242 名前:デフォルトの名無しさん mailto:sage [2020/03/07(土) 19:42:14.60 ID:meF2wfp30.net]
補助金で喰える上級Ruby国民は安泰だけど
下級Ruby国民はPythonに逃げ出してる現状

243 名前:デフォルトの名無しさん (ワッチョイ 4b2d-hds7) [2020/03/10(火) 16:47:55 ID:rx4TAX460.net]
Rubyの高額教材屋も増えまくってたり、こんなの国が金を出して支援するもんじゃないよもう

244 名前:デフォルトの名無しさん (ワッチョイ ab01-xzLc) mailto:sage [2020/03/10(火) 21:55:43 ID:uPXabSQ00.net]
perlの保守性の低さについて何も学ばなかったから。

245 名前:デフォルトの名無しさん mailto:sage [2020/03/15(日) 06:29:59.66 ID:d7tE7oy90.net]
リファレンスマニュアルの正規表現の一覧に
(<=pat) 肯定後読み
となってるけど正しくは (?<=pat) ですよね

246 名前:デフォルトの名無しさん mailto:sage [2020/03/15(日) 07:01:08.84 ID:fxB2xu91r.net]
せやね

247 名前:デフォルトの名無しさん (ワッチョイ 698f-tF/6) mailto:sage [2020/03/17(火) 10:26:17 ID:55EeZ8o40.net]
AI環境の差は大きいっすねー
保守性とかどうでもいいしrubyの文法は好きだけど、今から勉強する人にはphthon勧めざるを得ない

248 名前:デフォルトの名無しさん (ワッチョイ a1ad-M7Q/) mailto:sage [2020/03/17(火) 11:47:19 ID:xPTEZvMY0.net]
PythonはAIライブラリそろってるからな

249 名前:デフォルトの名無しさん mailto:sage [2020/03/17(火) 18:17:35.92 ID:Np3/43wU0.net]
機械学習や統計処理のために
プログラミングできるようになりたいというひとは
迷わずPythonから初めればいいけど
明確な目的がない場合はRubyから初めさせたほうが
プログラミング自体の習熟が断然早い

1ヶ月程度でプログラミングの基礎を身につけたら
後は好きなやつやればいいと思う
新卒で2~3言語学ばせるABテストとかやってみたいね

250 名前:デフォルトの名無しさん mailto:sage [2020/03/17(火) 18:19:24.38 ID:ybHHyXnP0.net]
ABテストやってないのになんでRubyからの方がいいって分かるの

251 名前:デフォルトの名無しさん (ドコグロ MM95-Syvm) mailto:sage [2020/03/17(火) 18:38:35 ID:7aCFf3OgM.net]
明確な目的のない奴にRails専用スクリプト(別名Ruby)を勧めるのはさすがにどうかと



252 名前:デフォルトの名無しさん mailto:sage [2020/03/17(火) 19:08:20.64 ID:55EeZ8o40.net]
別にrailsなんかなくたってperlよりモダンな汎用スクリプト言語ではあるやろ

253 名前:デフォルトの名無しさん mailto:sage [2020/03/17(火) 19:19:47.39 ID:7aCFf3OgM.net]
>>244
Windowsでまともに使い物にならないのは汎用スクリプトとしては致命的
ぶっちゃけPythonがビッグデータやAIで持て囃されてるのもWindowsと相性いいからだよ
ビッグデータやAIはエンタープライズで金になるテーマだからWindowsと相性悪いのは論外

254 名前:sage (ワッチョイ a265-aX25) [2020/03/17(火) 22:30:48 ID:Zy9Qhkko0.net]
つまり、わざわざRubyスレまで乱入してしまうほど、
Python信者にはRubyへのコンプレックスが強いってことね

255 名前:デフォルトの名無しさん (ワッチョイ d233-YfnF) mailto:sage [2020/03/17(火) 22:32:51 ID:Ai6ps0PO0.net]
じゃあPowerShellで!

256 名前:デフォルトの名無しさん (ワッチョイ c201-Ruah) mailto:sage [2020/03/17(火) 23:16:01 ID:Np3/43wU0.net]
>>242
C#, JS, Python, Ruby他で初心者教えた経験から来る個人の感想
逆になんでABテストやらないと分からないと思うの?

257 名前:デフォルトの名無しさん (ワッチョイ 02a5-5LgE) mailto:sage [2020/03/17(火) 23:40:22 ID:ybHHyXnP0.net]
そりゃ教師そのものがRubyが得意でRuby贔屓ならRubyを教えるのが上手いんでしょ
だから生徒はRubyの習熟が早くなる
だから本人ですら「ABテストは必要」って思ってるんでしょ

要するに生徒の言語取得速度は教師の得意言語の習熟度合いに比例する

258 名前:sage (ワッチョイ a265-aX25) [2020/03/17(火) 23:45:23 ID:Zy9Qhkko0.net]
ぶっちゃけ、Rubyに慣れると、Pythonでコレクションを使うことが苦痛になるんだよな


「コレクションが最高にイケてる言語を作ろう(dat落ち)」から引用
mevius.2ch.net/test/read.cgi/tech/1491491123/43-45

> 43 1 名前:デフォルトの名無しさん Mail: 投稿日:2017/05/05(金) 18:00:36.59 ID:oGFFYBoD
> コレクション使ってて使いづらいと思うことも最近は減ってきたよな
> 昔より言語が進歩してるんだろか
>
> 44 名前:デフォルトの名無しさん Mail: 投稿日:2017/05/05(金) 21:23:00.44 ID:Qc8J8Hpx
> >>43
> でもねぇ、世の中にはコレクション操作が使いづらい
> 退化した最悪な言語が存在する
>
> d.hatena.ne.jp/edvakf/20090405/1238885788
>
> 元々は手続き型として設計された簡潔な言語だったけど、
> オブジェクト指向やら関数型やらを行き当たりばったりに増築し続けたおかげで、
> コレクション操作に関する「一貫性」という設計哲学が破綻してしまった例だね
>
> 45 名前:デフォルトの名無しさん Mail: 投稿日:2017/05/05(金) 21:52:01.71 ID:Qc8J8Hpx
> [Ruby]
> a.sort().reverse().map{|x| x.to_s}.join('-')
>
> [JavaScript]
> a.sort().reverse().map(function(x) { return x.toString() }).join(“-“)
>
> [Python]
> '-'.join(map(lambda x: str(x), reversed(sorted(a))))

259 名前:sage (ワッチョイ 5365-f0Va) [2020/03/18(水) 00:02:08 ID:NlFyVHMs0.net]
>>250 のコレクション操作を例にすると、Rubyならメソッドチェーンが
左から右へ自然と流れるから、ヒストリー機能を利用して
対話的なプログラミングが楽々と実践できる

$ irb
irb(main):001:0> a = [1,4,3,2]
irb(main):002:0> a.sort
=> [1, 2, 3, 4]
irb(main):003:0> a.sort.reverse
=> [4, 3, 2, 1]
irb(main):004:0> a.sort.reverse.map(&:to_s)
=> ["4", "3", "2", "1"]
irb(main):005:0> a.sort.reverse.map(&:to_s).join('-')
=> "4-3-2-1"
irb(main):006:0>

Ruby利用者にとっては特別でもなんでもない当たり前の常識だけど、
Pythonの対話環境じゃ無理なのが、いやはやなんとも

260 名前:デフォルトの名無しさん (ワッチョイ 292c-cvBQ) mailto:sage [2020/03/18(水) 00:49:04 ID:LQtyodHE0.net]
元々、Ruby/Groovy は似てる。
JavaScript, Kotlin も、Ruby/Groovy に似せてきてる

>>241
有名な雑食系エンジニア・KENTA も、YouTube で言ってるけど、
将来的に、機械学習・AI をやりたいからと言って、Python から始めるのは間違いです!
初心者は、Ruby でプログラミング自体を学ぶべき

Ruby on Rails を一通りやると、アプリ製作の全工程を学べる。
後はそれを他言語へ置き換えるだけ

それと、多くの学校が、Ruby を勧めるのは、就職率が高いから。


261 名前:Python の場合は、web系の仕事が、1/10 しかない

機械学習・AI は、大学院・英検準一級などの高学歴が必要だから、
高卒などのプログラミング初心者を雇わない

高卒web系プログラマーは、Ruby。
高学歴総合職は、Python

この内、学校で教えられるのは、Ruby。
Pythonを教えても、就職できないから詐欺になってしまう
[]
[ここ壊れてます]



262 名前:デフォルトの名無しさん (ワッチョイ d9ad-NT4g) mailto:sage [2020/03/18(水) 04:59:33 ID:/KOWoh670.net]
>>244
それな
RailsなくてもRuby単体でも十分快適

ただWindows環境とデスクトップでのGUIが
どっちもイマイチだからWeb専用言語
みたいな扱いになってるんだろうか?

263 名前:デフォルトの名無しさん (ワッチョイ d9ad-NT4g) mailto:sage [2020/03/18(水) 05:02:26 ID:/KOWoh670.net]
>>250
Rubyは文法がシンプルで書きやすいんだよな
書きやすさだけで言ったら
Ruby > Python >>> JavaScript

JavaScriptは変なクセと
ローカルルールが多すぎる

264 名前:デフォルトの名無しさん (ワッチョイ 29d2-CgSh) [2020/03/18(水) 08:17:19 ID:r6r+WwC90.net]
>>250
Rubyのjoinなら事前の文字列化は不要なので
a.sort.reverse.join('-')

265 名前:デフォルトの名無しさん [2020/03/18(水) 13:14:11.40 ID:fwLKdVFoF.net]
語順に拘る必要は無いと思う
a = [3,5,1,2,4]
'-'.join(pd.Series(a).sort_values(ascending=False).apply(str))

266 名前:デフォルトの名無しさん (ワッチョイ 9301-lXNI) mailto:sage [2020/03/18(水) 14:43:54 ID:mQYnVt2r0.net]
>>249
違うよ
教えるコアな要素は共通にもかかわらず
初心者がつまづく内容や頻度だったりそれを自己解決できる割合が言語によってかなり違う
それが習熟速度に影響を与える一番の要因

ABテストやってみたいねと書いたのは複数言語を学習する順番が
プログラミング習熟度に与える影響の調査をペーパー書けるくらいフォーマルにやってみたいねって話
3言語なら最低6グループ必要になるわけで
統計的に意味ある人数集めてそんなテストするの普通の会社では無理だからね
Aグループ: Ruby -> Python -> JavaScript
Bグループ: Python -> JavaScript -> Ruby


267 名前:デフォルトの名無しさん (ワッチョイ 9301-lXNI) mailto:sage [2020/03/18(水) 14:56:08 ID:mQYnVt2r0.net]
>>256
思考の順序とコードで表現する順序が近ければ近いほど
思考ノイズが少なくて初心者に限らず人間には理解しやすい
単にできればいいってもんじゃない

結局Pythonでわかりやすく読みやすいコードを書くには
自然な思考順序と異なる部分をラップした関数を独自に定義していくか
Pythonで表現できる順序に自分の思考順序を合わせていくしかなく
一般に読みやすいと思えるコードを書く労力がRubyに比べると段違いで多い

少し前にPythonスレで質問があったflattenがいい例

268 名前:デフォルトの名無しさん mailto:sage [2020/03/19(木) 04:20:21.38 ID:JDU05jIv0.net]
Ruby の偽は、nil, false の2つだけだが、
JavaScript, Python では、各型に偽があるので、10個ぐらいある

こういう書き方ができてしまうのが危険!
整数の0 は偽

昔のC でも、MISRA-C などのコーディング規則で禁止していたもの。
条件式に、bool 値とみなされるもの以外を、
例えば、単純な整数などを使ってはならない

let ary = [ ]
let message = ""

if ( ary.length ) {
message = "真"
} else {
message = "偽"
}

console.log( message ) //=> 偽

269 名前:デフォルトの名無しさん mailto:sage [2020/03/19(木) 07:34:00.79 ID:Twc2892j0.net]
>>258
Rubyの文法は自然だと思う

>>259
ゼロを偽に使うのは筋悪だね

270 名前:デフォルトの名無しさん mailto:sage [2020/03/19(木) 09:26:18.85 ID:YUAN2W2v0.net]
コマンドが正常に終了した時は0を返すもんですよ

271 名前:デフォルトの名無しさん [2020/03/19(木) 12:39:59.01 ID:Xi+VoJGEd.net]
Rubyが理解できれば、JavaScriptもだいたい理解できるってまじっすか?



272 名前:デフォルトの名無しさん (ワッチョイ 292c-cvBQ) mailto:sage [2020/03/19(木) 13:04:35 ID:JDU05jIv0.net]
Ruby・Groovy は似てる。
JavaScript, jQuery, Kotlin は、メソッドチェーン中心で、Rubyに似せてきてる

サーバー側のNode.js は、Rubyのコピー。
npm(node package manager), yarn は、Bundler のコピー

CakePHP, Spring Boot は、Rails のコピー。
だから、流行った

Rails がサーバー側の標準。
だから、RubyからLinux とか、サーバー側へ進む人が多い

273 名前:デフォルトの名無しさん (ドコグロ MM95-u5rl) mailto:sage [2020/03/19(木) 13:10:40 ID:TVS3Wm7/M.net]
>>262
RubyはRails Scriptとして使うだけならさほど難しくはないが純粋に言語としては極めて複雑な部類で、
Rubyを理解した、と自信を持って言えるレベルならJavaScriptなどもはや楽勝

274 名前:デフォルトの名無しさん mailto:sage [2020/03/19(木) 13:16:56.47 ID:Twc2892j0.net]
>>262
Rubyを覚えれば
Pythonはだいたい理解できる

JavaScriptはちょっと理解できる
クセがある部分が多いから

まあ2015でクラス構文が入って
だいぶマシになったけど

275 名前:デフォルトの名無しさん (ワッチョイ 13a5-TOPM) mailto:sage [2020/03/19(木) 13:49:34 ID:PJNEdIzn0.net]
クラスが入っただけでマシになった、ってことか?

276 名前:デフォルトの名無しさん (ワッチョイ 292c-cvBQ) mailto:sage [2020/03/19(木) 14:07:04 ID:JDU05jIv0.net]
JavaScript のクラス構文

class Card {
constructor( number ) { this.number = number }
}

let cards = [ ]

for ( let count = 1; count <= 5; count++ ) {
cards.push( new Card( count ) )
}

console.log( cards.map( x => x.number ) ) //=> [ 1, 2, 3, 4, 5 ]

277 名前:デフォルトの名無しさん (オッペケ Sr85-NT4g) mailto:sage [2020/03/19(木) 16:59:22 ID:88pUuzIXr.net]
JavaScriptはクラス定数すら定義できないからな
最近のはしらんが

278 名前:デフォルトの名無しさん mailto:sage [2020/03/19(木) 17:00:49.00 ID:DXn00lXA0.net]
Pythonはうんこだが、Rubyのメソッドチェーンも今となってはゴミの部類で
パイプライン演算子こそが正解

279 名前:デフォルトの名無しさん [2020/03/19(木) 17:26:29.02 ID:yS5RdDEsF.net]
codepad.org/DO0Yq0CS
codepad.org/jmDGu9SR

280 名前:デフォルトの名無しさん (ワッチョイ 1161-44a/) mailto:sage [2020/03/20(金) 00:53:19 ID:405ti7Ej0.net]
>>264
JS は、promise, then, async, waitUntil, ServiceWorker(PWA)などの部分がかなり難しく感じる。
event の bubbling phase, capture phase, target phase と絡んで
cancelBubble, stopPropagation, preventDefault
の話も正確に理解するのはなかなか難しい。

281 名前:デフォルトの名無しさん (ワッチョイ 1161-44a/) mailto:sage [2020/03/20(金) 00:56:41 ID:405ti7Ej0.net]
event.waitUntil()
event.respondWith()
はいまだにちゃんと理解できてない。
ServiceWorkerのWorker Lifecycleも物凄く理解が難しい。



282 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 01:05:01.24 ID:405ti7Ej0.net]
さらに、Blob の概念も独特で難しい気がする。

283 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 01:07:27.55 ID:405ti7Ej0.net]
これも理解できない。
誰かに教えてほしい。

addEventListener('fetch', event => {
// Prevent the default, and handle the request ourselves.
event.respondWith(async function() {
// Try to get the response from a cache.
const cachedResponse = await caches.match(event.request);
// Return it if we found one.
if (cachedResponse) return cachedResponse;
// If we didn't find a match in the cache, use the network.
return fetch(event.request);
}());
});

284 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 01:51:15.32 ID:b2ihZgLg0.net]
>>271
その中で言語の要素はpromise/then/async

285 名前:フ3つだけ
それも全部Promise

言語とフレームワーク/APIは分けて捉えないと
RubyとRailsを混同してるのと同じ
[]
[ここ壊れてます]

286 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 01:54:59.68 ID:405ti7Ej0.net]
>>275
でも今のJSでPromiseを避けて済ますことは難しい。
特にPWAのHelloWorld的なプログラムで>>274のように、
Promise, async, await, respondWith などの難しいが概念が同時に出てきてしまい、挫折してしまう可能性が高い。
やりたいことは単に、ウェブアプリのアイコンをホーム画面に出したいだけだと言うのに。

287 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 09:01:29.50 ID:CQQp7Y750.net]
jQuery でも基本は、Promise。
成功・失敗時の処理を書けばよい

async/await は、非同期を同期的に書ける。
内側にネストしないように書ける

288 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 10:07:25.86 ID:IqcuAu3DM.net]
>>276
>でも今のJSでPromiseを避けて済ますことは難しい。

言語が提供する機能とそれ以外を区別しろって言われてこれかよw
Promiseが理解できないのも納得

289 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 10:14:58.61 ID:u1wBzCgK0.net]
>>276
× でも今のJSでPromiseを避けて済ますことは難しい。
○ 非同期プログラミングをするならどの言語でも一緒
GUI関連は大抵の言語で非同期処理をする
要するに画面の描画をブロックしてはいけないからだ。

RubyはそもそもGUIとかでてこないから
使わないだけ

290 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 11:04:22.80 ID:405ti7Ej0.net]
>>279
例えば、Win32APIなど非同期処理もMSDNを読めばちゃんと理解できる。
ところが、Promiseは公式サイトが何を言っているのか分からないので
99%の人が理解できない。

291 名前:デフォルトの名無しさん [2020/03/20(金) 11:30:29.28 ID:nAHhYb7gF.net]
馬鹿除けにちょうど良い機能やん



292 名前:デフォルトの名無しさん mailto:sage [2020/03/23(月) 10:55:32.08 ID:mWzqBLYF0.net]
jsは伝統的にコールバックをやってきたというのを知っていないと理解は難しいかもね
promiseはコールバック地獄の救世主だからそれなしでは語れない
イベント系はもともとクリックされたらみたいなこととこから始まってるのを知ってないとイメージがつかめないだろうな

293 名前:デフォルトの名無しさん mailto:sage [2020/03/23(月) 10:59:24.89 ID:7lDoSnDw0.net]
Cをみりゃ分かる
コールバック地獄の救世主なんていない
まやかしだ

294 名前:デフォルトの名無しさん [2020/03/24(火) 12:55:54.95 ID:n56XI6Ab0.net]
Windows 10, WSL, Ubuntu 18.04 を起動して、ユーザーのホームディレクトリで、
Ruby のバージョンマネージャーのrbenv-installer を実行したけど、

rbenv / rbenv-installer
https://github.com/rbenv/rbenv-installer/blob/master/bin/rbenv-installer

これの34行目
rbenv="$(command -v rbenv ~/.rbenv/bin/rbenv | head -1)"

rbenv は、初回は空文字列だが、インストール後には、rbenv となる

38行目
cd "${rbenv%/*}"

これは、cd rbenv するが、rbenv というディレクトリは存在しないのでエラーになる!
.rbenv なら存在するけど

51行目
git pull --tags origin master

なので、git pull されない

この38行目は、バグなのかな?

295 名前:284 mailto:sage [2020/03/24(火) 13:30:12.20 ID:n56XI6Ab0.net]
rbenv-installer の間違いの訳ないよな。
漏れの手順・環境がおかしいのか

初回はホームディレクトリで実行して、
インストール後はホームディレクトリではなく、~/.rbenv ディレクトリで、実行するのかな?

eval "$(rbenv init -)"
してるけど、まだどのバージョンも入れていないから、
rbenv というディレクトリは存在しないのかも?

バージョンを入れたら、rbenv というディレクトリが作られるのかも?

296 名前:デフォルトの名無しさん [2020/03/24(火) 13:32:10.90 ID:WT9cP8p50.net]
文句言う前に
VMでも何でも良いから
素の生インスコ環境造って
他の影響を排除してみ

297 名前:デフォルトの名無しさん (ワッチョイ 8b14-9KJh) mailto:sage [2020/03/24(火) 15:16:18 ID:fj9Tix3R0.net]
>>284
知らんけどさぁ。そのコードだけ見て判断するなら
> rbenv="$(command -v rbenv ~/.rbenv/bin/rbenv | head -1)"

まずrbenvには普通はコマンドのフルパスが入る。
二番目の~/.rbenv/bin/rbenvはわかりやすく、そこにrbenvコマンドがあればそのパス
一番目は、rbenvコマンドをPATHから検索して見つかったものが入る。だから本来はフルパス
38行目の cd "${rbenv%/*}" からもフルパスが入ってるという前提で
rbenvコマンドがある前提でそのディレクトリに移動しようとしている。

もし本当に rbenv変数に rbenv という文字列が入るとしたら
おそらく rbenvがシェル関数の場合だろう。

rbenvというシェル関数は、実は rbenv を使用していると作られる。
正確には eval "$(rbenv init -)" の実行時に定義されている。

しかし rbenv-installer は別コマンドだ、現在のシェルで定義しているシェル関数の rbenv が
呼び出したrbenv-installerという子プロセスから見つかるはずがない。

この前提が崩れるとしたら、
1. rbenv-installer を . コマンド (または source コマンド)で呼び出している。
意図的にやらない限り、そうはならないし、やってるのだから気づくだろう。

そしてもう一つ。
2. rbenvシェル関数がexport -fされている場合だ。通常exportできるのは変数だけなのだが
bashの変な機能で関数もexportできて、それを子プロセス(当然bashに限る)から参照できてしまう。
envコマンドで環境変数一覧を表示してみれば、BASH_FUNC_rbenvという特殊な名前で
rbenvシェル関数のコードが環境変数に設定されてるのが見えないか?だとしたらそれが原因だ。
普通は関数をexportしてるはずがないんだが、どこかでなにかのついで全シェル関数をexportとかやってないか?

3. もしくはBASH_ENV環境変数を使ってないか?これはbash起動時に自動的に
シェルスクリプトを実行するための変数だ、そこでrbenvシェル関数を定義していたりしないか?

298 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 15:26:44.36 ID:fj9Tix3R0.net]
まあバグとまでは言わんけど、対応漏れとして / で始まらないものは
シェル関数として省くとかすれば対応は可能かもしれんなぁ。
それ周りの解決法は調べた事ないので、どうするのがベストなのかしらんけど

299 名前:284 mailto:sage [2020/03/24(火) 17:01:58.24 ID:n56XI6Ab0.net]
rbenv のトップページを参考にして、実行した
https://github.com/rbenv/rbenv

Basic GitHub Checkout の所で、rbenv-installer を使った。
すると、git clone で、~/.rbenv の下に、ローカルリポジトリが出来た

次に、~/.bashrc (漏れは、~/.bash_aliases)に、下の2行を追加したので、
常に、bash 起動時には、eval "$(rbenv init -)" が実行される

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

>>287
1. rbenv-installer は、1回やっただけです。
2. BASH_FUNC_rbenv は無いです。
3. BASH_ENV という環境変数も無いです

which rbenv とすると、環境変数PATH に、~/.rbenv/bin を追加しているから、
~/.rbenv/bin/rbenv

確かに、38行目の、cd "${rbenv%/*}" は、rbenv 変数の、最初の/ 以下を削除するから、
パスが入っている事を想定しているのかも?

ただ、2回目以降に、rbenv-installerを実行した場合に、
51行目のgit pull --tags origin master で、
リモートリポジトリから最新を取得するように書いてあるから、
38行目の、cd "${rbenv%/*}" で、エラーになると、51行目へたどり着けないかなと思って

まあ、まだどのバージョンも入れていないから、
バージョンを入れたら、rbenv 変数にパスが入ってくるのかも知れない。
こんなに有名なアプリに、こんな単純なバグがあるとは思えないし、漏れの勘違いでしょう

300 名前:デフォルトの名無しさん (ワッチョイ 0dad-OG1y) mailto:sage [2020/03/28(土) 22:49:31 ID:413BE/qa0.net]
たのしいRuby第5版の古本買ったのでRuby入門します(^_^)/

301 名前:デフォルトの名無しさん [2020/03/28(土) 23:25:45.38 ID:lv ]
[ここ壊れてます]



302 名前:HGCPQW0.net mailto: Windows 10, WSL, Ubuntu 18.04 で、
rbenv で、Ruby 2.6.5 をインストールできた!

CPU-i3 を省エネモード(1コアのみ)で使っていたから、
コンパイルには、25分掛かった

build-essential, openssl, readline, zlib のパッケージが必要だった

sudo apt install -y build-essential
sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev
[]
[ここ壊れてます]

303 名前:デフォルトの名無しさん mailto:sage [2020/04/01(水) 03:54:14.10 ID:PTOn+beS0.net]
VScodeでRuby実行環境作ったけど楽しいは!
サクサク動かして試せる!

304 名前:デフォルトの名無しさん [2020/04/01(水) 05:08:16.41 ID:T/a2Vy7O0.net]
Windows 10, WSL, Ubuntu 18.04 で、
rbenv で、Ruby 2.6.5 をインストールできた!

VSCode のRemote WSL もあるから、改行コードさえ気を付ければ、
Windows側のVSCodeで、Linux側のRubyを動かせる

今までは、WSL のUbuntu アプリを起動して、vim を使ったり、
コマンドプロンプト・PowerShell で、wsl と入力していたけど

RubyInstaller for Windows, MSYS2/MINGW も、いらなくなるかも

305 名前:デフォルトの名無しさん mailto:age [2020/04/01(水) 05:23:37.67 ID:d9NDYWBE0.net]
インスタンスがどれで変数の型がどれでオブジェクトはどれってごっちゃになってわからないのですが
class A=new A() インスタンスはこの行全てを指すのですか?     

306 名前:デフォルトの名無しさん (オッペケ Sr01-KN+/) mailto:sage [2020/04/01(水) 07:10:14 ID:uldFLeaHr.net]
まず日本語の勉強から始めろ

307 名前:sage [2020/04/01(水) 08:45:05.94 ID:Y4BtYbUm0.net]
まず、そもそも class A=new A() は Ruby の文法として完全に誤りだ

Ruby では、クラス A を定義するなら、class A; … ; end と書く
同様に、クラス A からインスタンスを生成して変数 a に代入するには a = A.new と書く

プログラミングが初めてであればオブジェクト指向の概念がゴッチャになるのは
しかたないとはいえ、それ以前にプログラミングの基本から学んだほうが良いと思うよ

308 名前:デフォルトの名無しさん mailto:sage [2020/04/01(水) 09:07:03.23 ID:T/a2Vy7O0.net]
ひとまずこれで、クラスA を定義して、その設計書に基づき、
インスタンス・実体a・b を作った

クラス内に、変数・関数を定義していけば、より本格的なクラスになっていく

class A
end

a = A.new
b = A.new

309 名前:デフォルトの名無しさん [2020/04/01(水) 11:18:53.70 ID:5VJq6KKKF.net]
a = (class A; end).new
とかあるんだっけ

310 名前:デフォルトの名無しさん mailto:sage [2020/04/01(水) 14:38:45.50 ID:8LLFjcSO0.net]
>>294
Rubyにおいてはすべてがオブジェクトなので
変数の型はクラスだと考えてよい
(他言語はそうとは限らない)

インスタンスは個別の状態(変数)を持ったもので
「オブジェクト」という言葉は文脈によって
クラスとインスタンスの両方の意味で用いられる

よくある喩えで言うと人間はクラスで
太郎や花子がインスタンス
太郎と花子はどちらも人間(クラス)だけど
個々の状態(性別や年齢などの変数)は異なる

とりあえずの回答としてはざっとこんなもんだが
オブジェクト指向を本格的に習得したいなら
本で勉強する必要があるだろう

311 名前:デフォルトの名無しさん (ワッチョイ 558f-q/Tg) mailto:sage [2020/04/01(水) 16:10:35 ID:nPBcGZ1y0.net]
1はIntegerクラスのインスタンス
“abc”はStringクラスのインスタンス
[1,2,3]はArrayクラスのインスタンス

Integer, String, ArrayはClassクラスのインスタンス
ClassもClassクラスのインスタンス



312 名前:デフォルトの名無しさん (ワッチョイ 1b8c-CgtG) mailto:sage [2020/04/01(水) 21:25:17 ID:XvdBTC2x0.net]
オブジェクトを使った例文もプリーズ

313 名前:299 mailto:sage [2020/04/01(水) 22:04:08.48 ID:8LLFjcSO0.net]
class Human
attr_reader :age, :sex

def initialize(age, sex)
@age = age
@sex = sex
end
end

taro = Human.new(24,'man')
hanak






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<307KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef