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