Ruby 初心者スレッド Part 53

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
RoRはスレ違いよ

前スレ
Ruby 初心者スレッド Part 52
http://toro.2ch.net/test/read.cgi/tech/1370530209/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
2デフォルトの名無しさん:2013/11/06(水) 23:19:23.87
イチオツ
3デフォルトの名無しさん:2013/11/06(水) 23:21:12.73
>>1
4デフォルトの名無しさん:2013/11/07(木) 07:50:07.68
>>1乙ジェクト指向
5デフォルトの名無しさん:2013/11/07(木) 21:03:53.94
webrickでhttpサーバ(UI)を組んで、そこに表示される内容をtkで組んだGUIで
変更するにはどうすればいいのでしょうか?
具体的に言うと、「webrickのstartとtkのmainloopを同時に実行して、お互いに
同じデータを共有する1つのプログラムを組みたい」です
キーワードかヒントをお願いします
6デフォルトの名無しさん:2013/11/07(木) 21:12:49.62
(1) WeBrickでHTTPサーバを立て、ネットワークを介して
 Xxx/TkによるHTTPクライアントからアクセスしたいのか、それとも
(2) WeBrickでHTTPサーバを立て、その運用操作(起動/停止/設定など)の
 UIをRuby/Tkで実現したいのか、
(3) その他

どれよ?
7デフォルトの名無しさん:2013/11/07(木) 21:22:31.84
環境 Windows8

コマンド入力画面が、ズレて表示されてます。
助けておくんなせえ。
8デフォルトの名無しさん:2013/11/07(木) 21:27:07.87
>>7
それじゃさっぱりわかんない
再現手順を書くかスクリーンショットでも撮って貼っておくれやす
9デフォルトの名無しさん:2013/11/07(木) 21:57:52.06
>>6
今のところ(2)の方で考えています

(1)でHTTPサーバ経由で運用操作できる機能を付けるって方法も
あるのか、普通はその方がリモート操作も含め応用利きそうですね
運用操作時はSSLにすれば安心だし
10デフォルトの名無しさん:2013/11/07(木) 23:11:39.88
>>9
案(2)の基本的な流れ
(a) 起動したメインスレッド様々な初期化(設定ファイル読み込み等)
(b) メインスレッドでWeBrick向けのマスタスレッドを1個生成
(c) Ruby/Tkのウィジェットを組み立て、ループに入る
(d) (b)で生成されたマスタスレッドでWeBrickを起動(start)しループに入る
 この後、HTTPリクエストを受け付けるたびにスレーブスレッドが生成される

スレッド構成を以下にまとめる:
・メインスレッド(1個):Ruby/Tkのメインループ
・マスタスレッド(1個):WeBrickのメインループ
・ワーカスレッド(n個):HTTPリクエスト処理

課題はいくつかあるけど、最も重要なのが>>5にもある「共有データ」の排他制御
・間違っても、ワーカスレッドから直に(メインスレッドが管理する)Ruby/Tkの
 ウィジェットに描画操作をしてはいけない
・ワーカスレッドで発生した描画イベントは、必ずスレッドセーフな共有オブジェクトに
 書き込み、それをメインスレッドで読み取って描画するように設計する
・メインスレッドでは、Tkの提供するタイマ機能を利用して、定期的に
 共有オブジェクトへの追記の有無を確認する(いわゆる「ポーリングをかける」)
11デフォルトの名無しさん:2013/11/08(金) 21:19:44.31
今日gem update --systemってやったら
gem SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
って表示されるようになってアップデートもパッケージのインストールもなにもできません
昨日まではできてて設定とかなんもいじってないです
今日急につながらなくなりました
対策教えてください
12デフォルトの名無しさん:2013/11/08(金) 21:21:54.81
エラーの全文を張ります
Updating rubygems-update
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certif
icate verify failed (https://rubygems.global.ssl.fastly.net/gems/rubygems-update
-2.1.10.gem)

WindowsのRubyInstaller2.0.3を使ってます
13デフォルトの名無しさん:2013/11/08(金) 21:29:09.31
なんか調べたらSSL証明書のバグっぽいですね
14デフォルトの名無しさん:2013/11/09(土) 08:14:50.31
>>10
Ruby/Tkのメインループスレッド外のスレッドからの処理依頼は
自動的にメインループスレッドに送ってシリアライズして実行するように裏で管理してるはず。
依頼した側のスレッドは、Ruby/Tkの処理完了まで待ちに入って結果を受け取る仕組み。
でなきゃ、irbでThread.new{Tk.mainloop}してインタラクティブにウィジェット操作なんてできない。
んなわけで、描画操作についてはスレッドセーフなはずなので、
ワーカスレッドから直に呼んでも問題ないし、ポーリングのような面倒な手間も不要じゃないかな?

共有データがどんなものでどんな処理が必要なのかは知らないけど、
処理時間がかからないものなら、TkVariable#traceの他、色々とあるコールバック処理を使って
Ruby/Tkのメインループスレッドに処理を任せるって手もあるかも。
排他制御を考える必要がなくなる分、少し楽ができるかもしれないけど、
時間がかかる処理だとGUIの反応が鈍くなるかもしれない点は要注意かな。
必要時以外はGUIを非表示にしておいて共有データ処理に専念させ、
GUI反応が鈍るのを隠すというのも一つの考えかもしれないね。
15デフォルトの名無しさん:2013/11/10(日) 12:17:20.44
標準時+2の日時を表示したくて

require 'date'
d = DateTime.now
d2 = d.new_offset(2)
p d2.to_s

って書いてみたんですが、UTCの時刻が表示されてしまいます
どうやって書くと良いか教えてください
16デフォルトの名無しさん:2013/11/10(日) 12:52:10.63
*[1,2,3]
配列にくっついてる*は何を意味してるんですか
名前を教えてください
17デフォルトの名無しさん:2013/11/10(日) 14:10:45.86
名前は特に無いんじゃないかな?
↓の「最後の引数の直前に〜」ってところを参照。
ttp://docs.ruby-lang.org/ja/2.0.0/doc/spec=2fcall.html

関連して、メソッド定義の方 (可変長引数、rest 引数) も見ておくと良いと思われ。
↓の「仮引数の直前に〜」ってところを参照。
ttp://docs.ruby-lang.org/ja/2.0.0/doc/spec=2fdef.html#method
18デフォルトの名無しさん:2013/11/10(日) 14:15:02.06
>>15

日本時間の DateTime なら offset で 3/8(=9/24) が返ってくるよね。
ドキュメントには明示されていなかったような気がするがRationalなのだ。

d2 = d.new_offset(Rational(2, 24))

>>16

リテラルで言うと、 1,2,3 と書いたのと同じ扱いになる。
メソッドに引数を渡すときや、多重代入で使う。

ymd = [2013, 11, 10]
Date.new(ymd) => # エラー
Date.new(*ymd) => Date:2007-01-01

正式名称はないが、よく splat 演算子と呼ばれている。
19デフォルトの名無しさん:2013/11/10(日) 15:02:45.94
a.txtをa/b/a.txtに移動したくて
File.rename('a.txt', 'a/b/a.txt')
ってやってもFile.renameは再帰的に動作しないから例外が発生します
FileUtils.mkdir_pはディレクトリを再帰的に作れますがファイルを移動するわけでもないので用途が違います
こういう場合はどうやるのですか?
20デフォルトの名無しさん:2013/11/10(日) 15:42:13.44
>>15
なんかよくわからんが文字列なら通った
d2 = d.new_offset("+2")

>>18
「こんなこともあろうかと、2.1では有理数リテラルを用意しておいた」
か、どうかは知らないが
d2 = d.new_offset(2/24r)
で通った(要Ruby 2.1以上)

offsetがなんでRationalで返ってくるんだろう
これは、ドキュメントが悪いよなぁ
と、ri DateTime#new_offset してみたら
使用例では引数が文字列なのであった
------------------------------------------------------------------------------
d.new_offset([offset=0]) -> date

------------------------------------------------------------------------------

Duplicates self and resets its offset.

d = DateTime.new(2001,2,3,4,5,6,'-02:00')
#=> #<DateTime: 2001-02-03T04:05:06-02:00 ...>
d.new_offset('+09:00') #=> #<DateTime: 2001-02-03T15:05:06+09:00 ...>
21デフォルトの名無しさん:2013/11/10(日) 16:35:49.79
Ruby2.0を使ってるんですけど
Dir.globとかDir::globって二種類の書き方があるんですけど
.と::どちらに合わせて書けばいいのでしょうか?
22デフォルトの名無しさん:2013/11/10(日) 16:56:18.66
>>19

ディレクトリ掘ってから移動するしかないんじゃない?

FileUtils.mkdir_p File.dirname(dst)
File.rename(src, dst)

再帰的にやる機能があるmkdir_pのほうが特殊といえば特殊。

基本的に、 unixの同名シェルコマンドを越える機能は再現してないと思う。

>>21

:: は C++ プログラマなどに馴染みがある記法でも使えるように
配慮してあるだけで、通常は . を使う。

要するに Dir オブジェクト(Classクラスのインスタンス)に対する
メソッド呼び出しなのだから。
23デフォルトの名無しさん:2013/11/10(日) 17:38:18.82
>>22
なるほど、勉強になりました
24デフォルトの名無しさん:2013/11/11(月) 19:54:41.70
splat演算子とか知らなんだ
リファレンスもっかい読みなおそう
25デフォルトの名無しさん:2013/11/13(水) 16:56:51.43
この度Rubyを始めようかと思いましたが、
バージョンってどれが良いんでしょう?
1.8xや1.9xが現役の環境も多いみたいなのですが…
26デフォルトの名無しさん:2013/11/13(水) 17:01:59.11
おれもはじめたばかりだけどさ2.0からでいいよ
1.8はもう切り捨てられてるから覚えるだけ無駄
1.9やるなら2.0でも同じだし2.0のほうがいいよ
それに覚えたところですぐそれを仕事にするってわけじゃないならなおさら2.0からはじめるべきですよ
2.1もでるしね
27デフォルトの名無しさん:2013/11/13(水) 17:47:54.07
有難う。
じゃあ2.0をインスコしてくるか…
28デフォルトの名無しさん:2013/11/14(木) 01:41:10.74
rbenv使って複数バージョンを共存させるのがトレンド
29デフォルトの名無しさん:2013/11/14(木) 12:43:49.51
WindowsのRubyInstallerのGemのSSLがおかしいんで
Gemだけ手動で入れなおしたいんですが
Gemってどこにありますか?
30デフォルトの名無しさん:2013/11/14(木) 13:22:48.56
31デフォルトの名無しさん:2013/11/14(木) 15:45:40.34
いま入ってるバージョンが2.1.9なんですが
リンク先のバージョンは1.8.25って書いてありますがこれgemのことでしょうか?
とにかSSLエラーでupdateすらできない状態です
32デフォルトの名無しさん:2013/11/14(木) 15:50:20.98
OpenSSL 入れてないとか
33デフォルトの名無しさん:2013/11/14(木) 15:53:55.47
ああすいませんrubygems.orgのほうにダウンロードファイルがおいてありました
これを入れたらupdateすることができました
これでようやくWindowsでもgemが使えました
34デフォルトの名無しさん:2013/11/14(木) 15:55:44.51
いまRubyInstallerに置いてあるバージョンに含まれるgemにはSSLの鍵に関する参照先が固定されているようなのでバグがあります
なのでrubygems.orgからgemをダウンロードしてruby setup.rbすると新しいgemが入るのでそれで直ります
35デフォルトの名無しさん:2013/11/14(木) 16:43:43.82
c:\usr\local\ssl に *.cnf をコピーするだけでよかったのに
36デフォルトの名無しさん:2013/11/14(木) 17:18:49.18
それじゃ動かない
ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE'

"C:/Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows/op
enssl/1.0.0k/ssl/cert.pem"

gemにこのパスが埋め込まれてるから
37デフォルトの名無しさん:2013/11/14(木) 17:53:06.04
死ねバカwwwwwwwwwwwwwwwwwwwwwwww

死ねwwwwwwwwwwwwwwwwwwwwwwww


死ねwwwwwwwwwwwwwwwwwwwwwwww


死ねwwwwwwwwwwwwwwwwwwwwwwww

ゴミwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

ゴミゴミゴミwwwwwwwwwwwwゴミゴミゴミwwwwwwwwwwww

ゴミwwwwwwwwwwwwゴミゴミゴミwwwwwwwwwwwwwwwwww
死ねゴミwwwwwwwwwwwwwwwwwwwwwwwwコラwwwwwwwwwwww
死ねコラゴミwwwwwwwwwwwwwwwwww
38デフォルトの名無しさん:2013/11/14(木) 23:31:43.47
一行ずつ読み込んでは処理するスクリプトで、高速化のためにぜんぶ
最初に配列に読み込むとするじゃないですか? で、

f=File.open(hoge.txt)
f.each |line| do
word[i] = line
i = i+1
end

とかしますよね。でもなんか配列で添字をいちいち1足したりするのって
なんかカッコ悪いですよね。
もっとRubyっぽいかっちょいいやり方で代入できないんですか?
やっぱりいちいち添字を増やして行く原始人みたいなやり方しなきゃダメですか?
39デフォルトの名無しさん:2013/11/14(木) 23:34:21.83
readで読み込んでsplit
40デフォルトの名無しさん:2013/11/14(木) 23:47:27.24
lines = File.readlines("hoge.txt")
41デフォルトの名無しさん:2013/11/15(金) 00:14:45.30
lines = File.open("hoge.txt").each_line.to_a
42デフォルトの名無しさん:2013/11/15(金) 00:25:30.14
一行ずつ配列に追加するのは添え字使わずに word << line で。
43デフォルトの名無しさん:2013/11/15(金) 00:36:01.53
File.read("hoge.txt").split("\n")画最強
44デフォルトの名無しさん:2013/11/15(金) 00:36:33.45
>>39-43
ありがとうございます
45デフォルトの名無しさん:2013/11/15(金) 00:42:55.87
>>41
openしっぱなしはやめて
46デフォルトの名無しさん:2013/11/15(金) 00:55:27.68
>>43
"foo\n\n\n\n" みたいなデータだと、後ろの改行達が全て無くなってしまうからキモい。
4746:2013/11/15(金) 00:56:48.11
あ、改行達じゃなくて空行たち。
4846:2013/11/15(金) 00:58:44.05
あ、なので、自分なら File.read("hoge.txt").split(/^/) とするかな。
49デフォルトの名無しさん:2013/11/15(金) 01:10:06.18
Ruby神の俺からみるとまだまだ冗長なのばかりだな。
もっと精進せよ。
50デフォルトの名無しさん:2013/11/15(金) 01:48:13.76
>>48
それなら >>40でいいんじゃないの?
5146:2013/11/15(金) 02:09:39.84
>>50
もちろん。 >>43 みたいにするよりは >>48 の方にする、という話で。
52デフォルトの名無しさん:2013/11/15(金) 10:48:15.78
配列に入れるのに改行が含まれるのは気持ち悪い
53デフォルトの名無しさん:2013/11/15(金) 16:57:07.39
.map(:strip)
.map(:chomp)
54デフォルトの名無しさん:2013/11/15(金) 18:52:46.37
Windowsでコマンドプロンプトの表示幅を得るにはどうすればいいでしょうか
io/consoleやio/console/sizeはうまくいきませんでした
55デフォルトの名無しさん:2013/11/15(金) 20:31:18.81
chompって何て読むの? ちょんぷ?
56デフォルトの名無しさん:2013/11/15(金) 21:36:35.36
>>55

手元の辞書に /tʃɑmp|tʃɔmp/ とある。ちょんぷでいいんじゃね。
57デフォルトの名無しさん:2013/11/16(土) 11:29:49.97
http://www.ibm.com/developerworks/jp/data/library/db2/j_d-rubyxml/
ここの記事みてREXML使うべきか悩んでいるんですが
Ruby2.0になって改善されてませんかね?
58デフォルトの名無しさん:2013/11/16(土) 12:14:53.91
REXMLは他に何も入れたくないってときしか使わないなあ
nokogiriもあるし
59デフォルトの名無しさん:2013/11/16(土) 12:17:27.00
やっぱりRuby使ってる人はREXMLじゃなくてnokogiriをつかうのが慣習になっているんでしょうかね?
60デフォルトの名無しさん:2013/11/16(土) 13:20:56.46
XMLなんかには近寄らないというのが正しい
61デフォルトの名無しさん:2013/11/16(土) 13:34:00.09
漏れもそう思いかけた
62デフォルトの名無しさん:2013/11/16(土) 15:16:22.84
使って天国、作って地獄
63デフォルトの名無しさん:2013/11/16(土) 22:38:47.26
Rubって単体で動くExeファイル作れるの?
64デフォルトの名無しさん:2013/11/16(土) 23:02:47.92
バイナリファイルを読んで1byteずつの配列に格納したい。
このソースはもっと簡単になりますか?
a = []
open "hoge", "rb" do |f|
f.read(256).unpack "n128" do |i|
a.push i>>8
a.push i&0xff
end
end
p a
65デフォルトの名無しさん:2013/11/16(土) 23:11:23.59
>>64
buf.unpack("C*")
66デフォルトの名無しさん:2013/11/16(土) 23:37:13.28
a = IO.read("hoge.jpg").each_byte.to_a
p a
67デフォルトの名無しさん:2013/11/17(日) 00:15:05.74
buf.chars
68デフォルトの名無しさん:2013/11/17(日) 01:39:26.35
binread使おうよ…
69デフォルトの名無しさん:2013/11/17(日) 10:39:31.38
>>65>>66
byteで操作するメソッドがあったのですね。
もう少しがんばって探せばよかった。

>>67
2.0だとchars(とbytes)はobsoleteになってますね。

>>68
特異メソッドというのがよくわからないのでとりあえず保留してました。

勉強になりました。みなさんありがとう!
70デフォルトの名無しさん:2013/11/17(日) 13:11:48.59
>>63
ocraで作れる
71デフォルトの名無しさん:2013/11/17(日) 13:19:23.29
オクラととろろご飯食べたい
72デフォルトの名無しさん:2013/11/17(日) 14:30:47.43
test
73デフォルトの名無しさん:2013/11/17(日) 22:13:39.75
>>67
obsoleteはブロック指定時
74デフォルトの名無しさん:2013/11/17(日) 23:45:21.68
そもそも、 bytes はともかく chars だとバイト単位にならないので論外だがな。
75デフォルトの名無しさん:2013/11/18(月) 00:51:52.15
>>54
mode conとか呼び出してみるのはどうだろう
`mode con`.each_line.to_a[4][/\d+/].to_i
76デフォルトの名無しさん:2013/11/18(月) 17:52:48.71
>>75
できました!ありがとうございます
77デフォルトの名無しさん:2013/11/19(火) 00:47:33.07
RubyでCやJavaのvolatile相当のモノってありますか?
78デフォルトの名無しさん:2013/11/19(火) 08:33:21.65
>>77
死ねゴミw
79デフォルトの名無しさん:2013/11/19(火) 10:27:43.14
>>77
Rubyはコンパイル言語ではないのでCの様に最適化抑制は必要ないです
もう一つはCの様にプリミティブ型が無いので、全てのオブジェクトは内部的にはヒープ領域で確保した構造体がレシーバーとなり処理をしてると思います。そのため処理はアトミック(遅延代入などない)なことが保証される。
上記2点よりRubyではvolatileは仕様上必要ないのだと思います。

>>78
ちゃんとした説明もせず暴言を吐くのはやめましょうよ
80デフォルトの名無しさん:2013/11/19(火) 10:54:42.09
>もう一つはCの様にプリミティブ型が無いので、全てのオブジェクトは内部的にはヒープ領域で確保

Fixnum とか FixedInt ってもうなくなったんだっけ
81デフォルトの名無しさん:2013/11/19(火) 11:23:58.94
Fixnumもオブジェクト
82デフォルトの名無しさん:2013/11/19(火) 12:12:07.28
通常はスタックには参照だけ置いてヒープにはオブジェクトを置くけど
Fixnum など小さいオブジェクト関しては参照に埋めこまれるのでヒープには置かれないと思うよ
83デフォルトの名無しさん:2013/11/19(火) 17:39:11.24
Ruby2.0以降の64bit版だと
Floatの一部も埋め込まれる
84デフォルトの名無しさん:2013/11/19(火) 22:07:33.28
そういえば、flonum導入で一部のobject_idが変わったな。

>> nil.object_id
=> 8
85デフォルトの名無しさん:2013/11/19(火) 23:54:27.68
redmine2.3.xから2.4.0にアップグレードしたらログインできなくなった
なぜか?
86デフォルトの名無しさん:2013/11/20(水) 02:52:48.15
死ねバカwwwwwwwwwwwwwwwwwwwwwwww

死ねwwwwwwwwwwwwwwwwwwwwwwww


死ねwwwwwwwwwwwwwwwwwwwwwwww


死ねwwwwwwwwwwwwwwwwwwwwwwww

ゴミwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

ゴミゴミゴミwwwwwwwwwwwwゴミゴミゴミwwwwwwwwwwww

ゴミwwwwwwwwwwwwゴミゴミゴミwwwwwwwwwwwwwwwwww
死ねゴミwwwwwwwwwwwwwwwwwwwwwwwwコラwwwwwwwwwwww
死ねコラゴミwwwwwwwwwwwwwwwwww
87デフォルトの名無しさん:2013/11/20(水) 03:06:36.71
>>85
まずはCookieを消してみるとか。
88デフォルトの名無しさん:2013/11/20(水) 10:06:48.54
redmine専用スレってなかったっけ
89デフォルトの名無しさん:2013/11/20(水) 16:56:30.00
質問です。

コマンドラインで設定したパラメータって配列に分解されてARGVに格納されますが、
文字列を、この仕組みで配列変数に変換する、何かうまいやり方ってありますでしょうか?

