2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Ruby 初心者スレッド Part 58

1 :デフォルトの名無しさん:2016/03/23(水) 21:16:44.36 ID:6HedlyzC.net
プログラミング言語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/

2 :デフォルトの名無しさん:2016/03/24(木) 04:01:05.34 ID:FJvNCHp3.net
たのしいRuby 第5版、2016

Effective Ruby、2015

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

Rubyのしくみ、2014

改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015

3 :デフォルトの名無しさん:2016/03/24(木) 19:11:14.30 ID:5a9zwPTf.net
Windows版でunicodeのコマンドライン引数まだ使えないの?

4 :デフォルトの名無しさん:2016/03/25(金) 09:00:13.57 ID:amKPWQ2X.net
Seleniumデザインパターン&ベストプラクティス、2015
OSSのブラウザ自動テストツール、Selenium WebDriver を使って、
Rubyでテストを書いた本

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

Rubyのしくみ、2014
Rubyの実装系、Ruby1.9のRuby仮想マシンの本

5 :デフォルトの名無しさん:2016/03/27(日) 10:04:22.49 ID:zeXJFeRN.net
ヤクザ

6 :デフォルトの名無しさん:2016/03/28(月) 02:19:58.22 ID:NlvcQEtD.net
http://49.media.tumblr.com/7ae74678e1d2f5bea5faf824823d0176/tumblr_noklqpmdua1us3zemo1_540.gif

7 :デフォルトの名無しさん:2016/03/30(水) 08:52:01.47 ID:8NmKCzQm.net
おわってるな

8 :デフォルトの名無しさん:2016/03/30(水) 10:23:11.00 ID:pubF0BCK.net
aという文字列でp aとやると\\と表示されるのに
a.count"\\"をやると1とでます
文字列で\¥を\だけにするほうほうおしえくてださい

9 :デフォルトの名無しさん:2016/03/30(水) 11:09:52.71 ID:14q3t0GC.net
前スレ落ちてるからよく分からないんだけど、ここは質問とかしていいのか?

10 :デフォルトの名無しさん:2016/03/30(水) 12:05:39.08 ID:R5AIxfw4.net
a = '\\'
p a #=> "\\"
puts a #=> \

puts a.count('\\') #=> 1

p はデバッグ用関数だから、内部に入っているものが見えているだけ。
ちゃんと、puts a すれば、\ と1文字になる

11 :デフォルトの名無しさん:2016/03/30(水) 12:19:47.60 ID:MbRjE7fG.net
ハッシュオブジェクトのイテレーションについて教えてください。
よくある言語実装のように代入時のままの順序かどうかは保証されていないんでしょうか?

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
があります。現在はどうなってるんでしょうか?

12 :デフォルトの名無しさん:2016/03/30(水) 12:32:31.71 ID:MbRjE7fG.net
pry (ver0.10.1 on Ruby 2.1.8) で
ri Hash してみたら

Hashes enumerate their values in the order that the corresponding keys were
inserted.

と出てきました。
これは今後も保証されると思っていいんでしょうか?

13 :デフォルトの名無しさん:2016/03/30(水) 12:55:41.31 ID:R5AIxfw4.net
Javaでは、LinkedHashMap という、挿入された順に、キーを管理する、HashMap があるけど

Rubyは知らない

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

現在の実装は「たまたま」順番が保証されているけどそれはオマケとか親切とかそういうレベルの話
p Time.nowで確実なのは現在時刻を表示することだけであって
表示される文字列を決め打ちして処理にかけてはいけないというのと似たようなものだ
将来ユーザーフレンドリーに日本語で表示されるかもしれない

15 :デフォルトの名無しさん:2016/03/30(水) 13:48:45.91 ID:mQiL8UBv.net
このへんはしょっちゅう議論されてるけど、取り出す順番の固定化を必要としているならHashという名前のものは使わないのが「プログラミングの普通」なのよ

順番固定で勝手に出てくること自体は構わない
だけど、それを頼りになにか処理を記述するのは非常に奇妙で不快に映る
繰り返すけど、出てくる順番が揃ってるのはいい
それを利用するようなコードを見ると吐き気がする
HashArrayとかOrderdHashとかそういう名前のオブジェクトなら納得するけど、Hashという名前では歴史的名前的にダメ

16 :12:2016/03/30(水) 14:34:26.61 ID:MbRjE7fG.net
ありがとうございます。

17 :デフォルトの名無しさん:2016/03/31(木) 00:11:32.35 ID:SXg61G2F.net
仕様じゃない動作に頼るなという話ならそう思うが、責務を限定しろという話ならそれはrubyには通用しない話だと思う

18 :デフォルトの名無しさん:2016/03/31(木) 01:39:56.18 ID:hZH1pyKx.net
Rubyは手軽で愛用してるのですが、
GUIを用いたりexeにまとめて配布するものまでRubyで行おうとすると、結果的に別言語を習得するのよりコストかかるでしょうか?
試みたことある方いらっしゃいましたら意見くださると嬉しいです

19 :デフォルトの名無しさん:2016/03/31(木) 12:59:43.70 ID:yy0681Er.net
制作者は、gem だけを配布して、
それを使う人が勝手に、システムにインストールして使う

RoRのようなWebアプリならあるけど、
Rubyで作った、デスクトップGUIアプリってあるのか?

20 :デフォルトの名無しさん:2016/04/01(金) 07:05:17.08 ID:6aCBXilE.net
JRuby+swingなどは試してみたのですが、Java知識が皆無なためかかなり詰まるんですよね
素直にC#とか学んだ方がいいのかもしれませんが、RGSSのようなものを知ってしまったので微妙に未練が……

21 :デフォルトの名無しさん:2016/04/02(土) 18:12:28.67 ID:CqWvTnZR.net
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

22 :デフォルトの名無しさん:2016/04/02(土) 19:33:53.20 ID:cgCmjNww.net
>>20
「スッキリわかる Java入門 第2版」2014 を読めば?

>>21
HTTP 404は、ホームページ(のデータ)が見つかりません

23 :デフォルトの名無しさん:2016/04/02(土) 21:10:59.86 ID:0eiGAsV4.net
というかRuby 1.8 ってまだサポートしてんだっけ?

24 :デフォルトの名無しさん:2016/04/03(日) 02:37:49.45 ID:RpcNuWJW.net
>>22
ありがとうございます
プログラム側の問題というよりはホームページ側の問題みたいですね

25 :デフォルトの名無しさん:2016/04/03(日) 09:43:35.27 ID:T0KKITG1.net
>>24
ちがう
あなたにHTTPとHTML(やJavaScript(や一般的なサイト運用技術知識))の知識がないがために普通のブラウザの挙動をエミュレートできてない
必要なのはRubyの知識じゃなくってWebブラウザの挙動とHTTP通信とHTMLでのサイトの書かれ方の知識

26 :デフォルトの名無しさん:2016/04/03(日) 15:55:17.04 ID:RpcNuWJW.net
>>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形式で期待する結果が返ってくると思っていました。

27 :デフォルトの名無しさん:2016/04/03(日) 16:58:38.52 ID:OaDtSrzO.net
from search_rs_number_execServiceClient.rb:27

その前後の変数の内容を、片っ端から見てみれば?

28 :デフォルトの名無しさん:2016/04/04(月) 07:02:52.26 ID:UUnGIXWs.net
>1a77a8341bddc4b45418f9c30e7102b4
こういう0..fで構成されたハッシュ値を
>tp://i.imgur.com/nOBxnDb.jpg
>nOBxnDb
みたいな短縮URL風に短くするコード教えて下さい

29 :デフォルトの名無しさん:2016/04/04(月) 09:10:25.66 ID:jvwKdFAZ.net
>>28
どこからわからんのかくらいは言って欲しい
16進数を(10進数に置き換えてから)26進数なり52進数なりに計算し直して文字を当てはめる

30 :デフォルトの名無しさん:2016/04/05(火) 13:10:42.86 ID:wRkvpogr.net
gets(

31 :デフォルトの名無しさん:2016/04/05(火) 13:12:49.42 ID:wRkvpogr.net
標準入力から一度に改行を含めて文字列を得るにはどうやりますか?

32 :デフォルトの名無しさん:2016/04/05(火) 13:52:47.37 ID:Uvoa8jl9.net
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をしても、きっとまだ裏道ありますよね。

33 :デフォルトの名無しさん:2016/04/05(火) 14:12:22.26 ID:F6iG++QK.net
# 標準入力から、一気に終わりまで読む
ary = $stdin.readlines

# 1行ずつ処理する
ary.each_line do |line|
line.chomp!
end

34 :デフォルトの名無しさん:2016/04/05(火) 14:16:14.23 ID:Wtb6QTFr.net
>>32
>Rubyで真にprivateなインスタンス変数を作るにはどうしたらいいんでしょうか?
Rubyでは絶対的なアクセス制御はできない
なぜなら「普通に」アクセスした時に拒まれさえすれば用は済むからだ

35 :デフォルトの名無しさん:2016/04/05(火) 14:20:10.18 ID:Uvoa8jl9.net
>>34
了解。 そういう文化なんですね。

36 :デフォルトの名無しさん:2016/04/06(水) 00:23:46.52 ID:q1HrDxSz.net
Win7でRubyを勉強しようと思うんですが、Cygwinでやるのがお手軽ですか?

37 :デフォルトの名無しさん:2016/04/06(水) 01:43:49.90 ID:SreJMpRz.net
ImageMagickやらのLinux由来の拡張ライブラリを使うのでなければ、Ruby Installerでいいんじゃない。

Win10にしてUbuntu on Windows上でRuby動かすってのはいつからできるんだっけか。

38 :デフォルトの名無しさん:2016/04/06(水) 02:33:03.12 ID:kRFLofHq.net
>>36
わざわざcygwin導入しなくてもコマンドプロンプトで十分
導入してるのならお好きに

39 :デフォルトの名無しさん:2016/04/06(水) 07:38:43.97 ID:BFsTf7eA.net
paiza.IO, CodePad など、ブラウザを使って、オンラインでもプログラミングできる

環境構築もいらん

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

初心者向け「だからこそ」ローカルで完結するべき

41 :デフォルトの名無しさん:2016/04/08(金) 21:35:25.29 ID:/jXs509G.net
class Tesuto < ActiveRecord::Base
validates :password, format: { with: /\A([^@\s]+)\Z/ }

devise :database_authenticatable, :registerable,
:validatable
end
スキャッフォルドで何かアプリケーションを作りたいと思い、scaffoldを使ってdeviseをインストールしました。
そこで編集ページできちんとパスワードが打てるようにvalidateも設定して空白禁止処理を施そうとしましたが、ユーザー登録やユーザーログインで空白をデフォルトで禁止されていて、
編集ページではデフォルトで禁止されておらず、空白が許可されています。

validateでpassword指定して空白禁止すると編集ページで変更するためのパスワードが省略できず、確認用パスワード、現在のパスワードの3回連続で打たなければなりません。
validate、またはほかの場所にどのような処理を施せばよろしいでしょうか?

42 :デフォルトの名無しさん:2016/04/08(金) 23:24:07.46 ID:R25zKOdT.net
WEBプログラミング板に、RoRのスレがあるので、そっちで聞いたら?

43 :デフォルトの名無しさん:2016/04/09(土) 00:40:43.27 ID:d9XDMAzz.net
>>41
before_action とかで空白禁止のバリデーションを edit のときのみ適用すればよいのでは?

44 :デフォルトの名無しさん:2016/04/09(土) 23:00:32.93 ID:O9j9lH5Y.net
>>18
>>19
GUIとEXEもわりと低コストでできるぞ

45 :デフォルトの名無しさん:2016/04/10(日) 05:59:09.98 ID:QHKhqpLv.net
>>44
よければ詳しく

46 :デフォルトの名無しさん:2016/04/10(日) 07:24:02.68 ID:WTOWAaLY.net
>>45
たとえばGUIはTk、EXEはOcraでできる

47 :デフォルトの名無しさん:2016/04/11(月) 00:47:25.00 ID:zoLHrFMR.net
railsのインストールできないんだけどどうしたらいい?
http://i.imgur.com/LrHWsVu.png

48 :デフォルトの名無しさん:2016/04/11(月) 01:03:31.98 ID:WJsT15xh.net
linuxに乗り換える

49 :デフォルトの名無しさん:2016/04/11(月) 01:10:55.06 ID:uBEcAuw5.net
rubyのバージョン2.3に対応してないみたいだね

50 :デフォルトの名無しさん:2016/04/11(月) 02:21:36.55 ID:JpybrsSq.net
RWBY は第4クルー始まるというのにね

51 :デフォルトの名無しさん:2016/04/11(月) 06:36:47.71 ID:zoLHrFMR.net
>>47
http://www.rubylife.jp/railsinstall/rails/index1.htmlの手順に従ってやって
その次にhttp://rubyonrails.org/行ってみたけどrailsダウンロードできない

52 :デフォルトの名無しさん:2016/04/13(水) 16:29:53.43 ID:372sz71r.net
10ビット3つを、(10, 10, 10)とbitsetのように使っているとき、
真ん中の10ビットを、上書きするにはどうすればよい?

上書きする演算子が見つからない

53 :デフォルトの名無しさん:2016/04/13(水) 17:42:17.15 ID:oU5fSDxg.net
何をしているのかよくわからんが

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

ではいかんのか

54 :52:2016/04/13(水) 18:12:34.54 ID:372sz71r.net
ありがとう

元のビットの上書きしたい部分を、0&でマスクしてから、
ORで上書きすれば良かったのか

55 :デフォルトの名無しさん:2016/04/15(金) 21:02:46.68 ID:qyn/7G/H.net
pryでShiftキーを押すと結構な確率で動きが一時的に固まるんだけどどうしたら良いのかな

例えば
puts "Hello, World!"
って左から順に打った場合、"、H、W、!、"のどれかを押した瞬間に固まってそのまま数十秒動かなくなる
その間はCtrl+cとかも無反応

Pry version 0.10.1 on Ruby 2.2.3
Windows 8.1

56 :デフォルトの名無しさん:2016/04/15(金) 21:43:29.46 ID:kJz9a6FQ.net
ActiveRecordの関連付けってなにが嬉しいんですか?

57 :デフォルトの名無しさん:2016/04/15(金) 22:08:30.22 ID:dCoxeauz.net
>>56
複雑あるいは面倒な処理を簡単かつ直感的なメソッドチェインで扱えるところが嬉しい

58 :デフォルトの名無しさん:2016/04/15(金) 23:38:46.31 ID:pdQdC9Xb.net
>>52
xor だったら入力のマスクも簡単にできる
bitData ^= ((1 << bitOffset + bitLen) - (1 << bitOffset)) & (bitData ^ (setVal << bitOffset))

59 :デフォルトの名無しさん:2016/04/17(日) 00:33:18.57 ID:v9XO8+KJ.net
Ruby始めようと思ってこのスレ来たが、中括弧じゃなくてendなのか

60 :デフォルトの名無しさん:2016/04/17(日) 00:55:07.10 ID:7GcoLz9W.net
RubyはC++でもJavaでもCでもVBでもないので
予断持たずにきちんと体系的に学習することをお勧めします
なお「RubyはC++でもJavaでもCでもVBでもない」というのは煽りじゃなく本気のアドバイスです

61 :デフォルトの名無しさん:2016/04/17(日) 01:07:34.17 ID:BiZQs4Wa.net
何から何まで独特だよね
ここまで流行ったのが不思議なほど

62 :デフォルトの名無しさん:2016/04/17(日) 22:49:27.40 ID:DiLcHZEv.net
Python, Rubyはすごい便利だから、Googleも、実装すべき

>>59
ブロックでは、do 〜 end は複数行で、{ } は1行のみの処理で、使うことが多い

63 :デフォルトの名無しさん:2016/04/18(月) 00:49:33.87 ID:zxdOCIHu.net
独特というかむしろ
いろんな言語を折衷してるから
書きやすいと思う

書きやすいから流行った

64 :デフォルトの名無しさん:2016/04/18(月) 23:52:27.01 ID:IbVy+CTe.net
win32oleのieでgoogle検索するやり方はわかったんだけど、
一番最初の検索結果のページに飛ぶやり方がわからない。
検索後ie.document.links.item(0).clickとかやってみたけど全然ダメだった。
ソースを見てみても複雑なjavascriptでよくわからん。

65 :デフォルトの名無しさん:2016/04/19(火) 06:12:04.67 ID:Zv7m44nm.net
説明しよう! いま現在のクローラー製作に必要なものは
・相手のサーバに目的のHTMLをきちんと表示させられる程度のHTTPの知識
・目的のリンクなり画像なりテキストなりの位置を判断できる程度のHTMLの知識
・目的のリンクなり画像なりテキストなりの位置を表現できる程度のXpathの知識
・通常のWebブラウザではどういう動作をしているのかを分析できる程度のJavaScriptの知識
・通常のWebブラウザでのクリックでどういうことが起こっているかを説明できる程度のWebブラウザ挙動の知識
の5つだ! Rubyスクリプトを作るはずなのにRubyと利用ライブラリの知識という項目が軽視されてることに注目だ!
どういう対象をどういう操作して通常のWebブラウザでいうところのどういう動作にあたるのかを理解せず盲目的に
> 検索後ie.document.links.item(0).clickとかやってみたけど全然ダメだった
とかやってるようでは道程は遠いぞ!
っていうかWebクローラーは初心者的な用途イメージの割にはWeb利用の統合的な技術知識が要求される上に
Googleは超絶効率化のために超絶高度な遣り取りやってるから練習やサンプルには全く適してないんだ! ご愁傷様だったな! Yahoo使えYahoo!

66 :デフォルトの名無しさん:2016/04/19(火) 06:20:43.61 ID:fF4GXe73.net
Rubyでクローラー作る本があるから読めば?

67 :デフォルトの名無しさん:2016/04/19(火) 15:19:46.53 ID:DoDYnfhi.net
ie.open(ie.document.links.item(0).value)

68 :デフォルトの名無しさん:2016/04/19(火) 19:12:04.08 ID:kcmoRlAu.net
>>67
`method_missing': unknown property or method: `value' (NoMethodError)

69 :デフォルトの名無しさん:2016/04/19(火) 21:14:24.24 ID:+csqt/Wa.net
>>68
ドキュメント読もう

70 :デフォルトの名無しさん:2016/04/19(火) 21:50:54.87 ID:kcmoRlAu.net
どこにドキュメントあるのかわからん。
ググれば見つかるもんなの?

71 :デフォルトの名無しさん:2016/04/19(火) 22:44:13.44 ID:+csqt/Wa.net
win32oleってやつ?だよな?
浸かったことないが検索したら出たぞ
2.1.0だけど http://docs.ruby-lang.org/ja/2.1.0/library/win32ole.html

72 :デフォルトの名無しさん:2016/04/20(水) 06:55:31.98 ID:w5hbs5qX.net
下を読めばわかるけど、クローラーって実は、驚異的に難しいw
エラーになる可能性が無数にあるので、言語どうこうの話じゃない

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

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

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

企業はアプリを解析するのに、普通、1人月百万円以上払う。
それくらい難しいってこと

73 :デフォルトの名無しさん:2016/04/20(水) 07:40:43.74 ID:IJSlkgxq.net
難しいというよりとにかく泥臭い
Rubyistの仕事としては最底辺の部類

74 :デフォルトの名無しさん:2016/04/20(水) 11:21:11.72 ID:TvagBB0u.net
クロールされたサイトになんのメリットもないクローラー開発なんか
やっちゃだめだぞ。俺はやらされてたが。

75 :デフォルトの名無しさん:2016/04/20(水) 22:04:01.92 ID:+P5uzrzE.net
結局HTML読めないとクローラーって作れないのね。
まあ、ぼちぼち頑張るか。

76 :デフォルトの名無しさん:2016/04/21(木) 09:09:15.15 ID:636JdrjZ.net
Linux やmacでzip作成したいのですが、Windowsファイル名のダメ文字を
置換するリネームプログラムってないですか?

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

ファイルやフォルダはfindで検索するとして、指定ディレクトリの
ファイルやフォルダを「< > * ? " \ |」半角文字を検索し
全て全角に置換したいです。ruby1.8.7希望。

77 :デフォルトの名無しさん:2016/04/21(木) 13:53:08.49 ID:IzmoSDze.net
ruby unixコマンド 実行
とかで検索したら出てくるけどいくつかあるよ
find の結果の文字列を gsub で置換してやればいいんじゃね?

78 :デフォルトの名無しさん:2016/04/21(木) 16:32:18.89 ID:636JdrjZ.net
>>77
どうもです。ファイル名に複数のダメ文字がある可能性があるので一つの記号にgsubするしかないですね。

79 :デフォルトの名無しさん:2016/04/21(木) 19:52:32.92 ID:iEWNQ8UB.net
gsubはHashわたせば複数痴漢できるよ
ってそういう話じゃないか?

80 :デフォルトの名無しさん:2016/04/21(木) 20:36:07.43 ID:636JdrjZ.net
>>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)

こんな感じかな。雰囲気はつかめたのでよかった。(^_^;) 楽できそうです。

81 :デフォルトの名無しさん:2016/04/21(木) 20:57:51.29 ID:/vBm71ZP.net
場合によっちゃあtrでもいいかもね
p '12345'.tr('15', 'lS')

"l234S"

82 :デフォルトの名無しさん:2016/04/22(金) 20:35:54.49 ID:2DzgCe5n.net
gsub重ね掛けするのってそんな面倒か?
ループで回すだけだと思うんだが。

83 :デフォルトの名無しさん:2016/04/22(金) 21:25:13.47 ID:lAvb/AZz.net
gsubでhash渡すやつ、なんか使いづらいな
正規表現をキー、一致した文字列を置換する文字列をバリューにとかなら便利なのに

84 :デフォルトの名無しさん:2016/04/22(金) 23:51:19.95 ID:++t+RWP3.net
>>81
require "jcode"
で全角の tr ができるようになる

85 :デフォルトの名無しさん:2016/04/23(土) 10:34:50.94 ID:5AJaEQrL.net
>>83
正規表現だと置換前の文字列が重複しかねなくない?

86 :デフォルトの名無しさん:2016/04/24(日) 14:22:44.47 ID:Uo+BTEtc.net
Rubyってダイレクトドライブアクセスできんの?

