[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 22:42 / Filesize : 246 KB / Number-of Response : 911
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 24



1 名前: 【大吉】 mailto:sage [2009/01/01(木) 13:13:22 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

   【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
   【最新安定版の Ruby1.8.7 の使用をお勧めします】
    ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。
      1.9 の新機能の一部が利用可能なので初学者にお勧めです。
    ※ただし十分安定しているとは言えないので
      プロダクション環境での利用にはお勧めしません。

関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/
 ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

326 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:51:08 ]
>>323
浮動小数点だから

何かを計算した結果の浮動小数点の値と、
それ以外の数式で何かを計算した(あるいは計算していない)浮動小数点の値が、
全く同じになるというようなことはふつう無い

だから、小数を含んでいる数値は絶対にイコールで比較してはいけない

どうしても比較したい場合は、たとえばその差を誤差並に小さな数 Float::EPSILON と比較する

irb> (3.2 - 2.0) -1.2 < Float::EPSILON
false
irb> (3.2 - 2.0) -1.2 < Float::EPSILON*10
true

10倍や100倍以内なら同じ数値とみなしてよい

327 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:53:11 ]
>>323
なるほど。
てことは、浮動小数点数の比較は安易にするなってことですかね。


328 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:55:18 ]
>>326
ありがとうございます!
そうゆうもんなんですね。
PHPから入った素人なんで、勉強になりました。

329 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:55:38 ]
あ、いかん、絶対値とらないと

((3.2 - 2.0) -1.2).abs < Float::EPSILON*10

こういうのでよろしこ

330 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:55:47 ]
rubyに限らず実数の比較をしないってのは基本
おおむね>>326の通りなんだけど、欲を言えば絶対値を取っておくほうがいい

331 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:57:40 ]
厳密じゃなくていいのなら、文字列にして比較してしまうというのがいいかもしれん
一般的な用途では文字レベルでしか判断しないからな

irb> (3.2-2.0).to_s == 1.2.to_s
true

332 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 20:29:17 ]
なぜ文字列にして比較を??
数値の比較の話じゃなかったの?

333 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 20:59:37 ]
>>332
文字列は

てか浮動小数点の指数の基数って
初心者の頃はずっと10なんだと思ってた。
で、なんで誤差が発生するんだとさんざん悩んでみたり
今からしたら俺アホかと




334 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:02:00 ]
しまったメインの話題を途中やめにしてた

数値を文字列に変換する過程である程度の誤差を丸めてくれるなら、
>>329みたいな過程を記述する必要がないってこと

たとえruby内で記録されている値が
1.19999999999 であっても
1.20000000001 であっても
表示するときは最下位を丸めて 1.2 になると。

浮動小数点はちょっとわかりにくいからwikipediaで調べてみそ
ja.wikipedia.org/wiki/浮動小数点数



335 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:05:56 ]
irb> (3.2 - 2.0) -1.2 < Float::EPSILON
false
これが true になるような左辺ってあるんだろうか

336 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:09:41 ]
左辺が絶対値ってことだと思うが左辺の方が小さかったらEPSILONの意味がないな


337 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:10:10 ]
0では?

338 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:11:50 ]
nil?

339 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:19:19 ]
www.google.co.jp/trends?q=php%2Cperl%2Cruby%2Cpythoin%2CASP.NET

ちょびっと逆転してる

340 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:20:10 ]
www.google.co.jp/trends?q=php%2Cruby&ctab=0&geo=US&geor=all&date=all&sort=0

間違えたこっちだった

341 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:27:17 ]
>>332
目に見える範囲の小数が等しいかどうかを調べるだけなら
これが「我々がアタマの中で考えてる」処理に一番近い

どちらが大きいかということが必要な場合はあまり(あるいは全く)使えないので用途に注意

342 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:32:43 ]
>>335
irb> (5.5 - 2.25) - 3.25 < Float::EPSILON
=> true

343 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:40:17 ]
>>326
<=にしたらtrueになった

irb> (3.2 - 2.0) -1.2 <= Float::EPSILON
true

344 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:41:18 ]
>>342
それは単に 0.0 なのでは
0.5 も 0.25 も割り切れてるもの



345 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 22:25:21 ]
Float::EPSILON < Float::EPSILON
false

Float::EPSILON <= Float::EPSILON
true

0.0 < Float::EPSILON
true

って話?


346 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 22:27:51 ]
Float::EPSILON とは <= で比較するのが正しいのかな


347 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 22:30:50 ]
A <= B と A < B || A == B の動作違うのってまずくね

348 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 23:00:14 ]
rubyってDLL作れる?

rubyで作ったプログラムをVBAやC#みたいな他ので使いまわせるようにしようと思ったら
どういう形式がいい?

349 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 23:05:35 ]
>> 336
マシンイプシロン Float::EPSILON は
1.0 + Float::EPSILON != 1.0
になる最小の数って意味だから違う。

IEEE754 の浮動小数点表現では、32 ビットの単精度でも指数部は 8 bits、仮数部 23 bit あるから
EPSILON はせいぜい 2.0**(-23) 程度

>> Float::EPSILON + 1.0 == 1.0
=> false
>> Float::EPSILON/2 + 1.0 == 1.0
=> true
>> 1e-20 < Float::EPSILON
=> true

だから、ちゃんと比較するなら絶対値で割ってから比較するべき
abs((a-b)/b) < Float::EPSILON
とか。b < Float::EPSILON のときの処理も必要だけど。



350 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 23:23:19 ]
1.0 + Float::HOGE == 1.0
になる最大の値 HOGE のことを何と言いますか

351 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 23:25:12 ]
マシンウプシロン

352 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 23:29:49 ]
Delphiだと引数にEpsilonを指定できる浮動小数用の比較関数(SameValueだっけか)が
あるんだけど、Rubyにはないのん?

いちいち絶対値とってそれがEpsilon以下って書かなきゃならない?
組み込みかライブラリであれば教えて頼む

353 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 23:32:30 ]
i.loveruby.net/d/20040502.html

354 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:00:41 ]
Ruby Cookbookに載っているコード

class Float
def approx(other, relative_epsilon=Float::EPSILON, epsilon=Float::EPSILON)
difference = other - self
return true if difference.abs <= epsilon
relative_error = (difference / (self > other ? self : other)).abs
return relative_error <= relative_epsilon
end
end

100.2.approx(100.1 + 0.1) # => true
10e10.approx(10e10+1e-5) # => true
100.0.approx(100+1e-5) # => false



355 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:04:56 ]
浮動小数点を比較しなきゃ逝けない用途って何?
コンピュータに向いてない作業の一つだな。

356 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:14:26 ]
シミュレーション?

357 名前:デフォルトの名無しさん [2009/01/11(日) 00:27:31 ]
RubyでGUIアプリケーションは作成可能でしょうか?
友人からは、GUIアプリケーションは
VC++、VBとかじゃないと無理と聞いたのですが・・・

358 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:37:12 ]
>>340
日本ではまだまだ遠いな
www.google.co.jp/trends?q=php%2Cruby&ctab=0&geo=JP&geor=all&date=all&sort=0

359 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:37:34 ]
>>354
self と other を比較する前に絶対値とらないと駄目なんじゃ。

360 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:38:08 ]
def check(name)
/name/ =~ "hiroyuki"
以下略

で/name/ をnameでマッチさせるのではなく引数の値を使うにはどうすればいいでしょうか?


361 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:50:37 ]
>>357
pc11.2ch.net/test/read.cgi/tech/1200175247/302-312

362 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:08:45 ]
ここまでBigDecimalへの言及無し。
ttp://www.ruby-lang.org/ja/man/html/BigDecimal.html

irb> require 'bigdecimal'
=> true
irb> BigDecimal.new("3.2") - BigDecimal.new("2.0") == BigDecimal.new("1.2")
=> true


363 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:11:56 ]
浮動小数点数の比較の話をしてるんだからBigDecimalの出る幕は無いだろ

364 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:20:00 ]
>>354
サンクス。組み込みではないっつーことか。

>>355
まーゲーム作るときとかちょっとした数値計算、
後ユニットテスト書くときなんかにはいるけど、
確かに最後の例以外Rubyには不適だかなあ



365 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:21:22 ]
>>360
def check(name)
name =~ "horioyuki"

で、
check呼ぶ時に正規表現リテラル渡せばよいのでは?
check(/.+oyu.+/)

366 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:26:58 ]
ちょっとお聞きしたいのですが、
wikiとかの表示によくあるプログラムの実行時間を
自分のスクリプトで表示したいのですが、
簡単にmsecの実行時間を測る方法はないでしょうか?

スクリプトの終了前に
puts Process.times.to_yaml
とかやってみたんですが、表示がさっぱり?です。
utimeとstime を足したものが実行時間なのかな?

367 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:28:51 ]
あれは単にWikiテキストの処理開始時と
処理終了時の差を取っただけなんじゃないか?

368 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:31:14 ]
>>366
基本的な計測はbenchmarkライブラリ(標準添付)でOK
あと、「Ruby プロファイラ」で検索すると色々出てくる

369 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:33:47 ]
>>363
おおもとは、>>323
> (3.2-2.0) == 1.2 がfalseの理由を教えて下さい。
だから、小数を含む数の扱いについて一通り言及すべきだと思うんだ。

370 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:40:08 ]
>>365
nameに渡す文字列はARGV.shiftで受け取ったものなんですよ・・・。
グローバル変数にすればよかったりしますかね・・・。


371 名前:370 mailto:sage [2009/01/11(日) 01:54:40 ]
グローバルしてみましたが結局 =~ の 左辺,右辺に変数がきてもいいのでしょうか?

372 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:10:29 ]
def check(name)
/#{name}/ =~ "hiroyuki"
end

p check("hiroyuki") # => 0

373 名前:370 mailto:sage [2009/01/11(日) 02:17:30 ]
>>372
ありがとうございました!!!!!!!!!うまくいきました。
=~の左辺の#{name}っていうのは変数としてみるってことですか?

374 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:18:34 ]
>>368
サンクス
benchmarkクラス使ってみる



375 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:28:14 ]
>>373
まあそんな感じだ
「式展開」について勉強すればよくわかる
www.ruby-lang.org/ja/man/html/_A5EAA5C6A5E9A5EB.html#a.bc.b0.c5.b8.b3.ab

376 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:28:22 ]
変な質問なうえにおそらく出来ないんだろうけど一縷の望みをかけて質問
メソッドの入れ子って出来ますか?
たとえば、
def method1
 処理
 def method2
  処理
 end
end
としたら、method1だけ呼びだしたらmethod1の処理のみで終了。
method1.method2みたいに呼びだしたら両方の処理を実行、みたいな。

この書き方だと
ttp://www.ruby-lang.org/ja/man/html/_A5AFA5E9A5B9A1BFA5E1A5BDA5C3A5C9A4CEC4EAB5C1.html#a.a5.e1.a5.bd.a5.c3.a5.c9.c4.ea.b5.c1.a4.ce.a5.cd.a5.b9.a5.c8
みたいになっちゃうから無理なのは明白だけど・・・

method1に引数を与えてmethod2の処理をif文でくくって引数の値で処理するか否かを
決めるって方法もあるけど、見た目的にごちゃごちゃするから嫌というか・・・

なんかいい方法あったら教えてください。

377 名前:370 mailto:sage [2009/01/11(日) 02:31:30 ]
>>375
ありがとございます。
昨日Rubyはじめたばっかりでいろんなサイトからつぎはぎで趣味プログラムしてたんで
リファレンスマニュアルというのをみてませんでした。まず、一読してみます!

378 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:32:20 ]
>>376
無理
素直にモジュール使って、Mod1.method1としなされ

379 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:34:20 ]
>>376
それではmethod2を定義しているだけで,method2を呼び出してはいない

def method1
puts "call method1"
def method2
puts "call method2"
end
method2
end

380 名前:379 mailto:sage [2009/01/11(日) 02:35:59 ]
ごめんはやとちりした

381 名前:376 mailto:sage [2009/01/11(日) 02:45:25 ]
>>378
無理かぁ・・・ありがと
Mo1.method1・・・method2はどこへ?
実はmethod1の処理がイテレータを含んでいて、変数を一周するたびに初期化して使うんだけど、
場合によっては初期化する前にmethod2の処理でその変数を使いたいから↑のようなことに・・・
モジュールだとダメそうなのでおとなしく引数と条件文で動かします。。

>>380
ドンマイw

382 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:47:47 ]
>>376
def method1
 処理1
 Proc.new do
  処理2
 end
end

method1
method1.call

近いことを無理やりやろうとすれば、
こんなのは思いつくが、普通はやらない
端的に言って不気味すぎる

383 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 03:00:57 ]
いやいや、初心者のこんな突拍子もないアイデアから、すごいアイデアがでたりする。
1000個に1個ぐらい。
だから初心者は1000個のアイデアを出すんだ!

384 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 03:14:53 ]
callが気に食わない

def method1
 処理1
 pr = Proc.new do
  処理2
 end
 pr.instance_eval "alias :method2 :call"
 pr
end

method1
method1.method2





385 名前:376 mailto:sage [2009/01/11(日) 03:22:55 ]
>>382
おお、できるんだ!?
ありがと〜

ぶ、不気味なのか・・・

>>384
求めていたものが完璧に・・・お見事です。

お二方、ありがとうございます。

386 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 03:40:36 ]
開発環境なに使ってますか?
自分はLinuxでは基本Netbeansで、ちょっとした修正はemacsで。
eclipseとかもあるけどどんな開発環境使っているか気になったので・・・。

387 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 03:59:55 ]
vi

388 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 04:07:59 ]
今時 vi はないだろう vi は。
俺は断然 vim だな。

389 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 04:10:20 ]
メモ帳

390 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 04:14:26 ]
俺はEclipseにRubyプラグイン
editer使ってる人は補完なくて大丈夫なの?

391 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 04:25:12 ]
いや、もちろんエディタにも補完はあるよ
VimのRubyに対する補完はかなり強力。それ以上に操作性が好きで使っているけど

392 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 04:29:52 ]
ずっとEmacs
ちなみにMatzもEmacs

まあ人に何が良いか,って聞かれたらNetbeans勧めるかもな

393 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 04:30:07 ]
viの学習曲線の最初でくじけたのでemacsで

394 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 07:48:14 ]
俺は断然 vi



395 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 08:18:34 ]
あんな日本語も通らない化石エディタよく使う気になるな

396 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 08:56:02 ]
個人用途なので基本的にはどうでもいいんですが気になるので質問します

HTMLとかから正規表現とかでデータ抜き出して、データ保管クラスのインスタンス変数に保管します。
initialize の時点でたくさんのインスタンス変数に値を入れたいんですが、

def initialize(params, data)
@a = params[:a]
@b = params[:b]
@c, @d, @e = parse_in_init(data)
end



def initialize(params, data)
@a = params[:a]
@b = params[:b]
make_c_d_e(data)
end
def make_c_d_e(data)
@c = someprocess1(data)
@d = someprocess2(data)
@e = someprocess3(data)
end

って、どっちが見通しいいもんでしょう?
ちょっと面倒でも明示的に代入の形を見せる前者のほうが初期化プロセスっぽく見えて好ましい?

397 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:03:43 ]
>>396
YES

ただ、make_c_d_e みたいなそれっぽいのが initialize の直後に定義されてれば
「あーinitializeの続きかー」と思って読むから別に気にはしない
Util.parsehtml とかどっか遠いとこに定義されてるクラスメソッドがinitializeで呼ばれてるとやる気なくす

398 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:38:12 ]
def initialize(params, data)
@params = params
@data = parse_in_init(data)
end


