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


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

Ruby 初心者スレッド Part 33



1 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 14:21:25 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
   (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に完全対応していないためです。)
 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の 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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

508 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 17:12:48 ]
syntax error, unexpected ',', expecting ')'
bar.foo=(1, 2, 3)

末尾= の場合は引数1つに限定かしらね?

bar.foo=[1, 2, 3]は
wrong number of arguments (1 for 3) (ArgumentError)


509 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 17:49:08 ]
>507 それウソ

たぶん>>508が言うように末尾=の場合は引数1個限定だと思う
けど自信ない

510 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 21:46:36 ]
puts RUBY_DESCRIPTION #=> ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-mingw32]
plus = "a".method(:+) #=> #<Method: String#+>
p plus.("b") #=> "ab"

この3行目のシンタックスについてparse.y以外でどこかにドキュメントありませんか?
Method.instance_methodsにそれらしきメソッドが見当たらないのですが,Methodオブジェクトに特有なものなのでしょうか?

511 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 22:47:00 ]
foo.(arg) とすると foo.call(arg) の意味ということになった。

ttp://jp.rubyist.net/?NEWS-1.9.1.ja の「言語の中核部分」→「新しい文法と意味論」
「.()で#callや#[]を使わずにProcなどを呼べる」

512 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 22:47:50 ]
メソッドじゃなく、文法(構文)の範囲だから instance_methods では出てこないよ。
Procでも使える。


513 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 01:32:23 ]
>>509
やはり、呼び出すときには引数が一つしか取れないのだろうか?
でも、定義では3つの引数が必要なので、引数の数が合わないと怒られる

bar.send( :foo=, 1,2,3 )
で、引数三つ与えて呼び出せないこともないけど
なんだか、無意味な感じ


514 名前:デフォルトの名無しさん [2009/12/31(木) 06:56:22 ]
dhh

@37signals is already running a few minor apps on Rails 3. We've just started playing w/ porting Basecamp. Exciting times!
twitter.com/dhh/status/7208264678

Very tentative target date for Rails 3 beta is end of January. But core is staffed with volunteers, so very much subject to change.
twitter.com/dhh/status/7107817801

515 名前:デフォルトの名無しさん [2009/12/31(木) 08:32:35 ]
Very tentative target date for Rails 3 beta is end of January. But core is staffed with volunteers, so very much subject to change.
twitter.com/dhh/status/7208225785
dhh

516 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 09:12:32 ]
>>511 >>512
なるほど。
指摘していただいたドキュメントも拝見いたしました。
#callをできるだけ通常のメソッド呼び出しの記法に近づけるため
#[]をオーバーライドするといった努力をしているというのは
耳にしたことがあったのですが,.()もその一環のようですね。

ありがとうございました。



517 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 22:42:29 ]
Ruby1.9で正規表現のエンコーディングにShift_jisを指定するには
どうすればいいんでしたっけ?

オプションでsを指定すればよかったような気がしたのですが、
p /hogehoge/s.encoding
で#<Encoding:Windows-31J>が帰ってきます。

WindowsXPで
ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-mswin32]
です。
よろしくお願いします。

518 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 23:39:43 ]
Regexp.new('あ.い.う.え.お’.encode('Shift_JIS')) かなあ。


519 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 07:30:44 ]
明けましておめでとうございます。

>>518
/\p{ASCII}/ という表現を使いたいのでその手法は難しいんです。
今回は関係ありませんが/\x82\xA0/
という表現もその手法だと難しいですね。

マジコメでソースエンコーディングをsjisに指定するって手もあるのですが、
大人の事情でこの手法も避けたいのです。

ハチドリ本を読み返したのですが、p.335には"SJISは、s"って書いてありますね。
なんだかなぁ。

引き続きよろしくお願いします。

520 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 08:14:35 ]
失礼しました、>>518さんの方法でできますね。
もっとスマートな方法があればいいと思うのですが、とりあえず解決です。

お騒がせしました。

521 名前:デフォルトの名無しさん [2010/01/01(金) 14:23:19 ]
SJISのデータを一度読み込んでUTF-8に変換してごにょごにょ
が一番綺麗だと思う。
SJISでしないといけない理由は実はなかったりしないかい?

522 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 21:58:59 ]
rubyのアンインストール方法ってどうするんでしょうか。
./configure --prefix=/usr/local
make
sudo make install
でインストールしたのを、事情によりきれいさっぱり削除したいです。


523 名前:デフォルトの名無しさん mailto:sage [2010/01/01(金) 22:45:28 ]
>>522
特に手段は用意されてない
make -n installでファイルリストを作ってぶん回すぐらいしか思いつかないな

524 名前:デフォルトの名無しさん [2010/01/02(土) 02:18:44 ]
標準ストリームに対する文字コードについて教えて下さい。
まだRubyの問題なのか、OSの問題なのかも上手く切り分け出来ていません。 m(__)m

TCPでクライアントと通信するプログラムを作っています。
環境はサーバー側(作っている側)がDebian Lenny(5.03)で、文字コードはUTF-8です。
クライアントはWindows2000のマシンで、文字コードはShift JISです。

コードは次のような感じです。
他にも色々な処理が入っていますが、話を簡単にするため、コードを思いっきり削っています。

> hoge.rb

#! /usr/bin/ruby -Ku

while receive = STDIN.gets

# コマンドを受信した

msg = "受信しました" # UTF-8

# 送信処理
# STDOUT.puts( NKF.nkf('-Ws', msg)) # これだとWindows側にパケットが全く返らない
STDOUT.puts( msg) # これだとWindows側で漢字は化けるけどパケットは返る
end

というような感じです。
何かパケットが来たら、メッセージを返すものです。
(実際にはPostgreSQLを呼び出し、コマンドの結果を得て返しています。)

525 名前:524 [2010/01/02(土) 02:19:24 ]
このコードはinetdから起動されます。

inetd.confはこんな感じ。

4142 stream tcp nowait root /usr/sbin/tcpd /usr/local/bin/hoge.rb

Rubyで扱っているUTF-8の日本語文字列を、標準ストリームにShift JISで流したいだけなのですが、上手くいきません。
Shift JISで出力しようとすると、STDOUTするところで、何事も無かったかのようにパケットが送信されません。
Rubyはエラーにもならず、その行を飛ばしたかのような挙動になります。

UTF-8のままでSTDOUTへ出力すると、Windows側で文字化けしますが、パケットは返ります。

事情により、Windows側のプログラムには手を入れられません。
どこらあたりから、見直していけば良いでしょうか?

この件の調査修正で、お正月休みも返上です。(TT)
よろしくお願いします。

526 名前:524 [2010/01/02(土) 02:48:40 ]
あ、ごめんなさい、すっかり書き忘れていました。
Rubyのバージョンは1.8.7です。
よろしくお願いします。



527 名前:デフォルトの名無しさん [2010/01/02(土) 04:37:19 ]
require 'kconv'

STDOUT.puts(msg.tosjis)

528 名前:524 [2010/01/02(土) 12:29:54 ]
>>527
ありがとうございます、しかし状況変わらずです。
NKFとkconvは、挙動が違うのでしょうか??

529 名前:524 [2010/01/02(土) 12:53:11 ]
>>527
再び524です。

申し訳ありません、確認が足りませんでした。

このmsgには”人の名 ”(漢字3文字+空白14)というように、
ASCIIで20Byte毎に区切って送るという仕様です。
ですが、Windows側には”人の名 ”(漢字3文字+空白11文字)として
届いていて構文チェックで跳ねられていました。

ちょうど空白が漢字の文字数分足りません。

UTF-8からShift JISに変換する時に、漢字とスペースの扱いはどうなるのでしょうか?
何か、特別な処理が必要でしょうか?
以前、EUC-JPとShiftJISでやったときは、問題無かったのですが。

なんとなく光が見えてきました、引き続きよろしくお願いします。

530 名前:デフォルトの名無しさん mailto:sage [2010/01/02(土) 13:25:36 ]
どっかに全部コード貼ってから来なさい

531 名前:デフォルトの名無しさん [2010/01/02(土) 15:32:50 ]
>>529
utf8では漢字は2バイトではなく3バイト。
ja.wikipedia.org/wiki/UTF-8

532 名前:524 mailto:sage [2010/01/02(土) 17:35:34 ]
>>531
ありがとうございます、解決しました。
結局、SJISに変換してから加工するようにコードを変えました。
UTF-8では、漢字は3バイトなんですね。
勉強になりました。

お騒がせしました。

533 名前:524 mailto:sage [2010/01/02(土) 22:50:27 ]
>>530
524です、今、デバッグを終えて、正常動作を確認しました。
決め手は>>532さんの「漢字は3バイト」でしたが、結構ポカミスもしてまして、今まで掛かりました。

ごめんね、プロジェクトの規模が大きすぎて、コードは晒せないの…
某自動車会社で、国土交通省に提出する書類を作成するためのシステムです。
Rubyの案件としては、中くらいの規模なんじゃないかな。
わりと重要なシステムで、止まると車が作れません。
Rubyはミッションクリティカルでも大丈夫、信頼が置けます。

pgsqlだったかな、DBIになる前の古いやつ。
それからDBIへの移植だったのですが、なかなか…
pgsqlでEUC-JPだから動いてたっていうコードが結構あって、
思っていたより全然はまりました。

何処へ質問を投げようかと思案したのですが、おまいらに聞くのが一番良い気がして
ここに書かせて貰いました。

あとは1月4日の総合テストを待つのみです。
実際に車を測定する設備が無いので、うちの社内では完全なテストは出来ないんですよ。

何はともあれ、おまいらのお陰で解決しました。
本当にありがとう。

それでは、名無しに戻ります。 m(__)m

534 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 00:12:17 ]
>>533
身元と案件を特定出来る情報を2chに書くなよ・・・

535 名前:531 mailto:sage [2010/01/03(日) 00:20:53 ]
>>533
いまのご時勢でRuby/DBIを選択しちゃうセンスは大いに疑問だが、問題が解決してよかったね。

536 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 00:25:56 ]
> いまのご時勢でRuby/DBIを選択しちゃうセンスは大いに疑問だが

kwsk



537 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 02:32:44 ]
通報。

538 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 04:20:45 ]
HTTPProxyを作りたいので
WEBrickでプロキシサーバを作って遊ぶ
ttp://jp.rubyist.net/magazine/?0002-WEBrickProxy
を参考に

require 'webrick'
require 'webrick/httpproxy'

s = WEBrick::HTTPProxyServer.new(
:BindAddress => '127.0.0.1',
:Port => 8080,
:Logger => WEBrick::Log::new(nil, WEBrick::Log::DEBUG),
:ProxyVia => false
)

Signal.trap('INT') do
s.shutdown
end

s.start

と書いて実験してみたところ
リモートからのデータをいったんメモリに貯めてからクライアントへ渡す動作をするようです
この場合巨大なファイル(結構大きいファイルを扱うProxyを作る予定です)を通したときにメモリ消費が
洒落にならないので、読み込んだデータから逐次クライアントへ渡すような動作にしたいのですが
そのような設定は可能ですか?可能であればその方法を教えてください。よろしくお願いします

539 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 04:50:47 ]
以前、どこかのスレで
python -i
と同じことをする方法を見たのですが、どうやるんでしたっけ?

