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


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

Ruby 初心者スレッド Part 31



1 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 17:31:07 ]
プログラミング言語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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

367 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 11:37:01 ]
>>338
>>328のmethod_defined?も。

>>329
ある機能自体がある定数やメソッドで提供されてるんだから、最も自然だろう。

368 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 19:22:53 ]
defined? や responsed_to? はダックタイピング用の機能であって
モジュール存在判定に使うもんではないと思う

369 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 19:48:38 ]
むしろモジュールの存在を問わず
メッセージに応答できるか否かだけを問うべきでは?

370 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 19:54:42 ]
実際に必要なのは処理結果であって返事そのものではないというのが理想と現実の深くて暗い谷間

371 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 20:01:47 ]
>>368
ダックタイピングならそんな判定はしない


372 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 20:04:48 ]
ていうかさあ、responed_to? 使ってる奴だって
その名前のメソッドを持っていることを期待してるのではなく
「Ruby 1.9 の」 force_encoding であることを期待しているんだろ
じゃあそれの条件をきちんと書けよ

373 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 20:08:05 ]
>>372
期待していない不正なメソッドが動作した場合はたいてい例外が発生してプログラムが止まる

374 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 20:26:09 ]
if str.respond_to?(:force_encoding) && defined?(::Encoding::ASCII_8BIT) &&
str.respond_to?(:encode) && str.respond_to?(:encoding) &&
defined?(::Encoding::UTF_8) && str.class.new.encode(::Encoding::UTF_8).encoding == ::Encoding::UTF_8 &&
(_ = str.class.new.encode(::Encoding::UTF_8).force_encoding(::Encoding::ASCII_8BIT); _.encoding == ::Encoding::ASCII_8BIT) then
str.force_encoding(::Encoding::ASCII_8BIT)
end

375 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 20:35:44 ]
プログラムが止まったあと>>373がどう改修するのかにちょっと興味がある

どうせ基本雑談なので次の質問の方気後れせずにどうぞ



376 名前:デフォルトの名無しさん [2009/09/27(日) 00:35:12 ]
blog.livedoor.jp/dankogai/archives/51183588.html
上のページに掲載されているjavascriptを使って、ブラウザ上で文字列にRaw Deflateにかけた上で Base64 encodeしたデータをサーバへ送信し、
サーバ側ではrubyでBase 64 decode、標準のzlibライブラリを用いてRaw Inflateしたいのですが、
「Zlib::DataError: incorrect header check」が発生しうまく圧縮データを伸張できません。

サーバ側のrubyは以下のようなコードです。
#!/usr/bin/ruby
require 'zlib'
data = "(javascriptで生成した圧縮データ)"
p Zlib::Inflate.inflate(data.unpack('m')[0])

ちなみに、perlだと同じように標準的なライブラリを使って以下のようなコードで圧縮データを伸張できましたので、このjavascriptのコードが特殊なことをやっているというわけではないのかな?と思います。
#!/usr/bin/perl
use IO::Uncompress::RawInflate ':all';
use MIME::Base64;
$data = "(javascriptで生成した圧縮データ)";
$decoded = decode_base64($data);
rawinflate(\$decoded => \$inflated);
print $inflated;

このJavascriptライブラリ特有の問題なのか、rubyの問題なのか切り分けができておらず微妙かと思ったのですが、
perlで動いたので一度ruby界隈で聞いてみようと思い書き込みしています。
何か分かりましたらご教授いただけないでしょうか。

377 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 00:49:00 ]
unpackが怪しい気がするから、Base64デコードしたデータのハッシュを、Perlのやつと比べてみたらどうかな?
あと、詳しくないんだけど、そもそもRawDeflateと普通のDeflateって同じものじゃないとか?

378 名前:デフォルトの名無しさん [2009/09/27(日) 01:20:21 ]
>>377
まさかと思って調べたところ、RawDeflateと普通のDeflateが違うものでした。
考えが及びませんで、ありがとうございました。
RawDeflateにchecksumなんかが頭についたものがDeflateのようで、以下のようにしたら動きました。
p Zlib::Inflate.new(-Zlib::MAX_WBITS).inflate(data.unpack('m')[0])

