X



Ruby 初心者スレッド Part 67

0001デフォルトの名無しさん (ワッチョイ b72c-yePO)
垢版 |
2020/12/25(金) 04:24:27.68ID:aa9Khe9z0
プログラミング言語 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
0482デフォルトの名無しさん (アウアウウー Sa09-eLho)
垢版 |
2022/07/31(日) 19:19:38.43ID:UDF11vvTa
>>478
cgiで処理できるんならcgiがjson返せばいいだけでは?
それともtest.cgiが
・あなたの作ったrubyプログラムとは別
・戻り値が出来るのに時間がかかり
サーバーサイドからイベント送信する必要がある
みたいな事情があるのでしょうか?
0489デフォルトの名無しさん (アウアウウー Sa09-eLho)
垢版 |
2022/08/02(火) 07:50:45.58ID:XcZjnJFMa
>>488
比較対象次第ではあるが
オブジェクト指向と実態のギャップを埋めるために
相応のコストは掛かってる

ただまぁこのコストが気になるレベルまで積み上がってるとしたら
(Twitterみたいな大規模プロジェクトは例外として)
何かミスか勉強不足があるかと疑いたくなる
0491デフォルトの名無しさん (アウアウウー Sa55-woMg)
垢版 |
2022/08/06(土) 22:16:44.35ID:VFKE1n46a
フレームワークのコストよりもデータ構造の設計によって検索に処理時間かかったり、大きすぎる中間ファイルが出来たりというほうが
アカウント数が増えた時には問題になると思います
ファイルが大きくなったら何らかの形で分割しないといけないと思うのでボトルネックになるのは読み込むファイルのサイズになりそうな

ところでまた質問なんですが
配列の後ろから1つだけ任意の要素を削除する処理を書こうとしたら
rindexがnilを返したときにdelete_atがエラーになるんですが、rindexの戻り値を変数に格納して条件分岐入れるしかないですか?

ary=[1,2,3,4,1,2,3,4]
e = ary.rindex(2)
ary.delete_at(e)
p ary

# 一行にしたかったけどnilになるとエラー
# ary.delete_at(ary.rindex(9))
0495デフォルトの名無しさん (アウアウウー Sa55-woMg)
垢版 |
2022/08/07(日) 01:09:34.68ID:lN5DVOZra
>>493
大きいサイズ入れた時の動作仕様が今後も変わらなければいいですがちょっと不安です

>>494
おおっすごい
tapでselfの時のみdelete_at呼ばれる処理なら安全そうですね
参考にします
ありがとうございました
0498デフォルトの名無しさん (スッップ Sd33-JIap)
垢版 |
2022/08/12(金) 01:10:01.38ID:icd+inSAd
インストールを嫌うのはWindowsユーザー特有の習慣なわけだけど、
RubyにおいてWindowsユーザーは嫌われ者だからあえてWindowsユーザーを増やすような施策はしないだろうねえ
せっかくWindowsならWSL使えで終わりにできる時代になったのだし、今更逆行させたくないだろう
0506デフォルトの名無しさん (ブーイモ MM95-JIap)
垢版 |
2022/08/12(金) 21:08:08.21ID:EhKo6h0UM
>>504のスキル次第かな
プログラミング教育ビジネスでRubyの採用が比較的多い理由はPHPと同じで、
技術スタックが固定されていてRoRの使い方さえ覚えれば一応仕事らしいことはできるから
一方でNodeやGoだとまずAWSやGCPでインフラを設計して、、となっちゃうから前提知識が多く、教える人にとっても難しいわけだね
504がどうかは知らないけど業務系の出身の人ってペチパー上がりのWeb系に比べりゃネットワークやDBなど基盤技術に強い人が多いから、
まずはAWS SAを取るくらいを目標にしたほうがモノになりやすいかもしれない
0507デフォルトの名無しさん (ブーイモ MM8b-zDOG)
垢版 |
2022/08/12(金) 22:14:25.50ID:jxfg8mfTM
>>504
Webアプリについて学ぶならRubyからはじめるのは今でも一番効率いいよ
 
