Ruby 初心者スレッド Part 67
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ
質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 66
https://mevius.5ch.net/test/read.cgi/tech/1578068134/
るりまサーチ (リファレンス検索)
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 Webrick 1.7.0 でドキュメントと異なった動作と、RFCで推奨されない通信が行われた場合にIOタイムアウトまで動作停止する問題を
発見しました(対処方法も特定済み)
報告方法どなたかご存じでしょうか? >>374
スクレイピングに限らず、プログラムを動かす事による
アクセス回数と通信容量は気を付けたほうが良いよ
2chみたいにそれが多すぎたらしっかりとアク禁したり弾いたりしてくれるところはまだいいけど
無対策なサイトで管理人が対応できない人だったりすれば
プログラムによるアクセス制限の対応じゃなく法的な対応はありえる >>379
どこかの某県図書館だな
結局、アレは業者がアレだったな [1,2,3].each{ |i|
next i>2
}
がエラーにならずなかなか原因がわからなかった
正解は
[1,2,3].each{ |i|
next if i>2
} >>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"] >>384
ありがとうございました、なるほどでした
nextに戻り値は想定外で、別の原因を探していました 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"]')
↑これも同様でした >>387
node.xpath('.//div[@class="target"]')
node.search('.//div[@class="target"]') >>388
取れました!ありがとうございます!
>>389
XMLパスという仕様書があるのですね
初めて知りました
リンク先まで教えていただきありがとうございます! 一旦、ある要素を取得してから、その子孫要素に限定して、
さらに要素を取得していく事もできる
一旦、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 あーあ、やっちゃったね
スクレイピングに手を出したら逮捕されるよ
nokogiriもアンインストールしたほうがいい XPath よりも、CSS Selector の方が可読性も高く、簡単。
XPathを使う事は、ほぼ無い
ある属性を持った要素の親要素を取得するとか、かなり複雑なケースに限定される 配列内の要素の出現回数を求める
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 >>394
ない。
できてこんなもん。
ary.uniq.group_by{|i|ary.count i}
=> {2=>[1], 3=>["a"], 1=>[2, "b"]} 愚直に書くと
ary.group_by(&:itself).transform_values(&:size)
=> {1=>2, "a"=>3, 2=>1, "b"=>1} each_with_objectのほうが少しシンプルだけど
他の言語だと使えないからreduce使ってる
uniqとかgroupbyはやや効率悪い気がする [1, "a", 2, "b", "a", 1, "a"].tally
=> {1=>2, "a"=>3, 2=>1, "b"=>1}
ほ〜 rails6、ruby2.7を利用しています。
アクセスしてきたリクエストURLのパラメータに「#」が付いた際、paramsにパラメータが含まれてこないのですが、
この内容を取得するにはどうすれば良いでしょうか? HTTPリクエストには乗らないけど
ブラウザ上のJSではハンドリングできるからそれで連携可 ありがとうございます!
ハッシュは取れないのですね…
JSでハンドリングしてみます。 JavaScriptのようにPythonコードをHTML内に記述して実行できる「PyScript」 Anacondaがオープンソースで公開
https://www.itmedia.co.jp/news/articles/2205/09/news161.html
rbScriptも技術的に可能でしょう、だそうです JavaScriptだろうな
Rubyは人気急落中で既存のRailsアプリのメンテくらいにしか使われなくなっているから今から入るのはお勧めできない webアプリ初心者にはrailsがオススメな反面ruby自体は全く初心者にオススメできないクソ言語 >>409
PythonとくにPython3よりも、Rubyのほうがええと思うけど?
といいつつも、仕事でTypeScriptばっかり、Railsもわずかにやっとるけど JavaScriptって初心者にほんとに勧めて良いものだろうか。 フリーランス向けエージェント「クラウドテック」会員数8万人突破
〜働きやすい環境構築のため、単価向上・全年齢の活躍の場創出・
地方企業のDX推進の取り組みを強化します〜
フリーランスエンジニア専門の案件一括検索サイト「フリーランススタート」、
累計掲載案件数25万件突破!リモートワークの累計掲載案件数35,000件突破!
新規人材の80%がフルリモート希望! IT人材市況動向レポート2021年12月版を公開
人口移動報告 家賃高い、首都圏脱出 「コロナ禍、仕事フルリモート」
クラウドテック、地方企業向け『クラウドテックDX』を開始、
7万人を超えるDX人材が、地方の非IT企業のDX推進を支援
新潟県、移住してきたテレワーカー/フリーランスに最大50万円を支給
テレワークの一般化により、11月にはテレワーク可能案件83.7%へと増加。
2021年、フリーランスのトレンドは「移住&テレワーク」と予測 ・フリーランスに立ちはだかる「常駐」の壁。慣例を打ち壊し、
“テレワーク”案件3割→8割へと成長を遂げた「クラウドテック」の軌跡
・リモートワーク求人専門サイト「プロリモート」がリニューアルオープン、
業務委託契約の求職者と企業をマッチング
・1/3以上が採用につながる高マッチング率、リモートワーク×エンジニア・デザイナー専門の
人材紹介サービス「ReworkerAgent」正式リリース場所からも時間からも自由な働き方を実現!
・『ReWorks(リワークス)』リモートワーク特化型転職サイトとして 3月5日 リニューアル
・副業・兼業マッチングサービス「クラウドリンクス」登録者数2万人突破
中小企業で進む副業人材の採用、96%が継続採用を希望
・フリーランスが活用できる「最大1,000〜3,000万円・補助率50%〜75%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説
・茨城県日立市、県外からの「テレワーク移住者」に最大151万円の助成金
・長野市、市内に移転・事業所設置し、移住することで最大550万円の支援金を支給 【根拠あり】フリーランスエンジニアは年収862万円取れて普通という話【高収入】
【こんな僕が】フリーランスエンジニアで月収100万円を達成した5つの方法
ITフリーランスエンジニアの年収|会社員との違いや独立後の案件の取り方
月収90万のITフリーランスプログラマー・SEが選んでる在宅案件はこんな案件です
フリーランスの年収は平均いくら?年収1000万円以上の割合とは
2021年最新版 エンジニアの平均年収はいくら?全体平均と比べて○○円も高い!
【高すぎると不利】もっともコスパの良い年収は?「最適年収」3パターンについて解説
オリコ、ITフリーランス専用ゴールドカード「techcareer EX GOLD for Biz Card」を発行 Rubyのcase文にはwhenの代わりにinを使う場合がありますか?
バージョンによって違うのでしょうか? >>416
どうもありがとう!
あれから更に調べていたらRubyのcase文には2種類あると説明している
ドキュメントに出遭いました。
1つがelsifを持つif文の代用で、もう1つがパターンマッチ(?)らしいですね。
Rubyは内部的に===を使うんだそうです。
ただしその場合もwhenが使われていたように思います。inと違うのでしょうか。 caseのパターンマッチは3.0で本採用されたのにマニュアルになくって
変更履歴とRedmineみないとわからんのが残念 PythonてAI関係でデフォになってるのもあって持て囃されてるけど
初心者向きかというとインデントがあるのとかどうかなーとは思う
Rubyはそのへん柔軟でとっつきやすい感じはする
https://xtech.nikkei.com/atcl/nxt/column/18/00682/061100007/ コロン忘れるってテキストで構造化文書(というほど大層なもんでもない)書いたことないんか
見出しにアンダーライン引くみたいに行末にコロン置いて区切りを表現する 英語はRDocからの自動生成なのか
メンテできないなら日本語マニュアルなんてやめて
英語版をベースに差し替えていけばええのに パターンマッチはRuby 2.7以降にサポートされたらしいということが
分かりました。どうもありがとうございました。 >>408
JavaScriptは基本が非同期なのが初心者向けではないと思うんだ
開発環境の充実という点では悪くないとは思うけどね 同意しない
一般に、JSの入門者にとって非同期プログラミングが必要になるのはバックエンドとの通信が出てきたところから
そこまでくると仮にRubyだったら当然Rails前提になるわけで、フロントからDBまで揃えないと動かないRailsよりはHTMLファイル一つから始められるJSの方が遥かに敷居が低い >>425
JS始めるなら普通はWebのフロントエンドからなので非同期理解しないとまともなもの作れないよ
nodeでCLIから始める選択肢もあるがそっちもI/Oは非同期が基本だから同じこと
同期APIだけ学ばせるほうが効率悪い RubyもJavaScriptもどっちもやったらいいよ
対して難しくないんだし 確かに。
RubyとJSを組み合わせないとまともなページは作れないね。
両方知っておくのがいいと思う。 マジレスするとJSだけでいいけどな。
RubyとPythonは極端に習得容易だな。長所はそれだけ。遅過ぎて何やっても使えない。 >>429
じゃ極端に習得が容易なRubyやPythonのほうが初心者向けってことだよね lispは間にならんだろ。これだけはrubyやperlやPythonに比べて異世界の言語って気がする。 YouTube で有名な、雑食系エンジニア・KENTA が言ってる。
初心者が、PHP のLaravel, Python のDjango をやっても転職できない
どの企業も適材適所だから、
Web サービスで、Rails ではなく、Laravel, Djangoを選んだ相当な理由がないと、
単なる調べる能力がない、自走力のない香具師とみなされるだけ
だから、Pythonで企業を圧倒するには、
大学院数学科とか、AWS Certified Machine Learning - Specialty・機械学習の資格がいる
一方、Railsは文系でもOK。
AWS Solutions Architect など、アソシエイト3冠を持っていれば最高峰。
米国年収で、最高同士の組合せ
PHPは、KENTAがオワコン認定したから終わった。
AWS Lambda のデフォルト言語にも採用されていない。
Rust, Elixir も採用されていないけど
デフォルトでは、Java, Go, Node.js, Python, Ruby
PowerShell, C# だけ
YouTube で有名な、くろかわこうへいのAWS 入門書も出ている。
サロン内の数十人で書いたみたい もう、Rubyは高卒を騙して金を巻き上げるだけの言語になっちまったな もう、Rubyは高卒を騙して金を巻き上げるだけの言語になっちまったな rubyそのものについてでなくて申し訳ないのですが質問させてください
業務系の書類まみれに疲れ果ててウェブの世界に飛び込むことを検討しています。C++だのC#だのばかりでウェブの経験が無いのでブートキャンプでも受けようかと調べました
すると割とrubyの採用率が高いように思われます。rubyをお使いの皆様としても今後将来性はあると実感されてますでしょうか フレームワークのRailsはプロトタイピングに優れてるからスタートアップ向きだけど
まじめに保守するならカッチリした言語・フレームワークに乗り換えることになる
そう割り切ってつかうならあり 実際に作ってみて、運用してみないと
分からない問題点があるからね
最初にかっちり決めてしまうと
修正するのがほぼ不可能になる なんとなくだが>>441は概ね答えわかってて聞いてる気がする 女のどう思う?はもう答えてほしい事が決まっていると言うからなw 将来性に期待して今から始めるんはナシやろ。
最悪捨てることになっても可、つうことならアリ。 色々参考になりました。
とりあえず仮に通うにしても就職先では別の言語を使う可能性が高いと考えておきます 時価総額1兆円までは、Ruby on Rails で大丈夫
時価総額1兆円以上のGithub は、Go へ移行する。
一方、2兆円のGitlab は、Go へ移行せず、Railsを継続する
外人の動画で、2千社の取引先で、2億レコードあるけど問題ないと外人が言ってた
>>438
にも書いたけど、KENTA のYouTube 動画も一杯ある。
初心者は、月千円のKENTAのRailsサロンへ入れば良い。
日本6位の3千人。1位はキングコング西野の数万人
文系のキャリアパスは、Rails → Go のみ。
普及のキャズムを越えたのは、Goだけ。
Rust, Elixir は越えなかった 高卒から金を巻き上げるスクール商売ばっか目立ってるって、入会する側もおかしいと思わないのかねえ 自力でやろうとしても
やる気になれない
何をどういう順番でやればいいか分からない
とかだと
スクールに頼ることになるんではないだろうか ひたすら写経してブリブリ動かせばなんとなく掴めると思うんだけどな〜 体系立った理解は後回しでも良いと思う 専門学校みたいなもんやと思えばそんなもんやろ。
相場を知らないんやから、しゃあない。 KENTA のサロンは月千円
KENTAが批判しているマコなりは、実教室があるから80万円。
RUNTEQ は40万円。
東京フリーランスは10万円
KENTAがぼったくりと書いて、訴えられた所は200万円。
KENTAを訴えると、会社の知名度が上がるから訴える Ruby技術者認定試験制度の対象バージョンが2.1.xなの古くない?
Rails技術者認定試験もRails 4対象だし、公式Twitterは2018年が最終ツイート、さらに公式Facebookは削除されてる。 このスレでWordPress、PHP、SQLの質問をしたら、親切な達人プログラマーが懇切丁寧に教えてくれますか? >>462
Ruby でサイト管理を自動化するとか、DBにアクセスするという話ならお返事あるんじゃない? >>462
WordPress, PHP, SQLそれぞれのスレでご質問願います >>463-464
やはり、そうですよね。
他のスレでRubyスレに誘導されたので確認してみました。
ご回答ありがとうございます。 Word Press のコーディングの本はない。
デザインの本しかないので、プログラミングを学べない
Ruby on Rails では黒田努の3冊の本とか、パーフェクト Ruby on Rails、
ウェブサイトではRails ガイド・Rails チュートリアル、
Dean の動画とか、コーディングの教材が多い
>>438
にも書いたけど、
PHP は、KENTAがオワコン認定したから終わった
AWS Lambda のデフォルト言語にも採用されていない。
Go は採用されたが、PHPは採用されなかった。その理由を考えてみ
漏れの結論としては、PHPでは勉強を続けることは無理。
教育環境が無さすぎる
Laravel を使っているZOZO とか、良い開発者が集まらなくて、困ると思う >>466
KENTAはRubyも否定してますが、Rubyを推す理由ありますか?
RubyやPHPを選択する理由が薄くなった
https://youtu.be/LfcgWPqMSGM?start=100
GoのみがSランク、それ以外は全てCランク
https://youtu.be/LfcgWPqMSGM?start=200
最も、いいね少なすぎてKENTAの動画に信頼を置く理由が不明ですが たいした学習コストじゃないんだし悩んでるくらいなら全部やればいい 未経験からのエンジニア転職の必須教養【技術知識編】
www.youtube.com/watch?v=Q1c09rrhTjo
KENTA が勧めるキャリアパスは、Ruby on Rails → Go のみ。
Laravel, Django を選ばないように言ってる
もしポートフォリオに、Laravel, Django を選ぶと、
Railsではなく、それらを選んだ理由を聞かれて困る
技術選定・適材適所の失敗。
つまり、情報収集能力や自走力がないので採用されない
皆がRailsで勝負しているのに、なぜ君は奇をてらったのか?
正攻法を避けた理由を説明できない
もし自分が面接官なら、
Laravel, Django のポートフォリオを持ってきても、そもそも見ない。
何で、Railsで作らないの? と思うのが普通 経験言語そのものより良いコード書いてて配属先の技術スタック吸い込んでくれる人のほうが嬉しいかな >>469
いいね300低度の動画を鵜呑みにしちゃうのね ここ数年、Ruby はオワコンと言ってる香具師が多いけど、
結局、千人の素人が言うことよりも、1人のプロが言うことの方が正しい
例えば、Rubyで求人検索すると、5件しかないからオワコンだとか書いているサイトが多い
他にも、KENTAの天敵がSES のモローで、
2年前は、Railsはオワコンで、KENTAがRailsを勧めるのは、
ポートフォリオ制作で、サロンの滞在を長引かせて儲けるためで、
Java, PHP の方が稼げると勧めていた
【2022年版】Ruby on Railsの将来性
ところが最近の、YouTube のこの動画では、
Rails一色で、キャリア相談まで始めたw
Java, PHPのSESは、どうなったの?w
一方、RailsチュートリアルのYassLab は、Rubyはオワコンと言われているけど、
Railsチュートリアルは筑波大学にも採用されて、
毎年増加しているので、本当にオワコンなのか? と言ってた
プロの方が、正確な情報を持っている 最終的に負荷の問題でgoに移植ってパターンが
二度手間だから最初からgoでやれ
なんて言われてるが
ほとんどの場合、問題になるほど流行らんて Github のコピーであるGitlab は、時価総額1兆円だけど、
Rails のままで、Go へ移行しないと宣言している
GithubはGoへ移行するけど 米国人の動画を見ると、
2億レコード・2千社のデータがあるけど、Rails で大丈夫とか、
試作品をNode.js で8週間掛かったが、Railsでは2週間だった。
JavaScript はアホらしいとか 大量レコード・マルチテナントなんて言語選定というより設計の問題じゃん プロトタイピングの速さについては同感ですが モルモン教言語のrubyも辛い立場だな
まつもとも娘に断食させたり痛いことしてたし RubyとAjaxについて勉強してるんですけど
WebページからAjaxでサーバー上のtest.cgiに文字列を渡し
そのtest.cgiで処理した戻り値をWebページ側に送るのはどうやって書けば良いんでしょうか?