399 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:43:49 ]
>>398
なにそのユーザー丸投げルーチン

いちいちハッシュの引数で参照するのがめんどいまたは間違いやすいからインスタンス変数にしてんじゃねの

400 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:45:50 ]
>>399
@params を書き込み可能にしておけば外部からデータ追加するのも楽々だぜ?

401 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:09:51 ]
>>400
外部からデータを追加する必要があって、なおかつその方法しか考えられないようなときなら一理あるけど
そうでなければ、ここでハッシュを使うのは問題が大きすぎる

402 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:15:06 ]
Javascriptだと
a={'hoge': huga, 'hage': fuga};
a.hoge
a.hage
にアクセス出来ていいんだよね


403 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:17:30 ]
Ruby でもやろうと思えば出来るっしょ

404 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:17:39 ]
アクセサ作ればいい
めんどくさいけど



405 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:24:49 ]
StructA = Struct.new(:hoge, :hage)
a = StructA.new('huga', 'huga')
p a.hoge
p a[:hoge]
p a[0]

"huga"
"huga"
"huga"
オーイエー

>>402
どっかのgemにそんなのあったな



406 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:44:53 ]
来たなStruct厨
総員迎撃準備

407 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:51:36 ]
Structって嫌われてんの?

408 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:01:58 ]
Struct.newにJSONぶっこめる?

409 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:09:18 ]
>>407
他言語から来た人がArrayやHashを使い込むことなく安易に使うものの代表だから、嫌がられてはいるね
まずはArrayとHashを使い倒してからにして欲しいなと思う所存

>>408
分けてくれ

410 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:38:19 ]
>>395
通るぞ?@Solaris10

411 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:39:19 ]
ttp://www.ruby-lang.org/ja/documentation/
ここの検索こわれてるみたいなんだけどいつ治りますか

412 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:41:36 ]
>>410
動物は一度鎖に繋がれてしまうと鎖が杭から外れていても
逃げられないと思い込んでしまうものなのです

413 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:42:25 ]
>>410
それは日本語パッチ当たってるんじゃね

てか、「お前らが使ってるのは vi じゃなくて vi クローンのどれかまたは vim だろ」というツッコミを
誰かがしないと終わらんな

414 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 12:25:43 ]
>>413
OS標準。つか、Solarisは遠い昔から、日本語localeが入ってりゃちゃんと日本語使える。(viに限らず。そのせいで痛い目にあうこともまれにあるが)



415 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 13:15:48 ]
emacs入ってない環境はたくさんあるけど、viが無い環境は稀。
まあ開発環境は何でも好きなの自分で入れろよと思うけどな。

416 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 14:49:23 ]
だからメモ帳最強って何度言わせるんだよ!!

417 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 14:55:18 ]
Windows環境でJmEditorとRDEとNotepad++を使い分ける俺に隙はなかった

418 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:08:19 ]
>>415のようなことを稀に聞くが、vi でファイル編集できない人間などおらん

419 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:21:16 ]
Windows環境で、class Hoge(もしくは、def hoge、each do |x|)と打ってリターンをすると、
以下のように、endを付けインデントした位置にカーソルを持ってくるエディタはありますか?

class Hoge[Retrun]

  ↓

class A
 |
end

420 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:25:32 ]
Meadow(or Xyzzy)を入れて自分で作れってのはなし?

421 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:25:41 ]
>>419
xyzzyをカスタマイズ

422 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:46:14 ]
>>420-421
自分でカスタマイズする技量がないのであきらめます

423 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:53:58 ]
Solarisのviはずいぶん昔から日本語通るぞ。SunOS4は忘れたが。
ただ、Localeに縛られるので、Shift_JISのファイルなんかが来ちゃうと面倒。
LANG=とsettermでなんとかなった気もするけど、もう忘れた。

って無駄レスだな。

424 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:08:58 ]
以下、Personクラスの配列membersを、名前→性の順でソートすると、名前のソートがくずれます。
くずれないようにソートするにはどうすればいいのでしょうか?

class Person
attr_reader :name, :sex
def initialize(name, sex)
@name, @sex = name, sex
end

def show
[@name, @sex]
end
end

members = []
members.push Person.new("sasaki", "male")
members.push Person.new("kato", "famale")
members.push Person.new("fukada", "male")
members.push Person.new("akai", "female")

p members.map {|p| p.show }
#=> [["sasaki", "male"], ["kato", "famale"], ["fukada", "male"], ["akai", "female"]]

p members.sort_by {|p| p.name}.sort_by {|p| p.sex}.map {|p| p.show }
#=> [["kato", "famale"], ["akai", "female"], ["fukada", "male"], ["sasaki", "male"]]
#=> 望ましい結果 [["akai", "female"], ["kato", "famale"], ["fukada", "male"], ["sasaki", "male"]]



425 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:12:32 ]
members.sort_by {|p| [p.name, p.sex]}
じゃね?

426 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:21:48 ]
配列の比較に関してはドキュメントが弱いんだよね

[1,2,2] < [1,2,3]
[1,1,2] < [1,2,2]
[1,4,4] < [2,1,1]

x でソートしたあとに y でもソートしたいという場合は、Rubyでは
data.sort_by{|a| [a.x, a.y]}
と書く

427 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:28:14 ]
>>425
それだと、

[["akai", "female"], ["fukada", "male"], ["kato", "famale"], ["sasaki", "male"]]

となり、性のソートがくずれてしまいました。

428 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:55:33 ]
>>427
どうソートしたいのか考えれ
崩れるも何も、ソートする順番の問題に過ぎない
class Person
attr_reader :name, :sex
def initialize(name, sex)
@name, @sex = name, sex
end
def show
[@name, @sex]
end
def Person.sort_sex(sex)
if sex=='male' then 1 else -1 end
end
end

members = []
members.push Person.new("sasaki", "male")
members.push Person.new("kato", "famale")
members.push Person.new("fukada", "male")
members.push Person.new("akai", "female")

members.sort_by {|p| [Person.sort_sex(p.sex), p.name]}


429 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 17:09:06 ]
>>428
うまくいきました。
サンクス。

430 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 18:13:53 ]
diaspar.jp/node/185

431 名前:デフォルトの名無しさん [2009/01/11(日) 19:37:19 ]
Hpricot::Elem.new(Hpricot::STag.new('form'))
をノコギリで書き換えようと思い
Nokogiri::XML::Node.new('form')としたら
ArgumentError: wrong number of arguments (1 for 2)
のエラーが出ました。
RDocには,new(name)、と引数は一つなのですが,どうしてでしょう。このnameはStringで与えてもだめ?


432 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 19:53:44 ]
>>431
ttp://nokogiri.rubyforge.org/nokogiri/classes/Nokogiri/XML/Node.src/M000044.html
第2引数はNokogiri::XML::Documentっぽい
ドキュメントが間違ってるんだろうな

433 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:53:05 ]
>>419
Aptanaとか、EclipseベースのIDEならいけるんじゃないかな。

434 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 23:17:19 ]
>>419
どうせEmacs使わんだろうけどコメントしとく

emacsのruby-electric-modeだと
defスペース
と打った時点でendが補完される

その後 ruby-mode の ruby-reindent-then-newline-and-indent を使って改行すればインデントも同時にされる

この程度ならEmacsユーザならごく当たり前のこと
というかRuby用の動作があるエディタならみんな似たようなことできるでしょ?



435 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 00:38:32 ]
>>419
Vim の場合

runtime/ftplugin/ruby.vim
runtime/indent/ruby.vim
を調べてみたけど、そういうのなかった。

%HOME%/vimfiles/ftplugin/ruby.vim か
$HOME/.vim/ftplugin/ruby.vim に、
以下を入れておけば、OK

inoreab <buffer> module module<cr>end<up><end>
inoreab <buffer> class class<cr>end<up><end>
inoreab <buffer> def def<cr>end<up><end>
inoreab <buffer> do do<cr>end<up><end>
inoreab <buffer> case case<cr>end<up><end>
inoreab <buffer> begin begin<cr>end<up><end>

436 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 01:06:25 ]
hash = {}
[:a, :b, :c].each {|k| hash[k] = @hash[k] }
という処理をもっと簡単に書く方法があれば教えてください。


437 名前:デフォルトの名無しさん [2009/01/12(月) 01:14:36 ]
hash = @hash.dup()

438 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 01:45:16 ]
>>435
endwise.vim というプラグインがある
www.vim.org/scripts/script.php?script_id=2386

439 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 03:17:20 ]
>>419
EclipseかNetBeansでsnipet使うのはどうだろうか?
リターンでは無理だが別のキーで、コードの展開はできるぞ

440 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 04:15:34 ]
>>436
hash.merge!(@hash)

441 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 07:19:55 ]
>>436
それが一番短い部類
「○○というキーを持つペアを [k, v] の配列で返す」みたいなメソッドって標準には無いんだよね

hash = Hash[@hash.find{|k, v| [:a, :b, :c].include?(k)}]


442 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 07:22:22 ]
書いててなんか短いなとは思ったんだ

hash = Hash[*@hash.find{|k, v| [:a, :b, :c].include?(k)}.flatten]

うーん

443 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 07:31:20 ]
hash という変数名は全てのオブジェクトに存在する hash っていうメソッド名と被るから、
特に拘りがあるのでなければ避けておいたほうが吉


プログラム(1行のみ):

p hash

結果:

22412530


適当なハッシュの変数名は h が人気
h と書かれていれば、ほぼ全員がハッシュかなと推測してくれる

444 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 09:09:34 ]
遅延評価はあるから
バックくおーとみたいなのはできるかもしれない



445 名前:デフォルトの名無しさん [2009/01/12(月) 10:04:50 ]
ActiveRecordでsqlite3のDEFAULT CURRENT_DATEに
相当するのは何?
今,record.date = Date::todayみたいにいちいちやってるのだけど,
なんだか,もっとスマートな方法がある気がするので,質問

446 名前:デフォルトの名無しさん [2009/01/12(月) 11:02:22 ]
質問です。
スキルアップのためにRubyでビジネス向けシステムを作れという課題が出ました。
勤怠管理システムのような物を作ろうかなと考えています。
私の言語スキルはCのみでオブジェクト言語は概念しかわかりません。
Cは基本情報合格しました。
とりあえずRuby1.8をインストールしようとしましたが失敗しました。
(コンソール画面から先に進めません)

こんな初心者にお勧めのRuby書籍を教えてください。
前述の通り、インストールから失敗してしまいましたので
インストール方法も解説している物が欲しいです。
最終的に簡単なシステムを作らなければいけないので
入門系と実践系の物をお勧めいただければと思います。
どうかよろしくお願いします。

447 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:08:49 ]
>>446
何をもって「失敗した」と言ってるの?
Rubyインストールしただけだったら別に開発環境が入るわけじゃないぞ。
あと使ってるOSは?

448 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:14:05 ]
Ruby学習者に必要なもの(ある程度持っていると暗黙のうちに仮定されているもの)

 ・ OSへのある程度の習熟
 ・ コマンドライン操作
 ・ HTTPとウェブに関する基礎知識
 ・ データベース利用に関する基礎知識(Rails限定)
 ・ PerlかUNIX Cの教科書的な基礎知識

449 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:19:00 ]
>>448
…持ってなくてもいいが、まあ、持ってないとひたすらに遠回りではあるな
歩行練習と自転車乗る練習を同時にするようなもんで、学習量と学習時間が倍くらいになる

>>446
本当にCで自分用プログラム作れるだけの技量があるか怪しいと思うんだが、コマンドライン操作はできるかい

450 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:22:55 ]
できるだろ
Cができるってことはmakeとかも使えるってことなんだから

451 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:13:45 ]
>私の言語スキルはCのみでオブジェクト言語は概念しかわかりません。
>Cは基本情報合格しました。
Cができるなんてどこにも書いてないぞ


452 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:16:51 ]
Cが出来てRUbyで着ない香具師なんていない
初心者詐称
釣り決定

453 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:19:53 ]
> こんな初心者にお勧めのRuby書籍を教えてください。
>>2

454 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:21:46 ]
>>446
よろしければその会社でのあなたの給料と実質労働時間を教えてください



455 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:23:32 ]
>スキルアップのためにRubyでビジネス向けシステムを作れという課題が出ました。
会社員だなんてどこにも書いてないぞ

456 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:26:23 ]
インストールも出来ない初心者向きの本を勧めれば回答終了じゃないのか、これ。

457 名前:446 mailto:sage [2009/01/12(月) 12:35:30 ]
早いお答えありがとうございます。
こちらの回答が遅くて申し訳ありません。

下で個別にもレスしますがCの実践的な開発経験はありません。
資格試験(基本情報)で問題として出されるレベルのプログラムを
一人で完成させる事はできます。
わかりにくいようでしたらプログラムの基礎の基礎(ループやメモリ)だけは
わかるズブの素人としてご指導頂ければ、と思います。

>>447
RailsをインストールするためにDOS画面にコマンドを打ち込んでも
NoFound〜的文章が表示されて先に進みません。
今、手元にインストールしようとしたマシンがないので
正確なエラー文はわかりません。
インストールガイドはネット上で見つけた動画を参考にしたのですが
これもインストールするパソコンにブックマークしていたので
今この場ではわかりません。

わからない事が多くてすいません。
「これが必要」という情報があれば調べてきます。

OSはWindowsVistaです。

458 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:36:15 ]
オライリーの「初めてのRuby」。まじおすすめ。
Railsやるならなんだろう?

459 名前:446 mailto:sage [2009/01/12(月) 12:36:27 ]
>>448
・ OSへのある程度の習熟
ある程度、がどのくらいかわからないのですがマニュアルを見て
再インストールはできました

・ コマンドライン操作
ほとんど使用したことがありません。
試験勉強のためにログオンやログオフ、プリンタの操作を数回だけ。

・ HTTPとウェブに関する基礎知識
基礎知識なら何とか…
ウェブページが表示される仕組み程度はわかります。

・ データベース利用に関する基礎知識(Rails限定)
データベースの概念やSQL文までは一通りわかります。

>>449
図々しいのですが、持っていない人間が効率的に学習できる順番など
もしありましたら教えていただけませんか…?

>コマンドライン操作
ほとんど使用したことがありません。
試験勉強のためにコマンドライン一覧のようなマニュアルを見てやった時は
とりあえずできました。

自分用プログラムを作ったことはありません。

・ PerlかUNIX Cの教科書的な基礎知識
Perl・UNIXはわかりません。
Cの教科書的なことならわかります。(解説書も持っています)


460 名前:446 mailto:sage [2009/01/12(月) 12:50:45 ]
>>450
Cの知識はありますが実践経験はありません。
makeのやり方も解説を読む限りでは理解できたのですが
そこまで辿り着けませんでした…。

>>451
試験に合格できただけなのでたぶんできないと思います。

>>452
Cもできないようです…

>>453
入門・はじめて〜と付いている物が多すぎて…
一番最初に読むと良い物を教えていただけないでしょうか。
(できればインストール法が詳細に載っているとありがたい)

461 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:51:17 ]
>RailsをインストールするためにDOS画面にコマンドを打ち込んでも
>NoFound〜的文章が表示されて先に進みません。
>今、手元にインストールしようとしたマシンがないので
>正確なエラー文はわかりません。

インストールしようとしたマシンが使える環境になったらまたおいで


462 名前:446 mailto:sage [2009/01/12(月) 12:51:32 ]
>>454
>>455
会社員ですがプログラミング職ではありません。
ずっと経理でやってきました。
自主的に基本情報を取得したところ社長がそれを聞きつけて