540 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 04:57:19 ]
$ irb

541 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 05:17:07 ]
>>540
違う。

542 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 09:50:24 ]
ver #=> Microsoft Windows XP [Version 5.1.2600]
ruby -v #=> ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-mingw32]

以下の簡易wget風ワンライナをより短くできませんか?

ruby -ropen-uri -e"$><<URI(*$*).read" www.example.com/>output
ruby -ropen-uri -e"$>.binmode<<URI(*$*).read" www.example.com/hoge.zip>output

短くならなければ「短くならないよ」というご意見や
よりスマートな代替案もいただけたら幸いです。

543 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 10:07:26 ]
>>542
代替案ということはワンライナにこだわらなくていいんだよね?
若干強引だけどlib/site_rubyにwget.rbライブラリを作ってそのなかに処理書いちゃうとか
ruby -rwget www.example.com/ > output
irb.batのようにbinにbat置いてスクリプト実行するとか
rwget www.example.com/ > output

544 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 10:20:40 ]
>>543
早速のレスありがとうございます。
ライブラリ案・バッチ案は個人で使う分にはアリですね。
コマンドもすっきりしますし。

個人的には何もライブラリやファイルをインストール(作成)せずに
Ruby単体で簡易wgetを実現できればいいなと思っています。
あまり実用的な場面はありませんが ^^;

545 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 10:44:08 ]
>>538
データをストリーミング中継したいということでしょうか?

私はネットワークプログラミングに詳しいわけではないのでアドバイスはできませんが,
googleで "webrick ストリーミング" で検索してみてください。
1件目のブログが参考になるかもしれません。

546 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 12:22:32 ]
>>539
対話型debugが目的なら -rdebug

対話型インターフェイスが目的なら
while true
print ">"
input = $stdin.gets.rstrip
break if input == "\x04" # ^D
puts input
end

もしくは(GNU Readlineが必要)
require "readline"
while input = Readline.readline(">")
puts input
end

pythonなんて知らんよ



547 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 13:21:29 ]
OpenGLってDirectXに比べるとプリミティブすぎるというか機能足り無くない?
標準のシーングラフとかあっても良いと思うのだが……
何か無いですか?

548 名前:538 mailto:sage [2010/01/03(日) 13:46:23 ]
>>545
レスありがとうございます
探していた情報はまさにそれです、ストリーミングも含めて考えていました
逐次転送するような動作は不可ですか・・・(´・ω・`)

以前にsocketで似たような物を実装しようとしたことがあったけどリクエスト/レスポンスの
終了を検出する方法が判らなくて断念・・・il||li ○| ̄|_

549 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 15:32:50 ]
>>548
webrickを改造する場合にはリファレンスの以下の項が参考になるかもしれません。
Net::HTTPResponse#read_body {|str| .... }
「エンティティボディを少しづつ取得して順次ブロックに与えます。」

TCPSocketを使う場合でも
socket.gets until $_ == CRLF
でヘッダを切り離して
while data = socket.gets
...dataを料理...
end
ではダメですか?
Rubyで終端を気にする必要はなかったように思います。
他に思いつくにはヘッダのContent-Lengthを信用してそのバイト数だけ読み込むとか。
TCP/IPの規格に詳しくないので当てずっぽうですが。

550 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 01:49:17 ]
windows機でタイマーを実装しようとしてます。
マルチスケジューリングなキッチンタイマーのようなものです。

問題がありまして、
例えば60分後にアラームを鳴らせるというタイマーのプログラムを行ったときに
やっぱりその30分前にもう一個のプログラムを追加したいと思ってもそれを行うためには
常に入力待ち状態である必要があります。
その一方で常に出力待ち状態でないと指定時刻にタイマーを実行することができません。

今は
タイマー入力(空入力も化)待機モード→
1分間のタイマー実行待機モード→
その1分の間に起こるべきイベントがあれば指定時刻にイベントを起こす→
またタイマー入力待機モードに戻る→
以下ループ

というようにユーザに入力によって待機モードを切り替えることでそれらしい動作をさせています。
どのようにすればもっとスマートにこのタイマーを実装できるでしょうか?

一つのスマートじゃない方法はテキストエディタと外部ファイルを使ってこのタイマー入力を行うことかなと思うんですが。(非排他モードでファイルの書き込み読み取りする)
forkがwindows rubyでは使えなくて、そもそも子プロセスを使ったことがないので悩んでいます。

551 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 01:57:34 ]
www1.axfc.net/uploader/Sc/so/70232.txt

しょーもないソースコードですが、文章で書くより伝わりやすいと思うので
よろしくお願いします。

552 名前:538 mailto:sage [2010/01/04(月) 03:29:30 ]
>>549
レスありがとうございます
WEBrickはソースコードを理解するだけで時間が相当かかりそうな感じなので
改造はあきらめます・・・

バイナリデータをgetsで読み出そうとすると最悪の場合、最後まで読み込んで
しまうように思いますが・・・
Socketの終了が判らない件ですがノンブロックモードで読み出す方法
(sysreadを使う。getsが使えなくなるけど・・・)が判ったのでひとまず解消しました
普通にreadを使うとブロックモードなんで帰ってこない・・・(TT

しかし1セッションに複数のホストへのリクエストとかマンドクセ(´・ω・`)

553 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 05:32:35 ]
>552
getsはバイト列に$/(普通は0x0A)がでてこなければ
最後まで読み込んでしまうけれど、その確率は気にするほどのものかな
ミッションクリティカルなアプリケーションならしかたないとは思うけど

554 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 06:17:44 ]
>>550
つ Thread & ConditionVariable

555 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 12:40:48 ]
あるURLから特定のURLのみを抽出するにはどうしたらいいでしょうか?
例えばmenu.2ch.net/bbsmenu.htmlから"pc11"が含まれるURLを抽出したいです。

require "open-uri"
url = ARGV[0] || "menu.2ch.net/bbsmenu.html"
uri = open(url).read
URI.extract(uri, ['http']){
|uri|
puts uri
}

URL自体を抜き出すのは比較的簡単に出来たのですが、特定のURLを抜き出すのってこの状態からどうしたらいいでしょうか?
宜しくお願いします。

556 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 13:03:47 ]
puts uri if /pc11/ =~ uri.to_s



557 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 13:05:12 ]
>>555
URI.extract の返値(URI の配列)に対し find_all でいいんじゃない?

str = open(url).read
URI.extract(str, ['http']).find_all {|uri| uri =~ /pc11/ }

正規表現マッチの部分はもう少し厳密にした方がいいと思うので適当に

558 名前:557 mailto:sage [2010/01/04(月) 13:13:58 ]
返値を変数に格納するの忘れてたw

559 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 13:20:49 ]
str = open(url).read
URI.extract(str, ['http']).grep(/pc11/)

560 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 20:31:50 ]
「特定のURLを抜き出す機能」と考えるからわからなくなるんだと思う

配列から特定の条件を満たす要素を抜き出す方法とか
URIオブジェクトのURI構成要素を返すメソッドは何かとか
そういうの調べていったほうがたぶん早い

561 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 20:41:17 ]
御託はいいから妥当解とっとと出せカス

562 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 20:43:13 ]
「手抜き」じゃね?
いつ動かなくなるのか不安だ。。

563 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 20:51:14 ]
どうでもいいけど、
普通はstr = open(url).{|io|io.read}じゃね?
それかstr = URI(uri).readか。

564 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 20:54:18 ]
>>561
require 'open-uri'
url = "menu.2ch.net/bbsmenu.html"
purls = URI.extract(open(url).read, ['http'])
uris = purls.map{|url| URI.parse(url)}.find_all{|uri| /\Apc11\.2ch\.net\Z/ =~ uri.host}

ただ、
 「URLを抽出したあとそれに対して何をしたいのか」
 「本当に抽出したいのは本文のURLではなくて<a href>のリンクなのではないか」
 「貴様は次のレスで「あっあとttp://も抽出したいです」と言うッ!」
とかいうような危惧がないわけでもない

普通にHTMLパーサ通したほうが近道だったり
一般的な適当範囲の正規表現を通したほうがマシな処理だったりしなくもなくもないかも

565 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 20:56:56 ]
関係ないけど、2chのAPIは糞。

566 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 21:00:02 ]
そりゃ急いで突貫工事したものをずっと継ぎ接ぎで使ってるからな

これがめちゃくちゃ洗練されて、2chアクセス者全員にdat直読みだけをされるようになっても
本当は運営的にはちょっと困るのよ



567 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 21:03:29 ]
datはまぁ良いとして、bbsmenu.htmlだけはどうにかして欲しいな。

568 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 21:03:47 ]
>>566
APIが洗練されたとしても利用者全員がdat読みすることなんてありえんから
後半は全然関係ないだろw

569 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 21:10:00 ]
>>568
本当に洗練されたWeb経由APIはJavaScriptのみでの実装を許す
API経由で広告を見せて有効に動作させるロジックはまだ発明されていない
今の2chから広告収入外されたら傾くぞ

なんかこう物理的にナナメに傾くだけで済む気もするのがなんか謎な収益だが

570 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 21:29:00 ]
>>563
まあなんか非常にめんどくさいのだけど

open(path).read は close 忘れが多いので推奨されない書き方
(open(path){|f| f.read} を強く推奨、File.read(path) は Windows のバイナリスイッチが入らなので非推奨)
ただ、open-uri を読み込んだ URL や URI に限っては、
open(uri).read は IO#close 相当を必要としないので妥当安全にたまたま動作する

いや、ブロックつきで書いてもいいけど
っていうかレスしてて気づいたけど本当にたまたま動くんだなこれ

ローカルのファイルを読むことがなくて、簡便な HTTP アクセサとしてしか使用しないのなら
あなたの言うように URI.parse(url).read するのがいちばんではあるっていうかお前ら初心者スレで手を抜くな

571 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 22:11:39 ]
>>570
手を抜くな、と言われましても、2chの手抜きAPIに対して
真面目にプログラミングする気がしませんん。

572 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 22:16:54 ]
手抜きAPIを調教して俺色に染めてやんよ

573 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 22:19:33 ]
そもそも2ちゃんのそれはAPIなんかじゃない無いだろw
一時期XML吐こうぜみたいな動きがあったみたいだけど、
「やっぱだりぃわ」で自然消滅した?w

574 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 22:23:55 ]
>>571
URLにアクセスしてHTMLを取得するという根幹部分すらまともに書けませんと素直に言ったら

575 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 22:30:23 ]
>>574
は?HTTPのライブラリぐらい作ったことあるから w

576 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 22:40:14 ]
しっかし、open-uriって、
open(path)ってしただけでゴリゴリとTempfileをディスクに書いちゃうのね。
大量のURIを扱うならopenは使うべきじゃないな。



577 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 04:26:10 ]
>>571のような open(file).read と open(file){|f| f.read} の違いがわからないような人間にはなりたくないと思う

578 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 05:17:44 ]
>>576
f = open(uri) が open として何を返すべきかを考えたら、
StringIO が返ってくる低サイズ帯のほうがむしろ特殊というか変

579 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 15:25:56 ]
無圧縮のzipを作成したいのですが
ziprubyもrubyzipも無圧縮オプションが見当たりません
この2つは無圧縮zipの作成をサポートしていないのでしょうか?
あるいはlibtarで作成すれば無圧縮zipと同じものが出来ますか?


580 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 19:57:04 ]
open-uriだけでよくここまで話せるな

581 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 22:54:32 ]
>>579
ヒント
Zlib::NO_COMPRESSION

582 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 05:24:47 ]
>>579
オレも気になったので調べてみたけど見当たらないね、実装されてないのかな?
おそらくPKZIP形式を求めていると思ったので
偽Zip32J.DLLてのを使ってやってみた

require 'dl/win32'
zip = Win32API.new("Zip32J.DLL","Zip","lppl","l")
p zip.call(0,"-q -0 out.zip 1.txt 2.txt", "" , 0)

拘り無いならtarでいいと思う

583 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 07:15:17 ]
rubyzipのZip::ZipOutputStream#put_next_entry見ろよ。
どこ見てんのよ。

584 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 12:31:59 ]
a='/'
a.sub!(/\//, "\\")
p a

これで出力は \ 1個を期待したのだけど
\\ 2個になってしまう

a.sub!(/\//, "\")
こうすると怒られるし
どうしたらいい?



585 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 12:36:25 ]
>>584
irbでinspectの結果を見てないか?


586 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 12:37:22 ]
ごめん、pか。
pはinspectの結果を出すので、そうなって当然。
putsせよ。




587 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 12:40:36 ]
ttp://doc.okkez.net/187/view/method/Kernel/m/p
ttp://doc.okkez.net/187/view/method/String/i/inspect

588 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 14:25:27 ]
subとgsubはブロックを使えと先生から習わなかったか

589 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 14:38:24 ]
しかしそれ以前の問題だからのう。

どうでもいいけど、個人的には正規表現に / が入るときは %r が見やすい

590 名前:584 mailto:sage [2010/01/06(水) 14:48:46 ]
>>585-589
あざーした!
pの方が短くてうちやすいので
ついputs代わりに使ってました
今度から気をつけます!


591 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 15:03:29 ]
exerb 使う時って open-uri 使っちゃいけないの?

592 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 20:42:04 ]
こんなのあったのね。テンプレに入れとけばどうか。まーActiveScriptRubyでもいいけどw

窓の杜 - 【REVIEW】Windowsでスクリプト言語“Ruby”を導入するための和製インストーラー「Rumix」
www.forest.impress.co.jp/docs/review/20100106_340742.html

593 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 23:46:16 ]
WindowsでRubyを使うこと自体が既に初心者レベルを超えてる

594 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 23:52:33 ]
いや、逆じゃないのか。。

595 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 08:02:18 ]
RumixってOne-Click Installerとなにがちゃうんや!

596 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 08:37:14 ]
One-Click Installer 海外版Windows向けRubyパッケージ(ただしRuby古い)
Rumix 日本語版Windows向けRubyパッケージ



597 名前:デフォルトの名無しさん [2010/01/09(土) 19:02:01 ]
rubyはメモリをたくさん食うと聞いたことがあるのですが解決方法などはありますでしょうか?

598 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 19:04:58 ]
>>597
Rubyを使わない

Rubyはメモリを多めに使うことで、Rubyであるということの意味を保っている
(そもそも言語レベルでそのように作られている)
メモリを大量に消費するということがネックなのなら、その用途にRubyを選ぶべきではない

599 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 19:20:43 ]
ほんとカス言語だな

600 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 19:33:36 ]
>599 suck but ruby just sucks less.

601 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 19:35:17 ]
sorry!! this site is japanese only!!

602 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 19:44:52 ]
rubygemsの開始読み込みのへちょい構造はどうにかして欲しいと思うことがある
あれはRubyらしさとかそういうの抜きで単にミスだろう

603 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 19:52:10 ]
メモリを大量に食うこと自体が設計ミス

604 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 19:54:55 ]
>>603
お前気楽な人生送ってるな
反対のことだけ書いてりゃ爽快なんだもんな

605 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 20:09:47 ]
CPU時間でQuotaや課金があるようなサービスがもうちょっと一般的になると
Rubyは再度日陰になるのかね
どっちにしても初心者スレの話題じゃねーな

606 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 20:22:09 ]
Ruby1.8 for WinでインタプリタがCUIかGUIかを簡単に判別する方法ってありますか?
exerbでexeファイル化する予定なので出来れば自動で判別したいです



607 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 20:26:19 ]
よくわからんがこのへんではだめなのか
ttp://exerb.sourceforge.jp/man/doc/core.ja.html

608 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 21:14:09 ]
空間計算量と時間計算量を犠牲にしてMatz好みのOOとプログラマの幸せを手に入れたいらしい

609 名前:デフォルトの名無しさん [2010/01/10(日) 18:15:55 ]
rubyかpythonどちらを初めに勉強しようか悩んでます
どなたかアドバイスお願いします

610 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:28:22 ]
はいはいpython、python
いいからさっさと消えてくれ。目障りだ

611 名前:sage [2010/01/10(日) 18:40:42 ]
rubython

612 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:46:03 ]
Rubyを256倍使うための本ってどうですか?
オクにいくつかでてるんで、買おうか迷ってるので教えてください。


613 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:50:05 ]
>>612
古書
Rubyの過去を知るために有意義

614 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 21:30:35 ]
質問です。
hamlで以下のような定義のときに、ruby本体でどのようにしたらいいのか教えてください。

%table
!= header = capture_haml do
%tr
%th Name
%th TimelogUrl
%th Status
- @users.each do |u|
%tr
%td u.name
%td u.link
!= header
この中で、@usersをどのように定義したらいいのかが分かりません。

バージョンは以下のものを使っています。
ruby 1.9.1
haml 2.2.16

615 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:05:34 ]
>>614
そのときのコンテキストにおける self に対して。
たとえば instance_eval { @users = ... }


616 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:34:52 ]
>>615
レスありがとうございます。

すいません、もう少し詳しく教えてもらえると嬉しいです。
@users = [
[
name => "aaaa",
link => "link1"
],
[
name => "bbbb",
link => "link2"
]
]
こんな感じのを想定しているんですが、全く違うようなそうでないような・・・
そんなレベルです。すいませんorz




617 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:43:00 ]
もしかしてRailsのビューにhamlを使ってみようとかそういう話?


618 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:03:44 ]
あの〜、Rubyってブラウザ上で動くアプリは作れないのですか?

619 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:16:32 ]
ブラウザ上で動くアプリってたとえばどんなんだ

HTMLと画像とJavaScriptで構成されているWebアプリケーションなら
サーバを用意してサーバ上でRubyを頑張って動かせば作れないわけでもない

Flashなどを利用するタイプのは、そりゃバックグラウンドサーバでRuby動かすことはできるけど
それより先にFlashで普通に作らないといけないぞ

何の話をしてるかわからないのなら、Webアプリケーションについての概略知識が足りない

620 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:21:59 ]
>>617
先に書くべきだったでしょうか?

Sinatraを使ってPassenger経由で表示させようとしています。
index.hamlという名前でhamlを使って別ファイルに保存していて、それをstart.rbから読み込んで表示させようとしています。


621 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 01:29:35 ]
>>620
このページは参考になるかな(2ページ目の@comment変数)
ttp://gihyo.jp/dev/serial/01/ruby/0009

622 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 03:13:44 ]
>>621
はい。そのページは知ってるのですが、実際に定義する場合にどのようにしたらいいのか?
というところで悩んでます。
テストデータを仮に組もうとして、どう「書いたら」良いのか分からないという orz

623 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 04:12:59 ]
>>622
こんな感じか
TestData = Struct.new(:name,:link)
@users = [ TestData['aaaaa','link1'], TestData['bbbbb','link2'] ]

624 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 04:33:52 ]
>>623
ありがとうございます。
おかげさまで動きました。

ただ一つだけ修正が
>>614の所は
%td u.name
%td u.link

%td= u.name
%td= u.link
でしたorz

625 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 07:46:02 ]
【レス抽出】
対象スレ:Ruby 初心者スレッド Part 33
キーワード:orz

抽出レス数:7

626 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 10:39:52 ]
R Language
Ruby



627 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 12:17:24 ]
Pで始まってLで終わる言語っていう表現があったな。
文脈によって指すものは変わる。


628 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 17:22:46 ]
質問です
同じ名前のチェックボックスから複数の値をとりだすにはどうしたら
よいのでしょうか?
require "cgi"
cgi = CGI.new

check1 = cgi["check"][0]
とかで個別には取れますが、選択できる数が固定でない場合、
どのように書けばよいのでしょう?

配列の数さえわかればできるのですが
cgi["check"].lengthとかで配列の数がとれないようですし困っています。

629 名前:628 mailto:sage [2010/01/11(月) 17:58:49 ]
自己解決しました
くだらない質問してすみませんでした

630 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 04:22:00 ]
cgiは残念だがゴミ。

631 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:16:46 ]
zsh で rake を実行するときに、desc がある task だけしか、
task が補完されない。Rakefile 中の全 task を補完させたいのだけど、
どうしたらいい??

632 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:27:46 ]
rubyはjis規格で規定されていますか?

633 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:39:02 ]
>>631
zshの設定を変える
rake専用の補完関数を書けばいい
誰かが作ってるのではないかな

634 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:45:55 ]
>>632
今ドラフト。


635 名前:デフォルトの名無しさん [2010/01/12(火) 22:17:37 ]
Ruby と IPA はどのような関係があるのですか?

636 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:21:00 ]
>>635
マブダチ。



637 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:35:30 ]
>>634
まじ?

638 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:38:22 ]
情報処理技術者試験の午後問題になる日も近いな

639 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:59:56 ]
Ruby Draft Specification
ruby-std.netlab.jp/

640 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 00:11:14 ]
Ruby/GSL
rb-gsl.rubyforge.org/

のWindowsバイナリってないです?
gem install gslしようとしたら、native libraryでコンパイルしようと下ので、
VC++2008環境でやってみたんですが、エラー吐いてダメポです。
どなたかコンパイルしたバイナリか、コンパイルの仕方教えてください。
mingwとかでもコンパイルできますか?

C:\Program Files\Microsoft Visual Studio 9.0\VC>gem install gsl
Building native extensions. This could take a while...
ERROR: Error installing gsl:
ERROR: Failed to build gem native extension.

C:/ruby/bin/ruby.exe extconf.rb
checking for sys/types.h... yes
checking for u_int8_t... no
checking for int16_t... no
checking for int32_t... no
checking for u_int32_t... no
creating narray_config.h
creating Makefile

nmake

(つづく)

641 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 00:12:02 ]
(つづき)

Microsoft(R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.

cl -nologo -I. -I. -IC:/ruby/lib/ruby/1.8/i386-msw
in32 -I. -MD -Zi -O2b2xg- -G6 -DHAVE_SYS_TYPES_H -c -Tcnarray.c
cl : コマンド ライン warning D9035 : オプション 'Og-' の使用は現在推奨されていま
せん。今後のバージョンからは削除されます。
cl : コマンド ライン warning D9002 : 不明なオプション '-G6' を無視します
narray.c
c:\ruby\lib\ruby\1.8\i386-mswin32\config.h(2) : fatal erro
r C1189: #error : MSC version unmatch
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\cl.EXE"' : リターン コード '0x2'
Stop.

Gem files will remain installed in C:/ruby/lib/ruby/gems/1.8/gems/narray-0.5.9.7 for inspection.
Results logged to C:/ruby/lib/ruby/gems/1.8/gems/narray-0.5.9.7/src/gem_make.out

642 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 00:27:46 ]
>>630

