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


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

Ruby 初心者スレッド Part 40



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

★注意★ Ruby 1.9.2 は初心者には若干時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
 文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
 迷う点の少ない1.8.7に習熟→おもむろに1.9.2の変更点のみ重点学習、とすればスムーズに移行できるでしょう。

関連スレや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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

2 名前:レシピブックを第3版に mailto:sage [2010/12/11(土) 15:47:23 ]
【よくあるしつもん】
Q:
いちからRubyを始める初心者向けのRuby入門書は何がありますか?

A:
プログラム作成自体の初心者なら
 ・「たのしいRuby 第3版 Rubyではじめる気軽なプログラミング」
  www.amazon.co.jp/gp/product/4797357401/
文法は理解済み(orリファレンスで乗り切る既言語習得者)の場合のRuby様式を知る必携2冊目
 ・「初めてのRuby」
  www.amazon.co.jp/dp/4873113679/

以下は外れが少ないとされている本です。必ず立ち読みした上で自分の目的とレベルに応じて購入してください。
 ・「Rubyレシピブック 第3版 303の技」(初心者向け、1.9対応)
  www.amazon.co.jp/dp/4797359986/
 ・「プログラミングRuby 第2版 言語編」(初心者向け参考書)
  www.amazon.co.jp/dp/4274066428/
 ・「Ruby Way 第2版」(脱初心者向け)
  www.amazon.co.jp/dp/4798115339/
 ・ 「Rubyクックブック ―エキスパートのための応用レシピ集」(脱初心者向け)
  www.amazon.co.jp/dp/4873113245/

以下の本は言語作者が書いた最新本ですがとりあえず初学者向けではありません。
 ・「プログラミング言語 Ruby」(言語として深く知りたい人向け)
  www.amazon.co.jp/dp/4873113946/

3 名前:非更新 mailto:sage [2010/12/11(土) 15:48:12 ]
Ruby 公式・非公式便利サイト2009

・Ruby Home Page 【公式、お役立ち度が微妙】
 www.ruby-lang.org/ja/
・Rubyリファレンスマニュアル 【検索機能休止中、Googleなどの併用を】
 www.ruby-lang.org/ja/man/
 www.ruby-doc.org/ 【詳しい英語版】
・HTMLヘルプ版リファレンスマニュアル配布さん 【Windowsで便利、検索も無論可能】
 elbereth-hp.hp.infoseek.co.jp/ruby.html
・Programming Ruby - The Pragmatic Programmer's Guide 【好評書籍の初版がネットで、ただし英語】
 www.ruby-doc.org/docs/ProgrammingRuby/
・Rubyist Magazine - るびま 【ライブラリ紹介などの読み物、過去のコードレビューは一読の価値あり】
 jp.rubyist.net/magazine/

・逆引きRuby 【やりたいことから探すWiki、最近元気ないので編集者募集】
 www.namaraii.com/rubytips/
・はてなキーワード > Ruby 【うっかりどっさりまとまったリンク集、説明なし】
 d.hatena.ne.jp/keyword/Ruby

・RubyForge 【○○をやりたい管理されたライブラリを探すならここ、英語】
 www.rubyforge.org/
・GitHub 【○○をやりたいコードをとにかく探すならここ、英語】
 github.com/

・日本Rubyの会 【最近はオフライン勉強会の寄り合い場と化しているので近くで勉強会があれば】
 jp.rubyist.net/

4 名前:最新スレに更新 mailto:sage [2010/12/11(土) 15:49:12 ]
●関連スレ
【RoR】Rubyについて Part 41【CPAN vs RubyGems】
hibari.2ch.net/test/read.cgi/tech/1281473294/
●Railsスレ
【RoR】Ruby on Rails Part11
hibari.2ch.net/test/read.cgi/php/1292032736/
●アンチスレ
Rubyについて(アンチ専用) Part004
pc12.2ch.net/test/read.cgi/tech/1249737531/
●Windows用スレ
【ActiveScript】RubyをWindowsで使うスレ【GUI】
pc12.2ch.net/test/read.cgi/tech/1155031689/
●GUIの使えなさを堪能するスレ
Ruby で GUI するスレ
pc12.2ch.net/test/read.cgi/tech/1269609576/
●ぶん投げスレ
Rubyの宿題教えてください。2限目
pc12.2ch.net/test/read.cgi/tech/1200175247/

●前スレ
Ruby 初心者スレッド Part 39
hibari.2ch.net/test/read.cgi/tech/1287623173/
Ruby 初心者スレッド Part 38
hibari.2ch.net/test/read.cgi/tech/1282781922/
Ruby 初心者スレッド Part 37
hibari.2ch.net/test/read.cgi/tech/1274121477/

5 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 15:50:30 ]
ポニーテール 乙

6 名前:まとめて短く、ASRのURL更新 mailto:sage [2010/12/11(土) 15:51:15 ]
【バージョンに関するよくある流れ】

Ruby 1.8.5(非安定板)→ Ruby 1.8.6(旧安定版、長期政権)→ Ruby 1.8.7(超お勧め)
Ruby 1.9.0(旧開発版)→ Ruby 1.9.1(旧1.9系列安定版)→ Ruby 1.9.2(1.9系最新安定版)

実のところ、よくできた教科書またはトラブル時に聞き倒せる師匠がいるなら 1.9.2 から入っても特に問題はない
1.9.2ユーザーの場合は「1.9.2使ってます」と断った上で質問してほしい由

【Windows版に関するよくある疑問】

初心者の人はとりあえず ActiveScriptRuby の 1.8.7 使っておけば間違いない(mswin32)
ttp://www.artonx.org/data/asr/
の題字のでかい 「ActiveScriptRuby 1.8.7(pなんとか) with-winsock2 tcl-stub」

マニュアルはWebで見ることもできるが手元にあると便利、1.8.7 の HTML ヘルプ版が
ttp://www.ruby-lang.org/ja/documentation/
の「Rubyリファレンスマニュアル刷新計画 chm版 1.8.7用」

夢のお告げ等、何かの間違いで Ruby の知識がない初心者時代から 1.9.2 を使いたいマゾい人は
ttp://www.artonx.org/data/asr/ の「Ruby-1.9.2-p数字 Microsoft Installter Package」

「Windows版Ruby」として紹介されることのある以下の「RubyInstaller」は
これ特有のトラブルの修復知識が必要なので今のところは初心者には勧めない(mingw32)
ttp://rubyinstaller.org/
このトラブルを回避できるようになったら初級者脱出かも

7 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 15:52:23 ]
てんぷれおわり

8 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 18:54:45 ]
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

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

                  京都大学霊長類研究所

9 名前:デフォルトの名無しさん [2010/12/11(土) 20:45:54 ]
Chris pine氏のサイトを一通り読んでプログラムを書いた程度のものです。
rubyはweb開発に使われていると聞きます。
出力や入力、関数などについては分かったのですが
どうやったらrubyとweb開発を繋げることができるのか分かりません。
rubyとweb開発を繋げて考えるには何をするべきなのですか?

10 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 20:46:34 ]
Webサーバーからつくれます



11 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 20:55:14 ]
9じゃないけどWebで使えるのってJavaScriptだよね。
どうやってあそこにRubyで書くの?


12 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 20:56:58 ]
書けません

13 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 20:58:14 ]
>>9
まずは「ruby web開発」でググるところから始めてみては?
いや煽りじゃなく真面目に

14 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 21:01:35 ]
>>11
JavaScriptはクライアントで動くものです。
RubyでWebアプリケーション開発、という場合にRubyを使うのはサーバ側です。

15 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 21:01:44 ]
Ruby ビギナーのための CGI 入門 【第 1 回】 初めての CGI プログラム
jp.rubyist.net/magazine/?0011-CGIProgrammingForRubyBeginners

16 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 21:08:03 ]
RubyのWebアプリでこんな事をしたいんです
ttp://www.nicovideo.jp/watch/sm5630363


17 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 21:16:19 ]
それはWebアプリというよりもRIAだから。
そういうことやるための環境が整備されてない言語では無理。
Java FXかAdobe FlexかMicrosoft Silverlight(かMono Moonlight)でやんなさい。

18 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 21:16:53 ]
>>8
Webブラウザ === Webサーバ (Apacheなど) === Ruby

1. Web ブラウザが Web サーバにドキュメントを要求する。
2. Web サーバはリクエストされたドキュメントを Web ブラウザに返す。
このとき返すドキュメントは既に用意されていた静的なものでもいいし
Ruby にその場で作らせた動的なものでもいい。

CGI の場合は Web サーバと Ruby は別個のプロセスであり
標準入出力と環境変数で情報をやりとりする。
それだと遅いので Web サーバに Ruby を組み込むこともある。

で、ここまで書いてから Wikipedia の CGI の記事がよさげってことに気づいたってオチ
ja.wikipedia.org/wiki/Common_Gateway_Interface

19 名前:18 mailto:sage [2010/12/11(土) 21:18:08 ]
アイちゃんにレスしてた…漏れはもうだめだ

20 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 00:09:38 ]
ちょいと質問

gem入れるときにコンパイル必要なものがこける
linuxだとそういうのを入れるためのコンパイル環境は簡単に入れられる。
(ubuntuならapt-get install buildeessentialとかそういうの)

Windowsだと、mingw32版ならdevkitいれればいいよね?
mswin32版の場合どうすんの?

コンパイル済みのものが別途用意されてる場合もあるけど、
なら最初からgemにプラットフォーム指定していれとけやっていつも思うんだけど




21 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 00:12:30 ]
apt-get install build-essential だった

22 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 00:20:32 ]
>>16
それってWebアプリなのか・・・

Adobe AIRみたいなものだよな?
JavaFX相当のことはJRubyじゃできないんだっけ?

どうしてもRubyでやりたいというのは「Rubyに慣れてきて何でもRubyでやりたい」という意味以外ない気がするんだが、
AIRのようなRIAなフレームワークならTitanium Desktopというのがある
まだ使われているのは殆ど見ないが