「手当て出すからもっと本格的に勉強しろ。
今度経理システムの作成をソフトウェア会社に依頼するから
それまでに一通りわかるようになって開発に加われ。
依頼予定の会社はRuby使うって言ってるからRuby勉強しろ


要約するとこんな感じです。
「とりあえず実際に使える物を作ったら覚えるだろ」という事らしい。

29歳の高卒女。情報系の学歴はなし。
実質労働時間は9時間くらいかな。
今までの仕事(経理)をする時間を引いたら毎日3時間程度。
でも来週で引き継ぎ終わるから、そしたら9時間Ruby学習に充てていい。

>>456
そういう物を教えていただけるとありがたいです。

463 名前:446 mailto:sage [2009/01/12(月) 13:01:04 ]
>458
ありがとうございます。
レビューなどを見ると入門より少し難しいようなのでこれを一冊と
もっと基礎的な物がないか捜してみようと思います。

464 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:19:44 ]
>>462
それはチャンスって言えばチャンスだね。でも、フルタイム学習に
あてていいとなると、失敗した時のリスクも結構大きいかも。
研修参加も可能かどうか相談したほうがいい。

環境のインストールから、ということであればまずはこのへんの本でも。
www.amazon.co.jp/%E3%81%8B%E3%82%93%E3%81%9F%E3%82%93Ruby-Rails%E3%81%A7Web%E5%88%B6%E4%BD%9C-%E9%BB%92%E7%94%B0-%E5%8A%AA/dp/4798116793/ref=sr_1_2?ie=UTF8&s=books

ただし、環境のインストールについては過剰に詳しく書いてあるけど、
言語要素についてはあまりにさらっとしてるし本質的な理解には至らない
かもしれないので、これでざっと環境を作ってサンプルとか動かして
みたら、さっさと他の方法もあたったほうがいいと思う。

あと、ギブアップするなら傷が深くならないうちにお早めに。



465 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:33:43 ]
>>463
だから >>453 も言ってるが >>2 を見れ

しかし、プログラミングもできないのに SI 名乗る人たちがいるのに、
>>462 のような理由でプログラミングの勉強をしろとは、
社長はなかなかの大人物。(か、ちょっと勘違いしちゃってるのか、分からんが)
先は途方も無く長いけどがんがって下さい。

466 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:13:30 ]
断ったほうがいいと思う

467 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:16:57 ]
良いチャンスだとは思うが、
ちゃんとした研修を受けれないなら断るのも手か。

468 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:28:34 ]
>>466
だな
自社のシステムを学習者に任せるとか根本的にありえない
こっちから人出せば開発依頼費が浮くとか勘違いしてるだけに過ぎない

469 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:38:27 ]
>>468
馬鹿発見
こういうのは社長がシステム会社側に余分に数百万金積んでんの

470 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:45:08 ]
なにそのお妾さんシステム

471 名前:446 mailto:sage [2009/01/12(月) 14:47:06 ]
いろいろアドバイスありがとうございました。
とりあえず今から都市部の大きな本屋に行って自分に合いそうな
初心者向け書籍を探してみようと思います。
あとはみなさんのアドバイス頂いた物をネット注文予定。

最後の方、個別にお礼をレスできなくてすいません。

うちは小さな会社で社長もワンマンなので残念ながら研修や断るという選択肢はありません。
社長が大昔に配送業務を外部委託したときに超ぼったくりされた苦い思い出から
外部と提携する時は必ず社員も加える事になっています。
もし私が断ったらエクセルワードくらいしか使えない経理部長がやらされそう…
一応期間的には半年くらいは貰えるようですが、厳しい道のようですので
最悪の場合は転職の覚悟もしておくことにしますw

丁寧にいろいろありがとうございました!

472 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:56:09 ]
> 外部と提携する時は必ず社員も加える事になっています
いやそんなこたわかってる(というかそんな理由しかありえん)
それでもなお、
「依頼する会社が○○で開発するから話合わせるために○○を覚えろ」
というのは完全に間違っている

というか、それでは何の解決にもなっておらず、遠からず同じ大火傷が起こるだろう

473 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:29:14 ]
会社の事情も何も分からんのに、そんな脊髄反射でスレ違いな話することもなかろう

474 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:36:57 ]
企業様におかれましては仕様固めるとか意思伝達スムーズにするとかのほうにリソース割いてほしいのう
開発言語なんて1ミリも知らなくていいのにっていうかむしろそっちに入り込まれると邪魔



475 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 18:21:32 ]
>>445
created_on というカラムを作ればレコードの作成日が
勝手に残る(ようにActiveRecordが面倒みてくれる)けど、それではだめ?


476 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 18:32:32 ]
今日さ、普段使ってるファイルでFile#flock(File::LOCK_EX)のテストしてたんだよね。
そしたらFile.open("hoge", "w")したとたん中身消えちゃって涙目になった。

477 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 18:51:39 ]
この前、アホアホに彼女と行きましたそうしたら、奥の座敷に、芸能人が10人ぐらいいました。
その中でアホアホ鍋食べていたら、芸能人の人が一緒に飲もうよと、誘ってくれました。
凄くうれしいかたよ。
それから、毎週アホアホに言っています。


478 名前:デフォルトの名無しさん [2009/01/12(月) 20:31:09 ]
プログラム上でウェブサイトにpostしたいのですが、
そういうライブラリがあれば教えて下さい

479 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 20:33:41 ]
標準の net/http
gem の httpclient
gem の Mechanize
好きなの選べ

480 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 20:38:35 ]
ありがとうございます!

481 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 00:03:14 ]
>>478
Mechanizeが直感的で一番かんたんじゃないかな?
わかりにくいけど

482 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:26:33 ]
>>481
>Mechanizeが直感的で一番かんたんじゃないかな?
>わかりにくいけど

パラドックス?

483 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 08:38:42 ]
おまいら高卒アラサーだと雌でも食いつき悪いのな。
どんだけ二次元嗜好なんだよwww


まあコンピュータ言語知識のあるPGやSEでも糞な仕様作るのはいくらでもあるので、ユーザ側でコンピュータ言語知識有ってもいいでしょ。
結局、IT業界って客商売だし、お金出す側の客が、システムの奥深くまで把握して金出したいって要求なんだから迷惑とか関係無いわな。

ほぼ、Cの実務知識無さそうだし、現状取り組むならrubyもCも変わらないね。
>>448に上げてある、システム開発するうえで前提と成る基礎スキルの習得がまずは必要だと思う。
依頼予定の会社のruby使用のシステムの詳細をもう一度確認したら?
Ruby on Rail使う予定というなら、
【Ruby】Ruby on Rails Part6
pc11.2ch.net/test/read.cgi/php/1224838013/l50
とか、どーぞ。


貴重な体験だと思うので、日記でも付けて、あとで書籍化でもすると、ルビー神の一人に成れて世界変わるかもしれないwww

484 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 10:32:08 ]
>>436
>hash = {}
>[:a, :b, :c].each {|k| hash[k] = @hash[k] }
>という処理をもっと簡単に書く方法があれば教えてください。

たぶん、ない。
class ::Hash
 def elems_at(*keys)
  h = {}
  keys.each {|k| h[k] = self[k] }
  h
 end
end
とでもして、hash = @hash.elems_at(:a, :b, :c)としとけ。

>>437
>hash = @hash.dup()
これは違うだろ。選択した要素だけを選び出すのであって、要素をすべてコピーするわけではない。

>>440
>hash.merge!(@hash)
上に同じ。

>>442
>hash = Hash[*@hash.find{|k, v| [:a, :b, :c].include?(k)}.flatten]
include? は線形探索だから、それを何度も行うのは効率悪そう



485 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 11:20:42 ]
>>hash = Hash[*@hash.find{|k, v| [:a, :b, :c].include?(k)}.flatten]
>include? は線形探索だから、それを何度も行うのは効率悪そう
[:a, :b, :c]に対しての探索だから3要素ならたいしたことないんじゃないの

486 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 12:02:02 ]
そりゃ本来のデータなんてスレに書きこまんだろ
例示のために3要素にしてるに過ぎない可能性が高い

ていうか、>>436で用が済むんだけどね
これより妥当で遅れない汎用な書き方はまず無いと思われ
基本的な記法を使い倒せる技術最強伝説

487 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 13:20:46 ]
うん、>>436が一番、やりたいことが素直にコードになってていいと思う。

hash = [:a, :b, :c].inject({}){|h, k| h[k] = @hash[k] ; h }
こんなんもあるけど、自分ならやらない。

488 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 21:30:11 ]
でもまあ初心者はmapとか使わずeachしか使ってなかったりするからなあ。
eachじゃない書き方があれば教えてあげるのは悪いことでもない。

489 名前:デフォルトの名無しさん [2009/01/13(火) 22:34:17 ]
今、ドラクエやってるんだけど、太陽の石ってどこにありましたっけ?

490 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:19:46 ]
みつかりました
ありがとうございました

491 名前:デフォルトの名無しさん [2009/01/14(水) 00:13:04 ]
>>490
ざけんなw

492 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:04:46 ]
>>436
keys = [:a, :b, :c]
hash = Hash[*keys.zip(@hash.values_at(*keys)).flatten]

これでもできるような気がするけど、自分ならやらない。



493 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 02:57:57 ]
Time.nowを簡単に日本語で出力する方法はないでしょうか?
今は、
puts Time.now.strftime('%Y-%m-%d(%a) % %H:%M:%S')
とやっています。%aは ["日", "月", "火", "水", "木", "金", "土"][Time.now.wday]
に置き換えればよいと思いますが・・・

> ruby -v
ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]


494 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 03:02:36 ]
標準ではない。そのへんはその要領で自分で書いておくれ。



495 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 03:45:37 ]
>>494
ありがとう。適当に書いてみます

496 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 03:50:57 ]
>>493
TimeでなくDateTimeクラスなら以下のように:

$ irb -rdate -rational -Ku -f
irb> RUBY_DESCRIPTION
=> "ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9.5.0]"
irb> Date::const_set('ABBR_DAYNAMES', %w(日 月 火 水 木 金 土))
warning: already initialized constant ABBR_DAYNAMES # ミナカッタコトニ
=> ["日", "月", "火", "水", "木", "金", "土"]
irb> t = Time.now
=> Wed Jan 14 03:47:50 +0900 2009
irb> dt = DateTime.civil(t.year, t.month, t.day, t.hour, t.min, t.sec, Rational(t.utc_offset, 86400))
=> #<DateTime: 21209863247/8640,3/8,2299161>
irb> dt.strftime('%Y年%m月%d日(%a) %H:%M:%S')
=> "2009年01月14日(水) 03:47:50"


497 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 10:56:07 ]
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ


498 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 11:12:39 ]
>>488
map は写像製造だし、写像を作ること以外に使うべきではない

499 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 11:33:28 ]
498の読解力のなさは委譲


500 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 12:24:21 ]
Array.new と Array::new の違いは何ですか?

501 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 12:40:02 ]
>>500
字面の雰囲気

502 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 12:41:33 ]
>>500
スクリプト作者の出身言語および硬直思考の頑な度

503 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 12:45:21 ]
>>500
タイプ数

ネタなのかも知れんが、一応マジレスしとくと定数とかのからみで "::" を使うと
面倒引き起こす可能性が無いとはいえないから、理由が無いなら "." を使っとこ

504 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 12:56:20 ]
メソッド起動に :: を使うことは Ruby では極めて稀というかメリットは何もないよ
他人の書いたスクリプト中で クラス::メソッド という記法を見つけたら心の中でm9(^Д^)プギャーしとくといい
自分から使う理由はないからさ



505 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 13:01:33 ]
>>501-504
サンクス
違いはないけど、ドットを使ったほうRuby流なんすね

506 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 13:29:36 ]
クラスメソッドとインスタンスのメソッドの呼び出し方に違いはありますか

507 名前:デフォルトの名無しさん [2009/01/14(水) 16:59:10 ]
rubyでアンテナサイトつくってみたいんですけど
何をしたらよいのかわかりません。

何かよい書籍とかありませんか?
実際のアプリケーション作成となると、全くわかりません。

508 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 17:01:03 ]
>>506
ないっす

File = Class.new(IO)
def Fie.basename(...)
 ...
end

File.basename("aaa/bbb") # => "bbb"

クラスもClassクラスのインスタンスなもんで。

509 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 17:59:41 ]
(゚∀゚)ラヴィ!!

510 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 18:26:19 ]
>>507
作るな

511 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 18:35:30 ]
まあねえ
ネットに関するプログラムは自力で学んでもらってなんぼだしな
何していいのかわからないなら作るのはまだ早い

512 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 18:56:25 ]
アンテナみたいな、作り方によっては他人に迷惑をかけまくるものは、
「何をしたらよいのかわかりません」レベルの人間には手を出して
ほしくないね。

とりあえずもっと別のところから修行するんだ!

513 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 19:13:47 ]
その別のところというお題で適当なものを考えてあげようか。
初心者が上達するには題材が必要だろう。

youtubeのRSSを定期的にとってきて、関心のあるキーワードに引っかかったエントリをメールで送信してくれるようなプログラム。


514 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 20:51:58 ]
>>507
まずはHTTPの仕組み、それと既存のアンテナがどんなことやってるのかを学ぶべき

513のお題も学習に良さそうだ
ただメール送信はちょっとややこしいから、エントリの表題をシェルに表示するぐらいでいいかも



515 名前:デフォルトの名無しさん [2009/01/14(水) 21:58:54 ]
すいません、まだドラクエやってるんですが、竜王ってどこにいましたっけ?

516 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 21:59:53 ]
竜王城

517 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 22:00:52 ]
玉座の後ろの隠し階段だよ

518 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 22:12:27 ]
ryuou.castle.search('ryuou')

519 名前:デフォルトの名無しさん [2009/01/14(水) 22:15:02 ]
一緒に世界征服しようとしたらバッドエンドだ、気を付けろ

520 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 22:26:02 ]
昔ファミコンでやってた時何も知らずにバッドエンドだった時は放心した。。。
パスワードとらずにやってたから初めからやり直しだったなwww
苦い青春だったぜ

521 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 00:41:39 ]
Mac OS X で ruby-1.9.1-rc1 をコンパイルすると、i686ではなくi386になる。
$ ruby -v
ruby 1.9.1 (2008-12-30 patchlevel-0 revision 21203) [i386-darwin9.6.0]
i386用にコンパイルされていると遅いよね?
i686用にコンパイルしたいんだけど、どうしたらいい?


522 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 04:03:10 ]
誰かrarff使っている人いますか?

523 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 07:29:43 ]
>>520
2か3で誰かと入れ替わるイベントもあったよな。どっかの王様だっけ?
あん時はパニックになって友達に泣きついたが、あとから考えると
恥ずかしかったな。

524 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 08:41:56 ]
古いバージョンで動いてたスクリプトを最新版で動くようにする変換機とかありますか?



525 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 10:03:15 ]
>>524
原理的に無理でしょう
人間の手で書き換えるしかないんじゃないかと

526 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 15:20:40 ]
>>523
3で王様になるイベントだな。
あれは最初どうにもならんでリセットしたわw

527 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 17:31:34 ]
irb> file.scan(re[:method])
RegexpError: Stack overflow in regexp matcher

ぬう
これでカッコ多いか生意気な

528 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 04:09:51 ]
下位互換性確保のために、古いバージョンの実行環境を残しておくのは重要。

529 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 05:16:24 ]
Ruby 初心者スレッド Part 22
pc11.2ch.net/test/read.cgi/tech/1221467121/322

