Ruby 初心者スレッド Part 24
■ このスレッドは過去ログ倉庫に格納されています
【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
【最新安定版の Ruby1.8.7 の使用をお勧めします】
※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。
1.9 の新機能の一部が利用可能なので初学者にお勧めです。
※ただし十分安定しているとは言えないので
プロダクション環境での利用にはお勧めしません。
関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・モジュール名やエラーメッセージでググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0153デフォルトの名無しさん
2009/01/07(水) 19:20:39でも課題の内容からすると、まさにその方法を想定してるんだよな、たぶん…
0154デフォルトの名無しさん
2009/01/07(水) 19:20:41そこまで面倒見る気はないw
クラスが自分のインスタンスのサーチをするサンプルを示しただけ。
0156デフォルトの名無しさん
2009/01/07(水) 19:31:20( ゚Д゚)<えっ
インスタンスを入れた変数の名前を文字列として知ってどうするの?
まさかevalするわけじゃないよね。
>>151で
s1 = Student.new("foo")
としたあとに
p s1
p Student.find("foo")
このふたつが等しくなるんだけど、それでも変数名が必要?
(Class.newやStruct.newは代入した変数名に依存した処理をしてるけど
あれってスクリプトレベルでできたっけ?)
0157デフォルトの名無しさん
2009/01/07(水) 19:36:22>>150に答えて
これがしっかりしてないと外部の人間はメソッドが作れないよ
課題の一部だっていうんだから、きっとfindメソッドを他のどこかで使うんじゃないかい?
0158デフォルトの名無しさん
2009/01/07(水) 19:39:55s2 = Student.new(引数7つ)
s3 = (ry
Student.find("引数に対して検索文字列")
# ↑ここで検索文字列を引数に持つのがs1〜s3のどれか判定
s●.他の処理
としたかったんです…
最初からこう聞いてれば良かったですねorz
0159デフォルトの名無しさん
2009/01/07(水) 19:43:34じゃあもうひとつ
その find メソッドを作ろうと決めたのはもしかしてあなた自身?
「Studentクラスのインスタンスの集団から該当するモノを抽出する」というのが本来必要な処理だったりしない?
そのために必要だと「あなたが思ったもの」が、「Student クラスにあるべきだと考えた find メソッド」だったりしない?
0161デフォルトの名無しさん
2009/01/07(水) 19:45:46selfっていうのはnewされたオブジェクト本体で
そのあとに代入される変数の中身そのものだから
s = Student.find("引数に対して検索文字列")
s.他の処理
これでいい。変数名は知る必要がない。
s1をひっぱりだす検索をすれば、sの中身はs1と合致する。
0162デフォルトの名無しさん
2009/01/07(水) 19:47:09findメソッドを作るというのは課題の条件です
0163デフォルトの名無しさん
2009/01/07(水) 19:57:42こういうのは、ふつーに作ると、こういう処理になる
s1 = Student.new(arg1)
s2 = Student.new(arg2)
s3 = Student.new(arg3)
...
students = [s1, s2, s3, ...]
hit = students.find{|s| s.name = 'なまえ'}
と書きかけて、ちょっと思う
もしかして、データの検索って>>132みたいなDBで行う?
0164デフォルトの名無しさん
2009/01/07(水) 20:03:25カオスすぎる
0166デフォルトの名無しさん
2009/01/07(水) 20:18:19エスパー衆、おつ
0167初心者
2009/01/07(水) 22:26:54よろしくおねがいします
0168初心者
2009/01/07(水) 22:27:33環境はシグウィンです
0169デフォルトの名無しさん
2009/01/07(水) 22:28:49ゼロまたはイチから作ることもできるけれど、おそらくそのための知識は無いことでしょう
0170デフォルトの名無しさん
2009/01/07(水) 22:31:35それだっ(・∀・)!
0171デフォルトの名無しさん
2009/01/07(水) 22:31:58そういや、完全初心者だった4年くらい前の頃に作った画像フェッチャは中でwgetが動いてるな
いいかげん書き換えたいんだが、問題なく動作してるし別にいいか、みたいな
HTMLとHTTP(と、情緒的Webサーバ管理)に関する知識がないと作れないからねえ
0172初心者
2009/01/07(水) 22:33:33なおかつ画像URLがリンクになっていないので自前で
解析しなくてはいけないのですが、クローラ的なものは使えますか?
wgetで挑戦したのですがサーバにはねられました。
ちなみにC++はプロです。
0173デフォルトの名無しさん
2009/01/07(水) 22:35:11ならドキュメント嫁、で終了。
0174初心者
2009/01/07(水) 22:37:22Rubyは変なキツネの漫画を読んだだけなので
どういうモジュールがあるのかとか、どういう作りにすれば
いいのかとかわけわかめです
0175初心者
2009/01/07(水) 22:39:500176初心者
2009/01/07(水) 22:43:01Net::HTTP.start('www.yahoo.co.jp', 80) {|http|
response = http.get('/index.html')
puts response.body
}
これでなんかアクセスできたっぽいのですが、
構文が意味不明です。
解説きぼんぬ
0177デフォルトの名無しさん
2009/01/07(水) 22:43:530178デフォルトの名無しさん
2009/01/07(水) 22:46:20Hpricotとopen-uriで満足したから使ったことないんだけれど。
0179デフォルトの名無しさん
2009/01/07(水) 22:46:370180初心者
2009/01/07(水) 22:49:30ありがとうです
0181初心者
2009/01/07(水) 22:52:52新しい言語は刺激的です
0182デフォルトの名無しさん
2009/01/07(水) 22:54:460183デフォルトの名無しさん
2009/01/07(水) 22:55:20ちゃんとリンクになってるならMechanizeも楽だけどね。
Mechanizeのメソッドを上書きして、
取得してきたHTML書き換えてリンクにしてからパースさせるという手もできそう。
0184デフォルトの名無しさん
2009/01/07(水) 22:58:41それなりになんとかなりそうなならなそうな
0185初心者
2009/01/07(水) 23:07:24StringIOの中味をダンプ松本したいのですが
printメソッド読んでもなにも表示されないです
0186デフォルトの名無しさん
2009/01/07(水) 23:08:360188初心者
2009/01/07(水) 23:16:57これはちょっと受け入れがたい衝撃でした。
タイプ量減らすためでしょうかね
0189初心者
2009/01/07(水) 23:25:100190デフォルトの名無しさん
2009/01/07(水) 23:25:44タイプ量を減らすためなのは確実。
0191デフォルトの名無しさん
2009/01/07(水) 23:31:51連想配列のこと。と言えばいいのかな。
0192デフォルトの名無しさん
2009/01/07(水) 23:33:180193デフォルトの名無しさん
2009/01/07(水) 23:33:58開発者がpって打ったとき冷蔵庫にザッハトルテがあることを思い出して食べてたら
うっかり忘れちゃってたのが今でもそのままになってるに決まってるんだぜ
0194デフォルトの名無しさん
2009/01/07(水) 23:35:29wgetを使ったこともないような人間はそもそもまともなものを作れない
Webブラウザを使ったことのない人間がWebブラウザを作れるか?
0195デフォルトの名無しさん
2009/01/07(水) 23:37:230196初心者
2009/01/07(水) 23:38:12metaにレスポンスヘッダが格納されているはず・・・
でもSet-Cookieが見つからない・・・
0197デフォルトの名無しさん
2009/01/07(水) 23:40:31通信に必要な仕様を読んだ
他人に聞かないと作れないってことは、仕様の知識がないということ
仕様の知識がないのなら、他人が作ったお着せのプログラムを使い倒すことから始めるべき
それで不満が出てきてから勉強を始めても遅くはない
0198初心者
2009/01/07(水) 23:42:12でみたら"set-cookie"で入ってました。。。
ブロックつきなんたら構文、便利ですね
0199デフォルトの名無しさん
2009/01/07(水) 23:42:36根拠がないくせに
「決まってるんだぜ」
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー'´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
0200デフォルトの名無しさん
2009/01/07(水) 23:48:16だれだっけ
事務クラーク?
0201初心者
2009/01/07(水) 23:48:55cookie
だけだとundefined local variableとか怒られて
cookie = ''
だと通ったのですが、Why?
0202デフォルトの名無しさん
2009/01/07(水) 23:49:300203デフォルトの名無しさん
2009/01/07(水) 23:53:54http://ruby-lang.org/ja/man/
0204デフォルトの名無しさん
2009/01/07(水) 23:54:16ティム・バーナーズ・リー氏だと思う。
0205デフォルトの名無しさん
2009/01/07(水) 23:55:51あまりに恥ずかしい
仕事して金もらってれば一応プロではあるが、実力はアマチュア未満じゃないか
0206204
2009/01/07(水) 23:56:130207204
2009/01/07(水) 23:58:16# 1990年11月 - ティム・バーナーズ=リーが最初のWebサーバとウェブブラウザを試作する。
# 1991年2月 - バーナーズ=リーが開発したウェブブラウザであるWorldWideWebをインターネットに公開する。
http://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6#.E6.AD.B4.E5.8F.B2
>>205
釣りじゃねーの?
0208初心者
2009/01/08(木) 00:11:06Rubyでは未初期化での変数定義は許されないんですか?
C/C++では許されるので、そのあたりに疑問を抱いただけですが・・・
ちなみに私の書いたプログラムのユーザは全世界で数千万単位です。
0209初心者
2009/01/08(木) 00:19:47たどりつけました。
みなさまのご指導のおかげです。
画像取得&Zip化は明日にします。
どうもありがとうございました。
0210デフォルトの名無しさん
2009/01/08(木) 00:29:39>他人に聞かないと作れないってことは、仕様の知識がないということ
>仕様の知識がないのなら、他人が作ったお着せのプログラムを使い倒すことから始めるべき
>それで不満が出てきてから勉強を始めても遅くはない
仕様の知識がないのはRubyについてで、
wgetとかHTTPの仕様には詳しそうじゃん。
wgetがRubyで実装されてるっていうなら別だが。
てかお前の読解力がなさすぎ
0211デフォルトの名無しさん
2009/01/08(木) 00:39:45ドキュメント読めばいいだけの話じゃん。
仕様を理解するのが面倒だから人に聞いたのかも知れないけど。
0212デフォルトの名無しさん
2009/01/08(木) 01:20:210213デフォルトの名無しさん
2009/01/08(木) 01:26:490214デフォルトの名無しさん
2009/01/08(木) 02:33:53class Blog
def chk_aaa(site)
content = Array.new
site.search("div.AAA").each { |entry|
content << entry.to_s.toutf8
}
return content
end
end
site = Hpricot(open("http://hogehoge.net").read)
aaa =Blog.new.chk_aaa(site)
上ので言えばdiv.AAAの中にdiv.BBBという要素があるときに
aaaからsearchするにはどうすればいいでしょうか?
0215デフォルトの名無しさん
2009/01/08(木) 02:37:07entry.search
0216デフォルトの名無しさん
2009/01/08(木) 02:38:23site.search("div.AAA").search("div.BBB").each
0217デフォルトの名無しさん
2009/01/08(木) 02:48:00すいません。
やりたいのはaaa.search("div.BBB")なのです。
しかし、aaa.searchするにはaaaはArrayなので
それをまたHpricotに投げないといけないのかなとおもいまして・・・。
0218デフォルトの名無しさん
2009/01/08(木) 07:03:39p でいろいろ表示してみるとわかるが、Hpricot の構造は
・ parse でパースした最初のHTML … Hpricot::Doc
・ 条件などで抽出されたタグ単体 … Hpricot::Elem
・ 条件で抽出された複数のタグ … Hpricot::Elememts
になってる。で、search や at は Hpricot::Elem にも Hpricot::Elememts にも定義されてるから、
search や at をし続ける限りにおいて、メソッドチェーンは途切れない。
ということで、「chk_aaa の返り値を Hpricot::Elememts のままにしておく」が正解。
Hpricot のオブジェクトを文字列にするのは検索や抽出操作が完全に終わった最後の最後に行う。
それまでは「○○タグを表すオブジェクト(が複数詰まった配列互換の何か)」として扱うのが楽。
class Blog
def chk_aaa(doc)
return doc.search("div.AAA")
end
def pick_BBB(doc)
return doc.search('div.BBB')
end
end
doc = Hpricot(open("http://example.com").read)
aaa =Blog.new.chk_aaa(site)
puts "aaaの最初は #{aaa[0].inner_html} だよー" # ← たとえば画面表示時に文字列にする
bbb = aaa.pick_BBB(aaa)
0219デフォルトの名無しさん
2009/01/08(木) 07:08:37class Blog
def pick_BBB(doc)
return doc.search('div.AAA').search('div.BBB')
end
end
doc = Hpricot(open("http://example.com"))
bbb = Blog.new.pick_BBB(doc)
とかしてくっつけてしまう、または、もしCSSセレクタの記法を勉強できるなら
class Blog
def pick_BBB(doc)
return doc.search('div.AAA div.BBB')
end
end
doc = Hpricot(open("http://example.com"))
bbb = Blog.new.pick_BBB(doc)
としてしまうのがコンパクトだとは思う。aaa が途中で必要なのなら仕方ないけれど。
0220デフォルトの名無しさん
2009/01/08(木) 07:55:32>>99
> URI.escapeはURIの中に出てきたらおかしいものだけをエスケープする。
> +はURIの中に入っていても全く問題ないのでエスケープされない。
という妥当な流れから、
> +をエンコードしたいなら、CGI.escapeを使えばおk。
なんでこういう結論になるんだよ。っていうか最初にこれ言い始めた奴誰よ出てこいやオラ
>>95
URI.escape には2番目の引数がある。以下マニュアル
> URI.escape(str[, unsafe])
> URI 文字列をエンコードした文字列を返します。
> unsafe には、URI として指定できない文字を正規表現か文字列で指定します。
ということで
require 'uri'
url = 'http://www.google.com/search?hl=ja&q=Ruby+on+Rails&lr='
p URI.escape(url).to_s
p URI.escape(url,'+').to_s
とすると
"http://www.google.com/search?hl=ja&q=Ruby+on+Rails&lr= "
"http://www.google.com/search?hl=ja&q=Ruby%2Bon%2BRails&lr= "
になる。CGIのエスケープはURIエスケープの代わりにはできないから、これにすべき。
0221デフォルトの名無しさん
2009/01/08(木) 08:04:54irb> puts URI.escape('http://example.com/q=ねこだいすき', '+').to_s
http://example.com/q=ねこだいすき
irb> puts URI.escape('http://example.com/q=cat だいすき', Regexp.union(URI::UNSAFE, /\+/)).to_s
http://example.com/q=cat%20%E3%81%A0%E3%81%84%E3%81%99%E3%81%8D
うーん、めんどくさいっすな
0222デフォルトの名無しさん
2009/01/08(木) 14:03:24require 'jcode'
s = '平成21年1月1日~平成21年12月31日'
p s.split('〜')
s = '平成21年1月1日~平成21年12月31日'
p s.split('~')
なんですが、全角の〜では分割できない?
ruby 1.8.6 (2008-03-03 patchlevel 114)です。
0223デフォルトの名無しさん
2009/01/08(木) 14:12:30["平成21年1月1日", "平成21年12月31日"]
["平成21年1月1日", "平成21年12月31日"]
できたよ。
Unicodeの全角チルダ(FULLWIDTH TILDE)と波ダッシュ(WAVE DASH)の区別が
どーのこーのという問題だろうか。
0224デフォルトの名無しさん
2009/01/08(木) 14:22:44・ 2バイト文字…ああ、Unicode だから2とは限らないのか…の正規表現には u をつける
p s.split(/〜/u)
というのはどうだろ
0226デフォルトの名無しさん
2009/01/08(木) 21:28:38ありがとうございました.
やりたいことはブログタイトルや個々のエントリを構造体に入れて,構造体.エントリ.searchのようにしたかったので
aaaが発生するようになりました.
まず,returnのさいにHpricot::Elementsで返すようにして修正していこうと思います.
0227デフォルトの名無しさん
2009/01/08(木) 22:00:20href内にcat_xxxxx.htmlがあるaの要素をsearchするにはa[*=cat_]だけでOK?
これでやるといらないところまでついてくるんだよな
0228デフォルトの名無しさん
2009/01/08(木) 23:30:43例えば
http://blog.codezine.jp/editor/2007/10/rubyhpricot.php
を読んでいると
(doc/:h1).each do |h1|
のような表記が出ます
これについて自力で調べたいのですが、Googleは記号類を無視するようで
これが何かわからないと調べることができません
そのようなときに、皆様はどう調べていますか?
この例だと、/:h1って何だとかです
h1はHTMLのタグなのは判りますが、なぜ文字列として""で囲まないのか
また each do |h1|の|h1|は何だとか
これは例ですが、Rubyを最近使い始めてこういうところで困っています
何かいい方法があればご教授下さい
0229デフォルトの名無しさん
2009/01/08(木) 23:38:23Ruby "/:"
みたいにクォーテーションで括るかな。
0230デフォルトの名無しさん
2009/01/08(木) 23:40:51/ は除算演算子をオーバーロードしたものじゃないのか?
/: で一塊じゃないはずだ。
まあ、普通はリファレンスマニュアルの索引で調べるよ。
0231デフォルトの名無しさん
2009/01/08(木) 23:44:360232デフォルトの名無しさん
2009/01/08(木) 23:44:40searchの別名だ。
最近始めたばかりというならもう少し基礎やる時間を作ればいいと思う。
0233デフォルトの名無しさん
2009/01/08(木) 23:44:59の場合、
doc →Hpricot::Doc のインスタンス
/ →docのインスタンスメソッド(/演算子の多重定義)
:h1 →/ の第2引数であるシンボル
|h1| →eachに与えられたブロックの単なる引数の名前
と、まず構文の要素を正しく認識しなきゃいかんね。
0234デフォルトの名無しさん
2009/01/08(木) 23:50:340235デフォルトの名無しさん
2009/01/08(木) 23:51:24irb 上で実行して, それぞれの変数にどんなオブジェクトが入ってるのか調べるのも大事
p object.class
p object
みたいな感じで
まあわかる人ならソース追うのが一番だけど
0236デフォルトの名無しさん
2009/01/08(木) 23:54:22うわああああああ説明めんどくさああああ
>>231がそのまんまだな
0237デフォルトの名無しさん
2009/01/08(木) 23:55:18ぐぐる以前に、そのページのコードの前にある参考ページに全部
書いてあるじゃん。
一般論としてということであれば、やっぱりぐぐる以前にリファレンスなり
入門なりを読むべきでしょう。
0238デフォルトの名無しさん
2009/01/09(金) 00:17:42エクセル操作の命令をメソッドの定義内で書いたときにエクセルのメソッド名?に空白が
含まれているものだとエラーが出てうまく動きません。
例:
def hoge
excel.Sheets(2).Select
end
は正しく動くのですが、
def fuga
excel.Sheets(2).Move After = excel.Sheets(1)
end
は"Move After"の"Move"と"After"の間に空白が入っているために
”dynamic constant assignment”というエラーが出てしまいます。
スペースをなくしたりするとこのエラーは消えますが、当然他のエラーが出ます。。
おそらく空白があるために後ろの"After"を定数と認識しているのではないかと思うんですが、どうなのでしょうか?
色々なエクセルのメソッドを自作のメソッドに定義して呼び出して一度に実行、みたいなことをさせたいと思っているんですが
文法上メソッドの定義内でこういったエクセルのメソッドを定義するのは無理なのでしょうか?
何かうまい解決策がありましたらご教授お願いします。
0239デフォルトの名無しさん
2009/01/09(金) 00:32:02> おそらく空白があるために後ろの"After"を定数と認識しているのではないかと思うんですが、どうなのでしょうか?
その通り
スペース含んでたりしてRubyがメソッド名としてうまくパースしてくれないときは Object#send を使うといい
excel.Sheets(2).send('Move After') = excel.Sheets(1)
ただWIN32OLEでExcel使ったことないから動作確認はしてない
0240デフォルトの名無しさん
2009/01/09(金) 00:37:19MoveがメソッドでAfterは引数だって情報が引っ掛かったのよ
()でくくってみるってのはどう?
0241デフォルトの名無しさん
2009/01/09(金) 00:39:38ttp://doc.loveruby.net/refm/api/view/method/WIN32OLE/i/invoke
0242デフォルトの名無しさん
2009/01/09(金) 00:42:06でも>>228の該当部分の構文要素を分解すると、
「doc」「/」「:h1」なんだよな……。
0243238
2009/01/09(金) 01:07:01助言ありがとうございます。
教えていただいた方法を試してみたのですがダメでした・・・
syntax error, unexpected '=', expecting kEND
excel.Sheets(2).send('Move After') = excel.Sheets(1)
>>240
助言ありがとうございます。
Move(After)ってことですよね。こちらも同様にダメでした。。
syntax error, unexpected '=', expecting kEND
excel.Sheets(2).Move(After) = excel.Sheets(1)
>>241
助言ありがとうございます。
これも同様にダメでした・・・orz
syntax error, unexpected '=', expecting kEND
0244デフォルトの名無しさん
2009/01/09(金) 01:10:320245238
2009/01/09(金) 01:13:01>>241
excel.invoke('Sheets(2).Move After') =excel.Sheets(1)
excel.Sheets(2).invoke('Move After') =excel.Sheets(1)
excel.Sheets(2).Move.invoke('After') = excel.Sheets(1)
と試してみましたがすべて下記のエラーでした。
syntax error, unexpected '=', expecting kEND
0246227
2009/01/09(金) 01:17:37たとえば
http://blog.livedoor.jp/techblog/
ここのカテゴリの部分の要素を抜き取りたいのです。
div.entry-categoryで抜き出せばいいのですけど、複数あった場合はだめで、
複数あった時の共通するのはURLにcat_xxxxx.htmlとなります。
ので、hrefにcat_があればその要素を抜き出したいのですが・・・
0247227
2009/01/09(金) 01:20:36<a href="http://example.com/test/cat_1234.html>カテゴリ</a>
<a href="http://example.com/test/cat_5678.html>カテゴリ2</a>
のカテゴリ、カテゴリ2を抜き出したいです。
0248デフォルトの名無しさん
2009/01/09(金) 01:23:08多分こうだ
excel.Sheets(2).Move("After" => excel.Sheets(1) )
ttp://homepage1.nifty.com/markey/ruby/win32ole/win32ole05.html
0250227
2009/01/09(金) 01:31:10inner_textだとカテゴリ,カテゴリ2と抜き出せるのですがね。
URLにcat_を含むaタグのinner_textを抜き出したいのです。
0251238
2009/01/09(金) 01:32:54出来ました!
ありがとうございます!!
なるほど、そんな書き方があったんですね。
これで他のキーワード引数付きのメソッドも問題なく使えそうです。
本当にありがとうございましたm(_ _)m
0252デフォルトの名無しさん
2009/01/09(金) 01:33:11■ このスレッドは過去ログ倉庫に格納されています