23 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 00:24:14 ]
gem パッケージの提供者が現在使用している Ruby に対応したバイナリを提供していない場合、
自分のマシンのコンパイラが走るようになってる

gem パッケージ作者がバイナリパッケージを提供していなくて、
自分の使用している Ruby が mswin で、
自分のマシンに VC 6 がインストールされてない場合、その gem パッケージは使用できないだろうね

それでもどーしても使いたい場合は
コンパイル環境を用意した上で、それでコンパイルされた Ruby をインストールしてないと駄目
実質的に mingw ruby + devkit (または mingw コンパイラ一式別途導入)しか選択肢がないけど…

コンパイラがインストールされてない安全に倒した Linux サーバとかでも同じ問題が実は起こる
そういう場合、Linux のソフトウェアパッケージで gem パッケージ相当が用意されてたりもする

24 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 00:36:58 ]
>>23
うむ、すごいそれっぽい

25 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 00:59:39 ]
バイナリ互換性はある
migw32 向けに適切にコンパイルされた拡張バイナリは、mswin32 でも使用できる…ということになっている
VC6 がないなら MinGW というか GCC でコンパイルしてしまえばいい

rubygem は作者が登録しているバイナリパッケージしか探さないので
作者がmswin32名義のバイナリパッケージ(中身はmingw32製)を用意し忘れてた場合
gem install hogehoge という書き方ではインストールできないことがある

mswin32 名義のバイナリパッケージ入れてーとgem作者にメールでもするのが一番早い

26 名前:20 mailto:sage [2010/12/12(日) 01:12:35 ]
Ruby本スレに丁度同じ話題が出ていたのですね
hibari.2ch.net/test/read.cgi/tech/1281473294/693-695

693 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/11(土) 12:25:29
windows用のバイナリがいろいろ出てるけど
それぞれの特徴とか利点欠点教えて
Ruby Install Guide::Microsoft Windows版のビルト環境による違い
に書いてあること以外で

694 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/11(土) 14:46:28
>>693
mswin … ttp://www.artonx.org/data/asr/
      VC6 でコンパイルされたもの、ActiveScriptRuby、メイドインヒゲのオヤジ、配布パッケージは豪華で便利
      昔から「Windows版」として扱われてたので、どんな gem でも tips でも Windows 環境だと思ってくれる(mswin32)
      VC6 が基本入手不可なので緩やかに終了して mingw にバトンタッチされる予定だったのだが延命中、初心者向け

mingw … ttp://rubyinstaller.org/
      MinGW でコンパイルされたもの、RubyInstaller、世界の選択、配布パッケージは Ruby 本体のみ
      数年前から「Windows版」として認知され始めたもの、名前は mingw や mingw32 を返す
      RUBY_PLATFORM =~ /mswin/ という古い「Windows環境チェック」記述では false になるという初心者トラップ発生器
      devkit で gem ソースを自前コンパイルしたり Windows チェック処理を自力書き換えしたりする必要がまだ時々ある
      mswin よりはファイル IO とかが普通速度らしいので上記のライブラリ使用時の障害を自力克服できる中級者向け

cygwin … cygwin 環境でコンパイルされたもの、cygwin 常用者向けのマニアック Ruby
      なんでも自分でできる人向けの選択、外野がどうこう言うことではないのでおまえらも文句言うな的な似非上級者向け

27 名前:20 mailto:sage [2010/12/12(日) 01:15:38 ]
>>23
さすがにVC6はww

Ubuntuでもインストール直後はコンパイルできませんね

>>25
バイナリ互換性はあるんですね

mswin32名義でも中身はmingw32なんですかw

28 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 11:17:35 ]
hoge-1.2.3-x86-mingw32.gem みたいなファイルを直接拾ってきて gem install すると mswin32 でも入るはず
gem install --source なんとか でなんとかの部分に mingw32 のを書いても代わりに持ってきてくれるはず

29 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 15:11:17 ]
rails2u.com/projects/refe.vim/ が落ちているのか、もう配布していないのか??

30 名前:デフォルトの名無しさん [2010/12/12(日) 15:28:25 ]
変数名を取得する方法はありますか?
x=232
def f(func)
...
end
p f(x)
=> "x"



31 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 15:54:34 ]
何がしたいんだかよくわからないけど。
その f って、たとえば f(1) のように呼び出したら何を返すの?

32 名前:デフォルトの名無しさん [2010/12/12(日) 15:57:25 ]
funcって書いたのがまぎらわしいですね。

foo=232
def f(bar)
...
end
p f(foo)
=> "foo"

f(1)は未定義ということで。

33 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 16:00:25 ]
puts (1..4).to_s って、"1..4"と出力されるけど、これって意味あるの?
"1234"と返ってきたほうがまだ使い道ありそうだけど、どういう使い方が想定されてます?

34 名前:デフォルトの名無しさん [2010/12/12(日) 16:02:08 ]
てか、たしかに関数として書くとわけわかんないですね。
barには232が渡されるだけだから変数名なんて知らないか・・・。

単に
foo=232
という定義済みの変数があったとき、
後で
"foo"
という文字列を取り出したいだけなんですが・・・。

35 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 16:07:51 ]
local_variables や global_variables などいかがでしょう

36 名前:デフォルトの名無しさん [2010/12/12(日) 16:20:11 ]
>>35
それいただきました。
しかしわりと面倒ですね・・・。

37 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 16:24:00 ]
>>33
1..4がRangeだし、俺はto_sで1..4でいいんじゃね?って思うし開発者の意図と一致したけど
何で"1234"がいいと思った?

"1234"が得たいだけなら [*1..4].to_s ででるけど、結果的だしな




38 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 16:36:50 ]
>>33-37
それを言うなら、何で[1,2,3,4].to_sは”1234”になるんだよ、"1,2,3,4"じゃないんだよって話にもなる