322 名前:デフォルトの名無しさん[sage] 投稿日:2008/10/02(木) 18:02:43
バッチファイルにしてやればエラーが出てもポーズさせるようにできるよ。
ruby -x "%~0" || pause
と書けばエラーが出たときに限ってとまる。

test.bat
ruby -x "%~0"
pause
goto :eof

#!ruby
put "hello"



530 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 05:18:42 ]
うぉ途中で送信した

>>529について質問なのですが、
ruby -x (スクリプト名) と指定することはどういう意味があるのでしょうか?
特に -x なのですが、マニュアルを読んでも意味がわかりません。

これはバッチを実行した時にその作業ディレクトリをスクリプトのディレクトリに移動するという意味でしょうか?


531 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 05:32:56 ]
#!ruby より上を読み飛ばすってことじゃないかな?
全体でバッチファイルになってるけど、rubyスクリプトとして実行されるのは下の2行だけっていう。

532 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 10:23:47 ]
最近、『ケント・ベックのSmalltalkベストプラクティス・パターン』に中身が似てるっぽい
『実装パターン』て本が出ましたが、Ruby使いにとってはどちらがより役に立ちますか?
前者がSmalltalkのコードで説明してて、後者はJavaですよね。

両方読んでみた人いますか?

533 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 11:55:55 ]
>>532
似たことが書いてありますが、SBPPは動的言語向け、IPは静的言語向けの内容なので
どちらかを選ばなければならないなら、Ruby使いにはSBPPのほうを薦めます。

もちろん、お金と時間に余裕があるならば、両方読むのが吉です。

534 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 13:30:06 ]
>>531
あーーそういう意味か!わかりました。
batファイル自身がRubyスクリプトになっててそのまま実行できるようになってるんですね。



535 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 20:29:35 ]
win32oleをつかってADO経由でsqlserverのテーブルに
対して読み書きを行おうと思っています。

connectionオブジェクトのゲットは出来ました。
recordsetオブジェクトのゲットも出来ました。
recordsetの各feilds("項目名").valueに値をセットして
updateメソッドで反映出来るのも確認できました。

「よし、出来た」
そう思ったのもつかの間。
「テストテーブルだけど初期値(null)に戻しておくか」
そう思った時に壁につぶかりました。
rsTest.feilds("項目名").value = nil
こうすると例外が出てしまいます。
初期値(null)が入っている時は

p rsTest.feilds("項目名").value
結果:nil
になったのですが…。

DBのnull≠nilで初期値がp関数でnil表示されるのは
型が返還された結果だというのはおぼろげながら
想像はつくのですが、ではADOのFeildオブジェクトに
nullをセットするにはどうしたらいいのでしょうか?

レコードセットでの操作を諦めてSQL文で操作した
方がいいのでしょうか?

環境
OS:WINDOWS2000 rubyのバージョン1.8

536 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 21:10:26 ]
うちはnilで出来てる

537 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 00:01:52 ]
ADOのconnectionが作れたならSQL発行すればいいじゃん

538 名前:535 mailto:sage [2009/01/17(土) 02:06:05 ]
>>536
nilのままでOKなんですか。
となると呼び出し方がおかしいとか
バージョンとかの相性の問題ですかねぇ

>>537
最終的にはそうなりそうです。
ただ、nil以外は値をちゃんと設定できるだけに
何か手順があるのかなと思いまして。

まぁ、ちょっと悔しくてなんとか
足掻けないかなぁと思っただけなんです。



539 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 06:38:14 ]
ml.postgresql.jp/pipermail/pgsql-jp/2006-November/021242.html

540 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 06:50:04 ]
ttp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=59578;id=excel

541 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 07:13:16 ]
ttp://www.atmarkit.co.jp/fdotnet/basics/adonet06/adonet06_03.html

542 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 07:49:14 ]
>>533
ありがとうございます。参考になりました。

543 名前:535 mailto:sage [2009/01/17(土) 09:43:17 ]
>>539-541
ありがとうございます。
Ruby側じゃなくて、ADOサイドの問題の可能性が高そうですね。
色々試してみます。


544 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 10:28:41 ]
テーブルの定義の問題だと思う



545 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 11:11:32 ]
自分のコーディングが怪しいと思わないところが問題だと思う

546 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 14:14:56 ]
PStore.new('test.pstore').transaction(read_only=true) do |pstore|
 ...
end

の read_only=true がただのメソッド説明用の表現であり、
実際は引数に true を渡す普通のアレだということを数年使ってきてやっとさっき気づいた

PStore.new('test.pstore').transaction(true) do |pstore|
 ...
end

pstore の時だけなんか引数で代入?みたいな特別な記法があるんだなーとずっと思ってた

547 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 15:01:17 ]
特別な記法はある

548 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 15:49:46 ]
>>547
特定のクラスだけ通用する記法みたいなのは特にないよ
返り値が評価されるだけだ

549 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:06:28 ]
いや、トップレベルに read_only= という関数的メソッドを定義するライブラリかもしれないじゃないか

550 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 03:57:37 ]
KDE3 の korundum.rb にはあった、KDE モジュールの ListView クラスと ListViewItem クラスが、
KDE4 の korundum4.rb にはありません。

これは何か別のクラスで置き換わったのでしょうか。
よろしくお願いします。

551 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:25:00 ]
ちょっとした質問があります。

UTF-8(BOM付き)とUTF-8n(BOMなし)を判別する簡単な方法はありませんでしょうか?

NKF.guess だと 両方とも 5(=UTF8) としか帰ってこず、
判別できませんでした。

552 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:28:41 ]
対象をUTF-8のBOMと照合したらいいじゃまいか

553 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:29:45 ]
BOMとマッチさせるだけだよなぁ。


554 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:55:56 ]
特定のウィンドウやソフトから流れる音楽の音量を音楽編集ソフトで音量増幅したようにリアルタイムで増幅したいのですが。
ルビーでできますか。どのような方法で可能なのですか。



555 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:09:01 ]
>>554
できるとしてもRubyとしての仕事ではなく、
他のプログラムのコア部分に処理を形通り依頼する(データを丸投げして呼び出す)というやり方になる
Rubyは関係ないな

556 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:16:20 ]
>>550
一応答える
知らんがな

KDEスレのほうがたぶん変更理由とかに詳しいと思われ

557 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:26:36 ]
>>554
OSやウィンドウ(アプリ)が何なのかによるんじゃないの?

↓LeopardでAppleScriptを介してiTunesのボリュームを変える
とか書かれても参考にならんでしょ?

require 'osx/cocoa'
include OSX

def iTunesVolume(volume)
script = NSAppleScript.alloc.initWithSource <<-EOF
tell application "iTunes"
set sound volume to #{volume}
end tell
EOF
error = OCObject.new
script.executeAndReturnError(error)
end


558 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:33:04 ]
>>556
そうですか。すまんす。
KDEスレを探してみます。

559 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:21:34 ]
>>557
特定の曲だけにしたいんです

560 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:04:17 ]
.wavとか.mp3とかの元データを変えずに、
再生中に特定の曲だけボリュームを上げたいってことか。


561 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:06:14 ]
Windowsなら腐るほど該当アプリケーションあるけどな

562 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:21:32 ]
>>560
>>561
その方は私の質問に便乗している方ですのでお間違いないように。
私の希望はあくまでも、ウィンドウやソフトから流れる音をミュート以上にリアルタイムで増幅する方法です。

>>555
>>557
そうですか..。
いや、SDLとかいうルビーのゲーム用ライブラリーで音楽が扱えていたことと、
パソコン上で再生された音や特定のウィンドウの音を録音できるフリーウェアがたくさんあったので、そんなに難しいことではないのかなと質問させていただきました。
ミュートの調整による増幅以上に増幅する方法をさがしているので。

563 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:10:47 ]
意味が分からない

564 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:25:49 ]
>>562
他のフリーウェアがどうやってるのかは分からないが
Ruby覚え立てでスパッと出来るほど簡単なものではない
OSによってもやり方が違うし



565 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:52:49 ]
ミュートの意味がおかしくね?

566 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 20:37:45 ]
>>562
出来ないから諦めろ、て言われたら諦めてくれる?

567 名前:デフォルトの名無しさん [2009/01/18(日) 21:30:31 ]
>>564
OSはウィンドウズです。
>Ruby覚え立てでスパッと出来るほど簡単なものではない
そうですか?初心者向けと聞きましたが。
それに分からないから(これから勉強するので)初心者質問スレに質問したのですが。

>>566
分かる人を待ちますよw

568 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:32:54 ]
このスレは成りすましお断りですよ

569 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:44:28 ]
>>567
初心者向けだと言ったやつに聞けばいいのでは?
特定のアプリを外部制御するならまだしも
Windowsで再生してる音の波形から曲を判定し音量コントロールなんて俺はやりたくない。

570 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:50:22 ]
タスクトレイにある「音量」をいじればいいよ。
それと同等の操作ならRuby初心者でもできるだろうけど
それ以上を求めるなら間違いなく待ちぼうけになる。

571 名前:デフォルトの名無しさん [2009/01/18(日) 21:54:19 ]
>>569

>特定のアプリを外部制御するならまだしも
>Windowsで再生してる音の波形から曲を判定し音量コントロールなんて俺はやりたくない。
pcに流れる音全体でもいいですよ(できれば個別にですが)。
ただリアルタイムで音量を増幅できれば。
それとフリーの録音かソフトが個別の音を録音できていることから考えると、
pc上に流れた全ての音がミックスされてスピーカーで流れているだけで、
スピーカーから流れる前段階のどこかで、個別の音声はプログラムで取得する方法があるような気がします。

572 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:56:21 ]
よくわからないが,>>561>>567を見ると煽りたくなる衝動に駆られる
この気持ちどうしよう

573 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:56:27 ]
だから、できるって
ただし、Rubyは無関係
他のサウンドとOSの深いとこを触るドライバやライブラリを直接いじるしかない
そのいじり方を学んでから、Rubyで通信する方法を聞きに来な

574 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:05:26 ]
>>567
>そうですか?初心者向けと聞きましたが。
Rubyは初心者向けかもしれんが
お前がやろうとしていることは、確実に上級者向けどころか前人未踏に近い領域だ

> それに分からないから(これから勉強するので)初心者質問スレに質問したのですが。
他の人も散々言ってるように、それは「Rubyの」初心者質問スレで解決できる質問じゃない
素直に諦めてくれ



575 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 03:00:31 ]
>>567
できりょ。

・Rubyをインストールする
・Vistaをインストールする
・タスクトレイから音量ミキサを開く
・アプリケーションごとの音量を調整する

な?簡単だろ?

ちなみに、Win32のデバイスドラバとかWin32APIとか絡みそうなものはRubyと激しく相性が悪い。
そもそも、Win32をゴリゴリやるのは向かないだろ。
C#(.NET)とかC++の方がまだ向いてる。


576 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 04:25:20 ]
>Win32のデバイスドラバとかWin32APIとか絡みそうなものはRubyと激しく相性が悪い。
mjsk
kwsk


577 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 05:10:11 ]
>・Rubyをインストールする
>・Vistaをインストールする
>・タスクトレイから音量ミキサを開く
>・アプリケーションごとの音量を調整する

これは上から順に見てワロタwww
上から順にしようとしたらできない事書いてあるし久々オモローwww

578 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 08:55:50 ]
オモローって自分から使ってる人久しぶりに見た

579 名前:デフォルトの名無しさん [2009/01/19(月) 09:39:59 ]
rubyのRPMを探しているのですが、見つかりません
どこにありますか?

580 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 09:53:00 ]
>>579
最新のものにこだわらなければ、
大抵のLinuxディストリなら標準で入ってるんじゃね?
OSと、欲しいRubyのバージョンは何?

581 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:22:21 ]
yum install ruby で入らないのか?

下手に探すより環境をしっかりさせろ。

582 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:23:09 ]
yum じゃなければ apt-get

583 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:56:52 ]
1.8.6に1.8.7のinjectでのシンボルによる二項演算子指定を実現するのは以下でいいと思います?

class Symbol
def to_proc
proc { |obj, *args| obj.__send__(self, *args) }
end
end

module Enumerable
alias _inject inject

def inject(*init, &block)
if not block
begin
return _inject(&init[0])
rescue
return _inject(init[0], &init[1])
end
end
_inject(*init, &block)
end
end

584 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:14:58 ]
emacs(meadow)でRuby書くときにこれこそ入れておけっていうelispありますか?
ruby-modeとruby-electric位しかruby周辺は入れてません.




585 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:35:54 ]
ハッシュってキーもバリューも日本語いけるんだな!ちとおらびっくりしたぞ!

586 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:16:48 ]
激しく実行環境依存で嵌まりそうだけどな。

587 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:24:07 ]
可搬性がなければならないプログラムを作らなければならない必要性というのは
現代のRuby用途では意外と低い

588 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:58:55 ]
自分んとこ(か、日本語が通ることが確定してる特定の環境)で使っておしまいというスクリプトのほうが多いな、確かに
外に出すんでなけりゃ日本語使ってもいいと思うけどね
日本語べったりになってるとアルファベットでどう書くか悩むことになるけど

589 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 23:01:44 ]
形態素とか使ってたら日本語使った方が簡単そうだな

590 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:22:14 ]
Ruby1.8.6です。REXMLのverは3.1.6です。
URLを与えたらそこから文書を抜き出してきて、それをyahooの形態素解析にかけるとXML形式でレスポンスが返るので
それをREXMLで解析するプログラムを作ったのですが、
wikipedia(全体ではなく開けるものもある)やその他一部のページで、REXMLの解析中にParseExceptionエラーが起きてしまうのですが、
エラー文を見ても意味がよく分からなく、同じような症状?が出た方も中々いないようなのでお手上げです。

以下エラー文です。
#<REXML::ParseException: Declarations can only occur in the doctype declaration.
Line:
Position:
Last 80 unconsumed characters:
<!doctype html public "-//W3C//DTD HTML 4.01//EN" "www.w3.org/TR/html4/str>


591 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:32:17 ]
明らかにXMLじゃないじゃん、それ
Yahooからの返事がXMLじゃないエラーか何かなんだと思うよ

592 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:35:52 ]
!DOCTYPE宣言が二重になってるとかなんだろうな

593 名前:590 mailto:sage [2009/01/20(火) 01:51:53 ]
>>591
エラーでしたら400等が表示されるはずなのですが、、

>>592
二重になるのってどこが問題なんですかね..

594 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:07:54 ]
>>593
400等が表示って、ちゃんとHTTPレスポンスヘッダはチェックしてる?




595 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:09:06 ]
しまった脊髄反射的なレスだった。
とりあえずREXMLに食わせるまえにファイル出力してみればいいよ。

596 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:33:58 ]
エラーになるURL晒すのが早いと思うが

597 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 04:34:23 ]
ネット系の問題に自分でデバックすら出来ないレベルか。なんか目的にたどり着くのは無理っぽい。


いつも使う必須のスクリプトが環境依存で引っ越して問題が出るのは良くある事。
まあその時に必要に迫られて書き直すと見通しよく成っていいプログラムに成る事は多いが。車輪の再生産気味だが。

598 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 06:11:08 ]
リファクタリングが車輪の再生産って言われるとやる気なくします><

599 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 06:25:09 ]
>>593
ステータスコードが200だからといって信頼していいわけじゃないぞ

600 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:21:46 ]
ruby 1.8.6 WindowsXP SP3です。

実例ではないのですが、100までの数をカウントするプログラムに、
標準入力から入力された数字を現在の数字に足す機能を加えたいと思っています。
色々調べたところ、スレッドというものを使えばよいのかな、という結論に達したので
以下のようなプログラムを書いてみましたが、思うような動作をしてくれません。
どなたかお知恵を貸していただけないでしょうか?

