[過去ログ] Ruby 初心者スレッド Part 62 (974レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(8): 2017/11/24(金)00:35 ID:rLZHdQ3Q(1/4) AAS
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 61
2chスレ:tech
るりまサーチ (リファレンス検索)
外部リンク:rurema.clear-code.com
Rubyist Magazine - るびま
外部リンク:jp.rubyist.net
省2
875(1): 2018/03/21(水)01:22 ID:qUqb4QSc(1/3) AAS
ネストしたcontextで
内側のcontextが外側のcontextで設定した状態を
書き換えるような形でテストを書いても別にいいと思うけどな
876(1): 2018/03/21(水)01:57 ID:p8DsWgGG(2/4) AAS
>>875
でもそうするとテストケース一つとか実行した時におかしくならない?
877: 2018/03/21(水)04:11 ID:rJLoGwxo(1) AAS
>>873
自己紹介乙
878: 2018/03/21(水)07:02 ID:wxFTzoek(1) AAS
外部への依存が少なければ、個々のテストの独立性が高いから、
バグが減るし、テストを並行実行できる
それが理想だけど、実現するのは難しそう
879(1): 2018/03/21(水)16:09 ID:qUqb4QSc(2/3) AAS
>>876
おかしくならないよ
let(:a) { 2 }とかで上書きしてみればわかるでしょ
880(1): 2018/03/21(水)16:22 ID:p8DsWgGG(3/4) AAS
>>879
上書き?
letは新たにローカル関数を作るようなもので
親ブロックのaを上書きなんかしてないよ
881(1): 2018/03/21(水)16:24 ID:qUqb4QSc(3/3) AAS
>>880
それ分かってるんなら
何がおかしくなると思ってるの?
882: 2018/03/21(水)16:47 ID:p8DsWgGG(4/4) AAS
>>881
内側のブロックで外側のブロックの変数に値を入れた場合だよ
883(1): 2018/03/30(金)15:22 ID:87KFZNYL(1/2) AAS
Chrome 65 になったら、selenium webdriver が動かなくなったので、
chrome driver 2.37 を、ダウンロードしてみた
これで動くかどうかは、まだ試してないけど
884: 883 2018/03/30(金)20:31 ID:87KFZNYL(2/2) AAS
新しいバージョンの、chrome driver にしたら動いた
885(1): 2018/04/01(日)16:44 ID:0KaYXtgi(1/2) AAS
すみません、質問があります。
他人様の書いたコードを読んで写経しながら勉強していた所、
begin
#何らかの処理A(特に例外を出しそうな処理ではない)
end until hoge
という記述があったのですが、この書式の意味というか意図がいまいちつかめなくて困っています。
自分でコードを書いて試してみた所、この記述はhogeがtrueでもfalseでも処理Aを実行しており、
特に「until hoge」の部分で何を制御したいのかがわかりません。
(begin
#処理
省4
886: 2018/04/01(日)16:51 ID:1KgD14Zs(1) AAS
(と)の二文字省略できる
887(1): 2018/04/01(日)17:15 ID:9myXjpPz(1/2) AAS
>>885
下のAとBは同じことをするんだけど、Aだと1行目と4行目が同じでもやっとするのでBのように書いているのでは
個人的にはbegin〜endをメソッドにしてこうは書かないけど
begin〜end untilのほかにもbegin〜end whileも同様
# A
i = Time.now.sec
until i % 3 == 0
p i
i = Time.now.sec
end
省5
888(1): 2018/04/01(日)17:18 ID:9myXjpPz(2/2) AAS
訂正
# A
i = Time.now.sec
p i
until i % 3 == 0
i = Time.now.sec
p i
end
# B
begin
省3
889(1): 2018/04/01(日)17:32 ID:0KaYXtgi(2/2) AAS
>>887-888
ご回答頂きどうもありがとうございます。
なるほど、この書式だとbegin~end内の処理が1回は必ず実行されて、
その後に条件文で判定されるようになるので、同じ処理(例だと代入処理)を2度書かなくて済むようになるんですね。
とても勉強になりました。
個人的にはコード行数が増えたり同じ処理が連続するよりも、
ひと目で意図する処理が他人に伝わらないのはちょっと嫌なのでこの書き方は真似しないようにします……。
890: 2018/04/01(日)17:40 ID:KXX7rc47(1) AAS
いや、それはおかしい。
リトライやリドゥーみたいな処理で、必要であれば、ためらわずそう書くべき。多少わかりにくくても。
いずれ慣れるから。
なんなら、先頭にコメントをつけとけば。
891(1): 2018/04/01(日)17:57 ID://EuH1G7(1/2) AAS
絶対的なルールではないけどこんなものもあるんで参考までに
ruby-style-guide
>後判定ループの場合、begin/end/untilやbegin/end/whileより、
>break付きのKernel#loopを使いましょう。
外部リンク[md]:github.com
892: 2018/04/01(日)18:00 ID:ZcGM330i(1) AAS
(なにかしら).method
do
なにかしら
end メソッド
みたいなもんだからRuby規則に沿っているだろ
893(2): 2018/04/01(日)18:17 ID:A31P7FUz(1/2) AAS
>>891
後判定ループを行うのにbegin-end-while/untilが好ましくない理由を俺に教えて欲しい
894(1): 2018/04/01(日)18:21 ID:hwmab9Mq(1/2) AAS
>>893
英語的にキモいからだろ
end until ってさすがに非ネイティブの俺でも不自然に感じるぞ
895(1): 2018/04/01(日)18:27 ID:Aa3HndXz(1) AAS
英語的な自然さを求めるなら、loopをendのエイリアスということにして loop while/until かな
VBがそんな感じだったはず
まあジャップ製言語だから仕方ないね
896(2): 2018/04/01(日)18:31 ID://EuH1G7(2/2) AAS
>>893
beginの中が長いと上から読んでてループするんだかrescueするんだかわかりにくいからじゃない?
ruby-style-guideはコメントを極力書かないで済むようにするのが目的の一つだから
まあ個人的には首肯しかねるルールもいくつかあるけどね
897: 2018/04/01(日)18:43 ID:hwmab9Mq(2/2) AAS
>>896
それもあるね
日本人からすると「〜〜(長い長い手続き)〜〜をループさせろ」は自然な流れだけど、
向こうの人からすると「結論から話せやファッキンジャップ」だろうな
898: 2018/04/01(日)21:03 ID:A31P7FUz(2/2) AAS
>>896
ああ、なるほど
そういう観点だったのね
ありがとう
899: 2018/04/02(月)12:57 ID:g/2XFKpH(1/2) AAS
ブロッキング条件なら後に来るの自然に感じる
長過ぎるとってのはどんなブロックでも同じ
900: 2018/04/02(月)13:03 ID:KugB3K+A(1) AAS
SV
これは第一文型なんだから
文章.method
SをVするで普通の英語じゃん?
901: 2018/04/02(月)13:11 ID:6hj+x7xd(1) AAS
おいおい…
「を」は対格を作る格助詞だぞ。
記号で書くとV(=verb=動詞)O(=object=目的語)だ。
SVは
S(=subject=主語)V(=verb=動詞)で、
S「が」Vする、だ。
902: 2018/04/02(月)13:22 ID:g/2XFKpH(2/2) AAS
自然言語なんて例外だらけなんだからどうでもいい
903: 2018/04/02(月)13:41 ID:eDlvSPE1(1) AAS
sendを使う度にモヤモヤした気持ちになる
904: 2018/04/02(月)14:10 ID:HZoT/r0A(1) AAS
それより>>894だろうな
begin〜end系言語で結びにend whileなんて書くのrubyくらいじゃないか?
たいてい>>895みたいにendを別の単語に変えてる
905: 2018/04/02(月)18:13 ID:TBzY9DYT(1) AAS
そりゃそもそもend書かせる主流言語が少ないし
906: 2018/04/03(火)03:47 ID:hZewAlsv(1) AAS
>>889
同じ処理を、別の場所に2回書くと、
修正時に、2か所とも修正しないといけないから、
どちらかを修正し忘れる事があるので、危険
907: 2018/04/03(火)04:10 ID:8HWTUUN8(1) AAS
Donot
Repeat
Yourself
908: 2018/04/03(火)23:32 ID:q2DveEBR(1) AAS
Do
Repaet
Yourself
909: 2018/04/04(水)02:02 ID:h2UR4/YM(1) AAS
Reuse
Reduce
Recycle
Ruby
910: 2018/04/05(木)14:25 ID:eFdDptlj(1) AAS
selenium-webdriver で、Chrome のHeadless mode で、
5ch の投稿者名・書き込み内容を、抜き出してみた
driver.navigate.to "2chスレ:linux
elements = driver.find_elements(:css, 'div[data-id]')
elements.each do |elem|
str = elem.attribute('data-id') + ' 投稿者 :'
# CSS では、コンテキストの直下を表現できないので、xpath を使う
# str += elem.find_element(:css, '> div.meta > span.name').text
str += elem.find_element(:xpath => "div[@class='meta']/span[@class='name']").text
puts str
省4
911: 2018/04/07(土)05:31 ID:Cc4pa2fK(1) AAS
三ヶ月在れば一つのプログラム言語を習得しアプリケーションを作ることが出来るw
2chスレ:win
おいらは習作はしない、他愛ないことはやらないのだ
2chスレ:win
C#なんてのはVZの開発環境にないwww
2chスレ:win
ワロタ、ワロタ
2chスレ:win
912: 2018/04/08(日)14:20 ID:JYaIVkeP(1) AAS
10年以上前に学校でスクリプト言語を勉強してたときはPHPが流行ってて
Perlもあったけど少し古いかなって感じ。ただとにかくJAVAが騒がれててJSP+tomcatなんかもやったな。
Rubyはあったけどそんなに話題にならず。
で最近、またスクライピングがやりたくて色々調べたら
もうPHPも下火?でRubyとpythonとかいう言語が主流みたいですね。
913: 2018/04/08(日)15:16 ID:nkM5b3tX(1) AAS
Rubyは主流じゃない
914: 2018/04/08(日)16:26 ID:ikNNlzZg(1) AAS
PHPが下火でRubyが主流がねーわ。
人気を捏造しないと好きな言語も恥ずかしくて使えないのか軟弱者め。
たとえ世界の全てが使わなくても自分だけはRubyを使い続けるという気概を持てよ情けない奴
915: 2018/04/08(日)17:41 ID:mE+8rAwy(1) AAS
2ch/5chでは、日本人が作ったというだけで、だめ扱いする書き込みがあるから
注意すべし。どこかぞの国から書き込まれている事がある。
916(6): 2018/04/09(月)11:49 ID:M/BmQ9Z1(1/5) AAS
以下の半角空白区切りの行から、稼働時間を求めるには、どうやるの?
夜、24:00 以上の数字もあります
2018/09/09 09:45-24:00
2018/10/10 23:00-27:15
917: 2018/04/09(月)12:21 ID:2h6IFanV(1/3) AAS
>>916
date = "2018/09/09 09:45-24:00"
m = date.match(/(\d\d):(\d\d)-(\d\d):(\d\d)/)[1, 4].map(&:to_i)
min = (m[2] - m[0])*60 + m[3] - m[1]
p "%d:%d" % min.divmod(60) # => "14:15"
918: 916 2018/04/09(月)13:15 ID:M/BmQ9Z1(2/5) AAS
ありがとう
Date, DateTime, Time などの形で、引算で求められませんか?
919: 2018/04/09(月)13:42 ID:2h6IFanV(2/3) AAS
date = "2018/09/09 09:45-24:00"
m = date.match(%r!\A(?<year>\d{4})/(?<month>\d\d)/(?<day>\d\d) (?<begh>\d\d):(?<begm>\d\d)-(?<finh>\d\d):(?<finm>\d\d)\z!)
beg = Time.new(m[:year], m[:month], m[:day], m[:begh], m[:begm])
fin = Time.new(m[:year], m[:month], m[:day], m[:finh], m[:finm])
min = (fin - beg)/60
p "%d:%d" % min.divmod(60) # => "14:15"
920(1): 916 2018/04/09(月)14:17 ID:M/BmQ9Z1(3/5) AAS
ありがとう
24:00 では、Time インスタンスを作れるけど、
27:15 では、エラーで作れなかった
回避策を考えてみます
921: 2018/04/09(月)14:23 ID:GdkyYm9A(1) AAS
pythonスレにマルチするのやめれ
922: 2018/04/09(月)14:39 ID:2h6IFanV(3/3) AAS
>>920
date = [
"2018/09/09 09:45-24:00",
"2018/10/10 23:00-27:15"
]
begfin = lambda do |m|
d = Time.new(m[:year], m[:month], m[:day])
[[m[:begh], m[:begm]], [m[:finh], m[:finm]]].map { |hour, min|
3600 * hour.to_i + 60 * min.to_i
}
省11
923: 916 2018/04/09(月)15:24 ID:M/BmQ9Z1(4/5) AAS
python スレの書き込みとは別人。
ID も異なるはず
その書き込みを見て、Ruby ではどうプログラミングするべきか、考えてみたが難しかった
924: 2018/04/09(月)15:46 ID:aj6Oy7j8(1) AAS
「ruby 24」検索
Ruby で 24 時超えの時間を楽ちんにパースする方法 - Qiita
外部リンク:qiita.com
925(1): 916 2018/04/09(月)16:17 ID:M/BmQ9Z1(5/5) AAS
d = Time.new(m[:year], m[:month], m[:day])
d_next = d + 60 * 60 * 24
24時以上の場合は、hour から24を引いて、1日足すけど、これはややこしい
926: 2018/04/09(月)21:36 ID:0VIzl/J9(1) AAS
クソコードばっかりだなw
927: 2018/04/09(月)22:04 ID:cXk52I1j(1) AAS
25以上の数字の入力を許している次点でクソコード。
928: 916 2018/04/10(火)00:28 ID:oEQHPFsL(1) AAS
表計算ソフトなどで、時間管理していると、こういう表記もある。
2018/10/10 23:00-27:15
上を一旦、変換して
2018/10/10 23:00-24:00
2018/10/11 00:00-03:15
これも、1日足すのも結構、難しい。
Date, DateTime に変換してから、1日足さないと、月末・うるう年などで、バグる
>>925
>d_next = d + 60 * 60 * 24
これで1日足すのも、うるう秒の時が、どうなるか不安
929: 2018/04/10(火)00:34 ID:PJbB3F/q(1) AAS
時刻じゃなくて時間を表すクラスが欲しくなるな
930: 2018/04/10(火)01:03 ID:TtMX4ea2(1) AAS
24,60,60進法による演算ということね
931: 2018/04/10(火)03:53 ID:gEpzqPRo(1) AAS
時間は最重要項目なんだから
完璧なライブラリとか無いのかな?
932: 2018/04/10(火)08:52 ID:OCO/nUgk(1) AAS
RubyのDateTimeは充分以上だよ。
日付を増減するときは、それ時分秒の値はさわらずに、めんどくさくても日の値を変更すればいい。
933: 2018/04/10(火)08:58 ID:wPoJQnkn(1/2) AAS
じゃあエポックタイムで十分だな。めんどくさくても計算すればいい。
934: 2018/04/10(火)09:31 ID:Pta2sQP4(1) AAS
DateTimeは完璧なライブラリだから24時以降はRangeErrorになる
完璧な仕様だ
935: 2018/04/10(火)09:55 ID:wPoJQnkn(2/2) AAS
rubyの不便はいい不便
936: 2018/04/10(火)17:47 ID:yDOt+2aU(1) AAS
rubyに不便なんてないぞ
何を言ってんだ
937: 2018/04/10(火)18:25 ID:6CkCb20Q(1) AAS
AA省
938: 2018/04/10(火)18:40 ID:+90qRIYS(1) AAS
RubyはUNIX文化だから、時刻はUNIXタイムスタンプを生で扱うのが基本
MRIのコアの連中自身が使ってないから改善されないんだろう
939: 2018/04/11(水)00:12 ID:5V3NvSPI(1) AAS
rubyなら日本の休日祝日にも対応してるはず
940: 2018/04/11(水)07:23 ID:jfPKheqL(1) AAS
【短命に終わった】国民の祝日.csvをパースして変換するRubyプログラムとコード解説
動画リンク[YouTube]
伊藤淳一の動画ある
941: 2018/04/13(金)22:47 ID:Hxh7hpmx(1) AAS
Windowsの文字エンコードはどうなってんだよ呪われてるな。
942: 2018/04/13(金)22:56 ID:AzlDcdDn(1) AAS
Windowsの文字エンコードはLinux/Unixよりも対応の幅が広い。
まずNT系は古くからUnicode(UTF-16)に対応
Unicode対応アプリであれば全世界で共通に使える
それでいて9x系との互換性のために、Unicodeに対応してないアプリは
それぞれの国のエンコード設定が使用される
その設定はコントロールパネルから変更できるのだが
その変更できる文字コードがLinux/Unixよりも遥かに多い
しかもANSIと互換性がない文字コードでも使用可能
943(1): 2018/04/14(土)03:27 ID:lnTeyTPJ(1) AAS
chcp 65001 バグ治してから言え
944: 2018/04/14(土)03:48 ID:6pCy057f(1) AAS
>>943
それはどちらかと言えばコマンドプロンプトの問題なんだが、
WSL対応関係で強化されて、めだった不具合なくなってるよ
945(1): 2018/04/15(日)21:31 ID:r1bqrkta(1) AAS
OneDriveでコード管理していたのだけど、
久しぶりにコーディング(エディタはVSCode)してOneDrive上のRubyファイルを実行しようとしたら
[BUG] Segmentation fault
というエラーがでて、
puts 'A'
というコードさえ実行出来なくなっていた。
ローカルハードディスクに落としたら実行出来たんだけどどうしたものだろう。
946: 2018/04/15(日)21:49 ID:0NMpmKAm(1) AAS
UTF-16とかじゃねーの?
947: 2018/04/15(日)22:51 ID:MhEmdnyU(1) AAS
そっか。
ありがとうございます。
別にOneDriveをストレージにしても問題ないということだね。
試行錯誤してみます。
948: 2018/04/15(日)23:30 ID:xpwShDOv(1) AAS
WebDAVか
949: 945 2018/04/16(月)07:27 ID:1U+gAd+J(1) AAS
GoogleDrive上のRubyファイルは動いた。
何か仕様変更があったのかしら。
ともかく、現状、GoogleDriveでコード管理することにします。
950: 2018/04/16(月)08:55 ID:PnJWHI/9(1/3) AAS
なぜGitを使わないのか
BitBucketなら無料でプライベートリポジトリ持てるぞ
951: 2018/04/16(月)09:47 ID:75OnkAat(1) AAS
Azureで自前のgitとSSH鯖で桶
952(1): 2018/04/16(月)09:53 ID:PnJWHI/9(2/3) AAS
AzureならGitはVSTS使うのが普通だろ
AWSならCodeCommit使えば完全無料だ
今時たかがGitのホスティングごときにサーバー運用の手間かけるとか頭悪すぎ
953: 2018/04/16(月)10:08 ID:pZQ1SPWZ(1/5) AAS
じゃあ、これも
Google Cloud Platform でホストされている複数のプライベート Git レポジトリ
外部リンク:cloud.google.com
5ユーザー、50GBストレージ、50GB通信量(下り)まで無料だから
個人用途なら無料で使えそうだね
954(1): 2018/04/16(月)10:10 ID:pZQ1SPWZ(2/5) AAS
> AWSならCodeCommit使えば完全無料だ
AWSの方は完全無料なのか?って思ったら
やっぱり無料制限あるじゃんw
だいたい一緒みたいね
外部リンク:aws.amazon.com
最初の 5 人のアクティブユーザー
50 GB のストレージ/月
10,000 回の Git リクエスト/月
955: 2018/04/16(月)10:31 ID:X9HGFo0K(1/2) AAS
>>954
実働20日として一人あたり一日平均100コミット?
これ超過できる超人いるのかよ
956(1): 2018/04/16(月)10:33 ID:X9HGFo0K(2/2) AAS
いやコミットじゃなくてプッシュやフェッチか
人間の手動操作なら事実上無制限だな
957(1): 2018/04/16(月)10:40 ID:pZQ1SPWZ(3/5) AAS
>>956
1 push 1リクエストとは限らんぞ、どういう計算しているか知らんけど、
例えば1 pushに含まれる1ファイルが1リクエストになってるかもしれない
そう考えるとGoogleの方がわかりやすいかもね。
958: 2018/04/16(月)10:45 ID:pVewTO76(1) AAS
>>957
ファイル単位なら1万くらいcloneや最初のpushで一発で超過するじゃん
一般的な使い方で超過することはめったにないって書いてるからさすがにそれはないだろ
959: 2018/04/16(月)15:08 ID:lu0LQeBN(1) AAS
>>960
踏んだらすれたてよろしく
960(1): 2018/04/16(月)15:17 ID:r1/f7Sud(1) AAS
うんこ
961: 2018/04/16(月)15:20 ID:pZQ1SPWZ(4/5) AAS
↑うんこ踏んだ奴
962: 2018/04/16(月)16:18 ID:ZFIHRn8x(1) AAS
うんこってrubyのこと?
963(1): 2018/04/16(月)17:10 ID:tsXOlUfW(1) AAS
>>952
gitだけしか使わないわけないだろ
964(1): 2018/04/16(月)17:25 ID:pZQ1SPWZ(5/5) AAS
>>963
今はgitの話では?
他のことしたいなら、他のもの使えばいいだけだし
gitは○○を使うって話をしてるんだよ
965(1): 2018/04/16(月)18:47 ID:PnJWHI/9(3/3) AAS
>>964
たぶん963は、サーバーをGitだけでなく他の用途にも使うと言ってるんだと思うよ
すごく筋の悪い思考だと思うけどね
966: 2018/04/17(火)03:27 ID:QMWYQNUe(1) AAS
スジはなめるためにある
967(1): 2018/04/17(火)17:49 ID:GYuBFjQi(1) AAS
次スレ
Ruby 初心者スレッド Part 63
2chスレ:tech
968(1): 2018/04/17(火)23:55 ID:AHLVIZ+p(1) AAS
>>965
なんで筋が悪いと思うんだ?
969: 2018/04/18(水)00:43 ID:lRwbg5zI(1) AAS
>>967
おつ
970(1): 2018/04/18(水)01:12 ID:6DBcsPYG(1) AAS
>>968
逆に聞くが、あえてGit自前運用かつサーバー相乗りという選択肢を選ぶ積極的な理由が何か一つでもあるの?
コストが高い、信頼性が低い、運用が面倒臭い、便利なWebインターフェイスもない、CIなど外部との連携もしづらい
また、サーバーに複数のサービスを同居させるのは、運用が面倒になるので一般的には避ける方向で検討するのが基本だ
オンプレならハードのコストやハード運用も勘定に入れた結果そうせざるを得ない場合も多いが、
クラウドなら安く小さいサーバーを沢山持ててハード運用の手間もないから問題にならない
971: 2018/04/18(水)01:21 ID:UfQjex1N(1) AAS
関数の取扱いが非常に筋の悪い言語があるらしい。
何かしらのメソッドとして表したいという、初期設計時のオナニーがこの事態を招いた。
block、proc、lambdaと笑っちゃうくらいぐっちゃぐちゃ。
どういうときにどの形式使えばいいのか、変換するルールは…
はい、お約束。全部覚えましょうw
一事が万事この調子だよなw
そのうち「3+5を計算する機能」レベルで組み込まれてしかも数通りバリエーションが仕込まれそうw
宣伝文句は「えーっ、3+5計算するのにそんなこと書かなきゃいけないの?wそれrubyなら組み込みの呼び出すだけで一発だよ?ww」
972: 2018/04/18(水)02:03 ID:1MQV5vND(1/2) AAS
>>970
git使うだけで面倒とかどれだけ初心者想定してんだよ
うちはredmineと連携させてるからwebからも見れるよ
バックアップも他と一緒にとってるから楽よ
別にホストがクラウドでないなんて言ってないし
973: 2018/04/18(水)02:08 ID:1MQV5vND(2/2) AAS
サーバーが、か
974: 2018/04/27(金)16:47 ID:vghG7n/V(1) AAS
ぼくがRubyを使う理由
外部リンク:www.eimei4coding.blog
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.227s*