例えば、
str = "test1 test2 'test3 test4'"
これを、
strv = ["test1", "test2", "test3 test4"]
このようにしたいです( ' や " を考慮して配列に変換したいです)
90デフォルトの名無しさん:2013/11/20(水) 16:59:14.11
ruby a.rb 1 "2 3"
p ARGV
# ["1", "2 3"]
9189:2013/11/20(水) 17:23:02.18
>90

コマンドライン文字列がARGVに変換されるのと同じ仕組みを
rubyで実現したい、という意味です。
str.split(/\s+/) だと、' や " で囲まれた部分にスペースがあった際に、
期待する結果とならず、頭をひねっているところです…
92デフォルトの名無しさん:2013/11/20(水) 17:41:52.88
require "shellwords"
'a.rb 1 "2 3"'.shellsplit # => ["a.rb", "1", "2 3"]

クォートのバランスが取れてないと例外が出るので注意
'a "b'.shellsplit # => Unmatched double quote: "a \"b" (ArgumentError)

こんなライブラリあったのね
知らなかった
9389:2013/11/20(水) 19:29:23.91
>>92
ありがとうございます!
自分の力では、このライブラリを見つけれなかったです…
大変助かりました。
94デフォルトの名無しさん:2013/11/20(水) 20:19:08.17
>>92
CSVを読み込むのにも似てると思ったけど、それはそれであるんだね。
95デフォルトの名無しさん:2013/11/20(水) 22:59:38.27
shelljoinで、コマンドライン文字列を組み立てる方にも使える。
96デフォルトの名無しさん:2013/11/22(金) 17:17:21.84
「初めてのRuby」読み辛い
わかってる人がわかってる人に向けて書いてる感じで
何であんなに尼の評価高いの?
97デフォルトの名無しさん:2013/11/22(金) 17:18:32.25
自作jっうっ、ぐふっ・・・
98デフォルトの名無しさん:2013/11/22(金) 17:53:18.95
>>96
評価してるのが「判ってる人達」だからじゃね?
99デフォルトの名無しさん:2013/11/22(金) 18:05:20.77
尼のレビューを見る限り「プログラミング経験者かつある程度Rubyを知ってる人にはオススメ」って感じだから
それでいいんじゃないの?


いや読んだことないんだけどさ
ちょっと古いけど、今でも充分通じる?
100デフォルトの名無しさん:2013/11/22(金) 18:11:08.47
入門者には RHG が良いよ
101デフォルトの名無しさん:2013/11/22(金) 18:25:03.50
Rubyの勉強というよりはC言語の勉強ですよね?
102デフォルトの名無しさん:2013/11/22(金) 19:27:05.79
なにが?
103デフォルトの名無しさん:2013/11/22(金) 21:18:18.83
lambdaとか黒魔術の説明はほとんどないけど基本的なところはあらかた網羅されてるよ
十分良本の部類に入ると思う
104デフォルトの名無しさん:2013/11/22(金) 22:07:57.06
4版ってmix-inの説明がなくなってたな
105デフォルトの名無しさん:2013/11/22(金) 22:23:37.89
>>96

"本書は、他言語でのプログラミング経験を持つ人を対象に、
Rubyの特徴、Rubyならではの方法や慣習について解説します。"
http://www.oreilly.co.jp/books/9784873113678/
106デフォルトの名無しさん:2013/11/22(金) 22:25:46.85
初めての
なんてつけるから紛らわしいんだよ
107デフォルトの名無しさん:2013/11/22(金) 22:27:10.42
「他の言語経験があるがRubyは初めて」という意味には取れないよな。
108デフォルトの名無しさん:2013/11/22(金) 22:32:59.43
対象読者は本買う前にチェックすべき項目のひとつ
チェックせずに自分に合わなくても文句は言えないだろう
109デフォルトの名無しさん:2013/11/22(金) 22:55:53.76
「Rubyは初めて」というタイトルならよかった。
110デフォルトの名無しさん:2013/11/22(金) 23:04:00.02
でもまあ初心者が挫折しやすい本だから別にいいと思うよ
挫折したらもうRubyに関わろうとせんでしょ
11196:2013/11/22(金) 23:04:43.41
他言語の経験は一応あるぞ?
それでもなお読み辛いってだけで
112デフォルトの名無しさん:2013/11/23(土) 00:16:18.32
よく出てくる顔のデカい女何なの?
113デフォルトの名無しさん:2013/11/23(土) 04:51:43.66
PHPerです。

たのしいRuby→パーフェクトRuby

の順に勉強するのがベストですか?
114デフォルトの名無しさん:2013/11/23(土) 05:41:40.29
Rubyには初心者用の本が全然ない
たのしいRubyが一番初心者向けとは言われてるけど
結局Ruby熟練者が初心者目線で書こうとして
子供だましの説明に終始しててお茶を濁してる感じ
115デフォルトの名無しさん:2013/11/23(土) 05:59:25.52
pythonとかphpやってろってことじゃないの。
116デフォルトの名無しさん:2013/11/23(土) 06:58:41.40
117デフォルトの名無しさん:2013/11/23(土) 08:55:42.63
>>109
本のタイトルは出版社が勝手に(売れそうなタイトルを)付ける、というのが出版業界のコレまでの常識。
118デフォルトの名無しさん:2013/11/23(土) 12:32:02.83
初めてのRubyの作者の自演宣伝うぜえよ
119デフォルトの名無しさん:2013/11/23(土) 12:32:06.52
他言語経験者なら
Ruby言語ミニマム→RubyAssociationのチュートリアルとか?
オブジェクト指向がわからないなら「オブジェクト指向でなぜつくるのか」
PythonとCommonLispの経験があればかなり楽そう
120デフォルトの名無しさん:2013/11/23(土) 12:32:34.71
>>96==>>113==116
業者の宣伝4ねよ
121デフォルトの名無しさん:2013/11/23(土) 15:01:20.77
何を見ても宣伝にしか見えない奴は嫌儲にこもってろ。出てくるな
122デフォルトの名無しさん:2013/11/23(土) 15:15:15.62
宣伝がバレたら暴言か
たまげたぜ
123デフォルトの名無しさん:2013/11/23(土) 16:16:17.04
Cでゴリゴリ書いてた人、
Javaでバリバリ設計してた人、
VBでペタペタ貼りつけてた人、
他言語経験者でひと括りにするのは無理があるんじゃないか。
124デフォルトの名無しさん:2013/11/23(土) 16:37:56.42
Ruby2.0とSqliteかMySQLでサイトを作れるようになりたいと思っています。

SinatraとPadrinoの違いがよくわからないのですが、どう違うのでしょうか?
125デフォルトの名無しさん:2013/11/23(土) 16:45:09.10
まずはそれぞれのフレームワークを使ってからにしましょう
使ってもないのに質問するのはマナー悪いです
126デフォルトの名無しさん:2013/11/23(土) 16:49:43.12
なんで
127デフォルトの名無しさん:2013/11/23(土) 17:35:07.36
>>125
ではSinatraを使い始めてから質問してみようと思います。
128デフォルトの名無しさん:2013/11/23(土) 17:38:28.97
PadrinoはSinatraを構成要素として使っている。
129デフォルトの名無しさん:2013/11/23(土) 17:51:42.90
>>128
ありがとうございます。
冷たくあしらわれて諦めていましたので助かりました。

そうすることによって何が便利になるのでしょうか?

SQLの接続が楽になるとかですか?
130デフォルトの名無しさん:2013/11/23(土) 17:52:12.57
聞く前に指を動かせよカス
131デフォルトの名無しさん:2013/11/23(土) 18:20:03.13
普通「手を動かせ」じゃね?
132デフォルトの名無しさん:2013/11/24(日) 20:34:57.89
>>129
Padrinoは構成の柔軟性がウリだが、逆に初心者にはどう構成するかを選ぶハードルがある
大人しくRails使っておいた方が無難
133デフォルトの名無しさん:2013/11/28(木) 00:00:59.60
死ねゴミwwwww
134デフォルトの名無しさん:2013/11/28(木) 00:14:28.42
なんか明日あたり新聞に載ってそうなのがひとり居るな
135デフォルトの名無しさん:2013/11/28(木) 03:32:35.87
Ruby使いにも133みたいな奴がいるんだなw
136デフォルトの名無しさん:2013/11/28(木) 05:56:15.44
>>135
WebProg 板の Rails スレなんてひどいもんだよ
137デフォルトの名無しさん:2013/11/29(金) 00:45:07.42
PythonスレとRubyスレは割りと平和
138デフォルトの名無しさん:2013/11/29(金) 01:08:30.09
コインを投げての裏表みたいな1/2の確率で1,0を出したいとき、
rand()で出た数字をif文で0.5以上、未満みたいに切り分けて1,0にするのが
良いのか、rand(3)にして1と0を取り出すのかどっちがより一様乱数に
近くなるんでしょうか?
139デフォルトの名無しさん:2013/11/29(金) 01:14:14.45
プログラミング自体の初心者少ないからかな。知名度低くて。
140デフォルトの名無しさん:2013/11/29(金) 01:14:22.45
どっちもだめだけど
二つしか方法が選べないなら
前者の方がマシ
141デフォルトの名無しさん:2013/11/29(金) 01:57:50.57
>>109
Rubyは初めてか?
力抜けよ……

のほうが
142デフォルトの名無しさん:2013/11/29(金) 02:09:31.10
>>140
だめじゃないやり方よろ
143デフォルトの名無しさん:2013/11/29(金) 02:15:35.37
そらアセンブリよ
144デフォルトの名無しさん:2013/11/29(金) 04:15:24.54
カーネルのrandじゃなくてRandom使ってゴニョゴニョすればいいんでない
145デフォルトの名無しさん:2013/11/29(金) 08:51:52.29
分かりやすくするために、0から1まで0.1刻みで乱数が出力されるとすると、
0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
これを0.5を境に大小にわけると6:5になる。つまり1/2とは程遠い。

一方rand(3)にした場合は、0から3未満の整数が出力されるので、1/2の
確率で1,0が得られる。
146デフォルトの名無しさん:2013/11/29(金) 09:01:30.68
rand(65536) にして途中の 1bit だけ利用する
147デフォルトの名無しさん:2013/11/29(金) 09:20:28.25
[0,0.5) と[0.5,1.0)
0-0.4999 : 0.5000-0.9999
0.4999 : 0.4999
1:1
と思うのだが何か間違ってるのだろうか?

c = {true=>0,false=>0}
10000000.times{c[rand<0.5] += 1}
a = c.values.reduce(:+)/c.values.size
puts ((c[true]-a)*100).abs.quo(a).to_f.to_s+'%'
148デフォルトの名無しさん:2013/11/29(金) 09:22:05.69
rand(2).to_i
じゃ駄目なん?

0〜1未満が0
1〜2未満が1
だから一様だと思うけど
149デフォルトの名無しさん:2013/11/29(金) 09:37:40.94
rand(2)が正解
150デフォルトの名無しさん:2013/11/29(金) 10:29:28.94
乱数で 0.5 が出て来るのは見たことがあるが
0.0 が出て来るのは見たことがない
151デフォルトの名無しさん:2013/11/29(金) 15:53:11.39
なぜ目で確かめようとするのか
152デフォルトの名無しさん:2013/11/29(金) 17:17:46.38
浮動小数点数は誤差があるからな
0.5を正確に比較出来るのか?
153デフォルトの名無しさん:2013/11/29(金) 17:37:59.90
>>148 rand(x)は 0以上x未満のIntegerを返すから >>149でいい
>>138 はそれよりも、もっと一様な乱数にする方法があるのか聞きたいのだろう

あまり数学はわからんのだけど
線形合同法とかの乱数だと特定のビットだけを抜き出すと周期が極端に短かったりする
らしいし
過去にコンシューマーゲームでタコな乱数の使い方してて、問題になったことがあったような

ま、Rubyはメルセンヌツイスタなので
ややこしく考えなくても
たいした問題は出ないのじゃないのかな
154デフォルトの名無しさん:2013/11/29(金) 17:51:25.29
パチスロの裏ROMですねわかります
155デフォルトの名無しさん:2013/11/29(金) 21:46:14.32
出目の奇遇が固定されてしまうバグがあったのは
カルドセプトの何作目かだったかな。
156デフォルトの名無しさん:2013/11/29(金) 22:35:43.59
Rubyアソシエーションのチュートリアルわかりにくいところにあるけどわかりやすい
157デフォルトの名無しさん:2013/11/29(金) 22:50:46.11
さんせいの反対なのだ
158デフォルトの名無しさん:2013/11/30(土) 01:35:53.50
多次元ハッシュ使ってデータ(インスタンス)格納したいんだがどういうのがベストなのかわからない
こんな感じに入れてlist[ id1 ].eachで使えればいいんだけど
list = {
id1 => { instance1, instance2, instance3, … },
id2 => { instance1, instance2, instance3, … },

}
159デフォルトの名無しさん:2013/11/30(土) 02:14:06.45
list = {
id1 => [ instance1, instance2, instance3, … ],
id2 => [ instance1, instance2, instance3, … ],
}

でいいんじゃないの?
160デフォルトの名無しさん:2013/11/30(土) 05:01:35.97
listに空配列入れてinstanceの配列でeachすればいいんじゃないの
161デフォルトの名無しさん:2013/11/30(土) 11:49:31.84
データの内容と使い方によるとしか・・・
162デフォルトの名無しさん:2013/12/01(日) 20:08:49.97
引数ってなんやああああ!!!!
163デフォルトの名無しさん:2013/12/03(火) 02:15:10.88
引用させる数
164デフォルトの名無しさん:2013/12/03(火) 03:36:42.40
引数(ひきすう)
165デフォルトの名無しさん:2013/12/03(火) 03:37:21.50
C, C++なら引用じゃなくて、コピーされるよ!
166デフォルトの名無しさん:2013/12/03(火) 03:42:44.76
reference 参照
argument 引き数
parameter パラメーター
variable 変数
167デフォルトの名無しさん:2013/12/05(木) 20:50:55.92
ドン引きされる数
168デフォルトの名無しさん:2013/12/05(木) 22:24:00.14
class Klass

〜ここ〜

def method
end

〜ここ〜

end


Rubyのクラスでは、クラスのメソッド以外のところはいつ実行されるのでしょうか?


class Klass

@x = "Hello"

def method
p @x
end

end


このコードは@xがnilのままです
JavaとかC#だとクラスの外に書いたものはコンストラクタの前後で実行されるのですが・・・
169デフォルトの名無しさん:2013/12/05(木) 22:31:52.80
>>168
クラスがパースされたときに実行される

メソッドの外と中じゃselfが違うから@xは別のものを指す
class A
p self
def b
p self
end
end

A.new.b

=>
A
#<A:0x401bfb44>
170デフォルトの名無しさん:2013/12/05(木) 23:43:15.61
>>169
ありがとうございました
171デフォルトの名無しさん:2013/12/05(木) 23:48:17.31
へー評価自体はされてるのね
172デフォルトの名無しさん:2013/12/06(金) 00:40:22.55
Rubyではクラスもオブジェクトだからね

class A
@x = 1
def self.b
p @x
end
end

A.b # => 1

もっとも、この例の場合ならクラス変数使った方がいいだろうけど
173デフォルトの名無しさん:2013/12/06(金) 01:15:01.13
まぁ普通アクセサもしくはクラス変数だわな
174デフォルトの名無しさん:2013/12/06(金) 12:40:56.58
質問です。
一時間ごとのデータが入ったテキストファイル読み込んで、年、月、日、日平均値、日最大値をファイルに出力したいです

ファイルは年、月、日、時刻、人数でタブ区切りされていて、約50万行あります
1-12月、1-31日、1-24時のデータです

awkでかけたのですが、処理速度が遅くて困っております
175デフォルトの名無しさん:2013/12/06(金) 13:26:15.55
>>174
解決方法をレスする前に、2つ質問がある

Q1. データファイルは時系列の順にソートされているか?
=> もしソートされているなら、日付が変化した時点で集計できるから、
  処理速度が遅いのは単なるCPU/IO処理能力不足であると判断できる
  もしソートされていないのなら、
  ファイルを最後まで読み込まなければ集計処理を開始できないから、
  バッファ上に集計カウンタを設けなければならない

Q2. プログラム実行中にスワップは多発しているか?
=> もしQ1.のバッファをメモリ上に設け、かつデータの分布が大きいのなら、
  実メモリの不足によるスワップの多発が性能劣化の原因となっている可能性が高い
176デフォルトの名無しさん:2013/12/06(金) 14:57:12.46
>>175
Q1 時系列順にソートしてあります
Q2 それほどおおくありません
177デフォルトの名無しさん:2013/12/06(金) 16:21:36.11
>>174
データが約50万件ということは約60年分のデータということ?
178デフォルトの名無しさん:2013/12/06(金) 17:50:52.67
>>177
いえ、約50年分です
179175:2013/12/06(金) 22:27:21.51
>>176
入力データがソートされていて、なおかつプログラムが(>>175で書いたように)
前回処理した行(レコード)日付との違いを契機に日毎の集計処理を実行しているのなら、
ただ単にCPUやI/Oの処理能力が不足しているのだと思う

しかも単なる集計であって複雑な計算をしているわけではないみたいだから、
性能ボトルネックはCPUよりもI/Oにある可能性が高いだろう
これは、awk を Ruby へと、あるいはたとえC言語へと書き換えたとしても、
その労力に見合った性能改善は期待できないことを意味する

I/Oの性能改善方法は、たとえばHDDをSSDへ置き換えるのが現実的かつ効果的だろう
180デフォルトの名無しさん:2013/12/06(金) 22:52:03.35
処理速度が遅い理由はわかりました。ありがとうございます。
でも、そろそろ新しい言語を学んでみようかなと思ってたので、
もしよろしかったらどなたかプログラム書いていただけませんか
手順でもいいので
181デフォルトの名無しさん:2013/12/06(金) 22:56:55.89
> もしよろしかったらどなたかプログラム書いていただけませんか
まずは自分で書こう
それを添削してもらった方が身につく
182デフォルトの名無しさん:2013/12/06(金) 23:21:17.40
>>180
awk のコード貼ったらいいじゃない
183デフォルトの名無しさん:2013/12/06(金) 23:46:09.49
いまどきawkでやってるとか原始人かよ
184デフォルトの名無しさん:2013/12/07(土) 00:37:26.73
ものすごく一般論として、gawkやmawkで遅い場合はRubyでも遅い
ただしきちんとawkスクリプトとして完結していることが条件
シェルスクリプトからawkをパイプで呼んでるとかだとアホみたいに遅い
これはawkが悪いんじゃないんだけども
とりあえず>>182に一票
185デフォルトの名無しさん:2013/12/07(土) 01:18:47.00
>>184さんがいうようにシェルスクリプトも使っています。いい忘れていました
それが原因ですかね
プログラムはこれです
http://ideone.com/rKMwoE
これにうるう年などの日にちの考慮や、最大値と最低値がでた時刻も
だす予定なのですが、それ以前に処理が遅すぎるのでとまってます

人数のエラー値は99999で、もし一時間でもエラーがあったら平均値、最大値、最小値は99999を出すことにしてます

つたないプログラムですが、ご助言お願いします
186デフォルトの名無しさん:2013/12/07(土) 01:29:54.24
これ、1日分ごとに、該当日のデータが見つかるまでファイルを最初から舐めてる?
187デフォルトの名無しさん:2013/12/07(土) 02:56:12.29
>>185
最初の4重のforは、シェルスクリプト?
だったら、forは遅い。確かforは、do-done間を、
すべて別のプロセスを立ち上げて、実行するんじゃない?

1行ずつのループ処理で、5千行までなら、whileを使う
(forは遅いので、ダメ)
2万行以上なら、sed、awk、perlを使う

10万行のループ処理にかかる時間は、whileは5秒、forは9分
それらを、awkとperlに書き直せば、0.1秒


なぜシェルスクリプト言語で大規模アプリが作れないのか
ttp://engawa.2ch.net/test/read.cgi/linux/1369567357/41
188デフォルトの名無しさん:2013/12/07(土) 08:55:47.86
リンク先見てきたが
なんのためにそのリンク貼ったのか理解に苦しむ
189デフォルトの名無しさん:2013/12/07(土) 10:28:33.49
出典以外の何があるってんだ
190デフォルトの名無しさん:2013/12/07(土) 11:55:25.96
出典なら肝心なのは

>「UNIX シェルスクリプト・コマンドブック 第2版」 山下哲典、2012
>この本は良書です。この本によると、

の部分であって
あえてそっちをカットして
しかもリンク先見れば済むのに
本文をコピペして
色々ちぐはぐだぞ
191デフォルトの名無しさん:2013/12/07(土) 15:34:11.86
50 万行で 10 秒ほどだった。エラー処理や細かいところは省いてある
http://codepad.org/k3XIui1b
192デフォルトの名無しさん:2013/12/07(土) 19:41:10.74
>>191
ありがとうございます。
ところどころわからないとこあるんですが、独学してみます。
同様な処理を今後していくので、非常に助かります。
皆様、どうもありがとうございました。
193デフォルトの名無しさん:2013/12/08(日) 02:21:18.35
if not って書き方は何か python っぽいな

嫌いじゃない
194デフォルトの名無しさん:2013/12/08(日) 05:17:28.34
unlessは付帯する条件やネストの具合によっては逆にわかりづらいことが判明している
「否定の分岐はunlessだろ」などと枠に嵌めて考えるのではなく、判断のしやすさと読み下しやすさを優先するべき
195デフォルトの名無しさん:2013/12/08(日) 11:12:24.37
method(&:&)みたいに引数に「&:&」を渡すって何をやってるんですかね?
:&というシンボルのprocオブジェクトを渡してるってことですかね。。
:&が組み込みシンボルっぽいかなあと思ってるのですが、記号文字を検索しようとしても
なかなかヒットしませんね・・・
196デフォルトの名無しさん:2013/12/08(日) 11:22:06.03
>>195
Symbol#to_proc を参照
197デフォルトの名無しさん:2013/12/08(日) 11:26:07.06
>>196
シンボルに前置&をつけると、to_procが呼び出されるってやつですよね。
その使い方に慣れていないせいで、組み合わされた&に混乱していたのですが、
冷静に考えてみると二項演算子&を渡したい操作だったようです。
198デフォルトの名無しさん:2013/12/08(日) 11:27:19.03
否定に not を使ってることについてだったんだけど…まあいいや
199デフォルトの名無しさん:2013/12/08(日) 12:08:47.71
! より見落としづらいかもね。
個人的には ! を使うときは !foo ではなく ! foo と書くようにしている。
200デフォルトの名無しさん:2013/12/08(日) 20:38:10.75
オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。
http://engawa.2ch.net/test/read.cgi/poverty/1386476617/
201デフォルトの名無しさん:2013/12/09(月) 17:08:45.34
Rubyでしばらくやってたら、
久々にCで書いた時、switch文のbreak;忘れに一時間くらい気づかず
ずっと悩んでしまった。

辛い。
202デフォルトの名無しさん:2013/12/09(月) 17:19:15.23
それはよかった
203デフォルトの名無しさん:2013/12/10(火) 01:21:29.51
ruby on rails3アプリケーションプログラミングという書籍を読んでruby on railsの勉強を始めたのですが
マイグレーションで詰まってしまいました
rake db:migrate を実行しようとすると'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead.
となりrakeのバージョンが新しすぎるとのことなので一度アンインストールして0.8.7を再インストールしました
すると今度はCould not find rake-10.1.0 in any of the sources
となってダメでした
railsのバージョンは3.0.5です
204デフォルトの名無しさん:2013/12/10(火) 01:46:39.69
途中送信とsage忘れ申し訳ありません
アドバイス頂けたら嬉しいです
よろしくお願いします
205デフォルトの名無しさん:2013/12/10(火) 07:11:54.35
>>203
Railsが古い
今どき3.0で勉強するのはおすすめしない

4.0か、最低でも3.2でやるべき
206デフォルトの名無しさん:2013/12/10(火) 08:14:28.62
どうしても古いrakeを使いたいのなら bundle を再実行しないと
いつまでも rake 10を使おうとするぞ。
207デフォルトの名無しさん:2013/12/15(日) 00:21:57.99
メタプログラミングRubyの表紙に「メタプログラミングは魔術みたい
なもので、ビックリすることができるようになる。」って書いてあるけど
どんなビックリするようなことができるの?
208デフォルトの名無しさん:2013/12/15(日) 00:22:47.97
Rubyについて Part49
http://toro.2ch.net/test/read.cgi/tech/1382307475/153

153 名前:デフォルトの名無しさん[sage] 投稿日:2013/12/14(土) 12:19:00.50
メタプログラミングRubyの表紙に「メタプログラミングは魔術みたい
なもので、ビックリすることができるようになる。」って書いてあるけど
どんなビックリするようなことができるの?
209デフォルトの名無しさん:2013/12/15(日) 00:59:09.08
メタプログラミングRubyの表紙に「メタプログラミングは魔術みたい
なもので、ビックリすることができるようになる。」って書いてあるけど
どんなビックリするようなことができるの?
210デフォルトの名無しさん:2013/12/15(日) 01:29:35.16
153 デフォルトの名無しさん [sage] 2013/12/14(土) 12:19:00.50 ID: Be:
メタプログラミングRubyの表紙に「メタプログラミングは魔術みたい
なもので、ビックリすることができるようになる。」って書いてあるけど
どんなビックリするようなことができるの?

154 デフォルトの名無しさん [sage] 2013/12/14(土) 12:22:45.87 ID: Be:
乾電池がお尻の穴に入ります

155 デフォルトの名無しさん [sage] 2013/12/14(土) 12:25:58.56 ID: Be:
それは誰でもやっていることで、ビックリするようなものではない

156 デフォルトの名無しさん [sage] 2013/12/14(土) 12:26:57.60 ID: Be:
正規表現のメタ文字に * があるのはそういうことだったんですね(カンペ棒読み)

157 デフォルトの名無しさん [sage] 2013/12/14(土) 12:52:39.63 ID: Be:
プログラミングできなくても乾電池はお知りの中に入るだろ
っていうか液漏れしたら命に関わるからやるな
211デフォルトの名無しさん:2013/12/15(日) 01:34:58.71
そもそもメタプログラミングってなに?
Rubyでないとできんの?
212デフォルトの名無しさん:2013/12/15(日) 01:38:32.27
馬鹿には無理
213デフォルトの名無しさん:2013/12/15(日) 02:34:48.75
馬鹿には無理
214デフォルトの名無しさん:2013/12/15(日) 12:56:22.15
>>211

Lispやってこい
215デフォルトの名無しさん:2013/12/15(日) 14:34:04.15
>>211
簡単に言うとプログラムのコードを実行中に覗き見るような行為が可能になる。
ルービー以外の言語でもできるけど、昔の言語はできなかった。
216デフォルトの名無しさん:2013/12/15(日) 18:26:54.66
Lispが昔の言語じゃない……だと……?
217デフォルトの名無しさん:2013/12/16(月) 00:46:23.60
x = * [1,2]

これでxに配列が普通に代入されるんですが、この場合*はパーサーにはどう解釈されるのでしょうか?
nilが*を実行してるわけではないですよね?
218デフォルトの名無しさん:2013/12/16(月) 01:41:58.68
Smalltalkが昔の言語じゃない……だと……?
219デフォルトの名無しさん:2013/12/16(月) 06:03:02.62
>>217
splatだと思う
直後の配列を展開し順にメソッドの引数として扱う

irb> a = 1,2
irb> p a
[1, 2]
220デフォルトの名無しさん:2013/12/16(月) 10:26:09.18
Smalltalk は終わったけど Lisp は今のところまだ現役です (キリっ
221デフォルトの名無しさん:2013/12/16(月) 19:21:19.92
lisp は emacs とともに
222デフォルトの名無しさん:2013/12/16(月) 23:45:06.95
>>219
ありがとうございました
223デフォルトの名無しさん:2013/12/17(火) 01:02:27.94
rubyforgeが止まっているようです。終わってしまったのですか?
1.9以降消えたリポジトリやソースもあります。rubyから手を引いた人も多いんでしょう。
コア部分は古いバージョンや互換性は大切しないといけないと思います。
新しいバージョンを追いすぎるのも疑問。経済の先行の見通しが不安であるのに、いつまでも
コミュニティベースのオープンソースな体制は維持できないかもしれませんが。
肥大化したLinuxカーネルだって高齢化と経済危機で終わるかもしれませんよ。
224デフォルトの名無しさん:2013/12/17(火) 01:30:45.42
俺もrubyforgeの寂れ具合に驚いたけど要するにgithub行けってことでしょ
225デフォルトの名無しさん:2013/12/17(火) 01:36:46.15
rubygemsに移行するみたいな話じゃなかったっけ
あとはgithubとかgoogle codeとかと競合する部分はそちらへどうぞ的な
226デフォルトの名無しさん:2013/12/17(火) 03:22:34.61
rubyforgeはrubygemsに移行した
http://status.rubygems.org/
gemコマンドの参照先もrubygems.orgに何年も前からなっている
もしrubyforgeを紹介しているサイトや書籍があるなら、その記述はおそろしく古い

rubygems.orgにはgemコマンド用の配布ファイルだけ置いて、バグトラッキングや開発版関係はgithubに置くのがトレンドではある
227デフォルトの名無しさん:2013/12/17(火) 03:31:11.32
githubってrubyのみならず人気あるけど、何でだろうな

他のレポジトリに比べて何か特にいいところがあるの?
228デフォルトの名無しさん:2013/12/17(火) 03:41:36.24
>>227
あなたが書き捨て以上のプログラムを作ったことがあるならたぶんわかります
そうじゃないならそもそも必要ないしわけわかんなくなるので、必要になるまで遠巻きに眺めておくのが賢明
229デフォルトの名無しさん:2013/12/17(火) 04:13:27.09
煽りでも腐しでもなんでもなく、gitもgithubも必要ない人には必要ないからな
「なんか流行ってるから」で手を出してもなにが楽しいんだかさっぱりわからん損した、ということが多々
230デフォルトの名無しさん:2013/12/17(火) 04:22:10.34
>>227
ふぉーくとぷる
231デフォルトの名無しさん:2013/12/17(火) 04:26:41.99
フォークやプルならbitbucketでもできないっけ?
232デフォルトの名無しさん:2013/12/17(火) 04:43:45.75
>>228
どやぁ
233デフォルトの名無しさん:2013/12/17(火) 08:24:24.72
>>231

人が集まり出すと人が集まる。
234デフォルトの名無しさん:2013/12/17(火) 09:05:06.90
質問です。
require_relative で取り込んだファイル内にあるクラス定義の
一覧を取得することはできますでしょうか?
例えば,
---- lib/c1.rb ----
class C1; end
-------------------
---- lib/c2.rb ----
class C2; end
-------------------
みたいになっていて,
Dir::glob("lib/*.rb") do |rs|
require_relative rs
何か魔法
end
みたいなことをすると [C1, C2] が得られる,みたいなことをしたいのです。
235234:2013/12/17(火) 09:07:16.74
なお,本当にやりたいことは,それらクラス内に定義した同じ名前の
クラスメソッドを順に自動的に呼んで行きたいのです。C1.test; C2.test; ...
みたいにです。
236デフォルトの名無しさん:2013/12/17(火) 11:18:50.92
>>229
gitとかまるで必要ない日曜プログラマだけど、githubで皆さんのソースコードを検索するためにアカウント登録してますん
237デフォルトの名無しさん:2013/12/17(火) 13:00:39.70
>>227
他のリポジトリって何?
多分、目的の違うものを比べようとしてるんだろ。
238デフォルトの名無しさん:2013/12/17(火) 13:05:21.10
Q ○○と××の違いは何ですか?

A 目的です


初心者に対する質問は全部これでいいなw
239デフォルトの名無しさん:2013/12/17(火) 13:15:54.08
歴史的経緯で置き換えられただけとかもあるぞ。
240デフォルトの名無しさん:2013/12/17(火) 15:33:11.47
Ruby2.0で、文字列操作だけでJsonを作りたいのですが、エスケープ文字が置換出来ずに悩んでいます。
X.to_jsonだと更にエスケープ文字が増えてJsonとして読み取れませんでした。
MySQLからデータを取得し、取得したデータは現在hash型です。
これを個々に変数に入れて文字列にキャスト。
繋げて1つの文字列(Json)にしているところでJsonのKEYとVALUEはダブルクォーテーションで括る必要があるので
括るのですが、出力結果を見ると\で勝手にエスケープされます。
で、エスケープ文字を置換で消そうと思っているのですが、上手くいきません。ご教示願います。

http://ideone.com/ge5WXB
241デフォルトの名無しさん:2013/12/17(火) 16:23:42.74
>>240
puts json_data
242デフォルトの名無しさん:2013/12/17(火) 18:31:25.24
>>241
ファ!?
マジで上手く取れた…
putsって何だよコレ…最後に改行コード入れるって説明しかないのに、何でJsonで返すって分かったんですか?
そーゆーモノって事なんですかね?
243デフォルトの名無しさん:2013/12/17(火) 19:57:46.25
jsonが云々ではなくて、putsは普通の出力でpはデバッグ用出力だからだよ
このぶんだと他の基本知識も危うそう
244デフォルトの名無しさん:2013/12/17(火) 20:52:13.76
>>234

inherited メソッドについて調べてみるといいかも。
245デフォルトの名無しさん:2013/12/17(火) 21:02:51.77
Railsの仕事ってあるの?
246234:2013/12/17(火) 21:12:56.07
>>244
うおーできました! 素晴らしすぎる!! Ruby万歳!

inherited は Classクラスのメソッド...なるほど。
クラスに関係した悩みについては,Classクラスをあたってみれば
良かったのですね。勉強になりました。
247デフォルトの名無しさん:2013/12/17(火) 21:16:58.95
>>245
作ればある!
248デフォルトの名無しさん:2013/12/17(火) 21:24:06.89
すみません、初心者です。
Rubyでの仕事の作り方を教えてください。
249デフォルトの名無しさん:2013/12/17(火) 21:45:34.86
>>243
> putsは普通の出力でpはデバッグ用出力だからだよ
どこに書いてありますか?

> このぶんだと他の基本知識も危うそう
Ruby歴2日目です
250デフォルトの名無しさん:2013/12/17(火) 21:53:24.44
>>223
福祉大国の北欧にコミッタが居るので、流出は避けられない
251デフォルトの名無しさん:2013/12/17(火) 22:47:53.58
Windows XP sp3
Ruby 1.9.3
文字列の値として日本語と簡体字が混じった
http://i.imgur.com/lxu8Vtu.png
https://docs.google.com/document/d/19DWxKuHLICyFS62wEYeVqro9l8h6Sx-EumqtdLnmyNs/edit?usp=sharing
このような文字列を使いたいのですが良い方法はないでしょうか
252デフォルトの名無しさん:2013/12/17(火) 22:49:53.33
>>251
Unicode 使えばいいんじゃないの?
253デフォルトの名無しさん:2013/12/17(火) 22:59:14.20
>>252
調べても文字コードの指定にUnicodeがなかったのですが
http://d.hatena.ne.jp/vividcode/20110120/1295542000
ここに書かれている方法を使うといった意味でしょうか
http://bitex-cn.com/search_result.php?keywords=%E6%88%91%E7%88%B1%E4%BD%A0
このようなサイトのソースを見てもcharset=utf-8となっていたので
文字セットをどうにかすれば使えるのかなとも思ったのですが
254デフォルトの名無しさん:2013/12/17(火) 23:01:15.19
というかすみません、utf-8ってunicodeですね
255デフォルトの名無しさん:2013/12/17(火) 23:54:11.98
Hoge::new
Hoge.new


違いはなんですか?

定数の呼び出しは::だけですが、クラスメソッドはどうして両方で呼べるのでしょうか
256デフォルトの名無しさん:2013/12/18(水) 00:00:50.25
>>255

スコープ区切りが :: でメソッド呼び出しが .

クラスメソッド呼び出しに :: が使えるのは、C++がまだ活気があった頃の名残。
257デフォルトの名無しさん:2013/12/18(水) 12:28:46.29
てs
258デフォルトの名無しさん:2013/12/18(水) 18:47:43.28
C++はほとんどRubyに駆逐されたね。
259デフォルトの名無しさん:2013/12/18(水) 18:53:03.90
mrubyの登場が大きかった
あれで完全にC/C++の息の根が止まった
260デフォルトの名無しさん:2013/12/18(水) 19:54:11.37
261デフォルトの名無しさん:2013/12/18(水) 20:19:10.37
るびーでとめられるのは役所の時計くらいだろ
262デフォルトの名無しさん:2013/12/18(水) 20:36:19.73
mrubyによる組み込みOSのプロジェクトが立ち上がりました。
263デフォルトの名無しさん:2013/12/18(水) 20:45:26.68
N個の配列の中に5個のハッシュをもったオブジェクトがあって、
それら全てにアクセスする繰返し文を書く方法が分かりません…。
for文を入れ子にすればいいのは何とか分かりますが、ハッシュのキーや値の取り方が分かりません。
ご教示願います。
264デフォルトの名無しさん:2013/12/18(水) 21:35:10.24
arys.each{|h| h.each{|key , value| puts key.to_s + value.to_s } }

こういうこと?
265デフォルトの名無しさん:2013/12/18(水) 23:13:09.36
mrubyでAUTOSAR仕様を全て完璧に網羅したプラットフォーム作ろうぜ!
誰も使わないだろうけど!
266デフォルトの名無しさん:2013/12/18(水) 23:16:14.97
Rubyが唯一jsに勝つ要素。それ即ち、ブラウザがない場所で闘うこと。
267デフォルトの名無しさん:2013/12/18(水) 23:27:16.74
JSの欠点を補うためHTML5でRubyタグが復活しました。
268デフォルトの名無しさん:2013/12/18(水) 23:52:36.69
OcraでRuby/Tkを起動した時の遅さが半端じゃないんですがどうにかなりませんか?
269デフォルトの名無しさん:2013/12/19(木) 00:05:04.25
/fastオプションをつけて起動すると改善されます。
270デフォルトの名無しさん:2013/12/19(木) 00:15:42.81
>>269
すみませんもう少しヒントをください
fastはocraのオプションですか?
それともRuby自体の?
271デフォルトの名無しさん:2013/12/19(木) 09:58:52.91
>>264
超絶技巧超多々謝謝!!
272デフォルトの名無しさん:2013/12/19(木) 11:15:43.30
>>261
mrubyで動いてたんだろうな
きっと
273デフォルトの名無しさん:2013/12/19(木) 11:58:41.06
英語ページを張ろうとしたら日本語があった
ttps://www.ruby-lang.org/ja/news/2013/12/17/maintenance-of-1-8-7-and-1-9-2/
バイナリ配布はしないし"公式"サポートもしないが、
Ruby1.8.7と1.9.2のソースコードレベルでのセキュリティフィックスは協力者のおかげで半年間だけ継続される
使いたい人は自力でビルドして使ってくれ、でもなるべく早めに2.0以降に移行しに行こうねというお話
274デフォルトの名無しさん:2013/12/19(木) 12:16:15.58
以降はサポートしない意向
275デフォルトの名無しさん:2013/12/19(木) 17:33:12.27
というか1.9.2ってけっこう最近のイメージがあるんだが、そうでもないんだな
276デフォルトの名無しさん:2013/12/19(木) 22:55:56.67
Linux(CentOS)上で、Windowsのocraみたいに、
rubyがインストールされていない環境で動作可能な実行ファイルを作成するものって
何かないでしょうか?
277デフォルトの名無しさん:2013/12/19(木) 23:38:55.53
横ですが、ついでにMac環境の場合もオススメの方法があったら教えて下さい…
278デフォルトの名無しさん:2013/12/19(木) 23:45:29.44
あ、MacならデフォルトでRuby入ってるだろとかそういう意味じゃなくて
279デフォルトの名無しさん:2013/12/19(木) 23:55:37.88
サポートライブラリを同時に配布する必要がありますが、mrubyでELFバイナリを
作ってはどうでしょう。
280デフォルトの名無しさん:2013/12/20(金) 01:02:10.82
1から100までの数を50ずつランダムに配列に振り分けてください。

例:
a = [2 , 3 , 5 .... 99]
b = [1 , 4 , 6 ... 100]
281デフォルトの名無しさん:2013/12/20(金) 01:04:36.19
↑いろんな解答待ってます
282デフォルトの名無しさん:2013/12/20(金) 01:06:20.58
>>276
依存ライブラリ全部入れてパッケージ作ればいいだけだが
yumやhomebrewみたいなパッケージシステムが用意されてあるわけだからそれ使えばよくね
必要ないから存在しないわけでおまえの考えが根本的に間違ってる気がする
283277:2013/12/20(金) 01:08:42.84
>>282
なるほど
ありがとん
ちなみに276は別の人ね
284デフォルトの名無しさん:2013/12/20(金) 01:11:35.01
>>280
(1..100).to_a.shuffle.take(50)
285デフォルトの名無しさん:2013/12/20(金) 02:03:49.64
a = [*1..100]
b = a.sample(50)
a -= b
286デフォルトの名無しさん:2013/12/20(金) 08:29:59.74
Ruby公式サイトでは以下のArrayのメソッドが特異メソッドと言われてますが
http://docs.ruby-lang.org/ja/1.9.2/class/Array.html

[]
new
try_convert

正しくはクラスメソッドじゃないんですか?
287デフォルトの名無しさん:2013/12/20(金) 08:59:56.21
クラスではなくクラスの特異クラスにバインドされているメソッドなので特異メソッドで問題ないんじゃないでしょうか?
288デフォルトの名無しさん:2013/12/20(金) 12:27:58.10
昔のリファレンスはクラスメソッドだった
289デフォルトの名無しさん:2013/12/20(金) 12:48:07.28
なるほど
Rubyにはクラスの特異メソッドとインスタンスの特異メソッドがあって、前者が通称クラスメソッドなんですね
ありがとうございました
290デフォルトの名無しさん:2013/12/20(金) 14:52:23.46
>>280
a = [*1..100]
b = []
50.times {|i| b << a.delete_at( rand(100-i) ) }
b.sort!
291デフォルトの名無しさん:2013/12/20(金) 15:58:50.36
50.times{ b << a.delete_at( rand(a.size) ) }
292デフォルトの名無しさん:2013/12/20(金) 21:04:28.96
>>289
クラスの特異メソッドではなく、Classクラスのインスタンスの特異メソッド
293デフォルトの名無しさん:2013/12/20(金) 22:08:42.78
>>292
クラスってなんですか?
294デフォルトの名無しさん:2013/12/20(金) 22:29:17.05
英語の教科書に書いてある "meta class is awesome"って、あれです。
295デフォルトの名無しさん:2013/12/20(金) 22:57:19.97
クラスとは分類です。
過疎地でもなければ小学校でクラスに分けられたのではないか。
296デフォルトの名無しさん:2013/12/21(土) 01:49:58.79
クラスの知識なんて暮らすのには必要ないよ
297デフォルトの名無しさん:2013/12/21(土) 06:47:09.10
Class classのインスタンスがクラスなんだからクラスのメソッドでいいじゃないかという話になってた気がする
298デフォルトの名無しさん:2013/12/21(土) 12:38:07.29
>>293
仕事の内容毎に、部署を作るようなもの

ゲーム作るとして、味方キャラを制御するクラス、敵キャラ制御のクラス、画面表示やエフェクト制御のクラス…て感じで担当分けたりする

全部ごちゃ混ぜだと管理大変だから
299デフォルトの名無しさん:2013/12/21(土) 12:43:05.17
階層構造をもって分類したもの
300デフォルトの名無しさん:2013/12/21(土) 12:46:16.62
階層構造は本質じゃないし必ずしも要らないよ。
301デフォルトの名無しさん:2013/12/21(土) 16:58:51.31
>>298
物じゃなくて仕事ごとに分けているんですか。
ruby使っててもオブジェクト指向使わない人もいるんですね。
302デフォルトの名無しさん:2013/12/21(土) 17:05:12.60
クラスを作る対象は別にモノに限られているわけではない
303デフォルトの名無しさん:2013/12/21(土) 19:30:25.17
do endと{}の使い分けをアホに分かるように教えて下さい
304デフォルトの名無しさん:2013/12/21(土) 19:53:02.17
1行なら{}
複数行ならdo end
10.times.countのようにdoの前に動詞がくるなら複数行でも{}
305デフォルトの名無しさん:2013/12/21(土) 20:47:05.36
>>292への皮肉なのだろうし>>297がいちばん当を得ているような
306デフォルトの名無しさん:2013/12/21(土) 20:54:00.48
File.openの引数

"a+"
"w+"

は初期化してから書くかファイルの末尾から書くかの違いとして

"+r"

これはなんですか?
307デフォルトの名無しさん:2013/12/21(土) 22:02:31.28
>>304
アホだけど理解出来ました
308デフォルトの名無しさん:2013/12/21(土) 22:20:02.70
そもそも10.times.countで複数行またがることなんて
309デフォルトの名無しさん:2013/12/22(日) 02:00:52.30
>>306
ファイルの内容を保持したまま読み書きとか上書きするのに使う。

irb(main):001:0> File.read "hoge"
=> "foobar\n"
irb(main):002:0> File.open("hoge", "r+") {|f| f.write "baz" }
=> 3
irb(main):003:0> File.read "hoge"
=> "bazbar\n"
irb(main):004:0> File.open("hoge", "r+") {|f| f.seek 3; f.write "qux" }
=> 3
irb(main):005:0> File.read "hoge"
=> "bazqux\n"

テキストファイルだとあまり御利益ないかもしれないけど、
固定長バイナリファイルの操作などでは使い出があると思う。
310デフォルトの名無しさん:2013/12/22(日) 02:54:40.05
>>303
foo arg {} の場合ブロックはargが取り、foo arg do ... end の場合ブロックはfooが取る
311デフォルトの名無しさん:2013/12/22(日) 12:45:30.98
>>309
ありがとうございます。
そもそもw+だと全て消えてしまうんですね
312デフォルトの名無しさん:2013/12/22(日) 14:20:54.70
wは別プロセスがflockしてても消してまうでな
313デフォルトの名無しさん:2013/12/22(日) 14:41:42.43
そのへんはもう、いわゆるRuby関係ない話になってしまうな
OSに依頼してるだけだから、OS(ファイルシステム)がどう動作するかという話に
314デフォルトの名無しさん:2013/12/22(日) 19:02:16.35
flockはadvisory lockだからflock使わないアプリケーションから消せるのは当たり前
315デフォルトの名無しさん:2013/12/23(月) 01:52:26.11
class A
class B < A
alias fuga hoge
end
def hoge
end
end
で undefined method 'hoge' となってしまいます。

def hoge を class B を定義する前に書けば問題ないのですが、
a.rb
a/b.rb
とファイルを分割していて a.rb の先頭で a/b.rb を require するとこうなってしまいます。
なにか上手い解決法はないでしょうか。
316デフォルトの名無しさん:2013/12/23(月) 02:07:33.39
def fuga; hoge; end
とか
317デフォルトの名無しさん:2013/12/23(月) 06:48:40.88
書き方か分割のしかたかどっちかが本質的にヤバいと思われる
エラーを消すことを目的に小細工すると早晩破綻が来そうだ
318デフォルトの名無しさん:2013/12/23(月) 11:07:07.71
>>315
問題は、以下に示す依存関係の矛盾にある
・クラス継承 A::B < A は、サブクラス A::B が存在するには
 スーパークラス A が必要である、いいかえると
 「A::B は A に依存する」ことを意味する
・ファイルrequireは、require元ファイル a.rb が存在するには
 requre先ファイル a/b.rb が必要である、いいかえると
 「a.rb は a/b.rb に依存する」ことを意味する

矛盾の解消には:
  サブクラス A::B がスーパークラス A を必要とし、かつ
  これらクラスが個別のファイルで定義されているならば、
  A::B を定義する a/b.rb が A を定義する a.rb をrequireすべきである
という原則へ立ち返ることが出発点になる
319デフォルトの名無しさん:2013/12/23(月) 11:26:08.62
>>318の続き)
更に付け加える
>>318が原則 MUST であったのに対し、これは推奨 SHOULD になる)

