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


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

Ruby 初心者スレッド Part 67



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

307 名前:デフォルトの名無しさん mailto:sage [2021/09/19(日) 11:25:51.22 ID:69z175Yv0.net]
>>305
クソみたいな詭弁に意味はない。

308 名前:デフォルトの名無しさん [2021/09/19(日) 12:38:01.81 ID:/yxUr6Cya.net]
ついでに肝心要なパケットは欠損させておくと尚良し

309 名前:デフォルトの名無しさん mailto:sage [2021/09/19(日) 22:18:51.00 ID:BpRp3Dad0.net]
>>301
超サンクス

310 名前:デフォルトの名無しさん mailto:sage [2021/09/21(火) 18:45:09.80 ID:0Go6zndF0.net]
テキストファイルの処理で、段落ごとに時間のかかる作業(数時間単位)を回してるのだけど
その対象のテキストファイル(data.txt)は処理中に追加で内容を追記していくようになっている

def func()
# (ここにすごく時間のかかる処理)
end

f=File.open("data.txt", 'r:UTF-8'){|f|
f.each_line(rs=""){|l|
func()
}
}

ここで、f.each_lineの処理って、関数funcを実行している最中は次のループに行かないはずだよね?
動かしていて、どうも先読みしているような挙動を示しているのだけど、funcの処理が終わるまでは
先読みしないように指定ってできる?

たとえばテキストの内容が

A

B

C

となっていて、段落Aの処理中にBとかCの内容に手を加えたり、新たにDという内容を末尾に加えたりしたい
でも、どうもタイミングによって、最初Aだけだった内容でAを処理中にBを加えた時点ではすでに先読みしてて
Bの処理を飛ばして、それより時間的にも位置的にも後に追加したCの処理をしたり、あるいはCも飛ばして
Dを処理したりしてるような
このあたりのファイルポインタの動きを説明してある情報源はない?

311 名前:デフォルトの名無しさん mailto:sage [2021/09/21(火) 19:08:28.98 ID:SK/JWtta0.net]
先読みバッファの都合でそうなることもあんのかね。知らんけど。
読むタイミングで、tellの結果にseekしたらええかも?f.seek(f.tell())みたいに。
あるいは、バッファを無効にするか。ただし、これは勧めない。テストならばまあ。

情報というか、その手の高レベルなファイル関連関数は、高速化のために裏でバッファを活用してるので、その挙動を想像すれば。

312 名前:デフォルトの名無しさん mailto:sage [2021/09/21(火) 22:56:27.09 ID:0Go6zndF0.net]
>>311
バッファ無効にするのにsyncなんてメソッドがあるのですね
テストみたいなもんなんでこれ使ってやってみます!
ありがとうございました

313 名前:デフォルトの名無しさん mailto:sage [2021/09/22(水) 12:23:29.69 ID:wRl+SBDi0.net]
>>312
もっかい言うけど、バッファ無効はほどほどにな。
ストレージがすり減るぞ。

314 名前:デフォルトの名無しさん [2021/09/23(木) 12:52:09.43 ID:7tGJmFKPF.net]
rubyのglobってなんでこの名前なんですか?語源というか理由は?

315 名前:デフォルトの名無しさん [2021/09/23(木) 12:53:36.67 ID:7tGJmFKPF.net]
>>313
SSDの方が寿命速い説?



316 名前:デフォルトの名無しさん mailto:sage [2021/09/23(木) 13:39:57.36 ID:sOtSHC530.net]
>>314
書き込む前にググれ!

https://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%AD%E3%83%96

317 名前:デフォルトの名無しさん mailto:sage [2021/09/23(木) 14:17:52.01 ID:FwYHDvYwF.net]
xargs にすれば良かった

318 名前:デフォルトの名無しさん [2021/09/26(日) 02:01:31.29 ID:a7XkizLe0.net]
人に迷惑をかけるのはしょうがない
でも
自分のことを棚にあげたら
地獄だよ

319 名前:デフォルトの名無しさん mailto:sage [2021/09/26(日) 22:14:40.89 ID:5RNiLxHe0.net]
>>310
基本的に、読み込み用ファイルに書き込まないようにすべき。
io.seek で使う、ファイルポインターがずれる

例えば、配列でも同じ。
読み込み用配列を読み込みながら、
読み込み要素の前後に、要素を追加・削除すると、要素がずれるのでバグる