39 名前:デフォルトの名無しさん [2010/12/12(日) 18:13:08 ]
irb(main):001:0> [*1..4].to_s
=> "[1, 2, 3, 4]"
(´・ω・`)

40 名前:33 mailto:sage [2010/12/12(日) 18:16:18 ]
いや、得たいわけじゃなく、なんでそうなってるのか疑問だったので。どんな使い方があるのかな?と
得たいだけなら、(1..4).to_a.to_sする



41 名前:デフォルトの名無しさん [2010/12/12(日) 18:23:00 ]
>>33
(1..1_000_000_000_000_000_000).to_s とかしてぎっしり詰まったのが返って
きたら泣く。
まぁそれだけならArrayとかも巨大だとそうなるんだけどさ、Rangeは両端
しか保持してないんだし、両端だけが文字列に表れるのは妥当だと思うよ。


42 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 18:24:17 ]
>>40
eval したら to_s のレシーバが復元できるからじゃまいか
Ruby の場合他のクラスもそうなのかは知らない

43 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 19:05:05 ]
>>42
それは String#dump の「表示されても人間が読めないコントロールコードなどを数値で表示する」機能だな

まあ文字列オブジェクトではないものを display するとはそもそもなんぞやという話はあって、
Ruby では「文字列形式への変換」を to_s が、「人間が読める形式への変換」を inspect が司ってる
んで関数的メソッド puts や print は to_s を、関数的メソッド p は inspect を呼ぶ

そのクラスの製作者が「このクラスのオブジェクトの文字列的表現は○○だ!」と決めたのがto_sで返る
つまりRangeを作った人が考えるところの「Rangeオブジェクトの文字列的表現」が "(初端..終端)" なのだろ
これは inspect も同じだ(p で表示するのもこの形式で充分だと思ったのだろう)

あと Range オブジェクトは>>41の言うように両端しか持ってないので、
「途中を具現化」したものはRangeオブジェクトじゃない別のものになるよ
[1,2,3, 5,6, 8] という配列を puts して [1-3, 5, 6, 8] って勝手に省略されてたらムキーだろ
「中身」が欲しい場合はユーザーが手作業で行う

44 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 19:07:55 ]
どや顔でそんなこと言われても困るYO

45 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 06:08:53 ]
ライブラリのファイル名やGemパッケージ名に関しての標準的なルールを教えてください。
Railsを参考に仕様としましたが、activerecordだったりactive_recordだったりしてよくわかりませんでした。

46 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 07:52:58 ]
>>45
gem の名称は基本的にアンダースコアで区切る
active_record が現代的(いや、1語の造語とみなすという運用もあるけどさ)
そして、アンダースコア区切りをキャメルケースしたもの(ActiveRecord)の名前か
アンダースコア区切りから容易に関係性を想定可能で他と被らないような名前の module で全体を包む
require 'active_record' と、アンダースコア区切りの gem 名はそのまま require に書けるようにする

ハイフンで foo-bar-baz と区切ることもあるが、
これは Ruby での Foo::Bar::Baz の対応と近似してることが望ましく、また、
Foo というクラスやライブラリが既にこの世に存在していることが望ましい
net-http-persistent なら Net::HTTP::Persistent というクラスなりモジュールなりの階層が存在して欲しい
自作のライブラリのクラス構造を gem 名にハイフン区切りで反映することは避けたほうがよい
require 'net/http/persistent' と、ハイフンを / に変えただけで require に書けるようにする

あと、gem 名の中に大文字使う奴は死刑
require するとき大文字で書くべきか小文字のままでいいのか迷うじゃないか

というようなことが
ttp://blog.segment7.net/articles/2010/11/15/how-to-name-gems
に書いてあったり書いてなかったりする

47 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 11:31:53 ]
自作Matrixクラスに16個の配列をセットする場合、どう書くのがいいですか。
m = MyMatrix.new
として
(1) m.set [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
(2) m.set = [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
(3) m.matrix = [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]

(1)は他との兼ね合いで×(2)も変だし(3)かなと思うのですがどうでしょうか。


48 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 11:40:22 ]
16個の配列でMatrixへの代入ならcolomnsかrowsだろ

と思ったがそういう話ではなかった
マス目という意味でのマトリックスなのね

newになにもないならnewの引数にするのが普通だと思う

49 名前:47 mailto:sage [2010/12/13(月) 11:42:33 ]
>>48
後から値を変える場合はどう書くのがスタンダードですか?


50 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 11:52:42 ]
mydata[x, y] = new_elem

MyMatrixとやらの中でデータがどう扱われているかによるだろ、そりゃ
>>48の一行目で結論にならなかったことからして配列の配列が入ってるデータではないんだろうけど

ふつうは「この配列は何のデータか」を考えて、
データ配列ごと引数で指定する方法なのならそれの名前をもつ writer なメソッドにすると思う
mydata.nanika = [16桁]
みたいな



51 名前:デフォルトの名無しさん [2010/12/13(月) 11:57:43 ]
16個と書いてあるけど実は1×16でも16×1でもなく4×4の正方行列の意味?

52 名前:47 mailto:sage [2010/12/13(月) 12:37:23 ]
いや一般的に代入は「何とか」=ですよね?
MyMatrixのように「何とか」が自明でないときは、どうすればいいかという話です。
例えで出しただけなのでrowとかcolumnとか言われても困る。


53 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 12:57:26 ]
MyMatrix という名称と配列代入という行為である程度データ構造が自明だと思える人々 >>48 >>50 >>51
MyMatrix という名称や配列代入という行為は一般的過ぎて何も想起されないと思っている人 >>47

という差のような気もする

54 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 13:00:15 ]
普通は内部でデータを保持するインスタンス変数と同名のメソッドを使うべきだと思うんだが
たぶんインスタンス変数名をどうすればいいですかという質問になりそうな気もするな

既存のデータ系のクラスと同じような動作にしておいて、同じ名前のメソッド使うというのはどう

55 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 13:04:22 ]
たぶん配列代入もただの例で、配列には意味がないとか言い出すに一票

56 名前:47 mailto:sage [2010/12/13(月) 15:25:47 ]
もういいです。聞くだけ無駄。
ありがとうございました。


57 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 17:11:08 ]
要領をえない質問、情報後出しで右往左往、
捨て台詞吐いて逃亡か。最悪だな。

58 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 18:31:01 ]
釣られたみなさんご愁傷様

59 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 21:14:33 ]
>>46
ActiveRecordのgem名は「activerecord」だから、ちがうんじゃない?
それからそのサイトの説明だと
> If you're adding functionality to another gem use a dash.
とあるから、既存のgemに機能をつけたす場合にダッシュ(ハイフン)を使えとあるから、そう説明しようよ。


60 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 21:43:53 ]
Rubyで統計を扱うライブラリの定番は何ですか?




61 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 21:47:54 ]
>>60
とくにないです
自分の使い慣れた統計システムのRubyバインディングとか探してください

62 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 22:24:59 ]
>>61
なるほど、バインディングですか
これから始めるため使い慣れた統計システムは特に無いので
R使ってやってみます。ありがとう

63 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 00:26:20 ]
BaseクラスのメソッドをDeriveクラスで上書きした時にBaseの方の関数を呼ぶにはどうすればいいですか。
d = Derived.new
d.hello
で基底クラスの方のhelloを呼びたい。


64 名前:デフォルトの名無しさん [2010/12/14(火) 01:00:42 ]
定義に先立って別名を付けておく。
class Derived
alias base_hello hello
def hello; end
end

Derived.new.base_hello

あと、Derivedなんていう用語を使うのはC++くらいじゃね?


65 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 01:03:24 ]
d = Derived.new
Base.instance_method(:hello).bind(d)[]
とか?

66 名前:63 mailto:sage [2010/12/14(火) 01:31:01 ]
簡単な方法はないか…C++ならこれで一発なのに
d->Base:: hello ();
d->Derived:: hello ();
どうするか考えます。



67 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 10:46:01 ]
FooクラスにFoo#to_sを定義しても
puts "Foo = " + foo
が、 TypeError: can't convert Foo into String になるのはなぜ。
Stringに変換するために必要なメソッドは?

68 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 10:54:36 ]
>>67
to_sを明示的に呼ぶ
Rubyは原則として暗黙の型変換のような振る舞いはしない

puts "Foo = " + foo.to_s

69 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 10:59:45 ]
>>67
puts "Foo = " + foo

"Foo = " + foo
したものの返り値を puts メソッドに渡してる
"Foo = " + foo
の時点でエラーになるはず

一応、 String#+(other) は other#to_str を呼んでいるので
Foo#to_str を Foo#to_s のエイリアスにでもしておけばいいんだが、
より現実的には>>68だと思う

70 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 11:04:25 ]
ちなみに "#{うめこみ}" の形式を使用すると to_s の定義だけで用が済む
>>67は Foo クラスに to_s と to_str の 2つのメソッドを要求してるのだな

irb> class Foo; def to_s; "FOO!"; end; end
irb> puts "Foo.new is #{Foo.new}"
Foo.new is FOO!




71 名前:67 mailto:sage [2010/12/14(火) 11:17:32 ]
>>68-70
理解しました。to_sとto_strの2つのメソッドを定義しないといけなかったのですね。
似たような名前の関数を2つ提供するのは微妙だからto_sだけにしておきます。


72 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 11:42:35 ]
to_str は「このオブジェクトは String オブジェクトのように扱ってよい」の印
to_s は「このオブジェクトを文字列で表現するとこうなります」の意味

不用意に to_str を定義してはならない
to_str の部分でエラーが出ない = このオブジェクトは String 互換
という風に判断されるから
obj.kind_of?(String) && obj.to_s のようなもんだと思ってくれ

73 名前:デフォルトの名無しさん [2010/12/14(火) 12:34:04 ]
1.9 では Pathname#to_str がなくなって、代わりに to_path が出来てるんだな。


74 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 13:02:57 ]
>>73
あのへんはいろいろ揉めたらしいね
to_str 自体が「既存の標準ライブラリに迎合する動作」としての使われ方をしてたから

75 名前:デフォルトの名無しさん [2010/12/14(火) 15:37:02 ]
質問です。
Ajax アプリケーションを作成中で、サーバーサイドで Ruby 1.8.7 を使用しています。
クライアントサイドから Get で 〜〜.rb に引数つきでアクセスしようとしています。
(たとえば「〜〜.rb?No=〜&Name=〜」のようなかんじで)

しかし、Ruby 側でその引数(No=〜&Name=〜)を取得する方法も、
クライアントサイドに値を返す方法(クライアントで .responseText で取得するやつ)もわかりません。
どうやったらよろしいでしょうか?
馬鹿馬鹿しい質問なのだとは思いますが、教えてください。お願いします。

76 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 16:15:14 ]
>>75
そもそも現状の Ajax アプリケーションは Web アプリケーションの最終進化形態のひとつだ
(まあ、いろんな意味で)
サーバサイドとクライアントサイドと通信手段の基礎となる知識をすべて吸収した上で応用するという形になる

CGI 作ったことがないなら、たぶん無理だと思う
素直に Ajax 連携に定評のある他の言語使ったほうがいいんじゃないかな

77 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 16:42:31 ]
Railsスレで聞けば別の回答が返ってくる説に一票

78 名前:デフォルトの名無しさん [2010/12/14(火) 16:54:00 ]
>>76
そうですか…そんなにハードルの高いことだったのですね…。
かなり軽く考えていたかも知れません…。
しかし、心からの親切心でそう言っていただいていると思うので
大変恐縮なのですが、私にも事情があり、どうしても諦めるわけにはいかないのです。
ほんとうにありがとうございます。

>>77
そうなんですね。
しかし今から全く未経験の Rails に手を出す余裕は無いのです。
どうもありがとうございます。

79 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 17:14:35 ]
Rubyでやらないほうが早いって言われてるのに

80 名前:デフォルトの名無しさん [2010/12/14(火) 17:34:50 ]
>>79
誤解させてすみません。
どうしても Ruby を使わなければならないのです。
自分もできたら他言語でやりたいっす…。



81 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 17:42:54 ]
CGIだったら環境変数。Ruby関係ないよ

82 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 17:44:59 ]
>>80
迷える子羊のために三択を用意した

1. Ruby標準添付のCGIモジュールについて調べる
 でもってローカルにApacheでも立ててクエリ文字列とPOSTの内容と
 環境変数をダンプできるCGIを作って動作するところまで頑張る
 そこまでいければなんとかなる
2. 諦める

さあ選んでくれ

83 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 18:03:40 ]
第三の選択肢は↓

84 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 18:10:40 ]
中途半端な知識でAJAXなんて脆弱性垂れ流すに決まってる ちょっと考え直した方がいい

85 名前:子羊 [2010/12/14(火) 19:01:23 ]
>>82
「1.」の一択でお願いします。早速学習を始めます。
いちおう Apache はローカルにインストールしてますが、Apache に関する知識は皆無です。
環境が Windows でブラウザで
「http://コンピュータ名/htdocsフォルダに置いてあるファイル名」という
アドレスにアクセスすることでそのサイトにアクセスできる状態にしています。
それで参考にお聞きしておきたいのですが、
「クエリ文字列とPOSTの内容と〜〜動作するところまで頑張る」という部分は
CGI モジュールについて学習すれば理解・実現できる内容ですか?
それとも Apache に関する書籍なども購入して学習する必要がありますか?

ほんとうにありがとうございます、救われた思いです。
とりあえず CGI モジュールについて学習します。一生懸命頑張ります。

86 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 19:33:19 ]
Ruby案件可ってことにして受注しちゃったのか?


87 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 19:53:41 ]
>>86
ていうかプログラミングに対する知識と経験が絶望的に足りないと思われ
「ふつう」の知識と経験があるなら>>75の場所では詰まらないと思うの
Ajax とは、みたいな説明や適当な Ajax の解説やサンプルを読んである程度理解したなら
Ajax として目新しいところとそうでないところの判断くらいはついて欲しい

つまりはこの人「何も作ったことがない」んだと思うよ
運転経験ない人に長距離夜行トラックでの運送なんて任せられるかw
素直に単純な CGI とかの日曜の自家用車ドライブからはじめろw

88 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 19:55:26 ]
HTMLの勉強をする
CGIの勉強をする(Rubyで)
HTTPの勉強をする
JavaScriptの勉強をする
Ajaxの勉強をする(Rubyで)

こんな順番?

89 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 20:01:38 ]
HTML の勉強をする
CGI 無関係な Ruby の勉強をする
Apache の基本的な使い方を学ぶ
CGI の勉強をする(Ruby で)
HTTP の勉強をする
JavaScript の勉強をする
Ajax の勉強をする(Ruby で)

こうだろ
…なんかめんどくさいな、どうせ表示するデータの取り扱いでも挫折するんだろうし、最初から Rails にするか
なんか、動作が遅いですとか言われそうな気もするが
でも、Rails が本番サーバで動作するかどうかのチェックも要るな
安価なレンタルサーバだとまともに動かなかったりするし

90 名前:デフォルトの名無しさん [2010/12/14(火) 20:45:55 ]
なんか悲しい流れになってきたな。しゃあない面も大きいとは言え…。



91 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 20:45:57 ]
よその会社に丸投げで発注したほうがいいと思う

92 名前:デフォルトの名無しさん [2010/12/14(火) 20:50:42 ]
>>89
HTMLに関しては何がわかってないの?この人

93 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 20:53:32 ]
そこそこに「わかってる」なら適宜飛ばしていいだろそりゃ
単に要素を列記しただけだと思うぞ

>>90
そもそも「カンタンにWebアプリを作成!」というのが幻想というか妄想なので…
情報商材みたいなもん

94 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 21:07:51 ]
というか質問は
* クエリ文字列の取得
* XMLHttpRequest#responseTextの取得
これだけなのになんでここまで盛り上がれるのん

後者はRuby関係ないからスルーとして
前者はcgi.params, cgi.query_string, ENV['QUERY_STRING']
その他フレームワークの類似機能を使用する、で終了じゃない

95 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 21:13:34 ]
悲しげなフレーバーを嗅ぎ取ったから

96 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 22:10:21 ]
>>75
ほかの人のアドバイスと被る部分もあるが

まずは、Rubyで簡単なCGIスクリプトを作るといい
内容はHelloWorldレベル(簡単なメッセージ表示くらい)で十分だ
作り方は検索したらいくらでも出てくるし、>>94のアドバイスも参考になる

ブラウザ上からそのCGIスクリプトにアクセスして、画面表示ができたら
AjaxでそのCGIスクリプトにアクセスして
CGIの出力を持ってくる(JavaScript側で出力を受け取る)ところまでやる

ここまでできれば、後は応用でなんとかなると思う

97 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 23:47:25 ]
どう考えても仕事じゃないだろ
あとrails勉強した方が結果的には最短距離かと

98 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 00:40:41 ]
Rubyやってる人が最短でできるのがrailsってイメージが自分はあったけど、
最近(っても古いか)の騒ぎ立てでRails使わないのにRubyやってんの?ってのが嫌。

99 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 01:08:38 ]
Railsを使わないRubyのWebアプリってやっぱイマイチなの?
CGI部分もあまり出来が良くないって聞くよね
素直にPHPでやったほうがいいのかな

100 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 01:11:32 ]
cgi.rb使うぐらいならsinatra使った方がいいよ
と話をややこしくしてみる



101 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 01:42:53 ]
>>99
Rubyで書けます

これがメリットだと感じないならRubyでWebアプリケーション作るのやめたほうがよい
いやかなりマジで

102 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 01:44:35 ]
>>75 >>82
にはSinatraに一票入れたいところだが、次に>>75

 レンタルサーバーでSinatraが動きません
 (もしくはめちゃめちゃ遅いです、使い物になりません)

と言ってくるので、cgi.rbでよいと思う。


103 名前:102 mailto:sage [2010/12/15(水) 01:47:30 ]
>>101
池上「いい提案ですね」

104 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 02:25:23 ]
前スレでirbで落ちると言っている人いたよね?
rbreadline.rbを使っているRuby使っている人かもしれない。

readlineがライセンスの問題があるためRubyでreadlineを実装しようとしているもののようだけど、
Windowsでは日本語が入力できなかったり、行を編集しようとすると遅かったりどうにかすると落ちたりするなこれは

pikでRuby 1.9を入れるとrbreadlineが標準添付されたRubyが入るのだが、これだと実質irbが使えないな



105 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 03:00:26 ]
ActiveScriptRubyのバージョンを1.8.7から1.9.2に上げたら、
irb上で上下カーソルの入力履歴がでなくなりました。
これないとめっちゃ不便なんだけど、どしたらよいの?

106 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 03:09:47 ]
rlwrapを入れる

107 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 06:17:24 ]
>>106
あなたが神か?

108 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 08:20:47 ]
>>106
ありがとうございます。
これは大変良さげなのですが、Windows用バイナリは何処に?
cygwin入れてコンパイルするしかないかな。

109 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 08:23:53 ]
Sinatraってデプロイとか簡単?

110 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 09:53:19 ]
>>108
ttp://www.cymric.jp/maxima/maxima-winxp.html
のサイトでこっそりと
cygwin-rlwrap-0.30.zip
っていうファイルがあるみたい



111 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 10:25:33 ]
>>109
デプロイだけならHerokuは簡単
ただし動作環境にクセがある。
動作環境が満たされるなら遊びのちょっとしたものなら無料の範囲で作れるし、
そうでないなら金払えるなら、サーバー管理の手間かからないしいいんじゃね?

Google App Engineもデプロイだけは簡単だけど死ぬ

VPSでの動作ならRails並に簡単、いつもの慣れた環境をつくってデプロイできる。


え?・・・このレスに有益な情報がないって?

112 名前:デフォルトの名無しさん [2010/12/15(水) 10:52:13 ]
>>75です。
みなさん、たくさんの親切なアドバイス、ほんとうにありがとうございます。
みなさまからいただいたアドバイスを参考に学習・開発を進めてまいります。

>>87
おおむね、おっしゃるとおりでございます。
Web アプリケーションの作成は今回が初めてでわからないことだらけです。
>>96 も仰ってあったとおりまずは素直に単純なところから始めようと思います。
ご親切にありがとうございます。

>>88 >>89
参考になります。>>93 のおっしゃるとおり、
その中からわかってない部分を適宜拾い集めて学習させていただきます。
ありがとうございます。

>>94
ありがとうございます。
お陰さまで何とかなりそうな気がしてきました。
参考にして調べてみます。

>>96
まず単純なことから試してみます。
基本ですよね、視野が狭くなって忘れていました。
親切なアドバイスが身にしみました、ありがとうございます。

113 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 12:58:49 ]
さくらVPSとかカゴヤ・クラウド/VPSとは月1000円もしないんだからそっちで

114 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:04:34 ]
WPFでこのように”1行”で書いたコードを
Rubyならどうやって書くの?

<WebBrowser Source="http:..."/>

115 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:11:50 ]
>>114
重複
ttp://hibari.2ch.net/test/read.cgi/tech/1287623173/882

116 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:13:24 ]
重複だからどうなんだ?
回答がないし、スレ落ちてるから質問しているんだが
それがだめな理由でもあるのか?

117 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:20:13 ]
C#は知っててもWPF知ってる人がいないから回答がこないんじゃね
あきらめれ

118 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:23:52 ]
ていうか処理層違ってどうにもならんし話も膨らまんからガチスルーされたのだろ
回路図示して、Rubyで炊飯器のタイマー起動するにはどうすればいいですかみたいな話に近い

119 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:25:14 ]
なかなかうまいことを言う

120 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:26:57 ]
WPFで1行でできることがRUBYだとできないの?
WEBに強いんでしょ?



121 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:48:43 ]
そんなこと言われましてもIEがWPF/XBAPを解釈して実行しているものをどうしろと

122 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:50:11 ]
PHPのほうがよりWEBに強いと思いますのでPHPの人に同じように質問して、
嫌われるといいと思います。

123 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:57:58 ]
WPF + MSBuild + Silverlight vs. Chrome OS + Native Client + Go

世田谷区民会館ぐらいなら埋まりそうなカードだな

124 名前:デフォルトの名無しさん [2010/12/15(水) 15:19:59 ]
>>120
勝手にWEBに強いことにしないで欲しいな。


125 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 15:26:28 ]
じゃあもっと簡単なところで

<Button/>

たったこの1行でボタンが配置できますが
Rubyだとどうするんですか?

126 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 15:30:38 ]
>>125
InternetExplorerが公式にRubyをサポートしてからまたおいで
あなたはクライアントとサーバサイドの区別がついていない

127 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 15:32:22 ]
バカは放置すべき

128 名前:デフォルトの名無しさん [2010/12/15(水) 15:33:31 ]
幼稚園児の屁理屈みたいで
見てて微笑ましかったのだが

129 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 15:33:59 ]
>>125
再現してみるからLinuxで動くコードちょうだい

130 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 16:04:08 ]
前スレから出没してるアレな人でしょ
どうにかしてRubyを馬鹿にして悦に浸って苦しい日常生活から現実逃避したい低レベルなプログラマさん
kill myselfをお勧めします



131 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 16:17:37 ]
バカは放置すべき

132 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 16:22:48 ]
コードで示せないあなたたちがバカではなくて?

133 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 16:25:36 ]
しかしみんな構っちゃうw

134 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 16:53:00 ]
Rubyなら
print "<Button/>"
でいいんじゃないの?

135 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 17:51:21 ]
>>134
>>125はおそらくHTMLじゃないぞ

136 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:03:48 ]
XAMLだね
静的にコンパイルするとb = Button.newみたいなコードが得られる
動的にロードするのならIronRubyでも出きるだろう

137 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:15:33 ]
>>132
kill myself

138 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:24:41 ]
こんな動作をRubyで一行でできる?
Array.ForEach(files,f=>Console.WriteLine(f));

139 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:27:01 ]
できるって言ったらなんなんだろうね
できてないって言って追っ払っちゃおうか
面倒だし

140 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:28:10 ]
やめろおいそれはRubyの得意分野だ



141 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:29:11 ]
>>138
できません
あなたの勝ちです

では他の人次の質問どうぞ

142 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:55:17 ]
そういや、Ruby1.9.1 系統の open-uri は open の引数に文字エンコーディング情報をくっつけると
その値に force_encoding して返してくれるぞ、という話を前スレでしようと思ってたらスレが終わってた

irb1.9> p open("www.2ch.net/").read.encoding
#<Encoding:ASCII-8BIT>
irb1.9> p open("www.2ch.net/", 'r:Windows-31J').read.encoding
#<Encoding:Windows-31J>

143 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 19:04:19 ]
force_encodingはエンコード情報だけを強引に書き換えるメソッドなのだが

144 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 19:19:14 ]
>>143はたぶんわかってない

145 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 19:28:54 ]
中身が EUC で、force_encoding 'UTF-8' しただけじゃまずいわな。

146 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 19:45:19 ]
そもそも前スレでどんな話してたかを知らないと頓珍漢なレスに

> それは Net::HTTP の仕事ではないというかそんな根底部分で余計なことすんなということらしい
> open-uri ならヘッダの Content-Type を読んで force_encoding で設定してくれるが、
>
> irb1.9> require 'open-uri'
> irb1.9> p open("dailynews.yahoo.co.jp/").read.encoding
> #<Encoding:EUC-JP>
> irb1.9> p open("sankei.jp.msn.com/").read.encoding
> #<Encoding:Shift_JIS>
> irb1.9> p RUBY_VERSION
> "1.9.2"
>
> レスポンスヘッダの Content-Type ほど信用ならないものもないのでまあ掛け捨て保険程度

147 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 20:00:13 ]
2次元の範囲ってどう指定してますか。
例えば2次元画像の特定の領域(x,y,width,height)を指定するのに
こう書くのは問題ですか。他にもっといい書き方があれば教えてください。
image.pixels[x,y,width,height] = pixels


148 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 20:10:43 ]
image.pixels[x1,y1,x2,y2] = pixels

そんな書き方してたら座標変換するとき面倒だろ

149 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 20:17:16 ]
>>148
あ、いやそれは問題にしてなくて例えば
pixels[x..x+width, y..y+height]
pixels[[x,y], [width,height]]
pixels[x,y][width,height]
みたいな書き方の方が良いのかなという話です。誤解させてすみません


150 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 20:19:20 ]
何でpixelの中にpixelsを格納するのか意味不明
colorならわかるが



151 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 20:58:50 ]
image内の矩形領域に別の矩形領域pixelsをコピーしてるんじゃないか?

152 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 21:57:32 ]
>>146
うん、Content-Type ヘッダの charset を ASCII-8BIT の代わりにセットする代わりに
引数指定の文字エンコーディング名をセットするようにできます、という話だよね

153 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 23:04:09 ]
>>151
あのコードがそのように解釈できるのか?

どうみても、1pixelに複数pixelを割り当てているようにしか見えないが

CopyRect(Rect srcImage,Rect destImage)

とかにすべきだろ

154 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 23:17:45 ]
image.pixels[x,y,width,height] = pixels
左辺は範囲じゃん
ary[start,length] = ary2の二次元版

155 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 23:51:03 ]
ぐぬぬ…

156 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 00:06:45 ]
でもstart, lengthはともかく4つ使ってstart(x), start(y), length(x), length(y)は一般的かな?


157 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 00:15:29 ]
一般的だろ

158 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 01:13:15 ]
気持ち悪い言語だなぁ

159 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 01:54:13 ]
>>145
この場合はforce_encodingが正しい

160 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 08:09:45 ]
Encoding が BINARY なものに force_encoding で「名前をつける」ことの何が非難対象なのかがわからないな

Encoding は nil が許されないから、必ず何らかの名前がついている
文字エンコーディングを特定できない、または特定しないという印が ASCII-8BIT こと BINARY
ネット経由のファイル取得でエンコーディングを特定できる情報がないから ASCII-8BIT だったものに
force_encoding を使って人間が知ってる情報で名づけてあげることの何がまずいというのか



161 名前:デフォルトの名無しさん [2010/12/16(木) 11:39:38 ]
>>75 です。
時間はかかりましたが、やりたかったことができました。
余計かな、とは思いましたがみなさんのご協力がなければ
間違いなく先に進めていなかったので、ご報告させていただきます。

本当に助かりました。ありがとうございました。

162 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 11:42:38 ]
3Dゲームを作りたいのですが
どうすればできますか?

163 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 12:27:00 ]
スルー推奨

164 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 12:39:54 ]
>>162
そういう話題ならマジレスするぜ。
ウィンドウ作成とキー入力、サウンドはqtrubyを使うのが一番簡単。
あとはOpenGLを使ってごりごり書く。
3Dシューティングゲームならこれで作れる(実際に作った)。
ただしそこからPS2レベルのゲームを作るにはかなり努力しないといけない。
表示だけ考えても、そこからモデルのロードとスキニング、アニメーションを自前で実装する必要がある。
これらを実装するのはそれなりに知識と時間が必要。
なので今ちょうどそれらを全部含んだM3Gという携帯電話で使われている3D描画APIを実装して
Rubyから使えるようにしている作業の真っ最中。
もう動いてるけど、さすがにまったく知識のない人間には勧められる完成度はない。
とりあえずOpenGLを使って簡単なゲームを作ってみるべし。
ちなみにモデルビュアーのスクリーンショット。これが100%Rubyで書かれている。
この画像ではわからないけどちゃんとアニメーションしている。
www.gazo.cc/up/21983.png






165 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 12:47:44 ]
スルー推奨

166 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 12:48:36 ]
www.nicovideo.jp/watch/sm5630363

167 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 09:34:26 ]
>>164
おい、スルーし・・・
ちょw

特定しますた


しかし3Dゲーム作るなら、ゲームエンジンのバインディング作ったほ(ry



168 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 09:41:30 ]
>>164
のぞかせてもらった。

M3GのAPIの互換実装をつくって、別にRubyのバインディングを作ってるのか。
M3Gって需要あるんかいな

169 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 10:48:18 ]
3DゲーなのにDirectX使わないの?しょぼ

170 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 11:04:06 ]
>>169
ではWindowsを移植してください



171 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 12:14:27 ]
rubysdl + OpenGL のサンプル試してみたけど
PSレベルのものは作れそうだ

172 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 12:19:04 ]
Rubyのブロックってもしかして、
「公開関数が2つ以上関数を引数にとるなんてことめったにねぇよ」
って発想が根底にある?

173 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 12:21:19 ]
×公開関数
○高階関数


174 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 12:33:08 ]
>>172
たしかそんなような話は聞いたことがある

175 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 12:58:09 ]
>>172-174
MLかどっかのログくれ!!


俺もブロック見たときびっくりした。何で1個なんだよって。
でも意外にif else end (ブロック2つみたいなもの)のようなものを作ることがなくて困らない、
というかそういう作り方になってしまう。

どうしてもやりたければlambdaでいい。
1個の場合は楽。バランスなのかも


176 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 13:02:28 ]
本人が「失敗だった、高階関数を一つ限定にしたのが自分の限界」
みたいなことを言ってた記事を見たことあるが、
なんでもかんでも未来を見通せるわけじゃない。
高階関数を組み入れただけでもすばらしいよ。

177 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 13:20:52 ]
関係はこれかなあ
ttp://www.rubyist.net/~matz/20070512.html#p04
> 高階関数を持つ言語(OCaml)のライブラリを精査したところ、
> 2239関数のうち、関数引数を取らないものが87.2%、ひとつだけ取るものが12.1%で、ふたつ以上とるものは0.7%であった。
> ここからわかることは、プログラミング言語は 99.3%を占める高階関数(ブロック)を0または1個とるものに最適化するべきであり、
> めったにない二つ以上ブロックのために、それ以外のものを「ゆがめて」はいけない、ということ。

ttp://itpro.nikkeibp.co.jp/article/COLUMN/20050930/221979/
> もちろん,メソッド呼び出しに1つだけしかブロックを付けられないという制約はあります。
> しかし,実際に複数のブロックが必要になることはほとんどありません。

Ocamlの論文はけっこう引用されてて、
「実利を取って引数1個限定でシンプルにしてたRubyは勘がよい」という評価がいくつかあったはず

178 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 13:30:39 ]
初心者スレだったな

Rubyだとたとえば「ブロックが1個限定なのってよく考えたら変じゃね?」という話
def foo(arg1, arg2, &block)
end
と定義して
foo(111,222){|x| ... }
と利用するわけだけど、これって
def foo(arg1, arg2, &block1, &block2)
end
と定義して、現行のRuby文法上ではうまく書けないんだがなんか
foo(111,222){|x| ... }{|y| ... }
みたいに複数ブロック実行できるようにしたとしても別にデメリットはないんじゃね、
複数引数自体は自然だし、いざという時用に用意しててもよくね? という話

179 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 13:59:13 ]
>>178
でたでた、良くある初心者ならこれくらいなら理解できるだろうという上から目線。
そもそも高階関数そのものがわからないのに解説して貰ってもねぇ-

180 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 14:02:03 ]
高階関数
defで設定した関数の中で関数を呼ぶもの。
これが1個
def f(g,a)
g.call(g.call(a))
end

これが2個
def f(g,a)
g.call(g.call(g.call(a)))
end



181 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 14:12:49 ]
高階関数とはなにか
Rubyで高階関数を実現するには
lambda, Procとブロックの関係

>>176の真偽も含めて
今日のRuby初心者スレは盛りだくさんだな

182 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 14:22:48 ]
時間帯まとめてレスがつくのが興味深い
まるで一人で書いているかのようだ

183 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 15:50:31 ]
class Foo
def bar(obj=nil)
obj.foo
end
private
def foo
puts "foo"
end
end
Foo.new.bar(Foo.new)

184 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 15:52:01 ]
多分ここ見ているの3人ぐらいJane?

185 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 16:40:55 ]
>>182
均等にばらつくほうが不自然

186 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 18:04:03 ]
>>183
Goldの問題だな

187 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 18:12:08 ]
>>182
プログラマは以外と規則正しい生活をしてるってことだな

188 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 18:21:14 ]
何が悲しくて初心者スレにプログラマが常駐せねばならんのだ

189 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 18:22:19 ]
protectedがJavaとかのそれと違うと言われるのは、どんなところがちがうの?

190 名前:デフォルトの名無しさん [2010/12/17(金) 19:05:01 ]
A#fooがprotectedで、a1、a2がAのインスタンスだとすると、

a1.foo #=> エラー
a1.instance_eval { foo; self.foo; a1.foo; a2.foo } #=> いずれも可能

fooは、A(とそのサブクラス)のインスタンスのコンテキストで使える。
privateと比較すると、selfに加えて、自クラス・サブクラスの他の
インスタンスのfooが呼べるってこと。

比較判定で他の兄弟インスタンスの属性を参照するメソッドなどがprotectedになりうる。

Javaのprotectedは、コンテキスト関係なく、サブクラスのインスタンスに
対して使用できるかどうかを示す。




191 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 19:11:21 ]
public
 呼び出しの場所も形式も制限なし
private
 呼び出しの場所の制限はないが、形式に制限あり
 レシーバつきだと呼び出せない
protected
 呼び出しの場所に制限があるが、形式には制限なし
 所属クラスか継承クラスの def ... end の中以外では普通はエラー

class C
def priv; end
def prot; end
private :priv
protected :prot

def check_priv(c=nil)
priv rescue warn "cannot priv"
self.priv rescue warn "cannot self.priv"
(c.priv if c) rescue warn "cannot c.priv"
end
def check_prot(c=nil)
prot rescue warn "cannot prot"
self.prot rescue warn "cannot self.prot"
(c.prot if c) rescue warn "cannot c.prot"
end
end

irb> C.new.check_priv(C.new)
cannot self.priv
cannot c.priv
irb> C.new.check_prot(C.new)
irb>

192 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 19:11:29 ]
仕事でストレス溜め込んでるから、初心者相手に憂さ晴らししているプログラマが多いって証だろ。

ちゃんとカウンセラ常駐の、大手ソフト会社は、メンタルケアを行う事でストレスによる休職や離職が5年前は7%だったのが、昨年は0.7%に減少し、年間2億円のプラス効果が出たとかw
この会社は当然新卒にも大人気らしい。

193 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 19:15:02 ]
>>190
>比較判定で他の兄弟インスタンスの属性を参照するメソッドなどがprotectedになりうる。
というかそれしかないんよね
自分か仲間のオブジェクトをメソッド内に連れ込んだ場合に限ってそいつが喋れるってどんだけ秘密なの

ちなみにどれも __send__ で呼び出すことは可能なので、あんまり防御効果はない

194 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 19:33:23 ]
protectedてC++で言うprivateに使いのか?

195 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 20:44:41 ]
同名のローカル変数とprivateメソッドが同一クラスにあった場合、同クラス内からprivateメソッドを呼び出す方法ってある? evalとかの魔術的な方法ではなく正攻法で。

class C
def hoge
fuga = 0
# fugaメソッドを呼び出すには?
fuga
end

private
def fuga
"fuga"
end
end

puts C.new.hoge


196 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 21:12:11 ]
__send__(:fuga)

197 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 21:54:27 ]
いや、それ十分魔術だから

198 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 22:06:42 ]
スーパークラスからじゃなく
同じクラス内で同じメソッド名を作っておく意味ってあるの?

199 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 22:07:29 ]
ホントに動くねw

class C
def hoge
fuga = 0
# fugaメソッドを呼び出すには?
__send__(:fuga)
end

private
def fuga
"fuga private"
end
end

puts C.new.hoge

200 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 22:11:08 ]
>>198
いわゆる、ローカル変数名がたまたま被るという話だろう
それでいてローカル変数の名称も変更できずメソッド名も変更できずロジックの変更もできない
という特殊環境下でたかだか __send__ を魔術と抜かすんだからどうにもならん



201 名前:デフォルトの名無しさん [2010/12/18(土) 00:13:26 ]
>>193
だから、「たいていのprotectedの使い方は間違い」だと疑ったほうが
いいんだよね。RailsとかRailsとか。


202 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 00:42:49 ]
間違った使い方のほうがruby本体より有名に成ったからなあ。

203 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 01:18:23 ]
どこから「だから」がきてるのかさっぱりわからん

204 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 03:51:20 ]
send は別に魔術でもなんでもないよね
メソッドを確実に呼ぶだけだ
ただまあちょっとばかし可視性とか無視してるが

205 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 10:34:04 ]
アクセス権限をかいくぐることがsendの主目的かよw

206 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 11:20:42 ]
昔なんか裏技とか言ってゲームやってたようなおっさんたちが嬉々として「裏技」に仕立て上げているという悲惨なメソッド

207 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 13:02:57 ]
実際はsendってどんな時に使うものなの?

208 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 13:27:07 ]
send は Object に定義されてて、ありがちな名前が被る可能性があるので実質 __send__ を使う

で、>>204の通りだろ
呼び出し制限に影響されないというのが差異で、単なるメソッド呼び出し
本来は、private メソッドを無理矢理使うときー、みたいな限定用途ではない

209 名前:デフォルトの名無しさん [2010/12/18(土) 13:31:52 ]
「文字列で名前で指定されたメソッドを呼ぶ」とかな。
別にアクセス制限は関係ない。


210 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 13:56:04 ]
普通は動的プログラミングで使うだろ
privateメソッドにアクセスする用途で使ったのなんて
モンキーパッチで仕方なく書いた1回だけだ



211 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 16:56:31 ]
なのでやっぱり魔術的

212 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 16:59:33 ]
呼び出し制限に影響されずにメソッド呼ぶとか、動的プログラミングとか

privateメソッドを呼ぶ

の違いが初心者の私にはわかりません。
前者はほかに何ができることを言っているのでしょうか?

213 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 17:17:57 ]
呼び出し制限に影響されずにメソッド呼ぶ
privateメソッドを呼ぶ



動的プログラミング

というくくりで考えればいい。

上二つの違いは、何が目的なのかという解釈の違い。
二つのくくりの違いは、もう何もかも違うだろ。

214 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 18:27:11 ]
まあ、他の2つは試せばわかるとして、動的プログラミングのくだりはたとえばこんな感じなんじゃないかと

class C
def foo; puts "foo"; end
def bar; puts "bar"; end
def baz; puts "baz"; end
def main(arr)
arr.each do |name|
__send__(name)
end
end
end

C.new.main(['foo', 'baz', 'foo'])


・ 「なんかスゴいからこれどっかで使おう!」とか考えない
・ 手段のために目的探したりしない、乱用厳禁
・ どうしても困ったときにはたぶんあなたの前に現れてくれるサンタさん

215 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 19:34:57 ]
なるほど、わかったきがします
説明&例をあげていただいて感謝

216 名前:デフォルトの名無しさん [2010/12/18(土) 23:30:23 ]
>>214
へーー。わかりやすい。

217 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 08:46:40 ]
class C
def foo; puts "foo2"; end
def bar; puts "bar2"; end
def baz; puts "baz2"; end
def main(arr)
arr.each do |name|
__send__(name)
end
end
end

C.new.main(['foo', 'baz', 'foo'])

引数から直接関数を呼ぶって危険じゃないの?
これがrubyスタイル?

218 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 09:32:08 ]
・ 「なんかスゴいからこれどっかで使おう!」とか考えない
・ 手段のために目的探したりしない、乱用厳禁
・ どうしても困ったときにはたぶんあなたの前に現れてくれるサンタさん

って書いてあるじゃん。もう少し考えてから書こうよ。いくら2chと言ってもさ。

219 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 09:40:18 ]
そもそもrubyインタプリタへのアクセスを許してる時点で危険も何もねえ

220 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 11:02:37 ]
Rubyは開発者のことを信頼しているっていう思想が根源にあるから
そんくらいで危険とか言われてもピンと来ないな



221 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 11:15:13 ]
__send__ はどう頑張ってもメソッドしか呼べないので $SAFE=1 で禁止されないな
まあそんなもんだと思う
__send__ に渡す引数が信用ならないなら自前でなんとかしてくれ

222 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 15:57:13 ]
>>220
>Rubyは開発者のことを信頼しているっていう思想が根源にあるから
C みたいな言い分ですね

223 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 17:41:09 ]
さっぽろでRubyKaigiあったじゃん、
ttp://regional.rubykaigi.org/sapporo03
これにMatzの発表資料と動画がないんだけど、公開されないのかな。
秘守契約とかあんの?

224 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 17:59:45 ]
>>222
matzはCプログラマ

225 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 20:26:11 ]
irb の使い方って、
b.rbというソースがあるとき
irb起動して
require './b'
(ruby1.92)
とソースを読ませてから
色々なことをするの?

参考url
オブジェクトの中身が知りたーい - takkan_mのNo planな日常
d.hatena.ne.jp/takkan_m/20101213/1292247476


226 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 20:45:10 ]
まあ一般的にはそうだ

227 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 20:53:28 ]
以下のような違い(疑問)に出会ったときに、ArrayクラスのArray#==メソッドの実装部分を調べるとObjectとの違いの理由がわかったりすると思うのですが、Array#==(やObject#==)の実装部分(Rubyコード?)を実際に見るにはどこを探せばよいのでしょうか?

a = Object.new
b = Object.new
p a == b #=> false

a = Array.new
b = Array.new
p a == b #=> true



228 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 20:59:00 ]
コンパイル前のC言語ソースのarray.c

229 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 21:15:09 ]
>>228
Oh.. Cを読まないとダメですか 自分にはまだちょっと早そうですね〜
リファレンスの文章で我慢します
レスありがとうございました

230 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 21:15:25 ]
>>227
ちょっと見たいだけなら、↓から覗くって手もあるよ。
rubydoc.info/stdlib/core/1.9.2/frames




231 名前:227 mailto:sage [2010/12/19(日) 21:23:50 ]
>>230
おお、これはわかりやすいですね!
これなら自分でもObject#==とArray#==のCコードを見ることができました
Object#==のほうは短いのでなんとなくわかりますが、Arrayのほうはよくわからずw でも実装が違うってことはわかりました
参考になるサイトを教えていただきありがとうございました


232 名前:デフォルトの名無しさん [2010/12/20(月) 00:34:51 ]
たいていクラス実装コードの最後に、いかにもなrb_define_classとか
rb_define_methodとかあるから、そこでRubyレベルのメソッド名を探す
と、対応するCの関数が分かる。


233 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 01:14:22 ]
Part26以前が過去ログから遡れなかったのでURLまとめてみた

Ruby 初心者スレッド Part 26
pc11.2ch.net/test/read.cgi/tech/1235727504/
Ruby 初心者スレッド Part 25
pc11.2ch.net/test/read.cgi/tech/1233369067/
Ruby 初心者スレッド Part 24
pc11.2ch.net/test/read.cgi/tech/1230783202/
Ruby 初心者スレッド Part 23
pc11.2ch.net/test/read.cgi/tech/1227123021/
Ruby 初心者スレッド Part 22
pc11.2ch.net/test/read.cgi/tech/1221467121/
Ruby 初心者スレッド Part 21
pc11.2ch.net/test/read.cgi/tech/1217952441/
Ruby 初心者スレッド Part 20
pc11.2ch.net/test/read.cgi/tech/1214498119/
Ruby 初心者スレッド Part 19
pc11.2ch.net/test/read.cgi/tech/1208100393/
Ruby 初心者スレッド Part 18
pc11.2ch.net/test/read.cgi/tech/1203658291/
Ruby 初心者スレッド Part 17
pc11.2ch.net/test/read.cgi/tech/1200472887/
Ruby 初心者スレッド Part 16
pc11.2ch.net/test/read.cgi/tech/1197120980/
Ruby 初心者スレッド Part 15
pc11.2ch.net/test/read.cgi/tech/1193298175/
Ruby初心者スレッド Part 14
pc11.2ch.net/test/read.cgi/tech/1188014743/


234 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 01:14:37 ]
Ruby初心者スレッド Part 13
pc11.2ch.net/test/read.cgi/tech/1183115034/
Ruby初心者スレッド Part 12
pc11.2ch.net/test/read.cgi/tech/1178167650/
Ruby初心者スレッド Part 11
pc11.2ch.net/test/read.cgi/tech/1174607679/
Ruby初心者スレッド Part 10
pc11.2ch.net/test/read.cgi/tech/1169542763/
Ruby初學者スレッド Part 9
pc10.2ch.net/test/read.cgi/tech/1164065622/
Ruby初心者スレッドPart8
pc8.2ch.net/test/read.cgi/tech/1159424939/
Ruby初心者スレッドPart7
pc8.2ch.net/test/read.cgi/tech/1154077799/
Ruby初心者スレッドPart6
pc8.2ch.net/test/read.cgi/tech/1147918197/
Ruby初心者スレッドPart5
pc8.2ch.net/test/read.cgi/tech/1143403165/
Ruby初心者スレッドPart4
pc8.2ch.net/test/read.cgi/tech/1137927749/
Ruby初心者質問スレPart3
pc8.2ch.net/test/read.cgi/tech/1125587131/
Ruby初心者質問スレPart2
pc8.2ch.net/test/read.cgi/tech/1107799347/
Ruby初心者質問スレPart1
pc5.2ch.net/test/read.cgi/tech/1100534824/

235 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 10:20:59 ]
2004年に既に1.9系ってあったんだな
まるで普及してない・・・

236 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 10:26:45 ]
1.9.0 は完全開発版でベータどころかナイトリービルドレベルだから普及も何もないぞ
普及は 1.9.1 から数えてくれ
ttp://www.ruby-lang.org/ja/news/2009/01/30/ruby-1-9-1-released/
来年の1月30日で2歳だ

237 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 10:30:33 ]
>>236
あ、そうなんだ
無知でスマソ

238 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 10:32:55 ]
ついでに質問だけど、1.9.1が安定版なら、1.9.2は開発版? で1.9.3が安定版?

239 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 10:41:21 ]
>>6の通りなんだが、そういや命名規則の話が抜けてるな
1.9 系列の開発版は常に1.9.0を名乗り、バージョンが「上がる」ことはない
1.9 系列の安定版は 1.9.1、1.9.2、1.9.3、… 1.9.10、1.9.11、…を名乗る
1.8 系列の開発版は…あるんだっけ? まあいいや、1.8.7 の次の安定版は、あるとしたら 1.8.8 だ

2.0 が安易に出ることはしばらくない
1.9 の安定版でもう何も足すことも引くこともないというような安定っぷりになったら、
それがそのまま2.0にスライドすると予測されてる

240 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 11:00:00 ]
1.9.1/1.9.2がお勧めになってないのは
・ それはRubyの書き方のミスです
・ それはRubyの使い方がまずいです
・ それはgemライブラリ側の不具合です
・ それはgemライブラリが1.9.1に対応してないからです
・ それはあなたの文字エンコーディングの扱い方のミスです
が渾然一体となってジェットストリームアタックかけてくるからだな

1.8.7でRubyに慣れてからだと
> それはRubyの書き方のミスです
> それはRubyの使い方がまずいです
が激減して
> それはgemライブラリが1.9.1に対応してないからです
の自力バイパスが可能で
> それはgemライブラリ側の不具合です
を自力修復可能(なことがある)なので、残りの
> それはあなたの文字エンコーディングの扱い方のミスです
とせいぜい
・ それは1.9.1/1.9.2の新機能です
くらいで悩む程度になって気楽



241 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 11:08:04 ]
いつの話だよw2年前か?

242 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 11:12:31 ]
日常的に1.9.1や1.9.2を使って「いろいろな」gemを扱ってれば
わりとピキッと来ることが多いはずなんだけど

243 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 11:18:24 ]
日常的に使ってるが今やそんなことはほとんどないなあ
例えばどんなgemか3つ4つ挙げてみてよ

244 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 12:02:01 ]
そういや最近の新しいのはないな
文字エンコーディングが変なのは時々ひっかかるけど

245 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 12:20:32 ]
なんだかんだいってrailsだよりだからいまさら

246 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 12:26:33 ]
ライブラリの更新履歴見ると「1.9関連かよ!」と思うことはないでもない

247 名前:デフォルトの名無しさん [2010/12/20(月) 12:32:00 ]
#!/usr/bin/ruby -Ku
# -*- encoding: UTF-8 -*-
require 'rubygems'
require 'active_support'
require 'date'
p Date::today
p Date::today.last_month

このスクリプトで,test.rb:10: undefined method `last_month' for #<Date: 4911101/2,0,2299161> (NoMethodError)
のエラーが出てしまいます。
対処法知ってますか?

環境は,intel iMac 10.6.5
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]

ruby 1.8.6 (2009-06-08 patchlevel 369) [universal-darwin9.0]のppc miniでは問題なかったのですが。


248 名前:デフォルトの名無しさん [2010/12/20(月) 13:24:57 ]
動かないほう、Rails 3が入っていないか?
last_monthのかわりにprev_monthを使用すべし。


249 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 14:11:42 ]
>>239
rubyのバージョンの数字が2桁にならない保証ってもう過去の話?

250 名前:デフォルトの名無しさん [2010/12/20(月) 17:39:07 ]
日常的に使ってない初心者な俺は
amazon-ecs(+Hprocit)で >>240 みたいな目にあった



251 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 20:03:32 ]
class Foo
 def << name, price
  puts "#{name}=#{price}"
 end
end

foo = Foo.new
foo << "smile", 100

エラーが出ます。なぜですか?
./main.rb:10: syntax error, unexpected ',', expecting $end



252 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 20:20:37 ]
説明不足なので補足。
foo << ["smile", 100]
foo.<< "smile", 100
という書き方をするメソッド定義はわかるのですが、
foo << "smile", 100
という書き方をするためのメソッド定義が分かりません。



253 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 20:27:27 ]
<<とか一部のメソッド名は2項演算子の形式をとるから。

254 名前:251 mailto:sage [2010/12/20(月) 21:06:25 ]
何とかなりませんか?
メニューに"smile"、100円を足す正しいメソッドは
mac.menu << "smile", 100
だと思うのですが、どう考えてもこの表記では書けません。


255 名前:デフォルトの名無しさん [2010/12/20(月) 21:16:54 ]
構文の問題なので、なんともなりません。


256 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 21:57:37 ]
へー、こんな制限があるんだ
知らなかった

257 名前:デフォルトの名無しさん [2010/12/21(火) 00:16:43 ]
DSLにかぶれると

menu :mac do
item 'smile', 100
item 'potato', 50
end

とか書いてしまいそうだ。


258 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 03:24:25 ]
PostgreSQLを使おうとpgを使っているのですが、SELECT ary FROM tableの結果
aryだけを配列としたいのですが、昔はPGResult.resultっていうのがあったみたいなんですが
今はないみたいで PGResult.each do ふにゃらら endでやっているのですが、
これで正しいのでしょうか? なにか釈然としません。

259 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 03:32:43 ]
ふが
ふが
ふが

260 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 06:26:53 ]
>>254
すでに回答があるように、言語使用上不可能。演算子はそういうもんだと思ってくれ。
回避策は、気に入ってもらえるかわかんないけど
mac.menu << "smile", 100
ではななくて
mac.menu "smile", 100
にするくらいしかない。

def menu(name=nil, price=nil)
 # 引数が指定されていれば追加する
 @menu << [name, price] unless name.nil?
 # メニューを返す
 @menu
end
または
def menu(*args)
 # 引数が指定されていれば追加する
 @menu << args unless args.empty?
 # メニューを返す
 @menu
end





261 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 09:14:31 ]
プログラム的な話ではないのですが、Rubyについて質問させてください。

よくRuby(Rails)が使用されている代表的なWebサービスとして、
Twitterが挙げられますが、以前はすべてRubyで書かれていたけど、
最近はフロントエンドがRubyで、バックエンドがScalaだと聞きます。

この場合のフロントエンド、バックエンドというのはどの部分を指すのでしょうか?
素人考えにはフロントエンドがUI、バックエンドがDBかなぁとか想像してますが、
そんな分け方するのかな?と疑問に思いました


262 名前:247 [2010/12/21(火) 11:43:51 ]
>>248
ありがとうございます。おっしゃるとおり,Rails3が入ってます。
gem list -l

actionmailer (3.0.1, 2.3.5, 1.3.6)
actionpack (3.0.1, 2.3.5, 1.13.6)
actionwebservice (1.2.6)
activemodel (3.0.1)
activerecord (3.0.1, 2.3.5, 1.15.6)
activeresource (3.0.1, 2.3.5)
activesupport (3.0.1, 3.0.0, 2.3.5, 1.4.4)
rails (3.0.1, 2.3.5, 1.2.6)

ただp Date::today.prev_monthと変更しても,
undefined method `prev_month' for #<Date: 4911103/2,0,2299161> (NoMethodError)
になります。
パッチレベルが低いからでしょうか?
システムデフォルトのとは別にrubyをインスコすべきか,悩みます。
とりあえず,お礼とご報告まで。

263 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 12:47:16 ]
>>262
rvm入れてgem環境分けておけばいいよ
Rails3が原因なら外しておける

264 名前:デフォルトの名無しさん [2010/12/21(火) 14:04:33 ]
古い時代にprevとlastの両方があったわけじゃないので、
使っているActiveSupportのバージョンに応じてprevとlast使い分けて
くだされ。
2.3.8 は移行を意図しているので両方あるはずだけど。



265 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 17:15:46 ]
こんな流れの中質問するのも申し訳ないんだけど、
公式リファレンスのEnumerable#max {|a, b| ... }の説明でめちゃくちゃ混乱してるんだ
なぜブロックのパラメータはふたつ?とか
「ブロックの値は〜期待してます。」の意味とか
全然理解できない
誰か使い方を教えてください

266 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 17:23:55 ]
foo が Enumerable だったとして
foo.max は
foo.max{|a,b|a<=>b} と同じ

比較のための値の計算の方法じゃなくて、大小比較の方法をブロックで外付けしてやるわけ。

267 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 17:34:06 ]
>>265
1. 数値の配列を sort メソッドを使わずに自力でソートするプログラムを書く
2. 1 を拡張して任意のオブジェクトの配列をソートするプログラムを書く

ここらへんまでやれば、たとえ 1 と 2 がうまく書けなかったとしても
max やら sort みたいに比較関数を渡すメソッドの使い方ぐらいは理解できるはず

268 名前:265 mailto:sage [2010/12/21(火) 18:54:51 ]
>>266
比較方法をブロック内に書くのか
全然気づきませんでした。ありがとう。

>>267
あとでやってみます

269 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 21:01:21 ]
>>261 ってスレ違い?

270 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 21:44:18 ]
まあだいたいはスレ違い
Rubyに絡めてくれれば乗る人もいたんだろうけど…



271 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 21:51:19 ]
>>270
そうですかー
>>261が理解出来たら、じゃあなんでRubyじゃダメだったのか、単に速度が遅かったからか、大量のつぶやきをさばけなかったのか、もしくは動的型によるリファクタのしづらさとか、それとももっと違う原因なのか、という部分も知りたいと思ってました

ここじゃスレ違いだとすると、どこで聞くのが適切でしょうか?

272 名前:デフォルトの名無しさん [2010/12/21(火) 21:52:14 ]
HTTPでクライアントに応対する部分がフロントで、
DBやファイルや他のデーモン・サービスと連携する部分がバック
だと思えばいいんじゃないかね。


273 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 22:13:27 ]
基本RubyとRailsはCPUコストやメモリコストが他のスクリプト言語や他のコンパイル済み言語よりも高い
これは単純に(ある程度の)足し算というレベルで高い
ごっつい処理をたくさんの人に提供、とかいうのだと、最終的にPHPのほうが最低2倍は捌ける人数多いと思う

でも、それでもRubyを使う人がいる
この世のあらゆるプログラムをCで記述しないのと同じような理屈
Rubyで初期開発して、処理負荷が間に合わなくなったら他の言語に移る、というのは
Ruby的にはまったく悲しむべき問題ですらない
むしろRubyの優位性を示す出来事であるとすら思う人が多いはず

公開プロダクトを最初から最後までRubyで運用し倒しましたとかいうのは
その人がお金持ちか基地外か過疎プロダクトかどれか

274 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 23:04:46 ]
>>273
matzはtwitterがscalaを採用したことを、負けたと思ってるみたいだけどな

275 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 23:52:11 ]
Ruby(onRails)を高速化すれば戻って来てもらえると本気で思ってる節があるな

276 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 01:13:36 ]
Rubyの適用範囲がもっと広ければなあと考える事は
特に作者としては自然なことだと思うが

277 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 08:07:10 ]
jp.rubyist.net/magazine/?0013-BundledLibraries
Net::HTTP.Proxy メソッドは、
Net::HTTP を継承したクラスを作成して、
作成した クラスを返します。
Ruby は非常に柔軟な言語であるため、
メソッド中に動的にクラスを作成して、
そのクラスを返すということが可能です。

このメソッドの中にクラスって意味がわかりません。
普通、クラスを作ってその中にメソッドを定義するのではないですか?


278 名前:デフォルトの名無しさん [2010/12/22(水) 08:11:08 ]
質問です
Windowsで下記のプログラムを-Eを付けて実行するとEncoding::UndefinedConversionErrorが
発生します。どのように修正すべきか教えていただけませんか

# coding: utf-8
require 'pstore'
db = PStore.new("pstest")
str = "あいうえお"
db.transaction{ db[1] = str }
db.transaction{ puts db[1] }

C:\home\mechanize>ruby -v
ruby 1.9.1p429 (2010-07-02 revision 28523) [i386-mswin32]

C:\home\mechanize>ruby -Ecp932:utf-8 hoge.rb
C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:499:in `write': "\xE3" from ASCII-8BIT to UTF-8
in conversion from ASCII-8BIT to Windows-31J (Encoding::UndefinedConversionError)
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:499:in `save_data_with_fast_strategy'
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:473:in `save_data'
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:335:in `block in transaction'
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:361:in `synchronize'
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:321:in `transaction'
from hoge.rb:5:in `<main>'

279 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 08:55:56 ]
ああ、pstoreの中のFile.newが外部エンコーディングに引っ張られてるのか
…これどうしよう

>>277
たいしたことしてない
Net::HTTP.Proxy メソッドの定義見るとわかるが、ClassクラスのオブジェクトをClass.newで作って、
それにmodule_evalでクラスインスタンス変数の定義書いて、そのClassオブジェクトを返すようにしてる

klass = Class.new
klass.module_eval{
attr_reader :name
def initialize
@name='A'
end
}
p klass.new.name #=> 'A'

ぶっちゃけこんなマニュアルの中でこんな宣伝する必要なんてないと思うけどね
1.9時代においては削除されるべき無用で紛らわしい雑談だと思うよ、個人的には

280 名前:デフォルトの名無しさん [2010/12/22(水) 09:11:16 ]
>>279
マニュアルじゃなくて雑誌記事でわ?




281 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 09:13:01 ]
pstoreするときだけ外部エンコーディングの影響をなくしたこれなら動く
当たり前だが

# coding: utf-8
require 'pstore'
db = PStore.new("pstest")
str = "あいうえお"
@evacuated_encoding_for_pstore = Encoding.default_external
Encoding.default_external = Encoding::ASCII_8BIT
db.transaction{ db[1] = str }
db.transaction{ puts db[1] }
Encoding.default_external = @evacuated_encoding_for_pstore

puts してるのは UTF-8 エンコーディングの UTF-8 バイナリ列のままだから
コマンドプロンプトでは化けるので注意

282 名前:デフォルトの名無しさん [2010/12/22(水) 09:28:50 ]
>>281
ありがとうございました。
リファレンスちゃんと理解できるよう出直します。

私のところでは、化けずに出力されてます。

283 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 09:33:59 ]
どっちかというと、File にエンコーディングを指定できない(または固定しない) PStore 側がへなちょこなんだと思う
ユーザー側にあんまり非はないし、この対処をマニュアルから読み取るのは不可能なんじゃないかな

284 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 10:19:08 ]
>>275-276
言語のユーザーや仕事の開発者としては、Ruby向いてないところに差し迫ったら乗り換えて当然と思ってしまうけど
Matzは立場上(本気でそう思ってなくても)悔しがらないとあかんのでは?w

285 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 10:44:23 ]
>>277
>メソッド中に動的にクラスを作成して、
>そのクラスを返すということが可能です。
>
>このメソッドの中にクラスって意味がわかりません。

メソッドの中でクラスを作成し、それを返す。ただそれだけ。

これはもとのマニュアルが悪いな。「動的に」なんて初心者にわかるはずがない。
直すなら
「メソッドの中でクラスを作成して返します」
「メソッドを実行するたびにクラスを作成して返すことができます」
とか。


286 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 11:18:44 ]
>>284
それは単に表面的なスタイルの問題じゃないの?
インデント強制だからPython は嫌だとか言ってる人たちを思い出すな

287 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 11:20:24 ]
どこをどう読めば>>284がスタイルの問題になるのかまったくわからない。
アンカーミスだよな?


288 名前:286 mailto:sage [2010/12/22(水) 11:22:51 ]
>>287 すまん。確かに275-276が違う所をさしてるように見えてしまった

289 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 12:22:12 ]
最近Rubyはじめたんですが、クロージャのような無名の処理はみなさんどうやって文書化してます?


290 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 12:27:25 ]
ソースがドキュメント



291 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 15:23:46 ]
jrubyのnkfが壊滅的なのですがどうすればいいんでしょうか
jrubyで文字コード変換するなということなんだろうか

292 名前:デフォルトの名無しさん [2010/12/22(水) 16:21:18 ]
>>291
もうJava標準APIを呼んでしまえ。
String#getBytesとかエンコード指定付きコンストラクタとか
Reader/Writerとか。


293 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 19:09:44 ]
>>274
>matzはtwitterがscalaを採用したことを、負けたと思ってるみたいだけどな
うそだぁ
ソースは?






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

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

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