j = 1
t = Thread.new do
  while (j < 100)
    sleep 1
    p j.to_s
    j += 1
  end
end

while (j < 100)
  i = gets.chomp
  j += i.to_i
end


601 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:41:42 ]
これは・・・

602 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:45:58 ]
自然数k,p,q,m,nについて
k=mp+nq(m>=0,n>=0)を満たす(m,n)の組の数をv(k)とするとき
p=3, q=7, kが1から100までのときの結果vの一覧を出力したいです
Rubyではどのように書いたらいいですか?


603 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:53:52 ]
>>600
うちではうごいた

604 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:55:22 ]
>>602
m=0あるいはn=0のとき自然数じゃなくなるけどいいの?



605 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:58:43 ]
>>604
すみません間違えました
 x 自然数k,p,q,m,nについて
 o 自然数k,p,qについて
あと、m,nは「0以上の整数」です
よろしくおながいします

606 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:59:23 ]
>>603
うちでは数の表示がgets.chompに邪魔されて、リターンを押すまで
数え上げるほうのスレッドの実行がとまっているみたいなんです。

環境はLinuxとかでしょうか?

607 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:09:14 ]
>>606
cygwinです

608 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:10:44 ]
>>602
p = 3
q = 7
(1..100).each do |k|
 v = 0
 (0..(k/p)).each do |m|
  (0..((k-m*p)/q)).each do |n|
   if k == m*p + n*q
    v += 1
   end
  end
 end
 print "v(#{k})=#{v}\n"
end

609 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:20:36 ]
>>607
ありがとうございます。
実際にこの処理を使用するプログラムでは拡張ライブラリ使用&exerbでexe化を
考えています。Cygwinでは正常にexe化できないようなのでmswin32でなんとかならないか
もうちょっと調べてみます。

610 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:21:13 ]
>>600
mswin32ではgetsがブロックする。

611 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:27:05 ]
リファレンスのどっかにあったと思ってたんだけど、やっと見つけた。
www.ruby-lang.org/ja/man/html/trap_timeout.html

612 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:30:49 ]
>>608
こうかな
p = 3
q = 7
t = 0
u = 0
(1..100).each do |k|
 v = 0
 (0..(k/p)).each do |m|
  if (k-m*p)%q == 0
   v += 1
  end
 end
 print "v(#{k})=#{v}\n"
 u += v
 if v > 0
  t += 1
 end
end
print "total #{t}, #{u}\n"


613 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:41:30 ]
>>609
exerb+cygwinでexe化うまくいってるよ
なんか変なライブラリくっつけてない?

614 名前:デフォルトの名無しさん [2009/01/20(火) 09:59:05 ]
>>602
参考になるのかな
ttp://d.hatena.ne.jp/octech/20080118



615 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 10:09:17 ]
アンカミス
>>600

616 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 10:34:43 ]
>>614
ドンピシャです。ありがとうございます!

>>610-611
なるほど、mswin32だと修正を待つしかない・・・のかな?
と思ったけど回避策ってあるもんなんですね。引き出しを増やさなきゃ。

>>613
win32/sapi5を使っているのと、HDD容量に難があったのでCygwinは入れてませんでした。
2日前にHDDを注文したので届いたらCygwinでもやってみます。

レス下さった方々、ありがとうございました。

617 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:17:42 ]
>>616
>なるほど、mswin32だと修正を待つしかない・・・のかな?

バグじゃないから修正はされないんじゃないかな。
1.9では問題ないみたいだけど。

618 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:52:49 ]
>>608
共通一次ですね

619 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:54:26 ]
>>616
_kbhit入れたバージョンでも
一文字だけ入れてenterしないときって止まるよね

620 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 13:05:14 ]
>>617
バグじゃないんですかね?ruby-list 36068ではバグみたいに言われてる気がするけども。
1.9では問題ないとは!バージョンあげようかなぁ。

>>619
止まりますね。でも、そのほうが便利な気がしないでもないです、私の場合。

621 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 13:51:52 ]
>>614の方法だとキー入力するまでひたすらビジーループなんだが

622 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 15:42:40 ]
>>620
Windowsでselectがコンソールに対して効かないのは仕様だろう。
バグだと思うならMSに言ってみるのがいいんじゃないか。

623 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 19:56:56 ]
>>621
そんなことないですよ

624 名前:デフォルトの名無しさん [2009/01/20(火) 22:05:16 ]
h = {"direct"=>"5",
  :list=> {"6"=>"南西","7"=>"西","8"=>"北西","1"=>"北","2"=>"北東","3"=>"東","4"=>"南東","5"=>"南"}}
上のハッシュをh.ya2yaml すると
  direct: "5"
  ? !ruby/symbol list
  :
    ? "1"
    : 北
    ? "2"
    : 北東
    ? "3"
    : 東
    ? "4"
    : 南東
    ? "5"
    : 南
    ? "6"
    : 南西
    ? "7"
    : 西
    ? "8"
    : 北西
となるのですが、’?’はどういう意味ですか。
そもそも "8":北西 という感じで出力されると思っていたのですが,
期待と違った結果でした。
ruby 1.8.6 (2008-03-03 patchlevel 114)




625 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:48:19 ]
1.9っていつリリースされる予定なの?

626 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 01:17:39 ]
RC2出てから

627 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 02:00:38 ]
>>626
知らないなら答えきゃいいじゃん

628 名前:デフォルトの名無しさん [2009/01/21(水) 02:08:46 ]
Japanese O.K.

629 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 02:09:29 ]
RC2出たな

630 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:13:17 ]
a=[1,1,1,2,2,3,4,5,5,5]の配列を
b=a|aにしたら[1,2,3,4,5]となりますが、
1->3個,2->2個,3->1個,4->1個,5->3個のように
どの要素が何個かぶっていたかというのはどのようにしたらいいでしょうか?

631 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:26:54 ]
とりあえずは普通に数えればいい

overlap = Array.new
b.each do |bb|
count = 0
a.each do |aa|
count = count + 1 if aa == bb
end
overlap << [bb, count]
end
overlap.each do |i, n|
puts "#{i} の重複は #{n} 個です"
end

めんどくさい人向け

overlap = b.map{|e| [e, a.grep(e).size] }

632 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:27:07 ]
h=Hash.new
h.default=0
a.each do |i| h[i]+=1 end

俺も初心者に毛が生えた程度なので、より良いのがあれば指摘求む

633 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:28:53 ]
def uniq_c(org)
 counts = {}
 org.uniq.each{|e| counts[e] = org.count(e) }
 counts
end

とか。#countがどっから入ったか怪しいけど。
こーいう要望は割と定番なのでRuby "uniq -c"とかでググるとよろし

634 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:32:36 ]
確認したらArray#countはRUBY_VERSION >= '1.8.7'だった。代わり
org.count(e)
-> org.select{|x| e == x }.size



635 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:40:38 ]
最初のが一番マシだな
それ以降のはただのオナニー

もしかしたら演算記号メソッドで何かどうにかすればなんかどうにかなると思ったかもしれないけど、
残念ながらそういうのは無い
2つの配列の関係を解析して返すメソッドというのはあっても面白そうだとは思うが、きっとおおむね無駄だ

636 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:53:14 ]
>>631-634
ありがとございました
書き込んだ後,配列について調べてたらuniqっていうのがあるんですね.
>>635
そうです.なにかメソッドがあるのかなと思ったのですが.
数え上げしていけばいいくらいなんで無駄になりますよね.

637 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:27:54 ]
どこがオナニーなんだよ。数え上げる時は普通にHashを使うだろ
つーか>>631の最初のコードはズボラ過ぎる

638 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:38:19 ]
a.inject(Hash.new{0}){|h,v| h[v] += 1 ; h }

639 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:54:27 ]
>>632が一番マシですね

640 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 06:12:44 ]
普通に考えれば>>632だよな
少なくとも「最初のが一番マシ」はねーよw

641 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 09:10:58 ]
ハッシュは順番が保存されないのがなー

642 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 09:22:00 ]
この場合はたぶん順番必要ないよね

643 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 11:52:07 ]
正規表現を使って一致を見てるんだけど
正規表現のパターンの中に「図」っていう漢字をいれると

warning: regexp has `}' without escape

ってwarningでるんだけど何とかならないですか?



644 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 11:55:22 ]
その漢字の文字エンコード(普通、そのスクリプトのファイルの文字エンコード)を正規表現に指定しろ
っていうか、そのへんは解説なりなんなりでフォローがあったと思うんだが



645 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 12:04:10 ]
>>643
ファイルのエンコードは何つかってる?

646 名前:643 mailto:sage [2009/01/21(水) 12:30:03 ]
>>644-645
返事ありがとうございます。

/図/
ってやってるのでエンコードの指定は特に何にもやってないです
Regexpクラスかなんかをつかってそのインスタンスにエンコードを指定するってことですか?
ファイルはShift-Jisでやってます

647 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:00:30 ]
require 'jcode'
$KCODE = 'SJIS'
でとりあえずいいんじゃないの

648 名前:643 mailto:sage [2009/01/21(水) 13:06:04 ]
>>647
うまく行きました
ありがとうございます

649 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:07:18 ]
jcode厨がまだいたとは
jcodeは正規表現には全く関与しない

650 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:39:33 ]
>>643
-Kオプションについて調べるがよい

651 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:10:38 ]
いちいち起動するたびに -K オプション付けなくちゃいけないの?

652 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:16:18 ]
1行目
#!ruby -Ks

653 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:29:03 ]
>>652
i see.

654 名前:デフォルトの名無しさん [2009/01/21(水) 18:46:15 ]
データが文字列の内容に数字をふったものを対象にして
数字でソートする場合どんな感じでやればいいでしょうか。
文字数字のままやると小さい数字が後にきたりして、ソートがおかしくなるのですが。




655 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:01:10 ]
全部同じ桁にする

656 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:02:29 ]
sort メソッドの説明は気の利かない書き方をしてるからね
あれはブロックの結果がどうなるかでソートされるんだ

irb> puts ['30歳', '2歳', '10歳'].sort
10歳
2歳
30歳
irb> ['30歳', '2歳', '10歳'].each{|a| puts a.scan(/\d+/)[0].to_i}
30歳
2歳
10歳
irb> puts ['30歳', '2歳', '10歳'].sort_by{|a| a.scan(/\d+/)[0].to_i}
2歳
10歳
30歳


657 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:05:00 ]
>>654
数字を振るというのが文字列と別枠なら
hash = {3=>"c",2=>"b",1=>"a"}
hash.sort.map{|v| v.last}

658 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:12:11 ]
irb> ['30歳', '2歳', '10歳'].each{|a| puts a.scan(/\d+/)[0].to_i}
30歳
2歳
10歳

659 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:25:19 ]
>>658
あ、すまんね
そこのへんだけ直前に書き換えたんだ
案の定間違ってるな

irb> ['30歳', '2歳', '10歳'].each{|a| p a.scan(/\d+/)[0].to_i}
30
2
10

ってことで、ブロック内で数字部分を抜き出して整数にしてるんだということがわかってもらえればよかった
それぞれの要素に対して「数字部分を抜き出して整数にしたもの」で比較してソートすれば、おそらくうまくいく

660 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 01:31:38 ]
>>600
とりあえずC#(.NET3.5)では

int j = 1;
Thread t = new Thread(new ThreadStart(() => {
while (j < 100) {
Thread.Sleep(1000);
Console.WriteLine(j);
j += 1;
}
}));
t.Start();

while (j < 100) {
String i = Console.ReadLine();
j += Convert.ToInt32(i);
}

これが動いたから、IronRubyなら動くかもよw

661 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 04:51:23 ]
>>659
そこまで書いたなら最後まで書けばいいのに。
['30歳', '2歳', '10歳'].sort_by {|a| a.scan(/¥d+/)[0].to_i }
または
['30歳', '2歳', '10歳'].sort_by {|a| a =~ /¥d+/; $&.to_i }


662 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:26:38 ]
['30歳', '2歳', '10歳'].sort_by {|a| a[/\d+/].to_i }


663 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:40:21 ]
いや短くすることに意味はないから
そんなこと言ったら

%w.30歳 2歳 10歳..sort_by{|l|l.to_i}

が標準で最短だぞ

664 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:45:30 ]
たぶん単位とかだと思うけど、そういうのデータの中に含めるのってどうなんだろう
「1.5メートル」より「90センチ」の方が大きくなったりするんだろ?
さすがに「2メートル」と「5キロ」とかは混在していないと思うが



665 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:51:57 ]
生のデータを生のまま極力取り込んでおきたいという需要はそこそこあると思うよ
数値だけとかに正規化しとけというのはいやもう全くその通りではあるんだが

666 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:58:56 ]
>>665
そういうのはラッパクラス作って都合の良い方でアクセスできるようにしとく

667 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:11:59 ]
>>664-665の見てる世界と>>666の見てる世界は違うな

668 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:20:43 ]
データがアクセスされるのは一つの言語からだけとは限らないぞ
3つ言語使ってたら全部の言語でラッパークラスを実装するのか?

669 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:32:09 ]
それはまんどくさい(´・ω・`)

670 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:34:58 ]
>>668
1つの言語からだけのことのほうが圧倒的に多いと思うがどうかね
君は移植性の高いC言語を使うべきだと思うよ

671 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:46:13 ]
>君は移植性の高いC言語を使うべきだと思うよ
うむ

672 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:10:58 ]
データきたないと前の担当者に殺意を抱いたりするよなw

673 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:24:45 ]
>>667
全くだ
汎用DBソフトに格納される業務データしか扱ったことがないのだろう

674 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:33:35 ]
ほんとにどうでもいい話なんだけど

>>673
そういう人って稀にいるよね
業務でしかプログラミングに関わってない人
それはそれで仕事として効率もいいし好ましいことも多いが、話が全然合わんので困る



675 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 20:13:33 ]
仕事でやっててプログラミングを好きな人はまだ良いが
好きでもなく仕事だからってやってる奴のソースはだいたい汚い。
そういう時は殺意抱くなwww

676 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 01:33:48 ]
>>664
>たぶん単位とかだと思うけど、そういうのデータの中に含めるのってどうなんだろう

Measureというライブラリを使うと単位系を操ることができる
ttp://d.hatena.ne.jp/mrkn/20081025/sappororubykaigi01

677 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 02:30:36 ]
>>675
たしかに
a1=1
a2=2
a3=3
...
と延々と書かれていたことがある
配列+ループにするとか考えろと思ったが
行数で単価計算されるなら上の方が正解なのかも知れない

678 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 03:00:00 ]
配列として保持するコストを嫌ったのかもしれない

679 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 03:09:40 ]
世の中には虚しいこともあるんだね

680 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 03:57:53 ]
>>678がたぶん正解だと思う
行数稼ぎか配列利用法が理解できなかった(または利用禁止)な可能性も充分あるが

681 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:01:09 ]
つか、言語と実行環境に強く依存するな
配列にしてしまうと保持と参照コストが妙に高くなる言語というのはなんかどっかにあったはず

682 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:39:18 ]
array=[a,b2c,d2e,f,g]を[a,[b,c],[d,e],f,g]に分解するにはどうすればいいですか?

683 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:46:41 ]
>>682
標準的な方法はないから、まあ好きにやれ
要素ごとに正規表現で分割して自力で配列を作るしかないな

684 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:55:12 ]
>>682
split("2")とpushでOKじゃね?



685 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:18:20 ]
[a,b2c,d2e,f,g]

['a','b2c','d2e','f','g']
という意味なのか?

