トップページ⇒tech
1002コメント364KB

Ruby 初心者スレッド Part 58 [無断転載禁止]©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2016/03/23(水) 21:16:44.36ID:6HedlyzC
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、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:FJvNCHp3
たのしいRuby 第5版、2016

Effective Ruby、2015

メタプログラミング Ruby 第2版、2015

Rubyのしくみ、2014

改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015
0003デフォルトの名無しさん2016/03/24(木) 19:11:14.30ID:5a9zwPTf
Windows版でunicodeのコマンドライン引数まだ使えないの?
0004デフォルトの名無しさん2016/03/25(金) 09:00:13.57ID:amKPWQ2X
Seleniumデザインパターン&ベストプラクティス、2015
OSSのブラウザ自動テストツール、Selenium WebDriver を使って、
Rubyでテストを書いた本

Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説

Rubyのしくみ、2014
Rubyの実装系、Ruby1.9のRuby仮想マシンの本
0005デフォルトの名無しさん2016/03/27(日) 10:04:22.49ID:zeXJFeRN
ヤクザ
0006デフォルトの名無しさん2016/03/28(月) 02:19:58.22ID:NlvcQEtD
http://49.media.tumblr.com/7ae74678e1d2f5bea5faf824823d0176/tumblr_noklqpmdua1us3zemo1_540.gif
0007デフォルトの名無しさん2016/03/30(水) 08:52:01.47ID:8NmKCzQm
おわってるな
0008デフォルトの名無しさん2016/03/30(水) 10:23:11.00ID:pubF0BCK
aという文字列でp aとやると\\と表示されるのに
a.count"\\"をやると1とでます
文字列で\¥を\だけにするほうほうおしえくてださい
0009デフォルトの名無しさん2016/03/30(水) 11:09:52.71ID:14q3t0GC
前スレ落ちてるからよく分からないんだけど、ここは質問とかしていいのか?
0010デフォルトの名無しさん2016/03/30(水) 12:05:39.08ID:R5AIxfw4
a = '\\'
p 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:MbRjE7fG
pry (ver0.10.1 on Ruby 2.1.8) で
ri Hash してみたら
〜
Hashes enumerate their values in the order that the corresponding keys were
inserted.
〜
と出てきました。
これは今後も保証されると思っていいんでしょうか?
0013デフォルトの名無しさん2016/03/30(水) 12:55:41.31ID:R5AIxfw4
Javaでは、LinkedHashMap という、挿入された順に、キーを管理する、HashMap があるけど

Rubyは知らない
0014デフォルトの名無しさん2016/03/30(水) 13:29:51.33ID:S0HkEiDs
>>12
Arrayは順番を必ず保証する
なぜなら取り出す順番が保証されていることが配列の存在意義だから
Hashは順番を必ずしも保証しない
なぜなら取り出す順番は連想配列の存在意義じゃないから
それ以上の意味はない

現在の実装は「たまたま」順番が保証されているけどそれはオマケとか親切とかそういうレベルの話
p Time.nowで確実なのは現在時刻を表示することだけであって
表示される文字列を決め打ちして処理にかけてはいけないというのと似たようなものだ
将来ユーザーフレンドリーに日本語で表示されるかもしれない
0015デフォルトの名無しさん2016/03/30(水) 13:48:45.91ID:mQiL8UBv
このへんはしょっちゅう議論されてるけど、取り出す順番の固定化を必要としているならHashという名前のものは使わないのが「プログラミングの普通」なのよ

順番固定で勝手に出てくること自体は構わない
だけど、それを頼りになにか処理を記述するのは非常に奇妙で不快に映る
繰り返すけど、出てくる順番が揃ってるのはいい
それを利用するようなコードを見ると吐き気がする
HashArrayとかOrderdHashとかそういう名前のオブジェクトなら納得するけど、Hashという名前では歴史的名前的にダメ
0016122016/03/30(水) 14:34:26.61ID:MbRjE7fG
ありがとうございます。
0017デフォルトの名無しさん2016/03/31(木) 00:11:32.35ID:SXg61G2F
仕様じゃない動作に頼るなという話ならそう思うが、責務を限定しろという話ならそれはrubyには通用しない話だと思う
0018デフォルトの名無しさん2016/03/31(木) 01:39:56.18ID:hZH1pyKx
Rubyは手軽で愛用してるのですが、
GUIを用いたりexeにまとめて配布するものまでRubyで行おうとすると、結果的に別言語を習得するのよりコストかかるでしょうか?
試みたことある方いらっしゃいましたら意見くださると嬉しいです
0019デフォルトの名無しさん2016/03/31(木) 12:59:43.70ID:yy0681Er
制作者は、gem だけを配布して、
それを使う人が勝手に、システムにインストールして使う

RoRのようなWebアプリならあるけど、
Rubyで作った、デスクトップGUIアプリってあるのか?
0020デフォルトの名無しさん2016/04/01(金) 07:05:17.08ID:6aCBXilE
JRuby+swingなどは試してみたのですが、Java知識が皆無なためかかなり詰まるんですよね
素直にC#とか学んだ方がいいのかもしれませんが、RGSSのようなものを知ってしまったので微妙に未練が……
0021デフォルトの名無しさん2016/04/02(土) 18:12:28.67ID:CqWvTnZR
ruby初心者なのですがsoap通信のプログラムを作っていて
エラーが出ていて調べたのですが原因がよくわかりません

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
>>20
「スッキリわかる Java入門 第2版」2014 を読めば?

>>21
HTTP 404は、ホームページ(のデータ)が見つかりません
0023デフォルトの名無しさん2016/04/02(土) 21:10:59.86ID:0eiGAsV4
というかRuby 1.8 ってまだサポートしてんだっけ?
0024デフォルトの名無しさん2016/04/03(日) 02:37:49.45ID:RpcNuWJW
>>22
ありがとうございます
プログラム側の問題というよりはホームページ側の問題みたいですね
0025デフォルトの名無しさん2016/04/03(日) 09:43:35.27ID:T0KKITG1
>>24
ちがう
あなたにHTTPとHTML(やJavaScript(や一般的なサイト運用技術知識))の知識がないがために普通のブラウザの挙動をエミュレートできてない
必要なのはRubyの知識じゃなくってWebブラウザの挙動とHTTP通信とHTMLでのサイトの書かれ方の知識
0026デフォルトの名無しさん2016/04/03(日) 15:55:17.04ID:RpcNuWJW
>>25
すみません、指摘していただいたことがうまく理解できないのですが
サーバにリクエストを送って帰ってきた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
from search_rs_number_execServiceClient.rb:27

その前後の変数の内容を、片っ端から見てみれば?
0028デフォルトの名無しさん2016/04/04(月) 07:02:52.26ID:UUnGIXWs
>1a77a8341bddc4b45418f9c30e7102b4
こういう0..fで構成されたハッシュ値を
>tp://i.imgur.com/nOBxnDb.jpg
>nOBxnDb
みたいな短縮URL風に短くするコード教えて下さい
0029デフォルトの名無しさん2016/04/04(月) 09:10:25.66ID:jvwKdFAZ
>>28
どこからわからんのかくらいは言って欲しい
16進数を(10進数に置き換えてから)26進数なり52進数なりに計算し直して文字を当てはめる
0030デフォルトの名無しさん2016/04/05(火) 13:10:42.86ID:wRkvpogr
gets(
0031デフォルトの名無しさん2016/04/05(火) 13:12:49.42ID:wRkvpogr
標準入力から一度に改行を含めて文字列を得るにはどうやりますか?
0032デフォルトの名無しさん2016/04/05(火) 13:52:47.37ID:Uvoa8jl9
Rubyで真にprivateなインスタンス変数を作るにはどうしたらいいんでしょうか?
別に切羽詰まった話ではありません、ふと浮かんだ疑問です。

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++QK
# 標準入力から、一気に終わりまで読む
ary = $stdin.readlines

# 1行ずつ処理する
ary.each_line do |line|
line.chomp!
end
0034デフォルトの名無しさん2016/04/05(火) 14:16:14.23ID:Wtb6QTFr
>>32
>Rubyで真にprivateなインスタンス変数を作るにはどうしたらいいんでしょうか?
Rubyでは絶対的なアクセス制御はできない
なぜなら「普通に」アクセスした時に拒まれさえすれば用は済むからだ
0035デフォルトの名無しさん2016/04/05(火) 14:20:10.18ID:Uvoa8jl9
>>34
了解。 そういう文化なんですね。
0036デフォルトの名無しさん2016/04/06(水) 00:23:46.52ID:q1HrDxSz
Win7でRubyを勉強しようと思うんですが、Cygwinでやるのがお手軽ですか?
0037デフォルトの名無しさん2016/04/06(水) 01:43:49.90ID:SreJMpRz
ImageMagickやらのLinux由来の拡張ライブラリを使うのでなければ、Ruby Installerでいいんじゃない。

Win10にしてUbuntu on Windows上でRuby動かすってのはいつからできるんだっけか。
0038デフォルトの名無しさん2016/04/06(水) 02:33:03.12ID:kRFLofHq
>>36
わざわざcygwin導入しなくてもコマンドプロンプトで十分
導入してるのならお好きに
0039デフォルトの名無しさん2016/04/06(水) 07:38:43.97ID:BFsTf7eA
paiza.IO, CodePad など、ブラウザを使って、オンラインでもプログラミングできる

環境構築もいらん
0040デフォルトの名無しさん2016/04/06(水) 11:05:30.04ID:vURaTx4x
>>39
そしてIDやパスワードを自分からお漏らしするまでがセットか
ttp://codepad.org/recent

初心者向け「だからこそ」ローカルで完結するべき
0041デフォルトの名無しさん2016/04/08(金) 21:35:25.29ID:/jXs509G
class Tesuto < ActiveRecord::Base
validates :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:R25zKOdT
WEBプログラミング板に、RoRのスレがあるので、そっちで聞いたら?
0043デフォルトの名無しさん2016/04/09(土) 00:40:43.27ID:d9XDMAzz
>>41
before_action とかで空白禁止のバリデーションを edit のときのみ適用すればよいのでは?
0044デフォルトの名無しさん2016/04/09(土) 23:00:32.93ID:O9j9lH5Y
>>18
>>19
GUIとEXEもわりと低コストでできるぞ
0045デフォルトの名無しさん2016/04/10(日) 05:59:09.98ID:QHKhqpLv
>>44
よければ詳しく
0046デフォルトの名無しさん2016/04/10(日) 07:24:02.68ID:WTOWAaLY
>>45
たとえばGUIはTk、EXEはOcraでできる
0047デフォルトの名無しさん2016/04/11(月) 00:47:25.00ID:zoLHrFMR
railsのインストールできないんだけどどうしたらいい?
http://i.imgur.com/LrHWsVu.png
0048デフォルトの名無しさん2016/04/11(月) 01:03:31.98ID:WJsT15xh
linuxに乗り換える
0049デフォルトの名無しさん2016/04/11(月) 01:10:55.06ID:uBEcAuw5
rubyのバージョン2.3に対応してないみたいだね
0050デフォルトの名無しさん2016/04/11(月) 02:21:36.55ID:JpybrsSq
RWBY は第4クルー始まるというのにね
0051デフォルトの名無しさん2016/04/11(月) 06:36:47.71ID:zoLHrFMR
>>47
http://www.rubylife.jp/railsinstall/rails/index1.htmlの手順に従ってやって
その次にhttp://rubyonrails.org/行ってみたけどrailsダウンロードできない
0052デフォルトの名無しさん2016/04/13(水) 16:29:53.43ID:372sz71r
10ビット3つを、(10, 10, 10)とbitsetのように使っているとき、
真ん中の10ビットを、上書きするにはどうすればよい?

上書きする演算子が見つからない
0053デフォルトの名無しさん2016/04/13(水) 17:42:17.15ID:oU5fSDxg
何をしているのかよくわからんが

bitset = bitset & 0b111111111100000000001111111111 | 0000000000(上書きしたい10ビット)0000000000

ではいかんのか
0054522016/04/13(水) 18:12:34.54ID:372sz71r
ありがとう

元のビットの上書きしたい部分を、0&でマスクしてから、
ORで上書きすれば良かったのか
0055デフォルトの名無しさん2016/04/15(金) 21:02:46.68ID:qyn/7G/H
pryでShiftキーを押すと結構な確率で動きが一時的に固まるんだけどどうしたら良いのかな

例えば
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:kJz9a6FQ
ActiveRecordの関連付けってなにが嬉しいんですか?
0057デフォルトの名無しさん2016/04/15(金) 22:08:30.22ID:dCoxeauz
>>56
複雑あるいは面倒な処理を簡単かつ直感的なメソッドチェインで扱えるところが嬉しい
0058デフォルトの名無しさん2016/04/15(金) 23:38:46.31ID:pdQdC9Xb
>>52
xor だったら入力のマスクも簡単にできる
bitData ^= ((1 << bitOffset + bitLen) - (1 << bitOffset)) & (bitData ^ (setVal << bitOffset))
0059デフォルトの名無しさん2016/04/17(日) 00:33:18.57ID:v9XO8+KJ
Ruby始めようと思ってこのスレ来たが、中括弧じゃなくてendなのか
0060デフォルトの名無しさん2016/04/17(日) 00:55:07.10ID:7GcoLz9W
RubyはC++でもJavaでもCでもVBでもないので
予断持たずにきちんと体系的に学習することをお勧めします
なお「RubyはC++でもJavaでもCでもVBでもない」というのは煽りじゃなく本気のアドバイスです
0061デフォルトの名無しさん2016/04/17(日) 01:07:34.17ID:BiZQs4Wa
何から何まで独特だよね
ここまで流行ったのが不思議なほど
0062デフォルトの名無しさん2016/04/17(日) 22:49:27.40ID:DiLcHZEv
Python, Rubyはすごい便利だから、Googleも、実装すべき

>>59
ブロックでは、do 〜 end は複数行で、{ } は1行のみの処理で、使うことが多い
0063デフォルトの名無しさん2016/04/18(月) 00:49:33.87ID:zxdOCIHu
独特というかむしろ
いろんな言語を折衷してるから
書きやすいと思う

書きやすいから流行った
0064デフォルトの名無しさん2016/04/18(月) 23:52:27.01ID:IbVy+CTe
win32oleのieでgoogle検索するやり方はわかったんだけど、
一番最初の検索結果のページに飛ぶやり方がわからない。
検索後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:fF4GXe73
Rubyでクローラー作る本があるから読めば?
0067デフォルトの名無しさん2016/04/19(火) 15:19:46.53ID:DoDYnfhi
ie.open(ie.document.links.item(0).value)
0068デフォルトの名無しさん2016/04/19(火) 19:12:04.08ID:kcmoRlAu
>>67
`method_missing': unknown property or method: `value' (NoMethodError)
0069デフォルトの名無しさん2016/04/19(火) 21:14:24.24ID:+csqt/Wa
>>68
ドキュメント読もう
0070デフォルトの名無しさん2016/04/19(火) 21:50:54.87ID:kcmoRlAu
どこにドキュメントあるのかわからん。
ググれば見つかるもんなの?
0071デフォルトの名無しさん2016/04/19(火) 22:44:13.44ID:+csqt/Wa
win32oleってやつ?だよな?
浸かったことないが検索したら出たぞ
2.1.0だけど http://docs.ruby-lang.org/ja/2.1.0/library/win32ole.html
0072デフォルトの名無しさん2016/04/20(水) 06:55:31.98ID:w5hbs5qX
下を読めばわかるけど、クローラーって実は、驚異的に難しいw
エラーになる可能性が無数にあるので、言語どうこうの話じゃない

Rubyで、anemoneの物足りない部分を補完するクローラーを自作した
ttp://qiita.com/tkosuga@github/items/7c1b7bf98a697de66b68

るびきちが、Rubyによるクローラーの本を出している

>>64
そもそも他人の作ったプログラムは、簡単に解析できない。
APIの使い方を、公開していなければ、まず使うのは無理

企業はアプリを解析するのに、普通、1人月百万円以上払う。
それくらい難しいってこと
0073デフォルトの名無しさん2016/04/20(水) 07:40:43.74ID:IJSlkgxq
難しいというよりとにかく泥臭い
Rubyistの仕事としては最底辺の部類
0074デフォルトの名無しさん2016/04/20(水) 11:21:11.72ID:TvagBB0u
クロールされたサイトになんのメリットもないクローラー開発なんか
やっちゃだめだぞ。俺はやらされてたが。
0075デフォルトの名無しさん2016/04/20(水) 22:04:01.92ID:+P5uzrzE
結局HTML読めないとクローラーって作れないのね。
まあ、ぼちぼち頑張るか。
0076デフォルトの名無しさん2016/04/21(木) 09:09:15.15ID:636JdrjZ
Linux やmacでzip作成したいのですが、Windowsファイル名のダメ文字を
置換するリネームプログラムってないですか?

Windowsで使えない文字は「< > : * ? " / \ |」。
Linuxで使えない文字は、「/」(他はNull)で
Macで使えない文字は、「 : /」。

ファイルやフォルダはfindで検索するとして、指定ディレクトリの
ファイルやフォルダを「< > * ? " \ |」半角文字を検索し
全て全角に置換したいです。ruby1.8.7希望。
0077デフォルトの名無しさん2016/04/21(木) 13:53:08.49ID:IzmoSDze
ruby unixコマンド 実行
とかで検索したら出てくるけどいくつかあるよ
find の結果の文字列を gsub で置換してやればいいんじゃね?
0078デフォルトの名無しさん2016/04/21(木) 16:32:18.89ID:636JdrjZ
>>77
どうもです。ファイル名に複数のダメ文字がある可能性があるので一つの記号にgsubするしかないですね。
0079デフォルトの名無しさん2016/04/21(木) 19:52:32.92ID:iEWNQ8UB
gsubはHashわたせば複数痴漢できるよ
ってそういう話じゃないか?
0080デフォルトの名無しさん2016/04/21(木) 20:36:07.43ID:636JdrjZ
>>79
【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:/vBm71ZP
場合によっちゃあtrでもいいかもね
p '12345'.tr('15', 'lS')
↓
"l234S"
0082デフォルトの名無しさん2016/04/22(金) 20:35:54.49ID:2DzgCe5n
gsub重ね掛けするのってそんな面倒か?
ループで回すだけだと思うんだが。
0083デフォルトの名無しさん2016/04/22(金) 21:25:13.47ID:lAvb/AZz
gsubでhash渡すやつ、なんか使いづらいな
正規表現をキー、一致した文字列を置換する文字列をバリューにとかなら便利なのに
0084デフォルトの名無しさん2016/04/22(金) 23:51:19.95ID:++t+RWP3
>>81
require "jcode"
で全角の tr ができるようになる
0085デフォルトの名無しさん2016/04/23(土) 10:34:50.94ID:5AJaEQrL
>>83
正規表現だと置換前の文字列が重複しかねなくない?
0086デフォルトの名無しさん2016/04/24(日) 14:22:44.47ID:Uo+BTEtc
Rubyってダイレクトドライブアクセスできんの?

存在するドライブやディスクに対して
f = File::open(
0087デフォルトの名無しさん2016/04/24(日) 14:29:36.53ID:aqqgpD8T
できる
0088デフォルトの名無しさん2016/04/24(日) 18:01:19.78ID:+9N3vohH
なんとなくJSONを文字列化してCipher使って暗号化→復号化ってやってて、
復号化した後に文字列になったJSONをJSONに戻す良い方法が分からなくて困ってるんだけど、なんか良い方法ない?
0089デフォルトの名無しさん2016/04/24(日) 18:41:24.15ID:+9N3vohH
申し訳ない、自己解決しました・・・
お目汚し失礼しました
0090デフォルトの名無しさん2016/04/25(月) 23:22:01.75ID:VbK9UkJ/
#10から0を改行区切りで出力してください

for i in 10..0
print i
end

ではまちがっているんですか??
0091デフォルトの名無しさん2016/04/26(火) 00:09:41.02ID:c1+pgvSl
私ならこうかくが

10.downto(0){|i| puts i}
0092デフォルトの名無しさん2016/04/26(火) 01:15:49.37ID:du3QkmSG
downto使わないでfor to_a reverse とかいうのを
使うらしいんですけど
0093デフォルトの名無しさん2016/04/26(火) 01:34:24.43ID:XcjXnWra
>>90
そんな書き方したことないから自信ないけど、範囲式は逆順指定できないんじゃないかな?
もしかしたら俺が勘違いしてるだけでできるかもしれないけど、普通しない

並びにfor文はあまり使われない
一応あるけど91のようにイテレータを使うのが一般的
詳しくはイテレータで調べてくれ
0094デフォルトの名無しさん2016/04/26(火) 01:39:20.39ID:XcjXnWra
>>92
更新してなかった

10.downto 0 → 10から1ずつ減らしてループする
0..10.to_a.reverse → 0から10の範囲オブジェクトを作って配列に変換
それからその配列を逆順に並び替えて、要素それぞれを対象にループ

後者は無駄に長いし、処理時間も増えるし、メモリも食うし、
特別な理由がなきゃわざわざそんなことする意味ない
0095デフォルトの名無しさん2016/04/26(火) 17:28:12.49ID:6COxB88I
初心者の人は、わかりにくい for in 構文を一体どこから拾ってきてるんだろ?
一般的なコードに for in なんてないのに。不思議だ。
0096デフォルトの名無しさん2016/04/26(火) 17:42:42.60ID:du3QkmSG
改行区切りで出力するばあいは
print iの後になんというコマンドを追加すればいいのですか?
>>90を訂正したヤツだと改行しない結果になるらしいんですけど
0097デフォルトの名無しさん2016/04/26(火) 17:52:41.48ID:hodGhGMX
puts i
print i.to_s + "\n"
print "%d\n" + i
0098デフォルトの名無しさん2016/04/26(火) 17:53:50.31ID:hodGhGMX
print "%d\n" % i
修正ミス
0099デフォルトの名無しさん2016/04/26(火) 18:35:38.41ID:du3QkmSG
#1から9の奇数を出力してください

for i in 1..9 #ここに範囲
puts i
end

でどう偶数抜いて表示すればいいんですか?
0100片山博文MZ ◆T6xkBnTXz7B0 2016/04/26(火) 18:38:58.99ID:P4FlrKEb
2で割ったときの余りを使う。
for i in 1..9
puts i if i % 2 == 1
end
0101デフォルトの名無しさん2016/04/26(火) 18:44:56.52ID:c1+pgvSl
宿題は自分でやりましょう
0102デフォルトの名無しさん2016/04/26(火) 19:55:33.70ID:x2RHMR6g
>>95
awk
0103uy2016/04/26(火) 20:29:48.28ID:4KSOxSiL
http://suumo.jp/ms/shinchiku/tokyo/sc_koto/nc_67712348/

こういうとこ住みたいんですけど
1日どのくらいRubyのソースコード書いてれば住めますか?


>>99
ha?
p (1..9).reject(&:even?)
0104デフォルトの名無しさん2016/04/26(火) 23:11:59.29ID:HvJUwHuI
>99
1.step(9,2){|x| puts x}
0105デフォルトの名無しさん2016/04/27(水) 05:43:58.05ID:dtd6C8pN
コードガールのruby STAGE17まで解いてしまったッ
0106デフォルトの名無しさん2016/04/27(水) 16:37:59.42ID:wyNXRpNW
こんなのあるのかw
序盤の標準出力ラッシュで飽きてやめたけど
0107デフォルトの名無しさん2016/04/28(木) 01:06:23.99ID:QkuSJykk
プログラミングってよりただのタイピング・ソフトじゃねえか
問題はくそなのに、初見だとたまに☆2つとかになってついイライラしてしまう
0108デフォルトの名無しさん2016/04/28(木) 02:05:42.82ID:cNgqnPtu
プログラマ脳を鍛える数学パズル
シンプルで高速なコードが書けるようになる70問、増井 敏克、2015

CodeIQに掲載された問題を、Rubyで解説

「ITエンジニアに読んでほしい!技術書・ビジネス書 大賞(ITエンジニア本大賞)」の受賞作
0109デフォルトの名無しさん2016/04/28(木) 11:42:25.74ID:B+IQUyxU
プログラミングや3Dモデリングデータ作成なしで3DマップのRPGを作れる
「Smile Game Builder」を発表。GDC 2016へ出展
http://www.4gamer.net/games/337/G033741/20160317004/
0110デフォルトの名無しさん2016/04/28(木) 13:22:26.24ID:1hszbTkN
スレチ
0111デフォルトの名無しさん2016/05/01(日) 08:49:23.40ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
e
0112デフォルトの名無しさん2016/05/01(日) 23:26:41.59ID:GuNd9hsH
rubyのスコープ気持ち悪いと思うんだけどなんかいい感じの解説ない?
例えばこれとか
def test
if true
result = 1
end
result
end
#=> 1
なんかめっちゃ違和感ある
0113デフォルトの名無しさん2016/05/02(月) 00:24:57.68ID:703evd9b
その例からだと何が気持ち悪いのかわからない
0114デフォルトの名無しさん2016/05/02(月) 00:29:59.79ID:o2fcY4RJ
ifの中で定義された変数がifの外で未定義にならないところです
0115デフォルトの名無しさん2016/05/02(月) 05:30:37.04ID:zpJUdxcq
defはメソッドだからRuby1.9ではという話をするのかと思ったら斜め上だった
そういや初心者スレだったなココ
というかifの前で変数定義しないと変数持ち出せない言語なんてそうそうないと思うのだが

>>114
最後がendかどうかで構造を判断するのやめれ
君は「endで括られている範囲なのに」と考えているはずだ
endは終了を示すただの記号でしかない
最後の文字ではなく def とか if とか do とか先っぽ見てスコープというか制御構造かどうかを判断しろ
0116デフォルトの名無しさん2016/05/02(月) 07:19:53.61ID:fVfRKiIw
>>115
前段どういう話か教えてくんろ
そのあたり疎いんだ
0117デフォルトの名無しさん2016/05/02(月) 07:28:06.01ID:R0ulJHCe
>>112
その挙動で良いと思うが

>>114
そっちの方が違和感ある
0118デフォルトの名無しさん2016/05/02(月) 08:11:00.54ID:HJ2xVTJl
do end や {} ならブロックローカルになるんだけど、ifの中身はブロックではないのでスコープは外と同じ
実際一貫性がなくて紛らわしいところだから、今設計しなおしたら全部ブロックになりそう
0119デフォルトの名無しさん2016/05/02(月) 09:56:51.18ID:o2fcY4RJ
>>115
うーん理由としてはあんま納得できないわ
俺も一貫性に欠けてると思う
ちなみに Ruby ではほぼ使われないけど for や while もスコープ作らないからその判別方法は良くない
0120デフォルトの名無しさん2016/05/02(月) 13:02:10.27ID:s90URipo
むしろブロックスコープがいらない
「ローカルスコープを作るのはdefのみ」でいいよ
外側の名前を上書きするバカはほっとけ
0121デフォルトの名無しさん2016/05/02(月) 13:22:44.05ID:Nwnpiy9m
ブロックスコープが要らないは飛びすぎじゃないか?
そういう意味でもやっぱりforやらwhileにスコープある方がしっくりくるわ
0122デフォルトの名無しさん2016/05/02(月) 15:50:36.97ID:tHMT3Y4S
一貫性がないのは確かだが、無駄に宣言しなくていいようにあえてしてるってメーリスか何かで言ってたはず
0123デフォルトの名無しさん2016/05/02(月) 16:03:03.37ID:75TgGWvQ
>>122
まじか知らなかったわサンクス
0124デフォルトの名無しさん2016/05/02(月) 16:26:43.85ID:R0ulJHCe
ifで分けて変数を初期化するようなときに
宣言しておく必要があるとムダだからな
0125デフォルトの名無しさん2016/05/02(月) 20:35:25.61ID:703evd9b
a = case x
when foo then ...
when bar then ...
...
end
とか
a = if x then ... else ... end
とか書けるけどあまりにないしね
0126デフォルトの名無しさん2016/05/03(火) 00:23:18.99ID:Hk0ecHR9
違うバージョンのRubyをインストールしたいのですが
調べたらuruというツールでRubyInstallerでインストールしたRubyを切り替えるようです
しかし現状ActiveScriptRuby1.8.5が入っていて、その1.8.5と新しいバージョンのRubyを使いたいのです
ActiveScriptRubyとuruで管理するRubyInstallerのRubyって共存できるんでしょうか
0127デフォルトの名無しさん2016/05/03(火) 00:24:59.57ID:9WoSDP+1
>>126
大人しくrbenvにしとけ
0128uy ◆e6.oHu1j.o 2016/05/03(火) 03:24:55.90ID:gzQ2BK1K
言語仕様にそこまでの強い一貫性なんていらないけどな

日本語の挨拶を例にしてみても
端から一貫性なんて持たせる気が無いように思える

「おはよう」「ございます」
「こんにちは」「NULL」
「こんばんわ」「NULL」
「おやすみ」「なさい」

しかも、「おはよう」「ございます」の対になるのって「こんばんわ」「NULL]なのか「おやすみ」「なさい」なのかどっちだよ?

しかし我々は何不自由なく使ってしまっている
0129デフォルトの名無しさん2016/05/03(火) 11:26:54.83ID:wFmBMyJC
ツクツクボウシの鳴き声を一番正確に表せた奴が優勝 [無断転載禁止]©2ch.net

1 :以下、無断転載禁止でVIPがお送りします:2016/04/28(木) 08:01:56.231 ID:EVnE4ji20
ツクツクボーシッ!!!!ツクツクボーシッ!!!!ツククツ、ツククククククク……!!!
アッ ヴィーナス!!!! ヴィーナス!!!!ヴィヴィヴィヴィッ!!!!!

8 :以下、無断転載禁止でVIPがお送りします:2016/04/28(木) 08:05:05.180 ID:rZ8gq0650
ツクツクホーシ!ツクツクホーシ!ッツクツク、ツクツクホーシ!
ッ!ツクツクヴィーヨー!ツクツクヴィーヨー!ツクツクツクツクアアアアア゙ア゙ア゙ア゙ア゙…天

12 :以下、無断転載禁止でVIPがお送りします:2016/04/28(木) 08:24:50.425 ID:SYCMGSQFa
ツクツクウィーヨーンwwwwwwツクツクウィーヨーンwwwwwwウィーヨーンwwwwwwウィーヨーンwwwwwwあああああああああああああああ あ!!!!!!!
0130デフォルトの名無しさん2016/05/03(火) 11:46:22.66ID:1U/0N7SV
>>112
変数宣言は、if文よりも前でするべき

そうしないと、ちょっと、if文を修正するだけで、バグが生じる
0131デフォルトの名無しさん2016/05/03(火) 12:42:53.56ID:9WoSDP+1
>>130
そういう問題じゃないでしょ
本質掴めてなさすぎ
0132デフォルトの名無しさん2016/05/03(火) 20:45:46.51ID:gAzicoKM
できればeval使わずに、クラス名を指定してそのクラスのインスタンスを生成したいんだけど何か良い手段無いですか?

class Hoge
end

class_name =
0133デフォルトの名無しさん2016/05/03(火) 20:47:32.30ID:gAzicoKM
ごめん、コード書こうとしたらダメっぽかった・・・
0134デフォルトの名無しさん2016/05/03(火) 20:52:05.06ID:KyaiRmb1
>>132
hoge_class = Module.const_get 'Hoge'
hoge_instance = hoge_class.new
0135デフォルトの名無しさん2016/05/03(火) 20:53:17.97ID:obzBgI3N
Foo = Class.new
bar = Foo.new
0136デフォルトの名無しさん2016/05/03(火) 20:54:33.61ID:obzBgI3N
すまそ >>135は勘違い
0137デフォルトの名無しさん2016/05/03(火) 21:01:46.16ID:gAzicoKM
>>134, >>135
即レスどうもありがとうございます、助かりました
0138デフォルトの名無しさん2016/05/04(水) 03:37:31.28ID:/fPdRPly
文法的な話じゃないんですけど
Rubyでエディタのアウトライン表示の見出しになるようなサインみたいのないですか
例えばですけどこんな感じのもので習慣的に使われてるようなもの
#<h1>メインの処理</h1>
0139デフォルトの名無しさん2016/05/06(金) 16:40:28.33ID:V+H0dCvP
メールのハイパーリンクについて教えてください。(gmailです。)

httpから始まらない文字列がメール本文にあって、これをサファリなりクロームなりで開きたいのですがリンクになっていないので、コピペしないといけない状態です。

これをハイパーリンク扱いにしてブラウザに飛ばしたいのですがいい方法ないでしょうか?
ちなみにブラウザに渡るとスマホアプリが呼ばれる仕組みになっています。(引数で個別の画面が呼ばれる)
0140デフォルトの名無しさん2016/05/06(金) 16:53:28.81ID:j3Cd+A95
もっと簡単にできるかもしれないけど、webrick使ってローカル・プロキシ作れば?
0141デフォルトの名無しさん2016/05/06(金) 17:16:14.42ID:GOfm3Be0
>>139
PC版Chromeなら機能拡張で普通にできる
スマホ版と他ブラウザはしらん
0142デフォルトの名無しさん2016/05/06(金) 17:35:40.79ID:V+H0dCvP
>>140
すみません、ローカルプロキシ作った後のギミックが、ピンときません。もう少しヒントを。。

>>141
スマホから操作する前提なんです。

htmlメール形式にしたらいけるのかなぁとも思ってるんですがググってもよくわからん。タグが本文に入ってたら勝手にリンクにしてくれるんかなぁ。後でやってみます。
0143デフォルトの名無しさん2016/05/06(金) 20:16:12.86ID:j3Cd+A95
スマホのgmailって知らないけど該当するURLの頭にhttp(s)://って付けるようにすればいいんじゃないの
そもそもスマホでwebrickが動くかは知らないが
0144デフォルトの名無しさん2016/05/06(金) 20:34:26.84ID:j3Cd+A95
連想すまん
SSL通信だったらプロキシじゃ無理かもしれないね
0145デフォルトの名無しさん2016/05/07(土) 01:25:53.16ID:DyCM9yow
俺だけが分からないのかも知らないけどよくこんな質問にレス出来るな
rubyとGmailとハイパーリンクのどこに共通性あるのかイミフ
メーラーの設定とか機能の話じゃないのかこれは。
0146デフォルトの名無しさん2016/05/07(土) 02:19:53.44ID:eXsPGCae
俺も分からん
Rubyでどこをどうしたいのか書いてないのでアドバイスしようがない
01471392016/05/07(土) 04:09:28.68ID:TTqm4Ng+
確かにrubyでどうこうできる話じゃなかったわ。
スマンカッタ。出直してくる。
0148デフォルトの名無しさん2016/05/07(土) 05:45:30.51ID:FoUXFEM8
すぐリンクに飛ぶには危ない
メールのリンクからウィルス仕込みサイトに飛ばされるのは感染定番コース
0149デフォルトの名無しさん2016/05/07(土) 05:52:34.89ID:v072DMKU
Rubyの話をするなら
Rubyでメーラー自作すれば
好きな挙動できるだろ
0150デフォルトの名無しさん2016/05/14(土) 19:09:00.68ID:qUyPqMWH
以下のa.rb、b.rbのように、loggerをrequireしているa.rbをb.rbで読み込んだところ、

#a.rb
require 'logger'

#b.rb
require 'logger'
require 'a.rb'


a.rb,b.rbともに、Logger.info(msg) などで「msg」部分のログへの出力はされるのですが、
↓のような行ごとにログの頭についていた情報が出力されなくなってしまいました。

・Before
I, [2016-05-04T18:00:01.791856 #24646] INFO -- : msg
・After
msg

これは何故出力されなくなってしまったのでしょうか?
また、可能であればrequireの状態は変えずにBeforeのように戻したいのですが、どのようにすれば戻せるでしょうか?
0151デフォルトの名無しさん2016/05/14(土) 19:21:41.36ID:qUyPqMWH
>>150
すみません、完全に前提が間違っていました。

正確には、以下をrequireした時にloggerの出力するログが150のようになってしまうようです。
require 'active_support/core_ext'

このログ出力を元に戻す方法を知りたいという質問に変更させて下さい
0152デフォルトの名無しさん2016/05/14(土) 19:42:21.70ID:/R7YTKmR
>>151
active_support/core_ext/logger ってのが logger を上書きしてそうなので、active_support/core_ext/format の方のlogger のフォーマットを指定してあげれば任意の形式で出力できそう
0153デフォルトの名無しさん2016/05/14(土) 21:51:29.64ID:qUyPqMWH
>>152
http://rubyist.g.hatena.ne.jp/rochefort/20100310
を参考にフォーマット設定したら出力できるようになりました
ありがとうございました
0154デフォルトの名無しさん2016/05/15(日) 21:09:22.74ID:QEJW4alD
プログラミングから初心者なんですが、おまいらみたいにここで質問に回答できるようになるにはどのくらいしゅぎょうすればよいですか??
0155デフォルトの名無しさん2016/05/15(日) 21:19:47.57ID:YqlS4XMa
5年毎日8時間
0156デフォルトの名無しさん2016/05/15(日) 21:44:53.64ID:NJhXH/sG
>>154
俺が見た範囲だと、適性ある奴は一ヶ月もすれば仕事できるレベルになったりもする
逆に駄目な奴は何年やっても使い物にならない
0157デフォルトの名無しさん2016/05/15(日) 21:56:39.89ID:QEJW4alD
その仕事できるてどんなレベルや。すごすぎる
俺は作りながら学ぶみたいな本写経してエラーになっても、自分でどうにかしてエラーを取り除いて実行できるくらいしか能がない@2か月目
0158デフォルトの名無しさん2016/05/16(月) 01:11:03.22ID:RYpks96x
>>154
質問に回答なんてボランティアで
自分の作りたいものを作れることが重要だと思う

期間は人によって違うので一概に言えないが
まずは小物でいいのでアプリを作れるまではひたすら修行
作れたら後は好きに作ってるとある程度は勝手に上手くなる
0159デフォルトの名無しさん2016/05/16(月) 12:46:48.74ID:DkcwsRla
ここのみなさんは
簡単な質問には群がりますが
難しい質問には答えられません
0160デフォルトの名無しさん2016/05/16(月) 14:14:17.34ID:aQMyk4Ho
コードガールの17章までおわったら
あの条件式だけ入れるみたいなの以外
どうプログラムの全体像みえるようにするために
forとかランダム式以上の知識いれていけば
いいの???
0161デフォルトの名無しさん2016/05/16(月) 14:31:01.74ID:OrJq5QDg
株の雑誌東洋経済が言語の特集をやっていた

http://store.toyokeizai.net/magazine/toyo/20160516/
今すぐ始めるプログラミング

小学校にプログラミング教育を導入する
rubyだと年収600万円、本当かいな
0162デフォルトの名無しさん2016/05/16(月) 14:38:16.89ID:rbeFnNS9
rubyの勉強にコードガールは全くお勧めできない
0163デフォルトの名無しさん2016/05/16(月) 14:38:55.54ID:DkcwsRla
著者が気になるな
0164デフォルトの名無しさん2016/05/16(月) 15:03:24.52ID:IBGTyv6p
算数英語で落ちこぼれボロボロ出るのを放置して
その複合のプログラミングなんか出来るわけねーだろ

義務教育の留年制度さきにつくれや
0165デフォルトの名無しさん2016/05/16(月) 18:26:58.17ID:lq1JqEcP
重いでボロボロ
0166デフォルトの名無しさん2016/05/16(月) 21:56:49.34ID:NgImICvk
たのしいるびーをとりあえず1週して、作りながら学ぶとかいう本終わらせたばかりの初心者なんですけど、
何か次にやったら良さそうなおすすめなことをおしえてください
0167デフォルトの名無しさん2016/05/16(月) 22:00:46.70ID:tTjqYMnb
取り敢えず、第2期に進めばいいんじゃないかな。
0168デフォルトの名無しさん2016/05/16(月) 22:50:40.11ID:RYpks96x
>>166
自作コマンド作ってみるとか
たのしいRuby読んでたらできるでしょ
0169デフォルトの名無しさん2016/05/16(月) 23:18:09.63ID:NgImICvk
def harapekorinrin
0170デフォルトの名無しさん2016/05/17(火) 11:15:55.60ID:NWTAtPGB
結局問題解決に必要なのは言語の知識じゃなくて
OSや実行環境の知識だからなー
0171デフォルトの名無しさん2016/05/17(火) 12:26:40.03ID:DX0ymGPY
必要なのは設計のセンスだよ
言語やインフラの細かいことなんか他人やGoogleに聞けば済む話だけど、
設計だけは個人の経験や能力に強く依存する
0172デフォルトの名無しさん2016/05/17(火) 15:25:50.55ID:aNTJjeU0
プログラミングだけじゃなくて、パソコンやなんかからよく知らない人はどうすりゃええねん
0173デフォルトの名無しさん2016/05/17(火) 17:08:38.12ID:9orynTFq
>>172
勉強する?
0174デフォルトの名無しさん2016/05/17(火) 18:00:08.28ID:CnuAkB4H
先ずは電源の入れ方からマスターだな
0175デフォルトの名無しさん2016/05/17(火) 18:55:21.66ID:eRIY89eq
電源の入れ方は切り方とセットでなければマスターとは認めん
0176デフォルトの名無しさん2016/05/17(火) 19:24:53.34ID:0ndBRKVS
はいそこで押し続ける!
ひとつ、ふたつ、みっつ、よっつ、いつつ!
0177デフォルトの名無しさん2016/05/17(火) 23:42:54.72ID:cKpkeDSB
rubyってウェブアプリやウェブサービスのイメージが強いんだけど、それ以外ってどんなとこに使われてるの?
0178デフォルトの名無しさん2016/05/17(火) 23:54:52.00ID:PFL7J48p
実用ではウェブがほとんどじゃね
0179デフォルトの名無しさん2016/05/18(水) 00:11:20.05ID:ot/2Utg3
vagrant や fluentd など普通のスクリプトとしてもよく使われてるよ
0180デフォルトの名無しさん2016/05/18(水) 00:47:52.39ID:K/5XOq2K
個人的にいままでCやってて
最近ruby始めたばっかりなんですが
rubyの変数って一般的な言語における変数とは全然概念が違うんですね…
i = 5
i = i +1
ってやると
一つめの実行式で5というオブジェクトにiという付箋をつける
二つめの実行式でiの付箋を6というオブジェクトに貼り替えるって感じでいいんです?

なんか他の言語とは概念が逆な感じで驚いてます
0181デフォルトの名無しさん2016/05/18(水) 00:51:31.83ID:ot/2Utg3
>>180
え?
有名どころの言語でも大体一緒だけど…
0182デフォルトの名無しさん2016/05/18(水) 00:59:26.97ID:K/5XOq2K
>>181
あれ、そうなんですか…
C言語だと宣言するとメモリのスタック領域に変数型分の領域が確保されて
その中身の数値が入れ替わるっていう風に習ったので…

逆にCの方が特殊と思った方がいいんでしょうか…
0183デフォルトの名無しさん2016/05/18(水) 01:30:34.37ID:BFM6WmVS
>>182
考え方が違うだけで起こることは大体一緒。
代入は代入で変わらないけど、代入するものが必ずオブジェクトなだけ。
0184デフォルトの名無しさん2016/05/18(水) 04:34:37.35ID:BFM6WmVS
>>182
混乱の元は、数値、文字列がオブジェクトだってところに
あるんだと思うけど、そこは慣れたら逆にわかりやすい。
0185デフォルトの名無しさん2016/05/18(水) 11:13:44.00ID:tltkMhqB
rubyの良いところでもあり悪い部分でもある場所
0186デフォルトの名無しさん2016/05/18(水) 14:49:34.18ID:yDy1hpmH
格納場所や値のコピーをプログラマに強く意識させるという意味では
Cが特殊
0187デフォルトの名無しさん2016/05/18(水) 16:55:42.20ID:u7J2zmgl
>182
rubyのintはobjectでありかつprimitiveでもある
0188デフォルトの名無しさん2016/05/18(水) 22:39:52.30ID:fCMOVnrJ
practical object-oriented design in ruby
この本は初心者にはむずかしいですか?
英語は大丈夫です
0189デフォルトの名無しさん2016/05/18(水) 23:33:07.26ID:+FiiBQuR
Ruby はもともと英国の開発者が作った言語だからな
英語で勉強したほうがいい
0190デフォルトの名無しさん2016/05/19(木) 01:35:45.58ID:6QrHkYGV
Java, JS などは、数値などのprimitive型(4, 8バイト)があって、
primitiveにメソッドを呼ぶと、オブジェクトに変換する。
Boxing, Unboxing

ただし、ループ内で大量に変換されると遅くなるため、この変換は避けた方がいい

一方、Rubyではすべてがオブジェクトだから、1つに付き、16バイト?を使うが、変換はしない。
ただ、数値などは直接ポインタに納めて、メモリを節約している
0191デフォルトの名無しさん2016/05/19(木) 01:38:12.77ID:sIW2z0LA
>>189
なんで初心者に嘘ついてんだ。

>>188
元々rubyは日本出身の言語で日本語の情報が充実してるから、
rubyに限っては日本語書籍の方が良い可能性もある。
その本は読んだ事無いから知らないけど
0192デフォルトの名無しさん2016/05/19(木) 07:32:25.18ID:l7SG7Alg
【OS】 Mac OS X 10.8.5 (x86_64) ruby 1.8.7です。
Dir.glob("/Users/xxxxx/Desktop/**/*", "/Users/xxxxx/test/**/*") do |filename|
記述すると
test.rb:11:in `glob': can't convert String into Integer (TypeError)
でエラーになります。片方だけにするとエラーはないのですが、
Dir.globで複数ディレクトリの指定は出来ないのでしょうか?
0193デフォルトの名無しさん2016/05/19(木) 08:06:41.37ID:JUfHMrn+
なんで勝手に引数を増やせると思ったのか謎だけどこれ読めば?
http://docs.ruby-lang.org/ja/1.8.7/method/Dir/s/=5b=5d.html
0194デフォルトの名無しさん2016/05/19(木) 08:46:18.92ID:JUfHMrn+
一応これで動くよ
Dir.glob("/Users/xxxxx/Desktop/**/*\0/Users/xxxxx/test/**/*")
Dir["/Users/xxxxx/Desktop/**/*", "/Users/xxxxx/test/**/*"]
0195デフォルトの名無しさん2016/05/19(木) 16:57:17.84ID:l7SG7Alg
>>193
>>194
ありがとう。ググった記述は1.9.xのコードだったということですね。
0196デフォルトの名無しさん2016/05/19(木) 17:09:52.29ID:l7SG7Alg
ちなみに1.8.7にはDirメソッドないみたいだし、[か(か不明。[が正しいのかもしれないが。
0197デフォルトの名無しさん2016/05/19(木) 17:20:38.74ID:JUfHMrn+
いや、(おそらく)どのバージョンでも>>192はエラーになるし
(おそらく)どのバージョンでも>>194は動くよ
あとDirはメドッソ名じゃなくてクラス名だよ
たぶんDir.[]のことを言いたいんだろうけど
0198デフォルトの名無しさん2016/05/19(木) 20:10:11.72ID:uWcto14Q
とりあえず 1.8.7 はもう化石だし、対応してないライブラリも多いし、さっさとバージョンアップしないとね
0199デフォルトの名無しさん2016/05/19(木) 20:15:57.16ID:X6Uyl1SE
>>180
> …… 感じでいいんです?

そんな感じでだいたい合っているよ
あと以下でも引数渡しにおける変数の概念が丁寧に解説されている

・Rubyist Magazine - 値渡しと参照渡しの違いを理解する
 http://magazine.rubyist.net/?0032-CallByValueAndCallByReference

> なんか他の言語とは概念が逆な感じで驚いてます

たしかにC/Pascal/Fortran/Cobolといった手続き型言語における
変数の概念とは大きく違っているね
ただしRubyにおける変数の概念は、Lisp/MLといった(破壊的代入を許容する)
関数型言語における変数と類似している
というか、オブジェクト指向Lispを手続き型言語風の構文糖で包んだのが
Rubyの本質なんだと思う

・Lisp から Ruby への設計ステップ | プログラマーズ雑記帳
 http://yohshiy.blog.fc2.com/blog-entry-250.html
0200デフォルトの名無しさん2016/05/19(木) 20:46:38.83ID:MKa/yUEp
エクセルをrubyでうごかそうとおもったら、VBAの知識は必要ですか?
0201デフォルトの名無しさん2016/05/19(木) 20:50:13.84ID:0NGD4TAz
VBAのサンプル見ながら書くんだから必要に決まってる
0202デフォルトの名無しさん2016/05/19(木) 22:33:03.86ID:MKa/yUEp
@エクセル.do("エクセル動けVBA”)
こんなかんじ?
0203デフォルトの名無しさん2016/05/19(木) 22:38:09.82ID:8tkESgzV
違う
そうじゃない
0204デフォルトの名無しさん2016/05/20(金) 00:04:24.82ID:o172VlqL
俺、おまえらみたいになれるようにがんばるよ
0205デフォルトの名無しさん2016/05/20(金) 01:15:23.68ID:KIw+nUhS
qiitaってクソみたいな記事増えて見る気失せたな
0206デフォルトの名無しさん2016/05/20(金) 03:14:06.44ID:5Uv57k1E
スレチだけど
0207デフォルトの名無しさん2016/05/21(土) 00:15:47.42ID:TJV+wjVx
>>192
Heroku の笹田耕一が、命令を中間コードに折りたたむ、

Ruby仮想マシン(RubyVM)を作ったのは、2004年のRuby 1.9 から
0208デフォルトの名無しさん2016/05/22(日) 17:09:47.75ID:xX01J0kV
プログラマ芸人クソむかつくな
勉強中だからとか若いからとかいうのを免罪符にして
わかったふりして嘘を垂れ流すクズ
傀儡っていう自覚あるのかな
0209デフォルトの名無しさん2016/05/22(日) 20:11:08.18ID:gMsVcx92
>>208
プログラム芸人って?
0210デフォルトの名無しさん2016/05/22(日) 21:54:03.17ID:yMwTDWKP
>>208
そういうタレントなんか、相手すんな、気にするな。
0211デフォルトの名無しさん2016/05/24(火) 22:57:15.19ID:XEe/ObJR
ウィンドウズ用のデスクトップのアプリケーションをつくりたいのですが、RubyでやるよりVBでやったほうが簡単でしょうか?
Ruby用のGUIはTKを一緒にインストールしました。
ウェブアプリケーション用の記事やレイルズ関連の話が多く、自分で使う用の簡易なデスクトップアプリはRubyで作成可能なのかよくわかりません。
選択やプルダウンをいくつか選ぶと、エクセル等に計算結果が自動出力されるものをつくりたいのです。
0212デフォルトの名無しさん2016/05/24(火) 23:02:11.55ID:Zf7m21lM
出力先がExcelなのなら素直にVBやExcelマクロを使ったほうが素直
ただしなにかめっちゃテキスト処理するというならそこはRubyのほうがいいかも
0213デフォルトの名無しさん2016/05/24(火) 23:11:29.51ID:XEe/ObJR
あーやはりそうですか。rubyをしばらく勉強してみて思ったのですが、
そもそもデスクトップ上でのみ動くようなもの(特にGUI)を作るのには、初心者にはあまり優しくはないですよね
0214デフォルトの名無しさん2016/05/24(火) 23:14:10.63ID:2NWdMlbv
RubyでGUIは修羅の道だからな
0215デフォルトの名無しさん2016/05/24(火) 23:15:38.91ID:XVnpS8Zn
>>213
VBとかはWindowsに特化してる分だけ簡単になるんよ。
Linuxでも動かしたいとかの場合は逆にRuby/TKになるけどね
0216デフォルトの名無しさん2016/05/24(火) 23:28:05.99ID:XEe/ObJR
おとなしくVB勉強することにします。
全然アプリ作成がイメージできないから、結構買っちゃったRubyの本たちどうしよう。
0217デフォルトの名無しさん2016/05/24(火) 23:56:26.69ID:ODiJmRGM
通販は知らんが放送開けてなくてレシートがあるなら返品できるかもしれないよ
0218デフォルトの名無しさん2016/05/25(水) 00:04:55.01ID:0fASXL2x
>>216
近場なら買取に行くのにな
0219デフォルトの名無しさん2016/05/25(水) 08:35:17.92ID:bbq7lHBG
>>216
てかJavaScriptにすれば?Electronとか流行ってていいんじゃね?
0220デフォルトの名無しさん2016/05/25(水) 12:32:03.88ID:RqoGasre
プルダウンリストとボタンぐらいだったらRuby/Tkが簡単だし十分でしょ
凝ったUIにしようとすると死ねるけど
0221デフォルトの名無しさん2016/05/25(水) 12:43:12.66ID:ECOeuz5z
win32oleを使ってもいいんじゃない?
解説も多いし
0222デフォルトの名無しさん2016/05/25(水) 14:51:30.25ID:JMqhkYJX
>>211
テンプレートをエクセルで作っておいて
Rubyなりで選択やプルダウンした結果をテンプレに挿入して
出力する造りにすると楽
0223デフォルトの名無しさん2016/05/25(水) 14:52:11.16ID:JMqhkYJX
>>214
それな
0224デフォルトの名無しさん2016/05/25(水) 17:30:55.16ID:pZYZ14wu
ruby はすべてが修羅の道だよ
0225デフォルトの名無しさん2016/05/25(水) 18:09:07.32ID:wY/Wnuvz
いやGUIはともかく
言語自体は簡単だろ
0226デフォルトの名無しさん2016/05/25(水) 18:13:47.52ID:UjzgjwET
Windowsなら修羅の道
こういう勘違いして時間を無駄にする被害者を増やさないためにも、
Ruby開発陣はもうWindows相手にする気無いんだからはっきりそうアナウンスするべき
0227デフォルトの名無しさん2016/05/25(水) 18:13:57.93ID:JMqhkYJX
windowsにも優しくしてください
0228デフォルトの名無しさん2016/05/25(水) 18:17:31.67ID:JMqhkYJX
>>226
明言しちゃったら予算税金ぶんどれなくなるからじゃね
0229デフォルトの名無しさん2016/05/25(水) 18:19:31.06ID:CBm2j+F0
かつてWindows上でのテキスト加工やVBA代わりに使ってる人も多かったけど、
今ではコミュニティが完全にRailsに乗っ取られちゃってもうダメだね
公式のVer.Upアナウンスで「Railsのパフォーマンスを改善しました」とか普通に言っててもう完全にRails専用スクリプト
0230デフォルトの名無しさん2016/05/25(水) 20:09:42.99ID:o7owtJWO
IronRubyがあるやん
つかったことないけど。
0231デフォルトの名無しさん2016/05/25(水) 21:15:35.26ID:ijFGsv4R
>>229
彼らの目は覚まさせなければならない
どんな犠牲を払ってもね
不快とかではなく害悪だ
0232デフォルトの名無しさん2016/05/26(木) 00:01:52.65ID:HY9T5R8V
IronRubyの最終更新見たら2011年で草生える
0233デフォルトの名無しさん2016/05/26(木) 00:03:07.06ID:HY9T5R8V
そういえばバイオインフォマティクスでruby扱うって言うのも結局はやらなかったのだろうか
結局perlな気がする
0234デフォルトの名無しさん2016/05/26(木) 01:24:50.33ID:UjMbTLsx
MSはWindows依存の言語ばかりで、すべてのOSで使える、汎用言語を持っていない

だから、VS Code, Bash on Windows でも、Python, Ruby のサポートが最優先
0235デフォルトの名無しさん2016/05/26(木) 01:39:34.33ID:/SAceF4R
VS Code、まだ日本語だと使いにくいんだよなー
0236デフォルトの名無しさん2016/05/26(木) 13:42:44.17ID:PPtVZd97
>>232
終わってんな
0237デフォルトの名無しさん2016/05/26(木) 13:43:38.01ID:PPtVZd97
>>233
放送大学のプログラミングの授業はRuby使っとった
0238デフォルトの名無しさん2016/05/26(木) 14:15:25.09ID:looUebM7
うちの大学の前期課程ではrubyが準必修だったわ
0239デフォルトの名無しさん2016/05/26(木) 15:54:40.68ID:QgXVvdFH
窓OSなんか、Rubyのサポートから捨てちゃえばいい。
0240デフォルトの名無しさん2016/05/26(木) 16:09:51.98ID:PPtVZd97
昔からサポートなんてしていない
自己責任
0241デフォルトの名無しさん2016/05/26(木) 20:43:44.33ID:kf6+V6jX
大学でRuby準必修とかすごいな
こちとらC, Scheme, Javaだったぞ…
0242デフォルトの名無しさん2016/05/26(木) 21:04:26.33ID:gEBgfilR
Javaの授業と言いながら、mainメソッドの中に変数a,b,c,...を用意して全部そこで処理〜
みたいなのを東大出身者にやられてから10年程度しか経ってないと思うと感慨深い
0243デフォルトの名無しさん2016/05/27(金) 10:05:35.18ID:M1a78pSK
>>238
お前、東大の理系の学生だろ
0244デフォルトの名無しさん2016/05/27(金) 11:51:43.10ID:+931Hxzr
>>242
どこの學校?
0245デフォルトの名無しさん2016/05/27(金) 16:26:46.66ID:HURQQ888
プログラミングの考え方が対象年齢5歳の絵本で身につく「ルビィのぼうけん」レビュー
http://gigazine.net/news/20160524-hello-ruby-review/

プロジェクトの開始からわずか3時間で目標額の1万ドル(約100万円)に到達
0246デフォルトの名無しさん2016/05/27(金) 17:03:59.14ID:a5zDK+Zd
djangoわろす
0247デフォルトの名無しさん2016/05/27(金) 17:40:10.41ID:yYwIsK/3
>>244
某田舎の高専
0248デフォルトの名無しさん2016/05/28(土) 00:20:50.45ID:PtZBoQp9
真偽・対偶・集合など論理的思考・論理演算は、中学生以上じゃないと理解できない

小学生はそろばんとか、1+1=2 とか、言語能力など、暗記型の単純なものしかできない

判断や思考は、できない
0249デフォルトの名無しさん2016/05/28(土) 00:53:58.83ID:HvcbCyzV
>>248
小学生舐めすぎ
0250デフォルトの名無しさん2016/05/28(土) 08:30:37.99ID:87dv3xOx
小学生舐めたい
0251デフォルトの名無しさん2016/05/28(土) 11:28:04.15ID:GLCLhEM2
>>250
おまわりさんこっちです
0252デフォルトの名無しさん2016/05/28(土) 12:00:38.49ID:YkPoIoOS
>>248
親や環境の影響によると思う
0253デフォルトの名無しさん2016/05/28(土) 12:01:49.75ID:YkPoIoOS
出来るやつは小学生でも出来る
出来ないやつは大人になっても出来ない
もちろん多くの人間はその中間でしかない
0254デフォルトの名無しさん2016/05/28(土) 23:14:33.76ID:vZatrWbm
プログラミング初心者です
rubyを始めようと思っているのですが、基礎から教えてくれるサイトなどを教えていただきたいです
0255デフォルトの名無しさん2016/05/29(日) 00:06:18.34ID:VvL70MFq
>>254
サイトは知らない
本ならテンプレ参照
0256デフォルトの名無しさん2016/05/29(日) 04:14:13.12ID:RrRCCmyQ
本なら『たのしいRuby』が入門書の鉄板
0257デフォルトの名無しさん2016/05/29(日) 12:12:31.80ID:9WWbP5OA
プログラミング初学者向けの本なら「ルビィのぼうけん」(対象5歳以上)がおすすめ
0258デフォルトの名無しさん2016/05/29(日) 12:32:35.29ID:fkiT89OT
リンダって人どんだけプログラミングできんの?
芸人?
0259デフォルトの名無しさん2016/05/30(月) 01:22:02.02ID:3DZnNVRd
https://image.kusokora.jp/v1/b7daff98c2b748dfa6cb8240c8ac7c33/kusokora/Caz5uAHUsAAwKwp.jpg
0260デフォルトの名無しさん2016/05/30(月) 13:39:12.86ID:JuVY621L
Rubyって演算子もメソッドって聞いたんですけど
&.とか全然メソッドじゃないですか
うそじゃないですか
0261デフォルトの名無しさん2016/05/30(月) 15:50:13.85ID:sT3Um2rG
Fixnum#& はメソッドだろ
0262デフォルトの名無しさん2016/05/30(月) 16:45:26.45ID:sT3Um2rG
ちなみにメソッドじゃないものも確かにある
>再定義できない演算子(制御構造)
>演算子の組合せである自己代入演算子は再定義できません。
> = ?: .. ... not && and || or ::

http://docs.ruby-lang.org/ja/2.3.0/doc/spec=2foperator.html
0263Ruby初心者2016/05/30(月) 21:37:38.47ID:FFEidQWc
Rubyの超初心者です。
Rubyの勉強を始めようと思いhttp://rubyinstaller.org/からRubyのインストーラーを
ダウンロードしたのですが、rubyinstaller-2.2.4.exe など
KINGSOFT Internet Securityでマルウェア潜伏を検知しました。(tclpip85.dll)
これは誤検知なのでしょうか?
ご存じの方、よろしくお願いします。
0264デフォルトの名無しさん2016/05/30(月) 22:40:36.17ID:IRxQFxCl
>>263
KINGS○FT Internet Securityとかいう、
某特亞ソフトがマルウェアですぞい。
ということで、窓OSでRubyを使うのもやめなはれ。

マジレスすると、誤認識。
所詮、アレは特亞だから、さっさとアンインストールしはなれ。
0265デフォルトの名無しさん2016/05/30(月) 23:40:12.61ID:CvrnMKOQ
>>263
卵を残しているからuninstallしたあと、有料ソフトを入れて全スキャン
norton eset カスペルスキーなどを推奨
0266デフォルトの名無しさん2016/05/31(火) 20:06:20.39ID:wtf3ir0Y
ShiftJISとUTF8でかかれたテキストファイルをそれぞれ読み込んで
NEC特殊文字がないか検索したいんだけど、

str.encode('Windows-31J') =~ /[�@-�I]/

みたいな式を書いてもIncompatibleだと怒られます
どうすればいいのでしょうか?
0267デフォルトの名無しさん2016/05/31(火) 20:59:36.26ID:7tSTm6mV
なんでWindows-31J"でエンコードしてんの
0268デフォルトの名無しさん2016/06/01(水) 00:14:51.04ID:91rys83L
>>260

せっかくなので答えると
&は
def &(other)
end
で定義可能
.は演算子でなく区切り文字
0269デフォルトの名無しさん2016/06/01(水) 04:44:46.68ID:bpjRczp9
円囲みの数字は、Windowsだけが使う、環境依存文字だね。CP932
0270デフォルトの名無しさん2016/06/01(水) 12:25:44.58ID:dPnMKqYG
&.って2.3のsafe navigation operatorの事を言ってるんじゃないの?
0271デフォルトの名無しさん2016/06/01(水) 12:30:21.40ID:Fp4IytvV
エスパーじゃないからわからないし
そもそもなぜ演算子すべてがメソッドじゃないと「嘘吐き」になるのかもわからない
0272デフォルトの名無しさん2016/06/02(木) 07:24:34.00ID:lxZxN/+H
Rubyのインストーラや構成ファイルがアンチウィルスソフトウェアでヒットするのは誤検知ではなく正常の範疇
プログラミングとはそういうもんだし安全側に倒した検知というのもそういうもんだ
キングソフトのアプリケーションの使用を勧めるものではないが
0273デフォルトの名無しさん2016/06/02(木) 12:24:43.10ID:hpz40EtU
>>271

分からないんだね
0274デフォルトの名無しさん2016/06/04(土) 01:10:14.44ID:5FXvcCoj
【OS】 Mac OS X 10.8.5 (x86_64)
rbenvをインストールしたいんだけど、gitの基本を学ぶのに良い書籍かサイトを教えて下さい。
ruby 2.1.xか2.0.x系でgitのインストールが書かれている本でも可です。
0275デフォルトの名無しさん2016/06/04(土) 01:35:12.26ID:3lsMjWzh
git は、ネット回線がつながっていなくても、
ローカルPC内に、コピーしてあるファイルに、上書きできる

そして、ネット回線がつながった時に、サーバーにあるリポジトリに保存すればいい

このように、皆がローカルファイルに対して、上書きしているから、
リポジトリに保存する際、他者とのコンフリクトがよく起きるので、うまく調整すべし
0276デフォルトの名無しさん2016/06/04(土) 02:51:29.78ID:n5pCla5O
わあアスペって本当にいるんだ
0277デフォルトの名無しさん2016/06/04(土) 03:27:04.44ID:C4qvAlJn
なんかむちゃくちゃでワロタ
0278デフォルトの名無しさん2016/06/04(土) 04:04:36.35ID:HeBl+5ND
rubyで動作確認したバージョン以下では動かないようにするにはどのように書けばよいですか?

例えばpythonで書くなら下記のようなイメージです。

if sys.version_info < (3, 4):
 sys.exit('version error')
0279デフォルトの名無しさん2016/06/04(土) 04:14:00.42ID:5FXvcCoj
274です。git使ったことも無いし知識もありません。とりあえず、
rbenvをインストールするためにgit clone出来るところまででOKです。

rbenvでrubyのバージョン管理をする - Qiita
http://qiita.com/MasahiroSakoda/items/b66f92df80b375f7c786

git clone [email protected]:sstephenson/rbenv.git ~/.rbenv

The authenticity of host 'github.com (192.30.252.128)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.252.128' (RSA) to the list of known hosts.
Permission denied (publickey).
0280デフォルトの名無しさん2016/06/04(土) 05:59:42.06ID:kjZDZHci
なぜrbenvの事は調べられるのに
gitの事は調べられないのか

ついでに言っとくと、rbenvは良いとしてもgitはスレ違い
gitの事はgitのスレ行って聞いた方が良い
0281デフォルトの名無しさん2016/06/04(土) 07:34:17.81ID:n5pCla5O
なんだまだ詰まってたのか
rbenvの作者はgitを
「rbenvをいんすとーるするぷろぐらむ」
「rbenvをあっぷでーとするぷろぐらむ」
としか使ってない(少なくとも利用者に向けては)
現時点では全く難しいこと考えずに上記の2つのコマンドラインを呪文として使うといい
その探求心はあとあと君を助けるだろうし呪文じゃないものを呪文として積み残さないことにもつながるだろう
プログラミングにはオマジナイなんて存在しないのさ ※ローカルレガシー解明職業者以外向けの文言
んでとりあえず今はrbenvを入れることのほうを優先しろw
0282デフォルトの名無しさん2016/06/04(土) 11:28:20.81ID:X9sTQ23f
>>278
RUBY_VERSION か `ruby -v`でバージョン情報を取得すれば?
02832782016/06/04(土) 18:00:02.31ID:SsvSKySH
>>282

できました!ありがとうございます。


perlからの移行なのですが、perlの use warnings; (一度も定義されていない関数を使用するとワーニングを出す)に相当するものはありますか?
02842782016/06/04(土) 18:02:18.28ID:SsvSKySH
変数を使用するときに毎回 hoge.nil? とするのは現実的ではないと思いますので、、
0285デフォルトの名無しさん2016/06/04(土) 18:09:56.30ID:X9sTQ23f
>>284
hoge rescue 例外処理
例外オブジェクトは$!で得られる
0286デフォルトの名無しさん2016/06/05(日) 04:51:30.39ID:bEHxSIM9
ruby -w
RUBYOPT環境変数 -w
$VERBOSEグローバル変数 true

これらのウォーニングは?
02872842016/06/05(日) 13:26:35.11ID:Nzi0oWQl
>>285,286

ありがとうございます。
シェバンを使ってるので下記のようにしたところ、エラーになりました。

#!/usr/bin/env ruby -w

そこで、下記のようにしたところ、うまく動きました。

#!/usr/bin/env ruby
$VERBOSE=true # nil false true

この $VERBOSE 以外にもおすすめの設定などありますでしょうか?
$-W は $VERBOSE と同じようですが、下記2つを設定しても特に変化はなさそうでした。
$-v=true
$-w=true
0288デフォルトの名無しさん2016/06/05(日) 13:42:43.61ID:sTpf+U42
>>279
なんでマルチしようと思ったの?
0289デフォルトの名無しさん2016/06/05(日) 16:47:36.99ID:V1+RWzEF
class Foo
  def <=>(other)
    〜〜
  end
end

というのを定義したとして、
<=>の左右を取り換えても同じ結果になるように

class Array
  def <=>(other)
    return 〜〜 if Foo === other
    ここに<=>の古い定義による処理
  end
end

みたいに書きたいんですが、可能でしょうか?
イメージとしてはsuperみたいな感じを思い浮かべています
0290デフォルトの名無しさん2016/06/05(日) 16:58:06.72ID:yB2MQIFp
>>289
> <=>の左右を取り換えても同じ結果になるように
その考え方自体がおかしい

あと>>288はテストケース書くことを覚えるといいぞ
0291デフォルトの名無しさん2016/06/05(日) 17:08:54.52ID:V1+RWzEF
>>290
左右取り換えても同じ結果っていうのは
Fooオブジェクトfoo <=> Arrayオフジェクトarray
が 1 なら
Arrayオブジェクトarray <=> Fooオフジェクトfoo
は -1 になる、っていう意味でした(0の時は不変)
すみません

テストケースというのも調べてみます!
0292デフォルトの名無しさん2016/06/05(日) 23:24:46.76ID:bEHxSIM9
>>287
$VERBOSEグローバル変数は、プログラム実行時に設定されるから、
コンパイル時には警告が見れないらしい

コンパイル時・実行時で、使いわけてくれ

>>289
9 <=> "9" → nil

Effective Ruby の項目13に書いてあるけど、
異なるクラス間では、<=> 宇宙船演算子は比較不能で、nil を返すのが無難

型変換か、ダックタイピングで考えた方が、無難
0293デフォルトの名無しさん2016/06/06(月) 10:29:45.98ID:4LJvtaQK
>>289
いくつか方法がある
http://d.hatena.ne.jp/rubikitch/touch/20080504/1209835550
0294デフォルトの名無しさん2016/06/06(月) 11:05:15.34ID:4LJvtaQK
>>289
リンク先よく見ずに貼っちゃったけど
そういう場合はprepend/superだな

Module FooExt
  def <=>(other)
    return 〜〜 if Foo === other
    super
  end
end

class Array
prepend FooExt
end
0295デフォルトの名無しさん2016/06/06(月) 11:47:47.85ID:MfRp00K1
日付とユーザー名見てもらっても見当つくと思うけど、
Rubyではなんでもできるなにしても許されるなんて思い上がってた時代の遺物ではある
今は標準クラスの拡張をしなくて済むような方法をなんとか模索するのが普通
普通の言語になっちゃったって? まあねえ
0296デフォルトの名無しさん2016/06/06(月) 12:13:03.09ID:G3lOY9F4
>>295
Yahoo!知恵袋みたいな回答だな
0297デフォルトの名無しさん2016/06/06(月) 12:55:43.54ID:uH2v6H5p
>>292-294
どうもありがとうございます!
prependがちょうど想定していたようなものでした!
0298デフォルトの名無しさん2016/06/06(月) 13:06:00.10ID:LOH+gXPe
>>295
十年前はムダに意識高かったな
0299デフォルトの名無しさん2016/06/06(月) 15:33:00.64ID:MfrgUwdV
>>297
ちなみに多分関係ないと思うけど、
数値っぽいクラスを作るときはNumeric#+とかを再定義するんじゃなくてFoo#coerceを定義するんだぞ

http://docs.ruby-lang.org/ja/2.1.0/method/Numeric/i/coerce.html
0300デフォルトの名無しさん2016/06/06(月) 17:30:53.24ID:uH2v6H5p
>>299
coerceを知らずに、まさにやらかそうとしてました
重ねてありがとうございます!
0301デフォルトの名無しさん2016/06/09(木) 20:20:07.54ID:biKmaAAl
たのしい 5版の8章 クラスとモジュール まで読んでいます。
Net::HTTP クラスというのが出て来たのですが、ここで使われている::の記号はNetクラスのHTTPメソッドを呼び出しているとみて良いのでしょうか?
0302デフォルトの名無しさん2016/06/09(木) 20:28:02.35ID:OsIQiMsD
Foo::BAR Fooクラスの定数BAR
FOO$bar Fooクラスのbarメソッド
0303デフォルトの名無しさん2016/06/09(木) 20:28:44.66ID:XKw/hvPS
そのへんの記号の説明自体が本に書いてねーか
面倒なら階層区切りの記号だとでも思ってくれ
Windowsエクスプローラーの\
URLの/
0304デフォルトの名無しさん2016/06/09(木) 20:28:48.01ID:OsIQiMsD
タイポ
$じゃなくて#ね
0305デフォルトの名無しさん2016/06/09(木) 20:46:09.43ID:biKmaAAl
コラムに メソッドの表記法 として

あるクラスのインスタンスメソッド名は
マニュアルではクラス名#メソッド名

クラスメソッドの名前表記には
クラス名.メソッド名
クラス名::メソッド名

というのがだいぶ前のページにありまして、それに従って解釈すると
Net::HTTPはNetクラスのHTTPメソッド
って事になるのだけれど、irbでNetクラスが呼び出せないのでおかしいなと。
0306デフォルトの名無しさん2016/06/09(木) 20:51:52.35ID:OsIQiMsD
そのくらいググればすぐわかんだろ
http://docs.ruby-lang.org/ja/2.3.0/library/net=2fhttp.html
0307デフォルトの名無しさん2016/06/09(木) 21:50:59.90ID:bVgVhSJZ
それを調べてここで報告するのがお前の仕事だろ
0308デフォルトの名無しさん2016/06/09(木) 22:07:37.30ID:c+D8jpow
職業:Web検索スペシャリスト
0309デフォルトの名無しさん2016/06/09(木) 22:35:18.52ID:j0nSzaIT
×Web検索スペシャリスト
○自宅検索員
0310デフォルトの名無しさん2016/06/10(金) 00:58:53.85ID:w12bLHXo
>>301
>ここで使われている::の記号はNetクラスのHTTPメソッドを呼び出しているとみて良いのでしょうか?

いや、それは間違いだよ
正しくは「::の記号はNetモジュールのHTTPクラスを参照している」と読む

・Rubyでは、名前空間として階層的な(=入れ子になった)モジュール構造を定義できる
・Rubyでは、クラスClassはクラス Modouleを継承している(=サブクラスである)から、クラスも(モジュールと同様に)階層的なモジュール構造を定義できる
・記号::は、この階層的な名前のパスを区切るために用いられる(>>303)

たとえば Net::HTTP::Getは、モジュールNet内で定義されたクラスHTTPの
更にその中で定義されたクラスGetを指す
くわえて Net::HTTP::Get::METHODは、前記のクラスGet内で定義された
定数METHODを指す

 http://www.h6.dion.ne.jp/~machan/tmdoc/example/net.book/html/tmdoc.def.Net.HTTP.Get.html

$ irb
>> require 'net/http'
=> true
>> Net::HTTP.new('127.0.0.1')
=> #<Net::HTTP 127.0.0.1:80 open=false>
>> Net::HTTP::Get::METHOD
=> "GET"
>>
0311デフォルトの名無しさん2016/06/10(金) 01:05:31.69ID:w12bLHXo
>>305
>それに従って解釈すると
>Net::HTTPはNetクラスのHTTPメソッド
>って事になるのだけれど、

Rubyでは:
・モジュール/クラス/定数は、英大文字で始まる
・メソッド/ローカル変数は、英子文字で始まる
という決まりがあるから、記号HTTPは
(メソッドではなくて)モジュールもしくは
そのサブクラスであるクラスを表すものと推測すべき
0312デフォルトの名無しさん2016/06/10(金) 03:03:40.39ID:1r2/ZPeG
>>302
これの2つめは初心者混乱するだろ
どうしても2つめを書きたいならFoo#barとFoo.barの違いと一緒に伝えるべき
0313デフォルトの名無しさん2016/06/10(金) 23:17:05.17ID:bspATi8a
::ってフォルダ階層のパス区切り記号だったんだ。

昔のMacOSでは:がフォルダ階層のパス区切り記号に使われていたらしいから、開発者はAppleUserだった?
0314デフォルトの名無しさん2016/06/11(土) 06:13:16.75ID:Z1WdmHmp
>>313
C++由来
残念でした
0315デフォルトの名無しさん2016/06/11(土) 11:55:15.68ID:peVuG0iD
ちょまどたんはぁはぁ
https://pbs.twimg.com/media/Cko0bn9VAAANiKM.jpg
https://pbs.twimg.com/media/Cko0cHtUUAAvUQo.jpg
https://pbs.twimg.com/media/Cko0cbrUYAYeAnc.jpg
0316デフォルトの名無しさん2016/06/11(土) 19:18:48.19ID:iSPIsEmM
だれ?
0317デフォルトの名無しさん2016/06/11(土) 20:06:42.47ID:tJYHO1Ae
>>316
たぶんこいつ
https://chomado.com/
0318デフォルトの名無しさん2016/06/12(日) 02:29:41.59ID:GVmUZEwV
ちょまどのあの噂は本当なんだろうか
0319デフォルトの名無しさん2016/06/12(日) 11:23:16.13ID:xN9NR8mn
今なら聴ける気がするので。

ちょまどの絵は好みじゃないけど、
CPUの創り方
の絵を描いた絵師さんを知りたい。
0320デフォルトの名無しさん2016/06/12(日) 14:16:10.54ID:5Z+bF2WO
スレチ
0321デフォルトの名無しさん2016/06/12(日) 16:09:48.75ID:nE4rQ5a5
>>320

http://livedoor.blogimg.jp/rogyweb314/imgs/3/b/3b3ad6de.png
0322デフォルトの名無しさん2016/06/12(日) 17:10:50.81ID:cSvEa/ak
マイナビに問い合わせたらええやろ。
ストーキングしたいので教えてくださいって。
0323デフォルトの名無しさん2016/06/12(日) 21:14:18.29ID:4Gt33m04
>>319
スレチだけど
本文イラスト 須田 都 って書いてた
0324デフォルトの名無しさん2016/06/13(月) 01:42:21.85ID:BHwe7pwo
gemのinstall時にdevkitでビルドする系のgemをインストールする際に
ビルドの進捗状況を報告させることってできます?
時間かかってるときに固まってるのか進んでるのかわからない・・・
0325デフォルトの名無しさん2016/06/13(月) 03:03:23.43ID:I6MCNyjd
--verboseはどうだろ
0326デフォルトの名無しさん2016/06/13(月) 15:11:26.91ID:zgrawcOE
>>323
スレチだけど
本文執筆者と絵師は同一人物ってことになるな
0327デフォルトの名無しさん2016/06/13(月) 18:07:35.31ID:3kyYR2Ny
>>326
スレチだけど
著者は渡波 郁 になってたよ
0328デフォルトの名無しさん2016/06/13(月) 18:18:33.22ID:LOYYlPRQ
「スレチだけど」は免罪符にならねえよ
いい加減黙れ
0329デフォルトの名無しさん2016/06/13(月) 19:09:49.77ID:Q+rjY21+
>>327

スレチだけど、下の名前が同じだから、ペンネームかもね
0330デフォルトの名無しさん2016/06/13(月) 20:10:53.27ID:EyvJcWZd
変わるんだ変わるんだ
出版毎に
行くぞ幽霊作家
ゴーストライター
0331デフォルトの名無しさん2016/06/14(火) 01:09:38.96ID:6xiZrmBI
1変数の非線形関数f(x)がf(x)=0となるxを求めるシンプルでいい感じのライブラリありませんか?
Ruby/GSLだとちょっとオーバースペック過ぎて…
0332デフォルトの名無しさん2016/06/14(火) 10:21:33.16ID:dYSnVaKQ
Webアプリケーションではない、それほど小さくはないツールをrubyを使って書こうとしてます。
規模は、Model数でいうと20個くらいです。
Controller的なものもRubyで、Viewはありません。

で、データベースアクセスにActiveRecordを使ってみようと思ったんですが、establish_connection()に
250msくらいかかってしまいます(localのPostgreSQLに対して)。
これだと、Model用のテストで、データベース接続だけで250*20=5秒もかかってしまいます。

これを改善する方法はありますか?
・establish_connection()そのものを速くする方法
・test/unitを使ったテストでデータベース接続を共有する方法など

環境は、
ruby 2.3.1p112
activerecord (4.2.6)
CentOS release 6.8
0333デフォルトの名無しさん2016/06/14(火) 13:07:34.64ID:Xw3W+KJl
iruby

割とマジで
0334デフォルトの名無しさん2016/06/14(火) 13:58:36.80ID:dYSnVaKQ
>>333
情報サンクス。

irubyはハードルが高そうなので、とりあえずjrubyで試してみるかと思ったけど、jruby + pg + activerecordな
環境を作るのさえハードルが高そうです。

$ irb
irb(main):001:0> require 'pg'
=> true
irb(main):002:0>
となるのに、
$ ruby test.rb
Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
というエラーが。

$ ruby -v
jruby 9.1.2.0 (2.3.0) 2016-05-26 7357c8f Java HotSpot(TM) 64-Bit Server VM 25.45-b02 on 1.8.0_45-b14 +jit [linux-x86_64]

ちょっとあきらめモードです。
0335デフォルトの名無しさん2016/06/14(火) 14:05:30.93ID:bPd6E78A
>>332
これよくわからんのだけどデータベースはひとつじゃないの?
モデルはテーブルに当たると思うのだが
0336デフォルトの名無しさん2016/06/14(火) 14:24:28.45ID:dYSnVaKQ
>>335
モデルの数=models/*.rbのファイル数=test/*_test.rbのファイル数
となると思ってます。

*_test.rbを1プロセスでまとめて実行できれば、データベース接続も共有できそうな気がするんですが、
現状では*_test.rbそれぞれを別プロセスで実行し、それぞれデータベースに接続してます。

全体的にActiveRecordを使った方が楽になりそうではあるんですが、ノウハウが無いのと接続が
遅いということで、現状はPG::connect()して直接pgのメソッドを使ってコーディングを進めてます。
0337デフォルトの名無しさん2016/06/14(火) 22:17:59.99ID:Kzbvzu4b
>>332
DBMS(PostgreSQLサーバ)への接続にいくらかの時間を要するのは当たり前のこと
普通はDBMSにはアプリ起動時(あるいは初回のアクセス時)に接続してそれを維持する
また、すこし規模が大きくなれば(=「それほど小さくはない」規模になれば)、
コネクションプールといった技法も要求される

それから「250*20=5秒」という計算式について、この20という定数は何の値かな?
もしModel(=テーブル)の数ということであれば、根本的なところで勘違いしてるよ
DBMS上で複数のデータベースを定義して、そのデータベース単位にコネクションを確立する
だからデータベース内に存在する複数のテーブル(=Model)をアクセスするのに、
あらたにコネクションを張る(=データベースに接続する)必要は無い
0338デフォルトの名無しさん2016/06/15(水) 02:30:34.57ID:Gm0oH8T8
こんな女の子キャピキャピ漫画の需要層は薄いだろ
だいたいRuby やワイスの格好見てみろ
フリフリのミニスカとか戦闘する気あんのかと
0339デフォルトの名無しさん2016/06/15(水) 10:14:53.09ID:0Hf+sg/L
>>337
> DBMS(PostgreSQLサーバ)への接続にいくらかの時間を要するのは当たり前のこと
その「いくらか」のオーダーは、直接接続するのとactiverecordを使用するのとでは大きく異なります。
--
t = Time.now
PG::connect(:host => 'localhost', :user => '**', :password => '**', :dbname => '**')
puts Time.now - t
--
=> 0.003679357

> それから「250*20=5秒」という計算式について、この20という定数は何の値かな?
test-unitを使ったテストファイルの数です。
user_test.rbとか。それがModelの数分できるので20ファイルくらいできる予定です。

> だからデータベース内に存在する複数のテーブル(=Model)をアクセスするのに、
> あらたにコネクションを張る(=データベースに接続する)必要は無い
現状では、20ファイル(できる予定)のテストを1プロセスで実行できる方法が見つかっていないので、
それぞれ別プロセスで実行していて、そのためデータベースへの接続も20回必要になります。
0340デフォルトの名無しさん2016/06/16(木) 22:27:32.05ID:DrR6OXvd
Ruby2.3.0で
nil[0]=0
が例外にならないんだけど、なぜだろう?

Ruby2.2だと、ふつうに例外になるのに。
Ruby2.3.0でも、nil[0]なら例外になる。
なんかおかしい気が。
0341デフォルトの名無しさん2016/06/16(木) 22:46:45.58ID:lq2RMnrw
>>340
バグ報告しましょう
0342デフォルトの名無しさん2016/06/16(木) 23:21:17.48ID:T2EM03jj
2.3.1でも例外になるね
0343デフォルトの名無しさん2016/06/16(木) 23:36:15.65ID:G8mFGz+4
nil[hoge] = hogehoge
とかしてもNameErrorにすらならないんだな
0344デフォルトの名無しさん2016/06/16(木) 23:54:18.82ID:neKk6sZN
おおこれすごいな
03453402016/06/17(金) 10:43:12.89ID:SNT89ii+
>>342
お、たすかる。
2.3.1のWindows版バイナリはまだ配布されてないので。
やっぱりバグで、修正されたんやね。
03463402016/06/17(金) 10:45:11.00ID:SNT89ii+
>>343
ぼっち演算の影響かねえ。
直接は歓迎会なさそうだけど。
0347デフォルトの名無しさん2016/06/17(金) 11:50:15.28ID:wk6+tOOo
歓迎会がなんかツボったw
0348デフォルトの名無しさん2016/06/17(金) 12:57:18.13ID:hG7B1m7h
>>340
>nil[0]=0
1.8.7 だと無事エラーになった
0349デフォルトの名無しさん2016/06/17(金) 13:29:02.01ID:WSjlHFjC
ソースが仕様です(キリっ
0350デフォルトの名無しさん2016/06/17(金) 14:21:01.72ID:SYFwm9MP
230のみで起こるバグなのか
231で修正されてるならあんまり気にしなくて良さそうだね
0351uy ◆e6.oHu1j.o 2016/06/17(金) 16:33:46.05ID:GkjZw5OC
質問です

YAMLで読み書きをしてるコードをしばらく動かしていたら
c:/ruby/lib/ruby/2.3.0/psych.rb:377:in `parse': (<unknown>): did not find expected key while parsing a block mapping at line 2 column 1 (Psych::SyntaxError)
ロードエラーが出てきて、
ファイル開いてみると確かにデータのインデントが変な風に書き込まれていました(20回分くらいのデータは正常に書き込まれています

読み書きは
YAML.load_file( YAML_FILE )
と
YAML.dump( yaml , open( YAML_FILE , 'w') )
でやっています
間違ったデータを書き込んでる原因は模索中です

YAML.dumpで書き込んだデータが
YAML.load_fileで読めないケースってあるんですか?


書き込まれていたのはこんなデータです
http://echo.2ch.net/test/read.cgi/tech/1458735404/:
uy:
- '9999'
http://echo.2ch.net/test/read.cgi/tech/1458955459/:
uy:
- '9999'
- '2'
http://echo.2ch.net/test/read.cgi/tech/1462970810/:
uy:
- '9999'
- '9999'   ← これが間違って書き込まれているデータ
0352uy ◆e6.oHu1j.o 2016/06/17(金) 16:36:29.12ID:GkjZw5OC
>>351
インデントがおかしくなりました  修正

http://echo.2ch.net/test/read.cgi/tech/1458955459/:
 uy:
  - '9999'
  - '2'
http://echo.2ch.net/test/read.cgi/tech/1462970810/:
 uy:
  - '9999'
- '9999' 
0353デフォルトの名無しさん2016/06/17(金) 17:24:52.68ID:WSjlHFjC
データの方ではなく
再現するソースを貼りなさい
0354デフォルトの名無しさん2016/06/17(金) 17:34:13.83ID:8Hiy7fy+
>間違ったデータを書き込んでる

>YAML.dumpで書き込んだデータが
>YAML.load_fileで読めないケース

>← これが間違って書き込まれているデータ

自分で論理的に原因の切り分けも出来ないくせに原因特定するなんて馬鹿のすることです。
0355uy ◆e6.oHu1j.o 2016/06/17(金) 18:48:19.99ID:GkjZw5OC
>>353
uy式会社uyの守秘義務があるので貼れません

>>354
もう少しわかりやすくお願いします

自分が知りたいのは
YAML.dump( yaml , open( YAML_FILE , 'w') )
↑ の時

変数:yaml にどのような値を入れて .yamlファイルを作成した場合に
この c:/ruby/lib/ruby/2.3.0/psych.rb:377:in `parse': (<unknown>): did not find expected key while parsing a block mapping at line 2 column 1 (Psych::SyntaxError)
エラーが出現するかという事ですが
一般的な方法で再現する方法は存在しないという事で良いですか?

いま現在いくつかのエラーチェックを入れ再び同スクリプトを稼働し
原因特定のため全変数を.txtでdumpしながら走らせて3時間程になりますが
今のところエラーは出現していません
0356デフォルトの名無しさん2016/06/17(金) 19:13:18.67ID:YpnIY8DD
スラドにこんな記事あった

RubyがPythonのようなポジションを得られなかったのはなぜか
http://developers.srad.jp/story/16/06/17/0827240/

最近日本でもPython本急に増えた印象あるよね。
やばいのかなRuby。
0357uy ◆e6.oHu1j.o 2016/06/17(金) 21:55:15.96ID:GkjZw5OC
>>355
ほぼ同じ別のスクリプトで再発し今度はさらに状態の悪いデータになっていたので原因は確定しました
どうバグを回避し表面化させないかというフェイズに移行します
ありがとうございました
本番環境はruby1.9.3なので古いバグを踏んだものと思う事にします
0358デフォルトの名無しさん2016/06/18(土) 15:29:35.92ID:AGMP56Qn
>>356
Pythonに負けた理由なら
1. 実行速度が遅かった
2. Windowsへの対応がひどかった
じゃね
他にもあるかも知れん
0359デフォルトの名無しさん2016/06/18(土) 15:37:16.15ID:Au7MFafK
負けたというか世界的にはRubyってRailsの組み込みスクリプトという認識しかないわけで
そもそも勝負にすらなってない
0360デフォルトの名無しさん2016/06/18(土) 15:59:35.05ID:RKqldoZs
ある意味勝ち逃げだろ Pyrrha は。
ただ、あれで終わり。
みんなの記憶にしか残らない散った存在。

Ruby はまだこれから成長する。
この差は大きい。
0361デフォルトの名無しさん2016/06/18(土) 16:49:47.95ID:SI6NucGb
勝ち負けとか心底どうでもよくね?
長けてる領域が違うだけの話
0362デフォルトの名無しさん2016/06/18(土) 19:27:38.85ID:AGMP56Qn
たしかに負けてるは言い過ぎだったかもしれない
こんなにたくさんレスが付くとは思わなかった
0363 ◆QZaw55cn4c 2016/06/18(土) 19:32:09.34ID:KfEx8M6W
ruby をはじめた
0364デフォルトの名無しさん2016/06/18(土) 20:10:04.10ID:SI6NucGb
>>362
なんかすまん
個人的にdisってるわけじゃないので気にしないでくれ
ちなみに俺はRubyの方が好き
0365デフォルトの名無しさん2016/06/18(土) 21:19:07.41ID:bpHrap68
>>362

Ruby に謝れ
0366デフォルトの名無しさん2016/06/18(土) 21:45:00.52ID:QKdVDmdU
Rubyは、Windows対応で負けている。
GUIに対応させるのは、面倒

一方、黒魔術(メタプログラミング・実装)系の良本が多い

メタプログラミング Ruby 第2版、2015
Effective Ruby、2015
Rubyのしくみ、2014
0367デフォルトの名無しさん2016/06/19(日) 12:37:38.12ID:5KvSKdL/
pythonにも黒魔術はあるが
黒魔術でもpythonの方が書きやすいな
0368デフォルトの名無しさん2016/06/19(日) 16:46:12.80ID:rmVET6vi
Win10 Anniversary Updateで少しはWin環境が良くなるのかな?
0369デフォルトの名無しさん2016/06/20(月) 01:21:45.09ID:HoUv0dJ2
>>365

http://img01.deviantart.net/c0e3/i/2013/346/1/5/rwby_genderbent_by_mechanicale-d6xq7tb.jpg
0370デフォルトの名無しさん2016/06/20(月) 09:01:35.78ID:XE/E5M6R
Ruby初学者です。既に5冊の本にチャレンジしましたがそのことごとくに挫折し、今新たに「Rubyの絵本」という本で
勉強しなおしています。以下のコードで理解できない場所があります。

n cats = [] = 1
cats[0] = "Kuro"
cats[1] = "Tama"
cats[2] = "Mike"
cats[3] = "Tara"
puts(cats[n])
cats[0] = "Shiro"

2〜4行目は配列catsに4つの要素を代入しているんだろうということはわかります。そして6行目は0番目の要素にShiro
を代入したのでKuroが消えている?のだろうということもわかる気がします。ところが、5行目のputs(cats[n])「は配列0〜3
までの要素をすべて表示する」と私は考えたのですが、本に「はcats[1]の値を表示」となっています。知りたいことは以下の2点です。

1.そもそもn cats = [] = 1とはどういう意味なのか、n cats = []は空配列を作るという意味ではないのか。なぜそのあとに=1と続くのか。
2..puts(cats[n])としか書いてないのになぜ、1番目が入るのか。

基本的なところから理解していなくて申し訳ありません。詳しい方のご教授をお願いします。
0371デフォルトの名無しさん2016/06/20(月) 09:12:09.51ID:Kk80zM3k
>n cats = [] = 1
SyntaxError: unexpected '=', expecting end-of-input
n cats = [] = 1

5冊読む前に1冊でも理解した方が良いよ
0372デフォルトの名無しさん2016/06/20(月) 09:24:31.93ID:XE/E5M6R
>>371
ありがとうございます。そうですよね、エラーが出るんです。おかしいな、間違って書いてないとおもうのですが。
あとはあなたのおっしゃる通りなのですが、プログラム自体が初めてでなるべく簡単そうな本を探して自学しています。
でおどの本も途中から猛烈に難しくなって「こりゃ駄目だ」と思ったら次の本という繰り返しで弱っています。
0373デフォルトの名無しさん2016/06/20(月) 09:25:44.54ID:Kk80zM3k
ちなみに
n cats = [] = 1
はまず [] = 1 ってのが実行されようとするからその時に構文エラーになる

n, cats = 1, []
の見間違いじゃない?
0374デフォルトの名無しさん2016/06/20(月) 09:40:16.81ID:Kk80zM3k
誤植か見間違いから知らないけど
n cats = [] = 1 は結局は
n = 1
cats = []
としたかったんだろう

この前提の下なら370の言っていることは概ね正しい
そして n = 1 なので
puts(cats[n]) は
puts(cats[1]) ってことで1番目の要素が出力されることになる
0375デフォルトの名無しさん2016/06/20(月) 09:43:21.95ID:XE/E5M6R
>>373
おお、すごい。ありがとうございます。ちゃんとTamaが表示されました。うれしい。
今、改めて本を読みなおしてみたんですが、やっぱりn cats = [] = 1となっていました。
自分のようなど素人がこれをやられるとどうにもなりません。どこがわからないのかわからない
というのは情けない限りですが、おかげさまで納得して先に進むことができました。ありがとうございました。
0376デフォルトの名無しさん2016/06/20(月) 09:45:26.19ID:XE/E5M6R
>>374
おお、わかりやすい説明ありがとうございます。助かりました。
0377デフォルトの名無しさん2016/06/20(月) 09:51:56.08ID:Tc3CU3LQ
出版社のサイトに正誤表あったよ
0378デフォルトの名無しさん2016/06/20(月) 10:29:34.75ID:OWUJ8xtd
そんなにRubyが合わないなら早めにPythonに乗り換えた方がいいな
せっかくこれから新しいのを覚えるというチャンスなのに10年後廃れている
言語を学ぶのはもったいない
0379デフォルトの名無しさん2016/06/20(月) 11:06:36.37ID:XE/E5M6R
>>377
そうですね、何で最初から出版社のホームページを見なかったんだろう…

>>378
いや、実はRubyが学びたいのではなくて人工無能を作成して将来、人工知能の勉強へとつなげられればと思って勉強しています。
そもそもなんでRubyなのかというと、10年ほど前に「恋するプログラムRubyでつくる人工無能」という本を購入しまして、
最初は「おお、面白い」と呼んでいたのですが、その内、配列?ハッシュ?インスタンス変数?とつぎつぎにわけのわからない
言葉がでてきました。これはもう本格的にRubyってやつを勉強しないとどうにも読めないなと考えて一念発起して、Rubyの解説書を
買いまくりました。ところがこれがさっぱり何を言ってるのかわからない…。なんせ、プログラムと言えば大学の時にちょろっとベーシックを
かじった程度でそのまま放置でしたから。

とりあえず、3冊買って読みましたが、「これは自分には無理だ」とあきらめ、数年が過ぎたのです。ところが幸か不幸か、今年は自由な時間が
取れまして(理由は深くは突っ込まないでください)、ふと本棚を見ると、ああこんなの買ったなあと思い出しました。よし、せっかくの機会だ。
なんとかがんばってRubyってやつをマスターしてやろうと今に至った次第です。とにかく、なんとしても「恋するプログラムRubyでつくる人工無能」
という本が理解できるようになりたいです!

長々とすみませんでした。
0380デフォルトの名無しさん2016/06/20(月) 12:33:22.39ID:6a0VacLi
3行で
0381デフォルトの名無しさん2016/06/20(月) 15:04:19.05ID:zSeivZg9
>>366
> Rubyは、Windows対応で負けている。
> GUIに対応させるのは、面倒

気になったので試してみました
mswin版は1.8で少し調べてオワコンっぽい感じがしたので
動作確認したものはx86-mingw版のみで以下の組み合わせ

[2.3] fxruby gtk2 gtk3
[2.2] fxruby qtbindings-4.8.6.1 gtk2 gtk3
[2.1] fxruby qtbindings-4.8.6.1 gtk2-3.0.7 gtk3-3.0.7
[2.0] fxruby qtbindings-4.8.6.1 gtk2-3.0.7 gtk3-3.0.7
[1.9] fxruby qtbindings-4.8.3.0 gtk2-2.2.0 gtk3-2.2.0 wxruby-ruby19
[1.8] fxruby qtbindings-4.8.3.0 gtk2-1.2.1 wxruby

fxruby : まったく問題なし。
wx : 2系で使えないのが残念。
qt : QtSDKが300MB超とデカイのが気になるところ。
gtk : 依存パッケージのバージョン解決が甘いので
(gtk3自体はruby1.8に対応しているが依存パッケージがruby>=1.9を求めるので不可だったり
依存パッケージのバージョン上限が設定なされていない為
--ignore-dependencies, gem sp xxxなどしながら個別に入れる必要があった)
古いバージョンを使う時には少々手間がかるのがネック。

自分の場合は慣れたqtかgtkかの二択だけど
fxrubyが http://rubyinstaller.org/downloads/ にも明記されてるぐらいなので無難だと思う。
0382デフォルトの名無しさん2016/06/20(月) 16:37:55.79ID:RVn5oxXA
>>379
その本読んだけど
無脳本は目標として良いと思うよ

人工知能は最先端だから超難しいけど
人工無脳は基本が分かれば難しくない

マルコフ連鎖だけちょっと
何やってるか分かりにくいけど
ハッシュでしりとりみたいなこと
させる仕組みは単純で感心する

コードを読んで動作をイメージ
できるようになれば分かる
0383デフォルトの名無しさん2016/06/20(月) 16:41:50.02ID:RVn5oxXA
あとは本って出版された後は古くなる一方だから
GUIキットは本の(Visualu Ruby)にこだわらず
今の新しいライブラリ使った方が便利
0384デフォルトの名無しさん2016/06/20(月) 16:47:39.38ID:78XmmaUt
>>377
もしこれが本当なら
かなり恥ずかしい部類の
誤植だな
0385デフォルトの名無しさん2016/06/21(火) 12:37:52.56ID:na89rYIQ
一行で短くまとめられる仕様もここまで極まったか…と一瞬戦慄したわ
0386デフォルトの名無しさん2016/06/21(火) 13:24:02.94ID:LE9F52CG
編集者なにやってんだよ
首吊ってくるレベル
0387デフォルトの名無しさん2016/06/21(火) 17:03:07.87ID:W3C4RKeO
>>382
ありがとうございます。まあ、他の言語を試せばいいのでしょうけど、こうやってわからなかったら次の言語とやってると、同じことがあった時にまた引越しなきゃならなくなる
のでがんばってRubyをマスターすることにします。

さて、「Rubyの絵本」のループの中断まで勉強が進みましたが、以下のコードの違いがよくわかりません。どなたかご教授よろしくお願いします。#の部分は自分が理解しやすいように
かってにコメント文章をつけたものです。よろしく願します。

a = 0
while a < 5
if a == 2
a = 10
next
end
print(a, "")
a += 1
end

aの値がwhile文の条件に合致している間はループ。
(1回目ループ)aに0が入っているが、if文が成立しないのでnextの下へ行き、a0と表示されてaが1になり、2回目のループに入る。
(2回目ループ)aに1が入っているが、if文が成立しないのでnextの下へ行き、a1と表示されてaが2になり、3回目のループに入る。
(3回目ループ)aに2が入っているが、if文が成立するのでaの値が10になるが、nextが発動し今の処理はなかったものとされ、aの値は2のまま?

似たようなプログラムがredoでもあるのですが、そちらはまあなんとか理解できます。問題はnextのほうで、今一つ理解できません。a=2のままなら無限ループするんじゃないかと自分では思ったのですが、
実際の出力結果は
a0
a1
となっているので、何か勘違いをしているのだと思いますがそれがなんなのかわかりません。長文申し訳ありませんがよろしくお願いします。
0388デフォルトの名無しさん2016/06/21(火) 17:27:16.66ID:rdnhr1yO
a == 1 の時、
1 と出力してから a += 1 によって a == 2 になって2行目へ行く。
次のループでは a == 2 なので a == 10 になってまた2行目へ行く。
a < 5 は false なので while〜end は実行されずに終了する。
0389デフォルトの名無しさん2016/06/21(火) 17:28:05.78ID:397g3bwN
>>387
言語の引っ越しはしないで正解

C++、Javaとか他のメジャーな言語は
だいたいRubyより難しいよ
実行速度を速くしたいときとかに使う

コードの方は
nextについて「勘違いをしている」

nextの後whileの条件節で
偽になるから無限ループしない
0390デフォルトの名無しさん2016/06/21(火) 17:29:54.69ID:LE9F52CG
そもそもなんで a=10 を代入してるんだろ a=5 じゃだめなんすか?
0391デフォルトの名無しさん2016/06/21(火) 17:36:43.51ID:397g3bwN
>>390
5でもいいよ

>nextが発動し今の処理はなかったものとされ
これが勘違いね
0392デフォルトの名無しさん2016/06/21(火) 17:39:26.71ID:rdnhr1yO
まあそれを言い出したら print(a, "") とかも謎だよね
元は print(a, "\n") だったのかな
0393デフォルトの名無しさん2016/06/21(火) 18:01:59.82ID:MNNlgPEV
break を教えずに a=Hoge とか +=1 以外の方法で制御変数書き換える形で脱出って筋悪いよね
0394デフォルトの名無しさん2016/06/21(火) 18:09:39.05ID:mjvOmEo6
普通にバグの元になるな
0395デフォルトの名無しさん2016/06/21(火) 18:10:26.89ID:W3C4RKeO
>>388
そっか、なるほど!条件文がfalseになってるからwhile文のendまですっ飛ばされるわけですね!
すっごくよくわかりました。ありがとうございます。「a=10がなかったことになる」のではなくて、
a=10のままwhile文の条件文を吟味するんですね。やっとわかりました。

それから今頃なんだと怒られるかもしれませんが、今一度本を読み返してみたら、nextとredoで
戻る場所が違ってたんですね。めんぼくない。redoだと条件文にジャンプしないからa=10のまま出力される
というわけですね。なんでもいいけど、難しいなあ。皆さんよくこんな複雑なものをマスターできましたね。
自分の頭が悪いのかな。まあ、とにかくがんばります!そのほかの皆さんの回答もありがとうございました。
0396デフォルトの名無しさん2016/06/21(火) 19:01:29.78ID:VP/Q8JMz
というかRubyでその手のループはtimesとかuptoとか使うべきだし、改行を伴う標準出力はputsを使うべきだと思う
元の本を知らんからアレだが…

あとRubyは簡単ではないと思う
それなりのことをサクッとやるのは簡単だけど
0397デフォルトの名無しさん2016/06/21(火) 19:08:43.11ID:rdnhr1yO
whileやforなんてなるほどあんまり使わないけど制御構造は一通り学んでおくべきなんじゃないのかな
まあ俺ならこう書くが
5.times{|i|
  break if i == 2
  puts i
}
0398デフォルトの名無しさん2016/06/21(火) 19:21:50.55ID:gJMymMte
俺ならこう書く
5.times{|_|-~p(_)!=2||break}
0399デフォルトの名無しさん2016/06/21(火) 19:48:13.62ID:mn7QpJSf
初心者向きじゃない書き方止めて!
わけワカメ
0400デフォルトの名無しさん2016/06/21(火) 20:30:33.33ID:gJMymMte
じゃあ
p *(0..5).first(2)
0401デフォルトの名無しさん2016/06/22(水) 06:25:24.35ID:jdKVcriH
module A
def a
p 'A'
end
end

module B
def b; a; end
def a
p 'B'
end
end

class X
include B
include A
end

p X.ancestors #=> [X, A, B, Object...]
p X.new.b

"A"
"A"
なぜ、2回もAが表示されたの? Bが表示されない

モジュールB内で、aを呼んだときは、静的スコープのB.a を読んでくれないな。
常に動的に、X, A, B の順に、aを探すのか
「メタプログラミング Ruby」1.6章より
04024012016/06/22(水) 06:34:16.68ID:jdKVcriH
B.a を呼んだときは、メソッド探索順に影響されず、
静的スコープのB.a を呼ぶ方法はないの?

動的言語だから、無理なのか?
0403デフォルトの名無しさん2016/06/22(水) 08:04:36.14ID:AQa0dSs+
>>401
ひっかけ問題かな。p の数を数えてみろ。
0404デフォルトの名無しさん2016/06/22(水) 08:07:48.65ID:AQa0dSs+
>>402
C++ みたいなクラス名修飾は無いね。別の名前を付けるしか
0405デフォルトの名無しさん2016/06/22(水) 11:45:54.25ID:yBOVYSwe
>>399
その考え方は良くない
0406デフォルトの名無しさん2016/06/22(水) 12:30:51.61ID:3DCeoZi+
ruby向きじゃない書き方やめて!
わけワカメ
0407デフォルトの名無しさん2016/06/22(水) 17:17:51.11ID:7oRMeHhG
foo bar, baz do 0 end
foo bar, baz { 0 }
これって動作違うのな、テスト書いてたらエラー出てびっくりしたわ
0408デフォルトの名無しさん2016/06/22(水) 18:15:16.93ID:gUQq/XMB
トリッキーな書き方する方が
考え方として良くない
短くなっても保守しにくくなる
04094012016/06/22(水) 20:22:56.84ID:jdKVcriH
>>401
自己レス

>p X.new.b
ここにも、p を付けていたから、2回表示された

>>407
意味わからん。カッコで囲んで
0410デフォルトの名無しさん2016/06/22(水) 20:31:09.09ID:1DvIaRNW
>>401
>モジュールB内で、aを呼んだときは、静的スコープのB.a を読んでくれないな。
>常に動的に、X, A, B の順に、aを探すのか

p X.ancestors #=> [X, A, B, Object...]

この結果を見れば明らかで、B, A の順序で include したのだから
Rubyの仕様に従った振る舞いな訳だけど、何が問題なの?

リファレンスを熟読してRubyの仕様を理解したほうがいいと思うよ
基礎ができていないのにメタプログラミングに手を出すのが挫折の原因だ

>>402
> 静的スコープのB.a を呼ぶ方法はないの?

ないよ
やるならクラス X の定義において、 include の順序を逆にする

> 動的言語だから、無理なのか?

いや、動的言語のRubyでも(モジュールやクラスを含む)定数の宣言は静的だよ
【ここで静的とは、一度宣言した値を後から(破壊的に)更新できないことを意味する】
できない理由は、上で書いたように「Ruby の仕様」だから

そのRubyの仕様に不満があるなら、多重継承とその問題点、および Mix-in が考案された
背景を勉強してから、Rubyコアへ次期Rubyの仕様変更案として提案すればいい
0411デフォルトの名無しさん2016/06/22(水) 21:15:23.44ID:os3fAdit
>>410
いやあるだろ
普通は使わんやり方だけど
0412デフォルトの名無しさん2016/06/22(水) 21:15:23.89ID:V2EBWOtT
>>407
http://rurema.clear-code.com/2.3.0/doc/spec=2fcall.html
リファレンスにがっつり書いてる
0413デフォルトの名無しさん2016/06/22(水) 21:16:15.70ID:k2RSEIyn
rubyを勉強してるだけで、文句を言ってるわけじゃないだろうに
0414デフォルトの名無しさん2016/06/22(水) 21:19:37.78ID:49vA2Qsp
リファレンスをおおかた読んで大体のやりたいことはできることになったんだけど
いまだにProcを使うツボがよくわからん
メソッドを新たに定義するのではダメなの?
0415デフォルトの名無しさん2016/06/22(水) 22:18:19.16ID:Q+XBk88Y
ProcはRubyの実装に内部的に使われているだけ
本来人間が直接触るもんじゃないので気にしなくていい
Rubyはメタプログラミングだのと抜かして中身を弄り回そうとする馬鹿が多いが、
あんなのはバッドノウハウであってカッコイイことでも何でもない
0416デフォルトの名無しさん2016/06/22(水) 22:40:21.74ID:V2EBWOtT
>>414
メソッドはクラスに属してなきゃいけないけど、それだとめんどくさいときとかに使える
04174012016/06/22(水) 22:45:04.32ID:jdKVcriH
module B
def b; a; end
def a
p 'B'
end
end

静的言語では、bを呼んだら、同じモジュール内の、aを呼ぶのが自然。
モジュールBのbを呼んで、次にaを呼ぶ際、異なるモジュールのaを呼ぶとは普通、思わないだろw

モジュールBを書いている奴は、当然同じモジュール内の、b・aを想定している

これぐらい静的スコープから、解決してほしい
0418デフォルトの名無しさん2016/06/22(水) 22:51:38.89ID:1DvIaRNW
>>414
すぐに思いつくのは2つのケース

1. メソッドへ複数のブロックを渡したい時
2. メソッド定義するまでもない短い処理を定義したい時

1. は自明だと思うから省略するとして、2. の例:

複数のイベントに応じてアクションを実行したい時、
  Actions = {
    :eventA => Proc.new {|x| …. },
    :eventB => Proc.new {|x| …. },
      :
  }
とHashでテーブル化しておいて、
  Actions[event].call(x)
と呼び出す

アクションの中身が複雑で長いコードならば可読性のある命名で
メソッドを定義すべきだろうけど、たとえば変数に代入するだけとか
単にライブラリ関数を呼ぶだけなんてケースでメソッド定義は面倒だよね
そんな時にはProcを使って、明示的にブロックオブジェクト(=クロージャ)を生成する
(ただし、個人的には Proc.new ではなく lambda といふ記述を好むけどね)
0419デフォルトの名無しさん2016/06/22(水) 22:54:00.17ID:jdKVcriH
>>414-416
proc, lambda, block(&) は、コード・処理を持ち運んで、後で、call で実行できる。
blockは、yield で、callback してもらえる

以下は、即時実行っていうこと?

proc{〜}.call
lambda{〜}.call
0420デフォルトの名無しさん2016/06/22(水) 23:09:35.89ID:1DvIaRNW
>>417
だから静的言語とか静的スコープとかは関係ないよ

Mix-in とは無関係で、ただ単にモジュール関数を呼びたいのなら、
以下のように書きなさい

module B
  module_function

  def b
    a
  end

  def a
    p 'B'
  end
end

詳しくは「Ruby モジュール関数」でググりなさい

>>410を繰り返すけど、リファレンスから module_function を見つけられない
君のレベルでメタプログラミングに手を出すのは子供じみた無茶な背伸びだよ
それよりもっと基本的なRubyのプログラミング技法を学んでからにしなさい
0421デフォルトの名無しさん2016/06/22(水) 23:40:23.32ID:V2EBWOtT
>>417
あくまで主役はXなんだから、Xから見て早く見つかる方を選ぶのは当然の話

静的言語の Scala にも Module と似たような trait があるが、結果は Ruby と変わらない


trait C {
 def a: String
}

trait A extends C {
 override def a = "a"
}

trait B extends C {
 def b = a
 override def a = "b"
}

class X extends A with B
class Y extends B with A

(new X).b // => "b"
(new Y).b // => "a"
0422デフォルトの名無しさん2016/06/22(水) 23:42:12.64ID:gUQq/XMB
>>414
コールバックに使う
0423デフォルトの名無しさん2016/06/23(木) 08:10:59.54ID:LmS7lhU+
>>414
無名関数の代わりに使う
0424デフォルトの名無しさん2016/06/23(木) 21:24:51.44ID:O+dpjAUR
ちょっと質問なんですが、1:1:多のデータベースあって最初の1のデータベースには管理者が登録するデータ、真ん中の1のデータベースにはユーザーが変更するデータ、最後は商品のデータベースという感じで設計してるんですがhas many throughで良いんでしょうか?

それともいっそ、管理者が登録するデータベースとユーザーが変更するデータベースを同じにしてアクセス権限で表示するビューを切り分けた方が良いでしょうか?

アドバイスよろしくお願いします。
0425デフォルトの名無しさん2016/06/23(木) 21:54:12.06ID:M8iyAzNM
has many through は多対多用
0426デフォルトの名無しさん2016/06/23(木) 23:16:42.11ID:O+dpjAUR
>>425
どの本読んでもそう書いてあったんですがこの場合で使えないということはないですよね?
0427デフォルトの名無しさん2016/06/24(金) 00:39:46.72ID:gxtxbzXV
rubyとかphpのwebフレームワークのインストールが難しすぎる、、、

いつも失敗する
0428デフォルトの名無しさん2016/06/24(金) 08:17:33.76ID:xEd+6tYG
多:多って、A.key * B.key が、5 * 10 など、組み合わせが積になるもの

その際、中間にテーブルを作って、双方のキーを入れる
A, (A.key, B.key), B
0429デフォルトの名無しさん2016/06/24(金) 10:12:39.00ID:F8DC/AtK
>>414だけど解答どうもありがとうございました!
0430デフォルトの名無しさん2016/06/24(金) 10:13:24.55ID:AFfOfH8V
>>424
そもそも設計が良くない気がするんだが
0431デフォルトの名無しさん2016/06/24(金) 11:00:41.58ID:Ua7mp3z0
>>425

テーブル統一して1対多でいくことにしました。
04324012016/06/25(土) 16:08:58.21ID:4ZuZDTqb
>>401
module A
class AA
def a; p 'A'; end
end; end

module B
class BB
def b; a; end
def a; p 'B'; end
end; end

class X
include B; include A
BB.new.b
end

p X.ancestors #=> [X, A, B, Object...]
X.new #=> "B"

a()をクラス内に入れたら、メソッド探索順では、Aモジュールの方が先なのに、
A::AA.a ではなく、B::BB.a が呼ばれるようになった

b()・a()が同じクラス内なら、呼び出し順は、モジュール探索順よりも、クラス内が優先される
0433デフォルトの名無しさん2016/06/25(土) 17:51:57.20ID:4KOaD2nt
A::AA B::BB は継承関係にないから当然だろ
A をインクルードしても A::AA のメソッド探しに行ったりしないよ
0434uy ◆e6.oHu1j.o 2016/06/27(月) 12:10:54.85ID:fzKuFJZp
gmkzRubyのバグ報告です


hostsを以下のように書き替え( 広告NG用
http://notepad.cc/share/R0lOXB8Zzs

以下のようなプロキシーサーバーをたてて繋いでブラウジングをしていたところ
https://ideone.com/JN6VDO

rubyが実行を停止しました
http://i.imgur.com/4gxFT71.png


OS:Win10
ブラウザ:Firefox
administrator:uy
0435uy ◆e6.oHu1j.o 2016/06/27(月) 12:12:44.87ID:fzKuFJZp
>>427
RailsInstaller使ったか?

gem install railsで普通にインストールが成功する可能性は、
ゼロではないけど、もはや幻想
0436uy ◆e6.oHu1j.o 2016/06/30(木) 08:28:51.01ID:U+B64GZ8
>>401
https://ideone.com/9nWuIF

rubyのこの辺のスコープは不満ある
直される事はないだろうけど


rubyでしかやらないようなコードに分かりやすいルール作るのが難しいから
結局避けて書いていく
積極的には使われない癖に無駄に複雑な仕様だけが
class、module、include、extend 周りに拡がる
0437uy ◆e6.oHu1j.o 2016/06/30(木) 08:40:38.48ID:U+B64GZ8
>>436
補足:

積極的には使われないといったのは、
この辺のklassを、上下に変数が行き来して、
それを理解しながら書くようなコードの事
include extend が飛び交う場所のメソッド・変数には闇が拡がる

この闇を扱う知識はしかも、他言語では使いようもないruby特有に複雑になってる闇の知識だから
わけのわからなくなってるスコープを制御しようとするのは無駄
0438デフォルトの名無しさん2016/06/30(木) 09:06:35.89ID:bMW7pQBg
そもそもモジュールのメソッド名は
衝突しないように付けること
0439デフォルトの名無しさん2016/06/30(木) 09:26:09.93ID:+cgjiVYz
refineとかusingって全く見かけないなあ
http://docs.ruby-lang.org/ja/2.3.0/method/main/s/using.html
0440デフォルトの名無しさん2016/06/30(木) 20:56:11.15ID:prI+ToNW
>439
んなこたーない。使っている人は使っている。
ただ、ruby2.1以上しか動かない縛りがあるので、古い環境でも動くようにみんな配慮してしまっているだけ。

個人的にはアスタリスク2回でハッシュを受け取る

def foo(a:, **b); p a, b end
foo({a: 1, b: 2})
結果
# 1
# {:b=>2}

とかの方がよっぽど見かけたことないです。
どなたか使ったことある方いらっしゃいますか?
0441デフォルトの名無しさん2016/06/30(木) 21:26:27.67ID:0Yz92fUm
refine多用はしないけど普通に使ってるわ
0442uy ◆e6.oHu1j.o 2016/06/30(木) 21:49:00.82ID:dzWCBRc4
個人的には&.を使える箇所が結構あるからこの実装は嬉しかった
0443デフォルトの名無しさん2016/07/01(金) 00:48:35.08ID:ECjG4IrI
ネットをみていたら知ったのですが
> new A().view();
これがなぜ通るのですか

class A
{
public void view()
{
Console.WriteLine(
0444デフォルトの名無しさん2016/07/01(金) 07:57:19.80ID:CYpkmvov
>>443
一つづつ整理して考えよう
・なぜそれが通らないと思ったのか?
・そのコードは何の言語で書かれたコードか?
・書き込む前にこのスレのタイトルを確認したか?
・確認したとすれば、ここで質問した理由は何か?
0445デフォルトの名無しさん2016/07/01(金) 08:50:38.16ID:QEi+HiDI
railsでjavascriptってどこにおいて呼び出せばいいんでしょうか?

生のjavascript使いたいのでcoffescriptとかいうのは使いたくないのですが
0446デフォルトの名無しさん2016/07/01(金) 09:48:09.75ID:rLMTR09R
>>445
普通に *.js.coffee を置くところに *.js を置けばいい
0447デフォルトの名無しさん2016/07/01(金) 19:03:05.10ID:QEi+HiDI
>>446
ありがとうございます。
試してみます。
0448デフォルトの名無しさん2016/07/02(土) 15:30:39.35ID:rfELLhTB
irbで「def !;end」ってすると
irb(main):1:0* irb(main):2:0* irb(main):3:0* irb(main):4:0* irb(main):5:0* irb(main):6:0*
ってのが延々と出力されるんだけど何が起きてるんだろう?
0449デフォルトの名無しさん2016/07/02(土) 16:12:53.91ID:0c7wAYOM
以前、人工無能についてお聞きしたものです。以下のプログラムが文字化けしているので、
return "#{input}?A?A?E?E?H"
上記の部分を
return "#{input}って何?"
に書き直すとEncording::CompatibilityErrorが出てしまいます。ユーザーの入力場面でローマ字のままで
入力した場合は問題ないのですが、漢字やひらがなが入っていると、エンコードのエラーが出てしまいます。
いろいろと調べてみたのですが、うまい方法が見つからなくて困っています。どなたかご教授いただけないでしょうか?
なお、文字化けしたままの状態であれば、漢字・平仮名入力でもエラーは出ません。よろしくお願いします。
0450デフォルトの名無しさん2016/07/02(土) 16:17:12.16ID:rfELLhTB
入力とソースのエンコードは何?
0451デフォルトの名無しさん2016/07/02(土) 16:25:16.33ID:0c7wAYOM
>>450
すみません、質問の意味が理解できません。ですが、プログラムの先頭には#! ruby -Ksとあります。
0452デフォルトの名無しさん2016/07/02(土) 16:27:47.01ID:PNWyJIIt
ruby -Kuso
0453デフォルトの名無しさん2016/07/02(土) 16:38:44.44ID:+zIpsemS
>>451
inputに入る文字列とファイルのエンコードはなに?ってことだと思います
0454デフォルトの名無しさん2016/07/02(土) 16:44:01.84ID:0c7wAYOM
>>453
すみません、それもわかりません。面目ない・・・
0455デフォルトの名無しさん2016/07/02(土) 16:44:17.44ID:rfELLhTB
>>451
-KsってことはエンコーディングとしてShiftJISを指定しているわけだけど
ソースファイルはちゃんとShiftJISで保存できてる?
更にinputにShiftJIS以外の文字列が来てるんじゃない?
例えばWindowsだったらコマンドプロンプトで入力するとShiftJISじゃなくてWindows31Jだからね
0456デフォルトの名無しさん2016/07/02(土) 16:52:56.82ID:0c7wAYOM
>>455
ご指摘にあるようにShiftJIS、Windows32Jなどググってみたのですが、どれも書いてあることが理解できませんでした。
もうちょっと基本的な用語を調べなおして、改めて質問させていただきます。ありがとうございました。
0457デフォルトの名無しさん2016/07/02(土) 16:58:35.24ID:SUhI6wBF
>>456
UnicodeとかUTF8とかの単語の意味を調べてからまたおいで
0458デフォルトの名無しさん2016/07/02(土) 16:58:41.18ID:UusWQPpk
窓OSなんか、世の中から無くなったほうがいい。
Ruby の実行環境としても、窓OSは向いていない。
0459デフォルトの名無しさん2016/07/02(土) 17:01:53.20ID:rfELLhTB
>>456
input を input.encode(Encoding::Shift_JIS) に書き換えればうまくいくかも
windowsで日本語を扱うのって面倒だよね
0460デフォルトの名無しさん2016/07/02(土) 17:36:48.49ID:NHPFDAI+
OS関係なく、初心者にrubyの文字コードは難しいだろう
0461デフォルトの名無しさん2016/07/02(土) 19:59:27.04ID:26rC20dw
文字コードでつまずくと
どの言語でも初心者には難しい
Rubyはマシな方だと思う
0462uy ◆e6.oHu1j.o 2016/07/02(土) 20:11:17.24ID:m6W0ip76
HRESULT error code:0x80010108
0463uy ◆e6.oHu1j.o 2016/07/02(土) 20:14:26.31ID:m6W0ip76
>>448
ruby -v
irb -v
0464デフォルトの名無しさん2016/07/02(土) 22:24:30.36ID:0c7wAYOM
>>459
アドバイスありがとうございます。試してみましたがうまくいかないようです(なんか変なことしているかも)。

ちょっと、このエンコードという問題はだいぶ難しそうなので、とりあえずRubyの基本を先にしっかり勉強したいと思います。
もっとも直近の目標が人工無能なので、遅かれ早かれ絶対に克服しなければならない問題なのは確かですが…
いずれにせよ、理解できないからと言っていつまでも足踏みしている暇はないので先に行きます。他の皆さんもありがとうございました。
0465デフォルトの名無しさん2016/07/02(土) 22:33:37.50ID:no/g4eo0
>>449-461
paiza.IO, codepad などのサイトで、ブラウザを使って、プログラミングすれば簡単
0466デフォルトの名無しさん2016/07/02(土) 22:41:05.68ID:no/g4eo0
サクラエディタ・TeraPad などで、文字コードを見れば?

Unix系は、UTF-8。
Windowsは、shift-jis, cp932(Windows31J)
改行コードも異なる

shift-jisに、Windowsだけの環境依存文字(�@、丸で囲んだ数字など)を、加えると、cp932となる

Windowsだけの環境依存文字を使うと、shift-jisよりも、バグる確立が大きい
0467デフォルトの名無しさん2016/07/02(土) 22:50:14.62ID:0c7wAYOM
>>466
ありがとうございます。もういいや、と思って別のことやろうと思いましたが、念のためTeraPadで打ち込んでみたら右下にエンコードがでました。
「UTF-8N」とあるようです。ところで、自分はきれいで見やすいとNETで評判の?SublimeText3を使っているんですが。エディタによっても結構違うんですね。
465さんのpaiza.IOみたいなエディタがあると便利なんですが、まあないものねだりしてもしょうがない。あまり、自分の質問だけでスレッドを私物化するのも
申し訳ないので、ここらでクローズさせていただきます。重ね重ねのアドバイスありがとうございます。
0468デフォルトの名無しさん2016/07/03(日) 06:34:41.72ID:KkvVurgp
-Kって今推奨されてないんじゃないの?
-EShift_JIS:Windows_31Jとするべきでは
0469uy ◆e6.oHu1j.o 2016/07/03(日) 11:25:14.56ID:VJyaYSRj
動けば良いよ動けば
0470デフォルトの名無しさん2016/07/03(日) 17:04:45.03ID:l9Pdm4ZB
vrubyを使いたいのですが、以下のエラーが出て困っています。
G:Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in'require':cannot load such file -- vr/vruby(LoadError)
ネットでも調べてみたのですが、なかなか情報がヒットしません。よろしくお願いします。
0471デフォルトの名無しさん2016/07/03(日) 17:07:35.45ID:KkvVurgp
最後の更新がruby1.9.2よりも前みたいだから
require_relativeとしなくちゃいけないところがrequireになってるんだろうね
0472デフォルトの名無しさん2016/07/03(日) 17:15:42.70ID:T6bq1Tjn
>>470
もう vruby なんて使うべきではないね
昔は何個かcontributeしたんだけどなー、懐かしい
0473デフォルトの名無しさん2016/07/03(日) 17:17:00.26ID:l9Pdm4ZB
>>471
ありがとうございます。ネットで検索したところ、2つの方法があるらしく。以下の内容を試してみました。
1:require 'vr/vruby'のvrの前に./をつける
2:require 'vr/vruby'のrequireをrequire_relativeとする
いずれもうまくいかず、途方に暮れています。
0474デフォルトの名無しさん2016/07/03(日) 17:19:52.23ID:KkvVurgp
カレントディレクトリとrbファイルのある場所が違うんじゃないの?
0475デフォルトの名無しさん2016/07/03(日) 17:21:08.98ID:l9Pdm4ZB
>>472
今、勉強している本の内容が古くて、本の内容がvrubyを使うことを前提にしているので弱っています。
本を買った時に諦めないで最後まで勉強していればなーと、いまさら言っても遅いですが。
0476デフォルトの名無しさん2016/07/03(日) 17:25:59.34ID:T6bq1Tjn
>>475
RubyでGUIでしかもWindowsでってのは鬼門でしかないからね
どうしてもWindowsでGUIってことなら素直にC#使うべきだよ
0477デフォルトの名無しさん2016/07/03(日) 17:27:02.20ID:KkvVurgp
>>474は勘違い 無視して
0478uy ◆e6.oHu1j.o 2016/07/03(日) 17:28:05.70ID:VJyaYSRj
>>470
http://www.osk.3web.ne.jp/~nyasu/vruby/core.html
こっから該当ファイル探して自分でパス通せ
0479デフォルトの名無しさん2016/07/03(日) 17:29:16.56ID:l9Pdm4ZB
>>474
今、rbファイルをruby.exeと同じフォルダにぶっこんでみましたが、状況は変化しないようです。
以前、このスレでどなたかが書いていたんですが、情報が常に古くなってしまって初学者が
勉強するには難しい言語なんでしょうか…もう心が折れてきました
0480デフォルトの名無しさん2016/07/03(日) 17:32:02.55ID:KkvVurgp
requireを書き換えてもうまくいかないっていうのは具体的にどういうことなの?
LoadErrorにはなるの?
0481デフォルトの名無しさん2016/07/03(日) 17:34:05.18ID:LjwuNqiA
そもそも64bitに対応しているだろうか
0482デフォルトの名無しさん2016/07/03(日) 17:34:32.24ID:l9Pdm4ZB
>>478
ありがとうございます。すでにこの場所には来ていたんですが、上書きすればいいんでしょうか?
って、聞く前にとあえずやってみます
0483uy ◆e6.oHu1j.o 2016/07/03(日) 17:35:50.97ID:VJyaYSRj
ちょっと入れてみようとしたけど
パス通しても動かない

swin.soが既に配布されてなくてソースコードでの配布になってるから
パス通した後さらにコンパイルしないと無理だよ
0484デフォルトの名無しさん2016/07/03(日) 17:40:59.61ID:l9Pdm4ZB
>>480
そうですね、書き換えてもLoadErrorになります。また、書き換えても書き換えなくてもエラーの内容は同じようです。

>>481
自分もなんか嫌な予感がするんですが、もしかして64じゃうまく動かないなんてことは…今まで投入した時間はなんだったんだ
0485デフォルトの名無しさん2016/07/03(日) 17:44:06.57ID:KkvVurgp
requireのままじゃないといけないところもrequire_relativeにしてない?
そうじゃなくて、特定の行がどちらの場合もエラーになるってこと?
0486デフォルトの名無しさん2016/07/03(日) 17:49:45.60ID:LjwuNqiA
素直にruby1.8.7を入れればいいわけだけど、今更vrubyを勉強する意味はないよ
0487デフォルトの名無しさん2016/07/03(日) 17:52:44.03ID:l9Pdm4ZB
>>485
全ての組み合わせを試しました。つまり、以下の3つです。
1:require 'vr/vruby'のvrの前に./をつける
2:require 'vr/vruby'のrequireをrequire_relativeとする
3:require 'vr/vruby'のvrの前に./をつけ、なおかつrequireをrequire_relativeとする
すべてLoadErrorになっています。
0488デフォルトの名無しさん2016/07/03(日) 17:54:55.25ID:l9Pdm4ZB
>>486
そっか!そういえばそうですよね、思いつかなかった。素直に古いバージョンでやれば済む話だった。本がそうなっているのだから。
とりあえず、それで行きます。ありがとうございました。
0489デフォルトの名無しさん2016/07/03(日) 18:01:50.01ID:KkvVurgp
まあ学習目的なら古いバージョンでやるのが一番かもね
ただ誤解があったようなのでそこだけ説明させてもらう
例えば
require "mathn"
require "vr/vruby"
ってあった時にmathnとかもrequire_relativeって書いてないかってこと
もし
require "mathn"
require_relative "vr/vruby"
ってやってもLoadErrorになるならそれはファイルがないってことだからバージョン変えてもエラーになると思うけど
何行目でLoadErrorになってるのかちゃんと確認してたのかな
0490デフォルトの名無しさん2016/07/03(日) 18:43:02.70ID:l9Pdm4ZB
>>489
ありがとうございます。今試してみましたが、エラーの内容が少し変わりました。

require_relative "vr/vruby"
require 'vr/vrcontrol'

これで試したところ、
G:Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in'require':cannot load such file -- vr/vruby(LoadError)
   ↓
G:Ruby23-x64/chatbot/gui_vruby_sample.rb:1in'require_relative'':cannot load such file -- G:Ruby23-x64/chatbot/vr/vruby(LoadError)

と変化しました。どういうことだかさっぱりわかりませんが、動かないのは以前の通りです。とにかく古いバージョンで試してみます。感謝。
0491デフォルトの名無しさん2016/07/03(日) 18:51:12.47ID:2FNA+IvI
Cloud9でmysqlデータベース使うときの設定って
どれが正しいんですかね、検索していろいろ出るんですが悉くエラーはいてしまって開発にうつれないっす
だれかやり方を教えていただけませんか…
0492デフォルトの名無しさん2016/07/03(日) 20:00:46.85ID:+diucK3B
>>475
本の内容をそのままそっくり
なぞることにこだわらなくていいよ

慣れるにつれて自力でできる部分は
自分で書いた方が早くなる

部分的にでも未知の情報を吸収できればよし
0493デフォルトの名無しさん2016/07/04(月) 03:09:10.05ID:24pN0A7m
Ruby1.9から、仮想マシン(RubyVM)になったから、
それより前のバージョンは、推奨しない。
vrubyというのも初耳

定番の本は、「たのしいRuby 第5版」2016

paiza.IO, codepad などのサイトで、ブラウザを使って、プログラミングするのが簡単。
ログインもいらない
0494uy ◆e6.oHu1j.o 2016/07/04(月) 15:13:47.56ID:RKNLnwF6
>>493
RubyのGUIが今よりもさらにgmks of gmksだった頃に
頑張って何かを作ろうとして挫折した人の作ったライブラリ
0495uy ◆e6.oHu1j.o 2016/07/04(月) 15:21:46.40ID:RKNLnwF6
rubyはアルゴリズムの記述には適してるものの、宣言・代入がメインとなるソースコードでは冗長
GUIは厳しかったね
多分ハードのほうも無理
宣言・代入メインならもっとマシな言語はある
0496デフォルトの名無しさん2016/07/04(月) 20:11:11.28ID:1TFm36GL
ウインドウズ10の初期設定で、

デフォルトで、パソコンの中身が会社に送られるとか、頭おかしいんじゃないの?

アメリカは、プライバシーの問題が、狂ってるんじゃねえの、モラルがないどころの話しじゃない
0497デフォルトの名無しさん2016/07/04(月) 20:17:48.27ID:A9h+6tfb
そうだな、まずは落ち着いてスレタイ読んでから書き込もうぜ
0498デフォルトの名無しさん2016/07/04(月) 22:05:27.13ID:3uqHV0dH
>>492 >>493
ありがとうございます。泣き入れていてもしょうがないので、気持ちを切り替えて「楽しいRuby」はじめました。
『今のところは』楽しいです。もうちょっとがんばってみます。以前挫折したときに比べて何かが見えてきた…気がします。
0499デフォルトの名無しさん2016/07/04(月) 22:08:28.55ID:yHpo7u0t
>>498
『たのしいRuby』からで正解

プログラムをいきなり思い通りには書けないよ
英語をいきなりペラペラしゃべれないのと同じ

慣れればスラスラ読み書きできるから
急がば回れで基礎を積み重ねることが肝要
0500デフォルトの名無しさん2016/07/05(火) 06:38:44.92ID:j6ObOS3k
「Rubyによるクローラー開発技法」P65にあるselenium-webdriverをインストールしており、
読み込みをさせようとすると下記のエラーが出て困っています。
cannot load such file -- ffi_c (LoadError)
gem listコマンドからはffi (1.9.10 x86-mingw32)の確認が取れています。
rubyのバージョンは、 2.3.0p0 (2015-12-25 revision 53290) [i386-mingw32]です。
PCスペックは、WIN7 32bitです。
PATHの指定が間違っているのかと思い、require先にフォルダ毎移動させたりしたのですが
エラーの改善には至りませんでした。
考えられる原因は、rubyとffiの整合性が取れてないのかとも思いrubyのバージョンも
変更してみたのですが、これもエラーの改善には至りませんでした。
ググっても特にヒントになりそうなのを見つけられなかったため、
何か解決方法があれば、ご教授頂きたいと思い書き込みさせて頂きました。
何卒、よろしくお願い致しますm(_ _)m
0501デフォルトの名無しさん2016/07/05(火) 07:28:57.81ID:JLNuGFh4
>>500
gem uninstall ffi
gem install ffi --platform ruby
0502デフォルトの名無しさん2016/07/05(火) 09:02:24.93ID:j6ObOS3k
>>501
コメントありがとうございます!
ffiの再インストールまでは成功したのですが、selenium-webdriverを起動すると
再び下記エラーが出てきました。。
C:/Ruby23/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `r
equire': cannot load such file -- ffi_c (LoadError)
エラーに書いてあるkanel_require.rbを見てみると
133 return gem_original_require(path) if require_again
と記述されていました。
パスの指定がうまく行ってないんですかねぇ・・・
0503デフォルトの名無しさん2016/07/05(火) 09:18:02.59ID:LGOaFQLh
「gem ffi_c」でググったら一番上に出てくるじゃねえかよ
ttp://github.com/ffi/ffi/issues/432
0504デフォルトの名無しさん2016/07/05(火) 09:20:02.52ID:j6ObOS3k
500です。
現在、RUBYライブラリのロードパスは以下のようになっています。
irb(main):006:0* puts $LOAD_PATH
C:/Ruby23/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib
C:/Ruby23/lib/ruby/site_ruby/2.3.0
C:/Ruby23/lib/ruby/site_ruby/2.3.0/i386-msvcrt
C:/Ruby23/lib/ruby/site_ruby
C:/Ruby23/lib/ruby/vendor_ruby/2.3.0
C:/Ruby23/lib/ruby/vendor_ruby/2.3.0/i386-msvcrt
C:/Ruby23/lib/ruby/vendor_ruby
C:/Ruby23/lib/ruby/2.3.0
C:/Ruby23/lib/ruby/2.3.0/i386-mingw32
=> nil
0505デフォルトの名無しさん2016/07/05(火) 09:47:55.30ID:j6ObOS3k
>>503
ありがとうございます。解決しました。
インストール手順がまずかったようです。
gem uninstall ffi
→-x86-mingw32を選択して削除。
ruby dk.rb init
ruby dk.rb install

上記の手順でやったら無事にSeleniumWebDriverが動作しました。
ありがとうございます!
0506uy ◆e6.oHu1j.o 2016/07/05(火) 18:35:12.75ID:1uRQlpDk
ffi_cは、パスが通ってないというより、
現段階では普通にインストールしただけだと、2.3用のファイルが無かったな

>require': cannot load such file -- ffi_c (LoadError)
このLoadErrorになっていた原因はここ↓
C:\Ruby\lib\ruby\gems\2.3.0\gems\ffi-1.9.10-x86-mingw32\lib\\
0507デフォルトの名無しさん2016/07/05(火) 23:15:15.87ID:ZQWdXgH1
今日1週間のブートキャンプ3日目、いつになったらみんなが話してる内容がわかるのかなぁ、、、初心者ですが、よろしくお願いいたします。(≧∇≦)
0508デフォルトの名無しさん2016/07/05(火) 23:25:54.80ID:94G9IfNv
Rubyの女神・女優の池澤あやかは、慶応大学のプログラム研究会に入ったり、

島根県のRuby合宿へ、行ったみたい
0509デフォルトの名無しさん2016/07/06(水) 00:29:15.16ID:ziud5nB+
RWBYは百合アニメって話だろ
男消えろ
0510uy ◆e6.oHu1j.o 2016/07/06(水) 19:01:28.90ID:4XXkMTdx
質問です
selenium-webdriverでIE起動する時にvisibleオプションの設定って出来ませんか?
ライブラリのソースコードを追ってみましたが、
もしかしたらIEDriverServer.exeの中でそういうのやってる可能性もあって
rubyのソースコード上でvisibleを設定している箇所が特定できませんでした
0511uy ◆e6.oHu1j.o 2016/07/08(金) 14:18:11.61ID:ReeCCMlZ
質問です
ある日付からの残り日数を求めたく引き算をしてみましたが
t = Time.new
a = Time.local(2016, 7, 9)
b = a - t

bに返ってくる値がFloatで、これをどう整形したら良いのか分かりません
スマートに書く方法はありますか?
0512デフォルトの名無しさん2016/07/08(金) 14:21:47.06ID:4qgBf6xV
b/(60*60*24)
0513デフォルトの名無しさん2016/07/08(金) 14:31:15.37ID:4qgBf6xV
ミス
(b/(60*60*24)).ceil
0514uy ◆e6.oHu1j.o 2016/07/08(金) 14:34:46.90ID:ReeCCMlZ
>>512
こうなりました

t = Time.new
a = Time.local(2016, 7, 9)
b = a - t
p b / (60*60*24)

# => 0.3943060819212963
0515uy ◆e6.oHu1j.o 2016/07/08(金) 14:36:27.94ID:ReeCCMlZ
>>513
t = Time.new
a = Time.local(2016, 7, 9)
b = a - t
p (b/(60*60*24)).ceil

# => 1
です
0516デフォルトの名無しさん2016/07/08(金) 14:41:36.56ID:4qgBf6xV
>>515
へ?? これで何か問題なの?
0517uy ◆e6.oHu1j.o 2016/07/08(金) 14:47:45.41ID:ReeCCMlZ
>>516
失礼しました問題ないです
条件反射で書き込んでしまいました

ありがとうございます
0518デフォルトの名無しさん2016/07/08(金) 15:38:17.55ID:wR56VJym
Time#strftime 使ったほうが良くない?
0519デフォルトの名無しさん2016/07/08(金) 16:06:49.18ID:k4oWZhGm
>511
これでいい気がする。
require 'date'
t = Date.today
a = Date.new(2016, 7, 9)
p b = (a - t).to_i
0520デフォルトの名無しさん2016/07/09(土) 07:29:20.44ID:OPT8/HRF
ruby2.3ってsqlite3に対応してないんですかね
ちなみに、環境はwin7です。
0521デフォルトの名無しさん2016/07/09(土) 09:29:37.94ID:70tfGxUK
>>520
gem あるぞ?
0522デフォルトの名無しさん2016/07/09(土) 20:12:52.56ID:pnlJS2Wt
gemを使ってgtk3をインストールしようとしたのですができませんでした
解決策をご教授願えませんか? 出力は以下の通りです
少々長いのでレス分けます

C:/Ruby21-x64/bin/ruby.exe extconf.rb
checking for --enable-debug-build option... no
checking for -Wall option to compiler... yes
checking for -Waggregate-return option to compiler... yes
checking for -Wcast-align option to compiler... yes
checking for -Wextra option to compiler... yes
checking for -Wformat=2 option to compiler... yes
checking for -Winit-self option to compiler... yes
checking for -Wlarger-than-65500 option to compiler... yes
checking for -Wmissing-declarations option to compiler... yes
checking for -Wmissing-format-attribute option to compiler... yes
checking for -Wmissing-include-dirs option to compiler... yes
checking for -Wmissing-noreturn option to compiler... yes
checking for -Wmissing-prototypes option to compiler... yes
checking for -Wnested-externs option to compiler... yes
checking for -Wold-style-definition option to compiler... yes
checking for -Wpacked option to compiler... yes
checking for -Wp,-D_FORTIFY_SOURCE=2 option to compiler... yes
checking for -Wpointer-arith option to compiler... yes
checking for -Wswitch-default option to compiler... yes
checking for -Wswitch-enum option to compiler... yes
checking for -Wundef option to compiler... yes
checking for -Wout-of-line-declaration option to compiler... no
checking for -Wunsafe-loop-optimizations option to compiler... yes
checking for -Wwrite-strings option to compiler... yes
checking for rb_define_alloc_func() in ruby.h... no
checking for rb_block_proc() in ruby.h... no
checking for new allocation framework... yes
0523デフォルトの名無しさん2016/07/09(土) 20:13:15.27ID:pnlJS2Wt
checking for attribute assignment... no
checking for cairo... yes
checking for rb_cairo.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby21-x64/bin/ruby
--enable-debug-build
--disable-debug-build
--with-pkg-config
--without-pkg-config
--with-override-variables
--without-override-variables

extconf failed, exit code 1
0524デフォルトの名無しさん2016/07/09(土) 21:17:36.39ID:70tfGxUK
>>522
http://stackoverflow.com/questions/31552590/error-when-try-to-install-ruby-gtk3-gem
これじゃね?
0525デフォルトの名無しさん2016/07/09(土) 21:41:42.30ID:pnlJS2Wt
>>524
ありがとうございます!
おかげさまでgtk3をインストールすることができました!

しかしgtk3を使ったテストプログラムを実行する段階で次のようなエラーが起こってしまいました
cannot load such file -- cairo.so (LoadError)
調べたのですがどうやら実際にcairo.soがないのではなく
なにか別の要因が作用してこのようなエラーを吐いているのだということは分かったのですが
具体的にどう対処すべきかということについての情報が見つからず困っています
お助けいただけると幸いです
0526デフォルトの名無しさん2016/07/09(土) 21:45:25.80ID:LUkvWe2U
まずはcairo.soがどこにあるのか調べよう
0527デフォルトの名無しさん2016/07/09(土) 21:51:34.71ID:pnlJS2Wt
>>526
c:Ruby21-x64\lib\ruby\gems\2.1.0\gems\cario-1.15.2~~\lib内の
2.2フォルダと2.3フォルダ内にありました!
これをどうすればいいのですか?
0528デフォルトの名無しさん2016/07/10(日) 01:01:33.24ID:FaCg4BOi
>>527です
自己解決しました
ありがとうございました
0529デフォルトの名無しさん2016/07/10(日) 22:28:19.60ID:7ZpGAM9O
自己解決したときでも後進のために何をやったか書くのが礼儀だチンカス
クレクレだけでなく
0530デフォルトの名無しさん2016/07/12(火) 19:22:25.10ID:gIrYEA97
>>529
あまりにもあれなので書く必要もないかと思いまして……
>>527に書いてある通り使っていたRubyのバージョンが2.1で
gtk3の現在のバージョンが対応しているのは2.2と2.3だったのです

というところでもう一つ質問させてください
gtk3を使ってサンプルプログラムの写経をしているのですが
その中でkey, mod = Gtk::Accelerate.parse "N"という行がありました
しかし実行してみるとGtkクラスには定数Acceleratorはありませんという旨のエラーが出てしまいます
仕様が変わったのかもしれないのですが調べても出てきません
どなたかご存知の方がいたら教えていただけませんでしょうか?
0531デフォルトの名無しさん2016/07/12(火) 20:10:31.38ID:Eu9k9lZN
Ruby 2.1でデバイスファイルを開いた時にサイズなどの情報を取得することは出来ないのでしょうか?
seek(0, IO::SEEK_END)、size、statは全て通りません
>type test.rb
open("\\\\.\\PHYSICALDRIVE0", "rb"){|f|
f.seek(0, IO::SEEK_END)
p f.stat
p f.size
p f.pos
}
>ruby test.rb
test.rb:2:in `seek': Invalid argument @ rb_io_seek - \\.\PHYSICALDRIVE0 (Errno::EINVAL)
from test.rb:2:in `block in <main>'
from test.rb:1:in `open'
from test.rb:1:in `<main>'
プラットフォーム固有の手段(WindowsならWMI、PC UNIXならlsblkなど)を使えば取得できますが
出来ればそれは避けたいので・・・
0532デフォルトの名無しさん2016/07/12(火) 23:16:54.90ID:O9LM8Fab
>>531
Rubyに限定されない一般論として:

 デバイスファイル(物理ドライブ)から取得できるサイズとして、
 いったいぜんたい何を期待しているの?
 ディスク容量?パーティション容量?利用容量?空き容量?

 デバイスファイルをシークして、いったいぜんたい何をしたいの?
 UNIXファイスシステムでセクタ単位にアクセスしたいのなら、
 特殊なRAW(生)デバイスをオープンするけど、それはUNIX固有の手段になる

なんだか無邪気な子供が無い物ねだりしているようにしか聞こえないね
あなたは最終的に何をしたいの?
0533デフォルトの名無しさん2016/07/13(水) 00:06:53.28ID:iqeWAEZd
いけあやちゃんのDVD借りてきたよ
昔は水着DVDとか売ってたんだなぁ
0534デフォルトの名無しさん2016/07/13(水) 00:11:36.68ID:vjGvgzcz
そもそも、デバイスファイルって、Unix系だけだろ?
Windowsでは使えないのでは?

そもそも、そんな特殊ファイルに、Rubyが対応しているのかな?

とにかく、seek の引数が間違っているから、正しくすれば?

>>530
>Gtk::Accelerate.parse "N"
>Gtkクラスには定数Acceleratorはありません

Accelerate, Accelerator はつづりが異なる。
そもそも、定数.parse(定数.メソッド) という表記は可能なのか?
05355312016/07/13(水) 21:08:36.13ID:9IGkZ4N6
Windowsでディスクをダイレクトに開くコードを貼ったのに、調べも試しもせずに思い込みだけでWindowsでは
デバイスファイルが使えないと返されても自分はなんて答えればいいのだろう
Windowsのデバイスファイルの取り扱いについてゼロから解説しないと話がかみ合わないとかどうすればいいの
ggrksって書かなきゃダメなの?
seekの引数もリファレンスマニュアルからコピペして数字を変えただけなのにそれを間違っていると言われても
どう直せば良いんだ
0536デフォルトの名無しさん2016/07/13(水) 21:41:01.10ID:O2/Udv7T
>>535
> Windowsのデバイスファイルの取り扱いについてゼロから解説しないと話がかみ合わないとかどうすればいいの
だってWIndowsにはデバイスファイル(と一般に呼ばれるもの)はないんだもの
しょうがないじゃん
0537デフォルトの名無しさん2016/07/13(水) 22:04:05.33ID:7QL1TPM6
そのコードをどんなプラットフォームで動かそうとしてるんだ?
プラットフォームに依存せずにとか考えてる?
Windowsでは動かんし、Linuxなら別の理由でそっちも動かんぞ
0538デフォルトの名無しさん2016/07/13(水) 22:20:27.32ID:zSyoSNoY
スルーでよくね?
0539デフォルトの名無しさん2016/07/13(水) 22:49:33.67ID:zLt10+AI
いやよくない
05405312016/07/14(木) 00:32:41.64ID:VP5bmt0B
Windows上からストレージのLBA:0を読み最後の2ByteをHexで表示する例
ttp://uploader.purinka.work/src/0068.png ←MBRのシグネチャである0x55 0xAAが表示されている
少なくともread、write、seek(n, IO::SEEK_SET)は機能して開いたストレージの任意のセクタを読み書き出来た

>>537
今のところWindowsとLinuxやFreeBSDあたりで動かしたいです
Linuxだと↑の"\\\\.\\PHYSICALDRIVE0"を"/dev/sdc1"とかにしても動かないのかな?
0541デフォルトの名無しさん2016/07/14(木) 03:02:03.84ID:tcxRZQBL
なんかおかしいなと思ったら元スレの方に反映されていなかったので、もう一度書きます

ruby1.9.3p551
centos6.7(x86)
GNOME 端末 2.31.3

test.rb------------
STDOUT.sync = true
STDIN.each_line do |line|
p line
end
------------------
上のコードで、文字列入力中に全角文字入れると
バックスペースキーで文字削除したとき半角分しか削除されない
これって環境依存によっておこる問題?それとも仕様?
解決方法じゃなくてどういう仕組みで起こってるのか知りたい
0542デフォルトの名無しさん2016/07/14(木) 05:13:27.03ID:5Jg64+hU
>>540
ソースコードをコピーして実行できないから、画像を使わないで。
paiza.IO, codepad などを使えば、ログイン無しでも書き込める。
そりゃ、実行すればエラーになるけど、ひとまず書き込める

デバイスファイルって、Linuxの特殊ファイルのことかと思っていた。
物理ディスクに、直接アクセスしたいのか

Errno::EINVAL
不正な引数。関数の引数のいずれかに無効な値が指定されています。
たとえば、fseek 呼び出しでファイル ポインターを移動するとき、
指定した元の位置が、ファイルの先頭より前にある場合です。

>>541
全角の多くは、3byteだけど、バックスペースで、1byteしか戻らないのか。
普通のエディタなら、バックスペースで1byteじゃなく、全角1文字分戻る。
その端末が、日本語に対応していないのだろう

コマンドプロンプト・端末などは、大昔に外人が作ったものだから、
日本語には対応していない。
一方、エディタは対応しているものが多い
0543デフォルトの名無しさん2016/07/14(木) 05:33:08.45ID:5Jg64+hU
>>540
IO::SEEK_SET: ファイルの先頭から (デフォルト)
IO::SEEK_CUR: 現在のファイルポインタから
IO::SEEK_END: ファイルの末尾から

たぶん、SEEK_ENDがダメなんだろう
0544デフォルトの名無しさん2016/07/14(木) 05:53:08.52ID:tcxRZQBL
ターミナルの設定はこんな感じです

[centos@localhost Reudy19]$ stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
0545デフォルトの名無しさん2016/07/14(木) 06:23:56.25ID:5Jg64+hU
端末は、単なるアプリだから、日本語に対応させるかどうかは、アプリの作者次第

日本語が使える、エディタとは違う。
英語でコマンドを書く、アプリ

作者も外人だから、日本語のことは知らない
0546デフォルトの名無しさん2016/07/14(木) 06:52:30.33ID:5Jg64+hU
文字コードを、UTF-8 に設定できないの?
0547デフォルトの名無しさん2016/07/14(木) 07:10:22.27ID:xuDKBge/
全員ハズレ
居残り学習な

>>541
普通にターミナル上で日本語入力したときにBackSpace押してもきちんと全角1文字消えるのに
STDINを直接開いたときにはBackSpaceで半角1文字しか戻らないのはなんでか
bash$ cat
にゃんこ■ ← BS1回
にゃんニ■
日本語環境ではシェル、普通はbash、が「日本語だと思われる文字があったら1文字ぶんだと思われるバイト数だけ戻る」というように特別に数えて処理してるからだ
ncursesとか介してないプレーンな環境では半角1文字戻るのが「素直な正しい」挙動
だからコマンドラインスクリプトで端末から直接日本語を入力してもらう可能性がある場合はRubyならcursesライブラリを使うと親切
これならbash上や他のターミナルアプリで日本語入力したときと同様にきちんと全角1文字ぶん消える
0548デフォルトの名無しさん2016/07/14(木) 20:43:36.00ID:tcxRZQBL
Readlineつかって入力してみた結果、backspace1回でしっかり全角文字一文字消せました
てっきり環境設定のLANGをja-JP.UTF-8にする他に、ロケール関連の設定でなんとかなるものだと思ってました
なるほど、そういう事だったのか
ありがとうございます

それと、readlineで意図的に\n等のエスケープシーケンス文字を入力すると、\\nのようにエスケープされます
入力終えた文字列をgsub使ってちまちま置換する以外に、dequoteとかunescapeとかそんな感じのいい手はありませんか?
0549デフォルトの名無しさん2016/07/15(金) 07:48:04.68ID:0wyvmUyV
各OSで使えるmruby用の基本的なI/Oのライブラリとか無いんか?
Lua的に使いたいけど素のままではファイルの読み書きすら出来ない
0550デフォルトの名無しさん2016/07/17(日) 11:51:33.23ID:5n5jkqHt
各OSそれぞれにCで書いた低級IO操作用バッチファイル用意してrubyのバッククォート文で呼び出して扱うとか
OSの差異をバッチファイルで吸収すれば良いからなんとかなると思う
思いつくのはこんぐらい
0551デフォルトの名無しさん2016/07/17(日) 12:14:33.52ID:EX8s0wCA
>>550
わざわざシェルを介する意味が無いだろ
それなら普通にCでAPI書けばいい
0552デフォルトの名無しさん2016/07/17(日) 16:00:16.75ID:tztufySG
>>549
mruby-ioで取り敢えずファイル操作出来るけど、
低レベルは殆ど無いな。
mrbgemを自分で作るのが基本スタンスだし
0553デフォルトの名無しさん2016/07/17(日) 16:04:26.02ID:tztufySG
そもそもmrubyはOSもない環境でも動かせるように
色々外してあるから標準Rubyと同じ様に考えちゃ駄目
05545492016/07/18(月) 01:50:25.67ID:IKQ2dxNQ
タイミングが良いんだか悪いんだか判らんけどレスthx
mruby-ioを見つけて試すも大きなファイルを操作できない
Fixnumの壁が原因とわかりCコードとにらめっこすること数日
sysseekをFloatも受け付けるように改造してようやく目的を達成
Bignumが無い影響がもろに出てしまっていますな
0555デフォルトの名無しさん2016/07/20(水) 03:31:47.01ID:GlTBqNkC
Ruby1.9以降は、rubyコードをJITコンパイルで変換してから実行してるんだよね?
Rubyのソースコード読んでるんだけど、Ruby1.8までならWebにころがってる情報で構造をなんとなくレベルまで理解できる
でもRuby1.9からはさっぱり理解不能で、何処がVMの部分なのかさえ読めない

どこかにRuby1.9以降のソースを解説しているサイトない?
なければソース全部じゃなくて、おおまかに構造を解説しているサイトでも構わない
0556デフォルトの名無しさん2016/07/20(水) 11:13:49.96ID:WyhLRx8l
ruby/doc/extension.ja.rdoc じゃダメなん?

Appendix A. Rubyのソースコードの分類
https://github.com/ruby/ruby/blob/trunk/doc/extension.ja.rdoc#appendix-a-ruby%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E5%88%86%E9%A1%9E
0557デフォルトの名無しさん2016/07/20(水) 18:43:26.64ID:KOGDxcQR
>>555
>Ruby1.9以降は、rubyコードをJITコンパイルで変換してから実行してるんだよね?

どこのソースから、そんな嘘情報を仕入れてきたの?
1.8迄はAST(抽象構文木)を直接的に評価していたのが、
1.9以降ではVM(正確にはYARV)へコンパイルするよう改善されただけの話だよ
いわゆるJavaScriptのV8エンジンみたいな本格的なJIT(Just In Time)コンパイル技術は、
今のところRubyには導入されちゃいない

>Rubyのソースコード読んでるんだけど、Ruby1.8までならWebにころがってる情報で構造をなんとなくレベルまで理解できる

1.8までならWeb公開されてるRHGが(言語処理系に興味がある人にとっては)バイブルだったね
  http://i.loveruby.net/ja/rhg/book/
1.9以降なら、以下の書籍が必読本になった(RubyのVMであるYARVの解説書でもある)
  Rubyのしくみ -Ruby Under a Microscope-
  https://www.amazon.co.jp/dp/4274050653/

Ruby処理系高速化の未来に関しては、"HPC(Hight Performance Computing) Ruby"が鍵になると予測する
・HPC Ruby Compiler(プレゼン)
 https://www.cps-jp.org/~mosir/pub/2012/2012-03-05/03_nakamura/pub-web/HPC_Ruby_Compiler.pdf
・HPC Ruby: 静的解析に基づく Ruby の高度最適化コンパイラ
 http://ci.nii.ac.jp/naid/110008583419 
 
さらに、その基礎となる "Soft Typing"(動的型付け言語における型推論) をキーワードで調べるのがいいと思う
もし英語が読めるなら、たとえば以下の論文を:
・SOFT TYPING 1991
 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.24.9333&;rep=rep1&type=pdf
・A Scheme-to-Java Translator with Soft Typing 2002
 www.kb.ecei.tohoku.ac.jp/~sumii/pub/scm2java.ps.gz
 
  
0558デフォルトの名無しさん2016/07/21(木) 03:34:57.24ID:jgTQj/gW
JITを使うのは、JavaVMを使う、JRubyだろ。
10万回以上ループすると、もう一段階、最適化する

500万回(0.5秒)以上では、CRuby(MRI)よりも速くなる

「Rubyのしくみ」2014、に書いてある。
コンパイラ・インタープリターを作るなら、読んだ方がいい
0559デフォルトの名無しさん2016/07/21(木) 04:24:33.02ID:WJGproPC
YARVちょっとググってみたけど、
バイトコードインタプリタって書かれとる
逐次変換して処理してるわけか

1.9以降はバイトコードに変換して処理してるって聞いてたから
てっきりJIT技術使ってるんだと思ってた
さんくす
0560デフォルトの名無しさん2016/07/21(木) 19:25:21.64ID:9nmG0K7V
実行時に変換してるんだからJITでOK
0561デフォルトの名無しさん2016/07/21(木) 22:00:48.00ID:MOZT2+1A
RangeってRubyの組み込みクラスにしては貧弱というか
ある数値が範囲より大きいか小さいかカバーされてるかを調べるUFO演算子とか
2つのRangeオブジェクトが被ってる部分があるかどうかを判定する機能とか
あれば便利な気がするんだがなぁ
0562デフォルトの名無しさん2016/07/22(金) 05:24:42.73ID:8LVOaO/m
Range#===, Range#include?, Range#member?, Range#cover?
Enumerable#grep
じゃダメなの?
0563デフォルトの名無しさん2016/07/22(金) 07:27:36.63ID:y4ZiHYE1
前者についてはそれじゃ機能が足りないんだ
範囲内最小の値よりなお小さいか
最大の値よりなお大きいかまで判定してほしい

後者については機能的にはそれでいいんだけど
Rangeのサイズが1000万までありうるので速度的に(´・ω・`)

自分で実装してみると
class Range
def <=> obj
(((min <=> obj) + (max <=> obj)) / 2.0).truncate
end
def & other
[min, other.min].max..[max,other.max].min
end
end
0564デフォルトの名無しさん2016/07/22(金) 07:39:58.12ID:y4ZiHYE1
セルフツッコミしとくと
前者はobjが<=>演算子非対応でnil返した場合を考慮してない
後者はotherがRange以外の場合を考慮してない上に範囲外の場合変なRangeを返すので気持ち悪い
0565デフォルトの名無しさん2016/07/22(金) 07:53:03.72ID:ot11jjQx
UnityのMathf.Clampみたいに、

Clamp(value, min, max)
最大値と最小値の間で、収めるような関数もあればいいね

10 = Clamp(20, 1, 10)
0566デフォルトの名無しさん2016/07/22(金) 07:55:55.89ID:8LVOaO/m
どうせIntegerなんだから
(min <=> obj) + (max <=> obj) >> 1
でよくね?
あと
(1..2) & (3..4) # => (3..2)
だから
(3..2).max # => nil
になって気持ち悪い
0567デフォルトの名無しさん2016/07/22(金) 07:58:36.16ID:8LVOaO/m
ごめん、リロってなかったorz
0568デフォルトの名無しさん2016/07/22(金) 08:06:48.82ID:y4ZiHYE1
>>566
Rubyでは負数の除算がアレなんだ
-1 >> 1 = -1
0569デフォルトの名無しさん2016/07/22(金) 08:19:38.53ID:8LVOaO/m
-1 >> 1 = -1
って普通じゃないの?
rangeのfirstもlastもIntegerならこれでいいか
class Range
def &(other)
[first, other.first].max..[exclude_end? ? last - 1 : last, other.exclude_end? ? other.last - 1: other.last].min
end
end
0570デフォルトの名無しさん2016/07/22(金) 08:39:44.79ID:DR9XI0EI
>>563
<=> はそういうものじゃない。お前さんの言うような機能はあっても良いが、それが <=> と名付けられることは未来永劫ない。
0571デフォルトの名無しさん2016/07/22(金) 08:49:54.31ID:cUWclNnj
Array#<=>なんてものもあるし未来永劫無いとは言い切れなくもなくない
0572デフォルトの名無しさん2016/07/22(金) 21:13:35.89ID:DR9XI0EI
>>571
Range#<=> が追加されないなんて一言も言ってないよ。
>>563 の期待するものにはならないってだけ。
0573デフォルトの名無しさん2016/07/22(金) 21:16:28.21ID:cUWclNnj
>>572
ああ、本当だ。早とちりすまん
0574デフォルトの名無しさん2016/07/23(土) 23:49:44.32ID:l6bIVOK+
ruby初心者です。
変数の中に入った文字列の置換ができません。
例えばhtmlという変数の中に入った(http://○○-1.jpg)の中の-1を無くしたい場合
subかgsubを使うかと思います。
試しにp html.gsub(/-1.jpg/,
0575デフォルトの名無しさん2016/07/23(土) 23:52:24.68ID:l6bIVOK+
ruby初心者です。
途中で書き込みが消えてしましました(汗)
変数の中に入った置換の方法を教えていただけますでしょうか。
よろしくお願いします。
0576デフォルトの名無しさん2016/07/23(土) 23:55:26.99ID:3089LaeD
>>574-575
html.gsub!(
か
html = html.gsub(
0577デフォルトの名無しさん2016/07/24(日) 00:37:14.40ID:9mJaMPLw
>>574
確認画面が出たとき、ダブルクォーテーションがあると、文が切れる。
2chのバグだろう。たぶん、エスケープしていない

str = 'ttp://abc/xxx-1.jpg'
str = str.gsub(/-1.jpg/, '.jpg')

puts str

結果、ttp://abc/xxx.jpg

正規表現の先読みを使っても、できる
0578デフォルトの名無しさん2016/07/24(日) 00:56:13.49ID:VgaTJS92
>>576>>577
ご丁寧にありがとうございます。
今やってる作業がanemoneで拾ってきたhref要素を変数に入れてその一部-1を置換しようとしています。
教えていただいた通り、
str= node.css('a').attribute('href').value
str = str.gsub(/-1.jpg/, '.jpg')
puts str
と書き換えたのですが-1は消えませんでしたので、何か別の原因で引っかかってるみたいです。
0579デフォルトの名無しさん2016/07/24(日) 07:06:47.90ID:uCHUDa0e
細かい事だが /-1\.jpg$/ の方が変な誤爆しないですむ

実は-1じゃなくて-l(小文字のL largeサイズ指定)だったというオチが思い浮かんだが…
0580デフォルトの名無しさん2016/07/24(日) 07:36:38.76ID:ix/R/9ty
gsub(/http:\/\/○○\K-1(?=\.jpg)/, '')
0581デフォルトの名無しさん2016/07/24(日) 11:12:26.70ID:wdZTIji9
>>577
切れ"ない"よ
ブラウザのバグだろ
0582デフォルトの名無しさん2016/07/24(日) 14:16:46.18ID:VgaTJS92
574です。
置換する変数を間違っていただけのうっかりミスでした・・・orz
sub,gsubを使って上記の教えていただいた方法で変数の中身を無事置換できました。
ありがとうございますm(_ _)m
0583デフォルトの名無しさん2016/07/26(火) 21:17:51.50ID:uTRCF1br
>>440
> 個人的にはアスタリスク2回でハッシュを受け取る

> とかの方がよっぽど見かけたことないです。
> どなたか使ったことある方いらっしゃいますか?

カメだけど、超使う。
キーワード引数と組み合わせたり。
0584デフォルトの名無しさん2016/07/27(水) 15:07:46.63ID:nl1cCFz0
pythonだとさらによく使う
0585デフォルトの名無しさん2016/07/29(金) 08:11:29.53ID:1qYsbBpR
gtk3 でGUIを作ろうとしてるんだけど
stdinを監視したい

普通ならSTDIN.each_lineとかでSTDINを監視したら良いと思うけど
gtk3とか使うとイベントループさせないといけなくなるので
イベントループするメインルーチンでこれやりたいんだけど
やり方わかんない

標準入力を監視しながらのプログラムの場合どうやってる?
別スレッドにするのが普通なのかね?
0586デフォルトの名無しさん2016/07/29(金) 09:19:20.82ID:AO+a9SAV
>>585
・GUI の main loop で fd を監視
 http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=GUI+%A4%CE+main+loop+%A4%C7+fd+%A4%F2%B4%C6%BB%EB

・Gdk::Input - Ruby-GNOME2 Project Website
 https://ruby-gnome2.osdn.jp/hiki.cgi?Gdk%3A%3AInput

・stdinから一行ずつ読んでそれっぽく表示 on ruby-gnome2
 http://shyouhei.tumblr.com/post/119202369/stdinから一行ずつ読んでそれっぽく表示-on-ruby-gnome2
0587デフォルトの名無しさん2016/07/29(金) 09:45:02.59ID:1qYsbBpR
>>586
ありがとう!!!
gtk2ではその方法で上手くいきました
gtk3を使おうとするとGdk.InputのかわりにGLib::IOChannelを使うようにメッセージがでて
Gdk::Input::READのところでエラーになるんだけど
ちょっと検索かけただけじゃやり方わかりませんでした

御存じなら教えてください
よろしくお願い致します
0588デフォルトの名無しさん2016/07/29(金) 10:54:00.67ID:AO+a9SAV
>>587
GTK3は触っていなかったんだけど、GDKより低レイヤーなGLibで
外部イベントを扱うように変わったのですかね

・GLib::IOChannel - Ruby-GNOME2 Project Website
 https://ruby-gnome2.osdn.jp/hiki.cgi?GLib%3A%3AIOChannel

・ruby-gnome2/iochannel.rb at master · taf2/ruby-gnome2 · GitHub
 https://github.com/taf2/ruby-gnome2/blob/master/glib/sample/iochannel.rb

GTK2はGTK3へ更新されましたが、Glib2は(Glib3へ更新されず)そのままGTK3で使われているので、
そのまま動くのではないかと思われます(手元ではGTK3をインストしてないので動作未確認)
0589デフォルトの名無しさん2016/07/29(金) 10:58:51.55ID:1qYsbBpR
>>588
ありがとう助かったよ
検索上手いね!!
0590デフォルトの名無しさん2016/07/29(金) 15:09:47.59ID:DEZEXrtC
配列の中から偶数の要素だけ配列の中に残したいです。テキストにはselect!を使うとあるのですが、まだ、Rubyを勉強して日が浅いので、今までに勉強したやり方で
表記することにしました。自分の考えとしては、配列の要素のvalueを2で割った剰余が0であるもののみ、配列の中に入れなおすという方法しか思いつきませんでした。
そこで以下のプログラムにしてみたのですが、うまく動きません。どこがおかしいのか指摘していただけるでしょうか。よろしくお願いします。

nums = {a: 1, b: 2, c: 3, d: 4, e: 5}

nums.each do |key, value|

  if value%2 == 0

    nums[:key] = value

  end

p nums
0591デフォルトの名無しさん2016/07/29(金) 15:11:49.29ID:DEZEXrtC
配列じゃなくてハッシュでした
0592デフォルトの名無しさん2016/07/29(金) 15:28:57.91ID:1qYsbBpR
先程Gtk::Inputを使った方で
windowの生成も行なうと
上手く期待の動作しなかった

GLib::IOChannelを使ってSTDINをオープンしてadd_watchをそれに使うと
期待の動作になりました
ありがとう
まだGUIの方は作れてないけど作れそうな感じ
0593デフォルトの名無しさん2016/07/29(金) 15:35:49.37ID:flV7hOuN
>>590
これだと偶数の要素だった場合、その要素を再代入してることになる
新しく別の配列に代入するとかならその書き方で問題ないと思うよ
ちなみに nums.select! { |k, v| v % 2 == 0 } が一番良さそう
0594デフォルトの名無しさん2016/07/29(金) 16:15:45.30ID:WGKZmyFx
もっと別な書き方も紹介して混乱させよう
nums.each_with_object({}){|(k,v),o| o[k] = v if v.even?}
0595デフォルトの名無しさん2016/07/29(金) 16:55:05.51ID:Ogz/SEhr
特に面白いものは書けず
nums.reject{|_,v|v.odd?}
nums.grep(proc{|_,v|v&1==0}).to_h
nums.each{|k,v|v.odd?&&nums.delete(k)}
0596デフォルトの名無しさん2016/07/29(金) 17:11:04.04ID:1UayH1GQ
>>595の1つ目が今回に限っては一番妥当
「numsからodd?なものを取り除く」と読み下そう
思いつかなかった>>593-594もぜひ覚えて帰ってね!
0597デフォルトの名無しさん2016/07/29(金) 19:32:20.85ID:jkc14IDK
nums.each do |key, value|
  if value%2 == 0
    nums[:key] = value
  end

まずこれはeach doに対してendが無いからエラーになる
そして:keyはkeyではなく:keyというSymbolなのでこれも間違い
nums = {:a=>1, :b=>2, :c=>3, :d=>4, :e=>5, :key=>1}
nums[:b] = 2
p nums #=> {:a=>1, :b=>2, :c=>3, :d=>4, :e=>5, :key=>1}
飽くまで:bに対して2を再び関連付けているだけなので間違い
どうしても上のような書き方がしたいなら

h = Hash.new
nums.each do |key, value|
  if value%2 == 0
    h[key] = value
  end
end

p h #=> {:b=>2, :d=>4} 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0598デフォルトの名無しさん2016/07/29(金) 20:01:51.49ID:mtfgcrou
>>597
やはりあなたはリンクしすぎです
ばいばいおさるさん
0599デフォルトの名無しさん2016/07/29(金) 23:54:22.01ID:AO+a9SAV
某テキスト(?)のメソッド Enumerable#select! を使うなら、
>>593 と >>595 の先頭を参考にして;

 nums.select! { |_, val| val.even? }

 https://ideone.com/Z84zqk


もしも同メソッドを使用せずに自前で各要素を列挙するなら:

 nums.each do |key, val|
   nums.delete key unless val.even?
 end

 https://ideone.com/UqpHHq


なお >>597 のように、元の変数 nums の値を(破壊的代入)で更新せず、
結果としての値を求めることを優先するというお題の改変が許されるなら:

 nums.select { |_, val| val.even? }

 https://ideone.com/JlEy6w

このコードを推奨する
0600デフォルトの名無しさん2016/07/30(土) 12:15:20.35ID:Fe6CTZY3
みなさんありがとうございます。細かい説明が助かります。自分は本当に基本的なことからわかっていなくてどこがわからないのかわからない、という
ていたらくでして。たぶん、いやきっと、593さんのようにメソッドをそれぞれ覚えていけばいいのでしょうが、もう結構記憶容量がパンパンで、とりあえず
知っているメソッドで何とかしようと思いました。しかし、みなさんすごいですね。?皆さん全員プロのプログラマなのですか?

もうちょっと勉強してみたいと思います。ありがとうございました。説明がわかりやすかったです。
0601デフォルトの名無しさん2016/07/30(土) 12:49:12.22ID:UN9LAiBT
よく使うメソッドなんて大した数ないから覚えるかその都度マニュアル読めばいいんじゃね
http://docs.ruby-lang.org/ja/2.3.0/class/Hash.html
まあメソッド覚える前に代入とか制御構造とかもっと基礎的なことを最低限理解してからにしろよとは思うが
0602デフォルトの名無しさん2016/08/02(火) 10:24:25.49ID:7rZajpxG
エクセルの列の文字列(AとかZZZとか)が何番目の列なのか計算するにはどうしたら良いでしょうか?
0603デフォルトの名無しさん2016/08/02(火) 10:34:33.19ID:R1uEEgNe
もっとうまい方法があるかもしれんが
# n番目の列
(n+2+624*26**log(25*n/26+1,26).to_i/25).to_s(26).tr('0-9a-p','A-Z')[1..-1]
# 列sの数
s.tr('A-Z','0-9a-p').to_i(26)+(26**s.length-26)/25
0604デフォルトの名無しさん2016/08/02(火) 19:33:06.09ID:G8b1Dkiv
Rubyに最近興味を持った者です
DXRubyを使用しており、Rubyのバージョンは2.0 32bit
OSはwindows7 64bitです

カレントディレクトリにあるフォルダを開き、中にあるtxt形式のファイルを取得し
その一行目に書かれていたことにたいしてifを使うにはどうすればいいでしょうか?
0605デフォルトの名無しさん2016/08/02(火) 19:49:44.99ID:GrXRtLCP
>>604
いっぺんに全部やろうとするからわからなくなる
↓のように問題を分割して、ひとつずつ調べていけばいいよ

・カレントディレクトリにあるフォルダを開き
・中にあるtxt形式のファイルを取得し
・その一行目に書かれていたこと
・にたいしてifを使う
0606デフォルトの名無しさん2016/08/02(火) 20:07:22.42ID:R1uEEgNe
str = open("フォルダ名/ファイル名.txt").readline # txtファイルの一行目

if (strの条件式)
 # やりたいこと
end
0607デフォルトの名無しさん2016/08/02(火) 21:15:40.05ID:G8b1Dkiv
>>606
では、二行目を単体で読み込む方法はどうするんでしょうか?

あと一行目と二行目を両方読み込む場合はどうするんでしょうか?
0608デフォルトの名無しさん2016/08/02(火) 21:20:03.60ID:bMxB9+Te
>>604
カレントディレクトリ中にある全てのtxt形式のファイルを開く場合
Dir.glob('./*.txt') do |fn|
File.open(fn, 'r:utf-8') do |f|
line = f.readline
if /条件/ =~ line
end
end
end
0609デフォルトの名無しさん2016/08/02(火) 22:04:55.90ID:R1uEEgNe
>>607
foo = open("フォルダ名/ファイル名.txt").
line1 = foo.readline # 一行目
line2 = foo.readline # 二行目

大した量じゃないんだからマニュアルを読もう
http://docs.ruby-lang.org/ja/2.3.0/class/IO.html
0610デフォルトの名無しさん2016/08/03(水) 00:10:59.84ID:qya5GR80
vipでプログラムの話題で盛り上がってるぞ
http://vipper.2ch.net/test/read.cgi/news4vip/1470062380/

これはrubyのステマするチャンス
0611デフォルトの名無しさん2016/08/03(水) 00:39:14.55ID:3mARGs2B
>>602
効率は良くないけど、EXCELで使う程度の数かつ、何十万回も計算を繰り返したりしないなら。

s=“A”; 0.upto(n){s.succ!}; p s

s=“ZZ”; p (“A”..s).to_s.size
0612デフォルトの名無しさん2016/08/03(水) 02:00:46.62ID:W0lh95XI
>>602
inject厨が書いてみた:
 https://ideone.com/PSRQnw
0613デフォルトの名無しさん2016/08/03(水) 13:48:51.38ID:zdWIlhYU
>>602
rubyだと“Z”.nextで”AA”になるから、”A”をスタートとして”ZZZ”までnextをループさせた回数=列の番号になるよ
0614デフォルトの名無しさん2016/08/03(水) 15:07:33.08ID:mbys/AN5
A -> 1
Z -> 26
の 26進数なんだよ
だから
ZZZ -> 26*26*25 + 26*25 + 25 + 1
と瞬時に判る
0615デフォルトの名無しさん2016/08/03(水) 15:10:29.88ID:mbys/AN5
ごめん間違った
桁の0に相当するものがないから
実際の値は違う
もうちょっと工夫が要るけど
考え方は 26進数
0616デフォルトの名無しさん2016/08/03(水) 15:17:25.06ID:B5cRJMaS
sを列の文字列とする
A-Zを A=0, Z=25 の26進数とみなして
s + B..B(Bがsの桁数個) - B が列の番号
だから>>603の下の式のようになる

これの逆変換が求めるものだけど素直にやると桁の左にあるAがなくなってしまうので
一旦 BA..A(Aはsの桁数個)を足しておいて最後にBを削れば良い
それが>>603の上の式
0617デフォルトの名無しさん2016/08/03(水) 15:26:35.51ID:mbys/AN5
logを使うのは筋が悪い希ガス
0618デフォルトの名無しさん2016/08/03(水) 15:31:21.63ID:B5cRJMaS
じゃあFixnum#bit_lengthでも使おう
0619デフォルトの名無しさん2016/08/03(水) 15:43:49.69ID:B5cRJMaS
つまりこういうことね
(n + 2 + 24*26**((25*n + 26).bit_length/4.7).to_i/25).to_s(26).tr('0-9a-p', 'A-Z')[1..-1]
0620デフォルトの名無しさん2016/08/03(水) 15:51:40.29ID:kO+977FM
xl = WIN32OLE.new('Excel.Application')
bk = xl.Workbooks.Add
ws = bk.Worksheets(1)
ws.Cells(1,1).Formula='=column($ZZZ$1)'
puts ws.Cells(1,1).Value
bk.Close
xl.Quit
0621デフォルトの名無しさん2016/08/03(水) 16:03:32.72ID:W0lh95XI
>>612を一般的な手続き型プログラミングへ書き直してみた:
 https://ideone.com/gO9N9x

これならPerlやPythonのような普通の手続き型言語を知っていれば
容易く読めるし、普通のプログラマが引き継いでも問題無く
保守できるのではないかと思われ
0622デフォルトの名無しさん2016/08/03(水) 16:46:12.54ID:/NIG+3Tl
n.to_s(26).tr('0-9a-p','@A-Y').sub(/(.)@/){$1.tr('A-Z','@-Y')+'Z'}.sub('@','')

もうちょい短くできそうでできない
0623デフォルトの名無しさん2016/08/03(水) 16:53:46.46ID:/NIG+3Tl
n.to_s(26).tr('0-9a-p','@A-Y').sub(/(.)@/){$1.tr('A-Z','@-Y')+'Z'}.sub('@','')

もうちょい短くできそうでできない
0624デフォルトの名無しさん2016/08/03(水) 16:56:15.69ID:/NIG+3Tl
連投すまんこ
あと'@A-Y'じゃなくて'@-Y'やな。動くけど
0625デフォルトの名無しさん2016/08/03(水) 17:02:40.83ID:B5cRJMaS
まだ行けるのかな
n.to_s(26).tr('0-9a-p',r='@-Y').sub(/(.)@/){$1.tr('A-Z',r)+'Z'}.delete('@') # 75 B
(n+2+24*26**Math.log(25*n+26,26).to_i/25).to_s(26).tr('0-9a-p','A-Z')[1..-1] # 77 B
0626デフォルトの名無しさん2016/08/03(水) 17:17:54.18ID:/NIG+3Tl
ごめんn=26*26とかの時におかしくなるわ
0627デフォルトの名無しさん2016/08/03(水) 18:04:32.66ID:/NIG+3Tl
p n.to_s(26).tr('0-9a-p',r='@-Y').tap{|s|s.chars{s.sub!(/(.)@/){$1.tr('A-Z',r)+'Z'}}}.delete('@')
#97B

rubyらしさを捨ててtap使わなければ4B減る
0628デフォルトの名無しさん2016/08/03(水) 18:06:33.96ID:mbys/AN5
logなんて使うから可笑しくなる
0629デフォルトの名無しさん2016/08/03(水) 18:09:55.37ID:B5cRJMaS
>>628
Math.logを使うのはいつでも正しいよ
>>626が言ってるのは>>623のこと
bit_lengthを使う方も10**20000くらいまでは正しい
0630デフォルトの名無しさん2016/08/03(水) 18:17:06.18ID:B5cRJMaS
「いつでも」は言いすぎだった
logも9.603431447*10**18989までは正しく動作するよ
0631デフォルトの名無しさん2016/08/03(水) 18:25:45.78ID:mbys/AN5
いつでも正しいコードを書けよ
0632デフォルトの名無しさん2016/08/03(水) 18:28:03.24ID:l8cxGlGj
諄い
0633デフォルトの名無しさん2016/08/03(水) 18:34:18.83ID:mbys/AN5
ついでに言ってやろう
余計な制限のあるコードにはコメントが必須

#logも9.603431447*10**18989までは正しい
+46Bだな
0634デフォルトの名無しさん2016/08/03(水) 18:39:46.41ID:B5cRJMaS
>>633
なんかキレてんの? システムに依存しない、アホみたいにでかい数値に対してすらいつでも正しいコードなんて存在するわけないだろ
0635デフォルトの名無しさん2016/08/03(水) 19:05:26.45ID:mbys/AN5
いや
切れてないよ
0636デフォルトの名無しさん2016/08/03(水) 19:14:20.38ID:B5cRJMaS
そうか、なんかすまんかった
いい加減黙ります ゴルフスレとかあったら面白いかもね
0637デフォルトの名無しさん2016/08/03(水) 23:34:22.20ID:W0lh95XI
String#ord を使うと更に短くなった(ついでにエラー検査も削除):
・関数型 :(旧) >>612 --> (新) https://ideone.com/OQLdlR
・手続き型:(旧) >>621 --> (新) https://ideone.com/Ja6tP9

String#succ の存在も初めて知ったし、勉強になったわ
0638デフォルトの名無しさん2016/08/04(木) 01:32:56.67ID:feZwYdLF
p s.chars.reverse.map.with_index{|c,i|(c.tr('A-Z','0-9a-p').to_i(26)+1)*(26**i)}.inject(:+)

Enumerator#with_indexはもっと流行っていいと思うんだ
使ってもそんなに短くはならないんだけどさ
0639sage2016/08/04(木) 01:37:51.37ID:2HyRwUYq
def cel_No( str )
str.strip.upcase.unpack('C*').inject(0){|result, item| result * 26 + item - 0100 }
end

def cel_str( n )
str = ""
while n > 0
n, r = (n - 1).divmod( 26 )
str << (r + 0101).chr
end
str
end
0640デフォルトの名無しさん2016/08/04(木) 14:01:54.35ID:2HyRwUYq
>>639
最後は
str.reverse
でした。
0641デフォルトの名無しさん2016/08/04(木) 23:00:36.83ID:c9zwl1qO
SQLの使用に関して質問です。
どのようにすれば、回避できるでしょうか?
■症状:インサートした日本語文字が文字化けする。


title =
0642デフォルトの名無しさん2016/08/04(木) 23:04:28.59ID:c9zwl1qO
うまく書き込めなかったので、もう一度

SQLの使用に関して質問です。
どのようにすれば、回避できるでしょうか?
■症状:インサートした日本語文字が文字化けする。
title="あいうえお123"
DB = Mysql.new('host','name','pass','test01')
sql = "UPDATE `test01`.`table01` SET `title` = '#{title}'WHERE `table01`.`id` = '4';"
DB.query(sql)
0643デフォルトの名無しさん2016/08/04(木) 23:36:28.77ID:QKnNcils
とりあえずSQLインジェクション丸出しの書き方はやめよう
0644デフォルトの名無しさん2016/08/05(金) 06:51:27.16ID:tltzsolz
[nil, *'A'..'Z', *'AA'..'ZZ', *'AAA'..'ZZZ'].find_index('ZZZ')
ひどいけどこれで十分
0645デフォルトの名無しさん2016/08/05(金) 07:12:44.43ID:x8TUq60L
Ruby, DBなど、すべてのアプリの文字コードを、UTF-8 に統一すれば?
0646デフォルトの名無しさん2016/08/05(金) 13:38:20.94ID:LJe/qM3f
その辺はrubyよりpythonの方が堅牢
perlは論外
0647デフォルトの名無しさん2016/08/05(金) 15:48:28.22ID:UhWsfPtN
横槍失礼します
>>604 です
唐突に質問なのですが
そもそもDXRubyでユーザーに文字を入力させ、それを扱うにはどうすれば良いのでしょうか
0648デフォルトの名無しさん2016/08/05(金) 15:49:58.62ID:UhWsfPtN
>>647
連投すみません
RPGの名前入力のようなものです

あと、一旦画面を消すのはどのようにするのでしょうか?
タイトルから本編へとかそういう感じです

結構しらべたのですが.....
0649デフォルトの名無しさん2016/08/05(金) 16:21:49.83ID:teNswV+z
DirectXプログラミングかWindowsプログラミングの経験はある?
このへんの基礎知識がないとAPI探せないし何渡していいのかもわからないよ
0650デフォルトの名無しさん2016/08/05(金) 18:50:19.50ID:UhWsfPtN
>>649
正直ありません
Rubyが一番最初にやりました
VBSやBASICはやったことがありますが.....

DXRubyを入れて調べながらやっているところです
0651デフォルトの名無しさん2016/08/06(土) 01:12:59.09ID:8Rl0Ybxy
DXRubyは知らないけど、そういう基本的な関数は、

チュートリアルでもやれば、わかるのでは?
0652デフォルトの名無しさん2016/08/06(土) 04:20:54.79ID:w5zQ+Fii
DXRubyのドキュメント読めばいんじゃねーの
0653デフォルトの名無しさん2016/08/06(土) 05:53:35.02ID:2mFu6MHm
>>644
https://support.office.com/ja-jp/article/Excel-の仕様と制限-ca36e2dc-1f09-4620-b726-67c00b05040f
0654デフォルトの名無しさん2016/08/06(土) 07:35:29.07ID:aQkr0mnl
>>651
チュートリアルには、文字の描画、キーの判定は書いてありますが
全てのキー入力の監視はどうやってやるのかなと.....
0655uy ◆e6.oHu1j.o 2016/08/06(土) 07:40:48.99ID:TO2ybUlL
>>648
DXRubyにそういうのをやってくれる関数はないよ
ていうか名前をアルファベットに限定するなら、そこまで長いコードにならないから
ユーザー入力部分を自分で書いてみれば良い

DXRubyは綺麗に小さくまとまっている良いライブラリではあるものの
このくらいはさっと書けないと、機能は結構少ないライブラリだから今後も苦労する事になるでしょう
0656uy ◆e6.oHu1j.o 2016/08/06(土) 07:45:28.31ID:TO2ybUlL
>>654
こんな感じで取得できる

Window.loop do
x = Input.keys
next if x.empty?
p x
end
0657uy ◆e6.oHu1j.o 2016/08/06(土) 07:51:12.27ID:TO2ybUlL
>>649
いや、DXRuby扱うのにそういう知識は全然いらない
そもそもゲームのライブラリってのは
DirectXやOpenGLの勉強をすっ飛ばして使えるようにライブラリ作者が上手くまとめてくれているもの
0658デフォルトの名無しさん2016/08/06(土) 08:14:46.43ID:aQkr0mnl
>>656
ありがとうございます!
keysで取得できるんですね!
ありがとうございます!
0659デフォルトの名無しさん2016/08/06(土) 08:28:12.52ID:aQkr0mnl
>>656
アルファベット限定でいいのでRPGの名前入力をしたいんですが
ユーザーが文字入力したのをnameという変数に記録し
それを画面に表示っていうのはできますでしょうか?

何度も質問本当にすみません
0660デフォルトの名無しさん2016/08/06(土) 09:21:45.32ID:xpLjq4a+
>>657
大抵C++のソース眺めるはめになるんだけどね
0661uy ◆e6.oHu1j.o 2016/08/06(土) 10:26:06.77ID:TO2ybUlL
>>659
ちょっと半端な出来だけど暇だったから書いた
https://ideone.com/r48pB5

文字を打ってエンター押したら
case , when の1のほういくから、そこで文字が青色になるサンプルコード


あと使ってるdxrubyのAPIのInput.set_repeatはこれね
http://mirichi.github.io/dxruby-doc/api/Input_23set_repeat.html
0662uy ◆e6.oHu1j.o 2016/08/06(土) 10:55:37.26ID:TO2ybUlL
あとは、>>648ここでいってるタイトルから本編とか
その辺りのコードは、ゲームでいうと「シーン管理」という

簡単な方法としては
phaseって変数に値を入れて
https://ideone.com/jJPN3k
こんな風に書くのが初歩的なやり方かな
工夫していくと、この辺も奥が深いロジックになるから、
自分なりにクラス化(シーン管理クラス)とか考えてみると良い

ついでに俺に遜った敬語いらんから
2chで身を低くしても得るもの無いぞ
0663デフォルトの名無しさん2016/08/06(土) 14:50:23.69ID:aQkr0mnl
>>662
ありがとうございます!
whenが9なのはなにか意味があるんでしょうか?
0664uy ◆e6.oHu1j.o 2016/08/06(土) 18:32:46.50ID:TO2ybUlL
>>663
たいして意味はない
0665デフォルトの名無しさん2016/08/06(土) 19:22:34.03ID:P6FYCdC3
シーン数はほとんど増えず1桁に収まるという前提で
最大値っぽい値にしてる ってとこだろう
0666uy ◆e6.oHu1j.o 2016/08/06(土) 20:43:13.60ID:TO2ybUlL
>>665
そんなところ

だけど、別にそこまで真似る必要ないからね
自分のコードの癖に突っ込むという、鋭い突っ込み
0667デフォルトの名無しさん2016/08/06(土) 23:11:34.04ID:aQkr0mnl
すみません再び質問です
例えば
test1.rbとtest2.rbいう2つのプログラムファイルがあるとして
test1.rbにはtest2.rbの内容をを実行させるというのはどうやってやるのでしょうか?
自分で、クラスを定義するのでしょうか?

test2.rbの内容はWindow.draw_fontを使いたいです
0668デフォルトの名無しさん2016/08/06(土) 23:38:13.30ID:FykwWLua
>>667
Kernel#system
0669uy ◆e6.oHu1j.o 2016/08/07(日) 02:19:16.41ID:ARnnbWqn
>>667
test2.rbにクラス定義して
test1.rbで
require"./test2.rb"

やれば良いんじゃね


>>668
test1.rb側でウィンドウ生成してるって前提あるだろうからそれ無理
0670デフォルトの名無しさん2016/08/07(日) 07:23:31.37ID:bL6v3Ot9
>>669
test2.rbの一行目にClass test2
と、書いて
test1.rbにrequireで読み込みます
そこから例えばAキーが押されたらtest2.rbを実行って
どうやるんでしょうか....
0671uy ◆e6.oHu1j.o 2016/08/07(日) 08:44:57.55ID:PWyfS198
>>670
その辺がまだわかんない段階なら無理にファイルわけしなくていいと思うぞ
rubyで普通にコード書けば小さめのゲームなんて1ファイルで書ききれるから

test1.rb
https://ideone.com/XyyEb2

test2.rb
https://ideone.com/cAxzVK
一応サンプルとしてはこうなるけど、
0672デフォルトの名無しさん2016/08/07(日) 08:49:56.24ID:bL6v3Ot9
>>671
本当に有難うございます
自分でも、もう少しリファレンスとか見てみます!
0673uy ◆e6.oHu1j.o 2016/08/07(日) 08:58:26.20ID:PWyfS198
>>672
暇なだけだからいいよ
ついでにいっとくと、dxrubyにはSpriteクラスってのがあって
このクラスで描画・移動・当たり判定が全部出来る
rubyの基礎を抑えたら>>671こういうコードじゃなくて

http://mirichi.github.io/dxruby-doc/tutorial/sprite.html
↑ここのサンプルみたいな感じで書いていったほうが良い
速度が10倍以上は違ってくるからね

俺不定期でしかこのスレ見ないけど、まぁがんばって
0674デフォルトの名無しさん2016/08/07(日) 17:34:52.83ID:bL6v3Ot9
>>673
速度についてですが
例えばifとcaseで同じ処理するとcaseのほうが早いと思うのですが

同じことをするプログラムでも、コードが短いほうが早いとかありますか?
0675デフォルトの名無しさん2016/08/07(日) 17:58:57.41ID:T8DF/r+j
>>674
そんなのあったとしても微差。考えるだけ無駄
それよりアルゴリズムのお勉強した方が早い
0676デフォルトの名無しさん2016/08/07(日) 18:05:45.89ID:gluNCp1x
>>674
まずは「Rubyはクソ遅い言語である」という事実を受け入れよう。
じゃあなんでそんなに遅い言語が使われているのかというと、
(1)多くのアプリケーションのボトルネックは言語ではなくDBアクセスやネットワークなどの外部要因だから
(2)速度が重要でないケースは結構多いから
ゲームの例で説明すると、
描画はRubyから直接手を出せないので(1)、更新処理は次の更新までに間に合いさえすればいいので(2)に該当するね
もちろん高度なゲームになると(1)や(2)の前提は成り立たなくなるけど、そのときは残念ながらRubyを捨てる時だ。
0677デフォルトの名無しさん2016/08/07(日) 19:42:22.24ID:bL6v3Ot9
>>676
なるほど.....遅い言語なのですね.....

逆に、ライブラリなどを使わず
純粋なRubyが得意とするのはどんなものなのでしょうか?
0678デフォルトの名無しさん2016/08/07(日) 19:49:02.03ID:6muXneSj
文字列の操作
0679デフォルトの名無しさん2016/08/07(日) 19:50:02.91ID:bL6v3Ot9
>>678
そうなのですか.....
ありがとうございます!
0680デフォルトの名無しさん2016/08/07(日) 20:27:25.95ID:T8DF/r+j
>>677
遅いけれども書きやすいのがメリット

速度を求めてDirectX使いたいならふつーにC#使うのがよろし
0681デフォルトの名無しさん2016/08/07(日) 21:07:14.31ID:bL6v3Ot9
https://ideone.com/KDa48P
上記のコードで@@imageというのがありますよね
時々@@とか@から始まる奴があると思うのですが
あれは、何の意味があるのでしょうか?
0682デフォルトの名無しさん2016/08/07(日) 21:08:49.00ID:6muXneSj
>>681
これよめ
http://qiita.com/mogulla3/items/cd4d6e188c34c6819709
0683デフォルトの名無しさん2016/08/07(日) 21:12:57.96ID:bL6v3Ot9
>>682
あ、すみません!
ありがとうございます!
0684デフォルトの名無しさん2016/08/08(月) 11:25:24.34ID:WWplGsDY
とりあえずrubyのリファレンス眺めてこいと言いたくなるな
0685デフォルトの名無しさん2016/08/08(月) 11:49:51.61ID:qKDY79To
四則演算を勉強せずにいきなり微積から勉強しているような感じ
0686デフォルトの名無しさん2016/08/08(月) 13:22:45.98ID:ldi7UiFI
質問ですが
rbenv exec って使ってないんですか?
プロジェクト毎にrubyのバージョン指定するときは
rbebv exec bundle exec rails s
みたいに記述するのかと思うのですが、
ネットだと
bundle exec rails sみたいなのばかりなので、
使わないのか、省略できるのか仕組みがわからないです
0687デフォルトの名無しさん2016/08/08(月) 15:04:46.88ID:KcW4wK3e
>>686
rbenv のソース嫁!
0688デフォルトの名無しさん2016/08/08(月) 18:14:11.09ID:1QM6yHGZ
>>685
掛け算には順序があります
0689デフォルトの名無しさん2016/08/08(月) 20:31:33.35ID:+4ewFkZd
http://mirichi.github.io/dxruby-doc/tutorial/sprite.html
これのライフサイクルを管理するのところなんですが
self.vanish if self.x > 300
ここなのですが
これはx座標300以降のオブジェクト?は描画しないということでいいんでしょうか?

もしも合っているなら例えば250から300の間のような
座標の範囲指定はどのようにやるのでしょうか?
0690デフォルトの名無しさん2016/08/08(月) 20:46:46.11ID:7oYgKi44
if self.x > 250 && self.x < 300
じゃないかな。
てかRubyの基本的な制御構文を勉強した方が良さそう
0691デフォルトの名無しさん2016/08/08(月) 20:49:48.09ID:qKDY79To
if (250..300).include?(self.x)
とかもいいかな
>>690の言うようにまずは基本的なことを勉強する必要があると思う
この程度すらわからない かつ その都度人に聞いていたんじゃ全然捗らないと思うよ
0692デフォルトの名無しさん2016/08/08(月) 22:48:37.77ID:+4ewFkZd
なるほど.....
チュートリアルが完全に理解できるように
DXRubyじゃなくて普通のRubyをまずは勉強してみます
ほんとうにありがとうございました! 
0693デフォルトの名無しさん2016/08/09(火) 15:01:07.73ID:/QwUjUla
君たちをRubyに導いたnaoyaはc# asp.netの会社に転職した
0694デフォルトの名無しさん2016/08/10(水) 22:31:03.23ID:uPyxj/T5
株式会社TOUAが2016年7月に破産
http://www.tdb.co.jp/tosan/syosai/4191.html
0695デフォルトの名無しさん2016/08/11(木) 12:06:30.15ID:v2n9djjr
女性金詐欺で告発汁
0696デフォルトの名無しさん2016/08/12(金) 00:04:15.74ID:YUzYFiQu
質問です。
cronでシェルからrubyを起動した際、requireしてるgemの一つが読み込みエラーしており困っております。
実行パスが違うからなのでしょうが、こういった場合どう解決すればよいでしょうか?
0697デフォルトの名無しさん2016/08/12(金) 00:30:51.28ID:3GviCvck
cronの環境変数は、一般ユーザーの環境変数よりも少ないから、よくトラブルが起こる。
環境変数PATHも見てみ

Rubyの起動オプションなら、-Idirectory かな?
0698デフォルトの名無しさん2016/08/14(日) 16:05:38.95ID:qlcn2KoZ
tmp = ["a","b"]
printf "%s %s\n", tmp
とやると`printf': too few arguments (ArgumentError)
というエラーになるのですがPrintfに配列は渡せないのでしょうか
0699デフォルトの名無しさん2016/08/14(日) 16:53:42.36ID:MHXGGTGk
printf "%s %s\n"%tmp
printf "%s %s\n", *tmp
好きな方をどうぞ
0700デフォルトの名無しさん2016/08/14(日) 18:00:18.07ID:qlcn2KoZ
ああ・・・なんとなくわかりました
ありがとうございます

配列としてのObjectじゃなくって配列のポインタを渡すかしないといけないんですね
全てがObjectだからあかんと・・・ありがとうございました
0701デフォルトの名無しさん2016/08/14(日) 18:03:55.65ID:MHXGGTGk
rubyでポインタって何言ってんの?
printf "%s", tmp # => ["a", "b"]
単純に%sが2つあるのにそれに対する引数が1つしかないからtoo few argumentsってなってるんだよ
0702デフォルトの名無しさん2016/08/14(日) 18:12:25.22ID:qlcn2KoZ
いや、ようするに引数の展開をObjectそのままだとしてくれなくって
展開する用の指示が*なわけですよね、だから参照を渡してやればいいって話ですよね?

基本的にLLにしろなんにしろポインタは意識させない作りになっているだけでないわけじゃないですよね。
0703デフォルトの名無しさん2016/08/14(日) 18:13:36.98ID:DMp4bkRP
Twitterアナリティクスの右上にある「データをエクスポート」からcsvをダウンロードするスクリプトを書きたいと思っています。
https://analytics.twitter.com/

Mechanizeを使ってログインするところまでは出来たのですが、
そこから「データをエクスポート」をクリックし、csvのダウンロードまで実行する手順がわからず行き詰まってしまいました。
これはどのように対処すればよいのでしょうか?
0704デフォルトの名無しさん2016/08/14(日) 21:12:38.18ID:Mh5ntfj4
>>703
何が困ってるのか全然分からん
もっと困ってるところを具体的に書いてくれ
0705デフォルトの名無しさん2016/08/14(日) 21:21:33.21ID:DMp4bkRP
>>704
↓のコードで、とりあえずログイン後のページまではいけていることを確認できたんですが

require 'mechanize'
agent = Mechanize.new
agent.user_agent_alias = 'Windows Mozilla'
url = "https://analytics.twitter.com/user/【ID】/tweets"
agent.get(url) do |page|
form = page.form_with(action: 'https://twitter.com/sessions')
form.fields[0].value = '【ID】'
form.fields[1].value = '【パスワード】'
p form.submit
end

ここから
・「データをエクスポート」ボタンを押す
・csvファイルをダウンロードする
まですすめる手順がわからない状況です。

jsがきかないとダメなようにも見えて、その場合Mechanize以外の手段を組み合わせる必要がありそうな感じですが・・・
0706デフォルトの名無しさん2016/08/14(日) 22:52:24.64ID:SaGN03aV
>>702
参照じゃないよ…
Rubyにはポインタの概念がそもそもないから…
0707デフォルトの名無しさん2016/08/15(月) 17:05:00.37ID:g49T5w75
2016-5-27, JRuby 9.1.2.0 リリース

一方、IronRubyは、2011年が最終リリース
0708デフォルトの名無しさん2016/08/15(月) 17:13:52.08ID:g49T5w75
>>702
tmp = ["a","b"]

配列という外側のオブジェクトが1つと、
a, b は文字列という内側のオブジェクトが2つ

コンテナには、コンテナを展開する演算子がある
0709デフォルトの名無しさん2016/08/15(月) 17:16:50.45ID:g49T5w75
>>705
Seleniumデザインパターン&ベストプラクティス、2015

OSSのブラウザ自動テストツール、Selenium WebDriver を使って、
Rubyでテストを書いた本
0710デフォルトの名無しさん2016/08/15(月) 18:00:37.84ID:GUZ7DBqH
Julia の J かと思ってしまう
0711デフォルトの名無しさん2016/08/16(火) 12:24:35.22ID:Bu7T/V8i
Kindle UnlimitedにRuby本もっと増やしてくれ
9/3までに頼む
0712デフォルトの名無しさん2016/08/16(火) 14:36:31.71ID:laX+qstW
xmlしたいのですが、エラーがでてよくわかりません。

環境はWindows7
Rubyは2.177P400
を使っています。
0713デフォルトの名無しさん2016/08/16(火) 14:57:25.67ID:uRC9VBAF
>>712
その質問で解決法がわかる人間がいたらスーパーエスパーだわw

・なにをしたいのかを具体的に
・どういうコードを書いたのか
・なんというエラーが出たのか

これぐらいは書こうなw
0714デフォルトの名無しさん2016/08/16(火) 19:28:20.15ID:laX+qstW
ネットの情報を一つにまとめたい。
コードはまだ書けていない
たぶん、rubyのXMLでエラーじゃないかと思ってます。

一番最新のバージョンでもエラーが出る。

感じです
バージョンがあれば、それに越してみたいです。
0715デフォルトの名無しさん2016/08/16(火) 19:32:20.09ID:mJ7ra1LV
外国の方ですか?

require "open-uri"
xml = open("hoge.xml")
0716デフォルトの名無しさん2016/08/16(火) 20:32:56.86ID:h6WvQyhw
行ってる行動とエラーメッセージの詳細を載せないと推測の仕様もないです

require 'rexml/document'
require 'open-uri'
doc = REXML::Document.new open('http://example.com/example.xml')
0717デフォルトの名無しさん2016/08/16(火) 22:35:47.88ID:uRC9VBAF
>>714
コード書けてないならエラーなんて出ないと思うんですが…w
0718デフォルトの名無しさん2016/08/20(土) 02:58:26.06ID:5fdRiIgV
コードなど書かずともエラーは出せる
常識じゃないか
0719デフォルトの名無しさん2016/08/20(土) 08:12:29.76ID:3vDaga3A
みんなエスパーだよ。
0720デフォルトの名無しさん2016/08/20(土) 18:27:12.48ID:UXRRqxP7
バグよと言い出せないうちに
貴方のデバッカー 奪ったLove-letter(Virus)
0721片山博文MZ ◆T6xkBnTXz7B0 2016/08/20(土) 18:50:44.26ID:ea4xV4wU
*デバッガー
0722デフォルトの名無しさん2016/08/24(水) 01:28:41.63ID:u8a4LAYj
nokogiriとanemoneを使ってあるサイトをスクレイピングしようとしているのですが、
タイトルテキストを抽出しようとしても空白の出力しか表示されません。
環境はWIN7でコマンドプロンプトで入力してます。
単純に記述ミスなら、「syntaxerror」という警告が出てくるのですが今回はそれもないです。
それかjavascriptが邪魔をしているのか・・・
ちなみにサイトは「pornhub」ですw
0723デフォルトの名無しさん2016/08/24(水) 07:58:12.59ID:TVgqKey2
で、質問は何なんだよ
0724デフォルトの名無しさん2016/08/24(水) 09:54:36.61ID:fznfg9zu
rbenvでcommand毎にバージョンが切り替える方法ってないんですかね?

ディレクトリにlocalで指定するとそのディレクトリに移動しないとならないし

イメージ
/usr/local/aaa -v1.9
/usr/lical/bbb -v2.0

これをワーキングディレクトリがどこであろうと
aaaは1.9で bbbは2.0としたいのですが
0725デフォルトの名無しさん2016/08/24(水) 10:00:03.83ID:lMhQNpu5
pornhubざっと調べたが
おそらくクローラ対策に一定時間内に一定回数以上アクセスすると(?
jsでクッキーに何かを設定させて認証してるみたいね
0726デフォルトの名無しさん2016/08/24(水) 10:10:08.13ID:lMhQNpu5
>>724
環境変数 RBENV_VERSION を用いる

RBENV_VERSION = 1.9 /usr/local/aaa
これで1.9環境でaaaを実行するはず
0727デフォルトの名無しさん2016/08/24(水) 10:12:13.68ID:fznfg9zu
それだと1.9と2.0が混在できないんですよね
0728デフォルトの名無しさん2016/08/24(水) 11:47:26.61ID:wj/dhjvF
>>727
どういうこと?
0729デフォルトの名無しさん2016/08/24(水) 13:57:51.07ID:zACxNHAZ
>>724
shebangに実行したいバージョンのrubyのパス書いときゃいいんじゃないの
0730デフォルトの名無しさん2016/08/24(水) 14:45:07.43ID:9+kSfiVX
>>724
こんなんじゃあかんの?
ルビーのパス/ruby コマンド
0731uy ◆e6.oHu1j.o 2016/08/25(木) 07:13:14.50ID:AFb0RLFl
require 'mechanize'
url =
0732uy ◆e6.oHu1j.o 2016/08/25(木) 07:15:35.87ID:AFb0RLFl
え・・・っ
なんかソースコードの書き込みが失敗してる
もうやだ
0733デフォルトの名無しさん2016/08/25(木) 12:11:25.26ID:i3bEIs7l
2chのバグだろ

確認画面が出る際、" を使うと、
サーバーで受け取った文字列の " を、エスケープしていないから、
そこで文字列の終了とみなされる

投稿する際、こちらでわざわざ、\" とエスケープしてから投稿してやれ
0734デフォルトの名無しさん2016/08/25(木) 15:17:07.10ID:b4YfCPkD
>>733
すごい、明解
頭いい
0735デフォルトの名無しさん2016/08/25(木) 18:11:50.12ID:fNn06GGZ
あるていど長いのは
ideoneみたいなコードサービスで書けば?
0736デフォルトの名無しさん2016/08/25(木) 19:32:47.82ID:7trdSkIV
"をエスケープしてなかったらいろいろ悪用されたりしないんかね詳しくは知らんが
0737デフォルトの名無しさん2016/08/25(木) 21:35:41.81ID:/4caYD7N
ふつうにideone でいいと思うよ実行結果までついてくるよ
0738デフォルトの名無しさん2016/08/25(木) 21:43:19.34ID:KJBRfXOD
ideone はバージョンが指定できればいいのになー
0739デフォルトの名無しさん2016/08/26(金) 10:21:27.00ID:QNADLP5T
railsのActiveRecord とか .ancestors # => できないのなんで?
メソッドの継承チェーンが分からないのにどうしてメソッドを持ってこれる
の?
0740デフォルトの名無しさん2016/08/26(金) 11:08:39.63ID:3gDvt2/N
> ActiveRecord.methods - Object.methods
でわかるけどトップレベルのActiveRecordは中身がないよ。
> ActiveRecord::Relation.ancestors
だとズラズラでるずら。
0741デフォルトの名無しさん2016/08/26(金) 12:05:29.40ID:WnsDsp7+
codepad.org
0742デフォルトの名無しさん2016/08/29(月) 18:18:22.91ID:UFqwTsI3
すでに定義されているクラスに対して継承関係を追加することって可能?
0743デフォルトの名無しさん2016/08/29(月) 18:52:16.97ID:bxq98iQ5
includeでいけたはず
0744デフォルトの名無しさん2016/08/29(月) 20:29:24.48ID:MIStvaWn
extendも忘れるんじゃないぞ
0745デフォルトの名無しさん2016/08/29(月) 21:20:24.86ID:EgxA66z3
prependもお忘れなく
0746デフォルトの名無しさん2016/08/29(月) 21:44:35.95ID:5rjuE4vI
全部ちょっとずつ違うんだから出してくるなよ紛らわしいんだよ!
0747デフォルトの名無しさん2016/08/30(火) 02:57:33.40ID:CJ2Efr2d
http://blog.supermomonga.com/articles/jruby/javafx-rawr.html
このサイトを参考にして頑張っているんですが
jruby -S rake rawr:jarを実行すると
SyntaxError: /Users/kuni/.rbenv/shims/rake:3: syntax error, unexpected tSTRING_BEG
[ -n \"$RBENV_DEBUG\" ] && set -x
と出てしまい実行できないでいます。

rubyプログラムを.app化したいんです。
何が原因なのでしょうか、
他に何かいい方法があるでしょうか
0748デフォルトの名無しさん2016/08/30(火) 03:38:25.10ID:KipFr26h
3行目に予期しない"か'があるから構文エラーになってる
0749デフォルトの名無しさん2016/08/30(火) 04:44:33.60ID:CJ2Efr2d
>>748 このサイトの順にやっていったのですが
~/.rbenv/shims/rake の3行目[ -n "$RBENV_DEBUG" ] && set -x
の何が問題なのかわかりません。
インストールされたファイルで、""を消してみたけどダメでした。
0750デフォルトの名無しさん2016/08/30(火) 08:47:39.64ID:KipFr26h
シェルスクリプトなのにRubyのスクリプトとして扱われてるのかな?
取りあえず対処法はあるみたい
ttp://github.com/rbenv/rbenv/issues/467
0751デフォルトの名無しさん2016/08/30(火) 08:58:41.19ID:TaoYiOtt
「ruby unexpected tSTRING_BEG」で検索!

エラーメッセージは、unexpected tSTRING_BEG で終わりかい?
その後に、expecting 解答、と続かないのか?
検索するため一言一句、正確なエラーメッセージがいる

>747では、[ -n \"$RBENV_DEBUG\" ]
>749では、[ -n "$RBENV_DEBUG" ]

これは、シェルスクリプトのtest コマンドだろ。
だったら、\ は付かないから、749が正しい。[ -n "文字列" ]

だから、変数RBENV_DEBUG内に、" ' ! \ や全角文字など、
文字列ではない、よほど変なものが入っているのかも

それか、3行目より前にバグがある。
カッコの対応が取れていないか、全角空白・全角文字(日本語)を使っているとか

それか、ファイルの最後に、制御文字が入っているとか
0752デフォルトの名無しさん2016/08/30(火) 12:59:38.73ID:CJ2Efr2d
>>751
>749 の形であってます。
エラーメッセージもunexpected tSTRING_BEGで終わりです。

%% jruby -S rake rawr:bundle:app
SyntaxError: /Users/kuni/.rbenv/shims/rake:3: syntax error, unexpected tSTRING_BEG
[ -n "$RBENV_DEBUG" ] && set -x
0753デフォルトの名無しさん2016/08/30(火) 20:31:13.62ID:yZN34uL0
Rubyの「メソッド」って色々あってもっと細かく分類できないかな
インスタンスメソとかクラスメソの違いだけじゃなくて、
例えば .xxx? みたいにハテナがつくメソッドは「ハテナメソッド」とか
自然言語の動詞や形容詞助詞みたいに使い方でもっと細かく
分類してほしい。分類が分かれば、記法がある程度特定されて
メソッド名から推測してぶっつけ本番で使ってもシンタックスエラー
なく使える命名規則があれば便利じゃないかな?
0754デフォルトの名無しさん2016/08/30(火) 20:40:18.59ID:KipFr26h
ぶっつけ本番で使うことがないので現状維持でいいです
0755デフォルトの名無しさん2016/08/30(火) 21:16:54.15ID:sNUA7e93
これ以上分割する理由なくない?
はてなメソッドってただ返り値がBool型なメソッドってだけなのに他と区別する意味が見いだせん
0756デフォルトの名無しさん2016/08/30(火) 22:17:09.84ID:JoG6iYvQ
>>753
ハテナメソッドと、そうでないメソッドに
違いがないので分ける必要ありません。
0757デフォルトの名無しさん2016/08/31(水) 00:29:51.70ID:BLd6Di5/
>>747-752
$RBENV_DEBUG には、何が入っている?

他には、ホスト名・ユーザー名・パスに、日本語を使っているので誤動作しているとか
0758デフォルトの名無しさん2016/08/31(水) 00:35:55.12ID:ezWZD1bG
>>753
メソッド名を列挙する操作と正規表現組み合わせればいくらでも出来る気がする
0759デフォルトの名無しさん2016/08/31(水) 02:49:08.99ID:BLd6Di5/
特別に扱う関数は、

戻り値がBool型
非破壊的関数は、const
マルチスレッドに対応する関数は、multi_thread
0760デフォルトの名無しさん2016/08/31(水) 08:39:59.91ID:mqymnS7Z
必要なのは新しい文法ではなく英語の語彙力と命名センス
0761デフォルトの名無しさん2016/08/31(水) 10:30:15.54ID:aGvvWmav
>>753
逆フィンランド記法で
int i を int ii みたいに定義する馬鹿さ加減
0762デフォルトの名無しさん2016/08/31(水) 10:37:12.32ID:LUuLSP6C
"逆フィンランド記法"との一致はありません。
0763デフォルトの名無しさん2016/08/31(水) 11:37:17.00ID:mqymnS7Z
逆ポーランド記法なら聞いたことある
0764デフォルトの名無しさん2016/08/31(水) 14:04:42.57ID:hktlAWEt
逆アイルランド記法とか逆イングランド記法もありそう
0765デフォルトの名無しさん2016/08/31(水) 14:06:39.13ID:LUuLSP6C
逆ポーランド記法は文脈的に全くの別のものじゃん
0766デフォルトの名無しさん2016/08/31(水) 14:31:38.27ID:PJmqkaeb
多分言いたいのはシステムハンガリアンなんだろうな
0767デフォルトの名無しさん2016/08/31(水) 23:21:21.50ID:VrI1x3gR
ジャンガリアンじゃね?
0768デフォルトの名無しさん2016/09/01(木) 00:42:21.07ID:4EaPp0tJ
いただきが名前をいただきした
0769デフォルトの名無しさん2016/09/01(木) 02:23:39.56ID:u/ZMrN1Z
ruby始めて4日目くらいなんだが、リファレンス見るとメソッドの引数名が*pathとかあるんだが、*になんか意味あるんですか?
0770デフォルトの名無しさん2016/09/01(木) 03:11:44.86ID:Bl3p1IFz
>>769
可能ならリファレンスの文法の項目は全部読んだ方が良いよ

>仮引数の直前に * がある場合には残りの実引数 (後述の post 引数を除く) はみな配列とし てこの引数に格納されます。 可変長引数、rest 引数などと呼ばれる機能です。 このような引数は 1 つしか作れません。
ttp://docs.ruby-lang.org/ja/2.3.0/doc/spec=2fdef.html
0771デフォルトの名無しさん2016/09/01(木) 15:14:09.12ID:GAgoRnb9
Windows + ruby2.3 で使えるサーバ不要のデータベースgemってどんなのがあるんでしょうか
0772デフォルトの名無しさん2016/09/01(木) 16:41:53.55ID:lxKZC7pd
>>771
gem install sqlite3-ruby
07737712016/09/01(木) 17:23:18.43ID:dI9CGFDX
>>772
windowsの2.3対応はまだじゃないですか?
githubの最新版だと対応してるっぽいんですが、導入の仕方がよくわかんないです
0774デフォルトの名無しさん2016/09/01(木) 17:30:15.13ID:u2weFoMG
>>771
単にデータを保存したいだけならPStoreやMarshalでgem使う必要が無い
0775デフォルトの名無しさん2016/09/01(木) 17:35:10.99ID:lxKZC7pd
>>773
ごめん、使えるんじゃないかなーレベルで書いてしまった
0776デフォルトの名無しさん2016/09/01(木) 19:34:04.12ID:UWb4BubA
つか自分が「こうしたいな」という要件があって、
それを元にメソッドを調べるときってまず何を見る訳?
0777デフォルトの名無しさん2016/09/01(木) 20:19:22.98ID:Xz8sejsg
上のSQLiteみたいな要素技術の名前とだいたいそれがどんなものかくらいはある程度知ってて当然
ローカルのDBが欲しいな→SQLiteがあったな→ruby sqliteでググろう
となる
0778デフォルトの名無しさん2016/09/01(木) 20:48:24.77ID:4EaPp0tJ
>>776
逆引き
0779デフォルトの名無しさん2016/09/01(木) 20:50:54.60ID:Uog0CqGC
>>776
どんなメソッドがあるかぐらいは一通りさらっと見て脳内でインデックスを作っておく
細かい使い方まで覚える必要はない。そんなのは後で調べればいい
0780デフォルトの名無しさん2016/09/01(木) 23:24:31.38ID:u2weFoMG
とりあえず
ttp://docs.ruby-lang.org/ja/2.3.0/library/_builtin.html
ttp://docs.ruby-lang.org/ja/2.3.0/library/index.html
の一覧を見て、大体何があるかを把握しておく
Array Hash String Enumerable あたりはメソッドも一応目を通しておく
0781デフォルトの名無しさん2016/09/03(土) 02:48:37.27ID:uJ1wm+Vm
>>770
ありがとうございます読み込んでおきます
0782デフォルトの名無しさん2016/09/03(土) 08:05:24.94ID:wEDYvGbd
splitが末尾の空白業とかを勝手に削っちゃうんですがどうすればいいですか

p "aaa
bbb
ccc

".split("\n")

["aaa", "bbb", "ccc"]
# 望む結果: ["aaa", "bbb", "ccc", "", ""]

"...".scan(/(.*(?:\n|$))/).flatten.map{|i| if i == "" then i else i.chomp end}
だと一応出来たんですが無様すぎる…
0783デフォルトの名無しさん2016/09/03(土) 08:15:03.42ID:yBtBzV43
Rubyをこれから学ぼうと考えているものです。
最近、GitやVagrant、ChefなどWeb関係で
必須ともいえるアプリケーションがありますが、
それらはRubyで書かれております。

何故、Rubyがこれらに採用されているのでしょうか。
以前、言語間の性能比較したもので、
処理速度に関しては、PHPの方が処理速度が速いとありました。
にもかかわらず、Rubyが採用されているのか気になったのですが、
どうしてでしょうか?
0784デフォルトの名無しさん2016/09/03(土) 08:36:23.97ID:Hj3S1o7Z
>>782
str.split($/,-1)

長くもないんだからString#splitのマニュアルくらい読むと良いよ
ttp://docs.ruby-lang.org/ja/2.3.0/method/String/i/split.html
0785デフォルトの名無しさん2016/09/03(土) 09:54:12.22ID:AtgdG5E3
>>783
探したけど、ちゃんと理由を話してくれる記事見つからないな。
個人的な回答だけど参考に

Ruby DSL でぐぐるとわかると思うが、
Rubyの文法で設定ファイルを作ってもプログラムコードっぽく無いようにかけるんだよね。
だからユーザはコード詳しくなくても内容読める。アプリの開発者はRubyだから設定ファイルの解析の必要もない。

あと、VagrantfileもChefの設定ファイルもあれ、素のRubyの文法にしたがってるから
拡張がしやすいとかRubyが採用された理由なのかも

こんな風にかけたりね。
Ruby初学者はちんぷんかんぷんだけどw
%w{vim unzip git mlocate lsof wget}.each do |pkg|
package pkg do
action :install
end
end
0786デフォルトの名無しさん2016/09/03(土) 13:18:38.92ID:G3gUtM0z
>>783
処理速度だけが選択基準ならみんなCを選ぶよ
選択基準は開発者のそれぞれだからね
開発速度とかメンテのしやすさとか好き嫌いとか
0787デフォルトの名無しさん2016/09/03(土) 13:49:20.66ID:RiDSsLxh
ツール・DSLの作りやすさでは、Ruby, Groovy。
設定ファイルを書く際、プログラミング言語っぽくなくて読みやすい。
さらに手続きも書ける

SASS もRubyだろ。
Gradle は、Groovy
0788デフォルトの名無しさん2016/09/03(土) 16:56:47.72ID:w8mOGCX1
perlがいやでrubyに手を出してみたらperlそっくりだったでござる
0789デフォルトの名無しさん2016/09/03(土) 17:03:34.98ID:vCC0oq7q
>>783
一言でいうと、Rubyは遅いけど書きやすいから
0790デフォルトの名無しさん2016/09/03(土) 17:04:16.68ID:vCC0oq7q
>>788
後継だから似てるだろうけど
PerlよりかはRubyの方が
読み書きしやすいと思う
0791デフォルトの名無しさん2016/09/03(土) 18:05:32.81ID:0ZHQPGtd
でもperlっぽい書き方してる人いまだにいるよな
0792デフォルトの名無しさん2016/09/04(日) 09:39:54.24ID:pVjNdAS+
>>783
スクリプト言語の速度なんか目糞鼻糞。
(JavaScriptやLuaあたりだけは別格だけど)
多くのスクリプト言語の用途においてボトルネックになるのは言語の処理速度ではなくIO(ネットワーク、DB、ファイル)。
IOはとんでもなく重い処理なので、
スクリプト言語の実行速度の差なんか誤差レベルで全く無視できる。
あとはちょっとしたツールやバッチだと仮に0.01秒が0.1秒に伸びたところで問題にならないケースも多い。
0793デフォルトの名無しさん2016/09/04(日) 12:31:44.31ID:C66L8/dk
ツール・DSLの作りやすさでは、Ruby, Groovy だから、最初はこれらでCUIアプリが作られる。
その後、GUIが作られる

次にPythonなどで、類似のフレームワークが作られる。
大規模なサイトでは、速度向上するため、Goなどで作られる

だから、Ruby, Groovy には、文系のアイデアマンが多い。
試行錯誤する実験的な人達が集まる

一方、Pythonでは、理系の数学領域の人が多い
0794デフォルトの名無しさん2016/09/05(月) 02:22:06.60ID:SdDvLzP6
ファイル操作をしていて、ファイル名によって(?)期待していない挙動になったので質問させてください。

Windows 10
ruby 2.3.1p112 (2016-04-26 revision 54768) [i386-mingw32]

http://fast-uploader.com/file/7028564377998/

Rubyで書いたのは、引数で渡されたファイル名の末尾に
0795デフォルトの名無しさん2016/09/05(月) 02:24:10.75ID:SdDvLzP6
"_"を足して別ファイル作成する、というもの。
これをテストするために"test.bat"を作って、

> test.bat *.txt

という感じでテストしました。

foo(bar).txt
foo(bar)[hoge-huga_fizz].txt

というファイルに対しては、

foo(bar)_.txt
foo(bar)[hoge-huga_fizz]_.txt

となることを期待しましたが

foo(bar)_.txt
foo(bar)__.txt

となります。

色々試したところ、"_"を"a"に変えたり、ファイル名を変更すると期待した挙動になります。
アンダースコアはファイル名的に特別だったりしますか。
ハマりまくっているので助けてください…
0796デフォルトの名無しさん2016/09/05(月) 02:31:07.88ID:B0VMf5p9
詳細不明なzipファイルなんてみる人少ないと思うよ
codepadなんかで投稿しなおしてみては
07977942016/09/05(月) 02:42:18.42ID:SdDvLzP6
投稿しました。試験用のファイル含めて計4つ分です。
http://codepad.org/phgMbtNs
0798デフォルトの名無しさん2016/09/05(月) 03:00:37.69ID:vxYcnkVP
これオリジナルのスクリプトなんだろうか
投稿のために短く切り詰めたとかじゃなく
そりゃ大変だ
教科書投げ捨てる案件だなコレ
0799デフォルトの名無しさん2016/09/05(月) 03:17:25.42ID:B0VMf5p9
新しく作ったファイルは空だけどいいのか?
まあともかくdst_filenameには想定通りの文字列が来てるみたいだから、batファイルの問題なんじゃないか
windowsのことはわからん
0800デフォルトの名無しさん2016/09/05(月) 04:09:04.01ID:DasxJQQ9
for %%f in ("%*") do (
echo %%f
ruby test.rb %%f
)
こうじゃない?
bat 使わずに ruby だけでやった方が楽だと思うけど。
0801デフォルトの名無しさん2016/09/06(火) 00:57:19.17ID:JK1a3Uc+
bat はバグるからアカン

せめて、PowerShell_ISE だろ
0802デフォルトの名無しさん2016/09/06(火) 17:01:21.99ID:XKZPS+fP
batを使うのはbadだぜ
08037942016/09/06(火) 22:28:35.50ID:yRSBEbJd
ファイル名を受け取っているだけのRuby側は問題無さそうということで
ありがとうございました。
0804デフォルトの名無しさん2016/09/07(水) 06:36:39.93ID:apKIFhKK
TAIL = '_'
exit if ARGV.empty? || !File.exist?(ARGV[0])
src_filename = ARGV[0]
begin
  dst_filename = src.filename.sub(/.\K(\.)(?=[^.]+$)|$/,TAIL+'\1')
end while File.exist?(dst_filename)

p dst_filename
0805デフォルトの名無しさん2016/09/07(水) 10:51:39.61ID:dMgwZegp
ruby 2.3.1

rubyをconfigureかmakeまでしたら
make distcleanやっても消えないファイルがあるんですが仕様ですか?
この状態でconfigure && makeすると
executable host ruby is required. use --with-baseruby option.
なって途中で止まっちゃうんです。何でですか?
0806デフォルトの名無しさん2016/09/07(水) 11:43:57.58ID:mGf42UhL
>executable host ruby is required. use --with-baseruby option.
をそのまま訳すなら「動かせるrubyが必要だから--with-baserubyオプション使えよ」って事になる
ぐぐったら色々出てくるけど、ソースからコンパイルしてインストールしようとしてるの?
情報不足だからこれ以上はわからない

インスコするならrbenvとかRPM使ったほうが楽に入れられると思う
0807デフォルトの名無しさん2016/09/07(水) 12:03:10.18ID:YSZpbVen
>>794-795 >>797 >>803
おまいが悪い
ruby 側の問題

ループ中でファイルが増えてるので
同じファイルにアクセスし続けてる

ファイル一覧を一旦リストに入れてから処理すれば成功するだろう
0808デフォルトの名無しさん2016/09/07(水) 12:05:38.78ID:YSZpbVen
windowsの場合だけ問題が起こるなら
原因はディレクトリのソート順かもしれんな
いずれにしてもループの要素をループ中で増減するのは危険
0809デフォルトの名無しさん2016/09/07(水) 21:57:51.62ID:tAhMeQ6s
rubyはじめるわ!
0810デフォルトの名無しさん2016/09/08(木) 00:34:49.37ID:zamWLbBn
>>794-808
a_.txt ファイルが作られた後、それがbatのループに拾われて、
a__.txt ファイルが作られるとか?

別のディレクトリに、ファイルを作るとか、
ループ終了後に、まとめてファイルを作るなど、排他的に処理すべき

>>805
>make distcleanやっても、消えないファイルがあるんですが、仕様ですか?
makefileの、distcleanの所を見れば?
0811デフォルトの名無しさん2016/09/08(木) 09:23:30.37ID:gPBbc6Mn
batファイルの引数以外のファイルは拾われないでしょ
別に問題ない
0812デフォルトの名無しさん2016/09/08(木) 17:03:47.71ID:vq3pb7wp
質問させてください
以下のようなJSONファイルをJSON.parseしてhogeに格納しました
[ { "id":"1","kana":"あ","boin":"a" } ]
この状態で「p hoge.class」するとArryを返されます

JSONファイルをこうすると
{ "id":"1","kana":"あ","boin":"a" }
Hashを返されます

[{…},{…},{…}]のJSONファイルをHashに格納したいのですが
なにか良い方法はありませんでしょうか
よろしくお願いします!
0813デフォルトの名無しさん2016/09/08(木) 18:11:48.06ID:uHWEQ8CC
>>812
[ { "id":"1","kana":"あ" }, { "id":"2","kana":"い" }, { "id":"3","kana":"う" } ]
がどう変換されたいのか書いてみて。
0814デフォルトの名無しさん2016/09/08(木) 20:24:23.21ID:gPBbc6Mn
hash1, hash2, hash3 = [{・・・}, {・・・}, {・・・}]
0815デフォルトの名無しさん2016/09/08(木) 21:19:39.88ID:5PY6byd9
ひとつのdictには一組しかないケースじゃないん?たぶん
hoge.inject({}) {|result, item| result.merge(item) }
hoge.inject({}, &:merge) # 省略形
0816デフォルトの名無しさん2016/09/08(木) 21:29:09.66ID:s09Hu+LE
injectにProc渡せるようになったの?
0817デフォルトの名無しさん2016/09/08(木) 22:09:36.89ID:gPBbc6Mn
[*1..9].reduce(&proc{|a,b|a+b}) #=> 45
[*1..9].reduce(&lambda{|a,b|a+b}) #=> 45
少なくとも1.8.7の頃からできるよ
0818デフォルトの名無しさん2016/09/08(木) 22:21:38.10ID:s09Hu+LE
Symbolじゃないとダメだと思い込んでた
inject/reduceは意図的に両方OKな設計にされてるのね
0819デフォルトの名無しさん2016/09/09(金) 04:17:17.09ID:LpeB3e0i
複数のハッシュ群を、Arrayにいれておいて、取り出して使えば、いいだけ

ary = [ { "id":"1","kana":"あ" }, { "id":"2","kana":"い" }, { "id":"3","kana":"う" } ]

h = ary[1]
p h
{:id=>"2", :kana=>"い"}
0820デフォルトの名無しさん2016/09/09(金) 07:40:28.22ID:Lk44lMhw
>>794
bat でやりたいことは、コマンドライン引数のワイルドカード展開なんだろうけど、
# test.rb
p ARGV
---
test.rb *.txt
って、やってごらん。

マニュアルに書かれているようにワイルドカード展開に `*', `?', `[]', `**/' が使える。
Windows環境で []等を含めたければ ''括る、とも書いてあるね。
0821デフォルトの名無しさん2016/09/09(金) 13:22:13.98ID:nAt2a2k9
>>814
そのままやればいいんじゃないの?
hash1, hash2, hash3 = JSON.parse(json_string)
0822デフォルトの名無しさん2016/09/10(土) 11:26:54.07ID:0WfpQ0VB
>ruby -e " p false && echo;p :end"
false
:end
>ruby -e ' p false && echo;p :end'
false
p :end'

Windowsで'-e'に対してシングルクォート(')でスクリプトを書くと
'|' や '&' や '&&' がコマンドプロンプトのコマンドとして認識されてしまうんですがおま環ですかね?
ruby 2.3.1p112 (2016-04-26 revision 54768) [x64-mingw32]
Windows8.1(x64)
0823デフォルトの名無しさん2016/09/10(土) 11:36:17.02ID:0WfpQ0VB
あ、なんかすごくアホな質問してました
無視してくださいorz
0824デフォルトの名無しさん2016/09/10(土) 13:37:43.64ID:QUVRyXDh
なんかムラムラするなお前
0825デフォルトの名無しさん2016/09/11(日) 16:04:49.34ID:4fbcKkyu
変数strにはさまざまな文字列が入る可能性があり"apple"か"banana"のどちらかが入っていたときのみtrueを返すようにしたいのですが、
どのように書けばよいのでしょうか

str == (("apple") || ("banana"))

のようにかけるかと思ったのですがうまくいきませんでした
これは論理演算子の左辺がfalseだった場合、右辺は実行されないというrubyの仕様によるものだということはわかったのですが、
ではどうしたらいいのかということがわかりません
0826デフォルトの名無しさん2016/09/11(日) 16:06:07.87ID:qOBSijlm
((str == "apple") || (str == "banana"))
0827デフォルトの名無しさん2016/09/11(日) 16:16:38.56ID:4fbcKkyu
>>826
教えていただきありがとうございます
助かりました
0828デフォルトの名無しさん2016/09/11(日) 16:32:54.36ID:UPswGxCa
%w[apple banana].any?{|s| s == str}
!!(str =~ /\A(apple|banana)\z/)
やり方はいろいろ
0829デフォルトの名無しさん2016/09/11(日) 18:08:52.74ID:7mVeUw5e
['banana','apple'].include?(str)
0830デフォルトの名無しさん2016/09/13(火) 08:22:10.35ID:LgDBG7c/
> これは論理演算子の左辺がfalseだった場合、右辺は実行されない
0点


論理和
論理積

コード(演算子)の処理順序

などを少し整理する事をすすめる
0831デフォルトの名無しさん2016/09/13(火) 16:29:06.06ID:aXWSAFy4
あるサイトページをnokogiriで拾うと、正規のURLと文字化けしたURL(%などが含まれる)の2種類のURLで同一の情報を拾ってしまいます。
正規のURLだけの情報えお拾いたいのですがどのような方法がありますでしょうか?
0832デフォルトの名無しさん2016/09/13(火) 16:35:24.92ID:aXWSAFy4
ちなみに、

anemone.skip_links_like /除外対象のURLパターン/

で文字化け部分を指定しても改善にはいたりませんでした。
0833デフォルトの名無しさん2016/09/13(火) 16:36:46.35ID:80RPfzdF
文字化けというのはURLエンコードのこと?
0834デフォルトの名無しさん2016/09/13(火) 16:45:49.24ID:aXWSAFy4
>>833
URLエンコードです。
デコードすると正規のURLに変換できます。
0835デフォルトの名無しさん2016/09/13(火) 16:46:32.94ID:Z1s//V7/
取得したURLをすべて%付きに変換(正規化)するだけじゃないの?
%なしを正規として扱うのはわかってやらないのならオススメしない。
0836デフォルトの名無しさん2016/09/13(火) 16:51:13.41ID:80RPfzdF
デコードしていく方法で考えたらいいんじゃないかな
一応検索したら出てきたもの
http://qiita.com/foloinfo/items/435f0409a6e33929ef3c
0837デフォルトの名無しさん2016/09/13(火) 17:04:47.99ID:mdhMcfhG
nokogiriじゃなくてanemoneの問題だろ
focus_crawl で、いらないとお前が思うリンクを弾いたら?
0838デフォルトの名無しさん2016/09/13(火) 17:19:43.00ID:aXWSAFy4
>>836
参考リンクの情報ありがとうございます。
一通り試してみますm(_ _)m

>>837
ご返信ありがとうございます。
具体的に申しますと、

[ → %5B
] → %5D

のように、カッコ部分がエンコード/デコードで重複して出力されます。
link.to_s.matchで[●●]や%5B●●%5Dといった条件付けで巡回ページを指定しても、
両方のパラメータが出力されてしまうようです。
0839デフォルトの名無しさん2016/09/13(火) 19:00:51.61ID:sMHYkxL7
正規化して重複したら弾くだけじゃないの?
0840デフォルトの名無しさん2016/09/15(木) 01:10:39.64ID:EGe9UG5c
moduleの中でプライベートなインスタンスメソッドを定義するのって変?
クラスにincludeした際にmoduleの別のインスタンスメソッドから呼び出すために用意してみたんだけど…
ちなみにクラスメソッドのような使い方は想定してないのでmodule_functionとかは利用しなかった
0841デフォルトの名無しさん2016/09/15(木) 19:46:09.23ID:8swlNZts
data = [ { :name => "foo", :address => "fugafuga"},
{ :name => "bar", :address => "piyopiyo"} ]

↓で「data」の中のハッシュを取り出せました

data.each do |list|
puts list[:name]
puts list[:address]
end

「data」から「:address」に"fuga"を含むハッシュだけを取り出したいんですがうまくいきません
どうかアドバイスをお願いしますm(_ _)m
0842デフォルトの名無しさん2016/09/15(木) 20:05:06.44ID:2bVUIpAa
data.select{|it| it[:address] == "fugafuga" }
0843デフォルトの名無しさん2016/09/15(木) 21:56:41.38ID:4Lbf8yku
>>842
ありがとうございます
試して見ます!
0844デフォルトの名無しさん2016/09/15(木) 23:26:56.53ID:UCCDVfNQ
横レスだけど、>>842を試してみた

https://ideone.com/xp2IB6
0845デフォルトの名無しさん2016/09/16(金) 01:04:31.60ID:egLfcP1P
たびたびすいません
fugafgaではなくgafで抽出したい場合は正規表現使う感じでしょうか
0846デフォルトの名無しさん2016/09/16(金) 06:12:33.38ID:DLAZUyzS
リファレンス読もうselectはブロック内で真を返すもののみ残すので正規表現でいけるよ
0847デフォルトの名無しさん2016/09/16(金) 07:56:10.76ID:6a7QMzs2
Effective Ruby の項目10に書いてあるけど、

構造化データを扱う際、Hashの配列よりも、
クラスまたは、Struct(簡易クラス、クラスジェネレータ)のような専用の型を、使った方がいい

data[:name]
キー名のような実装の詳細が、隠蔽されず表に出てくる。
また、存在しないキーは、nilとなる

Person = Struct.new(:name, :address) #定数に代入
data = Person.new("foo", "fugafuga")
data.name

Structでは属性になるから、getter, setter も付いているし、
存在しない属性名でアクセスすると、NoMethodErrorになる
0848デフォルトの名無しさん2016/09/16(金) 09:30:54.73ID:DLAZUyzS
>>847
複雑にネストしたJSONとかでもそっちのが良いの?
うまく使いこなせる気がしない
0849デフォルトの名無しさん2016/09/16(金) 09:37:52.73ID:6a7QMzs2
>>845
data.select{|it| it[:address].match(/gaf/) }
0850デフォルトの名無しさん2016/09/16(金) 09:44:38.44ID:6a7QMzs2
型として固定されている場合は、クラス・Structの方がいい

一方、項目がコロコロ変わるような場合、
何の項目が来るのか、わからない場合は、Hashがいい
0851デフォルトの名無しさん2016/09/16(金) 10:32:56.00ID:S3qmK1Rf
>>850
EffectiveRubyの項目10を読んでみました
プログラミング初心者なので書いてあることの半分も理解できませんが
クラス化して汎用性のあるものを作れるように最初から読み込んでみます!

なんとなくやってみたいことが動くというところまでは行きたいので
文字のマッチングから>>841の「data[0]」を出力できるところまでやってみたいと思います
ありがとうございます!
0852デフォルトの名無しさん2016/09/16(金) 23:44:30.69ID:6a7QMzs2
初心者には、EffectiveRuby は難しい。
まず「たのしいRuby 第5版、2016」で文法を勉強すべし

クラス・Structは、DBのレコードのように、項目が固定されている場合に使う

一方、Hashは、事前に項目(キー)がわからない場合。
例えば、文章に出てくる英単語を、使用回数が多い順に並べるとか
0853デフォルトの名無しさん2016/09/17(土) 00:12:19.00ID:PduQX1gX
言語リファレンス読めて習作いくつか書けたら
そのレベルの本はいらんやろ。
0854デフォルトの名無しさん2016/09/17(土) 15:43:11.73ID:3YKrhMdt
obj = Foo(x)
みないた、newを使わないインスタンスの生成方法って可能ですか?
以前どこかでこの形を見たような記憶があるのですがとてもあやふやで、
確認しようと色々さがしてみたら見当たりませんでした
やはり記憶違いでしょうか?
0855デフォルトの名無しさん2016/09/17(土) 15:43:54.52ID:VbfmfVd0
>>854
Foo というメソッドを定義すればいい
0856デフォルトの名無しさん2016/09/17(土) 18:42:02.15ID:9X+eFsUZ
任意の枚数のトランプを仕分けするプログラムで悩んでいます。
最初にカードの枚数が与えられ、次にカードのシンボルと数字がスペース区切りのセットで与えられます。
例えば、スペードの5なら「S 5」と言った感じです。自分はまだ初心者なので効率的なやり方がわからず、
とりあえず、case文で場合分けして配列に入れるやり方を考えてみました。以下が組んだコードです。

num=gets.to_i
s=[]
h=[]
c=[]
d=[]

i=1
while i<=num
symbol, numeric = gets.chomp.split
case symbol
when symbol=="S"
s<<numeric
when symbol=="H"
h<<numeric
when symbol=="c"
c<<numeric
when symbol=="d"
d<<numeric
end
i+=1
end
print s
とりあえず確認がてらスペードの配列を表示させようとしたら、空配列しか返ってきません。どの部分がおかしいのか
ご指摘いただけませんでしょうか。
0857片山博文MZ ◆T6xkBnTXz7B0 2016/09/17(土) 19:13:41.02ID:VM86FVmf
>>856
大文字と小文字が混じってるね。
0858デフォルトの名無しさん2016/09/17(土) 19:21:36.45ID:Bzzyu0/Q
>>856
case when構文がおかしいので再確認を

caseで場合分けせんでも
cards = Hash.new{|h,k| h[k] = [] }
while i <= num
symbol, numeric = gets.chomp.split
cards[symbol] << numeric
i += 1
end
でいいんじゃないかなと思うんだが
0859デフォルトの名無しさん2016/09/17(土) 19:39:53.49ID:9X+eFsUZ
>>857
うぬ・・・いつのまに・・・めんぼくない
>>858
おお、動きました。すごいな。あまりよくわからないけど、なんとなくわかりました。ありがとうございました。
とにかく、「動いた」のが素晴らしい。あと、できれば、前述のコードが意図したとおりにならない理由を
教えていただけるとありがたいです。
0860デフォルトの名無しさん2016/09/17(土) 21:27:40.73ID:owPS/qUi
だからcaseの構文がおかしいっていわれてるじゃん!

case symbol
when 'S'
s << numeric
......

まあこの場合は when 'S' then s << numeric と1行で書くのもアリ
0861デフォルトの名無しさん2016/09/17(土) 22:34:10.05ID:/l22qB3W
>>854
RubyやめてPythonへ行けばいい
0862デフォルトの名無しさん2016/09/17(土) 23:58:36.86ID:owPS/qUi
>>854

class Foo
  def self.[](a)
    new(a)
  end
end

foo = Foo[0]
p foo.class #=> Foo
0863デフォルトの名無しさん2016/09/18(日) 09:35:45.27ID:MJhMf8Pu
>>860
なるほど!書かれるまで全く気付かなかった・・・確かに書き方がおかしい
ありがとうございます。
0864デフォルトの名無しさん2016/09/18(日) 17:41:19.27ID:aAaRWXxI
シンタックスエラーごときを自分で直せないならプログラマの素質なし
0865デフォルトの名無しさん2016/09/18(日) 17:53:33.43ID:hCSpHgBW
エラーとバグは違う
0866デフォルトの名無しさん2016/09/18(日) 20:19:58.81ID:arvHcK2+
symbol === true が falseってだけでエラーではない
0867デフォルトの名無しさん2016/09/18(日) 21:46:51.64ID:zoqzORWf
この場合はおすすめしないけど、
case symbol を
case だけにすれば、if 〜 elsif 〜 elsif 〜 相当のことが出来る。
条件式の位置が揃うので、if,elsif より良い感じ。
0868デフォルトの名無しさん2016/09/18(日) 23:03:18.09ID:7E6Tur9d
>>862
ありがとうございました
やはり記憶違いのようでした
ですが、ググッている時に[]=のオーバーロード(?)に関する話を見つけられました
下の感じのコードです
class Foo
def []=(a,b,c,d)
p a,b,c,d
end
end
Foo.new()[1,2,3]=4
0869デフォルトの名無しさん2016/09/18(日) 23:41:47.34ID:oCekGsiM
Aサイトを巡回するクラスを作ったとします
0870デフォルトの名無しさん2016/09/19(月) 12:13:31.03ID:iIvzjj/t
>>856
トランプのカードでは、カード[マーク][数字]のように、
2次元配列で管理すると、うっとおしいから、1次元配列にした方がいい

それで幾つか、変換関数を作っておく
0871デフォルトの名無しさん2016/09/19(月) 13:04:45.74ID:GqLEG2EI
>>867
いろいろな表現の仕方があるんですねー

>>870
なるほど…自分はまで全然経験値が足りないので、とにかく動きさえすればいいやと思って
コードを組んでるのですが、これがまた見事に動かないという…
とにかく数をこなそうと思います。ありがとうございました。
0872デフォルトの名無しさん2016/09/19(月) 16:36:48.51ID:H3IN7nVe
なんであらゆる面でPythonに劣っていると言われるRuby使ってるの?
Pythonじゃあ駄目なの?
利点と差別化を教えて
0873デフォルトの名無しさん2016/09/19(月) 16:40:16.95ID:fIqWe4kn
Pythonは行数が増える。
特に無名関数、クロージャーがすごく書きづらい。


あとデバッグ用にわざと目立つように行頭にprintくのが出来なかったり
行を入れ替えたりするだけでインデントを揃えさせられるのが面倒。
0874デフォルトの名無しさん2016/09/19(月) 18:19:57.44ID:jZTV89ee
>>872
使ってるのはRubyじゃなくてRails
単体でバッチ処理書いたりするときはPython使うわ
RoRと同等の使い勝手のPython on Railsがあれば迷わず乗り換えるけど、
やっぱりRubyはフレームワークのDSLとして使うには最適な言語なんだと思うよ
0875デフォルトの名無しさん2016/09/19(月) 18:22:24.29ID:EdcTl4fm
>>872
> なんであらゆる面でPythonに劣っていると言われる
どこでその情報を手に入れたのか知らんが、「あらゆる面で」とかいうdisり
ワードをぶっこんでるような記事に論理性はほぼないから質の低さを笑うぐらいしか
読む価値ないよそれ
0876デフォルトの名無しさん2016/09/19(月) 19:49:24.51ID:FmjNH1Zy
Ruby on Railsは神
0877デフォルトの名無しさん2016/09/20(火) 00:19:19.79ID:w6mPkDpe
滅びろ
時代遅れの言語よ
0878デフォルトの名無しさん2016/09/20(火) 01:37:58.83ID:fS5Ni7aU
時代遅れのC言語には効かなかった
0879デフォルトの名無しさん2016/09/20(火) 08:18:08.16ID:9l0NUqqb
滅びろ
キッシュイーターよ
0880デフォルトの名無しさん2016/09/20(火) 09:49:01.89ID:Xg0W+RA8
ミニツクも消えてるしRuby学習用のサイトが少なくて幻滅しました、
Pythonに乗り換えます
0881デフォルトの名無しさん2016/09/21(水) 16:10:02.25ID:zFZPh8Mh
Matrixライブラリをつかって行列の計算を試しているんだけど、
頂点(xyzの3要素)を列ベクトルとして、4x4の変換マトリクスに掛け合わせると
:in `*': Matrix dimension mismatch (ExceptionForMatrix::ErrDimensionMismatch)
というエラーがでちゃう

これ、頂点側にもw要素必要ってことなの?
0882デフォルトの名無しさん2016/09/21(水) 16:18:10.30ID:23vZJdQL
そりゃ4次の正方行列と3次元の列ベクトルとじゃ積が定義できんわな
0883デフォルトの名無しさん2016/09/21(水) 16:30:40.93ID:zFZPh8Mh
w要素追加してもエラー出るからおかしいなと思ってたんだけど、
列ベクトルじゃなくて行ベクトルかけてた
ほんとごめんなさい
0884デフォルトの名無しさん2016/09/21(水) 17:18:28.43ID:23vZJdQL
Rubyより先にすこし線形代数やったほうが良い気がする
0885デフォルトの名無しさん2016/09/21(水) 17:23:40.85ID:ib8am8Zc
>>881
馬鹿には無理
0886デフォルトの名無しさん2016/09/21(水) 21:50:37.29ID:PZB1d7j5
問題集のオススメサイト、あったら教えて欲しい
http://vipprog.net/とpaiza見てるんだけど、前者はちょっと問題が難しくて、paizaはBまでやったけど結果が出ないのでわかりにくい
便利なサイト、分かりやすいのがあれば嬉しい
0887デフォルトの名無しさん2016/09/21(水) 21:55:25.11ID:23vZJdQL
anarchy golf
0888デフォルトの名無しさん2016/09/21(水) 22:36:45.56ID:lN+U+lYo
>>886
yukicoder がいいと思うよ
0889デフォルトの名無しさん2016/09/21(水) 23:23:10.02ID:lMM9KPqs
時代遅れすぎRuby
0890デフォルトの名無しさん2016/09/21(水) 23:27:54.15ID:lN+U+lYo
>>889
そう思う人はわざわざ書き込まないよ
なぜなら時代遅れなものに興味は持たないからねw
0891デフォルトの名無しさん2016/09/22(木) 00:55:23.81ID:gXd2kX85
あなごるは英語でムリポ……プログラマは英語も出来て格好いいなぁ
ユキコーダーを下からぽちぽちやっていきます
ありがとう
0892デフォルトの名無しさん2016/09/22(木) 01:31:58.64ID:XjtOZmEL
>>891
そのまま競技プログラミングの世界においでw
この世界で使う英語はパターンも対して多くないから、yukicoder で問題パターンをある程度把握できたら
海外の問題文もそれほど苦もなく読めるようになるよ
0893デフォルトの名無しさん2016/09/23(金) 00:04:42.79ID:sc2fhvDP
PythonとRubyで迷ってる
進めるべき参考書を入門書からフローチャートで教えてくれたら入信しようと思ってるんだが教えてくれない?
0894デフォルトの名無しさん2016/09/23(金) 00:07:59.29ID:jTBVehdT
>>893
入信とか考えてたらロクなことないよ
どっちも使えるようになるぐらいの気概を持たなきゃ
0895デフォルトの名無しさん2016/09/23(金) 01:22:30.21ID:FvMngb//
Webサイト制作ならRuby
機械学習ならPython
0896スッキリ厨2016/09/23(金) 01:25:28.31ID:Krl8LY6k
まずこの本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014

その後、この2冊をこの順に読む
たのしいRuby 第5版、2016
みんなのPython 第3版

クラスを使わないのなら、スッキリを飛ばしてもよい。
ただし、オブジェクト指向の概念がわからない

たのしいだけ読んで、プログラミングするのもいい。
ただし、たのしい・みんなは表裏一体だから、一緒に読むと効率的
0897デフォルトの名無しさん2016/09/23(金) 12:33:08.19ID:rjSPjZ1K
>>893

>>896 のはどれも読んでないけど
使えるようになったよ
0898デフォルトの名無しさん2016/09/23(金) 12:38:44.06ID:cbvburLV
Ruby1.9.2なんだけど
rbファイルをrequireするときファイル名に日本語(マルチバイト文字)が混ざってるとno such file to loadになってしまうのはどうすれば…
1.8系では普通に日本語名のファイルも読み込めてたんだが
0899デフォルトの名無しさん2016/09/23(金) 12:39:54.36ID:rjSPjZ1K
エンコード確認汁
0900デフォルトの名無しさん2016/09/23(金) 12:57:09.05ID:jTBVehdT
>>898
1.9.2って…相当化石だぞ
2.3 以降使おうぜ
0901デフォルトの名無しさん2016/09/23(金) 14:01:02.74ID:SuD2ulXn
Ruby初歩学の書を読んだら、ネットのリファレンス見ながらの「リファクタリング:Rubyエディション」がおすすめ
rubyだけじゃなくどんな言語にも適用できるめっちゃ便利なコードの書き方や考え方が書いてある
しかも抽象的じゃなく、具体的で簡潔なコード中心だから面倒くさくなくて中高生でも理解できる

個人的には、テストの章とテクニックカタログの章だけは軽く流すか必要になってから読めば良いと思ってる
0902デフォルトの名無しさん2016/09/23(金) 14:19:37.45ID:AqTRNsCZ
悩んでる暇があったらファイル名修正しる

ってわけにはいかんのかの
0903デフォルトの名無しさん2016/09/23(金) 16:07:06.95ID:FvMngb//
納期があるならファイル名修正するで正しいが
そうでないならエラーの原因を徹底的に探すのも正しい
0904デフォルトの名無しさん2016/09/23(金) 16:08:52.20ID:FvMngb//
>>901
良書だけど初心者には意味が分からないと思う
あるていどオブジェクト指向に慣れてないと
0905デフォルトの名無しさん2016/09/23(金) 16:15:35.95ID:C/wzQI6i
たのしいRubyを一通り読み終えたけど、こっからが難しいな

先日教えてもらったyukicodeをたまにやりつつ、実際何かを作ってみたい
環境構築しようとNetbeans入れたりなんやらしてるけどエラーが出てきてその度にくじけそうになるぜ
0906デフォルトの名無しさん2016/09/23(金) 19:36:41.06ID:ytBluy/j
RubyはUNIXで使う言語です
環境構築の最初の一歩はまずWindowsを投げ捨てるところから
0907デフォルトの名無しさん2016/09/23(金) 21:49:29.32ID:SuD2ulXn
winで非インストール版のバイナリ(ソースコードじゃないやつ)なら、落としてきてC:\直下にrubyフォルダー作ってその中で解凍して、
すでにある環境変数のPathの値に「;C:\ほにゃらほにゃら\ruby\bin」のパスを一番後ろに追加して書き加えればいいんじゃないの?
公式に挙げられている、ActiveScript版のrubyをダウンロードするなら、
OSがwin32ならRuby-x.x.x (x86-mswin32)の好きなヴァージョン、win64ならRuby-x.x.x (x64-mswin64)の好きなヴァージョンを選べばいい
インストール版はPathを処理してくれるかどうか知らないので、インストール後に自分でPathの値が更新されているか確認して
後はコマンドプロンプト(ランチャーもしくは「ファイル名を指定して実行」でcmdを入れて)起動させて、
「ruby foo.rb」でも「ruby bar.rb」でも「ruby test.rb」でも好きなように
rubyのコード書いていくなら「メモ帳」か「さくらスクリプト」で、保存時に文字コードをUTF-8やSJIS等に自由に変えられる奴が一番楽かつ安全に始められると思う
OSのヴァージョンによってコマンドプロンプト等のコンソールの入力がSJISだけかUTF-8可なのか変わって、最新のならUTF-8で扱われる、て聞いた
Rubyも1.8、1.9、2.0〜の、三つの系統で文字列コードの扱いが異なる
とりあえずは、「p "halloween"」と書いて、文字列の出力を成功させるといい
0908デフォルトの名無しさん2016/09/23(金) 23:17:21.60ID:41Vs6wmq
俺も楽しいRuby片手に勉強してる
win7だからAptanaStudio3を入れてやってけど、結構色々できて楽しいわ
ただ実行はできるけどデバッグしようとすると長々とエラーを吐くから今後が心配
byebugとかpry-byebug入れておいたから最終的にこれで良いのかな
0909デフォルトの名無しさん2016/09/23(金) 23:48:28.26ID:SuD2ulXn
ptintfデバッグならぬpデバッグだったから、
rubyのデバッガ関係の話は全然知らない
どうなってるんだろ?
0910デフォルトの名無しさん2016/09/24(土) 00:31:31.06ID:2/Geubwu
クラス設計というかモジュール分割というか
そういうのが良くわからん
似たような処理が増えてしまう
0911デフォルトの名無しさん2016/09/24(土) 00:57:19.72ID:ODF3DSxf
>>910
文系だな
数学の素養がない
因数分解からやり直せ
0912デフォルトの名無しさん2016/09/24(土) 01:41:30.89ID:Bym2Ra4c
どのようにクラスや機能、モジュールにわけるかの方法を知ることより、
なぜ分けなければならないかの理由を知る事こそが一番必要なんだ
これがわかっていないとクラス、モジュール等に分けて使う意味が希薄化して、
最終的に使わなくても良いじゃないかとなってしまう

で、上の方で出たリファクタリング:Rubyエディションなんだけど、
それがずばり書かれてある
どう分けるかという方法より、なぜ分けなければならないのか理由が書かれてある
なぜ分けなければならないのか、を理解するとどのように分けるのか自ずと判明し、
頭空っぽでコードを即、書けるようになる
実はこれは、リファクタリングを行うまでにやっておくべき事で、
リファクタリングはこの上に成り立っている
まぁ、本にも書いてある事だけど、最初から見通しの良いコードを悩んで生み出そうとして時間を浪費するより、
リファクタリングしやすいコードを頭空っぽで躊躇なく書いていって、
汚くなったらリファクタリングして見通しをよくしていくってスタイルが、最終的に一番良いんじゃないかな
(何故なら、絶対に当たる将来の予言なんかできないから、未来を想定して絶対に変更しないコードなんて人間には書けない。
だからこそクラスやモジュールをつかってコードを再利用し、かつ書き直し安いコードを頭空っぽで書いて行きましょうって事)

当の本も抽象的な事より、具体的で簡潔なコード中心だからRubyさえ出来れば誰でも簡単に理解できる
0913デフォルトの名無しさん2016/09/24(土) 03:29:05.33ID:ts45zeFc
>>911
お前一年位前にも同じレスしてなかったか
0914デフォルトの名無しさん2016/09/24(土) 06:45:49.04ID:jSgJTuJa
>>907-908みたいに突っ張ってる奴も結局みんなMacに乗り換えちゃうんだよな
気持ちはすごくよく分かるが、くだらない落とし穴で時間を無駄にしてるのがだんだんアホらしくなってくる
後々経験として役に立つ苦労ならともかく、そんな暇があったらUNIX触ってた方がよほど役に立つというね
ソースは俺
0915デフォルトの名無しさん2016/09/24(土) 09:27:40.42ID:ctlnAmJS
え、「くだらない落とし穴」ならMacも相当なモンがあると思うがw
0916デフォルトの名無しさん2016/09/24(土) 10:18:30.88ID:2/Geubwu
>>912
ありがとう
0917デフォルトの名無しさん2016/09/24(土) 10:44:48.13ID:fvqTVwn4
>>915
UnixなMacならRuby使うにあたってはWindowsより落とし穴は確実に少ないと思うぞ

Windowsもbash on Windowsがもうちょっとまともに使えるようになれば状況は変わるかも
しれないけどね
0918デフォルトの名無しさん2016/09/24(土) 13:11:53.19ID:Bym2Ra4c
そこは普通にお気にのディストリをVMWareに入れてやればいい
winかlinuxならどちらかにこだわる人がいて、
その理由も双方納得出きるほど合理性がある
でもmacはこだわる必要性はまったく無いだろ

何かあんの?
0919デフォルトの名無しさん2016/09/24(土) 15:22:41.06ID:fvqTVwn4
>>918
MacOSはなんちゃってUn*xではない、正統なUnixだからね
0920デフォルトの名無しさん2016/09/25(日) 10:00:28.63ID:WGcjTmiY
Railsをやりたくて半日インストール作業をやってみたんだけどnio4rのエラーが出て先へ進めない
extconf failed, exit code 1が出てBundleUpadateやDevkitの再インスコやってみたけど変わらず

何か解決方法を知っている人いたら教えてください
0921デフォルトの名無しさん2016/09/25(日) 10:11:48.07ID:Yid/aIUh
それだけで分かる人がいると本気で思っているならプログラミングはやめておいた方が良い
0922デフォルトの名無しさん2016/09/25(日) 10:22:55.56ID:WGcjTmiY
>>921
エスパーじゃないんだから分かる訳無いだろ
質問の仕方も分からない初心者なんだからそういうツッコミはもうちょっと長めに頼む
0923デフォルトの名無しさん2016/09/25(日) 11:55:30.67ID:dZs079/I
>>922
・使ってるOSとビット数
・Railsのインストールに使ったものとそのバージョン
・何をやろうとしてそのエラーが出たのか
・多分コマンドラインにエラーが表示されてるからそれをまるごとコピー
これぐらいは最低限欲しい
0924デフォルトの名無しさん2016/09/25(日) 12:00:53.76ID:ISX7o04+
>>922
そのレベルならまずは本買ってきて一字一句違えずにその通りやれ
0925デフォルトの名無しさん2016/09/25(日) 13:23:10.46ID:6V8k6iac
railsはバージョン関係でトラブルこともあるのでrailsinstaller使うのもありではないかと
0926デフォルトの名無しさん2016/09/25(日) 13:45:50.88ID:hrPU7kVw
「RoR インストール エラー」で検索!
0927デフォルトの名無しさん2016/09/25(日) 14:26:19.46ID:xgjFkYJ1
ArrayでFIFOバッファを作ったとしてスレッドAからArray#concatで追加
スレッドBからArray#eachで読み出したいと考えています
eachで読み出している最中に要素が追加されても問題ないでしょうか?

whileで条件を確認しながらArray#shiftで読むと遅いので出来ればArray#eachを
使いたいのですが・・・
0928デフォルトの名無しさん2016/09/25(日) 14:29:48.97ID:oyerjsz0
>>927
素直に Thread::Queue 使えばええんとちゃうのん?
0929デフォルトの名無しさん2016/09/25(日) 14:39:24.97ID:hrPU7kVw
読み出している配列を更新してはいけない。
別の配列に、書き込めばいい

そうしないと、バグる
09309292016/09/25(日) 14:41:30.46ID:hrPU7kVw
>読み出している配列を更新してはいけない

スマン。更新じゃなくて、追加だな
0931デフォルトの名無しさん2016/09/25(日) 19:32:28.37ID:YdU0dJzE
>>920
libev-dev が入ってない気がする。
0932デフォルトの名無しさん2016/09/25(日) 21:15:17.31ID:xgjFkYJ1
>>928
そんなのあったっけ・・・っと思ったら2.3から追加された物ですか
今すぐに動かせるのは2.1なので試せていませんが
リファレンスマニュアルを読むとpushで追加しpopで読み出していくようですね
これだと結局whileで条件を見ながらループを回すようですが速くなるのでしょうか?

>>929
バッファを2つ用意して交互に使用しeachで読み出すようにしたらwhile&Array#shiftの
1/3くらいで処理が終わるようになりました。コードの可読性が低下しましたけど
0933デフォルトの名無しさん2016/09/25(日) 21:18:44.25ID:oyerjsz0
>>932
1.9 にも Queue クラスあるよ
0934デフォルトの名無しさん2016/09/25(日) 22:03:00.52ID:xgjFkYJ1
>>933
えっ?リファレンスマニュアルを見てもそれっぽいのはないような・・・
0935デフォルトの名無しさん2016/09/25(日) 22:07:55.11ID:oyerjsz0
>>934
https://docs.ruby-lang.org/ja/1.9.3/class/Queue.html
0936デフォルトの名無しさん2016/09/25(日) 22:29:32.99ID:w3+kVjO9
ID変わっています

>>935
ビルトインじゃなくてそっちかよw
2.1にもあるようなので試してみます
0937デフォルトの名無しさん2016/09/26(月) 14:34:41.04ID:ymOrEJcI
>>932
>コードの可読性

君の経験が足りないだけだよ
09389222016/09/27(火) 07:33:34.37ID:NSert0FA
自分で頑張ってみようと思ったけどギブ。
教えてください。

・Win10 64bit Ruby2.3.1p112 Bundler1.13.1
gem rails installすると
ERROR: Error installing rails:
ERROR: Failed to build gem native extension.

current directory: C:/Ruby23/lib/ruby/gems/2.3.0/gems/nio4r-1.2.1/ext/nio4r
C:/Ruby23/bin/ruby.exe -r ./siteconf20160927-10924-161qu8n.rb extconf.rb
checking for unistd.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
中略
extconf failed, exit code 1

と出てRailsをインスコできないので、対処法ご存じの方教えてください。
よろしくお願いします。
0939デフォルトの名無しさん2016/09/27(火) 08:46:30.98ID:iZeFgu2i
DevKitの設定してないんじゃないかな
DevKitのインストール先で ruby dk.rb init、ruby dk.rb install
0940デフォルトの名無しさん2016/09/27(火) 08:51:36.06ID:NSert0FA
>>939
DEVKITは導入済み
一応再度やってみたら
[INFO] Skipping existing gem override for 'C:/Ruby'
[WARN] Skipping existing DevKit helper library for 'C:/Ruby'
と出てきたのだけど、これは既にあるからスキップしたよってことでいいのかな
0941デフォルトの名無しさん2016/09/27(火) 09:37:14.96ID:iZeFgu2i
C:/Ruby23じゃないのか
0942デフォルトの名無しさん2016/09/27(火) 09:40:30.89ID:fC9vfSe2
gem env
RUBY VERSIONが2.3.1である事
RUBY EXECUTABLEが変なのになってないか

ruby -rdevkit -e"puts ENV['RI_DEVKIT']"
Devkitのパスが表示される事
それぞれ確認
0943デフォルトの名無しさん2016/09/27(火) 12:34:25.41ID:l7d7Fmom
>>938
諦めてMac買うかVirtualboxにLinux入れようぜ
Railsならどうせ運用はLinuxなんだからWinで苦労するだけ時間の無駄
0944デフォルトの名無しさん2016/09/27(火) 12:50:04.66ID:H3ALlq6Q
Winで動いたところで運用環境ですんなり動くかというと極めて怪しいしなあ
Ruby on Win自体を否定するわけじゃないがRailsとなるとさすがにやめといた方がいい
Vagrant使えばネイティブと遜色ない使い勝手でVirtualBox上のLinuxのRubyが使えるよ
0945デフォルトの名無しさん2016/09/27(火) 12:52:25.17ID:xpAbcIxp
railsなんて初めてインストールしたけど、sqlite3に罠がある以外は簡単だったよ
0946デフォルトの名無しさん2016/09/27(火) 19:19:06.74ID:X5TalmgP
>>945
あれは酷いよな
結局Ruby2.3だと無理だったからRailsInstalleで入れたからRubyだけ2.2.5だわ
いまだによく分からん
0947デフォルトの名無しさん2016/09/27(火) 20:49:35.70ID:FT4BHNA6
↓mingw版rubyのsqlite3はこのページのやり方で出来る。
http://masamitsu-murase.blogspot.jp/2013_05_01_archive.html

gem uninstall sqlite3でダメなやつを消しておくのを忘れずに
0948デフォルトの名無しさん2016/09/27(火) 23:56:19.00ID:NSert0FA
sqlite3が原因だったようです。
教えてくれた人ありがとう、あなた達はエスパーだ。
0949デフォルトの名無しさん2016/09/28(水) 13:58:43.24ID:5Dppgsl7
何か色々気になっちゃったから改めて色々試したらおかしな事になってたわ……
・環境
win7-64bit
Ruby2.2.5-x64
Rails-5.0.0.1
Apatasudio3

・症状
apatasudio3で新規でrailsプロジェクトを立ち上げると以下の文章が表示されて必要なファイル群が作成されない
$ rails .
sh.exe": rails: command not found

が出てファイル群やgemfileが生成されない
ターミナル上でrails new my-rails-appなどを打ち込んだ場合にはファイル群が生成される

なんでこんなに環境構築するのが面倒なんや……
0950デフォルトの名無しさん2016/09/28(水) 14:04:25.71ID:LrnfCbIH
パスが通ってないのか
0951デフォルトの名無しさん2016/09/28(水) 15:16:47.47ID:5Dppgsl7
>>950
パスを通すっていうのは分かるんだけど、どこのパスを通せば良いのか分からん……
gitのsh.exeがあるフォルダのパスを環境変数のPathに入れてみたけどダメだし
0952デフォルトの名無しさん2016/09/28(水) 15:24:18.75ID:LrnfCbIH
command not found はsh.exeが出してるんだから、rails に通さないと
0953デフォルトの名無しさん2016/09/28(水) 15:31:37.09ID:LrnfCbIH
Windowsだといろいろめんどくさそうね
ちょっとやってみるかなあ

Windows7にRailsInstaller、AptanaStudio3をインストールして、Herokuにデプロイ
http://twosquirrel.mints.ne.jp/?p=4449
0954デフォルトの名無しさん2016/09/28(水) 16:01:25.93ID:5Dppgsl7
>>952
ありがとうー、やっと出来た
C:\Users\(ユーザー名)\.rbenv-win\versions\2.2.5-x64\bin;
を環境変数Pathに入れたらやっと認識してくれた
これでかなり便利になった
0955デフォルトの名無しさん2016/09/28(水) 17:05:40.29ID:5Dppgsl7
ついでにやっとこさruby-debug-ideがインストールできた!
ずっとインストールしようとするとエラー出てたけど、やっと原因が分かったわ
俺みたいにやらかした人が居るかもしれんし、書いておくわ

・原因
インストールしたRubyフォルダを別の場所に移動させる
・起きる現状
Debkitのパスが通らなくなり、一部のgem画インストールできなくなる
・解決作
Devkitのconfig.yml(これは調べるとすぐ出てくる)
C:\〜\2.2.4-x86\lib\ruby\site_rubyにある
devkit.rbを開いて、ここに書いてあるPATHも直す
この両方をやるとインストールできたわ
前者は色々書いてあったけど、後ろのやつはどこにも書いてなかったわ
0956デフォルトの名無しさん2016/09/28(水) 17:35:29.75ID:0twLS1po
Devkitのwikiページに書いてあるんだよなぁ
Devkitを再インストールする時は--forceオプション使って
ruby dk.rb install --force
にしろって
0957デフォルトの名無しさん2016/09/28(水) 19:45:58.68ID:gV6SXq7T
なんでみんなWindowsは鬼門だと分かってて手をだすのだろうか
VM 立てる手間の方がはるかに小さいというのに
0958デフォルトの名無しさん2016/09/28(水) 20:56:56.38ID:xWtP4xm9
構築済みのVMイメージどこかにないかな
0959デフォルトの名無しさん2016/09/28(水) 21:04:25.58ID:uPu5A795
Linuxなら構築クソ簡単だからそんなもん要らんよ
いかにWinが時間の無駄だったか痛感することになる
0960デフォルトの名無しさん2016/09/28(水) 21:14:26.77ID:YWcJ1Auf
Queue#popでNo live threads left. Deadlock? (fatal)
が頻発するんですがググっても原因が良く判りません
何がどうなるとこれが出るんでしょうか?
0961デフォルトの名無しさん2016/09/28(水) 21:25:09.93ID:0twLS1po
>キューが空の時、呼出元のスレッドは停止します。
スレッドまだ作ってないor他のスレッド動いてないのにpop呼ぶと死ぬ
0962デフォルトの名無しさん2016/09/28(水) 21:34:14.07ID:gV6SXq7T
>>959
マジアホらしいほど簡単だもんな

rbenv 入れて使いたいバージョンの Ruby をインストールして、あとは Gemfile 作って
bundle install で終了

何か足りなかったとしても apt-get なり yum なりでパッケージ追加するだけでほとんどは
解決という
0963デフォルトの名無しさん2016/09/28(水) 22:21:57.22ID:YWcJ1Auf
>>961
ありがとう。えぇぇ・・・なんつう仕様なんだ。使いにくいだろ
書き込み側のスレッドは読み出し側のスレッドの仕事が終わるまで
生きていなきゃいけないってことじゃないか。めんどくせぇ・・・
0964デフォルトの名無しさん2016/09/28(水) 22:32:46.99ID:gV6SXq7T
>>963
> 書き込み側のスレッドは読み出し側のスレッドの仕事が終わるまで
> 生きていなきゃいけないってことじゃないか。めんどくせぇ・・・

めんどくせえって当たり前の仕様じゃん

書き込み側のスレッドがなくなってしまったら、読み出し側のスレッドがブロックしたときに
もうそこから復帰する手段がなくなるんだから
0965デフォルトの名無しさん2016/09/28(水) 22:53:24.25ID:YWcJ1Auf
個人的には便利そうで使えない・・・
ダブルバッファのほうが速いし制約も少ない。書き込み側スレッドは仕事が終われば終了しちゃっても問題ないし
0966デフォルトの名無しさん2016/09/29(木) 01:23:02.71ID:sOqcQCOx
linux って真っ黒の画面でよくわからないイメージあるんじゃ
0967デフォルトの名無しさん2016/09/29(木) 06:05:14.02ID:Xh0zax2W
Windowsであっても黒い画面が出す英語のエラーメッセージに悪戦苦闘するんだからたいして変わらん
えっWindowsではIDE使う?あらそう

プログラミングに興味ある人の統計的にはLinuxも「できる」→「面白い」「便利」になる割合が高いので試す価値はあるとは思う
WindowsでRubyするのが無駄遠回りとわかるためには知識経験が別途要るのも事実なので最初から無理強いはせんがね
0968デフォルトの名無しさん2016/09/29(木) 06:58:53.52ID:1Mz/tgYS
いったんLinuxでのやり方を覚えたら以後はローカルでの開発ですら間違いなく二度とWinなんか使わなくなる
少なくともRailsやるんなら絶対にLinuxは避けて通れないんだから、どう考えても時間の無駄だな
0969デフォルトの名無しさん2016/09/29(木) 07:23:11.12ID:ZpUMfWKu
脳内で喚いて窓叩きに使ってるだけの一部の精神障害の人を除いて
みんな実際に数ヶ月くらいWindowsで環境整えようとして四苦八苦した結果「やっぱ無駄だわ」という結論になってるので
できればそのへん考慮して立ち止まってくれると幸いではある
あなたより技術があったり経験があったり時間だけはたっぷりあったりする人たちが常用挫折してるのでそのへんを汲んでもらうとw
0970デフォルトの名無しさん2016/09/29(木) 07:55:18.21ID:PwoKthPB
しかしLinuxしかできない奴が有能かというと・・・
0971デフォルトの名無しさん2016/09/29(木) 08:02:22.78ID:1Mz/tgYS
残念だがMatzはWindowsを全然使ってないことで知られている
0972デフォルトの名無しさん2016/09/29(木) 22:28:04.17ID:4TiY9tFk
>>970
んな奴いねーよ
Windowsしか使えない奴やVisualStudioしか使えない奴ならいるがな
0973デフォルトの名無しさん2016/09/30(金) 00:15:46.69ID:88GOzilz
Linux API を、Windows API に変換するので、Ubuntu64 のバイナリがそのまま動く、
Windows Subsystem for Linux (WSL) で、Ruby, Rails をやっている人いる? 調子はどう?

apt-get で、パッケージもインストールできる

日本語も使える端末、ConEmu。
GUI表示用のXサーバー、Xming X Server for Windows
0974デフォルトの名無しさん2016/09/30(金) 17:02:44.30ID:8cA8SzFR
>>972
Linuxしか使えない香具師はいる
コマンドプロンプトで cp hoge fuga とかやって
???になってるひとを見たことがある
0975デフォルトの名無しさん2016/09/30(金) 20:23:55.60ID:dFgkaxUg
>>974
さすがにこれだけWindows機がはびこってる状況でそれはちょっと考えにくいなぁ

と言いたいところだけど、最近はMacもそれなりにユーザがいるので、そっちかもしれない
macOSはLinuxにかなり似てるからね(別物といえば別物なんだけど)
0976デフォルトの名無しさん2016/09/30(金) 21:02:39.15ID:4hxo3I+i
俺もWinはさっぱりだなあ
さすがに世間一般の基準でいえば相当詳しい部類に入るだろうけど、
ADやれとかサーバー作れとかバッチファイル書けとか言われたら全くわからん
0977デフォルトの名無しさん2016/10/01(土) 01:46:14.99ID:mk3uechM
windowsでrubyは良いぞ
何が良いのかって?
それは、windowsでrubyを動かすのが良いんだろ

というかwindowsでのrubyのHowto本、もしくは解説本がでればこの楽しさをわかる人がもっと増えると思うんだけどな
技術評論社やオーム社といった、技術系出版社あたりが出してくれれば
0978デフォルトの名無しさん2016/10/01(土) 01:47:56.65ID:HPdYXbOV
その楽しさを書けよ
意味わからん
0979デフォルトの名無しさん2016/10/01(土) 02:15:08.76ID:bGyuSNJm
エクセルが操作できる
業務が捗る
0980デフォルトの名無しさん2016/10/01(土) 02:18:33.94ID:zpy+n7k9
IronRubyが生きてたらまだしも
0981デフォルトの名無しさん2016/10/01(土) 03:22:58.95ID:KyDhnGoE
現在のOSシェアトップはLinuxじゃないのか?情弱ばかりだけど
0982デフォルトの名無しさん2016/10/01(土) 05:11:52.16ID:WpTrCWkX
Linuxがトップはありえない
0983デフォルトの名無しさん2016/10/01(土) 10:42:36.04ID:rAdXsmVI
Rubyの動作環境としては開発者の数も生み出す金も圧倒的にLinuxがシェアトップでしょ
0984デフォルトの名無しさん2016/10/01(土) 14:31:24.74ID:HPdYXbOV
シェアのグラフなかったっけ?
0985デフォルトの名無しさん2016/10/01(土) 15:04:25.52ID:AS9zp3Ka
Linuxがぶっちぎりでトップだろ
0986デフォルトの名無しさん2016/10/01(土) 15:46:42.68ID:O8RQcCl8
クライアントOSのシェアとしてはLinuxは底辺だけど、開発者用としてはそこそこ行ってる印象
0987デフォルトの名無しさん2016/10/01(土) 16:50:18.79ID:mk3uechM
windows上のrubyのハック本をどこか出してくれないかな
0988デフォルトの名無しさん2016/10/01(土) 16:51:45.55ID:WpTrCWkX
982は開発者以外も含んだユーザー全体のことかと思ってた
0989デフォルトの名無しさん2016/10/01(土) 17:10:34.16ID:rAdXsmVI
>>987
能力のある人は結局UNIXに行っちゃうから難しいだろうね
もちろん987自身も例外ではなく、このままRubyを続けていればいずれ確実にその日が来る
今は信じられないかもしれないが、Rubyはそういうもんだ
0990デフォルトの名無しさん2016/10/01(土) 19:04:58.42ID:cITK0T7f
rubyスレってwindowsがどうのこうの言い続けてるアホが住み着いてるけど
ずーと何の役にも立たねえな
0991デフォルトの名無しさん2016/10/01(土) 20:55:59.75ID:2D+fRjVU
 ずーり     T       T
  ずーり  ,/´ ̄``:ヽ, ,/´ ̄``:ヽ,
        /××× :::::::/××× ::::ヽ
        |∀・ ×× :::::||∀・ ×× :::::|    サァ アキラメロン!
     T  ヽ××× ::::/ ヽ××× ::::/   T   o
  ,/´ ̄``:ヽ, '''''''''''''´´  `'''''''''''''´´ /´ ̄``:ヽ,
  /××× ::::ヽ     ヒ、ヒィー    /      ::::ヽ
  |×・∀・ × :::|    ('A`≡'A`)   |       ::::|
  ヽ××× ::::/  T  人ヘ )ヘ T ヽ      ::::::/
   `'''''''''''´´'/´´ ̄`:ヽ,  ./´´ ̄`:ヽ,`'''''''''''''´´
        /  ××ゝ::ヽ./  ××ゝ::ヽ
 ずーり   |   ×× ・∀||   ×× ・∀|
        ヽ  ××ゝ::/ヽ  ××ゝ::/  ずーり
0992デフォルトの名無しさん2016/10/02(日) 05:55:02.87ID:kFeo4TbM
なんか変なのが沸いてるなと思ったらlinux以外認めない自演厨か
ID変えて書き込んでも構わないが火病だけはやめとけ

それと、rubyのホビー的な楽しさを否定する意図は何なんだろうな?
0993デフォルトの名無しさん2016/10/02(日) 07:07:11.59ID:JfqyOTuc
すまん
本当はLinux以外のRubyを知らなかっただけなんだ
別にRubyの楽しさを否定したいわけじゃない
あらためて考えるとCで書かれているわけだからLinux以外でもRubyを楽しめるんだよな
Win32OLEライブラリだってわざわざ用意されているわけだし
0994デフォルトの名無しさん2016/10/02(日) 07:50:59.20ID:+f7TOXbf
導入で苦労するのは一部の特殊な性嗜好の人を除けば楽しさ以前の問題だろう
WindowsでUbuntuが動くようになったからだいぶ希望が出てきたけど、
そっちが主流になれば昔ながらのネイティブなWindows版Rubyはとうとう完全終了でUNIXに統一されちゃうわけだし
0995デフォルトの名無しさん2016/10/02(日) 08:29:55.68ID:kFeo4TbM
>>993
そうだったのか
俺はてっきりrubyが気に喰わなくて荒らしてるんだと思った
スレ住人を装って扇動したり荒らしたりする手口とか、またいつものpython野郎かと勘違いしたよ
あいつはwindows用rubyを絶対認めたがらない癖があるから
0996デフォルトの名無しさん2016/10/02(日) 09:00:52.33ID:UOjgrslt
WindowsでRubyは認めるがWindowsでRailsはやめとけと言わざるをえない
トラップが多すぎる
0997デフォルトの名無しさん2016/10/02(日) 10:05:31.62ID:k1HK9CGy
>>996
vagrantが楽。
0998デフォルトの名無しさん2016/10/02(日) 10:14:32.30ID:UOjgrslt
>>997
Windows で vagrant 自体がトラップという…
シンボリックリンクの扱いや改行コードの違いなど、そこかしこに罠があるぞw
0999デフォルトの名無しさん2016/10/02(日) 15:21:32.45ID:GX41vvMR
>>977 >>979
そういう用途なら
pythonの方がいいよ
割とマジで
1000デフォルトの名無しさん2016/10/02(日) 15:22:16.56ID:GX41vvMR
次
http://echo.2ch.net/test/read.cgi/tech/1249737531/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 192日 18時間 5分 32秒
10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。