cgi.rbがゴミなのでしょうか?

他に使いやすいCGIライブラリってありますか?


643 名前:640 mailto:sage [2010/01/13(水) 00:32:06 ]
こういったライブラリはmingw32でコンパイルできるものなのでしょうか?

644 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 00:49:49 ]
>>642
いまのところの本命はRackやRackに基づいたもの。


645 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 01:03:24 ]
..           (.
.            )
      ,―ヽ__(__、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    RubyはIPA Rubyになったピョん☆
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
      >   ヽ. ハ  |   ||

646 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 01:24:34 ]
初心者には Ruby 1.8.7 を強くお勧めします。とありますが、
公式から初心者のためのRubyインストールガイドに飛んで、
<URL:rubyforge.org/projects/rubyinstaller/>でダウンロードできます。
に行ったところ、1.8.6と1.9.1しか見当たりません
ど初心者なので安心な公式からのリンクのインストーラを使っておきたいところなんですが
興味を持っていざ足を踏み入れてみたものの、いきなり迷子になってます



647 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 01:29:31 ]
>>640
rubyをコンパイルしたのと違うバージョンのコンパイラを使うと
ランタイムライブラリが衝突する関係上、拡張ライブラリはコンパイルできない
ただしVC6とMinGWは同じランタイム使うのでそこの互換性はあり

つーことで、>>643はrubyがVC6かMinGWでコンパイルされている条件付でyes

648 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 01:33:27 ]
>>646
そういえばOne-Click Installerって1.8.6までだったね
groups.google.co.jp/group/comp.lang.ruby/browse_thread/thread/3212e4e1a32d8526

>>592にあるRumixってのを試してみては
不安なら他の人のレスを待って

649 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 01:43:57 ]
>>648
ありがとうございます
教えてもらったRumix - Ruby Starter Package with Installer
でインストールして初めてみたいと思います

650 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 01:46:22 ]
>>646
とりあえず始めるにはRubyGemsつきの以下の2つをオススメしたいな

ActiveScriptRuby(ただし、少し古いので外部公開とかは注意)
COM Meets Ruby
arton.hp.infoseek.co.jp/indexj.html


か、>>592のRumixをどうぞ

Rumix - Ruby Starter Package with Installer
ruby.morphball.net/rumix/


Rumixの方は試してないからわからんが、コッチの方がRuby1.8.7でも新しい。

651 名前:640 mailto:sage [2010/01/13(水) 01:48:30 ]
ありがとうございます。
RubyはVC6版(ActiveScriptRubyのだと思う)のはずなので、MinGWでコンパイル試してみます。

652 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 01:54:49 ]
>>650
わざわざありがとうございます
ActiveScriptRubyもチェックしてみたいと思います

653 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 06:54:52 ]
環境によってrubygemsがアホみたいに遅くなるのはどのWindows版だっけ

654 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 07:03:58 ]
>>653
mswin32が爆弾持ち

絶対にmingwもいれて比較すべき
遅く感じないならどっちでもいい
遅くない人もいるみたいだから

655 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 07:34:04 ]
1.8.7のインストーラ用意してないのは、単なる手抜き?
まあ教祖自身がウィンドウズ使ってないから放置なんだろうけど。

656 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 07:55:04 ]
マストでないので、やる人員が確保できなければ特段用意されない



657 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 08:15:41 ]
マイクロソフトあたりが環境用意してくれるのはきっと大歓迎。


658 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 09:20:36 ]
>>655自身が必要なら手を上げれば今なら英雄候補生

659 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 10:52:00 ]
arr.insert(0, obj) ってなんか意味あんのかね
arr.unshift(obj) と一緒だよね
ただのデータ配列なのでキュー関連の物言いを嫌ったのかね

660 名前:デフォルトの名無しさん [2010/01/13(水) 16:12:42 ]
floatの内部表現を表す4バイトを指す文字列(ポインター)が欲しいのですが、どうすればいいのでしょうか
C言語で書くとこうなります。

float f[] = {1,2,3,4,5,6};
unsigned char* p = (unsigned char*)f;

OpenGLを使っていて頂点データをGPUに送るのに配列の生データが欲しいのですが……

661 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 16:49:47 ]
>>660
pack調べろpack

662 名前:デフォルトの名無しさん [2010/01/13(水) 17:04:11 ]
>>661
.pack("f*")で出来た。まじサンクス。

@@vertices = [1,0,0, 0,1,0, -1,0,0].pack("f*")
@@indices = [0,1,2].pack("f*")


663 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 19:37:31 ]
>>659
すまん。レスの趣旨がつかめん。
挿入位置によってメソッド使い分ければいいじゃんてことが言いたい?

664 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 11:08:18 ]
スタックとみなしてる意図のメソッドと、キューとみなしてる意図のメソッドってあるよね

とかそんなことだと思う

665 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 17:43:13 ]
たまたま何処かでそういうコードを見かけて、unshiftで事足りるのに
わざわざinsert使っているのは何故なんだっていうところだろうね。

666 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 20:04:56 ]
バグを見つけたらどうしたらいいの?



667 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 20:16:27 ]
[BUG] と出て落ちたとか Segmentation Fault したとかならまず検索かな
たいていは既に報告してて対処待ち

Rubygems みたいな外部ライブラリのバグっぽい感じのものならやっぱ過去の報告とか調べて
それでもなさそうなら Rubyforge や GitHub のページのバグ報告あたりに出すといい

ただ、断言してもいいけど6割はただの勘違いで、残りのうち3割5部は既に報告済みだと思う
どこのどのへんが怪しい動作と思えるのかここで言ってみ
報告のためにはそれなりに体裁とか前提条件とか洗い出さないと対処してもらいにくいけど
ここで何か言えばそのためのヒントくらいは出るかもよ

668 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 20:20:12 ]
>>665
unshift と書いてあったら俺はキューのようなものだとみなす
キューでもないのに unshift と書いてあったらたぶんキレる
先頭に要素突っ込みたいなら insert 使え
最後に要素突っ込みたいなら << か push 使え

669 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 20:27:34 ]
沸点低いなー

まあ確かに順番必要ないのにArray使ってる例というのは結構あって

670 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 21:33:30 ]
バグの情報はどこにあるの?
Googleで4・50件ほど見たけど無かった。
win32でコマンドラインに特定の非ASCII文字を含むディレクトリ名を指定するとワイルドカードが展開されない

671 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 21:35:23 ]
bugはここ
redmine.ruby-lang.org/projects/ruby/issues?set_filter=1&tracker_id=1
サンプルコード見せて

672 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:16:49 ]
>>670
非ASCII文字の中に「表」とかの \ で終わる文字が入ってるんだろ

673 名前:デフォルトの名無しさん [2010/01/14(木) 23:06:29 ]
Do One Thing for Rails 3 on January 16th and 17th
railsbridge.org/news_items/10

674 名前:デフォルトの名無しさん [2010/01/14(木) 23:11:49 ]
Rubyでwebアプリ作るときはcgi使うのとERB使うのと
お作法的にはどっち?

675 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:13:46 ]
どっちもつかわねー、というのが答ではあるが
初心者のうちは全部使って長所短所欠点体に刻んどけという気はする
どうせ外に出したりしないだろ

676 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:15:09 ]
何使うの?



677 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:15:28 ]
>>670
その「特定の非ASCII文字」が何かによって答えは変わる。
シフトJISにない文字なんじゃないかと思うが如何?

678 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:13:11 ]
>>644
RackやRackに基づいたもので、普通のCGIは作れるのでしょうか?
調べてみても、mod_railsとかmongrelとかの環境を作らないと
動かせないように見えるのですが...

679 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:20:18 ]
>>678
できる
できるが、rack/cgi はリリースされても全く動かなかったことがある
(つまり誰も本気でテストしてなかった)というヤな過去があって

つまり誰もやってないんだよね
理屈上はできるし理屈上はRackでやるとキレイなんだけど、
CGI作るということ自体がもうあまり流行らないから

680 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:28:29 ]
>>671