686 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:23:33 ]
>>685
この文脈ではそう考えるのが自然じゃね
配列の要素が参照している変数名の英字部分を
ネストした配列の要素の参照の変数名に反映したいという込み入った希望かもしれんが

687 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:34:30 ]
こうですか?わかりません

>> ['a','b2c','d2e','f','g'].map{ |e| /2/ =~ e ? e.split(/2/) : e }
=> ["a", ["b", "c"], ["d", "e"], "f", "g"]

688 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 06:33:01 ]
EOFにマッチする正規表現、または"末尾"がEOFであることを手短にチェックする方法ないですかね

キー1: 値1
キー2: 値2[EOF]


689 名前:227 mailto:sage [2009/01/23(金) 07:22:40 ]
昔のことになりますが、カテゴリ取得に関して質問したものです。
ログを見ていたら同じようなことが質問されていたのでまた、質問をさせていただきます。

search('a').select{|a| /cat_/ =~ a['href']}.map{|a| a.inner_text}
カテゴリが一つだけ指定されている場合は上のものでうまく言っていたのですが、
一つの記事で二つ以上指定されている場合にうまくいきません。
理想としてはcategory=["A",["A","B"],"A","B",["A","B","C"]]
のようにしたいのですが


690 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 07:50:36 ]
rubyってhtmlspecialcharsあるの?

691 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 07:52:37 ]
>>689
もっと具体的なhtmlの例を出してくれないと答えられないような…

692 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 07:58:05 ]
>>689
selectってなんだっけ、findだっけfind_allだっけ
…allのほうか

カテゴリってのは一番下にあるやつだな、他のブログではタグとか言われてるものだ

>>246では例が悪いので、適当な大手のアルファルアモザイク例に出すぞ
ttp://alfalfa.livedoor.biz/archives/cat_50026947.html

これから
[
 ["ネット・PC・技術", "短レス"],
 ["ネット・PC・技術", "短レス"],
 ["ネット・PC・技術", "知識・薀蓄"],
 …
]
という配列を抽出したいという要望でいいか?

「記事単位でsearchかけてから、それの返り値のHpricot::Elemなどに対してmapを使う」が答
なにをどうやって記事単位とみなすかはそのサイトのHTML構造読め

693 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:11:05 ]
>>690
あるよ

694 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:17:26 ]
>>691
>>692さんが例に上げたサイトのようなものです。
>>692さんが書かれたような配列です。記事単位はデザインの雛形によって変わってくるので調査済みです。
今移動中なんで確認できませんが,
記事単位.search('a').select{|a| /cat_/ =~a['href']}.map{|a|a.inner_text}みたいなものですか?



695 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:17:35 ]
require 'rubygems'
require 'hpricot'
require 'open-uri'
require 'kconv'

doc = Hpricot.parse(URI.parse('blog.livedoor.jp/dqnplus/').read)
result = doc.search('div.hentry').map{|div|
[div.at('h3.title%20entry-title').inner_text,
div.search('a').find_all{|e| /archives\/cat_/ =~ e['href']}.map{|e| e.inner_text}]
}

result.each do |post|
puts "#{post[0]}[#{post[1..-1].join(', ')}]".toutf8 # 画面表示のエンコードに合わせること
end

けっか:
FF11、バグを利用してアイテムを複製した500人の廃人を強制退会処分に
[びっくりニュース, ゲーム]
次期ロシア正教会総主教のネット人気投票、日本人大主教がダントツ1位に…「日本アニメのファンが原因」とロシアマスコミ
[びっくりニュース, 国際]
「孫悟空」の起源は韓国のサルだった…韓国教授が主張
[痛いニュース, 韓国・北朝鮮]
パッケージに萌えキャラが描かれた「ツンデレカレー」「萌カレー」他が馬鹿売れ
[おバカなニュース, 食生活]
「若者、結婚が遅い…どんな恋愛してるのか」「日本はなぜ子供産むのが難しいのか」など、小渕大臣が少子化分析チーム
[痛いニュース, 政治・経済]



タグのネスト云々はこういうことをやりたいのだと推測
タグが1個しかない場合も要素1の配列になるので注意

696 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:23:21 ]
>>695
ありがとうございます。すぐに確認できませんが,帰宅したら確認します!

697 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:27:31 ]
スクリプト作るの早いな

698 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:30:58 ]
>>697
過去に似たようなの作った経験があれば見当つくから
あとはサイトの特徴調べるだけでこんなもんよ
早い人はもっと早いはず

というか、このスクリプトは見たままの処理しかしてないので泣きたくなるほど遅い
なんかスゴい人がXPathとか駆使して爆速に仕上げてくれることを期待

699 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:32:08 ]
>>693
名前は?

700 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:42:52 ]
>>699
def CGI::escapeHTML(string)
string.gsub(/&/n, '&').gsub(/\"/n, '"').gsub(/>/n, '>').gsub(/</n, '<')
end

ということで CGI::escapeHTML
require 'cgi' して使ってね
シングルクオートをエスケープすることはありません

701 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:50:58 ]
今なら cgialt/util を薦めた方が良いのでは

702 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:52:46 ]
標準でなくていいのならたくさんあるよそりゃ
4つgsubするだけだから自前でやれというのもありだろうし
cgiライブラリがCGI作成に最早使われてないのは公然の暗黙

703 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:56:32 ]
最近は文字列エスケープユーティリティと化してるな

704 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 09:39:17 ]
ここでスモーカー抜けるのは痛いな



705 名前:704 mailto:sage [2009/01/23(金) 09:43:02 ]
ごめんなさい

706 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:01:47 ]
>>699
ttp://www.ruby-lang.org/ja/man/html/cgi.html
結構いろいろそろってる

707 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:03:15 ]
揃ってるも何も(PHPの)htmlspecialcharsの動作をするのは CGI.escapeHTML だけだぞ

708 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:12:43 ]
>>707
全然知らんようだからほかにもいろいろあるって紹介したのだが
URLエンコードするのありますか?とか追加質問されたらバカバカしいだろ
リロードしてなかったから>>700は気づかなかった

709 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:18:11 ]
Ruby1.9が入っていないと端末に「アナログ」と表示する.bashrc - aikeの日記
d.hatena.ne.jp/aike/20090118


710 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:24:50 ]
Rails1.2.6を使って作成しているのですが、selectを動的に変化させようとすると ActionView::TemplateError (undefined method `number_select' for #<HashWithIndifferentAccess:0xb722adf0>
というのが出てしまいます。回避策があればご教授ください。

<やっていること>
index.rhtmlの中を次のようにしています。
<div id="all">
<table>
<tr><td id="first"><%= render :partial => 'first_info' %></td id="first"></tr>
<tr><td id="second"><%= render :partial => 'second_info' %></td id="second"></tr>
<tr><td id="third"><%= render :partial => 'third_info' %></td id="third"></tr>
</table>
</div id="all">

_first_info.rhtmlには次のような selectがあります。
<%= select(:first_info, :number_select, @numbers, {:selected => @select_value}, {:onchange => remote_function(:submit => :first_info, :url => { :action => :change_select }}) %>
@numbersはコントローラー側で @numbers = ActiveSupport::OrderedHash.new してデータベースから値を格納しています。

_second_info.rhtml のテキストボックスに値を入力し、ボタンを押したら、その値をDBに登録し、_first_info.rhtmlの selectのリストに入力値を追加しようと以下のように処理しています。

1.コントローラーの_second_info.rhtmlから次の関数が呼ばれる
def second
データベースへ登録
@numbers = ActiveSupport::OrderedHash.new
@numbers へデータベースの値を格納
@select_value = 1
end

2. second.rjsは _first_info.rhtmlを更新するため、次のようになっている
page[:first_info].replace_html :partial => 'first_info'


711 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:28:02 ]
>>710
【Ruby】Ruby on Rails Part6
pc11.2ch.net/test/read.cgi/php/1224838013/

712 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:42:15 ]
instance_variable_set の 変数名に指定する文字列って、ユーザの入力そのまま渡しても大丈夫?

713 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:51:53 ]
>>712
そのクラスでありえそうな変数名用文字の集合(おおむね英数字とアンダースコア)にマッチしないものは
事前に弾いとくとかしておいたほうがいいと思う
あるいはアクセサの提供を条件にしておいて instance_methods に指定文字列があるかどうかチェックするとか
中のほうでevalしてるんじゃないかという疑問に答える知識はない

714 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 11:58:26 ]
>>712
既存のインスタンス変数をどうされてもかまわないなら、大丈夫。

>>713
内部でevalとかはしてない。



715 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 12:19:33 ]
>>710
>ActionView::TemplateError (undefined method `number_select' for #<HashWithIndifferentAccess:0xb722adf0>

エラーの意味は分かってる? HashWithIndifferentAccess のオブジェクトに対して number_select メソッドを呼び出して、それで undefined method になっている。

呼び出すメソッド名を間違っていないなら、呼び出す対象となるオブジェクトを確認してみてはどうだろうか。
もしそれであっているなら、Railsのバグかもね。


716 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 19:59:53 ]
継承したクラスのオブジェクトの配列で困ってるんだけど
class SuperClass
 def <=> other
  true
 end
end

class Class1 < SuperClass
end

class Class2 < SuberClass
end

arry = []
array << Class1.new
array << Class2.new

array.sort

で、『Class1 と Class2 は比較できねぇよゴラ!』 といわれてしまうんだけど。
どうにかなんないかな?
C++の
SuperClassVecter* array = new SuperClassVecter()
Class1* c1 = new Class1()
array.push((SuperClass*)c1);
Class2* c2 = new Class2()
array.push((SuperClass*)c2);
みたいなことがやりたいんだけど、よくわからんちん。

717 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:10:23 ]
エラーメッセージを勝手に訳す人間に発展の未来はないのでよく覚えておくとええぞ

あとマニュアルくらい見れ
ttp://www.ruby-lang.org/ja/man/html/String.html#self.20.3c.3d.3e.20other
> self <=> other
> self と other を ASCII コード順で比較して、self が大きい時に正、等しい時に 0、小さい時に負の整数を返します。

ということで、<=> メソッドは整数を返すように作らなければ sort で比較できない

718 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:13:46 ]
>>716
Comparableメソッドをインクルードしましょ

719 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:42:21 ]
というか、基本的にはクラスが違うと比較はできないよ
でもそれだと困るので
(10 < 11.1 だとエラーで、いちいち明示的に 10.to_f < 11.1 しなければならないとか超困る)
Rubyではcoerceのようなメソッドを作って汎用的なデータ構造に変換を依頼するというのが普通らしい
でもめんどいので、スーパークラスで自分のデータの大きさを規定するというのはどうだろう

class SuperClass
def initialize(data); @data=data; end
def <=>(other); self.length - other.length; end
def length; @data.length; end
end
class Class1 < SuperClass; end
class Class2 < SuperClass; end

arr = [Class2.new('second'), Class1.new('first')]
p arr.sort

結果
[#<Class1:0xb7c415f0 @data="first">, #<Class2:0xb7c41618 @data="second">]


720 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:53:57 ]
>>719
標準の配列に入ってる状態で標準の sort をすると Class1 のオブジェクトが Class2 より前に出るとか
そういうほのかに邪悪の香りがする処理をしたいのでは

class SuperClass
def <=>(other); self.class::PN - other.class::PN; end
end
class Class1 < SuperClass; PN=1; end
class Class2 < SuperClass; PN=2; end
class Class3 < SuperClass; PN=3; end

arr = [Class3.new, Class2.new, Class1.new]
p arr.sort


[#<Class1:0xb7d0ce94>, #<Class2:0xb7d0cea8>, #<Class3:0xb7d0cebc>]


721 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:04:30 ]
rubyのスレって親切に教えてくれるよね。

PHPは気持ち悪い連中ばっかりで寒気がする

722 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:15:30 ]
どの言語も人気が出て使う人が増えてコモディティに接近するとああなるよ
このへんの待遇は単にユーザーの数の少なさの裏返しというだけに過ぎない

723 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:36:47 ]
ドキュメントが完備されていないから、まだまだまともな質問が来るので、
答える方もまだブチ切れてなわけだ。

724 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:49:05 ]
でもオンラインリファレンスに乗ってることでもみんな寛容に答えてるよね。
新規参入促進にはいいのかな?

俺はまだ初心者だけどrubyは書いてて楽しいね



725 名前:716 mailto:sage [2009/01/23(金) 22:55:11 ]
みんなありがとう。
継承クラスのどっからでも比較できるようになったよ!

あと、ドキュメントって読みにくいよね。
せめて単語で引けるインデックスがあれば・・・

月曜にRuby始めたばっかりなんだけど

ドキュメント調べてる時間が9割以上ってどういうことなのさ!

しかも知りたいことにはほとんどたどり着けない。

726 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 22:58:55 ]
ソース嫁ってことなのか。

727 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:04:07 ]
プログラミングなんて8割くらいは調べものだと思うよ
始めたばかりならなおさら

でまあそれとは別にRubyのドキュメントは機能的に非常に貧弱だ
どうにかしないといけないという話は出るが、本当にマシになったことはまだ一度もない

728 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:21:48 ]
>>727
> プログラミングなんて8割くらいは調べものだと思うよ
> 始めたばかりならなおさら

おまいは時代に追い付け

729 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:25:03 ]
>>728
打鍵時間以外はほとんど全部調べ物だと思うんだが
仕様書読んだりマニュアル読んだりRFC読んだりネットの事例読んだり

730 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:27:03 ]
>>725
>ドキュメント調べてる時間が9割以上ってどういうことなのさ!
初心者はまず入門書から始めることをオススメする
Webのドキュメントだけで済まそうとするのは、他の言語に精通している人だけにしとけ

731 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:30:16 ]
半分はテストじゃないのか?

732 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:32:38 ]
そんな時間かかるか?
っていうか、テストやらデバッグってプログラミング作成時間とは別にとって考えるもんなんじゃね?

733 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:36:59 ]
Rubyのドキュメントががっかり品質なのはどう言い訳しても事実

734 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:44:52 ]
どこに言い訳が?



735 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:47:03 ]
思春期後期の症例の一つです<言い訳してる人を見出したい

736 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:52:26 ]
じゃあ>>733は見えない人を相手してるだけか、失礼

737 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:55:50 ]
>>732
「テスト駆動開発(TDD)」「振る舞い駆動開発(BDD)」「継続的インテグレーション」あたりでぐぐれ。

738 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 00:57:16 ]
>>725
ドキュメントはchm版を見るのがおすすめ
ちゃんとキーワードでインデックスされてるのでメソッドを調べたりするのが早い

739 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 01:57:46 ]
>>737
それだってカウントしないと思うぞ

740 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 06:56:49 ]
慣れないうちはchm版リファレンスマジおすすめ

つーかRubyリファレンスががっかり品質だって言われるけど
他の言語のドキュメントってそんなに充実してたっけか?

>>739
テストコード→アプリコード→テストコード→アプリコード→… の手順で進めるなら
両方ともプログラミング時間に含めるべきだろう

741 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 07:30:00 ]
Ruby ドキュメントといえば
Dave Thomas と Andy Hunt の Programming Ruby の Web 版が
見れたときは感動した。
日本語訳が出たときは、お布施のつもりで買った。

742 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 09:00:21 ]
>>721
最近、php使い始めたんでphpの質問スレもいってるんだけど、
何故かみんな少しカリカリしているイメージw

ただ、やぱphpはリファレンスマニュアルがしっかりしている(特に公式がすばらしい)
のがいいわ。
マニュアルにコメントがつけられるらしくて(細かいところは知らん)
FAQが補足されてることも多々ある