379 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 03:45:29 ]
配列の中にハッシュ入れたんですけど
a = [0, {1 >= 5}, 3]
これの配列データがFixnumかハッシュかどうかで処理を分けたいんですが
is_a?(Fixnum)で分岐させようとしたらエラーが出ました
classで調べたらエラーが出ます
どうすればいいんでしょうか?

380 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 03:56:08 ]
{1 >= 5} でエラーという落ちじゃないだろうな
ちょっとコードをはってみろ


381 名前:379 mailto:sage [2009/09/27(日) 04:07:10 ]
class hogehoge
def mastery_open_flag
MASTERY_ARRAY::HASH_DATA[1].each{|i|
open_flag = true
if MASTERY_ARRAY::HASH_DATA[1][i].is_a?(Fixnum)
MASTERY_ARRAY::HASH_DATA[1][i].each{|index, level|
unless @actor.mastery_level_data[index] >= level
open_flag = false
end
}
if open_flag
@actor.mastery_open_data[i] = true
end
end
}
end
end

エラーはTypeErrorで
cannot convert Hash into Integerと出ます

382 名前:379 mailto:sage [2009/09/27(日) 04:08:30 ]
module MASTERY_ARRAY
HASH_DATA[1] = [
0, 0, {0 => 5, 1 => 3}, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
]
end
モジュールの配列です。

383 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 04:19:58 ]
どの行でそんなエラー出てるんだい

384 名前:379 mailto:sage [2009/09/27(日) 04:28:48 ]
if MASTERY_ARRAY::HASH_DATA[1][i].is_a?(Fixnum)
ここです
配列のインデックス2のハッシュ読もうとしたら出ます

385 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 04:35:08 ]
mastery_open_flag の MASTERY_ARRAY::HASH_DATA[1].each{|i| ... } の i に hash が
きてるからだろう。
i = {0 => 5, 1 => 3}
if MASTERY_ARRAY::HASH_DATA[1][i].is_a?(Fixnum)
状態で配列のインデックスにハッシュをブチ込んで、
整数に変換できないよエラーになってる。eachの i にインデックスが入ると勘違いしてない?



386 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 04:38:30 ]
www.ruby-lang.org/ja/man/html/Array.html の each と each_index をよく読むといい
って、eachの例がeach_indexの結果と区別つきにくいね…1,2,3じゃない例つかえばいいのに


387 名前:379 mailto:sage [2009/09/27(日) 04:40:24 ]
あーそういうことですか
インデックス入らないと困るんですが
何かうまい書き方ありますか?
とりあえず考えてみます
あったらお願いします
ありがとうございました

388 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 04:47:09 ]
each {|要素| ... }
each_index {|インデックス| ... }
each_with_index {|要素, インデックス| ...}


389 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 04:49:28 ]
用件は「要素が整数であること」なんだろうか
「要素がハッシュであること」なんじゃなかろうか

MASTERY_ARRAY::HASH_DATA[1].each{|e|
open_flag = true
if e.kind_of?(Hash)
e.each_pair{|index, level|
open_flag = false unless @actor.mastery_level_data[index] >= level
}
end
@actor.mastery_open_data[e] = true if open_flag
end

390 名前:379 mailto:sage [2009/09/27(日) 04:58:13 ]
おーすごいさすがプログラム板
each_indexで動きましたありがとうございます
389さんが書いたとおり「要素がハッシュであること」が評価の大筋です
kind_of?(Hash) これは知りませんでした
なんとかいけそうですありがとうございました


391 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 05:02:31 ]
>>389
@actor.mastery_open_data[e] = true の e は each_with_index の i だと思う
要はナントカデータは全部要素数 100の配列なんだろう
マス目みたいに決まっててアクセス手段がインデックスしかないんだ

MASTERY_ARRAY::HASH_DATA[1].each_with_index{|e, i|
open_flag = true
e.each_pair{|index, level|
open_flag = false unless @actor.mastery_level_data[index] >= level
} if e.kind_of?(Hash)
@actor.mastery_open_data[i] = true if open_flag
}

