1 名前:デフォルトの名無しさん [2008/04/14(月) 15:16:22 ] プログラミング言語 D (D Programming Language) について語るスレッドです。 過去スレは >>2 ■本家 ttp://www.digitalmars.com/d/ ttp://www.kmonos.net/alang/d/ (和訳) ■コンパイラ ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家) ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド) ■参考URL ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究) ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF) ttp://dsource.org/ (dsource) ttp://tinyurl.com/3da5oa (C/C++に疲れた人のD言語) ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語) ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか) ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座) ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画) ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games) ■ IDE ttp://dronten.googlepages.com/dscite (DSciTE) ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks) ttp://www.dprogramming.com/entice.php (Entice Designer) ttp://www.dsource.org/projects/descent (Descent) ttp://www.dsource.org/projects/poseidon (Poseidon)
443 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:26:51 ] >>441 はうぉるたん
444 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:35:24 ] TangoがDの命名規則に従う伏線とか…
445 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:45:37 ] >>443 やめてくれww
446 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:48:48 ] tango.text.Regex の正規表現のコンパイルの遅さに萌え
447 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:09:02 ] gdc on MinGWのビルドがうまくいかん。 2.x系が使いたいんだが、 最近のバイナリってどっかにないかな?
448 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:04:51 ] をるたんそろそろ更新をあたえてくれ〜
449 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:03:08 ] tango.text.Regexがdebugビルド不可なのは、何の意図なのだろうか
450 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:03:47 ] debugなんてのは臆病者のやることだ。
451 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:21:22 ] 臆病者と馬鹿者のどっちになるかってことだな。
452 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:54:06 ] うぉるたんやプロパティの+=はまだかいの
453 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:08:26 ] さっき食べたでしょ
454 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:50:05 ] C++のstd::vectorぽいことをしたいのですが 動的配列+phobosのalgorithmで頑張る? →push_backしたい。 →remove_if等が存在しないような? tangoのcollectionを使う? →sortやremove_ifをしたい場合、toArrayで配列にしないと無理? →stable_sortが存在しないような? いまいちこれだという方法が無い気がするのです。 なにか良いライブラリ等ありますでしょうか。
455 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:47:21 ] →push_backしたい。 int[] a; a ~= other; →remove_if等が存在しないような? 2.x系なら ttp://www.digitalmars.com/d/2.0/phobos/std_algorithm.html#inPlace int[] arr = [ 1, 2, 3, 4, 5 ]; // eliminate even elements auto r = eliminate!("(a & 1) == 0")(arr); assert(r == [ 1, 3, 5 ]); assert(arr == [ 1, 3, 5, 4, 5 ]); で無理かな?
456 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:30:55 ] Version D 2.015 Jun 17, 2008 PICマイコン対応…と夢想しかけた。
457 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:36:30 ] * Function templates can now deduce the return type if they are declared with auto. 戻り値型推論キター * Added Constraints to templates. どうせならconceptまで実装してくれよ。
458 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:44:30 ] (1) auto func(T)(){ return 1; } (2) auto func(){ return 1; } (1)は通るのに(2)は通らない。けち臭いなあ
459 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:57:25 ] auto func()(){ return 1; } でおk
460 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:58:50 ] ああ、テンプレートはパラメータなしでもよかったのか。 でも、ばっちいお…
461 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:29:31 ] 戻り値の型推論!! でもなんで無名関数とテンプレートだけなんだ * Added Constraints to templates. これは何かすげーなw
462 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:32:20 ] テンプレートの型推論のルーチンを 使い回すのが難しいコードになってるとか邪推。
463 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:51:41 ] 無名関数の戻り型推論って結構まえからできなかったっけ?
464 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:01:38 ] そだね 今回できるようになったと言ってるわけじゃないんだわ
465 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:14:16 ] auto f()(){ typeof(return) a; return a; } void main() { f(); } コンパイラしんじゃうよー
466 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 01:03:34 ] Constraintにキーワードifつかっちゃったのか。 なんか気持ち悪いな
467 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 01:37:43 ] 予約語はできるだけ増やさない、みたいな方針があるのかな。 前から結構使いまわしてるよね。
468 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:05:49 ] ちょっとlibpngが使いたいと思ってポートがあるかなと思って検索してみたら、 こんなスレがひっかかってちょっとワロタ D言語でエロゲーつくって ttp://pc11.2ch.net/test/read.cgi/gamedev/1091256780/
469 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:09:43 ] DからDirectXってそんなに面倒そうでもなさそうなんだがな・・・・・? Cとのインターフェースはあるんだから
470 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:12:49 ] すでに実例あり ttp://video.google.com/videoplay?docid=-3577027688253678001&q=D%E8%A8%80%E8%AA%9EBOF+2008-03-01&ei=mUFZSJScBobCwgO55s2IDg .hから.dにするときにマクロの展開だけが面倒
471 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:21:43 ] >>470 正真正銘プロの犯行に吹いたw
472 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:27:09 ] >>470 なんという勇者w DirectXなんてほとんど使ったことないが、 面白そうだからちょっといじってみるか
473 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:32:51 ] >>468 まったく人がいなくて吹いた。 SDL+OpenGLのほうがポーティング揃ってるし、DirectX使うより楽だとおも。 たしかゲーム用にラップしたライブラリあったし。 あとフリーゲームの『去人たち』って、エロじゃないけどノベルゲで、D言語で作ってたはず。 ただシステム糞重くてうわーって感じだったけど。
474 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 09:45:23 ] >>465 呼び出す側で古代C言語みたいにvoid型でキャストしよう。
475 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 12:14:53 ] DのIDLコンパイラとか誰か作ってないのかなあ
476 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:15:34 ] >>469 DirectXはCOMオブジェクトだから、ポーティングの仕方がCライブラリとはちょっとだけ違う。
477 名前:デフォルトの名無しさん mailto:構文上無理かね? [2008/06/19(木) 16:37:52 ] ここまで型を書かなくてよくなったら もういっそのこと無名関数テンプレートが欲しくなったんだがw auto dg = (T,U)(T t, U u){ return t+u; }; するとこうなって auto dg = (auto t, auto u){ return t+u; }; 最終的にはこうか?w auto dg = (t, u){ return t+u; }; これなんてマクロ?
478 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 16:40:21 ] つーか、macroキーワードが使える日が早く来ればそれでいいんだよ…
479 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 16:50:40 ] 無名関数テンプレートが欲しいのは分かるが、できるとしても alias (T,U)(T t, U u){ return t+u; } dg; が精一杯。
480 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 17:09:07 ] >>477 どうぞ。 auto dg = new class { auto opCall(T, U)(T t, U u) { return t + u; } };
481 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:27:30 ] writeln(typeid(typeof((int i){}))); 2.015でデリゲート型の引数が表示されないんだけど、前からだっけ?
482 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 21:08:46 ] >>470 この会社に入りたい
483 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:04:03 ] >>481 前からじゃない? ↓1.0 codepad.org/CREaEBun
484 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 02:58:03 ] なんでBufferedFileはデストラクタでcloseしないんだ とおもってソース見てみたら、そもそもデストラクタなかった。 どうなってんだよ。
485 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 03:26:35 ] > これはつまり、 デストラクタからはメンバオブジェクトを参照できないことを意味しています。 これがなければデストラクタも使い物になるというものの…
486 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 03:57:45 ] とりあえず必要だと思うのは、scopeメンバ変数だな。 コンストラクタで一回だけ初期化できて、オブジェクトがdeleteされるときに道ずれにdeleteするの。
487 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 04:04:44 ] Tango導入しようかなあ… phobosは統一性なさすぎて辛い…
488 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:30:25 ] >>485 ファイルハンドルのような開放しなければならないメモリはガベコレの外にあるのだから、デストラクタに開放処理を書いても問題ないと思うけどね。
489 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:33:35 ] IDisposable的なhackが必要になるってことか。
490 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 15:29:12 ] >>485 これって、メンバオブジェクトをdeleteすることも認められないのかな?
491 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 18:20:16 ] あーもー英語使わなくてもphobosのtrunkにコミットできたい
492 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:39:11 ] staticメンバにリストを作って管理とか無理かな
493 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 21:29:05 ] >>486 そんなのイラネwwww って思ったけど、必要だな・・・
494 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 21:45:08 ] >>488 たしか、デストラクタって呼ばれる保証はないんじゃなかったっけ? だとしたら確実に行われなければならない処理をデストラクタに書くことはできないと思うのだけど。
495 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:10:12 ] デストラクタからcloseとかの後始末関数を呼べばいいよ。 scope変数に入れたときは、必ずスコープアウトするときにデストラクタ呼ばれるから。
496 名前:デフォルトの名無しさん [2008/06/21(土) 23:15:25 ] C++で言うところの純粋仮想関数のように、 抽象クラス側のメンバ関数定義において 派生クラスで必ず上書きをする事を明示する修飾子ってありますか?
497 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:19:56 ] abstract
498 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:26:36 ] >>497 ありがとうございます!
499 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:27:51 ] abstract属性
500 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 03:41:51 ] auto outfile = new FileConduit("output.txt", FileConduit.WriteCreate); auto file = new FileConduit("hogehoge.txt"); auto buf = new BufferInput(file); while (buf.fill(buf) != IConduit.Eof) { auto str = buf.slice(buf.readable); Cout.output.write(str); outfile.write(str); } Tango なんだけど、Conduit から入力したものを複数の Conduit(?) に出力したいとき、 こういう風に一回バッファを介すしかないの?なんだか妙に生ぐさいやり方で気持ち悪いんだけど、 もっと良い方法ない?Conduit, Buffer, Input/OutputStream のあたりの仕組みが全く理解できない
501 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 05:45:30 ] OutputStreamを継承して、複数のOutputStreamに流し込むようなオブジェクトを作ればいいのでは? codepad.org/hco2juAc
502 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 07:15:28 ] std.algorithmって今のところ配列にしか使えない? 自作のコンテナでも、イテレータ定義すれば使えるのかなと思ったんだが、そもそもイテレータの作り方がよくわからん。 opStarAssignとかないし。
503 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:34:52 ] >>502 それ、以前調べたけどまだ無理だと思う。 std.algorithm の中でイテレータに対して foreach range 文を使ってるんだけど 現状では foreach range 文をカスタマイズできないから、独自イテレータを定義できない。
504 名前:500 mailto:sage [2008/06/22(日) 13:27:30 ] >>501 おお、わざわざdクス。その方向でいってみるよ、ありがとう。
505 名前:500 mailto:sage [2008/06/22(日) 17:02:06 ] あやしい InputFilter を作ることで、どうやらやりたいことが出来たみたいだ。 改めて>>501 にdクス。 ttp://codepad.org/FtRWpF3b
506 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 19:23:09 ] ConduitとStreamってどう違うの?
507 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:13:10 ] IConduitはInputStreamかつOutputStreamなのだから、同じなんじゃないかと。 ただ、どうやらConduitがベースになってて、他の便利なストリームに突っ込んで使うのがいい感じらしい。 Conduitは「入出力先」、Streamは「使い方」みたいな使い分けなんじゃないかと思う。 あと、InputStreamとOutputStreamはほかのStreamとは若干違って、Conduitの役割をInputとOutputで分割したようなものだと思って使ってる。
508 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:15:20 ] >>503 なる。どうもありがとう。 ……がっかりだーorz
509 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 09:16:36 ] はぁ?手軽に最高速がDの売りなんじゃないですかぁ? バカなの? ぶっちゃけC++のほうが100万倍マシ
510 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 09:22:31 ] ええ全く、ウォルタンに言ってやってくださいよー
511 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 09:25:52 ] >>509 元ネタはRubyだったのに何でC++に変えたの?
512 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:40:30 ] 複数ファイルを一度にimportする方法ってありますか? // ファイル a.d module a; // ファイル b.d module b; とかあった場合に // ファイル include.d module include; import a; import b; とかして import include; でaとbをimportみたいにしたいのですが。
513 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 14:02:24 ] public import a, b; とかかな。 調べずに発言
514 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 14:43:31 ] 文字配列の連想配列の配列の配列の長さを変えるにはどうしたらいいのでしょうか int main(){ char[][char[]][] list; list.length = 100; return 0; } とすると途中で止まってしまいます。 どのようにしたら止まらせずにlistの長さを伸ばしたり縮めたりできるのでしょうか
515 名前:514 mailto:sage [2008/06/23(月) 14:46:04 ] すみません既出のバグなんですね… >264試してみます
516 名前:514 mailto:sage [2008/06/23(月) 15:04:03 ] すみません、やっぱり分からないです nullで埋めるというのも分かりません list[0] = null; とやっても使えないですし 連想配列を含む配列は使わない方がいいのでしょうか
517 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:30:43 ] 別にそれ自体として使わないほうがいいってことはないだろうが、 バグがあるんだから使わないほうがいいだろう。実際に使えないわけだし。
518 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:41:51 ] 動いた codepad.org/og1d1ogP
519 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:44:49 ] 連投失礼 しばらくしたら消えるみたいだし、一応貼っておく -- int main(){ typedef char[][char[]] Map = null; Map[] list; list.length = 100; writef(list.length); return 0; } -- 100
520 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:51:37 ] しばらくといっても結構長いみたいだね >>20 のもまだ消えてないみたいだし
521 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 19:12:28 ] >>20 template Res(int N, O) { res!(N) << O.toString(); in { assert(O >> N); } invariant O = N; enum O = N; throw new O(">>" ~ N.toString()); } mixin Res(1, 乙); はっちゃえ
522 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 19:43:26 ] 何のコードかと思ったら>>1 乙とはw
523 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:02:01 ] foreach( i, v, vs) { if( v.noneed ) { vs.remove(i); } } これが、2.0.15でできなくなった・・・ しかたないか
524 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:11:30 ] foreach( i, v; vs) { じゃなくて?
525 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:21:00 ] あ、それそれ ごめん
526 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 23:08:02 ] >>518 ありがとうございますm(_ _)m 不思議だ… 何でtypedefかませると動くんだろう もう構造体かクラスかで囲ってそれを配列化しようかとか思ったけど 凄い人はやっぱりいるもんだなぁ 既出だろうけどモジュールと同じ名前のディレクトリがあるとldで躓いてコンパイル失敗するね >519を動かそうと思ってn.dってファイル作ってdmd nさせたら nってディレクトリがあるもんだから失敗した\(^o^)/
527 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:17:50 ] ttp://dsource.org/forums/viewtopic.php?t=3279 このやたらハイテンションな中国人によると、Entice Designer で日本語が入力できない問題は、 同梱の Scintilla のバージョンが古いせいらしい。このポストのとおり、SciTE のバイナリを 落としてきて、SciLexer.dll -> enticelex.dll にリネームして上書きすれば日本語が通ったよ。 Entice、補完はいまいちだけど Descent より軽いので、漏れはコードエディタとして重宝してる。
528 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:30:56 ] 連想配列のlengthは読み取り専用だから>>261 は動かなくて当然だけど、 >>514 は連想配列か普通の配列かの判断が甘いから起こるのかな。 typedefすれば確実に普通の配列だとわかるからlengthに値をセットできる、と。
529 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:47:32 ] >>528 その理屈はおかしい、 >>261 のaは連想配列ではなくて動的配列だし、 typedefすることによって型の曖昧さが減るということもありえない。
530 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 07:09:37 ] 実行環境がLinuxだからとかではなくて?
531 名前:518 mailto:sage [2008/06/24(火) 08:01:25 ] 一応説明すると、 配列のところ読んだら連想配列も動的配列も長さ0で初期化されるとあったから ふとtypedefするときに初期値を新しく指定できるっていうのを思い出して試しただけだったり (最初は適当な配列で初期化しようとしたけど、連想配列リテラルがよく分からないからnullにしたら動いた) 試しにtypedefの = null を削るとcodepadでもTimeoutする 何で初期値指定すると動くのかとかはよく分からんが
532 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 15:15:58 ] >513 できました!ありがとうございます。
533 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 17:30:23 ] >>531 本来、nullと長さ零の配列は同じ扱いのはずなんだけどねえ
534 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 21:55:41 ] 全く同じわけではないらしい void main() { int[] a = null; int[] b = [1,2,3]; b.length = 0; assert(a == b); // success assert(a is b); // fail }
535 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:30:46 ] >>533 最初の頃はそういってたけど、いつの間にか仕様が変わったらしい。
536 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 11:08:17 ] 下記のように場合に、インナークラスから自身が持つフィールドと同名の 親階層のフィールドにアクセスしたい場合の方法ってありますか? superは継承の場合だし、CTest.Value_はコンパイルエラーに。 class CTest { int Value_; CInner Inner_; class CInner { int Value_; void Function(){ // 自身のValue_を表示 writefln("%d",Value_); // 親階層のValue_を表示する場合は?? writefln("%d",???); } } this(){ Value_ = 1; Inner_ = new CInner(); Inner_.Value_ = 2; } void Function(){ Inner_.Function(); } }
537 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 11:28:43 ] >>536 ttp://www.kmonos.net/alang/d/2.0/class.html#nested
538 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 11:50:47 ] >>537 ありがとうございます。 this.outer.Value_ でいけました。
539 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 13:42:23 ] そういえば outer ってキーワードなのな
540 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:34:50 ] conceptまだー?
541 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 01:31:03 ] image.blog.livedoor.jp/warosmania/imgs/0/6/063e2fb7.jpg
542 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 01:38:53 ] 何やらブラクラ危険と専ブラが教えてくれるのだが
543 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:44:44 ] >>542 心霊写真と見せかけてしばらく見てると白粉野郎がアップになるやつ。