Ruby 初心者スレッド Part 58 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2016/03/23(水) 21:16:44.36ID:6HedlyzC質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 57
http://peace.2ch.net/test/read.cgi/tech/1426165733/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
0002デフォルトの名無しさん
2016/03/24(木) 04:01:05.34ID:FJvNCHp3Effective Ruby、2015
メタプログラミング Ruby 第2版、2015
Rubyのしくみ、2014
改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015
0003デフォルトの名無しさん
2016/03/24(木) 19:11:14.30ID:5a9zwPTf0004デフォルトの名無しさん
2016/03/25(金) 09:00:13.57ID:amKPWQ2XOSSのブラウザ自動テストツール、Selenium WebDriver を使って、
Rubyでテストを書いた本
Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説
Rubyのしくみ、2014
Rubyの実装系、Ruby1.9のRuby仮想マシンの本
0005デフォルトの名無しさん
2016/03/27(日) 10:04:22.49ID:zeXJFeRN0006デフォルトの名無しさん
2016/03/28(月) 02:19:58.22ID:NlvcQEtD0007デフォルトの名無しさん
2016/03/30(水) 08:52:01.47ID:8NmKCzQm0008デフォルトの名無しさん
2016/03/30(水) 10:23:11.00ID:pubF0BCKa.count"\\"をやると1とでます
文字列で\¥を\だけにするほうほうおしえくてださい
0009デフォルトの名無しさん
2016/03/30(水) 11:09:52.71ID:14q3t0GC0010デフォルトの名無しさん
2016/03/30(水) 12:05:39.08ID:R5AIxfw4p a #=> "\\"
puts a #=> \
puts a.count('\\') #=> 1
p はデバッグ用関数だから、内部に入っているものが見えているだけ。
ちゃんと、puts a すれば、\ と1文字になる
0011デフォルトの名無しさん
2016/03/30(水) 12:19:47.60ID:MbRjE7fGよくある言語実装のように代入時のままの順序かどうかは保証されていないんでしょうか?
http://stackoverflow.com/questions/17355316/hash-ordering-preserved-between-iterations-if-not-modified
・Ruby1.9 からは保証されてる。信頼してよい。RubySpecのココ見たらいいがな (←リンク切れ) Jun 28 '13 at 0:29
って意見と
・Ruby 2.2.0 からは別に rubyspec に従ってるわけじゃないからな。(実装次第で保証されないって事?) Mar 20 '15 at 4:06
があります。現在はどうなってるんでしょうか?
0012デフォルトの名無しさん
2016/03/30(水) 12:32:31.71ID:MbRjE7fGri Hash してみたら
〜
Hashes enumerate their values in the order that the corresponding keys were
inserted.
〜
と出てきました。
これは今後も保証されると思っていいんでしょうか?
0013デフォルトの名無しさん
2016/03/30(水) 12:55:41.31ID:R5AIxfw4Rubyは知らない
0014デフォルトの名無しさん
2016/03/30(水) 13:29:51.33ID:S0HkEiDsArrayは順番を必ず保証する
なぜなら取り出す順番が保証されていることが配列の存在意義だから
Hashは順番を必ずしも保証しない
なぜなら取り出す順番は連想配列の存在意義じゃないから
それ以上の意味はない
現在の実装は「たまたま」順番が保証されているけどそれはオマケとか親切とかそういうレベルの話
p Time.nowで確実なのは現在時刻を表示することだけであって
表示される文字列を決め打ちして処理にかけてはいけないというのと似たようなものだ
将来ユーザーフレンドリーに日本語で表示されるかもしれない
0015デフォルトの名無しさん
2016/03/30(水) 13:48:45.91ID:mQiL8UBv順番固定で勝手に出てくること自体は構わない
だけど、それを頼りになにか処理を記述するのは非常に奇妙で不快に映る
繰り返すけど、出てくる順番が揃ってるのはいい
それを利用するようなコードを見ると吐き気がする
HashArrayとかOrderdHashとかそういう名前のオブジェクトなら納得するけど、Hashという名前では歴史的名前的にダメ
001612
2016/03/30(水) 14:34:26.61ID:MbRjE7fG0017デフォルトの名無しさん
2016/03/31(木) 00:11:32.35ID:SXg61G2F0018デフォルトの名無しさん
2016/03/31(木) 01:39:56.18ID:hZH1pyKxGUIを用いたりexeにまとめて配布するものまでRubyで行おうとすると、結果的に別言語を習得するのよりコストかかるでしょうか?
試みたことある方いらっしゃいましたら意見くださると嬉しいです
0019デフォルトの名無しさん
2016/03/31(木) 12:59:43.70ID:yy0681Erそれを使う人が勝手に、システムにインストールして使う
RoRのようなWebアプリならあるけど、
Rubyで作った、デスクトップGUIアプリってあるのか?
0020デフォルトの名無しさん
2016/04/01(金) 07:05:17.08ID:6aCBXilE素直にC#とか学んだ方がいいのかもしれませんが、RGSSのようなものを知ってしまったので微妙に未練が……
0021デフォルトの名無しさん
2016/04/02(土) 18:12:28.67ID:CqWvTnZRエラーが出ていて調べたのですが原因がよくわかりません
wsdlは下記を使用しています
http://h-invitational.jp/hinv/hws/varysysdb/soap_search_rs_number.php?wsdl
そして下記のコマンドを実行しました
[root@localhost www]# wsdl2ruby --wsdl 'http://h-invitational.jp/hinv/hws/varysysdb/soap_search_rs_number.php?wsdl' --type client
[root@localhost www]# ruby search_rs_number_execServiceClient.rb
/usr/lib/ruby/gems/1.8/gems/soap4r-1.5.8/lib/soap/streamHandler.rb:268:in `send_post': 404: Not Found (SOAP::HTTPStreamError)
from /usr/lib/ruby/gems/1.8/gems/soap4r-1.5.8/lib/soap/streamHandler.rb:172:in `send'
from /usr/lib/ruby/gems/1.8/gems/soap4r-1.5.8/lib/soap/rpc/proxy.rb:179:in `route'
from /usr/lib/ruby/gems/1.8/gems/soap4r-1.5.8/lib/soap/rpc/proxy.rb:143:in `call'
from /usr/lib/ruby/gems/1.8/gems/soap4r-1.5.8/lib/soap/rpc/driver.rb:181:in `call'
from (eval):6:in `search_rs_number_exec'
from search_rs_number_execServiceClient.rb:27
0022デフォルトの名無しさん
2016/04/02(土) 19:33:53.20ID:cgCmjNww「スッキリわかる Java入門 第2版」2014 を読めば?
>>21
HTTP 404は、ホームページ(のデータ)が見つかりません
0023デフォルトの名無しさん
2016/04/02(土) 21:10:59.86ID:0eiGAsV40024デフォルトの名無しさん
2016/04/03(日) 02:37:49.45ID:RpcNuWJWありがとうございます
プログラム側の問題というよりはホームページ側の問題みたいですね
0025デフォルトの名無しさん
2016/04/03(日) 09:43:35.27ID:T0KKITG1ちがう
あなたにHTTPとHTML(やJavaScript(や一般的なサイト運用技術知識))の知識がないがために普通のブラウザの挙動をエミュレートできてない
必要なのはRubyの知識じゃなくってWebブラウザの挙動とHTTP通信とHTMLでのサイトの書かれ方の知識
0026デフォルトの名無しさん
2016/04/03(日) 15:55:17.04ID:RpcNuWJWすみません、指摘していただいたことがうまく理解できないのですが
サーバにリクエストを送って帰ってきたHTMLファイルをブラウザが解析して
表示がされるという程度の認識でした。
自分の想定していた挙動は
>>21の
>[root@localhost www]# wsdl2ruby --wsdl 'http://h-invitational.jp/hinv/hws/varysysdb/soap_search_rs_number.php?wsdl' --type client
を実行して作られたクライアントクラスの中を修正して
>[root@localhost www]# ruby search_rs_number_execServiceClient.rb
を実行すればXML形式で期待する結果が返ってくると思っていました。
0027デフォルトの名無しさん
2016/04/03(日) 16:58:38.52ID:OaDtSrzOその前後の変数の内容を、片っ端から見てみれば?
0028デフォルトの名無しさん
2016/04/04(月) 07:02:52.26ID:UUnGIXWsこういう0..fで構成されたハッシュ値を
>tp://i.imgur.com/nOBxnDb.jpg
>nOBxnDb
みたいな短縮URL風に短くするコード教えて下さい
0029デフォルトの名無しさん
2016/04/04(月) 09:10:25.66ID:jvwKdFAZどこからわからんのかくらいは言って欲しい
16進数を(10進数に置き換えてから)26進数なり52進数なりに計算し直して文字を当てはめる
0030デフォルトの名無しさん
2016/04/05(火) 13:10:42.86ID:wRkvpogr0031デフォルトの名無しさん
2016/04/05(火) 13:12:49.42ID:wRkvpogr0032デフォルトの名無しさん
2016/04/05(火) 13:52:47.37ID:Uvoa8jl9別に切羽詰まった話ではありません、ふと浮かんだ疑問です。
class SecretHeart
def initialize(feeling="")
@feeling = feeling
end
private
def feeling=(any) end
private
def feeling() nill end
end
john = SecretHeart.new("悲しい")
print john.feeling # → error
print john.instance_eval{@feeling} # → "悲しい"
print john.instance_eval{@feeling = "楽しいです!"}
print john.instance_eval{@feeling} # → "楽しいです!"
BasicObject#instance_eval を使えばなんでもアリじゃないですか?
private
def instance_eval() end
こんなoverrideをしても、きっとまだ裏道ありますよね。
0033デフォルトの名無しさん
2016/04/05(火) 14:12:22.26ID:F6iG++QKary = $stdin.readlines
# 1行ずつ処理する
ary.each_line do |line|
line.chomp!
end
0034デフォルトの名無しさん
2016/04/05(火) 14:16:14.23ID:Wtb6QTFr>Rubyで真にprivateなインスタンス変数を作るにはどうしたらいいんでしょうか?
Rubyでは絶対的なアクセス制御はできない
なぜなら「普通に」アクセスした時に拒まれさえすれば用は済むからだ
0035デフォルトの名無しさん
2016/04/05(火) 14:20:10.18ID:Uvoa8jl9了解。 そういう文化なんですね。
0036デフォルトの名無しさん
2016/04/06(水) 00:23:46.52ID:q1HrDxSz0037デフォルトの名無しさん
2016/04/06(水) 01:43:49.90ID:SreJMpRzWin10にしてUbuntu on Windows上でRuby動かすってのはいつからできるんだっけか。
0038デフォルトの名無しさん
2016/04/06(水) 02:33:03.12ID:kRFLofHqわざわざcygwin導入しなくてもコマンドプロンプトで十分
導入してるのならお好きに
0039デフォルトの名無しさん
2016/04/06(水) 07:38:43.97ID:BFsTf7eA環境構築もいらん
0040デフォルトの名無しさん
2016/04/06(水) 11:05:30.04ID:vURaTx4xそしてIDやパスワードを自分からお漏らしするまでがセットか
ttp://codepad.org/recent
初心者向け「だからこそ」ローカルで完結するべき
0041デフォルトの名無しさん
2016/04/08(金) 21:35:25.29ID:/jXs509Gvalidates :password, format: { with: /\A([^@\s]+)\Z/ }
devise :database_authenticatable, :registerable,
:validatable
end
スキャッフォルドで何かアプリケーションを作りたいと思い、scaffoldを使ってdeviseをインストールしました。
そこで編集ページできちんとパスワードが打てるようにvalidateも設定して空白禁止処理を施そうとしましたが、ユーザー登録やユーザーログインで空白をデフォルトで禁止されていて、
編集ページではデフォルトで禁止されておらず、空白が許可されています。
validateでpassword指定して空白禁止すると編集ページで変更するためのパスワードが省略できず、確認用パスワード、現在のパスワードの3回連続で打たなければなりません。
validate、またはほかの場所にどのような処理を施せばよろしいでしょうか?
0042デフォルトの名無しさん
2016/04/08(金) 23:24:07.46ID:R25zKOdT0043デフォルトの名無しさん
2016/04/09(土) 00:40:43.27ID:d9XDMAzzbefore_action とかで空白禁止のバリデーションを edit のときのみ適用すればよいのでは?
0044デフォルトの名無しさん
2016/04/09(土) 23:00:32.93ID:O9j9lH5Y>>19
GUIとEXEもわりと低コストでできるぞ
0045デフォルトの名無しさん
2016/04/10(日) 05:59:09.98ID:QHKhqpLvよければ詳しく
0046デフォルトの名無しさん
2016/04/10(日) 07:24:02.68ID:WTOWAaLYたとえばGUIはTk、EXEはOcraでできる
0047デフォルトの名無しさん
2016/04/11(月) 00:47:25.00ID:zoLHrFMRhttp://i.imgur.com/LrHWsVu.png
0048デフォルトの名無しさん
2016/04/11(月) 01:03:31.98ID:WJsT15xh0049デフォルトの名無しさん
2016/04/11(月) 01:10:55.06ID:uBEcAuw50050デフォルトの名無しさん
2016/04/11(月) 02:21:36.55ID:JpybrsSq0051デフォルトの名無しさん
2016/04/11(月) 06:36:47.71ID:zoLHrFMRhttp://www.rubylife.jp/railsinstall/rails/index1.htmlの手順に従ってやって
その次にhttp://rubyonrails.org/行ってみたけどrailsダウンロードできない
0052デフォルトの名無しさん
2016/04/13(水) 16:29:53.43ID:372sz71r真ん中の10ビットを、上書きするにはどうすればよい?
上書きする演算子が見つからない
0053デフォルトの名無しさん
2016/04/13(水) 17:42:17.15ID:oU5fSDxgbitset = bitset & 0b111111111100000000001111111111 | 0000000000(上書きしたい10ビット)0000000000
ではいかんのか
005452
2016/04/13(水) 18:12:34.54ID:372sz71r元のビットの上書きしたい部分を、0&でマスクしてから、
ORで上書きすれば良かったのか
0055デフォルトの名無しさん
2016/04/15(金) 21:02:46.68ID:qyn/7G/H例えば
puts "Hello, World!"
って左から順に打った場合、"、H、W、!、"のどれかを押した瞬間に固まってそのまま数十秒動かなくなる
その間はCtrl+cとかも無反応
Pry version 0.10.1 on Ruby 2.2.3
Windows 8.1
0056デフォルトの名無しさん
2016/04/15(金) 21:43:29.46ID:kJz9a6FQ0057デフォルトの名無しさん
2016/04/15(金) 22:08:30.22ID:dCoxeauz複雑あるいは面倒な処理を簡単かつ直感的なメソッドチェインで扱えるところが嬉しい
0058デフォルトの名無しさん
2016/04/15(金) 23:38:46.31ID:pdQdC9Xbxor だったら入力のマスクも簡単にできる
bitData ^= ((1 << bitOffset + bitLen) - (1 << bitOffset)) & (bitData ^ (setVal << bitOffset))
0059デフォルトの名無しさん
2016/04/17(日) 00:33:18.57ID:v9XO8+KJ0060デフォルトの名無しさん
2016/04/17(日) 00:55:07.10ID:7GcoLz9W予断持たずにきちんと体系的に学習することをお勧めします
なお「RubyはC++でもJavaでもCでもVBでもない」というのは煽りじゃなく本気のアドバイスです
0061デフォルトの名無しさん
2016/04/17(日) 01:07:34.17ID:BiZQs4Waここまで流行ったのが不思議なほど
0062デフォルトの名無しさん
2016/04/17(日) 22:49:27.40ID:DiLcHZEv>>59
ブロックでは、do 〜 end は複数行で、{ } は1行のみの処理で、使うことが多い
0063デフォルトの名無しさん
2016/04/18(月) 00:49:33.87ID:zxdOCIHuいろんな言語を折衷してるから
書きやすいと思う
書きやすいから流行った
0064デフォルトの名無しさん
2016/04/18(月) 23:52:27.01ID:IbVy+CTe一番最初の検索結果のページに飛ぶやり方がわからない。
検索後ie.document.links.item(0).clickとかやってみたけど全然ダメだった。
ソースを見てみても複雑なjavascriptでよくわからん。
0065デフォルトの名無しさん
2016/04/19(火) 06:12:04.67ID:Zv7m44nm・相手のサーバに目的のHTMLをきちんと表示させられる程度のHTTPの知識
・目的のリンクなり画像なりテキストなりの位置を判断できる程度のHTMLの知識
・目的のリンクなり画像なりテキストなりの位置を表現できる程度のXpathの知識
・通常のWebブラウザではどういう動作をしているのかを分析できる程度のJavaScriptの知識
・通常のWebブラウザでのクリックでどういうことが起こっているかを説明できる程度のWebブラウザ挙動の知識
の5つだ! Rubyスクリプトを作るはずなのにRubyと利用ライブラリの知識という項目が軽視されてることに注目だ!
どういう対象をどういう操作して通常のWebブラウザでいうところのどういう動作にあたるのかを理解せず盲目的に
> 検索後ie.document.links.item(0).clickとかやってみたけど全然ダメだった
とかやってるようでは道程は遠いぞ!
っていうかWebクローラーは初心者的な用途イメージの割にはWeb利用の統合的な技術知識が要求される上に
Googleは超絶効率化のために超絶高度な遣り取りやってるから練習やサンプルには全く適してないんだ! ご愁傷様だったな! Yahoo使えYahoo!
0066デフォルトの名無しさん
2016/04/19(火) 06:20:43.61ID:fF4GXe730067デフォルトの名無しさん
2016/04/19(火) 15:19:46.53ID:DoDYnfhi0068デフォルトの名無しさん
2016/04/19(火) 19:12:04.08ID:kcmoRlAu`method_missing': unknown property or method: `value' (NoMethodError)
0069デフォルトの名無しさん
2016/04/19(火) 21:14:24.24ID:+csqt/Waドキュメント読もう
0070デフォルトの名無しさん
2016/04/19(火) 21:50:54.87ID:kcmoRlAuググれば見つかるもんなの?
0071デフォルトの名無しさん
2016/04/19(火) 22:44:13.44ID:+csqt/Wa浸かったことないが検索したら出たぞ
2.1.0だけど http://docs.ruby-lang.org/ja/2.1.0/library/win32ole.html
0072デフォルトの名無しさん
2016/04/20(水) 06:55:31.98ID:w5hbs5qXエラーになる可能性が無数にあるので、言語どうこうの話じゃない
Rubyで、anemoneの物足りない部分を補完するクローラーを自作した
ttp://qiita.com/tkosuga@github/items/7c1b7bf98a697de66b68
るびきちが、Rubyによるクローラーの本を出している
>>64
そもそも他人の作ったプログラムは、簡単に解析できない。
APIの使い方を、公開していなければ、まず使うのは無理
企業はアプリを解析するのに、普通、1人月百万円以上払う。
それくらい難しいってこと
0073デフォルトの名無しさん
2016/04/20(水) 07:40:43.74ID:IJSlkgxqRubyistの仕事としては最底辺の部類
0074デフォルトの名無しさん
2016/04/20(水) 11:21:11.72ID:TvagBB0uやっちゃだめだぞ。俺はやらされてたが。
0075デフォルトの名無しさん
2016/04/20(水) 22:04:01.92ID:+P5uzrzEまあ、ぼちぼち頑張るか。
0076デフォルトの名無しさん
2016/04/21(木) 09:09:15.15ID:636JdrjZ置換するリネームプログラムってないですか?
Windowsで使えない文字は「< > : * ? " / \ |」。
Linuxで使えない文字は、「/」(他はNull)で
Macで使えない文字は、「 : /」。
ファイルやフォルダはfindで検索するとして、指定ディレクトリの
ファイルやフォルダを「< > * ? " \ |」半角文字を検索し
全て全角に置換したいです。ruby1.8.7希望。
0077デフォルトの名無しさん
2016/04/21(木) 13:53:08.49ID:IzmoSDzeとかで検索したら出てくるけどいくつかあるよ
find の結果の文字列を gsub で置換してやればいいんじゃね?
0078デフォルトの名無しさん
2016/04/21(木) 16:32:18.89ID:636JdrjZどうもです。ファイル名に複数のダメ文字がある可能性があるので一つの記号にgsubするしかないですね。
0079デフォルトの名無しさん
2016/04/21(木) 19:52:32.92ID:iEWNQ8UBってそういう話じゃないか?
0080デフォルトの名無しさん
2016/04/21(木) 20:36:07.43ID:636JdrjZ【Ruby】gsubで複数文字を置換したかった話 | カイトズズキ
http://www.kaitosuzuki.com/posts/406909
str = 'abcdef'
hash = {'a'=>'A', 'b'=>'B', 'c'=>'C'}
puts str.gsub(/a|b|c/, hash)
こんな感じかな。雰囲気はつかめたのでよかった。(^_^;) 楽できそうです。
0081デフォルトの名無しさん
2016/04/21(木) 20:57:51.29ID:/vBm71ZPp '12345'.tr('15', 'lS')
↓
"l234S"
0082デフォルトの名無しさん
2016/04/22(金) 20:35:54.49ID:2DzgCe5nループで回すだけだと思うんだが。
0083デフォルトの名無しさん
2016/04/22(金) 21:25:13.47ID:lAvb/AZz正規表現をキー、一致した文字列を置換する文字列をバリューにとかなら便利なのに
0084デフォルトの名無しさん
2016/04/22(金) 23:51:19.95ID:++t+RWP3require "jcode"
で全角の tr ができるようになる
0085デフォルトの名無しさん
2016/04/23(土) 10:34:50.94ID:5AJaEQrL正規表現だと置換前の文字列が重複しかねなくない?
0086デフォルトの名無しさん
2016/04/24(日) 14:22:44.47ID:Uo+BTEtc存在するドライブやディスクに対して
f = File::open(
0087デフォルトの名無しさん
2016/04/24(日) 14:29:36.53ID:aqqgpD8T■ このスレッドは過去ログ倉庫に格納されています