Ruby 初心者スレッド Part 54

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

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

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

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

逆引きRuby
http://www.namaraii.com/rubytips/
2デフォルトの名無しさん:2014/02/17(月) 09:54:06.36
>>1
乙、待ってたよん!!
3デフォルトの名無しさん:2014/02/17(月) 10:13:17.70
[1 , 2].add #=>3

[1 , 2 , 3].sum #=>6
とかのメソッドが無い理由ってどんなことが考えられますか?
一見便利そうなのに。

[1 , 2 , 3].inject(:+)
で解決できるのはわかるのですが
4デフォルトの名無しさん:2014/02/17(月) 10:22:07.37
>>3
Objectクラスにaddやsumに反応するメソッドを実装できたら考えてあげてもいいよ
5デフォルトの名無しさん:2014/02/17(月) 11:00:27.06
面倒くさい質問してもいい?
6デフォルトの名無しさん:2014/02/17(月) 11:14:55.45
>>4
まあそういうことだよね
要素に数値や文字列が入ってないと例外で落ちるようなメソッドをArrayに作るわけにはいかん
だからこそ使用メソッドをユーザーが指定できる畳み込みがあるわけだし
7デフォルトの名無しさん:2014/02/17(月) 12:35:26.23
  |l| i|li ,      __ _  ニ_,,..,,,,_
 l|!・ω・ :l. __ ̄ ̄ ̄    / ・ω・≡
  !i   ;li    ̄ ̄ ̄    キ     三
  i!| |i      ̄ ̄  ̄  =`'ー-三‐ ―

              /  ;  / ;  ;
          ;  _,/.,,,//  / ヒュンッ
            /・ω・ /
            |  /  i/
           //ー--/´
         : /
         /  /;
    ニ_,,..,,,,,_
    / ・ω・`ヽ  ニ≡            ; .: ダッ
    キ    三    三          人/!  ,  ;
   =`'ー-三‐     ―_____从ノ  レ,  、
8デフォルトの名無しさん:2014/02/17(月) 12:36:50.29
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
9デフォルトの名無しさん:2014/02/17(月) 12:37:37.92
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
10デフォルトの名無しさん:2014/02/17(月) 12:38:52.51
プログラマ35歳定年の訳
http://www.youtube.com/watch?v=IpiU-iyWrsA
11デフォルトの名無しさん:2014/02/17(月) 12:47:21.44
qtを利用してGUIアプリケーションを作成しているのですが、
ボタンクリックイベント後に呼び出される、メソッド内の処理をしている間、
本体がフリーズ状態となってしまいます。(半透明で反応しない)
メソッド内の処理の先頭に、
Thread.newブロックなどをおいても同様にフリーズしてしまいます。
どなたか、良い策をおねがいします!
12デフォルトの名無しさん:2014/02/17(月) 12:47:26.65
>>5
その質問が面倒くさい。
13デフォルトの名無しさん:2014/02/17(月) 13:34:27.27
などと上手い返しをしております!!
14デフォルトの名無しさん:2014/02/17(月) 19:20:11.47
cx
15デフォルトの名無しさん:2014/02/18(火) 13:43:35.09
RubyでCGIやりたいです。
Ruby on Railsは必要ですか?
またおすすめの開発環境ありましたらお願いします。
16デフォルトの名無しさん:2014/02/18(火) 15:15:27.04
>>15
今日あと9時間くらいあるのでCGIそのものについて学べ
17デフォルトの名無しさん:2014/02/18(火) 15:16:36.88
rubyじゃ無理
18デフォルトの名無しさん:2014/02/18(火) 15:17:38.22
>>15
不要。
viかemacs。
19デフォルトの名無しさん:2014/02/18(火) 15:19:54.44
>>15
Yiとxmonado
20デフォルトの名無しさん:2014/02/18(火) 16:09:09.09
日帝の残滓が作ったrubyのコミュは民度の高いチンピラと同じ
21デフォルトの名無しさん:2014/02/18(火) 16:12:46.17
Discovery channelあたりで、タトゥーを入れて自動車修理をしているヤツらのクラスタ。
日本のド田舎でリーゼントしているのとは別物。
22デフォルトの名無しさん:2014/02/18(火) 16:15:13.60
sauce labが、そんなヤツらだった
23デフォルトの名無しさん:2014/02/21(金) 06:29:16.35
>>15
オレもそれやってみたい
仲間になろうよ 
と言ってももう見てないかな
24デフォルトの名無しさん:2014/02/21(金) 22:15:17.64
CGIが何か分かってない馬鹿には無理
まともな人間なら標準出力に出力できる言語(言語に限らないが)なら可能だということは明白
25デフォルトの名無しさん:2014/02/21(金) 22:20:42.36
完成する頃にはCGIが何かわかるようになってるから、バカじゃなくなるな。従って無理ではないという事になる。
26デフォルトの名無しさん:2014/02/21(金) 22:25:59.68
1990年代は bash の CGI を見た
Cとかでも書いていた人いたでしょ
27デフォルトの名無しさん:2014/02/21(金) 22:27:07.23
bash の CGI スクリプトな
28デフォルトの名無しさん:2014/02/21(金) 22:30:57.93
CGI書けるって自慢気に言うフリーランス系大学生にbashでCGI書いて見せると不思議そうな顔するよなw

コーディングから動作確認まで不思議そうな顔してるからマジうけるwww
29デフォルトの名無しさん:2014/02/21(金) 22:32:49.70
まずCGIが何の略か調べるとこからだな。特にI。
30デフォルトの名無しさん:2014/02/21(金) 23:01:08.51
コモン・ゲートウェイ・インポテンツ
31デフォルトの名無しさん:2014/02/21(金) 23:18:22.73
Cool Great I am
32デフォルトの名無しさん:2014/02/21(金) 23:48:25.89
Computer Gangsters International
33デフォルトの名無しさん:2014/02/21(金) 23:53:53.51
馬鹿には無理
34デフォルトの名無しさん:2014/02/22(土) 01:46:20.62
コンピュータ・ゲーム・インストラクター
35デフォルトの名無しさん:2014/02/22(土) 03:11:47.15
C チンチン
G ゴミゴミwwwwww
I イクゥゥゥゥゥドピュドピュドピュ
36デフォルトの名無しさん:2014/02/22(土) 06:45:28.47
そういや昔からCGIって言ってた動画屋さんがちょっと困ってたなあ
37デフォルトの名無しさん:2014/02/23(日) 11:50:54.53
RoRって無料で借りられるレンサバみたいなので使える所ある?
38デフォルトの名無しさん:2014/02/23(日) 17:36:13.19
>>37
rubyとcgiが動けば、何とかできるんじゃないの。遅いだろうけど。
aws ec2の1年ほぼ無料じゃダメかな。
39デフォルトの名無しさん:2014/02/24(月) 08:25:58.36
RoRってCGIで動くのか?って思ったら動くんだねえ。
しらなかった。
ttp://takuya-1st.hatenablog.jp/entry/20120108/1326043011
40デフォルトの名無しさん:2014/02/24(月) 08:43:16.88
Railsは無料鯖では一切使えないとみなしていい
そもそもRailsとそのアプリケーション自体、そういう極めて限定された共用リソースでの使用を考慮していない
41デフォルトの名無しさん:2014/02/24(月) 16:54:59.85
Ruby 1.9.3-p545 リリース
https://www.ruby-lang.org/ja/news/2014/02/24/ruby-1-9-3-p545-is-released/

1.9シリーズ最後のRuby
42デフォルトの名無しさん:2014/02/24(月) 22:38:12.68
Rubyでライブラリを使わず、にGETリクエストを送りたいんです
アクセストークンが必要でそれは手に入れました

ですがここからどうやってこのアクセストークンをヘッダーにつけて発行するのでしょうか。


url = URI.parse('https://hoge.com/api/foo.json?param=fuga')
http = Net:HTTP.new(url.host, url.port)
http.use_ssl = true
43デフォルトの名無しさん:2014/02/24(月) 22:44:31.46
http.start して http.get
Net::HTTP#get の2番目の引数にヘッダを Hash で渡す
44デフォルトの名無しさん:2014/02/24(月) 23:58:18.05
ruby始めたばっかりなんですが
module Hoge
_def fuga()
__なんたらかんたら
_end
_def self.piyo()

でself.piyoの中からfuga()を呼びたいんですがどうやればいいんでしょうか?
fuga()はモジュール内の関数からのみ利用するものです
45デフォルトの名無しさん:2014/02/25(火) 00:07:53.18
>>44
Hoge厨はさっさと消えろ
精神異常かお前
46デフォルトの名無しさん:2014/02/25(火) 00:13:56.03
>ruby始めたばっかりなんですが

こういうどうでも日記を本題よりも最初に持ってくる精神構造をしてるのがhoge厨

日記と質問の切り分けもできないゴミクズ
47デフォルトの名無しさん:2014/02/25(火) 00:22:37.19
>>43
ありがとうございました。
できませんでした
すいません
48デフォルトの名無しさん:2014/02/25(火) 00:23:20.83
>>46
違うよ。
始めたばかりだからそれを察して
懇切丁寧に教えろって自己中なんだよ。
根性が腐りきってるだけ。
49デフォルトの名無しさん:2014/02/25(火) 00:48:19.83
>>44
ええと、俺も初心者なのでわからないんですが、そのモジュールはどこにincludeする予定ですか?
50デフォルトの名無しさん:2014/02/25(火) 01:25:23.17
分からないのに答えようとするキチガイ
51デフォルトの名無しさん:2014/02/25(火) 01:50:14.21
>>44
モジュール内の関数?からのみ利用、って書いてあるけど、モジュールの特異メソッドから利用してるわけで。
52デフォルトの名無しさん:2014/02/25(火) 01:53:55.97
分からないのに答えようとするキチガイ
53デフォルトの名無しさん:2014/02/25(火) 02:01:32.53
分からない事に答えるのが基地外なら国会議員は全員基地外ですわ
54デフォルトの名無しさん:2014/02/25(火) 02:04:49.17
>>44
そういうすんなりできないことがでてくるのは大抵設計が腐っているせい。
def self.fuga
...
end
private_class_method :fuga
にすればモジュール特異関数でfuga()を呼び出せるし
Hoge.fugaも禁止できる。
55デフォルトの名無しさん:2014/02/25(火) 02:20:20.84
>>44
モジュール Hoge をインクルードすれば、
普通にインスタンスメソッドとして fuga を呼べるようになるよ

irb(main):001:0> module Hoge; def fuga; p 'FUGA!!'; end; def self.piyo; fuga; end; end
=> nil
irb(main):002:0> Hoge.piyo
NameError: undefined local variable or method `fuga' for Hoge:Module
from (irb):1:in `piyo'
from (irb):2
from /opt/local/bin/irb2.0:12:in `<main>'
irb(main):003:0> include Hoge
=> Object
irb(main):004:0> Hoge.piyo
"FUGA!!"
=> "FUGA!!"
irb(main):005:0>
56デフォルトの名無しさん:2014/02/25(火) 02:31:47.32
>>55 ← こんなゴミコード晒せるってある意味すごいな
57デフォルトの名無しさん:2014/02/25(火) 02:38:30.80
どうだ、すごいだろ。おまいもどんどんチンコさらけ出してくれ。
5855:2014/02/25(火) 02:44:32.20
>>44
モジュールの用途は2つある
・Mix-in の実現(クラス継承とは別の機能の共有、例としては Enumerable)
・名前空間の提供(大きなプログラムを小さな機能要素であるモジュールに分割)
>>55 で示したのは前者の Mix-in のほう

で、もしも>>44の「fuga を呼ぶ」という意図が後者の名前空間であるなら、
そのままでは呼べないから、fuga をクラス定義で包む必要がある
例を示す

module Factory # 工場
  class Fuga # 部品
    def fuga; .... ; end
  end

  def self.piyo # 部品 Fuga を製造する
    Fuga.new
  end
end

ここで、Fugaオブジェクトの生成は一般には Factory::Fuga.new と書くけど、
より簡潔に Factory.piyo でも生成できる
59デフォルトの名無しさん:2014/02/25(火) 03:03:55.31
>>58は荒らしだからスルーよろ
60デフォルトの名無しさん:2014/02/25(火) 03:13:14.01
>>58は真面目に回答してるつもりなんだろうな。
駄目な奴は何をやっても駄目だな。
61デフォルトの名無しさん:2014/02/25(火) 03:18:26.56
チンコとか臭そう
62デフォルトの名無しさん:2014/02/25(火) 08:19:59.97
捕鯨反対の人、昨日は何かあったのかな
63デフォルトの名無しさん:2014/02/25(火) 18:47:03.76
RSSを登録するアプリを作っているんですが
そのまま登録すると文字コードがUTF8ではないのでRailsで文字列連結のときにエラーが出てきます。

ここを参考にして実装してみたら・・・
http://route477.net/d/?date=20110119

rss = SimpleRSS.parse open(self.url)
self.site_name = rss.title.encode("utf-8", :invalid => :replace, :undef => :replace)


http://feed.nikkeibp.co.jp/rss/nikkeibp/business.rdf
ここの<title>nikkei BPnet 「企業・経営」最新記事一覧</title>が

nikkei BPnet ???????????????????????????????????????

とかに文字化けしてしまいました・・・


エンコードのことはよく知らないんですが、エンコーディング特有の文字があるとしても
ASCII-8BITからUTF-8に変換ってできないんですかね・・・
6463:2014/02/25(火) 18:51:21.71
rss = SimpleRSS.parse open(self.url)
self.site_name = rss.title.encode("utf-8", :invalid => :replace, :undef => :replace)


これを

rss = SimpleRSS.parse open(self.url)
self.site_name = rss.title.force_encoding("utf-8")


にしたら一応できましたが・・・
65デフォルトの名無しさん:2014/02/25(火) 19:02:10.96
>>63,64
何が問題で何をしたいのかがよく分からんよ
リンク先のRDFファイルの先頭行には
  <?xml version="1.0" encoding="utf-8"?>
と書かれているから、文字エンコーディングはUTF-8で決まりだし、
実際に保存したファイルを(UTF-8に対応した)普通のエディタで開けば、
文字化けすることなく表示される
66デフォルトの名無しさん:2014/02/25(火) 20:18:36.79
Win32APIのnewメソッドの第3引数で、指定できる型がポインタ(p)、long(n,l)、int(i)だけのようですが
double型やfloat型の引数がある関数を使いたい場合、どのように記述すればよいのでしょうか
もし解説されているHPとかあったら教えてください…
67デフォルトの名無しさん:2014/02/25(火) 21:05:01.21
>>42 >>47
その問いに答えられないけど
したいことがワシのやりたい事と似てるような気がする
同じ初心者同士で解決してみないか?
よかったら↓に来てくれ
kohada.open2ch.net/test/read.cgi/php/1393329234/
68デフォルトの名無しさん:2014/02/25(火) 21:51:34.68
>>66
dl を使えということかもしれない
6966:2014/02/25(火) 22:25:17.03
じ、自己解決しました(震え声)
質問した途端にこれだよ スレ汚しすみませんでした
70デフォルトの名無しさん:2014/02/26(水) 01:11:30.15
気にすんな
71デフォルトの名無しさん:2014/02/26(水) 07:14:43.45
質問しようと説明してまとめた直後にわかるパターンと
質問して投稿して記事になったのを客観的に眺めた瞬間わかるパターンとあるな
72デフォルトの名無しさん:2014/02/26(水) 09:56:52.87
レスをもらって
一行目読んでる途中で判る場合と
三行目まで読んでもさっぱり判らない場合があるね
7337:2014/02/26(水) 18:55:21.32
>>37です。ちょっと都合で書き込めなかった。
RoRのやつ教えてくれた人達thx
74デフォルトの名無しさん:2014/02/28(金) 01:23:07.40
ruby/tkって1.9.3ではどこに入ってるの?
75デフォルトの名無しさん:2014/02/28(金) 08:23:43.92
GCについて質問です

複数のブログのテキストと画像(1記事辺り30枚程度)をマルチスレッドでスクレイピングしているのですが、
どこかでGCが詰まってるのかメモリを開放してくれず一定のところでスワップが発生してしまいます

・rails経由でrunnerコマンドを用いて上記スクリプトを走らせている
・DBへの保存はActiveRecordを使用
・画像の保存、DBへの保存にActiveRecordのトランザクションを使用
・画像のリサイズにRMmagickを使用
・マルチスレッドにParallelを使用

考えられる原因がどの辺にありそうか思い当たるところがあればご意見を聞かせていただけないでしょうか?
またこういうGC周りに原因がありそうなケースでのデバッグのやり方を教えていただきたいです
76デフォルトの名無しさん:2014/02/28(金) 08:27:36.61
甘えすぎ
本当に知りたいならもっとよく調べてからにしろ
77デフォルトの名無しさん:2014/02/28(金) 08:34:29.53
hoge〜
78デフォルトの名無しさん:2014/02/28(金) 08:44:28.69
>>74
解決した
program filesの下にあった
パス通さないと無理っぽい
79デフォルトの名無しさん:2014/02/28(金) 08:48:48.51
馬鹿には無理
80デフォルトの名無しさん:2014/02/28(金) 08:57:49.90
>>75
RMagick と GC って有名だったような。検索するといろいろでてくる
81デフォルトの名無しさん:2014/02/28(金) 14:26:20.53
>>76
10かい hello world と ひょうじ したいです。 どうしたら いいですか?
82デフォルトの名無しさん:2014/02/28(金) 15:54:54.77
このスレはシーシェパードに監視されています
83デフォルトの名無しさん:2014/02/28(金) 15:56:19.29
10.times{ puts 'Hogei' }
84デフォルトの名無しさん:2014/02/28(金) 17:02:29.68
>>81
池沼ぶるのは構わんがあんまりやり過ぎると誰も相手しなくなるぞ
85デフォルトの名無しさん:2014/02/28(金) 19:51:36.44
Rubyで実装するシーシェパード入門
86デフォルトの名無しさん:2014/02/28(金) 20:05:51.32
# coding: utf-8
TEN = 10
TEN.times do
    puts "Hello, world!"
end
87デフォルトの名無しさん:2014/03/01(土) 02:45:26.17
$><<"hello world\n"*10
88デフォルトの名無しさん:2014/03/01(土) 02:57:07.33
十回表示は\rだな
89デフォルトの名無しさん:2014/03/01(土) 21:42:02.11
これからはじめようとおもってんですけど。。。。
やっぱり開発環境はlinuxとかがお勧めですか?
90デフォルトの名無しさん:2014/03/01(土) 22:35:47.50
>>89
もしあなたがRubyを勉強しようと思っているのなら、RubyではなくC#にするといい
C#ならあなたがやりたいと思っていることをすべてやることができる

もしあなたがC#を学んでなおRubyを勉強したいと思ったのなら、おそらくこのスレに聞きに来ることはないだろう
91デフォルトの名無しさん:2014/03/01(土) 22:42:31.61
プログラムに本当に必要なのは開発環境なんかじゃなく実行環境だからなあ
普段Windowsだけ使ってるのならWindows上でよく動くプログラム(を楽に作れ/学べる)言語が無難
それは少なくともRubyではないはず
92デフォルトの名無しさん:2014/03/01(土) 23:04:32.18
>>89
マックでもわりと便利につかえるよ
93デフォルトの名無しさん:2014/03/01(土) 23:06:16.53
せっかく勉強したとしても、
わざわざ立ち上げるバーチャルマシンの痒いとこに手が届かないファイルシステムの中だとか
どこか遠くの激遅の小煩いレンタルサーバのコンソールの中だとか
そんなとこでしか動かせないんじゃどうにもならないよね
自分が使ってるマシンでぐりぐり動いてなんぼ
94デフォルトの名無しさん:2014/03/01(土) 23:06:32.26
>>91
俺はVisualBasicからプログラミングはじめたクチだけど、
結局GUIプログラムは面倒だから続かないね。
Rubyでも同じことだけど、CUIのプログラムを作るならrubyがずっと楽。
95デフォルトの名無しさん:2014/03/01(土) 23:07:06.22
>>93
つまりLinuxをインストールしろということか。正解だな
96デフォルトの名無しさん:2014/03/01(土) 23:10:23.85
WINDOWSでプログラミングしてて許されるのは中学生まででしょ
97デフォルトの名無しさん:2014/03/01(土) 23:16:03.54
ルビーのインストーラーのウインドーズのサポートは最近適当になってきたの?
98デフォルトの名無しさん:2014/03/01(土) 23:16:58.66
>>95
普段からLinuxを使っているならRubyはあり
Rubyを学ぶためにLinuxインストールするとか愚の骨頂
Rubyを使うためにLinuxインストールするのは馬鹿

馬鹿と愚の骨頂ってどっちがどうなんだとか考えると眠たくなるが

Linuxの別途インストールが唯一妥当なのは
「レンタルサーバ等で動かすことが既に決定しており、その環境とほぼ同じものをローカルにも作りたいと思った」
ときのみ
99デフォルトの名無しさん:2014/03/01(土) 23:17:54.98
89です
100デフォルトの名無しさん:2014/03/01(土) 23:24:05.74
89です 色々とアドバイスありがとうございました
今まではExcel Accessなどをvbaでいろいろいぢって仕事で使うような在庫管理やら何やらをやってましたがWebでも同じようなことがしたいなー どうせやるなら新しいことやりたいなーとおもっていろいろと探しているうちにこのスレにたどりついたというわけでして。。。。
101デフォルトの名無しさん:2014/03/02(日) 03:10:02.83
このメソッドになんか気のきいた名前を付けてくれ(´・ω・`)
class Hash
 def hoge!(key, other_keys=[])
  value = self.delete(key)
  other_keys.each{ |other_key|
   self[other_key] = value
  }
 end
end
102デフォルトの名無しさん:2014/03/02(日) 03:14:45.56
mvでええやん
103デフォルトの名無しさん:2014/03/02(日) 03:36:00.95
えやな
104デフォルトの名無しさん:2014/03/02(日) 10:38:47.95
>>101
rekey
105デフォルトの名無しさん:2014/03/02(日) 13:47:14.30
print.classって書いたらNilClassが返ってくる
普通のメソッドはオブジェクトじゃないってこと?
.classはObjectクラスのインスタンスかどうかを調べてるの?
106デフォルトの名無しさん:2014/03/02(日) 14:05:31.35
>>105

printの 返す値 がnil
107デフォルトの名無しさん:2014/03/02(日) 15:38:40.51
>>105
クラスやインスタンスとか難しい事を考える以前に、
メソッドチェーンの基本が理解できていないな

irb(main):001:0> print
=> nil
irb(main):002:0> print.class
=> NilClass
irb(main):003:0> print.class.class
=> Class
108デフォルトの名無しさん:2014/03/02(日) 16:15:15.25
>>106
>>107
なるほど
printの戻り値がnilなのか
それにしてもArray=>Arrayになるのは
クラスの戻り値がクラスってことなのか
ややこしいなあ
109デフォルトの名無しさん:2014/03/02(日) 17:34:21.93
>>100
誰かと一緒に開発をするのか、プログラマとして他人に雇用される必要があるのか

に対する答えがNOなら、
自分の好きなようにやればいいと思う

アドバイスなんて参考にならん
110デフォルトの名無しさん:2014/03/02(日) 17:45:53.93
まだ分かっていないようだねw
irb という対話環境は、以下のように振る舞う
 (1) テキストを入力(read)し、
 (2) それを式として評価(evaluate)して、
 (3) その結果を印刷(print)する
 (4) この手順を繰り返す(loop)
だから、read/evaluate/print/loopの頭文字(かしらもじ)をとって REPL とも呼ばれる

ここで、評価とは一般的に言うところの計算だと考えていい
たとえば 1 + 2 という入力を評価(=計算)すると 3 という結果を印刷するし、
1 だけを入力すると 1 という値を印刷する
同様に Array と入力すれば、その評価結果である Array を印刷するし、
Array.new と入力すれば、評価によって Arrayクラスのインスタンスを生成してそれを印刷する
111デフォルトの名無しさん:2014/03/02(日) 17:57:37.95
>>109
恐らく自分のやりたいようにやっていいと思います。
但し結果さえでればというかんじです。
まずは自分のpcの仮想環境でトライしてみて将来的にはクラウドとか社内にインフラを持たなくても良いようにしたいなーとかおもってます。
112デフォルトの名無しさん:2014/03/02(日) 18:05:26.53
>>108
Array は単なる定数(再代入すると怒られる変数)
Array って変数の中にクラスが入ってる
113デフォルトの名無しさん:2014/03/02(日) 19:14:44.66
>>108
それはArray==Arrayってことでは。
114デフォルトの名無しさん:2014/03/02(日) 19:29:53.55
>>108
> クラスの戻り値
これからして何も理解してないからな。
「Rubyには関数がない、全てメソッドだ」
というのをどっかで聞いた上に誤解して、
変数も定数も全てメソッドだと思い込んだのかな
115デフォルトの名無しさん:2014/03/02(日) 19:42:38.86
入門書レベルだとそこらへんは書いてないかも
初心者スレだし知らなかったり察しがつかなくても仕方ないのでは
116108じゃないけど:2014/03/02(日) 20:04:02.63
>>112
そうなんですか

irb(main):001:0> FOO = Array
=> Array
irb(main):002:0> FOO.new(3){1}
=> [1,1,1]

なるほど、勉強になります。
117デフォルトの名無しさん:2014/03/02(日) 20:08:28.72
かわいいJKとペアプロしたいんですがrubyを使えばできるんですか!?
118デフォルトの名無しさん:2014/03/02(日) 21:14:58.52
配列のn番目の要素からeachしたい場合ってなんか良い書き方ありますかね
119デフォルトの名無しさん:2014/03/02(日) 21:16:46.55
array.drop(n).each
120デフォルトの名無しさん:2014/03/02(日) 21:22:21.09
>>119
  ,.-、
っ(,,■) d
121デフォルトの名無しさん:2014/03/02(日) 21:30:35.32
>>117
あなたがイケメンでかつMacbookAirを使いこなしていればできます。
122デフォルトの名無しさん:2014/03/02(日) 23:01:41.49
>>110
なるほどわかりやすい

irbでprintが評価されたらnilになるのが不思議なんだよなあ


>>113 再代入か、ありがとうググってみる

ruby歴4日なもんでググり方すらわからなかったんだ
英語のページの方が充実してるのが何だかなあ
123デフォルトの名無しさん:2014/03/02(日) 23:07:52.45
>>122
Array == Arrayのことを再代入って言ってるの?
== は比較演算子だよ。
124デフォルトの名無しさん:2014/03/02(日) 23:10:45.89
>>122
>irbでprintが評価されたらnilになるのが不思議なんだよなあ

irb に限らず、「Rubyではあらゆるすべてが式」になる
式だから、irb が評価することで必ず何らかの値が返ってくる
そして、あるメソッドが何も返すべき値が無い場合には、
慣例で nil という値を返すことが多く、print もこれに該当する
(C や Java を知っていれば、void型に相当するのが Ruby の nil になる)
125デフォルトの名無しさん:2014/03/02(日) 23:13:22.95
> irbでprintが評価されたらnilになるのが不思議なんだよなあ
print を評価するというのは、print というメソッドを呼ぶということ
print メソッドの返り値は常に nil なので nil が出力されているというだけ

print というメソッドオブジェクトが出力するわけではない
126デフォルトの名無しさん:2014/03/02(日) 23:15:38.52
irb(main):014:0> method(:print)
=> #<Method: Object(Kernel)#print>

こういうのと混同してんじゃないの
127デフォルトの名無しさん:2014/03/02(日) 23:16:55.24
>>126
ruby歴4日(>>122)で、さすがにそれはないかと....
128デフォルトの名無しさん:2014/03/02(日) 23:42:24.43
printのクラスはMethodだけどprintの戻り値はnilつーことやな。
129デフォルトの名無しさん:2014/03/02(日) 23:47:11.68
Rubyはカッコなしでメソッドを呼べるので、名前だけ書いたときにメソッドオブジェクトを指すようにはできないからね
JavaScriptとかから入ると混同してしまうかも

逆にJavaScriptを使うときにカッコなしで書いてしまって変なオブジェクトが代入されてる〜と悩むこともたまにあるけど
130デフォルトの名無しさん:2014/03/02(日) 23:50:57.26
>>123
ごめん安価間違えた >>112に対して言いたかった

>>124
>そして、あるメソッドが何も返すべき値が無い場合には、
>慣例で nil という値を返すことが多く、print もこれに該当する
なるほど。よくわかった
すごく的外れかもしれないけどこれって
printが何に対する参照も持ってないって見かたでok?
131デフォルトの名無しさん:2014/03/02(日) 23:52:52.57
>>130
print と書いただけだとそれはメソッド呼び出しであり、その結果は print の返り値である
print メソッドというオブジェクトが結果として返るわけではない
132デフォルトの名無しさん:2014/03/02(日) 23:55:07.54
>>130
> printが何に対する参照も持ってない
どういう意味だ?
133デフォルトの名無しさん:2014/03/03(月) 00:00:08.06
>>132
Arrayという変数名がArrayクラスの実態への参照を持ってて
printという変数名は何も持ってないのかと思ったんだ
134124:2014/03/03(月) 00:02:36.22
>>130
>printが何に対する参照も持ってないって見かたでok?

たぶん勘違いしてると思う
>>125,131の解説を読もう!!
135デフォルトの名無しさん:2014/03/03(月) 00:02:45.30
>>133
printは変数名じゃない。メソッド。
変数とメソッドの違いについて勉強するといいよ
136デフォルトの名無しさん:2014/03/03(月) 00:07:05.67
>>134
>>135
ありがとう
後から間違いに気づいたよ
137デフォルトの名無しさん:2014/03/03(月) 00:13:45.84
あ、わかったわ、全部式なのか
クラスは自分は自分だって言ってるだけか
やっと理解した

バカに付き合ってくれてありがとう
138124:2014/03/03(月) 00:21:27.58
もうRubyに慣れてしまったから意識することは無いけど、
たしかに英小文字で始まる名前が、一見しただけでは
ローカル変数なのかメソッドなのか区別がつかないってのは、
誰でも最初はとまどうのだろうなぁ....と思う
139デフォルトの名無しさん:2014/03/03(月) 00:26:53.72
ifやcaseも式(実際に処理されたブロックの最後の式の結果を返す)だしなあ
Rubyってだいたい式だよね、意外なくらい
140デフォルトの名無しさん:2014/03/03(月) 00:34:17.74
>>139
だいたいっていうか全部では?例外ある?
141デフォルトの名無しさん:2014/03/03(月) 00:34:53.47
物凄くマジレスすると、メソッドを作ったことがないからそんな変なことを言う

def aaa
32
end

aaaメソッドの返値は32

def aaa
nil
end

aaaメソッドの返値はnil

これだけの理屈でしかない
メソッドを作った人が最後の評価値としてnil(に常になるもの)を指定したからメソッドの返値がnilになる
142デフォルトの名無しさん:2014/03/03(月) 00:35:29.97
あ、throwとraiseは返り値ないっけ?
143デフォルトの名無しさん:2014/03/03(月) 00:39:07.69
>>138
Perl は変数に $ をつけるし、Python は self. 必須だし、JavaScript はカッコがいるし、
区別が付かないのは Scala と C# のプロパティぐらいかな…?
144デフォルトの名無しさん:2014/03/03(月) 00:40:21.83
>>142
流れそのものを変える文は、値を返せないもんねえ
その親ブロックが返す値を変えるものならあるが
145デフォルトの名無しさん:2014/03/03(月) 00:40:48.61
>>143
つ C
146デフォルトの名無しさん:2014/03/03(月) 00:41:25.63
>>144
そういえばbreakとかもbreak自体の返り値はないのか。
147デフォルトの名無しさん:2014/03/03(月) 00:41:46.45
>>145
Cはカッコ必須でしょ
148デフォルトの名無しさん:2014/03/03(月) 08:39:48.46
printf("%p\n", printf) みたいなことができるから必須ってわけでもない
149デフォルトの名無しさん:2014/03/03(月) 10:12:17.89
それは関数ポインタでは変な理由で & が省略できるから
150デフォルトの名無しさん:2014/03/05(水) 10:46:24.09
def isdigit(c)
if c =~ /^[0-9]$/
return true
end
return false
end

exp = '1+2-3*4/5'

exp.each do |e|
if isdigit(e)
print e
end
end

このプログラムが意図したとおり(12345)に動かないのはなぜでしょうか
151デフォルトの名無しさん:2014/03/05(水) 11:17:55.03
その1
Rubyでは「最後のreturn」はあんまり書かない
メソッド処理途中で脱出するときだけ書く
というか、returnがあったらその用途だとみんな思い込んでるので、そうじゃないとちょっとアレ

その2
正規表現の^は改行がある文章の文頭を、$は改行のある文章の末尾を表す(大雑把)
改行が含まれていない文字列ではうまくマッチしないので、改行区切りが重要でないのなら絶対に使ってはいけない

その3
文字列のeachはRuby1.9で廃止された。一文字ずつ取り出すにはeach_charを使う

その4
Regexp#=~ はマッチしないときnilを返すので、ifの条件にするならそのまま使える


def digit?(s)
/\d/ =~ s
end

exp = '1+2-3*4/5'

exp.each_char do |chr|
print chr if digit?(chr)
end
152デフォルトの名無しさん:2014/03/05(水) 11:59:32.03
>>151
ありがとうございます
おかげさまで中置記法を逆ポーランド記法に変換するプログラムが書けました
https://ideone.com/xovDW1
あとで指摘していただいた箇所を直す予定です
153デフォルトの名無しさん:2014/03/06(木) 09:40:35.33
nextは、構造化プログラミングに反しますか?
154デフォルトの名無しさん:2014/03/06(木) 18:01:14.62
https://ideone.com/Aiuffw
next使わずに書けました
今闘病中ですが、プログラミングがすごく楽しく感じます
皆様ありがとうございました
155デフォルトの名無しさん:2014/03/06(木) 19:42:49.97
ruby2.0以降爆速になってpythonより速くなったというような比較を見かけるのですが、フレームワークも速くなったのでしょうか?
156デフォルトの名無しさん:2014/03/06(木) 19:52:43.77
速くなったね
157デフォルトの名無しさん:2014/03/06(木) 20:32:53.14
演算子||と&&について質問です。
rubyでは優先順位が&& > ||となっていますが、

a = "abcd"
true || a.reverse! && nil
a #=> "abcd" (予想ではa.reverse!が効いて"dcba"となるはずだった。)

となって、||の右辺が評価されていないように思います。
基本的なことかもしれませんが、何故なのでしょうか?
(1.9.3p545/centos)
158デフォルトの名無しさん:2014/03/06(木) 20:50:20.47
>>157
trueってわかってんだから評価する必要ないだろ。
159デフォルトの名無しさん:2014/03/06(木) 21:06:07.55
>>157
irb> (p 1) || (p 2)
1

説明おわり
160デフォルトの名無しさん:2014/03/06(木) 21:15:14.17
>>159
わかりにくいわ

Ruby は (A or B) という式を見たとき、とりあえず A を先に評価し、A が真だった場合 B の評価を行わない
A と B の両方をとにかく1行で評価して欲しい場合は、…まあ、any? とか使うしかないのかね

a = "abcd"
[true, [a.reverse!, nil].all? ].any?
p a
#=> "dcba"
161デフォルトの名無しさん:2014/03/06(木) 21:19:04.10
>>157
&& と || は演算子として分類されているけど、厳密には他の演算子とは意味が異なり、
(制御構造としての)条件分岐式の短縮構文、いわゆる構文糖(syntactic sugar)になっている
具体的には:
・式 X && Y は if X then Y else false end と同じ意味
・式 X || Y は if X then true else Y end と同じ意味
だから || の左辺 X が真であれば、右辺 Y は評価されない

なお論理学や形式的意味論の世界だと、
&& は cand (conditional and)と呼ばれ、|| は cor と呼ばれることがある
162デフォルトの名無しさん:2014/03/06(木) 22:43:21.71
>>157
真理値が確定した段階で計算が打ち切られる。
覚え方: C言語と同じ
163デフォルトの名無しさん:2014/03/06(木) 23:52:08.28
>>156

ありがとうございます。
だとするとこのベンチマークは2.0より前のバージョンを使っているのでしのうか?

http://www.techempower.com/benchmarks/#section=data-r8&hw=i7&test=query
164157:2014/03/07(金) 00:17:02.46
>>158-162
ありがとうございます。
考え方が根本的に間違ってた気がします。
例えば、
3 + 4 * 5 → 3 + 20 → 23
と、まず初めに、+より優先順位の高い演算子*が先に評価されて計算が行われると思っていたので、
true || a.reverse! && nilの場合、(a.reverse! && nil)が先に演算されるのではないか?と考えていました。

>>161さんの言う通り、if-thenと同じだと考えると納得出来ました。
165デフォルトの名無しさん:2014/03/07(金) 03:16:37.32
ん?
いやいやいやいや
166デフォルトの名無しさん:2014/03/07(金) 07:22:54.73
>>163
そのページの作成者に聞けよ
167デフォルトの名無しさん:2014/03/07(金) 12:19:43.56
>>164
評価順序と、論理演算の優先順位は別の話ということだな。
当たり前のように使っていたが、言われてみれば、そういう考え方も有るか。実装的には、その考え方だと余計にコストかかるけど。
168デフォルトの名無しさん:2014/03/07(金) 12:31:55.74
アホが増えたぞ
169デフォルトの名無しさん:2014/03/07(金) 13:00:51.07
評価順と優先順位の関係は直感を裏切ることもある、というのは
プログラミング言語一般の基本だが?
170デフォルトの名無しさん:2014/03/07(金) 13:25:50.31
その通りだ!
プログラミングの常識がないプログラミング初心者なんておかしい!
171157:2014/03/07(金) 17:52:00.94
バカですみません…。
=演算子でしたら右結合なので、a=b=c=0の場合、
a=(b=(c=0))と同等になり、c=0から演算されます。
それと同様に、優先順位により
true || (a.reverse! && nil)となり、||右辺から実行されるのでは?と思ったのです。(もちろん、true || aにおいてaが評価されないことは理解しています。)
172デフォルトの名無しさん:2014/03/07(金) 18:02:57.31
右結合じゃなくて左結合だから

・優先順位
・結合性
・評価順

を、なんとなくぼんやりと混同してるんだと思うんだけど
173157:2014/03/07(金) 18:21:10.70
>>172
「プログラミング言語Ruby(p105)」には、
優先順位…式がどのような順序で評価するかに影響を与える
結合性…同じ(優先順位の)結合子が1つの式の中に並んでいる時に、どのような順序で評価をするか
と定義されていました。

true || (a.reverse! && nil)では、||と&&は優先順位が異なるため結合性は無視できます。
優先順位は定義より式の評価の順序に影響を与える、とあったので評価順を左右するものであると考えたのですが、この認識が間違っているのでしょうか?
174デフォルトの名無しさん:2014/03/07(金) 18:22:59.22
優先順位は皆、一々覚えていないから、()で囲むべし

それに短絡(ショート)は、最初の式の真偽値によって、
右の式が実行されるかされないか、が決まるため、
わかりにくいし、勘違いしやすい

Cでも一般的に、使わない方がよいとされている
175デフォルトの名無しさん:2014/03/07(金) 18:38:30.50
>>172
代入演算子が左結合なら a = b = 1 したら b が未定義でエラーになるのでは
176デフォルトの名無しさん:2014/03/07(金) 18:51:15.83
> Cでも一般的に、使わない方がよいとされている

んなこたねーよ。
ていうかCではともかく、Rubyでは多用するし。
177デフォルトの名無しさん:2014/03/07(金) 22:48:42.44
=だと左辺値右辺値の話が入ってくるからまたややこしくなる。
irb> (raise 'lhs').a = b = (raise 'rhs')
RuntimeError: lhs
となるのを見たらわかるように、右結合だからといって右から評価されるわけではないよ。
178デフォルトの名無しさん:2014/03/07(金) 23:03:19.93
構文木考えてみなよ
即値以外は計算上の優先順位のとおり評価しようとしたらプログラム動かんでしょ
179デフォルトの名無しさん:2014/03/07(金) 23:08:19.19
低レベルの話はちょっとおいとこうか。
180デフォルトの名無しさん:2014/03/07(金) 23:40:01.48
>>177
評価順序の問題と結合度の問題がごっちゃになってないか
評価順は左から右、= の結合度(多重代入が典型例)は右結合
181デフォルトの名無しさん:2014/03/07(金) 23:52:08.78
def a; false end
if (!b = a()); p b end

こういうのも優先順位に反して!より=が先に評価される
182デフォルトの名無しさん:2014/03/08(土) 00:12:18.97
なるほど、ええと

% irb
irb(main):001:0> !a = false
(irb):1: warning: found = in conditional, should be ==
=> true

どういうことだってばよ
183デフォルトの名無しさん:2014/03/08(土) 01:11:33.64
>>182
!a=false

!(a=false)
と同様に評価される。
ただし、!のオペランドは条件式だから、
=じゃなくて==じゃねえのか?って言われてる。
184デフォルトの名無しさん:2014/03/08(土) 02:17:30.98
>>173
>優先順位…式がどのような順序で評価するかに影響を与える
>結合性…同じ(優先順位の)結合子が1つの式の中に並んでいる時に、
どのような順序で評価をするか

結局、上記は間違い?

a = b = 1
これは、左から評価される? どうなるの?
185デフォルトの名無しさん:2014/03/08(土) 02:18:35.44
>>184
おまえ左から評価されるとしたらどういう動作になるのか言ってみろ。右に決まってるだろ。
186デフォルトの名無しさん:2014/03/08(土) 02:43:41.71
評価するという専門用語に対する認識が違うと推測
187デフォルトの名無しさん:2014/03/08(土) 07:45:27.96
…まあ、Rubyだけやってちゃわからん概念ではある
188デフォルトの名無しさん:2014/03/08(土) 10:18:31.59
>>187
Pythonやってみたら理解出来るようになる?
189デフォルトの名無しさん:2014/03/08(土) 10:24:41.31
>>188
lispやると勉強になる。
190デフォルトの名無しさん:2014/03/08(土) 14:24:22.18
構文解析と評価のタイミングの違いなんだけどね
演算子の優先順位は構文解析時に効く
191デフォルトの名無しさん:2014/03/08(土) 15:06:18.19
将棋盤のような格子状の画像のマスごとの全ピクセル色情報を取得しようとすると、
ループで回して取得する以外に方法は無いのでしょうか?
左上座標:右下座標を指定すると取れるとかないですか?

マスごとなので座標が飛び飛びになる。
192デフォルトの名無しさん:2014/03/08(土) 16:05:02.42
ピクセルの色情報を取得って、どことなくBASICな懐かしい香りがする
193デフォルトの名無しさん:2014/03/08(土) 16:34:08.36
どなたかウィンドウズのサブシェルでUTF-8のコマンドを実行する方法をご存知ありませんでしょうか?
例えばですが、`type "优华.txt"`ですとかIO.popen('notepad "优华.txt"', 'r') {}
のようなコマンドね
コマンドライン上ではコピーアンドペーストで(文字の化けありますが)実行できます
上記の場合は、CP932の変換された化けの物渡されるために、ENOENTなるようです
このままではエロ動画整理されないが?
194デフォルトの名無しさん:2014/03/08(土) 17:03:52.72
こんなに国籍を明確に主張するレスもすごいな
195デフォルトの名無しさん:2014/03/08(土) 17:14:27.27
彼にとって、右翼団体に所属していることがアイデンティなんだろう
196デフォルトの名無しさん:2014/03/08(土) 17:58:33.75
俺も知りたいわ
出来たと思ったらフォントが固定ピッチにならなかったり部分的に文字化けしたりであきらめた
197デフォルトの名無しさん:2014/03/08(土) 18:16:58.99
198デフォルトの名無しさん:2014/03/08(土) 19:34:27.76
>>188
計算機科学の初級をぺらりと舐めるだけで全然違う

ただし、計算機科学の初級を理解できるかどうかは保証はしない
199デフォルトの名無しさん:2014/03/08(土) 21:22:12.08
おまえらバカすぎて、どうにもならないからcかschemeから始めろ
200デフォルトの名無しさん:2014/03/09(日) 01:19:42.49
UbuntuならRuby2.1をパッケージからインストール出来ますか?
201デフォルトの名無しさん:2014/03/09(日) 03:05:13.95
現在プログラム板のID制導入の投票を実施中です
よろしくお願いします

プログラム板 強制ID制導入に関する投票スレ
http://kohada.2ch.net/test/read.cgi/vote/1394290844/
202デフォルトの名無しさん:2014/03/09(日) 09:30:21.52
Windows、 RubyInstaller 2.0、 Redmine 2.5
RubyをインストールしたときにRails4.0とかいろいろgemをインストールしたので
Redmine専用にgemを用意したいので
bundle install path=vendor/mygem --local
ってコマンドを打ってredmineのディレクトリの中にgemをインストールしました
そのあとに
rake generate_secret_token
ってやったんですが
Could not find gem 'rails (= 3.2.17) x86-mingw32' in the gems available on this
machine.
Run `bundle install` to install missing gems.
って出てしまい失敗します。bundlerでたしかにredmineの下にrails3.2.17は入っています。
どうやってredmineの下のgemを使えるようにできるのでしょうか?
203デフォルトの名無しさん:2014/03/09(日) 12:31:49.28
bundle exec rake だとどう?
204デフォルトの名無しさん:2014/03/09(日) 16:20:25.60
Rubyの高速化。
初歩的なことから小難しい事まで説明してる日本語のHPってないですか?


高速化した中学生が忙しいって話しか出てこない・・・。
205デフォルトの名無しさん:2014/03/09(日) 17:20:59.94
bundle exec rakeってやっても
Could not find gem 'rails (= 3.2.17) x86-mingw32' in the gems available on this
machine.
Run `bundle install` to install missing gems.
って出ます。
206デフォルトの名無しさん:2014/03/09(日) 17:22:23.94
正規表現をメソッドで使用するとき、ローカル変数で正規表現を宣言すると、メソッドが呼ばれる度に
ローカル変数の正規表現のインスタンス化と代入が行われて無駄だと思うんですけど、これのベストプラクティスを教えて下さい。
定数として正規表現は宣言できないし、クラス変数として宣言するのは本来の目的と違うと思うんですが

具体的には以下のように複数のポストに含まれるURLをチェックして何かしたいという状況です。

posts.each{
checklink(post)
}

def checklink
url_regexp=/http:.*?\.com/
post=~url_regexp
#なんかの処理
end
207デフォルトの名無しさん:2014/03/09(日) 17:29:34.54
>>206
> 定数として正規表現は宣言できないし
え?普通にできるよ
208206:2014/03/09(日) 17:33:57.62
>>207
マジで!?
とんでもない勘違いしてました…
209デフォルトの名無しさん:2014/03/09(日) 20:50:25.14
>>206
$ ruby -e "10.times{ e= /re*?/; p e.object_id }"
-597111458
-597111458
-597111458
-597111458
-597111458
-597111458
-597111458
-597111458
-597111458
-597111458

ということで変数埋め込みのない「固定の」正規表現リテラルはRubyが特別扱いして固定のオブジェクトになっている
複雑なオブジェクトの生成が無駄だとか余計なこと考えずに安心して使え
極めて稀に同一オブジェクトであることが問題になることがあるが、そのときはRegexp.new(/re*?/)とでもしろ
210206:2014/03/10(月) 04:44:52.51
>>209
ローカル変数として宣言しても定数と変わらんということか。
すばらしい
211デフォルトの名無しさん:2014/03/10(月) 04:58:58.58
定数 と リテラル を混同している人がいるような気がした。
212デフォルトの名無しさん:2014/03/10(月) 05:48:24.18
cond -> R = true ; R = false
って書くのなんかダサいから
hoge_call(cond, R)
みたいな述語はないの?
213デフォルトの名無しさん:2014/03/10(月) 08:26:12.55
Prologスレの誤爆?
214デフォルトの名無しさん:2014/03/10(月) 10:51:06.62
rubyにwin32oleを実装した人のwebページがあったと思ったけど
ruby win32oleとかで検索してもゴミばかりで見つかりません

urlまたは開発者の名前を教えてちょ
215デフォルトの名無しさん:2014/03/10(月) 11:10:16.70
>>214
ruby win32 ole で検索すると真っ先に見つかるのが
以下の「るびま」連載記事なわけだけど、

・Win32OLE 活用法 【第 1 回】 Win32OLE ことはじめ
 http://magazine.rubyist.net/?0003-Win32OLE

これで何が足りないのか、>>214はどんな情報が欲しいのか、
そして何を実現したいのか、具体的に質問したほうがいいと思われ
216デフォルトの名無しさん:2014/03/10(月) 12:33:40.33
sequelでsqlite3をコピペで操作してますが
.select(:n___an, :i, Sequel.as(sum((Sequel.case([[{k: 's'}, :c], [{k: 'u'}, Sequel.expr(0) - :c]], 0 ))), :tc))
これがsum未定義になって
.select(:n___an, :i, Sequel.as(Sequel.function(:sum, (Sequel.case([[{k: 's'}, :c], [{k: 'u'}, Sequel.expr(0) - :c]], 0 ))), :tc))
これが通るのは何故でしょうか?

色々検索してみたんですがよくわかりません。両方とも同じ意味だと思ったのですが。
217デフォルトの名無しさん:2014/03/10(月) 12:52:33.53
>>213
スマソw
218デフォルトの名無しさん:2014/03/10(月) 16:37:20.29
>>215
> (アドバイザー:arton、助田 雅紀)
欲しかった情報はこれだけ

「助田」が判明してやっと
http://homepage1.nifty.com/markey/ruby/win32ole/index.html
に辿り着けた。

こういう重要な情報がうんこ見たいなページに埋もれるの何とかしてくれ
219デフォルトの名無しさん:2014/03/10(月) 16:45:05.07
そういうのも仕事のうち
220デフォルトの名無しさん:2014/03/10(月) 18:03:25.78
自分で探すこともできない情弱が作れるのもうんこだからどうでもいい
221デフォルトの名無しさん:2014/03/10(月) 19:18:16.22
2chのレスのアンカーの相互関係をオブジェクトで表すには、クラスを定義してtree構造にすればいいのだとおもいました。
しかし、一つのレスに対して複数のリプライが付く場合がありますが、Rubyのオブジェクトは可変長の要素を収納できるのでしょうか。
できない場合、インスタンス1つあたり、余裕を持って(例えば20reply分)あらかじめ余計にメモリを確保するしか方法はないのでしょうか
222デフォルトの名無しさん:2014/03/10(月) 19:57:35.86
配列は可変長
223デフォルトの名無しさん:2014/03/10(月) 20:06:34.83
>>200
パッケージからはできない。たぶん普通に入れると1.9じゃないかな。
ruby2.0-devってのがあるから2.0はいけるかもだけど。
でも「rbenv」と「ruby-build」を入れれば簡単に2.1を入れられる。
224デフォルトの名無しさん:2014/03/10(月) 20:16:44.55
>>222
ありがとうございます
225デフォルトの名無しさん:2014/03/10(月) 21:29:24.74
>>221
>2chのレスのアンカーの相互関係をオブジェクトで表すには、
>クラスを定義してtree構造にすればいいのだとおもいました。

データ構造としては、「一つのレスに対して複数のリプライが付く」のだから
ツリーではなくてグラフになると思う
更に、未来へのアンカーを除外すれば、言い換えると、すべてのアンカーが過去のレスを
指しているのであれば、「閉路の無い有向グラフ(directed acycled graph, DAG)」と
呼ばれるデータ構造になる
グラフはノード(node, 接点)の集合とエッジ(edge, 辺)の集合で表現され、
今回のケースでは。レスが節を表し辺がアンカーを表す
グラフやDAGは良く知られたデータ構造だから、Wikipedia等で調べれば詳しい解説が見つかる
またDAGの各ノードを方向が揃うように列挙するアルゴリズムは「トポロジカルソート」と呼ばれるので、
これも検索する際のキーワードになると思う

>Rubyのオブジェクトは可変長の要素を収納できるのでしょうか。

複数の要素を表す(数学上の)集合はプログラミングの用語だとコレクションと呼ばれ、
Rubyでは組込みライブラリの配列(Arrayクラス)やハッシュ(Hashクラス)がコレクションの一種になる
また、Rubyは(C言語等とは違って)メモリを動的に管理するから、
基本的にどのコレクションも可変個要素(=インスタンス)を収納できる
226デフォルトの名無しさん:2014/03/10(月) 21:31:39.48
>>225を訂正
X: 今回のケースでは。レスが節を表し辺がアンカーを表す
O: 今回のケースでは、レスがノードを表しエッジがアンカーを表す
227デフォルトの名無しさん:2014/03/10(月) 21:48:07.64
「たのしいruby」やってるんだけどこれ一冊でアプリやらなんやら作れるようになるんだろうか
要領が悪いだけかもしれんが、説明ばかりで身に付いてるのかどうかよくわからない…
228デフォルトの名無しさん:2014/03/10(月) 21:53:00.98
>>227
なんかやってみれば、足りない物が見えてくるよ。
229デフォルトの名無しさん:2014/03/10(月) 22:10:54.27
>>227
irb 使ってる?手を動かさないと頭に入らないよ
230デフォルトの名無しさん:2014/03/10(月) 22:29:39.16
>>225
なるほどいろいろデータ構造にも名前があるのですね
DAGの各ノードの列挙は、今回の場合は会話を会話ごとに順番に並べるのが目的なので
replyの元(root)のノードから、再帰的にメソッドを定義すれば簡単に実装できそうですね

本来のDAGでは、すべてのノードかつながっていて、かつ閉路を持たないという条件から、
「ノードの深さ」を一義的に定義できるという事実が、ソートをする際の鍵になっているように思われますね
231デフォルトの名無しさん:2014/03/10(月) 22:57:33.53
>>229
irbのところはirb使って同じようにやってみる方がいいんだね
ってかC言語から入ったせいでいまいちirbの対話な感じがつかめないわ
232デフォルトの名無しさん:2014/03/10(月) 23:14:09.63
>>230
ツリーの各ノードを列挙する深さ優先探索/幅優先探索の手法と考え方は、
(DAGを含む)グラフの探索にも応用できるし、違いは重複ノードの検出と対処方法だけ
いくつかの効率的な手法が開発されているけど、いきなり理解は難しいと思うから、
まずは自分で格闘してみて、一通り動くモノができてから解説を読み直すといいと思われ
233デフォルトの名無しさん:2014/03/10(月) 23:15:20.76
>>231
たとえばリファレンスを読む場合なんかでも irb を起動させといて
http://docs.ruby-lang.org/ja/2.0.0/method/String/i/=25.html

% irb
irb(main):001:0> "i = %d" % 10
=> "i = 10"
irb(main):002:0> "%d,%o" % [10, 10]
=> "10,12"
irb(main):003:0> "i = %d" % "apple"
ArgumentError: invalid value for Integer(): "apple"

こんな感じに挙動を確かめながら読んだりする
あとは irb のここがよくわかんないって具体的に挙げれば誰か答えてくれるかも
234デフォルトの名無しさん:2014/03/11(火) 10:01:38.56
rubyはバージョンアップの度に大幅に互換性が無くなるというような内容を読んだのですが、これだけwebに使われているのはそこまで大した障害が起きないからですか?
235デフォルトの名無しさん:2014/03/11(火) 11:52:53.22
基本はサポートしているバージョンを意識して使う
例えばRuby1.8でしか動かないソフトなら1.8を入れて使う(か諦める)
236デフォルトの名無しさん:2014/03/11(火) 20:44:32.02
>>234
それは1.8->1.9だけだよ
他のバージョンアップでは大体保たれてる
237デフォルトの名無しさん:2014/03/11(火) 22:54:08.18
Ruby普及後、痛みを伴う変更を1.8→1.9で済ませたから、
以降はあまり困ることなく2.0, 2.1と上げていける感じ。

1.8未満はかなりひどかった思い出。
238デフォルトの名無しさん:2014/03/11(火) 22:54:49.12
Rubyはようやく成熟した大人の言語となったのだよ
239デフォルトの名無しさん:2014/03/11(火) 23:00:26.41
何がかなりひどかったんですか?
240デフォルトの名無しさん:2014/03/11(火) 23:02:04.66
>>239
1.8.7用のスクリプトを1.8.5で動かそうとしてみればわかる
241デフォルトの名無しさん:2014/03/11(火) 23:06:38.61
>>240
1.8.7->1.8.5が動かないのは別にいいじゃん
1.8.5->1.8.7が動かないのは問題だけど
242デフォルトの名無しさん:2014/03/11(火) 23:24:38.50 ID:PFwM+jH7
bundle installのオプションの--deploymentにはどういう意味があるのでしょうか?
243デフォルトの名無しさん:2014/03/11(火) 23:48:40.93 ID:tN6zSUSI
* gemのインストール先が vendor/bundle になる
* システムに入っているgemを使わなくなる
* 実行に Gemfile.lock 必須
244デフォルトの名無しさん:2014/03/11(火) 23:50:10.20 ID:fXwBZvGt
>>242
gem updateなんかしちゃったりしても大丈夫になる
245デフォルトの名無しさん:2014/03/12(水) 02:36:01.49 ID:VodWyXE4
ジェム・・・さんな。
246デフォルトの名無しさん:2014/03/12(水) 04:09:26.60 ID:pW1S2pi4
新人アルバイトのおにゃのが「げむ!るびーげむ!」って言ってたけど
かわいいから「そうだね、げむだね」って言っといた
247デフォルトの名無しさん:2014/03/12(水) 06:16:27.25 ID:Iz6J8eTo
ttp://www1.axfc.net/u/3190273.zip
この写真袋というのを起動させたいのですが、Readmeの使い方3で起動したらすぐ落ちてしまいます。
なぜでしょうか?

インストールしたのはRuby2.0.0-p451
PCはwindows 7 Home
プロセッサ→Intel(R)Core(TM)i3 CPU M 380 @2.53GHz 2.53GHz 実装メモリ 4.00GB システム種類64ビット
ノート型PCです。
248デフォルトの名無しさん:2014/03/12(水) 13:57:06.88 ID:vsuy5gDK
仕事でjava 家で自分のプログラムつくるときはrubyって人はいますか?

javaの後、何か他の言語触りたいんですが、やはりrubyでしょうか?
249デフォルトの名無しさん:2014/03/12(水) 15:27:15.42 ID:iuIDUWkr
>>248
Javaのメリットを理解できてないと、仕事が嫌になるかもだけどな。
勉強のためならlispとか全然違う言語もオヌヌメ。
250デフォルトの名無しさん:2014/03/12(水) 17:57:18.54 ID:VodWyXE4
C言語のちょっとしたソースをrubyに変換するのは、かなり厳しいですか?
また、その逆はどうですか?
251デフォルトの名無しさん:2014/03/12(水) 20:03:34.80 ID:g2De+G22
>>243
ありがとうございます!
252デフォルトの名無しさん:2014/03/12(水) 21:33:28.41 ID:VlIlu3/B
>>250
超簡単。逆は超大変。
253デフォルトの名無しさん:2014/03/12(水) 22:30:26.67 ID:fYkDeXHT
>>248さんとは逆に、必要に駆られて今までRubyを学んでいたのですが、
他の言語も触ってみたくなりました。
他に並行して学ぶとしたらおすすめの言語はありますか?
(Perl, Python, PHP以外で)
254デフォルトの名無しさん:2014/03/12(水) 22:31:45.23 ID:wJJF1Qm2
関数型はどうかな
ScalaはJavaくささが存分に残ってるからHaskellの方がいいかな
255デフォルトの名無しさん:2014/03/12(水) 23:07:22.37 ID:gSPEem5T
>>253
もしも経験した言語がRubyだけなら、Rubyのようなスクリプト言語ではなく、
コンパイラを前提とする言語、たとえば C/Java/C# のどれかを学ぶ価値はあると思う
特にC言語の知識はRubyで拡張ライブラリを書く時には必須になるし、
C++やObjective-Cを習得する時の前提にもなるから、個人的にはCを薦めたい

また関数型言語に手を出すのも悪くはないと思う
ただし、純粋関数型に分類されるHaskellは、プログラミングに対する思考/認識を
最初から再構築するつもりで取り組まないと習得するのが難しい
言い換えると、周囲に良い指導者がいれば別だけど、
初心者が興味本位で独習を試みても失敗する可能性が高い

だから、個人的にはHaskellよりも、MLと呼ばれる関数型言語族を薦めたい
具体的には Standard ML または OCaml と呼ばれる言語になる
他にも F# というML族言語もあるけど、これはC#プログラマ向け
またScalaという関数型言語はJavaプログラマ向けの関数型言語になる

最後に、まとめてみる:
・UNIX の道に進みたい --> C言語 の後、 Standard ML または OCaml を学ぶ
・Windows の道に進みたい --> C# の後、F# を学ぶ
・Java の道に進みたい --> Java の後、Scala を学ぶ
256デフォルトの名無しさん:2014/03/12(水) 23:36:37.76 ID:gSPEem5T
>>248
仕事でJavaを使っているのなら、JRubyがいいんではないのかな?
もし仕事がWeb系であるなら、JRuby+Railsを勉強するのがいいと思うし、
たとえそうでなくともJRubyの習得は業務改善にきっと役立つはず

たとえばもし英語が読めるなら、JRubyでSwingを使ったGUIアプリを作ってみるとか?
・JRuby Swing tutorial
 http://zetcode.com/gui/jrubyswing/
で、Javaによる比較的単純なゲーム(テトリスやパックマンなど)をJRubyへ移植してみるとか
・Java 2D games tutorial
 http://zetcode.com/tutorials/javagamestutorial/
257デフォルトの名無しさん:2014/03/13(木) 00:25:59.37 ID:d/qHbQav
一番学ぶべき言語は・・・英語か。
258デフォルトの名無しさん:2014/03/13(木) 14:21:58.16 ID:wZ/Mekf7
>>227
たのしいRuby 第4版
やっと3回読んだ
漏れは、10ほどの言語を知っているが、
関数型言語は苦手なせいか、なかなか苦戦した
今はRで苦戦している

Rubyは環境がないのな?
Javaの環境を使って、JRubyって手もあるか
でもRailsまでは、やるのが面倒
でもなぜSwingなんだ?SWTじゃないの?

Rubyには万能感、解放感、充実感があるね
ちょこちょこ、小回りがきくからかな?

配列2つを足すと、重複した要素を除いて、
1つの集合にするなど、便利な機能もある

漏れはWin8ノートだから、環境を探すのが一苦労する
Win7を買うべきだった
まずEclipseかな?もう少し、環境について調査してみる
259デフォルトの名無しさん:2014/03/13(木) 17:22:05.97 ID:qaG+7LaQ
>>257
読めないなら、配管工でもした方が良いレベル
260デフォルトの名無しさん:2014/03/13(木) 18:16:52.60 ID:+lIKaSU4
>>258
IDEに頼るやつは何をやってもダメ
261デフォルトの名無しさん:2014/03/13(木) 18:22:43.02 ID:wuhQ2BN5
入力した数が素数か判定するプログラムを作った。

もっと簡潔に書けるよ、とか
こうすれば速くなる、とか教えてほしい。


input = gets.to_i
count = 2
while (input % count) != 0 &amp;&amp; input > 1
count += 1
end
puts"素数です" if count == input
puts"素数ではありません" if count != input


やり方としては、
入力した数を2から順に割っていって、
割り切れたときの数が入力と一致していたら素数、
一致してなかったら素数ではない、
と考えた。
262デフォルトの名無しさん:2014/03/13(木) 18:34:41.96 ID:4Ls5eGnC
>>261
素数判定に関しては「○○を実装してみた」という言い方をして欲しい
エラトステネスの篩とか試し割りとか、そういうの

もしそういう言い方ができないのであれば、
対象についての研究が足りない、またはそれを題材として練習するのはヤバい
263デフォルトの名無しさん:2014/03/13(木) 18:34:52.63 ID:k4ocBl+v
早過ぎる最適化、ということを覚えること
264デフォルトの名無しさん:2014/03/13(木) 18:54:45.94 ID:qaG+7LaQ
未だにSWTが使われてるのはEclipiseぐらい
仮想マシンが強力になったせいで、Awt/Swingでも変わらないだけの速度が出る
そんな懐かしいものより、Android SDKでも触っとけよ
TomcatやStruts/SpringMVCの存在価値は、もはやPHPにも劣る
265デフォルトの名無しさん:2014/03/13(木) 18:57:29.17 ID:bTIwkzX1
>>261
SICP本にあるScheme実装コードをRubyへ移植してみた
できるだけオリジナルのコード構造を再現できるようにしてみたけど、
Rubyらしく書き直せば、もっと短く簡潔になるはず

http://play.island.ac/codepaste/code?id=1578
266デフォルトの名無しさん:2014/03/13(木) 19:03:51.89 ID:qaG+7LaQ
SICPをRubyに変換なんて間抜けなことやらなくていいから、
蟻本に書かれているアルゴリズムの英語資料を探してきてノートに書き下だせ
データベースの民間資格取るほうがはるかにマシ
267261:2014/03/13(木) 19:34:19.19 ID:wuhQ2BN5
>>262
なるほど。ありがとうございます。
>>265
ありがとうございます!
268デフォルトの名無しさん:2014/03/13(木) 23:15:54.60 ID:1rtAXIVl
Nokogiri::HTML.parseしたら
#<Nokogiri::XML::Text:0x3fde62528138 "¥r¥n ">
みたいな改行と空白みたいなのまでひっぱって来ちゃうんだけど
これ出てこない様にはできんかの?
269デフォルトの名無しさん:2014/03/13(木) 23:20:58.52 ID:Se024/Kp
>>268
Nokogiri::HTML.parse.to_s.split
270デフォルトの名無しさん:2014/03/13(木) 23:25:40.29 ID:yAPkVqSP
noblanks がどーたらこーたら
271デフォルトの名無しさん:2014/03/14(金) 01:10:26.86 ID:AQKbVC0Q
>>261
確か素数は、平方根までで割り切れるか、
を確かめるだけで良かったんじゃ?

25=5*5 だから、素数ではない
23は2,3,5で割り切れないから、素数?
272デフォルトの名無しさん:2014/03/14(金) 01:18:15.95 ID:CN82R/hG
265 名前:デフォルトの名無しさん[sage] 投稿日:2014/03/13(木) 18:57:29.17 ID:bTIwkzX1
>>261
SICP本にあるScheme実装コードをRubyへ移植してみた
できるだけオリジナルのコード構造を再現できるようにしてみたけど、
Rubyらしく書き直せば、もっと短く簡潔になるはず

http://play.island.ac/codepaste/code?id=1578


↑は自治スレに入り浸るキチガイでした
http://toro.2ch.net/test/read.cgi/tech/1393852194/
273デフォルトの名無しさん:2014/03/14(金) 08:20:51.47 ID:UX8YYIlf
> a=('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a
=> ["a", "b", "c", "d", "e", ... "6", "7", "8", "9"]
> 16.times{print a.sample}
aHdQvYW75ssv4tyK

Rubyの乱数ってパスワード生成に使って安全ですか?
274デフォルトの名無しさん:2014/03/14(金) 11:25:44.74 ID:LTNvKxS/
>>271
天才ktkr
275デフォルトの名無しさん:2014/03/14(金) 13:37:08.15 ID:N8AgJwv9
>>271
5x5は見なくていい
4まで割って見れば良い
つまり

x 23は2,3,5で割り切れないから、素数?

o 23は2,3で割り切れないから、素数!
276デフォルトの名無しさん:2014/03/14(金) 21:51:35.47 ID:4Kl0wdn2
入力される数値の大きさが分からないけど
あらかじめ素数の表を持っておくのはずるいやり方かな?w
表の範囲内なら即答。表以上なら表から計算。
277デフォルトの名無しさん:2014/03/14(金) 22:21:55.06 ID:eyP/oOvO
表の範囲外だと入力値だけで何メガバイトもありそう
278デフォルトの名無しさん:2014/03/14(金) 23:23:37.02 ID:sBD7EyTw
100万までの素数の改行区切りが500KBだったはず
279デフォルトの名無しさん:2014/03/15(土) 01:08:37.47 ID:AJr6U08J
>>273
Random.new(1) など、同じ種を与えれば、
同じ乱数列が出てくる

引数を与えなければ、別の乱数によって、
作られた種によって、乱数列が作られる

でも、たまたま同じ種になると、
同じ乱数列が作られるかも?
280デフォルトの名無しさん:2014/03/15(土) 02:45:52.46 ID:eFxi4ctV
>>273
厳密にはダメ。Rubyのrandはいわゆる暗号学的に安全な擬似乱数を生成しない

SecureRandomがある。ただし環境によっては使えない可能性がある
281デフォルトの名無しさん:2014/03/15(土) 11:12:42.94 ID:LE9xw32l
「暗号学的に安全」というのは、パスワード生成に使って良い悪い、という意味ではない。

たとえばセッションID等に使って、過去n回のIDから次のIDが予測できる、といったような性質が
ある場合に、「暗号学的に安全でない」と言う。
282デフォルトの名無しさん:2014/03/15(土) 13:49:41.36 ID:7MQyb7Y3
配列に:aか:bか:cを含む
ってのを簡潔に書けないかな?
!(array - (array - [:a, :b, :c])).empty?
とかやってるけど、ぱっと見、意味不明だぬ
283デフォルトの名無しさん:2014/03/15(土) 13:52:42.43 ID:Fwz6hkt8
[:a, :b, :c].include?(:a) ってのがあるお
284デフォルトの名無しさん:2014/03/15(土) 13:56:49.66 ID:7MQyb7Y3
>>283
array.any?{ |e| [:a, :b, :c].include?(e) }
こっちの方がましかなぁ
285デフォルトの名無しさん:2014/03/15(土) 14:06:01.75 ID:Fwz6hkt8
!(array & [:a, :b, :c]).empty?

あんまし変わらないか
286デフォルトの名無しさん:2014/03/15(土) 20:43:53.16 ID:2XdUyWz9
t = [:a,:b,:c]
(t-array).size != t.size

いまいち
287デフォルトの名無しさん:2014/03/15(土) 21:00:43.12 ID:4oHlMdiA
>>284 に一票
288デフォルトの名無しさん:2014/03/15(土) 22:03:33.21 ID:2XdUyWz9
>>284
分かりやすいので俺も一票
289デフォルトの名無しさん:2014/03/15(土) 22:13:56.50 ID:Cg/cJL3k
(array - [:a,:b,:c] == array)
290デフォルトの名無しさん:2014/03/16(日) 01:55:27.08 ID:kwxpV1Db
>>284よりも明らかに>>285のほうがいいよ
速い上に(高校で習う集合論を覚えていれば)直感的でわかりやすい
291デフォルトの名無しさん:2014/03/16(日) 03:08:07.17 ID:nvhpKgyR
>>290 1おむすび
,.-、
(,,■)
292デフォルトの名無しさん:2014/03/16(日) 07:38:46.95 ID:35wQAmZk
>>290=>>285
集合演算と二重否定(しかも遠い)のコンボは別に直感的でもわかりやすくもない
293デフォルトの名無しさん:2014/03/16(日) 10:47:05.66 ID:LO99WT+e
いや、>>285は分かりやすいだろw
>>284はタイプ量を減らそうとして直感的じゃなくなってるケース。
294デフォルトの名無しさん:2014/03/16(日) 11:17:08.87 ID:BR331utC
>>285はメソッド Array#& で二つの集合間の交わりを計算し、
その次に空(から)でないことを判定している
これは集合の要素数が小さければ最適解かもしれないけど、
要素数が極めて大きければ交わり計算に要する時間が無駄になる

今回の「お題」は完全な積集合を求めることではなく、
ただ単に交わりが存在するか否かを判定するだけなのだから、
>>284のほうが「お題」を素直に表現していると考える

>>290のいう「>>285は集合論として直感的だ」という意見は
決して間違いではないが、数学的な定義を直接的にコード化すると
(数学として直感的であっても)効率的ではなくなることがある
という例だと思われ
295デフォルトの名無しさん:2014/03/16(日) 16:54:45.92 ID:Lir+QJFs
配列の集合演算って、内部では一時的なハッシュ作ってるのかな
と、Rubyのソース見たら作ってた

require 'benchmark'
array=10_000_000.times.to_a.shuffle + [:a,:b,:c]
Benchmark.bm do |bm|
a = array.dup;bm.report{a.any?{|e|[:a,:b,:c].include?(e)}}
a = array.dup;bm.report{!(array & [:a, :b, :c]).empty?}
a = array.dup;bm.report{(a - [:a,:b,:c] == a)}
end
の実行結果 ruby 2.1.1p76 (2014-02-24 revision 45161) [i386-mingw32]
user system total real
14.969000 0.016000 14.985000 ( 15.000000)
0.344000 0.000000 0.344000 ( 0.343750)
0.578000 0.078000 0.656000 ( 0.703125)

試しに ruby 2.1.0p0 (2013-12-25 revision 44422) [i386-mingw32]
user system total real
23.781000 0.000000 23.781000 ( 23.781250)
0.344000 0.000000 0.344000 ( 0.343750)
0.609000 0.047000 0.656000 ( 0.687500)
集合演算はほぼCの関数だから変わってないけど
Array#any? は何気に速くなってるぅ

要素数が数千程度までなら実行時間に大して差はないので好きに書けばいいと思う
296デフォルトの名無しさん:2014/03/16(日) 17:13:23.65 ID:tehq2gt8
横からだけど俺も共通部分取った方が分かりやすいと思ったな

>>292
n.&(m).empty?.! # ?!?!!? wwwwww
n.&(m).any? # nil を含まない保証がある場合
うん伝わり辛いな!


>>295
ハッシュ作ってるから爆発はしなさそうだよね
計算量はどう書くんだろ?教えて下さいエロい人

n.&(m).empty?.! # O(n+m) ← あってる?
n.any? {|v| m.include? v} # O(n*m) ← あってる?
297デフォルトの名無しさん:2014/03/16(日) 17:37:42.28 ID:X1gct15n
集合演算の方が速いとは、ちょっとびっくり

>>296
うん、あってるね
298デフォルトの名無しさん:2014/03/16(日) 19:59:48.28 ID:+0w7Q/Uu
大真面目にRuby扱ってる人まだいたんだ
299デフォルトの名無しさん:2014/03/16(日) 20:08:04.34 ID:X1gct15n
300デフォルトの名無しさん:2014/03/16(日) 20:09:29.32 ID:+0w7Q/Uu
Rubyは昔はホルホルしてた人でしょ?
301デフォルトの名無しさん:2014/03/16(日) 20:27:14.55 ID:nvhpKgyR
502 Bad Gateway nginx/1.2.1
http://docs.ruby-lang.org/

ふぇぇ
302デフォルトの名無しさん:2014/03/16(日) 20:30:32.71 ID:+0w7Q/Uu
Rubyってとっくにオワコン化した言語なのにまだ学ぼうしている人がいるの?
いまだ初心者スレがあるってことが信じられない
303デフォルトの名無しさん:2014/03/16(日) 20:31:27.76 ID:tehq2gt8
>>297
あざす!
304デフォルトの名無しさん:2014/03/16(日) 20:31:44.91 ID:/mgBA8rW
とっくに人生終了してるバカが何か言ってるねw
305デフォルトの名無しさん:2014/03/16(日) 20:38:14.91 ID:+0w7Q/Uu
Rubyは中途半端な出来上がりの言語だったかもね
pythonにみんな移り始めてるし、流れにのらないと待遇は悪くなるばかりだよぉ
306デフォルトの名無しさん:2014/03/16(日) 20:39:30.35 ID:nvhpKgyR
RubyはDSL用になりつつあーるのである
307デフォルトの名無しさん:2014/03/16(日) 20:41:40.69 ID:/mgBA8rW
>>305 自分の境遇を必死に反映してるのですね、わかりますw
308デフォルトの名無しさん:2014/03/16(日) 20:44:36.70 ID:+0w7Q/Uu
pythonは良いよ、美しいよ
でもRubyかじったドカタさんレベルだと敷居が高いかもしれないね
309デフォルトの名無しさん:2014/03/16(日) 20:45:04.33 ID:pXWrRWdV
へんなのはPythonに来なくていいから
Rubyの方で隔離してくれてるとありがたい
310デフォルトの名無しさん:2014/03/16(日) 20:51:37.19 ID:BR331utC
>>309
Pythonやってると、+0w7Q/Uu みたいになるっていう例だね
311デフォルトの名無しさん:2014/03/16(日) 20:55:34.15 ID:/mgBA8rW
>>308 てめぇの脳みそがドカタ以下なのを、まずどうにかしたほうがいいよw
312デフォルトの名無しさん:2014/03/16(日) 20:58:04.50 ID:+0w7Q/Uu
Ruby自体がダメっていうよりはRubyにくいついた人たちがアレって印象なんだけどね
313デフォルトの名無しさん:2014/03/16(日) 21:02:03.69 ID:/mgBA8rW
>>312 自分のアレさ具合にまず気付こうねw
314デフォルトの名無しさん:2014/03/16(日) 21:03:29.62 ID:BR331utC
>>313
荒らしにかまうのも、荒らし行為だよ
315デフォルトの名無しさん:2014/03/16(日) 21:39:25.11 ID:+0w7Q/Uu
いつまでRubyに固着しつづける理由はないと思うよ
他の言語にも手を出しつつRuby続けるならまだいいかもだけど
316デフォルトの名無しさん:2014/03/16(日) 22:55:54.45 ID:KyVGNp8M
is_aって、英語にするとなんでしょう?
たとえば、ARGVはargument valueみたいな
317デフォルトの名無しさん:2014/03/16(日) 23:01:55.67 ID:nMAWd7oj
そのまま is a でしょ

A.is_a B
A is a B
AはBである
318デフォルトの名無しさん:2014/03/16(日) 23:04:00.20 ID:+0w7Q/Uu
Ruby厨の知能をさらけ出してしまった
319デフォルトの名無しさん:2014/03/16(日) 23:19:24.42 ID:nvhpKgyR
RubyGemsとかで公開されているライブラリのソースコードを見るとメソッドの引数チェックとかあんましやってない様にみえるけどこんなもんなの?どしてなの?

標準ライブラリとかはTypeErrorとかArgumentErrorとかちゃんとスローするよね。

標準ライブラリとそれ以外のライブラリでは引数チェックに関するポリシーとかスタイルが違ったりするの?
320デフォルトの名無しさん:2014/03/16(日) 23:22:06.68 ID:+0w7Q/Uu
Ruby厨無意味な改行おつかれさまでーす
早くpythonに移れば?
321デフォルトの名無しさん:2014/03/16(日) 23:32:17.51 ID:nvhpKgyR
>>320
真面目な疑問なんだけど。
322デフォルトの名無しさん:2014/03/16(日) 23:55:29.54 ID:+0w7Q/Uu
Ruby信者も早速老害化してるね
323デフォルトの名無しさん:2014/03/17(月) 00:00:23.55 ID:1c9ssCVb
>>317
なるほど
C言語のさわりしかやってないんでクラスの理解に手間取ってる次第です
ありがとうございます
324デフォルトの名無しさん:2014/03/17(月) 00:06:03.25 ID:qNLDgXjv
そんなレベルでRubyいじってるんだからな
そりゃウンコプログラマにしかなれないんだなぁ〜
325デフォルトの名無しさん:2014/03/17(月) 00:16:32.32 ID:PrlWoGXZ
>>319
自分は引数検査に関する公式なポリシーやスタイルというものを知らないから、
以下に書く内容は推測にすぎない事をあらかじめ断っておく

基本的にRubyは引数検査は緩やかなポリシーであり、
それ以上処理を続行できない or 明らかに続行すべきではない場合に限って
例外を発行するよう設計されていると(個人的には)見ている
ただし、標準ライブラリの中でも(C言語で書かれた)組込みライブラリは、
エラーがRubyインタプリタ自身のクラッシュに直結する(という理由がある)ので
厳密な引数検査が行われているように見えるのだと思う
実際、標準ライブラリの中でも(Rubyで書かれた)添付ライブラリは、
きちんと引数検査していないものが多い

もしも、>>319がより正確な答えを求めるのなら、
公式メーリングリストで問い合わせたほうがいいと思う

>>321
+0w7Q/Uu は多くの板で煽りカキコしている典型的なを荒らしだから、無視すべきだよ
http://hissi.org/read.php/tech/20140316/KzB3N1EvVXU.html
326デフォルトの名無しさん:2014/03/17(月) 00:30:27.48 ID:qNLDgXjv
結局自分で調べるべき問題をここで質問しちゃっただけじゃん
これがRuby信者の実力
327デフォルトの名無しさん:2014/03/17(月) 00:36:00.83 ID:7WFHPef3
>>319,321
気になったら報告すれば、さっくり対応してくれるよ。
礼儀としてRubyGemsのバージョンは古いから
mainなリヴィジョンで要確認
328デフォルトの名無しさん:2014/03/17(月) 00:38:43.32 ID:qNLDgXjv
無意味な改行つけて真面目な疑問とかww
329デフォルトの名無しさん:2014/03/17(月) 10:21:19.07 ID:QW4CmNA1
てめぇの存在が無意味
330デフォルトの名無しさん:2014/03/17(月) 11:08:05.99 ID:CjINzA9/
v = 3

v==3 # ==> true
v=="3" # ==> true

的に使えるvariant型みたいのないですか
331デフォルトの名無しさん:2014/03/17(月) 11:16:46.54 ID:QW4CmNA1
v = 3 の意味はオーバーライドできないから、
v が Fixnum になることが不可避。
332デフォルトの名無しさん:2014/03/17(月) 11:23:19.39 ID:aK3DvjMV
A == B は A クラスのインスタスメソッド A#== を呼んでいるだけであって、
== という記号がなにか判断をしているわけではない
http://docs.ruby-lang.org/ja/1.9.3/class/Object.html#I_--3D--3D

で、一般的には既存の(自作でない、==をオーバーライドするのは下品な)基本的オブジェクトに対しては
v.to_s == '3' とかして比較する

もちろん v に to_s というメソッドがないと例外吐いて落ちるが、それはそういうもん
333デフォルトの名無しさん:2014/03/17(月) 11:25:42.04 ID:qNLDgXjv
まーた仕事の質問しちゃった
Ruby厨の実力はこの程度
このスレには馬鹿しか残ってないよ
334デフォルトの名無しさん:2014/03/19(水) 07:53:04.37 ID:gvuKo8uV
お前、生きてて辛いだろw
335デフォルトの名無しさん:2014/03/19(水) 08:14:49.29 ID:pgTJKr0l
そりゃRuby厨は仕事がなくて辛いよね
Pythonを理解できない脳だからしかたないか
336デフォルトの名無しさん:2014/03/19(水) 08:56:05.04 ID:vKjFIPAU
今日のID判明
GJ
337デフォルトの名無しさん:2014/03/19(水) 09:35:52.73 ID:pgTJKr0l
Ruby厨必死のIGID自慢
Ruby厨の日常はノーグッド
338デフォルトの名無しさん:2014/03/19(水) 11:17:06.28 ID:SQrMQ7kj
朝起きてからずっと色んなスレに書き込んでるけど仕事しろ
339デフォルトの名無しさん:2014/03/19(水) 11:24:53.34 ID:pgTJKr0l
Rubyの仕事はもうないから安心して別の業種探したほうがいいよ
340デフォルトの名無しさん:2014/03/20(木) 03:38:53.80 ID:tNptK3aX
require 'benchmark'
n = 50000
Benchmark.bm do |x|
x.report { for i in 1..n; a = "1"; end }
x.report { n.times do ; a = "1"; end }
x.report { 1.upto(n) do ; a = "1"; end }
end

こんな感じで実行時間をベンチマークするのは出来るのですが、
メモリ使用量を調べるにはどうすればいいでしょうか?
341デフォルトの名無しさん:2014/03/20(木) 03:52:55.04 ID:jQYIhnNX
>>340
そういうことは基本的にできない。
unix系なら
/usr/bin/time -f %M ruby -e 'for i in 1..n; a = "1"; end'
とかやったら?
342デフォルトの名無しさん:2014/03/20(木) 09:09:44.31 ID:noBkfRX0
深夜3時に質問レスするRuby厨
仕事がないんですねわかります
343デフォルトの名無しさん:2014/03/20(木) 10:00:24.17 ID:noBkfRX0
>>341
できないのはお前の頭のほうだろ
適当なことを吐くんじゃねえよ
ここはお前の便所じゃねえんだよ
344デフォルトの名無しさん:2014/03/20(木) 13:15:37.29 ID:t+S/cpio
bundle new foo
ってしたら
module Foo; end
ってモジュールが自動生成されるけど、
モジュールじゃなくてクラスじゃダメなの?
名前空間が衝突しないようにgem名に基づいたmoduleを作らんと行かんってこと?
345デフォルトの名無しさん:2014/03/20(木) 13:18:00.99 ID:noBkfRX0
>>334
だめなのはクラスじゃなくてお前の人生
Rubyの勉強の仕方が根本から間違ってるようだね
このスレに質問するまでは1年は早い
346デフォルトの名無しさん:2014/03/20(木) 17:43:03.48 ID:1pyMxfb0
>>344
別にいかんわけじゃないが、そうした方が無難
347デフォルトの名無しさん:2014/03/20(木) 21:11:50.95 ID:noBkfRX0
>>346
いかんのはお前のコーディングスタイル
お前職場でも空気読めない迷惑な存在だろ、自覚してんのか知らんけど
そういう人格がこういうとろこで表れるんだよ
だれもお前の意見なんて求めてないから消えろゴミクズ糞蛆虫
348デフォルトの名無しさん:2014/03/21(金) 01:16:13.41 ID:6IJg/I04
>>344
"一番外側"はモジュールなのが一般的

もちろんクラスでもいいのだけど、どっちか決め打ちしろと言われたらモジュールにする
そんな程度
使わんかったら書き換えてもいいよ
349デフォルトの名無しさん:2014/03/21(金) 01:23:23.23 ID:Z82+z0lX
>>348
はそんな程度の頭
終始曖昧な答えで終わってる
350デフォルトの名無しさん:2014/03/21(金) 01:37:07.62 ID:q4G07wC8
class Foo
 def foo; return :foo; end
end
Foo.new.get_uwagaki_method(:@foo)
# => nil

class Foo
 def foo; return :oreore_foo; end
end
Foo.new.get_uwagaki_method(:@foo)
# => :redefine

class Bar < Foo
 def foo; return :bar_foo; end
end
Foo.new.get_uwagaki_method(:@foo)
# => :overwride

みたいに、
的な事をしたいんだけど無理かな?
351デフォルトの名無しさん:2014/03/21(金) 01:41:14.04 ID:Z82+z0lX
はい糞コード入りましたー
動かないコードを書いてばっかじゃねーの
352デフォルトの名無しさん:2014/03/21(金) 08:56:29.68 ID:dbzhsf0s
>>350
日本語でおk

最終的にやりたいことを説明するといいよ
353デフォルトの名無しさん:2014/03/21(金) 12:11:42.86 ID:o/AML2E/
>>350
def fooするまえに defined? foo 確認すりゃええだけちゃうのん
354デフォルトの名無しさん:2014/03/21(金) 12:44:28.14 ID:Z82+z0lX
>>353
呼ばれてないのにくる初心者乙
355デフォルトの名無しさん:2014/03/21(金) 13:38:18.66 ID:DlG+OImv
連休はム板に張り付き荒らしをして過ごします
356デフォルトの名無しさん:2014/03/21(金) 14:22:40.78 ID:Z82+z0lX
連休もRubyスレで質問しますw
357デフォルトの名無しさん:2014/03/21(金) 15:02:22.06 ID:3n01pDgG
君、面白くないよ
358デフォルトの名無しさん:2014/03/21(金) 15:44:37.03 ID:Z82+z0lX
お前面白くないよRUbyゴミ厨
359デフォルトの名無しさん:2014/03/22(土) 01:45:28.34 ID:jZh4qhvH
1つの整数 x を読み込んで、x の3乗を計算し結果を出力するプログラムを作成して下さい。
入力として1つの整数 x が与えられます。
360デフォルトの名無しさん:2014/03/22(土) 01:49:32.78 ID:aBNmXC5d
>>359
x = gets.to_i
p x*x*x
361デフォルトの名無しさん:2014/03/22(土) 01:49:38.53 ID:+2B6OEdX
そういうのはお題スレでやれ
こういう場違いな低学歴が平気でスレに出入りするからみんな去ってくんだよ
362デフォルトの名無しさん:2014/03/22(土) 01:54:29.37 ID:aBNmXC5d
>>361
うるせーこの野郎、こちらは初心者スレだぜぇ、一昨日来やがれ
363デフォルトの名無しさん:2014/03/22(土) 02:02:36.90 ID:veNOxdve
364デフォルトの名無しさん:2014/03/22(土) 02:03:59.93 ID:+2B6OEdX
馬鹿みたいに簡単な問いを正解したぐらいで勝ち誇った態度取るのだけは止めろな
そんなんじゃ仕事にならんぞ
365デフォルトの名無しさん:2014/03/22(土) 02:09:02.62 ID:jZh4qhvH
それではこれはできますか

たて a cm よこ b cm の長方形の面積と周の長さを求めるプログラムを作成して下さい。
a と b が1つの空白で区切られて与えられます。
面積と周の長さを1つの空白で区切って1行に出力して下さい。

Sample Input
3 5
Sample Output
15 16
366デフォルトの名無しさん:2014/03/22(土) 02:11:04.05 ID:+2B6OEdX
スレを私物化する馬鹿が調子に乗り出した
このスレは本格的に終了
367デフォルトの名無しさん:2014/03/22(土) 02:16:03.70 ID:jZh4qhvH
なんだ口だけで手は動かせないやつか

耳は聞こえるのかな
368デフォルトの名無しさん:2014/03/22(土) 02:26:10.68 ID:+2B6OEdX
嗚呼〜RUBY厨の叫びを聴け
369デフォルトの名無しさん:2014/03/22(土) 09:10:48.40 ID:1kwxfvu4
連休初日はRubyスレに張り付いて荒らしをして過ごしました
連休二日目もRubyスレに張り付いて荒らしをして過ごします
370デフォルトの名無しさん:2014/03/22(土) 09:15:45.23 ID:uxrrfUq4
>>365
a,b = gets.split(/\s+/).map(&:to_i)
puts [a*b,2*a+2*b].join(' ')
371デフォルトの名無しさん:2014/03/22(土) 10:05:34.86 ID:ahejxoWb
宿題スレでは定番遣り取りだったんだけど、「なにを習ってなにを習ってないのか」がわからないと回答できないよ
たとえば、>>370を「授業で教える」ことはおそらくないから、これを提出するとチェック対象になるはず

>>369
Ruby関係ないよ
ム板にずっと前からいる
372デフォルトの名無しさん:2014/03/22(土) 10:14:45.52 ID:uxrrfUq4
>>371
言うなよ、提出させてバレるのがいいんじゃないか
373デフォルトの名無しさん:2014/03/22(土) 10:18:53.60 ID:n17bsJOw
rubyって劣化pythonだよね
railsがあるだけでpythonより価値あるけど
374デフォルトの名無しさん:2014/03/22(土) 11:17:24.86 ID:HSsuroe3
「たった2日でできるRuby」の半分が終わったのですが、これの後に勉強した方がいいのは「たのしいRuby」と「パーフェクトRuby」のどちらですか?

「たったの…」が本当に2日で終わるとは思ってなかったので…。
勉強の目的はweb制作です。
375デフォルトの名無しさん:2014/03/22(土) 11:43:57.96 ID:h4m0yMGm
Web 制作に使うフレームワークのチュートリアルを読んでみて
自分に不足してる知識が見えてきたら次の本を買うぐらいでいいと思う
376デフォルトの名無しさん:2014/03/22(土) 12:25:32.39 ID:/Wci2X+J
パーフェクトRubyはたのしいRubyで扱っていることもおよそカバーして、
加えて実践的なもの(各種ツール、gemの作り方)、Rubyの黒い部分(メタプログラミング)
も扱っているようだな。
徐々に進みたいならたのしいRuby、網羅的な1冊ならパーフェクトRuby、という感じ。
377デフォルトの名無しさん:2014/03/22(土) 12:49:21.46 ID:HSsuroe3
>>375
「たったの…」ではそこまでの力がつかない気がします。本当に基礎の基礎だけっぽいので…。

>>376
では「パーフェクト…」をやりながら理解しにくいところだけ「楽しい…」をリファレンス代わりにというのが良さそうですね。

ありがとうございました。
378デフォルトの名無しさん:2014/03/22(土) 13:00:05.43 ID:1DTI3LRJ
出版社のステマうざい死ね
379デフォルトの名無しさん:2014/03/22(土) 13:20:40.56 ID:+2B6OEdX
Ruby厨はほんと馬鹿だな
380デフォルトの名無しさん:2014/03/22(土) 13:22:47.11 ID:n17bsJOw
パーフェクトrubyあまりいい本だとは思わねーな
シリーズ物だから売れてるけど。
勉強のために最初から読むって本でもない。
381デフォルトの名無しさん:2014/03/22(土) 15:58:52.64 ID:+2B6OEdX
>>380
ではなに読んでも糞本になる
382デフォルトの名無しさん:2014/03/22(土) 16:09:26.52 ID:n17bsJOw
だって複数人が共同で書いてる本って一貫性が無いんだもの
テストを扱ってないのも致命的だと思った
さらに言うと著者紹介を見れば分かるけど著者の技術レベルがかなり疑わしい
383デフォルトの名無しさん:2014/03/22(土) 18:54:37.75 ID:h4m0yMGm
本屋で 2 日でわかる Ruby をパラパラ眺めてきた
あれを手を動かしながら読んで同種のコードをサラサラ書けるようになれば初歩としては十分だと思った
でも 200 ページ足らずで \2,310 はちょっと高いかな

その隣りに置いてあった『たのしいプログラミング Python ではじめよう!』をついでにめくってみたら
フルカラーで素敵な挿絵(すごい Haskell の人が描いてる)が一杯で危うく買いそうになった
384デフォルトの名無しさん:2014/03/22(土) 21:15:28.26 ID:7m4m/Mij
プログラミング言語 Ruby オライリージャパン (2009/1/26)
http://www.amazon.co.jp/dp/4873113946/
オライリーが 1.X の記述を捨て去った完全 2.X 版を出せば
『パーフェクトRuby』は売れなくなるよ
385デフォルトの名無しさん:2014/03/22(土) 22:03:09.18 ID:uxrrfUq4
というか書籍を買う必要あるのかなあ。
386デフォルトの名無しさん:2014/03/22(土) 23:37:47.29 ID:7m4m/Mij
スクリプトといえば PerlかJavaScriptだったオレは、
2000年ごろ原先生のウサギ本を書店で見かけてすぐに購入。
あとはWebにあったトーマスとハントのネタ元が役に立った。
今はドキュメントが豊富で何を読んでいいのか分からないとか。w
387デフォルトの名無しさん:2014/03/22(土) 23:58:27.13 ID:e4K+RqPN
他の言語の素養があるなら、ネットの情報だけでなんとかなる時代だからなー
388デフォルトの名無しさん:2014/03/23(日) 00:05:45.79 ID:AY0ttai1
3/19 ID:pgTJKr0l 86レス1位
http://hissi.org/read.php/tech/20140319/cGdUSktyMGw.html
3/20 ID:noBkfRX0 69レス1位
http://hissi.org/read.php/tech/20140320/bm9Ca2ZSWDA.html
3/21 ID:Z82+z0lX 55レス1位
http://hissi.org/read.php/tech/20140321/WjgyK3owbFg.html
3/22 ID:+2B6OEdX 39レス1位
http://hissi.org/read.php/tech/20140322/KzJCNk9FZFg.html

完 全 に 病 気
389デフォルトの名無しさん:2014/03/23(日) 00:12:26.12 ID:LwVxNWuC
Rubyにしがみつくやつ、何の病気?
国粋主義者?
390デフォルトの名無しさん:2014/03/23(日) 00:27:29.79 ID:YG72v+Wj
>>372
「バレた」としても、それが学生/生徒側にわざわざ知らされるようなことはまずないとみていい
(他の(普段の)回答と比べれば差が歴然で剽窃が明白だから)
>>365が「あの回答をコピペしたせいで成績下がった」と認識することも、スレに報告しに来ることも絶対にない

つまり、傍目には単に宿題に親切に回答しただけだ
そんなん、宿題やっての書き込みが増えるだけでなんもいいことがないし面白くもない
>>371がきちんとできる人は結果的に宿題を自力でできる人だから、虫避けになる
391デフォルトの名無しさん:2014/03/23(日) 00:33:08.84 ID:pTyhCbBF
array = [ "一番目", 8, "saas", "efsdsdfsdf"]
array.each do |i|
if Numeric
puts '数字だな'
elsif i == "一番目"
puts "日本語だな知ってる"
else
puts "それいがいのなにか、うんわかってる"
end
end

これなんでうまくいかないのか教えて
caseだとうまくいくのに
392デフォルトの名無しさん:2014/03/23(日) 00:41:43.90 ID:N5RuRaJB
Rubyの良さは書き易さだな
begin-endなので書きなぐれるし
OOPなメソッドチェーンなので補完がバリバリ効く
万能な言語は存在しないので
何か一つでも用途にあえばそれはそれで本人満足なんだから
他人があれこれ言う話じゃない
393デフォルトの名無しさん:2014/03/23(日) 00:43:10.35 ID:LwVxNWuC
じゃあ単位落とす馬鹿を相手にして面白がってるこのスレのバ回答者たちはそうとうクズいよ
394デフォルトの名無しさん:2014/03/23(日) 00:48:38.91 ID:YG72v+Wj
>>391
>これなんでうまくいかないのか教えて
それは、なんとなく書いてるから
>caseだとうまくいくのに
それも、なんとなく書いてるから

プログラム言語は融通の利かないロジックの塊
使い方とルールはきちんと覚えよう
395デフォルトの名無しさん:2014/03/23(日) 00:50:12.90 ID:qvzVCOsl
>>391
case は === で比較してるからうまくいくだけ
396デフォルトの名無しさん:2014/03/23(日) 01:11:27.28 ID:SSYwKPLD
>>390
俺が教官だったら晒し上げるけどなあ。
397デフォルトの名無しさん:2014/03/23(日) 01:23:09.83 ID:pTyhCbBF
>>395さんありがとう
===でもうまくいかない
398デフォルトの名無しさん:2014/03/23(日) 01:33:19.21 ID:LwVxNWuC
質問者はこういう馬鹿
399デフォルトの名無しさん:2014/03/23(日) 02:23:34.79 ID:SSYwKPLD
>>397
ちゃんと if Numeric === i にした?
400デフォルトの名無しさん:2014/03/23(日) 02:29:55.51 ID:LwVxNWuC
質問者が馬鹿質問をする
回答者が馬鹿な回答をする
質問者の問題が解決しない
質問者が再質問
こんなかんじの繰り返し
401デフォルトの名無しさん:2014/03/23(日) 02:35:31.14 ID:XqmsbHiv
たのしいRuby 2013 第4版
そりゃ著者が、日本Rubyの会の設立者/代表だからね
2002年の初版から11年で、第4版まで出したんだし、
情熱はあるだろう

漏れはソフ開もちで、10ぐらい言語を知っているが、
関数型が苦手なせいか、3回読んでようやくマスターした

結局はライブラリが、調べやすいかどうかで、
日本人には、Rubyが有利
Ruby, Jenkinsをもっと極めて、日本独自の進化をとげて、
CoolJapanとして世界へ広めてほしい

今は、「はじめてのJavaScript」という本で、苦戦している
動的言語は型チェックがないから、
CoffeeScriptの方が良さそう
402デフォルトの名無しさん:2014/03/23(日) 02:38:59.95 ID:LwVxNWuC
なにこの自己アピール
気持ち悪すぎる
自分はこんなにたくさん本を読んで知識がありますよー
403デフォルトの名無しさん:2014/03/23(日) 02:41:57.88 ID:N5RuRaJB
>>400
で?
404デフォルトの名無しさん:2014/03/23(日) 02:47:24.66 ID:LwVxNWuC
ほらでた日本がつくったから日本人にあうとかぬかしてる奴
戦前の日本みたいに軍国主義ごっこしてろや、馬鹿エセ国粋主義者が
405デフォルトの名無しさん:2014/03/23(日) 02:51:44.33 ID:pTyhCbBF
>>397さんのとおりにしたら出来ました。
if i === Numericではだめなんですね
難しい
406デフォルトの名無しさん:2014/03/23(日) 02:54:39.85 ID:LwVxNWuC
この程度でスレをグダグダにする馬鹿ってなんなんだ
こんなのがRubyやってるんだぞ?>>401
407デフォルトの名無しさん:2014/03/23(日) 03:05:06.46 ID:pTyhCbBF
あ、わかった
caseと同じ用に書いていると思い込んでいたけど
違いました。気づかせて頂きありがとう御座います。
408デフォルトの名無しさん:2014/03/23(日) 03:06:43.14 ID:LwVxNWuC
お前はスレをグダグダにした
少なくとも謝罪しろ、そして二度とこのスレに来るな
409デフォルトの名無しさん:2014/03/23(日) 03:09:33.99 ID:pTyhCbBF
毎日きます
なぜなら初心者スレだから
お前のことは無視するwww
410デフォルトの名無しさん:2014/03/23(日) 03:18:38.19 ID:yrm7150G
連休初日はRubyスレに張り付いて荒らしをして過ごしました
連休二日目もRubyスレに張り付いて荒らしをして過ごしました
3連休は全てRubyスレに張り付いて荒らしをすることに費やしました
411デフォルトの名無しさん:2014/03/23(日) 03:48:17.03 ID:SSYwKPLD
>>409
あまりキチガイにレスしないほうがいいよ。
412デフォルトの名無しさん:2014/03/23(日) 04:19:16.64 ID:Xi/E3NRQ
ゆとり死ね
413デフォルトの名無しさん:2014/03/23(日) 06:54:19.68 ID:3+gMdqxK
>>401
えらい
頑張れ
414デフォルトの名無しさん:2014/03/23(日) 06:55:52.65 ID:N9+xBsr1
>>389
wearable deviceが出来た際に、最初に移植されるのは多分、cコンパイラ。
市場でイニシアチブを取るためには競合に先行する必要があるとすると、
全ての言語のなかで優れた選択肢がmrubyやluaの類。
今手元のマシンで動くcのコードは移植先のマシンでも動くと限らない。
誰かがc++をコンパイラを移植して、それからjvmモドキが移植されるのを待つと競合に遅れをとる。
Google v8は高品質かつ規格のために移植が遅れる。つまり、競合に遅れをとる。
ここで、mrubyという選択肢には厳密な規格や企業が持つライセンス問題から離れて他社に先行でき、
低レイヤの問題を抽象化できるというアドバンテージが生まれる。
市場に競合さえ居なければ、テトリスやインベーダーでもビルが建つぐらい稼げる。これがmrubyの魔力。
415デフォルトの名無しさん:2014/03/23(日) 07:40:22.15 ID:N9+xBsr1
mrubyよりもluaの何処が優れているか?
・国内企業からのバックアップ
・開発者同士のコネクション
・勝手に弄れる
誰にでも出来るweb開発だけでは替えなんて幾らでも居る。コネがあると当然ながら就職/転職活動が上手くいく。
luaを使えば、地球裏側の産業に貢献するかもしれないが国内産業は潤わない。
Rubyなら、国内産業から出版業、教育界まで、経済的な活性化が見込めるアベノミクス言語。地方自治体から感謝される。
lua自体は大学のプロジェクト。オタクが何もかも自由に遊べるものではないはず。
そして、言葉の壁ができる。日本語とポルトガル語。どちらも英語が第二言語習得者。
luaやjavascript,pythonよりも迅速に移植される可能性を持ち、一般的なオブジェクト指向言語として使えるのはRubyだけ。
416デフォルトの名無しさん:2014/03/23(日) 07:43:32.33 ID:l8Gj6RjR
名前が嫌い
ルビー使いが喜来

好きになってもらいたいなら
俺のチンチンしゃぷれ
417デフォルトの名無しさん:2014/03/23(日) 07:44:28.39 ID:N9+xBsr1
マンチキンな僕はPHPしか使わないけどね!
418デフォルトの名無しさん:2014/03/23(日) 07:46:35.43 ID:N9+xBsr1
>>416
いろんな人が、HaskellやLispの宣伝をするけれど、
実際に東大女とやれる可能性が高いのはRubyじゃないかな
419デフォルトの名無しさん:2014/03/23(日) 07:54:49.56 ID:QZth2AWp
>>418
ぎく!
どうして俺が
Lisp使いになると東大女とやれるよって
書いてるとわかったか?
きみ、すごいな。

じゃ書くか
rubyは早稲田女だとおもうよ
東大女とやるにはLispだね
420デフォルトの名無しさん:2014/03/23(日) 15:33:33.77 ID:N9+xBsr1
>>419
とても素敵な語感だから、ネットで流行ればいいなと思って使わせて貰っただけだよ
むしろ、すごいのは「東大女とやれる」なんて素敵なフレーズを思い付く貴方のほう
嗚呼ァ、貴方を宿した胎は何と恵まれているんだろうか
...。互いに口先だけでもギーク市場の頂点を目指して、市場と初心者たちを撹乱させようね!
421デフォルトの名無しさん:2014/03/23(日) 15:35:40.44 ID:Xi/E3NRQ
ゆとり死ね
422デフォルトの名無しさん:2014/03/23(日) 18:45:00.43 ID:yuPZb1TI
たのしいRubyは糞
オブジェクト指向をたいやきの型とたいやきで説明してお茶を濁そうとするのは全て駄本の証し
423デフォルトの名無しさん:2014/03/24(月) 01:00:43.29 ID:B2kC2TB8
Dateクラスを使おうとして
require 'data'ってやってもエラーがでます
どうしたら利用できるでしょうか?
424デフォルトの名無しさん:2014/03/24(月) 01:06:33.18 ID:PVohiAF8
>>423
おまえ自分のレス100回音読しろ
425デフォルトの名無しさん:2014/03/24(月) 01:07:50.66 ID:iN+OyuMJ
>>423
まず頭をかち割ります
中に寄生虫がいるので素手でもいいんで取り出します
あとは消毒液をかけて頭を元通りにすればOK
これをやれば1時間後くらいに頭がさえて問題が解決
426デフォルトの名無しさん:2014/03/24(月) 01:44:19.46 ID:YM9VgzDT
427デフォルトの名無しさん:2014/03/24(月) 04:48:19.29 ID:Tnk79sXs
自分で書いたコードとネットのサンプルが違いすぎて驚く。
ネットの方は、def def def ばっかりw

あれが本来のRubyなんでしょうね。
428デフォルトの名無しさん:2014/03/24(月) 06:41:10.13 ID:1KCVJWex
言うまでもなく、そうしたサンプルを書く奴は他言語で書いたところで、
{{{

(((
或いは
def foo
def bar
def baz
としか成らない
429デフォルトの名無しさん:2014/03/24(月) 07:00:27.11 ID:1KCVJWex
正直な所、僕にはココに湧いてる反Rubyistたちが理解できないんだ
自分で使う分にはPHP,jsが最良の選択肢だとしても、他人にはRubyを勧めた方が合理的だからね
430デフォルトの名無しさん:2014/03/24(月) 07:48:37.12 ID:30azwQW6
431デフォルトの名無しさん:2014/03/24(月) 08:07:09.61 ID:0UbPKOhm
>>426
きみ、精神病だね?
延々と作業してたのか?
倦むことを知らない精神病のコツコツさ
432デフォルトの名無しさん:2014/03/24(月) 08:07:52.63 ID:0UbPKOhm
>>430
調べた君は、お馬鹿というより
精神病だな
そうなんだろ?
433デフォルトの名無しさん:2014/03/24(月) 09:22:24.36 ID:Tnk79sXs
精神病の人間に精神病かどうか聞く愚かさ。
をRubyのコードで表現すると↓
434デフォルトの名無しさん:2014/03/24(月) 09:34:21.43 ID:d/Rvi+Ke
うんち
435デフォルトの名無しさん:2014/03/24(月) 10:20:23.38 ID:iN+OyuMJ
いいからC言語で書けよ
Rubyいらね
436デフォルトの名無しさん:2014/03/24(月) 10:43:27.04 ID:OJ3JLSil
PerlやPythonならまだしもCは対立軸にないでしょ
437デフォルトの名無しさん:2014/03/24(月) 10:52:30.61 ID:qe8lM9lC
自作クラスのインスタンスを標準クラスを使った表現に変換するメソッドの名前に規約みたいなのは無いの?
たとえば、なんかのインスタンスをjsonにシリアライズしようとしたら、
to_hやto_a以外にHashとArrayが混在したオブジェクトにならざるを得ないやつとかあるよね。
そんときにインスタンスの参照先をto_oしていけば、ぜんぶ良い感じに変換されて、
to_jsonしやすくなるっっていうか、そんなの。
438デフォルトの名無しさん:2014/03/24(月) 13:26:05.01 ID:iN+OyuMJ
キモRubyは消えろ
マジで消えろ
439デフォルトの名無しさん:2014/03/24(月) 16:03:05.03 ID:WPkFwPNy
診断名  : 躁病(そう病)

主な症状 :多弁で話が飛ぶ
       活動的だがまとまりがなく、落ち着きがない
       話は自己陶酔的で、大風呂敷で、攻撃的
あまり眠らない
440デフォルトの名無しさん:2014/03/24(月) 16:15:14.30 ID:iN+OyuMJ
Python>Ruby>Perl
441デフォルトの名無しさん:2014/03/24(月) 16:37:17.74 ID:B2kC2TB8
>>424
すまん、なにがおかしいの?
初心者だからわからんわ
442デフォルトの名無しさん:2014/03/24(月) 16:56:50.79 ID:KlVmlKLX
>>441
require 'data' じゃなくて require 'date'
http://docs.ruby-lang.org/ja/2.1.0/class/Date.html
443デフォルトの名無しさん:2014/03/24(月) 17:33:31.82 ID:Tnk79sXs
初心者が思うに、Dataなのにdataとか、末尾に;とか
そういう話かも
444デフォルトの名無しさん:2014/03/24(月) 18:34:42.15 ID:iN+OyuMJ
ほらみろRuby厨は初心車に駄目だしされる
445デフォルトの名無しさん:2014/03/24(月) 20:49:48.95 ID:25y3o3Jt
連休明けもRubyスレに張り付いて荒らしをして過ごしています
446デフォルトの名無しさん:2014/03/24(月) 22:42:39.18 ID:B2kC2TB8
>>442
ごめんなさい書き間違えました
もとの方はdateでしたが、それでもダメでした
447デフォルトの名無しさん:2014/03/24(月) 22:49:23.82 ID:KlVmlKLX
>>446
どんなふうにダメ?
やったこととエラーメッセージを貼って
448デフォルトの名無しさん:2014/03/24(月) 22:50:45.38 ID:iN+OyuMJ
>>447
に何を聴いても質問しか返ってこない
なぜなら>>447ではわからないから
449デフォルトの名無しさん:2014/03/24(月) 23:05:26.07 ID:Tnk79sXs
ダメでした。
450デフォルトの名無しさん:2014/03/25(火) 01:42:32.11 ID:bvFcvrs8
Rubyはゴミ、さっさと諦めろ、Pythonにでも移れ馬鹿
ほんとゴミ脳でRubyを語ることがよくできるな
451デフォルトの名無しさん:2014/03/25(火) 08:06:55.97 ID:MUsruA2v
オッパイより赤いルビーのほうがええんや
クリトリスを舌でチロチロやでぇ
452デフォルトの名無しさん:2014/03/25(火) 08:21:05.04 ID:zUh15pRT
utf-8なスクリプトでdbiモジュールを使ってsel serverに接続するとascii-8bitとかわけわからんコードが帰ってくるどころか
sql文自体をwindows-31jで投げないとクエリ自体がエラーになるという…思わず初心者憤死
たった一行付けるだけでutf-8でやり取りできるように出来るという情報を見つけるまでに丸三日

…日本発なのに英語できないとダメなのねorz
453デフォルトの名無しさん:2014/03/25(火) 08:49:00.37 ID:+foOGTJU
エンコーディング周りは言語関係なく必須知識だからなぁ
454デフォルトの名無しさん:2014/03/25(火) 10:43:26.21 ID:K3vJXUKK
海外の人が作ったライブラリは海外の人の言語で説明されてるから仕方ないね

Rubyは日本人がコア開発者だが、外国人の作った英語説明つきライブラリを日本語に訳す機能はないし
外国人の作った英語説明サイトを日本語に訳す機能もない
455デフォルトの名無しさん:2014/03/25(火) 12:07:08.90 ID:slP3N4Xw
mod_ruby の代わりは何を使ってます?
456デフォルトの名無しさん:2014/03/25(火) 12:50:35.26 ID:bvFcvrs8
ゴミRuby使ってるアホはネトウヨ
これ真理な
457デフォルトの名無しさん:2014/03/25(火) 22:51:02.36 ID:i+zmUVEy
ネトウヨなら日本語でプログラムを書くのでは(名推理)
458デフォルトの名無しさん:2014/03/26(水) 00:25:37.73 ID:GkcGuB2r
Javaは、名前に日本語つかえるよ
459デフォルトの名無しさん:2014/03/26(水) 01:38:19.33 ID:vUs5dc2p
mechanize の質問をしてもよいですか?
http://c.cocacola.co.jp/ に自動ログインするスクリプトを書いたのですが、サイトのリニューアルでログインできなくなりました。
以前は単純なログインフォームだったのですが、今は、agent.page.formsで該当のログインフォームが見つかりません。
ブラウザで見るとログインフォームはあるのですが、どのように調べればよいでしょうか?
460デフォルトの名無しさん:2014/03/26(水) 02:05:53.37 ID:ybtB2GSh
>>454
google翻訳を使うべし
英単語と日本語が、1対1で表示されるし、
訳が出たあとで、単語の対応を変えられる

それで片端から、公表すればよい

Eclipse MergeDoc もそう
単語のデータベースがあって、みんなで用語を統一している
461デフォルトの名無しさん:2014/03/26(水) 02:18:21.01 ID:XnxEs4mF
>>459
HTMLを自力で理解して読めないとMechanizeは使えない
>ブラウザで見るとログインフォームはあるのですが
なんて言ってる人には無理
462デフォルトの名無しさん:2014/03/26(水) 02:49:32.17 ID:ybtB2GSh
>>459
HTMLのソースコードを開いて、その中を、form で検索してみ
<form> </form>で囲まれた中が、フォーム関連

その中に、様々なフォームの部品
(コントロール、ウィジェット)がある

<input>は、入力欄
<textarea>は、複数行テキスト入力欄
<select>は、選択リスト
<button>は、ボタン

HTMLを解析するには、HTMLのタグの意味を知らないと
463デフォルトの名無しさん:2014/03/26(水) 05:17:25.21 ID:Pcq/Kh4O
じゃあ、else if を見ていこう。
464459:2014/03/26(水) 07:55:05.03 ID:vUs5dc2p
>>462
すみません。上手く説明できていませんでした。ブラウザでソースを確認すると<form></form>はあるのですが、Mechanizeでアクセスするとそのformがsearchできないのです。
で、今思ったのは、javascriptで生成されたフォームなのかな?ということで、Mechanize以外の方法を考えてみます。
465デフォルトの名無しさん:2014/03/26(水) 13:55:24.86 ID:2SW0uc9D
そもそも見てるファイルが違ったりしてな
466デフォルトの名無しさん:2014/03/26(水) 16:11:04.49 ID:Ti6QfqQB
動的に生成してるからだよ
467デフォルトの名無しさん:2014/03/26(水) 22:37:26.74 ID:N6ppR8Yn
質問させて下さい。rubyでCGIを作っています。
HTMLのテキストエリアに記載された文字をregist.cgiで表示させるサンプルを作ってみました。
半角英数字は正しく表示される事を確認しました。しかし全角文字が全く表示されません。
色々試しましたがまったく変わりません。上手く表示する方法を教えてください。
OS:windows 7 64bit
ruby:ruby 1.9.3p194 (2012-04-20) [i386-mingw32]
ブラウザ:FireFox 22.0
webサーバ:http://magazine.rubyist.net/?0011-CGIProgrammingForRubyBeginnersにあるrubima011-cgi.zipのserver.rbを使用

[index.html]
<!DOCTYPE html>
<html lang="ja">
<head><meta charset="Shift-JIS"><title>Sample System</title></head>
<body>
<form action="regist.cgi" method="get">
<textarea name="t" cols="20" rows="4">コードを記載して下さい</textarea><br>
<input type="submit" value="OK">
</form>
</body>
</html>

[rigist.cgi]
#!/usr/local/bin/ruby
print "Content-Type: text/html\n\n"
print "<html><head></head><body>"
require "cgi"
c = CGI.new
text = c["t"]
print text
print "<br>"
print "</body></html>"
468デフォルトの名無しさん:2014/03/26(水) 22:52:47.35 ID:Sd7Ek0FC
ブラウザからフォームデータがShift_JISで送られてきてエンコードエラーで落ちている、に一票
469デフォルトの名無しさん:2014/03/26(水) 22:56:58.83 ID:j+UsaIor
>>467
出力でcharset教えてないから、ブラウザがデフォルトのcharsetだと思って表示してんじゃないの。
470デフォルトの名無しさん:2014/03/26(水) 22:58:28.92 ID:qHAM3H0L
確認してきたので >>468 にもう一票

[2014-03-26 22:55:46] ERROR CGIHandler: /home/.../rubima011-cgi/regist.cgi:
/usr/lib/ruby/2.1.0/cgi/core.rb:676:in `block (2 levels) in initialize_query': Accept-Charset encoding error (CGI::InvalidEncoding)

ドンピシャの記事
http://tmtms.hatenablog.com/entry/20120902/ruby_encoding
471デフォルトの名無しさん:2014/03/26(水) 23:05:05.45 ID:nh+csio5
さんざんあちこちで言われてるけど、 regist はやめろ。
472デフォルトの名無しさん:2014/03/26(水) 23:13:27.28 ID:qHAM3H0L
>>471
なぜ?
473デフォルトの名無しさん:2014/03/27(木) 00:30:54.69 ID:6dxUJoHd
registなる英単語は存在しない。辞書で調べてみろ
474デフォルトの名無しさん:2014/03/27(木) 01:33:40.29 ID:kgS7s8CD
>>467
charset="Shift-JIS"
普通は、"UTF-8" じゃないの?
475デフォルトの名無しさん:2014/03/27(木) 05:04:24.68 ID:YolnPXC8
さんざんあちこちで言われてるけど、 CGIクラス はやめろ。
476バカ:2014/03/27(木) 07:58:42.50 ID:P78HiJTL
regist 【動詞】 登録する
register 【名詞】 登録器 レジ
477デフォルトの名無しさん:2014/03/27(木) 08:30:17.37 ID:9EZiObQu
>>473
なるほど。どうもありがとー
478デフォルトの名無しさん:2014/03/27(木) 20:51:57.34 ID:BPFmA3wn
>>468-475
回答ありがとうございます。
エンコードに問題有りとの事だったので以下の様に修正した所、正しく表示されるようになりました。

・HTMLファイルのcharsetを変更
<meta charset="Shit-JIS"> → <meta charset="UTF-8">

・HTMLファイル保存時に「エンコードの種類」を変更
Shift-JIS → Unicode(UTF-8)

# $KCODE = "SJIS"とかにしても何も変わらなかったので・・・。
479デフォルトの名無しさん:2014/03/27(木) 22:48:27.08 ID:1Iv5wAAz
Ruby1.9でKCODEは意味ないよ
480デフォルトの名無しさん:2014/03/28(金) 22:52:04.74 ID:JN3aOKjp
rubyでフォーム認証CGIを作るサンプルってありませんか?
色々調べたんですが、HTMLの機能として付いているベーシック認証はダサいので使いたくないですし
たいていはruby on railsばっかりなので困っています(レンタルサーバだとrailsは使えないんですよね・・)

もし何か良いサンプルがありましたら是非教えて下さい。
481デフォルトの名無しさん:2014/03/28(金) 23:31:36.36 ID:EdD5olOy
このご時世でCGIはさすがに情報が少ないだろうね

レンタルサーバでもherokuみたいなのもあるし、AWSやさくらを使う手もある
そういうのも選択肢に入れてみてはいかが?
482デフォルトの名無しさん:2014/03/28(金) 23:35:47.53 ID:0Llxlo7P
古めの本とか買うといいかもね
483デフォルトの名無しさん:2014/03/29(土) 01:01:48.56 ID:H58olU+6
>>480
HTTP認証がダサいかどうかは、ブラウザの問題では?
484デフォルトの名無しさん:2014/03/29(土) 01:43:17.54 ID:yxjl4cT5
本当に知りたいのは、CGIじゃなくて認証システムのほうだな
485デフォルトの名無しさん:2014/03/29(土) 02:21:07.37 ID:UFvyasfI
CGIだと情報が少ないよ、ってことだね
486デフォルトの名無しさん:2014/03/29(土) 05:21:40.84 ID:oh5tVCzV
ジャアアアアアアアアアアアアアア。。。。。。。。。。。。。。。。。。。wwwwwwwwwwwwwwww
487デフォルトの名無しさん:2014/03/29(土) 10:07:19.57 ID:KQZTo8Ge
cgi.rb
488デフォルトの名無しさん:2014/03/30(日) 13:14:08.87 ID:Tfqgik4v
右翼団体って、さくら鯖に、なでしこでCGIを書くんだろ
489デフォルトの名無しさん:2014/03/30(日) 19:20:19.83 ID:ctBuohCT
>>488
やつらはダメリカの利益団体だから、Microsoft なサーバーに ASP の一択だろう、 LAMP すら拒絶するのでは?
ホスティング業者なぞどこでもいい
490デフォルトの名無しさん:2014/03/30(日) 23:56:17.50 ID:vrktFi0k
右翼なのに親米というのは辞書と辻褄が合わねえな
そういう時は、混同のないようウヨという言葉を使いなさい
491デフォルトの名無しさん:2014/03/31(月) 00:11:09.54 ID:YuwcCGee
今は石原シン○ロウみたいな反米右翼が絶滅
いても街宣朝鮮右翼しかいない

戦前の日本に戻ってくれや
492デフォルトの名無しさん:2014/03/31(月) 02:39:18.54 ID:Gc3u5wUc
>>490
おいおい、お前、右翼を勘違いしているぞ

右翼が愛国者なら原爆投下による非武装市民の無差別殺戮を非難するはずだが
そんな右翼をみたことあるのか?
軍歌を放唱し国を愛でる、といいながら顔はダメリカを向いていることに今まで気づいていないのか、恥ずかしいやつだ

>>491
チンタロウは文人あがりなんでちょっと特殊だ
493デフォルトの名無しさん:2014/03/31(月) 07:21:01.72 ID:8z/Wyvf8
よそでやれ
スレ違いもはなはだしい
494デフォルトの名無しさん:2014/03/31(月) 07:40:31.67 ID:snXHFGZ8
彼らは韓国産のプログラミング言語がないので、
日本産のプログラミング言語がねたましいと言っているんだ
495デフォルトの名無しさん:2014/03/31(月) 11:39:37.35 ID:i1qC9/3k
ν速+に帰れカスウヨ
496デフォルトの名無しさん:2014/03/31(月) 15:01:46.40 ID:AilFR+xR
すごくよくわかる流れで笑
497デフォルトの名無しさん:2014/04/04(金) 06:12:52.67 ID:UIgW7/7P
ひろゆきがミスって2chもアメリカ人に乗っ取られたし
あんまり空気伝わってこないだけでかなりあっちは既に反日化してるだろ

4月6日に新2ch誕生するから反米右翼マは移動しろや
498デフォルトの名無しさん:2014/04/04(金) 06:18:13.91 ID:UIgW7/7P
まぁ専門的板は、政治に対して中立だから良いものの
政治やニュースなんてほんと終了だからな

日本人以外の管理するサイトでネット世論の操作なんて、どんな事になっていくか
今後は謎のアメポチ大量発生が予想される
499デフォルトの名無しさん:2014/04/04(金) 12:02:20.00 ID:eePHkA+i
反米ウヨでも親米ウヨでも自由だが、ν即でやれ

アフィカス天国を放置したひろゆきを支持する2ちゃんねらーなんていねーよ
500デフォルトの名無しさん:2014/04/04(金) 18:33:32.71 ID:do491lEW
メタプログラミングRubyを読みました
最後の章でRailsのコードについての解説がありましたが、ここまで動的で、メタなプログラミングは「やり過ぎ」なのではないかという印象を受けました
こんなにわかりづらくメタにプログラミングをするくらいなら重複表現をしてでも愚直に書いていったほうが、保守性も可読性も高まるのではないかと感じます
このように考えてしまうのは、私がコードをまともに書いたことがない初心者だからなのでしょうか?それとも自分のように考える人も一定数いるのでしょうか
501デフォルトの名無しさん:2014/04/04(金) 21:43:01.24 ID:EPWSnKIo
>>500
Railsのスクリプトは素のRubyとは比べ物にならないくらい普及してるから問題なし
要は共通の理解があるかどうかだ
お前がチーム内で勝手に「ぼくのかんがえたさいきょうのRuby」で書いたら
そりゃレビューでボコボコに叩かれてクビが飛ぶだろうね
502デフォルトの名無しさん:2014/04/05(土) 23:19:19.43 ID:j2Ymk93L
ocraを使いこんにちは世界をcmdに表示するexeを作成したのですが
cmd上で一瞬こんにちは世界が表示されすぐにcmdが閉じてしまいます
cmdを閉じないような設定はできないでしょうか?
503デフォルトの名無しさん:2014/04/06(日) 00:45:30.08 ID:jGn/ohiM
特定のhtmlのテンプレートに一部(idなどで特定可能)にデータを埋め込みたいんですが
その場合、どういうライブラリ使うのが王道なのでしょうか

hpricotは開発終了したとのことなのでnokogiri?
とはいえ、これはスクレイピングのライブラリっぽくてhtml生成とは違うっぽいのですが

できれば標準ライブラリにあれば助かります
504デフォルトの名無しさん:2014/04/06(日) 01:33:51.17 ID:lcQBK2Mz
>>502
まずcmd.exeを起動して、そこでocraで作ったexeを実行すればいいのでは

explorerから実行したいのなら、「こんにちは世界」を表示したあとに
1行入力するなど待ち処理を入れてみては
505503:2014/04/06(日) 02:58:52.24 ID:jGn/ohiM
解決しました
506デフォルトの名無しさん:2014/04/06(日) 09:39:57.23 ID:uTfGcida
受け取った引数を別のメソッドに全部そのまま渡すのってどうしたらいいの?
JavaScriptだとargumentsで渡せるんだけど。
507デフォルトの名無しさん:2014/04/06(日) 09:58:01.98 ID:Ben6iKqN
508デフォルトの名無しさん:2014/04/06(日) 10:45:31.03 ID:uTfGcida
>>507
なんかちがうくね?
509デフォルトの名無しさん:2014/04/06(日) 10:52:46.32 ID:AUPUS+0I
>>508
def hoge *args
fuga * args
end
510デフォルトの名無しさん:2014/04/06(日) 10:54:46.17 ID:uTfGcida
>>509
そうせずにやる方法なんだけど。
えと、JavaScriptのargumentsって知ってる?
511デフォルトの名無しさん:2014/04/06(日) 11:21:16.16 ID:CO3q3128
わざわざ分かりにくい方法でやりたがる意味がわからない
JavaScriptでもapply使わなきゃいけないだろ
512デフォルトの名無しさん:2014/04/06(日) 11:26:42.20 ID:Pke5Ijp8
× 分かりにくい
○ カッコイイ
513デフォルトの名無しさん:2014/04/06(日) 11:34:07.29 ID:AUPUS+0I
hoge *self.method(__callee__).reject{|a|a.first==:block}.map(&:last).map{|s|eval(s.to_s)}
514デフォルトの名無しさん:2014/04/06(日) 11:54:39.37 ID:uTfGcida
んと

def foo(a:1, b:2)
 bar(arguments)
end

みたいにしいてfooに与えられた引数をそのままbarに投げ込みたいんだけど
515デフォルトの名無しさん:2014/04/06(日) 11:58:34.99 ID:AUPUS+0I
>>514
def hoge a, b, c
fuga(*self.method(__callee__).reject{|a|a.first==:block}.map(&:last).map{|s|eval(s.to_s)})
end
516デフォルトの名無しさん:2014/04/06(日) 12:27:36.56 ID:uTfGcida
>>515
(#^ω^)ピキピキ
517デフォルトの名無しさん:2014/04/06(日) 12:40:15.03 ID:AUPUS+0I
>>516
おっとすまない、aがカブってたな。
518デフォルトの名無しさん:2014/04/07(月) 20:14:47.93 ID:0DYJf23T
rubyの基本的なものは理解したけど、この先どうすればいいかわからなくなった。railsとかよくわからないし、アプリとかつくるとかするにはどのサイトとか見ればいい?
519デフォルトの名無しさん:2014/04/07(月) 20:33:11.26 ID:KFUO0v2u
>>518
やるべきことがないなら、何もしなくていいよ。
520デフォルトの名無しさん:2014/04/07(月) 20:34:00.34 ID:cPHU7Y9F
Ruby/GTK
521デフォルトの名無しさん:2014/04/07(月) 20:37:18.44 ID:NmZfms6a
「rubyの基本的なものは理解したけど」

むせかえるような知ったか臭。
522デフォルトの名無しさん:2014/04/07(月) 20:47:28.66 ID:0DYJf23T
叩かれるとは思わんかったwwwwwromに徹しとくwwwwww
523デフォルトの名無しさん:2014/04/07(月) 20:48:31.51 ID:lQVPGrC1
言語仕様だけ勉強したという意味だと思う。

だとすればフレームワークのチュートリアルでもやればいいのにと思った。
524デフォルトの名無しさん:2014/04/07(月) 20:50:40.72 ID:0DYJf23T
>>523
やさしいのな
ありがとう
調べてみる


言葉足らずな俺も悪いがなwwww
525デフォルトの名無しさん:2014/04/07(月) 20:56:41.61 ID:NmZfms6a
526デフォルトの名無しさん:2014/04/07(月) 21:33:06.86 ID:rs5mnGWM
Duck Typing の考え方は分かる。
しかし、何に向いていて、何に向かないものなのかイマイチ判らない。

教えてくださいエロい人。
527デフォルトの名無しさん:2014/04/07(月) 22:29:54.45 ID:si1QDK3r
>>526
無理して使わなくてもよい
Rubyにおける日常なダックタイピングは、せいぜい
「引数オブジェクトのクラスチェックはせず、エラーが出るに任せる」程度

もちろんそれだと致命的な場合は引数オブジェクトのクラスのチェックをする
もちろんそのときはダックタイピングの恩恵は受けてはいないことになる

その程度
528デフォルトの名無しさん:2014/04/07(月) 22:31:29.65 ID:aChPVlpJ
事前にリンクをすることなくクラスシステムを実装する手段がダックタイピングということ
ダックタイピングが目的ではないよ
ダックタイピングを活用したコードは一般的には糞コードと呼ばれる
529デフォルトの名無しさん:2014/04/07(月) 23:34:12.45 ID:rs5mnGWM
>>527-528
参考になった。
やっぱなるべく使わない方がいいんだね。

借金職人の娘を質に取った越後屋さんが、
「なぁ、お前、toString くらいは持っとるんやろ?なぁ?それくらい持っとらんとあかんわなぁ?」(ゲス顔)
「toString 発動したるわー!」
と迫って実際発動する様子が思い浮かんだ。

イメージは合ってると思う。
530デフォルトの名無しさん:2014/04/07(月) 23:36:52.23 ID:2mFu56Lz
お前がjavaあたりの使用者ということはわかった
531デフォルトの名無しさん:2014/04/07(月) 23:46:26.41 ID:rs5mnGWM
>>530
Java嫌いでちょっとムカッと来たから言うけど、ごめん、全然違う。
文字列化は大抵の言語が持ってるから、適当に書いただけ。
532デフォルトの名無しさん:2014/04/07(月) 23:56:40.04 ID:/ZasYlq5
C#とかD言語にもObject.toStringはあるもんね
533デフォルトの名無しさん:2014/04/08(火) 00:02:32.77 ID:earNJzDQ
array = [1,2,3,4,5,6,7,8,9]

array. ???(4) #=> [ [1,2,3,4], [5,6,7,8], [9] ]



こんなメソッドありませんでしたっけ?
534デフォルトの名無しさん:2014/04/08(火) 00:05:03.48 ID:rmissEKo
[*1..9].each_slice(4).to_a # => [[1, 2, 3, 4], [5, 6, 7, 8], [9]]
535デフォルトの名無しさん:2014/04/08(火) 00:09:26.62 ID:rmissEKo
Range使うなら配列化は最後だけでいいな……
536533:2014/04/08(火) 00:20:53.76 ID:earNJzDQ
ありがとうございました。
多分railsのin_group_ofを想起していたのかもしれません
537デフォルトの名無しさん:2014/04/08(火) 11:04:29.17 ID:xXmrjQau
each_sliceを使わない場合、

a=[*1..9]
b=[]
b << a.shift(4) while a[0] #あるいは until a.empty? 
p b
で解決できるところまではわかりましたが

while a . method? という形ではできませんか?
a.present? や a.exist? は無理でした
538デフォルトの名無しさん:2014/04/08(火) 11:06:20.20 ID:xXmrjQau
↑ 
メソッドに ? は付いてなくてもOKです
539デフォルトの名無しさん:2014/04/08(火) 11:10:14.50 ID:iDOzvnzB
>each_sliceを使わない場合
現状、そんなことがあるとは思えないんだが
内部イテレータ使えないコレクションとかだろうか
540デフォルトの名無しさん:2014/04/08(火) 11:30:04.57 ID:xXmrjQau
each_sliceの存在自体(あるかどうかも)知らなかった場合にってことです。
普通は(基本に忠実にするなら)どうやるのかな?と。

一通りArrayのメソッド調べた方がいいという意見があるのもごもっともですが。。
541デフォルトの名無しさん:2014/04/08(火) 19:39:27.13 ID:MyudluU2
unicornとpassenserならどっちがrubyに向いてますか?
542デフォルトの名無しさん:2014/04/08(火) 19:48:10.04 ID:UFpotgBw
どっちもOK
543デフォルトの名無しさん:2014/04/08(火) 19:49:06.78 ID:9wIzdaaz
>>540
つ while a.first
544デフォルトの名無しさん:2014/04/08(火) 20:57:37.16 ID:F72OSz/O
a.first でもいいだろうけど
要素にfalseやnilが入っていると誤動作するので

素直に
while !a.empty?
の方がいいような
545デフォルトの名無しさん:2014/04/08(火) 21:02:03.14 ID:9wIzdaaz
while a[0]がアリなら良いのかと思った
546デフォルトの名無しさん:2014/04/08(火) 22:53:39.51 ID:wRN5ly4t
BATファイルで実行

pauseって最期の行に入れておけばいいよw
547デフォルトの名無しさん:2014/04/09(水) 00:39:04.55 ID:xEgtzZvG
ruby on railsの環境構築面倒くさすぎる
どうにかならんのか?
548デフォルトの名無しさん:2014/04/09(水) 00:44:55.22 ID:YKddGIT0
railsは簡単すぎるぐらいなんだけどwwwwwwwwwwwwwwwwwwwwwwwwwww
おまえ向いてねえわwwwwwwwwwwwwwwww
549デフォルトの名無しさん:2014/04/09(水) 00:46:30.65 ID:BYGGYeeL
git clone
bundle install
rake db:migrate
じゃだめなんだろうか
550デフォルトの名無しさん:2014/04/09(水) 01:00:48.66 ID:xEgtzZvG
windowsな
551デフォルトの名無しさん:2014/04/09(水) 01:01:09.26 ID:BYGGYeeL
>>550
windowsでも同じことじゃん
552デフォルトの名無しさん:2014/04/09(水) 01:10:27.88 ID:xEgtzZvG
いやdevkitとかgemとか
エラーでてめんどかった
553デフォルトの名無しさん:2014/04/09(水) 01:11:42.94 ID:BYGGYeeL
っつーかwindowsでなんでやんだろ
554デフォルトの名無しさん:2014/04/09(水) 02:05:25.16 ID:OJT2GfjE
Windows向けには、
railsの入ったテキトーなvagrant boxでも作って配れば万事解決しそうな気がする。
555デフォルトの名無しさん:2014/04/09(水) 08:21:07.47 ID:obmDYRnv
つRailsInstaller
556デフォルトの名無しさん:2014/04/09(水) 09:31:40.49 ID:k/5jkwC/
>>540
今時のまともな言語ならeach_sliceくらいある
ないのに使わざるを得ないのがC言語

古いC言語のソース漁ってればいくらでもそういう無駄なアルゴリズム出てくるよ
557デフォルトの名無しさん:2014/04/09(水) 18:13:22.90 ID:Cj9cJjUi
無くても困らないのがC言語
558デフォルトの名無しさん:2014/04/09(水) 22:23:32.13 ID:Il0l8m2A
gemが増えるとわけがわからなくなるのでプロジェクト単位でわけたいのです。
markdownでメモができるのでgollumが使いたいのですが
bundle initしてGemlocalにgem "gollum"を追記したのですが、ここでbundle installでOKですか?
559デフォルトの名無しさん:2014/04/09(水) 22:47:54.10 ID:yWBpF3Rt
たのしいの次は何を読むと良いのだろ?
560558:2014/04/09(水) 22:51:21.40 ID:Il0l8m2A
gemをローカルにインストールするところまではできたんですが
インストールしたコマンドが使えません
どうやらグローバルのgemをみにいっているようです
ローカルにインストールしたgemはどうつかうのでしょうか?
561558:2014/04/09(水) 22:52:41.36 ID:Il0l8m2A
bundle execでできました
562デフォルトの名無しさん:2014/04/10(木) 00:37:30.37 ID:iELl6sqR
gollumに指定したテンプレートを読みこませる方法を教えてください
gollumをインストールしたところのtemplatesディレクトリを汚したくないのです
563デフォルトの名無しさん:2014/04/10(木) 07:50:33.02 ID:+jOFl0o7
>>559
パーフェクトRubyで良いと思う
564デフォルトの名無しさん:2014/04/10(木) 20:40:36.99 ID:s0fbxtsy
CSVを上から下にみていって

A列とB列があり
A列とB列の組み合わせがユニークであればB列を配列にいれていきたいんですが・・・

A列とB列でユニークってどうやるんでしょうか

uniq do |x| { x.A + x.B } ではうまくいきませんでした
565デフォルトの名無しさん:2014/04/10(木) 22:06:53.38 ID:dRecdSBU
Array#group_by を使えばいいかな
566デフォルトの名無しさん:2014/04/10(木) 23:40:36.36 ID:PtHPMyvc
タイムゾーンをAsia/Tokyoみたいに地域名で日時を取得できる夏時間対応のライブラリを教えてください
567デフォルトの名無しさん:2014/04/11(金) 07:08:17.55 ID:pa/L3E3d
tzinfo
568デフォルトの名無しさん:2014/04/11(金) 07:24:45.49 ID:vQUcF6zB
>>565
group_byではダメでした・・・

p [
{name:"Tanaka", city:"X"},
{name:"Tanaka", city:"Y"},
{name:"Tanaka", city:"Y"},
{name:"Suzuki", city:"X"},
{name:"Sato", city:"Z"}
].group_by {|item| item[:name] + item[:city] }


期待している戻り値は↓こんな感じなんです・・・
[
{name:"Tanaka", city:"X"},
{name:"Tanaka", city:"Y"},
{name:"Suzuki", city:"X"},
{name:"Sato", city:"Z"}
]



って普通にuniqでブロックなしでできるようですね・・・
569デフォルトの名無しさん:2014/04/11(金) 08:22:18.07 ID:FCtgIT4m
>>568
irb(main):001:0> require 'pp'
=> true
irb(main):002:0> pp [
irb(main):003:1* {name:"Tanaka", city:"X"},
irb(main):004:1* {name:"Tanaka", city:"Y"},
irb(main):005:1* {name:"Tanaka", city:"Y"},
irb(main):006:1* {name:"Suzuki", city:"X"},
irb(main):007:1* {name:"Sato", city:"Z"}
irb(main):008:1> ].each_with_object({}){|l,h|h[l]=h.size unless h[l]}.sort{|a,b|a[1]<=>b[1]}.map{|x|x[0]}
[{:name=>"Tanaka", :city=>"X"},
{:name=>"Tanaka", :city=>"Y"},
{:name=>"Suzuki", :city=>"X"},
{:name=>"Sato", :city=>"Z"}]
=> [{:name=>"Tanaka", :city=>"X"}, {:name=>"Tanaka", :city=>"Y"}, {:name=>"Suzuki", :city=>"X"}, {:name=>"Sato", :city=>"Z"}]
570デフォルトの名無しさん:2014/04/11(金) 08:25:04.85 ID:FCtgIT4m
ってuniqでいけるのか、はずいw
571デフォルトの名無しさん:2014/04/11(金) 11:07:08.18 ID:057GiJd2
Rubyでも明示的に関数の中でreturnを書くべきだって記事があったんですが誰か知りませんか?
たしか海外だったかメーリングリストだったか忘れましたが英語で読んだ気がしました
572デフォルトの名無しさん:2014/04/11(金) 11:29:51.90 ID:rxw795VW
Rubyでは関数(function)なんて名前で呼ばないので勘違いだと思う

前にもあったけど、Rubyにおけるreturnは「メソッド途中で処理を打ち切って脱出する」効果を期待されている
そうじゃないふつーの処理終端にreturnがあっても戸惑うだけなので、ふつーは書かないほうが好ましい
573デフォルトの名無しさん:2014/04/11(金) 12:09:22.34 ID:2p2lfK5U
英語じゃないけどこれかなぁ
http://shugo.net/ruby-codeconv/codeconv.html
574デフォルトの名無しさん:2014/04/11(金) 12:10:13.60 ID:2p2lfK5U
このコーディング規約、「そうか?」って思う部分が多いから俺は半分ぐらい従ってないw
575デフォルトの名無しさん:2014/04/11(金) 12:12:22.62 ID:p73oIqgQ
それ単にシュウゴさんの規約やんw
576デフォルトの名無しさん:2014/04/11(金) 12:19:58.33 ID:2p2lfK5U
ぶっちゃけ誰か知らないけど、るびまの記事読んでたときにどっかで見つけた
577デフォルトの名無しさん:2014/04/14(月) 20:39:07.82 ID:iR5K0mS2
Rubyのkernel moduleのソースコードはどこにあるのでしょうか
GitHubのリポジトリ見てもそのままのファイル名じゃ見つからないのですが
578デフォルトの名無しさん:2014/04/14(月) 23:23:05.10 ID:LkM4dasY
単一のファイルに定義されているようでは無いようですね
様々なクラスのファイルでそのクラスに関連する
Kernel module メソッドが定義されているようです
io.cでは入出力関連のメソッド等が
rb_define_global_function("puts", rb_f_puts, -1);
のように定義されてます
579デフォルトの名無しさん:2014/04/14(月) 23:56:24.88 ID:kWDr4VVU
rubyというかrspecの質問です

func(hash) def
func.sort_by{ |key| key[;hoge]}
end

のような関数があったときに、それのspecはどう書いたらいいのでしょうか

sort_byが無いといわれ
@hash.stub(:sort_by)を作ってexpectしてもねぇよといわれ
助けてください
580デフォルトの名無しさん:2014/04/15(火) 00:09:24.79 ID:SLO7aDPh
>>579
> func.sort_by{ |key| key[;hoge]}
func.sort_byはhash.sort_byかと思ったが key[;hoge]ってなんやねん。
さっぱりわからん。
581デフォルトの名無しさん:2014/04/15(火) 00:28:01.21 ID:7Uo+TE2s
このページのHello Worldを表示させた後
http://gihyo.jp/dev/serial/01/ruby/0007

[2014-04-15 00:21:46] INFO WEBrick::HTTPServer#start: pid=4124 port=4567
と表示されたまま、$マークが出ないんですけどターミナル窓を閉じないで戻すにはどうしたらいいでしょうか?
(ターミナル窓を閉じてまた開いたら初期状態で$マーク表示されます。)
582デフォルトの名無しさん:2014/04/15(火) 00:34:28.10 ID:SLO7aDPh
>>581
WEBrickは何も設定しなければSIGINTじゃ死なないから、
Ctrl+Zでsuspendしてkill %1すれば?bashだよね?
583デフォルトの名無しさん:2014/04/15(火) 00:37:28.68 ID:SLO7aDPh
あっとごめん、SIGTERMも無視されちゃうっけか。
kill -KILL %1で。
584デフォルトの名無しさん:2014/04/15(火) 00:51:15.84 ID:7Uo+TE2s
>>583
レスありがとうございます。
「kill -KILL %1」と入力したのですが反応なしです。

ちなみに矢印キーを上下右左と入力すると
^[[A^[[B^[[C^[[D
のような文字が表示されます。
意味はないかもしれないですけど一応。

bashですね。
mac osx 10.8.5のターミナルです。
585デフォルトの名無しさん:2014/04/15(火) 00:57:39.33 ID:SLO7aDPh
>>584
Ctrl-Zして、$が出てからやった?
586デフォルトの名無しさん:2014/04/15(火) 00:58:21.67 ID:SLO7aDPh
>>584
Macだともしかすると勘違いしてるかもしれないけど、Cmd-Zじゃだめだよ
587デフォルトの名無しさん:2014/04/15(火) 01:07:16.17 ID:7Uo+TE2s
>>586
Ctrl−Z→kill -KILL %1
おお〜出来ました!!
ありがとうございました(ツ)
588デフォルトの名無しさん:2014/04/15(火) 01:13:51.49 ID:uo5u1Anq
>>578
thx
589デフォルトの名無しさん:2014/04/15(火) 02:07:49.26 ID:+Ewz/KaG
そろそろ標準コーディング規約のディスカッションをしてほしいものだ
まつもとさんやってくれよ
個人のガラパゴス規約なんて使い物にならねえんだよ
590デフォルトの名無しさん:2014/04/15(火) 03:15:57.48 ID:NBmnLC74
Rubyにコーディング規約とか要らぬ
最高に中二病なコードを書けば良いのだYO
591デフォルトの名無しさん:2014/04/17(木) 17:29:05.96 ID:shok1Heb
バージョンが大台に乗ったのはいいが、2.0以降に対応したまともなデバッガって無いよね。
592デフォルトの名無しさん:2014/04/17(木) 18:31:08.04 ID:240PSJ19
配列の入れ子数(Max階層)調べる定石ってどんなのありますか?

a = [1 , 2 , [3 , [4 , 5] ,6] , 7]
だとMax3階層、みたいな
593デフォルトの名無しさん:2014/04/17(木) 19:00:23.01 ID:MnJ2M0/J
用途不明で需要もなさそうだしさすがに無いんじゃないの?
pretty_printでざっくりといけるだろうけど
速度が必要なら自前で書くのが無難かな
数行レベルだろうし
594デフォルトの名無しさん:2014/04/17(木) 19:06:30.93 ID:dT2SU6Q4
地味にめんどくさそうだな・・・
595デフォルトの名無しさん:2014/04/17(木) 19:08:34.31 ID:7RVMQXR0
めちゃくちゃ一般的には必要ない処理だと思う
なにするのに使うん?
596デフォルトの名無しさん:2014/04/17(木) 19:18:18.23 ID:dT2SU6Q4
ちょっと待って、これどう?w

ary.to_s.gsub(/[^¥[¥]]/, "").scan(/¥[+/).sort.last.size
597デフォルトの名無しさん:2014/04/17(木) 19:20:23.28 ID:dT2SU6Q4
いやすまんぜんぜんだめだったわ
もうちょい待って
598592:2014/04/17(木) 19:24:14.52 ID:240PSJ19
レスありがとうございます。
ただのRubyのお勉強中で
これってどうやるんだろう?と思った次第なだけで
用途とかは全然ないです
599デフォルトの名無しさん:2014/04/17(木) 19:30:47.08 ID:dT2SU6Q4
イケてないコードだけど出来たよ

def max_hierarchy(array)

max = 0
now = 0

array.to_s.gsub(/[^¥[¥]]/, "").each_char do |bracket|
now += bracket == '[' ? 1 : -1
max = now if max < now
end

max
end

ary = [[[1]],[2], [[[2]],2]]

puts max_hierarchy(ary)
600デフォルトの名無しさん:2014/04/17(木) 19:30:56.97 ID:1EFla3P0
空の配列はカウントするの?
リンクは忍者修行中とかで貼れなかった
ideone.com/2AW1E6
601デフォルトの名無しさん:2014/04/17(木) 19:32:53.52 ID:dT2SU6Q4
普通にやるとやっぱり再帰になるよね
頭こんがらがるからニガテ
602デフォルトの名無しさん:2014/04/17(木) 19:36:29.64 ID:nVSRpDlc
>>592
ほい。

a = [1 , 2 , [3 , [4 , 5] ,6] , 7]
level = 0
level += 1 until a.flatten.size == a.flatten(level).size
p level

ただし、max2階層っていう扱いになるのでお好きに+1してね。
603デフォルトの名無しさん:2014/04/17(木) 19:38:05.98 ID:dT2SU6Q4
flattenって引数取れたのか・・・!
まだまだ初心者だな俺
でしゃばんのやーめよ
604デフォルトの名無しさん:2014/04/17(木) 19:46:05.75 ID:8CBaZq3z
>>591
byebug
605602:2014/04/17(木) 19:47:55.23 ID:TFtk1ZRN
あ、いちおう断っておくけど>>602が定石っていうわけでは無いです。
参考までに、ってことでよろしく。
606デフォルトの名無しさん:2014/04/17(木) 19:48:50.15 ID:240PSJ19
おーすごい
色々な方法あるんですね
どれも額縁に飾っておきます。ありがとうございましたー
607デフォルトの名無しさん:2014/04/17(木) 22:02:50.25 ID:8L54DV8h
みんなはRubyの開発は何でやってる?
やっぱりEclipse+RDT?RDEとか使ってる人はいる?
608デフォルトの名無しさん:2014/04/17(木) 23:15:23.51 ID:YGl2/sA9
unicorn単発で127.0.0.1からのアクセスのみページを見せたいんですが
それ以外はどうやって拒否するんでしょうか?
apache||nginxがないとアクセス制限はできないですかね?
609デフォルトの名無しさん:2014/04/17(木) 23:37:45.98 ID:qltpsmYg
rails 4.1.0をwindows8.1 64bit にインストールしていざ rails sコマンドを打ち込むと、tzinfoというgemが読み込めないみたいなエラーがでます。
610デフォルトの名無しさん:2014/04/18(金) 00:02:28.66 ID:EwFywfvr
漏れは、Win8だけど、Win8でRubyできるの?
出来たら報告して
611デフォルトの名無しさん:2014/04/18(金) 00:05:09.28 ID:5ZSBe340
>>607
Rubyはテキストエディタだろ
612デフォルトの名無しさん:2014/04/18(金) 00:43:07.67 ID:ruxS2fPz
>>604
ありがとう。
言葉足らずでごめん。
CUIじゃなくてeclipseで使いたいんだ。
だからデバッグエンジンが欲しいんです。
613デフォルトの名無しさん:2014/04/18(金) 01:34:40.43 ID:/cnIE1rp
pやpp、putsで頑張れ
614デフォルトの名無しさん:2014/04/18(金) 01:53:38.71 ID:G95hrNw/
>>607
vim
615デフォルトの名無しさん:2014/04/18(金) 07:05:28.88 ID:LRXTJMOG
pry という手もある
616デフォルトの名無しさん:2014/04/18(金) 21:02:29.83 ID:tsD9/Dp0
MacからLinuxにフォルダとファイルを移動したいです。
LinuxはUTF-8でファイル名の長さが255byteまでの為、UTF-8で数えた時に
255byte以上のファイル名フォルダ名をrubyプログラムで検索し、フルパスを
リストに出力したいです。

Macで3byte扱う文字もある為、255byte/3byte=85文字以上のMacファイル名と
フォルダ名を出力したいです。byteでも文字数カウントでもどちらでも構いません。

いつもはシェル上のfindを使っているためrubyのfind術がわかりません。
データは1T以上あるので、実行速度は遅くても全く構いません。

ご教授よろしくお願い致します。

MacOSX 10.6.8
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin10.0]
617デフォルトの名無しさん:2014/04/18(金) 22:00:04.42 ID:G95hrNw/
>>616
Dir.glob('/**/*')
618デフォルトの名無しさん:2014/04/18(金) 22:10:53.96 ID:En85Wqq5
>>636
軽く調べたところ
UTF-8-MACかUTF-8かの違いぐらいだから
シェルに慣れてるならシェルでやればいいんじゃない?
find,awk,iconv,wc,mv あたりの基本コマンドでいける。
Rubyでやるなら、glob,encode,bytes.to_a,sizeぐらいかな…
ちなみに自分は
$ ? | ? | ?
とかで確認して
$ ? | ? | ? | sh
とする似非dryrunが好きです
619デフォルトの名無しさん:2014/04/19(土) 00:04:51.83 ID:pXx4aqQF
>>616
Windowsしか持ってないけどこんなのか?
Dir.glob('/**/*') do |path|
basename = File.basename(path)
puts path if basename.encode('UTF-8').bytesize > 255
end
620デフォルトの名無しさん:2014/04/19(土) 00:08:50.63 ID:A1Y73b0i
特段根拠があるわけではないが、自作しないほうがいいような気がちらっとする
621デフォルトの名無しさん:2014/04/19(土) 01:04:45.98 ID:e0JtnAk1
そんなんautomatorでよくね?
622デフォルトの名無しさん:2014/04/19(土) 14:06:37.31 ID:9b14v82/
>>616
convmv
というperlスクリプトを使うのが簡単らしい
$ convmv -t utf-8 --nfc -f utf-8 --nfd -r .
確認して
$ convmv -t utf-8 --nfc -f utf-8 --nfd -r . --notest

ファイル名の最大はどちらも255byteで同じだし
NFD->NFCの変換でサイズがでかくなることはない(と思う)ので
サイズチェックは不要かと
623デフォルトの名無しさん:2014/04/19(土) 14:24:43.28 ID:/Zpiftkq
617からの皆様、コメントありがとうございます。
Dir.glob('/**/*')は知りませんでした。早速勉強してみます。

>>618さん
ありがとうございます。
linuxにファイルパスと、ファイル名それぞれに1023byte、255byteの
制限があるので文字数カウントは避け、バイト数で組むことに変えようと思います。

>>619さん
ありがとうございます。

>>621さん
automatorは全く学んでないのですが、619さんのコードよりも簡単に
なるのでしょうか?
automatorは汎用性がないと勝手に思っているので、速度が倍違うとか
半分のコードとか、簡潔なコードで済むのでないかぎり避けたいと思います。
624デフォルトの名無しさん:2014/04/19(土) 14:29:39.55 ID:3ip4HVEJ
automatorからもRuby使えるし組み合わせれば
625デフォルトの名無しさん:2014/04/19(土) 14:53:54.28 ID:/Zpiftkq
>>622さん
ありがとうございます。
perlは日本語処理がrubyに劣ると思っていましたが今は違うのでしょうか?
perlでも構いません。話しが続くのでしたらスレを移動します。
その前に619程度のperlコードは欲しいです。

>ファイル名の最大はどちらも255byteで同じ

問題はファイル名の長さの取り扱いがlinuxとmacで異なります。
linuxは255byteでmacはutf-16で255文字。
Macは濁音・半濁音をも一文字とカウントします。
例えば「ぱ」は「は」と「゜」で2文字らしいです。
626デフォルトの名無しさん:2014/04/19(土) 14:55:40.28 ID:/Zpiftkq
>>624
すいません。同じ方かわかりませんが、具体的automatorコードはありますか?
なければ結構です。ありがとうございました。
627デフォルトの名無しさん:2014/04/19(土) 15:05:56.16 ID:7EPIcXRA
unlessが存在する意義はあるんですか?
ifでいいじゃないですか
こんな余計なものを実装してるところが汚いですよね
PHPと同様Rubyも汚い言語だと思いますよ
628デフォルトの名無しさん:2014/04/19(土) 15:06:56.89 ID:3ip4HVEJ
AutomatorからもRuby使える、って言っただけなのに具体的なソース提示しろとかなんか腹立つな
629デフォルトの名無しさん:2014/04/19(土) 15:08:29.07 ID:7EPIcXRA
そもそも同じ処理をいろんな書き方ができる事自体がおかしいんですよ
630デフォルトの名無しさん:2014/04/19(土) 15:30:26.20 ID:9b14v82/
>>625
utf16だったのか
失礼
631デフォルトの名無しさん:2014/04/19(土) 16:04:22.94 ID:/yg2gOxj
汚染漏れ (かもしれない) 問題の報告って [email protected] 宛てになるの? https://bags.ruby-lang.org/ じゃダメ?
632デフォルトの名無しさん:2014/04/19(土) 16:07:00.30 ID:RzhKyGN6
セキュリティ関連は、BTSに登録してしまうと、未解決のうちに公開されてしまうことになって
よろしくないので、メールで。
633デフォルトの名無しさん:2014/04/19(土) 16:08:27.77 ID:RzhKyGN6
あ、意図を読み取り損ねていた。
taintness の伝搬関連はセキュリティ問題になると思うよ。
634デフォルトの名無しさん:2014/04/19(土) 16:15:14.52 ID:/Zpiftkq
>>628
文章のまま他意はない。それなら、次回から興味がなければ礼も言わず、全く返事せずにスルーするよ。
635デフォルトの名無しさん:2014/04/19(土) 16:17:36.73 ID:3ip4HVEJ
うっざ。友達いなそー
勝手にしろ
636デフォルトの名無しさん:2014/04/19(土) 16:25:22.72 ID:3ip4HVEJ
最近流行の「アドバイス罪」って考えの奴なんだろうけど文字通り独り言だし礼も反応も求めてないよ。一言多いわ
お前から礼をもらったところで俺に何の得があるんだ
637デフォルトの名無しさん:2014/04/19(土) 16:49:03.52 ID:/yg2gOxj
>>633 対応ありがとう。
パッチつけて投げ込んでみます。
グーグル先生に英訳してもらうか・・・。
638デフォルトの名無しさん:2014/04/19(土) 17:00:07.44 ID:7EPIcXRA
松本先生に直接報告しとけよ
639デフォルトの名無しさん:2014/04/19(土) 19:11:05.22 ID:RzhKyGN6
>>637

security@ の大半は日本人だから日本語でおkと思う
640デフォルトの名無しさん:2014/04/19(土) 22:09:13.96 ID:/Zpiftkq
>>630さん
WinからMacやLinuxにファイルコピーするとそれぞれのコードUTF16やUTF8で扱われ
ファイル名の長さだけに制限があるようですね。


ひとりごと
Automatorやruby、perlなどの言語は今後も発展衰退する可能性があり性能や向き不向きがあります。
言語にユーザーの好き嫌いがあっても構いませんが、利用時には客観的に判断して利用すべきかと。
Automatorの既存コードがあれば、それを評価して良ければ使うのは全く構いません。

言語やくんだコードの使いやすさを知るために試すことは当然かと。
サンプルプログラムのアドバイスや質問は何の差支えもないでしょう。

私はコードの評価をしたいのに私への人格評価がなされる理由は全く意味不明。
スレチと長文失礼しました。
641デフォルトの名無しさん:2014/04/19(土) 22:26:27.75 ID:W9HYf8ZP
手元に環境ないから試せないけど
convmvで普通にいけるとおもうんだよなぁ
642デフォルトの名無しさん:2014/04/20(日) 06:13:18.72 ID:EVpAkAHD
>>610
win8.1 32bitだけど普通に使えてるよ。
activescriptrubyのirbでカーソル移動するとなんか表示がおかしくなるけど。
643デフォルトの名無しさん:2014/04/20(日) 07:16:19.74 ID:0Pm82NZH
>>640
死ね
644デフォルトの名無しさん:2014/04/20(日) 07:58:15.38 ID:3WSN1LrS
コードが評価したいなら、せめてconvmvのmanの「HFS+ on OS X / Darwin」
くらい読んで、彼等がお前の愚問を把握してないかどうかくらい、確認しろよ。
それすらやってないのに長々と書いてるのは詭弁にしか感じられん。
convmvを最初し紹介した奴に対しても失礼だ。
645デフォルトの名無しさん:2014/04/20(日) 13:30:38.66 ID:HWcNUSLH
irbでputまで入力してtab押しても補完されなくてそのままtabだと思われる文字が入力されるのはなぜですか?
646デフォルトの名無しさん:2014/04/20(日) 14:22:08.01 ID:8JCpLZTM
$ irb
irb(main):001:0> require 'irb/completion'
=> true
irb(main):002:0> put
putc puts
irb(main):002:0> put

うちだと再現しないな
647デフォルトの名無しさん:2014/04/20(日) 14:39:27.30 ID:vv1MGqjg
LoadError: cannot load such file -- readline
648デフォルトの名無しさん:2014/04/20(日) 14:50:40.14 ID:vv1MGqjg
rb-readline入れたらできました
649デフォルトの名無しさん:2014/04/20(日) 21:46:48.34 ID:ynl6vhnw
すいませんirbで表示される補完候補をスクリプトファイルから取得する方法を教えてください。
650デフォルトの名無しさん:2014/04/20(日) 23:38:34.56 ID:yNrVU/Oh
irbのソース読んだわけじゃないから想像だが、Object#methodsを使ってるんじゃないか?
651デフォルトの名無しさん:2014/04/21(月) 00:46:45.01 ID:P5oYv1sy
>>649
http://vim-users.jp/2011/09/hack229/
こういうことでつか
652デフォルトの名無しさん:2014/04/21(月) 23:28:33.40 ID:ZjnW70RA
arr = [ :a, :b, :c, :d. :e ]

これを

[
[:a, 0],
[:b, 1],
[:c, 2],
[:d, 3],
[:e, 4]
]

にする一番いい方法ってなんでしょうか?
each_with_indexでループするよりいい方法があるかなと思ったのですが
653652:2014/04/21(月) 23:30:59.51 ID:ZjnW70RA
解決しました
ありがとうございました。
654デフォルトの名無しさん:2014/04/21(月) 23:49:57.78 ID:tJv6/UPR
どう解決したのかも書いてよ・・・

arr.map.with_index{|a,i|[a,i]}
単純に書くとこうだと思うけど、なんか違う方法あるのかな?
655652:2014/04/22(火) 00:04:26.06 ID:0LyUdVMz
arr.each_with_index.map でした
656デフォルトの名無しさん:2014/04/22(火) 00:17:40.59 ID:BSZVNMjV
>>654
ぱっと思いついたのは無限リストにzipなやつかな
Haskellでいう
zip arr [0..]
こういうの
今時のRubyなら有りそう
657デフォルトの名無しさん:2014/04/22(火) 00:34:45.36 ID:/QNFTYSS
arr.map.with_index.to_a
658デフォルトの名無しさん:2014/04/22(火) 00:39:36.28 ID:9I9vrr6h
Rubyに無限リストってないのね
(一応0..Float::INFINITYで無限リストにはなる)
でも今回限定ならこれでいいのか、なるほど
arr.zip(0..4)
659デフォルトの名無しさん:2014/04/22(火) 00:45:35.26 ID:BSZVNMjV
Lazyってのがあったと思う
660デフォルトの名無しさん:2014/04/22(火) 00:53:23.71 ID:Ar304b6L
irb> %i(a b c d e).zip(0.step)
=> [[:a, 0], [:b, 1], [:c, 2], [:d, 3], [:e, 4]]

でもこの場合なら普通に%i(a b c d e).each_with_index.to_aかな
661デフォルトの名無しさん:2014/04/22(火) 00:57:11.44 ID:yPgtsq3K
そういう連番入りの"変"な配列が本当に現物として必要なのかというところから考えてみるといいかもしれない

結構必要なんだけどさ
662デフォルトの名無しさん:2014/04/22(火) 23:42:03.50 ID:Nv3mzqEq
プログラミングRubyのRubyベタボメっぷりにRubyを使い始めて早10数年、使えば使う程にRubyって駄目だなと痛感する
Rubyを学習し始めた頃は誰でもRubyは素晴しいと思うのだが、数年も使えばそのどうしようもない互換性のなさにウンザリする
しかも互換性が無くなることをマズいと思っていない集団がRubyを制作しているのでどうしようもない
1.4時代のコードが1.6になった途端に互換性がなくなり動かなくなることはあったが、1.6→1.8ではそれが顕著になり、1.9など何のエラーも出さずに前のコードが動く方が珍しいほど
それどころか1.9に行かずREEが海外ではデファクトになりつつある現状、そして始まるPlain RubyとREEの方言問題
例えばPassengerもREEの方がうまく動いたり、かと思えば特定のバージョンだとPlainじゃないとまともに動かなかったりと、とても面倒臭い

美しいコードを求める為の副作用、という名の互換性のなさはRuby界全体に蔓延していて
例えばあれだけもてはやされたRailsも、Rails2とRails3の互換性のなさに誰しも苦労したのは記憶に新しいところ
誰もが互換性のなさに辟易し、俺ライブラリを量産するため、gemで探すと似たような事をする終わったプロジェクトがわんさか引っかかる
諸処の小さなプロジェクトだけがそんな現状ならば許せるが、dbiアダプタでさえそんな現状なので
バージョンが変わるとデータベースにすら接続できなくなったとか、dbiのAPIバージョン変わったのにアダプタ側の更新ないな、
とか思ってるとアダプタ作者がRubyから足洗ってたとか余裕

身内同士でRubyはコードが美しいと四六時中自画自賛しているが、実はそれこそがRubyのガン
その美しいコードという名のオナニーの為に一体どれだけの互換性と人的リソースが失われていったことか
Rubyのコードは美しい、Railsスゲー、ベタボメする人は沢山いたがいつも一過性の人気しか得られないのはそこにあるし
ベタボメしていた人達もしばらくするとウンザリしてRuby界から消えてしまうのも原因は実はそこにある
達人プログラマーはRubyをベタボメしなくなったし、Mongrel作者はRailsどころかRubyに見切りをつけちゃったしね
ああいう熱狂的なRuby信者でもRubyから足を洗っているのを見ると、tDiaryがRubyに見切りつけてPythonで全部書き直したとか言われても驚かないだろう自分がいる
663デフォルトの名無しさん:2014/04/23(水) 00:01:19.28 ID:QODmQkgW
嫌いなのに、この熱量ワロタ
664デフォルトの名無しさん:2014/04/23(水) 00:04:18.60 ID:Jwmg0nMc
まあ分からないでもないな
せっかく書いた自分なりに美しいコードがRubyのバージョン互換性とかライブラリの陳腐化とかでどんどん何もしなくてもゴミになってくんだよね
665デフォルトの名無しさん:2014/04/23(水) 00:04:41.65 ID:XMnhms3E
ruby1.8と1.9の非互換性に親を殺されたんだろう
666デフォルトの名無しさん:2014/04/23(水) 00:11:12.37 ID:IStIaXKD
大昔からあるコピペだが
砂漠に捨てられていたところを駱駝に育てられたんだろうね
667デフォルトの名無しさん:2014/04/23(水) 01:49:10.20 ID:gMdUnhMT
PerlもPerl6で後方互換性がなくなった
668デフォルトの名無しさん:2014/04/23(水) 01:50:10.17 ID:EKJ4E/PJ
Rubyは普及が早過ぎた
せめて1.9のEncodingが
669デフォルトの名無しさん:2014/04/23(水) 08:55:45.86 ID:KGn2h8hJ
UFC 128 - : ジョン・ジョーンズ vs. マウリシオ・ショーグン
https://www.youtube.com/watch?v=wia_sFsAf6g
670デフォルトの名無しさん:2014/04/23(水) 10:58:28.90 ID:Zk8CkSwd
今からRubyを学ぶ場合って1.9.3と2.1.0どっちがいいですか?
671デフォルトの名無しさん:2014/04/23(水) 11:08:55.43 ID:EKJ4E/PJ
過去バージョンの資産(しがらみとも言う)がないのなら2.1.x
日常なんも考えずに使うぶんにはあまり変わらないので、
2.1系でどうしても動かない基幹のライブラリが出たときだけ1.9.3にでも戻るといい
672デフォルトの名無しさん:2014/04/23(水) 11:11:15.04 ID:Zk8CkSwd
railsとredmineしか使わないんですがとりあえず2.1.0からはじめてみます
673デフォルトの名無しさん:2014/04/24(木) 01:07:32.47 ID:29x10p2Y
1.9.3と2.1.0の違いって?
674デフォルトの名無しさん:2014/04/24(木) 01:09:55.80 ID:Brr5V4q8
1.9.3はもうちょっとしたらサポートが切れる
2.1.xはしばらく使える
675デフォルトの名無しさん:2014/04/24(木) 01:51:54.83 ID:FRUphxxh
Win3.1,Win95,Win98,Win2000,WinME,WinXPのサポート終了
OSのAPIも変わる
言語だっていいじゃん
676デフォルトの名無しさん:2014/04/24(木) 02:15:00.21 ID:29x10p2Y
仕事、増えるじゃないですか。ヤーダー
677デフォルトの名無しさん:2014/04/24(木) 09:54:17.58 ID:u/bmaKPm
仕事が増える=金になる
678デフォルトの名無しさん:2014/04/24(木) 15:45:01.53 ID:G2q8oQ1U
×仕事が増える
○サービス残業が増える
679デフォルトの名無しさん:2014/04/25(金) 08:48:01.45 ID:4zex2q5s
頑張るが良い

およそ3万時間はかけてあれこれと習得した技術で
一銭も稼がずそのまま趣味にしちゃうとか
えげつない選択をした俺には社畜PGでさえ割と輝いて見える
680デフォルトの名無しさん:2014/04/25(金) 08:56:55.55 ID:+QDQRBZq
IDは残酷である
681デフォルトの名無しさん:2014/04/25(金) 11:12:07.03 ID:D2Co1DWI
puts "Hello, world!"
682デフォルトの名無しさん:2014/04/25(金) 15:16:49.71 ID:D2Co1DWI
rubyの使いどころってどこ?
683デフォルトの名無しさん:2014/04/25(金) 16:22:14.40 ID:IDbQXlGJ
>>682
プロトタイプの制作。
684デフォルトの名無しさん:2014/04/25(金) 18:28:55.73 ID:k5QgmFyd
>>679
営業まで覚えろよ
685デフォルトの名無しさん:2014/04/27(日) 15:09:27.35 ID:VSXoRe4X
>>607
RDE使ってるけど補完とかでエラーがぼこぼこ出る
RDTは起動が終わる頃にはプログラミングする気が無くなるし、
SublimeText3使ってみたけどイマイチ使いにくいから結局RDE
686デフォルトの名無しさん:2014/04/27(日) 18:34:49.46 ID:MXG/a/88
RubyでIDE(笑) と思っていたが RubyMine を使ってみて、笑ってごめんなさいと言いたくなった。
687デフォルトの名無しさん:2014/04/27(日) 23:31:33.76 ID:zjGXWtmW
ジャップスクリプトw
688デフォルトの名無しさん:2014/04/27(日) 23:34:31.26 ID:D03yOYH6
>>687
真面目な話
朝鮮人にも使いやすいと思うよ
689デフォルトの名無しさん:2014/04/29(火) 15:30:47.92 ID:D9nXVjdy
そうだぬ
プロテインだぬ
690デフォルトの名無しさん:2014/04/29(火) 19:56:17.13 ID:rRRSFl+L
rubyって開発環境ないと実行もできないの?
691デフォルトの名無しさん:2014/04/29(火) 21:15:47.98 ID:DY1N0T2F
>>690
開発環境はいらない。いるのは実行環境な。
692デフォルトの名無しさん:2014/04/29(火) 21:18:10.34 ID:l3FqGA+x
スクリプト言語なので最低限エディタさえあればいいので
実行環境があれば開発環境も揃っちゃう
693デフォルトの名無しさん:2014/04/29(火) 21:32:45.43 ID:xy5XDcDr
釣られちゃだーめ
694デフォルトの名無しさん:2014/04/30(水) 07:51:04.88 ID:v4DX5ash
>>607
ruviedit
695デフォルトの名無しさん:2014/04/30(水) 12:51:55.01 ID:ZT185+pO
>>688
ジャ・・・・・・w
ジャ・・・・・・・・w
ジャ・・・・・・・・・・w
ジャ・・・・・・・・・・・・・・w

ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアッピwwwwwwwwwww
696デフォルトの名無しさん:2014/04/30(水) 23:30:35.93 ID:R8tz7cxX
みんなイガイガしてて怖い
697デフォルトの名無しさん:2014/05/01(木) 12:33:29.63 ID:V5UuKtrR
イガイガジャップw
698デフォルトの名無しさん:2014/05/01(木) 12:57:41.57 ID:mrXKLvki
ジァアアアアアアw
699デフォルトの名無しさん:2014/05/01(木) 16:55:10.64 ID:0JNTRAzu
ubuntu14.04でlibapache2-mod-rubyが無くなってしまったのですが、
RubyのCGIを実行するには何を入れればいいのですか?
700デフォルトの名無しさん:2014/05/01(木) 17:25:04.96 ID:7C5boMZl
Python
701デフォルトの名無しさん:2014/05/01(木) 18:18:20.02 ID:OEnuwkU5
>>699
CGI として動かすのに必要なのは mod_ruby ではなく mod_cgi のはず
mod_cgi はおそらく Apache2 をインスコしたときに入ってるので
とりあえず簡単な CGI スクリプトが動くかどうか試してみては
702デフォルトの名無しさん:2014/05/01(木) 20:43:22.42 ID:dTaRli9/
[
{sort:1, foo:1, bar:1},
{sort:1, foo:1, bar:2},
{sort:2, foo:1, bar:1}
]


これを

{
1: [ {foo:1, bar:1}, {foo:1, bar:2 } ],
2: [ {foo:1, bar:1} ]
}


に置換するメソッドってないのでしょうか?
703デフォルトの名無しさん:2014/05/01(木) 20:56:19.14 ID:dpgYE2eV
プログラミングをなんだと思ってるのかちょっと気にかかる

やりたい処理があるならとりあえず自力で逐次書いてみること
できそうにないならとりあえずいちばん基本的な処理からひとつずつ
704デフォルトの名無しさん:2014/05/01(木) 21:01:02.11 ID:zNLeyvzf
>>702
ちょっとやりたいことが見えない
705デフォルトの名無しさん:2014/05/01(木) 21:17:38.41 ID:sff33EKO
>>702

>>702

L = [
  {sort:1, foo:1, bar:1},
  {sort:1, foo:1, bar:2},
  {sort:2, foo:1, bar:1}
]


L.group_by { |e|
  e[:sort]
}.inject({}) { |outer_hash, (outer_key, inner_hashs)|
  outer_hash.update outer_key => (
    inner_hashs.map { |inner_hash|
      inner_hash.inject({}) { |hash, (key, val)|
        if key == :sort
          hash
        else
          hash.update key => val
        end
      }
    }
  )
}
# => {1=>[{:foo=>1, :bar=>1}, {:foo=>1, :bar=>2}], 2=>[{:foo=>1, :bar=>1}]}
706デフォルトの名無しさん:2014/05/01(木) 21:27:57.39 ID:f+pw1QDn
data = [
{sort:1, foo:1, bar:1},
{sort:1, foo:1, bar:2},
{sort:2, foo:1, bar:1}
]

data.group_by{| hash |
 hash[:sort].tap{
  hash.delete(:sort)
 }
}

dataの中身を破壊したくない時は事前にコピーしておく
707デフォルトの名無しさん:2014/05/01(木) 21:28:10.04 ID:57HvH9/j
xs = [
{sort:1, foo:1, bar:1},
{sort:1, foo:1, bar:2},
{sort:2, foo:1, bar:1}
]

h = {}
xs.each do |x|
h[x[:sort]] ||= []
h[x[:sort]] << x.reject {|k,v| k == :sort }
end

p h
708706:2014/05/01(木) 21:41:47.80 ID:f+pw1QDn
ごめん訂正
data.group_by{| hash |
 hash.delete(:sort)
}
で良かった
709702:2014/05/01(木) 22:41:16.64 ID:dTaRli9/
普通にこれだけでできました。

ar = [
{id:1, type: :hoge, value: 'aaa'},
{id:2, type: :fuga, value: 'bbb'},
{id:3, type: :hoge, value: 'ccc'},
{id:4, type: :hoge, value: 'ddd'},
{id:5, type: :fuga, value: 'eee'},
{id:6, type: :hoge, value: 'fff'},
{id:7, type: :piyo, value: 'ggg'},
{id:8, type: :hoge, value: 'hhh'}
]

puts ar.group_by {|a| a[:type] }




ありがとうございました。
710デフォルトの名無しさん:2014/05/01(木) 23:41:24.74 ID:Ig5lcCo9
それだけだとtypeが要素内に残ってしまうのでは?
711デフォルトの名無しさん:2014/05/01(木) 23:43:21.66 ID:zNLeyvzf
本人が納得してるんだから
それ以上の答えはないだろ…w
712デフォルトの名無しさん:2014/05/02(金) 05:26:15.04 ID:Aux2s5aq
ジャアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwwwwwww
713デフォルトの名無しさん:2014/05/02(金) 05:38:10.00 ID:gjVtYYe6
ジァアアアア
714デフォルトの名無しさん:2014/05/02(金) 11:55:46.50 ID:Pyg52lyI
ジャップ
715デフォルトの名無しさん:2014/05/02(金) 19:05:42.78 ID:Aux2s5aq
ジャアッピ
716デフォルトの名無しさん:2014/05/03(土) 01:08:23.79 ID:zQAExoAh
redmineで必要なgemをすべてredmine直下にインストールしたいのですが
bundle install --path .
こんな感じでやれば確実に直下にインストールされますか?
以前グローバルのgemのところにredmineで使うgemをインストールしたらrailsが動かなくなったので
慣れないうちはgemは分けてインストールしたいのです
717デフォルトの名無しさん:2014/05/03(土) 01:27:25.78 ID:xxSHnc2z
>>716
--deploymentじゃだめなの?
--path . だとredmineのソースと混ざって面倒でしょ。
--path使うなら--path tmpgemとか、
名前はどうでもいいけどサブディレクトリを指定したほうがいいと思うよ。
718デフォルトの名無しさん:2014/05/03(土) 02:00:20.30 ID:zQAExoAh
--deploymentは初めて知りました。調べてみます
--pathはvendor/bundleを指定しようと思います
719デフォルトの名無しさん:2014/05/04(日) 11:41:12.81 ID:ksC+5kIH
r
720デフォルトの名無しさん:2014/05/04(日) 16:49:05.62 ID:FXufV3r7
メモ帳に、print("Hello,Ruby.\n")
と書いて、
helloruby.rb
という名前で保存して、
コマンドプロンプトで実行してみたのですが、
('ruby'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されていません。)

こんな表示が出てしまったんですが、
もしかしてプログラムを実行するには、
Rubyというものをインストールしないといけないでしょうか?
721デフォルトの名無しさん:2014/05/04(日) 16:56:30.87 ID:5zOv7lJS
もちろんそうよ。
rubyに限らずあらゆるスクリプト言語は、
ソースを実行する環境が必要だよ。
722デフォルトの名無しさん:2014/05/04(日) 17:04:39.33 ID:FXufV3r7
>>721
そうでしたか、
ありがとおございます、
rubyを使えるようになれるように勉強します...orz
723デフォルトの名無しさん:2014/05/04(日) 17:52:47.03 ID:FXufV3r7
Rubyインストールして、hellorubyできましたー!
あとはプログラム書いていくには、
メモ帳よりもエディターというのがあったほうがいいのかな?
724デフォルトの名無しさん:2014/05/04(日) 17:59:39.98 ID:EAI4gb7/
>>723
メモ帳もエディタだよ
ただメモ帳はプログラミングには向いてないからプログラミング用のエディタがあったほうがいいね

それと、自分で考えたり調べたりするのもプログラミングする上では大事よ
725デフォルトの名無しさん:2014/05/04(日) 18:13:57.43 ID:FXufV3r7
>>724
メモ帳もエディタだったのですね。。。
そうですね、
自分で考えないとプログラミングなんてできないですね・・
ありがとおございます、
プログラム言語覚えようと思って、
初心者で何がいいのかわからなくて、
古本でRubyの入門書が一番安かったから買ってしまったけど、
この選択でよかったのかちょっと不安でして・・
本読みながら頑張って勉強します!
726デフォルトの名無しさん:2014/05/04(日) 19:24:12.03 ID:Sqbn+IJt
その選択は失敗だな。
図書館行けばただで借りられたかもしれないのに。
727デフォルトの名無しさん:2014/05/04(日) 19:30:04.33 ID:yfReFpk7
>>725
いやいや、>>721 の情報ぐらいでちゃんと動かせるところまでたどり着けるんだから、
十分プログラミングができる素養はありますよ。がんばってください

エディタは…私はLinux上でEmacs使ってますが、最近だと何がいいんでしょうね
Notepad++あたりがスジは良さ気かなー
728デフォルトの名無しさん:2014/05/04(日) 21:25:42.60 ID:rJLJvrVe
最初はサクラエディタみたいにくせが強くなくて、設定の楽なソフトでいいんじゃない?
729デフォルトの名無しさん:2014/05/05(月) 02:33:36.94 ID:7lNQc/V+
サクラエディタに癖が無いとおっしゃるw
730デフォルトの名無しさん:2014/05/05(月) 02:35:59.43 ID:STNDLWYp
余計な設定してあるサクラエディタなんてクソ
731デフォルトの名無しさん:2014/05/05(月) 02:38:45.35 ID:7lNQc/V+
Windowsなんてとっくの昔から使ってないけど、癖が少ないエディタと言ったらTeraPadなんじゃないかなぁ
最初からRubyのシンタックスハイライトしてくれるし
732デフォルトの名無しさん:2014/05/05(月) 10:12:54.51 ID:8D+UV0JX
733デフォルトの名無しさん:2014/05/05(月) 10:28:52.17 ID:SGaFRyg3
Rubyの開発環境ってエディタはもちろんだけどコマンドライン端末が重要だからなあ
WindowsならVirtualBoxかなんかの上でLinux動かしたほうがマシ
734デフォルトの名無しさん:2014/05/05(月) 13:20:36.62 ID:8D+UV0JX
Linux上でプログラミングだけやりやすくするよりも
Windows上でプログラミング以外の事を色々とやっている中でプログラミングもそこそこ行いたい
735デフォルトの名無しさん:2014/05/05(月) 13:44:22.42 ID:Vmp3/Tts
Windows に mintty, SYS, Cygwin なんか入れてがんばってる人もいるね
Linux にある程度慣れてる人じゃないと導入からしてきついだろうけど
736デフォルトの名無しさん:2014/05/05(月) 13:58:33.03 ID:HNW3XBXV
CYGWINはオモチャ
737デフォルトの名無しさん:2014/05/05(月) 14:09:47.46 ID:1M+NrYC6
>>720
ttp://ideone.com
ttp://codepad.org
ここで打ち込めばよい
これらは、数十のプログラミング言語に対応している
738デフォルトの名無しさん:2014/05/05(月) 14:39:20.97 ID:w8FDA2mo
みなさまありがとうございます、
とりあえず、
Notepad++、サクラエディタ、TeraPad、RuviEdit
の4種類インストールとダウンロードしてみました!
これから使いやすいの選んでやってみようと思います、
>>737
ネット上でも実行できるのあるんですね、
便利そうですありがとうございます。
739デフォルトの名無しさん:2014/05/05(月) 15:41:05.47 ID:iIm/Jmpk
RuviEditはどうかなー
もうメンテされてないみたいだし

あとの3つは有名ドコロだし、気に入ったのを使えばいいと思うけど
740デフォルトの名無しさん:2014/05/05(月) 16:29:31.91 ID:7lNQc/V+
ネット上の開発環境だと、Cloud 9ってのもある
https://c9.io/

ただ、最初の開発環境はやっぱりローカルに用意したほうがいいと思う
741デフォルトの名無しさん:2014/05/05(月) 16:40:11.79 ID:wgCLsPWH
>>615

pryでデバッグするときって、
いちいち、binding.pry をソースコードを編集して付け加えるの?
742デフォルトの名無しさん:2014/05/05(月) 17:03:33.32 ID:4sn/7U2g
winならsublimeいったくだろ
743デフォルトの名無しさん:2014/05/05(月) 17:07:52.83 ID:7lNQc/V+
金払えるならね
Windowsといわず、MacでもLinuxでも動くし
744デフォルトの名無しさん:2014/05/05(月) 18:25:02.87 ID:yMM/B3tv
以前、rubyをネット上で実行できるようにするには
セーフレベルだけでは危ないみたいな記事を読んだのですが本当ですか?
ちなみにその記事には対策は書かれていなかった。
745デフォルトの名無しさん:2014/05/05(月) 19:59:08.73 ID:zZf2r6l7
>>744
ユーザエージェントから受けとったデータ(クッキーやらポストデータやら)を処理する場合は、気をつけることだな。
rubyに限ったことではないけど。

ユーザエージェントからのrubyコードをサーバー上で実行させる場合は、サーバーが転んでも泣かない。
特に(標準ライブラリは例外として)第三者による拡張ライブラリ(soファイルを含むやつ)は
セーフレベルや汚染について無頓着なものが多いので、そういうライブラリは絶対に使わないこと。マジで泣きを見るからな!!
746デフォルトの名無しさん:2014/05/05(月) 21:03:59.74 ID:z6Pp9a2U
>>745
ありがとうございました。
747デフォルトの名無しさん:2014/05/06(火) 01:34:39.86 ID:+YksqMlB
セーフレベルはMatzも認めるクソ仕様
あんなのアテにする方が間違い
748デフォルトの名無しさん:2014/05/06(火) 10:54:59.83 ID:pWnyRhI4
$SAFEは開発版にだけ入れておくべきものだったね
うまく回ればカッコイイものだったんだけど、一度もうまく回った印象がない
749デフォルトの名無しさん:2014/05/06(火) 12:36:12.29 ID:MM9vq2r+
32bit向けcygwinでrbenvを使っています
ruby 2.1.1p76 (2014-02-24 revision 45161) [i386-cygwin]
gem --version は2.2.2です

gem関連の質問をします
http://takemikami.com/archives/1316
ここにあるようにnokogiriを使おうとしたらエラーが出ました

ruby get_gresult.rb
/home/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': No such process - /home/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/extensions/x86-cygwin/2.1.0/nokogiri-1.6.1/nokogiri/nokogiri.so (LoadError)

gem which nokogiriの結果はこうです
/home/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.1/lib/nokogiri.rb

gemで入れたnokogiriのインストール先をkernel_requireが探せていないようなのですが
どうすればよいのでしょうか
750デフォルトの名無しさん:2014/05/06(火) 14:53:17.56 ID:vwF5zeGs
Rubyじゃ無理
751デフォルトの名無しさん:2014/05/06(火) 15:25:04.61 ID:MM9vq2r+
書き忘れていましたがrbenv 0.4.0-97-gfe0b243
です。
すみません。ファイルはそこにありました。

[~/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/extensions/x86-cygwin/2.1.0/nokogiri-1.6.1/nokogiri] % ls -la
-rwxr-xr-x 1 user 4.5M 2014-04-30 16:55:56 nokogiri.so*

それとエラーメッセージは正しくはこうでした。
/home/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': No such process - /home/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/extensions/x86-cygwin/2.1.0/nokogiri-1.6.1/nokogiri/nokogiri.so (LoadError)
from /home/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.1/lib/nokogiri.rb:28:in `<top (required)>'
from /home/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:135:in `require'
from /home/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
from /home/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:144:in `require'
from get_gresult.rb:4:in `<main>'
752デフォルトの名無しさん:2014/05/06(火) 17:41:02.74 ID:+YksqMlB
おかしいね。No such process というメッセージは require では出ないはずなんだけど
753デフォルトの名無しさん:2014/05/07(水) 08:12:24.98 ID:MZ01fZnX
無理
754デフォルトの名無しさん:2014/05/07(水) 10:48:05.15 ID:VWoQm6fj
馬鹿には
755デフォルトの名無しさん:2014/05/08(木) 21:34:14.53 ID:c3/Phoxn
無理
756デフォルトの名無しさん:2014/05/08(木) 23:29:13.85 ID:e+dUzwlW
 
 _∧∧__   / ̄ ̄ ̄ ̄
 |( ゚д゚)| < 私も初心者です!
 |\⌒~\  \____
 \ |⌒⌒|
757デフォルトの名無しさん:2014/05/08(木) 23:55:23.33 ID:tkIcXOih
おっと、気がついたら DateTime.strptime() のバグが直ってるじゃん
もう直らないと思ってたよ
758デフォルトの名無しさん:2014/05/09(金) 16:03:47.06 ID:RTJJnIz3
ループの中でsystem "start #{url}"として、既定のブラウザ(Firefox)でurlを次々に開きたいのですが、複数のタブを開くのではなく、一つのタブ内で遷移させていくにはどうすればよいでしょうか?Windows 8 64bit, ruby 2.0.0p353です。よろしくお願いします。
759デフォルトの名無しさん:2014/05/09(金) 16:34:14.36 ID:jmPoJJfu
開く前にタブを閉じればいいんじゃね?
760デフォルトの名無しさん:2014/05/09(金) 19:18:08.97 ID:hUKEzlG4
gollumっていうgitで管理するwikiあるじゃないですか
バックアップ目的でgithubにpushしたいんですが
gollumが自動的に作成したリポジトリの内容そのままでpushしちゃていいんですか?
他にgit addしたりする必要はないですか?
761758:2014/05/09(金) 19:20:40.79 ID:RTJJnIz3
>>759
ありがとうございます。
タブを閉じるにはjavascriptでwindow.close()してやれば良いのかと思って、execjsというgemを使おうとしたのですが、invalid byte sequence in UTF-8というエラーが出てしまって回避策を調べているところです。
watirとかseleniumなどのwebdriverを使うと、新しくブラウザを開く必要があるみたいなので、使用中のブラウザで開くためにsystem startでURLを開こうとしているのですが、その場合にタブを閉じる方法は他にあるでしょうか?
762デフォルトの名無しさん:2014/05/09(金) 20:33:54.70 ID:SjMyjWDG
wshとかでキーバインド Ctrl + W
WinAPIとかでPostメッセージ Ctrl + W
タブのスレッドを特定して Kill
ハンドルを取得して、どうにかしてWatirとかSeleniumで操作するブラウザを既存のものにするように魔改造
他・・・良さそうなgemsを探す
763デフォルトの名無しさん:2014/05/09(金) 20:51:40.58 ID:SjMyjWDG
ああ、Firefoxってタブごとに別スレッドってわけじゃなさそうだった
スレッドKillでタブ閉じ無理
764デフォルトの名無しさん:2014/05/09(金) 21:18:10.66 ID:JCnUB0up
>>758
試してはいないけどぐぐったらこんなのが

http://forums.mozillazine.org/viewtopic.php?f=23&t=2065115
> I figured out a very workable workaround. :)
> I have the TabMixPlus addon installed.
> Under Tools > Tab Mix Plus Options, I set "Open links from other applications in": to "Current Tab".
765デフォルトの名無しさん:2014/05/09(金) 21:59:51.69 ID:SjMyjWDG
http://wtr.rubyforge.org/rdoc/1.6.5/
ここみると
attach (FireWatir::Firefox)
ってattachなんとかってメソッドあるから多分firefoxでもやれるとは思うよ

IEでは、正しいやり方じゃないんだけど、とりあえずの動作確認出来た
Ruby\lib\ruby\gems\1.9.1\gems\watir-classic-3.7.0\lib\watir-classic\ie-class.rb
等の 645行目くらいを

#160; #160; def create_browser_window
#160; #160; #160; how = :title
#160; #160; #160; what = "Google"
#160; #160; #160; ieTemp = nil
#160; #160; #160; begin
#160; #160; #160; #160; Wait.until(IE.attach_timeout) do
#160; #160; #160; #160; #160; ieTemp = IE._find how, what
#160; #160; #160; #160; end
#160; #160; #160; rescue Wait::TimeoutError
#160; #160; #160; #160; raise NoMatchingWindowFoundException,
#160; #160; #160; #160; "Unable to locate a window with #{how} of #{what}"
#160; #160; #160; end
#160; #160; #160; @ie = ieTemp

##160; #160; #160; @ie = WIN32OLE.new('InternetExplorer.Application')
#160; #160; end


こんなんにするとブラウザ新規起動はしないでGoogleを開いてるIEのブラウザに対してフックするようになる

その他関連リンク・・・
http://rdoc.info/gems/watir/1.6.6/Watir/IE#attach-class_method
766デフォルトの名無しさん:2014/05/09(金) 22:00:46.38 ID:SjMyjWDG
半角ミスった・・・・

    def create_browser_window
      how = :title
      what = "Google"
      ieTemp = nil
      begin
        Wait.until(IE.attach_timeout) do
          ieTemp = IE._find how, what
        end
      rescue Wait::TimeoutError
        raise NoMatchingWindowFoundException,
        "Unable to locate a window with #{how} of #{what}"
      end
      @ie = ieTemp

#      @ie = WIN32OLE.new('InternetExplorer.Application')
    end
767デフォルトの名無しさん:2014/05/09(金) 22:27:33.18 ID:SjMyjWDG
あ、ライブラリ弄らずにattach_browser_window呼び出すにはこれでよさげ
agent = Watir::Browser.attach(:title, "Google")

firefox版は・・・誰かがどうぞ
768758:2014/05/09(金) 22:46:25.11 ID:RTJJnIz3
>>762
ありがとうございます!
watirのattachメソッドはwatirで開いたページへのattachなんだと思ってました。
ttp://stackoverflow.com/questions/18496262/finding-currently-open-browser-firefox-windows-with-watir
>>764
ありがとうございます!

いろいろアドバイスいただいたやり方で試してみます。ただ、そもそもrubyを使ってやる必要がなかったかもしれません。。。
769デフォルトの名無しさん:2014/05/10(土) 13:24:26.09 ID:oRE/NAyL
質問です
ホソバオキナゴケか、アラハシラガゴケ
あとスナゴケ買ってきたいんですけど
東京で売ってる店ありますか?
なるべく通販とかより現物みて買いたいのですが
トレーで買える大きなものが良いです
770デフォルトの名無しさん:2014/05/10(土) 23:13:34.58 ID:E1J0psG7
東急ハンズとか見てきますね
ありがとうございます
771デフォルトの名無しさん:2014/05/12(月) 00:48:59.09 ID:pvK1PhqY
ンーwwwwwwwwwww
772デフォルトの名無しさん:2014/05/12(月) 14:01:07.49 ID:ZYG+p79T
rbenvをインストールするシェルスクリプトを書いているのですが、

echo 'export RBENV_ROOT=/usr/local/rbenv' >> /etc/profile.d/rbenv.sh
echo 'export PATH="$RBENV_ROOT/bin:$PATH"' >> /etc/profile.d/rbenv.sh
echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh

exec $SHELL -l

とすると「exec $SHELL -l」でスクリプトが止まってしまって後の処理が実行されません。
止まらずに後の処理も実行するにはどのようなスクリプトを書けばよいでしょうか?
よろしくお願いいたします。
773デフォルトの名無しさん:2014/05/12(月) 17:18:34.10 ID:fmUG0CnV
>772
echo $SHELL して出てきたコマンドの -l オプションの効果を調べる
774デフォルトの名無しさん:2014/05/12(月) 19:29:25.28 ID:lYEeDc9x
>>769-771
苔の質を気にしないならヤフオクとかオススメかなり安い
色が悪くてもちゃんと管理すれば色も戻るから、着生させた後ならさほど変わらんな
775デフォルトの名無しさん:2014/05/13(火) 19:58:24.12 ID:jn2b6mfU
すみません、どこで質問すればいいのかわからなかったので
ここで質問させてください。

Rubyで書いたコードをexe化するためにocraというgemを使っています。
関連するライブラリなどもexeの中に入るはずなのですが、
他のgemが入らないようで困っています。

具体的には
ruby 1.9.3  ocra 1.3.0  snmp 1.1.1
snmp を gem install したPCで require snmp を含むrubyコードを
ocraでexe化し、実行すると require snmp 実行時に強制終了します。
(require snmp の前後にログを入れて確認したので間違いないです)
ocra実行時(ocra --windows ファイル名)にはエラーは出ていません。

このプログラムをruby環境の無いPCで実行するためには
どうすればいいでしょうか?
ヒントだけでも頂けると助かります。
776デフォルトの名無しさん:2014/05/13(火) 23:56:12.82 ID:xjX0qK0b
>>772
export PATH
組み込み環境変数は、exportしたらダメかも?
777デフォルトの名無しさん:2014/05/14(水) 00:01:08.64 ID:H+eWXsjB
>>775
>ocraでexe化し、実行すると require snmp 実行時に強制終了します。

強制終了時のエラーメッセージを書かないと、
アドバイスしようにも無理だと思われ
778デフォルトの名無しさん:2014/05/14(水) 00:13:16.08 ID:7P3aj1T+
Rubyで動的にevalで追加されたメソッドの定義を見る方法はないのでしょうか?

定義つーのは引き数とかです
779デフォルトの名無しさん:2014/05/14(水) 00:34:26.06 ID:H+eWXsjB
>>778
Ruby1.9以降であれば、ClassクラスやModuleクラスで定義されている
メソッド instance_method または public_instance_method を使うと
メソッドを表現するオブジェクト UnboundMethod が返される
次に、このオブジェクトで定義されているメソッド arity を呼べば、
対象となるクラス/モジュールで定義されているメソッド定義の引数の個数が得られる

$ irb2.0
irb(main):001:0> eval "class C; def f(x,y); end; end"
=> nil
irb(main):002:0> m = C.instance_method(:f)
=> #<UnboundMethod: C#f>
irb(main):003:0> m.arity
=> 2
irb(main):004:0>
780デフォルトの名無しさん:2014/05/14(水) 08:13:42.89 ID:7P3aj1T+
ありがとうございます
個数しかムリなんですね
781デフォルトの名無しさん:2014/05/14(水) 10:21:32.53 ID:2naf+4Er
同じ1.9.3であっても、パッチレベルが低いと、forの中でretry使えるものがあるんだな。
782デフォルトの名無しさん:2014/05/14(水) 14:19:31.11 ID:zb6ijAM3
>>778
UnboundMethodにはparametersメソッドもあるね。
こっちのほうがもう少し詳しいみたい。
783uy:2014/05/15(木) 14:13:13.27 ID:Py6ct1mS
>>778

eval"
def nesi a , b
p a , b
end
"
ObjectSpace.each_object do |m|
puts m if m.to_s =~ /nesi/
end


出、出力〜wwwwww物体空間検索奴〜wwwwwwww
784デフォルトの名無しさん:2014/05/18(日) 13:57:07.33 ID:YH07EY0z
Rubyは変数の型を宣言しないの?
VBA使ったときは、IntegerとかStringとかの、
変数を宣言してた記憶がるんだけど、
なんか入門書に説明書いてない・・
785デフォルトの名無しさん:2014/05/18(日) 14:42:03.70 ID:9l4Azo6V
うん。Ruby の変数に型はないので宣言することもない
786デフォルトの名無しさん:2014/05/18(日) 14:46:11.25 ID:BExb4OPW
>>784
Rubyの変数は文字列、配列、数値などの「オブジェクト」を指すものだが、これに型はない。
ただし変数が指している各々のオブジェクトには明確な型がある。
787デフォルトの名無しさん:2014/05/18(日) 14:52:26.23 ID:YH07EY0z
そうなんですかぁ
あとでコードみたとき分かりにくくないのかなぁ
宣言してないから変数名まちがえてもエラーもでないってことですよね?
デバッグするときめんどくさくないのかなぁ
数字の変数に文字列いれたらエラーになってくれるから、
ミス分かったりすると思うんだけど、
なんか不安になってきたなぁ
Rubyの選択は正しかったのだろうか・・
788デフォルトの名無しさん:2014/05/18(日) 15:14:49.57 ID:BSsm5aBJ
>>787
その代わりお気楽にコードが書けるというメリットもある
メリットとデメリットを比べて実際に決めるのはあなたなので、あとは好きにすればいい
789デフォルトの名無しさん:2014/05/18(日) 15:17:00.29 ID:vXasxGe8
>>787
>あとでコードみたとき分かりにくくないのかなぁ

変数をハンガリアン記法にするといい
790デフォルトの名無しさん:2014/05/18(日) 15:18:52.16 ID:cV/sH5hf
まだマシだよ。
1 + "1"とか、1 + "5foo" が全くエラーにならない言語もある。
791デフォルトの名無しさん:2014/05/18(日) 15:20:44.18 ID:9l4Azo6V
比較してみよう

' VBA
Dim num as Integer
num = 123

# Ruby
num = 123
792デフォルトの名無しさん:2014/05/18(日) 15:21:54.42 ID:vXasxGe8
httpdで送られてくるパラメータに型がないのも酷い
793デフォルトの名無しさん:2014/05/18(日) 15:31:34.82 ID:P2EXL/Ge
>>787
変数自体に型はないけど、格納されてるデータは型があって
参照時に型チェックは行われる
自分の感覚では、気にしているような型チェックによるコーディングミスの検知は
Rubyでも十分機能している(整数と文字列を間違えるようなミスは
ちゃんと検知する)
794デフォルトの名無しさん:2014/05/18(日) 15:39:41.98 ID:vXasxGe8
そうかな
0 が false であることを期待して
if hoge
fugafuga
みたいに書いてるとき
hoge が '0' だったら?
795デフォルトの名無しさん:2014/05/18(日) 15:52:52.85 ID:9l4Azo6V
Ruby では偽と扱われるのは nil と false だけ
'0' も 0 も "false" もみんな真
796デフォルトの名無しさん:2014/05/18(日) 15:59:38.17 ID:S+9LD5PN
>0 が false であることを期待して
あほか、期待しねーよw
perlは、0が偽ではあるけど、booleanがないから一貫している。
rubyは、booleanがある代わりに、0を偽としないことで一貫させている。
797デフォルトの名無しさん:2014/05/18(日) 16:15:30.64 ID:8Wfmiw8G
素人考えだけど

外部のスクリプトのメソッド foo を利用したくて、
require, import, include で利用宣言して、
foo( arg )
んで、エラーが出る場合は、引数の型や個数が違う。
ruby には適切な引数なのか調べる方法がある。

def foo( arg )
unless arg.is_a?(Hash)
raise 'ハッシュよこせよ'
end
unless arg.respond_to?(:each)
raise 'eachメソッド使えるやつよこせよ'
end
end

型宣言って、+-*/で四則演算できる数値をクレとか、
hoge というメソッドがつかえるオブジェクトをクレ
とか、そういうことに必要な機構だとオモタ
798デフォルトの名無しさん:2014/05/18(日) 19:03:44.52 ID:WdyNhwqh
JavaScriptはもっとひどい

JSに突進していく外人よりも、
Matzの方がスジが良いことは、明らか
799デフォルトの名無しさん:2014/05/18(日) 20:35:28.29 ID:BExb4OPW
>>787
中身の無い変数に対してメソッド呼ぶとかしたら大概例外になる
initializeでインスタンス作るときに代入、あとはアクセサなどで弄るとかすると
基本的に参照しかしないことになるだろ?つまり例外がちゃんと起こるワケだ
800デフォルトの名無しさん:2014/05/19(月) 00:52:15.69 ID:OU6AZajW
ちゃんと描けば変数とかどんどん減るから
実際、普通のOOじゃなくてプロトタイプベースみたいにして書けって事だよ動的言語は
801デフォルトの名無しさん:2014/05/19(月) 03:39:38.24 ID:eoQt5gri
俺も人気の >>787 に乗っかってみよう。
なんか自分で選んで ruby に触ろうとしているみたいだけど、動機は何よ? 何に使いたいの?
なんとなく触ろうと思ったとかでもいいけど、それで合いそうに無いならば他の言語を試してみるのもいいかもよ。
whitespace (http://ja.wikipedia.org/wiki/Whitespace) なんてどうよ?
802787:2014/05/19(月) 19:42:29.92 ID:KxacvMpX
>>801
whitespaceはネタですよね?w
先物を自動売買するシステムを作ろうと思ったんですが、
今まではVBAとIEでやってたけど、
他のプログラム言語も試してみたくて、
Rubyは日本人が作った言語だったので、
よく調べずにこれでいいかなと思って・・
803デフォルトの名無しさん:2014/05/19(月) 20:17:15.76 ID:6L2g2kAx
自動売買ソフト作ってるなら
ガベコレ走らない言語を選ぶべき
804デフォルトの名無しさん:2014/05/19(月) 21:10:56.65 ID:lZyXm0tR
ミリ秒単位のガチなやつならともかく、悠長にIE操作してる暇があったら
GCによるストップザ・ワールドなんか全く無視できるわ
805デフォルトの名無しさん:2014/05/19(月) 21:57:11.29 ID:UOYI7LyN
スクリプト言語は変数は型関係なくいれられることが多い
静的に変数の型を強制したいならコンパイル型の言語を選べばいい
806デフォルトの名無しさん:2014/05/19(月) 22:09:04.30 ID:faWRsHH6
一応、型チェック用のライブラリもあるけどな
Contractsとかそんな名前だっけ?
807デフォルトの名無しさん:2014/05/19(月) 22:16:40.28 ID:csGSXT6X
プロトタイプしろでおk
せっかくmix-inやりやすくされているのだし
型を意識しなきゃいけないコード書く時点で動的言語つかうって選択肢がズレてる
808デフォルトの名無しさん:2014/05/20(火) 15:28:39.99 ID:9vxr48KW
パック10進数を数字に変換する処理を作ろうとしています。
un_packというのをWEBで拾ってきたので、
それにバイナリモードで読んだ先頭3バイトのデータを渡して
やりたいのですが、以下のエラーになってしまいます。
in `sprintf': string contains null byte (ArgumentError)

バイナリの読み込み方が悪いのでしょうか。

def self.un_pack(pack)
sprintf("%X", pack).gsub(/^(.+)(.)$/) {|str|
case $2
when "F", "C"
""
when "D"
"-"
else
raise RuntimeError.new("illegal sign. sign = [#{$2}]")
end + $1
}.to_i
end

#16進数で渡せばOK
p self.un_pack(0x102D) #=> 102
p self.un_pack(0x102C) #=> -102

BinData = open("DATA30B.sf")
BinData.binmode

while(b = BinData.read(30))
p self.un_pack(b[0,3])
end
809808:2014/05/20(火) 17:31:57.95 ID:9vxr48KW
なんかいろいろやってたら出来た


def self.un_pack(pack)
sprintf("%X", pack).gsub(/^(.+)(.)$/) {|str|
case $2
when "F", "C"
""
when "D"
"-"
else
raise RuntimeError.new("illegal sign. sign = [#{$2}]")
end + $1
}.to_i
end

BinData = open("DATA30B.sf")
BinData.binmode

while(b = BinData.read(30))

wk = "0x" + b[0,3].unpack("H*")[0] #先頭3バイト(パック10進数)を取り出す

p self.un_pack(wk) #パック10進数を数字変換

end
810デフォルトの名無しさん:2014/05/21(水) 18:04:58.74 ID:rwjAksQw
Rubyはやっぱり、
金融関係のプログラミングには、
あまり向いてないか・・
F#とかのほうがいいのかな?
811デフォルトの名無しさん:2014/05/21(水) 19:21:37.26 ID:rZK4MUe2
国語,50,算数,70,理科,80,社会,60
というような文字列を読み込んで点数を合計する場合、どんな配列にするべきか想像がつかんorz

とりあえすspritで分けたら1次元配列にはなったけど、合計がやりにくいんだよね
812デフォルトの名無しさん:2014/05/21(水) 20:00:35.58 ID:YgR7gj8h
>>811
二次元配列(配列の配列)かハッシュにしてみては

s = '国語,50,算数,70,理科,80,社会,60'
s.split(',').each_slice(2).to_a
=> [["国語", "50"], ["算数", "70"], ["理科", "80"], ["社会", "60"]]
Hash[*s.split(',')]
=> {"国語"=>"50", "算数"=>"70", "理科"=>"80", "社会"=>"60"}

s.split(',').each_slice(2).inject(0){|total, (k, v)| total += v.to_i }
813デフォルトの名無しさん:2014/05/21(水) 21:36:03.59 ID:x7NyX0pH
>s.split(',').each_slice(2).inject(0){|total, (k, v)| total += v.to_i }

細かいけど、最後の inject のブロック内は代入文ではなく加算式だけにすべき
X: total += v.to_i
O: total + v.to_i

あとは、いいんじゃないかと
814811:2014/05/21(水) 21:44:32.01 ID:hjF7pzW+
>>812
slice初めて知りました
ありがとうございます。
815デフォルトの名無しさん:2014/05/21(水) 21:47:44.61 ID:YgR7gj8h
>>813
いや助かる。指摘ありがとう
816デフォルトの名無しさん:2014/05/21(水) 23:06:26.99 ID:00kr0Z9f
>>810
なんでF#という変化球なのだ
817デフォルトの名無しさん:2014/05/22(木) 00:41:16.90 ID:1++y104Q
>>816
いや、なんか関数型とかいうやつだったから、
計算とか強いかなと・・
F#てあまり使われてないの?
Rubyは日本人が作ったのだから、応援したい、
したいけど・・
相場のプログラミングするのに向いてる言語なんだろ?
818デフォルトの名無しさん:2014/05/22(木) 00:47:51.13 ID:+hsG2blX
F#はまだメジャー言語じゃないね
同的言語が嫌なら、C#かVB.NETあたりか
819デフォルトの名無しさん:2014/05/22(木) 00:49:10.94 ID:SelfAmtB
相場とかに使えるのかどうか知らんが、RとかNumPy辺りが流行ってるのかな。
820デフォルトの名無しさん:2014/05/22(木) 01:08:45.22 ID:1++y104Q
ありがとおございます
いろいろありますね、
個人で使うだけだから何でもいいのかもしれないけど、
選択間違えると時間とお金を無駄にしそうでw
一応Rubyも選択肢に入れながらどれにするか決めます。
821デフォルトの名無しさん:2014/05/22(木) 01:47:32.03 ID:sJNcHEkt
アクティブファンドのマネージャーとか、どんな言語使っているんだろう
822デフォルトの名無しさん:2014/05/22(木) 02:15:31.90 ID:wCE9XBZd
#coding:utf-8

s = "国語,50,算数,70,理科,80,社会,60"
p s.split(',').each_slice(2).inject(0){|total, (k, v)| total + v.to_i }
p s.split(',').each_slice(2).map{|k,v|v.to_i}.inject(:+)
p s.split(',').each_slice(2).to_a.transpose.last.map(&amp;:to_i).inject(:+)
p Hash[*s.split(',')].each_value.map(&amp;:to_i).inject(:+)
p s.scan(/\d+/).map(&amp;:to_i).inject(:+)
p s.scan(/\d+/).inject(0){|a,m|a+m.to_i}
823811:2014/05/22(木) 14:38:11.10 ID:r8fE+JcD
811です
回答して下さった皆さんありがとうございました。

今度は、外部から並べ替え条件を指定した場合のソートについて教えてください。
外部からの指定は、開始位置、桁数、並び順で複数指定可能にしたいです。

外部からの指定が動的に変化するので、
sort条件の部分が動的に変更する必要があります。
そもそもこんな事が出来るのでしょうか?

indata = Array.new
indata.push("001YAMADA 080A") #番号,名前,点数,クラス
indata.push("015TANAKA 065B")
indata.push("010YAMAMOTO 090A")
indata.push("004UETA 070B")
puts indata
puts

s = "16,1,A,13,3,D" #外部からソートキー指定 =>クラス(昇順)、点数(降順)


sortkey_ary = s.split(',').each_slice(3).to_a #カンマで分割し2次元テーブル化

puts "class(A),tensu(D)"

puts indata.sort {|a, b|
(a[16,1] <=> b[16,1]).nonzero? ||
(b[13,3] <=> a[13,3])
}
puts
824811:2014/05/22(木) 14:40:05.83 ID:r8fE+JcD
s = "16,1,D,13,3,A" の場合は、下のようになって欲しい
puts indata.sort {|a, b|
(b[16,1] <=> a[16,1]).nonzero? ||
(a[13,3] <=> b[13,3])
}
825デフォルトの名無しさん:2014/05/22(木) 15:07:29.73 ID:j+3vqhqP
>>817
平均以下はjava。平均以上と中学生は関数型。
826デフォルトの名無しさん:2014/05/22(木) 15:10:08.17 ID:j+3vqhqP
>>818
DDDが普及しないなら、一生、陽の目なんて浴びないだろ
けれど、c#やscalaよりは遥かにマシ
827デフォルトの名無しさん:2014/05/22(木) 15:33:51.44 ID:aluTz+nU
828811:2014/05/22(木) 17:36:16.90 ID:r8fE+JcD
>>827
まだ理解できてないけど、動きました。
ありがとうございました。

それにしても
こんな短いプログラムで書けるとは・・・
829デフォルトの名無しさん:2014/05/23(金) 23:11:58.39 ID:+jR4IStU
gollumで
http://localhost:4567/ホームページ
みたいに日本語のページ名が作れないんですがなんか設定しないとだめですか?
830デフォルトの名無しさん:2014/05/24(土) 07:21:55.84 ID:5JLWtyft
829 : デフォルトの名無しさん[sage] 投稿日:2014/05/23(金) 05:03:21.40 ID:AUTWzj1B [1/1回]
はたから見てもイミフ
それってクラスCとか追加する時どうすんの?
830 : デフォルトの名無しさん[sage] 投稿日:2014/05/23(金) 05:21:05.98 ID:drSoFeIQ [1/2回]
>>829
マジレスするとASC(昇順)/DESC(降順)の頭文字かと

sortコマンドでいけるからお題としてはイマイチ
831 : デフォルトの名無しさん[sage] 投稿日:2014/05/23(金) 05:54:11.31 ID:VJ/4Ga7W [1/1回]
スマンあまりよく読んでなかったわ

こういうやり方のソート分からんのだけど
cの中に["16", "1", "A"]が入って
そのデータが使われる事もなく上書きしちゃってるけどそれは良いの?
s = "16,1,A,13,3,D" の後半しか使わないなら
each_sliceしてる意味がよくわからない
832 : デフォルトの名無しさん[sage] 投稿日:2014/05/23(金) 06:00:38.98 ID:drSoFeIQ [2/2回]
A/Dの意味を理解してないように思えたので指摘しただけ。

オレも質問物の意図も分からないし納得したポイントも分かってないよ。
でも本人がそれで満足してるんだからほっときゃいいかなと。
833 : デフォルトの名無しさん[sage] 投稿日:2014/05/23(金) 07:33:25.62 ID:6y/Uike0 [1/1回]
>>831
> cの中に["16", "1", "A"]が入って
そうならない。なぜなら each_slice のあとに inject があるから
831デフォルトの名無しさん:2014/05/24(土) 07:24:10.88 ID:5JLWtyft
運営バカ過ぎてレスまで飛ぶ
レス消えちゃったし833のバカはスルーでおk
832デフォルトの名無しさん:2014/05/24(土) 08:19:59.34 ID:DTqC/a46
ログが失われるほどの鯖落ちなのに
誰も騒がないところを見ると
本当にもう2ちゃんには人居ないんだな
833デフォルトの名無しさん:2014/05/24(土) 09:41:32.95 ID:6MS9Ym7b
人はいるけどもはやそんなに重要視してない感じ
もうニコニコ関連、ツイッターのほうが巨大なコンテンツだしなぁ
834デフォルトの名無しさん:2014/05/24(土) 13:50:19.90 ID:35dvvibx
ニコニコで放送してるRubyプログラマって何で文字小さいんだろうかね
ライブコーディングなら文字が見えなきゃ意味ないしよ
自己満ですかい
835デフォルトの名無しさん:2014/05/24(土) 14:10:17.53 ID:7/7koijJ
晒せよつかえねーな
836デフォルトの名無しさん:2014/05/25(日) 00:27:26.99 ID:GqkgEupz
インスタンス変数に外部(そのクラスのメソッド)以外から
アクセサを定義せずに直接アクセスして値を取得する方法を教えて下さい!
837836:2014/05/25(日) 00:34:31.83 ID:GqkgEupz
もう少しやりたいことを補足します
instance_variable_setを使ってオブジェクトに動的にインスタンス変数を追加していて、
そのテストケースで、追加したインスタンス変数が定義されていることと
値のチェックをしたいのです。

定義されていることはinstance_variablesを使って行いましたが、
値の取得ができていません。
838デフォルトの名無しさん:2014/05/25(日) 00:38:54.50 ID:AqTKLZGG
instance_variable_getじゃねーの?
839デフォルトの名無しさん:2014/05/25(日) 00:43:47.62 ID:GqkgEupz
>>838
それでOKでした・・・お恥ずかしい
840デフォルトの名無しさん:2014/05/25(日) 00:47:01.30 ID:G8SvOUrx
夜中にワロタ
841デフォルトの名無しさん:2014/05/25(日) 00:47:30.70 ID:tgiyqQXE
m.times do |i|
n.times do |j|
# iとjを使った処理
end
end
のような2重ループを1重で書く方法はありますか?
Pythonを例に出して申し訳ないですがこういう↓
http://docs.python.jp/2/library/itertools.html#itertools.product
842デフォルトの名無しさん:2014/05/25(日) 00:50:44.21 ID:9u8Z5x23
843デフォルトの名無しさん:2014/05/25(日) 01:04:36.54 ID:tgiyqQXE
>>842
ありがとうございます
844デフォルトの名無しさん:2014/05/25(日) 21:04:18.15 ID:6jPp3Mu9
def hoge(info)
end

というメソッドがあり、infoは通常ArrayかHashが来るのですが、
そこにネストされたHashが来る場合処理を変えたいのです。

つまり通常は[:a, :b, :c]とか{ a: :X, b: :Y }とかいう引き数が来るのですが、
{
p: [:a, :b, :c],
q: { a: :X, b: :Y }.
r: [:e, :f, :g]
}
という引き数も受け取れるようにしたいのです。
これをメソッド内で判定するにはどうすればいいのでしょうか?


質問をごくシンプルにすると、ただのハッシュか、ネストされたハッシュかを判定する方法を教えて下さいということかもしれません
845デフォルトの名無しさん:2014/05/25(日) 22:22:50.56 ID:AqTKLZGG
info.values.first.is_a?(Hash)
846デフォルトの名無しさん:2014/05/25(日) 23:38:06.15 ID:6jPp3Mu9
ありがとうございました
847811:2014/05/28(水) 17:00:05.79 ID:SVdOuQRr
>>827
s = "16,1,A,13,3,D"

ソート前
"001YAMADA ?? ??080A"
"010YAMAMOTO ??090B"
"011YAMAMOTO ??090A"
下の様になってほしいんですが、うまく行きませんでした。
"011YAMAMOTO ??090A"
"001YAMADA ?? ??080A"
"010YAMAMOTO ??090B"

16,1,Aが第1キーで、
13,3,Dが第2キーなので 優先順位は第1、第2の順で並んで欲しいです。

http://ideone.com/kii3eP
848デフォルトの名無しさん:2014/05/28(水) 20:37:42.99 ID:KYfVKk6v
>>847
Rubyの添字は0から
849デフォルトの名無しさん:2014/05/28(水) 20:57:26.86 ID:bxqc+Cae
なんか質問の意図とコードの意図がさっぱりだから
ソート前とソート後のデータ数10件くらい出してくれたら何をどうしたいのか分かるかもしれない
850811:2014/05/28(水) 21:49:11.97 ID:sePIB49p
>>849

s = "16,1,A,13,3,D"
意味 17バイト目から1バイトを昇順。14バイト目から3バイトを降順に並べかえたい

いわゆる、クラス毎(Aクラス、Bクラスの順)の成績降順に並べかえたい

ソート前
"001YAMADA ?? ??080A"
"010YAMAMOTO ??090B"
"011YAMAMOTO ??090A"

ソート後
"011YAMAMOTO ??090A"
"001YAMADA ?? ??080A"
"010YAMAMOTO ??090B"

http://ideone.com/kii3eP
851デフォルトの名無しさん:2014/05/28(水) 22:02:50.69 ID:KYfVKk6v
>>850
Rubyの添字は0から

> i, l, d = k[0].to_i, k[1].to_i, k[2] == 'A' ? 1 : -1
i, l, d = k[0].to_i-1, k[1].to_i-1, k[2] == 'A' ? 1 : -1
とするか
> c = (a[i, l] <=> b[i, l]) * d
c = (a[i-1, l] <=> b[i-1, l]) * d
とする
852デフォルトの名無しさん:2014/05/28(水) 22:19:59.36 ID:KYfVKk6v
あぁ勘違いしてた
無視してださいな
853デフォルトの名無しさん:2014/05/28(水) 23:36:51.88 ID:mtzJ02bl
>>850
inject の引数に初期値を指定する
s.split(',').each_slice(3).inject(0){|c, k|

>>830 の 831 が指摘してるのはこのことか
> の中に["16", "1", "A"]が入って
> そのデータが使われる事もなく上書きしちゃってるけどそれは良いの?
> s = "16,1,A,13,3,D" の後半しか使わないなら
> each_sliceしてる意味がよくわからない
854811:2014/05/29(木) 08:41:03.84 ID:yOuey9AU
>>853
とりあえず動きました
ありがとうございました。

でも、injectの意味と
i,lに何が入るのかいまいち理解出来てないorz
855デフォルトの名無しさん:2014/05/29(木) 09:26:44.70 ID:6inXlVG/
s.split(',').each_slice(3).each_with_object(0) {| (i , l , d) , c |
&amp;#160; i = i.to_i # 16 , 13
&amp;#160; l = l.to_i # 1 , 3
&amp;#160; c = (a[i, l] <=> b[i, l]) * ( d == 'A' ? 1 : -1 )
&amp;#160; break c if c.nonzero?
}

injectの使い方がまず変だし
とりあえずその謎イテレータで0か0以外を返したいなら
each_with_object(0)でやったほうがまだ変数に無駄はないというか


途中で気づいたけど
その定数打ち込みみたいなのは
"001YAMADA 080A".split

["001YAMADA", "080A"]
になるのが分かってない奴のコードなんじゃない
856デフォルトの名無しさん:2014/05/29(木) 09:28:47.00 ID:6inXlVG/
うっは半角ついに打てなくなった
857デフォルトの名無しさん:2014/05/29(木) 17:23:25.44 ID:iB+Mol+9
NetBeans IDE 8.0
jruby 1.7.3

rubyで日本語文字を使うと invalid multibyte char (US-ASCII)エラーがでました
ぐぐって
1.netbeans.conf の netbeans_default_options の項目に"-J-Dfile.encoding=UTF-8"を追加
2.rubyファイルの先頭に"# encoding: utf-8"を追加

を行うとエラーは解消されたんですが、今度は文字化けするようになりました
p "あ" → "\u3042" みたいな状態です
どうやったら日本語が表示できるよになるかご存知のかたはいらっしゃいませんか?
よろしくお願いします
858デフォルトの名無しさん:2014/05/29(木) 19:24:31.76 ID:wRBMavnE
rubyじゃ無理
859デフォルトの名無しさん:2014/05/29(木) 20:06:33.50 ID:NXI36I92
それ文字化けちゃう
Unicode文字列や
860デフォルトの名無しさん:2014/05/29(木) 20:40:18.12 ID:Of0DEwli
>>857

・puts を使う
・jruby -Eutf-8 を与える
・おすすめしないけと Encoding.default_internal = "utf-8"を使う

好きなものを選ぶといい。
861デフォルトの名無しさん:2014/05/29(木) 22:25:55.99 ID:iB+Mol+9
>>857です
>>858-860さん
教えていただきありがとうございます
あれはUnicode文字列に直された「あ」であって、仕様ってことなんですね
ruby2.0.0でもターミナル上で試してみたけど同じ感じになりました

rubyは今朝から勉強しはじめたんですが、pとputsは同じものだと勘違いをしていました
>>860さんに教えてもらったputsやjrubyにオプションを使ってうまくできました
pとputsの仕様を理解して、どっちを使うか考えてみます
勉強になりました、ありがとうございます
862デフォルトの名無しさん:2014/05/30(金) 02:01:23.26 ID:zROOwId2
>>861
puts は文字列を表示するためのメソッドで、通常であればこちらを使う。
p はオブジェクトを人間が確認出来るように文字列化して表示するメソッドで、どちらかというとデバッグ用途向け。
nil や "" (空文字) が p と puts でどのように表示されるか試すといい。

それと "\u3042" はもともとユニコード文字列であったものをエスケープ表記したものであって、
ユニコード文字列に直されたものではないよ。
863デフォルトの名無しさん:2014/05/31(土) 01:35:32.52 ID:E8YeOxIS
Timeクラスのstrftimeについておたずねします。
リファレンスには「%C: 世紀 (2009年であれば 20)」とあって
実際の世紀より1小さい数字かとも思いましたが
2001年が20になってしまいます。
実装者が間抜けなのでしょうか?
それともリファレンスの執筆者のほうでしょうか?
864デフォルトの名無しさん:2014/05/31(土) 01:43:01.26 ID:koubozEB
2001年は21世紀だから20が返るのは当然
この点に関しては間抜けなのは実装者でもなくリファレンス執筆者でもなく、お前

ただ、2000年についても20が返る
これはstrftime(3)の説明では

Replaced by the year divided by 100 and truncated to an integer, as a decimal number

と書かれており、「100で割った切り捨て」なので、世紀ではない
この点ではリファレンス執筆者が間抜けということになる
865デフォルトの名無しさん:2014/05/31(土) 01:49:55.75 ID:DuPlv/A7
>>864
それ %y じゃない?
%C は Century の C で man 3 strftime は

% man 3 strftime
...
%C
is replaced by the century number (the year divided by 100 and truncated to an integer) as a decimal number [00-99].
866デフォルトの名無しさん:2014/05/31(土) 01:50:21.87 ID:6uEqwFlN
ISO 8601
867デフォルトの名無しさん:2014/05/31(土) 01:52:52.83 ID:koubozEB
>>865
%yは100で割った余りだろ

%Cは100で割って小数点以下切り捨てた値(the year divided by 100 and truncated to an integer)だ
これは世紀の(一般的な)定義とは一致しない
868デフォルトの名無しさん:2014/05/31(土) 02:25:34.65 ID:DuPlv/A7
>>867
その通りだ。失礼した
869デフォルトの名無しさん:2014/05/31(土) 03:37:22.16 ID:StQGqszV
くすくす
870デフォルトの名無しさん:2014/05/31(土) 19:55:38.67 ID:pZcQQNRh
class Hoge < Fuga
foo :bar
end



このfooはいつのタイミングで実行されるのでしょうか?
コンストラクタを通過する前ですか?
871デフォルトの名無しさん:2014/05/31(土) 20:37:08.23 ID:9VlbAaXB
fooのかわりに p _self とか入れてみればタイミングはわかるよ。

class ... end も評価(実行)される式であって、その評価の最中に fooo が呼ばれる。
ちな、 そのときの self は定義されつつある Hoge(Class クラスのインスタンス)。
872デフォルトの名無しさん:2014/05/31(土) 20:38:17.58 ID:9VlbAaXB
ごめん、なんか謎の _ が self についてるけど無視して。
873デフォルトの名無しさん:2014/06/02(月) 16:32:33.83 ID:1Or10QXx
ゾーン10進数を数字に変換したい。
例えば16進でx"303130c1"を数字の-101に変換したい
x"303130c1" #=> -101
x"31323334d5" #=> 12345
x"31d1" #=> 11

str.unpack("H*")[0]で文字列化は出来た

知識がたりなくて解決できんorz
874873:2014/06/02(月) 16:51:41.26 ID:1Or10QXx
符号を間違えた
x"303130D1" #=> -101
x"31323334C5" #=> 12345
x"31F1" #=> 11
875デフォルトの名無しさん:2014/06/02(月) 21:30:37.62 ID:xvF/lCz4
>>873
符号についてイマイチ要領がえられんがこういうことか?

def デコード(入力)
結果 = 0
符号 = 1
桁 = 1

while 入力 > 0
n = 入力 & 0x0f
if n == 0
符号 = -1
else
符号 = 1
結果 += n * 桁
end

桁 *= 10
入力 >>= 8
end

符号 * 結果
end

p デコード 0x303130D1 #=> -101
p デコード 0x31323334C5 #=> 12345
p デコード 0x31F1 #=> 11
876デフォルトの名無しさん:2014/06/02(月) 22:28:57.90 ID:oL0V5+7Q
def foo(&block)
bar &block
end

def bar(a, &block)
define_method(a, &block)
end


foo { puts :test }

2つ先のメソッドにブロックを渡したいときは、その経由するメソッドが常に&で引数を定義しているしか方法はないのでしょうか?
877デフォルトの名無しさん:2014/06/03(火) 00:00:17.22 ID:21gnvLmH
>>876
ブロックを受け取る方法としては、他には引数なしで proc を呼べばできる。
878873:2014/06/03(火) 04:24:41.01 ID:uM/LkyJo
>>875
マスク掛ければいいのか!!!
なるほど。
勉強になります
879873:2014/06/03(火) 04:47:03.82 ID:uM/LkyJo
>>875
n = 入力 & 0x0f
試してないけど、符号が取得できない気がする

上位 = 入力 & 0xf0
if 上位 == 0xd0
符号 = -1
else
符号 = 1
end
とかで出来るんだろか?
880デフォルトの名無しさん:2014/06/03(火) 09:36:07.26 ID:cUWl3TqT
>>877
yieldではダメなんですか?
881デフォルトの名無しさん:2014/06/04(水) 21:36:03.20 ID:RXK6c4Kp
>>879
符号は最上位バイトが 0 を意味するかどうかで決まるんじゃないのか。
>>875 の方法は小さい桁から処理するようになっているから >>879 の方法をそのまま組み合わせてもうまくいかないよ。
もう少し追加する必要がある。
882デフォルトの名無しさん:2014/06/04(水) 21:40:03.92 ID:RXK6c4Kp
>>880
>>876 は『2つ先のメソッドにブロックを渡したい』と言っている。
受け取ったブロックをそのままの形で渡したいという意味であれば yield は当てはまらない。
実行結果は大差ないのだろうけれど。
883デフォルトの名無しさん:2014/06/05(木) 00:41:53.02 ID:Q6SBWoxC
教えてください。

タプルを使って、プロセス間の通信を行おうと思います。
で、どうなるのかな〜と、サーバ側で受信をしないまま、クライアント側で延々と送信するってことをやってみました。
サーバ側でデータがたまる?と送信側がだんだんと遅くなっていくように思えました。
この点について、

1. サーバ側で、バッファ?にたまったままのデータの総量を知ることは可能でしょうか。
2. サーバ側で、バッファ?に指定値以上のデータが溜まった場合に、
  クライアント側で送信が失敗するようにすることは可能でしょうか。

いずれも可能であれば、その方法も教えていただければと思います。お願いします。
884デフォルトの名無しさん:2014/06/05(木) 04:43:31.41 ID:82BFuaye
UDP
885873:2014/06/05(木) 10:13:44.42 ID:mY6j5Wz3
>>881
説明不足ですみませんでした。
ゾーン10進数は、一番右端の上位がdでマイナス
cかfでプラスです
886デフォルトの名無しさん:2014/06/05(木) 11:24:57.02 ID:ETtr0yD7
松江、プログラミング言語「Ruby」普及を目指しサイト開設
http://peace.2ch.net/test/read.cgi/newsplus/1401934609/
887デフォルトの名無しさん:2014/06/05(木) 18:49:38.12 ID:vH4xfyJG
t =Thread.start{
  loop{
    puts "hello"
    sleep 2
  }
}
とスレッドを作っておいて、t.stop t.runで止めたり走らせたりしよとしましたが、
失敗します。どうやればいいでしょうか?
888デフォルトの名無しさん:2014/06/05(木) 21:13:02.23 ID:TjofFVL8
>>883
>1. サーバ側で、バッファ?にたまったままのデータの総量を知ることは可能でしょうか。

できない

>2. サーバ側で、バッファ?に指定値以上のデータが溜まった場合に、
  クライアント側で送信が失敗するようにすることは可能でしょうか。

プロセス間通信サービス上で「フロー制御」と呼ばれる規約(プロトコル)を実現するのが真面目な解決策
フロー制御に関しては、まず最初にWikipediaを参照のこと
詳しくは「ネットワークプログラミング相談室」スレで質問を投げたほうがいい

ただし、普通はバッファが満杯で送信が一時的に不可になるとプロセス間通信サービスへの
呼び出しそのものがブロックされるので、それにまかせるのが一般的な実装
もしもブロックを避けたいのであれば、送信処理だけを独立したスレッドで実行するといった
根本的な方式設計の見直しを検討すべき
それすら難しい環境が前提であれば、はじめてフロー制御の実装も検討課題になる
889デフォルトの名無しさん:2014/06/05(木) 21:24:32.37 ID:KxqpnMQp
tumblr_clientを使って取得したデータを置換したいのですが、

tumblrapi.rb:12:in `<main>': undefined method `gsub' for #<Hash:0xb8ece81c> (NoMethodError)
とエラーが出てうまくいきません。

コードの関連すると思われる部分はこんなかんじで、
tumblr = Tumblr.new.posts("hoge.tumblr.com", {:tag => "aaa"})
puts tumblr.gsub("=>",":")

Tumblr.new.posts("hoge.tumblr.com", {:tag => "aaa"})の中身は
{"blog"=>{"title"=>"題名未設定", "name"=>"hoge", "posts"=>1793, "url"=>"http://hoge.tumblr.com/",
"updated"=>1401719378, "description"=>"", "ask"=>false, "ask_page_title"

ってかんじです。
どうやったらうまく行くかわかる方がいたら教えてください。
OSはxubuntu14.04LTSでrubyのバージョンはruby 2.1.1p76です
890デフォルトの名無しさん:2014/06/05(木) 21:45:51.67 ID:andVixui
エラーメッセージの通り
Hashにはgsubなんてメソッドはない
891デフォルトの名無しさん:2014/06/05(木) 21:54:17.56 ID:TjofFVL8
892883:2014/06/05(木) 23:28:39.57 ID:Q6SBWoxC
返信をありがとうございます。

>>884
UDP で送れば、送信側では遅延が発生しないって解釈で正しいですか。

>>888
実現性について、はっきりしたので助かりました。

他人が書いたコードを引き継ぎまして。自分も ruby はあまり経験がなく。
どうも受信した側の処理速度が遅いらしく、気がつくとだいぶか前に受信したデータを処理しているなんてこともあるようでして。
この影響からか、送信側でもタイムアウトエラーが出ているようです。
それでこの対策として、「溜まってたらそれ以上送信できないようにする」という案があり、実現性と有効性を考えていました。

いくつか他にもネタがあるので、根本的な修正をそれとなく提案してはいるような状態です。
893デフォルトの名無しさん:2014/06/06(金) 05:20:22.20 ID:6xRK/1HT
はじめまして。現在Rubyを勉強を始めたばかりです。

Rubyの勉強をするに当たり、自分の書いているコードがどの程度メモリを消費するのかと思い、
ObjectSpace.count_objects()
にて確認しようと思っているのですが、各項目の意味がわかりません。

マニュアル等にもこの項目の説明がないのですが、それぞれの意味はどのようなものなのでしょうか?

最初のTOTALとFREEがメモリ消費量と空き容量と考えたのですが、FREEが空いているにも関わらずTOTALが増えるなど動作がよくりかいできません。
また、この数字の単位はなにになるのでしょうか?
私の環境ではインタプリタの起動だけであれば、20000程度になるのですか単位はKBなのでしょうか?

よろしくおねがいします。
894873:2014/06/06(金) 12:47:39.81 ID:MzEt5DgJ
>>891
ありがとうございました。
895873:2014/06/06(金) 15:49:01.01 ID:MzEt5DgJ
いつもお世話になっています。
今度は渡されたパラメータによってデータを抽出したいのですが、
良いアイデアがあったらお願いします。

パラメタ説明
「位置,長さ,データ形式,演算子,比較値」を1セットとして
OR,AND,カッコ()などで条件式を自由に記述する事ができます。
データ形式「CH=文字,以外は数字」
演算子「EQ:(a == b),NE:(a != b),GT:(a > b),GE:(a >= b),LT:(a < b),LE=(a <= b)

たとえば
# (Aクラス かつ 80点以上)または(Bクラス かつ 50点以上)または(Cクラス)を抽出
#パラメタ= "(0,1,CH,EQ,"A",AND,14,3,ZD,GE,80),OR,(0,1,CH,EQ,"B",AND,14,3,ZD,GE,50),OR,(0,1,CH,EQ,"C")"

rubyで書くとこんな感じになります。
outdata = Array.new
indata.each{|s|
if (s[0,1] == "A" && s[14,3].to_i >= 80) ||
(s[0,1] == "B" && s[14,3].to_i >= 50) ||
(s[0,1] == "C")
outdata.push(s)
end
}

パラメタを解析して、上記のような抽出条件を生成したいです。
よろしくお願いします。

http://ideone.com/Mqr7Yv
896デフォルトの名無しさん:2014/06/06(金) 18:20:55.25 ID:P72D4ejY
>>895
・パラメータは、1つのCSV文字列にする。
・パラメータ文字列内は、逆ポーランド記法にする。
897デフォルトの名無しさん:2014/06/06(金) 23:39:47.35 ID:XcM2C4Vm
>>894
>>891を一晩置いて見直したら、より簡潔になった...かも
  http://play.island.ac/codepaste/code?id=1580

[変更点]
・String#getbyte で最終バイトを取り出すようにした
・メソッドの命名が適切ではないように思えたので、訂正した
898デフォルトの名無しさん:2014/06/07(土) 06:11:31.37 ID:HlN+9CGy
チケットとかの申込をさせるプログラムを書きたいんだけどRubyは適してる?
どこから勉強はじめていいかも教えてもらえるとありがたい。
899デフォルトの名無しさん:2014/06/07(土) 06:18:37.46 ID:9GBf0cSU
>>898
いきなり言語から選ぶ時点で間違っている。設計による。
900デフォルトの名無しさん:2014/06/07(土) 08:11:56.19 ID:HlN+9CGy
>>899
なるほど。あまりWebに関する知識も経験もないんだけど、設計とはどんな感じですればいいのだろう?
取っ掛かりが分からなくて困ってる。
901デフォルトの名無しさん:2014/06/07(土) 09:07:48.71 ID:/gMYq1Ml
Rails なら馬鹿でも使えるよ!
902デフォルトの名無しさん:2014/06/07(土) 09:37:39.73 ID:HlN+9CGy
>>901
バカは喋らないでほしい
903デフォルトの名無しさん:2014/06/07(土) 10:31:39.69 ID:9GBf0cSU
>>900
いつのまにwebという設計にしたが知らんが。
OMTとか既存の設計手法を使えばいいんじゃない。ただいきなりやっても失敗するだろうから、まともな設計ができる人の下について学ぶ方がいいと思う。
904895:2014/06/07(土) 13:56:57.57 ID:nytus6Pq
>>895
逆ポーランド記法調べたけど、難しい(汗;
初心者の俺はカッコ悪いけどeval使った方が分かりやすかったorz

ご意見をお願いします。

http://ideone.com/TRracO
905デフォルトの名無しさん:2014/06/07(土) 16:47:42.58 ID:7QdOHJtS
>>893
ruby が管理しているオブジェクトの個数を表しており、バイト数ではない。
で、TOTAL は FREE も含めたオブジェクトの総数を示している。
残念ながら使用メモリ量を確認する手段は用意されていない。
OS が提供する機能を dl ライブラリを通して取得するか、gem ライブラリにあるかは不明だがそちらを探してみ。

ちなみに ObjectSpace.count_objects が返すそれぞれのキーは ruby の実装内部におけるデータ形式で、
それぞれのインスタンスだと考えていい。
例えば T_STRING は文字列 (派生を含む String クラスのインスタンス) を表している。
分かりづらいのは
* T_DATA が C 言語レベルでのデータを持つインスタンス
* T_ICLASS が特異オブジェクトのための特殊なクラス
* T_NODE が ruby スクリプトを解釈した構文木の要素
を表しているってところかな。
906,,・´∀`・,,)っ-○○○:2014/06/07(土) 17:20:34.79 ID:x3Apu0jy
>>901
雛形改造レベルである程度のものが作れるのは確かだけど
バカには使わせちゃいけないのがRails
907デフォルトの名無しさん:2014/06/07(土) 22:09:30.36 ID:mg6Kw861
そう思った理由とソースを書けよタコ野郎
908デフォルトの名無しさん:2014/06/09(月) 00:23:25.94 ID:6m+ifHBS
rubyとpythonがよく比較にあがるらしいのですが、具体的にどんな違いがありますか?
仕事で使われる時に、何故rubyを使うのか、pythonを使うのかといった判断基準も気になります
909デフォルトの名無しさん:2014/06/09(月) 01:01:27.54 ID:xabr+HDU
>>908
他言語との比較はスレ違いなので、以下のスレへ移動を:
・【PHP,JavaScript】スクリプト バトルロワイヤル43【pl,rb,py】
  http://peace.2ch.net/test/read.cgi/tech/1396153182/
910デフォルトの名無しさん:2014/06/09(月) 16:22:14.70 ID:wV+5vPJS
Rubyって、サブクラスからスーパークラスの別名メソッド呼べないんですかー?
スーパークラスの同名メソッドならsuperで呼べるんですが。
911910:2014/06/09(月) 16:28:05.18 ID:wV+5vPJS
あ、スーパークラスのメソッドがサブクラスでオーバーライドされている時です。
912デフォルトの名無しさん:2014/06/09(月) 16:57:11.45 ID:uTgA5MBX
そんなことになるなら継承しちゃいかん
913デフォルトの名無しさん:2014/06/09(月) 17:44:39.21 ID:aKPgDywM
ttp://www.ruby-doc.org/core-2.1.2/Module.html#method-i-instance_method
でクラスやモジュールのインスタンスメソッドをぶっこ抜いて
ttp://www.ruby-doc.org/core-2.1.2/UnboundMethod.html#method-i-bind
でサブクラスのインスタンスを指定し
ttp://www.ruby-doc.org/core-2.1.2/Method.html#method-i-call
でメソッドを呼ぶ

使い辛いって? 推奨されない方法だからな
親飛び越えて意見できるとは思わないほうがいいぞ
914910:2014/06/09(月) 18:20:01.87 ID:wV+5vPJS
>>913
先生こうですか!
できました、ありがとうございます。

くだらないことでも、質問してよかったです。
ためになりました。

class A
def foo; "Super!"; end
end

class B < A
def foo; "Sub..."; end
def bar
um = A.instance_method(:foo)
um.bind(self).call
end
end

p B.new.bar
915デフォルトの名無しさん:2014/06/09(月) 20:04:31.20 ID:aKPgDywM
くそっ わざわざ英語のリファレンスを選んだってのに

というかそのクラス構成ならclass Bでdef fooをする前にaliasをして
barからそのメソッドを呼ぶようにするべきだな
916,,・´∀`・,,)っ-○○○:2014/06/09(月) 20:15:13.69 ID:zgyYB5Bh
何を作りたいかは知らないが
経験上単一継承で作るよりは極力必要なクラスでMix-inしたほうがいいかなと思う。

ActiveRecord::Base
    |
HogeAppBase←ここにあらゆる共通メソッドを追加
    |
  Model複数

こんな継承関係やったらコードがえらく汚くなったことがある
917910:2014/06/09(月) 20:16:44.97 ID:wV+5vPJS
>>915
なるほど、この方法も見事ですね。
こんなのを思いつくなんて、先生は相当な手足れですね。

class A
def foo; "Super!"; end
end

class B < A
alias baz foo
def foo; "Sub..."; end
def bar; baz; end
end

p B.new.bar

ありがとうございました。
918910:2014/06/09(月) 20:18:19.39 ID:wV+5vPJS
>>916
Rubyの試験受けようかと思って、いろいろ遊んでるだけです。
また教えてくださいね。
919デフォルトの名無しさん:2014/06/09(月) 21:00:09.69 ID:4OU1CSGO
2.1.2でSJISとバイナリの混合データを処理し画面に
表示する場合、どのような実装が推奨されますか?
試してみたこと
1.1.8的に書く
 →$>に出力すると文字化けで読めない
2.read後にforce_encoding("Windows-31J")で文字コードをセット
 →scan(regexp)や[regexp, n]などでエラーが出る
3.適宜Windows-31JとASCII-8BITを切り替える
 →トラブルの元
4.表示するたびにNKFやKCONVで変換
 →そのためにNKFを使うのも・・・見た目もよくない
なにか、お手軽かつスマートな実装があれば・・・

よろしくお願いします
920デフォルトの名無しさん:2014/06/09(月) 21:02:32.61 ID:aJwnrUlY
binaryで読んで文字列部分だけ切り出してforce_encoding
921デフォルトの名無しさん:2014/06/09(月) 23:58:48.76 ID:aKPgDywM
>>917
俺が考えたんじゃなくて先達の知恵
オープンソースっつー鉱脈もあるんだから
この手のことは他人から盗むのが一番だ(コピペの意味じゃないからな、念のため)
922デフォルトの名無しさん:2014/06/10(火) 08:04:05.73 ID:oUviKcQy
>>898-903
WEB系でDB を使うのは、PHP が多い
Web プログラミング板を参照
PHPのスレが数十ある

山田祥寛(よしひろ)
10日でおぼえる PHP 入門教室、第4版、2012

この本では、Apache Friendsが提供する、XAMPPを使っている
XAMPPとは、Apache ウェブサーバやMySQL, PHP
などがセットになったもの

Rubyは、シェルスクリプトやPerlを置き換えるもので、
サーバの構築などに使われる
プログラミングするというより、
条件分岐してコマンドを呼び出すのによい
923デフォルトの名無しさん:2014/06/10(火) 08:08:39.73 ID:KjUuulVT
Perl代わりとしては
OSとは別個に入れて管理しなきゃいけないのと互換性の低さが致命的なんだよなあ
924デフォルトの名無しさん:2014/06/10(火) 08:54:36.77 ID:fSq5srf6
>>923
PerlがOSインストールと同時に入るような環境なら、RubyもOSに合ったもの入れられるだろ。
Windowsとかの、パッケージ管理が無い環境なら論外だが。
925デフォルトの名無しさん:2014/06/10(火) 09:09:49.09 ID:DTzE393w
>>923
PerlでもPythonでもそれは同じじゃないか
926デフォルトの名無しさん:2014/06/10(火) 09:53:41.53 ID:pVqiHj2n
>>922
PHPはウェブデザイナが手を出しやすいから人が多いだけで、使いづらいと感じる。
927デフォルトの名無しさん:2014/06/10(火) 17:48:49.11 ID:+LdDk5l6
林檎謹製Swiftだって。。。

対抗馬になりそうな言語への弾圧作戦が開始されるんだろうね
林檎箱から指令を受けたマカーによる工作が、

Pythonなど支援団体が強固なところは乗り切れるだろうが、Rubyはどうかな
マカーに祭り上げられてポヤポヤしてたときに潜入した工作員や団体が残ってるから
ダメも知らんね。すでにガタガタ言わされてるようですね。
Macサイコー!Windowsしねーみたいな感じだったでしょ、いまさらWIndowsを
拠点にするわけにも逝かないし、Linuxはやっぱり鯖用途が重視されるから
拠点を構築してても攻撃されたら一気に持っていかれそう。

JRubyみたいな感じで旧資産を吸収される流れを加速させて工作員ごと分離して
廃棄後に、国産言語枠で細々とやっていくというのが現実的なのかもね。
928デフォルトの名無しさん:2014/06/10(火) 18:02:25.46 ID:txlE9CX2
>>924
Windowsにもパッケージ管理導入されるよ
929デフォルトの名無しさん:2014/06/10(火) 20:46:09.64 ID:5HgHF0GA
>>927
Swiftに踊らされる馬鹿がここにも一匹

Objctive-C にあった裸のC言語によるメモリ破壊という欠点を補い、
対抗相手のJava/C++と同レベルのメモリ保護に追いついたのがSwiftだ
それがAppleの言う安全性(safety)というSwiftの利点の意味するもの
静的型付け言語としてSwiftと比較、競合されるのはObjC/Java/C++であって、
PythonやRubyといったスクリプト言語に直接的な影響を与えることはない

ましてや現時点において、OSX/iOSといったAppleプラットフォーム上で
死にかけているスクリプト言語はRubyではなくPythonのほうだ
Rubyには、MacRuby(OSX)やRubyMotion/RubyMobi(iOS)があるから、
OSX/iOSネイティブ・アプリケーションを素早く開発するための
オープンソースなスクリプト言語として最も優位な位置を占めている
それに対して、Pythonといえば旧世代の実装であるPyObjCで開発が停滞している

・Python for iOS (like RubyMotion) - Stack Overflow
 http://stackoverflow.com/questions/10456648/python-for-ios-like-rubymotion

> you can't really compare PyObjC and Macruby, PyObjC is a bridge like RubyCocoa
> as you already said MacRuby is Ruby on Top of ObjC runtime.
> By replacing the Garbage collector from PyObjC will not work since it's a Bridge.
> &#x2013; Sean Mateus May 14 '12 at 13:32
930デフォルトの名無しさん:2014/06/10(火) 21:07:15.47 ID:KXd/m63n
Ruby 2.xが標準で載るのは何時なんだろ。
レン鯖は今だにサポートの終った1.8.7しか載っていないし。
931デフォルトの名無しさん:2014/06/10(火) 21:18:40.37 ID:g4Ir3b+j
CentOSのパッケージに入ったときだろうな
932,,・´∀`・,,)っ-○○○:2014/06/11(水) 20:47:27.03 ID:LAxb9MUT
MacユーザーこそRails使いが多い
ネイティブコード吐く言語とWebに強いインタプリタ言語じゃ全然守備範囲が違うだろ
933デフォルトの名無しさん:2014/06/11(水) 21:01:27.46 ID:+K6AGXZI
Rails使いにMacユーザーが多いのは確かだが逆はそうでもない
世界的に見ればMacユーザーはPythonの圧勝だ
934デフォルトの名無しさん:2014/06/11(水) 21:20:29.46 ID:uvpFnhzC
絶対プログラマ数であればPythonのほうが多いのは現実だから、
それに比例してMac/iPhoneユーザのプログラマ数でも
おそらくはRubyプログラマよりPythonプログラマが多いのだろう
(Macには個人向けUNIXワークステーションとしての用途があるからね)

ただし>>929で書いたように、言語の処理系実装という技術的視点であれば、
ネイティブOSX/iOS開発向けスクリプト言語として「Pythonの敗北は決定的」だ
PyObjCは(RubyCocoaに相当する)ブリッジを前提とした世代遅れの実装でしかない
935,,・´∀`・,,)っ-○○○:2014/06/11(水) 22:17:50.70 ID:LAxb9MUT
本番環境はやっぱりUbuntuのLTSだよな
936デフォルトの名無しさん:2014/06/12(木) 02:47:24.54 ID:847Pam/V
ttp://ideone.com/dHxqTh

どこかで見かけた階段の登り方の総数は。(一回に上れるのは1,2,3段)
という問題を解いていてトリボナッチ数列使えることに気づき上記のコードを書いたのですが、これ以上に最適化(高速化、より深い再帰など)ってできるんでしょうか。
937デフォルトの名無しさん:2014/06/12(木) 10:06:43.99 ID:LyErUNET
それがわかるレベルの人はここにはいないので
2ch以外で聞いた方がいいです
938デフォルトの名無しさん:2014/06/12(木) 11:05:49.98 ID:VXukLz1K
>>936
ほとんど変わらんけど

class TriBonacci
def initialize
@memo = [1,1,2]
end
def f(n)
@memo[n] || @memo[n] = f(n-1) + f(n-2) + f(n-3)
end
end

n = 6500
p TriBonacci.new.f(n)
939デフォルトの名無しさん:2014/06/12(木) 15:04:11.34 ID:csvGFFzv
940デフォルトの名無しさん:2014/06/12(木) 16:12:24.10 ID:SK659vFt
なぜTwitterは低遅延のままスケールできたのか 秒間120万つぶやきを処理、Twitterシステムの“今” − @IT
http://www.atmarkit.co.jp/news/201004/19/twitter.html

RORのままアーキテクチャの変更で10000%高速化したとな。
ttp://b.hatena.ne.jp/entry/highscalability.com/scaling-twitter-making-twitter-10000-percent-faster

ミニブログの Twitterのstats(統計)データ。
http://kaworu.jpn.org/kaworu/2008-01-16-2.php
- 350,000を超えるユーザ。
- 秒間600リクエスト
- 平均毎秒200-300コネクション。最大時は秒間800コネクション
- MySQLは秒間2,400リクエストを処理する
- 180のRailsインスタンスがある。MongrelのWebサーバを使っている。
- 1つのMySQLサーバ(1つの大きな 8コアのサーバ)と1つのスレーブ。スレーブは、統計とレポートのための読み込み専用(リードオンリー)。
- 雑用処理をするための30+のプロセス
- 8台のSun X4100s
- Railsでのリクエストの処理時間は200 msec
- データベースにかかる時間の平均は、50-100 msec
- 16GBの memcached
941デフォルトの名無しさん:2014/06/12(木) 17:32:57.78 ID:847Pam/V
>>938
成る程、短絡にすると読みやすいし無駄も減りますね。

>>939
ものすごい数の場合を計算させるときは素直に計算するのではなく、アルゴリズムを考えるのが正解なんでしょうか。
942デフォルトの名無しさん:2014/06/12(木) 18:16:01.13 ID:FSiTWKCJ
4コア8コア当たり前のせかいだし
シェルに投げてもいいんじゃないの?
943デフォルトの名無しさん:2014/06/13(金) 06:22:35.86 ID:iDk9iIjv
>>936
http://ideone.com/tG0ln6

O(log n) のアルゴリズムで書いてみた。
n = 1000000 でも1秒かからない(結果を出力しなければ)。
分からないことがあったら聞いてくれ。
944デフォルトの名無しさん:2014/06/14(土) 03:24:05.95 ID:2dTBHwj7
>>943
このアルゴリズムの成立過程が気になります。
トリボナッチ数列に固有の性質として添え字が偶数奇数かにより効率よく計算できる式が導けるける。ということでしょうか。

require 'matrix'
def f(n)
(Matrix[[1,1,1],[1,0,0],[0,1,0]]**n)[0,0]
end

なんてのも試しましたが
n = 1000000
のとき>>953のコードの凡そ15倍でした。
945デフォルトの名無しさん:2014/06/15(日) 02:27:52.26 ID:bxBuaLtn
>>944
書きかけでこれから書き直すと思うけど
http://d.hatena.ne.jp/haruya12/20140614/1402766602
946デフォルトの名無しさん:2014/06/15(日) 06:29:10.87 ID:/gWIMzTb
質問です。

スクリプトファイル内で、スクリプトファイルが置かれているディレクトリを
取得したいんですが、どうすればいいでしょうか。

File.basename($0) とすると、他のスクリプトファイルから呼ばれた時に、
「呼び出した側」のパスが $0 に入ってきてしまいます。

どこから呼ばれても「呼び出された側」のパスを取得できるようにしたいのです。

よろしくお願いします。
947デフォルトの名無しさん:2014/06/15(日) 08:27:44.07 ID:qa4IDQI3
>>945
なるほど、一般項を出すのではなく別の表現を得るために特性多項式を用いることもできるのですね。

行列のn乗を2n乗にして比較するとかはフィボナッチ数列の場合ほどうまくいかなかったので諦めてしまったのですが、これは目から鱗でした。
948デフォルトの名無しさん:2014/06/15(日) 09:18:25.58 ID:RmAzQm82
>>946
__FILE__
949946:2014/06/15(日) 09:33:39.88 ID:/gWIMzTb
>>948
「Ruby __FILE__」でググったところ、File.expand_path(".") で
「呼び出される側」のディレクトリが取得できることがわかりました。

ありがとうございました。
これで、どこからスクリプトを呼んでも同じ挙動をするようにできます。
950デフォルトの名無しさん:2014/06/15(日) 13:38:38.05 ID:lefrVeu0
ん?
951946:2014/06/15(日) 13:42:04.59 ID:/gWIMzTb
>>950
あ、>>950でFile.basenameとFile.dirname間違えました。
失礼しました。
952デフォルトの名無しさん:2014/06/15(日) 18:22:50.87 ID:gpx89xWw
$0
953デフォルトの名無しさん:2014/06/17(火) 23:56:38.23 ID:TjnCE1Im
gnuplotみたいに
gnuplot > hoge
とか対話式のコマンドラインツールを作りたいんだけど、
editlineとかreadlineみたいな仕組みも取り入れつつ、
簡単に書けるライブラリとかないでつかね
954デフォルトの名無しさん
>>953
標準ライブラリに readline があるよ
まずは「るりま」で公式リファレンスの解説を読み、
次に "ruby readline" でググるといいと思う
最近のこのスレだと Part52#346 にサンプルがある

 http://peace.2ch.net/test/read.cgi/tech/1370530209/346