>>740
chm使ってるけど、がっかり品質ということはないな・・・
サンプルコード的なのをものとか、メソッドに関するFAQとかをもっと載せて欲しいと思うことはあるが
Rubyに慣れるまでは使いにくかったけど、慣れてからはそこそこ使えると思った。
まあ、リファレンスだしね

743 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 12:09:14 ]
見て、使い方を理解するのに時間がかかる感じだな。
書いてるほうは、こんなの一目見りゃ分かるだろ的ノリなんだろうけど、見てるほうはそうでもないギャップがある。
お腹いっぱいに成るほどにサンプル手繰れてもいいと思うけどね。
でもオブジェクト指向自体が、ある日突然閃くまでは意味不明の苦痛の日々だしなあ。

そういう意味で教典読んでも、修行の後、悟り開けないと付いて行けない感じ。
phpのほうは、思想的な物は無くてどうとでも使える節操無い所があるからな。結果的に出来りゃなんでもいいじゃんみたいな。
便利そうな機能も無節操に突っ込みまくってるし、実際便利ではある。rubyだと便利そうなライブラリを探して読み込む所から始まるし。

744 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 12:30:50 ]
>でもオブジェクト指向自体が、ある日突然閃くまでは意味不明の苦痛の日々だしなあ。

はぁ?



745 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 17:22:24 ]
>>744
閃く遥か前の段階で「自分は既に悟っている」と勘違いしてる馬鹿には
縁のない次元の話だから、無理に関わろうとしなくていいです。

746 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 18:02:39 ]
うわぁ・・・

747 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 19:12:20 ]
もうやめようぜ!おまいらの好きなアイドルはだれだ?
俺は長島海輝だぜ!

748 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 19:31:42 ]
ここ↓にあるように、数字を日本語表記にするようなモジュールはありますでしょうか?

そろそろ FizzBuzz に飽きた
blog.livedoor.jp/nipotan/archives/50985988.html

749 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 19:42:31 ]
>>748
特にないと思う
たぶん、世界中で何十回も生産されてるコードだ
どっかであってもいいのにね

750 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:29:35 ]
>>746
俺もネットやりたての中二病真っ盛りの頃、
グウの音も出ないけどそれでも何か「相手に痛いところがある」風に装いたいとき、
よくそういうの書き込んだなー。

751 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:31:30 ]
calコマンドのようにカレンダーを表示したいのですが、定石みたいなのってありますか?

752 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:49:58 ]
宿題スレに書き込んだのが残ってた
calコマンドのように表示するように作ったのは確かなんだが、
ぶっちゃけ表示部で何やってんだかわからん

#!/usr/bin/ruby
require 'date'
### Usage: ./cal.rb [YYYY MM]
### ./cal.rb 2007 3 #=> Mar 2007 calender
### ./cal.rb 3 2007 #=> Mar 2007 calender
### ./cal.rb #=> this month's calender
if ARGV.empty? then
t = Date.today
else
argv = ARGV[0,2].map{|s| s.to_i}
t = Date.new(argv.max{|a,b| a <=> b}, argv.min{|a,b| a <=> b}, 1)
end
(d_one, d_last) = Date.new(t.year, t.month, 1), Date.new(t.year, t.month, -1)
cal = "#{Date::MONTHNAMES[d_one.month]} #{d_one.year}".center(3*7) << "\n"
cal << Date::ABBR_DAYNAMES.inject(''){|days,name| days << name.chop.rjust(2) << ' '} << "\n"
(d_one-d_one.wday).upto(d_last+6-d_last.wday) do |d|
(cal << ' ';next) unless d.month == d_one.month
cal << d.day.to_s.rjust(2) << ' ' << "\n"*(d.wday / 6)
end
puts cal


753 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:55:45 ]
>>749
自分で作ってみて、宿題スレにでも行きます

754 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:55:53 ]
>>752
ありがとうございます。
読んでみますね。



755 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:02:39 ]
>>754
要は、 String#rjust ってのがあるんだよ
これは指定数で右詰めする
"A".rjust(2) は "+A" を返すし(+は本来は空白)
"AB".rjust(2) は "AB" を返す
この2バイト確定の文字を空白で挟んで7つ表示して1週間を作ってる

756 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:04:28 ]
joinでいいじゃんね、これ

757 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:38:17 ]
>>748-749
文字を音声で読んでくれるソフトは結構出回ってる
Ruby 的には不評な Windows 系なら
Microsoft Windows Speech っつーソフトが無料だから試してみれ

日本語・ドイツ語あたりまでならなんとかなるんだが
フランス語だと死にそうだな


758 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:40:18 ]
ja.wikipedia.org/wiki/Speech_Application_Programming_Interface
これをRubyから叩けば良いかも

759 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:47:44 ]
…?

760 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:52:55 ]
松本教信者のみなさん今日は。

761 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 22:44:08 ]
>>757-758
Rubyの練習として、NabeAtzz問題を解いてみたかっただけなんすよ

762 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:14:59 ]
Rubyのrequireという命令が、使う頻度の高い割に
すごくタイプしづらい文字なので困っています。
COBOLに慣れているので、copyというキーワードで
代替できるようにRubyを改造する方法があれば教えてください。

763 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:19:01 ]
copyという文字列をrequireに置換するスクリプトをかけばいいやん

764 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:21:28 ]
alias copy require

ただし、他の人がいじるスクリプトではお奨めしない
タイプしづらくてもrequireに慣れるべき



765 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:23:42 ]
>>762
COBOLやれ

766 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:30:57 ]
ちょっとしたbotを書いてみましたが、何か変なところがあったら教えてください。
なんか定数まわりで警告が出てますがあまり気にしないでください
ダウンロードキーは2000、2時間で消えます
www1.axfc.net/uploader/He/so/186680

767 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:01:25 ]
ワロタ

768 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:03:57 ]
>>762
補完系使えよ

769 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:19:02 ]
require は COPY ではないので、それやりたいなら COBOL やれとしか

770 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:44:01 ]
>>762
copyって入力したらrequireと変換されるように辞書に登録してしまえば

771 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:50:49 ]
def copy arg
 require arg
end

772 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 11:57:24 ]
if then →if {
end → }

に置換するC言語のマクロ思い出したww
さすが、COBOLerは発想が一味違う

773 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 11:59:45 ]
COBOLer に限った話ではないぜ
ttp://www.kojima-cci.or.jp/fuji/computerbooks/c/c.modula2.html

774 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:04:59 ]
天下の元祖B shellだってそういう風に書かれていたんだけどな



775 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:05:55 ]
B shell は if 〜 then; ...; fi だ

776 名前:デフォルトの名無しさん [2009/01/25(日) 12:15:51 ]
ふぃ〜

777 名前:762 mailto:sage [2009/01/25(日) 12:22:01 ]
アドバイスありがとうございます。
いろいろ検討したのですが、
あらかじめ先頭行にreqireと打ち込んだ
ひな形テキストファイルを用意しておき、
ソースを書き始める時はそれを読み込む
ことにしました。

778 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:25:22 ]
ほんとにrequireって打つのが苦手なんだな・・・。

779 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:29:39 ]
q以外は、人指し指と中指を単純に動かすだけなんだけど、
まぁ、指の仕様も人それぞれってことなんだろうな。

780 名前:デフォルトの名無しさん [2009/01/25(日) 12:34:00 ]
require

781 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:36:57 ]
キーボードを見ずにrequireって打てたら神 その3
gimpo.2ch.net/test/read.cgi/toilet/1200207879/

782 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:38:17 ]
>>775
こういう意味だよ。
minnie.tuhs.org/UnixTree/V7/usr/src/cmd/sh/mac.h.html

783 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:56:40 ]
requireとloadを逆にしておけばよかったのになあ

784 名前:デフォルトの名無しさん [2009/01/25(日) 13:14:08 ]
>>781
requrie



785 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:17:21 ]
余裕だろ。

require

786 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:18:01 ]
require なんてキーの配置と流れは簡単じゃん

req→右から左。キーは隣+一つ飛ばし
ui→左から右。キーは隣
re→右から左。キーは隣

3回にわけてリズムをつかめばすぐに慣れると思う
って全然Rubyの話じゃないな

787 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:19:31 ]
QWERTY

788 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:20:21 ]
英単語的に、qのあとはuが来ることが多いので、その部分はほとんど間違えなく指が勝手に動くな

789 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:23:48 ]
test
require

790 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:36:28 ]
ていうか、スクリプトの一番最初にまとめて、
またはライブラリ追加の必要性があるときにファイル先頭に移動して改めて書くようなもんだから、
その時だけゆっくり(手元見ながら)打ち込めばいいじゃんね
キーボード全体から強い光が発せられていて注視できないような構造になってるとかそういうのですか?

791 名前:デフォルトの名無しさん [2009/01/25(日) 13:37:17 ]
私の好きなフィギュアスケートの澤田亜紀ちゃんの名前は打ちにくい

792 名前:デフォルトの名無しさん [2009/01/25(日) 13:43:48 ]
      | │                   〈   !
      | |/ノ二__‐──ァ   ヽニニ二二二ヾ } ,'⌒ヽ
     /⌒!|  =彳o。ト ̄ヽ     '´ !o_シ`ヾ | i/ ヽ !   Require ...
     ! ハ!|  ー─ '  i  !    `'   '' "   ||ヽ l |

793 名前:772 mailto:sage [2009/01/25(日) 14:19:58 ]
>>773
それそれw そのことだよまさに

>>777
俺ならエディタのスニッペにrequire登録しておいて、
r(スニペット補完キー)
でrequrieを補完するな

794 名前:772 mailto:sage [2009/01/25(日) 14:20:39 ]
スニッペってなんだww
「スニペット」な「コードテンプレート」とかエディタや開発環境で呼び名は違うと主ウケ緒d



795 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 14:25:24 ]
落ち着け。


796 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:12:24 ]
require よりも、elsif の方が、打ちにくい。
エディタの設定で、*.rb ファイルで、elseif と書いたら、
elsif に置換しているけど。

797 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:13:27 ]
ZAQ のうちにくいこと

798 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:28:50 ]
ZAQは小指の爪を使ってキーボードの下から上へすべらすように

z
za
zaa
z
za

・・・できねえ

799 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:32:16 ]
そんなん右手薬指で右Shift押さえながら左薬指でzaw押せばいいじゃん
ホームボジションなにそれ

800 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:42:36 ]
>>799
押せてねぇw
ホームポジションなにそれは同意で、小指薬指中指で順にZAWと押せば

( ゚Д゚)・・・。

ところで>>771みたいなことするよりは>>764のほうがいいよね?
>>771みたいにラップしたほうがいいときってある?

801 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 17:49:11 ]
requireは上段に集中してむしろ打ちやすいような。
どうしても打てないなら、つ 最終兵器dvorak

802 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 18:47:55 ]
req(単語補完(ry
だろ、JK

803 名前:デフォルトの名無しさん [2009/01/25(日) 19:13:48 ]
ttp://www.sanspo.com/sports/images/090125/spf0901251746010-p2.jpg

804 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 19:17:12 ]
>>803
誰もそんなんrequireしとらん。



805 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 19:50:19 ]
word = ["apple", "orange", "lemon"]
を検索のキーとして
sentence = ["apple is red","orange is not blue","lemon is yellow","apple is not orange","lemon is not red"]
から何個、検索結果が出てきたか知りたいのですが、どうすればいいでしょうか?



806 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:03:10 ]
>>805
配列要素をeachで枚挙することを厭ってはいけない
特にRubyではね

words = ["apple", "orange", "lemon"]
sentence = ["apple is red","orange is not blue","lemon is yellow","apple is not orange","lemon is not red"]

counts = {"apple"=>0, "orange"=>0, "lemon"=>0}
sentence.each do |s|
words.each do |word|
if /#{word}/ =~ s then
counts[word] = counts[word]+1
end
end
end

p counts


結果:
{"orange"=>2, "apple"=>2, "lemon"=>2}


807 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:14:18 ]
counts = {}
words.each do |word| counts[word] = 0 end

808 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:15:04 ]
>>807
スレタイ6回くらい読め

809 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:43:13 ]
unko

810 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 21:52:42 ]
久しぶりにスレみたら>>747で吹いた。
男じゃん。と思って検索したら、こんなに可愛い子が女の子なわけないじゃないか

811 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 22:18:03 ]
ググってしまったじゃないかww

812 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:26:45 ]
調べたらショタアイドル。ぐぐr必要なし

813 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:38:45 ]
>>812
ぐぐってしまったじゃないか

814 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:45:15 ]
密林で注文したじゃないかw



815 名前:デフォルトの名無しさん [2009/01/26(月) 03:25:48 ]
puts "文字"
puts "文字"
puts "\n"
srand
require 'readline'
def try_answer(prompt)
while buf = Readline.readline(prompt, true)
yield buf
end
end
difficulty = ($*[0] || 1).to_i
difficulty >= 1 or raise "#{difficulty}: Invalid difficulty direction"
answer = rand(30 * difficulty + 1)
judge_table = ["文字1","文字2","文字3"]
try_answer("文字 > ") do |line|
try = line.to_i
result = try <=> answer
puts "#{try}#{judge_table[result]}"
break if result.zero?
end

プログラミングに興味が出て、いろいろさがしてたら
学校の過去の資料にこんなプログラムがありました。
これはどんなプログラムなんでしょうか?
一文一文の意味を教えていただけないでしょうか?よろしく
おねがいします。

816 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 03:31:54 ]
マルチは感心しないな

817 名前:デフォルトの名無しさん [2009/01/26(月) 03:32:21 ]
ruby経由でwgetしつつ出力を表示しつつ、log.txtにもはきつつってことをやりたいのですが、上手くいきません。
画面には表示されますが、log.txtには何も書き込まれないという・・・
これは何がおかしいものなんでしょう

Dir::chdir("/work") do
 system("wget example.com/ | tee log.txt")
 puts "read log.txt"
 puts File.read("log.txt")
end


818 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 03:45:55 ]
>>817
wget の出力は標準エラー出力に表示する
tee は標準出力を取り込むことしかできないから、そもそも log.txt にはなにも書き込まれない
wget localhost/ 2>&1 | tee log.txt
Ruby あんま関係ないな

819 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 03:57:25 ]
>>818
いけた!そっかwgetエラー出力だったのか・・・
基本的なところをうたがうべきなのにすっかり忘れてた

820 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 04:00:33 ]
これを意識してる人はまずいないよ
これはむしろ wget の欠陥だと思う

821 名前:デフォルトの名無しさん [2009/01/26(月) 05:47:44 ]
Rubyでwebサーバーにアクセスしたとき
そのサイトにどんなファイルがあるか調べる方法はありますか?

822 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 06:03:15 ]
index許可してあればリスト取り出せるけど
そうじゃなければ_

823 名前:デフォルトの名無しさん [2009/01/26(月) 09:16:34 ]
robotでも作るつもりなのかな

824 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 11:26:53 ]
>>820
wget の場合、標準出力は -O - で取ってきたものを出力するためにあるので
(他のツールにパイプで直接流し込んだりとか)、そういう時にも一貫性を保てる
ように、メッセージは標準エラー出力というのは理にかなっている。
メッセージをファイルに取りたいなら -o filename オプションを使うという手もあるが。

Ruby 関係ないな。



825 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 11:30:37 ]
>>822
Ruby関係ないよね
っていうか、HTMLやHTTPの勉強はしてもらってるのかね
Rubyは魔法じゃねえぞ

826 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 11:39:31 ]
Ruby関係ないということがわかるだけでも勉強としては前進だから、どんどん聞くだけ聞いてもらってもいいけどな
回答としても「ちげーよRuby関係ねーよ」と答えるだけでいいから楽だし