存在するドライブやディスクに対して
f = File::open(

87 :デフォルトの名無しさん:2016/04/24(日) 14:29:36.53 ID:aqqgpD8T.net
できる

88 :デフォルトの名無しさん:2016/04/24(日) 18:01:19.78 ID:+9N3vohH.net
なんとなくJSONを文字列化してCipher使って暗号化→復号化ってやってて、
復号化した後に文字列になったJSONをJSONに戻す良い方法が分からなくて困ってるんだけど、なんか良い方法ない?

89 :デフォルトの名無しさん:2016/04/24(日) 18:41:24.15 ID:+9N3vohH.net
申し訳ない、自己解決しました・・・
お目汚し失礼しました

90 :デフォルトの名無しさん:2016/04/25(月) 23:22:01.75 ID:VbK9UkJ/.net
#10から0を改行区切りで出力してください

for i in 10..0
print i
end

ではまちがっているんですか??

91 :デフォルトの名無しさん:2016/04/26(火) 00:09:41.02 ID:c1+pgvSl.net
私ならこうかくが

10.downto(0){|i| puts i}

92 :デフォルトの名無しさん:2016/04/26(火) 01:15:49.37 ID:du3QkmSG.net
downto使わないでfor to_a reverse とかいうのを
使うらしいんですけど

93 :デフォルトの名無しさん:2016/04/26(火) 01:34:24.43 ID:XcjXnWra.net
>>90
そんな書き方したことないから自信ないけど、範囲式は逆順指定できないんじゃないかな?
もしかしたら俺が勘違いしてるだけでできるかもしれないけど、普通しない

並びにfor文はあまり使われない
一応あるけど91のようにイテレータを使うのが一般的
詳しくはイテレータで調べてくれ

94 :デフォルトの名無しさん:2016/04/26(火) 01:39:20.39 ID:XcjXnWra.net
>>92
更新してなかった

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

後者は無駄に長いし、処理時間も増えるし、メモリも食うし、
特別な理由がなきゃわざわざそんなことする意味ない

95 :デフォルトの名無しさん:2016/04/26(火) 17:28:12.49 ID:6COxB88I.net
初心者の人は、わかりにくい for in 構文を一体どこから拾ってきてるんだろ?
一般的なコードに for in なんてないのに。不思議だ。

96 :デフォルトの名無しさん:2016/04/26(火) 17:42:42.60 ID:du3QkmSG.net
改行区切りで出力するばあいは
print iの後になんというコマンドを追加すればいいのですか?
>>90を訂正したヤツだと改行しない結果になるらしいんですけど

97 :デフォルトの名無しさん:2016/04/26(火) 17:52:41.48 ID:hodGhGMX.net
puts i
print i.to_s + "\n"
print "%d\n" + i

98 :デフォルトの名無しさん:2016/04/26(火) 17:53:50.31 ID:hodGhGMX.net
print "%d\n" % i
修正ミス

99 :デフォルトの名無しさん:2016/04/26(火) 18:35:38.41 ID:du3QkmSG.net
#1から9の奇数を出力してください

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

でどう偶数抜いて表示すればいいんですか?

100 :片山博文MZ ◆T6xkBnTXz7B0 :2016/04/26(火) 18:38:58.99 ID:P4FlrKEb.net
2で割ったときの余りを使う。
for i in 1..9
puts i if i % 2 == 1
end

101 :デフォルトの名無しさん:2016/04/26(火) 18:44:56.52 ID:c1+pgvSl.net
宿題は自分でやりましょう

102 :デフォルトの名無しさん:2016/04/26(火) 19:55:33.70 ID:x2RHMR6g.net
>>95
awk

103 :uy:2016/04/26(火) 20:29:48.28 ID:4KSOxSiL.net
http://suumo.jp/ms/shinchiku/tokyo/sc_koto/nc_67712348/

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


>>99
ha?
p (1..9).reject(&:even?)

104 :デフォルトの名無しさん:2016/04/26(火) 23:11:59.29 ID:HvJUwHuI.net
>99
1.step(9,2){|x| puts x}

105 :デフォルトの名無しさん:2016/04/27(水) 05:43:58.05 ID:dtd6C8pN.net
コードガールのruby STAGE17まで解いてしまったッ

106 :デフォルトの名無しさん:2016/04/27(水) 16:37:59.42 ID:wyNXRpNW.net
こんなのあるのかw
序盤の標準出力ラッシュで飽きてやめたけど

107 :デフォルトの名無しさん:2016/04/28(木) 01:06:23.99 ID:QkuSJykk.net
プログラミングってよりただのタイピング・ソフトじゃねえか
問題はくそなのに、初見だとたまに☆2つとかになってついイライラしてしまう

108 :デフォルトの名無しさん:2016/04/28(木) 02:05:42.82 ID:cNgqnPtu.net
プログラマ脳を鍛える数学パズル
シンプルで高速なコードが書けるようになる70問、増井 敏克、2015

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

「ITエンジニアに読んでほしい!技術書・ビジネス書 大賞(ITエンジニア本大賞)」の受賞作

109 :デフォルトの名無しさん:2016/04/28(木) 11:42:25.74 ID:B+IQUyxU.net
プログラミングや3Dモデリングデータ作成なしで3DマップのRPGを作れる
「Smile Game Builder」を発表。GDC 2016へ出展
http://www.4gamer.net/games/337/G033741/20160317004/

110 :デフォルトの名無しさん:2016/04/28(木) 13:22:26.24 ID:1hszbTkN.net
スレチ

111 :デフォルトの名無しさん:2016/05/01(日) 08:49:23.40 ID:tKi6j9CT.net
匿名通信(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

112 :デフォルトの名無しさん:2016/05/01(日) 23:26:41.59 ID:GuNd9hsH.net
rubyのスコープ気持ち悪いと思うんだけどなんかいい感じの解説ない?
例えばこれとか
def test
if true
result = 1
end
result
end
#=> 1
なんかめっちゃ違和感ある

113 :デフォルトの名無しさん:2016/05/02(月) 00:24:57.68 ID:703evd9b.net
その例からだと何が気持ち悪いのかわからない

114 :デフォルトの名無しさん:2016/05/02(月) 00:29:59.79 ID:o2fcY4RJ.net
ifの中で定義された変数がifの外で未定義にならないところです

115 :デフォルトの名無しさん:2016/05/02(月) 05:30:37.04 ID:zpJUdxcq.net
defはメソッドだからRuby1.9ではという話をするのかと思ったら斜め上だった
そういや初心者スレだったなココ
というかifの前で変数定義しないと変数持ち出せない言語なんてそうそうないと思うのだが

>>114
最後がendかどうかで構造を判断するのやめれ
君は「endで括られている範囲なのに」と考えているはずだ
endは終了を示すただの記号でしかない
最後の文字ではなく def とか if とか do とか先っぽ見てスコープというか制御構造かどうかを判断しろ

116 :デフォルトの名無しさん:2016/05/02(月) 07:19:53.61 ID:fVfRKiIw.net
>>115
前段どういう話か教えてくんろ
そのあたり疎いんだ

117 :デフォルトの名無しさん:2016/05/02(月) 07:28:06.01 ID:R0ulJHCe.net
>>112
その挙動で良いと思うが

>>114
そっちの方が違和感ある

118 :デフォルトの名無しさん:2016/05/02(月) 08:11:00.54 ID:HJ2xVTJl.net
do end や {} ならブロックローカルになるんだけど、ifの中身はブロックではないのでスコープは外と同じ
実際一貫性がなくて紛らわしいところだから、今設計しなおしたら全部ブロックになりそう

119 :デフォルトの名無しさん:2016/05/02(月) 09:56:51.18 ID:o2fcY4RJ.net
>>115
うーん理由としてはあんま納得できないわ
俺も一貫性に欠けてると思う
ちなみに Ruby ではほぼ使われないけど for や while もスコープ作らないからその判別方法は良くない

120 :デフォルトの名無しさん:2016/05/02(月) 13:02:10.27 ID:s90URipo.net
むしろブロックスコープがいらない
「ローカルスコープを作るのはdefのみ」でいいよ
外側の名前を上書きするバカはほっとけ

121 :デフォルトの名無しさん:2016/05/02(月) 13:22:44.05 ID:Nwnpiy9m.net
ブロックスコープが要らないは飛びすぎじゃないか?
そういう意味でもやっぱりforやらwhileにスコープある方がしっくりくるわ

122 :デフォルトの名無しさん:2016/05/02(月) 15:50:36.97 ID:tHMT3Y4S.net
一貫性がないのは確かだが、無駄に宣言しなくていいようにあえてしてるってメーリスか何かで言ってたはず

123 :デフォルトの名無しさん:2016/05/02(月) 16:03:03.37 ID:75TgGWvQ.net
>>122
まじか知らなかったわサンクス

124 :デフォルトの名無しさん:2016/05/02(月) 16:26:43.85 ID:R0ulJHCe.net
ifで分けて変数を初期化するようなときに
宣言しておく必要があるとムダだからな

125 :デフォルトの名無しさん:2016/05/02(月) 20:35:25.61 ID:703evd9b.net
a = case x
when foo then ...
when bar then ...
...
end
とか
a = if x then ... else ... end
とか書けるけどあまりにないしね

126 :デフォルトの名無しさん:2016/05/03(火) 00:23:18.99 ID:Hk0ecHR9.net
違うバージョンのRubyをインストールしたいのですが
調べたらuruというツールでRubyInstallerでインストールしたRubyを切り替えるようです
しかし現状ActiveScriptRuby1.8.5が入っていて、その1.8.5と新しいバージョンのRubyを使いたいのです
ActiveScriptRubyとuruで管理するRubyInstallerのRubyって共存できるんでしょうか

127 :デフォルトの名無しさん:2016/05/03(火) 00:24:59.57 ID:9WoSDP+1.net
>>126
大人しくrbenvにしとけ

128 :uy ◆e6.oHu1j.o :2016/05/03(火) 03:24:55.90 ID:gzQ2BK1K.net
言語仕様にそこまでの強い一貫性なんていらないけどな

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

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

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

しかし我々は何不自由なく使ってしまっている

129 :デフォルトの名無しさん:2016/05/03(火) 11:26:54.83 ID:wFmBMyJC.net
ツクツクボウシの鳴き声を一番正確に表せた奴が優勝 [無断転載禁止]©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あああああああああああああああ あ!!!!!!!

130 :デフォルトの名無しさん:2016/05/03(火) 11:46:22.66 ID:1U/0N7SV.net
>>112
変数宣言は、if文よりも前でするべき

そうしないと、ちょっと、if文を修正するだけで、バグが生じる

131 :デフォルトの名無しさん:2016/05/03(火) 12:42:53.56 ID:9WoSDP+1.net
>>130
そういう問題じゃないでしょ
本質掴めてなさすぎ

132 :デフォルトの名無しさん:2016/05/03(火) 20:45:46.51 ID:gAzicoKM.net
できればeval使わずに、クラス名を指定してそのクラスのインスタンスを生成したいんだけど何か良い手段無いですか?

class Hoge
end

class_name =

133 :デフォルトの名無しさん:2016/05/03(火) 20:47:32.30 ID:gAzicoKM.net
ごめん、コード書こうとしたらダメっぽかった・・・

134 :デフォルトの名無しさん:2016/05/03(火) 20:52:05.06 ID:KyaiRmb1.net
>>132
hoge_class = Module.const_get 'Hoge'
hoge_instance = hoge_class.new

135 :デフォルトの名無しさん:2016/05/03(火) 20:53:17.97 ID:obzBgI3N.net
Foo = Class.new
bar = Foo.new

136 :デフォルトの名無しさん:2016/05/03(火) 20:54:33.61 ID:obzBgI3N.net
すまそ >>135は勘違い

137 :デフォルトの名無しさん:2016/05/03(火) 21:01:46.16 ID:gAzicoKM.net
>>134, >>135
即レスどうもありがとうございます、助かりました

138 :デフォルトの名無しさん:2016/05/04(水) 03:37:31.28 ID:/fPdRPly.net
文法的な話じゃないんですけど
Rubyでエディタのアウトライン表示の見出しになるようなサインみたいのないですか
例えばですけどこんな感じのもので習慣的に使われてるようなもの
#<h1>メインの処理</h1>

139 :デフォルトの名無しさん:2016/05/06(金) 16:40:28.33 ID:V+H0dCvP.net
メールのハイパーリンクについて教えてください。(gmailです。)

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

これをハイパーリンク扱いにしてブラウザに飛ばしたいのですがいい方法ないでしょうか?
ちなみにブラウザに渡るとスマホアプリが呼ばれる仕組みになっています。(引数で個別の画面が呼ばれる)

140 :デフォルトの名無しさん:2016/05/06(金) 16:53:28.81 ID:j3Cd+A95.net
もっと簡単にできるかもしれないけど、webrick使ってローカル・プロキシ作れば?

141 :デフォルトの名無しさん:2016/05/06(金) 17:16:14.42 ID:GOfm3Be0.net
>>139
PC版Chromeなら機能拡張で普通にできる
スマホ版と他ブラウザはしらん

142 :デフォルトの名無しさん:2016/05/06(金) 17:35:40.79 ID:V+H0dCvP.net
>>140
すみません、ローカルプロキシ作った後のギミックが、ピンときません。もう少しヒントを。。

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

htmlメール形式にしたらいけるのかなぁとも思ってるんですがググってもよくわからん。タグが本文に入ってたら勝手にリンクにしてくれるんかなぁ。後でやってみます。

143 :デフォルトの名無しさん:2016/05/06(金) 20:16:12.86 ID:j3Cd+A95.net
スマホのgmailって知らないけど該当するURLの頭にhttp(s)://って付けるようにすればいいんじゃないの
そもそもスマホでwebrickが動くかは知らないが

144 :デフォルトの名無しさん:2016/05/06(金) 20:34:26.84 ID:j3Cd+A95.net
連想すまん
SSL通信だったらプロキシじゃ無理かもしれないね

145 :デフォルトの名無しさん:2016/05/07(土) 01:25:53.16 ID:DyCM9yow.net
俺だけが分からないのかも知らないけどよくこんな質問にレス出来るな
rubyとGmailとハイパーリンクのどこに共通性あるのかイミフ
メーラーの設定とか機能の話じゃないのかこれは。

146 :デフォルトの名無しさん:2016/05/07(土) 02:19:53.44 ID:eXsPGCae.net
俺も分からん
Rubyでどこをどうしたいのか書いてないのでアドバイスしようがない

147 :139:2016/05/07(土) 04:09:28.68 ID:TTqm4Ng+.net
確かにrubyでどうこうできる話じゃなかったわ。
スマンカッタ。出直してくる。

148 :デフォルトの名無しさん:2016/05/07(土) 05:45:30.51 ID:FoUXFEM8.net
すぐリンクに飛ぶには危ない
メールのリンクからウィルス仕込みサイトに飛ばされるのは感染定番コース

149 :デフォルトの名無しさん:2016/05/07(土) 05:52:34.89 ID:v072DMKU.net
Rubyの話をするなら
Rubyでメーラー自作すれば
好きな挙動できるだろ

150 :デフォルトの名無しさん:2016/05/14(土) 19:09:00.68 ID:qUyPqMWH.net
以下の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のように戻したいのですが、どのようにすれば戻せるでしょうか?

151 :デフォルトの名無しさん:2016/05/14(土) 19:21:41.36 ID:qUyPqMWH.net
>>150
すみません、完全に前提が間違っていました。

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

このログ出力を元に戻す方法を知りたいという質問に変更させて下さい

152 :デフォルトの名無しさん:2016/05/14(土) 19:42:21.70 ID:/R7YTKmR.net
>>151
active_support/core_ext/logger ってのが logger を上書きしてそうなので、active_support/core_ext/format の方のlogger のフォーマットを指定してあげれば任意の形式で出力できそう

153 :デフォルトの名無しさん:2016/05/14(土) 21:51:29.64 ID:qUyPqMWH.net
>>152
http://rubyist.g.hatena.ne.jp/rochefort/20100310
を参考にフォーマット設定したら出力できるようになりました
ありがとうございました

154 :デフォルトの名無しさん:2016/05/15(日) 21:09:22.74 ID:QEJW4alD.net
プログラミングから初心者なんですが、おまいらみたいにここで質問に回答できるようになるにはどのくらいしゅぎょうすればよいですか??

155 :デフォルトの名無しさん:2016/05/15(日) 21:19:47.57 ID:YqlS4XMa.net
5年毎日8時間

156 :デフォルトの名無しさん:2016/05/15(日) 21:44:53.64 ID:NJhXH/sG.net
>>154
俺が見た範囲だと、適性ある奴は一ヶ月もすれば仕事できるレベルになったりもする
逆に駄目な奴は何年やっても使い物にならない

157 :デフォルトの名無しさん:2016/05/15(日) 21:56:39.89 ID:QEJW4alD.net
その仕事できるてどんなレベルや。すごすぎる
俺は作りながら学ぶみたいな本写経してエラーになっても、自分でどうにかしてエラーを取り除いて実行できるくらいしか能がない@2か月目

158 :デフォルトの名無しさん:2016/05/16(月) 01:11:03.22 ID:RYpks96x.net
>>154
質問に回答なんてボランティアで
自分の作りたいものを作れることが重要だと思う

期間は人によって違うので一概に言えないが
まずは小物でいいのでアプリを作れるまではひたすら修行
作れたら後は好きに作ってるとある程度は勝手に上手くなる

159 :デフォルトの名無しさん:2016/05/16(月) 12:46:48.74 ID:DkcwsRla.net
ここのみなさんは
簡単な質問には群がりますが
難しい質問には答えられません

160 :デフォルトの名無しさん:2016/05/16(月) 14:14:17.34 ID:aQMyk4Ho.net
コードガールの17章までおわったら
あの条件式だけ入れるみたいなの以外
どうプログラムの全体像みえるようにするために
forとかランダム式以上の知識いれていけば
いいの???

161 :デフォルトの名無しさん:2016/05/16(月) 14:31:01.74 ID:OrJq5QDg.net
株の雑誌東洋経済が言語の特集をやっていた

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

小学校にプログラミング教育を導入する
rubyだと年収600万円、本当かいな

162 :デフォルトの名無しさん:2016/05/16(月) 14:38:16.89 ID:rbeFnNS9.net
rubyの勉強にコードガールは全くお勧めできない

163 :デフォルトの名無しさん:2016/05/16(月) 14:38:55.54 ID:DkcwsRla.net
著者が気になるな

164 :デフォルトの名無しさん:2016/05/16(月) 15:03:24.52 ID:IBGTyv6p.net
算数英語で落ちこぼれボロボロ出るのを放置して
その複合のプログラミングなんか出来るわけねーだろ

義務教育の留年制度さきにつくれや

165 :デフォルトの名無しさん:2016/05/16(月) 18:26:58.17 ID:lq1JqEcP.net
重いでボロボロ

166 :デフォルトの名無しさん:2016/05/16(月) 21:56:49.34 ID:NgImICvk.net
たのしいるびーをとりあえず1週して、作りながら学ぶとかいう本終わらせたばかりの初心者なんですけど、
何か次にやったら良さそうなおすすめなことをおしえてください

167 :デフォルトの名無しさん:2016/05/16(月) 22:00:46.70 ID:tTjqYMnb.net
取り敢えず、第2期に進めばいいんじゃないかな。

168 :デフォルトの名無しさん:2016/05/16(月) 22:50:40.11 ID:RYpks96x.net
>>166
自作コマンド作ってみるとか
たのしいRuby読んでたらできるでしょ

169 :デフォルトの名無しさん:2016/05/16(月) 23:18:09.63 ID:NgImICvk.net
def harapekorinrin

170 :デフォルトの名無しさん:2016/05/17(火) 11:15:55.60 ID:NWTAtPGB.net
結局問題解決に必要なのは言語の知識じゃなくて
OSや実行環境の知識だからなー

171 :デフォルトの名無しさん:2016/05/17(火) 12:26:40.03 ID:DX0ymGPY.net
必要なのは設計のセンスだよ
言語やインフラの細かいことなんか他人やGoogleに聞けば済む話だけど、
設計だけは個人の経験や能力に強く依存する

172 :デフォルトの名無しさん:2016/05/17(火) 15:25:50.55 ID:aNTJjeU0.net
プログラミングだけじゃなくて、パソコンやなんかからよく知らない人はどうすりゃええねん

173 :デフォルトの名無しさん:2016/05/17(火) 17:08:38.12 ID:9orynTFq.net
>>172
勉強する?

174 :デフォルトの名無しさん:2016/05/17(火) 18:00:08.28 ID:CnuAkB4H.net
先ずは電源の入れ方からマスターだな

175 :デフォルトの名無しさん:2016/05/17(火) 18:55:21.66 ID:eRIY89eq.net
電源の入れ方は切り方とセットでなければマスターとは認めん

176 :デフォルトの名無しさん:2016/05/17(火) 19:24:53.34 ID:0ndBRKVS.net
はいそこで押し続ける!
ひとつ、ふたつ、みっつ、よっつ、いつつ!

177 :デフォルトの名無しさん:2016/05/17(火) 23:42:54.72 ID:cKpkeDSB.net
rubyってウェブアプリやウェブサービスのイメージが強いんだけど、それ以外ってどんなとこに使われてるの?

178 :デフォルトの名無しさん:2016/05/17(火) 23:54:52.00 ID:PFL7J48p.net
実用ではウェブがほとんどじゃね

179 :デフォルトの名無しさん:2016/05/18(水) 00:11:20.05 ID:ot/2Utg3.net
vagrant や fluentd など普通のスクリプトとしてもよく使われてるよ

180 :デフォルトの名無しさん:2016/05/18(水) 00:47:52.39 ID:K/5XOq2K.net
個人的にいままでCやってて
最近ruby始めたばっかりなんですが
rubyの変数って一般的な言語における変数とは全然概念が違うんですね…
i = 5
i = i +1
ってやると
一つめの実行式で5というオブジェクトにiという付箋をつける
二つめの実行式でiの付箋を6というオブジェクトに貼り替えるって感じでいいんです?

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

181 :デフォルトの名無しさん:2016/05/18(水) 00:51:31.83 ID:ot/2Utg3.net
>>180
え?
有名どころの言語でも大体一緒だけど…

182 :デフォルトの名無しさん:2016/05/18(水) 00:59:26.97 ID:K/5XOq2K.net
>>181
あれ、そうなんですか…
C言語だと宣言するとメモリのスタック領域に変数型分の領域が確保されて
その中身の数値が入れ替わるっていう風に習ったので…

逆にCの方が特殊と思った方がいいんでしょうか…

183 :デフォルトの名無しさん:2016/05/18(水) 01:30:34.37 ID:BFM6WmVS.net
>>182
考え方が違うだけで起こることは大体一緒。
代入は代入で変わらないけど、代入するものが必ずオブジェクトなだけ。

184 :デフォルトの名無しさん:2016/05/18(水) 04:34:37.35 ID:BFM6WmVS.net
>>182
混乱の元は、数値、文字列がオブジェクトだってところに
あるんだと思うけど、そこは慣れたら逆にわかりやすい。

185 :デフォルトの名無しさん:2016/05/18(水) 11:13:44.00 ID:tltkMhqB.net
rubyの良いところでもあり悪い部分でもある場所

186 :デフォルトの名無しさん:2016/05/18(水) 14:49:34.18 ID:yDy1hpmH.net
格納場所や値のコピーをプログラマに強く意識させるという意味では
Cが特殊

187 :デフォルトの名無しさん:2016/05/18(水) 16:55:42.20 ID:u7J2zmgl.net
>182
rubyのintはobjectでありかつprimitiveでもある

188 :デフォルトの名無しさん:2016/05/18(水) 22:39:52.30 ID:fCMOVnrJ.net
practical object-oriented design in ruby
この本は初心者にはむずかしいですか?
英語は大丈夫です

189 :デフォルトの名無しさん:2016/05/18(水) 23:33:07.26 ID:+FiiBQuR.net
Ruby はもともと英国の開発者が作った言語だからな
英語で勉強したほうがいい

190 :デフォルトの名無しさん:2016/05/19(木) 01:35:45.58 ID:6QrHkYGV.net
Java, JS などは、数値などのprimitive型(4, 8バイト)があって、
primitiveにメソッドを呼ぶと、オブジェクトに変換する。
Boxing, Unboxing

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

一方、Rubyではすべてがオブジェクトだから、1つに付き、16バイト?を使うが、変換はしない。
ただ、数値などは直接ポインタに納めて、メモリを節約している

191 :デフォルトの名無しさん:2016/05/19(木) 01:38:12.77 ID:sIW2z0LA.net
>>189
なんで初心者に嘘ついてんだ。

>>188
元々rubyは日本出身の言語で日本語の情報が充実してるから、
rubyに限っては日本語書籍の方が良い可能性もある。
その本は読んだ事無いから知らないけど

192 :デフォルトの名無しさん:2016/05/19(木) 07:32:25.18 ID:l7SG7Alg.net
【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で複数ディレクトリの指定は出来ないのでしょうか?

193 :デフォルトの名無しさん:2016/05/19(木) 08:06:41.37 ID:JUfHMrn+.net
なんで勝手に引数を増やせると思ったのか謎だけどこれ読めば?
http://docs.ruby-lang.org/ja/1.8.7/method/Dir/s/=5b=5d.html

194 :デフォルトの名無しさん:2016/05/19(木) 08:46:18.92 ID:JUfHMrn+.net
一応これで動くよ
Dir.glob("/Users/xxxxx/Desktop/**/*\0/Users/xxxxx/test/**/*")
Dir["/Users/xxxxx/Desktop/**/*", "/Users/xxxxx/test/**/*"]

195 :デフォルトの名無しさん:2016/05/19(木) 16:57:17.84 ID:l7SG7Alg.net
>>193
>>194
ありがとう。ググった記述は1.9.xのコードだったということですね。

196 :デフォルトの名無しさん:2016/05/19(木) 17:09:52.29 ID:l7SG7Alg.net
ちなみに1.8.7にはDirメソッドないみたいだし、[か(か不明。[が正しいのかもしれないが。

197 :デフォルトの名無しさん:2016/05/19(木) 17:20:38.74 ID:JUfHMrn+.net
いや、(おそらく)どのバージョンでも>>192はエラーになるし
(おそらく)どのバージョンでも>>194は動くよ
あとDirはメドッソ名じゃなくてクラス名だよ
たぶんDir.[]のことを言いたいんだろうけど

198 :デフォルトの名無しさん:2016/05/19(木) 20:10:11.72 ID:uWcto14Q.net
とりあえず 1.8.7 はもう化石だし、対応してないライブラリも多いし、さっさとバージョンアップしないとね

199 :デフォルトの名無しさん:2016/05/19(木) 20:15:57.16 ID:X6Uyl1SE.net
>>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

200 :デフォルトの名無しさん:2016/05/19(木) 20:46:38.83 ID:MKa/yUEp.net
エクセルをrubyでうごかそうとおもったら、VBAの知識は必要ですか?

201 :デフォルトの名無しさん:2016/05/19(木) 20:50:13.84 ID:0NGD4TAz.net
VBAのサンプル見ながら書くんだから必要に決まってる

202 :デフォルトの名無しさん:2016/05/19(木) 22:33:03.86 ID:MKa/yUEp.net
@エクセル.do("エクセル動けVBA”)
こんなかんじ?

203 :デフォルトの名無しさん:2016/05/19(木) 22:38:09.82 ID:8tkESgzV.net
違う
そうじゃない

204 :デフォルトの名無しさん:2016/05/20(金) 00:04:24.82 ID:o172VlqL.net
俺、おまえらみたいになれるようにがんばるよ

205 :デフォルトの名無しさん:2016/05/20(金) 01:15:23.68 ID:KIw+nUhS.net
qiitaってクソみたいな記事増えて見る気失せたな

206 :デフォルトの名無しさん:2016/05/20(金) 03:14:06.44 ID:5Uv57k1E.net
スレチだけど

207 :デフォルトの名無しさん:2016/05/21(土) 00:15:47.42 ID:TJV+wjVx.net
>>192
Heroku の笹田耕一が、命令を中間コードに折りたたむ、

Ruby仮想マシン(RubyVM)を作ったのは、2004年のRuby 1.9 から

208 :デフォルトの名無しさん:2016/05/22(日) 17:09:47.75 ID:xX01J0kV.net
プログラマ芸人クソむかつくな
勉強中だからとか若いからとかいうのを免罪符にして
わかったふりして嘘を垂れ流すクズ
傀儡っていう自覚あるのかな

209 :デフォルトの名無しさん:2016/05/22(日) 20:11:08.18 ID:gMsVcx92.net
>>208
プログラム芸人って?

210 :デフォルトの名無しさん:2016/05/22(日) 21:54:03.17 ID:yMwTDWKP.net
>>208
そういうタレントなんか、相手すんな、気にするな。

211 :デフォルトの名無しさん:2016/05/24(火) 22:57:15.19 ID:XEe/ObJR.net
ウィンドウズ用のデスクトップのアプリケーションをつくりたいのですが、RubyでやるよりVBでやったほうが簡単でしょうか?
Ruby用のGUIはTKを一緒にインストールしました。
ウェブアプリケーション用の記事やレイルズ関連の話が多く、自分で使う用の簡易なデスクトップアプリはRubyで作成可能なのかよくわかりません。
選択やプルダウンをいくつか選ぶと、エクセル等に計算結果が自動出力されるものをつくりたいのです。

212 :デフォルトの名無しさん:2016/05/24(火) 23:02:11.55 ID:Zf7m21lM.net
出力先がExcelなのなら素直にVBやExcelマクロを使ったほうが素直
ただしなにかめっちゃテキスト処理するというならそこはRubyのほうがいいかも

213 :デフォルトの名無しさん:2016/05/24(火) 23:11:29.51 ID:XEe/ObJR.net
あーやはりそうですか。rubyをしばらく勉強してみて思ったのですが、
そもそもデスクトップ上でのみ動くようなもの(特にGUI)を作るのには、初心者にはあまり優しくはないですよね

214 :デフォルトの名無しさん:2016/05/24(火) 23:14:10.63 ID:2NWdMlbv.net
RubyでGUIは修羅の道だからな

215 :デフォルトの名無しさん:2016/05/24(火) 23:15:38.91 ID:XVnpS8Zn.net
>>213
VBとかはWindowsに特化してる分だけ簡単になるんよ。
Linuxでも動かしたいとかの場合は逆にRuby/TKになるけどね

216 :デフォルトの名無しさん:2016/05/24(火) 23:28:05.99 ID:XEe/ObJR.net
おとなしくVB勉強することにします。
全然アプリ作成がイメージできないから、結構買っちゃったRubyの本たちどうしよう。

217 :デフォルトの名無しさん:2016/05/24(火) 23:56:26.69 ID:ODiJmRGM.net
通販は知らんが放送開けてなくてレシートがあるなら返品できるかもしれないよ

218 :デフォルトの名無しさん:2016/05/25(水) 00:04:55.01 ID:0fASXL2x.net
>>216
近場なら買取に行くのにな

219 :デフォルトの名無しさん:2016/05/25(水) 08:35:17.92 ID:bbq7lHBG.net
>>216
てかJavaScriptにすれば?Electronとか流行ってていいんじゃね?

220 :デフォルトの名無しさん:2016/05/25(水) 12:32:03.88 ID:RqoGasre.net
プルダウンリストとボタンぐらいだったらRuby/Tkが簡単だし十分でしょ
凝ったUIにしようとすると死ねるけど

221 :デフォルトの名無しさん:2016/05/25(水) 12:43:12.66 ID:ECOeuz5z.net
win32oleを使ってもいいんじゃない?
解説も多いし

222 :デフォルトの名無しさん:2016/05/25(水) 14:51:30.25 ID:JMqhkYJX.net
>>211
テンプレートをエクセルで作っておいて
Rubyなりで選択やプルダウンした結果をテンプレに挿入して
出力する造りにすると楽

223 :デフォルトの名無しさん:2016/05/25(水) 14:52:11.16 ID:JMqhkYJX.net
>>214
それな

224 :デフォルトの名無しさん:2016/05/25(水) 17:30:55.16 ID:pZYZ14wu.net
ruby はすべてが修羅の道だよ

225 :デフォルトの名無しさん:2016/05/25(水) 18:09:07.32 ID:wY/Wnuvz.net
いやGUIはともかく
言語自体は簡単だろ

226 :デフォルトの名無しさん:2016/05/25(水) 18:13:47.52 ID:UjzgjwET.net
Windowsなら修羅の道
こういう勘違いして時間を無駄にする被害者を増やさないためにも、
Ruby開発陣はもうWindows相手にする気無いんだからはっきりそうアナウンスするべき

227 :デフォルトの名無しさん:2016/05/25(水) 18:13:57.93 ID:JMqhkYJX.net
windowsにも優しくしてください

228 :デフォルトの名無しさん:2016/05/25(水) 18:17:31.67 ID:JMqhkYJX.net
>>226
明言しちゃったら予算税金ぶんどれなくなるからじゃね

229 :デフォルトの名無しさん:2016/05/25(水) 18:19:31.06 ID:CBm2j+F0.net
かつてWindows上でのテキスト加工やVBA代わりに使ってる人も多かったけど、
今ではコミュニティが完全にRailsに乗っ取られちゃってもうダメだね
公式のVer.Upアナウンスで「Railsのパフォーマンスを改善しました」とか普通に言っててもう完全にRails専用スクリプト

230 :デフォルトの名無しさん:2016/05/25(水) 20:09:42.99 ID:o7owtJWO.net
IronRubyがあるやん
つかったことないけど。

231 :デフォルトの名無しさん:2016/05/25(水) 21:15:35.26 ID:ijFGsv4R.net
>>229
彼らの目は覚まさせなければならない
どんな犠牲を払ってもね
不快とかではなく害悪だ

232 :デフォルトの名無しさん:2016/05/26(木) 00:01:52.65 ID:HY9T5R8V.net
IronRubyの最終更新見たら2011年で草生える

233 :デフォルトの名無しさん:2016/05/26(木) 00:03:07.06 ID:HY9T5R8V.net
そういえばバイオインフォマティクスでruby扱うって言うのも結局はやらなかったのだろうか
結局perlな気がする

234 :デフォルトの名無しさん:2016/05/26(木) 01:24:50.33 ID:UjMbTLsx.net
MSはWindows依存の言語ばかりで、すべてのOSで使える、汎用言語を持っていない

だから、VS Code, Bash on Windows でも、Python, Ruby のサポートが最優先

235 :デフォルトの名無しさん:2016/05/26(木) 01:39:34.33 ID:/SAceF4R.net
VS Code、まだ日本語だと使いにくいんだよなー

236 :デフォルトの名無しさん:2016/05/26(木) 13:42:44.17 ID:PPtVZd97.net
>>232
終わってんな

237 :デフォルトの名無しさん:2016/05/26(木) 13:43:38.01 ID:PPtVZd97.net
>>233
放送大学のプログラミングの授業はRuby使っとった

238 :デフォルトの名無しさん:2016/05/26(木) 14:15:25.09 ID:looUebM7.net
うちの大学の前期課程ではrubyが準必修だったわ

239 :デフォルトの名無しさん:2016/05/26(木) 15:54:40.68 ID:QgXVvdFH.net
窓OSなんか、Rubyのサポートから捨てちゃえばいい。

240 :デフォルトの名無しさん:2016/05/26(木) 16:09:51.98 ID:PPtVZd97.net
昔からサポートなんてしていない
自己責任

241 :デフォルトの名無しさん:2016/05/26(木) 20:43:44.33 ID:kf6+V6jX.net
大学でRuby準必修とかすごいな
こちとらC, Scheme, Javaだったぞ…

242 :デフォルトの名無しさん:2016/05/26(木) 21:04:26.33 ID:gEBgfilR.net
Javaの授業と言いながら、mainメソッドの中に変数a,b,c,...を用意して全部そこで処理〜
みたいなのを東大出身者にやられてから10年程度しか経ってないと思うと感慨深い

243 :デフォルトの名無しさん:2016/05/27(金) 10:05:35.18 ID:M1a78pSK.net
>>238
お前、東大の理系の学生だろ

244 :デフォルトの名無しさん:2016/05/27(金) 11:51:43.10 ID:+931Hxzr.net
>>242
どこの學校?

245 :デフォルトの名無しさん:2016/05/27(金) 16:26:46.66 ID:HURQQ888.net
プログラミングの考え方が対象年齢5歳の絵本で身につく「ルビィのぼうけん」レビュー
http://gigazine.net/news/20160524-hello-ruby-review/

プロジェクトの開始からわずか3時間で目標額の1万ドル(約100万円)に到達

246 :デフォルトの名無しさん:2016/05/27(金) 17:03:59.14 ID:a5zDK+Zd.net
djangoわろす

247 :デフォルトの名無しさん:2016/05/27(金) 17:40:10.41 ID:yYwIsK/3.net
>>244
某田舎の高専

248 :デフォルトの名無しさん:2016/05/28(土) 00:20:50.45 ID:PtZBoQp9.net
真偽・対偶・集合など論理的思考・論理演算は、中学生以上じゃないと理解できない

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

判断や思考は、できない

249 :デフォルトの名無しさん:2016/05/28(土) 00:53:58.83 ID:HvcbCyzV.net
>>248
小学生舐めすぎ

250 :デフォルトの名無しさん:2016/05/28(土) 08:30:37.99 ID:87dv3xOx.net
小学生舐めたい

251 :デフォルトの名無しさん:2016/05/28(土) 11:28:04.15 ID:GLCLhEM2.net
>>250
おまわりさんこっちです

252 :デフォルトの名無しさん:2016/05/28(土) 12:00:38.49 ID:YkPoIoOS.net
>>248
親や環境の影響によると思う

253 :デフォルトの名無しさん:2016/05/28(土) 12:01:49.75 ID:YkPoIoOS.net
出来るやつは小学生でも出来る
出来ないやつは大人になっても出来ない
もちろん多くの人間はその中間でしかない

254 :デフォルトの名無しさん:2016/05/28(土) 23:14:33.76 ID:vZatrWbm.net
プログラミング初心者です
rubyを始めようと思っているのですが、基礎から教えてくれるサイトなどを教えていただきたいです

255 :デフォルトの名無しさん:2016/05/29(日) 00:06:18.34 ID:VvL70MFq.net
>>254
サイトは知らない
本ならテンプレ参照

256 :デフォルトの名無しさん:2016/05/29(日) 04:14:13.12 ID:RrRCCmyQ.net
本なら『たのしいRuby』が入門書の鉄板

257 :デフォルトの名無しさん:2016/05/29(日) 12:12:31.80 ID:9WWbP5OA.net
プログラミング初学者向けの本なら「ルビィのぼうけん」(対象5歳以上)がおすすめ

258 :デフォルトの名無しさん:2016/05/29(日) 12:32:35.29 ID:fkiT89OT.net
リンダって人どんだけプログラミングできんの?
芸人?

259 :デフォルトの名無しさん:2016/05/30(月) 01:22:02.02 ID:3DZnNVRd.net
https://image.kusokora.jp/v1/b7daff98c2b748dfa6cb8240c8ac7c33/kusokora/Caz5uAHUsAAwKwp.jpg

260 :デフォルトの名無しさん:2016/05/30(月) 13:39:12.86 ID:JuVY621L.net
Rubyって演算子もメソッドって聞いたんですけど
&.とか全然メソッドじゃないですか
うそじゃないですか

261 :デフォルトの名無しさん:2016/05/30(月) 15:50:13.85 ID:sT3Um2rG.net
Fixnum#& はメソッドだろ

262 :デフォルトの名無しさん:2016/05/30(月) 16:45:26.45 ID:sT3Um2rG.net
ちなみにメソッドじゃないものも確かにある
>再定義できない演算子(制御構造)
>演算子の組合せである自己代入演算子は再定義できません。
> = ?: .. ... not && and || or ::

http://docs.ruby-lang.org/ja/2.3.0/doc/spec=2foperator.html

263 :Ruby初心者:2016/05/30(月) 21:37:38.47 ID:FFEidQWc.net
Rubyの超初心者です。
Rubyの勉強を始めようと思いhttp://rubyinstaller.org/からRubyのインストーラーを
ダウンロードしたのですが、rubyinstaller-2.2.4.exe など
KINGSOFT Internet Securityでマルウェア潜伏を検知しました。(tclpip85.dll)
これは誤検知なのでしょうか?
ご存じの方、よろしくお願いします。

264 :デフォルトの名無しさん:2016/05/30(月) 22:40:36.17 ID:IRxQFxCl.net
>>263
KINGS○FT Internet Securityとかいう、
某特亞ソフトがマルウェアですぞい。
ということで、窓OSでRubyを使うのもやめなはれ。

マジレスすると、誤認識。
所詮、アレは特亞だから、さっさとアンインストールしはなれ。

265 :デフォルトの名無しさん:2016/05/30(月) 23:40:12.61 ID:CvrnMKOQ.net
>>263
卵を残しているからuninstallしたあと、有料ソフトを入れて全スキャン
norton eset カスペルスキーなどを推奨

266 :デフォルトの名無しさん:2016/05/31(火) 20:06:20.39 ID:wtf3ir0Y.net
ShiftJISとUTF8でかかれたテキストファイルをそれぞれ読み込んで
NEC特殊文字がないか検索したいんだけど、

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

みたいな式を書いてもIncompatibleだと怒られます
どうすればいいのでしょうか?

267 :デフォルトの名無しさん:2016/05/31(火) 20:59:36.26 ID:7tSTm6mV.net
なんでWindows-31J"でエンコードしてんの

268 :デフォルトの名無しさん:2016/06/01(水) 00:14:51.04 ID:91rys83L.net
>>260

せっかくなので答えると
&は
def &(other)
end
で定義可能
.は演算子でなく区切り文字

269 :デフォルトの名無しさん:2016/06/01(水) 04:44:46.68 ID:bpjRczp9.net
円囲みの数字は、Windowsだけが使う、環境依存文字だね。CP932

270 :デフォルトの名無しさん:2016/06/01(水) 12:25:44.58 ID:dPnMKqYG.net
&.って2.3のsafe navigation operatorの事を言ってるんじゃないの?

271 :デフォルトの名無しさん:2016/06/01(水) 12:30:21.40 ID:Fp4IytvV.net
エスパーじゃないからわからないし
そもそもなぜ演算子すべてがメソッドじゃないと「嘘吐き」になるのかもわからない

272 :デフォルトの名無しさん:2016/06/02(木) 07:24:34.00 ID:lxZxN/+H.net
Rubyのインストーラや構成ファイルがアンチウィルスソフトウェアでヒットするのは誤検知ではなく正常の範疇
プログラミングとはそういうもんだし安全側に倒した検知というのもそういうもんだ
キングソフトのアプリケーションの使用を勧めるものではないが

273 :デフォルトの名無しさん:2016/06/02(木) 12:24:43.10 ID:hpz40EtU.net
>>271

分からないんだね

274 :デフォルトの名無しさん:2016/06/04(土) 01:10:14.44 ID:5FXvcCoj.net
【OS】 Mac OS X 10.8.5 (x86_64)
rbenvをインストールしたいんだけど、gitの基本を学ぶのに良い書籍かサイトを教えて下さい。
ruby 2.1.xか2.0.x系でgitのインストールが書かれている本でも可です。

275 :デフォルトの名無しさん:2016/06/04(土) 01:35:12.26 ID:3lsMjWzh.net
git は、ネット回線がつながっていなくても、
ローカルPC内に、コピーしてあるファイルに、上書きできる

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

このように、皆がローカルファイルに対して、上書きしているから、
リポジトリに保存する際、他者とのコンフリクトがよく起きるので、うまく調整すべし

276 :デフォルトの名無しさん:2016/06/04(土) 02:51:29.78 ID:n5pCla5O.net
わあアスペって本当にいるんだ

277 :デフォルトの名無しさん:2016/06/04(土) 03:27:04.44 ID:C4qvAlJn.net
なんかむちゃくちゃでワロタ

278 :デフォルトの名無しさん:2016/06/04(土) 04:04:36.35 ID:HeBl+5ND.net
rubyで動作確認したバージョン以下では動かないようにするにはどのように書けばよいですか?

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

if sys.version_info < (3, 4):
 sys.exit('version error')

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

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

git clone git@github.com: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).

280 :デフォルトの名無しさん:2016/06/04(土) 05:59:42.06 ID:kjZDZHci.net
なぜrbenvの事は調べられるのに
gitの事は調べられないのか

ついでに言っとくと、rbenvは良いとしてもgitはスレ違い
gitの事はgitのスレ行って聞いた方が良い

281 :デフォルトの名無しさん:2016/06/04(土) 07:34:17.81 ID:n5pCla5O.net
なんだまだ詰まってたのか
rbenvの作者はgitを
「rbenvをいんすとーるするぷろぐらむ」
「rbenvをあっぷでーとするぷろぐらむ」
としか使ってない(少なくとも利用者に向けては)
現時点では全く難しいこと考えずに上記の2つのコマンドラインを呪文として使うといい
その探求心はあとあと君を助けるだろうし呪文じゃないものを呪文として積み残さないことにもつながるだろう
プログラミングにはオマジナイなんて存在しないのさ ※ローカルレガシー解明職業者以外向けの文言
んでとりあえず今はrbenvを入れることのほうを優先しろw

282 :デフォルトの名無しさん:2016/06/04(土) 11:28:20.81 ID:X9sTQ23f.net
>>278
RUBY_VERSION か `ruby -v`でバージョン情報を取得すれば?

283 :278:2016/06/04(土) 18:00:02.31 ID:SsvSKySH.net
>>282

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


perlからの移行なのですが、perlの use warnings; (一度も定義されていない関数を使用するとワーニングを出す)に相当するものはありますか?

284 :278:2016/06/04(土) 18:02:18.28 ID:SsvSKySH.net
変数を使用するときに毎回 hoge.nil? とするのは現実的ではないと思いますので、、

285 :デフォルトの名無しさん:2016/06/04(土) 18:09:56.30 ID:X9sTQ23f.net
>>284
hoge rescue 例外処理
例外オブジェクトは$!で得られる

286 :デフォルトの名無しさん:2016/06/05(日) 04:51:30.39 ID:bEHxSIM9.net
ruby -w
RUBYOPT環境変数 -w
$VERBOSEグローバル変数 true

これらのウォーニングは?

287 :284:2016/06/05(日) 13:26:35.11 ID:Nzi0oWQl.net
>>285,286

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

#!/usr/bin/env ruby -w

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

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

この $VERBOSE 以外にもおすすめの設定などありますでしょうか?
$-W は $VERBOSE と同じようですが、下記2つを設定しても特に変化はなさそうでした。
$-v=true
$-w=true

288 :デフォルトの名無しさん:2016/06/05(日) 13:42:43.61 ID:sTpf+U42.net
>>279
なんでマルチしようと思ったの?

289 :デフォルトの名無しさん:2016/06/05(日) 16:47:36.99 ID:V1+RWzEF.net
class Foo
  def <=>(other)
    〜〜
  end
end

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

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

みたいに書きたいんですが、可能でしょうか?
イメージとしてはsuperみたいな感じを思い浮かべています

290 :デフォルトの名無しさん:2016/06/05(日) 16:58:06.72 ID:yB2MQIFp.net
>>289
> <=>の左右を取り換えても同じ結果になるように
その考え方自体がおかしい

あと>>288はテストケース書くことを覚えるといいぞ

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

テストケースというのも調べてみます!

292 :デフォルトの名無しさん:2016/06/05(日) 23:24:46.76 ID:bEHxSIM9.net
>>287
$VERBOSEグローバル変数は、プログラム実行時に設定されるから、
コンパイル時には警告が見れないらしい

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

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

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

型変換か、ダックタイピングで考えた方が、無難

293 :デフォルトの名無しさん:2016/06/06(月) 10:29:45.98 ID:4LJvtaQK.net
>>289
いくつか方法がある
http://d.hatena.ne.jp/rubikitch/touch/20080504/1209835550

294 :デフォルトの名無しさん:2016/06/06(月) 11:05:15.34 ID:4LJvtaQK.net
>>289
リンク先よく見ずに貼っちゃったけど
そういう場合はprepend/superだな

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

class Array
prepend FooExt
end

295 :デフォルトの名無しさん:2016/06/06(月) 11:47:47.85 ID:MfRp00K1.net
日付とユーザー名見てもらっても見当つくと思うけど、
Rubyではなんでもできるなにしても許されるなんて思い上がってた時代の遺物ではある
今は標準クラスの拡張をしなくて済むような方法をなんとか模索するのが普通
普通の言語になっちゃったって? まあねえ

296 :デフォルトの名無しさん:2016/06/06(月) 12:13:03.09 ID:G3lOY9F4.net
>>295
Yahoo!知恵袋みたいな回答だな

297 :デフォルトの名無しさん:2016/06/06(月) 12:55:43.54 ID:uH2v6H5p.net
>>292-294
どうもありがとうございます!
prependがちょうど想定していたようなものでした!

298 :デフォルトの名無しさん:2016/06/06(月) 13:06:00.10 ID:LOH+gXPe.net
>>295
十年前はムダに意識高かったな

299 :デフォルトの名無しさん:2016/06/06(月) 15:33:00.64 ID:MfrgUwdV.net
>>297
ちなみに多分関係ないと思うけど、
数値っぽいクラスを作るときはNumeric#+とかを再定義するんじゃなくてFoo#coerceを定義するんだぞ

http://docs.ruby-lang.org/ja/2.1.0/method/Numeric/i/coerce.html

300 :デフォルトの名無しさん:2016/06/06(月) 17:30:53.24 ID:uH2v6H5p.net
>>299
coerceを知らずに、まさにやらかそうとしてました
重ねてありがとうございます!

301 :デフォルトの名無しさん:2016/06/09(木) 20:20:07.54 ID:biKmaAAl.net
たのしい 5版の8章 クラスとモジュール まで読んでいます。
Net::HTTP クラスというのが出て来たのですが、ここで使われている::の記号はNetクラスのHTTPメソッドを呼び出しているとみて良いのでしょうか?

302 :デフォルトの名無しさん:2016/06/09(木) 20:28:02.35 ID:OsIQiMsD.net
Foo::BAR Fooクラスの定数BAR
FOO$bar Fooクラスのbarメソッド

303 :デフォルトの名無しさん:2016/06/09(木) 20:28:44.66 ID:XKw/hvPS.net
そのへんの記号の説明自体が本に書いてねーか
面倒なら階層区切りの記号だとでも思ってくれ
Windowsエクスプローラーの\
URLの/

304 :デフォルトの名無しさん:2016/06/09(木) 20:28:48.01 ID:OsIQiMsD.net
タイポ
$じゃなくて#ね

305 :デフォルトの名無しさん:2016/06/09(木) 20:46:09.43 ID:biKmaAAl.net
コラムに メソッドの表記法 として

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

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

というのがだいぶ前のページにありまして、それに従って解釈すると
Net::HTTPはNetクラスのHTTPメソッド
って事になるのだけれど、irbでNetクラスが呼び出せないのでおかしいなと。

306 :デフォルトの名無しさん:2016/06/09(木) 20:51:52.35 ID:OsIQiMsD.net
そのくらいググればすぐわかんだろ
http://docs.ruby-lang.org/ja/2.3.0/library/net=2fhttp.html

307 :デフォルトの名無しさん:2016/06/09(木) 21:50:59.90 ID:bVgVhSJZ.net
それを調べてここで報告するのがお前の仕事だろ

308 :デフォルトの名無しさん:2016/06/09(木) 22:07:37.30 ID:c+D8jpow.net
職業:Web検索スペシャリスト

309 :デフォルトの名無しさん:2016/06/09(木) 22:35:18.52 ID:j0nSzaIT.net
×Web検索スペシャリスト
○自宅検索員

310 :デフォルトの名無しさん:2016/06/10(金) 00:58:53.85 ID:w12bLHXo.net
>>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"
>>

311 :デフォルトの名無しさん:2016/06/10(金) 01:05:31.69 ID:w12bLHXo.net
>>305
>それに従って解釈すると
>Net::HTTPはNetクラスのHTTPメソッド
>って事になるのだけれど、

Rubyでは:
・モジュール/クラス/定数は、英大文字で始まる
・メソッド/ローカル変数は、英子文字で始まる
という決まりがあるから、記号HTTPは
(メソッドではなくて)モジュールもしくは
そのサブクラスであるクラスを表すものと推測すべき

312 :デフォルトの名無しさん:2016/06/10(金) 03:03:40.39 ID:1r2/ZPeG.net
>>302
これの2つめは初心者混乱するだろ
どうしても2つめを書きたいならFoo#barとFoo.barの違いと一緒に伝えるべき

313 :デフォルトの名無しさん:2016/06/10(金) 23:17:05.17 ID:bspATi8a.net
::ってフォルダ階層のパス区切り記号だったんだ。

昔のMacOSでは:がフォルダ階層のパス区切り記号に使われていたらしいから、開発者はAppleUserだった?

314 :デフォルトの名無しさん:2016/06/11(土) 06:13:16.75 ID:Z1WdmHmp.net
>>313
C++由来
残念でした

315 :デフォルトの名無しさん:2016/06/11(土) 11:55:15.68 ID:peVuG0iD.net
ちょまどたんはぁはぁ
https://pbs.twimg.com/media/Cko0bn9VAAANiKM.jpg
https://pbs.twimg.com/media/Cko0cHtUUAAvUQo.jpg
https://pbs.twimg.com/media/Cko0cbrUYAYeAnc.jpg

316 :デフォルトの名無しさん:2016/06/11(土) 19:18:48.19 ID:iSPIsEmM.net
だれ?

317 :デフォルトの名無しさん:2016/06/11(土) 20:06:42.47 ID:tJYHO1Ae.net
>>316
たぶんこいつ
https://chomado.com/

318 :デフォルトの名無しさん:2016/06/12(日) 02:29:41.59 ID:GVmUZEwV.net
ちょまどのあの噂は本当なんだろうか

319 :デフォルトの名無しさん:2016/06/12(日) 11:23:16.13 ID:xN9NR8mn.net
今なら聴ける気がするので。

ちょまどの絵は好みじゃないけど、
CPUの創り方
の絵を描いた絵師さんを知りたい。

320 :デフォルトの名無しさん:2016/06/12(日) 14:16:10.54 ID:5Z+bF2WO.net
スレチ

321 :デフォルトの名無しさん:2016/06/12(日) 16:09:48.75 ID:nE4rQ5a5.net
>>320

http://livedoor.blogimg.jp/rogyweb314/imgs/3/b/3b3ad6de.png

322 :デフォルトの名無しさん:2016/06/12(日) 17:10:50.81 ID:cSvEa/ak.net
マイナビに問い合わせたらええやろ。
ストーキングしたいので教えてくださいって。

323 :デフォルトの名無しさん:2016/06/12(日) 21:14:18.29 ID:4Gt33m04.net
>>319
スレチだけど
本文イラスト 須田 都 って書いてた

324 :デフォルトの名無しさん:2016/06/13(月) 01:42:21.85 ID:BHwe7pwo.net
gemのinstall時にdevkitでビルドする系のgemをインストールする際に
ビルドの進捗状況を報告させることってできます?
時間かかってるときに固まってるのか進んでるのかわからない・・・

325 :デフォルトの名無しさん:2016/06/13(月) 03:03:23.43 ID:I6MCNyjd.net
--verboseはどうだろ

326 :デフォルトの名無しさん:2016/06/13(月) 15:11:26.91 ID:zgrawcOE.net
>>323
スレチだけど
本文執筆者と絵師は同一人物ってことになるな

327 :デフォルトの名無しさん:2016/06/13(月) 18:07:35.31 ID:3kyYR2Ny.net
>>326
スレチだけど
著者は渡波 郁 になってたよ

328 :デフォルトの名無しさん:2016/06/13(月) 18:18:33.22 ID:LOYYlPRQ.net
「スレチだけど」は免罪符にならねえよ
いい加減黙れ

329 :デフォルトの名無しさん:2016/06/13(月) 19:09:49.77 ID:Q+rjY21+.net
>>327

スレチだけど、下の名前が同じだから、ペンネームかもね

330 :デフォルトの名無しさん:2016/06/13(月) 20:10:53.27 ID:EyvJcWZd.net
変わるんだ変わるんだ
出版毎に
行くぞ幽霊作家
ゴーストライター

331 :デフォルトの名無しさん:2016/06/14(火) 01:09:38.96 ID:6xiZrmBI.net
1変数の非線形関数f(x)がf(x)=0となるxを求めるシンプルでいい感じのライブラリありませんか?
Ruby/GSLだとちょっとオーバースペック過ぎて…

332 :デフォルトの名無しさん:2016/06/14(火) 10:21:33.16 ID:dYSnVaKQ.net
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

333 :デフォルトの名無しさん:2016/06/14(火) 13:07:34.64 ID:Xw3W+KJl.net
iruby

割とマジで

334 :デフォルトの名無しさん:2016/06/14(火) 13:58:36.80 ID:dYSnVaKQ.net
>>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]

ちょっとあきらめモードです。

335 :デフォルトの名無しさん:2016/06/14(火) 14:05:30.93 ID:bPd6E78A.net
>>332
これよくわからんのだけどデータベースはひとつじゃないの?
モデルはテーブルに当たると思うのだが

336 :デフォルトの名無しさん:2016/06/14(火) 14:24:28.45 ID:dYSnVaKQ.net
>>335
モデルの数=models/*.rbのファイル数=test/*_test.rbのファイル数
となると思ってます。

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

全体的にActiveRecordを使った方が楽になりそうではあるんですが、ノウハウが無いのと接続が
遅いということで、現状はPG::connect()して直接pgのメソッドを使ってコーディングを進めてます。

337 :デフォルトの名無しさん:2016/06/14(火) 22:17:59.99 ID:Kzbvzu4b.net
>>332
DBMS(PostgreSQLサーバ)への接続にいくらかの時間を要するのは当たり前のこと
普通はDBMSにはアプリ起動時(あるいは初回のアクセス時)に接続してそれを維持する
また、すこし規模が大きくなれば(=「それほど小さくはない」規模になれば)、
コネクションプールといった技法も要求される

それから「250*20=5秒」という計算式について、この20という定数は何の値かな?
もしModel(=テーブル)の数ということであれば、根本的なところで勘違いしてるよ
DBMS上で複数のデータベースを定義して、そのデータベース単位にコネクションを確立する
だからデータベース内に存在する複数のテーブル(=Model)をアクセスするのに、
あらたにコネクションを張る(=データベースに接続する)必要は無い

338 :デフォルトの名無しさん:2016/06/15(水) 02:30:34.57 ID:Gm0oH8T8.net
こんな女の子キャピキャピ漫画の需要層は薄いだろ
だいたいRuby やワイスの格好見てみろ
フリフリのミニスカとか戦闘する気あんのかと

339 :デフォルトの名無しさん:2016/06/15(水) 10:14:53.09 ID:0Hf+sg/L.net
>>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回必要になります。

340 :デフォルトの名無しさん:2016/06/16(木) 22:27:32.05 ID:DrR6OXvd.net
Ruby2.3.0で
nil[0]=0
が例外にならないんだけど、なぜだろう?

Ruby2.2だと、ふつうに例外になるのに。
Ruby2.3.0でも、nil[0]なら例外になる。
なんかおかしい気が。

341 :デフォルトの名無しさん:2016/06/16(木) 22:46:45.58 ID:lq2RMnrw.net
>>340
バグ報告しましょう

342 :デフォルトの名無しさん:2016/06/16(木) 23:21:17.48 ID:T2EM03jj.net
2.3.1でも例外になるね

343 :デフォルトの名無しさん:2016/06/16(木) 23:36:15.65 ID:G8mFGz+4.net
nil[hoge] = hogehoge
とかしてもNameErrorにすらならないんだな

344 :デフォルトの名無しさん:2016/06/16(木) 23:54:18.82 ID:neKk6sZN.net
おおこれすごいな

345 :340:2016/06/17(金) 10:43:12.89 ID:SNT89ii+.net
>>342
お、たすかる。
2.3.1のWindows版バイナリはまだ配布されてないので。
やっぱりバグで、修正されたんやね。

346 :340:2016/06/17(金) 10:45:11.00 ID:SNT89ii+.net
>>343
ぼっち演算の影響かねえ。
直接は歓迎会なさそうだけど。

347 :デフォルトの名無しさん:2016/06/17(金) 11:50:15.28 ID:wk6+tOOo.net
歓迎会がなんかツボったw

348 :デフォルトの名無しさん:2016/06/17(金) 12:57:18.13 ID:hG7B1m7h.net
>>340
>nil[0]=0
1.8.7 だと無事エラーになった

349 :デフォルトの名無しさん:2016/06/17(金) 13:29:02.01 ID:WSjlHFjC.net
ソースが仕様です(キリっ

350 :デフォルトの名無しさん:2016/06/17(金) 14:21:01.72 ID:SYFwm9MP.net
230のみで起こるバグなのか
231で修正されてるならあんまり気にしなくて良さそうだね

351 :uy ◆e6.oHu1j.o :2016/06/17(金) 16:33:46.05 ID:GkjZw5OC.net
質問です

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'   ← これが間違って書き込まれているデータ

352 :uy ◆e6.oHu1j.o :2016/06/17(金) 16:36:29.12 ID:GkjZw5OC.net
>>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' 

353 :デフォルトの名無しさん:2016/06/17(金) 17:24:52.68 ID:WSjlHFjC.net
データの方ではなく
再現するソースを貼りなさい

354 :デフォルトの名無しさん:2016/06/17(金) 17:34:13.83 ID:8Hiy7fy+.net
>間違ったデータを書き込んでる

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

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

自分で論理的に原因の切り分けも出来ないくせに原因特定するなんて馬鹿のすることです。

355 :uy ◆e6.oHu1j.o :2016/06/17(金) 18:48:19.99 ID:GkjZw5OC.net
>>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時間程になりますが
今のところエラーは出現していません

356 :デフォルトの名無しさん:2016/06/17(金) 19:13:18.67 ID:YpnIY8DD.net
スラドにこんな記事あった

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

最近日本でもPython本急に増えた印象あるよね。
やばいのかなRuby。

357 :uy ◆e6.oHu1j.o :2016/06/17(金) 21:55:15.96 ID:GkjZw5OC.net
>>355
ほぼ同じ別のスクリプトで再発し今度はさらに状態の悪いデータになっていたので原因は確定しました
どうバグを回避し表面化させないかというフェイズに移行します
ありがとうございました
本番環境はruby1.9.3なので古いバグを踏んだものと思う事にします

358 :デフォルトの名無しさん:2016/06/18(土) 15:29:35.92 ID:AGMP56Qn.net
>>356
Pythonに負けた理由なら
1. 実行速度が遅かった
2. Windowsへの対応がひどかった
じゃね
他にもあるかも知れん

359 :デフォルトの名無しさん:2016/06/18(土) 15:37:16.15 ID:Au7MFafK.net
負けたというか世界的にはRubyってRailsの組み込みスクリプトという認識しかないわけで
そもそも勝負にすらなってない

360 :デフォルトの名無しさん:2016/06/18(土) 15:59:35.05 ID:RKqldoZs.net
ある意味勝ち逃げだろ Pyrrha は。
ただ、あれで終わり。
みんなの記憶にしか残らない散った存在。

Ruby はまだこれから成長する。
この差は大きい。

361 :デフォルトの名無しさん:2016/06/18(土) 16:49:47.95 ID:SI6NucGb.net
勝ち負けとか心底どうでもよくね?
長けてる領域が違うだけの話

362 :デフォルトの名無しさん:2016/06/18(土) 19:27:38.85 ID:AGMP56Qn.net
たしかに負けてるは言い過ぎだったかもしれない
こんなにたくさんレスが付くとは思わなかった

363 : ◆QZaw55cn4c :2016/06/18(土) 19:32:09.34 ID:KfEx8M6W.net
ruby をはじめた

364 :デフォルトの名無しさん:2016/06/18(土) 20:10:04.10 ID:SI6NucGb.net
>>362
なんかすまん
個人的にdisってるわけじゃないので気にしないでくれ
ちなみに俺はRubyの方が好き

365 :デフォルトの名無しさん:2016/06/18(土) 21:19:07.41 ID:bpHrap68.net
>>362

Ruby に謝れ

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

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

メタプログラミング Ruby 第2版、2015
Effective Ruby、2015
Rubyのしくみ、2014

367 :デフォルトの名無しさん:2016/06/19(日) 12:37:38.12 ID:5KvSKdL/.net
pythonにも黒魔術はあるが
黒魔術でもpythonの方が書きやすいな

368 :デフォルトの名無しさん:2016/06/19(日) 16:46:12.80 ID:rmVET6vi.net
Win10 Anniversary Updateで少しはWin環境が良くなるのかな?

369 :デフォルトの名無しさん:2016/06/20(月) 01:21:45.09 ID:HoUv0dJ2.net
>>365

http://img01.deviantart.net/c0e3/i/2013/346/1/5/rwby_genderbent_by_mechanicale-d6xq7tb.jpg

370 :デフォルトの名無しさん:2016/06/20(月) 09:01:35.78 ID:XE/E5M6R.net
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番目が入るのか。

基本的なところから理解していなくて申し訳ありません。詳しい方のご教授をお願いします。

371 :デフォルトの名無しさん:2016/06/20(月) 09:12:09.51 ID:Kk80zM3k.net
>n cats = [] = 1
SyntaxError: unexpected '=', expecting end-of-input
n cats = [] = 1

5冊読む前に1冊でも理解した方が良いよ

372 :デフォルトの名無しさん:2016/06/20(月) 09:24:31.93 ID:XE/E5M6R.net
>>371
ありがとうございます。そうですよね、エラーが出るんです。おかしいな、間違って書いてないとおもうのですが。
あとはあなたのおっしゃる通りなのですが、プログラム自体が初めてでなるべく簡単そうな本を探して自学しています。
でおどの本も途中から猛烈に難しくなって「こりゃ駄目だ」と思ったら次の本という繰り返しで弱っています。

373 :デフォルトの名無しさん:2016/06/20(月) 09:25:44.54 ID:Kk80zM3k.net
ちなみに
n cats = [] = 1
はまず [] = 1 ってのが実行されようとするからその時に構文エラーになる

n, cats = 1, []
の見間違いじゃない?

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

この前提の下なら370の言っていることは概ね正しい
そして n = 1 なので
puts(cats[n]) は
puts(cats[1]) ってことで1番目の要素が出力されることになる

375 :デフォルトの名無しさん:2016/06/20(月) 09:43:21.95 ID:XE/E5M6R.net
>>373
おお、すごい。ありがとうございます。ちゃんとTamaが表示されました。うれしい。
今、改めて本を読みなおしてみたんですが、やっぱりn cats = [] = 1となっていました。
自分のようなど素人がこれをやられるとどうにもなりません。どこがわからないのかわからない
というのは情けない限りですが、おかげさまで納得して先に進むことができました。ありがとうございました。

376 :デフォルトの名無しさん:2016/06/20(月) 09:45:26.19 ID:XE/E5M6R.net
>>374
おお、わかりやすい説明ありがとうございます。助かりました。

377 :デフォルトの名無しさん:2016/06/20(月) 09:51:56.08 ID:Tc3CU3LQ.net
出版社のサイトに正誤表あったよ

378 :デフォルトの名無しさん:2016/06/20(月) 10:29:34.75 ID:OWUJ8xtd.net
そんなにRubyが合わないなら早めにPythonに乗り換えた方がいいな
せっかくこれから新しいのを覚えるというチャンスなのに10年後廃れている
言語を学ぶのはもったいない

379 :デフォルトの名無しさん:2016/06/20(月) 11:06:36.37 ID:XE/E5M6R.net
>>377
そうですね、何で最初から出版社のホームページを見なかったんだろう…

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

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

長々とすみませんでした。

380 :デフォルトの名無しさん:2016/06/20(月) 12:33:22.39 ID:6a0VacLi.net
3行で

381 :デフォルトの名無しさん:2016/06/20(月) 15:04:19.05 ID:zSeivZg9.net
>>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/ にも明記されてるぐらいなので無難だと思う。

382 :デフォルトの名無しさん:2016/06/20(月) 16:37:55.79 ID:RVn5oxXA.net
>>379
その本読んだけど
無脳本は目標として良いと思うよ

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

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

コードを読んで動作をイメージ
できるようになれば分かる

383 :デフォルトの名無しさん:2016/06/20(月) 16:41:50.02 ID:RVn5oxXA.net
あとは本って出版された後は古くなる一方だから
GUIキットは本の(Visualu Ruby)にこだわらず
今の新しいライブラリ使った方が便利

384 :デフォルトの名無しさん:2016/06/20(月) 16:47:39.38 ID:78XmmaUt.net
>>377
もしこれが本当なら
かなり恥ずかしい部類の
誤植だな

385 :デフォルトの名無しさん:2016/06/21(火) 12:37:52.56 ID:na89rYIQ.net
一行で短くまとめられる仕様もここまで極まったか…と一瞬戦慄したわ

386 :デフォルトの名無しさん:2016/06/21(火) 13:24:02.94 ID:LE9F52CG.net
編集者なにやってんだよ
首吊ってくるレベル

387 :デフォルトの名無しさん:2016/06/21(火) 17:03:07.87 ID:W3C4RKeO.net
>>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
となっているので、何か勘違いをしているのだと思いますがそれがなんなのかわかりません。長文申し訳ありませんがよろしくお願いします。

388 :デフォルトの名無しさん:2016/06/21(火) 17:27:16.66 ID:rdnhr1yO.net
a == 1 の時、
1 と出力してから a += 1 によって a == 2 になって2行目へ行く。
次のループでは a == 2 なので a == 10 になってまた2行目へ行く。
a < 5 は false なので while〜end は実行されずに終了する。

389 :デフォルトの名無しさん:2016/06/21(火) 17:28:05.78 ID:397g3bwN.net
>>387
言語の引っ越しはしないで正解

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

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

nextの後whileの条件節で
偽になるから無限ループしない

390 :デフォルトの名無しさん:2016/06/21(火) 17:29:54.69 ID:LE9F52CG.net
そもそもなんで a=10 を代入してるんだろ a=5 じゃだめなんすか?

391 :デフォルトの名無しさん:2016/06/21(火) 17:36:43.51 ID:397g3bwN.net
>>390
5でもいいよ

>nextが発動し今の処理はなかったものとされ
これが勘違いね

392 :デフォルトの名無しさん:2016/06/21(火) 17:39:26.71 ID:rdnhr1yO.net
まあそれを言い出したら print(a, "") とかも謎だよね
元は print(a, "\n") だったのかな

393 :デフォルトの名無しさん:2016/06/21(火) 18:01:59.82 ID:MNNlgPEV.net
break を教えずに a=Hoge とか +=1 以外の方法で制御変数書き換える形で脱出って筋悪いよね

394 :デフォルトの名無しさん:2016/06/21(火) 18:09:39.05 ID:mjvOmEo6.net
普通にバグの元になるな

395 :デフォルトの名無しさん:2016/06/21(火) 18:10:26.89 ID:W3C4RKeO.net
>>388
そっか、なるほど!条件文がfalseになってるからwhile文のendまですっ飛ばされるわけですね!
すっごくよくわかりました。ありがとうございます。「a=10がなかったことになる」のではなくて、
a=10のままwhile文の条件文を吟味するんですね。やっとわかりました。

それから今頃なんだと怒られるかもしれませんが、今一度本を読み返してみたら、nextとredoで
戻る場所が違ってたんですね。めんぼくない。redoだと条件文にジャンプしないからa=10のまま出力される
というわけですね。なんでもいいけど、難しいなあ。皆さんよくこんな複雑なものをマスターできましたね。
自分の頭が悪いのかな。まあ、とにかくがんばります!そのほかの皆さんの回答もありがとうございました。

396 :デフォルトの名無しさん:2016/06/21(火) 19:01:29.78 ID:VP/Q8JMz.net
というかRubyでその手のループはtimesとかuptoとか使うべきだし、改行を伴う標準出力はputsを使うべきだと思う
元の本を知らんからアレだが…

あとRubyは簡単ではないと思う
それなりのことをサクッとやるのは簡単だけど

397 :デフォルトの名無しさん:2016/06/21(火) 19:08:43.11 ID:rdnhr1yO.net
whileやforなんてなるほどあんまり使わないけど制御構造は一通り学んでおくべきなんじゃないのかな
まあ俺ならこう書くが
5.times{|i|
  break if i == 2
  puts i
}

398 :デフォルトの名無しさん:2016/06/21(火) 19:21:50.55 ID:gJMymMte.net
俺ならこう書く
5.times{|_|-~p(_)!=2||break}

399 :デフォルトの名無しさん:2016/06/21(火) 19:48:13.62 ID:mn7QpJSf.net
初心者向きじゃない書き方止めて!
わけワカメ

400 :デフォルトの名無しさん:2016/06/21(火) 20:30:33.33 ID:gJMymMte.net
じゃあ
p *(0..5).first(2)

401 :デフォルトの名無しさん:2016/06/22(水) 06:25:24.35 ID:jdKVcriH.net
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章より

402 :401:2016/06/22(水) 06:34:16.68 ID:jdKVcriH.net
B.a を呼んだときは、メソッド探索順に影響されず、
静的スコープのB.a を呼ぶ方法はないの?

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

403 :デフォルトの名無しさん:2016/06/22(水) 08:04:36.14 ID:AQa0dSs+.net
>>401
ひっかけ問題かな。p の数を数えてみろ。

404 :デフォルトの名無しさん:2016/06/22(水) 08:07:48.65 ID:AQa0dSs+.net
>>402
C++ みたいなクラス名修飾は無いね。別の名前を付けるしか

405 :デフォルトの名無しさん:2016/06/22(水) 11:45:54.25 ID:yBOVYSwe.net
>>399
その考え方は良くない

406 :デフォルトの名無しさん:2016/06/22(水) 12:30:51.61 ID:3DCeoZi+.net
ruby向きじゃない書き方やめて!
わけワカメ

407 :デフォルトの名無しさん:2016/06/22(水) 17:17:51.11 ID:7oRMeHhG.net
foo bar, baz do 0 end
foo bar, baz { 0 }
これって動作違うのな、テスト書いてたらエラー出てびっくりしたわ

408 :デフォルトの名無しさん:2016/06/22(水) 18:15:16.93 ID:gUQq/XMB.net
トリッキーな書き方する方が
考え方として良くない
短くなっても保守しにくくなる

409 :401:2016/06/22(水) 20:22:56.84 ID:jdKVcriH.net
>>401
自己レス

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

>>407
意味わからん。カッコで囲んで

410 :デフォルトの名無しさん:2016/06/22(水) 20:31:09.09 ID:1DvIaRNW.net
>>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の仕様変更案として提案すればいい

411 :デフォルトの名無しさん:2016/06/22(水) 21:15:23.44 ID:os3fAdit.net
>>410
いやあるだろ
普通は使わんやり方だけど

412 :デフォルトの名無しさん:2016/06/22(水) 21:15:23.89 ID:V2EBWOtT.net
>>407
http://rurema.clear-code.com/2.3.0/doc/spec=2fcall.html
リファレンスにがっつり書いてる

413 :デフォルトの名無しさん:2016/06/22(水) 21:16:15.70 ID:k2RSEIyn.net
rubyを勉強してるだけで、文句を言ってるわけじゃないだろうに

414 :デフォルトの名無しさん:2016/06/22(水) 21:19:37.78 ID:49vA2Qsp.net
リファレンスをおおかた読んで大体のやりたいことはできることになったんだけど
いまだにProcを使うツボがよくわからん
メソッドを新たに定義するのではダメなの?

415 :デフォルトの名無しさん:2016/06/22(水) 22:18:19.16 ID:Q+XBk88Y.net
ProcはRubyの実装に内部的に使われているだけ
本来人間が直接触るもんじゃないので気にしなくていい
Rubyはメタプログラミングだのと抜かして中身を弄り回そうとする馬鹿が多いが、
あんなのはバッドノウハウであってカッコイイことでも何でもない

416 :デフォルトの名無しさん:2016/06/22(水) 22:40:21.74 ID:V2EBWOtT.net
>>414
メソッドはクラスに属してなきゃいけないけど、それだとめんどくさいときとかに使える

417 :401:2016/06/22(水) 22:45:04.32 ID:jdKVcriH.net
module B
def b; a; end
def a
p 'B'
end
end

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

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

これぐらい静的スコープから、解決してほしい

418 :デフォルトの名無しさん:2016/06/22(水) 22:51:38.89 ID:1DvIaRNW.net
>>414
すぐに思いつくのは2つのケース

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

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

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

アクションの中身が複雑で長いコードならば可読性のある命名で
メソッドを定義すべきだろうけど、たとえば変数に代入するだけとか
単にライブラリ関数を呼ぶだけなんてケースでメソッド定義は面倒だよね
そんな時にはProcを使って、明示的にブロックオブジェクト(=クロージャ)を生成する
(ただし、個人的には Proc.new ではなく lambda といふ記述を好むけどね)

419 :デフォルトの名無しさん:2016/06/22(水) 22:54:00.17 ID:jdKVcriH.net
>>414-416
proc, lambda, block(&) は、コード・処理を持ち運んで、後で、call で実行できる。
blockは、yield で、callback してもらえる

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

proc{〜}.call
lambda{〜}.call

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

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

module B
  module_function

  def b
    a
  end

  def a
    p 'B'
  end
end

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

>>410を繰り返すけど、リファレンスから module_function を見つけられない
君のレベルでメタプログラミングに手を出すのは子供じみた無茶な背伸びだよ
それよりもっと基本的なRubyのプログラミング技法を学んでからにしなさい

421 :デフォルトの名無しさん:2016/06/22(水) 23:40:23.32 ID:V2EBWOtT.net
>>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"

422 :デフォルトの名無しさん:2016/06/22(水) 23:42:12.64 ID:gUQq/XMB.net
>>414
コールバックに使う

423 :デフォルトの名無しさん:2016/06/23(木) 08:10:59.54 ID:LmS7lhU+.net
>>414
無名関数の代わりに使う

424 :デフォルトの名無しさん:2016/06/23(木) 21:24:51.44 ID:O+dpjAUR.net
ちょっと質問なんですが、1:1:多のデータベースあって最初の1のデータベースには管理者が登録するデータ、真ん中の1のデータベースにはユーザーが変更するデータ、最後は商品のデータベースという感じで設計してるんですがhas many throughで良いんでしょうか?

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

アドバイスよろしくお願いします。

425 :デフォルトの名無しさん:2016/06/23(木) 21:54:12.06 ID:M8iyAzNM.net
has many through は多対多用

426 :デフォルトの名無しさん:2016/06/23(木) 23:16:42.11 ID:O+dpjAUR.net
>>425
どの本読んでもそう書いてあったんですがこの場合で使えないということはないですよね?

427 :デフォルトの名無しさん:2016/06/24(金) 00:39:46.72 ID:gxtxbzXV.net
rubyとかphpのwebフレームワークのインストールが難しすぎる、、、

いつも失敗する

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

その際、中間にテーブルを作って、双方のキーを入れる
A, (A.key, B.key), B

429 :デフォルトの名無しさん:2016/06/24(金) 10:12:39.00 ID:F8DC/AtK.net
>>414だけど解答どうもありがとうございました!

430 :デフォルトの名無しさん:2016/06/24(金) 10:13:24.55 ID:AFfOfH8V.net
>>424
そもそも設計が良くない気がするんだが

431 :デフォルトの名無しさん:2016/06/24(金) 11:00:41.58 ID:Ua7mp3z0.net
>>425

テーブル統一して1対多でいくことにしました。

432 :401:2016/06/25(土) 16:08:58.21 ID:4ZuZDTqb.net
>>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()が同じクラス内なら、呼び出し順は、モジュール探索順よりも、クラス内が優先される

433 :デフォルトの名無しさん:2016/06/25(土) 17:51:57.20 ID:4KOaD2nt.net
A::AA B::BB は継承関係にないから当然だろ
A をインクルードしても A::AA のメソッド探しに行ったりしないよ

434 :uy ◆e6.oHu1j.o :2016/06/27(月) 12:10:54.85 ID:fzKuFJZp.net
gmkzRubyのバグ報告です


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

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

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


OS:Win10
ブラウザ:Firefox
administrator:uy

435 :uy ◆e6.oHu1j.o :2016/06/27(月) 12:12:44.87 ID:fzKuFJZp.net
>>427
RailsInstaller使ったか?

gem install railsで普通にインストールが成功する可能性は、
ゼロではないけど、もはや幻想

436 :uy ◆e6.oHu1j.o :2016/06/30(木) 08:28:51.01 ID:U+B64GZ8.net
>>401
https://ideone.com/9nWuIF

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


rubyでしかやらないようなコードに分かりやすいルール作るのが難しいから
結局避けて書いていく
積極的には使われない癖に無駄に複雑な仕様だけが
class、module、include、extend 周りに拡がる

437 :uy ◆e6.oHu1j.o :2016/06/30(木) 08:40:38.48 ID:U+B64GZ8.net
>>436
補足:

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

この闇を扱う知識はしかも、他言語では使いようもないruby特有に複雑になってる闇の知識だから
わけのわからなくなってるスコープを制御しようとするのは無駄

438 :デフォルトの名無しさん:2016/06/30(木) 09:06:35.89 ID:bMW7pQBg.net
そもそもモジュールのメソッド名は
衝突しないように付けること

439 :デフォルトの名無しさん:2016/06/30(木) 09:26:09.93 ID:+cgjiVYz.net
refineとかusingって全く見かけないなあ
http://docs.ruby-lang.org/ja/2.3.0/method/main/s/using.html

440 :デフォルトの名無しさん:2016/06/30(木) 20:56:11.15 ID:prI+ToNW.net
>439
んなこたーない。使っている人は使っている。
ただ、ruby2.1以上しか動かない縛りがあるので、古い環境でも動くようにみんな配慮してしまっているだけ。

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

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

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

441 :デフォルトの名無しさん:2016/06/30(木) 21:26:27.67 ID:0Yz92fUm.net
refine多用はしないけど普通に使ってるわ

442 :uy ◆e6.oHu1j.o :2016/06/30(木) 21:49:00.82 ID:dzWCBRc4.net
個人的には&.を使える箇所が結構あるからこの実装は嬉しかった

443 :デフォルトの名無しさん:2016/07/01(金) 00:48:35.08 ID:ECjG4IrI.net
ネットをみていたら知ったのですが
> new A().view();
これがなぜ通るのですか

class A
{
public void view()
{
Console.WriteLine(

444 :デフォルトの名無しさん:2016/07/01(金) 07:57:19.80 ID:CYpkmvov.net
>>443
一つづつ整理して考えよう
・なぜそれが通らないと思ったのか?
・そのコードは何の言語で書かれたコードか?
・書き込む前にこのスレのタイトルを確認したか?
・確認したとすれば、ここで質問した理由は何か?

445 :デフォルトの名無しさん:2016/07/01(金) 08:50:38.16 ID:QEi+HiDI.net
railsでjavascriptってどこにおいて呼び出せばいいんでしょうか?

生のjavascript使いたいのでcoffescriptとかいうのは使いたくないのですが

446 :デフォルトの名無しさん:2016/07/01(金) 09:48:09.75 ID:rLMTR09R.net
>>445
普通に *.js.coffee を置くところに *.js を置けばいい

447 :デフォルトの名無しさん:2016/07/01(金) 19:03:05.10 ID:QEi+HiDI.net
>>446
ありがとうございます。
試してみます。

448 :デフォルトの名無しさん:2016/07/02(土) 15:30:39.35 ID:rfELLhTB.net
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*
ってのが延々と出力されるんだけど何が起きてるんだろう?

449 :デフォルトの名無しさん:2016/07/02(土) 16:12:53.91 ID:0c7wAYOM.net
以前、人工無能についてお聞きしたものです。以下のプログラムが文字化けしているので、
return "#{input}?A?A?E?E?H"
上記の部分を
return "#{input}って何?"
に書き直すとEncording::CompatibilityErrorが出てしまいます。ユーザーの入力場面でローマ字のままで
入力した場合は問題ないのですが、漢字やひらがなが入っていると、エンコードのエラーが出てしまいます。
いろいろと調べてみたのですが、うまい方法が見つからなくて困っています。どなたかご教授いただけないでしょうか?
なお、文字化けしたままの状態であれば、漢字・平仮名入力でもエラーは出ません。よろしくお願いします。

450 :デフォルトの名無しさん:2016/07/02(土) 16:17:12.16 ID:rfELLhTB.net
入力とソースのエンコードは何?

451 :デフォルトの名無しさん:2016/07/02(土) 16:25:16.33 ID:0c7wAYOM.net
>>450
すみません、質問の意味が理解できません。ですが、プログラムの先頭には#! ruby -Ksとあります。

452 :デフォルトの名無しさん:2016/07/02(土) 16:27:47.01 ID:PNWyJIIt.net
ruby -Kuso

453 :デフォルトの名無しさん:2016/07/02(土) 16:38:44.44 ID:+zIpsemS.net
>>451
inputに入る文字列とファイルのエンコードはなに?ってことだと思います

454 :デフォルトの名無しさん:2016/07/02(土) 16:44:01.84 ID:0c7wAYOM.net
>>453
すみません、それもわかりません。面目ない・・・

455 :デフォルトの名無しさん:2016/07/02(土) 16:44:17.44 ID:rfELLhTB.net
>>451
-KsってことはエンコーディングとしてShiftJISを指定しているわけだけど
ソースファイルはちゃんとShiftJISで保存できてる?
更にinputにShiftJIS以外の文字列が来てるんじゃない?
例えばWindowsだったらコマンドプロンプトで入力するとShiftJISじゃなくてWindows31Jだからね

456 :デフォルトの名無しさん:2016/07/02(土) 16:52:56.82 ID:0c7wAYOM.net
>>455
ご指摘にあるようにShiftJIS、Windows32Jなどググってみたのですが、どれも書いてあることが理解できませんでした。
もうちょっと基本的な用語を調べなおして、改めて質問させていただきます。ありがとうございました。

457 :デフォルトの名無しさん:2016/07/02(土) 16:58:35.24 ID:SUhI6wBF.net
>>456
UnicodeとかUTF8とかの単語の意味を調べてからまたおいで

458 :デフォルトの名無しさん:2016/07/02(土) 16:58:41.18 ID:UusWQPpk.net
窓OSなんか、世の中から無くなったほうがいい。
Ruby の実行環境としても、窓OSは向いていない。

459 :デフォルトの名無しさん:2016/07/02(土) 17:01:53.20 ID:rfELLhTB.net
>>456
input を input.encode(Encoding::Shift_JIS) に書き換えればうまくいくかも
windowsで日本語を扱うのって面倒だよね

460 :デフォルトの名無しさん:2016/07/02(土) 17:36:48.49 ID:NHPFDAI+.net
OS関係なく、初心者にrubyの文字コードは難しいだろう

461 :デフォルトの名無しさん:2016/07/02(土) 19:59:27.04 ID:26rC20dw.net
文字コードでつまずくと
どの言語でも初心者には難しい
Rubyはマシな方だと思う

462 :uy ◆e6.oHu1j.o :2016/07/02(土) 20:11:17.24 ID:m6W0ip76.net
HRESULT error code:0x80010108

463 :uy ◆e6.oHu1j.o :2016/07/02(土) 20:14:26.31 ID:m6W0ip76.net
>>448
ruby -v
irb -v

464 :デフォルトの名無しさん:2016/07/02(土) 22:24:30.36 ID:0c7wAYOM.net
>>459
アドバイスありがとうございます。試してみましたがうまくいかないようです(なんか変なことしているかも)。

ちょっと、このエンコードという問題はだいぶ難しそうなので、とりあえずRubyの基本を先にしっかり勉強したいと思います。
もっとも直近の目標が人工無能なので、遅かれ早かれ絶対に克服しなければならない問題なのは確かですが…
いずれにせよ、理解できないからと言っていつまでも足踏みしている暇はないので先に行きます。他の皆さんもありがとうございました。

465 :デフォルトの名無しさん:2016/07/02(土) 22:33:37.50 ID:no/g4eo0.net
>>449-461
paiza.IO, codepad などのサイトで、ブラウザを使って、プログラミングすれば簡単

466 :デフォルトの名無しさん:2016/07/02(土) 22:41:05.68 ID:no/g4eo0.net
サクラエディタ・TeraPad などで、文字コードを見れば?

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

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

Windowsだけの環境依存文字を使うと、shift-jisよりも、バグる確立が大きい

467 :デフォルトの名無しさん:2016/07/02(土) 22:50:14.62 ID:0c7wAYOM.net
>>466
ありがとうございます。もういいや、と思って別のことやろうと思いましたが、念のためTeraPadで打ち込んでみたら右下にエンコードがでました。
「UTF-8N」とあるようです。ところで、自分はきれいで見やすいとNETで評判の?SublimeText3を使っているんですが。エディタによっても結構違うんですね。
465さんのpaiza.IOみたいなエディタがあると便利なんですが、まあないものねだりしてもしょうがない。あまり、自分の質問だけでスレッドを私物化するのも
申し訳ないので、ここらでクローズさせていただきます。重ね重ねのアドバイスありがとうございます。

468 :デフォルトの名無しさん:2016/07/03(日) 06:34:41.72 ID:KkvVurgp.net
-Kって今推奨されてないんじゃないの?
-EShift_JIS:Windows_31Jとするべきでは

469 :uy ◆e6.oHu1j.o :2016/07/03(日) 11:25:14.56 ID:VJyaYSRj.net
動けば良いよ動けば

470 :デフォルトの名無しさん:2016/07/03(日) 17:04:45.03 ID:l9Pdm4ZB.net
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)
ネットでも調べてみたのですが、なかなか情報がヒットしません。よろしくお願いします。

471 :デフォルトの名無しさん:2016/07/03(日) 17:07:35.45 ID:KkvVurgp.net
最後の更新がruby1.9.2よりも前みたいだから
require_relativeとしなくちゃいけないところがrequireになってるんだろうね

472 :デフォルトの名無しさん:2016/07/03(日) 17:15:42.70 ID:T6bq1Tjn.net
>>470
もう vruby なんて使うべきではないね
昔は何個かcontributeしたんだけどなー、懐かしい

473 :デフォルトの名無しさん:2016/07/03(日) 17:17:00.26 ID:l9Pdm4ZB.net
>>471
ありがとうございます。ネットで検索したところ、2つの方法があるらしく。以下の内容を試してみました。
1:require 'vr/vruby'のvrの前に./をつける
2:require 'vr/vruby'のrequireをrequire_relativeとする
いずれもうまくいかず、途方に暮れています。

474 :デフォルトの名無しさん:2016/07/03(日) 17:19:52.23 ID:KkvVurgp.net
カレントディレクトリとrbファイルのある場所が違うんじゃないの?

475 :デフォルトの名無しさん:2016/07/03(日) 17:21:08.98 ID:l9Pdm4ZB.net
>>472
今、勉強している本の内容が古くて、本の内容がvrubyを使うことを前提にしているので弱っています。
本を買った時に諦めないで最後まで勉強していればなーと、いまさら言っても遅いですが。

476 :デフォルトの名無しさん:2016/07/03(日) 17:25:59.34 ID:T6bq1Tjn.net
>>475
RubyでGUIでしかもWindowsでってのは鬼門でしかないからね
どうしてもWindowsでGUIってことなら素直にC#使うべきだよ

477 :デフォルトの名無しさん:2016/07/03(日) 17:27:02.20 ID:KkvVurgp.net
>>474は勘違い 無視して

478 :uy ◆e6.oHu1j.o :2016/07/03(日) 17:28:05.70 ID:VJyaYSRj.net
>>470
http://www.osk.3web.ne.jp/~nyasu/vruby/core.html
こっから該当ファイル探して自分でパス通せ

479 :デフォルトの名無しさん:2016/07/03(日) 17:29:16.56 ID:l9Pdm4ZB.net
>>474
今、rbファイルをruby.exeと同じフォルダにぶっこんでみましたが、状況は変化しないようです。
以前、このスレでどなたかが書いていたんですが、情報が常に古くなってしまって初学者が
勉強するには難しい言語なんでしょうか…もう心が折れてきました

480 :デフォルトの名無しさん:2016/07/03(日) 17:32:02.55 ID:KkvVurgp.net
requireを書き換えてもうまくいかないっていうのは具体的にどういうことなの?
LoadErrorにはなるの?

481 :デフォルトの名無しさん:2016/07/03(日) 17:34:05.18 ID:LjwuNqiA.net
そもそも64bitに対応しているだろうか

482 :デフォルトの名無しさん:2016/07/03(日) 17:34:32.24 ID:l9Pdm4ZB.net
>>478
ありがとうございます。すでにこの場所には来ていたんですが、上書きすればいいんでしょうか?
って、聞く前にとあえずやってみます

483 :uy ◆e6.oHu1j.o :2016/07/03(日) 17:35:50.97 ID:VJyaYSRj.net
ちょっと入れてみようとしたけど
パス通しても動かない

swin.soが既に配布されてなくてソースコードでの配布になってるから
パス通した後さらにコンパイルしないと無理だよ

484 :デフォルトの名無しさん:2016/07/03(日) 17:40:59.61 ID:l9Pdm4ZB.net
>>480
そうですね、書き換えてもLoadErrorになります。また、書き換えても書き換えなくてもエラーの内容は同じようです。

>>481
自分もなんか嫌な予感がするんですが、もしかして64じゃうまく動かないなんてことは…今まで投入した時間はなんだったんだ

485 :デフォルトの名無しさん:2016/07/03(日) 17:44:06.57 ID:KkvVurgp.net
requireのままじゃないといけないところもrequire_relativeにしてない?
そうじゃなくて、特定の行がどちらの場合もエラーになるってこと?

486 :デフォルトの名無しさん:2016/07/03(日) 17:49:45.60 ID:LjwuNqiA.net
素直にruby1.8.7を入れればいいわけだけど、今更vrubyを勉強する意味はないよ

487 :デフォルトの名無しさん:2016/07/03(日) 17:52:44.03 ID:l9Pdm4ZB.net
>>485
全ての組み合わせを試しました。つまり、以下の3つです。
1:require 'vr/vruby'のvrの前に./をつける
2:require 'vr/vruby'のrequireをrequire_relativeとする
3:require 'vr/vruby'のvrの前に./をつけ、なおかつrequireをrequire_relativeとする
すべてLoadErrorになっています。

488 :デフォルトの名無しさん:2016/07/03(日) 17:54:55.25 ID:l9Pdm4ZB.net
>>486
そっか!そういえばそうですよね、思いつかなかった。素直に古いバージョンでやれば済む話だった。本がそうなっているのだから。
とりあえず、それで行きます。ありがとうございました。

489 :デフォルトの名無しさん:2016/07/03(日) 18:01:50.01 ID:KkvVurgp.net
まあ学習目的なら古いバージョンでやるのが一番かもね
ただ誤解があったようなのでそこだけ説明させてもらう
例えば
require "mathn"
require "vr/vruby"
ってあった時にmathnとかもrequire_relativeって書いてないかってこと
もし
require "mathn"
require_relative "vr/vruby"
ってやってもLoadErrorになるならそれはファイルがないってことだからバージョン変えてもエラーになると思うけど
何行目でLoadErrorになってるのかちゃんと確認してたのかな

490 :デフォルトの名無しさん:2016/07/03(日) 18:43:02.70 ID:l9Pdm4ZB.net
>>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)

と変化しました。どういうことだかさっぱりわかりませんが、動かないのは以前の通りです。とにかく古いバージョンで試してみます。感謝。

491 :デフォルトの名無しさん:2016/07/03(日) 18:51:12.47 ID:2FNA+IvI.net
Cloud9でmysqlデータベース使うときの設定って
どれが正しいんですかね、検索していろいろ出るんですが悉くエラーはいてしまって開発にうつれないっす
だれかやり方を教えていただけませんか…

492 :デフォルトの名無しさん:2016/07/03(日) 20:00:46.85 ID:+diucK3B.net
>>475
本の内容をそのままそっくり
なぞることにこだわらなくていいよ

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

部分的にでも未知の情報を吸収できればよし

493 :デフォルトの名無しさん:2016/07/04(月) 03:09:10.05 ID:24pN0A7m.net
Ruby1.9から、仮想マシン(RubyVM)になったから、
それより前のバージョンは、推奨しない。
vrubyというのも初耳

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

paiza.IO, codepad などのサイトで、ブラウザを使って、プログラミングするのが簡単。
ログインもいらない

494 :uy ◆e6.oHu1j.o :2016/07/04(月) 15:13:47.56 ID:RKNLnwF6.net
>>493
RubyのGUIが今よりもさらにgmks of gmksだった頃に
頑張って何かを作ろうとして挫折した人の作ったライブラリ

495 :uy ◆e6.oHu1j.o :2016/07/04(月) 15:21:46.40 ID:RKNLnwF6.net
rubyはアルゴリズムの記述には適してるものの、宣言・代入がメインとなるソースコードでは冗長
GUIは厳しかったね
多分ハードのほうも無理
宣言・代入メインならもっとマシな言語はある

496 :デフォルトの名無しさん:2016/07/04(月) 20:11:11.28 ID:1TFm36GL.net
ウインドウズ10の初期設定で、

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

アメリカは、プライバシーの問題が、狂ってるんじゃねえの、モラルがないどころの話しじゃない

497 :デフォルトの名無しさん:2016/07/04(月) 20:17:48.27 ID:A9h+6tfb.net
そうだな、まずは落ち着いてスレタイ読んでから書き込もうぜ

498 :デフォルトの名無しさん:2016/07/04(月) 22:05:27.13 ID:3uqHV0dH.net
>>492 >>493
ありがとうございます。泣き入れていてもしょうがないので、気持ちを切り替えて「楽しいRuby」はじめました。
『今のところは』楽しいです。もうちょっとがんばってみます。以前挫折したときに比べて何かが見えてきた…気がします。

499 :デフォルトの名無しさん:2016/07/04(月) 22:08:28.55 ID:yHpo7u0t.net
>>498
『たのしいRuby』からで正解

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

慣れればスラスラ読み書きできるから
急がば回れで基礎を積み重ねることが肝要

500 :デフォルトの名無しさん:2016/07/05(火) 06:38:44.92 ID:j6ObOS3k.net
「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

501 :デフォルトの名無しさん:2016/07/05(火) 07:28:57.81 ID:JLNuGFh4.net
>>500
gem uninstall ffi
gem install ffi --platform ruby

502 :デフォルトの名無しさん:2016/07/05(火) 09:02:24.93 ID:j6ObOS3k.net
>>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
と記述されていました。
パスの指定がうまく行ってないんですかねぇ・・・

503 :デフォルトの名無しさん:2016/07/05(火) 09:18:02.59 ID:LGOaFQLh.net
「gem ffi_c」でググったら一番上に出てくるじゃねえかよ
ttp://github.com/ffi/ffi/issues/432

504 :デフォルトの名無しさん:2016/07/05(火) 09:20:02.52 ID:j6ObOS3k.net
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

505 :デフォルトの名無しさん:2016/07/05(火) 09:47:55.30 ID:j6ObOS3k.net
>>503
ありがとうございます。解決しました。
インストール手順がまずかったようです。
gem uninstall ffi
→-x86-mingw32を選択して削除。
ruby dk.rb init
ruby dk.rb install

上記の手順でやったら無事にSeleniumWebDriverが動作しました。
ありがとうございます!

506 :uy ◆e6.oHu1j.o :2016/07/05(火) 18:35:12.75 ID:1uRQlpDk.net
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\\

507 :デフォルトの名無しさん:2016/07/05(火) 23:15:15.87 ID:ZQWdXgH1.net
今日1週間のブートキャンプ3日目、いつになったらみんなが話してる内容がわかるのかなぁ、、、初心者ですが、よろしくお願いいたします。(≧∇≦)

508 :デフォルトの名無しさん:2016/07/05(火) 23:25:54.80 ID:94G9IfNv.net
Rubyの女神・女優の池澤あやかは、慶応大学のプログラム研究会に入ったり、

島根県のRuby合宿へ、行ったみたい

509 :デフォルトの名無しさん:2016/07/06(水) 00:29:15.16 ID:ziud5nB+.net
RWBYは百合アニメって話だろ
男消えろ

510 :uy ◆e6.oHu1j.o :2016/07/06(水) 19:01:28.90 ID:4XXkMTdx.net
質問です
selenium-webdriverでIE起動する時にvisibleオプションの設定って出来ませんか?
ライブラリのソースコードを追ってみましたが、
もしかしたらIEDriverServer.exeの中でそういうのやってる可能性もあって
rubyのソースコード上でvisibleを設定している箇所が特定できませんでした

511 :uy ◆e6.oHu1j.o :2016/07/08(金) 14:18:11.61 ID:ReeCCMlZ.net
質問です
ある日付からの残り日数を求めたく引き算をしてみましたが
t = Time.new
a = Time.local(2016, 7, 9)
b = a - t

bに返ってくる値がFloatで、これをどう整形したら良いのか分かりません
スマートに書く方法はありますか?

512 :デフォルトの名無しさん:2016/07/08(金) 14:21:47.06 ID:4qgBf6xV.net
b/(60*60*24)

513 :デフォルトの名無しさん:2016/07/08(金) 14:31:15.37 ID:4qgBf6xV.net
ミス
(b/(60*60*24)).ceil

514 :uy ◆e6.oHu1j.o :2016/07/08(金) 14:34:46.90 ID:ReeCCMlZ.net
>>512
こうなりました

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

# => 0.3943060819212963

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

# => 1
です

516 :デフォルトの名無しさん:2016/07/08(金) 14:41:36.56 ID:4qgBf6xV.net
>>515
へ?? これで何か問題なの?

517 :uy ◆e6.oHu1j.o :2016/07/08(金) 14:47:45.41 ID:ReeCCMlZ.net
>>516
失礼しました問題ないです
条件反射で書き込んでしまいました

ありがとうございます

518 :デフォルトの名無しさん:2016/07/08(金) 15:38:17.55 ID:wR56VJym.net
Time#strftime 使ったほうが良くない?

519 :デフォルトの名無しさん:2016/07/08(金) 16:06:49.18 ID:k4oWZhGm.net
>511
これでいい気がする。
require 'date'
t = Date.today
a = Date.new(2016, 7, 9)
p b = (a - t).to_i

520 :デフォルトの名無しさん:2016/07/09(土) 07:29:20.44 ID:OPT8/HRF.net
ruby2.3ってsqlite3に対応してないんですかね
ちなみに、環境はwin7です。

521 :デフォルトの名無しさん:2016/07/09(土) 09:29:37.94 ID:70tfGxUK.net
>>520
gem あるぞ?

522 :デフォルトの名無しさん:2016/07/09(土) 19:00:25.45 ID:yWA3G7Ehx
ruby1.9.3p551
centos6.7(x86)
GNOME 端末 2.31.3

test.rb------------
STDOUT.sync = true
STDIN.each_line do |line|
p line
end
------------------
上のコードで、文字列入力中に全角文字入れると
バッックスペースキーで文字削除したとき半角分しか削除されないん
これってうちの環境依存によっておこる問題?それとも仕様?
解決方法じゃなくてどういう仕組みで起こってるのか知りたい

523 :デフォルトの名無しさん:2016/07/09(土) 20:12:52.56 ID:pnlJS2Wt.net
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

524 :デフォルトの名無しさん:2016/07/09(土) 20:13:15.27 ID:pnlJS2Wt.net
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

525 :デフォルトの名無しさん:2016/07/09(土) 21:17:36.39 ID:70tfGxUK.net
>>523
http://stackoverflow.com/questions/31552590/error-when-try-to-install-ruby-gtk3-gem
これじゃね?

526 :デフォルトの名無しさん:2016/07/09(土) 21:41:42.30 ID:pnlJS2Wt.net
>>525
ありがとうございます!
おかげさまでgtk3をインストールすることができました!

しかしgtk3を使ったテストプログラムを実行する段階で次のようなエラーが起こってしまいました
cannot load such file -- cairo.so (LoadError)
調べたのですがどうやら実際にcairo.soがないのではなく
なにか別の要因が作用してこのようなエラーを吐いているのだということは分かったのですが
具体的にどう対処すべきかということについての情報が見つからず困っています
お助けいただけると幸いです

527 :デフォルトの名無しさん:2016/07/09(土) 21:45:25.80 ID:LUkvWe2U.net
まずはcairo.soがどこにあるのか調べよう

528 :デフォルトの名無しさん:2016/07/09(土) 21:51:34.71 ID:pnlJS2Wt.net
>>527
c:Ruby21-x64\lib\ruby\gems\2.1.0\gems\cario-1.15.2~~\lib内の
2.2フォルダと2.3フォルダ内にありました!
これをどうすればいいのですか?

529 :デフォルトの名無しさん:2016/07/10(日) 01:01:33.24 ID:FaCg4BOi.net
>>528です
自己解決しました
ありがとうございました

530 :デフォルトの名無しさん:2016/07/10(日) 22:28:19.60 ID:7ZpGAM9O.net
自己解決したときでも後進のために何をやったか書くのが礼儀だチンカス
クレクレだけでなく

531 :デフォルトの名無しさん:2016/07/10(日) 22:53:06.11 ID:IT8q3R81I
キーボードから標準入力(STDIN)で文字入れてる時、
backspaceキーで文字の表示を削除したりカーソル移動させたりって処理は
どこでやってるの?
rubyのインタプリタがやってるの?

532 :デフォルトの名無しさん:2016/07/12(火) 19:22:25.10 ID:gIrYEA97.net
>>530
あまりにもあれなので書く必要もないかと思いまして……
>>528に書いてある通り使っていたRubyのバージョンが2.1で
gtk3の現在のバージョンが対応しているのは2.2と2.3だったのです

というところでもう一つ質問させてください
gtk3を使ってサンプルプログラムの写経をしているのですが
その中でkey, mod = Gtk::Accelerate.parse "N"という行がありました
しかし実行してみるとGtkクラスには定数Acceleratorはありませんという旨のエラーが出てしまいます
仕様が変わったのかもしれないのですが調べても出てきません
どなたかご存知の方がいたら教えていただけませんでしょうか?

533 :デフォルトの名無しさん:2016/07/12(火) 20:10:31.38 ID:Eu9k9lZN.net
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など)を使えば取得できますが
出来ればそれは避けたいので・・・

534 :デフォルトの名無しさん:2016/07/12(火) 23:16:54.90 ID:O9LM8Fab.net
>>533
Rubyに限定されない一般論として:

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

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

なんだか無邪気な子供が無い物ねだりしているようにしか聞こえないね
あなたは最終的に何をしたいの?

535 :デフォルトの名無しさん:2016/07/13(水) 00:06:53.28 ID:iqeWAEZd.net
いけあやちゃんのDVD借りてきたよ
昔は水着DVDとか売ってたんだなぁ

536 :デフォルトの名無しさん:2016/07/13(水) 00:11:36.68 ID:vjGvgzcz.net
そもそも、デバイスファイルって、Unix系だけだろ?
Windowsでは使えないのでは?

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

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

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

Accelerate, Accelerator はつづりが異なる。
そもそも、定数.parse(定数.メソッド) という表記は可能なのか?

537 :デフォルトの名無しさん:2016/07/13(水) 01:10:27.49 ID:t0tludUSX
標準入力の全角文字入力時のズレの原因がわからないからひとまず置いといてReadlineつかってみたら
エスケープシーケンス文字の入力で見事にクォートされて、意図した入力にならなくなった
gsub使ってちまちま置換する以外に、dequoteとかunescapeとかそんな感じのいい手はありませんか?

538 :531:2016/07/13(水) 21:08:36.13 ID:9IGkZ4N6.net
Windowsでディスクをダイレクトに開くコードを貼ったのに、調べも試しもせずに思い込みだけでWindowsでは
デバイスファイルが使えないと返されても自分はなんて答えればいいのだろう
Windowsのデバイスファイルの取り扱いについてゼロから解説しないと話がかみ合わないとかどうすればいいの
ggrksって書かなきゃダメなの?
seekの引数もリファレンスマニュアルからコピペして数字を変えただけなのにそれを間違っていると言われても
どう直せば良いんだ

539 :デフォルトの名無しさん:2016/07/13(水) 21:41:01.10 ID:O2/Udv7T.net
>>538
> Windowsのデバイスファイルの取り扱いについてゼロから解説しないと話がかみ合わないとかどうすればいいの
だってWIndowsにはデバイスファイル(と一般に呼ばれるもの)はないんだもの
しょうがないじゃん

540 :デフォルトの名無しさん:2016/07/13(水) 22:04:05.33 ID:7QL1TPM6.net
そのコードをどんなプラットフォームで動かそうとしてるんだ?
プラットフォームに依存せずにとか考えてる?
Windowsでは動かんし、Linuxなら別の理由でそっちも動かんぞ

541 :デフォルトの名無しさん:2016/07/13(水) 22:20:27.32 ID:zSyoSNoY.net
スルーでよくね?

542 :デフォルトの名無しさん:2016/07/13(水) 22:49:33.67 ID:zLt10+AI.net
いやよくない

543 :531:2016/07/14(木) 00:32:41.64 ID:VP5bmt0B.net
Windows上からストレージのLBA:0を読み最後の2ByteをHexで表示する例
ttp://uploader.purinka.work/src/0068.png ←MBRのシグネチャである0x55 0xAAが表示されている
少なくともread、write、seek(n, IO::SEEK_SET)は機能して開いたストレージの任意のセクタを読み書き出来た

>>540
今のところWindowsとLinuxやFreeBSDあたりで動かしたいです
Linuxだと↑の"\\\\.\\PHYSICALDRIVE0"を"/dev/sdc1"とかにしても動かないのかな?

544 :531:2016/07/14(木) 02:25:09.71 ID:jqQ4G2uAQ
>>543
成り済まし?
windows環境の話じゃないんだけど
他人を騙るのはやめろ

545 :デフォルトの名無しさん:2016/07/14(木) 03:02:03.84 ID:tcxRZQBL.net
なんかおかしいなと思ったら元スレの方に反映されていなかったので、もう一度書きます

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

test.rb------------
STDOUT.sync = true
STDIN.each_line do |line|
p line
end
------------------
上のコードで、文字列入力中に全角文字入れると
バックスペースキーで文字削除したとき半角分しか削除されない
これって環境依存によっておこる問題?それとも仕様?
解決方法じゃなくてどういう仕組みで起こってるのか知りたい

546 :デフォルトの名無しさん:2016/07/14(木) 05:13:27.03 ID:5Jg64+hU.net
>>543
ソースコードをコピーして実行できないから、画像を使わないで。
paiza.IO, codepad などを使えば、ログイン無しでも書き込める。
そりゃ、実行すればエラーになるけど、ひとまず書き込める

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

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

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

コマンドプロンプト・端末などは、大昔に外人が作ったものだから、
日本語には対応していない。
一方、エディタは対応しているものが多い

547 :デフォルトの名無しさん:2016/07/14(木) 05:33:08.45 ID:5Jg64+hU.net
>>543
IO::SEEK_SET: ファイルの先頭から (デフォルト)
IO::SEEK_CUR: 現在のファイルポインタから
IO::SEEK_END: ファイルの末尾から

たぶん、SEEK_ENDがダメなんだろう

548 :デフォルトの名無しさん:2016/07/14(木) 05:53:08.52 ID:tcxRZQBL.net
ターミナルの設定はこんな感じです

[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

549 :デフォルトの名無しさん:2016/07/14(木) 06:23:56.25 ID:5Jg64+hU.net
端末は、単なるアプリだから、日本語に対応させるかどうかは、アプリの作者次第

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

作者も外人だから、日本語のことは知らない

550 :デフォルトの名無しさん:2016/07/14(木) 06:52:30.33 ID:5Jg64+hU.net
文字コードを、UTF-8 に設定できないの?

551 :デフォルトの名無しさん:2016/07/14(木) 07:10:22.27 ID:xuDKBge/.net
全員ハズレ
居残り学習な

>>545
普通にターミナル上で日本語入力したときにBackSpace押してもきちんと全角1文字消えるのに
STDINを直接開いたときにはBackSpaceで半角1文字しか戻らないのはなんでか
bash$ cat
にゃんこ■ ← BS1回
にゃんニ■
日本語環境ではシェル、普通はbash、が「日本語だと思われる文字があったら1文字ぶんだと思われるバイト数だけ戻る」というように特別に数えて処理してるからだ
ncursesとか介してないプレーンな環境では半角1文字戻るのが「素直な正しい」挙動
だからコマンドラインスクリプトで端末から直接日本語を入力してもらう可能性がある場合はRubyならcursesライブラリを使うと親切
これならbash上や他のターミナルアプリで日本語入力したときと同様にきちんと全角1文字ぶん消える

552 :デフォルトの名無しさん:2016/07/14(木) 20:43:36.00 ID:tcxRZQBL.net
Readlineつかって入力してみた結果、backspace1回でしっかり全角文字一文字消せました
てっきり環境設定のLANGをja-JP.UTF-8にする他に、ロケール関連の設定でなんとかなるものだと思ってました
なるほど、そういう事だったのか
ありがとうございます

それと、readlineで意図的に\n等のエスケープシーケンス文字を入力すると、\\nのようにエスケープされます
入力終えた文字列をgsub使ってちまちま置換する以外に、dequoteとかunescapeとかそんな感じのいい手はありませんか?

553 :デフォルトの名無しさん:2016/07/15(金) 07:48:04.68 ID:0wyvmUyV.net
各OSで使えるmruby用の基本的なI/Oのライブラリとか無いんか?
Lua的に使いたいけど素のままではファイルの読み書きすら出来ない

554 :デフォルトの名無しさん:2016/07/17(日) 11:51:33.23 ID:5n5jkqHt.net
各OSそれぞれにCで書いた低級IO操作用バッチファイル用意してrubyのバッククォート文で呼び出して扱うとか
OSの差異をバッチファイルで吸収すれば良いからなんとかなると思う
思いつくのはこんぐらい

555 :デフォルトの名無しさん:2016/07/17(日) 12:14:33.52 ID:EX8s0wCA.net
>>554
わざわざシェルを介する意味が無いだろ
それなら普通にCでAPI書けばいい

556 :デフォルトの名無しさん:2016/07/17(日) 16:00:16.75 ID:tztufySG.net
>>553
mruby-ioで取り敢えずファイル操作出来るけど、
低レベルは殆ど無いな。
mrbgemを自分で作るのが基本スタンスだし

557 :デフォルトの名無しさん:2016/07/17(日) 16:04:26.02 ID:tztufySG.net
そもそもmrubyはOSもない環境でも動かせるように
色々外してあるから標準Rubyと同じ様に考えちゃ駄目

558 :549:2016/07/18(月) 01:50:25.67 ID:IKQ2dxNQ.net
タイミングが良いんだか悪いんだか判らんけどレスthx
mruby-ioを見つけて試すも大きなファイルを操作できない
Fixnumの壁が原因とわかりCコードとにらめっこすること数日
sysseekをFloatも受け付けるように改造してようやく目的を達成
Bignumが無い影響がもろに出てしまっていますな

559 :デフォルトの名無しさん:2016/07/20(水) 03:31:47.01 ID:GlTBqNkC.net
Ruby1.9以降は、rubyコードをJITコンパイルで変換してから実行してるんだよね?
Rubyのソースコード読んでるんだけど、Ruby1.8までならWebにころがってる情報で構造をなんとなくレベルまで理解できる
でもRuby1.9からはさっぱり理解不能で、何処がVMの部分なのかさえ読めない

どこかにRuby1.9以降のソースを解説しているサイトない?
なければソース全部じゃなくて、おおまかに構造を解説しているサイトでも構わない

560 :デフォルトの名無しさん:2016/07/20(水) 11:13:49.96 ID:WyhLRx8l.net
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

561 :デフォルトの名無しさん:2016/07/20(水) 18:43:26.64 ID:KOGDxcQR.net
>>559
>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
 
  

562 :デフォルトの名無しさん:2016/07/21(木) 03:34:57.24 ID:jgTQj/gW.net
JITを使うのは、JavaVMを使う、JRubyだろ。
10万回以上ループすると、もう一段階、最適化する

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

「Rubyのしくみ」2014、に書いてある。
コンパイラ・インタープリターを作るなら、読んだ方がいい

563 :デフォルトの名無しさん:2016/07/21(木) 04:24:33.02 ID:WJGproPC.net
YARVちょっとググってみたけど、
バイトコードインタプリタって書かれとる
逐次変換して処理してるわけか

1.9以降はバイトコードに変換して処理してるって聞いてたから
てっきりJIT技術使ってるんだと思ってた
さんくす

564 :デフォルトの名無しさん:2016/07/21(木) 19:25:21.64 ID:9nmG0K7V.net
実行時に変換してるんだからJITでOK

565 :デフォルトの名無しさん:2016/07/21(木) 22:00:48.00 ID:MOZT2+1A.net
RangeってRubyの組み込みクラスにしては貧弱というか
ある数値が範囲より大きいか小さいかカバーされてるかを調べるUFO演算子とか
2つのRangeオブジェクトが被ってる部分があるかどうかを判定する機能とか
あれば便利な気がするんだがなぁ

566 :デフォルトの名無しさん:2016/07/22(金) 05:24:42.73 ID:8LVOaO/m.net
Range#===, Range#include?, Range#member?, Range#cover?
Enumerable#grep
じゃダメなの?

567 :デフォルトの名無しさん:2016/07/22(金) 07:27:36.63 ID:y4ZiHYE1.net
前者についてはそれじゃ機能が足りないんだ
範囲内最小の値よりなお小さいか
最大の値よりなお大きいかまで判定してほしい

後者については機能的にはそれでいいんだけど
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

568 :デフォルトの名無しさん:2016/07/22(金) 07:39:58.12 ID:y4ZiHYE1.net
セルフツッコミしとくと
前者はobjが<=>演算子非対応でnil返した場合を考慮してない
後者はotherがRange以外の場合を考慮してない上に範囲外の場合変なRangeを返すので気持ち悪い

569 :デフォルトの名無しさん:2016/07/22(金) 07:53:03.72 ID:ot11jjQx.net
UnityのMathf.Clampみたいに、

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

10 = Clamp(20, 1, 10)

570 :デフォルトの名無しさん:2016/07/22(金) 07:55:55.89 ID:8LVOaO/m.net
どうせIntegerなんだから
(min <=> obj) + (max <=> obj) >> 1
でよくね?
あと
(1..2) & (3..4) # => (3..2)
だから
(3..2).max # => nil
になって気持ち悪い

571 :デフォルトの名無しさん:2016/07/22(金) 07:58:36.16 ID:8LVOaO/m.net
ごめん、リロってなかったorz

572 :デフォルトの名無しさん:2016/07/22(金) 08:06:48.82 ID:y4ZiHYE1.net
>>570
Rubyでは負数の除算がアレなんだ
-1 >> 1 = -1

573 :デフォルトの名無しさん:2016/07/22(金) 08:19:38.53 ID:8LVOaO/m.net
-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

574 :デフォルトの名無しさん:2016/07/22(金) 08:39:44.79 ID:DR9XI0EI.net
>>567
<=> はそういうものじゃない。お前さんの言うような機能はあっても良いが、それが <=> と名付けられることは未来永劫ない。

575 :デフォルトの名無しさん:2016/07/22(金) 08:49:54.31 ID:cUWclNnj.net
Array#<=>なんてものもあるし未来永劫無いとは言い切れなくもなくない

576 :デフォルトの名無しさん:2016/07/22(金) 21:13:35.89 ID:DR9XI0EI.net
>>575
Range#<=> が追加されないなんて一言も言ってないよ。
>>567 の期待するものにはならないってだけ。

577 :デフォルトの名無しさん:2016/07/22(金) 21:16:28.21 ID:cUWclNnj.net
>>576
ああ、本当だ。早とちりすまん

578 :デフォルトの名無しさん:2016/07/23(土) 23:49:44.32 ID:l6bIVOK+.net
ruby初心者です。
変数の中に入った文字列の置換ができません。
例えばhtmlという変数の中に入った(http://○○-1.jpg)の中の-1を無くしたい場合
subかgsubを使うかと思います。
試しにp html.gsub(/-1.jpg/,

579 :デフォルトの名無しさん:2016/07/23(土) 23:52:24.68 ID:l6bIVOK+.net
ruby初心者です。
途中で書き込みが消えてしましました(汗)
変数の中に入った置換の方法を教えていただけますでしょうか。
よろしくお願いします。

580 :デフォルトの名無しさん:2016/07/23(土) 23:55:26.99 ID:3089LaeD.net
>>578-579
html.gsub!(

html = html.gsub(

581 :デフォルトの名無しさん:2016/07/24(日) 00:37:14.40 ID:9mJaMPLw.net
>>578
確認画面が出たとき、ダブルクォーテーションがあると、文が切れる。
2chのバグだろう。たぶん、エスケープしていない

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

puts str

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

正規表現の先読みを使っても、できる

582 :デフォルトの名無しさん:2016/07/24(日) 00:56:13.49 ID:VgaTJS92.net
>>580>>581
ご丁寧にありがとうございます。
今やってる作業がanemoneで拾ってきたhref要素を変数に入れてその一部-1を置換しようとしています。
教えていただいた通り、
str= node.css('a').attribute('href').value
str = str.gsub(/-1.jpg/, '.jpg')
puts str
と書き換えたのですが-1は消えませんでしたので、何か別の原因で引っかかってるみたいです。

583 :デフォルトの名無しさん:2016/07/24(日) 07:06:47.90 ID:uCHUDa0e.net
細かい事だが /-1\.jpg$/ の方が変な誤爆しないですむ

実は-1じゃなくて-l(小文字のL largeサイズ指定)だったというオチが思い浮かんだが…

584 :デフォルトの名無しさん:2016/07/24(日) 07:36:38.76 ID:ix/R/9ty.net
gsub(/http:\/\/○○\K-1(?=\.jpg)/, '')

585 :デフォルトの名無しさん:2016/07/24(日) 11:12:26.70 ID:wdZTIji9.net
>>581
切れ"ない"よ
ブラウザのバグだろ

586 :デフォルトの名無しさん:2016/07/24(日) 14:16:46.18 ID:VgaTJS92.net
574です。
置換する変数を間違っていただけのうっかりミスでした・・・orz
sub,gsubを使って上記の教えていただいた方法で変数の中身を無事置換できました。
ありがとうございますm(_ _)m

587 :デフォルトの名無しさん:2016/07/26(火) 21:17:51.50 ID:uTRCF1br.net
>>440
> 個人的にはアスタリスク2回でハッシュを受け取る

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

カメだけど、超使う。
キーワード引数と組み合わせたり。

588 :デフォルトの名無しさん:2016/07/27(水) 15:07:46.63 ID:nl1cCFz0.net
pythonだとさらによく使う

589 :デフォルトの名無しさん:2016/07/29(金) 08:11:29.53 ID:1qYsbBpR.net
gtk3 でGUIを作ろうとしてるんだけど
stdinを監視したい

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

標準入力を監視しながらのプログラムの場合どうやってる?
別スレッドにするのが普通なのかね?

590 :デフォルトの名無しさん:2016/07/29(金) 09:19:20.82 ID:AO+a9SAV.net
>>589
・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

591 :デフォルトの名無しさん:2016/07/29(金) 09:45:02.59 ID:1qYsbBpR.net
>>590
ありがとう!!!
gtk2ではその方法で上手くいきました
gtk3を使おうとするとGdk.InputのかわりにGLib::IOChannelを使うようにメッセージがでて
Gdk::Input::READのところでエラーになるんだけど
ちょっと検索かけただけじゃやり方わかりませんでした

御存じなら教えてください
よろしくお願い致します

592 :デフォルトの名無しさん:2016/07/29(金) 10:54:00.67 ID:AO+a9SAV.net
>>591
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をインストしてないので動作未確認)

593 :デフォルトの名無しさん:2016/07/29(金) 10:58:51.55 ID:1qYsbBpR.net
>>592
ありがとう助かったよ
検索上手いね!!

594 :デフォルトの名無しさん:2016/07/29(金) 15:09:47.59 ID:DEZEXrtC.net
配列の中から偶数の要素だけ配列の中に残したいです。テキストには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

595 :デフォルトの名無しさん:2016/07/29(金) 15:11:49.29 ID:DEZEXrtC.net
配列じゃなくてハッシュでした

596 :デフォルトの名無しさん:2016/07/29(金) 15:28:57.91 ID:1qYsbBpR.net
先程Gtk::Inputを使った方で
windowの生成も行なうと
上手く期待の動作しなかった

GLib::IOChannelを使ってSTDINをオープンしてadd_watchをそれに使うと
期待の動作になりました
ありがとう
まだGUIの方は作れてないけど作れそうな感じ

597 :デフォルトの名無しさん:2016/07/29(金) 15:35:49.37 ID:flV7hOuN.net
>>594
これだと偶数の要素だった場合、その要素を再代入してることになる
新しく別の配列に代入するとかならその書き方で問題ないと思うよ
ちなみに nums.select! { |k, v| v % 2 == 0 } が一番良さそう

598 :デフォルトの名無しさん:2016/07/29(金) 16:15:45.30 ID:WGKZmyFx.net
もっと別な書き方も紹介して混乱させよう
nums.each_with_object({}){|(k,v),o| o[k] = v if v.even?}

599 :デフォルトの名無しさん:2016/07/29(金) 16:55:05.51 ID:Ogz/SEhr.net
特に面白いものは書けず
nums.reject{|_,v|v.odd?}
nums.grep(proc{|_,v|v&1==0}).to_h
nums.each{|k,v|v.odd?&&nums.delete(k)}

600 :デフォルトの名無しさん:2016/07/29(金) 17:11:04.04 ID:1UayH1GQ.net
>>599の1つ目が今回に限っては一番妥当
「numsからodd?なものを取り除く」と読み下そう
思いつかなかった>>597-598もぜひ覚えて帰ってね!

601 :デフォルトの名無しさん:2016/07/29(金) 19:32:20.85 ID:jkc14IDK.net
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)


602 :デフォルトの名無しさん:2016/07/29(金) 20:01:51.49 ID:mtfgcrou.net
>>601
やはりあなたはリンクしすぎです
ばいばいおさるさん

603 :デフォルトの名無しさん:2016/07/29(金) 23:54:22.01 ID:AO+a9SAV.net
某テキスト(?)のメソッド Enumerable#select! を使うなら、
>>597>>599 の先頭を参考にして;

 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


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

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

 https://ideone.com/JlEy6w

このコードを推奨する

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

もうちょっと勉強してみたいと思います。ありがとうございました。説明がわかりやすかったです。

605 :デフォルトの名無しさん:2016/07/30(土) 12:49:12.22 ID:UN9LAiBT.net
よく使うメソッドなんて大した数ないから覚えるかその都度マニュアル読めばいいんじゃね
http://docs.ruby-lang.org/ja/2.3.0/class/Hash.html
まあメソッド覚える前に代入とか制御構造とかもっと基礎的なことを最低限理解してからにしろよとは思うが

606 :デフォルトの名無しさん:2016/08/02(火) 10:24:25.49 ID:7rZajpxG.net
エクセルの列の文字列(AとかZZZとか)が何番目の列なのか計算するにはどうしたら良いでしょうか?

607 :デフォルトの名無しさん:2016/08/02(火) 10:34:33.19 ID:R1uEEgNe.net
もっとうまい方法があるかもしれんが
# 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

608 :デフォルトの名無しさん:2016/08/02(火) 19:33:06.09 ID:G8b1Dkiv.net
Rubyに最近興味を持った者です
DXRubyを使用しており、Rubyのバージョンは2.0 32bit
OSはwindows7 64bitです

カレントディレクトリにあるフォルダを開き、中にあるtxt形式のファイルを取得し
その一行目に書かれていたことにたいしてifを使うにはどうすればいいでしょうか?

609 :デフォルトの名無しさん:2016/08/02(火) 19:49:44.99 ID:GrXRtLCP.net
>>608
いっぺんに全部やろうとするからわからなくなる
↓のように問題を分割して、ひとつずつ調べていけばいいよ

・カレントディレクトリにあるフォルダを開き
・中にあるtxt形式のファイルを取得し
・その一行目に書かれていたこと
・にたいしてifを使う

610 :デフォルトの名無しさん:2016/08/02(火) 20:07:22.42 ID:R1uEEgNe.net
str = open("フォルダ名/ファイル名.txt").readline # txtファイルの一行目

if (strの条件式)
 # やりたいこと
end

611 :デフォルトの名無しさん:2016/08/02(火) 21:15:40.05 ID:G8b1Dkiv.net
>>610
では、二行目を単体で読み込む方法はどうするんでしょうか?

あと一行目と二行目を両方読み込む場合はどうするんでしょうか?

612 :デフォルトの名無しさん:2016/08/02(火) 21:20:03.60 ID:bMxB9+Te.net
>>608
カレントディレクトリ中にある全てのtxt形式のファイルを開く場合
Dir.glob('./*.txt') do |fn|
File.open(fn, 'r:utf-8') do |f|
line = f.readline
if /条件/ =~ line
end
end
end

613 :デフォルトの名無しさん:2016/08/02(火) 22:04:55.90 ID:R1uEEgNe.net
>>611
foo = open("フォルダ名/ファイル名.txt").
line1 = foo.readline # 一行目
line2 = foo.readline # 二行目

大した量じゃないんだからマニュアルを読もう
http://docs.ruby-lang.org/ja/2.3.0/class/IO.html

614 :デフォルトの名無しさん:2016/08/03(水) 00:10:59.84 ID:qya5GR80.net
vipでプログラムの話題で盛り上がってるぞ
http://vipper.2ch.net/test/read.cgi/news4vip/1470062380/

これはrubyのステマするチャンス

615 :デフォルトの名無しさん:2016/08/03(水) 00:39:14.55 ID:3mARGs2B.net
>>606
効率は良くないけど、EXCELで使う程度の数かつ、何十万回も計算を繰り返したりしないなら。

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

s=“ZZ”; p (“A”..s).to_s.size

616 :デフォルトの名無しさん:2016/08/03(水) 02:00:46.62 ID:W0lh95XI.net
>>606
inject厨が書いてみた:
 https://ideone.com/PSRQnw

617 :デフォルトの名無しさん:2016/08/03(水) 13:48:51.38 ID:zdWIlhYU.net
>>606
rubyだと“Z”.nextで”AA”になるから、”A”をスタートとして”ZZZ”までnextをループさせた回数=列の番号になるよ

618 :デフォルトの名無しさん:2016/08/03(水) 15:07:33.08 ID:mbys/AN5.net
A -> 1
Z -> 26
の 26進数なんだよ
だから
ZZZ -> 26*26*25 + 26*25 + 25 + 1
と瞬時に判る

619 :デフォルトの名無しさん:2016/08/03(水) 15:10:29.88 ID:mbys/AN5.net
ごめん間違った
桁の0に相当するものがないから
実際の値は違う
もうちょっと工夫が要るけど
考え方は 26進数

620 :デフォルトの名無しさん:2016/08/03(水) 15:17:25.06 ID:B5cRJMaS.net
sを列の文字列とする
A-Zを A=0, Z=25 の26進数とみなして
s + B..B(Bがsの桁数個) - B が列の番号
だから>>607の下の式のようになる

これの逆変換が求めるものだけど素直にやると桁の左にあるAがなくなってしまうので
一旦 BA..A(Aはsの桁数個)を足しておいて最後にBを削れば良い
それが>>607の上の式

621 :デフォルトの名無しさん:2016/08/03(水) 15:26:35.51 ID:mbys/AN5.net
logを使うのは筋が悪い希ガス

622 :デフォルトの名無しさん:2016/08/03(水) 15:31:21.63 ID:B5cRJMaS.net
じゃあFixnum#bit_lengthでも使おう

623 :デフォルトの名無しさん:2016/08/03(水) 15:43:49.69 ID:B5cRJMaS.net
つまりこういうことね
(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]

624 :デフォルトの名無しさん:2016/08/03(水) 15:51:40.29 ID:kO+977FM.net
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

625 :デフォルトの名無しさん:2016/08/03(水) 16:03:32.72 ID:W0lh95XI.net
>>616を一般的な手続き型プログラミングへ書き直してみた:
 https://ideone.com/gO9N9x

これならPerlやPythonのような普通の手続き型言語を知っていれば
容易く読めるし、普通のプログラマが引き継いでも問題無く
保守できるのではないかと思われ

626 :デフォルトの名無しさん:2016/08/03(水) 16:46:12.54 ID:/NIG+3Tl.net
n.to_s(26).tr('0-9a-p','@A-Y').sub(/(.)@/){$1.tr('A-Z','@-Y')+'Z'}.sub('@','')

もうちょい短くできそうでできない

627 :デフォルトの名無しさん:2016/08/03(水) 16:53:46.46 ID:/NIG+3Tl.net
n.to_s(26).tr('0-9a-p','@A-Y').sub(/(.)@/){$1.tr('A-Z','@-Y')+'Z'}.sub('@','')

もうちょい短くできそうでできない

628 :デフォルトの名無しさん:2016/08/03(水) 16:56:15.69 ID:/NIG+3Tl.net
連投すまんこ
あと'@A-Y'じゃなくて'@-Y'やな。動くけど

629 :デフォルトの名無しさん:2016/08/03(水) 17:02:40.83 ID:B5cRJMaS.net
まだ行けるのかな
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

630 :デフォルトの名無しさん:2016/08/03(水) 17:17:54.18 ID:/NIG+3Tl.net
ごめんn=26*26とかの時におかしくなるわ

631 :デフォルトの名無しさん:2016/08/03(水) 18:04:32.66 ID:/NIG+3Tl.net
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減る

632 :デフォルトの名無しさん:2016/08/03(水) 18:06:33.96 ID:mbys/AN5.net
logなんて使うから可笑しくなる

633 :デフォルトの名無しさん:2016/08/03(水) 18:09:55.37 ID:B5cRJMaS.net
>>632
Math.logを使うのはいつでも正しいよ
>>630が言ってるのは>>627のこと
bit_lengthを使う方も10**20000くらいまでは正しい

634 :デフォルトの名無しさん:2016/08/03(水) 18:17:06.18 ID:B5cRJMaS.net
「いつでも」は言いすぎだった
logも9.603431447*10**18989までは正しく動作するよ

635 :デフォルトの名無しさん:2016/08/03(水) 18:25:45.78 ID:mbys/AN5.net
いつでも正しいコードを書けよ

636 :デフォルトの名無しさん:2016/08/03(水) 18:28:03.24 ID:l8cxGlGj.net
諄い

637 :デフォルトの名無しさん:2016/08/03(水) 18:34:18.83 ID:mbys/AN5.net
ついでに言ってやろう
余計な制限のあるコードにはコメントが必須

#logも9.603431447*10**18989までは正しい
+46Bだな

638 :デフォルトの名無しさん:2016/08/03(水) 18:39:46.41 ID:B5cRJMaS.net
>>637
なんかキレてんの? システムに依存しない、アホみたいにでかい数値に対してすらいつでも正しいコードなんて存在するわけないだろ

639 :デフォルトの名無しさん:2016/08/03(水) 19:05:26.45 ID:mbys/AN5.net
いや
切れてないよ

640 :デフォルトの名無しさん:2016/08/03(水) 19:14:20.38 ID:B5cRJMaS.net
そうか、なんかすまんかった
いい加減黙ります ゴルフスレとかあったら面白いかもね

641 :デフォルトの名無しさん:2016/08/03(水) 23:34:22.20 ID:W0lh95XI.net
String#ord を使うと更に短くなった(ついでにエラー検査も削除):
・関数型 :(旧) >>616 --> (新) https://ideone.com/OQLdlR
・手続き型:(旧) >>625 --> (新) https://ideone.com/Ja6tP9

String#succ の存在も初めて知ったし、勉強になったわ

642 :デフォルトの名無しさん:2016/08/04(木) 01:32:56.67 ID:feZwYdLF.net
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はもっと流行っていいと思うんだ
使ってもそんなに短くはならないんだけどさ

643 :sage:2016/08/04(木) 01:37:51.37 ID:2HyRwUYq.net
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

644 :デフォルトの名無しさん:2016/08/04(木) 14:01:54.35 ID:2HyRwUYq.net
>>643
最後は
str.reverse
でした。

645 :デフォルトの名無しさん:2016/08/04(木) 23:00:36.83 ID:c9zwl1qO.net
SQLの使用に関して質問です。
どのようにすれば、回避できるでしょうか?
■症状:インサートした日本語文字が文字化けする。


title =

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

SQLの使用に関して質問です。
どのようにすれば、回避できるでしょうか?
■症状:インサートした日本語文字が文字化けする。
title="あいうえお123"
DB = Mysql.new('host','name','pass','test01')
sql = "UPDATE `test01`.`table01` SET `title` = '#{title}'WHERE `table01`.`id` = '4';"
DB.query(sql)

647 :デフォルトの名無しさん:2016/08/04(木) 23:36:28.77 ID:QKnNcils.net
とりあえずSQLインジェクション丸出しの書き方はやめよう

648 :デフォルトの名無しさん:2016/08/05(金) 06:51:27.16 ID:tltzsolz.net
[nil, *'A'..'Z', *'AA'..'ZZ', *'AAA'..'ZZZ'].find_index('ZZZ')
ひどいけどこれで十分

649 :デフォルトの名無しさん:2016/08/05(金) 07:12:44.43 ID:x8TUq60L.net
Ruby, DBなど、すべてのアプリの文字コードを、UTF-8 に統一すれば?

650 :デフォルトの名無しさん:2016/08/05(金) 13:38:20.94 ID:LJe/qM3f.net
その辺はrubyよりpythonの方が堅牢
perlは論外

651 :デフォルトの名無しさん:2016/08/05(金) 15:48:28.22 ID:UhWsfPtN.net
横槍失礼します
>>608 です
唐突に質問なのですが
そもそもDXRubyでユーザーに文字を入力させ、それを扱うにはどうすれば良いのでしょうか

652 :デフォルトの名無しさん:2016/08/05(金) 15:49:58.62 ID:UhWsfPtN.net
>>651
連投すみません
RPGの名前入力のようなものです

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

結構しらべたのですが.....

653 :デフォルトの名無しさん:2016/08/05(金) 16:21:49.83 ID:teNswV+z.net
DirectXプログラミングかWindowsプログラミングの経験はある?
このへんの基礎知識がないとAPI探せないし何渡していいのかもわからないよ

654 :デフォルトの名無しさん:2016/08/05(金) 18:50:19.50 ID:UhWsfPtN.net
>>653
正直ありません
Rubyが一番最初にやりました
VBSやBASICはやったことがありますが.....

DXRubyを入れて調べながらやっているところです

655 :デフォルトの名無しさん:2016/08/06(土) 01:12:59.09 ID:8Rl0Ybxy.net
DXRubyは知らないけど、そういう基本的な関数は、

チュートリアルでもやれば、わかるのでは?

656 :デフォルトの名無しさん:2016/08/06(土) 04:20:54.79 ID:w5zQ+Fii.net
DXRubyのドキュメント読めばいんじゃねーの

657 :デフォルトの名無しさん:2016/08/06(土) 05:53:35.02 ID:2mFu6MHm.net
>>648
https://support.office.com/ja-jp/article/Excel-の仕様と制限-ca36e2dc-1f09-4620-b726-67c00b05040f

658 :デフォルトの名無しさん:2016/08/06(土) 07:35:29.07 ID:aQkr0mnl.net
>>655
チュートリアルには、文字の描画、キーの判定は書いてありますが
全てのキー入力の監視はどうやってやるのかなと.....

659 :uy ◆e6.oHu1j.o :2016/08/06(土) 07:40:48.99 ID:TO2ybUlL.net
>>652
DXRubyにそういうのをやってくれる関数はないよ
ていうか名前をアルファベットに限定するなら、そこまで長いコードにならないから
ユーザー入力部分を自分で書いてみれば良い

DXRubyは綺麗に小さくまとまっている良いライブラリではあるものの
このくらいはさっと書けないと、機能は結構少ないライブラリだから今後も苦労する事になるでしょう

660 :uy ◆e6.oHu1j.o :2016/08/06(土) 07:45:28.31 ID:TO2ybUlL.net
>>658
こんな感じで取得できる

Window.loop do
x = Input.keys
next if x.empty?
p x
end

661 :uy ◆e6.oHu1j.o :2016/08/06(土) 07:51:12.27 ID:TO2ybUlL.net
>>653
いや、DXRuby扱うのにそういう知識は全然いらない
そもそもゲームのライブラリってのは
DirectXやOpenGLの勉強をすっ飛ばして使えるようにライブラリ作者が上手くまとめてくれているもの

662 :デフォルトの名無しさん:2016/08/06(土) 08:14:46.43 ID:aQkr0mnl.net
>>660
ありがとうございます!
keysで取得できるんですね!
ありがとうございます!

663 :デフォルトの名無しさん:2016/08/06(土) 08:28:12.52 ID:aQkr0mnl.net
>>660
アルファベット限定でいいのでRPGの名前入力をしたいんですが
ユーザーが文字入力したのをnameという変数に記録し
それを画面に表示っていうのはできますでしょうか?

何度も質問本当にすみません

664 :デフォルトの名無しさん:2016/08/06(土) 09:21:45.32 ID:xpLjq4a+.net
>>661
大抵C++のソース眺めるはめになるんだけどね

665 :uy ◆e6.oHu1j.o :2016/08/06(土) 10:26:06.77 ID:TO2ybUlL.net
>>663
ちょっと半端な出来だけど暇だったから書いた
https://ideone.com/r48pB5

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


あと使ってるdxrubyのAPIのInput.set_repeatはこれね
http://mirichi.github.io/dxruby-doc/api/Input_23set_repeat.html

666 :uy ◆e6.oHu1j.o :2016/08/06(土) 10:55:37.26 ID:TO2ybUlL.net
あとは、>>652ここでいってるタイトルから本編とか
その辺りのコードは、ゲームでいうと「シーン管理」という

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

ついでに俺に遜った敬語いらんから
2chで身を低くしても得るもの無いぞ

667 :デフォルトの名無しさん:2016/08/06(土) 14:50:23.69 ID:aQkr0mnl.net
>>666
ありがとうございます!
whenが9なのはなにか意味があるんでしょうか?

668 :uy ◆e6.oHu1j.o :2016/08/06(土) 18:32:46.50 ID:TO2ybUlL.net
>>667
たいして意味はない

669 :デフォルトの名無しさん:2016/08/06(土) 19:22:34.03 ID:P6FYCdC3.net
シーン数はほとんど増えず1桁に収まるという前提で
最大値っぽい値にしてる ってとこだろう

670 :uy ◆e6.oHu1j.o :2016/08/06(土) 20:43:13.60 ID:TO2ybUlL.net
>>669
そんなところ

だけど、別にそこまで真似る必要ないからね
自分のコードの癖に突っ込むという、鋭い突っ込み

671 :デフォルトの名無しさん:2016/08/06(土) 23:11:34.04 ID:aQkr0mnl.net
すみません再び質問です
例えば
test1.rbとtest2.rbいう2つのプログラムファイルがあるとして
test1.rbにはtest2.rbの内容をを実行させるというのはどうやってやるのでしょうか?
自分で、クラスを定義するのでしょうか?

test2.rbの内容はWindow.draw_fontを使いたいです

672 :デフォルトの名無しさん:2016/08/06(土) 23:38:13.30 ID:FykwWLua.net
>>671
Kernel#system

673 :uy ◆e6.oHu1j.o :2016/08/07(日) 02:19:16.41 ID:ARnnbWqn.net
>>671
test2.rbにクラス定義して
test1.rbで
require"./test2.rb"

やれば良いんじゃね


>>672
test1.rb側でウィンドウ生成してるって前提あるだろうからそれ無理

674 :デフォルトの名無しさん:2016/08/07(日) 07:23:31.37 ID:bL6v3Ot9.net
>>673
test2.rbの一行目にClass test2
と、書いて
test1.rbにrequireで読み込みます
そこから例えばAキーが押されたらtest2.rbを実行って
どうやるんでしょうか....

675 :uy ◆e6.oHu1j.o :2016/08/07(日) 08:44:57.55 ID:PWyfS198.net
>>674
その辺がまだわかんない段階なら無理にファイルわけしなくていいと思うぞ
rubyで普通にコード書けば小さめのゲームなんて1ファイルで書ききれるから

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

test2.rb
https://ideone.com/cAxzVK
一応サンプルとしてはこうなるけど、

676 :デフォルトの名無しさん:2016/08/07(日) 08:49:56.24 ID:bL6v3Ot9.net
>>675
本当に有難うございます
自分でも、もう少しリファレンスとか見てみます!

677 :uy ◆e6.oHu1j.o :2016/08/07(日) 08:58:26.20 ID:PWyfS198.net
>>676
暇なだけだからいいよ
ついでにいっとくと、dxrubyにはSpriteクラスってのがあって
このクラスで描画・移動・当たり判定が全部出来る
rubyの基礎を抑えたら>>675こういうコードじゃなくて

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

俺不定期でしかこのスレ見ないけど、まぁがんばって

678 :デフォルトの名無しさん:2016/08/07(日) 17:34:52.83 ID:bL6v3Ot9.net
>>677
速度についてですが
例えばifとcaseで同じ処理するとcaseのほうが早いと思うのですが

同じことをするプログラムでも、コードが短いほうが早いとかありますか?

679 :デフォルトの名無しさん:2016/08/07(日) 17:58:57.41 ID:T8DF/r+j.net
>>678
そんなのあったとしても微差。考えるだけ無駄
それよりアルゴリズムのお勉強した方が早い

680 :デフォルトの名無しさん:2016/08/07(日) 18:05:45.89 ID:gluNCp1x.net
>>678
まずは「Rubyはクソ遅い言語である」という事実を受け入れよう。
じゃあなんでそんなに遅い言語が使われているのかというと、
(1)多くのアプリケーションのボトルネックは言語ではなくDBアクセスやネットワークなどの外部要因だから
(2)速度が重要でないケースは結構多いから
ゲームの例で説明すると、
描画はRubyから直接手を出せないので(1)、更新処理は次の更新までに間に合いさえすればいいので(2)に該当するね
もちろん高度なゲームになると(1)や(2)の前提は成り立たなくなるけど、そのときは残念ながらRubyを捨てる時だ。

681 :デフォルトの名無しさん:2016/08/07(日) 19:42:22.24 ID:bL6v3Ot9.net
>>680
なるほど.....遅い言語なのですね.....

逆に、ライブラリなどを使わず
純粋なRubyが得意とするのはどんなものなのでしょうか?

682 :デフォルトの名無しさん:2016/08/07(日) 19:49:02.03 ID:6muXneSj.net
文字列の操作

683 :デフォルトの名無しさん:2016/08/07(日) 19:50:02.91 ID:bL6v3Ot9.net
>>682
そうなのですか.....
ありがとうございます!

684 :デフォルトの名無しさん:2016/08/07(日) 20:27:25.95 ID:T8DF/r+j.net
>>681
遅いけれども書きやすいのがメリット

速度を求めてDirectX使いたいならふつーにC#使うのがよろし

685 :デフォルトの名無しさん:2016/08/07(日) 21:07:14.31 ID:bL6v3Ot9.net
https://ideone.com/KDa48P
上記のコードで@@imageというのがありますよね
時々@@とか@から始まる奴があると思うのですが
あれは、何の意味があるのでしょうか?

686 :デフォルトの名無しさん:2016/08/07(日) 21:08:49.00 ID:6muXneSj.net
>>685
これよめ
http://qiita.com/mogulla3/items/cd4d6e188c34c6819709

687 :デフォルトの名無しさん:2016/08/07(日) 21:12:57.96 ID:bL6v3Ot9.net
>>686
あ、すみません!
ありがとうございます!

688 :デフォルトの名無しさん:2016/08/08(月) 11:25:24.34 ID:WWplGsDY.net
とりあえずrubyのリファレンス眺めてこいと言いたくなるな

689 :デフォルトの名無しさん:2016/08/08(月) 11:49:51.61 ID:qKDY79To.net
四則演算を勉強せずにいきなり微積から勉強しているような感じ

690 :デフォルトの名無しさん:2016/08/08(月) 13:22:45.98 ID:ldi7UiFI.net
質問ですが
rbenv exec って使ってないんですか?
プロジェクト毎にrubyのバージョン指定するときは
rbebv exec bundle exec rails s
みたいに記述するのかと思うのですが、
ネットだと
bundle exec rails sみたいなのばかりなので、
使わないのか、省略できるのか仕組みがわからないです

691 :デフォルトの名無しさん:2016/08/08(月) 15:04:46.88 ID:KcW4wK3e.net
>>690
rbenv のソース嫁!

692 :デフォルトの名無しさん:2016/08/08(月) 18:14:11.09 ID:1QM6yHGZ.net
>>689
掛け算には順序があります

693 :デフォルトの名無しさん:2016/08/08(月) 20:31:33.35 ID:+4ewFkZd.net
http://mirichi.github.io/dxruby-doc/tutorial/sprite.html
これのライフサイクルを管理するのところなんですが
self.vanish if self.x > 300
ここなのですが
これはx座標300以降のオブジェクト?は描画しないということでいいんでしょうか?

もしも合っているなら例えば250から300の間のような
座標の範囲指定はどのようにやるのでしょうか?

694 :デフォルトの名無しさん:2016/08/08(月) 20:46:46.11 ID:7oYgKi44.net
if self.x > 250 && self.x < 300
じゃないかな。
てかRubyの基本的な制御構文を勉強した方が良さそう

695 :デフォルトの名無しさん:2016/08/08(月) 20:49:48.09 ID:qKDY79To.net
if (250..300).include?(self.x)
とかもいいかな
>>694の言うようにまずは基本的なことを勉強する必要があると思う
この程度すらわからない かつ その都度人に聞いていたんじゃ全然捗らないと思うよ

696 :デフォルトの名無しさん:2016/08/08(月) 21:21:44.11 ID:YQYjy21g/
ありがとうございます
やはり、まずはチュートリアルを完全に理解できるところまで
純粋なRubyを勉強してみます
本当にありがとうございました!

697 :デフォルトの名無しさん:2016/08/08(月) 22:48:37.77 ID:+4ewFkZd.net
なるほど.....
チュートリアルが完全に理解できるように
DXRubyじゃなくて普通のRubyをまずは勉強してみます
ほんとうにありがとうございました! 

698 :デフォルトの名無しさん:2016/08/09(火) 15:01:07.73 ID:/QwUjUla.net
君たちをRubyに導いたnaoyaはc# asp.netの会社に転職した

699 :デフォルトの名無しさん:2016/08/10(水) 22:31:03.23 ID:uPyxj/T5.net
株式会社TOUAが2016年7月に破産
http://www.tdb.co.jp/tosan/syosai/4191.html

700 :デフォルトの名無しさん:2016/08/11(木) 12:06:30.15 ID:v2n9djjr.net
女性金詐欺で告発汁

701 :デフォルトの名無しさん:2016/08/12(金) 00:04:15.74 ID:YUzYFiQu.net
質問です。
cronでシェルからrubyを起動した際、requireしてるgemの一つが読み込みエラーしており困っております。
実行パスが違うからなのでしょうが、こういった場合どう解決すればよいでしょうか?

702 :デフォルトの名無しさん:2016/08/12(金) 00:30:51.28 ID:3GviCvck.net
cronの環境変数は、一般ユーザーの環境変数よりも少ないから、よくトラブルが起こる。
環境変数PATHも見てみ

Rubyの起動オプションなら、-Idirectory かな?

703 :デフォルトの名無しさん:2016/08/14(日) 16:05:38.95 ID:qlcn2KoZ.net
tmp = ["a","b"]
printf "%s %s\n", tmp
とやると`printf': too few arguments (ArgumentError)
というエラーになるのですがPrintfに配列は渡せないのでしょうか

704 :デフォルトの名無しさん:2016/08/14(日) 16:53:42.36 ID:MHXGGTGk.net
printf "%s %s\n"%tmp
printf "%s %s\n", *tmp
好きな方をどうぞ

705 :デフォルトの名無しさん:2016/08/14(日) 18:00:18.07 ID:qlcn2KoZ.net
ああ・・・なんとなくわかりました
ありがとうございます

配列としてのObjectじゃなくって配列のポインタを渡すかしないといけないんですね
全てがObjectだからあかんと・・・ありがとうございました

706 :デフォルトの名無しさん:2016/08/14(日) 18:03:55.65 ID:MHXGGTGk.net
rubyでポインタって何言ってんの?
printf "%s", tmp # => ["a", "b"]
単純に%sが2つあるのにそれに対する引数が1つしかないからtoo few argumentsってなってるんだよ

707 :デフォルトの名無しさん:2016/08/14(日) 18:12:25.22 ID:qlcn2KoZ.net
いや、ようするに引数の展開をObjectそのままだとしてくれなくって
展開する用の指示が*なわけですよね、だから参照を渡してやればいいって話ですよね?

基本的にLLにしろなんにしろポインタは意識させない作りになっているだけでないわけじゃないですよね。

708 :デフォルトの名無しさん:2016/08/14(日) 18:13:36.98 ID:DMp4bkRP.net
Twitterアナリティクスの右上にある「データをエクスポート」からcsvをダウンロードするスクリプトを書きたいと思っています。
https://analytics.twitter.com/

Mechanizeを使ってログインするところまでは出来たのですが、
そこから「データをエクスポート」をクリックし、csvのダウンロードまで実行する手順がわからず行き詰まってしまいました。
これはどのように対処すればよいのでしょうか?

709 :デフォルトの名無しさん:2016/08/14(日) 21:12:38.18 ID:Mh5ntfj4.net
>>708
何が困ってるのか全然分からん
もっと困ってるところを具体的に書いてくれ

710 :デフォルトの名無しさん:2016/08/14(日) 21:21:33.21 ID:DMp4bkRP.net
>>709
↓のコードで、とりあえずログイン後のページまではいけていることを確認できたんですが

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以外の手段を組み合わせる必要がありそうな感じですが・・・

711 :デフォルトの名無しさん:2016/08/14(日) 22:52:24.64 ID:SaGN03aV.net
>>707
参照じゃないよ…
Rubyにはポインタの概念がそもそもないから…

712 :デフォルトの名無しさん:2016/08/15(月) 17:05:00.37 ID:g49T5w75.net
2016-5-27, JRuby 9.1.2.0 リリース

一方、IronRubyは、2011年が最終リリース

713 :デフォルトの名無しさん:2016/08/15(月) 17:13:52.08 ID:g49T5w75.net
>>707
tmp = ["a","b"]

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

コンテナには、コンテナを展開する演算子がある

714 :デフォルトの名無しさん:2016/08/15(月) 17:16:50.45 ID:g49T5w75.net
>>710
Seleniumデザインパターン&ベストプラクティス、2015

OSSのブラウザ自動テストツール、Selenium WebDriver を使って、
Rubyでテストを書いた本

715 :デフォルトの名無しさん:2016/08/15(月) 18:00:37.84 ID:GUZ7DBqH.net
Julia の J かと思ってしまう

716 :デフォルトの名無しさん:2016/08/16(火) 12:24:35.22 ID:Bu7T/V8i.net
Kindle UnlimitedにRuby本もっと増やしてくれ
9/3までに頼む

717 :デフォルトの名無しさん:2016/08/16(火) 14:36:31.71 ID:laX+qstW.net
xmlしたいのですが、エラーがでてよくわかりません。

環境はWindows7
Rubyは2.177P400
を使っています。

718 :デフォルトの名無しさん:2016/08/16(火) 14:57:25.67 ID:uRC9VBAF.net
>>717
その質問で解決法がわかる人間がいたらスーパーエスパーだわw

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

これぐらいは書こうなw

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

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

感じです
バージョンがあれば、それに越してみたいです。

720 :デフォルトの名無しさん:2016/08/16(火) 19:32:20.09 ID:mJ7ra1LV.net
外国の方ですか?

require "open-uri"
xml = open("hoge.xml")

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

require 'rexml/document'
require 'open-uri'
doc = REXML::Document.new open('http://example.com/example.xml')

722 :デフォルトの名無しさん:2016/08/16(火) 22:35:47.88 ID:uRC9VBAF.net
>>719
コード書けてないならエラーなんて出ないと思うんですが…w

723 :デフォルトの名無しさん:2016/08/20(土) 02:58:26.06 ID:5fdRiIgV.net
コードなど書かずともエラーは出せる
常識じゃないか

724 :デフォルトの名無しさん:2016/08/20(土) 08:12:29.76 ID:3vDaga3A.net
みんなエスパーだよ。

725 :デフォルトの名無しさん:2016/08/20(土) 18:27:12.48 ID:UXRRqxP7.net
バグよと言い出せないうちに
貴方のデバッカー 奪ったLove-letter(Virus)

726 :片山博文MZ ◆T6xkBnTXz7B0 :2016/08/20(土) 18:50:44.26 ID:ea4xV4wU.net
*デバッガー

727 :デフォルトの名無しさん:2016/08/24(水) 01:28:41.63 ID:u8a4LAYj.net
nokogiriとanemoneを使ってあるサイトをスクレイピングしようとしているのですが、
タイトルテキストを抽出しようとしても空白の出力しか表示されません。
環境はWIN7でコマンドプロンプトで入力してます。
単純に記述ミスなら、「syntaxerror」という警告が出てくるのですが今回はそれもないです。
それかjavascriptが邪魔をしているのか・・・
ちなみにサイトは「pornhub」ですw

728 :デフォルトの名無しさん:2016/08/24(水) 07:58:12.59 ID:TVgqKey2.net
で、質問は何なんだよ

729 :デフォルトの名無しさん:2016/08/24(水) 09:54:36.61 ID:fznfg9zu.net
rbenvでcommand毎にバージョンが切り替える方法ってないんですかね?

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

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

これをワーキングディレクトリがどこであろうと
aaaは1.9で bbbは2.0としたいのですが

730 :デフォルトの名無しさん:2016/08/24(水) 10:00:03.83 ID:lMhQNpu5.net
pornhubざっと調べたが
おそらくクローラ対策に一定時間内に一定回数以上アクセスすると(?
jsでクッキーに何かを設定させて認証してるみたいね

731 :デフォルトの名無しさん:2016/08/24(水) 10:10:08.13 ID:lMhQNpu5.net
>>729
環境変数 RBENV_VERSION を用いる

RBENV_VERSION = 1.9 /usr/local/aaa
これで1.9環境でaaaを実行するはず

732 :デフォルトの名無しさん:2016/08/24(水) 10:12:13.68 ID:fznfg9zu.net
それだと1.9と2.0が混在できないんですよね

733 :デフォルトの名無しさん:2016/08/24(水) 11:47:26.61 ID:wj/dhjvF.net
>>732
どういうこと?

734 :デフォルトの名無しさん:2016/08/24(水) 13:57:51.07 ID:zACxNHAZ.net
>>729
shebangに実行したいバージョンのrubyのパス書いときゃいいんじゃないの

735 :デフォルトの名無しさん:2016/08/24(水) 14:45:07.43 ID:9+kSfiVX.net
>>729
こんなんじゃあかんの?
ルビーのパス/ruby コマンド

736 :uy ◆e6.oHu1j.o :2016/08/25(木) 07:13:14.50 ID:AFb0RLFl.net
require 'mechanize'
url =

737 :uy ◆e6.oHu1j.o :2016/08/25(木) 07:15:35.87 ID:AFb0RLFl.net
え・・・っ
なんかソースコードの書き込みが失敗してる
もうやだ

738 :デフォルトの名無しさん:2016/08/25(木) 12:11:25.26 ID:i3bEIs7l.net
2chのバグだろ

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

投稿する際、こちらでわざわざ、\" とエスケープしてから投稿してやれ

739 :デフォルトの名無しさん:2016/08/25(木) 15:17:07.10 ID:b4YfCPkD.net
>>738
すごい、明解
頭いい

740 :デフォルトの名無しさん:2016/08/25(木) 18:11:50.12 ID:fNn06GGZ.net
あるていど長いのは
ideoneみたいなコードサービスで書けば?

741 :デフォルトの名無しさん:2016/08/25(木) 19:32:47.82 ID:7trdSkIV.net
"をエスケープしてなかったらいろいろ悪用されたりしないんかね詳しくは知らんが

742 :デフォルトの名無しさん:2016/08/25(木) 21:35:41.81 ID:/4caYD7N.net
ふつうにideone でいいと思うよ実行結果までついてくるよ

743 :デフォルトの名無しさん:2016/08/25(木) 21:43:19.34 ID:KJBRfXOD.net
ideone はバージョンが指定できればいいのになー

744 :デフォルトの名無しさん:2016/08/26(金) 10:21:27.00 ID:QNADLP5T.net
railsのActiveRecord とか .ancestors # => できないのなんで?
メソッドの継承チェーンが分からないのにどうしてメソッドを持ってこれる
の?

745 :デフォルトの名無しさん:2016/08/26(金) 11:08:39.63 ID:3gDvt2/N.net
> ActiveRecord.methods - Object.methods
でわかるけどトップレベルのActiveRecordは中身がないよ。
> ActiveRecord::Relation.ancestors
だとズラズラでるずら。

746 :デフォルトの名無しさん:2016/08/26(金) 12:05:29.40 ID:WnsDsp7+.net
codepad.org

747 :デフォルトの名無しさん:2016/08/29(月) 18:18:22.91 ID:UFqwTsI3.net
すでに定義されているクラスに対して継承関係を追加することって可能?

748 :デフォルトの名無しさん:2016/08/29(月) 18:52:16.97 ID:bxq98iQ5.net
includeでいけたはず

749 :デフォルトの名無しさん:2016/08/29(月) 20:29:24.48 ID:MIStvaWn.net
extendも忘れるんじゃないぞ

750 :デフォルトの名無しさん:2016/08/29(月) 21:20:24.86 ID:EgxA66z3.net
prependもお忘れなく

751 :デフォルトの名無しさん:2016/08/29(月) 21:44:35.95 ID:5rjuE4vI.net
全部ちょっとずつ違うんだから出してくるなよ紛らわしいんだよ!

752 :デフォルトの名無しさん:2016/08/30(火) 02:57:33.40 ID:CJ2Efr2d.net
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化したいんです。
何が原因なのでしょうか、
他に何かいい方法があるでしょうか

753 :デフォルトの名無しさん:2016/08/30(火) 03:38:25.10 ID:KipFr26h.net
3行目に予期しない"か'があるから構文エラーになってる

754 :デフォルトの名無しさん:2016/08/30(火) 04:44:33.60 ID:CJ2Efr2d.net
>>753 このサイトの順にやっていったのですが
~/.rbenv/shims/rake の3行目[ -n "$RBENV_DEBUG" ] && set -x
の何が問題なのかわかりません。
インストールされたファイルで、""を消してみたけどダメでした。

755 :デフォルトの名無しさん:2016/08/30(火) 08:47:39.64 ID:KipFr26h.net
シェルスクリプトなのにRubyのスクリプトとして扱われてるのかな?
取りあえず対処法はあるみたい
ttp://github.com/rbenv/rbenv/issues/467

756 :デフォルトの名無しさん:2016/08/30(火) 08:58:41.19 ID:TaoYiOtt.net
「ruby unexpected tSTRING_BEG」で検索!

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

>752では、[ -n \"$RBENV_DEBUG\" ]
>754では、[ -n "$RBENV_DEBUG" ]

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

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

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

それか、ファイルの最後に、制御文字が入っているとか

757 :デフォルトの名無しさん:2016/08/30(火) 12:59:38.73 ID:CJ2Efr2d.net
>>756
>754 の形であってます。
エラーメッセージも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

758 :デフォルトの名無しさん:2016/08/30(火) 20:31:13.62 ID:yZN34uL0.net
Rubyの「メソッド」って色々あってもっと細かく分類できないかな
インスタンスメソとかクラスメソの違いだけじゃなくて、
例えば .xxx? みたいにハテナがつくメソッドは「ハテナメソッド」とか
自然言語の動詞や形容詞助詞みたいに使い方でもっと細かく
分類してほしい。分類が分かれば、記法がある程度特定されて
メソッド名から推測してぶっつけ本番で使ってもシンタックスエラー
なく使える命名規則があれば便利じゃないかな?

759 :デフォルトの名無しさん:2016/08/30(火) 20:40:18.59 ID:KipFr26h.net
ぶっつけ本番で使うことがないので現状維持でいいです

760 :デフォルトの名無しさん:2016/08/30(火) 21:16:54.15 ID:sNUA7e93.net
これ以上分割する理由なくない?
はてなメソッドってただ返り値がBool型なメソッドってだけなのに他と区別する意味が見いだせん

761 :デフォルトの名無しさん:2016/08/30(火) 22:17:09.84 ID:JoG6iYvQ.net
>>758
ハテナメソッドと、そうでないメソッドに
違いがないので分ける必要ありません。

762 :デフォルトの名無しさん:2016/08/31(水) 00:29:51.70 ID:BLd6Di5/.net
>>752-757
$RBENV_DEBUG には、何が入っている?

他には、ホスト名・ユーザー名・パスに、日本語を使っているので誤動作しているとか

763 :デフォルトの名無しさん:2016/08/31(水) 00:35:55.12 ID:ezWZD1bG.net
>>758
メソッド名を列挙する操作と正規表現組み合わせればいくらでも出来る気がする

764 :デフォルトの名無しさん:2016/08/31(水) 02:49:08.99 ID:BLd6Di5/.net
特別に扱う関数は、

戻り値がBool型
非破壊的関数は、const
マルチスレッドに対応する関数は、multi_thread

765 :デフォルトの名無しさん:2016/08/31(水) 08:39:59.91 ID:mqymnS7Z.net
必要なのは新しい文法ではなく英語の語彙力と命名センス

766 :デフォルトの名無しさん:2016/08/31(水) 10:30:15.54 ID:aGvvWmav.net
>>758
逆フィンランド記法で
int i を int ii みたいに定義する馬鹿さ加減

767 :デフォルトの名無しさん:2016/08/31(水) 10:37:12.32 ID:LUuLSP6C.net
"逆フィンランド記法"との一致はありません。

768 :デフォルトの名無しさん:2016/08/31(水) 11:37:17.00 ID:mqymnS7Z.net
逆ポーランド記法なら聞いたことある

769 :デフォルトの名無しさん:2016/08/31(水) 14:04:42.57 ID:hktlAWEt.net
逆アイルランド記法とか逆イングランド記法もありそう

770 :デフォルトの名無しさん:2016/08/31(水) 14:06:39.13 ID:LUuLSP6C.net
逆ポーランド記法は文脈的に全くの別のものじゃん

771 :デフォルトの名無しさん:2016/08/31(水) 14:31:38.27 ID:PJmqkaeb.net
多分言いたいのはシステムハンガリアンなんだろうな

772 :デフォルトの名無しさん:2016/08/31(水) 23:21:21.50 ID:VrI1x3gR.net
ジャンガリアンじゃね?

773 :デフォルトの名無しさん:2016/09/01(木) 00:42:21.07 ID:4EaPp0tJ.net
いただきが名前をいただきした

774 :デフォルトの名無しさん:2016/09/01(木) 02:23:39.56 ID:u/ZMrN1Z.net
ruby始めて4日目くらいなんだが、リファレンス見るとメソッドの引数名が*pathとかあるんだが、*になんか意味あるんですか?

775 :デフォルトの名無しさん:2016/09/01(木) 03:11:44.86 ID:Bl3p1IFz.net
>>774
可能ならリファレンスの文法の項目は全部読んだ方が良いよ

>仮引数の直前に * がある場合には残りの実引数 (後述の post 引数を除く) はみな配列とし てこの引数に格納されます。 可変長引数、rest 引数などと呼ばれる機能です。 このような引数は 1 つしか作れません。
ttp://docs.ruby-lang.org/ja/2.3.0/doc/spec=2fdef.html

776 :デフォルトの名無しさん:2016/09/01(木) 15:14:09.12 ID:GAgoRnb9.net
Windows + ruby2.3 で使えるサーバ不要のデータベースgemってどんなのがあるんでしょうか

777 :デフォルトの名無しさん:2016/09/01(木) 16:41:53.55 ID:lxKZC7pd.net
>>776
gem install sqlite3-ruby

778 :771:2016/09/01(木) 17:23:18.43 ID:dI9CGFDX.net
>>777
windowsの2.3対応はまだじゃないですか?
githubの最新版だと対応してるっぽいんですが、導入の仕方がよくわかんないです

779 :デフォルトの名無しさん:2016/09/01(木) 17:30:15.13 ID:u2weFoMG.net
>>776
単にデータを保存したいだけならPStoreやMarshalでgem使う必要が無い

780 :デフォルトの名無しさん:2016/09/01(木) 17:35:10.99 ID:lxKZC7pd.net
>>778
ごめん、使えるんじゃないかなーレベルで書いてしまった

781 :デフォルトの名無しさん:2016/09/01(木) 19:34:04.12 ID:UWb4BubA.net
つか自分が「こうしたいな」という要件があって、
それを元にメソッドを調べるときってまず何を見る訳?

782 :デフォルトの名無しさん:2016/09/01(木) 20:19:22.98 ID:Xz8sejsg.net
上のSQLiteみたいな要素技術の名前とだいたいそれがどんなものかくらいはある程度知ってて当然
ローカルのDBが欲しいな→SQLiteがあったな→ruby sqliteでググろう
となる

783 :デフォルトの名無しさん:2016/09/01(木) 20:48:24.77 ID:4EaPp0tJ.net
>>781
逆引き

784 :デフォルトの名無しさん:2016/09/01(木) 20:50:54.60 ID:Uog0CqGC.net
>>781
どんなメソッドがあるかぐらいは一通りさらっと見て脳内でインデックスを作っておく
細かい使い方まで覚える必要はない。そんなのは後で調べればいい

785 :デフォルトの名無しさん:2016/09/01(木) 23:24:31.38 ID:u2weFoMG.net
とりあえず
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 あたりはメソッドも一応目を通しておく

786 :デフォルトの名無しさん:2016/09/03(土) 02:48:37.27 ID:uJ1wm+Vm.net
>>775
ありがとうございます読み込んでおきます

787 :デフォルトの名無しさん:2016/09/03(土) 08:05:24.94 ID:wEDYvGbd.net
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}
だと一応出来たんですが無様すぎる…

788 :デフォルトの名無しさん:2016/09/03(土) 08:15:03.42 ID:yBtBzV43.net
Rubyをこれから学ぼうと考えているものです。
最近、GitやVagrant、ChefなどWeb関係で
必須ともいえるアプリケーションがありますが、
それらはRubyで書かれております。

何故、Rubyがこれらに採用されているのでしょうか。
以前、言語間の性能比較したもので、
処理速度に関しては、PHPの方が処理速度が速いとありました。
にもかかわらず、Rubyが採用されているのか気になったのですが、
どうしてでしょうか?

789 :デフォルトの名無しさん:2016/09/03(土) 08:36:23.97 ID:Hj3S1o7Z.net
>>787
str.split($/,-1)

長くもないんだからString#splitのマニュアルくらい読むと良いよ
ttp://docs.ruby-lang.org/ja/2.3.0/method/String/i/split.html

790 :デフォルトの名無しさん:2016/09/03(土) 09:54:12.22 ID:AtgdG5E3.net
>>788
探したけど、ちゃんと理由を話してくれる記事見つからないな。
個人的な回答だけど参考に

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

791 :デフォルトの名無しさん:2016/09/03(土) 13:18:38.92 ID:G3gUtM0z.net
>>788
処理速度だけが選択基準ならみんなCを選ぶよ
選択基準は開発者のそれぞれだからね
開発速度とかメンテのしやすさとか好き嫌いとか

792 :デフォルトの名無しさん:2016/09/03(土) 13:49:20.66 ID:RiDSsLxh.net
ツール・DSLの作りやすさでは、Ruby, Groovy。
設定ファイルを書く際、プログラミング言語っぽくなくて読みやすい。
さらに手続きも書ける

SASS もRubyだろ。
Gradle は、Groovy

793 :デフォルトの名無しさん:2016/09/03(土) 16:56:47.72 ID:w8mOGCX1.net
perlがいやでrubyに手を出してみたらperlそっくりだったでござる

794 :デフォルトの名無しさん:2016/09/03(土) 17:03:34.98 ID:vCC0oq7q.net
>>788
一言でいうと、Rubyは遅いけど書きやすいから

795 :デフォルトの名無しさん:2016/09/03(土) 17:04:16.68 ID:vCC0oq7q.net
>>793
後継だから似てるだろうけど
PerlよりかはRubyの方が
読み書きしやすいと思う

796 :デフォルトの名無しさん:2016/09/03(土) 18:05:32.81 ID:0ZHQPGtd.net
でもperlっぽい書き方してる人いまだにいるよな

797 :デフォルトの名無しさん:2016/09/04(日) 09:39:54.24 ID:pVjNdAS+.net
>>788
スクリプト言語の速度なんか目糞鼻糞。
(JavaScriptやLuaあたりだけは別格だけど)
多くのスクリプト言語の用途においてボトルネックになるのは言語の処理速度ではなくIO(ネットワーク、DB、ファイル)。
IOはとんでもなく重い処理なので、
スクリプト言語の実行速度の差なんか誤差レベルで全く無視できる。
あとはちょっとしたツールやバッチだと仮に0.01秒が0.1秒に伸びたところで問題にならないケースも多い。

798 :デフォルトの名無しさん:2016/09/04(日) 12:31:44.31 ID:C66L8/dk.net
ツール・DSLの作りやすさでは、Ruby, Groovy だから、最初はこれらでCUIアプリが作られる。
その後、GUIが作られる

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

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

一方、Pythonでは、理系の数学領域の人が多い

799 :デフォルトの名無しさん:2016/09/05(月) 02:22:06.60 ID:SdDvLzP6.net
ファイル操作をしていて、ファイル名によって(?)期待していない挙動になったので質問させてください。

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

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

Rubyで書いたのは、引数で渡されたファイル名の末尾に

800 :デフォルトの名無しさん:2016/09/05(月) 02:24:10.75 ID:SdDvLzP6.net
"_"を足して別ファイル作成する、というもの。
これをテストするために"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"に変えたり、ファイル名を変更すると期待した挙動になります。
アンダースコアはファイル名的に特別だったりしますか。
ハマりまくっているので助けてください…

801 :デフォルトの名無しさん:2016/09/05(月) 02:31:07.88 ID:B0VMf5p9.net
詳細不明なzipファイルなんてみる人少ないと思うよ
codepadなんかで投稿しなおしてみては

802 :794:2016/09/05(月) 02:42:18.42 ID:SdDvLzP6.net
投稿しました。試験用のファイル含めて計4つ分です。
http://codepad.org/phgMbtNs

803 :デフォルトの名無しさん:2016/09/05(月) 03:00:37.69 ID:vxYcnkVP.net
これオリジナルのスクリプトなんだろうか
投稿のために短く切り詰めたとかじゃなく
そりゃ大変だ
教科書投げ捨てる案件だなコレ

804 :デフォルトの名無しさん:2016/09/05(月) 03:17:25.42 ID:B0VMf5p9.net
新しく作ったファイルは空だけどいいのか?
まあともかくdst_filenameには想定通りの文字列が来てるみたいだから、batファイルの問題なんじゃないか
windowsのことはわからん

805 :デフォルトの名無しさん:2016/09/05(月) 04:09:04.01 ID:DasxJQQ9.net
for %%f in ("%*") do (
echo %%f
ruby test.rb %%f
)
こうじゃない?
bat 使わずに ruby だけでやった方が楽だと思うけど。

806 :デフォルトの名無しさん:2016/09/06(火) 00:57:19.17 ID:JK1a3Uc+.net
bat はバグるからアカン

せめて、PowerShell_ISE だろ

807 :デフォルトの名無しさん:2016/09/06(火) 17:01:21.99 ID:XKZPS+fP.net
batを使うのはbadだぜ

808 :794:2016/09/06(火) 22:28:35.50 ID:yRSBEbJd.net
ファイル名を受け取っているだけのRuby側は問題無さそうということで
ありがとうございました。

809 :デフォルトの名無しさん:2016/09/07(水) 06:36:39.93 ID:apKIFhKK.net
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

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

rubyをconfigureかmakeまでしたら
make distcleanやっても消えないファイルがあるんですが仕様ですか?
この状態でconfigure && makeすると
executable host ruby is required. use --with-baseruby option.
なって途中で止まっちゃうんです。何でですか?

811 :デフォルトの名無しさん:2016/09/07(水) 11:43:57.58 ID:mGf42UhL.net
>executable host ruby is required. use --with-baseruby option.
をそのまま訳すなら「動かせるrubyが必要だから--with-baserubyオプション使えよ」って事になる
ぐぐったら色々出てくるけど、ソースからコンパイルしてインストールしようとしてるの?
情報不足だからこれ以上はわからない

インスコするならrbenvとかRPM使ったほうが楽に入れられると思う

812 :デフォルトの名無しさん:2016/09/07(水) 12:03:10.18 ID:YSZpbVen.net
>>799-800 >>802 >>808
おまいが悪い
ruby 側の問題

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

ファイル一覧を一旦リストに入れてから処理すれば成功するだろう

813 :デフォルトの名無しさん:2016/09/07(水) 12:05:38.78 ID:YSZpbVen.net
windowsの場合だけ問題が起こるなら
原因はディレクトリのソート順かもしれんな
いずれにしてもループの要素をループ中で増減するのは危険

814 :デフォルトの名無しさん:2016/09/07(水) 21:57:51.62 ID:tAhMeQ6s.net
rubyはじめるわ!

815 :デフォルトの名無しさん:2016/09/08(木) 00:34:49.37 ID:zamWLbBn.net
>>799-813
a_.txt ファイルが作られた後、それがbatのループに拾われて、
a__.txt ファイルが作られるとか?

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

>>810
>make distcleanやっても、消えないファイルがあるんですが、仕様ですか?
makefileの、distcleanの所を見れば?

816 :デフォルトの名無しさん:2016/09/08(木) 09:23:30.37 ID:gPBbc6Mn.net
batファイルの引数以外のファイルは拾われないでしょ
別に問題ない

817 :デフォルトの名無しさん:2016/09/08(木) 17:03:47.71 ID:vq3pb7wp.net
質問させてください
以下のようなJSONファイルをJSON.parseしてhogeに格納しました
[ { "id":"1","kana":"あ","boin":"a" } ]
この状態で「p hoge.class」するとArryを返されます

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

[{…},{…},{…}]のJSONファイルをHashに格納したいのですが
なにか良い方法はありませんでしょうか
よろしくお願いします!

818 :デフォルトの名無しさん:2016/09/08(木) 18:11:48.06 ID:uHWEQ8CC.net
>>817
[ { "id":"1","kana":"あ" }, { "id":"2","kana":"い" }, { "id":"3","kana":"う" } ]
がどう変換されたいのか書いてみて。

819 :デフォルトの名無しさん:2016/09/08(木) 20:24:23.21 ID:gPBbc6Mn.net
hash1, hash2, hash3 = [{・・・}, {・・・}, {・・・}]

820 :デフォルトの名無しさん:2016/09/08(木) 21:19:39.88 ID:5PY6byd9.net
ひとつのdictには一組しかないケースじゃないん?たぶん
hoge.inject({}) {|result, item| result.merge(item) }
hoge.inject({}, &:merge) # 省略形

821 :デフォルトの名無しさん:2016/09/08(木) 21:29:09.66 ID:s09Hu+LE.net
injectにProc渡せるようになったの?

822 :デフォルトの名無しさん:2016/09/08(木) 22:09:36.89 ID:gPBbc6Mn.net
[*1..9].reduce(&proc{|a,b|a+b}) #=> 45
[*1..9].reduce(&lambda{|a,b|a+b}) #=> 45
少なくとも1.8.7の頃からできるよ

823 :デフォルトの名無しさん:2016/09/08(木) 22:21:38.10 ID:s09Hu+LE.net
Symbolじゃないとダメだと思い込んでた
inject/reduceは意図的に両方OKな設計にされてるのね

824 :デフォルトの名無しさん:2016/09/09(金) 04:17:17.09 ID:LpeB3e0i.net
複数のハッシュ群を、Arrayにいれておいて、取り出して使えば、いいだけ

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

h = ary[1]
p h
{:id=>"2", :kana=>"い"}

825 :デフォルトの名無しさん:2016/09/09(金) 07:40:28.22 ID:Lk44lMhw.net
>>799
bat でやりたいことは、コマンドライン引数のワイルドカード展開なんだろうけど、
# test.rb
p ARGV
---
test.rb *.txt
って、やってごらん。

マニュアルに書かれているようにワイルドカード展開に `*', `?', `[]', `**/' が使える。
Windows環境で []等を含めたければ ''括る、とも書いてあるね。

826 :デフォルトの名無しさん:2016/09/09(金) 13:22:13.98 ID:nAt2a2k9.net
>>819
そのままやればいいんじゃないの?
hash1, hash2, hash3 = JSON.parse(json_string)

827 :デフォルトの名無しさん:2016/09/10(土) 11:26:54.07 ID:0WfpQ0VB.net
>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)

828 :デフォルトの名無しさん:2016/09/10(土) 11:36:17.02 ID:0WfpQ0VB.net
あ、なんかすごくアホな質問してました
無視してくださいorz

829 :デフォルトの名無しさん:2016/09/10(土) 13:37:43.64 ID:QUVRyXDh.net
なんかムラムラするなお前

830 :デフォルトの名無しさん:2016/09/11(日) 16:04:49.34 ID:4fbcKkyu.net
変数strにはさまざまな文字列が入る可能性があり"apple"か"banana"のどちらかが入っていたときのみtrueを返すようにしたいのですが、
どのように書けばよいのでしょうか

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

のようにかけるかと思ったのですがうまくいきませんでした
これは論理演算子の左辺がfalseだった場合、右辺は実行されないというrubyの仕様によるものだということはわかったのですが、
ではどうしたらいいのかということがわかりません

831 :デフォルトの名無しさん:2016/09/11(日) 16:06:07.87 ID:qOBSijlm.net
((str == "apple") || (str == "banana"))

832 :デフォルトの名無しさん:2016/09/11(日) 16:16:38.56 ID:4fbcKkyu.net
>>831
教えていただきありがとうございます
助かりました

833 :デフォルトの名無しさん:2016/09/11(日) 16:32:54.36 ID:UPswGxCa.net
%w[apple banana].any?{|s| s == str}
!!(str =~ /\A(apple|banana)\z/)
やり方はいろいろ

834 :デフォルトの名無しさん:2016/09/11(日) 18:08:52.74 ID:7mVeUw5e.net
['banana','apple'].include?(str)

835 :デフォルトの名無しさん:2016/09/13(火) 08:22:10.35 ID:LgDBG7c/.net
> これは論理演算子の左辺がfalseだった場合、右辺は実行されない
0点


論理和
論理積

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

などを少し整理する事をすすめる

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

837 :デフォルトの名無しさん:2016/09/13(火) 16:35:24.92 ID:aXWSAFy4.net
ちなみに、

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

で文字化け部分を指定しても改善にはいたりませんでした。

838 :デフォルトの名無しさん:2016/09/13(火) 16:36:46.35 ID:80RPfzdF.net
文字化けというのはURLエンコードのこと?

839 :デフォルトの名無しさん:2016/09/13(火) 16:45:49.24 ID:aXWSAFy4.net
>>838
URLエンコードです。
デコードすると正規のURLに変換できます。

840 :デフォルトの名無しさん:2016/09/13(火) 16:46:32.94 ID:Z1s//V7/.net
取得したURLをすべて%付きに変換(正規化)するだけじゃないの?
%なしを正規として扱うのはわかってやらないのならオススメしない。

841 :デフォルトの名無しさん:2016/09/13(火) 16:51:13.41 ID:80RPfzdF.net
デコードしていく方法で考えたらいいんじゃないかな
一応検索したら出てきたもの
http://qiita.com/foloinfo/items/435f0409a6e33929ef3c

842 :デフォルトの名無しさん:2016/09/13(火) 17:04:47.99 ID:mdhMcfhG.net
nokogiriじゃなくてanemoneの問題だろ
focus_crawl で、いらないとお前が思うリンクを弾いたら?

843 :デフォルトの名無しさん:2016/09/13(火) 17:19:43.00 ID:aXWSAFy4.net
>>841
参考リンクの情報ありがとうございます。
一通り試してみますm(_ _)m

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

[ → %5B
] → %5D

のように、カッコ部分がエンコード/デコードで重複して出力されます。
link.to_s.matchで[●●]や%5B●●%5Dといった条件付けで巡回ページを指定しても、
両方のパラメータが出力されてしまうようです。

844 :デフォルトの名無しさん:2016/09/13(火) 19:00:51.61 ID:sMHYkxL7.net
正規化して重複したら弾くだけじゃないの?

845 :デフォルトの名無しさん:2016/09/15(木) 01:10:39.64 ID:EGe9UG5c.net
moduleの中でプライベートなインスタンスメソッドを定義するのって変?
クラスにincludeした際にmoduleの別のインスタンスメソッドから呼び出すために用意してみたんだけど…
ちなみにクラスメソッドのような使い方は想定してないのでmodule_functionとかは利用しなかった

846 :デフォルトの名無しさん:2016/09/15(木) 19:46:09.23 ID:8swlNZts.net
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

847 :デフォルトの名無しさん:2016/09/15(木) 20:05:06.44 ID:2bVUIpAa.net
data.select{|it| it[:address] == "fugafuga" }

848 :デフォルトの名無しさん:2016/09/15(木) 21:56:41.38 ID:4Lbf8yku.net
>>847
ありがとうございます
試して見ます!

849 :デフォルトの名無しさん:2016/09/15(木) 23:26:56.53 ID:UCCDVfNQ.net
横レスだけど、>>847を試してみた

https://ideone.com/xp2IB6

850 :デフォルトの名無しさん:2016/09/16(金) 01:04:31.60 ID:egLfcP1P.net
たびたびすいません
fugafgaではなくgafで抽出したい場合は正規表現使う感じでしょうか

851 :デフォルトの名無しさん:2016/09/16(金) 06:12:33.38 ID:DLAZUyzS.net
リファレンス読もうselectはブロック内で真を返すもののみ残すので正規表現でいけるよ

852 :デフォルトの名無しさん:2016/09/16(金) 07:56:10.76 ID:6a7QMzs2.net
Effective Ruby の項目10に書いてあるけど、

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

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

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

Structでは属性になるから、getter, setter も付いているし、
存在しない属性名でアクセスすると、NoMethodErrorになる

853 :デフォルトの名無しさん:2016/09/16(金) 09:30:54.73 ID:DLAZUyzS.net
>>852
複雑にネストしたJSONとかでもそっちのが良いの?
うまく使いこなせる気がしない

854 :デフォルトの名無しさん:2016/09/16(金) 09:37:52.73 ID:6a7QMzs2.net
>>850
data.select{|it| it[:address].match(/gaf/) }

855 :デフォルトの名無しさん:2016/09/16(金) 09:44:38.44 ID:6a7QMzs2.net
型として固定されている場合は、クラス・Structの方がいい

一方、項目がコロコロ変わるような場合、
何の項目が来るのか、わからない場合は、Hashがいい

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

なんとなくやってみたいことが動くというところまでは行きたいので
文字のマッチングから>>846の「data[0]」を出力できるところまでやってみたいと思います
ありがとうございます!

857 :デフォルトの名無しさん:2016/09/16(金) 23:44:30.69 ID:6a7QMzs2.net
初心者には、EffectiveRuby は難しい。
まず「たのしいRuby 第5版、2016」で文法を勉強すべし

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

一方、Hashは、事前に項目(キー)がわからない場合。
例えば、文章に出てくる英単語を、使用回数が多い順に並べるとか

858 :デフォルトの名無しさん:2016/09/17(土) 00:12:19.00 ID:PduQX1gX.net
言語リファレンス読めて習作いくつか書けたら
そのレベルの本はいらんやろ。

859 :デフォルトの名無しさん:2016/09/17(土) 15:43:11.73 ID:3YKrhMdt.net
obj = Foo(x)
みないた、newを使わないインスタンスの生成方法って可能ですか?
以前どこかでこの形を見たような記憶があるのですがとてもあやふやで、
確認しようと色々さがしてみたら見当たりませんでした
やはり記憶違いでしょうか?

860 :デフォルトの名無しさん:2016/09/17(土) 15:43:54.52 ID:VbfmfVd0.net
>>859
Foo というメソッドを定義すればいい

861 :デフォルトの名無しさん:2016/09/17(土) 18:42:02.15 ID:9X+eFsUZ.net
任意の枚数のトランプを仕分けするプログラムで悩んでいます。
最初にカードの枚数が与えられ、次にカードのシンボルと数字がスペース区切りのセットで与えられます。
例えば、スペードの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
とりあえず確認がてらスペードの配列を表示させようとしたら、空配列しか返ってきません。どの部分がおかしいのか
ご指摘いただけませんでしょうか。

862 :片山博文MZ ◆T6xkBnTXz7B0 :2016/09/17(土) 19:13:41.02 ID:VM86FVmf.net
>>861
大文字と小文字が混じってるね。

863 :デフォルトの名無しさん:2016/09/17(土) 19:21:36.45 ID:Bzzyu0/Q.net
>>861
case when構文がおかしいので再確認を

caseで場合分けせんでも
cards = Hash.new{|h,k| h[k] = [] }
while i <= num
symbol, numeric = gets.chomp.split
cards[symbol] << numeric
i += 1
end
でいいんじゃないかなと思うんだが

864 :デフォルトの名無しさん:2016/09/17(土) 19:39:53.49 ID:9X+eFsUZ.net
>>862
うぬ・・・いつのまに・・・めんぼくない
>>863
おお、動きました。すごいな。あまりよくわからないけど、なんとなくわかりました。ありがとうございました。
とにかく、「動いた」のが素晴らしい。あと、できれば、前述のコードが意図したとおりにならない理由を
教えていただけるとありがたいです。

865 :デフォルトの名無しさん:2016/09/17(土) 21:27:40.73 ID:owPS/qUi.net
だからcaseの構文がおかしいっていわれてるじゃん!

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

まあこの場合は when 'S' then s << numeric と1行で書くのもアリ

866 :デフォルトの名無しさん:2016/09/17(土) 22:34:10.05 ID:/l22qB3W.net
>>859
RubyやめてPythonへ行けばいい

867 :デフォルトの名無しさん:2016/09/17(土) 23:58:36.86 ID:owPS/qUi.net
>>859

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

foo = Foo[0]
p foo.class #=> Foo

868 :デフォルトの名無しさん:2016/09/18(日) 09:35:45.27 ID:MJhMf8Pu.net
>>865
なるほど!書かれるまで全く気付かなかった・・・確かに書き方がおかしい
ありがとうございます。

869 :デフォルトの名無しさん:2016/09/18(日) 17:41:19.27 ID:aAaRWXxI.net
シンタックスエラーごときを自分で直せないならプログラマの素質なし

870 :デフォルトの名無しさん:2016/09/18(日) 17:53:33.43 ID:hCSpHgBW.net
エラーとバグは違う

871 :デフォルトの名無しさん:2016/09/18(日) 20:19:58.81 ID:arvHcK2+.net
symbol === true が falseってだけでエラーではない

872 :デフォルトの名無しさん:2016/09/18(日) 21:46:51.64 ID:zoqzORWf.net
この場合はおすすめしないけど、
case symbol を
case だけにすれば、if 〜 elsif 〜 elsif 〜 相当のことが出来る。
条件式の位置が揃うので、if,elsif より良い感じ。

873 :デフォルトの名無しさん:2016/09/18(日) 23:03:18.09 ID:7E6Tur9d.net
>>867
ありがとうございました
やはり記憶違いのようでした
ですが、ググッている時に[]=のオーバーロード(?)に関する話を見つけられました
下の感じのコードです
class Foo
def []=(a,b,c,d)
p a,b,c,d
end
end
Foo.new()[1,2,3]=4

874 :デフォルトの名無しさん:2016/09/18(日) 23:41:47.34 ID:oCekGsiM.net
Aサイトを巡回するクラスを作ったとします

875 :デフォルトの名無しさん:2016/09/19(月) 12:13:31.03 ID:iIvzjj/t.net
>>861
トランプのカードでは、カード[マーク][数字]のように、
2次元配列で管理すると、うっとおしいから、1次元配列にした方がいい

それで幾つか、変換関数を作っておく

876 :デフォルトの名無しさん:2016/09/19(月) 13:04:45.74 ID:GqLEG2EI.net
>>872
いろいろな表現の仕方があるんですねー

>>875
なるほど…自分はまで全然経験値が足りないので、とにかく動きさえすればいいやと思って
コードを組んでるのですが、これがまた見事に動かないという…
とにかく数をこなそうと思います。ありがとうございました。

877 :デフォルトの名無しさん:2016/09/19(月) 16:36:48.51 ID:H3IN7nVe.net
なんであらゆる面でPythonに劣っていると言われるRuby使ってるの?
Pythonじゃあ駄目なの?
利点と差別化を教えて

878 :デフォルトの名無しさん:2016/09/19(月) 16:40:16.95 ID:fIqWe4kn.net
Pythonは行数が増える。
特に無名関数、クロージャーがすごく書きづらい。


あとデバッグ用にわざと目立つように行頭にprintくのが出来なかったり
行を入れ替えたりするだけでインデントを揃えさせられるのが面倒。

879 :デフォルトの名無しさん:2016/09/19(月) 18:19:57.44 ID:jZTV89ee.net
>>877
使ってるのはRubyじゃなくてRails
単体でバッチ処理書いたりするときはPython使うわ
RoRと同等の使い勝手のPython on Railsがあれば迷わず乗り換えるけど、
やっぱりRubyはフレームワークのDSLとして使うには最適な言語なんだと思うよ

880 :デフォルトの名無しさん:2016/09/19(月) 18:22:24.29 ID:EdcTl4fm.net
>>877
> なんであらゆる面でPythonに劣っていると言われる
どこでその情報を手に入れたのか知らんが、「あらゆる面で」とかいうdisり
ワードをぶっこんでるような記事に論理性はほぼないから質の低さを笑うぐらいしか
読む価値ないよそれ

881 :デフォルトの名無しさん:2016/09/19(月) 19:49:24.51 ID:FmjNH1Zy.net
Ruby on Railsは神

882 :デフォルトの名無しさん:2016/09/20(火) 00:19:19.79 ID:w6mPkDpe.net
滅びろ
時代遅れの言語よ

883 :デフォルトの名無しさん:2016/09/20(火) 01:37:58.83 ID:fS5Ni7aU.net
時代遅れのC言語には効かなかった

884 :デフォルトの名無しさん:2016/09/20(火) 08:18:08.16 ID:9l0NUqqb.net
滅びろ
キッシュイーターよ

885 :デフォルトの名無しさん:2016/09/20(火) 09:49:01.89 ID:Xg0W+RA8.net
ミニツクも消えてるしRuby学習用のサイトが少なくて幻滅しました、
Pythonに乗り換えます

886 :デフォルトの名無しさん:2016/09/21(水) 16:10:02.25 ID:zFZPh8Mh.net
Matrixライブラリをつかって行列の計算を試しているんだけど、
頂点(xyzの3要素)を列ベクトルとして、4x4の変換マトリクスに掛け合わせると
:in `*': Matrix dimension mismatch (ExceptionForMatrix::ErrDimensionMismatch)
というエラーがでちゃう

これ、頂点側にもw要素必要ってことなの?

887 :デフォルトの名無しさん:2016/09/21(水) 16:18:10.30 ID:23vZJdQL.net
そりゃ4次の正方行列と3次元の列ベクトルとじゃ積が定義できんわな

888 :デフォルトの名無しさん:2016/09/21(水) 16:30:40.93 ID:zFZPh8Mh.net
w要素追加してもエラー出るからおかしいなと思ってたんだけど、
列ベクトルじゃなくて行ベクトルかけてた
ほんとごめんなさい

889 :デフォルトの名無しさん:2016/09/21(水) 17:18:28.43 ID:23vZJdQL.net
Rubyより先にすこし線形代数やったほうが良い気がする

890 :デフォルトの名無しさん:2016/09/21(水) 17:23:40.85 ID:ib8am8Zc.net
>>886
馬鹿には無理

891 :デフォルトの名無しさん:2016/09/21(水) 21:50:37.29 ID:PZB1d7j5.net
問題集のオススメサイト、あったら教えて欲しい
http://vipprog.net/とpaiza見てるんだけど、前者はちょっと問題が難しくて、paizaはBまでやったけど結果が出ないのでわかりにくい
便利なサイト、分かりやすいのがあれば嬉しい

892 :デフォルトの名無しさん:2016/09/21(水) 21:55:25.11 ID:23vZJdQL.net
anarchy golf

893 :デフォルトの名無しさん:2016/09/21(水) 22:36:45.56 ID:lN+U+lYo.net
>>891
yukicoder がいいと思うよ

894 :デフォルトの名無しさん:2016/09/21(水) 23:23:10.02 ID:lMM9KPqs.net
時代遅れすぎRuby

895 :デフォルトの名無しさん:2016/09/21(水) 23:27:54.15 ID:lN+U+lYo.net
>>894
そう思う人はわざわざ書き込まないよ
なぜなら時代遅れなものに興味は持たないからねw

896 :デフォルトの名無しさん:2016/09/22(木) 00:55:23.81 ID:gXd2kX85.net
あなごるは英語でムリポ……プログラマは英語も出来て格好いいなぁ
ユキコーダーを下からぽちぽちやっていきます
ありがとう

897 :デフォルトの名無しさん:2016/09/22(木) 01:31:58.64 ID:XjtOZmEL.net
>>896
そのまま競技プログラミングの世界においでw
この世界で使う英語はパターンも対して多くないから、yukicoder で問題パターンをある程度把握できたら
海外の問題文もそれほど苦もなく読めるようになるよ

898 :デフォルトの名無しさん:2016/09/23(金) 00:04:42.79 ID:sc2fhvDP.net
PythonとRubyで迷ってる
進めるべき参考書を入門書からフローチャートで教えてくれたら入信しようと思ってるんだが教えてくれない?

899 :デフォルトの名無しさん:2016/09/23(金) 00:07:59.29 ID:jTBVehdT.net
>>898
入信とか考えてたらロクなことないよ
どっちも使えるようになるぐらいの気概を持たなきゃ

900 :デフォルトの名無しさん:2016/09/23(金) 01:22:30.21 ID:FvMngb//.net
Webサイト制作ならRuby
機械学習ならPython

901 :スッキリ厨:2016/09/23(金) 01:25:28.31 ID:Krl8LY6k.net
まずこの本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014

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

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

たのしいだけ読んで、プログラミングするのもいい。
ただし、たのしい・みんなは表裏一体だから、一緒に読むと効率的

902 :デフォルトの名無しさん:2016/09/23(金) 12:33:08.19 ID:rjSPjZ1K.net
>>898

>>901 のはどれも読んでないけど
使えるようになったよ

903 :デフォルトの名無しさん:2016/09/23(金) 12:38:44.06 ID:cbvburLV.net
Ruby1.9.2なんだけど
rbファイルをrequireするときファイル名に日本語(マルチバイト文字)が混ざってるとno such file to loadになってしまうのはどうすれば…
1.8系では普通に日本語名のファイルも読み込めてたんだが

904 :デフォルトの名無しさん:2016/09/23(金) 12:39:54.36 ID:rjSPjZ1K.net
エンコード確認汁

905 :デフォルトの名無しさん:2016/09/23(金) 12:57:09.05 ID:jTBVehdT.net
>>903
1.9.2って…相当化石だぞ
2.3 以降使おうぜ

906 :デフォルトの名無しさん:2016/09/23(金) 14:01:02.74 ID:SuD2ulXn.net
Ruby初歩学の書を読んだら、ネットのリファレンス見ながらの「リファクタリング:Rubyエディション」がおすすめ
rubyだけじゃなくどんな言語にも適用できるめっちゃ便利なコードの書き方や考え方が書いてある
しかも抽象的じゃなく、具体的で簡潔なコード中心だから面倒くさくなくて中高生でも理解できる

個人的には、テストの章とテクニックカタログの章だけは軽く流すか必要になってから読めば良いと思ってる

907 :デフォルトの名無しさん:2016/09/23(金) 14:19:37.45 ID:AqTRNsCZ.net
悩んでる暇があったらファイル名修正しる

ってわけにはいかんのかの

908 :デフォルトの名無しさん:2016/09/23(金) 16:07:06.95 ID:FvMngb//.net
納期があるならファイル名修正するで正しいが
そうでないならエラーの原因を徹底的に探すのも正しい

909 :デフォルトの名無しさん:2016/09/23(金) 16:08:52.20 ID:FvMngb//.net
>>906
良書だけど初心者には意味が分からないと思う
あるていどオブジェクト指向に慣れてないと

910 :デフォルトの名無しさん:2016/09/23(金) 16:15:35.95 ID:C/wzQI6i.net
たのしいRubyを一通り読み終えたけど、こっからが難しいな

先日教えてもらったyukicodeをたまにやりつつ、実際何かを作ってみたい
環境構築しようとNetbeans入れたりなんやらしてるけどエラーが出てきてその度にくじけそうになるぜ

911 :デフォルトの名無しさん:2016/09/23(金) 19:36:41.06 ID:ytBluy/j.net
RubyはUNIXで使う言語です
環境構築の最初の一歩はまずWindowsを投げ捨てるところから

912 :デフォルトの名無しさん:2016/09/23(金) 21:49:29.32 ID:SuD2ulXn.net
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"」と書いて、文字列の出力を成功させるといい

913 :デフォルトの名無しさん:2016/09/23(金) 23:17:21.60 ID:41Vs6wmq.net
俺も楽しいRuby片手に勉強してる
win7だからAptanaStudio3を入れてやってけど、結構色々できて楽しいわ
ただ実行はできるけどデバッグしようとすると長々とエラーを吐くから今後が心配
byebugとかpry-byebug入れておいたから最終的にこれで良いのかな

914 :デフォルトの名無しさん:2016/09/23(金) 23:48:28.26 ID:SuD2ulXn.net
ptintfデバッグならぬpデバッグだったから、
rubyのデバッガ関係の話は全然知らない
どうなってるんだろ?

915 :デフォルトの名無しさん:2016/09/24(土) 00:31:31.06 ID:2/Geubwu.net
クラス設計というかモジュール分割というか
そういうのが良くわからん
似たような処理が増えてしまう

916 :デフォルトの名無しさん:2016/09/24(土) 00:57:19.72 ID:ODF3DSxf.net
>>915
文系だな
数学の素養がない
因数分解からやり直せ

917 :デフォルトの名無しさん:2016/09/24(土) 01:41:30.89 ID:Bym2Ra4c.net
どのようにクラスや機能、モジュールにわけるかの方法を知ることより、
なぜ分けなければならないかの理由を知る事こそが一番必要なんだ
これがわかっていないとクラス、モジュール等に分けて使う意味が希薄化して、
最終的に使わなくても良いじゃないかとなってしまう

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

当の本も抽象的な事より、具体的で簡潔なコード中心だからRubyさえ出来れば誰でも簡単に理解できる

918 :デフォルトの名無しさん:2016/09/24(土) 03:29:05.33 ID:ts45zeFc.net
>>916
お前一年位前にも同じレスしてなかったか

919 :デフォルトの名無しさん:2016/09/24(土) 06:45:49.04 ID:jSgJTuJa.net
>>912-913みたいに突っ張ってる奴も結局みんなMacに乗り換えちゃうんだよな
気持ちはすごくよく分かるが、くだらない落とし穴で時間を無駄にしてるのがだんだんアホらしくなってくる
後々経験として役に立つ苦労ならともかく、そんな暇があったらUNIX触ってた方がよほど役に立つというね
ソースは俺

920 :デフォルトの名無しさん:2016/09/24(土) 09:27:40.42 ID:ctlnAmJS.net
え、「くだらない落とし穴」ならMacも相当なモンがあると思うがw

921 :デフォルトの名無しさん:2016/09/24(土) 10:18:30.88 ID:2/Geubwu.net
>>917
ありがとう

922 :デフォルトの名無しさん:2016/09/24(土) 10:44:48.13 ID:fvqTVwn4.net
>>920
UnixなMacならRuby使うにあたってはWindowsより落とし穴は確実に少ないと思うぞ

Windowsもbash on Windowsがもうちょっとまともに使えるようになれば状況は変わるかも
しれないけどね

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

何かあんの?

924 :デフォルトの名無しさん:2016/09/24(土) 15:22:41.06 ID:fvqTVwn4.net
>>923
MacOSはなんちゃってUn*xではない、正統なUnixだからね

925 :デフォルトの名無しさん:2016/09/25(日) 10:00:28.63 ID:WGcjTmiY.net
Railsをやりたくて半日インストール作業をやってみたんだけどnio4rのエラーが出て先へ進めない
extconf failed, exit code 1が出てBundleUpadateやDevkitの再インスコやってみたけど変わらず

何か解決方法を知っている人いたら教えてください

926 :デフォルトの名無しさん:2016/09/25(日) 10:11:48.07 ID:Yid/aIUh.net
それだけで分かる人がいると本気で思っているならプログラミングはやめておいた方が良い

927 :デフォルトの名無しさん:2016/09/25(日) 10:22:55.56 ID:WGcjTmiY.net
>>926
エスパーじゃないんだから分かる訳無いだろ
質問の仕方も分からない初心者なんだからそういうツッコミはもうちょっと長めに頼む

928 :デフォルトの名無しさん:2016/09/25(日) 11:55:30.67 ID:dZs079/I.net
>>927
・使ってるOSとビット数
・Railsのインストールに使ったものとそのバージョン
・何をやろうとしてそのエラーが出たのか
・多分コマンドラインにエラーが表示されてるからそれをまるごとコピー
これぐらいは最低限欲しい

929 :デフォルトの名無しさん:2016/09/25(日) 12:00:53.76 ID:ISX7o04+.net
>>927
そのレベルならまずは本買ってきて一字一句違えずにその通りやれ

930 :デフォルトの名無しさん:2016/09/25(日) 13:23:10.46 ID:6V8k6iac.net
railsはバージョン関係でトラブルこともあるのでrailsinstaller使うのもありではないかと

931 :デフォルトの名無しさん:2016/09/25(日) 13:45:50.88 ID:hrPU7kVw.net
「RoR インストール エラー」で検索!

932 :デフォルトの名無しさん:2016/09/25(日) 14:26:19.46 ID:xgjFkYJ1.net
ArrayでFIFOバッファを作ったとしてスレッドAからArray#concatで追加
スレッドBからArray#eachで読み出したいと考えています
eachで読み出している最中に要素が追加されても問題ないでしょうか?

whileで条件を確認しながらArray#shiftで読むと遅いので出来ればArray#eachを
使いたいのですが・・・

933 :デフォルトの名無しさん:2016/09/25(日) 14:29:48.97 ID:oyerjsz0.net
>>932
素直に Thread::Queue 使えばええんとちゃうのん?

934 :デフォルトの名無しさん:2016/09/25(日) 14:39:24.97 ID:hrPU7kVw.net
読み出している配列を更新してはいけない。
別の配列に、書き込めばいい

そうしないと、バグる

935 :929:2016/09/25(日) 14:41:30.46 ID:hrPU7kVw.net
>読み出している配列を更新してはいけない

スマン。更新じゃなくて、追加だな

936 :デフォルトの名無しさん:2016/09/25(日) 19:32:28.37 ID:YdU0dJzE.net
>>925
libev-dev が入ってない気がする。

937 :デフォルトの名無しさん:2016/09/25(日) 21:15:17.31 ID:xgjFkYJ1.net
>>933
そんなのあったっけ・・・っと思ったら2.3から追加された物ですか
今すぐに動かせるのは2.1なので試せていませんが
リファレンスマニュアルを読むとpushで追加しpopで読み出していくようですね
これだと結局whileで条件を見ながらループを回すようですが速くなるのでしょうか?

>>934
バッファを2つ用意して交互に使用しeachで読み出すようにしたらwhile&Array#shiftの
1/3くらいで処理が終わるようになりました。コードの可読性が低下しましたけど

938 :デフォルトの名無しさん:2016/09/25(日) 21:18:44.25 ID:oyerjsz0.net
>>937
1.9 にも Queue クラスあるよ

939 :デフォルトの名無しさん:2016/09/25(日) 22:03:00.52 ID:xgjFkYJ1.net
>>938
えっ?リファレンスマニュアルを見てもそれっぽいのはないような・・・

940 :デフォルトの名無しさん:2016/09/25(日) 22:07:55.11 ID:oyerjsz0.net
>>939
https://docs.ruby-lang.org/ja/1.9.3/class/Queue.html

941 :デフォルトの名無しさん:2016/09/25(日) 22:29:32.99 ID:w3+kVjO9.net
ID変わっています

>>940
ビルトインじゃなくてそっちかよw
2.1にもあるようなので試してみます

942 :デフォルトの名無しさん:2016/09/26(月) 14:34:41.04 ID:ymOrEJcI.net
>>937
>コードの可読性

君の経験が足りないだけだよ

943 :922:2016/09/27(火) 07:33:34.37 ID:NSert0FA.net
自分で頑張ってみようと思ったけどギブ。
教えてください。

・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をインスコできないので、対処法ご存じの方教えてください。
よろしくお願いします。

944 :デフォルトの名無しさん:2016/09/27(火) 08:46:30.98 ID:iZeFgu2i.net
DevKitの設定してないんじゃないかな
DevKitのインストール先で ruby dk.rb init、ruby dk.rb install

945 :デフォルトの名無しさん:2016/09/27(火) 08:51:36.06 ID:NSert0FA.net
>>944
DEVKITは導入済み
一応再度やってみたら
[INFO] Skipping existing gem override for 'C:/Ruby'
[WARN] Skipping existing DevKit helper library for 'C:/Ruby'
と出てきたのだけど、これは既にあるからスキップしたよってことでいいのかな

946 :デフォルトの名無しさん:2016/09/27(火) 09:37:14.96 ID:iZeFgu2i.net
C:/Ruby23じゃないのか

947 :デフォルトの名無しさん:2016/09/27(火) 09:40:30.89 ID:fC9vfSe2.net
gem env
RUBY VERSIONが2.3.1である事
RUBY EXECUTABLEが変なのになってないか

ruby -rdevkit -e"puts ENV['RI_DEVKIT']"
Devkitのパスが表示される事
それぞれ確認

948 :デフォルトの名無しさん:2016/09/27(火) 12:34:25.41 ID:l7d7Fmom.net
>>943
諦めてMac買うかVirtualboxにLinux入れようぜ
Railsならどうせ運用はLinuxなんだからWinで苦労するだけ時間の無駄

949 :デフォルトの名無しさん:2016/09/27(火) 12:50:04.66 ID:H3ALlq6Q.net
Winで動いたところで運用環境ですんなり動くかというと極めて怪しいしなあ
Ruby on Win自体を否定するわけじゃないがRailsとなるとさすがにやめといた方がいい
Vagrant使えばネイティブと遜色ない使い勝手でVirtualBox上のLinuxのRubyが使えるよ

950 :デフォルトの名無しさん:2016/09/27(火) 12:52:25.17 ID:xpAbcIxp.net
railsなんて初めてインストールしたけど、sqlite3に罠がある以外は簡単だったよ

951 :デフォルトの名無しさん:2016/09/27(火) 19:19:06.74 ID:X5TalmgP.net
>>950
あれは酷いよな
結局Ruby2.3だと無理だったからRailsInstalleで入れたからRubyだけ2.2.5だわ
いまだによく分からん

952 :デフォルトの名無しさん:2016/09/27(火) 20:49:35.70 ID:FT4BHNA6.net
↓mingw版rubyのsqlite3はこのページのやり方で出来る。
http://masamitsu-murase.blogspot.jp/2013_05_01_archive.html

gem uninstall sqlite3でダメなやつを消しておくのを忘れずに

953 :デフォルトの名無しさん:2016/09/27(火) 23:56:19.00 ID:NSert0FA.net
sqlite3が原因だったようです。
教えてくれた人ありがとう、あなた達はエスパーだ。

954 :デフォルトの名無しさん:2016/09/28(水) 13:58:43.24 ID:5Dppgsl7.net
何か色々気になっちゃったから改めて色々試したらおかしな事になってたわ……
・環境
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などを打ち込んだ場合にはファイル群が生成される

なんでこんなに環境構築するのが面倒なんや……

955 :デフォルトの名無しさん:2016/09/28(水) 14:04:25.71 ID:LrnfCbIH.net
パスが通ってないのか

956 :デフォルトの名無しさん:2016/09/28(水) 15:16:47.47 ID:5Dppgsl7.net
>>955
パスを通すっていうのは分かるんだけど、どこのパスを通せば良いのか分からん……
gitのsh.exeがあるフォルダのパスを環境変数のPathに入れてみたけどダメだし

957 :デフォルトの名無しさん:2016/09/28(水) 15:24:18.75 ID:LrnfCbIH.net
command not found はsh.exeが出してるんだから、rails に通さないと

958 :デフォルトの名無しさん:2016/09/28(水) 15:31:37.09 ID:LrnfCbIH.net
Windowsだといろいろめんどくさそうね
ちょっとやってみるかなあ

Windows7にRailsInstaller、AptanaStudio3をインストールして、Herokuにデプロイ
http://twosquirrel.mints.ne.jp/?p=4449

959 :デフォルトの名無しさん:2016/09/28(水) 16:01:25.93 ID:5Dppgsl7.net
>>957
ありがとうー、やっと出来た
C:\Users\(ユーザー名)\.rbenv-win\versions\2.2.5-x64\bin;
を環境変数Pathに入れたらやっと認識してくれた
これでかなり便利になった

960 :デフォルトの名無しさん:2016/09/28(水) 17:05:40.29 ID:5Dppgsl7.net
ついでにやっとこさruby-debug-ideがインストールできた!
ずっとインストールしようとするとエラー出てたけど、やっと原因が分かったわ
俺みたいにやらかした人が居るかもしれんし、書いておくわ

・原因
インストールしたRubyフォルダを別の場所に移動させる
・起きる現状
Debkitのパスが通らなくなり、一部のgem画インストールできなくなる
・解決作
Devkitのconfig.yml(これは調べるとすぐ出てくる)
C:\〜\2.2.4-x86\lib\ruby\site_rubyにある
devkit.rbを開いて、ここに書いてあるPATHも直す
この両方をやるとインストールできたわ
前者は色々書いてあったけど、後ろのやつはどこにも書いてなかったわ

961 :デフォルトの名無しさん:2016/09/28(水) 17:35:29.75 ID:0twLS1po.net
Devkitのwikiページに書いてあるんだよなぁ
Devkitを再インストールする時は--forceオプション使って
ruby dk.rb install --force
にしろって

962 :デフォルトの名無しさん:2016/09/28(水) 19:45:58.68 ID:gV6SXq7T.net
なんでみんなWindowsは鬼門だと分かってて手をだすのだろうか
VM 立てる手間の方がはるかに小さいというのに

963 :デフォルトの名無しさん:2016/09/28(水) 20:56:56.38 ID:xWtP4xm9.net
構築済みのVMイメージどこかにないかな

964 :デフォルトの名無しさん:2016/09/28(水) 21:04:25.58 ID:uPu5A795.net
Linuxなら構築クソ簡単だからそんなもん要らんよ
いかにWinが時間の無駄だったか痛感することになる

965 :デフォルトの名無しさん:2016/09/28(水) 21:14:26.77 ID:YWcJ1Auf.net
Queue#popでNo live threads left. Deadlock? (fatal)
が頻発するんですがググっても原因が良く判りません
何がどうなるとこれが出るんでしょうか?

966 :デフォルトの名無しさん:2016/09/28(水) 21:25:09.93 ID:0twLS1po.net
>キューが空の時、呼出元のスレッドは停止します。
スレッドまだ作ってないor他のスレッド動いてないのにpop呼ぶと死ぬ

967 :デフォルトの名無しさん:2016/09/28(水) 21:34:14.07 ID:gV6SXq7T.net
>>964
マジアホらしいほど簡単だもんな

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

何か足りなかったとしても apt-get なり yum なりでパッケージ追加するだけでほとんどは
解決という

968 :デフォルトの名無しさん:2016/09/28(水) 22:21:57.22 ID:YWcJ1Auf.net
>>966
ありがとう。えぇぇ・・・なんつう仕様なんだ。使いにくいだろ
書き込み側のスレッドは読み出し側のスレッドの仕事が終わるまで
生きていなきゃいけないってことじゃないか。めんどくせぇ・・・

969 :デフォルトの名無しさん:2016/09/28(水) 22:32:46.99 ID:gV6SXq7T.net
>>968
> 書き込み側のスレッドは読み出し側のスレッドの仕事が終わるまで
> 生きていなきゃいけないってことじゃないか。めんどくせぇ・・・

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

書き込み側のスレッドがなくなってしまったら、読み出し側のスレッドがブロックしたときに
もうそこから復帰する手段がなくなるんだから

970 :デフォルトの名無しさん:2016/09/28(水) 22:53:24.25 ID:YWcJ1Auf.net
個人的には便利そうで使えない・・・
ダブルバッファのほうが速いし制約も少ない。書き込み側スレッドは仕事が終われば終了しちゃっても問題ないし

971 :デフォルトの名無しさん:2016/09/29(木) 01:23:02.71 ID:sOqcQCOx.net
linux って真っ黒の画面でよくわからないイメージあるんじゃ

972 :デフォルトの名無しさん:2016/09/29(木) 06:05:14.02 ID:Xh0zax2W.net
Windowsであっても黒い画面が出す英語のエラーメッセージに悪戦苦闘するんだからたいして変わらん
えっWindowsではIDE使う?あらそう

プログラミングに興味ある人の統計的にはLinuxも「できる」→「面白い」「便利」になる割合が高いので試す価値はあるとは思う
WindowsでRubyするのが無駄遠回りとわかるためには知識経験が別途要るのも事実なので最初から無理強いはせんがね

973 :デフォルトの名無しさん:2016/09/29(木) 06:58:53.52 ID:1Mz/tgYS.net
いったんLinuxでのやり方を覚えたら以後はローカルでの開発ですら間違いなく二度とWinなんか使わなくなる
少なくともRailsやるんなら絶対にLinuxは避けて通れないんだから、どう考えても時間の無駄だな

974 :デフォルトの名無しさん:2016/09/29(木) 07:23:11.12 ID:ZpUMfWKu.net
脳内で喚いて窓叩きに使ってるだけの一部の精神障害の人を除いて
みんな実際に数ヶ月くらいWindowsで環境整えようとして四苦八苦した結果「やっぱ無駄だわ」という結論になってるので
できればそのへん考慮して立ち止まってくれると幸いではある
あなたより技術があったり経験があったり時間だけはたっぷりあったりする人たちが常用挫折してるのでそのへんを汲んでもらうとw

975 :デフォルトの名無しさん:2016/09/29(木) 07:55:18.21 ID:PwoKthPB.net
しかしLinuxしかできない奴が有能かというと・・・

976 :デフォルトの名無しさん:2016/09/29(木) 08:02:22.78 ID:1Mz/tgYS.net
残念だがMatzはWindowsを全然使ってないことで知られている

977 :デフォルトの名無しさん:2016/09/29(木) 22:28:04.17 ID:4TiY9tFk.net
>>975
んな奴いねーよ
Windowsしか使えない奴やVisualStudioしか使えない奴ならいるがな

978 :デフォルトの名無しさん:2016/09/30(金) 00:15:46.69 ID:88GOzilz.net
Linux API を、Windows API に変換するので、Ubuntu64 のバイナリがそのまま動く、
Windows Subsystem for Linux (WSL) で、Ruby, Rails をやっている人いる? 調子はどう?

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

日本語も使える端末、ConEmu。
GUI表示用のXサーバー、Xming X Server for Windows

979 :デフォルトの名無しさん:2016/09/30(金) 17:02:44.30 ID:8cA8SzFR.net
>>977
Linuxしか使えない香具師はいる
コマンドプロンプトで cp hoge fuga とかやって
???になってるひとを見たことがある

980 :デフォルトの名無しさん:2016/09/30(金) 20:23:55.60 ID:dFgkaxUg.net
>>979
さすがにこれだけWindows機がはびこってる状況でそれはちょっと考えにくいなぁ

と言いたいところだけど、最近はMacもそれなりにユーザがいるので、そっちかもしれない
macOSはLinuxにかなり似てるからね(別物といえば別物なんだけど)

981 :デフォルトの名無しさん:2016/09/30(金) 21:02:39.15 ID:4hxo3I+i.net
俺もWinはさっぱりだなあ
さすがに世間一般の基準でいえば相当詳しい部類に入るだろうけど、
ADやれとかサーバー作れとかバッチファイル書けとか言われたら全くわからん

982 :デフォルトの名無しさん:2016/10/01(土) 01:46:14.99 ID:mk3uechM.net
windowsでrubyは良いぞ
何が良いのかって?
それは、windowsでrubyを動かすのが良いんだろ

というかwindowsでのrubyのHowto本、もしくは解説本がでればこの楽しさをわかる人がもっと増えると思うんだけどな
技術評論社やオーム社といった、技術系出版社あたりが出してくれれば

983 :デフォルトの名無しさん:2016/10/01(土) 01:47:56.65 ID:HPdYXbOV.net
その楽しさを書けよ
意味わからん

984 :デフォルトの名無しさん:2016/10/01(土) 02:15:08.76 ID:bGyuSNJm.net
エクセルが操作できる
業務が捗る

985 :デフォルトの名無しさん:2016/10/01(土) 02:18:33.94 ID:zpy+n7k9.net
IronRubyが生きてたらまだしも

986 :デフォルトの名無しさん:2016/10/01(土) 03:22:58.95 ID:KyDhnGoE.net
現在のOSシェアトップはLinuxじゃないのか?情弱ばかりだけど

987 :デフォルトの名無しさん:2016/10/01(土) 05:11:52.16 ID:WpTrCWkX.net
Linuxがトップはありえない

988 :デフォルトの名無しさん:2016/10/01(土) 10:42:36.04 ID:rAdXsmVI.net
Rubyの動作環境としては開発者の数も生み出す金も圧倒的にLinuxがシェアトップでしょ

989 :デフォルトの名無しさん:2016/10/01(土) 14:31:24.74 ID:HPdYXbOV.net
シェアのグラフなかったっけ?

990 :デフォルトの名無しさん:2016/10/01(土) 15:04:25.52 ID:AS9zp3Ka.net
Linuxがぶっちぎりでトップだろ

991 :デフォルトの名無しさん:2016/10/01(土) 15:46:42.68 ID:O8RQcCl8.net
クライアントOSのシェアとしてはLinuxは底辺だけど、開発者用としてはそこそこ行ってる印象

992 :デフォルトの名無しさん:2016/10/01(土) 16:50:18.79 ID:mk3uechM.net
windows上のrubyのハック本をどこか出してくれないかな

993 :デフォルトの名無しさん:2016/10/01(土) 16:51:45.55 ID:WpTrCWkX.net
982は開発者以外も含んだユーザー全体のことかと思ってた

994 :デフォルトの名無しさん:2016/10/01(土) 17:10:34.16 ID:rAdXsmVI.net
>>992
能力のある人は結局UNIXに行っちゃうから難しいだろうね
もちろん987自身も例外ではなく、このままRubyを続けていればいずれ確実にその日が来る
今は信じられないかもしれないが、Rubyはそういうもんだ

995 :デフォルトの名無しさん:2016/10/01(土) 19:04:58.42 ID:cITK0T7f.net
rubyスレってwindowsがどうのこうの言い続けてるアホが住み着いてるけど
ずーと何の役にも立たねえな

996 :デフォルトの名無しさん:2016/10/01(土) 20:55:59.75 ID:2D+fRjVU.net
 ずーり     T       T
  ずーり  ,/´ ̄``:ヽ, ,/´ ̄``:ヽ,
        /××× :::::::/××× ::::ヽ
        |∀・ ×× :::::||∀・ ×× :::::|    サァ アキラメロン!
     T  ヽ××× ::::/ ヽ××× ::::/   T   o
  ,/´ ̄``:ヽ, '''''''''''''´´  `'''''''''''''´´ /´ ̄``:ヽ,
  /××× ::::ヽ     ヒ、ヒィー    /      ::::ヽ
  |×・∀・ × :::|    ('A`≡'A`)   |       ::::|
  ヽ××× ::::/  T  人ヘ )ヘ T ヽ      ::::::/
   `'''''''''''´´'/´´ ̄`:ヽ,  ./´´ ̄`:ヽ,`'''''''''''''´´
        /  ××ゝ::ヽ./  ××ゝ::ヽ
 ずーり   |   ×× ・∀||   ×× ・∀|
        ヽ  ××ゝ::/ヽ  ××ゝ::/  ずーり

997 :デフォルトの名無しさん:2016/10/02(日) 05:55:02.87 ID:kFeo4TbM.net
なんか変なのが沸いてるなと思ったらlinux以外認めない自演厨か
ID変えて書き込んでも構わないが火病だけはやめとけ

それと、rubyのホビー的な楽しさを否定する意図は何なんだろうな?

998 :デフォルトの名無しさん:2016/10/02(日) 07:07:11.59 ID:JfqyOTuc.net
すまん
本当はLinux以外のRubyを知らなかっただけなんだ
別にRubyの楽しさを否定したいわけじゃない
あらためて考えるとCで書かれているわけだからLinux以外でもRubyを楽しめるんだよな
Win32OLEライブラリだってわざわざ用意されているわけだし

999 :デフォルトの名無しさん:2016/10/02(日) 07:50:59.20 ID:+f7TOXbf.net
導入で苦労するのは一部の特殊な性嗜好の人を除けば楽しさ以前の問題だろう
WindowsでUbuntuが動くようになったからだいぶ希望が出てきたけど、
そっちが主流になれば昔ながらのネイティブなWindows版Rubyはとうとう完全終了でUNIXに統一されちゃうわけだし

1000 :デフォルトの名無しさん:2016/10/02(日) 08:29:55.68 ID:kFeo4TbM.net
>>998
そうだったのか
俺はてっきりrubyが気に喰わなくて荒らしてるんだと思った
スレ住人を装って扇動したり荒らしたりする手口とか、またいつものpython野郎かと勘違いしたよ
あいつはwindows用rubyを絶対認めたがらない癖があるから

1001 :デフォルトの名無しさん:2016/10/02(日) 09:00:52.33 ID:UOjgrslt.net
WindowsでRubyは認めるがWindowsでRailsはやめとけと言わざるをえない
トラップが多すぎる

1002 :デフォルトの名無しさん:2016/10/02(日) 10:05:31.62 ID:k1HK9CGy.net
>>1001
vagrantが楽。

1003 :デフォルトの名無しさん:2016/10/02(日) 10:14:32.30 ID:UOjgrslt.net
>>1002
Windows で vagrant 自体がトラップという…
シンボリックリンクの扱いや改行コードの違いなど、そこかしこに罠があるぞw

1004 :デフォルトの名無しさん:2016/10/02(日) 15:21:32.45 ID:GX41vvMR.net
>>982 >>984
そういう用途なら
pythonの方がいいよ
割とマジで

1005 :デフォルトの名無しさん:2016/10/02(日) 15:22:16.56 ID:GX41vvMR.net

http://echo.2ch.net/test/read.cgi/tech/1249737531/

総レス数 1005
291 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★