Ruby 初心者スレッド Part 66
■ このスレッドは過去ログ倉庫に格納されています
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ
質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 65
https://mevius.5ch.net/test/read.cgi/tech/1545421414/
るりまサーチ (リファレンス検索)
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 >>530
> 先にallocateしたほうが必ずしも速いわけではない
具体例を教えろ。 >>533
これ何度か繰り返して比較してみて
https://ideone.com/N26HoC
GC.disable/enable/startとかも組み合わせて試してみるといいと思う >>534
# gem install benchmark_driver
require 'benchmark_driver'
Benchmark.driver do |x|
x.prelude %{ input = (1..2_000_000).to_a.shuffle
RUBY
x.report 'push without size', %{o = []; input.each{|x| o.push x }}
x.report '[]= with size (each_with_index)', %{o = Array.new(input.size); input.each_with_index{|x,ix| o[ix] = x }}
x.report '[]= with size (each)', %{o = Array.new(input.size); i=0; input.each{|x| o[i] = x;i+=1 }}
x.report 'block with size', %{o = Array.new(input.size){|x| input[x] }}
end prelude書き換えてる最中に送信してしまった
x.prelude %{ input = (1..2_000_000).to_a.shuffle }
で
Comparison:
block with size: 12.0 i/s
[]= with size (each): 9.7 i/s - 1.23x slower
push without size: 8.9 i/s - 1.35x slower
[]= with size (each_with_index): 7.6 i/s - 1.58x slower >>535
そのwith sizeとwithout sizeはpushの差では?
require 'benchmark_driver'
Benchmark.driver do |x|
x.prelude %{ input = (1..2_000_000).to_a.shuffle }
x.report 'Array.new(0)', %{o = Array.new(0); input.each{|x| o.push(x+1)}}
x.report 'Array.new(input.size)', %{o = Array.new(input.size); input.each{|x| o.push(x+1)}}
x.report 'init with []', %{o = []; input.each{|x| o.push(x+1)}}
x.report 'input.map', %{o = input.map{|x| x+1}}
x.report 'block with size', %{o = Array.new(input.size){|x| input[x]+1 }}
end
pushを使うようにすれば
要素数分のinitializeが必要なArray.new(input.size)が
高い確率で一番遅くなる >>534
なんで >>529 + push ?
>>528 のほうがストレートで速そうやろが。 >>537
Array.new(3).push(1) #=> [nil,nil,nil,1] >>539
あらら、そうだね
これで比べればいいのかな?
Benchmark.driver do |x|
x.prelude %{ input = (1..2_000_000).to_a.shuffle }
x.report 'Array.new(0) + while + indexer', %{o = Array.new(0); i=0; while(i<input.size); o[i] = input[i]+1; i=i+1; end}
x.report 'Array.new(size) + while + indexer', %{o = Array.new(input.size); i=0; while(i<input.size); o[i] = input[i]+1; i=i+1; end}
x.report 'Array.new(0) + while + <<', %{o = Array.new(0); i=0; while(i<input.size); o << input[i]+1; i=i+1; end}
x.report 'Array.new(size) with block', %{o = Array.new(input.size){|x| input[x]+1 }}
end 文字列でコードを渡さなきゃいけない仕様って超微妙だな 2020年6月30日
Ruby on Rails 製の、mstdn.jp・mastodon.cloud がサービス終了
女子プロレスラーの自殺により、
今後、イジメに対応するコストの上昇で、運営できなくなるとか 【検証】現役プログラマーは30万円の案件を何時間で出来るのか?
https://www.youtube.com/watch?v=rt_X6n9oWa4
Ruby で、1時間! Railsコースリリース!業界最安値で自走力が身につくワケを制作者が語る
ttps://www.youtube.com/watch?v=zY9SfGNt0pc
東京フリーランスのとだこうきが、Rails の3か月コースを作った!
9万円! Windows用に+DEVKITの方インストールしたけど1GB3万ファイル以上ってちょっとデカすぎないですか?
もうちょっとコンパクトにして欲しいんだが・・・ 要するに、ビルドツールをインストールしたMSYS2やろ。
しゃあないというか、あたりまえ。 漏れは、Windows 10, WSL, Ubuntu 18.04 で、
VSCode の拡張機能、Remote WSL でアクセスしてる
Linux側には、build-essential などのコンパイルツールを入れて、
日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた
yarn は、Windows側に入れて、WSL から、拡張子なしのyarn コマンドを呼べる。
これは、#!/bin/sh で始まるシェルスクリプト ビルドツール付きで1GBなら温情あるじゃないか。最近のVisual Studioだと10GB単位で食うぞ >>548
それはフルで入れたらでしょ
使いたい機能だけで入れたらそこまで容量使わないよ >>549
「使いたい機能」とやらをどこまで絞れんの?
gemによってはビルドできなかったりしてもいいの? macOS本体よりもでかい?Xcodeってなんなの?
https://egg.5ch.net/test/read.cgi/mac/1574170194/
なんか8GB?ぐらいダウンロードさせられるんですけど?
macOS本体もそれぐらいだっけ? >>550
csc.exe と必要なライブラリだけ集めれば makefile で出来る "string”を ["s", "st", "str", "stri", "strin", "string”]にする場合の便利メソッドってある?
reduceじゃなくてaccumlator付きのmap的なやつ 誰がそんなメソッド使うんだよ
ユースケースが思いつかない >>555
accumulator付きのmap的なのは関数型を中心に結構標準で用意されてるよ
scanって名前が多い ary = "abc".each_char.inject( [ ] ) do |ary, char|
if ary.length == 0
ary.push char
else
ary.push( ary.last + char )
end
end
p ary #=> ["a", "ab", "abc"] >>557
二行目以降は
ary.push (ary.last || '') + char
end rbenvでインストールしてglobalに設定したのにruby -vでコマンドが見つかりませんって出る
rbenv経由でruby入れたときってrubyパス個別に通す必要あったっけ?
VMはubuntu2004使ってる >>562
まずはこのスレを検索して、それがダメだったらまたな? >>563
スレ見るまでもなく解決したわ
ありがとな無能さん
初心者スレにお前は合わんから消えた方がいいよ >>496
に書いておいた
漏れは、Windows 10, WSL, Ubuntu 18.04 で、
Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた
anyenv を推奨する。asdf もあるけど、
中を見たら、結局そのまま各言語の、*env を使っているものもあるみたい 多言語の場合、anyenv, asdf を使わないと、各言語ごとにやらないといけないので面倒。
これらを使うと、rbenv, nodenv, pyenv, phpenv など、多言語を統一的に扱える
特に、Rails では、Node.js が必須だから、これらを使うべき
知らないけど、phpenv を使うと、すべてコピーされるから、
端末の起動が遅くなったとか、書いているサイトもある 調査によるが、Javaは未だに物凄く利用者数の多い言語。
日本のWeb系だと、JS>Java>Ruby>PHP>・・・位だったかな。
全体だと、
JS>Python>Java>C++>C#>C>Ruby
位だったかな。 javascript勉強した後だと、rubyの学習サクサク進むな たのしいrubyって第6版まで出ていますが4版や5版の中古でも問題ないですか? >>571
PHP の地位が低すぎる
PHP はダントツにあがってもいいほどだ、wikipedia も PHP 初心者でRUDYを習い始めたけど
この言語はなんかやりやすいねってまだ初歩の初歩だけど progateのrailsのコンテンツで以下のようなコードがありました。
<%= form_tag("/posts/create") do %>
<textarea></textarea>
<input type="submit" value="投稿">
<% end %>
form_tagメソッドはなぜ<%= %>で囲わなければ行けないのでしょうか?
以下のように理解していますが。
「<% 〜 %>または<%= 〜 %>の違いは何でしょうか。
どちらも中に記述されたRubyコードが実行されるのですが、
<%= 〜 %>の方は実行された結果を評価し、文字列として出力します。」
<%= form_tag("/posts/create") do %>の行は何も文字列として出力していないと思いますが。 お気に入り数を増やすAPIを作っているんですが、1つづつ増やすのは以下でできたんですが、
変数で一気に10個ずつとか増やしたい場合どう書いたらいいでしょうか
Photo.where('id = ?', params[:id]).update_all("favorite_count = favorite_count + 1") >>582
コピペですまないものは全て一行ずつここで聞きながらプログラムを書く気かいな
何を作りたいのか知らんが、クラウドソーシングサイトで5000円でも払って作ってもらえよ >> 583
わからないならレスしないでください。うざいだけです >>584
そんなら他の言語に行けよ
Ruby界に高卒はいらないよ ワッチョイ 7fbb-OVGNはNGだな
お前が消えろだわ 高学歴なんかみんな他へ行ってしまってもう残ってないだろ
低学歴ワープアの脱出先として注目されすぎて単価の暴落がやばい >>582
質問の要件を満たしていません。
知性をアップデートしてから出直してきてください。 >>582
散々な言われよう
Active Recordを使ってDBの値をインクリメントする際
増分を指定するにはどうすればいいですか?
って質問なのかもしれないが
Acrive Record風のAPIを自作してて
インクリメントする場合はどういうAPIにするのがいいですか?
って質問に見えるから、ちょっと何言ってるんだろうってなる >>581
=の有る無しで出力されるhtmlがどうなるか比較してみたら ここなんでこんなイライラしてる人多いんだ
プログラミングスクールに大金つぎ込んで未経験から異業種転職を試みたが
結局うまく就職できなかった奴が暴れてんのか >当スレに★Python以外のプログラミング言語での回答類を書くべからず★
>「Ruby では」「Rubyでは」「某言語では」をNGワード登録推奨
テンプレを書き換えたり、すべてのスレを荒らしている荒らしがいる
荒らしは、必ず2回以上書き込む。
前のレスに「そうだよねー」みたいに、アンカーを付けて、複数人いるように見せかける
だから、荒らしの相手をしないように!
荒らしが喜ぶので、荒らしの相手をする者も、荒らしと認定されます! >>581
【Rails】form_tagの使い方を徹底解説!
https://pikawaka.com/rails/form_tag
「formtag rails」で検索!
Rails Guide も、翻訳されてる
>>582
>favorite_count = favorite_count + 1
この1 を、10 に変えれば? そりゃそんな人も居るだろうけど
元からアレな人も多い場所なような >>594
ここまで読んでみたところ、イライラしてるのはお前さんだけでないの?
まあ初心者の訳分からない質問に不寛容なのが多いのは確かだけど、>>584みたいなレスしちゃったら誰もまともに相手しようなんて思わないぞw すべてのスレで、荒らしが書き込んでいるだけ。
それを知らない香具師が、ムキになって怒るのが面白いから、荒らしが居着いている
荒らしを無視すればよい
荒らしはプログラマーじゃないし、ソースコードを書いたりできない。
今までに、1度も見たことない >>581
<form>タグを生成しています。
viewが何やってるのかよくわからない時は
ブラウザの開発者ツールを開くのオススメ pacman -Ss crystal
で見つからないんだけどどうすればいい? >>2
パーフェクト Ruby on Rails 【増補改訂版】 (Perfect series)、2020/07/25
Ruby 2.6.6
Rails 6.0.3
Windows 10 では、WSL 2 このところ、悪徳商法っぽいRuby教材屋が目立つな reverse() と reversed() って違うメソッドなの? >>608
本当の内容
【メキシコ】麻薬カルテル、ライバル組織の女を拘束、手足を縛り生きたまま解体 - 18禁グロ
▼カテゴリ - 18禁グロには一部、異様・奇怪・猟奇的・暴力シーン・グロテスクな表現が含まれていますので、閲覧制限をしています。
1. 18歳未満は閲覧禁止です。
2. 耐性が無い方は閲覧しないでください。
3. 閲覧は自己責任でお願い致します。
※上記、18歳以上で同意できる方は入室してください。 rails6使いづらくないです?
なによりこんなNode.jsに頼るならNode.js使えばいいじゃないです? >>610
Railsは開発者に一貫性の高い開発スイートとワークフローを提供するというコンセプトではあるけど、
それ以前にWeb開発のスタンダードから外れてはいけないというのが大前提だ
いくらRailsの思想に合わなかろうが、たとえばMSのClassic ASP.NETみたいな標準をガン無視した独自路線へ行くのは絶対NG
でRuby自体がもはやWebのスタンダードではなくなりつつある今、大きな歪みが生じているわけだ >>611
rails5→rails6の移行も仕様変わりすぎてて難易度高いよね
こりゃ5のサポート切れのタイミングで別言語乗り換えかな NokogiriのTutorialsを見てます。
html_doc = Nokogiri::HTML("<html><body><h1>Mr. Belvedere Fan Club</h1></body></html>")
このコードでHTMLモジュールのparseメソッドが呼び出せる様なのですが、なぜモジュール名の後にカッコを付ければ、parseメソッドが呼び出せるのでしょう?
HTMLメソッドが定義してあって、その中でparseメソッドが呼び出されているのでしょうか? >>614
module Nokogiri
def HTML(s)
puts s
end
module_function :HTML
end
Nokogiri::HTML("module OK") # => module OK
なんと、HTMLメソッドが定義されてました。 [スクレイピングのためのNokogiri利用メモ - それはそれ、これはこれ](http://otn.hatenablog.jp/entry/20090509/p1)
クラス構造の理解:Nokogiri KernelにArrayメソッドがあるのと似たようなもんだな Railsがマイクロサービスが流行って廃れたようなことを言う人もいるけどさ
サーバ側でセッション情報を保持しないのが主流になった時点でもう、重量級フレームワークは終わりだったんじゃないのかな >>614
NokogiriのRDocを見てます。
Nodeオブジェクトの
content, text, inner_text, to_str
メソッドは、みな同じって事ですかねぇ?
to_str以外、試してみたら同じ文字列が返って来ます。
to_strは後で試してみます。 >>619
じゃぁ、Session情報はどこに保存? >>610
JSの方が、ブロックが楽に書けるし、数値の0がfalseの意味を持っているので分かり易いし、複数行コメントに /*・・・*/ が使えて便利だし、
if 文の条件式を ()で囲むし、単一行コメントが // だし、Cと似ている。 if文の()?正直いらねえわ。
goみたいになくしてほしい。
if()単文;で書けて嬉しいことなんてほとんどないし。 自動的に if then else end に展開するスクリプトを書けば
問題解決じゃないの? JavaScript, PHP, Python は、各型に偽があるので、10個ぐらいあって大変。
0, 0.0, 空文字列、空配列、空辞書とか
Ruby では、nil, false だけが偽だから、変数の型を考えなくて済む。
各型が偽になる条件を考えるのは、苦痛
確か、Rails には、そういう関数があったかも知れない しかし、コンピュータは、ロジック回路や電卓の時代から、0が偽で、1が真と
決められ、TTL-ICでも、NAND, NOR,AND,OR,NOTのどれもがその規則に
従っていた。
アセンブラやマシン語でもそれが踏襲され、1 and 1 = 1, 1 and 0 = 0となる。
とこが、Rubyだけは、1 and 0 = 1 というような変なことになる。
これは受け入れがたい。
こういうコンピュータの基礎を無視するようなことしてるのは困る。 rubyの0はメモリに何も入ってないのを表すんじゃなくてNumericクラスのインスタンス
何かのインスタンスなんだから真なのは自然
rubyの全てオブジェクトという基礎を無視するのは困る >>629
しかしそれ自体が、コンピュータの基礎とかけ離れた設計思想になっている。
コンピュータの世界では、非常に古くから0が偽であると定義されている。 数学の世界でも、真理値表では、0が偽、1が真。
andを「論理積」というのは、andを掛け算(つまり「積」)に置き換えてみると
結果が同じになり、
orを「論理和」というのも、足し算を「飽和演算」とする場合に、足し算に
置き換えられるからで、
それらは、0を偽とした場合にのみ成り立つ。
0も1も真としてしまっては、これら、論理積、論理和という言葉の定義すら
理解しにくくなってしまうだろう。 >>629
だったら、偽なのはfalseだけにしとけよと思う。
真偽値でなければならないところは真偽式しか書けないようにしとけと。
微妙にいいかげんなんだよな。 ■ このスレッドは過去ログ倉庫に格納されています