基本、同一ファイルじゃなく、入力用・出力用の2つが必要。
それか、データベースでやるとか

シェルスクリプトとか、関数型のElixir のパイプラインみたいに、
元のファイルを更新せずに、次々と出力ファイルを新規作成していくべき

処理A | B | C

他には、処理を分けられるなら、分けた方がよい

普通、バッファリング無しのモードは、
ユーザーの入力を待つような場合に、端末で使うもの。
こういうバックグラウンド処理では使わない

例えば、1回のシステムコールで、1000バイトの読み書きできるのに、
バッファリング無しなら、1000回もシステムコールを呼ぶから、処理時間が千倍になる

バッファリングとは、システムコールする回数を減らすために、
ある程度データが溜まるのを待ってから、処理を行うものだから

320 名前:デフォルトの名無しさん mailto:sage [2021/09/26(日) 23:33:39.09 ID:6v1pd5GW0.net]
余計なお世話や。w
ほっといたれ。

321 名前:デフォルトの名無しさん [2021/09/28(火) 14:07:16.12 ID:yeB6oI220.net]
ファイルパスから簡単に、ディレクトリ名だけを取り出す方法がありますか?
今は、下のようにやっています

file_path = "C:/Users/Owner/Documents/test/a.txt"

p dir_path = File.dirname( file_path ) # ディレクトリパスを取り出す
#=> "C:/Users/Owner/Documents/test"

p dir_name = File.basename( dir_path )
#=> "test"

322 名前:デフォルトの名無しさん [2021/09/28(火) 14:19:10.90 ID:nD0g4rLvF.net]
file_path = "C:/Users/Owner/Documents/baka.test/a.txt"

323 名前:デフォルトの名無しさん mailto:sage [2021/09/28(火) 14:44:05.17 ID:zeEpbK0KM.net]
>>321
必要充分だと思うがなあ。
自分でメソッドにくくりだすくらいやないの?

どうしても圧縮したいなら、text.sub(%r{.*/(.*)/.*}){$1}とか?
未確認。ワイならやらん。w

324 名前:デフォルトの名無しさん mailto:sage [2021/09/28(火) 16:33:03.83 ID:WAJRktfF0.net]
>>321
標準添付ライブラリの pathname

325 名前:デフォルトの名無しさん [2021/09/30(木) 20:28:46.68 ID:AJpnjzaB0.net]
rubyだけdistrolessイメージない
なんでハブられてるの?
Googleはruby嫌いなの?
https://github.com/GoogleContainerTools/distroless/issues/156



326 名前:デフォルトの名無しさん mailto:sage [2021/09/30(木) 20:37:22.69 ID:I7uygAb2M.net]
Google社内ではRubyの使用が許可されていない
当然だよね

327 名前:デフォルトの名無しさん mailto:sage [2021/09/30(木) 20:40:38.51 ID:BaUXpZJur.net]
>>326
googleって言っても一枚岩じゃないからそれは完全に間違い

328 名前:デフォルトの名無しさん mailto:sage [2021/09/30(木) 21:14:17.31 ID:eVTcYnny0.net]
バージョン互換の低さ、信頼性の低さを考えたら、プロジェクトとして使いにくいっつーのはあるやろな。

329 名前:デフォルトの名無しさん [2021/09/30(木) 22:37:54.54 ID:Q+Yf9LrK0.net]
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw

330 名前:デフォルトの名無しさん [2021/10/01(金) 04:21:27.55 ID:YSb3+a7ia.net]
>バージョン互換の低さ、信頼性の低さを考えたら、プロジェクトとして使いにくい

googleのAPIのことですか?

331 名前:デフォルトの名無しさん mailto:sage [2021/10/01(金) 09:11:32.55 ID:Bf6uh555M.net]
プログラミング言語のシェア的にはdistroless対応の優先順位は極めて妥当
残念だけどもう昔のような人気言語じゃないんだよ、、、
ttps://insights.stackoverflow.com/survey/2021#technology-most-popular-technologies

332 名前:デフォルトの名無しさん mailto:sage [2021/10/01(金) 10:15:08.94 ID:8GSBOhv80.net]
>>330
自分に甘くて、他人に厳しいのはあたりまえやろ。w
おまえは違うのか?

333 名前:デフォルトの名無しさん mailto:sage [2021/10/01(金) 10:34:29.22 ID:PaEGpo5A0.net]
AWS Lambda には、Ruby もある

