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


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

Rubyについて Part 30



1 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 11:47:53 ]
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
www.ruby-lang.org/ja/

= 前スレ
Rubyについて Part 29
pc11.2ch.net/test/read.cgi/tech/1193668038/

過去スレ・関連スレは >>2-


357 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:14:45 ]
>>355
初心者スレで見たんだが

require 'net/http'
uri = URI.parse('www.2ch.net/')
response = Net::HTTP.start(uri.host, uri.port){|http|
http.head(uri.path)
}
p response.code_type == Net::HTTPOK
p response.is_a?(Net::HTTPOK)

これ両方ともtrueなんだよな
Net::HTTPOK使うのなんて初めて見たぞ

358 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:19:22 ]
def code_type
self.class
end
なんだな。


359 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:27:44 ]
response.code == '200' という半マジックナンバーよりは見かけ健全だな
初心者スレでは response.code == 200 という比較をして動かないってハマってたが

360 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:33:43 ]
>357
あと、typoをパーザーが見つけてくれるから、response.code == '200'より便利だよ。

361 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 12:34:05 ]
>>357-358
それは、rdocにあるように、caseでチェックするため。

case response
when Net::HTTPSuccess     then response
when Net::HTTPRedirection then fetch(response['location'], limit - 1)
else
  response.error!
end


362 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 15:07:30 ]
>>356
どんなドキュメントが欲しい?
リファレンスマニュアルとは別のものかな。

363 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 15:53:27 ]
>>362
356じゃないが、チュートリアルというか、こういう時はこういう組み合わせでやれ、みたいな感じの物はほしいな。
るびまにproxy作る例があったけど、あんな感じで。

364 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 15:59:18 ]
WEBrickでプロキシを作る例を読むのはもう飽きたお…

365 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 20:47:39 ]
レシピブックじゃだめかね。



366 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 23:59:26 ]
>>362
Webrickのクラスでセッション管理するドキュメント

367 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:29:45 ]
>>366
ttp://www.ruby-lang.org/ja/man/html/webrick.html

368 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:34:36 ]
Ramazeってよさそうだけど、あれ試してみた人いる?

369 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:52:18 ]
>>368
最近できたフレームワークですね。

最小限の構成ながら、MVCで、
必須だろうセッション管理やキャッシュ機構もデフォでついてたり、
それでいて、HTTPDやテンプレートやORマッパがすげ替え可能だったり、
よさげではあるな・・・。

てか、OpenID対応とか時代を反映してますな。

Rails はでかいと思う人にはかなりよさげ。
ただ、Railsの次点は Merbだろうし、
使っている人はどれだけいるんだろうか

370 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 02:12:47 ]
お前ら小さいのがいいならSinatraも忘れないでください。

Sinatra : Classy web-development dressed in a DSL
sinatra.rubyforge.org/

セッション管理がねえ?そんなのカンk(ry

371 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 03:07:56 ]
だからセッション管理が無いなら標準添付のWebrickでいいんだってば

372 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 03:12:04 ]
cgi.rb 再構成案

cat > cgi.rb
require 'webrick/cgi'

373 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 03:21:39 ]
もう1.9.0を出しちゃった以上、インタフェイスレベルでの変更はやめたほうがいいんじゃないの。
デイブトーマスも「開発者は1.9でライブラリ書けよ」って言ってるぐらいだし。それよりはMLで
やってるみたいに実装を高速なものに変更するとかがいい。あるいはCgiAltをcgi2って名前で
取り込むとかね。

でもね、それよりはドキュメントをですね、もうちょっと埋め込むとかなんとかして
irbのhelpがpythonのhelp()並に情報がでるようにしてほしい。Pixaxe本の記述って
ソースコードにコピーしちゃだめなのかな。

374 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 06:23:10 ]
1.9.0 はただの snapshot だし。

375 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 07:18:44 ]
俺は StringList が欲しかったが
StringIO がそれなりに望みの動作に近かったので使ってる

俺みたいな奴には to_s が自然なのかもな
IO として使いたい奴には不自然かも知れん



376 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 08:32:16 ]
>>367
doc.loveruby.net/refm/api/view/library/webrick

377 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 10:39:12 ]
Rubyの公式MLでいい大人が2ちゃんねるの話題だすなよなー
ここは便所の落書きですぞ?暗黙的に提案すればいいのに。

378 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:51:14 ]
最近の「2ch観」は各人でかなり異なるから、一概には言えないよ。
皆、自分のよく読むもの・よく書くことを中心に2chを捉えてるわけだけど、最近はその内容に凄く個人差があるし、
ブログの影響もあって、今や2ch以外も匿名・暴言の山で、2chだけがどうのって感じではなくなってるしね。

別の板も含めた俺の経験では、「2chに関係することを2chの外で口にすること」について
問答無用で「何てイタイんだ!」みたいに反応する奴は、大抵同じIDで草生やしまくってたりする。
あと、基本的に中傷とかの濃度の濃い場所の住人ほど、そういう傾向がある。
たぶんこれは「鏡にどんな人間が映ってますか?」的な話題なんだろう。

379 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:55:33 ]
>>377-378
気にしなくていいですよ
俺みたいな世代は、2chもネットの掲示板の一つだから
便所の落書きでも、情報源には違いないものです

380 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 13:56:49 ]
ああ、あと、>>378の後半は余計だと思うがwその辺が2chたる所以かw

381 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 22:36:07 ]
そういやもう2chが特別な場所である感覚はないね。

382 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:36:27 ]
2chが特別だったのはログとってなかった頃まで

383 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:39:49 ]
お前ら何年いるんだ。

384 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:42:37 ]
7年くらいかな?

385 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 02:28:44 ]
4・5年くらいの人が今は一番多いんじゃね



386 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 02:58:54 ]
>>367
WEBRick でのセッション管理はどこに書いてあるんだ?

387 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:27:35 ]
>>386
「自分で書き加えろ」という遠回しなメッセージではないだろうか

388 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:39:57 ]
そんなセッションな〜

という駄洒落を思いついた

389 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:40:39 ]
shingichuu

390 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 12:16:16 ]
【判決】
Segmentation fault

391 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 13:08:43 ]
その判決はなかったわ

392 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:10:18 ]
マルチプラットフォームで輝き始める“Ruby”
www.itmedia.co.jp/enterprise/articles/0802/06/news007.html

393 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:44:23 ]
輝き始めるとは失礼だな。
今まで輝いてなかったみたいじゃないか。

394 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 17:53:49 ]
輝くどころか、各方言で骨肉の争いが

395 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:36:42 ]
輝き始めていると表現できるのは確かだが、
同じような紅い輝きがあちこちにあって統一性が感じられないのはなんでだぜ



396 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:43:32 ]
燃え尽きる直前の煌き

397 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:43:14 ]
def [(key)]=(value); end
みたいに書きたい!
def []=(value, *keys); end
でもいいけど

398 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:01:40 ]
1.9ではrubyが無いとbuildできないのか?
baserubyを指定しろと怒られる。

399 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:26:30 ]
>398
insns.defとかの処理でBASERUBYを使ってるね。
他のマシンで処理しておいて、それを持ってくるって方法もあるけど、
1.8も入れておいた方が無難だと思う。
なお、tarballだと処理したものが入れてあるんじゃないかな。

400 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 03:17:46 ]
>>387
>「自分で書き加えろ」という遠回しなメッセージではないだろうか
WEBrickにsession機能がないのに、ドキュメント書けるわけないだろアホ

401 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 03:33:06 ]
そりゃ>>376が何も言わずにリンク先しめすもんだから、勘違いするじゃない
>>400みたいに言ってくれないと

402 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 09:43:14 ]
いやWEBrick自体にセッション管理機能がないのは周知の上で、
自前でかっこよくセッション機能を組み入れる解説が欲しいのでは
実際問題としてWEBrickの目ぼしい弱点ってそこだけだし

403 名前:デフォルトの名無しさん [2008/02/07(木) 09:52:18 ]
WEBrickのプロクシサーバって、アクセス先のデータを一回全部読み込んでるみたいだが、
ちょっとずつ読み込みながら返してくるようにしてほしい。

404 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:03:16 ]
それはあまりRubyっぽい動作ではないな
RubyのIO系はメモリに一気に読み込んでから配列にしたりして1単位ずつ返したりするのが主流

Proxyっぽい動作ではないけどな

405 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:28:21 ]
>>403
ああ、完全に同意。あの動作はクソすぎる。

>>404
メモリに一気に読み込むのを主流だとか馬鹿なことをいうのはやめてくれ。
IO#eachという一番わかりやすいメソッドを見てみろよ。



406 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:35:30 ]
Net::HTTPResponse#read_body{|str| ...} は全部読み込んでから区切ってた気がする

407 名前:デフォルトの名無しさん [2008/02/07(木) 23:32:50 ]
煽りじゃなくて、Scheme(or Lisp)に有って、Rubyに無い機能ってある?
あるとしたら、その機能って必要?他の機能で代用可能? いろいろ細かいことも教えて。

(初心者スレから誘導されました。)

408 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:38:23 ]
>>407
マクロ

409 名前:デフォルトの名無しさん [2008/02/07(木) 23:42:40 ]
マクロはRubyの他の機能で代用可能ではないの?
あった方が便利?

410 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:46:19 ]
>>409
何したいのか判らんけど代用可能かどうかの判断つかないんなら聞いても意味無くない?

411 名前:デフォルトの名無しさん [2008/02/07(木) 23:47:38 ]
代用可能ではないと判断した。けど、詳しい人なら代用方法を知っているかもしれない。だから聞いている。

412 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:22:18 ]
>>402
CGI::Session の移植ならあね。
moonrock.jp/~don/ruby/#ID-WEBRICK

413 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:23:15 ]
代用というからには用途による。
あらゆる用途で同じように使えるなら、それはその機能そのものだ。

414 名前:デフォルトの名無しさん [2008/02/08(金) 00:25:30 ]
こういう用途には代用になる、と言えばいい。
すべてを網羅しなくても思いつくだけ述べてくれて構わない。

415 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:30:04 ]
Schemeのマクロは文法拡張ができる。
Rubyでは文法拡張する方法はない。

でいいの?



416 名前:デフォルトの名無しさん [2008/02/08(金) 00:38:31 ]
>>415
それは、例えば新しいif文を定義して、標準のif文と同じように使うことができるようになる、ということ?
それが、Schemeでは出来て、Rubyでは出来ないと。正しい?

417 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:40:22 ]
eval系列の命令でマクロっぽいことはできる。

attr_reader, attr_accessorもそれ

418 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:43:27 ]
>>416
可能だが、どこまで自然になればOKなのかは使う人によるからな・・・

Rubyでも DSLは作られるが、
例えば、brainfu*k を再現するのは無理だろう

419 名前:デフォルトの名無しさん [2008/02/08(金) 00:50:38 ]
lispってlispのソース上でbrainfu*kを再現できるの?()は出てこないの?
インタプリタを作るならlispでもRubyでもできるよね。それとは違うの?

420 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:52:42 ]
>>416
普通の関数なら関数を呼び出す時点で引数の評価は完了しているが、
マクロなら引数を評価するタイミングをマクロ側で制御できる。

ruby でオレオレif を作るなら、if/else の本体を Proc で包んで渡すしかない。
じゃないと オレオレif 関数を読んだ時点で if/else の本体が実行さてしまうから。
それか Proc のシンタックスシュガーであるブロックをうまく使ってごまかすか。


このサスペンダーの人の記事も参考に。
blog.livedoor.jp/dankogai/archives/50996734.html

421 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:52:43 ]
>>418
my_if(proc { cond }, proc { then_clause }, proc { else_clause })
は「文法拡張した」とはさすがに言えないだろう

422 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 03:48:53 ]
>>421
いや、だから人によるってば

>>419
インタプリンタつくって、文字列を実行してという話ではなくね。

お得意のマクロとやらでできるんじゃないのかな? > Lisp
DSLをよく作るとか聞いた
いや、おれはLisp詳しくないのだが・・・

ちなみに、Io-language だとかなりそのものに近ずけることができる。マクロなしに

423 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 09:08:56 ]
>>422
人による、って程度じゃないだろ。
>>421が受け入れられるなら、cond、then_clause、else_clauseを文字列にして
パーサ動かしてもいいってことか。

424 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 12:41:48 ]
>>422
>標準のif文と同じように使うことができる
が達成されてないじゃん。
これは主観ではなく客観で定義できる達成基準だぞ。

425 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:43:53 ]
揉めるなよ。
Matz的にはLispのマクロは「あまりに強力すぎる」ことに難があって、
Rubyをあえてそこまで行かせずにいるんだから。



426 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:46:10 ]
Rubyでも構文木いじればけっこう何でもできるんじゃないかな
PycoのRuby版もできるかもしれない。ParseTreeはどうよ

427 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:56:50 ]
ところでバイトコードからデコンパイルってできんのかな。

428 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:23:10 ]
Rubyの構文木ってすげー内部的でなかった?
生のポインタに触らずにいじれそう?

429 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:58:18 ]
Ruby もそろそろ smalltalk みたいになんでもオブジェクトして欲しい。

430 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:38:16 ]
>>424はともかく

>>423
静的言語ばかり使ってきた俺には、lambdaなどでif文作っても、
文法が拡張されているように見えるんだ。
たぶん経験の違いだと思う。

431 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:11:20 ]
Ruby個人的には大好き・・・

432 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:41:11 ]
Rubyまで「個人的に」とか断り付けなきゃいけないご時世か
普及したもんだなあ

433 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:44:40 ]
言ってることはよくわからんがとにかく凄い自信だ

434 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:14:52 ]
Object.instance_methods が、1.8 だと String の配列で、1.9 からは Symbol の配列になるそうですが、
今まで MyClass.instance_methods.include?('methodname') としていたのを
MyClass.instance_methods.include?(:methodname) としなければなりません。
1.8 と 1.9 の両方で使えるような書き方はありませんか。
arr = MyClass.instance_methods
arr.include?('methodname') || arr.include?(:methodname)
とか格好悪すぎる

435 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:21:03 ]
.map{|m|m.to_s}



436 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:23:05 ]
|m| って何の略?いや、気になったので

437 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:32:09 ]
method names か何かだろ
m 自体は method の m だと思う

「文字列かシンボルのどっち来るかわからん場合は to_s しとけ」という >>435 のアプローチは妥当

438 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:50:47 ]
>>434
> 今まで MyClass.instance_methods.include?('methodname') としていたのを
その書き方はそもそも効率が悪い。

MyClass.method_defined?(:methodname)


439 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:42:14 ]
>>425
「Scheme(or Lisp)に有って、Rubyに無い機能」であることは事実。
それがいいとか悪いとか言うつもりはない。

>>426
標準で構文木いじる方法がないってこと。
ParseTree は既存の文法でパースしたプログラムをいじることは
できても、既存の文法自体は拡張できない。

440 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:35:56 ]
javascriptのfunctionって最高じゃない?シンプルで。

rubyのproc、Proc.new、lambdaって何なの?同じようなのいくつも作って。馬鹿なの?

441 名前: [2008/02/09(土) 00:37:38 ]
pythonとRuby、そんなに変らん

442 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:01:24 ]
ECMAScript系はいいもんだね
サーバサイド実装も出て来てるし、今後RubyやPythonと比較されるユースケースが増えるかもなぁ。

現状では、利用形態がきっちり棲み分けてるから現実的に比べにくいかな。

443 名前:デフォルトの名無しさん [2008/02/09(土) 01:18:09 ]
functionは長いからfunかfnか\がいい。

444 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:25:21 ]
defで無名関数が定義できればいいのに。

445 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:27:43 ]
lengthかlength()かで迷うのはもうごめんだお



446 名前:デフォルトの名無しさん [2008/02/09(土) 01:30:37 ]
proc、Proc.new、lambdaを廃止して、全部defにしたら何か問題ある?

447 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:32:19 ]
メソッドとクロージャは違う

448 名前:デフォルトの名無しさん [2008/02/09(土) 01:33:40 ]
>>447
何が違う?具体的に。

449 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:35:02 ]
def: メソッド
proc、Proc.new、lambda:クローじゃ

でいいのかな?

450 名前:デフォルトの名無しさん [2008/02/09(土) 01:36:23 ]
>>449
だから、defでクロージャーも定義できるようにして何か問題があるかと聞いている。

現状がどうかなんて聞いていない。

451 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:37:43 ]
>>448
ブロックの外のローカル変数が見えるかどうか
あと無名関数なんて全然defineしてないのにdefって名前はさすがにどうかと

452 名前:デフォルトの名無しさん [2008/02/09(土) 01:40:06 ]
>>451
じゃあ、proc、Proc.new、lambda、defをobsoleteにして、全部funcにしたら何か問題ある?

453 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:42:17 ]
>>451
そんなこと言ったらlambdaなんて何の意味もない名前だろ。

454 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:45:08 ]
そういえば
proc,lambdaとProc.newじゃreturn等の挙動が変わるんだったな

455 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:46:30 ]
似て非なるものがゴチャゴチャあると紛らわしいから、functionにまとめてほしいな。



456 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:47:23 ]
Ruby1.9って反面教師であるはずのPerlに怪奇しつつあるよな
もっとシンプルで速度10倍くらい速くする方向に進歩して欲しい

457 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 01:54:05 ]
速度の話ではシンプルさよかeval捨てるか否かが優先されるかと。

そういや旧macromediaもeval捨てた矢先にActionScriptの速度上げたな






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

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

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