392 名前:デフォルトの名無しさん [2009/09/27(日) 13:24:58 ]
Win32で一文字入力してすぐ制御を返すサンプルないですか?

393 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 13:44:36 ]
Curses.getch は?

394 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 18:44:37 ]
ありがとう。
Winにもcursesってあるのか。

395 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 18:53:34 ]
>>394
普通に導入可能だよー



396 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:22:24 ]
rubyでCGIの勉強しようとおもって
lighttpdをインストールしました。

ところが、設定方法がわからず、htmlは表示出来るのですが
cgiが動きません。涙目状態です。あちこちググりました・・・
途方にくれています・・・

397 名前:デフォルトの名無しさん [2009/09/27(日) 21:25:08 ]
mongrelをいれるといいよ

398 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:26:57 ]
力になっちゃあげたいけど、スレ違いかな・・・
WebProg板か、どっかにLighttpdのスレがあるから、そこで質問したらいいよ

399 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:28:09 ]
SocketってライブラリがあるからそれでWebサーバ書くのがいいと思うな

というか環境や参考にしたページをどこまで試してどこで詰まったとか
そういうのも無しに答えられるわけないので

400 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:30:33 ]
それが無いこと自体が答だろ
つまり、サーバ立てる知識が無い

401 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:32:26 ]
>>398
lighttpdのスレは先に見ました。最終書き込みが8月、その前が6月くらいと
人の気配が感じられませんでした・・・

402 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:36:43 ]
どう転んでもWebサーバの挙動の知識は必要になるわけなんだし
普通にゼロから勉強したほうが早いんだけどね

403 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:36:52 ]
Linuxなら各ディストリの初心者スレにいけば、誰かが教えてくれそう。

404 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:40:14 ]
>>402
まったくだぬ

「WebサーバやHTTPはお着せとコピペで済ませて本題のRubyの学習をしよう」というのは
CGI関連に限ってはありえん

405 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:44:58 ]
>>404
翻訳しながら、lighttpdの本家のページ見てみます。
mongrelも検討してみます。

apacheの設定よりは、ずいぶん楽そうに見えたんですが。。



406 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:47:26 ]
中途半端にマイナーなサーバソフトウェアだと情報が全くないということはばしばしある
めっちゃメジャーなのを小規模で使うのが結局マシだったりすることは意外と多い

407 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 21:50:40 ]
自分用WebサーバはApacheを接続数とか1人用に絞って使うのが一番だという結論になった

408 名前:デフォルトの名無しさん [2009/09/27(日) 21:50:52 ]
>>396はどう動かないか書いていないから誰も助けようがないよ。
cgiがどう動かないのさ。スクリプトを貼ったりしろよ。

409 名前:デフォルトの名無しさん [2009/09/27(日) 22:02:07 ]
Apacheの方が情報多いのに。

410 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 22:03:40 ]
>>408
/var/wwwがドキュメントルートディレクトリで、ここに1.html
/usr/lib/cgi-binがcgiディレクトリに、1.cgi

1.htmlで、action=/usr/lib/cgi-bin/1.cgiと記述。

ブラウザで、localhost/1.htmlを表示。ボタンを押すと
404 not foundとなります。

lighttpd.confでのcgiディレクトリ指定が間違ってるんかなぁと・・




411 名前:デフォルトの名無しさん [2009/09/27(日) 22:13:48 ]
ログをまずは見ようぜ。
1.cgiに実行権限がついているかとか1.htmlの読み込み権限とかもチェックしような

412 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 22:15:53 ]
action=/usr/lib/cgi-bin/1.cgi っておかしいだろ… lighttpd とかにかかわらず
/usr/lib とか公開するとは考えにくいから action=/cgi-bin/1.cgi とかなんじゃないのか
この調子じゃ権限とかもだめそうだな

413 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 22:31:01 ]
>>396
RubyでCGIの勉強をするなら、lighttpdから始めるのはオススメしない
cgi.rbを使って、WEBrick上 or Apache上で動かしてみるとか
Sinatra使うとかしたほうがいい

414 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 22:40:09 ]
>>411
chmod 755はしてあります。

>>412
あ、cgi-binでいいんですね。フルパスにしちゃいました。
たしかに公開しないですもんね。

415 名前:デフォルトの名無しさん [2009/09/27(日) 22:52:59 ]
ファイルの所有者も確認しような
lighttpdを起動したユーザがownerだよな?



416 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 22:55:57 ]
式がnil, false, 0なら偽になるif文てないの?

417 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 23:06:09 ]
>>415
ファイルオーナーが、「root」ですね
lighttpdは、「www-data」が起動してます

sudo cpでファイルを/usr/lib/cgi-binにコピーすると
所有者が、ルートになってしまいます。

ちょっと、apacheや他のを調べてみます。みなさん、スレ違いに付き合って
くださって申し訳ありがとうございまsyた

418 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 23:18:45 ]
>>416
!x || x== 0

'' や [] や {} も偽にしたいならActiveSupport入れてblank? と present?
を使え。



419 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 23:23:03 ]
>>418
それだとnil, false, 0で真になるんだけど。偽がほしいんですが無理なんですか?

420 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 23:29:26 ]
x && x != 0
どんだけ応用力ないのかな…

421 名前:デフォルトの名無しさん mailto:sage [2009/09/27(日) 23:33:29 ]
いかにも落とし穴がありそうだと漏れのアンテナが反応しております

422 名前:418 mailto:sage [2009/09/27(日) 23:35:35 ]
すまん逆転させるのわすれてた。てへ。



423 名前:デフォルトの名無しさん [2009/09/27(日) 23:49:22 ]
>>417
ファイルの権限を777にして実行してみな。
それで実行できれば権限関係の設定がおかしかったってことだ
linuxの基礎を勉強私的な。

424 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 10:48:55 ]
Digest::MD5.digest の値を hexdigest に変換する計算式を教えてください。

convert(Digest::MD5.digest(value)) == Digest::MD5.hexdigest(value)

となるようなconvert()です。
あるいはヒントでもいいのでお願いします。


425 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 10:59:18 ]
そのへんはさすがにマニュアルにも書いてあるだろ
> 与えられた文字列に対するハッシュ値を、ASCIIコードを使って 16進数の列を示す文字列にエンコードして返す。

ということで
irb> p Digest::MD5.digest('12345')
"\202|\313\016\352\212plL4\241h\221\370N{"
irb> p Digest::MD5.hexdigest('12345')
"827ccb0eea8a706c4c34a16891f84e7b"
irb> p Digest::MD5.digest('12345').unpack("H*")[0]
"827ccb0eea8a706c4c34a16891f84e7b"




426 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 11:12:25 ]
>>425
ありがとうございます。
1バイトずつ16進数に変換するということなので、こう理解しました。

irb> Digest::MD5.hexdigest('foo')
=> "acbd18db4cc2f85cedef654fccc4a4d8"
irb> Digest::MD5.digest('foo')
=> "¥254¥275¥030¥333L¥302¥370¥¥¥355¥357eO¥314¥304¥244¥330"
irb> Digest::MD5.digest('foo').unpack('C*') # 1バイトずつに分解
=> [172, 189, 24, 219, 76, 194, 248, 92, 237, 239, 101, 79, 204, 196, 164, 216]
irb> Digest::MD5.digest('foo').unpack('C*').collect{|c| '%x' % c } # 16進数に変換
=> ["ac", "bd", "18", "db", "4c", "c2", "f8", "5c", "ed", "ef", "65", "4f", "cc", "c4", "a4", "d8"]
irb> Digest::MD5.digest('foo').unpack('C*').collect{|c| '%x' % c }.join == Digest::MD5.hexdigest('foo')
=> true

なるほどー。
どうもでした。


427 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 20:26:36 ]
Dir.foreach('hoge'){|filename|
filename.match(/(aaa)(bbb)/}
print $1
}

この状況で、$1や$2の情報を配列に入れるにはどうすればいいですか?
具体的にはこの後、$1の内容について一つ一つ処理をしていきたいんです。