Chef, Cookpad 製のItamae, AWS CloudFormation のKumogata2 もある。
まあ、Terraform のシェアが高くなったけど

Vagrant の作者・ワシントン大学の学生で、今世紀最大の起業家・
HashiCorp の創業者・Ruby/Go の神・Mitchell Hashimoto も、
今は、Goへ行ってしまった

Goプログラマーを募集中

YouTube で有名な、雑食系エンジニア・KENTA のサロンでも、
Ruby on Rails → Go のキャリアパスを推奨している

PHP は、一生やらなくても良い。
新規の仕事が無いから、給料が上がらない。
保守要員は、給料が低いから

KENTAは常に、給料が高い新規プロジェクトを推奨している

334 名前:デフォルトの名無しさん [2021/10/10(日) 15:27:42.39 ID:QuuYHTx70.net]
pp dmy={"VERSION"=>RUBY_VERSION, "ARGV"=>ARGV, "Dir.pwd"=>Dir.pwd}
でdmy=を消すと
Dir.pwdの . でエラーになっちゃうんですけど
syntax error, unexpected '.', expecting `end'
pp(puts)+hashのリテラルでうまい書き方ないんですか

335 名前:デフォルトの名無しさん mailto:sage [2021/10/10(日) 16:08:30.52 ID:2mgB061S0.net]
>>334
ブロックとして解釈されてエラーになるので
puts({a: “a”})みたいに括弧でくくる



336 名前:デフォルトの名無しさん mailto:sage [2021/10/10(日) 16:45:12.39 ID:QuuYHTx70.net]
>>335
エラーの意味が理解できました
ありがとうございます

337 名前:デフォルトの名無しさん [2021/10/10(日) 18:30:23.02 ID:bTjCEmsH0.net]
classが全く理解できない。1日掛けても理解できない。俺は向いてないのか。。。

338 名前:デフォルトの名無しさん [2021/10/10(日) 20:30:34.61 ID:osHZfZYe0.net]
Rubyのclassはそれ自身がオブジェクトだからねえ。

339 名前:デフォルトの名無しさん mailto:sage [2021/10/10(日) 20:55:11.50 ID:lB7MFpHR0.net]
クラスの型紙を元に実体化させたものが、インスタンス。
クラス自体を変化させたものが、特異クラス

ここで、インスタンスと特異クラスの継承チェーンを考えてみる

最終的にメソッド探索チェーンは、直線になる必要がある。
それで継承チェーンに、インスタンスと特異クラスが順序よく割り込んでくる

インスタンスに無ければ、特異クラスで探す。
特異クラスにも無ければ、継承チェーンを遡って、親クラスのインスタンスで探す。
そこでも見つからなければ、親クラスの特異クラスで探す

みたいに、継承チェーンをドンドン遡っていく

340 名前:デフォルトの名無しさん mailto:sage [2021/10/10(日) 20:56:55.24 ID:Liv3MhTX0.net]
ムリに「理解」しようとしてるからちゃうか。
あちこちのソースを適当に読んでたら、いずれスッと腑に落ちるときがくるやろ。

341 名前:デフォルトの名無しさん mailto:sage [2021/10/10(日) 20:59:01.10 ID:Liv3MhTX0.net]
>>339
こういうふうに、知らない言葉と知らない概念をおっかけて「理解」しようとするのは、素養がなければツラかろう。
最初はとくに適当でええんや。

342 名前:デフォルトの名無しさん [2021/10/10(日) 21:36:30.35 ID:kKlMir+m0.net]
338と339は新人が来てもこの調子なんだろうなぁ

343 名前:デフォルトの名無しさん [2021/10/10(日) 22:52:57.48 ID:fsOtTZslM.net]
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw

344 名前:デフォルトの名無しさん [2021/10/12(火) 00:48:53.92 ID:Ihqyo7Sc0.net]
地獄は怖いよ

345 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 02:49:58.32 ID:7Ch1Hu5l0.net]
スクレイピングに興味があるのですが1時間に1回の頻度のGETだけで訴えられる危険があるって本当ですか?



346 名前:デフォルトの名無しさん mailto:sage [2021/10/20(水) 03:46:34.01 ID:gq1XFNWx0.net]
はい

347 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 12:07:05.65 ID:xDtz/yW60.net]
「Ruby」という商標についてなんですが
Rubyは同名の商標が多数登録されていますが、問題になった話を聞いたことがありません
他の言語も同様です
なぜ問題にならないんですか?

348 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 12:08:05.01 ID:vH+4cvxG0.net]
はい

349 名前:デフォルトの名無しさん mailto:sage [2021/10/24(日) 15:50:39.91 ID:TxsSkV/ar.net]
区分が違うからだろ

350 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 21:56:04.74 ID:b+7kI3n60.net]
スクレイピングに興味があるのですがrobots.txtを守っていても訴えられる危険があるって本当ですか?

351 名前:デフォルトの名無しさん mailto:sage [2021/10/25(月) 23:56:18.76 ID:1eqHtBhs0.net]
訴えられる危険はいつでもどこでもある。
道を歩いていても、家の中にいても。

352 名前:デフォルトの名無しさん mailto:sage [2021/10/26(火) 02:13:44.51 ID:XIgoRovQ0.net]
>>350
上級者になってからやらないと危険だよ
初心者がよくわからないままやるとサービス妨害になる可能性はまあまあある

353 名前:ハノン mailto:sage [2021/10/29(金) 21:42:34.32 ID:TYU6SVP40.net]
>>352
サービス提供側に原因があるというのにサービス妨害とはこれいかに?

354 名前:デフォルトの名無しさん [2021/11/06(土) 19:23:11.48 ID:NiwSrOA00.net]
>>297

リブラハック事件を念頭に置いて居るのだと思います。
法的リスクを回避する方法はありません。

事業を行うのであれば、あるいは人生を送る以上法的リスクは常にあります。

入門書に記載出来る話ではないです。

リブラハック事件は、不起訴処分となってますが、20日間の勾留となりました。

余談ですが、旧7帝大卒、上場企業所属の場合、余程のことがない限り法的リスクは回避できます。

355 名前:デフォルトの名無しさん [2021/11/06(土) 19:27:41.07 ID:NiwSrOA00.net]
>>350

中小企業で知財を担当してますが、常に訴訟してます。
業務妨害罪で争ったことはありませんが、模造品による損害賠償事件はチョッ中です。



356 名前:デフォルトの名無しさん [2021/11/06(土) 19:31:11.06 ID:NiwSrOA00.net]
>>355

ちなみに、事件ばかり担当すると会社の仕事は超楽です。
裁判期日は多くても2ヶ月に1回だからです。
社内では、暇なおじさんと思われてます。

だから、プログラミング好きには知財は天国です。
まあ、会社によるのかもしれません。

357 名前:デフォルトの名無しさん [2021/11/19(金) 07:32:40.55 ID:UZar/UR10.net]
Ruby on Rails 製のGitLab の時価総額が、1.9 兆円だって!

358 名前:デフォルトの名無しさん mailto:sage [2021/11/19(金) 10:13:01.84 ID:eyeX0xyMF.net]
なるほどおめでとう
https://gitlab.com/libeigen/eigen

359 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 11:50:44.28 ID:sVKUttQ/0.net]
ガチでヌーブなんですけどrequestsとbeautifulsoupでスクレイピングやってます
waitかけないとバンされるよと言われましたがどうすればいいですか?
requests.get()でtimeoutは今書きましたがforで同じサイトの似たようなページに何度もアクセスするのでサーバーへの負荷はすごいと思います
これに対してどうすればいいですか?

360 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 15:28:09.99 ID:m3nJJ9T10.net]
waiteかければ十分だと思うよ

361 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 23:29:07.13 ID:JKy0RWKD0.net]
botからのアクセスはどこのサイトも来まくってるから、スクレイピングを気にするかは分からないけど、
waitを5秒とかいれとけば。

クレカ明細をスクレイピングしようとしてたら403になって数時間アクセス出来なくなったよ

362 名前:デフォルトの名無しさん [2021/12/17(金) 21:31:46.70 ID:tWB5K5S10.net]
David Heinemeier Hansson(DHH), 2021/12/16

Rails 7: The Demo
https://www.youtube.com/watch?v=mpWFrUwAN88

もう、Rails 7.0.0.rc1 か。
Ruby 3.0.3

363 名前:デフォルトの名無しさん mailto:sage [2021/12/26(日) 19:54:32.13 ID:gUkCfD0ur.net]
Happy Christmas!!

Ruby 3.1.0 Released
https://www.ruby-lang.org/ja/news/2021/12/25/ruby-3-1-0-released/

364 名前:デフォルトの名無しさん [2022/01/09(日) 01:26:06.08 ID:wKoMs7Y50.net]
そいつは、>1 のテンプレをしょっちゅう改変している、テンプレ改変荒らし。
基本的に、ソースコードを書かない香具師は荒らし

「Ruby, Rails, クソチョン」などを、NGワード登録推奨とか、
自分が有利なように、いつもテンプレを改変する

荒らしがスレ主として、居座っているので、
まともな人がスレ立てして、テンプレも元に戻した方がよい

荒らしは必ず、短文で2回以上書き込む。
必ず、複数人がいるように見せかける

365 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 00:21:27.01 ID:MINWORCd0.net]
スレ立てるまでもない質問はここで 158匹目
https://mevius.5ch.net/test/read.cgi/tech/1635193843/538

ここに、YouTube で有名な、雑食系エンジニア・KENTA のサロンの、
Ruby on Rails 初心者用コースの内容を書いておいた

基本的に、Rails以外のフレームワークは、シェアが少ないのでおすすめしない。
学習環境も揃わないので、無理

Railsでは、Railsチュートリアル・Railsガイド・
黒田努の3冊の本・パーフェクト Ruby on Rails・Ruby on Rails 6 エンジニア養成読本とか、
Rubyでは、改訂2版 パーフェクトRuby・改訂2版 Ruby逆引きハンドブックなどの教科書が揃っている

これほど、良い教科書が揃っているフレームワークはない!

Laravel のシェアは少しあるけど、KENTAがPHP は一生やる必要がないと言ったので、
PHP自体がオワコンになってしまったw

日本のウェブ開発の将来は、ほぼKENTAが決めている。
Scala を滅ぼしたのも、KENTA



366 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 11:23:57.64 ID:hewkBnV10.net]
wxrubyのインストールができません。

gem install wxrubyコマンドで
ERROR: Could not find a valid gem 'wxruby' (>= 0) in any repository
と出てインストールできないです。

バージョンはruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [x64-mingw-ucrt]

367 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 12:13:19.79 ID:/N9d9IBk0.net]
% gem sources -l
*** CURRENT SOURCES ***

https://rubygems.org/

となる?
あとほんとにbundler経由でなくていいのか再考してみて

368 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 13:32:13.20 ID:hewkBnV10.net]
>>367
>となる?

なります。

369 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 14:14:29.91 ID:/N9d9IBk0.net]
じゃあわからん
$ gem update --system
して更新がもしあれば治るかも

370 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 15:06:21.76 ID:ah8E1hap0.net]
>>366
wxrubyがいつのRubyのときに開発されていたか調べましたか?
wxrubyがいまのRuby 3.1.0p0で動くと思いますか?

371 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 18:29:42.26 ID:hewkBnV10.net]
>>370

そうなんですか。
tk使います。

372 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 18:36:09.58 ID:Eko2QLhP0.net]
知らんがな、っつー話やけどな。w
互換性のなさはなんとかならんのか。

373 名前:デフォルトの名無しさん mailto:sage [2022/01/13(木) 19:22:50.06 ID:ah8E1hap0.net]
主に使おうとする道具の状態を確認しないのですか?
切れないハサミで紙を切ろうとするのですか?

どうしてもwxrubyを使うなら、せめてrbenvでも良いのでwxrubyが確実に動きそうなruby環境(Ruby 1.9.xぐらい)を用意したほうが賢明です。
あるいは、自分でwxWidgetsをRuby 3.xで動くように頑張ってbindingするか。

ちなみに、わたしはメンドクサクなって、wxWidgetsのcoreなところをRuby 2.7ぐらいでportingしている途中で放置したままです。

374 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 13:46:06.28 ID:Bc4m3wjx0.net]
nokogiriでスクレイピングしようとしていたら
逮捕されるかもしれないと言われましたが
本当でしょうか?

375 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 13:51:05.48 ID:lPS6H26+r.net]
「かもしれない」という事であれば回答はYesでしょう
まあ質問自体馬鹿げてるが



376 名前:デフォルトの名無しさん mailto:sage [2022/01/15(土) 13:55:29.58 ID:fqPeqqWL0.net]
>>374
本当“かもしれない”ですね

377 名前:デフォルトの名無しさん mailto:sage [2022/01/29(土) 18:54:02.82 ID:NEea/ouUa.net]
>>374
かつて 岡崎市立中央図書館事件 という悲劇があったのだよ
いまならこんなあほな事態は発声しないんじゃないかな、だったらいいな……

378 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 11:03:45.45 ID:erVefguva.net]
Webrick 1.7.0 でドキュメントと異なった動作と、RFCで推奨されない通信が行われた場合にIOタイムアウトまで動作停止する問題を
発見しました(対処方法も特定済み)

報告方法どなたかご存じでしょうか?

379 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 15:03:45.59 ID:nkHg0hKwa.net]
>>374
スクレイピングに限らず、プログラムを動かす事による
アクセス回数と通信容量は気を付けたほうが良いよ

2chみたいにそれが多すぎたらしっかりとアク禁したり弾いたりしてくれるところはまだいいけど
無対策なサイトで管理人が対応できない人だったりすれば
プログラムによるアクセス制限の対応じゃなく法的な対応はありえる

380 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 16:13:06.79 ID:UfZW0QsA0.net]
>>379
どこかの某県図書館だな
結局、アレは業者がアレだったな

381 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 17:31:37.91 ID:zzLecfCS0.net]
>>378
こんなとこで聞くことやないやろ!w

こういうとこのが?
https://www.ruby-lang.org/ja/community/mailing-lists/

382 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 20:03:07.20 ID:TQ6+L4kbr.net]
>>378
協力よろしくお願いします
https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReportJa

383 名前:デフォルトの名無しさん mailto:sage [2022/02/05(土) 20:00:16.41 ID:lkKOvV4nM.net]
[1,2,3].each{ |i|
next i>2
}
がエラーにならずなかなか原因がわからなかった
正解は
[1,2,3].each{ |i|
next if i>2
}

384 名前:デフォルトの名無しさん mailto:sage [2022/02/06(日) 02:49:25.03 ID:wRRLv8q1a.net]
>>383
next(exit_value)
break(exit_value)
という構文があって、実行された時のブロックの戻り値が指定した引数の値になる

loop{ break }
=> nil

loop{ break 10 }
=> 10

[1,2,3,4].map do |num|
next 'even' if num.even?
num
end
=> [1, "even", 3, "even"]

385 名前:デフォルトの名無しさん mailto:sage [2022/02/07(月) 15:54:59.83 ID:UFoAEHlFM.net]
>>384
ありがとうございました、なるほどでした
nextに戻り値は想定外で、別の原因を探していました



386 名前:デフォルトの名無しさん mailto:sage [2022/02/08(火) 00:35:57.80 ID:rEpsZFEq0.net]
ほ〜、知らんかった

387 名前:デフォルトの名無しさん [2022/02/11(金) 05:43:01.01 ID:kL9RKZ580.net]
nokogiriでhtmlパースをしようと触っているのですが、
DOMの子要素から絞り込みはできないのでしょうか

document.xpath('//div[@class="main"]').each |node|
node.css('div')
↑これだとclass=mainの子要素全体が取れるのですが

node.xpath('//div[@class="target"]')
↑これだとDOM全体から取ってきてしまいます

node.search('//div[@class="target"]')
↑これも同様でした

388 名前:デフォルトの名無しさん mailto:sage [2022/02/11(金) 07:45:27.90 ID:3E0z2JyYr.net]
>>387
node.xpath('.//div[@class="target"]')

node.search('.//div[@class="target"]')

389 名前:デフォルトの名無しさん mailto:sage [2022/02/11(金) 07:51:20.39 ID:tPFLgtIg0.net]
XPathの仕様みるのが先やん
https://triple-underscore.github.io/XML/xpath10-ja.html#path-abbrev

390 名前:デフォルトの名無しさん mailto:sage [2022/02/11(金) 08:15:17.26 ID:kL9RKZ580.net]
>>388
取れました!ありがとうございます!
>>389
XMLパスという仕様書があるのですね
初めて知りました
リンク先まで教えていただきありがとうございます!

391 名前:デフォルトの名無しさん mailto:sage [2022/02/11(金) 15:10:34.09 ID:901NTZe+0.net]
一旦、ある要素を取得してから、その子孫要素に限定して、
さらに要素を取得していく事もできる

一旦、div.x を取得してから、その子孫内のdiv を取得する

doc = Nokogiri::HTML( <<EOT )
<html><body>
<div class="x"><div class="y"><div class="z"></div></div></div>
<div class="x"><div class="a"></div></div>
</body></html>
EOT

doc.xpath( '//div[@class="x"]' ).each do |x|
x.css( 'div' ).each do |div|
puts div.get_attribute( 'class' )
end
end

出力
y
z
a

392 名前:デフォルトの名無しさん [2022/02/11(金) 15:21:30.61 ID:fEekYUc10.net]
あーあ、やっちゃったね
スクレイピングに手を出したら逮捕されるよ
nokogiriもアンインストールしたほうがいい

393 名前:391 mailto:sage [2022/02/11(金) 18:40:27.30 ID:901NTZe+0.net]
XPath よりも、CSS Selector の方が可読性も高く、簡単。
XPathを使う事は、ほぼ無い

ある属性を持った要素の親要素を取得するとか、かなり複雑なケースに限定される

394 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 08:30:39.25 ID:uRRrzdTb0.net]
配列内の要素の出現回数を求める

ary = [ 1, "a", 2, "b", "a", 1, "a" ]

p results = ary.each_with_object( Hash.new( 0 ) ){ |elem, hash| hash[ elem ] += 1 }
#=> { 1=>2, "a"=>3, 2=>1, "b"=>1 }

Ruby には、下のPython のcollections.Counter みたいな関数がありますか?

import collections

l = ['a', 'a', 'a', 'a', 'b', 'c', 'c']

c = collections.Counter(l)
print(c)
#=> Counter({'a': 4, 'c': 2, 'b': 1})

Rubyで、誰かが作ったものはあるけど
https://gist.github.com/cielavenir/501c0cf491e10d905d4307bdeb2596ea

395 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 08:39:01.42 ID:rK542qf7r.net]
>>394
ない。
できてこんなもん。
ary.uniq.group_by{|i|ary.count i}
=> {2=>[1], 3=>["a"], 1=>[2, "b"]}



396 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 11:58:05.39 ID:yCGAKR370.net]
愚直に書くと
ary.group_by(&:itself).transform_values(&:size)
=> {1=>2, "a"=>3, 2=>1, "b"=>1}

397 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 13:18:13.38 ID:4udJjeRKM.net]
each_with_objectのほうが少しシンプルだけど
他の言語だと使えないからreduce使ってる
uniqとかgroupbyはやや効率悪い気がする

398 名前:デフォルトの名無しさん mailto:sage [2022/03/09(水) 01:16:31.71 ID:bFH5rQfw0.net]
tally
https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/tally.html

399 名前:デフォルトの名無しさん mailto:sage [2022/03/09(水) 05:08:13.88 ID:xyP8cJI4a.net]
[1, "a", 2, "b", "a", 1, "a"].tally
=> {1=>2, "a"=>3, 2=>1, "b"=>1}

ほ〜

400 名前:デフォルトの名無しさん mailto:sage [2022/03/09(水) 06:45:20.85 ID:ld7hWZ5w0.net]
美しい

401 名前:デフォルトの名無しさん (スップ Sd7f-QrL3) mailto:sage [2022/05/01(日) 18:29:19 ID:hArhlqjHd.net]
rails6、ruby2.7を利用しています。
アクセスしてきたリクエストURLのパラメータに「#」が付いた際、paramsにパラメータが含まれてこないのですが、
この内容を取得するにはどうすれば良いでしょうか?

402 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 21:32:54.31 ID:hYMTL+9l0.net]
ムリ。
サーバーには渡されない。

403 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 22:05:48.29 ID:AIbUDPzi0.net]
HTTPリクエストには乗らないけど
ブラウザ上のJSではハンドリングできるからそれで連携可

404 名前:デフォルトの名無しさん (スップ Sd7f-QrL3) mailto:sage [2022/05/02(月) 00:21:18 ID:tduJ9vUQd.net]
ありがとうございます!
ハッシュは取れないのですね…
JSでハンドリングしてみます。

405 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 02:36:19.66 ID:lerz5rr1M.net]
JavaScriptのようにPythonコードをHTML内に記述して実行できる「PyScript」 Anacondaがオープンソースで公開
https://www.itmedia.co.jp/news/articles/2205/09/news161.html

rbScriptも技術的に可能でしょう、だそうです



406 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 07:09:23.20 ID:4KKJ8JThr.net]
可能も何も既存なんだが

407 名前:デフォルトの名無しさん (ワントンキン MM86-3X6i) [2022/05/25(水) 19:57:04 ID:iXIMMJncM.net]
rubyが1番初心者向け?






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

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

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