モジュール構成とクラス継承の違いを意識してコード設計すべき
・モジュール構成は名前空間を定義する
・クラス継承はデータ型の依存関係を定義する

>>315の例において、もしも名前空間が不要であれば、
そのコードは以下のように添削できる
 class A
  def hoge; end
 end

 class B < A
  alias fuga hoge
 end

もし名前空間が必要であるなら、以下のようになる
 class A
  def hoge; end
 end

 module M
  class B < A
   alias fuga hoge
  end
 end
320デフォルトの名無しさん:2013/12/23(月) 14:25:02.52
rubyでfloat型を宣言する方法って


1.0とする以外にもなにかありませんでしたっけ
fつけたり
321デフォルトの名無しさん:2013/12/23(月) 14:49:59.62
>float型
そんなものはない

Floatオブジェクトにしたいならto_fでいいんじゃなかろうか
例外出したかったらFloat()
322デフォルトの名無しさん:2013/12/23(月) 16:45:56.06
ありがとうございます。

fをつけて宣言することはできないのでしょうか
323デフォルトの名無しさん:2013/12/23(月) 17:05:43.39
>>322
できません
324315:2013/12/23(月) 17:36:08.12
ありがとうございます。
class B は名前空間が必要で、その名前が思いつかなかったため、
サブクラスだからという理由でAの中に定義したのが間違いだったのだと思います。
A を名前空間のためだけのモジュールにして、メソッドを別に切り出し、B からそれを require する事にしました。
325デフォルトの名無しさん:2013/12/24(火) 09:52:39.17
繰り返し文がいろんな種類があって何から覚えていいのか分からない。
JavaとかJavaScriptとかPHPみたいな
for(i=0;i<MAX;i++){
//処理
}
ってRubyで、どう書けばいいのですか?
326デフォルトの名無しさん:2013/12/24(火) 10:00:49.85
MAX=10なら

10.times {
#処理
}

実行中に愛が欲しければ
10.times {|i|
#処理
}
327デフォルトの名無しさん:2013/12/24(火) 11:26:44.63
ただし本質的な例外があって、「x個のモノ(配列など)すべてにアクセスするループ」の場合は

arr.each do |e|
# e をどうにかする
end

というeachによる繰り返しを【必ず】使う
極めて稀にこれでどうにもならないのがあるんだが、おそらくそれにぶち当たることは初心者ではないはず

要素が10個ある配列arrから要素を取り出して表示したいときに

10.times do |i|
puts arr[i]
end

と書いたらグーで殴られても文句言えない
普通はこうする

arr.each do |e|
puts e
end
328デフォルトの名無しさん:2013/12/24(火) 12:41:18.27
pets =['イヌ', 'ネコ', 'タヌキ', 'タヌキ2']

pets.each {|pet|
puts pet + 'が俺を見つめている!'
}
329325:2013/12/24(火) 12:54:31.28
>>327
おお!凄いありがとうございます!!!
N個の配列に全アクセスする場合必ず使うって部分でようやく理解、納得できました!
>>326-327さんがいなければ私はRubyを挫折していたかもしれないです。
本当にありがとうございました!
どのサイト見てもピンとこなかったので嬉しい限りです。
>>326-327はEvernoteにブチこんでおきます!
330デフォルトの名無しさん:2013/12/24(火) 18:57:58.08
2chにていねいな説明は似合わないな
331デフォルトの名無しさん:2013/12/24(火) 19:50:45.78
そんなに丁寧でもない
332デフォルトの名無しさん:2013/12/24(火) 23:20:44.46
def importData(file, persons)
 id = 1
 file.each_line do |line|
  array = line.split("\t")
  persons.push Person.new(id, array[0], array[1], array[2], array[3])
  id = id+1
 end
end

タブ区切りのファイルを読み込み、id、名前、職業、身長等のメンバ変数を持つPersonオブジェクトを作り
それをpersonsという配列にプッシュするメソッドなのですが
わざわざeachの外でカウンタ変数を宣言してカウントアップするという方法がかっこ悪い気がします
Rubyっぽくカッコイイ方法で書く方法を教えていただけないでしょうか
Rubyはさっき始めました
333デフォルトの名無しさん:2013/12/24(火) 23:41:23.57
>importData
オーケー、まずやるべきことはその参考書なり参考サイトなりを焼き捨てることだ
334デフォルトの名無しさん:2013/12/24(火) 23:48:41.18
with_index
335デフォルトの名無しさん:2013/12/24(火) 23:53:26.50
RubyだとLCCはホントに人気ないよね
336332:2013/12/24(火) 23:57:00.51
>>334
ありがとうございます
出来ました
>>335
特に何か参考にして名前つけたわけじゃないですけど
何か変な所ありますか?
337332:2013/12/24(火) 23:58:21.86
安価間違えました
>>335じゃなくて>>333でした
ついでに>>335を見て意味が分かりました
CとJavaしかやってないのでrubyっぽい命名が分かりませんでした
338デフォルトの名無しさん:2013/12/25(水) 00:21:50.37
クラス名はcamelCaseなんだけどね
339デフォルトの名無しさん:2013/12/25(水) 00:35:07.57
340デフォルトの名無しさん:2013/12/25(水) 00:43:12.76
>>332
それ繰り返し呼んだらid被るよな。
その時のarrayのlengthから算出すべきじゃ。できればロックもかけて。
341デフォルトの名無しさん:2013/12/25(水) 01:02:17.33
>>339
ありがとうございます
とても参考になります
>>400
今はこのようになっております
これだと大丈夫でしょうか

def import_data(file, persons)
 id = 1
 file.each_line.with_index do |line, index|
  id = index + 1
  array = line.split("\t")
  persons.push Person.new(id, array[0], array[1], array[2], array[3])
 end
end
342デフォルトの名無しさん:2013/12/25(水) 01:03:03.46
間違えました
def import_data(file, persons)
 file.each_line.with_index do |line, index|
  id = index + 1
  array = line.split("\t")
  persons.push Person.new(id, array[0], array[1], array[2], array[3])
 end
end
343デフォルトの名無しさん:2013/12/25(水) 01:12:28.79
344デフォルトの名無しさん:2013/12/25(水) 01:35:40.96
with_index(1) で 1 からになるよ。
345デフォルトの名無しさん:2013/12/25(水) 02:30:50.43
>with_index(1) で 1 からになる
質問者じゃないが知らなかった ありがとう
346デフォルトの名無しさん:2013/12/25(水) 14:49:56.25
Ruby作者はBasic厨だからあんな気持ち悪いendとかいうのをプログラマーに強制的に書かせる使用にしたのだ
括弧使わせろよ
347デフォルトの名無しさん:2013/12/25(水) 15:34:15.15
>>346

Rubyのbegin-endはEiffel由来だし
matz自身が{}を使った文法に変えようとしたことがある
348デフォルトの名無しさん:2013/12/25(水) 15:35:05.47
"use strict"を宣言したときだけに限りprivateとprotectedをJavaやPHPにあわせろ!
349デフォルトの名無しさん:2013/12/25(水) 17:56:05.61
いっそのこと新しい括弧文字を発明しちゃいなよ
350デフォルトの名無しさん:2013/12/25(水) 17:56:46.02
>>344
役に立つ情報をありがとうございます
351デフォルトの名無しさん:2013/12/26(木) 02:29:03.32
特異クラスの特異クラスはあるでしょうか?
アクセスの仕方がわからず、どのようにそれを確認したらよいのかわかりません。
またアクセスできないのならば、それはどのような意味を持つのでしょうか。
何らかのセオリーに裏打ちされた仕様の帰結なのでしょうか?

obj = Object.new
class << obj
&nbsp;&nbsp;def self.f() ...
352デフォルトの名無しさん:2013/12/26(木) 07:17:25.80
スマホはAndroid
ブラウザはPCもスマホもChrome
IMEもPC、スマホ共にGoogle日本語入力
メールはGmail
クラウドはGoogleDrive
スケジュール管理はGoogleカレンダー
撮った写真はPicasaに自動アップロード
の俺に死角は無かった
Googleがお漏らししたら完全に詰むわ
353デフォルトの名無しさん:2013/12/26(木) 07:18:39.52
誤爆した
354デフォルトの名無しさん:2013/12/26(木) 10:18:52.84
>>351

>> 5.times.reduce("") {|o| o.singleton_class }
=> #<Class:#<Class:#<Class:#<Class:#<Class:#<String:0x007f9ae5016508>>>>>>

作ることはできるみたいだけど、使い道を思いつかない。
355デフォルトの名無しさん:2013/12/26(木) 13:07:40.09
RubyはどのLinuxと相性がいいですか?
Ruby開発者の多くが使っているLinuxのディストリはなんですか?
356デフォルトの名無しさん:2013/12/26(木) 13:27:03.53
結局はrbenvとか使ってパッケージシステムをガン無視して手元でコンパイルして使うことになるので
相性ってのは特段ないと思うが、どうしてもと言うならDebianかUbuntuのどれかだと無難かもしれん
いわゆるRedHat系を使ってるコアユーザーはあんまり見ない
357デフォルトの名無しさん:2013/12/26(木) 14:53:51.17
Ruby2.1のRubyinstallerはいつでますか?
358デフォルトの名無しさん:2013/12/26(木) 15:39:59.63
リリースされた時です
359デフォルトの名無しさん:2013/12/26(木) 15:42:41.26
Ruby2.1はリリースされたのでRubyinstallerでいつ出るのか聞いているのです
360デフォルトの名無しさん:2013/12/26(木) 15:51:00.16
日本語が理解できないバカ回答者
361デフォルトの名無しさん:2013/12/26(木) 16:29:29.73
362デフォルトの名無しさん:2013/12/26(木) 20:10:51.64
ミックスインと継承はどのように使い分ければ良いのでしょうか。
多重継承が出来ないからミックスインというのは分かるのですが、
だったら全部ミックスインじゃ駄目なんでしょうか。
363デフォルトの名無しさん:2013/12/26(木) 21:25:52.45
スーパークラスのインスタンスも作りたい場合は継承しかない
364デフォルトの名無しさん:2013/12/26(木) 21:31:07.13
jekyllrbって新規・更新分のファイルのみコンパイルする方法ってありませんか?
ファイル数が多くなると毎回コンパイル時間がかかるので不便です
365デフォルトの名無しさん:2013/12/26(木) 21:35:32.96
>>364
使ったことないけど、サイト見れば --watch で何とかなりそうな気配
366デフォルトの名無しさん:2013/12/26(木) 23:26:29.93
Rubyは死につつあるのか?
http://developers.slashdot.jp/story/13/12/26/0448251/

>私は最近node.jsで多くの仕事をこなしている。そして、同僚と
>node.jsはRubyの座を奪う物なのではないか」との議論を続けている。
367デフォルトの名無しさん:2013/12/26(木) 23:29:28.24
都合の良い部分だけを恣意的に引用して何がしたいのやら
368デフォルトの名無しさん:2013/12/26(木) 23:43:08.87
>>343 の元記事でやってるようなスクレイピングに文字列処理に CSV といった
スクリプト言語の昔からの主戦場にまで来られるとやだなあ
369デフォルトの名無しさん:2013/12/27(金) 00:14:04.02
>>362
ミックスインと継承は、どちらも既存の部品を拡張して新しい部品を作るという意味で似ている
ただし拡張元の部品がミックスインではモジュールであるのに対し、
継承ではクラスであるという点で、両者は異なるもの
そしてRubyのクラス(=Classクラス)はモジュール(Moduleクラス)のサブクラスであり、
モジュールとクラスの違いがミックスインと継承との違いをもたらす

そんな(モジュールには無くて)クラスにある特徴の一つが、属性(=インスタンス変数)を持てる事
たとえば「箱(Box)」クラスを継承すれば:
・「色(color)」属性を持つサブクラス「色付き箱(ColoredBox)」や
・「角度(angle)」属性を持つ「回転可能な箱(RotatableBox)」を
定義できるけど、ミックスインでは
新しい部品に「振る舞い(=機能)」は追加できても、属性を付け加えることができない
370デフォルトの名無しさん:2013/12/27(金) 01:12:47.30
"aaaa\nbbbb\ncccc".split($/)
=> ["aaaa", "bbbb", "cccc"]

こんな感じのソースを見たのですが、$/の部分が理解できません。
正規表現でもないし文字列でも無いし何なんでしょうか。

"aaaa\nbbbb\ncccc".split("\n")
=> ["aaaa", "bbbb", "cccc"]
同じ結果になりますが、これなら分かります。
371デフォルトの名無しさん:2013/12/27(金) 01:14:01.35
わー自己解決しました!まさかのグローバル変数w
372デフォルトの名無しさん:2013/12/27(金) 02:37:15.95
362です。ありがとうございます。

>>363
なるほど。ミックスインだとミックスインする前の
クラスのインスタンスは作れないってことですね。

>>369
Class.new.methods - Module.new.methods
=> [:allocate, :new, :superclass]
これがモジュールとクラスの違いでしょうか。
モジュールはインスタンスを作成できない(属性をもてない)、継承できない。

でも属性をもてないモジュールでも、ミックスインではクラスに属性を追加できますよね。
最近それを知って、継承とどう違うのか、どう使い分ければよいのか疑問に思ったのでした。
373デフォルトの名無しさん:2013/12/27(金) 02:41:26.69
javaのインターフェースみたいなもん
374デフォルトの名無しさん:2013/12/27(金) 02:53:58.21
rubyのブログってjavaに比べて少ないけどどうして?
375デフォルトの名無しさん:2013/12/27(金) 02:58:26.34
人気がなくて死にいく言語だから
376デフォルトの名無しさん:2013/12/27(金) 03:10:02.11
ジャバはオワコンって噂ですがルビーはとっくのとうにオワコンだったんですね
ルビーにセカンド・チャンスは訪れないんですか?
377デフォルトの名無しさん:2013/12/27(金) 03:36:56.56
>>376
今の流行りはどの言語ですか?
378デフォルトの名無しさん:2013/12/27(金) 03:57:33.38
rubyです
379デフォルトの名無しさん:2013/12/27(金) 04:43:20.73
>>376
Struts, Perl CGI -> PHP -> RoR, Django, Grails, Play, Lift, Wicket -> node.js -> PHP
380デフォルトの名無しさん:2013/12/27(金) 04:46:59.98
最近は分散環境とかモバイル環境とかで言語は何も流行ってないんじゃない。
敢えて言えばjavascriptが流行っている気はするが、リスクしか感じない。
381デフォルトの名無しさん:2013/12/27(金) 05:00:07.52
node.jsで十分だろうけど、Apacheが消えないのでPHPは不滅
node.jsが普及した頃合いにdart,golangが流行りだす。恐らく大人の事情
言語の学習コストなんて何かの負債が積もるだけなのでプレーンな言語しか触らないのが吉
突き詰めていくと、htmlだけでも詰め込むことは沢山ある
382デフォルトの名無しさん:2013/12/27(金) 05:18:02.25
phpがrubyのライバルだとするとサーバーサイドの要望を満たすようなrubyフレームワークがあればrubyのセカンド・チャンスになるでしょうか
rubyの課題としてはノンブロッキングとマルチコアの強化とそれを利用したフレームワークの整備ですかね
正規表現はjavaの方が強力なので、最近のrubyは複素数などちょっとした計算用途でしか使ってなくてあまり出番はないんですけど
383デフォルトの名無しさん:2013/12/27(金) 06:42:38.13
>>354
ありがとうございました
入れ子にしてもアクセスできました

o.singleton_class.superclass => String
あるインスタンスの特異クラスのスーパークラスは、そのインスタンスのクラスになっていて
クラスとインスタンスの間に割り込んでいるような印象でした

o.singleton_class.singleton_class.superclass => #<Class:Sstring>
o.singleton_class.singleton_class.superclass.superclass => #<Class:Object>
一方特異クラスの特異クラスは、スーパークラスの特異クラスと継承関係がありますね
祖先はいるけれども子は残せないというところに飲み込みがたいものを感じました
384デフォルトの名無しさん:2013/12/27(金) 12:07:45.90
node.jsがこれから流行るわけないだろ
なんか今日このネタどこかでみたなブログかTwitterで
もしかしてそういうのを鵜呑みにしちゃったバカなのかな
385デフォルトの名無しさん:2013/12/27(金) 12:31:25.43
Thinでアクセス制限する方法を教えてください
127.0.0.1以外の接続を遮断したいです
386デフォルトの名無しさん:2013/12/27(金) 12:58:29.06
>>383

"メタプログラミングRuby" でオブジェクトの関係を図解しているあたりを
(立ち読みでも)チェックしてみるといいかも。
387デフォルトの名無しさん:2013/12/27(金) 14:42:00.35
>>385
Thin も Rack アプリだから、Rack レベルで遮断すればいい
388デフォルトの名無しさん:2013/12/27(金) 17:44:06.90
死ねゴミ共がw
389デフォルトの名無しさん:2013/12/27(金) 18:39:52.98
>>372
>でも属性をもてないモジュールでも、ミックスインではクラスに属性を追加できますよね。

いや、単純なミックスインでは、クラスに属性は追加できないよ
「属性を追加する振る舞い(=機能)」をクラスに追加することならば可能だけどね

>最近それを知って、継承とどう違うのか、どう使い分ければよいのか疑問に思ったのでした。

ミックスインだと、>>369の例はどう書けるのかな?
継承ならば、初歩的な以下のコードになる:

 class Box; .... end

 class ColoredBox < Box
   attr_accessor :color
 end

 class RotatableBox < Box
   attr_accessor :angle
 end
390デフォルトの名無しさん:2013/12/27(金) 19:09:47.21
RubyはやっぱRailsがあって良かったよな
Pythonはそれがない
391デフォルトの名無しさん:2013/12/27(金) 20:34:34.25
>>390
Django
392デフォルトの名無しさん:2013/12/27(金) 21:43:25.33
Djangoもそうだけど、後発のRails風フレームワークってRailsを超えられないよな
Railsは最初に作られたときからもどんどん発展し続けてるし
最初に作る、というのがいかに技術的にすごいことか、という例だな
393デフォルトの名無しさん:2013/12/27(金) 22:07:23.01
越えられないというのはどの項目に対していっているのか?
394デフォルトの名無しさん:2013/12/27(金) 22:22:31.17
>>392
目的によるだろう。
Djangoはユーザ管理が標準であるからログインシステムではRailsを超えてると思うぞ。
手数少なくって意味ならCMSの方がいい。
395デフォルトの名無しさん:2013/12/27(金) 23:06:36.45
Rubyはプログラミング言語の中で最も簡単な言語のうちの一つ。
だから最近では小学校でRubyから始めるプログラミング学習を導入してたりする。
わかりやすいのは勿論メリットだが、ゴミのようなコードや情報が溢れるのは問題である。
396デフォルトの名無しさん:2013/12/27(金) 23:25:16.07
中学校で「ぱそこん」とBASICが蔓延したときもゴミのようなコードや情報が溢れた
高校大学で「ぱそこん」とほめぱげへようこそが蔓延したときもゴミのようなサイトや情報が溢れた

つまり気にする必要はまったくない
397デフォルトの名無しさん:2013/12/27(金) 23:35:31.43
BASICでもVBでもC89でもF77でもTurboPascalでもDelphiでもPerlでもJavascriptでもC#でもRubyでもPythonでも結局は同じだよね
398デフォルトの名無しさん:2013/12/28(土) 00:04:24.78
>>395
そもそもRubyって本当にそんな簡単な言語か?
誰が書いても同じようなクソコードになるJavaより全然難しい印象があるんだけど
個人的にC#、Java、VB、JavaScriptより難しいとは思う
399デフォルトの名無しさん:2013/12/28(土) 00:08:29.97
ナニをどんなふうに作るかによるんだよね
よく考えるまでもなく当たり前の話ではある
400デフォルトの名無しさん:2013/12/28(土) 00:15:47.92
読みやすいけど、難しい
奥が深い・・
401デフォルトの名無しさん:2013/12/28(土) 01:00:55.26
簡単の定義にもよるけど
とりあえず何か動くものを作る、という意味では
コンパイル必要なJavaなんかより遥かに簡単
正しいコードを書く、という意味ではJavascriptよりずっと簡単

言語仕様を踏み込んで理解しようと思っても(実装の汚さは別として)表向きはシンプルで分かりやすい
C全く分からんって人にも理解できるはず。
パーフェクトRubyあたりの本は小学生でも理解できる。Cの本は無理。

バランスよく簡単だとは思う。
402デフォルトの名無しさん:2013/12/28(土) 02:53:40.35
Javaなんて手動でコンパイルするやつなんていないだろ
IDEなりで自動でビルトして起動だよ
403デフォルトの名無しさん:2013/12/28(土) 02:55:46.98
>>402
IDEは分かって使ってる人には便利だが、初心者には分かりにくくさせてしまう
コンパイルという動作が必要ということは理解する上でも避けて通れないからな
404デフォルトの名無しさん:2013/12/28(土) 03:00:51.69
いやどのC#やVBの本もVisual Studio前提だし、Javaの参考書なんか少しでも実践的なものはEclipseやプレアデスのインストールからはじまってるだろ
自分でコンパイルすることにどれだけ意味があるのかわからんわ
405デフォルトの名無しさん:2013/12/28(土) 03:05:35.50
自分でコンパイルすることではなく、コンパイルしなければ動かないという点がハードルになるんだよ
もちろん、分かってる人間にはらくらく超えられるハードルなんだが、初心者はつまづきやすい部分でもある

PHPみたいなクソ言語がもてはやされてるのもその辺に理由があるのだろう
406デフォルトの名無しさん:2013/12/28(土) 03:38:50.27
>>397
それって誘導的に反証のレスを期待してるの?

>>400
Rubyの難しさはJava,PHPの難しさとは別のところにあるよ

>>402
javac, antからやれ
407デフォルトの名無しさん:2013/12/28(土) 03:41:18.51
>>405
文法がc/c++にそっくりだしWeb上の情報量が多い
自己解決より誰かが解決してる情報量が圧倒的に多くて効率が良い
408デフォルトの名無しさん:2013/12/28(土) 04:07:47.37
Ruby暦1ヶ月程度だけど何の障害も無い俺にRubyの難しさを教えてくれw
409デフォルトの名無しさん:2013/12/28(土) 04:08:03.46
rubyは短く書くのが簡単。
pythonは書き方揃えるのが簡単。
Javaは読むのが簡単。

長所を活かせるかは使い手次第。
410デフォルトの名無しさん:2013/12/28(土) 04:09:04.15
>>408
バージョン変わる時が大変。
411デフォルトの名無しさん:2013/12/28(土) 05:48:47.02
>>397のラインナップを見てわからない人がいるのか
これ全部「中高や大学教養の教育現場で導入がもて囃されたことが(瞬間最大風速的に)ある言語」だぞ
C89とF77は言語というかバージョン名だったりコンパイラ名だったりするがぬ

言語がなんであろうとライブラリがどうであろうと「ふつうのひと」が初心者時間内や授業時間内に作れるプログラムはクソである
412デフォルトの名無しさん:2013/12/28(土) 05:50:34.94
ところでそれは Ruby 初心者スレッドで話すようなことなのか
413デフォルトの名無しさん:2013/12/28(土) 06:07:29.49
Rubyに妙な期待や過剰なDisを持ってる人への牽制にはなるんじゃないの
414デフォルトの名無しさん:2013/12/28(土) 07:13:14.43
>>411
国語の作文ですらそうだから仕方なかろうて
415デフォルトの名無しさん:2013/12/28(土) 11:30:22.26
恥ずかしいので自分のメイン言語がRubyだなんて言えない。
すっげー頭悪そうだし、流行に乗せられた馬鹿みたいだから。
Pytyon使いならカッコイイので堂々と言える。
416デフォルトの名無しさん:2013/12/28(土) 12:12:55.32
明確な目的がないと何つかってもバカだと思うよ
もっといえば、目的もなくプログラミングをやるのは最高に頭が悪いと思う
中高生がオレ、ギターやってるんだぜ!ぐらい、ちょっと遠くから見たい存在
417デフォルトの名無しさん:2013/12/28(土) 12:20:05.92
むしろ PC を持っててちょいオタならプログラミングをかじらない理由がない
418デフォルトの名無しさん:2013/12/28(土) 12:20:49.58
サービスが作りたいのか、ゲームが作りたいのか、言語処理系が作りたいのか
Softwareが作りたいのか、テキスト処理したいのか、データマイニングがしたいのおか
みんな、自分自身がわからないままプログラミングをしているって言うんだ
419デフォルトの名無しさん:2013/12/28(土) 13:16:07.00
設計、デザパタ、リファクタリング、再帰
GC付きの言語で、独自のイケてるコードを書くなんて2の次
コーディング規約でも読んでりゃ良い
420デフォルトの名無しさん:2013/12/28(土) 14:00:03.67
そのメインの言語を使って、何をやったかが大事だ。

俺? エロ画像集めに決まってるだろ。
421デフォルトの名無しさん:2013/12/28(土) 22:23:25.49
エロ画像集めは無理なく自然に実力がつくと聞いている

本能が強力にあなたをサポート
嫌だと思っても、ついついコードを書いてしまう

まさに、最強の学習法である

でも女の子である俺はそんなはしたない事はしないけどね
422デフォルトの名無しさん:2013/12/28(土) 22:48:29.86
俺もwinnyを必死に勉強してパケット解析の能力が付いたっけなぁ
423デフォルトの名無しさん:2013/12/28(土) 23:49:43.26
ザッカーバーグも画像集めてたな
424デフォルトの名無しさん:2013/12/29(日) 00:39:47.67
初めての言語が Java
メビウスみたいなシューティングゲームを作りたくて覚えた
付随して高校数学をやり直したぞ
425デフォルトの名無しさん:2013/12/29(日) 00:40:59.01
Webでのゲーム、アプレット
426デフォルトの名無しさん:2013/12/29(日) 01:04:08.09
class Test
def a= a
@a = a
end
def a
puts @a
end
end

t = Test.new
t.a = 'hoge'
t.a