428 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 20:39:11 ]
ary = []
Dir.foreach('hoge'){|filename|
filename.match(/(aaa)(bbb)/}
ary << [$1, $2] # もしくは ary << $1 << $2
}
p ary

429 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 20:47:13 ]
filename.scan(/(aaa)(bbb)/)

430 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 20:51:17 ]
>>428
「<<」ってこういうところで使うんですね。
勉強になりました。ありがとうございました!


431 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 00:50:52 ]
rubyを使ってgnuplotで簡単にグラフを書きたいんだけど、
何かお勧めありますか?

432 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 08:15:40 ]
h = YAML.load_file(path)
@username ||= h[:user]||h[:username]||h[:id]||h['user']||h['username']||h['id']
@password ||= h[:pass]||h[:password]||h['pass']||h['password']

イライラ

433 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 12:52:20 ]
エディタから編集中のRubyのスクリプトを独立したウィンドウ、ターミナルで起動したい
エラーがあったらエディタがそれを取り込んでタグジャンプしたい
teeやら別のモジュールをrequireするのはなるべく避けたい
もちろんユーザーはputs/getsを制約なく使いたい

といううまいやり方ってないですか?
ようするにエラーが出たらそれだけをログファイルに書き込んでrubyは終了コード1を返したいです
標準エラーをファイルに書き込むようなファイルをこっそり-rするのが現実的なんですかね

434 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 13:06:42 ]
>>433
Emacs使え

435 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 13:10:50 ]
標準の ruby-mode で M-x run-ruby で Emacs 内に irb 開いて
M-x ruby-load-file → Enter すれば irb でファイルが実行されるな

エラー行ジャンプはどうしようか



436 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 14:56:39 ]
>>432
>h = YAML.load_file(path)
>@username ||= h[:user]||h[:username]||h[:id]||h['user']||h['username']||h['id']
>@password ||= h[:pass]||h[:password]||h['pass']||h['password']

YAML使ってるなら、キーは文字列になるだろうから、Symbolは考えなくていいんじゃないかな。
YAMLでわざわざSymbolをキーに使うとは考えにくい。

@username ||= h['user'] || h['username'] || h['id']


437 名前:デフォルトの名無しさん [2009/09/29(火) 19:21:13 ]
1万PVのPHPで作られたサイトをRuby(ROR)かScala(Lift)どちらかを使って
バージョンアップしようと計画していますが、どちらがお勧めでしょうか?

TwitterもRubyからScalaへ書き換えたりしていますので...

438 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 19:28:02 ]
問題ないならPHPのままにしておく

439 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 19:33:59 ]
scalaって日本でも実績あるの?

440 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 20:17:30 ]
1万PVって何かを説明してるように見えて、実際はまったく説明してないよなあ。
開設以来10年で1万PVなのか、毎秒1万PVなのか。

441 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 20:21:10 ]
>>434-435
特定のエディタの話はしてないんだけど…

442 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 20:22:53 ]
一応、単位としては1日か1ヶ月かのどっちかだな
1日1万PVならコンテンツによってはまあ普通
1ヶ月1万PVなら内容によっては閉鎖したほうがエコ
どっちにしてもPHPで動いてるならPHPで増強したほうがきっと楽だ

443 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 20:24:12 ]
>>441
だからEmacs使えって
どうせ使いもしないで脳内で考えてるんだろ

444 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 20:28:12 ]
エディタの布教は余所でやれ。

445 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 20:32:33 ]
求めること全部できるんだから仕方あんめえ
エディタとして動作するものではEmacs以外ではgvimかPeggyくらいしか心当たりがない
どう動作するのが効率いいかの研究もEmacsの動作見れば丸分かりだ



446 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 20:35:49 ]
特定のエディタじゃなくて何を求めてるんだ
どんなエディタでも連携して動く万能スクリプトが欲しいのか

447 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 20:38:44 ]
>>446
たぶんそうだと思う
エディタ内でシェルを起動するのでなければ
emacsclient みたいなシステムがないと無理だと思うんだけどね

というか、できないからこそ数十年かけて Emacs が M-x compile を進化させてきたのではないんかのう