Ruby内でwget使ってログ管理しようとして嵌るというのは順調なテンプレの範囲だと思う

827 名前:817 mailto:sage [2009/01/26(月) 12:24:18 ]
そもそも、コマンドラインで
 wget example.com/ | tee log.txt
ってやってみてRubyの問題なのか、そうじゃないのか切り分けるべきでしたね

なにあれ、解決したので助かりました。

828 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 13:40:37 ]
Ruby 1.8でDir.globに複数のパターン(というか拡張子)を指定する方法は
ありませんでしょうか?

(Dir.glob("**/*.css") + Dir.glob("**/*.html")).each do |file|
 :
end
のようにするしかない?


829 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 13:44:36 ]
>>828
マニュアルに初心者お断りな感じできちんとわかりにくく書いてあんじゃんよ
irb> Dir.glob("*")
["002.txt", "001.txt", "aaa.jpg", "bbb.jpg"]
irb> Dir.glob("*.txt")
["002.txt", "001.txt"]
irb> Dir.glob("*.txt\0*.jpg")
["002.txt", "001.txt", "aaa.jpg", "bbb.jpg"]



830 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 13:49:16 ]
あれわかりにくいよね
素直に第一引数は配列受け取るようにすればよかったのに

831 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 15:37:35 ]
ネットワーク上にあるExcelファイルを、
open-uriを使わずにnet/httpを使ってFileオブジェクトに格納する方法はあるでしょうか

832 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 15:52:09 ]
>>831
bodyをそのままwriteするだけじゃダメなんだっけ?

833 名前:828 mailto:sage [2009/01/26(月) 15:52:40 ]
>>829
本当だ!

> パターンを "\0" で区切って 1 度に複数のパターンを指定することもできます。
>
> p Dir.glob("f*\0b*")
> => ["foo", "bar"]

マニュアルみたつもりで見落としていました。
ありがとうございました。

834 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 15:57:50 ]
>>832
bodyメソッドを実行すると「string contains null byte」とエラーが出てしまいます・・



835 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:05:54 ]
めんどくへえ
イントラ限定のサーバかなんかで変な形式で送られてきてると予想
ヘッダはなんて言ってる?

836 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:10:15 ]
レスポンスのヘッダでしょうか?

HTTP/1.1 200 OK
Date: Mon, 26 Jan 2009 07:08:59 GMT
Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) mod_ssl/2.8.12 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.1.2 mod_perl/1.26
Last-Modified: Mon, 26 Jan 2009 00:11:23 GMT
ETag: "3f1629-48000-497cffab"
Accept-Ranges: bytes
Content-Length: 294912
Content-Type: application/vnd.ms-excel

こんな感じです

837 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:10:22 ]
>>834
エラー箇所どこ?
win32なのにバイナリモードでFile.openしてないとかいうオチはない?

838 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:14:04 ]
>>837
さすがにそれはないと思いたい

839 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:23:08 ]
>>837
orz おさわがせしました

840 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:29:17 ]
>>838-839
初心者スレだしこんなミスもいいんじゃね?w
解決したならなによりだし(あのエラーを見たことは無いから自信はなかった)
騒がせたと懲りてるようなら、もう同じミスをしてもすぐ自分で気づくだろうから。

841 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:16:29 ]
>>833
glob 構文だけを純粋に使って、*.{css,html} これでもいんじゃない。

842 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:29:56 ]
>>833
・{ } コンマで区切られた文字列の組合せに展開します。

Dir.glob("**/*.{css,html}") do |file|
puts file
end


1.9だと配列で複数のパターンを渡せるようになった


843 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:39:27 ]
あらら、かぶっちゃった

Dir[pattern] 形式だと1.8でも複数のパターンを指定できるよ

Dir["**/*.html","**/*.css"].each do |file|
puts file
end


844 名前:828 mailto:sage [2009/01/26(月) 17:40:13 ]
>>841-842
おお、便利だ!

> { } コンマで区切られた文字列の組合せに展開します。
> 例えば、 foo{a,b,c}はfooa, foob, foocに展開されそれぞれに対してマッチ判定を行います。

> 括弧は入れ子にすることができます。例えば、 {foo,bar{foo,bar}} は
> foo, barfoo, barbar のそれぞれにマッチします。

これですね。ありがとうございました。




845 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 20:20:17 ]
>>843
完全に単なるエイリアスだと思い込んでた…
glob構文めんどいから

["**/*.html","**/*.css"].inject([]){|r, i| r.concat Dir.glob(i) }

こんなことしてたぜ…横から感謝

846 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 22:36:34 ]
>>843
すげー。知らんかったわw globとは別なのね

847 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:20:28 ]
>>843はオレも知らんかったので助かるんだけど、でもこれっておかしいよね。
ほんとはglob()と同じにすべきだよな。わざわざこんなふうにしている意味が分からん。


848 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:24:54 ]
> ほんとはglob()と同じにすべきだよな
いまさらglobを変えるわけにいかないからせめて関数的メソッドDir[]は配列を受け取るようにしたという流れだと思った
よく覚えてない

849 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 02:16:31 ]
Dir[]とDir.globの違いはなんだろ(引数以外)
Dir[]全部列挙で、Dir.globはブロック渡すと逐一処理可能ってことか?

850 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 03:32:53 ]
glob2とか作ってコンパチ目指したほうが。
なんか先に作った香具師の実装がアレでみんな迷惑してるの多いよね。cgiとかwww



Content-Transfer-Encoding: base64とか付いてるとか?

851 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 09:23:26 ]
>なんか先に作った香具師の実装がアレでみんな迷惑してるの多いよね。cgiとかw
あほか
それは事実だが結果的にそうなった
つまりそういう開発ポリシーだからそうなる必然
文句云うな

852 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 09:25:48 ]
日本語でおk

853 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 09:37:46 ]
まぁ文句あるならもっと良いもの自分で作れってことだろ
そうやってMatzんは煽って北

854 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 11:11:36 ]
「開発ポリシー」で互換性を残したままにするから、
結果的に古いのが残っているってことでしょ



855 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 11:36:22 ]
Rubyのコアライブラリ近辺って「1つ目」を作る人は大量にいるけど「2つ目」を作る人がいないんだ
全部自前でクラスやメソッド改造してしまうから

Ruby1.2くらいで「このライブラリの存在は大きいので、では本格的なものを添付しましょう」という流れにならないのがRuby

856 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 13:16:40 ]
cgi2chとかいうライブラリができたら楽しいなw

857 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:00:45 ]
>>844
シェルのワイルドカード展開と一緒だよ。コマンドラインで多用しない?
diff -c nagainamaenofairumeiwonandomoutitakunai.rb{.orig,}とか。

858 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:16:40 ]
確か次世代cgi.rbは、候補はあるけど決定的なものがないという理由で今のままなんだよね


859 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:24:55 ]
cgi.rbをとりあえずな感じで添付したらそのまま数年維持されて癌になったという経験が尾を引いてるな

860 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 15:40:24 ]
互換性なんかどこに残ってんだよ

861 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:26:19 ]
クラス CGI2ch::BBS
クラスメソッド
CGI2ch::BBS.new([index])
最新の板一覧取得用URL(複数候補可)を指定

インスタンスメソッド
menu()
板一覧を取得
戻値 (cat, host(FQDN), board, name) のリスト
例:
[('', 'www.2ch.net', '', '2chの入り口'),
('', 'info.2ch.net', 'guide', '2ch総合案内'), ...,
('ニュース', 'mamono.2ch.net', 'newsplus', 'ニュース速報+'), ...,
('PC等', 'pc11.2ch.net', 'unix', 'UNIX'), ...
('PC等', 'pc11.2ch.net', 'tech', 'プログラム技術'), ...]

board(name)
CGI2ch::Boardのインスタンスを生成



862 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:26:43 ]
クラス CGI2ch::Board
クラスメソッド
CGI2ch::Board.new(host, board)

インスタンスメソッド
subject()
スレ一覧を取得
戻値 (key, title, res) のリスト(スレッドキー, タイトル, レス数)
例:
[(1223709050, 'Rubyについて Part 33', 624),
(1233033091, '愛国Ruby', 14), ...]

thread(key)
CGI2ch::Threadのインスタンスを生成



863 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:27:07 ]
クラス CGI2ch::Thread
クラスメソッド
CGI2ch::Thread.new(key)

CGI2ch::Thread.create(name, email, body)
新スレを立ててインスタンスを生成

インスタンスメソッド
read(key)

write(name, email, body)



864 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:27:32 ]
>>856
こんな感じで計画中だけど
どう?



865 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:32:48 ]
クラスメソッド
CGI2ch::Thread.new(board, key)

CGI2ch::Thread.create(board, name, email, body)
新スレを立ててインスタンスを生成

boardが必要かな

866 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:42:18 ]
>[(1223709050, 'Rubyについて Part 33', 624),
> (1233033091, '愛国Ruby', 14), ...]

なにこれ

867 名前:710 mailto:sage [2009/01/27(火) 17:22:38 ]
>>711
Railsのスレあったんですね。
気づきませんでした。

>>715
コメントありがとう。
結局原因がわからなかったので、rjsの中でhtml(<option></option>)を組み立てて、selectボックスに
対してreplace_htmlしたら回避できました。



868 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 17:29:56 ]
>>864
計画倒れにならんようにがんがれ

869 名前:デフォルトの名無しさん [2009/01/27(火) 17:42:31 ]
2chの仕様なんて面倒だぞ。
専用ブラウザ開発者はマゾヒストとしか思えない。

870 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:00:13 ]
>>864
スレ違い
2ch専用ブラウザの作り方
ttp://pc11.2ch.net/test/read.cgi/tech/1180406037/

871 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:14:12 ]
>>862
愛国はかんべんw

872 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:17:05 ]
>>871
はいはい面白いね至高のギャグだね

873 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 19:18:57 ]
リファレンスマニュアルの使いにくさをどうにかしてください。
例えば、タイムアウトさせたい処理について調べたい場合、目次を見てもどこを見ていいのかさっぱりわかりません。

874 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 19:26:10 ]
あ、オフィシャルサイトは検索休止中なんだっけ
timeoutで全文検索すると出てくるぞ



875 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 19:35:31 ]
「Ruby マニュアル」でぐぐると「ruby マニュアル 検索」が関連で出てくる現状はどうにかしたほうがよい
ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=Ruby+%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB&num=10

876 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 21:08:35 ]
ttp://doc.loveruby.net/refm/api/view/search?q=timeout

るりまはいつになったら公式化するのだろうか

877 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 21:22:00 ]
>>876
MLいわく、静的HTMLを吐くツールが整備されてから

878 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:59:46 ]
>>864
期待してます

879 名前:デフォルトの名無しさん [2009/01/28(水) 00:01:28 ]
>>864
そんなことしてる暇あるんなら
Rubyのリファレンスマニュアルを検索出来るようにしてくれさい

880 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 03:16:09 ]
つ refe2

881 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 04:26:03 ]
Rubyラブじゃ☆

882 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 05:49:46 ]
>>879
さっさとchm版を使ってください

883 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 11:53:50 ]
require "active_support" すると、
あらゆるオブジェクトに daemonize というメソッドが付いてくるんですが、
これって ActiveSupport が意図してやってるんでしょうかね?
こうするメリットが良くわからないんですけれども。

884 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 12:03:24 ]
Kernel や Object クラスのようなものに外部モジュールがメソッドを追加するというのは議論を呼ぶ設計なのは確か
ActiveSupport::Daemon.daemonize(obj) みたいなのでいいじゃんというのも指摘としては真っ当
そこで笑ってこっち見てる YAML 君もこっち来なさい



885 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:25:11 ]
require "active_support"を使わなければ問題ない

886 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:45:39 ]
String#each_line(sep) って、中で事前に巨大な配列作ってますか?
「ちょっとずつ」改行まで読み込んで返している動作ですか?

887 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:47:17 ]
フラッグ型に保ち合ってきた。どっちかにブレイクするかもな。

888 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:50:12 ]
誤爆・・・

889 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:55:36 ]
>>886
String#each_lineだから「読み込んで」は不適当な気がするが、
改行を探しては1行作ってyieldし、という挙動ではある。

890 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:59:42 ]
str.split(/sep/).each do |line|

str.scan(/\G#{sep}/){|line|
なら、String#each_line は後者のイメージに近いと思われ
「str が 大きかったら each_line 1回のためだけにでっかい配列ができて胃が痛い」とか考える必要はないかと

891 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 14:06:07 ]
やっぱ str.to_a.each_with_index do …はあんまりよくないのか
each_line_with_index って each がえにゅめらぼーウンタラの関連でどっかのバージョンで登場してたりする?

892 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 14:19:37 ]
>>891
行番号が知りたいんだろうけど、each_lineは行ごとにループ呼ばれるから
自分でカウントアップすればいいんじゃない?

893 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:05:28 ]
str.each_with_indexじゃダメなん?

894 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:21:04 ]
String から呼ぶ Enumerable のメソッドって String をどう扱うかイマイチわからん



895 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:29:55 ]
>>892
> 自分でカウントアップすればいいんじゃない?
なにそのwith_indexの存在意義自体を土足で踏みにじる暴言

896 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:36:40 ]
>>893,895
1.9のStringってeachがなくなってEnumerable非対応に
なるんじゃなかったっけ?

>>894
Enumerableのメソッドは全てeachに依存してるから、eachに準ずる。
直観的じゃないという話なら同意。


897 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:37:02 ]
Rubyには放っておいても増える隠し定数のループカウンタとかないの

898 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:43:37 ]
>放っておいても増える

そんなもんあったら問題だw

899 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 16:59:30 ]
1.8.7以降限定ならstr.each_line.with_indexでいいんじゃないの。
それより前だったらstr.each_with_indexでいいし。

900 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:02:23 ]
each_with_index自体あんまり使わないから正直どうでも良い

901 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:06:36 ]
行志向のファイルを処理するスクリプトを書かない人には無用の長物だな

902 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:15:11 ]
全機能使って書いてるのはRubyを作ってるモルモンくらいでしょ

903 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:20:55 ]
昔どのメソッドが何するもんかは覚えても実際使わないと忘れて逝くのが人類です

904 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:55:08 ]
>>894
1.9でString#eachがなくなって Enumerableじゃなくなったのはそれが理由だよね
バイト単位なのか、文字単位なのか、行単位なのか一般的には決まらないので
自分で明示して each_byte か each_char か each_line を使えと

でも自分スクリプトで
Stringが行単位のEnumerableなのを利用して
いきなり文字列の sort とかuniqとかしてたんだよね

で、1.8.6以前と1.9以降の両方で動くようにスクリプトの頭で
unless String.method_defined?(:each)
class String
alias each each_line
include Enumerable
end
end




905 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 18:31:47 ]
>897-898
$.

906 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 23:19:41 ]
よいまとめがあったんでシェア

Ruby1.9をこれから使う人のためのM17Nまとめ - 福島でRailsを使って仕事を頑張る計画
d.hatena.ne.jp/xibbar/20090126/1232946944

>>887
市況2?w

907 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 03:47:31 ]
>>864
wktk

908 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 04:19:58 ]
1.9なら
str.each_line.with_index {|line, idx| ... }
でFA。でかい配列を作ったりもしない。

909 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 10:32:14 ]
1.9知りたきゃ、これ見ろってことっすかね?

日本Rubyの会 公式Wiki - 1.9 Links
jp.rubyist.net/?1.9+Links

910 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 11:02:09 ]
>>909
リファレンスマニュアル見ろよ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<246KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef