1 名前:デフォルトの名無しさん [2020/12/25(金) 04:24:27.68 ID:aa9Khe9z0.net] プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ 質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。 Ruby on Rails については、WEBプログラミング板で 前スレ Ruby 初心者スレッド Part 66 https://mevius.5ch.net/test/read.cgi/tech/1578068134/ るりまサーチ (リファレンス検索) 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
152 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 22:54:52.82 ID:rfpJ92nWr.net] 意味が分からん。 エラーになるコードと希望する出力は何?
153 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 23:08:46.56 ID:RYaLTPlL0.net] >>152 APIを使用して住んでる地域の時間ごとの過去の天気を見る学習をするはずだったのですが 自分でも何がしたいのかわからなくなってきたのでちょっと出直します。 すみませんでした。
154 名前:デフォルトの名無しさん mailto:sage [2021/04/26(月) 23:31:12.51 ID:rfpJ92nWr.net] >>153 おう、がんばれ
155 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 00:08:05.54 ID:6stPm5Ss0.net] >>151 変数名と値(リテラル)の区別があやふやなんでは? 変数名をクォートしようとしている時点でヤバイ。
156 名前:デフォルトの名無しさん mailto:sage [2021/04/27(火) 16:05:13.93 .net] >>148-150 ありがとうございます。 rubyのインストールが上手く出来なかったので明日またやってみます。
157 名前:デフォルトの名無しさん mailto:sage [2021/04/28(水) 22:23:58.72 .net] 145です。 出来ました。ありがとうございます。
158 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 21:24:36.83 ID:DJ/L1TU20.net] >>150 Array#to_csvってかなり非効率的なんで避けたほうが無難 csv_str = CSV.generate{|csv| result_ary.each{|it| csv << it } }
159 名前:デフォルトの名無しさん mailto:sage [2021/05/03(月) 11:06:41.86 ID:B6Xr9eKd0.net] Pythonみたいに行けてるエクセルライブラリが欲しい。。
160 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 09:35:54.83 ID:NUn3zAQRa.net] >>158 非効率というのは遅いって事ですか?
161 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 10:19:17.28 ID:iLdhy1ll0.net] >>160 require "bundler/inline" gemfile do source "https://rubygems.org" gem "benchmark_driver" end Benchmark.driver do |x| x.prelude %{require "csv"} x.prelude %{ITEMS = Array.new(1000){ ["fooo", 12345,6789] }} x.report "to_csv", %{ csv_str = ITEMS.map{ _1.to_csv }.join } x.report "&:to_csv", %{ csv_str = ITEMS.map(&:to_csv).join } x.report "generate", %{ csv_str = CSV.generate{|csv| ITEMS.each{|it| csv << it } } } end 計測すると6倍ほどto_csvの方が遅い事がわかる to_csvは https://github.com/ruby/csv/blob/efb257e28f85741fb5c2637f707121e55e4c5ca9/lib/csv/core_ext/array.rb https://github.com/ruby/csv/blob/efb257e28f85741fb5c2637f707121e55e4c5ca9/lib/csv.rb#L1452 見ると分かるがCSV.new等を毎回行う手抜き実装(バグりにくいというメリットは確かにある) 1行だけならともかく複数行をcsv化したいなら微妙
162 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 11:11:15.22 ID:heOXda5CM.net] 実際にはどうせファイルに書き込むんだからファイルIOがボトルネックになるんで誤差だよ 無意味なベンチマークだね
163 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 11:18:11.79 ID:VEm96Egx0.net] >>162 キャッシュなしフロッピーディスク💾を使ってるのかな?w
164 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 11:41:45.65 ID:iLdhy1ll0.net] >>162 Benchmark.driver do |x| x.prelude %{require "csv"} x.prelude %{require "tempfile"} x.prelude %{ITEMS = Array.new(1000){ ["fooo", 12345,6789] }} x.report "to_csv", %{ Tempfile.create{ _1.write ITEMS.map(&:to_csv).join } } x.report "generate", %{ Tempfile.create{ _1.write CSV.generate{|csv| ITEMS.each{|it| csv << it } } }} end 確かに縮まりはしたが うちのオンボロPCでも5倍弱の差が出ました。
165 名前:デフォルトの名無しさん mailto:sage [2021/05/12(水) 22:35:04.85 ID:gVUbVQ8ua.net] 何秒が何秒になったんですか?
166 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 17:26:14.50 ID:iV+6o72S0.net] c="C:\Program Files\7-Zip\7z.exe" p c で出力は > "C:Program Files\a-Zip\az.exe" となってしまうんですが、なんで7がaに変わってしまってるんでしょうか? 2.6.5p114 (2019-10-01 revision 67812) [x64-mingw32]です
167 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 17:31:29.95 ID:DkdlQ1eQ0.net] https://ja.wikipedia.org/wiki/ベル文字 > ベル文字は、ASCIIとUnicodeでは十進数で7 > 1972年に作られたC言語では、ベル文字は文字定数 \aで表される。'a'は"alert"や"audible"の頭文字である。'b'は既にバックスペースに使われていた。
168 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 18:04:34.76 ID:uwqmKkHK0.net] >>166 バックスラッシュ記法で8進数表記のパターンとして解釈されるから 式展開が必要なければシングルクウォートにするといい https://docs.ruby-lang.org/ja/3.0.0/doc/spec=2fliteral.html#backslash ¥007も¥07も¥7も同じ C言語由来のエスケープシーケンス
169 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 18:56:08.30 ID:acqsmkid0.net] >>166 >>168 のシングルクォートよりも、パスの区切り文字を「/」にすることをすすめたい。 パスの区切り文字が「¥」でなければいけないのはコマンドプロンプトなど一部のみ。 だいたいが「/」でも可。
170 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 21:37:59.00 ID:iV+6o72S0.net] >>167-169 まとレスにて失礼します aに置き換わる謎はわかりました シングルクォートなのですが、面倒くさいことにWindowsの決め打ちで空白が入っているので それを考えるとダブルクォートで囲まざるを得ず、けっきょくこんな形になってしまいました c="\"C:\\Program Files\\7-Zip\\7z.exe\"" このあと system("#{c} a -mx9 ...") みたいな形で呼び出します
171 名前:デフォルトの名無しさん mailto:sage [2021/06/01(火) 22:03:40.90 ID:eWE6r8CI0.net] >>170 c = '"C:\Program Files\7-Zip\7z.exe"'
172 名前:デフォルトの名無しさん mailto:sage [2021/06/02(水) 19:46:00.37 ID:onKqKKZNr.net] >>170 すごく短くまとまってるから、一度公式のリファレンス読んだ方がいいよ https://docs.ruby-lang.org/ja/latest/doc/spec=2fliteral.html#string
173 名前:デフォルトの名無しさん mailto:sage [2021/06/02(水) 20:29:52.62 ID:92rWXivp0.net] >>171 ああなるほど それで行けますね 昔は自分でもそんな書き方してたかもしれなかったです >>172 ご案内ありがとうございます シングルクォートとダブルクォートの意味とか違いは理解していたのですが 中に\入れたときとか、とくに168さんに指摘されたように8進数での扱いが特別だということは よく理解していなかったので、これを機会に知識を正確にしておきます
174 名前:デフォルトの名無しさん mailto:sage [2021/06/03(木) 18:27:26.17 ID:peqY6uPj0.net] 完全にプログラミング0からで「スラスラ読めるrubyふりがなプログラミング」を買って始めたのですが macbookairでrbenvでruby3.0.1をダウンロードしてrbenv versionでは3.0.1と表示されるのですがruby -vでは2.6.3と元々入ってるrubyが表示されます まだ何も分かってないのにhomebrewとrbenvのダウンロードが上手くいかず色々見ながらやってきたので余計な事をしてしまったのではないかと心配です
175 名前:デフォルトの名無しさん mailto:sage [2021/06/03(木) 18:56:51.38 ID:peqY6uPj0.net] >>174 ですが 自己解決しました bash profileに何か誤ったものを書き込んでしまったようで消したら3.0.1に切り替わりました
176 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 14:54:45.98 ID:uC9Joojh0.net] Rubyで、syntax error 的なものが生じていても、そのまま実行が続けられている ように見える現象が時々起きる。 これは何が起きている? errorが起きた場所で停止させる方法はある?
177 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 15:26:37.54 ID:SGijWivar.net] rescue SyntaxError
178 名前:デフォルトの名無しさん mailto:sage [2021/06/05(土) 20:10:36.75 ID:K+vX0E1p0.net] >>176 そのエラーが起こった時に何が表示されているの?
179 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 16:19:02.76 ID:1amPE6il0.net] >>178 例えば、xxx という変数を定義してない状態で、 [aaa.rb] def some_func() ・・・ print( "xxx=#{xxx}\n" ); ・・・ end という関数を呼び出すと、 aaa.rb:3882:in `some_func': undefined local variable or method `xxx' for main:Object (NameError) from aaa.rb:5638:in `main' from aaa.rb:5667:in `<main>' と出るが、そのまま実行が続けられてしまう。
180 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 17:06:19.62 ID:B1fTG1Q6r.net] >>179 begin rescue end の構造してるだけじゃないの
181 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 17:09:33.22 ID:1amPE6il0.net] >>180 そういうものは使ってない。
182 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 17:12:50.30 ID:B1fTG1Q6r.net] >>181 再現するコードを共有することはできますか?
183 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 17:37:47.34 ID:1amPE6il0.net] >>182 できない。 大事なコードだから非公開。
184 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 17:44:51.53 ID:B1fTG1Q6r.net] そうであれば我々にはわかりえない。 まあどっかでrequireをオーバーライドしてるとかじゃないの。
185 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 18:17:08.76 ID:1amPE6il0.net] >>184 全部自分で書いたコードで、Rubyの基本的な機能しか使ってない。 また、検索してみたが、begin や rescue というキーワードは全く使ってなかった。
186 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 21:13:38.74 ID:kq17Ee/S0.net] 別スレッドも停止させたいのであれば、Thread.abort_on_exception=trueが必要とか?
187 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 22:12:59.95 ID:1amPE6il0.net] >>186 シングルスレッドしか使ってない。
188 名前:デフォルトの名無しさん mailto:sage [2021/06/06(日) 23:44:17.52 ID:///+rfU80.net] もうええて。 追加情報がなきゃあもうムリやろ。
189 名前:デフォルトの名無しさん [2021/06/07(月) 08:20:47.92 ID:Q1HfUOnq0.net] バグだね。
190 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 12:05:22.54 ID:Qb3DiLXp0.net] さすがのRubyでも、そんなアホみたいな「バグ」なんかないやろ。w
191 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 13:11:30.61 ID:tJ2RoPVV0.net] おまえさん一人だけの症状なんだし再現できるコード・環境を出せない以上おま環
192 名前:デフォルトの名無しさん mailto:sage [2021/06/07(月) 13:15:54.00 ID:pl6618+T0.net] >>170 コマンドプロンプトでも普通に、/ を使える。 これで実行できる ruby C:/Users/Owner/Documents/a.rb パスに空白が入っている場合は、シングル・ダブルクォーテーションで囲む PowerShell(PS)でも良いし。 Windows Terminal なら、Bash, PS、コマンドプロンプトの3つを使える
193 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 10:27:31.04 ID:ljhkY4kR0.net] Powershellで標準出力をリダイレクトしてると Ctrl-C押した時at_exitに飛ばずに死ぬの何なの?
194 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 11:47:19.54 ID:dOMi6vvz0.net] そのアプリが、SIG-INT・中断をキャッチしない場合は、 SIG-KILL・強制終了されるのだろう 強制終了は、受け身が取れない。 たぶん、デフォルトの挙動は、そうなのだろう
195 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 12:46:57.32 ID:ljhkY4kR0.net] リダイレクトしていなければ普通にat_exitに飛ぶんだよ
196 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 14:00:54.76 ID:8dk2g5lI0.net] 試しにpythonでもatexit使ってみたが同様に強制終了される Traceback出力されるのにatexitは実行されない
197 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 14:04:16.61 ID:xXGg8olZ0.net] Rubyスレなんだが!
198 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 14:34:31.00 ID:8dk2g5lI0.net] powershellがバグってる cmd /c 経由なら正常にリダイレクトおよびctrl+cできたわ
199 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 14:44:58.07 ID:ljhkY4kR0.net] え〜〜マジっすか 検証してくれてありがとうございました。
200 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 17:51:22.97 ID:ljhkY4kR0.net] まずパイプが終了して、それに巻き込まれてpythonのプロセスが落ちるとかなんとか rubyの挙動を調べるためにpythonでググるってなんだかな
201 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 20:59:45.11 ID:7WqSN2WLr.net] そういやパイプ周りの不具合がなんかあったな
202 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 21:13:49.57 ID:7WqSN2WLr.net] と思ったら今回の件と何も関係が無かったわ。 https://bugs.ruby-lang.org/issues/14245
203 名前:デフォルトの名無しさん mailto:sage [2021/06/08(火) 21:15:32.86 ID:S62X2+fs0.net] >>159 ほんと、これは甚だ同意。
204 名前:デフォルトの名無しさん mailto:sage [2021/06/10(木) 21:34:01.60 ID:Hn4s45bFd.net] 現在ラズパイにrubyとpythonを入れて処理を並列に自動実行しようと思ってます ただ台数が多いため一台ごとにソースを変えるのは回避したいです なので理想は起動時に最新のソースに自動で更新です このようなことをしたいときはどのようにするのが一番簡単でしょうか? rubyでサーバーから最新のソースをコピーしたあとにrubyとpythonを実行? 家で使用するのでセキュリティーとかは気にしません
205 名前:デフォルトの名無しさん mailto:sage [2021/06/10(木) 22:40:14.97 ID:t0oieqtV0.net] >>204 rsyncすれば?
206 名前:デフォルトの名無しさん mailto:sage [2021/06/18(金) 09:43:06.27 ID:Jo75oGSbM.net] >>204 厳密に一斉に切り替わらなくてもいいならcronとかで定期的にGitHubからpullする 手段が目的だと堂々と言えるならKubernetesのクラスタ組むとかも面白い
207 名前:デフォルトの名無しさん mailto:sage [2021/06/23(水) 23:47:46.99 ID:vtN99wcma.net] ライブラリのopenのように、 open() do |f| ・・・ end と書いてもよく、 f= open() ・・・ f.close と書いてもいいというクラスor メソッドは どうやって作ればいいのでしょうか。 yieldを使うとイテレータのみになってしまうし、 returnすると下の例だけになってしまいます。
208 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 00:15:52.97 ID:PG/lAwcj0.net] if block_given? で分岐
209 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 07:40:00.21 ID:R0/fGgxp0.net] >>208 ありがとうございます。 うまく作れました。
210 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 07:56:14.83 ID:R0/fGgxp0.net] すみません、もう一つ教えて下さい。 rubyというかプログラムを書くとき全般の注意として、 ファイルopenとcloseはなるべく近くに書くようにと ありました。 恐らくclose漏れを警戒しているのだと思います。 yieldを使えば、以下コードでそれを実現できます。 def fileInterface f= open() begin yield f ensure f.close end end yieldを使わないパターンでは、 closeを近くにかけないのですが解決策あるでしょうか。 def open @f= open() return @f end def close @f.close end openメソッド実行 ・・・ ・・・(大量の処理) closeメソッド実行
211 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 09:32:39.75 ID:+4IsK47J0.net] >>210 大量の処理を関数にして分離。 あるいは、しょせん理想でしかないので、離れていても気にしない。
212 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 10:36:21.12 ID:5MDZvZ/d0.net] >>210 close漏れを警戒するのであれば、openにそのままブロックを渡した方がいい openはブロックの実行結果を返し、ブロック脱出時に勝手にcloseします まぁ、どうせclose漏れしてもそのうちGCに回収されるかプロセス終了時にcloseされる
213 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 11:01:09.55 ID:PG/lAwcj0.net] >>210 yield使った実装とやることは同じ f= open file begin 大量の処理を含むメソッド f # <― yieldがメソッドに変わるだけ ensure f.close end 同じだからこそ毎回同じことを書かなくてもいいようblock付きで呼び出す open(file){|f| 大量の処理を含むメソッド f}
214 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 12:31:52.31 ID:9bIzV4XCa.net] 大量の処理を手続きオブジェクトに分離するのは、やりました。 やっぱりそれしかないかな。 ブロック付きで渡すのはオブジェクト指向ではない コードになりやすく、今回は考えてないです。 また、全体をensureで囲うのは、 さすがにensure対象が暗黙的すぎてちょっとな・・・です。
215 名前:デフォルトの名無しさん mailto:sage [2021/06/24(木) 13:25:07.89 ID:+4IsK47J0.net] >>214 > ブロック付きで渡すのはオブジェクト指向ではない > コードになりやすく そうか? まあ、「オブジェクト指向」にもいろいろあるからな。w
216 名前:デフォルトの名無しさん [2021/07/17(土) 09:58:54.08 ID:yHV+uNLK0.net] railsにおいて あるフォームから特定の変数に送られるデータの内容を固定したいのですがなにかいい方法ありますか? 具体的には <%= form_with model: @hoge do |form|%> <%= form.text_field :name , value: 'hoge'%> <%= form.submit %> <% end %> と書かれている場合 hogeというモデルのnameという変数に必ずhogeが入るようにしたいのですが上の書き方だと初期値にhogeが入るだけで編集可能になってしまいます。
217 名前:デフォルトの名無しさん mailto:sage [2021/07/17(土) 10:48:14.79 ID:xmQE+uIu0.net] openに、ブロックを渡す方法は、 コンテキスト・マネージャーという、多くの言語で使われているデザインパターン これよりも良いものは作れないから、皆が使っている
218 名前:デフォルトの名無しさん mailto:sage [2021/07/17(土) 10:54:23.38 ID:xmQE+uIu0.net] そりゃ、フォームはサーバーへ送られて更新されるものだから、 変更可能のフィールドが普通 変更不可のフィールドにするなら、 そのフィールドをサーバーへ送らないようにしないといけない そういうオプションがあるのかな?
219 名前:218 mailto:sage [2021/07/17(土) 11:08:32.59 ID:xmQE+uIu0.net] 「html disabled readonly」で検索! HTML の <input> 要素には disabled と readonly 属性が存在します disabled : コントロールが無効化され、フォームを Submit しても、値の送信が行われない readonly : 値の変更は行えないが、コントロールは有効なので、 フォームを Submit すれば値の送信が行われる
220 名前:218 mailto:sage [2021/07/17(土) 11:15:24.94 ID:xmQE+uIu0.net] 変更不可のフィールドなら、 <input> 要素などを使わずに、単にテキストを表示すれば?
221 名前:デフォルトの名無しさん mailto:sage [2021/07/17(土) 13:56:18.38 ID:EBHVYdQH0.net] >>216 hidden_field使ってもいいけど そもそもformによる入力=webからの入力は信頼してはいけない
222 名前:デフォルトの名無しさん mailto:sage [2021/07/17(土) 14:27:31.06 ID:7kNL/q5q0.net] >>221 ではどうすればいいでしょうか
223 名前:デフォルトの名無しさん mailto:sage [2021/07/17(土) 16:20:51.36 ID:CYR4F+Ue0.net] >>222 直にソースで書くしか! ちなみに、XSRFも調べとくとええんちゃう?
224 名前:218 mailto:sage [2021/07/17(土) 20:48:35.06 ID:xmQE+uIu0.net] マスアサインメント脆弱性を、strong parameters で防ぐ。 更新できる列を、permit で限定する。 これは、コントローラーでの制限 params.require(:person).permit(:name, :age) Action Controller の概要 https://railsguides.jp/action_controller_overview.html モデルでのバリデは、 Active Record バリデーション https://railsguides.jp/active_record_validations.html Rails ガイド・Rails チュートリアル・黒田努の本などを読むか、 YouTube で有名な、雑食系エンジニア・KENTA のサロンへ入ると良い。 日本6位の、2千人入っている、虎の穴
225 名前:デフォルトの名無しさん mailto:sage [2021/07/18(日) 01:26:53.43 ID:M+6J3Mfd0.net] >>217 ブロックで書くとテストコードが書きづらくないですか? 最近はテストコードのことを考えて、普通に、 file = open(file,'r') とか書いてます。 あと、ブロックはネストするからなあ。
226 名前:デフォルトの名無しさん mailto:sage [2021/07/18(日) 15:19:50.46 ID:WDHzAXg40.net] >>222 何がしたいのか次第 'hoge'で固定するのであればformで入力させる必要はないですし なんらかの方法で生成するのであれば生成するタイミングを考えます 入力フォーム表示前に生成し固定する必要があるのであれば ActiveSupport::MessageVerifier ActiveSupport::MessageEncrypter session などを使う
227 名前:218 mailto:sage [2021/07/18(日) 22:44:25.79 ID:H/NN8O820.net] Rails の便乗質問するけど、 ユーザーの入力値により、条件判断して、 条件1 の場合には、列A だけを更新して、 条件2 の場合には、列B だけを更新する と言うのは、どのように書くの? モデルのcallback かな?
228 名前:デフォルトの名無しさん [2021/07/19(月) 01:48:34.69 ID:0iu7guVA0.net] ruby silver試験は公式問題集をやれば 合格できますでしょうか、学習時間も参考にさせていただきたいです。 silverを考えています。 バージョンがかなり古いとは思いますが、今のrubyとそんなに変わらないと思ってて大丈夫でしょうか
229 名前:218 mailto:sage [2021/07/19(月) 07:03:41.76 ID:sO73HNBd0.net] Ruby の資格は、漏れも取っていない。 下のマネーフォワードの本で、良いと思う 改訂2版 Ruby逆引きハンドブック、2018
230 名前:デフォルトの名無しさん [2021/07/20(火) 08:12:05.37 ID:EkYsR0Mj0.net] 【A型の人ごめん】「まじめ人間」は、自分の人生を生きられず、しかもお金持ちになれない。 https://www.youtube.com/watch?v=ZBSMJHK_b34 【人生観変わる話】「サラリーマン脳」のヤバい特徴5選。 https://www.youtube.com/watch?v=mPCOn0qhW6M&t=15s 【人生終了】情弱がハマる「貧困スパイラル」のリアル。 https://www.youtube.com/watch?v=T3R71zjbolc バカでもわかる!ネットビジネスの始め方。 https://www.youtube.com/watch?v=LGM9VxlfDeo&t=147s 時給労働から卒業しよう!貧乏人が知らない「お金の稼ぎ方」まとめ。 https://www.youtube.com/watch?v=aibytYID1yY 【人生攻略】経験・実績ゼロのあなたが、最短で何者かになる方法。 https://www.youtube.com/watch?v=258RdS9Brxk 【残酷】貧乏人はいつも忙しいのに、お金持ちは暇である理由。 https://www.youtube.com/watch?v=YkRKSgbyyf8
231 名前:218 mailto:sage [2021/07/20(火) 10:14:09.06 ID:nphTU9tH0.net] >>227 自己回答 ユーザーの入力値により、条件判断してはいないけど、 改訂4版 基礎 Ruby on Rails、黒田努・佐藤和人、2018 の400 ページで、 アクションのcreate/update で、 コントローラーのstrong parameters を変える例が書いてある 例えば、下のような感じ params.require(:person).permit(:name) params.require(:person).permit(:age)
232 名前:デフォルトの名無しさん mailto:sage [2021/07/21(水) 10:26:17.53 ID:GSJrQWT80.net] >>231 別に構わんが環境次第でUnpermittedParameters例外出そうな気がするので @person.update(xxx_params.except(:age)) 的な感じのほうがよいかも
233 名前:デフォルトの名無しさん mailto:sage [2021/07/24(土) 17:53:55.08 ID:niZ/VlC90.net] pythonなみの公式チュートリアルがあればいいのに
234 名前:デフォルトの名無しさん mailto:sage [2021/07/27(火) 10:21:46.39 ID:y9fA4YVt0.net] Railsでも何でもいいんですが、ecサイトの様なユーザー登録とログインシステム をRubyを使って簡単に構築するライブラリの使い方が書かれている良い本は 有りませんか?
235 名前:デフォルトの名無しさん mailto:sage [2021/07/27(火) 11:24:07.05 ID:ic7RAKIO0.net] >>234 Ruby on Railsのチュートリアル でいいのでは? 簡単に済ませたいならば、 Shopifyとか外部決済システムに外注すれば?
236 名前:デフォルトの名無しさん mailto:sage [2021/07/30(金) 18:21:13.72 ID:7AkGA5GJ0.net] スクレイピングしたいんですけど何を勉強すればいいですか 不正アクセスに問われたりしないでしょうか? セキュリティ対策はどのようなことに注意すればよいでしょうか?
237 名前:デフォルトの名無しさん mailto:sage [2021/08/03(火) 20:29:25.38 ID:1SQdlJBzr.net] NOKOGIRI
238 名前:デフォルトの名無しさん mailto:sage [2021/08/03(火) 22:35:38.25 ID:3PGqGTvy0.net] >>236 踏み台を準備してそこ経由でスクレイピングする
239 名前:デフォルトの名無しさん mailto:sage [2021/08/04(水) 01:04:19.47 ID:wXXobJu90.net] >>236 スクレイピングの勉強
240 名前:デフォルトの名無しさん [2021/08/04(水) 11:12:04.78 ID:Ud4GmCQc0.net] >>236 とりあえず、関心のあるページをローカルに保存してnokogiriでアクセスしてみれば? crawler部分とscrap部分を分けるのが吉。 つまり、100pagesをスクレーピングするなら、まずhtmlをblob型でDBにinsertしてから欲しいデータをnokogiriで取り出すのだ。
241 名前:デフォルトの名無しさん mailto:sage [2021/08/04(水) 11:45:59.21 ID:BE8GLseK0.net] >>234 よく見るのは、devise gem を使う パーフェクト Ruby on Rails、2020/7 には、載っていない 改訂4版 基礎 Ruby on Rails、黒田努・佐藤和人、2018/9 には少しだけ載っている。 ただし、この本は、Ruby 2.5.1, Rails 5.2 Ruby on Rails 6 実践ガイド、黒田努、2019/12、には載っている ただし、上の黒田努の2冊の本では、devise を使わず、自作している Rails チュートリアル・Rails ガイドも参照 YouTube で有名な、雑食系エンジニア・KENTA のサロンでは、 2千人の未経験者が、Rails の転職用ポートフォリオを作っている。 そこへ入って、聞いた方がよい
242 名前:デフォルトの名無しさん mailto:sage [2021/08/04(水) 12:01:13.97 ID:BE8GLseK0.net] >>236 サイトのrobots.txt を遵守すること! これを守らないと、営業妨害で逮捕される CSS Selector を勉強する。XPath は勉強しなくてよい。 JavaScript も、jQuery 程度は出来た方がよい gem は、Nokogiri, Selenium Webdriver Udemy の山浦清透、2021/6 【作業工程フル公開】エンジニアが30万円案件の制作過程を公開 www.youtube.com/watch?v=tYbVl6N8oxI PHP のLaravel で、マイナビ転職をスクレイピングして、データベースへ保存する 基本、この動画と同じ。 これを、Ruby on Rails へ置き換えるだけ
243 名前:241 mailto:sage [2021/08/04(水) 15:15:35.32 ID:BE8GLseK0.net] >>234 Ruby on Rails, devise の動画 Farstep、2019/9 【Rails】deviseを使ったログイン機能の実装(名前でログインする方法を解説) www.youtube.com/watch?v=Lmq_WLkxp9c
244 名前:241 mailto:sage [2021/08/04(水) 15:35:06.48 ID:BE8GLseK0.net] YouTube で「ruby on rails devise」で検索すれば、日本人の動画も多い Farstep, うるぞー、もぐらストア、 やんばるCODE 守護神・バグ取り名人 たけ
245 名前:デフォルトの名無しさん mailto:sage [2021/08/04(水) 22:15:34.77 ID:y1FxFhCLr.net] jQueryって単語、1万年ぶりに見たわ
246 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 00:10:48.44 ID:r/zZzNU40.net] >>245 一万十歳かな?
247 名前:デフォルトの名無しさん [2021/08/05(木) 12:32:32.94 ID:dqIKXfcM0.net] >>242 >>サイトのrobots.txt を遵守すること! >>これを守らないと、営業妨害で逮捕される どういうことですか? 詳しくお願いします
248 名前:218 mailto:sage [2021/08/05(木) 13:11:38.51 ID:bqGeTZjz0.net] >>231 パーフェクト Ruby on Rails 【増補改訂版】 (Perfect series)、2020/7 の92 ページで、 コントローラー内で、private メソッドを定義して、 条件によって、strong parameters を変える例が書いてある 管理者・一般ユーザーで変える例 params.require(:user).permit(:name, :admin) params.require(:user).permit(:name)
249 名前:242 mailto:sage [2021/08/05(木) 13:20:50.00 ID:bqGeTZjz0.net] >>247 >>242 に書いてある、山浦清透の動画を見れば分かる 各サイトには、robots.txt が置いてあって、 スクレイピングする場合は、必ず30秒空けるとか、 このフォルダはスクレイピングしてはならないとか、多くの条件が書いてある それを守っていないと、営業妨害になる スクレイピングは初心者向きじゃないので、各サイトと契約して、API を使うべき! なぜかと言うと、初心者のプログラムにはバグが多いから、 無限ループしたりして、サイトへ無限にアクセスしたりする それで、営業妨害で逮捕されるかも知れないから、すごく危険! プロでも、スクレイピングはしない。 必ず、サイトと契約して、APIを使う 5ch もそう。契約して、APIを使えと言ってる。 勝手にスクレイピングすると、訴えてくるかも知れない
250 名前:デフォルトの名無しさん [2021/08/05(木) 13:38:00.10 ID:/9S9EoKc0.net] >>249 私のスクレイピングしたいサイトにはAPIは公開されていません またrobots.txtも設置されていません robots.txtでリクエスト間隔の指定なんてあるのですか? 常識的に数十秒から数分に一回程度のリクエストなら問題ないと思いますが 営業妨害ってどういう意味ですか IT企業に勤める知り合いはスクレイピングで求人を出すことがあると言ってましたが嘘でしょうか? 5chでスクレイピングしたら相手にバレて訴えられることがあるのですか?
251 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 14:04:49.73 ID:RzFkoDJoM.net] >>250 あるよ 数分に一回のリクエストで落ちるゴミサイトだろうと、結果的に相手の業務に支障が生じれば業務妨害罪に問われる可能性がある
252 名前:デフォルトの名無しさん mailto:sage [2021/08/05(木) 14:10:13.57 ID:5L8sIm7d0.net] >>250 > 常識的に数十秒から数分に一回程度のリクエストなら問題ないと思いますが > 営業妨害ってどういう意味ですか 誰にとっての「常識」ですか? 某岡崎市の某図書館の「りぶらはっく」の件を知りませんか? (情報リテラシのある側からしたら、) あんな程度のアクセスで逮捕されるわけない「はずだと思う」なのに、 実態は、全部ゾンビ化(作った業者がアレ)していて、 け●さつがわも情報リテラシがなくアレだから、 結果がアレになっちゃったんですよ。 いいですかー、ここは日本です。 訴える側の後ろ側の行政側がアレな場合が多々あり、 情報リテラシがまったくない、矛盾しまくった法治国家なわけですよ。 誰の常識かは、サイトを提供している側が情報リテラシがない場合、その情報リテラシがない前提が常識なわけです。 つまり、その場合、何らかスクレイピングした時点で営業妨害とみなされても仕方ないですよ?