448 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 20:43:52 ]
うん、Emacsのとか使ってれば「Rubyは特に関係ない」ということにすぐ気づけたはずなのに
コンパイラ等が異常終了コードをシェルに返してエラー行を標準出力などに表示さえしてくれれば用は済む

449 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 20:45:04 ]
$stderr.reopen($0 + ".errorlog")


450 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 20:54:21 ]
>>442
単純にPVって言ったら普通に日単位だろ
何この馬鹿

451 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 23:38:21 ]
>>437
>1万PVのPHPで作られたサイトをRuby(ROR)かScala(Lift)どちらかを使って
>バージョンアップしようと計画していますが、どちらがお勧めでしょうか?

どういう理由でバージョンアップしようとしているのかがわからないので、答えられる人はいないでしょう。
パフォーマンスが理由ならRoRはイバラの道だし、開発効率が理由ならLiftはイバラの道。
どちらの道を選んでもイバラの道だと思うので、PHPのまま改善することをお勧めします。
あるいはPythonを使ってGoogleAppEngineにするとか。これもイバラだな。


452 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 23:47:46 ]
railsは慣れてしまえば今までの開発が馬鹿に思えるぐらい楽になる

453 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 23:49:40 ]
日に1万PV程度なら、サーバ丸1台あればRoRでも余裕だよ。
下手するとキャッシュなしでもいけるくらい。

454 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 00:35:22 ]
そりゃ1日8万秒以上あるんだから言われなくても分かる

455 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 06:13:47 ]
結局ピーク性能が足りるかどうかだよな。



456 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 08:24:47 ]
そして既存のPHP+サーバではおそらく足りてるわけであって、
現時点で言えることは「じゃあPHPでやっとけ」にしかならんという

457 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 10:56:30 ]
でも結局ピーク性能が足りるかどうかだよ。

458 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 11:42:46 ]
おいちょっと待てよ、ピーク性能が足りてるかどうかが問題だろ

459 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 11:46:40 ]
WebProg板に帰れ

460 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 12:24:24 ]
1ヵ月1万PVwww

461 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 12:57:50 ]
いや、ここはピーク性能が足りるかどうかが肝だろ。

462 名前:デフォルトの名無しさん [2009/09/30(水) 18:46:43 ]
全角の数字を半角にしようと下記のフィルタつくったんだけど
変換されないで、元の値が戻ってくる。
何が間違ってるか教えてください。
使う文字コードはUTF-8です。

#全角数字を半角数字に変換するフィルタ
def zen_to_han_int(str)
    outstr = str.gsub(/0/,"0")
    outstr.gsub!(/1/,"1")
    outstr.gsub!(/2/,"2")
    outstr.gsub!(/3/,"3")
    outstr.gsub!(/4/,"4")
    outstr.gsub!(/5/,"5")
    outstr.gsub!(/6/,"6")
    outstr.gsub!(/7/,"7")
    outstr.gsub!(/8/,"8")
    outstr.gsub!(/9/,"9")
    return outstr
end


463 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 18:52:32 ]
>>462
str とスクリプトファイルの文字コードが合ってない
ごく一般的には str とスクリプトの正規表現リテラルの文字コードは同一にする

…あーつまりスクリプトのファイルが UTF-8 じゃないか str が UTF-8 じゃないか
あるいは ruby -Ku のような実行指定をしてないかどれか

464 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 18:53:19 ]
今はじめて気がついたけどメイリオって数字が全角と半角全く同じに見える。きめぇw

465 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 18:54:43 ]
def zen_to_han_int(str)
p "yes!" if /0/ =~ str
end

これで 0 を含む文字列渡したときに "yes!" と表示されなければ>>463



466 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 20:10:23 ]
むしろ、メイリオになってから、半角全角混同さんが気にならなくなりました ^p^

467 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 20:12:28 ]
やっとWindowsに標準添付された真の意味での表示用のフォントだからな
表示されるぶんには全角半角の区別がある意味は何もないわけで

つまり区別が必要な人は使ったら駄目よ






[ 続きを読む ] / [ 携帯版 ]

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

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