C#とかやってるならそのままASP.NET MVCやるといい
Javaの場合はSpringやSpring Bootやる前にRails一通り学んだ方が学習効率が高い
0512デフォルトの名無しさん (ワッチョイ 027c-5Ix7)
垢版 |
2022/08/19(金) 13:31:40.23ID:Gwz5c/EG0
Rubyガイジがこのスレに誘導しているみたいだけど
今更Rubyなんて流行らないし>>503でも指摘されているけど
新規案件でRubyやRailsなんて採用しないから初心者が勉強するだけ無駄だぞw
0520デフォルトの名無しさん (オイコラミネオ MM1b-366i)
垢版 |
2022/09/08(木) 11:42:53.80ID:KAp1CvD8M
今日から三日間開催されているRubykaigi(Ruby会議)にて、Wasm化の話が
議題になっているらしい。
0521デフォルトの名無しさん (ワッチョイ 5f2c-HH83)
垢版 |
2022/09/08(木) 21:57:50.38ID:EF/qt7ve0
>>504
YouTube で有名な雑食系エンジニア・KENTA は、下の動画で、
未経験者はシェアが高い、Ruby on Rails でポートフォリオを作れと言ってる

Django, Laravel はダメ。
特にKENTAは、PHP, Scala をオワコン認定したので、使わない方がよい

未経験からのエンジニア転職の必須教養【技術知識編】
www.youtube.com/watch?v=Q1c09rrhTjo

Railsは、KENTAのサロン以外にも、RUNTEQ、東京フリーランスのデイトラなど色々ある

Node.js など最悪。面倒くさすぎて勉強にならない。
Go も初心者向きじゃないので、
KENTAが勧めるキャリアパスは、Rails → Go のみ

KENTAのサロンのAWS 部で皆、AWSのくろかわこうへいのサロンへも入る。
くろかわのサロンの生徒、数十人で書いた本も出てる

以下がバックエンドの最短コース

Rails, Bootstrap, jQuery から始めて、
Linux, Docker, Heroku, AWS, CircleCI, Github Actions

猛者になると、Terraform, Kubernetes。
ここまで行けば、どの会社よりも上
0522デフォルトの名無しさん (ワッチョイ 5f2c-HH83)
垢版 |
2022/09/08(木) 22:12:49.56ID:EF/qt7ve0
>>488
データベース(DB)に、2千社・2億レコードあるけど、全く問題ないと外人が言ってた

N+1 で一々、問い合わせをしたり、
多対多などで、索引なしで総当たりみたいな事をやっているとか?

DBの実行計画を見た方がよい

ミックの本も読んだ方がよい。
副問い合わせを、case に書き換えるとか、書いてあったような気がする。
よく覚えていないけど

データベース資格の問題を解くとか
0523デフォルトの名無しさん (ワッチョイ 5f2c-HH83)
垢版 |
2022/09/08(木) 22:38:48.48ID:EF/qt7ve0
>>478
漏れが作った、webrick のデモならあった

require 'webrick/cgi'

class MyCGI < WEBrick::CGI
def do_GET(req, res)
res["content-type"] = "text/plain"
ret = "get\n"
res.body = ret
end

def do_POST(req, res)
res["content-type"] = "text/plain"
ret = "post\n"
res.body = ret
end
end

MyCGI.new.start()
0525デフォルトの名無しさん (アウアウウー Sa8b-Iguz)
垢版 |
2022/09/09(金) 16:40:11.60ID:nscVoUcha
ちょっと厄介な事かもしれないですが、配列にuniqやった時に
[1,2,3,4,2].uniq これで 一番後ろの2が削除されて[1,2,3,4]になるじゃないですか

uniqした後の結果を[1, 3, 4, 2]にしたい時は

[1,2,3,4,2].reverse.uniq.reverse

こう2回reverseやるしか無いでしょうか?
reverse消すのを試みていたんですが上手い方法が思いつきません
0532デフォルトの名無しさん (ブーイモ MM5b-Zs/L)
垢版 |
2022/09/27(火) 15:25:57.97ID:+SNgMDTOM
>>529
意図が伝わりやすければメソッドチェーンでつなげること自体は何の問題もない
ただ1行で書くかと言われれば普通は改行して読みやすくメンテしやすくする

1行でも許容できる内容かどうかは引数含めて書いてもらわないとなんとも言えない
0534デフォルトの名無しさん (アウアウウー Sa43-tX/F)
垢版 |
2022/09/28(水) 17:43:18.00ID:BXnMv7Uva
サーバー側のrubyバージョンが古い時にローカル実行用スクリプトで3.0機能使ったコード書いていいものか迷う
もしかしたらいつかサーバー側にコード持っていく可能性もある
書いてもいいのかな?
0535デフォルトの名無しさん (ブーイモ MM32-UZRN)
垢版 |
2022/09/28(水) 18:23:25.60ID:FVicjk6YM
どうせコンテナで動かすんだからどうでもいいだろ
今時サーバーにグローバルにインストールされたRubyに依存してるような腐った運用してる環境なら、イキって変なことするのはやめておけ
0536デフォルトの名無しさん (アウアウウー Sa43-tX/F)
垢版 |
2022/09/28(水) 18:40:33.30ID:BXnMv7Uva
コンテナ?

3日1回程度実行するスクリプトをこっちで行うかサーバーに持ってくかという話
こっちもpc常時起動してるわけじゃないから、正確に確実に実行するならサーバーで走らせ続けるほうが楽ではあるが
ここまで書いて気づいたけどサーバーのメモリ余計に使う事になるからやっぱやめる
0541デフォルトの名無しさん (アウアウウー Sa43-tX/F)
垢版 |
2022/09/28(水) 23:22:18.60ID:BXnMv7Uva
Perlはないかなー
3.0だと構築しやすい環境があって
それがサーバーバージョンだと構築できるか不明で、
Perlだと普段使ってないんで
Perlのどのバージョンでどのモジュールバージョンがインストール有効か全く知らないので、さらに構築できる可能性が薄い、、
0544デフォルトの名無しさん (ワッチョイ 6f66-A5NB)
垢版 |
2022/10/03(月) 22:36:01.59ID:mZNxA8zN0
perlは28年メジャーバージョン変えてないだけだろw
変えたらモジュールが全く付いていかず
後付けで別言語だったことにされた始末w

7にすると言った後もスルスル詐欺。もう崩壊寸前。
0551デフォルトの名無しさん (ササクッテロレ Sp03-G7zZ)
垢版 |
2022/10/10(月) 21:33:09.97ID:mVWGK/1kp
教えてください。
redditのr/rubyを読んでいて、以下のようなサンプルコードを書く人がいました。

lambda do
p 1
p 2
p 3
end[]

lambda {
p 1
p 2
p 3
}[]

-> {
p 1
p 2
p 3
}[]

このサンプルを書いた人は、Procとか、lambdaを使った書き方の違いを説明したかったようなので
議論の本質から外れるのですが、
Endや}の後の[]は、どんな意味があるかお分かりになりますでしょうか。
0554デフォルトの名無しさん (ワッチョイ 034f-iygP)
垢版 |
2022/10/11(火) 14:17:27.31ID:17+/w9Hg0
手続きオブジェクト・Proc は、
Proc.new, Kernel#proc, Kernel#lambda, -> 引数{ 処理 } で作れます。
Procを呼び出すには、Prco#call, Proc#[] を使う

g = -> x, y { x + y }

p g.call( 3, 4 )
p g.( 3, 4 )
p g[ 3, 4 ]

p -> x, y { x + y }[ 3, 4 ]

これらは全て、7 と出力される

最後のものは、JavaScript のIIFE (Immediately Invoked Function Expression; 即時実行関数式)みたいなものか?
定義されると同時に実行される
0555デフォルトの名無しさん (ササクッテロレ Sp03-G7zZ)
垢版 |
2022/10/11(火) 21:55:19.45ID:bcaE1HrEp
>>552さん
>>553さん
>>554さん
教えていただき、ありがとうございます。
こういうcallの仕方があるって知りませんでした。
0556デフォルトの名無しさん (ササクッテロレ Sp03-G7zZ)
垢版 |
2022/10/11(火) 21:57:33.74ID:bcaE1HrEp
>>554さん
p g.yield(3,4)もありますね。
0559デフォルトの名無しさん (ワッチョイ 6714-M13Z)
垢版 |
2022/10/13(木) 17:18:00.56ID:YUGI7Erj0
Rubyっていまさら学ぶ価値ありますか?
0563デフォルトの名無しさん (ブーイモ MM27-N9Fb)
垢版 |
2022/10/13(木) 21:13:25.17ID:Tg7Fu5K4M
>>559
1. Webアプリの作り方を学びたい
2. オブジェクト指向を学びたい
3. プログラミングを学びたい

この3つのどれかなら今更でもRubyを学ぶ価値はある
1つの言語だけでやっていきたいみたいな考え方を持ってるならやめとけ
0565デフォルトの名無しさん (ワッチョイ 034f-SUfT)
垢版 |
2022/10/14(金) 13:58:42.57ID:ljWa0xD50
YouTube で有名な雑食系エンジニア・KENTA の初心者向けRuby on Rails サロンが有名。
KENTA, Rails専門学校・RUNTEQ, Deanin の動画などを参照

KENTAが勧めるキャリアパスは、Rails → Go のみ

主に、未経験者のモダンな転職先がRails。
つまり、ベンチャーなどへのプロの転職用フレームワーク

でもアマチュア用に、CSV などファイル操作するだけでも、Rubyは簡単
0566デフォルトの名無しさん (テテンテンテン MM86-M13Z)
垢版 |
2022/10/14(金) 14:07:02.47ID:r95QbhkqM
たくさんの言語を同時相互翻訳できるのに、
なぜプログラム言語はできないのだろう

言葉よりプログラム言語のほうが簡単そう
語彙は言葉の方が圧倒的に多いし、文法も複雑
プログラム言語はちょっとした違いがすぐエラーになる、ここをなんとかすれば
いいわけだが
0567デフォルトの名無しさん (アウアウウー Sa2f-kHT+)
垢版 |
2022/10/14(金) 15:27:43.54ID:jrsxVe/4a
翻訳してコンパイル実行までいっぺんに考えるから作るの無理になるんじゃね
まず翻訳してコンパイルエラーとかは一旦無視したコード出力してから
別のロジック・プロジェクトとして整形するようにするとかさ
段階はあると思うよ
0568デフォルトの名無しさん (アウアウウー Sa2f-7MlB)
垢版 |
2022/10/14(金) 15:51:50.20ID:oF5RKx5oa
>>566
結局、翻訳先にない機能をどうにかするために
・機械語じみた可読性0の長大なプログラムに翻訳する
・翻訳元の言語のインタプリタを翻訳先の言語で作ってしまう
みたいなことになるかと
python2->python3の翻訳も確かうまく行かなかったんじゃなかったか?
0573デフォルトの名無しさん (テテンテンテン MM7f-NBC3)
垢版 |
2022/10/15(土) 00:31:52.18ID:IvRHkVgHM
>>566
プログラム言語に依るのだろう
RubyからPythonはできそうな気がするけど、C++からForthとかはあまりにも違いすぎて無理…
そう考えると、言葉よりもプログラム言語の方が違いが大きすぎるって事だな
0575デフォルトの名無しさん (テテンテンテン MM7f-WdpF)
垢版 |
2022/10/15(土) 11:11:10.80ID:7Qqe8Rg7M
slack の ruby-jp ってどこかに移転しました?
0576デフォルトの名無しさん (ワッチョイ 4b33-CxPv)
垢版 |
2022/10/15(土) 18:11:06.95ID:INu/t1220
>>566
やればできないわけもないんやから、結局は需要がない、ということやろ。

人の言葉は意志疎通のための翻訳やからアリ。
しかし、コンピュータ言語の翻訳結果は再利用のためのリソースを期待されがちやけど、ほぼムリなんでナシ。

実際、再利用でない実行のための変換なら、多用されとる。
コンパイラもそうやし、WebAssemblyなんかそのためやろし。
0577デフォルトの名無しさん (ワッチョイ 2b4f-spri)
垢版 |
2022/10/15(土) 18:26:46.60ID:49IRcNny0
Haxeは、JavaScript(JS)、C++、C#、Java、JVM、Python、Lua、PHPを対象とする、
クロスプラットフォームアプリケーションを構築可能で、

各プラットフォームのネイティブ機能にアクセスできる、
オブジェクト指向のプログラミング言語

主に、HTML, JS ゲーム用で、Adobe Flash の後継。
Ruby には対応していない
0578デフォルトの名無しさん (ワッチョイ 2b4f-KWxC)
垢版 |
2022/10/18(火) 13:36:19.02ID:fjjhfMGv0
「改訂2版 Ruby逆引きハンドブック」の「文字列を分割する」の所で、
split で構造体を定義するのは参考になる

Struct_Fields = %i(a b c) # フィールド名のシンボル配列
Foo = Struct.new( *Struct_Fields ) # 配列展開

input_data = ":x::y:" # コロン区切り

# ["", "x", "", "y"] 内の ["", "x", "y"] を取り出す
p tmp_ary = input_data.split( ":" ).values_at( 0, 1, 3 )

p obj = Foo.new( *tmp_ary )
#=> <struct Foo a="", b="x", c="y">
レスを投稿する


ニューススポーツなんでも実況