これが通る理由を教えて下さい。
定義したメソッドは a=であり a = ではありません。
Rubyではメソッドに半角スペースは使えないのではなかったのでしょうか。
427デフォルトの名無しさん:2013/12/29(日) 01:21:10.85
t.a = は Test#a= を呼び出す糖衣構文である
それだけの話
428デフォルトの名無しさん:2013/12/29(日) 01:23:10.86
リクエストURI
http://xxx/xx/xx.php
[truncated] request={"header":{"api_version":"x.x.x","packet_unique_id":xxxx},
"get_abc":[{"id":xx,"data_0":xx,"data_1":xx,"data_2":xx,"data_3":xx},
{"id":xx,"data_0":xx,"data_1":xx,"data_2":xx,"data_3":xx},

このようにhttp://xxx/xx/xx.phpに送信されると思うのですが
"id":xx,"data_0":xx,"data_1":xx,"data_2":xx,"data_3":xx
このパターンが例だと2つですが
5つにして送信したいのです。
置換ではなく変更したものを"追加"にするにはどうすればよいか教えて頂けませんか?

url = gr.get_url()
if(!gr.is_match(url,"^http://xxx/xx/xx.php"))
return
end

ここから色んなコードを組んで試してはみたのですが
考えれば考えるほど混乱し失敗して
質問させて頂きました。
よろしくお願いいたします。
429デフォルトの名無しさん:2013/12/29(日) 01:37:14.85
>>427
つまりパーサーレベルで=が後についてるメソッドは空白が無視できるように特別扱いされてるってことですか?
430デフォルトの名無しさん:2013/12/29(日) 01:47:19.87
>>429
ま、だいたいそんなところ

そのため、以下のような罠がある

class A
def b=(v)
@b = v
end
def f
b = 1
@b
end
end

a = A.new
a.b = 2
a.f => 2

これは、f というメソッドの中の b = 1 がメソッド扱いされず、ローカル変数への代入として
扱われてしまうことによる
これを回避するには、self.b = 1 と書かなければならない
431デフォルトの名無しさん:2013/12/29(日) 02:17:59.28
>>430
ありがとうございました
432デフォルトの名無しさん:2013/12/29(日) 14:32:57.05
Rubyのハッシュって数字をキーには持てないのでしょうか

p {1=>:a}



コンパイル通りません
433デフォルトの名無しさん:2013/12/29(日) 14:40:45.01
>>432
ハッシュじゃなくてブロックと解釈されてる
p({1=>:a})
なら通る
434デフォルトの名無しさん:2013/12/29(日) 15:41:28.16
ありがとうございました
435デフォルトの名無しさん:2013/12/29(日) 16:16:06.22
>>432

もてる。
ただし、pメソッドに渡すなら p({1=>:a}) ( あるいは最後の引数の{}を省略してp(1=>:a) ) としないと駄目。

p {1=>:a} という書き方は、pメソッドにブロックを付けた形となり、中身がブロックとしては構文エラーになる。
p {'a'=>:a} でもエラーになるよ。
436デフォルトの名無しさん:2013/12/29(日) 16:17:00.79
あれ、さっきリロードしたときは>>433以降なかったのに…
437デフォルトの名無しさん:2013/12/29(日) 16:22:52.09
どこかにRubyのTrapが詰まったサービスってないの?
438デフォルトの名無しさん:2013/12/29(日) 16:37:46.70
https://github.com/neo/ruby_koans
あと昔の公式マニュアルの中に Ruby::Trap ってページがあったと思うけど行方不明
439デフォルトの名無しさん:2013/12/29(日) 19:01:27.58
Rubyネタをつぶやくと教祖がリツイートして晒しあげるからうぜえ
440デフォルトの名無しさん:2013/12/29(日) 21:31:00.91
>>438
現行の原稿はここにある。
ttps://github.com/rurema/doctree/tree/master/faq/trap

HTML化ドキュメントが生成されるようにするのは作業中(というか、誰かやって状態)じゃなかったかな?
441デフォルトの名無しさん:2013/12/30(月) 12:22:19.61
>>439
今後、聖地ではメタプログラミング騎士団たちによる魔女狩りや、
ジャック・ド・マツェーの異端審査すら起こるだろうが、
コアコミッタたちの魔女化、所謂、ワルプルギスの夜に比べると
ヒッチハイカーたちにとって瑣末な問題である。

そして、トロールなんて被害のない場所でボヤいている。
IT系の糞記事を書く記者とか。私とか。
魔女を生み出すぐらいなら健全な精神を持った子供たちは、
pypyがはやいとかcincoがオープンになったとかで騒ぐより、
manコをなめたりFAQした方がよっぽど良いと思う。
442デフォルトの名無しさん:2013/12/30(月) 12:48:06.60
>>440
なるほど。生きてはいたのね
443デフォルトの名無しさん:2013/12/30(月) 13:04:43.22
わたしのたった一つの友達言語
444デフォルトの名無しさん:2013/12/30(月) 13:08:06.00
渾身のダジャレをスルーされたっ!
445デフォルトの名無しさん:2013/12/30(月) 13:16:41.93
>>444
きっと書いたやつは何かのパラノイア持ちだと思うね.
わたしってホント、バカ。とか、もう誰にも頼らないとかクダ巻いてるぜ
446デフォルトの名無しさん:2013/12/30(月) 23:43:00.64
BerkshelfとかChefとか本当に便利なのか立ち止まって考えよう
2013年12月29日 04:54
http://dqn.sakusakutto.jp/2013/12/berkshelf_chef_gem_ruby.html

>berkshelf便利だから使うべき、みたいな記事がいっぱいある。
>ChefとかBefkshelfとか組み合わせて便利便利鼻血ブー、みたいなやつ。

>私はこういう「gemのライブラリを組み合わせて作られたサーバ構築ツール」を手放しで礼賛する風潮に違和感を感じる。
>みんなが便利便利言ってるから自分も便利便利と言ってしまっているだけではないのか。
>王様がステキな服を着てるとみんなが言ってるけど、あなたにはその服が本当に見えているのか。
>本当にこれらのソフトウェアを使って私たちは幸せになれるのだろうか。
>ちょっと冷静に考えてみてほしい。

えらく納得してしまったこの記事。
447デフォルトの名無しさん:2013/12/31(火) 01:10:57.32
Rubyは開発環境・実行環境が貧弱でバージョン間の互換性がないから初心者にはお勧め出来ない
数年前に刊行されたRuby入門本やRails入門本なんて今では役に立たないしな
448デフォルトの名無しさん:2013/12/31(火) 01:13:56.86
インスコまでの苦労話で1mmも関係ない記事だから読むだけ無駄だよ
449デフォルトの名無しさん:2013/12/31(火) 01:54:48.83
初心者がそういうのではまって長時間無駄にするって多いんじゃないの?
というか初心者じゃなくても。
450デフォルトの名無しさん:2013/12/31(火) 02:28:36.68
>>447
どっちかって、プログラミングの入門書全部が役に立たなくって
概要だけ掴んで本家のマニュアル読むしかない
451デフォルトの名無しさん:2013/12/31(火) 02:35:33.13
Ruby初心者だけどRubyの何が奥深いのかマジで分からん
メタプログラミングのこと??
あんなもん最初見た時ちょっとトリッキーに見えるだけで何の奥深さも感じない。
Javaの方が100倍は奥深いわ
452デフォルトの名無しさん:2013/12/31(火) 02:49:27.37
Javaの奥深さは奥が深い症候群(a.k.a バッドノウハウ)というものでは
Ruby is an accepable Lispと言われるくらいだからLispを奥深いと思わないならはいそうですねとしか
453デフォルトの名無しさん:2013/12/31(火) 02:49:50.57
>>451
コミュニティの人間模様
454デフォルトの名無しさん:2013/12/31(火) 02:52:53.98
うーん
だってruby使ってると子供が使うオモチャのようにしか感じない。
Cのような繊細なスキルやプログラミング知識は不要だし、Javaのような経験も要らない
455デフォルトの名無しさん:2013/12/31(火) 03:39:34.14
初心者でも奥が見える言語Java。
456デフォルトの名無しさん:2013/12/31(火) 03:42:54.76
最近こういうネタもすっかり減ってしまった・・・
457デフォルトの名無しさん:2013/12/31(火) 03:44:42.13
Rubyの奥の深さは、歴史に潜む影の存在が見え隠れすることだよ。
これは2000年前に始まったChristian文化の復活だろうね。
Javishとか呼ばれるゴスリンからの選民思想を引き継いだ旧支配者たちが
Strutsの包茎手術ついて真面目に議論していたり、
プロプライエタリのゴロツキたちがSoftwareパテントの徴税しにくる時代にDHHって救世主が現れたんだ。彼は大きな偉業と奇跡をやってのけた。
社会的弱者たちを救ったRoRとウェブアプリ文化。
すべてのモノがCloudに救いを見た。

だけど、実際は歴史の影に潜む影の存在によって全てが仕組まれていたんだ。
その痕跡は、そこらじゅうに見え隠れしている。
いわゆる、魔法少女たちの希望と絶望の相反転によって、
人類史における文化的な発展を促進させる触媒だったんだ。ぞっとするね。

どこかで計算機科学のバックグラウンドを持った人類史学者が、
「Ruby社会と基督文化ー超弦理論的視点による考察」
って論文でも執筆してるんじゃないかな。
458デフォルトの名無しさん:2013/12/31(火) 03:49:35.61
またまた凄いやつが棲みついちゃてるんだなこのスレはw
459デフォルトの名無しさん:2013/12/31(火) 04:27:50.16
キャリア持ちがRubyistになるなんて、Larryが天国へ行くより難しい
460デフォルトの名無しさん:2013/12/31(火) 11:40:18.14
>>457
ようやくレスが噛み合ってよかったなw
461デフォルトの名無しさん:2013/12/31(火) 11:47:03.82
ttp://www.playmycode.com/docs/quby

海外でもアニメが流行っていて、この名前が付けられたなら不思議ではないんだけど、
タダの偶然でこんな名前が付けられたんだとすると、本当にぞっとするよね。わけがわからないよ。
462デフォルトの名無しさん:2013/12/31(火) 12:11:45.60
>>446
ChefとBefkshelfを使うことに対してじゃなくて
インストールに戸惑ったから愚痴ってるだけの記事
中身がない
最近流行の釣りで注目をあびようとかんがえてるきちがいが書いた記事
463デフォルトの名無しさん:2013/12/31(火) 12:36:12.06
Will Code Ruby For Food
464デフォルトの名無しさん:2013/12/31(火) 12:51:20.21
WindowsでRubyというのがまず間違いだ
465デフォルトの名無しさん:2013/12/31(火) 13:03:34.98
だよね。スタバでMac book Airなんて流行遅れ
通は吉野家で中古ノートにGNUStep
466デフォルトの名無しさん:2013/12/31(火) 15:01:52.73
Objective-CがApple以外で使えないのは困ったもんだ
ってRubyのスレだろここは

Ocraにはいつもお世話になっています
467デフォルトの名無しさん:2013/12/31(火) 22:06:10.99
>>447
>バージョン間の互換性がないから初心者にはお勧め出来ない

互換性がないってのは、たとえばこういふ話のことかな?

> 940 名前: デフォルトの名無しさん Mail: sage 投稿日: 2013/12/31(火) 03:44:40.65
> >>939 エラーにならなくなった理由は別にある。
>
> 2.x
> range -> リストを作る。OverflowErrorでなくとも、大きなメモリを確保しようとして
> MemoryErrorになることもなる。
> xrange -> range型のオブジェクトを返す。
> rangeオブジェクトの各属性は 構造体で (Cの)long型で宣言されてるので、値が範囲外だと
> OverflowError
>
> 3.x
> range -> range型のオブジェクトを返す。rangeオブジェトの各属性の型はPyObject。
> pythonの数値(多倍長整数)を持つようになったので、2.xの時の制限はなくなった。
468デフォルトの名無しさん:2013/12/31(火) 22:17:32.87
>>466
2時間前にカキコされた1つ前のスレさえ読んでいないのか、
それとも読んではみたものの無知故なのか......?

ちなみにGNUstepとRubyとのバインディングは存在する
・RIGS: Ruby Intrerface to GNUstep
  http://www.gnustep.org/experience/RIGS.html

位置付けとしては(MacRubyではなく)RubyCocoaに近い
以前にDebian上でインストールに挑戦してみた時には
Obj-Cコード上へ修正が必要で、誰もが安心して使える状態にはなかった
でも、一度インストールしてしまえば、GNUstepのフレームワークは
OS X でいうところの10.3に相当する素朴な仕様なので、
その知識があれば普通にRubyスクリプトだけでGUIアプリが気軽に作れる
469デフォルトの名無しさん:2014/01/01(水) 03:55:55.40
メソッドの外でインスタンス変数?を使っているコードを見ました。
class Hoge
 @hoge = "hoge"
end
この@hogeにはHogeのインスタンスからもアクセス出来ないのですが、
特異クラスってとこに定義されてるからという理解であってるでしょうか。
470デフォルトの名無しさん:2014/01/01(水) 09:19:26.13
前にも出てたけど、クラスとはClassクラスのインスタンスであるというお話だ

irb> class C; @hoge=1; end
irb> p C.instance_variables
[:@hoge]
irb> p C.instance_variable_get(:@hoge)
1

"普通"にプログラムしているぶんにはあんまり使わない機能
メタプログラミングとかプログラムするプログラムとか作るときに使うことがある
471デフォルトの名無しさん:2014/01/01(水) 11:49:20.43
クラスインスタンス変数で調べるとよい
472デフォルトの名無しさん:2014/01/01(水) 13:09:52.30
>>469
>>470,471で正しいけど、あえて蛇足する

Rubyではあらゆるすべてがオブジェクトだから、Hogeクラスもオブジェクトになる
で、Hogeクラスは:
・「スーパークラス - サブクラス 関係」における、Objectクラスのサブクラスである
   BasicObject --> Object --> Hoge
     irb(main):002:0> Hoge.superclass
     => Object
     irb(main):003:0> Object.superclass
     => BasicObject
     irb(main):004:0> BasicObject.superclass
     => nil
・「クラス - インスタンス 関係」における、Classクラスのインスタンスである
   Class --> Hoge --> hoge
     irb(main):002:0> hoge = Hoge.new
     => #<Hoge:0x1a59f0>
     irb(main):003:0> hoge.class
     => Hoge
     irb(main):004:0> Hoge.class
     => Class
     irb(main):005:0> Class.class
     => Class
473デフォルトの名無しさん:2014/01/01(水) 16:55:52.42
> 特異クラスってとこに定義されてるからという理解であってるでしょうか。

あってない
474デフォルトの名無しさん:2014/01/01(水) 17:34:15.38
ありがとうございます。
ClassクラスのインスタンスであるHogeのインスタンス変数という事ですね。

class << Hoge
 def get_hoge
  @hoge
 end
end
とすると参照できるので、特異クラスってところに定義されてるのかと思いました。

class << Hoge
 @kore = "kore"
end
こうやると特異クラスのインスタンス変数になるのかな。
475デフォルトの名無しさん:2014/01/01(水) 18:10:31.55
Kona Linux2.2(Debian wheezyベース)で
mikutterに画像投稿プラグインを導入しようと
思ったのですが、twitter gemのインストールが
うまくいきません。以下のようなエラーが出ます。

/usr/bin/ruby1.9.1 extconf.rb
/usr/local/lib/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mkmf (LoadError)
from /usr/local/lib/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require'
from extconf.rb:1:in `<main>'

extconf failed, exit code 1

rubyのバージョンはruby 1.9.3p194、
gemのバージョンは2.2.0です。
どなたかよろしくお願いいたします。
476デフォルトの名無しさん:2014/01/01(水) 18:43:47.51
aptでruby-devかruby1.9.1-dev入れとるか?
477デフォルトの名無しさん:2014/01/01(水) 19:40:49.37
>>475
コンパイラが入ってないようにも見える
Rubyをパッケージで入れてるなら>>476で、devも入れてるならgccでも入れるがよろしい
478デフォルトの名無しさん:2014/01/01(水) 19:51:26.04
>>476-477
ありがとうございます!
gccは入っているようですがdevが入っていませんでした。
しかし今度は~/.mikutterディレクトリにpluginディレクトリを作ったら
mikutterが起動しない…?
479478:2014/01/01(水) 20:56:08.55
スマソgit使ったらいけました。スレ汚し失礼。
480デフォルトの名無しさん:2014/01/02(木) 12:51:29.36
Windowsで環境ごとにgemを分けることってできませんか?
Pythonでいうvirtualenvみたいな感じでgemを環境ごとに分けたいんです
481デフォルトの名無しさん:2014/01/02(木) 19:37:26.27
こんにちは、Ruby初学者です。教えてください。

いまとある入門書を読んでいて、組み込みクラスの継承関係のところなのですが

p Object.is_a?(BasicObject)
を実行すると
true
と表示されてこれはOKなのですが、
p BasicObject.is_a?(Object)
も実行すると
true
となります。これはどうしてなのでしょうか?
482デフォルトの名無しさん:2014/01/02(木) 20:10:20.64
> Object#is_a?
> オブジェクトが指定されたクラス mod かそのサブクラスのインスタンスであるとき真を返します。

なので、

Object.is_a?(BasicObject) #=> true
ObjectはClassクラスのインスタンスであり、ClassクラスはBasicObjectクラスの子孫なので、true

BasicObject.is_a?(Object) #=> true
BasicObjectはClassクラスのインスタンスであり、ClassクラスはObjectクラスの子孫なので、true

以下とは意味が違う

Object.new.is_a?(BasicObject) #=> true
Object.new.is_a?(Object) #=> true
BasicObject.new.is_a?(Object) #=> error
483デフォルトの名無しさん:2014/01/02(木) 20:29:53.85
>>482
なるほど!よくわかりました!ありがとうございましたm(_ _)m
484デフォルトの名無しさん:2014/01/03(金) 00:29:42.99
あと、三人称を使った表現は避けるようにしよう、という理由で、
今は is_a? よりも kind_of? を使うほうが良い、とされている。

それと BasicObject はいろいろ特殊なので、初心者が実験とかに使うのは避けたほうが良い。
485デフォルトの名無しさん:2014/01/03(金) 02:40:57.13
>>480
rvmとかrbenv入れてみたら?
winで使えるかはわかりませんが…
486デフォルトの名無しさん:2014/01/03(金) 02:46:01.40
Windowsって元からgemは分かれてる気がするが
487デフォルトの名無しさん:2014/01/03(金) 05:47:22.20
BasicObjectは「存在しないもの」として扱うといい
いろいろ考えても無駄なので

Kernelと同じ
488デフォルトの名無しさん:2014/01/03(金) 14:21:08.38
>>484
あざます
489デフォルトの名無しさん:2014/01/03(金) 15:54:05.22
ふたたび481なんですが、これは質問ではありませんで、つぶやき。

自分、仕事でjava歴10年、プログラミング歴はCとPascalから
入った25年のオサーンなんだけど、Rubyっていいねー。
まだ入門書半分読んだだけなのだけれども。

ある問題を解くプログラムをjavaで書こうとすると、その問題を解くのに
本質的ではないというか核ではないコードをモリモリ書かなきゃいけないけど
Rubyだと、核になるコードだけ書けばよさげ。
490デフォルトの名無しさん:2014/01/03(金) 16:11:17.46
そう言ってもらえてルビーも嬉しい
491デフォルトの名無しさん:2014/01/03(金) 16:56:50.94
>>489例えばどんなコード?
492デフォルトの名無しさん:2014/01/03(金) 17:22:57.91
>>491
難しい。>>489
>よさげ
と書いたのは予感レベル。

ただjavaだとこんなにベタに書かなきゃいけないけどRubyだとこんなに綺麗に
書けるよっていう例を作るのって、かなり頭良くないと出来ないだろうな
っていう気はする。

自分で作ったクラスの二項演算子や単項演算子、添字メソッドを
定義できるのが萌えた。
何か数学的なモデル(群とか)を基礎にしたシステムを簡潔に書けそう?

いやまあ、テキトーにヨタ話をしているだけなので流してw

自分はそれができるまでまだRubyに熟達してない。
まだ、「たのしいRuby」の半分までいっただけだから。
493デフォルトの名無しさん:2014/01/03(金) 17:36:43.74
楽しそうだなw
494デフォルトの名無しさん:2014/01/03(金) 17:42:59.73
横から。
オブジェクト指向でないのにJava使わされると、余分なコードが多いと感じる。
rubyなら、そうはならない。
495デフォルトの名無しさん:2014/01/03(金) 18:09:01.18
余計な物など無いよね
すべてが君と僕との愛の構えさ
496デフォルトの名無しさん:2014/01/03(金) 18:45:46.28
>>495
101回目のプログラミング
497デフォルトの名無しさん:2014/01/03(金) 19:13:53.16
たとえばダイクストラ法を書くときJavaとRubyで変わりますか?
498デフォルトの名無しさん:2014/01/03(金) 19:29:29.95
変わるとも言えるし変わらないとも言える
499デフォルトの名無しさん:2014/01/03(金) 19:52:51.52
>>497
アルゴリズムは変わらない。だからダイクストラ法って言う。
記法は変わる。だからJavaとかrubyって言う。
500デフォルトの名無しさん:2014/01/03(金) 20:52:24.63
ソートがオシャレに書ける。ブロック付きメソッド、いいね−
501デフォルトの名無しさん:2014/01/03(金) 21:18:16.75
>>489
RubyはBasicの皮を被ったLispだから。
502デフォルトの名無しさん:2014/01/03(金) 21:21:59.51
PHP+Apacheでmod_phpみたいに
homeディレクトリを作れば再起動しなくてもURLが公開されるようにしたいんですが
なんかそういうのないですか?
いまはthinを使ってるんですけどwebアプリごとにサーバを立ち上げるのが面倒くさいんです
常時5サイト程度は立ち上げてるのでタスクバーにたまっちゃうし
503デフォルトの名無しさん:2014/01/03(金) 21:29:41.29
Ruby Windows サービス でぐぐればやってる人はいるけど面倒くさいだろうなあ
504デフォルトの名無しさん:2014/01/03(金) 21:36:09.80
>>501
なるほど〜

>RubyはBasicの皮を被ったLisp
に関係あるのかもしれないけど、(またテキトー言いますが)
この言語を作った人は

プログラムを書く快楽

をよく知ってる人なんだろうなという気がした。
505デフォルトの名無しさん:2014/01/03(金) 21:53:57.40
Ruby on Railsとかいう人を馬鹿にするフレームワークに5年ぐらいどっぷり浸かってたらRails以外マジで何もできなくなってた。
PHPすら難しく感じるレベル。フレームワーク無いと何も作れない。
ちょっとしたシェルスクリプト書くのも難しい。昔よく書いてたvim scriptも難しくてお手上げ
506デフォルトの名無しさん:2014/01/03(金) 23:16:02.28
ブロック使ったソートってそんなおしゃれかなぁ・・
UFO演算子使うのってわかりづらいしダサいような
507デフォルトの名無しさん:2014/01/03(金) 23:25:56.62
入門者オサーンです。
いまProcオブジェクトをcallで呼び出すところまで
きたんだけど、Procオブジェクトって、JavaScriptのクロージャーっぽいね?
(JavaScriptの、は不要か)

なんかブロック付メソッド、core rubyのけっこうヤマだね。
508デフォルトの名無しさん:2014/01/04(土) 00:28:17.55
nil.to_i => 0
この仕様は何か意図があるのか?
to_iやto_sを多用するのがいけないのかもしれないが、この仕様が酷く見つけ辛いバグを生むんだ。
例外投げてほしいんだけど。
509デフォルトの名無しさん:2014/01/04(土) 00:41:32.37
>>508

irb(main):001:0> class NilClass; undef :to_i; end
=> nil
irb(main):002:0> nil.to_i
NoMethodError: undefined method `to_i' for nil:NilClass
from (irb):2
from /opt/local/bin/irb:12:in `<main>'
510デフォルトの名無しさん:2014/01/04(土) 00:47:20.96
Integer(nil) # => TypeError
511508:2014/01/04(土) 00:56:10.15
口応えするようで申し訳ないが、解決方法があるのは分かるんだけど
nil.to_iが応答する仕様に何か意図があるのかが知りたいんです。
NULL値にメッセージを送れば例外発生すると思うのが普通だと思うので。
512デフォルトの名無しさん:2014/01/04(土) 01:09:46.58
>>507
ようこそ、Rubyの世界へ

>Procオブジェクトって、JavaScriptのクロージャーっぽいね?

クロージャっぽいと言うよりも、Rubyのブロックはクロージャそのものだよ
クロージャは Proc.new で動的に生成できるけど、
リテラルとして静的に生成するのがブロック記法になる

で、JavaScriptではクロージャを function(x) { ..... } と書くけど、
メソッドの引数としてクロージャを渡す場合には、
Rubyならばブロック記法で { |x| .... } とコンパクトに書ける

JavaScript:
 [1, 2, 3].filter(function(x) { return x > 1; });  // => [2, 3]
Ruby:
 [1, 2, 3].select { |x| x > 1 }  # => [2, 3]

Rubyに慣れてくると、JavaScriptの function/return といったキーワードや、
メソッド引数カッコ、そして行末のセミコロンがウザク感じられるようになるので、
くれぐれも用法/用量を守ってRubyを服用するように心がけてくださいませw
513デフォルトの名無しさん:2014/01/04(土) 01:12:25.99
>>511
#define NULL 0

が由来ではないかと思われ
(個人的には、例外発生が正しい振る舞いだと思うけどね....)
514デフォルトの名無しさん:2014/01/04(土) 01:19:08.78
Integer(nil) # => TypeError
String(nil) # => ""

これも意味不だよな
515デフォルトの名無しさん:2014/01/04(土) 02:10:41.22
516デフォルトの名無しさん:2014/01/04(土) 08:23:50.06
>>508
nilはundefではない
nilはnullでもない
「空」を表す概念であって、特定のオブジェクトに(ルーズに)変換したら
そのオブジェクトの空っぽの状態/初期状態になることが強く期待されている
例外が起きることを期待するのがそもそも誤り

irb> nil.to_s
=> ""
irb> nil.to_i
=> 0
irb> nil.to_f
=> 0.0
irb> nil.to_a
=> []
irb> nil.to_h
=> {}

Obj.newの引数にしたときどう振舞うかは好きにせえ
こっちは例外が起きるパターンが多いが
あと>>514に関してはわりとブレてる
517デフォルトの名無しさん:2014/01/04(土) 08:34:42.56
ラムダの矢印リテラル -> (x) {x+1} とカッコはくっつけないとエラーという仕様はいつ治るんですか?
518デフォルトの名無しさん:2014/01/04(土) 08:58:46.33
と思ってたら2.0で直ってたんですね。
当分1.9で行くしlambdaリテラルの方を使うのでまあいいんですけど。
それとprocインスタンスのコールは、f.call(42)ではなくf[42]という構文もあるみたいですが知りませんでした。
新機能紹介や2.x向けのチュートリアル(英語可)はないでしょうか?
519デフォルトの名無しさん:2014/01/04(土) 16:10:57.29
もう一つ
f.(42)

ドキュメントどこだろう?
ローカル変数宣言がなければ、引数の括弧は省略してしまえるとか
そもそもブロックパラメータでのローカル変数宣言とかもドキュメントがないような

f = -> x,y=1,z:2 do x+1 end # do endでもいいとか
520デフォルトの名無しさん:2014/01/06(月) 00:51:02.86
Enumerableのメソッドで、
中身を先頭から評価していって、truthyな最初の値のみを得るいい方法ってありませんか
外部リソースの取得をするので、無駄な評価するのは避けたいです
Enumerable# lazy.map.select.first という形で実装はできましたが、
2.0.0以降となってしまうので、lazyを使わずにもう少しRubyらしくできればと思いました
521デフォルトの名無しさん:2014/01/06(月) 01:05:39.63
Enumerable# find
でよい?
522デフォルトの名無しさん:2014/01/06(月) 01:34:17.92
Enumerable#findはブロックの評価結果が真になったときの「元の要素」なのでだめでした
これのブロックの評価結果を返す版が欲しいんですが
523デフォルトの名無しさん:2014/01/06(月) 02:42:36.15
each と break を組み合わせるぐらいかな
[nil, nil, 2].each {|i| break i if i } # => 2
524デフォルトの名無しさん:2014/01/06(月) 02:55:52.27
525デフォルトの名無しさん:2014/01/06(月) 04:50:13.08
A::B::C という定数?から A::B とひとつ上の階層の定数を得たいのですが、
文字列にしてごにょごにょして eval するのが普通なのでしょうか?
526デフォルトの名無しさん:2014/01/06(月) 09:49:21.74
>>520
2.0以降でLazyを使って実装できたのなら、
その1.9におけるプロトタイプ実装である enumerable-lazy を試すとか

Gems:
 http://rubygems.org/gems/enumerable-lazy

GitHub:
 https://github.com/yhara/enumerable-lazy
527デフォルトの名無しさん:2014/01/06(月) 09:57:31.34
twitter, github, rails, Mongel, redmine, RSpec, cucmberと、
いつだって時代の最前線にいて、
いつも後から他言語に似たようなツールが出来上がるのは何でしょうか?
528デフォルトの名無しさん:2014/01/06(月) 09:58:33.99
>>525
eval よりも Module#const_get のほうが、
意図が明確になってベターではないかと
529デフォルトの名無しさん:2014/01/06(月) 10:11:37.96
>>489
仕事で使われない理由も、是非、考えてみてね
530デフォルトの名無しさん:2014/01/06(月) 10:14:27.02
>>529
Ruby on Rails で仕事をしている人が
世界中にいる理由も、是非、考えてみてね
531デフォルトの名無しさん:2014/01/06(月) 10:32:47.75
日本ですら、あんまり使われてないよね
Rubyハッカソンに参加したら社会的追放者みたいなのしかいなかったよ
刺青と鼻ピアスとモジャモジャした長髪が印象に残ったぐらい
いや、むしろ君らにぴったりかもね
532デフォルトの名無しさん:2014/01/06(月) 13:22:30.68
企業文化ではリチャード・ストールマンは受け付けられないだろうな
533デフォルトの名無しさん:2014/01/06(月) 14:50:58.74
日本では所詮サラリーマンなんだろ?
システム上のワーカーとしての生き方について何か不満でも見つけたのか?
534デフォルトの名無しさん:2014/01/06(月) 14:56:11.93
使われてない、使われてない、と連呼することで、脳内妄想を強化してるんだろうなぁw
535デフォルトの名無しさん:2014/01/06(月) 15:28:10.56
最初は皆、美しくて書きやすい印象を持つ
次に、美しくも壊れたコードに出会って絶望する
536デフォルトの名無しさん:2014/01/07(火) 00:43:38.12
実際Rubyあまり使われてないけど、
使われてるかどうかと、言語そのものの良し悪しは
ビックリするほど無関係ってことはObjective-Cで実証済みだしな
537デフォルトの名無しさん:2014/01/07(火) 01:10:03.82
Array( { 'a' => 1 }) #=> [['a', 1]]

この糞仕様を何とかしろ
538デフォルトの名無しさん:2014/01/07(火) 01:25:53.49
>>537
どうなって欲しいんだ?
539デフォルトの名無しさん:2014/01/07(火) 01:43:04.08
[{'a' => 1}]
あれ、こうなってほしいのは俺だけ?
540デフォルトの名無しさん:2014/01/07(火) 02:10:38.87
RoRバージョン上がって肥大化しすぎだろ
もうコレ駄目だわ
541デフォルトの名無しさん:2014/01/07(火) 03:41:57.13
PHPなんてフレームワークが増える一方で、それが枯れてるのか分からない
542デフォルトの名無しさん:2014/01/07(火) 09:57:07.66
>>537,539
Array(obj) に渡す引数 obj は列挙可能(enumerable)なオブジェクトであり、
obj を列挙した各要素から構成されるArrayオブジェクトを返す

結果として、引数 obj がハッシュの場合には:
 {'a' => 1}.each do |x| p x; end # => ['a', 1]
となり、要素 ['a', 1] は概念としてはペア(pair, 対)である
従って Array({'a' => 1}) が [['a', 1]] を返すのは仕様に沿った正しい振る舞いである

ここで、もしも Array({'a' => 1}) が {'a' =>1} を返すことを期待したとすれば、
それは「ハッシュを列挙した要素はそのハッシュ自身である」という要求仕様になる
すなわち:
 {'a' => 1}.each do |x| p x; end # => {'a' => 1}
である
そして、この要求が糞仕様であるというのは誰の目にも明白だろう

>>537,539には、るりま等でHashクラスとEnumerableモジュールを復習されることを助言する
543デフォルトの名無しさん:2014/01/07(火) 10:03:13.56
>>542を訂正
誤:>ここで、もしも Array({'a' => 1}) が {'a' =>1} を返すことを期待したとすれば、
  > ....
  > {'a' => 1}.each do |x| p x; end # => {'a' => 1}


正:>ここで、もしも Array({'a' => 1}) が [{'a' =>1}] を返すことを期待したとすれば、
  > ....
  > {'a' => 1}.each do |x| p x; end # => [{'a' => 1}]
544デフォルトの名無しさん:2014/01/07(火) 20:53:47.43
Array( { 'a' => 1, 'b' => 2 } ) だったら
[{'a' => 1, 'b' => 2}] になってほしいのか?
[{'a' => 1}, {'b' => 2}] じゃないよな
545デフォルトの名無しさん:2014/01/07(火) 22:00:20.77
「不確定なオブジェクトを自動で配列にする」は判断と説明がけっこうめんどくさい
多少ご面倒でも自力で書くのがベター

irb> Array( 'abc' )
=> ["abc"]
irb> Array( 12 )
=> [12]
irb> Array( {'k'=>'v'} )
=> [["k", "v"]]

なんでやねん! カッコで括れや!

>>544
たぶん、でっかい要素1の配列になることが結構期待されてると思う
def Array(o)
if o.kind_of?(Array) then o else [o] end
end
こんな処理
546539:2014/01/07(火) 23:29:08.39
>>545
うん、その通り。
配列を作りたい時の元ネタって
配列か、そうでないか、の2種類しか気に留めないわけで
intだろうがハッシュだろうが余計なことせずに要素1の配列にしてほしい。
547デフォルトの名無しさん:2014/01/08(水) 01:09:23.63
いや、どんな配列か気に留めるだろ普通・・・
pythonじゃないんだから余計なことせずにto_aを呼べばいいんだよ
548デフォルトの名無しさん:2014/01/08(水) 01:13:31.19
なんでそこでto_aが出てくるの?頭大丈夫?
549デフォルトの名無しさん:2014/01/08(水) 03:20:53.57
Kernel.Array()はto_ary, to_aをメッセージとしてレシーバに送る。
で、結果は(Arrayによってでなく)ハッシュ自身の振る舞いで決まると自然。
ttp://docs.ruby-lang.org/ja/1.8.7/method/Kernel/m/Array.html
いくら頭おかしいとか糞仕様といってもそういう言語やないか。
手続き脳的に配列を「作る」とか、Array()に型操作のIFを期待するとか、型判定が悪いと言ってるんじゃないよ。
550デフォルトの名無しさん:2014/01/08(水) 05:51:13.68
型を変換しようず -> k,v構造は維持、Ordered に〜
データが変換されろよ -> [o] もしくは o.flatten

みたいな期待の違いはあるんじゃない?

>>547
同じものがないから比較できない
d = {'a': 'val-a', 'b': 'val-b', 'c': 'val-c'}

l = list(d)

print l;

=> ['a', 'c', 'b']

TypeError出ると思ったが
551デフォルトの名無しさん:2014/01/08(水) 15:45:38.74
個人事業者の同業者組合としてのRuby
552デフォルトの名無しさん:2014/01/08(水) 19:25:34.43
スタートアップ専用言語と言い換えるとかっこいいぞ
553デフォルトの名無しさん:2014/01/08(水) 20:00:44.58
そもそもプログラマーズベストフレンドですし
554デフォルトの名無しさん:2014/01/08(水) 21:48:26.60
メソッドをドキュメントで書くとき
Class#methodと書くのはRubyの独特の記法ですか?
他の言語に似たような文化はありますか?

またRubyの場合メソッドとプロパティの境界が曖昧ですが
Class#Propertyとは書かないのですか?
555デフォルトの名無しさん:2014/01/08(水) 22:00:05.46
> またRubyの場合メソッドとプロパティの境界が曖昧ですが
Rubyにプロパティはない
556デフォルトの名無しさん:2014/01/08(水) 22:31:42.28
>>554

Javadoc の @see や @link も似ていると思う。
文化じゃなくて規定と言うべきだろうけど。
557デフォルトの名無しさん:2014/01/08(水) 22:55:02.96
# =>
558デフォルトの名無しさん:2014/01/08(水) 23:00:25.38
C#mはYardとかが後追いした感じ
559デフォルトの名無しさん:2014/01/09(木) 11:25:21.94
560デフォルトの名無しさん:2014/01/09(木) 16:20:20.64
require "cgi"
cgi = CGI.new # ここでコケる。

ブラウザからのアクセスでは問題ない。
RESTツール使うと200返ってくるけど以下のエラー。(webrick)

ERROR CGIHandler: /Users/hisanaoichikawa/Sites/work/hoge.cgi:
/usr/local/Cellar/ruby/2.0.0-p353/lib/ruby/2.0.0/cgi/core.rb:663:in `Integer': can't convert nil into Integer (TypeError)
from /usr/local/Cellar/ruby/2.0.0-p353/lib/ruby/2.0.0/cgi/core.rb:663:in `initialize_query'
from /usr/local/Cellar/ruby/2.0.0-p353/lib/ruby/2.0.0/cgi/core.rb:827:in `initialize'
from /Users/hisanaoichikawa/Sites/work/hoge.cgi:11:in `new'
from /Users/hisanaoichikawa/Sites/work/hoge.cgi:11:in `<main>'
ERROR CGIHandler: /Users/hisanaoichikawa/Sites/work/hoge.cgi exit with 1
192.168.10.160 - - [09/Jan/2014:16:14:39 JST] "POST /Sites/work/hoge.cgi HTTP/1.1" 200 0

何か見直すところありますか?
561デフォルトの名無しさん:2014/01/09(木) 16:30:11.10
require "cgi"

ここ
562デフォルトの名無しさん:2014/01/09(木) 16:32:16.44
>>561
cgiってブラウザだけのアクセスしか認めていないとか?…ですか?
563デフォルトの名無しさん:2014/01/09(木) 16:53:53.66
663行目見たらすぐ見当付いたが
564デフォルトの名無しさん:2014/01/09(木) 17:05:29.89
>>563
見ましたが、良く分からないです。
Integer型にキャストできませんでした。って事は何となく分かりましたが、POST時に何も値を渡さなくても同じエラーになります。

あ、でもPOSTでなくGETにしたら、通ったみたいです。
うーん、何がいけないんですかね…
565デフォルトの名無しさん:2014/01/09(木) 18:18:47.92
>>564
リクエストを見てみればいい。
ruby中でやってもいいが、俺は手軽にこうやる。
$ nc -lp 8888
566デフォルトの名無しさん:2014/01/09(木) 20:37:50.55
>>564

cgi/core.rbの663行目
stdinput.read(Integer(env_table['CONTENT_LENGTH'])) or ''

POSTリクエストのときは環境変数CONTENT_LENGTHの値を読んで整数に変換しようとしてるやん。
567デフォルトの名無しさん:2014/01/10(金) 11:11:21.38
Ruby1.9.3の命日すなわちRuby1.9の終焉が来年2月に決定
ttp://www.ruby-lang.org/en/news/2014/01/10/ruby-1-9-3-will-end-on-2015/

勝手に環境変数読むのはお行儀よくないわな
568デフォルトの名無しさん:2014/01/10(金) 11:48:43.93
>>567
何言ってるんだ、CGIってプロセス(この場合ruby)を起動するときに、httpリクエストに応じて環境変数によって受け渡しする約束のことだろ。読まずに何しろと。

POSTなのでContent-lengthはあって欲しいが、なくても警告程度で補ってほしいとは思う。
569デフォルトの名無しさん:2014/01/10(金) 12:55:33.09
>>567
1.9シリーズのバージョナップ自体は今年の2月で終わりなのよね
さあみんな2.0をつかうんだー
570デフォルトの名無しさん:2014/01/10(金) 13:04:02.79
rfc的にはwebrickが初期化するか411返しているべきなんじゃないかなあ
まあ0 bytesと見なしても動くと思うけど
571560:2014/01/10(金) 13:21:58.82
正直webの仕組み?も余り分かってないのでアレですが、原因はRESTツールの設定で
Payloadに引き渡すデータを入力してPOSTするところをHeadersに設定してPOSTしていたのが原因でした。
Rubyと関係ないにも関わらず、ご回答下さった方、有難うございました。

因みにRESTツールはChrome ExtensionsのAdvanced REST clientです。

失礼しました。
572デフォルトの名無しさん:2014/01/10(金) 17:35:08.22
>>571
よかったな。
あと報告乙。
573デフォルトの名無しさん:2014/01/10(金) 20:02:10.91
また、質問なのですが…以下の配列をJson形式にしたいです。
[{"a": 1,"b": 1,"c": 88},{"a": 1,"b": 2,"c": 82},{"a": 1,"b": 3,"c": 79}]

こんな感じにしたいです。
{"array": [{"a": 1,"b": 1,"c": 88},{"a": 1,"b": 2,"c": 82},{"a": 1,"b": 3,"c": 79}]}

どうやったらできますでしょうか?
574デフォルトの名無しさん:2014/01/10(金) 21:04:37.55
# また、質問なのですが…以下の配列をJson形式にしたいです。
a = [{"a"=>1,"b"=>1,"c"=>88},{"a"=>1,"b"=>2,"c"=>82},{"a"=>1,"b"=>3,"c"=>79}]
p a
p "array"=>a
#こんな感じにしたいです。
p ({"array"=>[({"a"=>1,"b"=>1,"c"=>88}),{"a"=>1,"b"=>2,"c"=>82},{"a"=>1,"b"=>3,"c"=>79}]})
575デフォルトの名無しさん:2014/01/10(金) 21:07:40.25
require 'json'
576デフォルトの名無しさん:2014/01/11(土) 10:29:12.63
>>574
お、ちょっと前進しました!
配列だから緩い参照?(名前忘れました)で以降で参照した時にarrayキーが抜けてしまいます。
arrayキーを入れた配列を参照するにはどうしたらいいのでしょうか?

p "array"=>a.to_json #それっぽいJsonになった感じですが、
puts a #振り出しに戻る…
577573:2014/01/11(土) 12:33:16.49
すいません、>>573,576は撤回します。
以下の配列をJsonとして扱いたいです。(ループで各値を取りたい)
aj=[{"a": 1,"b": 1,"c": 88},{"a": 1,"b": 2,"c": 82},{"a": 1,"b": 3,"c": 79}]

p aj[0]["c"] # 88
みたいに取る方法ないですしょうか?
578デフォルトの名無しさん:2014/01/11(土) 12:35:44.80
b = ({"array"=>a})
579デフォルトの名無しさん:2014/01/11(土) 12:36:13.14
Rubyには全く興味がなくて、あるデータをJsonに変換したいだけだと見た
580デフォルトの名無しさん:2014/01/11(土) 12:40:01.93
>>577
一応rubyのハッシュは順序を保存してるから、[0]とかfirstでも見れるけど、
殆どの言語にはハッシュに順序ないから普通はeachで廻して取り出す

aj=[{"a"=> 1,"b"=> 1,"c"=> 88},{"a"=> 1,"b"=> 2,"c"=> 82},{"a"=> 1,"b"=> 3,"c"=> 79}]

p aj.first["c"]
p aj[0]["c"]

aj.each do |m|
p m["c"]
end
581デフォルトの名無しさん:2014/01/11(土) 12:50:17.28
1.8系にはHashに順序なくて、1.9系から順序保存してるんだっけか?
582デフォルトの名無しさん:2014/01/11(土) 12:51:30.04
そうだった気がする
583デフォルトの名無しさん:2014/01/11(土) 12:55:24.22
gemとかrequireとか調べた方が幸せになりそう
でもその前にeachか
584デフォルトの名無しさん:2014/01/11(土) 12:55:41.33
>>580
> [{},{},{}].class
=> Array

ok ?
585573:2014/01/11(土) 12:57:26.18
>>580
> p aj.first["c"]
> p aj[0]["c"]
上記2つとも以下のエラーが出てしまいます。
hoge.cgi:52:in `[]': no implicit conversion of String into Integer (TypeError)

元のデータ(aj)が配列になってないのかなぁ…
.to_aでキャストしてるんですけど
586デフォルトの名無しさん:2014/01/11(土) 13:02:33.32
>>584
すまん
arrayだなそれw

Hashは[0]とかじゃ取り出せないわeachした時は順序通りってだけか
587デフォルトの名無しさん:2014/01/11(土) 13:08:39.47
>>585
http://ideone.com/
で全ソース貼ってくれたほうが早いと思う
ちょっとそっちのソースの状況がわからん
588デフォルトの名無しさん:2014/01/11(土) 13:10:12.63
>>585
Hashじゃないから文字キーで取り出せない、と言ってるようにみえる

p aj.first
p aj.first.class
589573:2014/01/11(土) 13:19:27.56
各値が取るのが最終目的です。
データ側の形式とかはいじれません。
データは文字列ですがJson_stringっぽい感じで来ます。
http://ideone.com/Wk2BSK
590デフォルトの名無しさん:2014/01/11(土) 13:26:17.02
待ってろよ、いま誰かがなんとかしてくれるからな

旦 旦 旦 旦  旦       旦 旦 旦 旦 旦旦
 旦 旦 旦 旦旦 旦      旦旦 旦 旦旦  旦
旦 旦 旦 旦 旦 旦. ∧_∧ 旦 旦旦 旦 旦 旦
旦 旦 旦 旦 旦 旦 (´・ω・`) 旦 旦 旦 旦 旦 旦
旦 旦 旦 旦 旦 旦.  (o旦o ) 旦 旦 旦 旦 旦 旦
旦  旦 旦 旦 旦 旦. `u―u'  旦 旦 旦旦 旦 旦旦
591デフォルトの名無しさん:2014/01/11(土) 13:27:49.53
じゃあなんとか1号いきます

JSON("[" + data + "]").each{|h| h.each{|k, v| puts "#{k}: #{v}" }}
592デフォルトの名無しさん:2014/01/11(土) 13:36:17.18
反則技だが、一番楽なのは多分これ
aj = eval(data)
593デフォルトの名無しさん:2014/01/11(土) 13:41:13.80
あ、ごまん
できないわ
594573:2014/01/11(土) 13:47:28.86
>>591
おおお!!
ideoneの奴は綺麗に動きました!!

自前のではダメでした…cgi.params.classしてみたらStringじゃなくてHashでした。
で、Hash型?でideoneで実行しようとするとエラーになってしまいます。
うう。
595573:2014/01/11(土) 13:52:22.63
dataはHash型なのですが、宣言の仕方がまずいんですかね…
http://ideone.com/5B8XNz
596デフォルトの名無しさん:2014/01/11(土) 14:03:07.70
>>595
今dataが文字列ではなくて、配列
そして、
{"a": 2, "b": 3}
という書き方はできない。

{"a"=> 2, "b"=> 3}
は可能

{a: 2, b: 3}
は可能だが、意味が少々違って
{:a=> 2, :b=> 3}
と同じ意味になる。:aはシンボル
この辺はめんどくさい
597デフォルトの名無しさん:2014/01/11(土) 14:12:36.90
require 'json'

data='[{"a": 1,"b": 1,"c": 88},{"a": 1,"b": 2,"c": 82},{"a": 1,"b": 3,"c": 79}]'

JSON(data).each{|h| h.each{|k, v| puts "#{k}: #{v}" }}
598573:2014/01/11(土) 14:13:41.16
>>596
なるほど。
勉強になりました。

流石にスレの私物化になってしまうので、この辺で諦めます。
多分、Hashな配列?のデータは全体を文字列にしてどうにか処理する予定です。

スレ汚しすいませんでした。
599デフォルトの名無しさん:2014/01/12(日) 20:04:07.57
メタプログラミングRubyはマジでわかりやすい
上級本のイメージがあったけどProcとlambdaの違いとかClassとModuleの関係とかきっちりとしたselfの意味とかそこら辺が曖昧な初心者こそ読むべき
600デフォルトの名無しさん:2014/01/12(日) 20:56:49.67
初心者用だからね
601デフォルトの名無しさん:2014/01/12(日) 23:50:40.25
Rubyなんて使っている奴は永遠に初心者のまま
本当のプログラマにはなれない
602デフォルトの名無しさん:2014/01/13(月) 00:38:15.45
プログラマを奴隷かなんかと思ってないか?
楽させてやれよ
603デフォルトの名無しさん:2014/01/13(月) 00:45:47.76
>>602
レスさえもらえればなんでもいいです
604デフォルトの名無しさん:2014/01/13(月) 00:46:23.13
ちゃんと大学出てる一定レベル以上の奴は仕事でRubyのプログラミングなんかしてないからw
605デフォルトの名無しさん:2014/01/13(月) 01:10:19.05
>>603
そのようだな
606デフォルトの名無しさん:2014/01/13(月) 01:13:17.73
簡単なのは悪じゃない。何で馬鹿にする奴が多いの?
最近じゃ小中学生が学校でプログラミングの授業あるのも珍しくないけど
C言語じゃ無理だがRubyだから実現出来てるんだよね。
教育の場にこれ以上ない貢献だよな
607デフォルトの名無しさん:2014/01/13(月) 02:55:28.39
NIFTY-SERVER C言語のフォーラム
よく機械語・MASM自慢の人が来た
608デフォルトの名無しさん:2014/01/13(月) 04:35:27.28
プログラミングってセンスある奴が本気でやれば1,2年でそこそこになると思うけど
小中学生でそういうの滅多に出てこないよな
やはりグレてないと部活とか受験優先になるのかな
609デフォルトの名無しさん:2014/01/13(月) 04:40:54.34
自分がガキだった頃のこと忘れるともう完全に老害ですね
610デフォルトの名無しさん:2014/01/13(月) 10:59:19.97
部活とか受験勉強した方が確実に人生にプラスになる
611デフォルトの名無しさん:2014/01/13(月) 11:39:15.68
必要な前提知識が多すぎる
あと最初の言語の選び方とか
いきなりオブジェクト指向言語選んでひどい目にあったし
612デフォルトの名無しさん:2014/01/13(月) 12:17:11.37
gem install sinatra
としてsinatraをインストールしたのに
$LOAD_PATHにsinatraのパスが出てこない。
なのにrequire 'sinatra'でちゃんとsinatraを読める。
じゃあrubyは何を元にsinatraのパスを探してるのですか?
そもそも、$LOAD_PATHに出てくるgemと出てこないgemがあるのも謎です。。
613デフォルトの名無しさん:2014/01/13(月) 12:24:08.61
rubygemsはrequireを差し替えてる
614612:2014/01/13(月) 12:37:05.35
>>613
なるほど!rubygemsがsinatraのパスを持ってたのですね。ありがとうございます。
615デフォルトの名無しさん:2014/01/13(月) 12:52:27.08
>そもそも、$LOAD_PATHに出てくるgemと出てこないgemがあるのも謎です。。

これは具体的に何?全部gem installで入れた?
616デフォルトの名無しさん:2014/01/13(月) 21:54:59.14
>>602
何かの病気でプログラマになるんだろ。中ナントカ病ってヤツ
617デフォルトの名無しさん:2014/01/13(月) 21:57:34.71
>>608
誰も最初の入り口と方向性を見つけられない。
何が酷いかって、最初の入り口にc++やHSPという罠が張りめぐらしてある
618デフォルトの名無しさん:2014/01/13(月) 22:08:32.80
>>610
甲子園を目指していた知人は、今では自動販売機のジュースを詰替えているよ
619デフォルトの名無しさん:2014/01/15(水) 00:27:27.14
ファイルから内容を読み出しつつ字句解析したいんですが、何かもっと簡単にやる方法ってないでしょうか?
今は以下のような分割方法を考えています

pattern = /^(\c+)\s+/ #パターンは例

ARGF.each_line{|line|
 while line.size > 0
 if line =~ pattern
  puts $1
  line = line[$1.size..-1]
 else
  raise "parse error :"+line
 end
 end
}
620デフォルトの名無しさん:2014/01/15(水) 07:27:10.92
621デフォルトの名無しさん:2014/01/15(水) 10:48:57.33
ブラウザのformからPostしたcsvファイルを読込みたい。

# -*- encoding: UTF-8 -*-
print "Content-Type: text/plain\n\n"
require "csv"
file = cgi.params["csv_file"][0]
p file #ファイル名がちゃんと取れてる

CSV.open(file,"r") do |row| #ここでエラー
p row
end

エラー内容は
ruby/2.0.0/csv.rb:1254:in `initialize': no implicit conversion of StringIO into String (TypeError)
from /ruby/2.0.0-p353/lib/ruby/2.0.0/csv.rb:1254:in `open'

何がいけないんですかね?
622デフォルトの名無しさん:2014/01/15(水) 11:04:15.02
mime-multipart
623デフォルトの名無しさん:2014/01/15(水) 11:14:54.04
>>622
html側で以下のように指定してるのですが、
<form method="post" action="csv_import.cgi" enctype="multipart/form-data">

ruby側でも何か設定する必要があるんですか?
print "Content-Type: mime-multipart\n\n"
では、何も変わりませんでした。(同じエラーになった)
624デフォルトの名無しさん:2014/01/15(水) 11:41:50.71
p rowでTypeError出てるようにしか見えないなあ

それ1.8のサンプルコードじゃない?
現行の奴だとブロックに渡されるのは行じゃないよ
行が欲しいならopenじゃなくてforeach使って
625デフォルトの名無しさん:2014/01/15(水) 12:12:07.18
ごめんStringIOがpできんとかありえんわ

マニュアル引いたら、cgi.params["csv..."][0] でかえるのはファイルパスじゃなくIOオブジェクトだってさ
> the value is not a string, but an IO object, either an IOString for small files,

なのでこれをCSV.open()するとてエラーになる
小さいファイルに関しては、CSV.parse(file.read) do |row| p row end が一番近い
626デフォルトの名無しさん:2014/01/15(水) 13:14:16.13
>>625
おお!ありがとうございます!
以下で、それとなく出力できてるみたいです。

file = cgi.params["csv_file"][0]
CSV.parse(file.read) do |row|
p row
end

が、2バイト文字が16進数?になってしまっていて、こいつはどうしたらいいですかね…
627626:2014/01/15(水) 13:15:35.89
>>626
pの部分をputsにしたら正常値が取れました。
失礼しました
628デフォルトの名無しさん:2014/01/15(水) 14:38:40.11
配列とかハッシュの全件処理でN件目は別の処理をしたい、って場合どうすればいいんでしょうか?
eachの中でif文入れればいいんでしょうけど、N番目ってどう取ればいいのやら
arr.each do |e|
puts e
end
629デフォルトの名無しさん:2014/01/15(水) 14:58:30.26
each_with_indexとかいうのがあるけど
630デフォルトの名無しさん:2014/01/15(水) 15:09:04.29
>>629
thx!
631デフォルトの名無しさん:2014/01/15(水) 22:59:29.18
>>620
字句解析用のライブラリが入っていたとは・・・
まさしくこれが欲しかったです、ありがとうございます
632デフォルトの名無しさん:2014/01/15(水) 23:32:09.89
honya ||= 5
とかヘンな演算子あったんですけど、なんですかこれ?
633デフォルトの名無しさん:2014/01/15(水) 23:37:29.61
honya = honya || 5 の略

honya が真ならば honya の値が honya に代入される
そうでないならば、5 が代入される。
ruby の初期化の流儀
しかも、戻り値を考慮した場面が多いかな

def honya
@honya ||= 5
end

とか
必要になったときに、値を生成する原則というか
634デフォルトの名無しさん:2014/01/15(水) 23:40:30.94
>>632
honya = 5 if honya.nil?
635デフォルトの名無しさん:2014/01/15(水) 23:50:53.54
真のときなのかnilのときなのかはっきりしなさいよ
636uy:2014/01/16(木) 01:44:11.28
a ||= 5 # nil , false
a |nil|= 5 # nil
a |false|= 5 # false
a |true|= 5 # true


キリッ
637デフォルトの名無しさん:2014/01/16(木) 02:00:42.57
>632
自己代入ってやつだね。
ttp://docs.ruby-lang.org/ja/1.9.3/doc/spec=2foperator.html#selfassign

これ読むとわかるけど、 >>633 の「honya = honya || 5 の略」というのは間違い。
638デフォルトの名無しさん:2014/01/16(木) 05:36:04.67
threadとqueueの使い方がわからない。
良いサンプル教えて下さい。
639デフォルトの名無しさん:2014/01/16(木) 08:43:54.92
imgur.comくらいお手軽にrubyなんかのコード貼り付けて
そのコード公開して出力結果とかも得られるサイトあったんですが
どこでしたっけ
640デフォルトの名無しさん:2014/01/16(木) 10:50:47.16
RubyでS-JISのCSVってパースできますか?

>>639
ideone.com
641デフォルトの名無しさん:2014/01/16(木) 15:11:20.47
バコナロ「ンーwwwwwwwwwwww」
642デフォルトの名無しさん:2014/01/16(木) 19:45:24.87
>>640
できます
643640:2014/01/16(木) 20:46:30.91
CSV.parseのところでエラーになります。
何か良い方法ないでしょうか?

# -*- encoding: UTF-8 -*-
print "Content-type: text/html\n\n"
require "cgi"
cgi = CGI.new
require 'rubygems'
require "mysql"
require 'mysql2'
require 'json'
require 'json/pure'
require "csv"
require 'nkf'

begin
file = cgi.params["csv_file"][0]
#CSV.parse(file.read) do |a,b,c,d|
CSV.parse(file.read, :encoding => Encoding::UTF_8) do |a,b,c,d|
p a.force_encoding("utf-8")
p b.force_encoding("utf-8")
end

block in <main>': incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)
from /usr/local/Cellar/ruby/2.0.0-p353/lib/ruby/2.0.0/csv.rb:1717:in `each'
from /usr/local/Cellar/ruby/2.0.0-p353/lib/ruby/2.0.0/csv.rb:1296:in `parse'
644デフォルトの名無しさん:2014/01/16(木) 20:58:25.67
思いっきりUTF_8を指定してるやん
645デフォルトの名無しさん:2014/01/16(木) 21:29:08.01
ワロタ
646デフォルトの名無しさん:2014/01/16(木) 21:57:18.77
windows-31j
とかいうのがめんどくさい
いつもkconvで手動でtosjisやtoutf8とかしてるけど内部エンコーディング、外部エンコーディングについて勉強したら幸せになれますか?
647デフォルトの名無しさん:2014/01/16(木) 22:02:04.13
何を言いたいのか全然わからん
648デフォルトの名無しさん:2014/01/16(木) 22:18:45.20
>>646
windowsを捨てれば幸せになれます。
649デフォルトの名無しさん:2014/01/16(木) 23:15:10.78
さすがrubyスレ
レベルが異様に低いw
650デフォルトの名無しさん:2014/01/16(木) 23:22:59.23
初心者スレなんだが
651デフォルトの名無しさん:2014/01/16(木) 23:41:20.31
>>646
面倒も何も
そういうのはRubyに限らずどの言語を扱うにしてもぶち当たる問題という常識レベルの話。
652デフォルトの名無しさん:2014/01/17(金) 00:07:37.59
つまりスマートな解決策があるわけではないということですね
653デフォルトの名無しさん:2014/01/17(金) 00:35:39.32
それぞれメリットデメリットがあるからね。
ただ、sjisやらeuc-jpにutf16は終焉だね。
654デフォルトの名無しさん:2014/01/17(金) 01:01:33.05
フィボナッチ数を表示するプログラム

def fib(n)
return n if (0..1).include? n
fib(n-1) + fib(n-2)
end
print fib(5)
は上手く動きますけど、

メモ化を使ったプログラム
def fib2(n)
@series ||= []
@series[n] ||= fib2(n-1) + fib2(n-2)
end
print fib2(5)
は5でもstack over deepみたいなエラーが出てしまいます?
なぜなんでしょ?
655デフォルトの名無しさん:2014/01/17(金) 01:53:25.81
なぜって…そのままソース追えば分かるだろ。分からない理由が分からん
その再帰関数はいつ再帰が終わるの?
656デフォルトの名無しさん:2014/01/17(金) 02:07:15.78
初心者スレ
657デフォルトの名無しさん:2014/01/17(金) 03:08:20.90
   _____           / ̄ ̄ ̄ ̄
. /       \      . .:.:=ニ|   本  す
 |   何 お お |   /.:.:.:.:.:.:.: |   当   :
 |   で .か  : | /.:.:.:.:.:.:.:.:.:.:.|   す  す
 |   で  し     |/:.:.:/:.:./:.:.:.:.:.:.:|   み  み
 |  し  い     /:.:.:/:.:./\:.:.\:|  ま.  ま
 |   ょ な     |:.:./:.:./ : : |:.:.:.: ||  せ  せ
 |   :      |:.〈\|: : : :|___|\ ん  ん
 |             |:.:i|≧、: : : :/二L_\_  __
. \___  /L:]「以:, :  〈付 ア |:.:」/ハ:.:
          \(  |:.:.|:. :/    `^  = |:.:.:|[//.:.|
   〃 _       |:.:.|i:. ` _    J  _|:.:.:|{/.:i.:.|
      | 、\   |:.:.l|iヘ ー┘ u  _ -ニ|:.:.:|.:.:.:l.:.|
      | \_〉   、:.:.:|く\`  _ -ニΞ ]|:.:.:|i:.:.:|レ
    厂\{_   /\| \ ̄}=ii=====|:.:.:||//
  / \ 〉 ]/ \ \ ∨ }{     :|/  /
658uy:2014/01/17(金) 05:43:47.72
俺様は文字コード関連はtoutf8等で解決できない時は諦める事にしてる
toutf8 , tosjis , toeuc で動かなかったら諦める事が決定されてるから
文字コードで詰まる事は無いな
659デフォルトの名無しさん:2014/01/17(金) 09:00:29.10
一般的にはその「諦める」ことを「詰まる」と言うんだがな。
660デフォルトの名無しさん:2014/01/17(金) 09:15:30.12
ほとんどの秀才ができないとあきらめたことを天才は、突破する
661デフォルトの名無しさん:2014/01/17(金) 11:42:34.33
秀才は無駄な努力をしたがらないからあきらめも速い
天才は実現までのコストを度外視するから成功する
662デフォルトの名無しさん:2014/01/17(金) 15:08:26.36
文字コードの天才、100年に一度の設定の天才、昨年と同様に万能な雑用
663デフォルトの名無しさん:2014/01/17(金) 15:33:26.58
突破してUnicodeが実現された。
664デフォルトの名無しさん:2014/01/17(金) 15:57:24.34
ハッカー連中にトリッキーなコードを書かせないだけでも、PHPには素敵な価値がある
665デフォルトの名無しさん:2014/01/17(金) 16:35:08.87
トリッキーなコードを作るには、いきなり出来るんじゃなくて、初めにif,for,eachで作ってだんだんとトリッキーにして作っていくんでしょうか?
666640:2014/01/17(金) 18:00:06.15
ぐへぇ
CSV.parseってcsvのデータがダブルクォーテーションでくくられてないとダメなのでしょうか?

CSV.parse(file.read, :row_sep => :auto, :col_sep => ',') do |a,b,c,d|
end

/ruby/2.0.0/csv.rb:1849:in `block (2 levels) in shift': Unquoted fields do not allow \r or \n (line 2). (CSV::MalformedCSVError)
667デフォルトの名無しさん:2014/01/17(金) 18:13:06.19
>>666
つ refe csv
668デフォルトの名無しさん:2014/01/17(金) 18:17:50.95
どちらかというとそんなデータを「勝手」にCSVにするほうが悪い
なぜかいつも解析側が文句言われるんだけど、筋違いだからね本来
669640:2014/01/17(金) 18:46:12.62
http://docs.ruby-lang.org/ja/2.0.0/class/CSV.html
> :quote_char
> フィールドをクオートする文字を指定します。長さ 1 の文字列でなければなりません。

\(^o^)/オワタw

>>668
CSVの規格ではダブルクォーテーションの有無は確かない筈。

これは、Rubyのバグ!( ー`дー´)キリッ
はい。

困ったw
670デフォルトの名無しさん:2014/01/17(金) 18:53:29.96
データの中に改行あるんでしょ?ダブルクォーテーションなきゃダメじゃん
671640:2014/01/17(金) 18:56:52.01
>>670
ないですよ。レコード分ける改行コードはCRLFですけど…
まさか、これが悪さして…いや、row_sep => autoにしてるか。
672デフォルトの名無しさん:2014/01/17(金) 19:04:35.68
バックスラッシュ+改行文字は続きとみなす流儀もある
RFC4180的にはアウトだが、CSVは既に莫大なデータやジェネレータが存在するのでどうにもならん
673デフォルトの名無しさん:2014/01/17(金) 19:08:50.68
>>666 ではフィールドに CR か LF があるって怒られてる
もし Shift_JIS のまま CSV ライブラリに食わせてるんだったら
UTF-8 に変換してから食わせたほうがいいと思う
674デフォルトの名無しさん:2014/01/17(金) 19:16:48.74
有り得ないわ
675640:2014/01/17(金) 19:50:56.84
怒らないで聞いてくれますか?

すいませんでした。
>>673を見て思うところがあってバイナリエディタでcsvファイル見たら余計な0Dとかありました。
取り除いたら>>666で普通に動きました。
Rubyのバグとか言って申し訳ございません。
バグは私でした。

ダブルクォーテーションはなしでできました。
本当にすいません…。
676uy:2014/01/17(金) 20:12:11.56
ざっけんなマジもうム板やめるからじゃあな
677デフォルトの名無しさん:2014/01/17(金) 20:17:06.70
明日からココはプ板ですね。
678640:2014/01/17(金) 20:17:59.36
>>676
ワロタw

CSV.parse(file.read, :row_sep => :auto, :col_sep => ',') do |a,b,c,d|
p a.forceencoding("utf-8") #S-JIS -> UTF-8エンコしたいけどエラー
end


from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)

# -*- coding: shift_jis -*-って指定してるのですが…ASCII-8BIT?

どうすりゃいいのでしょうか?
679デフォルトの名無しさん:2014/01/17(金) 20:30:41.01
いくらなんでも教えて君すぎるお
680640:2014/01/17(金) 20:44:16.35
失礼しました
>>678は多分解決しました。
p a.forceencoding("utf-8") #S-JIS -> UTF-8エンコしたいけどエラー
この部分でなく、それより下でs-jisと上でエンコしたutf-8を繋げているのが原因っぽいです。
s-jisのやつもutf-8にしたらいけました。失礼しました。
681デフォルトの名無しさん:2014/01/17(金) 21:35:17.46
どうでもいいけど、force_encodingは文字コード変換をしない。押し付けるだけ。
682デフォルトの名無しさん:2014/01/17(金) 23:15:29.86
とりあえずこの辺読んどけ
http://magazine.rubyist.net/?0025-Ruby19_m17n

# 1.9(.1)が出たのって、もう5年も前なんだな…
683デフォルトの名無しさん:2014/01/17(金) 23:33:43.55
>>654
>def fib2(n)
>@series ||= []
>@series[n] ||= fib2(n-1) + fib2(n-2)
>end
これってオライリーの「Rubyベストプラクティス」のp153にあったのですが、
それが間違ってるってことなんですかね?
684デフォルトの名無しさん:2014/01/18(土) 00:19:59.87
間違ってるよ。例文なんてそんなもんだよ。概要伝えるのが主なんだから。
コピペして確実に動く例文ばかりじゃないから。
685デフォルトの名無しさん:2014/01/18(土) 00:42:57.06
英語の参考者じゃないんだから「例文」ってのは違和感あるな
686デフォルトの名無しさん:2014/01/18(土) 00:47:06.88
687デフォルトの名無しさん:2014/01/18(土) 02:31:17.50
>>638
自己解決。
デザインパターン スレッド ruby
でグーグル先生に問い合わせしたら幸せになれた。
688デフォルトの名無しさん:2014/01/18(土) 02:55:56.04
>>686 eratta出てる
689デフォルトの名無しさん:2014/01/18(土) 12:19:03.15
>>688
これ?
http://www.oreilly.com/catalog/errata.csp?isbn=9780596523015

でもこれで
def fib(n)
@series ||= []
@series[n] ||= fib(n-1) + fin(n-2)
end

これでも同じというか3行目の2つめのfinってどっからでてきたの?
690デフォルトの名無しさん:2014/01/18(土) 12:33:35.87
typoしてるな。
そのコード自体は読者による指摘だから、実際には反映後の書籍を見ないとだめだと思う。
691デフォルトの名無しさん:2014/01/18(土) 12:40:06.83
手元の日本語版のベストプラクティス見たが、それを参考にしたのか

def fib(n)
@series ||= []
@series[n] ||= fib(n-1) + fin(n-2)
end

になってるね。
finの間違いもそのまま。
まあ、オライリーの質的低下は昔からだけど、いろんな意味で雑だなあ。
fibにしたところでやっぱり動かないわけだし、こんな短いコードぐらい
訳者も手を抜かずにテストすればいいのに。
692デフォルトの名無しさん:2014/01/18(土) 12:51:53.49
オライリーはゴミ
693デフォルトの名無しさん:2014/01/18(土) 14:32:07.31
typo直しても動かんよね
指摘を反映すらし切れないのか
694デフォルトの名無しさん:2014/01/18(土) 14:38:05.02
typo直したら動くぞ

@series=Array.new
@series[0] = 0
@series[1] = 1

def fib(n)
@series ||= []
@series[n] ||= fib(n-1) + fib(n-2)
end

puts fib(10) # => 55
695デフォルトの名無しさん:2014/01/18(土) 15:47:37.79
なるほどね。でももうTypoってレベルじゃないよねw

オリジナル英語版ー初期化がなかった
オリジナルErrataー初期化コードを入れたつもりだけど、不完全。おまけに関数名を間違える新たなバグ混入
日本語版ーオリジナルErarraを検証もなしにコピペ

さすが、オライリーの「ベストプラクティス」は見習うべき点が多いなあw
696デフォルトの名無しさん:2014/01/18(土) 17:30:00.81
def fib(n)
@series ||= [0,1]
@series[n] ||= fib(n-1) + fib(n-2)
end
print fib(10) # => 55

とか
697デフォルトの名無しさん:2014/01/18(土) 19:59:52.07
def fib(n,series = [0,1])
series[n] ||= fib(n-1,series) + fib(n-2,series)
end
print fib(10) # => 55

マジで焼け石に水

本燃やせ
698デフォルトの名無しさん:2014/01/18(土) 20:07:39.61
オライリーはRubyあんまり好きじゃないみたいなんだよね
699デフォルトの名無しさん:2014/01/18(土) 20:16:53.33
プログラミング言語 Ruby
http://www.amazon.co.jp/dp/4873113946/
出版社: オライリージャパン (2009/1/26)

5年も経っているんだけど、
完全 2.0 版でないんかいな・・・
700デフォルトの名無しさん:2014/01/18(土) 21:52:46.77
>>698
そうでもないと思うけど
701デフォルトの名無しさん:2014/01/18(土) 23:22:31.30
>>694
これfib(1000)とかでも一瞬で結果が表示されるな。
どういうマジック?
702デフォルトの名無しさん:2014/01/18(土) 23:26:06.36
memoじゃないの
703デフォルトの名無しさん:2014/01/19(日) 00:07:06.94
>>701
>>654でメモ化を使ったコードだって言ってるじゃん
元ソースはバグってたけど
704デフォルトの名無しさん:2014/01/19(日) 00:08:39.78
うちのノートパソコンだと958まではok
959から先はstack level too deepが出るな
705デフォルトの名無しさん:2014/01/19(日) 00:19:53.27
tail call で包めばよろし
706デフォルトの名無しさん:2014/01/19(日) 00:27:16.89
>>704
rubyの再帰の上限は調べても意味ない
適当に前後で変数宣言したり、
しばらく時間経ってからもっかいやれば再帰できる上限変わってるよ
707デフォルトの名無しさん:2014/01/19(日) 12:33:00.69
その程度の再帰でスタックオーバーフローか
つかえねーな、Rubyはやっぱり
708デフォルトの名無しさん:2014/01/19(日) 12:33:58.25
前に末尾再帰最適化パッチなかったっけ?
709デフォルトの名無しさん:2014/01/19(日) 12:55:47.03
>>707
ruby1.8とかの話だろ多分
1.9以上ならもっといけるはず
710デフォルトの名無しさん:2014/01/19(日) 13:24:45.66
Rubyは初心者用言語だから再帰の最適化なんて要らんよ
711デフォルトの名無しさん:2014/01/19(日) 13:26:54.35
中国発の言語、ダイアモンドに負けてる。
712デフォルトの名無しさん:2014/01/19(日) 13:37:22.73
>>711
そんなもんあんの?初めて聞いた
713デフォルトの名無しさん:2014/01/19(日) 13:40:55.52
ダイアといえば金剛石、つまり英国産なのデース
714デフォルトの名無しさん:2014/01/19(日) 13:42:37.50
韓国発の言語、OCamlに負けてる。
715デフォルトの名無しさん:2014/01/19(日) 13:46:12.43
なんでも自分とこのお手柄にするのはやめてください
716デフォルトの名無しさん:2014/01/19(日) 13:49:10.17
銀座に日本支社がある時点で負けたと思った。
Rubyは徳島にすらないのに。
717uy:2014/01/19(日) 15:32:12.09
rubyで末尾再帰は2種類方法がある
VMインストラテーションセウエンスコンパイルオプションの
タールコールオプチミゼーションをTRUEにして
トラースインストルクションをFALSEにして
エバルで包むやり方と、tcoを定義する方法な
http://ideone.com/5ajcVd
718デフォルトの名無しさん:2014/01/19(日) 15:43:14.69
# stakki ovver flow
# stakki ovver flow
# stakki ovver flow
# stakki ovver flow
719デフォルトの名無しさん:2014/01/19(日) 15:46:20.36
>>717
Very good!!
720デフォルトの名無しさん:2014/01/19(日) 16:24:43.91
>>717
元ネタはここらへんかな?

・Rubyで末尾再帰最適化をする。 - Homoiconic Days
  http://athos.hatenablog.com/entry/20110119/p1
・Rubyの末尾再帰最適化を理解する
  http://melborne.github.io/2011/01/20/Ruby/

どちらにしても、勉強熱心で感心だね
721uy:2014/01/19(日) 17:58:32.30
俺様にとってはもっと高尚な事についての活動の
合間に行うストレス発散がruby
722デフォルトの名無しさん:2014/01/19(日) 18:30:54.29
高尚な活動ってOS作成とか?
723デフォルトの名無しさん:2014/01/19(日) 19:06:38.90
>>722
きっとエロ画像収集だよ。<高尚
724uy:2014/01/19(日) 19:19:43.75
俺様はPGというカテゴリーの中の人物ではなく、高度なプログラミングの出来るネット右翼
活動の内容は言えないが高尚な活動である
725デフォルトの名無しさん:2014/01/19(日) 19:27:52.46
uyはmetasploitをご存じかな?
726デフォルトの名無しさん:2014/01/19(日) 21:20:29.30
今は田母神砲の操縦でいそがしい
727デフォルトの名無しさん:2014/01/19(日) 22:10:56.74
uyさんROの装備余ってたら何かください
728デフォルトの名無しさん:2014/01/20(月) 02:38:42.89
Ruby使いたちはLL使いたちの中でも特に怨恨と劣等感の塊なんだ
どの言語だって得意なドメインを実績として持っている。
Pythonなら科学技術計算、Perlなら*nixにワンライナー、PHPならWebサイト作り。
けれど、特に何かに向いてたわけでもないのにRubyってコミュニティは膨らんでいった。
Rubyを使うなんて理由が既成ルールへの不満と社会への反逆を意味するんだ。
Rubyって言語は、いつだって目先の利益に忠実で最先端な機能が実装されている。
何の肩書も華やかな経歴もないけれど自分には才能があるとか、
他の連中とは違うなんて考える人たちが、Googleが使っているからとか、
大規模サイトでの実績があるからとか、アカデミックな理論やバックボーンなんて理由で、
それらの言語を使うはずがない。連中にとって、それらは本来的に憎むべき敵だから。
むしろ、そうした華やかな経歴がないからこそ彼らはRubyを使ったのではないか?
Rubyってコミュニティは、今後もアンダーグラウンドな性質を持ち続けると思うね
729デフォルトの名無しさん:2014/01/20(月) 03:23:12.33
>>729
結局何が言いたいのかな?
TOIBE Jan 2014 で 12位でPerlより1つ上。
アングラどころかどメジャー言語ですよ。
アナタの中での脳内コミュニティ批判したかっただけかな?
730デフォルトの名無しさん:2014/01/20(月) 03:51:15.13
1.9のString仕様で日本語がやっとまともになったからちゃんと勉強するようになった
awk,bc,grep,tcsh,bashなどのposixの代わりと複素数・行列・テキスト処理で使うことが多いね
次はlength,sizeとかcollect,mapとかアクセスが一つではなく複数あるのはどちらかにしてリファクタリングして欲しい
731デフォルトの名無しさん:2014/01/20(月) 03:59:45.96
>>728
CやJavaの得意なドメインって?
汎用というのもあるし、それが必要なこともある。rubyが何にでも向いてるというつもりもないけど。
732デフォルトの名無しさん:2014/01/20(月) 04:05:07.51
言語によって、length, size や collect, map のどっちかを使うことに慣れる。
どんな言語経験者でも Ruby で慣れた名前を使えるように、複数個提供されているんだ・・・
と思っていた。
733デフォルトの名無しさん:2014/01/20(月) 04:42:04.48
簡単に言えば日頃size,reduce,mapでなれてるのにrubyのソースみたら実はただの別名だったら、こまかい仕様までチェックするための時間が全部無駄になるし、ソースを追いかけるのがそこで止まるでしょ
あと1.9だけどputc(int)の仕様だけ他と違うから、これはバイナリ(ascii-8bit)専用としてputc(int):obj; get(void):int に変更して、cと同じく1バイト(unsigned char)処理用のapiにして欲しい
734デフォルトの名無しさん:2014/01/20(月) 04:47:58.69
バイナリ(ascii-8bit)専用
putc(int):void
getc(void):int
cと同じく1バイト(unsigned char)処理用のapiが欲しい
rubyでバイナリ処理はなれてないと少し難しいから
735デフォルトの名無しさん:2014/01/20(月) 05:08:04.82
えんこーでぃんぐ指定すりゃいいじゃん
736デフォルトの名無しさん:2014/01/20(月) 06:11:08.44
RubyにはRailsという最強のドメインがあるよ
それ以外価値が無いとも言える
737デフォルトの名無しさん:2014/01/20(月) 15:02:10.62
㏾ฺ
738デフォルトの名無しさん:2014/01/20(月) 16:00:38.29
shift_Jis -> utf-8コンバートについて質問です。
以下のコードはコンバートできていると思っているのですが、文字化けしています。
これはブラウザのエンコード設定がutf-8だからでしょうか?
エンコードコンバート方法は間違っていないでしょうか?
http://ideone.com/YIvMcr
739デフォルトの名無しさん:2014/01/20(月) 16:22:38.09
>>738
What encoding is used in the source code and in the input stream?
UTF-8.
740デフォルトの名無しさん:2014/01/20(月) 16:24:28.91
rubyじゃ無理
741デフォルトの名無しさん:2014/01/20(月) 16:48:02.99
コードポイントも表示してみれば?
p id.codepoints
p dst.codepoints
742738:2014/01/20(月) 16:51:49.79
rubyのソースコード内でのコンバートはできるけど、外部ファイルなどの入出力のコンバート制御まではできないということですか!?
743738:2014/01/20(月) 17:15:38.42
s-jis文字列を1文字ずつ取り出してバイナリ化して、文字列戻す際にutf-8化とか…できないか…な…

>>741
こんなんなりました。
#<Enumerator: "\x{E382}\x{82E3}\x{8282}\x{E381}\xA1":codepoints>
#<Enumerator: "繧ゅb縺。":codepoints>
744デフォルトの名無しさん:2014/01/20(月) 18:38:53.79
ソースコードを書くときの文字コードセットとファイルの先頭のcoding:の指定は合わせといた方がいいよ
745デフォルトの名無しさん:2014/01/20(月) 18:47:24.36
>>743
ソースコードが UTF-8なんじゃないの?
746デフォルトの名無しさん:2014/01/20(月) 18:59:42.45
むしろソースがUTF-8じゃないと>>743にならないよ
747uy:2014/01/20(月) 19:11:01.06
                     三     さ
            ,.-‐-、      Ξ  バ  て
  ,.-─-、     /    !       三  グ  `
 /    i ',__,,,,.....i i    |       Ξ  が  ま
 i    /、_,!::::::::::::'-'、___,.ノ、     三  で  た
 ヽ、__,./   ;::::i::::;:::;:  :;::::::ヽ. ×  Ξ  た  R
× ,.イ::::/:::::レ::ハ:!、!__,.ハ::ル:::::',  × 三  訳. U
   レ::::::レ:'r‐'i´ レ',!'-'、。o:::::::::ヽ   Ξ  だ. B
   ハ::o。!'⌒     " ハ:::ハ::::,.-'、. 三  が  Y
   .゜i:::::7"  i' ̄`i  /:::!::::::::/ @i  彡     の
    イ:::人  ヽ ノ  i::::ハ::::/  /、  / 川 l | l l | l |
    V::ハ::>ー-r‐='T´V,.イ  ー、/`ヽ
 ×     ` ,.く,.〈〉、_,.イ ヽ、___ノ、/ノ
   ×    r〈 !     ヽ、___二ン
        7ヽイ__,.'-っ、  〈 ,,..
       〈  ̄    ノ 、 `ヽ ゛
        `ー7''" ̄´   ヽ
748738:2014/01/20(月) 19:11:23.92
ソースは以下の通りs-jisです。
http://ideone.com/YIvMcr

途中、文字列をutf-8に変換して外部に出力したいのです。
ideoneがs-jis指定してもutf-8になってしまうのかな
749デフォルトの名無しさん:2014/01/20(月) 19:25:37.69
どこを見てs-jisと主張しているのかね?
750デフォルトの名無しさん:2014/01/20(月) 19:27:13.43
決して難しい変なことをしているわけではないのだが、
Ruby1.9/2.0の文字エンコーディングの指定と変換においては「適当にやる」と全く動作しない
完全に学習してマスターするといい
もう一度だけ言うけど、適当にやると絶対に動かない
751738:2014/01/20(月) 19:38:28.80
自己解決しました。
ideoneでなく自前の環境で上手くいきました。
ideoneの環境の問題のようです?

>>749
4行目の出力結果なんですけど、間違ってますか?
752デフォルトの名無しさん:2014/01/20(月) 19:41:35.79
ideone のサーバには UTF-8 でエンコードされたバイト列が渡されてるんじゃないかと
e38282 e38282 e381a1 でなく e382 82e3 8282 e381 みたいな変な区切り方されてるし
753738:2014/01/20(月) 19:46:19.62
>>750
まさにおっしゃる通りでした。
無勉強でコピペで解決できる問題ではなかったです。

>>752
やはりそうですか。
お騒がせしました。
754デフォルトの名無しさん:2014/01/20(月) 19:58:42.99
http://ideone.com/faq# を見てきた。>>738 は FAQ の Q&A だったのか
> What encoding is used in the source code and in the input stream?
> UTF-8.
755デフォルトの名無しさん:2014/01/21(火) 00:16:01.98
(_ _).。o○(今日もスレの流れは滝のようだったなあ早過ぎてついていけねェ
756デフォルトの名無しさん:2014/01/21(火) 01:03:43.47
%w()で空文字("")を含む配列を定義できますか?
757デフォルトの名無しさん:2014/01/21(火) 01:53:26.07
>>756
多分無理じゃないかな
%Wなら
%W(a #{} b)
でいけるけど。
758デフォルトの名無しさん:2014/01/21(火) 13:31:47.24
10〜30までのランダムな偶数が欲しいんですけど
もう少し良い書き方ってないですか?

a = (10..rand(10..30)).reject {|m| m.odd? }.sample
p a
759デフォルトの名無しさん:2014/01/21(火) 13:38:17.29
(10..30).select(&:even?).sample
760デフォルトの名無しさん:2014/01/21(火) 13:45:05.34
>>759
ありがとうございます!

自分の書き方だとrandとsampleで2回もランダム呼び出していたか・・・
761デフォルトの名無しさん:2014/01/21(火) 13:45:37.79
0から10の乱数を2倍して10たす
762デフォルトの名無しさん:2014/01/21(火) 14:42:58.70
>>756
%w(a \ b) #=> ["a", " ", "b"]
↑\の後ろは空白2つね
空白をエスケープすればできるよ
763デフォルトの名無しさん:2014/01/21(火) 14:44:00.06
>>762
ああごめん、空文字列か
忘れて
764デフォルトの名無しさん:2014/01/21(火) 16:37:23.38
こんにちは。
私はRailsなどを使わずにスクラッチでcgiでやろうと思っているのですが、
Webrickでhtmlアクセスして、あとはAjaxでRuby側はcgiでやります。
しかし、Ajax先のアドレスは.rbと.cgiどちらがいいですか?

ありがとう。
765デフォルトの名無しさん:2014/01/21(火) 17:02:27.82
いえいえ、こちらこそありがとうございました^^
766片山博文MZコスモ ◆T6xkBnTXz7B0 :2014/01/21(火) 17:52:55.91
可能なら.cgiの方がいいと思う
Rubyで作ってることを隠蔽した方がいい
767デフォルトの名無しさん:2014/01/21(火) 20:18:35.10
.cppにしとけば?
768片山博文MZコスモ ◆T6xkBnTXz7B0 :2014/01/21(火) 21:06:13.01
.htaccessファイル使えばCGIのファイル名も隠匿できる
769デフォルトの名無しさん:2014/01/21(火) 21:10:22.40
Rubyとしてはサーバがきちんと返事返してくれればどうでもよろしいので、
システムが許す範囲内で好きにするといい
「Rubyでは○○でなければならないor△△が好ましい」というようなことはない
770片山博文MZコスモ ◆T6xkBnTXz7B0 :2014/01/21(火) 21:13:15.21
例えばRubyに重大な不具合が発見された時、拡張子が.rbだと標的にされる恐れがある
771デフォルトの名無しさん:2014/01/21(火) 21:19:54.55
そんな小さすぎるセキュリティ意識どーでもいいよ
772デフォルトの名無しさん:2014/01/21(火) 21:26:29.45
>>771
レスしたのはお前だけ
773デフォルトの名無しさん:2014/01/21(火) 21:27:43.68
イマドキの2chだと、初心者でもコテハンを名乗るのか?w
774片山博文MZコスモ ◆T6xkBnTXz7B0 :2014/01/21(火) 21:43:29.04
隠せるものは隠す。
鍵穴だろうが入口だろうが隠す。
秘密基地とはそういうものだ。
775デフォルトの名無しさん:2014/01/21(火) 21:55:40.50
秘密基地(笑)
776デフォルトの名無しさん:2014/01/21(火) 23:20:36.12
情報を隠すのはセキュリティの基本だな。
あとURLは実装に依存しないようにした方が寿命が長くなる。
777デフォルトの名無しさん:2014/01/21(火) 23:29:45.91
昔のほむぺは一番下にpowered by Apache 1.x.xとか表示するもんだったなぁ
778デフォルトの名無しさん:2014/01/22(水) 00:09:22.52
rssでプロキシー使えるの?
779デフォルトの名無しさん:2014/01/22(水) 00:34:55.21
>>777
わざと違う情報を出したりして。
httpヘッダにもある。
780デフォルトの名無しさん:2014/01/22(水) 05:39:52.60
各用紙は.htmlにしてもいいし
Railsみたくディレクトリで
routingもどきにしても良い
781デフォルトの名無しさん:2014/01/22(水) 08:37:33.78
(_ _).。o○(今日もRubyスレの流れは風のようだったなあ早過ぎてついていけないぜぇ…
782デフォルトの名無しさん:2014/01/22(水) 12:16:31.59
>>781
3レスも追えないのかよw
783デフォルトの名無しさん:2014/01/22(水) 23:45:27.13
rails使うほどの規模じゃないのでsinatraで開発してたがちょっと機能増えただけでパンクしたのでpadrinoに切り替えたらただの劣化railsだったでござる
rubyのwebプログラミングはRails以外本当に糞。
784デフォルトの名無しさん:2014/01/22(水) 23:51:35.57
Railsだけがあればいい
ほんとうにベストなものが一つあるなら、他に意味はない
785デフォルトの名無しさん:2014/01/22(水) 23:58:18.70
サムスンだけがあればいい
ほんとうにベストなものが一つあるなら、他に意味はない
786デフォルトの名無しさん:2014/01/23(木) 00:27:35.71
Microsoftだけあればいい
ほんとうにベストなものが1つあるなら、他に意味はない
Javaだけあればいい
ほんとうにベストなものが1つあるなら、他に意味はない
MySQLだけあればいい
ほんとうにベストなものが1つあるなら、他に意味はない
787デフォルトの名無しさん:2014/01/23(木) 03:07:41.43
ほんとうにベストなものは、プログラミングじゃない可能性もあるから
それを突き詰めていくとプログラミング自体いらなくなっちゃいますよ
788デフォルトの名無しさん:2014/01/24(金) 00:13:41.47
ダメだぞ、おまいらが本気で起業したらMicrosoftもOracleも潰れちゃうんだから
789デフォルトの名無しさん:2014/01/24(金) 02:07:37.28
そりゃ、皆、PHPにPostgreSQLつかうからな
790デフォルトの名無しさん:2014/01/24(金) 03:49:23.29
100年後も数学は健在だろうけど100年後にプログラミングって作業は残っているのか?
多分わざと残そうとしない限り研究職しかやらない感じになってくるよ
プログラムの命令を原子記号だとするなら、組み合わせは無限だけれど

鉱山に行って鉄や銅を掘り起こすような作業はいつまでも人が人力でやることじゃない
鉄を掘り出すのは、やろうと思えば機械でやれるさ、 で、最終的なところだけ人の手が加わるだけ

プログラミングにしても、スクラップのようなネット上にある膨大なソースから
色んなものをピックアップして
加工するまではAIにやらせて、最終的なところだけ人がやる

スタイルになると思う
791デフォルトの名無しさん:2014/01/24(金) 03:56:05.55
>>790
それをプログラミングと云うようになるだけかもよ。
俺にとってプログラミングとはコンピュータに対する教育。
792デフォルトの名無しさん:2014/01/24(金) 03:56:09.10
例えば、
入力データ 2 3 を入れたら 6 を
7 8 を入れたら 56 を
こんな感じに、入力データと、出力データのサンプルをいっぱい要素として与えて

ソースコードを、総当たり的な感じでAIに作らせる事は可能だと思う

それを鉱山から採掘した鉄を加工した段階だとすれば
最終的に人の手が加わるのは、加工されたそのソースコードを
どんな用途に使うか?  が、AIには考えられない事だから、人の手が加わる場所
793デフォルトの名無しさん:2014/01/24(金) 03:58:59.84
組合せ爆発を知らんのか
794デフォルトの名無しさん:2014/01/24(金) 04:04:27.46
出来上がりのものをテンプレートにするなら、ウィザード形式で開発を支援するものはすでにある
795デフォルトの名無しさん:2014/01/24(金) 04:09:37.72
で、ここをもっと進化させるなら
入力データ: 「2 , 3」
とか数値を入れるんじゃなくて
入力文章:「○○行程度のRubyで書いた電卓のソースが欲しい」
等を伝える
で、文章を読み取ったAIにソースコードを出力してもらう
ここまで出来れば、
「○○なメソッドが欲しい」「△△なメソッドが欲しい」を、伝えて
ソースをメタして貰って、自分は一切ソースコードを書かずに、何かを作る

あとの問題は、ソースコードのメタから作れる範囲のアプリだけで
人が満足出来るかどうかにかかってる「まぁこんなもんでいいかな」ってなれば
その時にプログラミングは終了
796デフォルトの名無しさん:2014/01/24(金) 04:10:19.42
世界最強のウィザードを雇いたい
797デフォルトの名無しさん:2014/01/24(金) 04:13:06.11
>>794
テンプレートじゃなくて
「2*4」 → プログラム → 「8」

ブルートフォースのように総当たりでソースコードを生成する

最初はブルートフォース、そこで作れるようになったら辞書アタックに進化させていくだけ
798デフォルトの名無しさん:2014/01/24(金) 04:15:14.47
>>797
絞りこみが出来なければ組合せ爆発で死ぬ
799デフォルトの名無しさん:2014/01/24(金) 04:18:44.19
生きてる間に実現しないものは気にしなくていい
脱原発もな
800デフォルトの名無しさん:2014/01/24(金) 04:19:34.28
例えば、
1*1 ...1*2...9*9 の九九の結果を出力プログラムのソースコードのメタをして貰うとする

そのソースコードは別に、中で「九九の計算」とかやってなくてもいいんだよ
if argc[0] == 5 && argc[1] == 4 then print "20" end
とか、こんな バカげたソースでも別に良い

そういうごっちゃごちゃの状態でも、とりあえず条件として
「1*1..9*9が上手く行くソースコードください!」 の条件を、ブルートフォースでソースコード生成して貰えれば、それで俺の勝ち

一般PCではソースコードの自動生成に処理速度が間に合わないだけで
京(スパコン)だったら出来るスペックはあるさ
801片山博文MZコスモ ◆T6xkBnTXz7B0 :2014/01/24(金) 04:19:57.52
例えばコンピュータは文字列の意味もあまり知らない。
人間が「この範囲が整数を表してる」と教えないと無意味な計算で組合せ爆発で死ぬ。
802片山博文MZコスモ ◆T6xkBnTXz7B0 :2014/01/24(金) 04:23:29.97
続きは人工知能スレで
803デフォルトの名無しさん:2014/01/24(金) 04:23:34.18
じゃあ・・・ruby流に説明しようか
「 1 と表示するプログラムのソースコードをメタしろ 」
これを最小限で行うには
p 1  で良い。

つまり、アルファベット大文字小文字 + 各種記号 + 数値で 100くらいあるか?
だから
「p 1」は3文字しかないから
100^3 回ループ処理してれば「p 1」というソースコードにブルートフォースでも辿り着く

スパコンだったらもうちょっと行ける
804デフォルトの名無しさん:2014/01/24(金) 04:24:49.18
>>800
HDLは既にそうなってるな
805デフォルトの名無しさん:2014/01/24(金) 04:27:27.53
組み合わせ爆発て、最初にメタされるものは無意味な計算だらけでも良いんだよ
出力までが出来たら、今度はそれを最適化する為の学問を発展させる
のと

あと、所詮はプログラムの入力と演算結果なんて、
突き詰めればハッシュと変わらないので、メモリを参照するだけで答えが出てもいいはずだ
どのくらいHDD容量が必要か知らんけど、無計算で結果出力は出来る
806片山博文MZコスモ ◆T6xkBnTXz7B0 :2014/01/24(金) 04:29:25.04
ごら、まだやるのか?

指数関数的に爆発するから、まったくのランダムで複雑なプログラムを生成するのは、実用上無意味。
単純な入出力関数なら実用化可能。
807デフォルトの名無しさん:2014/01/24(金) 04:36:03.92
もういいや
4,5年前に自分が辿り着いた答えと今考えても同じになった
808デフォルトの名無しさん:2014/01/24(金) 04:42:55.87
>>806
量子力学を理解してるか?
量子コンピュータは作れる
けど作れたからといって、それをすぐに広めちゃいけない状況にある
ITバブルがはじけるから
100年じゃ広まらないだろうけど
段階を通じてITバブルを縮小化させながら量子コンピュータを広めてプログラミングは終了
809デフォルトの名無しさん:2014/01/24(金) 09:05:44.34
完全な陰謀論ですお疲れ様でした。
そのまま妄想に耽って車にでも撥ねられろ。
810デフォルトの名無しさん:2014/01/24(金) 09:34:32.65
プログラミングやってみよう

まったくわからない

プログラムなんていずれなくなるから無意味(`・ω・´)キリッ

たぶんこんな感じ
811デフォルトの名無しさん:2014/01/24(金) 20:04:00.24
量子計算のできるPHPや量子計算をもとにしたWeb広告ができるのか
胸が騒ぐな
812デフォルトの名無しさん:2014/01/24(金) 20:05:18.63
>>810
新しい反復作業→自動化の流れはなくならない
813デフォルトの名無しさん:2014/01/25(土) 14:56:30.17
>>812
なぜかこれを思い出した

http://www.geocities.jp/afi_651/Asuka1.jpg
814デフォルトの名無しさん:2014/01/25(土) 23:11:56.54
水時計は理由があってそういう風に何段にもなってるんだけど...
815デフォルトの名無しさん:2014/01/25(土) 23:23:25.29
>>814
反復作業(同じ勢いで水が出るように水を加える事)を自動化したつもりでも実は修正が必要で、

さらにその修正作業を自動化するために、2番目の自動化を付け加え、

さらには3番目の自動化を付け加えるっていう感じが何となく似てると思ったんだよ
816デフォルトの名無しさん:2014/01/26(日) 22:08:47.81
Rubyで画像検索するとセクシーなお姉ちゃんがたくさんヒットするのは何故ですか?
817デフォルトの名無しさん:2014/01/26(日) 22:22:32.11
あるgemに依存しているgemを調べる方法ってありませんか?
818デフォルトの名無しさん:2014/01/26(日) 22:50:16.02
>>817
// local
$gem dependency hoge

// remote
$gem dependency hoge --remote
819デフォルトの名無しさん:2014/01/26(日) 23:00:55.84
Ruby1.8.7とRuby/gtk2-1.1.4を使った環境を仮想マシンのubuntu上で動かせるようにしたいのですが、Ruby1.8.7とgem1.3.7をインストールしてgem install gtk2を実行するとsegmentation faultとなってしまいインストールできません。
どうすれば解決できるのでしょうか?
最終的に、Rubyでrequire'gtk2'をしてうまく動くようにしたいです。
820デフォルトの名無しさん:2014/01/26(日) 23:11:27.93
Ruby1.8.7はもうメンテされてないよ
821デフォルトの名無しさん:2014/01/26(日) 23:19:43.45
>>820
大学の課題で渡されたコードが1.8.7準拠で作られているんです…
822デフォルトの名無しさん:2014/01/26(日) 23:22:07.58
新しいRubyでやる方がいい
古いRubyとの差はその都度読みかえろ
823デフォルトの名無しさん:2014/01/26(日) 23:45:49.57
>>819
他のヤシラが言うように、Ruby2.x(または1.9)で試すことを勧める
多くのケースで、Ruby1.8.7向けに書かれたコードはそのまま動くし、
たとえ動かなかったとしても僅かな修正で済む
もし問題が起きたなら、ここで質問すればいい

どうしてもRuby1.8上へインストールしたいのなら、
Ruby-GNOMEプロジェクトのsourceforgeサイトから
tar.gzアーカイブをダウンロードして手作業でインストールする
  http://sourceforge.net/projects/ruby-gnome2/files/
もし使いたいGUI機能がGTK2だけでUnix環境(OSX or Linux)ならば、
それほど苦労することなくインストールできるはず
(ただし、最低限の英語読解とUnixの知識は必要)
この場合、ダウンロードするのは ruby-gtk2-2.1.0.tar.gz だけでいい
824デフォルトの名無しさん:2014/01/27(月) 00:34:43.39
>>818
hogeを使うような屑にきいてないから書かなくていいですよ。
いちいち手間を取らせるのも悪いですし。
825デフォルトの名無しさん:2014/01/27(月) 00:37:06.37
どういうことだ
826デフォルトの名無しさん:2014/01/27(月) 00:40:43.82
コマンドラインにhogeという貶し言葉を入れてると思ってるなら池沼だし
hogeがfooやらと一緒だって分かってていってるならキチガイだし
827デフォルトの名無しさん:2014/01/27(月) 00:46:35.28
>>826
いつ退院したの?
ネットは精神病によくないって言われなかった?
828デフォルトの名無しさん:2014/01/27(月) 00:48:09.16
かまっちゃいけない奴だこれ
829デフォルトの名無しさん:2014/01/27(月) 00:53:49.53
>>816
光の加減や睡眠不足等の諸事情によっては男の娘もオカズになるとは思う
830デフォルトの名無しさん:2014/01/27(月) 00:55:03.79
>>826
Rubyで画像検索した結果で一発抜いてきたらイイよ
831デフォルトの名無しさん:2014/01/27(月) 00:55:06.10
>>818
お前来なくていいからw
832デフォルトの名無しさん:2014/01/27(月) 00:57:58.02
hogeって書くとどこからともなく沸いてくる不思議な人
ゴミ連呼とは別人なのかしら?
833デフォルトの名無しさん:2014/01/27(月) 07:32:28.71
それだけ疑問を持ってる人が多いということだろう。
むしろこういう不特定多数の目に触れるところに平気でhogeとか書ける精神構造のほうが不思議。
834デフォルトの名無しさん:2014/01/27(月) 07:53:23.24
hogeに親でも殺されたのか
835デフォルトの名無しさん:2014/01/27(月) 08:09:21.26
ほげほげ
836デフォルトの名無しさん:2014/01/27(月) 08:15:29.16
捕鯨反対の人か
837デフォルトの名無しさん:2014/01/27(月) 08:40:23.24
だれうま
838デフォルトの名無しさん:2014/01/28(火) 01:04:04.03
作りたいもの作れって言われるけど特に作りたいものがない
入門レベルのちょっと上くらいの難易度のものって何かある?
Rubyではじめるゲームプログラミングはいい本だった。
あんな感じで作りながら学んでいきたい。
839デフォルトの名無しさん:2014/01/28(火) 01:10:53.20
>>838
作りたいものがないんなら何も作らなきゃいいんじゃないのか?
何が作れるのかわからない、というのなら別だが。
840デフォルトの名無しさん:2014/01/28(火) 01:12:51.02
>>839
何が作れるかわからないのです
なので選べない
841デフォルトの名無しさん:2014/01/28(火) 01:16:37.58
もっと言うと何でも作れるようになりたいってのが本心
だけど、何が作れるかわからないから
どうしたらいいのかって思ってしまう
Rubyで何かつくろうと思ったらrailsは必須なの?
842デフォルトの名無しさん:2014/01/28(火) 01:16:53.06
君の目的も興味もバックグラウンドも分からないからアドバイスしようがない。
勉強が目的なら適当なgemのソース読むのは勉強になる。
web系に興味あるなら、何よりもまず、どんな糞サイトでもいいので作って公開すべきだ。
ゲームとかスタンドアロンなプログラムに興味があるなら、アルゴリズムの勉強とか?
個人的には昔オセロゲーム作ったのは難しかったが楽しかった。
843デフォルトの名無しさん:2014/01/28(火) 01:17:36.67
>>838
> Rubyではじめるゲームプログラミングはいい本だった。
この本がどういうレベルなのかよくわからんが、
おそらくグラフィカルなゲームを、ロジックだけ自分で書けば作れるような本なのかな?

だったら、たとえばCUIのオセロゲームとか作ってみたら?
844デフォルトの名無しさん:2014/01/28(火) 01:19:16.01
>>842
お、カブった。

>>841
railsは初学者に向いてるとは俺は思わないな。
最初はむしろHTMLの勉強になっちゃうし。
845デフォルトの名無しさん:2014/01/28(火) 01:31:09.07
一番は勉強かな。
プログラミングでこういうコード書けば
変数をここで連携してこういう物が出来るんだってのが体系的に知りたい。
そのためにも形あるものが一番具体的でいいのかなっていうのは思ったんだけど
じゃあ、具体的に何よって感じ。

>おそらくグラフィカルなゲームを、ロジックだけ自分で書けば作れるような本なのかな?
あの本はまさにそんな感じ。
CUIのオセロ!
おお、まさにそういうのがやりたい。
じゃんけんゲームとか、ゲームブックでも面白かった。

ただ、ぐぐったら出てきたコードが長そうで理解ができないかも…。
オセロについて細かく書いてある本とかない?
トランプゲームとかのアルゴリズム(?)みたいなのはどうやったら学べる?
846デフォルトの名無しさん:2014/01/28(火) 01:32:29.88
>>838
GoogleのWebspeech apiでもいじってみたら

接続すればいろいろ遊べるぞ

あとは遊ぶならRobot関連が面白いと思う
Amazonの自動配達も始まるし
これからブームが来るよ
http://artoo.io/
847デフォルトの名無しさん:2014/01/28(火) 01:37:41.54
>>846
ごめん、言ってる意味がわからない
Webspeech apiとは何?
検索したらロボットにしゃべらせる?とかそんな感じ?それがRubyでかけるの?
あとartooって何?
アホなんで英語読めないんだ…。
プログラミングやるなら英語は必須かな?
848デフォルトの名無しさん:2014/01/28(火) 01:40:07.58
Google翻訳でちょっとわかった
Rubyでロボット動かせるの?
組み込み系って奴?
それって相当難易度高いんじゃないの?
849デフォルトの名無しさん:2014/01/28(火) 01:49:09.47
>>848
組み込み系じゃなくて他人のgemやソースを盗用するだけ
遊ぶ程度なら全く難しくない
オセロのプログラム作る方がよほど難しい

もっともWindowsを使ってる人だと色々と厳しいが…
LinuxやMacなら適当なバインディングで各種ソフトをつなぐだけでかなり遊べますよ
850デフォルトの名無しさん:2014/01/28(火) 02:01:29.45
>>841
売り物かドッグフード
ないならプログラミングなんて時間のムダ

>>848
cで書け
851デフォルトの名無しさん:2014/01/28(火) 02:02:06.68
ありがとう
分からなかったらまた質問させてもらいます
しばらくはオセロとこれをやってみようと思います
852デフォルトの名無しさん:2014/01/28(火) 02:04:08.20
オセロよりペイントやCADの方が応用効くんじゃねーの
Rubyで作るとコンピュータの思考ルーチンがめっちゃ遅そう
853デフォルトの名無しさん:2014/01/28(火) 02:06:55.89
ゲーム木と評価関数を書いて何になるんだろう
854デフォルトの名無しさん:2014/01/28(火) 02:08:26.40
>>851
英語できないってことは学生だと思うけど、>>850のいう事は正しい。
俺なんか日曜プログラマだから遊んでるだけだけど、プログラミングで食ってくことと、遊ぶことは全く違うわな。
855デフォルトの名無しさん:2014/01/28(火) 02:14:35.81
RaaR(Ruby as a Religion)
856デフォルトの名無しさん:2014/01/28(火) 02:23:09.41
artooって具体的にはどんなことが出来るの?
androidみたいなもん?
ラジコン動かすとかそういう系?
857デフォルトの名無しさん:2014/01/28(火) 02:27:39.71
Artoo is a micro-framework for robotics.
It provides a simple, but powerful Domain-Specific Language (DSL)
for robots and physical computing.
With Artoo, you can easily connect multiple,
different hardware devices together at the same time
into a single solution. Artoo makes telling robots
what to do incredibly simple and fun.

ArduinoやBeagleBoneがRubyで制御できるんだろう
858デフォルトの名無しさん:2014/01/28(火) 02:31:05.43
>>838
既存のプロジェクトに参加すればいい。
859デフォルトの名無しさん:2014/01/28(火) 02:32:46.41
ArtooはRubyKaigiの動画みりゃすぐわかるよ
http://rubykaigi.org/2013/talk/S64

後半は飛ぶから面白いぞ

artoo以外にもRailsとは無縁の面白いgemはたくさんあるから探してみな
860デフォルトの名無しさん:2014/01/28(火) 02:52:30.32
日本のRubyコミュニティって...
861デフォルトの名無しさん:2014/01/28(火) 03:20:16.71
>>838
現時点で作りたいものがないなら今すぐプログラミング言語のことは忘れろ
時間の無駄なんで

DIY症候群ってのがいちおうあって、釘とかハンマーとかの使い方覚えたパパが
日曜になるたびに家の中徘徊して自分で作れるもの直せるもの探してホームセンター行って
酷いときには隣近所にまで聞いて回るような症状だ
作るものがないときは作成手段を持っていることはすっぱり忘れて日常生活に戻るといい

必要になったらそのときふっと思い出したり
「自作することもできます」→「あっプログラミング言語勉強すれば自力でいけるのか」
という流れでやる理由ややる気が出るから
862デフォルトの名無しさん:2014/01/28(火) 03:32:01.32
ある程度学ばないとなにができるのかわからないというのは確かにあるが、
「参考書の1ページ目からやっていく」タイプの勉強はプログラミングには向かないな
それは半年後なり1年後なりに業務プログラムを作ることが既にわかってる社会人研修の理屈
863デフォルトの名無しさん:2014/01/28(火) 04:16:50.45
4,5冊ほど、一気に読んで中身を忘れるの繰り返し
そして、大したものも作れない。これが職業プログラマの運命
864デフォルトの名無しさん:2014/01/28(火) 04:25:14.16
生活費になっているならそれで充分(世の中の95%はたいしたものじゃなくても用が済む)
少なくとも読取速度と精度は上がっているから言うほど完全無駄でもない
865デフォルトの名無しさん:2014/01/28(火) 05:07:44.01
たいしたものじゃないものを作るのに人生の大半の95%を費やして、大したものも作れない。これが職業プログラマの運命
866デフォルトの名無しさん:2014/01/28(火) 05:48:47.93
>>818
ありがとうございます。
でもこれってhogeが依存しているgemを表示してるような・・・
hogeに依存しているgemを知りたいのですが、無理なんでしょうか
867デフォルトの名無しさん:2014/01/28(火) 05:56:25.89
http://ideone.com/25v5Lk
正規表現と後方参照で裏返しの実装したオセロ
868デフォルトの名無しさん:2014/01/28(火) 06:18:24.41
>>866
いい加減迷惑なんだけど
869デフォルトの名無しさん:2014/01/28(火) 06:49:34.67
&:って?
870デフォルトの名無しさん:2014/01/28(火) 06:51:13.46
>>866
お前には無理だからさっさと回線切れ。
身の程知らず。
871デフォルトの名無しさん:2014/01/28(火) 06:55:51.37
ふがーふがー
872デフォルトの名無しさん:2014/01/28(火) 07:34:43.35
>>869
&:は独立した記号
&(:hoge)ということ
:hogeというsymbolをブロックとして渡す
symbolをブロックに変換するのはto_procが使われる
あとはぐぐれ
873デフォルトの名無しさん:2014/01/28(火) 08:02:51.73
>>866
少しは頭使え
(必要な範囲の)全部のgemに対してgem dependancyしてリスト作ればいいだけだろ
874デフォルトの名無しさん:2014/01/28(火) 08:24:28.96
一気にやるとえらい負荷がかかるが、この情報が欲しいのならどっかで誰かがやらんといかんからな
一発で出るようにするにはどんな些細なバージョン違いのgemでも登録時に自動で登録分類しておいて
莫大な情報として誰かが貯めておいて適宜返事しないといけない

自力でブン回したほうがマシである
875デフォルトの名無しさん:2014/01/28(火) 09:25:51.83
それを事前にやっておくのがRubygems.orgの役目なんじゃないの、とは思うが
全gemの全バージョンに対してremote調査かけられていい気はすまい
876デフォルトの名無しさん:2014/01/28(火) 09:45:06.25
--reverse-dependencies の話かと思った
877デフォルトの名無しさん:2014/01/28(火) 09:49:18.41
878デフォルトの名無しさん:2014/01/28(火) 16:39:39.89
頭の足りてない>>866惨めだな
生きてて惨めな気持ちにならない?
頭が足りてないからならないかw
879デフォルトの名無しさん:2014/01/28(火) 16:52:06.72
死ねゴミ
880デフォルトの名無しさん:2014/01/28(火) 17:59:58.04
4時半頃にム板でつけられたレスを俯瞰してみるとたいへん興味深い
881デフォルトの名無しさん:2014/01/28(火) 18:17:03.71
hoge厨とuyの二極構造になりつつあるね
882デフォルトの名無しさん:2014/01/28(火) 19:43:30.28
hoge厨はマジで結構迷惑だよな。
883デフォルトの名無しさん:2014/01/28(火) 20:06:15.45
Cやらperlやらのスレもhogeがらみで荒す奴が出現したよね。

hoge使う奴に対しては「hoge使うな」
hoge注意するスレではhoge使って神経逆撫でる。

コード一行も書けない奴の荒しの常套手段。
884デフォルトの名無しさん:2014/01/28(火) 22:23:22.92
嵐とかじゃなくて、単なる本物の精神病の人だと思うけどな

まあ、どうでもいいよ
お大事に
885デフォルトの名無しさん:2014/01/29(水) 01:31:55.04
チャイニーズ雪かき

チャイニーズ雪かき

チャイニーズ雪かき

チャイニーズ雪かき
886デフォルトの名無しさん:2014/01/29(水) 09:39:19.61
Rubyってrails使わないと何が出来るんですか?
何でも出来るって言われるとイメージが湧かないので
具体例を上げてくれると嬉しいです。
887デフォルトの名無しさん:2014/01/29(水) 09:50:43.25
>>886
検索すればいろいろ出てくるだろ。
migemoってオリジナルはrubyだよな。よく使ってる。
俺はこないだ2chクライアント作ったぞ。
888デフォルトの名無しさん:2014/01/29(水) 10:07:26.18
888
889デフォルトの名無しさん:2014/01/29(水) 10:31:10.66
>>887
横からで悪いけどGUIってどれ使った?
tk?gtk?
890デフォルトの名無しさん:2014/01/29(水) 10:42:17.87
>>889
使ってない。
GUI使うときはJava使ってる。
どっちも、tcl/tkとかC/gstreamerでちょっと使ったことあるけど、rubyからはない。
891匿名希望@Vim%Chalice:2014/01/29(水) 10:48:35.39
>>887
>俺はこないだ2chクライアント作ったぞ。
昔、日本語 vim を配布している人の chalice を手がかりに
似たようなものをつくったんだけど、2chの仕様が変わって
かなり昔から post ができなくなっている。
だれか作って、公開してくれないかな。

require 'nichan.rb'
obj = Nichan.new;
# グローバルな設定
# obj.proxy = 'proxy.foo.bar.baz:8888'
# obj.name='Anonymous#trip'
# obj.cookie = '~/nichan/log/cookie.txt'
subject = obj.get_subject 'http://toro.2ch.net/tech/'
thread = obj.get_thread 'http://toro.2ch.net/test/read.cgi/tech/1383742375/'

message=<<EOD
title: Hello World
url: http://toro.2ch.net/test/read.cgi/tech/1383742375/
name:
mail: sage
cookie: ~/nichan/log/cookie-2.txt
--
だれか「プロ」が作って
EOD

status = obj.post message
892デフォルトの名無しさん:2014/01/29(水) 10:51:07.87
>>891
プロだが仕事で作ったので、それはあげられないや
893匿名希望@Vim%Chalice:2014/01/29(水) 10:55:39.94
そっか残念だな
昔は設計がハンパだったし、いまならカッコよく作れるはずなんだが
アマは設計についての理解が後回しになるんよ
いそがしくて、時間がないんだよな・・・
894デフォルトの名無しさん:2014/01/29(水) 11:09:26.00
>仕事でGUIじゃない2chクライアントを作った

真実はいつもひとつ!
895デフォルトの名無しさん:2014/01/29(水) 11:27:24.99
本業が忙しくてプログラミングの時間が取れないのはアマ共通の悩み
896デフォルトの名無しさん:2014/01/29(水) 12:22:34.87
2chってちょっと荒らしが増えるたびに微妙に仕様変えてくる
それについて行かないとダメだから結構しんどい
897デフォルトの名無しさん:2014/01/29(水) 12:42:07.73
>>891
ちなみに俺様がム板で使ってるゴミみたいなスクリプトはこれ
http://ideone.com/HzgIRf

・・・ゴミみたいなコードだな
ちなみにwatirはrequireした時ではなく
Watir::Browser.new :ie
↑この時点でクラス宣言をしてしまう為
本来IEは非表示実行が可能なオプションがあるにもかかわらず、デフォルトで表示されてる状態になる
newした後に
agent.visible = false
で、一応非表示にできるが一瞬ウィンドウが見えてしまう
これがやめさせる場合はライブラリ側の ie-class.rb で
def visible
@visible ||= false # true
end
これをする必要がある
898デフォルトの名無しさん:2014/01/29(水) 14:21:02.16
>>896
おまいが仕様作る側に廻れば良い
待ってるぜ
899デフォルトの名無しさん:2014/01/29(水) 15:05:16.34
俺様は手段を沢山持ってるから

むしろwatirに対してどういった規制を2chがやってくるか見ものだね
検知出来るかな
900デフォルトの名無しさん:2014/01/29(水) 18:12:56.92
>>886
なんというか、釘セットの用途を門外漢が聞くようなもので、正直それにはあんまり意味がない

わかんないならわかんないで別にいいじゃん
釘なんてもらってもハンマー持ってないし上手な打ち方もわからんし板自体持ってない上に壊れたものも家にねえ、
というなら釘は無用の長物であろう
901デフォルトの名無しさん:2014/01/29(水) 18:18:41.56
意味不明
902デフォルトの名無しさん:2014/01/29(水) 18:43:08.28
昔は「Rubyは誰でもなんでもできる!すげえ!」という痛い人が出張ってたんだけど
最近はさすがにそんな突飛な人も見なくなってたいへん使いやすくてよろしいです

>>886
RubyでなにするのかわからないのならRubyでなにもしなくてよろしおすえ
903デフォルトの名無しさん:2014/01/29(水) 18:51:04.74
>>886
ホモサピエンスの小さい頭脳を、抽象的な概念でいっぱいにすることができる
904デフォルトの名無しさん:2014/01/29(水) 18:59:12.48
は?
905デフォルトの名無しさん:2014/01/29(水) 20:30:35.46
>>902
今でも、山に向かって湖に飛び込めってRubyistは居るはず
906デフォルトの名無しさん:2014/01/29(水) 21:03:04.34
>>904
おまえがRubyを使ってるわけじゃない

Rubyがおまえの頭脳にアクセスして、具体的な形を与えてもらってるんだよ
907デフォルトの名無しさん:2014/01/29(水) 22:20:07.04
貴方がRubyを選ぶのではない。Rubyが貴方を選ぶのだ。
908デフォルトの名無しさん:2014/01/29(水) 22:21:56.09
ネコと人間の関係みたいだな
909デフォルトの名無しさん:2014/01/29(水) 22:30:31.48
その場合、人間の方がRubyで、ネコの方がプログラマという意味ですよね
910デフォルトの名無しさん:2014/01/30(木) 00:06:16.92
array = Array.new(10)
array.each { |x| array(x) =rand(10) }

とかやると、nilにinteger入れちゃだめ、みたいなエラーが出るけど、どうして
そういうルールにしてるの?

配列初めて作ったら、nilに決まってるじゃん。じゃあ最初に入れたデータの
型にすればいいじゃん。普通の変数みたいに。
911デフォルトの名無しさん:2014/01/30(木) 00:25:44.98
そのコード何がしたいの?

array[x]=rand(10)のtypoだとして
array[nil]になるんだからどうしようもないでしょ
nilは整数に変換できないよってエラーだ
912デフォルトの名無しさん:2014/01/30(木) 00:33:35.43
もしarrayの中身を乱数にしたいのなら
array.map!{rand(10)}

eachの中でレシーバ自身を変更しちゃいけない
913デフォルトの名無しさん:2014/01/30(木) 00:39:09.54
ar =[]
10.times { ar << rand(10)}
とか
914デフォルトの名無しさん:2014/01/30(木) 01:14:56.23
こう

ar = []
[] while ar.<<(rand 10).size < 10
p ar
915デフォルトの名無しさん:2014/01/30(木) 01:30:10.05
あっぶねぇ、色々わけわかんなくなったけどやりたかったのはこれかな

array = Array.new(10)
array.each_with_index { |x , i|
  array[i] = rand(10)
}
p array
あるいは
10.times do |i|
  array[i] = rand(10)
end

けどrubyだとこういうコードはあんまし書かないけどな
p ar = 10.times.map{rand(10)}
俺ならこうやる
916デフォルトの名無しさん:2014/01/30(木) 04:52:45.04
>>911-915
初心者はコテつけろカス
917デフォルトの名無しさん:2014/01/30(木) 06:38:41.02
Array.new(10){rand(10)}
918デフォルトの名無しさん:2014/01/30(木) 18:17:03.99
一番駄目な回答じゃねえか
919デフォルトの名無しさん:2014/01/30(木) 18:20:38.37
何で駄目なん?
920匿名希望@Vim%Chalice:2014/01/30(木) 19:14:11.54
>>897
自前でやることばかり考えていました
watir 参考にさせてもらいます
921デフォルトの名無しさん:2014/01/30(木) 21:11:39.82
>>919
>>918が思いつかな... 思いつけなかったから
922デフォルトの名無しさん:2014/01/30(木) 21:31:37.92
Array.new(10, rand(10))と勘違いしたから
923デフォルトの名無しさん:2014/01/31(金) 00:21:42.18
あれー!
924デフォルトの名無しさん:2014/01/31(金) 04:32:30.61
Rubyを勉強してみたいのですがとある筋から手に入れた「たのしいRuby」が1.8です
1.8→2.0で「変わった!」とはっきりしてる所などありますでしょうか?
たとえばPHPならmagic_quotes_gpcがディレクティブから削除されたとかヌル文字の扱いの変更とかです
教えて頂ければ幸いです
925デフォルトの名無しさん:2014/01/31(金) 04:46:39.21
1.8の本は最初に読んではいけないレベルで変わってるよ
926924:2014/01/31(金) 04:56:41.99
うーん、そうですか
質問しといてあれなんですがWeb漁ってきたら、文字エンコーディング関連も変わってることがわかりました
「たのしいRuby」は基本文法のことしか記載されてないので問題ないかもしれません
とりあえずこれをパラパラと読み、Rubyの雰囲気を感じておこうと思います
次のステップで購入する本は間違いなく2.0を意識したものにします。返信ありがとうございました
927デフォルトの名無しさん:2014/01/31(金) 05:44:42.35
全員が「問題ある」って言ってるのになぜ初心者が「問題ない」と判断するのか
928デフォルトの名無しさん:2014/01/31(金) 06:18:39.49
本当に欲しかったものが
「あなたは間違っている」という事実に基いたアドバイスではなく
「あなたは間違っていない」という承認だったから

プログラミングとかにはあんまし向かない人っすな
929デフォルトの名無しさん:2014/01/31(金) 07:07:00.25
シャドウィングとEnumerableが一番変わってる
あとcharsとかsplitとか
他には標準ライブラリの戻り値が結構違ってるはず

で、そういうのが変わってると
「推奨すべき書き方」が違ってきちゃうから
1.8で覚えても、古いあまり良くない書き方を覚えてしまう
ネットでもそこそこ調べられるよ
930924:2014/01/31(金) 08:03:32.67
>>927
パラ読みすると、どのプログラムにもある共通の制御文やファイルの入出力の方法などシンプルな内容の書籍だったからです
よくよく考えると「そういった根本的な所まで変わらんよな」と質問してから思ってしまいました
確かに初心者なのに調子のりました ごめんなさい

>>928
頑張ってご飯食べていきます

>>929
戻り値が変わってるような変更は知っておきたいですね
ありがとうございます 良さそうなサイトをみつけたのでそこで調べてみます
931デフォルトの名無しさん:2014/01/31(金) 08:11:23.76
>>930
うざい死ね
932デフォルトの名無しさん:2014/01/31(金) 11:22:50.72
死なないようにお薬出しておきますね
933デフォルトの名無しさん:2014/01/31(金) 19:50:19.15
1.8と1.9の並立時代ならまだよかったんだけどね
1.9.xすら御役御免のレールに乗った現状、初心者が1.8を学ぶ理由はゼロどころかマイナス

もちろん1.8.6とペアで保守するローカルなスクリプト群があるとかなら必須だろうし妥当だけど、
ぶっちゃけそんなんレアだろう
934デフォルトの名無しさん:2014/01/31(金) 20:28:22.44
レアといわれようが、おれは、つかうよ。もちろん、1.9も2もします
935デフォルトの名無しさん:2014/01/31(金) 20:47:00.26
そういえば、大学で古典ギリシャ語の授業がなぜか超満員で、教員が
「君たち、この授業をとっても現代のギリシャ人とはお話しできないよ?
ソクラテスとかアリストテレスとかそんなに好きなの?」
って言ってたの思いだした
936デフォルトの名無しさん:2014/01/31(金) 21:00:38.97
書籍は長く残るから初心者が手に取ってみたら1.8用だった、というのはよくある話だな
Javaとかいまだに1.4用が残ってたりするからな
937デフォルトの名無しさん:2014/01/31(金) 21:02:28.85
Rubyアプリケーションプログラミングも最新バージョン対応版が出たら絶対買うのに
938デフォルトの名無しさん:2014/01/31(金) 21:05:43.41
マイナスっつってもrubyの進化の過程を知ってるのも一つの知識だけどね
1.8の構文も知ってるとrubyの言語仕様の失敗例が学べる
雑学レベルだが
939デフォルトの名無しさん:2014/01/31(金) 21:26:03.31
それはRubyを学んでからで充分
Rubyを学ぶ前に学んでも意味がない

小学生に古典ラテン語を教えるようなものだ
940デフォルトの名無しさん:2014/01/31(金) 23:34:53.10
今は小学生が学校でruby勉強する時代
俺なんて、今中高生ぐらいの若手が社会に出てきたときに絶対用無しになるわ
嫌な時代になった
941デフォルトの名無しさん:2014/01/31(金) 23:47:58.30
>>922
>Array.new(10, rand(10))
これじゃ10個とも同じ数が入っちゃうからダメじゃん
942デフォルトの名無しさん:2014/02/01(土) 00:48:32.17
すみません
http://www.diana.dti.ne.jp/~katta/tdd/1.Point_plus.html
このページのaddendって何でしょうか?
検索しても出てきませんし、挙動が理解できません
943デフォルトの名無しさん:2014/02/01(土) 01:04:53.07
>>942
単なるメソッド plus の引数であり、ローカル変数になる
データ型としては、他のPointオブジェクトを期待している
つまり、座標の加算式 <1, 2> + <10, 20> = <11, 22> は
Point.new(1, 2).plus(Point.new(10, 20)) とコード化する

あと、この著者さんはまだRuby慣れしていないようで、
メソッド名として getX みたいな命名しているけど、これはJava流
Rubyらしい作法は、単に x だけ
つまり、point.getX() ではなく point.x と書くのがRubyの作法
真似しないようにね
944デフォルトの名無しさん:2014/02/01(土) 01:26:53.36
>>940
そいつらが社会に出る頃には、Rubyや今の潤沢なWeb業界は失くなっているに1ペリカ
945デフォルトの名無しさん:2014/02/01(土) 01:30:10.24
回答ありがとうございました
946デフォルトの名無しさん:2014/02/01(土) 01:31:00.13
Java の getter/setter 書いてしまう病だな・・・
アレ抜けるの大変
947デフォルトの名無しさん:2014/02/01(土) 01:38:08.55
C#のプロパティの方がなんぼかRubyっぽいよな
948デフォルトの名無しさん:2014/02/01(土) 01:57:57.17
>>944
Web業界はあるだろうが、決してホットな分野ではないだろうね
949デフォルトの名無しさん:2014/02/01(土) 05:10:37.40
>>942ですが、もう一つ疑問点が出てきました
def ==(point)
return (@x == point.getX()) && (@y == point.getY())
end
これはいったい何なのでしょうか?
全体的に別に利用されていない気がするのですが、Rubyの特殊メソッドか何かなのでしょうか?
関数名に==などと使っているのは初めて見ました
function _()などは見たことありますが
950デフォルトの名無しさん:2014/02/01(土) 05:18:10.54
a == b
↑ この時に呼ばれるメソッド

とりあえずこれ実行して見りゃわかるんでは

class A
  def ==n
    p self , n
  end
end
a = A.new

a == 4
951デフォルトの名無しさん:2014/02/01(土) 05:27:50.69
>>942
このサイトだめだわ

class Point
def initialize(x, y)
@x = x
@y = y
end

attr_reader :x, :y

def ==(point)
(x == point.x) && (y == point.y)
end
end
952デフォルトの名無しさん:2014/02/01(土) 05:38:23.28
>>940 >>944
日本は中国の植民地になってて
公用語も北京語になるだろう
今から中国語覚えなさい
953デフォルトの名無しさん:2014/02/01(土) 05:40:55.29
>>949
Rubyでは「演算子」に見えるもののいくつかもメソッド

a==b としたとき、Rubyはaのインスタンスメソッド == に引数bを渡している、つまり a.==(b) を行なっている
オブジェクトaの == の結果を自分で定義したい場合は == メソッドを定義する必要がある

似たような頻出ものに [] メソッドと []= メソッドがあり、たとえば x[key]=val は x.[]=(key,val) を呼んでいる


なお、中国語が少なくとも英語並の公用語になるなると30年以上言われ続けてるが全然そんな気配もないな
954デフォルトの名無しさん:2014/02/01(土) 06:09:36.16
returnも「極力書いたほうがいい」という時期と「書かなくていいなら書かなくてもいい」という時期が錯綜するんだよね
Rubyの流儀に追い付くのは後者なんだけど
955uy:2014/02/01(土) 06:33:22.49
出、出現〜wwwww 小日本的変态的言语Ruby使用奴〜wwwww
956デフォルトの名無しさん:2014/02/01(土) 06:47:03.42
a.method( arg )

a.==(b)

a == b

だからrubyは四則演算とかも実は
1 + 2 これが 1.+(2) ってかける
957デフォルトの名無しさん:2014/02/01(土) 09:56:36.14
でも、1 + 2 と 1.+(2) は等価じゃないから
気をつけろってばっちゃは言ってた。
958デフォルトの名無しさん:2014/02/01(土) 11:22:51.29
>>941
そう言ってんじゃん
959デフォルトの名無しさん:2014/02/01(土) 12:34:24.45
>>957
等価じゃないの?
演算子の優先度とかの関係?
960デフォルトの名無しさん:2014/02/01(土) 12:46:09.32
>>957
どう違うの
教えてクダサーイ
961デフォルトの名無しさん:2014/02/01(土) 13:20:30.40
今更だが、 addend は「加えるもの」だな。
検索もいいが英和辞典も引こう。
962デフォルトの名無しさん:2014/02/01(土) 13:48:52.48
augend 被加算数
addend 加算数
963デフォルトの名無しさん:2014/02/01(土) 13:49:52.45
operand 演算対象
964デフォルトの名無しさん:2014/02/01(土) 21:22:34.90
>>961
英英辞書も良いよ。
965デフォルトの名無しさん:2014/02/01(土) 21:33:20.72
普通の英和や英英では addend, augend は載ってない気がする
いずれにしても勉強になる話だった
966デフォルトの名無しさん:2014/02/02(日) 21:38:06.44
def push
s = St.new
St&amp; ref = s
すみません、これの最後の文、St&amp; refはどういう意味なのでしょうか?
967デフォルトの名無しさん:2014/02/02(日) 21:59:24.55
何か変になってますね
ampは不要です
空白スペースです
968デフォルトの名無しさん:2014/02/02(日) 22:18:26.73
その質問は、そのコードを書いた人に訊いてくれw
もしここで質問したいのなら、ソースになったページのURLも添えるか、
あるいは、せめて付近のコード断片を貼付けるかしなさい
969デフォルトの名無しさん:2014/02/02(日) 22:31:04.69
>>968
すみません、そうなのですか
Rubyの標準的な書き方かと思っていたのですが、違うのですね
直リンク禁止中なのでScheme抜きますが、
www.diana.dti.ne.jp/~katta/tdd/stack.html
のサイズ関数の項に書かれています
970デフォルトの名無しさん:2014/02/02(日) 23:00:25.77
これまちがえてC++のコード書いたことないか?
971デフォルトの名無しさん:2014/02/02(日) 23:06:02.58
C++のリファレンス初期化コードだね。
972デフォルトの名無しさん:2014/02/02(日) 23:09:36.20
Rubyに限った話じゃないかもしれないですが
正規表現で改行を見つけて置換するのって
どうやって書くとよいでしょうか?

str.gsub(/(\r|\r\n|\n)/){"置換対象"}
上記のように書くしかないでしょうか?

やりたいのはC言語のプリプロセッサのように\に続く改行を取り除くことです
973デフォルトの名無しさん:2014/02/02(日) 23:18:24.37
CRとかいう邪悪なものをかんがえなければいい。
というのはおいといてstr.gsub(/\\\r?\n?/, "")でよくね
974デフォルトの名無しさん:2014/02/02(日) 23:25:40.60
>>971
なるほど、C++なのですか
挙動としては基本的にref == s(ref === s?)と考えていいのでしょうか?
リファレンス初期化というものが分からないのですが、アドレスが同じと考えて良いのならば、
下に書かれている、
assert_equal(8, s.top)と assert_equal(8, ref.top)は同じ事をしていると思うのですが...
975デフォルトの名無しさん:2014/02/02(日) 23:32:55.53
>>974
C++では意味のあったコードが、Rubyにしたから意味不明になってるだけだと思うよ
976デフォルトの名無しさん:2014/02/02(日) 23:36:20.54
なるほど、ではrefに関連する部分は無視しても問題ないという事ですね
977デフォルトの名無しさん:2014/02/02(日) 23:55:00.58
>>969
このサイトに、参考にしていい箇所はひとつもない
というかわざわざ駄目なところばかり貼ってなんなのって感じなんだが
978デフォルトの名無しさん:2014/02/02(日) 23:58:31.45
>>973
ありがとうございます
でもそれだと\のみにもマッチしちゃいますよね
たしかにCRのみの場合を無視すれば
/\\\r?\n/でよいですね
979デフォルトの名無しさん:2014/02/03(月) 00:10:49.03
Rubyにおいては正規表現はそのままユーザーが記述したように動く
どういうサポートを望んでるのかは知らんけども
980デフォルトの名無しさん:2014/02/03(月) 00:15:28.62
最初の \\ は要らなくない?
981デフォルトの名無しさん:2014/02/03(月) 00:17:18.23
「通常は改行を取り除くが、引数に文字を指定するとその文字に続く改行を取り除き、別なオプションを指定すると連続する改行を全て取り除く」
みたいなメソッドを望んでるんじゃないでしょうか(適当)
982デフォルトの名無しさん:2014/02/03(月) 00:22:24.51
まだ自分の知らない正規表現の表記とかメソッドがないかなあと思ったわけです
CR LF のパターンによらず改行を対象に何かしたい、というのはよくありそうだと思ったので何かすでにないかな、と
983デフォルトの名無しさん:2014/02/03(月) 00:31:06.03
>>980
いるだろw
984デフォルトの名無しさん:2014/02/03(月) 00:46:34.44
>>978
おっと、すまそ。
str.gsub(/\\$\r?\n?/, "")だな
985デフォルトの名無しさん:2014/02/03(月) 00:52:54.56
あ、そうか、これだとOSの改行コード依存になるか。失礼。
986uyu:2014/02/03(月) 02:34:26.17
p b = "abcd\n"
p b.chomp + "_nanikasudeninaikana,to_"

"
afa
f
wa
w
fas
dfsa
"
.each_line.map(&:chomp).each_with_object("_nanikasudeninaikana,to_").map(&:+)
.display
987デフォルトの名無しさん:2014/02/03(月) 04:41:44.40
それっぽく表示されてるけど別物だからね
それっぽい方にあわせると本来の意味の方で不整合が起きる
988デフォルトの名無しさん:2014/02/03(月) 05:42:05.36
具体的に言えハゲ
989デフォルトの名無しさん:2014/02/03(月) 08:19:41.72
すいません、centos6を利用しているのですが、更新されているruby2のrpmはありませんか?

標準で入っているのはruby1.8で、社内の審査で一次利用が禁止されてしまいました
990デフォルトの名無しさん:2014/02/04(火) 00:10:10.96
rubyじゃ無理
991デフォルトの名無しさん:2014/02/04(火) 01:27:44.19
CentOS 7 が出るのを待ってみるとか・・・
992デフォルトの名無しさん:2014/02/04(火) 01:31:27.07
そもそもrbenvとかで必要なバージョンを用意して使うのが大多数だと思うんだが……
993デフォルトの名無しさん:2014/02/04(火) 03:46:41.80
n=true
toggle = ->{ n=!n }
p toggle.call
p toggle.call
p toggle.call
p toggle.call

こういう風にメソッドを呼び出すたびにtrue,falseが入れ替わるものが欲しいんですけど
標準Libには無いですか?
994デフォルトの名無しさん:2014/02/04(火) 04:00:44.77
そんなヘンなもん俺の知るかぎり無いけど。
っていうか内部状態を持たせたいならなぜObjectにしないの?
995uy:2014/02/04(火) 04:16:31.84
toggle=->n=true{->{n=!n}}.call
996uy:2014/02/04(火) 04:19:47.88
>>993
toggle = [true,false].cycle
p toggle.next
p toggle.next
p toggle.next
p toggle.next
997989:2014/02/04(火) 04:43:30.08
難しいようですね
客先のサーバで、RPM以外でツールをいれるのは、客毎、サーバ毎にサーバ管理に承認取らなければいけないのです
RPMだとレポジトリの承認が取れてると楽だったのですが…
pythonやphpだと最新版が普通にあるのでそちらを使うしかなさそうですね
rubyは客先で使うのは難しいよと先輩に言われた意味がやっとわかりました
ありがとうございました

>>992
社内のrailsを使っているサーバはrbenvを使ってます
サーバ管理が部内だと楽なんですけどね
998uy:2014/02/04(火) 04:45:14.17
質問です
ソースコード内の文字列からファイルストリーム作って
print while r.gets を動かすにはどうしたらいいですか?
やりたい事はこんな感じですが、IO.pipeからストリーム作るとgetsで$_に格納されていません

r, w = IO.pipe
w << "abc\ndef\n"
print while r.gets
999デフォルトの名無しさん:2014/02/04(火) 04:56:12.21
>>998
StringIO
っていうか暗黙の$_はあまり使わないほうがいいとは思うが。
io.readlines.each{|l| print l}でいいじゃん
1000uy:2014/02/04(火) 05:02:59.78
>>999
U。・ω・。)ノノthank you...☆
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。