D:\tmp\r>ruby -e "p ARGV" D:\tmp\r\本/*
["D:\\tmp\\r\\本/*"]

D:\tmp\r>ruby -e "p ARGV" D:\tmp\r\表/*
["D:\\tmp\\r\\表/*"]

D:\tmp\r>ruby -e "p ARGV" D:\tmp\r\漢/*
["D:/tmp/r/漢/新規テキスト ドキュメント.txt"]

漢字の2バイト目が\とか{とか

681 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 02:40:12 ]
とりあえずバージョンを書いて
1.8.7p160だと問題なかった

pの出力で日本語が出てることをみると1.9系だと思うが
1.9.1p243だと >>680 と同じ状態

Dir.glob に渡した時はちゃんと展開されるが
コマンドライン引数を展開する時はダメなんだね
UNIXだとコマンドライン引数のワイルドカードはシェルが展開するから、開発者には気付かれにくいのだろう

昔の1.8は Dir.glob自体がSJISに完全対応してなくて、コマンドライン引数にも同様の不具合があったけど
今回のはコマンドライン引数の時だけの不具合なのか


682 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 03:16:56 ]
def set_select_quests
for i in 0..9
quest_number = rand(10)
@select_quests |= quest_number.to_a if select_quests_flag(quest_number)
end
end

def select_quests_flag(index)
return false if @select_quests.include?(index) #・・・@
return true
end

@で@select_questsに同じ要素が入っている場合falseを返す様にしたいのですが
この場合include?(val)メソッドしかないですよね?
なんかうまく動かないんですがどこか間違ってますか?

683 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 03:29:47 ]
>>682
@select_quests << quest_number if select_quests_flag(quest_number)
かな

684 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 04:05:24 ]
>>654
え、うそ!!!1
RubyGemsが遅いのってmswin32版のせいなの???
くっそー今まで散々苦労してきたのにー
確かにcoLinuxとかだとめっちゃ早いと思ってたわ。
mingw版だと早い?、とか

685 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 06:38:43 ]
とりあえずgemはバージョンが古かったら
サーバ側でバージョンが古いと怒って欲しい

686 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 07:35:58 ]
>>685
おう、そういう機能入れたから、rubygem をアップデートしてくれ

というわけで鶏と卵だ



687 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 07:43:14 ]
>>682
def initialize
@select_quests = Array.new
...
end

def set_select_quests
(0..9).each.do |i|
quest_number = rand(10)
# @select_quests に quests_number が含まれてなかった場合追加する
@select_quests << quest_number if @select_quests.include?(quest_number)
end
end

688 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 08:06:58 ]
>>687のifはunlessの間違いだと思う冬の朝

689 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 20:25:24 ]
rubyはwindowsで動かすとどうして遅いの?
ずーと前からみたいだけど直すきないの?

690 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 20:28:45 ]
開発者がアウトオブ眼中だから

691 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 20:29:00 ]
>>689
なんでWindozeを使ってるの?
LinuxやBSDやSolaris使えばいいだけじゃないの?
文句言ってるだけで何も行動しようとしないのはなんでなの?

692 名前:682 mailto:sage [2010/01/15(金) 20:46:00 ]
ありがとうございました
うまくいきました

693 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 20:46:26 ]
>>689
めんどくさいから
いやマジで
誰にでも絶対に起こるなら直されると思うんだが実際はそうではない

694 名前:デフォルトの名無しさん [2010/01/15(金) 20:50:00 ]
>>689
>>691みたいな人ばっかりだから

695 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 20:55:02 ]
>>693
だよね
むしろ嫌がらせっぽい

696 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:26:17 ]
WindowsOSがやめられないので、ちょっとずつPythonに移行し始めたよ。
既存のクラスにメソッド追加したり、injectとかがちょっと使いづらい以外不満はない。



697 名前:sage [2010/01/15(金) 21:29:39 ]
Pythonたんは、純粋なオブジェクト指向じゃないよね。
len() とか気持ち悪い。

698 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:37:14 ]
>>697
最初はそう思ってたけど慣れればそんなもんかって思えるよ。
あとは、三項演算子やcase文がないのがちょっと残念くらいなもんか。

699 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:38:39 ]
>純粋なオブジェクト指向
Rubyも「+」とか「end」はオブジェクトじゃないよね

700 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:41:20 ]
>699
不完全性定理というのがあってだな

701 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 22:19:11 ]
文字列をn文字ずつ&1文字ずつに分割したいのですが
x = "ABCDEFGHIJKLMNOPQRSTUVWXY"
x = x.scan(/.{5}/)
x.collect!{|y|y.scan(/./)}
p x
=>[["A","B","C","D","E"],["F","G","H","I","J"],["K","L","M","N","O"],["P","Q","R","S","T"],["U","V","W","X","Y"]]
みたいに書くと都度、正規表現によるマッチが行われるので遅いです
もっと高速に実行する方法があったら教えてください。よろしくお願いします

702 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 22:20:42 ]
まあ俺は自分の仕事が片付けばいいだけだから
オブジェクト指向の純粋さなんてどうでもいいわ


703 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 22:31:44 ]
>>701
x.chars.each_slice(5).to_a とか。
Benchmark.bm で1万回ずつやった時間を比較したら半分弱の時間だった。


704 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 22:37:37 ]
>>701
x.split(/.{5}/)
x.split(//)

がたぶん一番速い
これでも遅いという場合はそもそもそんな莫大な配列を文字から作る理由は何というとこから

705 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 23:10:56 ]
>>704
そもそも要件を全然満たしてない件

706 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 23:17:57 ]
enumeratorと配列の違いって何ですか?
なんとなく大体同じもののように思えるんですが



707 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 23:42:36 ]
超巨大な集合から1つずつ取り出そうとしたとき、Enumeratorは全部を
覚えていなくてもいいぞ。
alphabets = %w(a b c d e f g h i j k l m n o p q r s t u v w x y z)

alphabets.combination(13).first(5) は造作もないが
alphabets.combination(13).to_a.first(5) はたぶんメモリ足りない。


708 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 00:46:48 ]
>>706
数えられて、返ってくる順番が保証されないのがEnumerator
Enumeratorを継承してるので数えられて、しかも順番情報を保持するようにしたのがArray

こう考えるとSetの出番がないんだがまあ誰も覚えてないし誰も使ってないと思うので気にするな

709 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 12:34:07 ]
>>701
シングルバイト文字限定でいいのかな?
であれば

x = "ABCDEFGHIJKLMNOPQRSTUVWXY"
res = [[]]
x.each_byte do |b|
if res[-1] < 5
res[-1] << b.chr
else
res << []
end
end

で,どうでしょう?

710 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 14:39:59 ]
ruby1.9の正規表現で,\wがマルチバイト文字にヒットしてくれません。
以下のコードはなにか間違っていますでしょうか?

# coding: cp932
p "日本語" =~ /\w/s #=> nil

鬼車のドキュメントには\wは多バイト文字にマッチすると書かれているのですが。
ttp://www.geocities.jp/kosako3/oniguruma/HISTORY_5X.txt

711 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 14:44:55 ]
\w は Ruby では元々 [0-9A-Za-z_] という意味のメタ文字だったので、
1.9 でもそうなってる。

712 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 14:51:19 ]
>>711
Thanksです。
マルチバイト文字を含めた単語構成文字にマッチするナイスな正規表現ってありませんか?

あとドキュメントのURLが間違ってました。
ttp://www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt

713 名前:710 mailto:sage [2010/01/16(土) 14:58:14 ]
自己レスです

# coding: cp932
"日本語" =~ /\p{Word}/s

でいけました。

714 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 15:02:56 ]
たしか ¥d が漢数字にマッチしてしまって使いにくくなってたので
その種のは使い分けるようになったんだっけ?


715 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:22:03 ]
>>709
1.9系なら↓でマルチバイトもOK

x = 'あいうえおかきくけこさしすせそ'
res = []
x.each_char.each_slice(5){|a| res << a}

716 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:29:26 ]
これでもできるな

x = 'あいうえおかきくけこさしすせそ'.each_char.each_slice(5).map{|a| a}



717 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:32:17 ]
Windowsのユニコードのファイル名が扱えるライブラリはありますか?

718 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:33:00 ]
>>717
ありません

719 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:38:28 ]
いやいやいやいや、直接API呼べば問題ないからさ
そういうライブラリがrubygemsあたりにでもないかという話だろう

でもこれで困るの日本人とかだからなー

720 名前:701 mailto:sage [2010/01/16(土) 18:50:38 ]
レスありがとうございます
>>703の方法が一番早いようなのでこれを使わせてもらいます

721 名前:デフォルトの名無しさん [2010/01/17(日) 10:37:45 ]
皆さんはRubyのコードを何で書いてるのでしょう?
やっぱり、Emacs or vim?

補完が効くのが良いのですが・・・・


722 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 10:48:27 ]
Emacsが無難ということに一応なってはいる

適当な統合環境が快適に動作する環境なのなら、エディタ部のコード書きの補完機能だけ使うのも悪くはない
Emacsを一度も使ったことがなくて基本キー操作から覚えなければならないというのだとすれば尚更

Emacsが好まれてるのはエディタの軽さの範疇を実際上は超えてないというのが大きい
もしEclipseやNetBeansが超サクサク動作だったならEmacsは時代遅れ度を2段階くらい上げていたはず

723 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 11:02:32 ]
Emacsは現代的なIDEが提供するところの補完機能を厳密にはもってない
…まあ、実用上はそれほど困らないが

724 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 11:35:27 ]
拙者は秀丸でござる。
感謝の意を込めてちゃんと送金したでござる。

725 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 11:35:48 ]
Emacs で指がつったら vim も試してみてね by vim厨

726 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 11:46:52 ]
>>721
主にNetBeans使ってる。IDE厨なのでw

ただし、NetBeansの最新の6.8はいろいろとバグが・・・



727 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 11:57:45 ]
俺もいわゆるスクリプト程度しか書かないからEmacsで十分だな
でもたしかにIDEがエディタ同様に軽ければそっち使うかも

728 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:36:38 ]
通常のエディタでは慣れてくると物足りない(プログラミング初心者は補完のないエディタでやること)
IDEはおおむね重いし遅いしプロジェクトとかそんなのが必要な大作ばかり作るわけじゃないから邪魔

というところにすこんと入るのがEmacs
全部できるが余分で煩雑で重い、というものを使うよりは、
やや足りなくて手作業が入るが軽快、のほうを選ぶ人は意外と多い

729 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 13:17:32 ]
emacs自体あんまり使わないんだけど、ショートカットキー一発で
全体を整形&フィリング(emacsではこういうのかな)できる設定ないかしら。

730 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 13:20:51 ]
あるお。
俺はCtrl-x hとかしたあと、Ctrl+Alt+\を押してる。
フィリング?は知らんけど。

731 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 13:20:54 ]
結局>>717は無いの?

732 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 13:21:05 ]
class C
 def hoge
  とても長いメソッド...
  local_var = value #<= ここだけを書き換えたい
  ...
 end
end

メソッド定義内のローカル変数たった一行を書き換えたいんです。
とても長いメソッドなので,class_eval{def...無意味なコピペ...end}をしたくありません。
スパッと書き換えることはできませんか?

とりあえずSCRIPT_LINES__とripperを使えば20行くらいでできるのですが,
もっとストレートな方法があるかもしれないと思い質問しました。
ちなみにbindingを使った実験には失敗しました。
よろしくお願いします。

733 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 14:05:33 ]
>>731
本スレ行って聞いてみたら

734 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 14:22:30 ]
Emacs が軽快とか隔世の感、とか言うのは多分年寄り。

735 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 14:32:07 ]
今は通信速度が速いから、Emacs も簡単にダウンロードできる。
昔はフロッピーで小分けにして、配布してたな。

736 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 14:36:14 ]
>>731
Perlの↓相当がgemにあればいいんだろうけど
perl-users.jp/articles/advent-calendar/2009/hacker/20.html
いまgemでサーチかけた感じだとなさそう

必要なら↑を参考にしてRubyにportしたら?



737 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 14:46:29 ]
>>731
1.9.2で扱えるようになるかも、ってことらしい
blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/45826

738 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 14:54:30 ]
>>731 >>736-737
あれ、WindowsだとUNICODEファイル名ダメだったのかー
gemでモンキパッチみたいに簡単にWindowsのときだけOKにできるのとかあったら便利そうだね。
システムの根底だから難しいのかね

739 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 20:48:07 ]
>>736-738
ありがとう。だが初心者にはハードル高すぎ
1.9.2に期待しまつ。いつごろ出るんだろ?今年の春頃?


740 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 20:52:56 ]
一応「もう出てる」レベルではあるんだが、Windowsでは自力でソースからコンパイルしないといかん
rubygemsとかも未対応で動作しない可能性も大きい
しばらく前の1.9.1状態

来年くらいには使える状態になってるんじゃないかなあ

741 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 21:21:56 ]
なんか直接いじればどうにかなりそうな気はするんだけどねえ

742 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 21:54:31 ]
すいません、これ↓を使いたいんですが、何から始めればいいのか教えてください。
ttp://gist.github.com/211635

743 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 22:12:49 ]
>>730
フィリングってのはこういうの。文章の段落内でESC qでできる。
# ながーーーーーい説明文菜がーーー否がーーー否がーーーーーーーーーーーーーーーーーーーーい

# ながーーーーーい説明文菜がーーー
# 否がーーー否がーーーーーーーーー
# ーーーーーーーーーーーい

んで、ソースコード全体を一発で整形&フィリングしたいのんよ。ruby-modeで。

744 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 22:20:06 ]
>>742
見てわからんのならスクリプトがすこし違って詰まったときの対処も自力で全然できないということだから
素直に Ruby の勉強を進めたほうがいいような気がしないでもない

前情報として、Ruby の知識が全然ないのなら使えないよ
MySync GoogleContacts でぐぐると唯一出てくるから、
これをしたい場合は Ruby 上でこれを動かすしかないわけだけど、
まったくの一見さんが使えるようなクオリティにはそもそもなってない

を踏まえて
Ruby を適当にインストール、URL の Download からダウンロードして展開して、
au2gcontact.rb をてきとうなとこにコピー
その後、au2gcontact.rb 自身のファイルの文字コードを Shift_JIS というか CP932 に変換
MySync が吐き出したエクスポートの CSV(Shift_JISに変換済)を第 1引数に、
GoogleContacts に食わせたいファイル名を第 2引数にして、
ruby au2gcontact.rb mysync.csv output.csv
と実行
output.csv は ShiftJIS(というかCP932)だが、
これがそのまま GoogleContacts にでインポートできるかどうかまでは知らない

745 名前:742 mailto:sage [2010/01/17(日) 22:53:26 ]
なんかよくわからんまま試行錯誤したら一応の目的は達しました。ありがとうございました。以下俺メモです。

rubyをインストール。
ソース(っていうのかな?)をメモ帳にコピペ。拡張子を.rbに変える。
au2gcontact.rbとaddress.csv(←LismoPortが吐き出すやつ)とgcontact.csvをC:\Documents and Settingsに置く。
コマンドプロンプトからruby au2gcontact.rb address.csv gcontact.csv
出てきたのをgmailにインポートでおk。

いやーすごいですね。感動しました。ほんとありがとうございました。

746 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 01:19:39 ]
>>743
Emacs のスレで聞いたら adaptive-fill-mode の使い方なり filladapt.el の後継なり
何か情報が入るんでない?



747 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 03:41:47 ]
乗り遅れた感あるけど

vim+neocomplcacheでやっとります。

748 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 09:32:46 ]
> rubyはwindowsで動かすとどうして遅いの?
Ruby 1.8.7-p174 の select が遅かった話じゃなくて?
www.garbagecollect.jp/~usa/d/200909c.html
Ruby 1.8.7-p249 にすれば直るよ。

> たしか \d が漢数字にマッチしてしまって使いにくくなってたので
Ruby 1.9.1 の初期はそうだったんだけど、この挙動はバグ扱いされて修正されたので、
Ruby 1.9.1-p378 にすれば直るよ。

749 名前:742 mailto:sage [2010/01/18(月) 09:33:49 ]
追記。適当なソフトでau2gcontact.rbの文字コード変換をshift jisに変換。

750 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 15:18:11 ]
puts "日本語".inspect
とすると、"¥123¥456" みたいな表示なりますけど、これを "日本語" のままで表示させることはできませんか。

751 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 15:35:00 ]
1.8.7 mswin32の場合

irb(main):001:0> puts "日本語".inspect
"\223\372\226{\214\352"
=> nil
irb(main):002:0> $KCODE = "s"
=> "s"
irb(main):003:0> puts "日本語".inspect
"日本語"
=> nil


752 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 15:37:06 ]
-Kオプションの方がわかりやすいかもしれないと思い直した

>ruby -Ks -e'puts "日本語".inspect'
"日本語"

753 名前:739 mailto:sage [2010/01/18(月) 18:25:32 ]
1.9.2 preview1で試してみたけどダメだった

754 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 18:35:12 ]
だからそういうふうにそもそも作ってないんだから標準で用意されたメソッドをどう使おうと絶対に駄目だって

755 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 19:39:35 ]
火急的に困ってる人がいないんだろうね
見なかったことにするわけにもいかんと思うんだが、代替手段は何なのだろう
そこだけRubyを使わない?

756 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 19:58:33 ]
1.9.2で扱えるようになるかも、ってことらしかったんで



757 名前:デフォルトの名無しさん [2010/01/18(月) 20:21:42 ]
#!ruby -Ku
require 'win32ole'
WIN32OLE.codepage = WIN32OLE::CP_UTF8
fso = WIN32OLE.new('Scripting.FileSystemObject')
a = fso.CreateTextFile("♡♥♡♥.txt", true)
a.WriteLine("This is a test")
a.Close()

758 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 20:35:46 ]
笙。笙・笙。笙・.txt というファイルができました先生

759 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 20:39:55 ]
u

760 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 21:01:23 ]
環境とエディタによってはこのへんきちんと動作するように保存するのは微妙に難しいぞ
慣れればどうということもないんだが

761 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 21:11:27 ]
おお! できました!! ありがとうございます!!!
これどうすればIOやDirで扱えるんですか?

762 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 21:20:06 ]
>>761
扱えない
全部 WIN32OLE 内で完結させる必要がある
必要なのは Ruby の知識じゃないね

763 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 21:33:40 ]
ですよねー...

764 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 21:35:43 ]
最初と最後にリネーム処理かませば Ruby から扱うのも不可能ではないと思う

765 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 22:55:11 ]
先生質問だよ質問

data = {/key/ => lambda{|m| "<#{m}>"}}


data.each_pair do |re, p|
 file.gsub!(re){|m| p.call(m)}
end

p file #=> key が <key> になってる

というような、
{正規表現 => キーのマッチ結果を便利に利用した結果の返り値またはただの文字列}
というデータを用いた連続置換をしたいのです
それで、data は外部から自由に与えたいのです

でも、よく考えたら lambda を作った時点では gsub の $1 も \1 もまだ無いから利用できないわけで
なにかうまい方法ないですか
eval ならなんとかなると思ったんだけど普通の置換後に使いたいだけの文字列も eval してしまいます

766 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 23:47:16 ]
>>765
m = Regexp.last_match
puts m[0]
とかでできないかな?

あと
data.each_pair do |re, p|
 file.gsub!(re, &p)
end
でいいような気がするけど試してはいない。




767 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 23:55:48 ]
こういうことだろうか。

to = data.each_pair.inject(from) {|result, pair| result.gsub(pair[0], &pair[1]) }


768 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 23:59:30 ]
これではどう?

a = 'abc def'
data = [['(\w+)', '<\1>'], ['(> <)', '> < \1 > <']]
data.each{|reg, rep| a.gsub!(/#{reg}/, rep)}
a => "<abc> < > < > <def>"



769 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 00:09:09 ]
>>768
なにそのわかりやすくしようとする気概をぜんぜん感じない例

770 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 00:10:57 ]
>>765

766-768が書いているようにgsub!の第2引数で置換パターンを書いたほうが
単なるstringでパターンを渡せるので簡単だと思う

766,767が書いてるパターンの前の '&' って
どういう意味?

771 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 00:21:13 ]
>>770
ttp://www.ruby-lang.org/ja/man/html/_A5E1A5BDA5C3A5C9B8C6A4D3BDD0A4B7.html

772 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 00:26:03 ]
なるほどProcを渡してるのねthx
俺には768の方がわかりやすいな、例は見づらいが

773 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 00:42:38 ]
だって先生が gsub はブロック使えって言ったんだもん言ったんだもん言ったんだもん

>>766-768
irb> data = {/k1/ => 'v1', /k(2)/ => 'v\1', /k3/ => lambda{|m| m.sub(/k/,'v')}}
irb> str = 'k1, k2, k3'
irb> data.each_pair do |re, p| p.kind_of?(Proc) ? str.gsub!(re, &p) : str.gsub!(re, p) end
irb> p str
"v1, v2, v3"

思ったことに近いことができましたーうおー
助かりましたせんきゅうです

774 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 03:46:28 ]
1byte文字以外をマッチする方法を教えてください
s="123123456456"
s.gsub!(/〜/){|c|
uni_enc(c)
}
p s
=>
123%uFF11%uFF12%uFF13456%uFF14%uFF15%uFF16
みたいに1byteじゃない文字だけ変換して置換したいです
よろしくお願いします

775 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 06:56:24 ]
$KCODE='s'
s="123123456456"
s.gsub!(/./){ |ch|
(ch.length==2) ? "(#{ch})" : ch
}
puts s;

776 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 07:36:20 ]
1バイトじゃない文字だって言ってるのにわざわざ2バイトをチェックするとはこれいかに



777 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 14:27:57 ]
# coding: sjis
# Ruby1.9以降か正規表現エンジンに鬼車を使用

s="123123456456"
s.gsub!(/[^\p{ASCII}]/){|c|
"%u"+c.encode('utf-8').ord.to_s(16)
}
p s

778 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 17:08:32 ]
test = {"うし"=>5, "うま"=>3, "うし"=>1, "うし"=>2, "うま"=>4}
test.each{|key, val|
}

これを実行したら最後二つの"うし"=>2と"うま"=>4しか処理が実行されないんですが
キーの要素が一緒だと前にある奴は消されてしまうんですか?
またこれをハッシュの数分だけ実行させることはできないんでしょうか?

779 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 17:22:15 ]
>778
ハッシュの意味を勉強してこい

780 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 17:30:11 ]
配列の配列を使う方法
test = [ ["うし", 5], ["うま", 3], ["うし", 1], ["うし", 2], ["うま", 4] ]
test.each {|k, v| use(k, v) }

値が配列になったハッシュを使う方法
test = {"うし"=>[5, 1, 2], "うま"=>[3, 4] }
test.each {|k, a| a.each {|v| use(k, v) } }


781 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 17:44:49 ]
文字列
a0-0 a0-1 a0-2 a0-3
a1-0 a1-1 a1-2 a1-3
a2-0 a2-1 a2-2 a2-3

から任意が選ばれた配列a
a=["a0-0","a2-2","a2-3"]
より、
配列bを作成したいのですが、
なにか良い方法はないのでしょうか?

b=[[1,0,0,0],[0,0,0,0],[0,0,1,1]]


782 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 17:51:33 ]
只今から上位エスパー召喚の儀を執り行う

783 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 17:54:09 ]
"a0-0" → [1, 0, 0, 0]
"a2-2" → [0, 0, 0, 0]
"a2-3" → [0, 0, 1, 1]

という対応があるように見えるのだが、2つめは [0, 0, 1, 0] ではない?
どういうルール?



784 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 17:55:50 ]
>>782
失敗してるぞw

785 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 17:58:38 ]
こうだな

a=["a0-0","a2-2","a2-3"]

b = Array.new(3){ Array.new(4, 0) }
a.each do |x|
if /a(\d)-(\d)/ =~ x
b.push[$~[1].to_i][$~[2].to_i] = 1
end
end
p b #=> [[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 1, 1]]


786 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 18:00:09 ]
>>782
成功したぞw



787 名前:785 mailto:sage [2010/01/19(火) 18:00:44 ]
ごめん。こうだったね。
> b.push[$~[1].to_i][$~[2].to_i] = 1
b[$~[1].to_i][$~[2].to_i] = 1


788 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 18:02:57 ]
>>783
a0-0 は配列aにあるから 1
a0-1 はないから0
a0-2 はないから0
a0-3 はないから0
これにより[1,0,0,0]です。

a2-0 はないから0
a2-1 はないから0
a2-2 はあるから 1
a2-3 はあるから 1
これにより[0,0,1,1]です。

このようなルールです。

789 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 18:26:34 ]
>>785
ありがとうございます。
この方法で問題なく解決しました。

790 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 22:18:49 ]
こういう3択クイズで選んだ結果をファイルに出力して、解答ファイルと照らし合わせる場合
どうすればいいのでしょうか?

require 'cgi'
c = CGI..new
hoge = c["va"]
print "Content-type: text/html; charset=EUC-JP\n\n"
print "<html><head><title></title></head><body>\n"
print "<p>"
if hoge == 1
print "<p>問題1</p>\n"
print"<form method=\"POST\" action=\"./test.rb\">\n"
print"<input type=\"radio\" name=\"va\" value=\"2\">ア
print"<input type=\"radio\" name=\"va\" value=\"2\">イ
print"<input type=\"radio\" name=\"va\" value=\"2\">ウ
print"<input name=\"ok\" type=\"submit\" value=\"OK\">\n"
print"</form>\n"
elsif hoge == 2

end
print "</p></body></html>\n"

791 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 22:32:03 ]
>>790
Rubyは基本、HTTPのクエリ文字列とかを隠蔽しない
そのときどんなデータがどのように送られてくるものなのか、HTTPの勉強をするといいぞ

792 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 23:06:30 ]
>>791
ありがとうございます
勉強して何とかやってみます

793 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 08:35:06 ]
>>791
事実だから仕方ないが、あんま威張ることじゃないけどねえ
Railsで作ってRailsで表示してRailsで受け取れば抽象度高くできそうだが、もうCGIではないな

794 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 08:36:21 ]
そりゃ言語としてWEBだからって何かするのはPHPくらいだろう。


795 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 08:49:20 ]
あほまるだし

796 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 12:53:24 ]
質問です!
文字列を受け取ってスペースと記号を削除した文字列を返すメソッドを作りたいんですが
どうすればいいでしょうか?
ちなみに条件はgsubメソッドをつかうこと
記号は全角も半角も含む(","とか"。"とか"?"とか"?"とか)
どなたかお願いします




797 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 12:56:49 ]
>>796
Rubyの宿題教えてください。2限目
pc12.2ch.net/test/read.cgi/tech/1200175247/

798 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 13:10:06 ]
>>797
スレ違いでしたね
すいません
わざわざありがとうございます

799 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 13:48:31 ]
RDEは軽いからお手軽なGUIのirbみたいなイメージで
自作メソッドとかの動作確認的な風に使うな

800 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 14:45:43 ]
railsを勉強しようと思うんですが、初心者向けで
お勧めの本はありますか?あるいは、これは読んで
おくべき本でも構いません。

Webでいろいろ読んだのですが、modelのassociation
やAjaxが難しく感じました。


801 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 14:50:41 ]
うむ、スレのテンプレすら読めんような注意力では何もかもが難しかろう

【Ruby】Ruby on Rails Part8
pc11.2ch.net/test/read.cgi/php/1252842574/

802 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 14:53:24 ]
Railsの初心者スレってありそうでなさそうで需要ありそうだがやっぱめんどいからなしで

803 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 16:16:05 ]
>>801
ありがとう。

804 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 16:21:54 ]
>>800
初心者が最低限これだけあればまずはなんとかなる!って書籍を3つ。
というか俺が実際にRails初心者レベルで仕事で使った本

・RailsによるアジャイルWebアプリケーション開発
www.amazon.co.jp/dp/4274067858/

・Ruby on Rails 逆引きクイックリファレンス Rails 2.0対応
www.amazon.co.jp/dp/4839928266/

・Railsレシピブック 183の技
www.amazon.co.jp/dp/4797336625/

あとは、webサイトだけど公式のガイド。ちょっとしたわからんことはまずこれ見たら大体すむ
Ruby on Rails guides
guides.rubyonrails.org/

毎回聞かれてるんで、Railsスレテンプレに入れといていいと思うんだ・・・

805 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 16:23:43 ]
質問いいでしょうか?
Ruby 1.8.7にて、ブロックつきメソッドの呼び出したブロックの返り値を得たいのですが、
ブロック内で
 return "UNKO!!"
すると、
 unexpected return (LocalJumpError)
と言われます。
 break "UNKO!!"
では問題ないようなのですが、これはこういうものなのでしょうか?

806 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 17:03:26 ]
>>804
紹介ありがとう
とりあえずそれらと公式サイトで始めてみます



807 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 17:04:09 ]
>>805
トップレベルでreturn使っていない?
def f(a)
a.each{ return 1 }
end

a = [1,2,3]
f(a) # これはだいじょうび
a.each{ return 1 } # でもこれはダメ


808 名前:805 mailto:sage [2010/01/20(水) 17:50:49 ]
>>807
ありがとうございます。
エラーでない方法をお聞きしたいというよりも、もう少し具体的に聞くべきでした。

こちらの期待する動作としては、
”UNKOoooooooOOOO!!”と”f is finisheeeeeeeedddddd!!111”ともに表示させたいのです。
breakの代わりにreturnだと”f is finisheeeeeeeedddddd!!111”が表示されませんよね・・・?(fから抜けてる?)

実際のコードではa.eachではなくeachの代わりに自分で定義したブロックを必要とするメソッドを呼び出してます

def f(a)
  puts a.each{ break "UNKOoooooooOOOO!!" }
  puts "f is finisheeeeeeeedddddd!!111"
end

a = [1,2,3]
f(a) # これはだいじょうび
#a.each{ return 1 } # でもこれはダメ

809 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 18:01:04 ]
breakはブロックの脱出、returnはメソッドの脱出ってこと
だからそのfの中でretrunを使ったら内部ブロックでだろうとfを脱出する

同様にこれも無理
def f
 break
end
f

810 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 18:09:10 ]
ある案件で始めてRubyをいらうことになったのですが、
訳がわからず困っています。

取り合えず、"RailsによるアジャイルWebアプリケーション開発”のT部
HelloWorldプログラムを作成して動かすまでを試してみて、
ああ、PHPでSmarty使ってMVCモデルで作成するのを自動、徹底
してる感じだなと思い、そのまま本チャンプログラムに挑みましたが・・・

・まず、.rhtmlがTopページしかなく、MVCとも.jsファイルばかり。
・ブラウザに表示してソースコードを見てみると、1万行近い
 ソースコードで表示と一致していない。
・ブラウザのURL表示がページ遷移しても常に一緒。

と、始めて見る構成でした。
私のRubyの理解が足りないと思い、U部以降を読み進めようと思いましたが
このプログラム構成が特殊だから、参考書読み進めても効果は薄く
それよりプログラムの解析を続けるべきでないかと思い直しました。

皆さんに質問ですが、こういった構成は一般的なのですか?
それなりにある手法ならば、読むべき参考書、検索のキーとなる
単語を教えていただけたらと思います。

要領得ない質問ですみませんがお願いします。。。

811 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 18:17:27 ]
>>810
お前には絶対に無理だ

812 名前:sage [2010/01/20(水) 18:20:39 ]
せめて日本語で頼む。

813 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 18:31:08 ]
>>804の罪は重い

814 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 18:34:15 ]
これは俺でも煽る
直前読めずにスレのルールすら理解できないようでは駄目だろうな

815 名前:810 mailto:sage [2010/01/20(水) 18:51:22 ]
>>814
>関連スレやURLは>>2-5あたりを見てください。
>Ruby on Rails の質問は Webプログラミング板の Rails スレへ。

これですか?
もっと詳細に質問すべきだったのかもしれませんが、
個々のプログラムの質問以前に全体として???だったもんで。。。

>>810,813
つまり、初心者レベルでないから私には到底無理ってことですか?
それならそれで上にそう報告しますので助かります。
それでもやれって言われそうですが・・・。

逆に、参考書読んだらわかるようなことを質問するなというのであれば
すみません。
参考書、全部読んでみます。

取り合えず、初心者参考書レベルの問題なのかだけでも教えて下さい。

816 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 19:11:01 ]
>>815
君が書いてる質問の中に、Rubyそのものに関する話題は一切ない。
Railsスレへ行きなされ。

>>813が書いてるのは、たぶん、Railsスレへ行けということが示されてるのに
わざわざ餌を撒いてここに君を留まらせた罪が重いってこと。



817 名前:810 mailto:sage [2010/01/20(水) 19:13:22 ]
>>816
そうですね。。。
すいません。

Railsスレにいきます。
スレ汚し失礼しました。

818 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 19:21:36 ]
>>817
読んでないことを期待するが、40パーセントくらいしか悪くないのでそれほど謝る必要はない
残り40パーセントは>>804で、残り20パーセントはたまたま重なったタイミング

819 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 19:39:51 ]
>>808
eachごとの結果がほしいのなら
ブロックの外で定義した配列に
欲しい結果を入れておく。
またはブロックのto_aとか

701へのレス703, 709参照。

820 名前:804 mailto:sage [2010/01/21(木) 10:54:34 ]
俺の名誉のために言っておくが、>>810の言っていることは、
"RailsによるアジャイルWebアプリケーション開発”のサンプルコードの話じゃなくて、
>>810が取り組んでる仕事のコードだと思うぞ

821 名前:804 mailto:sage [2010/01/21(木) 10:55:31 ]
ごめん >>816-818読んでなかった。餌まいてスマソ

822 名前:805 mailto:sage [2010/01/21(木) 10:56:56 ]
ありがとうございます!

>>809
> breakはブロックの脱出、returnはメソッドの脱出ってこと

ああ!それです。まさにその1行が聞きたかったのです。
俺はもっとよい聞き方を憶えないといけないな・・・

823 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 11:43:10 ]
こうして>>804はプライドも外聞もズタズタになったのであった。

824 名前:デフォルトの名無しさん [2010/01/21(木) 12:57:39 ]
1. ruby -e 'puts ARGF.read' file.txt
2. ruby -e 'puts $<.read' file.txt

1.の文では正しくfile.txtの内容が表示されるのですが、
2.の文で「指定されたファイルが見つかりません。」と怒られます。
リファレンスマニュアルの$<の項には
 「つまり定数 ARGF の別名。 」
と書いてあるので、
1.と2.で同じ結果を期待したんですけど。
どこが間違ってるんでしょうか?

Ruby1.9.1でOSはWindowsXPです。
よろしくお願いします。

825 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 13:06:28 ]
あ,自己解決しました。
Windowsの<とか>とかってエスケープするか
""で括らなきゃいけなかったんでした。

1. ruby -e "puts ARGF.read" file.txt
2. ruby -e "puts $<.read" file.txt
または
2. ruby -e 'puts $^<.read' file.txt
なら同じ結果になりますね。
スレ汚しスマソ。

826 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 13:10:22 ]
>>824
「指定されたファイルが見つかりません。」を出してるのは実はcmd.exeだ
「<」を誤認識してる

ということで cmd.exe から < をエスケープすればよい
cmd.exe のエスケープ文字は ^ だから、

ruby -e 'puts $^<.read' file.txt



827 名前:816 mailto:sage [2010/01/21(木) 14:12:27 ]
別に810や804を責めたいわけでもないんだが、質問と回答は
適切な場所でやった方がいいよ、ってことで。

828 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 14:15:52 ]
>>826
すみませんすみません
ありがとうございました。

829 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 14:33:03 ]
>>810
>・まず、.rhtmlがTopページしかなく、MVCとも.jsファイルばかり。
>・ブラウザに表示してソースコードを見てみると、1万行近い
> ソースコードで表示と一致していない。
>・ブラウザのURL表示がページ遷移しても常に一緒。
> と、始めて見る構成でした。

これはAjaxでページを作ってるんだろう。Railsうんぬんはさほど関係ない。

> 私のRubyの理解が足りないと思い、

いや、JavaScriptやAjaxの知識が足りないだけだと思う。

830 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 14:34:48 ]
>>801

831 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 17:50:52 ]
riっていらないよね

832 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 17:58:09 ]
rubygem パッケージマニュアルとしての ri に関しては、「とりあえず入れておく」というようなもんでもないな既に
現時点で ri を利用してないのなら、 --no-ri で飛ばしてOK
基本的にロクなこと書いてないしソースを grep したほうがおおむね速いので、rdoc もなくてもいい
rdoc がきっちりしているライブラリのみ、マニュアル読む機会があるときだけ rdoc コマンドで構成するか、
あるいはネットで公開されてる rdoc を読めばいい

833 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 19:04:47 ]
refeはいるけど、riはいらない

834 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 19:13:46 ]
デフォで--no-ri -no-rdocしても特にデメリットはないね
インストール速いしディスクアクセスも少なくて済むしいいことだらけ

835 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 19:37:04 ]
俺は.gemrcに書いたが、デフォルトでそうであれ、とまでは思わない。


836 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 19:41:39 ]
自分の作るライブラリにはRDocをていねいに書く
自分がインストールするライブラリではrdocは使わない



837 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 19:46:04 ]
日本語でいいならコメント書くんですがー

838 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 19:54:48 ]
>>837
あちらさんの使ってるフォント自体に日本語文字がないから、本気で表示が崩れるぞ
外国語の文字も適当に表示できるフォントの認知度が高いのは日本くらいだ

839 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 19:59:50 ]
とりあえず日本語でコメントを書きまくり、英語の得意な人がプロジェクトに参加してくれることを祈るというのはどう
英語でコメント書くの大変だって言うような人が作るライブラリなんて、どうせ最初に使うのは日本人が主だろうしさ

840 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 20:14:17 ]
そうだな、とりあえず日本人向けオンリーででもまず本体クオリティ上げるのが第一かもしらん
英語ドキュメント書けないからと言って諦めるのはもしかしたら勿体無さ過ぎるかもしれない

841 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 22:08:16 ]
質問です。ある1つのディレクトリ内にあるファイルを更新時間順にソートしてファイル名を連番(数字のみ)にしようと以下のコードを書きました。


def consecutivenum(path)
i = 1
files = Dir.glob("#{path}/*").reject{|name| FileTest.directory?(name)}
files.sort{|a, b|
File.mtime(a) <=> File.mtime(b)
}.each{|name|
File.split(name)[1] =~ /.+(\..+)/
File.rename("#{name}", "#{File.split(name)[0]}/#{i}#{$1}")
i += 1
}
end

実行するとファイルが消去されたりコピーされたりしてしまいます。
試しにDir.glob(#{path}/*)だけを実行したところ、存在しないファイル名が混じっていました。
また、そのファイルをFileTest.exist?に送るとtrueが返ってきます。Windowsの隠しファイルでもありませんでした。
何がどうなっているのかさっぱりわかりません。OSはVistaでRubyのバージョンは1.8.7です。
ご助力よろしくお願いします。長々と失礼しました。

842 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 22:40:56 ]
> 存在しないファイル名が混じっていました
存在します

または、UNICODEファイル名です
UNICODEファイル名だった場合、Rubyから扱うことはできません

843 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 23:30:17 ]
てか存在しないファイル名とか教えてくれりゃ結構一発だったり

844 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 23:33:11 ]
察してください、まで読んだ

845 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 00:28:53 ]
>>842
>>843

ファイル名ですが、エクスプローラーやコマンドプロンプトのdirで確認できずにrubyで検出されたのは

6.jpg
2.ini

の二つです。

846 名前:841 mailto:sage [2010/01/23(土) 00:29:59 ]
失礼
>>845の書き込みは>>841の者です。念のため。



847 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 00:59:11 ]
本当に存在しないファイルなの?
そのディレクトリで
system('start 6.jpg')
ってやればjpegに関連付けられたアプリで 6.jpg が開くから確かめてみたら?


848 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:01:01 ]
あとは

dir /x

とか

849 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:08:43 ]
>>847
6.jpgについてはエラーが出ましたが、2.iniは開かれました。

>>848
6.jpg、2.iniいずれも出ませんでした

850 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:16:26 ]
2.iniがでてきたってことは、ファイル自体はあるってことだよね?
でもdirでは出てこないのか・・・謎だ・・・

require 'win32ole'
fso = WIN32OLE.new('Scripting.FileSystemObject')
fso.GetAbsolutePathName('2.ini')

とかしてみたら?

851 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:27:40 ]
>>850
さきほどまでのフォルダではなくtempフォルダのパスが出ました。
今度はそのtempフォルダで start 2.ini を実行しましたが開かれず、dirでも見つかりませんでした

852 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:35:45 ]
とりあえずスクリプトに
$KCODE = 'SJIS'
を付けて実行してみるべき

FileSystemObjectで見えているパスはWindowsで見えているパスなので
fso経由で2.iniが見えているのにdirで見えないのは、ちょっと不思議


853 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 01:48:34 ]
$KCODE = "SJIS"を付けてみましたが特に変わりないようです
(ただ、コンソールの作動場所のせいかスクリプトの保存場所のせいかまた別のパスが返ってきましたが)

>>850のスクリプトはなにを意味するのですか?2.iniの代わりに適当な文字列を入れてもパスが返ってくるのですが・・・


854 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 02:49:29 ]
まだいるかな?
attrib *.*
はどう?

855 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 02:52:21 ]
なんかの拍子にシステムファイルになったんじゃない?
フォルダオプション→表示→保護されたオペレーティング〜
のチェック外してみ

856 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:46:40 ]
dir で出てこなくて dir /a で出てくるなら
存在はしてるけど何らかの属性がついてて、そのせいでエクスプローラーに表示されないだけだな



857 名前:デフォルトの名無しさん [2010/01/23(土) 15:10:59 ]
./hoge.rb を実行するときに例えば ./hoge.rb --debug のようにしてデバッグモードにして
そのときだけ状態メッセージを print するためにはどのようにするのは ruby 的にエレガントでしょうか?


858 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 15:12:05 ]
もはやRubyとは関係ないな

859 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 15:43:41 ]
>>857
読み手にとっていちばん妥当なもの

require 'logger'
@log = Logger.new(@logfile||$stdout)

@log.debug "debug log message" if @log

書く人が楽だがメソッド名に独り善がり感またはどや顔が滲み出たもの

def D(msg)
return unless @debug_output
@debug_output << msg
@debug_output << "\n"
end

@debug_output = $stderr
D "debug log message"


後者のタイプで def LOG(msg) を時々見る

860 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 17:54:08 ]
>>859
ありがとうございます!
後者のDをDoyagaoとして使いたいと思います(違)^A^K二つの視点から例を出していただきとても参考になりました!

861 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 18:59:49 ]
>>841です

>>854-856
2.iniがシステムファイルとして存在していました。相変わらず6.jpgは見つかりません。


862 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 19:46:16 ]
どこにだよ
tempか?
最初のフォルダの中のファイルは全部連番に変わったのか?
tempのファイルも全部か?

863 名前:デフォルトの名無しさん [2010/01/23(土) 21:43:18 ]
ブロックスペシャルファイル(readするとバイト列が得られます)の長さを
調べたいのですが、実際にreadすることなしにこれを実現する方法はありますか?

パッと思いついたのは、openしてからファイルの末尾にseekして
先頭からのpositionを得るという方法ですが、他にはありますか。

864 名前:863 [2010/01/23(土) 21:46:20 ]
例えばこんな感じです:

File.open("/dev/sda") do |io|
 io.seek 0, IO::SEEK_END
 io.pos # /dev/sda のバイト列の長さ
end

865 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 21:49:18 ]
関数の外で@も@@も付けずに定義した変数はいったいどこに保存されるのでしょうか?

x = 10
def func
x = 20
end
func
puts x #=>10
これがxが20にならないので、最初に定義したxはグローバルには見えないどこかに閉じ込められてるのかな。

866 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 21:50:04 ]
>>863
完全にUNIX/Linuxプログラミングの話題じゃまいか



867 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 21:51:41 ]
>>866
を、Rubyで実現するにはどうすればいいですかという話だろう

868 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 21:53:55 ]
>>865
変数のスコープという概念を勉強してくれ
ごく端的に説明すると消えるというか、スコープを抜けるとアクセス不可になって取り出す手段がなくなる
def の「中」のローカル変数は def の「外」からはアクセスできない
だからメソッドの引数で「中」に入れてメソッドの返り値で「外」に出す

869 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 21:57:27 ]
File.statでサイズ読めないかね

870 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:02:55 ]
俺もそうおもた

871 名前:863 [2010/01/23(土) 22:03:17 ]
>>869
やってみたのですが size = 0 になっています。
statコマンドで調べても0バイトになっています。

そもそも、ブロックスペシャルファイルのバイト列の長さって、デバイス依存な気がします。
つまり「ファイルサイズ=バイト列の長さ」は成り立たない、ということかも知れません。

872 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:03:31 ]
$ sudo ruby -e "p File.stat('/dev/sda')"
#<File::Stat dev=0xe, ino=5003, mode=060660, nlink=1, uid=0, gid=6, rdev=0x800,
size=0, blksize=4096, blocks=0, atime=Sat Jan 23 18:12:33 +0900 2010,
mtime=Sat Jan 23 18:12:33 +0900 2010, ctime=Sat Jan 23 18:12:55 +0900 2010>


873 名前:863 [2010/01/23(土) 22:06:31 ]
>>872
ふむ、、やっぱり size = 0 ですね。。

バイト列の長さがデバイス依存(つまり不定値)なのは、よく考えてみればわかります。
/dev/null は常に長さ0ですし、/dev/zero は無限大。
難しいです。。

874 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:11:19 ]
そもそもなににつかうん

875 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:12:16 ]
やっぱりUNIXスレで聞いたほうがいいと思うんだ

カーネルとファイルシステムの知識が必要だし
Ruby初心者スレで聞くような話題じゃないよ

876 名前:865 mailto:sage [2010/01/23(土) 22:18:31 ]
>>868
ありがとうございます。
ただ、自分が不思議に思ったのは、外から関数内の変数にアクセスできないことではなく、
関数の外の変数に内側からアクセスできてないことです。
一般的に内側から外側の変数にはアクセスできると思うので。
x=20の段階で、外側の変数に代入するのではなく、新しい変数を作ってしまっているのが不思議なんです。



877 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:18:59 ]
>>876
変数のスコープという概念を勉強してくれ

878 名前:863 [2010/01/23(土) 22:19:06 ]
>>874
LVM の論理ボリュームのスナップショットを自動で作成しようかと。
ただし、論理ボリュームの大きさが:
・Xバイト以下だったら、それと同じ大きさのスナップショットを作成
・Xバイトより大きければ、Xバイトのスナップショットを作成

という処理をしたかったのですが、論理ボリュームの大きさを調べるために
外部のコマンドに投げるのは嫌だったので、どうせならデバイスファイルの中身の大きさを調べちゃえ、みたいな感じです。

>>875
すみません、そうします。
カーネルの知識はありませんが。。

879 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 22:22:19 ]
はいさよなら






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<233KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef