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


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

D言語 Part15



1 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 20:16:30 ]
プログラミング言語 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フロントエンド)
ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ)

■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://dsource.org/ (dsource)
ttp://www.sun-inet.or.jp/~yaneurao/dlang/
ttp://wisdom.sakura.ne.jp/programming/d/

876 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:40:31 ]
dmd 2.007で

void hoge(void delegate() func){
func();
}

void main(){
hoge({goto End;});
End:
return;
}

をコンパイルするとError: label End is undefinedってなるのと
mainのreturn;をはずすと(ラベルの後がすぐ}だと)エラー出すのは仕様通り?

877 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:51:03 ]
ラベルの後ろには文がないといけない。
End: ; ってしてみるといい。

878 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:58:46 ]
>>876
gotoで飛べるのは同じ関数の中のラベルだけで、
関数から飛び出したり別の関数へ飛び込んだりは出来ないよ。

879 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 01:38:38 ]
>>874
(´;ω;`)ぶわっ

880 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 05:34:50 ]
継・・・続・・・?

881 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:50:38 ]
継続はいらね

882 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:03:08 ]
あのさ、1系列はもういらない子なの?

883 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:32:21 ]
まぁ、一度もまともに固まったことのない言語に安定版の3文字など存在しないから、
1.xは実質的には、単なる「試行錯誤の跡地」であり、要らない子かもしれないな。
そこに何かを求めるのは、ついうっかりDの安定性に賭けて何か作っちゃった人くらいだな。

884 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:13:01 ]
今ふと気づいたんだけど、-v1オプションていつからか消えてる?



885 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:13:12 ]
>>883
ヒドスwwwww
でもそんな感じだな・・・
2.0もそうなるんだろうな・・・

886 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:19:54 ]
>>884
2.xには最初からなかったと思うけど
1.xにもなくなっているのかな

887 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:22:54 ]
C♯も3.0出るしな

888 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:26:53 ]
>>884
2.001から

889 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:48:23 ]
unrecognized switch '-debuglib=tango-base-dmd.lib'
Tango入れたらこんなん出てきたんですが、
これはどっか設定変えないと駄目なんでしょうか。

890 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:52:02 ]
DMDが古いんじゃね?

891 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 00:41:19 ]
入れてる dmd が古くて -debuglib オプションを持ってないんだろう

892 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 00:52:35 ]
omg
そうだったんすか。
ありがとうございました。

893 名前:デフォルトの名無しさん [2007/11/15(木) 02:07:06 ]
既出してたらゴメ。dmd2.007(win)で

import std.stdio;
void main()
{
auto A = new Object();
auto B = A;
delete A;
delete B;
writefln("end of process");
}
を実行すると、end of processは表示されるけど、
プロセスが終了しないんだが、

1.そういうことしちゃだめ。
2.今、gcがもっすごがんばってるからもうちょい待て。
3.delete式なんてただの飾りですよ。エロい人にはそれが分からんのです。
4.バグだけど直すほどの価値がない。
どれ?


894 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 02:15:54 ]
テキトーなクラスつくってデストラクタにwritelnでも入れとけば確認できるんじゃないでしょうか。



895 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 02:19:45 ]
ていうかよく見たら参照元がdeleteされたあとさらにdeleteしてるんすか。
これはやっちゃだめでしょう。

896 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 04:25:33 ]
気になって眠れないので調べたら、
「ポインタ、動的配列、参照変数は、 delete のあと null にセットされます。」
と言う一文が。
しかしこの場合nullがセットされるのは参照変数としてのA自体で、
Aの実体を参照してた参照変数のBはそのまんま(つまりゴミ参照してる)じゃないでしょうか。
なのでやっぱり複数の参照変数で参照されてる大元消したあとにdeleteするのはまずいかも。

897 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 09:24:20 ]
>>893
www.kmonos.net/alang/d/expression.html#DeleteExpression
 > それ以外の場合はガベージコレクタが呼び出され、
 > インスタンスに割り当てたメモリは直ちに解放されます。
とあるから、 delete A; でBが無効な参照になるのは確実だと思う。

ただ、解放済み(だけどもともとGCで確保した)領域への参照に対する
deleteについては仕様に言及がないと思うので、これは実装依存だと思う。
(つまり、実装によっては未定義動作となる可能性もあるということ)

実装依存となると、実装がどうなってるか分からない(今回の場合)なら
やっちゃ駄目な操作(選択肢の1)になるかな。

898 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:19:41 ]
ソースのどこで例外出してるか調べる方法ってありませんか?

dfl使ってツリービューとかにドラッグオーバーを何度か繰り返すと
例外吐くんですが、それがどこなのかわかりません。

899 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:59:14 ]
flectionedってそういうことできたっけ?

900 名前:893 [2007/11/15(木) 16:09:45 ]
>>894-897
あ、やっぱそっか。さんくす。
どうも4から疑ってしまう自分がいて、反省。
でも、例外とか吐いてくれるような仕様にならんかなあ。

901 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:18:37 ]
>>899
あれはTangoが無いと動かないみたいで。
dflとTangoの組み合わせは自分でやった限りでは出来なかったので。

902 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 20:52:50 ]
ddbg ttp://ddbg.mainia.de/

903 名前:デフォルトの名無しさん [2007/11/15(木) 21:26:28 ]
突然でアレなんだけどさ、これ

module a;
private import std.stdio;

module b;
import a;
void main()
{
std.stdio.writefln("hello");
}

>dmd b.d a.d

が通るって初めて知ったんだけど、キモくね?


904 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:32:41 ]
きもいね



905 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:34:31 ]
きもいけどどういう挙動が正しいのか仕様にはっきりと書いてないね。

906 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:43:37 ]
www.kmonos.net/alang/d/module.html
>デフォルトでは、import は private です。
>これは例えば モジュール A がモジュール B を、
>モジュール B はモジュール C をimportしていた場合、
>Cの名前はAでは探索されないということです。
>ただし、 import を特別に public と宣言すると、
>その import が取り込むモジュール内の全ての名前が、
>現在のモジュールを外からimportするモジュールにも見えるようになります。

未定義になるべきなのでは
もしかして実はデフォルトがpublicなのかなーとか思って明示的にprivate import aにしてみたがやっぱり通るね。

907 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:09:59 ]
バグじゃない?

908 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:00:36 ]
>>903
それ、モジュールAとimport a;が無くても通るんだよね。
だから、仕様だと思ってた。
フル修飾だとimport不要、みたいな。

909 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:01:33 ]
それだとstatic importの立場がなくなるがな

910 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 07:49:58 ]
8ビットのビットマップクラスをつくてるんだが、streamのFileをオープンした瞬間にアクセス違反で落ちる。
Windowsなんだけど、なんでかな〜。いまのとこ、無いファイルを作ろうとしてるんだけど。
コンソールに違反だよ〜ってでるからAPI内部の犯行ではないはずなんだけど。
あ、コンパイラのバージョンは1.015です。

    bool Save(char[] name, bool IsIgnor = false){
        BitmapFileHeader bmh;
        bmh.bfType = 0x4d42;// 'B'<<8 + 'M';        
        
        if(exists(name) == true){
            if(IsIgnor == false) return false;
        }
        
        static if(IsDebug) writefln("file:",name);
        File fo;
        fo.open(name,FileMode.OutNew);
/*      if(fo.isOpen == false) return false;
        
        fo.writeBlock(cast(void*)&bmh,bmh.sizeof);
        fo.writeBlock(cast(void*)&bih_,bih_.sizeof);
        fo.writeBlock(cast(void*)Palette_,uint.sizeof*Palette_.length);
        fo.writeBlock(cast(void*)Pixel_,ubyte.sizeof*Pixel_.length);
*/      fo.close();

911 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 08:22:13 ]
newせいよ

912 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 08:55:43 ]
>>911
ぐあ。はずかし!またやってしまった!!
くそー。癖って抜けないね。
なんにせよ、レスありがとう!!!!


913 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:16:10 ]
aliasじゃインターフェイスを実装したものとみなされないのか…

914 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:53:24 ]
Tangobos→Phango



915 名前:デフォルトの名無しさん [2007/11/16(金) 19:05:07 ]
Phagos

916 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:15:53 ]
Photangobos

917 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:21:30 ]
デバッグってvs2005でもいけるんでしょうか。
vs6だとうまく行くんだけど、vs2005だと作業フォルダ指定しても
ブレークポイントに反応してくれない。

918 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:21:37 ]
pthaonbgoos.

919 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:46:48 ]
phandango

920 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 22:20:40 ]
Tanpo

921 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:16:22 ]
Chi...

922 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:32:45 ]
>>889
>unrecognized switch '-debuglib=tango-base-dmd.lib'
自分もその現象が発生しました。Tango 0.99.3になってそのスイッチを使い始めたみたいです。
調査の結果、rebuildが-debuglibに対応できていないのが原因のようで、dsss最新版のrebuildを使ってみてもだめみたいです…
というわけで、dsssやrebuildを用いないでコンパイルするとうまくいくことがわかりました。
レスポンスファイルを作ってやるか、makeを活用するとよいかと思います。

というわけでそれを踏まえてDFL 0.96.01を使ってみたのだけど、いくつかはまったので使いたい方は以下を参考するとよいかと思います。
import\dfl\makelib.bat(23)にinternal/_stdcwindows.dを追加
import\dfl\makelib.bat(25)に_stdcwindows.objを追加
import\dfl\makelib.bat(34)の-v1を削除
でgo.batを実行してライブラリをビルドすることで解決したので参考までに載せておきます。

923 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:39:00 ]
>>917
ああそういうことだったのかな
前はソースレベルデバッグできてたのにいつの間にかできなくなったと思っていたら

924 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:45:01 ]
どなたかDflでドラッグドロップ系の処理が出来ている方っていますか?
いたらバージョンを教えてほしいのでスが。



925 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:39:57 ]
class A{
static void opBrace(void delegate() v){v();}
}
A{printf("brace");}
みたいなのが欲しい。


926 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:44:01 ]
q{} 文字列リテラルを追加しちゃったから、望み薄だな。

927 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:48:39 ]
>>926
あれは、{code();}.stringof とかの方がよかったと思うのにな。。

928 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:48:48 ]
tanpopo
tanbo
botan
popotan
bosan


929 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:53:37 ]
>>926
a(b)があるけど、opCallもあるから大丈夫だ。

930 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:55:55 ]
>>929
いや、そういうことじゃなくて…

931 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:12:34 ]
q{}を無くせばおk

932 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:20:01 ]
どういうことだ?
printf(q{A{"huga\n"}});は通る

933 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:43:14 ]
>>924
ドラッグドロップ系使う時は
Application.run(...) を呼び出す前に Application.autoCollect = false; として、
頻繁にGCが走らないようにすると、とりあえず落ちるのは回避できるみたい。
必要な領域までGCに解放されてしまってるのかも…

934 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:55:40 ]
直りました!

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



935 名前:デフォルトの名無しさん [2007/11/17(土) 03:21:23 ]
mixin(q{aaaaaaaaaaaaaaa});
//error!

936 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 07:50:54 ]
phungus

937 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 08:15:23 ]
matango
simeji
enoki
shitake

938 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 10:27:00 ]
ttp://www.dsource.org/projects/tango/wiki/0_99_3_release
・DMD builds no longer generate libphobos.a/phobos.lib, but instead utilize the -defaultlib switch.
This enables phobos to install side-by-side with Tango
・Also note that there is an experimental D2.0 branch in our repositories now.

939 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 11:22:11 ]
ttp://www.dsource.org/projects/tango/browser/branches/experimental/D2.0

940 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 11:35:17 ]
>>932
頭悪いのな。お前。

941 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:08:26 ]
よく言われる

942 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:14:43 ]
よく言われる932
よく言い、よく陰で思われる940

943 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 13:23:45 ]
よく言われる932
よく言い、よく陰で思われる940
よく言い、よく影で思われ、それに気づかない942

944 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 14:17:02 ]
class q{
static string opBrace(void delegate() d){return d.stringof;}
}
class q{
static string opBrace(string s){return s;}
}
とかできれば、q{}はいらないと



945 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 14:58:13 ]
そもそもqは何のためにあるの

946 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 15:01:26 ]
mixin(q{ some_valid_code_here; });

947 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:09:11 ]
>>946
ありがとう
えーとじゃあ↓じゃなくて
mixin("some_valid_code_here;");
そうしたい場合ってのはどんなとき?

948 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:39:11 ]
文字列と整数を合体させたい場合ってどうやるんでしょうか

949 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:43:54 ]
>>947
mixin(q{ this is not valid tokens; }); // error
mixin(q{ this_is_valid(); });

ってことじゃね。

950 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:49:33 ]
>>948
std.conv.to!(string)

951 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:59:29 ]
mixin(" this is not valid tokens; ");
でもエラー出ね?
出るエラーが違うのかな

952 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 18:12:02 ]
>>951
変数に格納したりするなら、エラーの出る場所が違うな。

953 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 18:26:50 ]
みんな分かってるみたいなのに
q{}の意義が全然わからなくて俺涙目
>>949 それをどういうときに使うのかと

954 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 18:48:38 ]
mixin て何か分かってんのかね、おまいは。



955 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:00:36 ]
わかりやすく説明すると、トークン文字列 q { ... }の内部の文字列は、Dのトークンであるので、
Dの字句解析をパスしなければならない。
つまり、文字列が、Dのソースとして解釈可能であるかどうかを判別できる。

956 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:01:46 ]
q{}なんてあったの初めて知った。
コードを文字列として渡すときに、ダブルクォートの中にコードを書くなんていう、
エディタ支援が受けられない(どころかむしろ邪魔になる)苦行に挑まんで済むわけね。

957 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:04:00 ]
え?そうなの?
俺は、変態なことやってる場所を簡単に検索できるためだと思ってた。

958 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:50:02 ]
import std.stdio;
void main() {
const a1 = "\"hoge\"";
mixin("string c1=mixin(\"mixin(\\\"\\\\\\\"huga\\\\\\\"\\\")~\\\"hoge\\\"\") ~ mixin(a1);");
writeln(c1);

const a2 = q{q{hoge}};
mixin(q{string c2=mixin(q{mixin(q{q{huga}})~q{hoge}}) ~ mixin(a2);});
writeln(c2);
}
どっちがいいかとか

959 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:19:35 ]
import std.stdio;
void main() {
const C = q{ mixin(A) + mixin(B) };
const A = q{ a };
const B = q{ b };
int a = 10;
int b = 20;
writeln( mixin(C) );
}
こんなことできたりとか

960 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:39:42 ]
なんという遅延評価…

961 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:49:09 ]
import std.stdio;
void main() {
const s = q{mixin(s)};
writefln(mixin(s));
}

962 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:59:16 ]
q{}はmixin用ってことでおk?

963 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 21:00:15 ]
import std.stdio;
alias string symbol;
template add(symbol o, symbol v) {
const add = `mixin( q{`~o~`} ) + mixin( q{`~v~`} )`;
}
void main() {
const c = add!(q{a},q{b});
int a = 10;
int b = 20;
writeln(mixin(c));
a = 100;
b = 200;
writeln(mixin(c));
}

964 名前:953 mailto:sage [2007/11/17(土) 22:21:54 ]
>>954
mixinは大丈夫

他のレスは後で試してみます
なんか分かりそう
ありがとん



965 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 03:48:38 ]
べつに構文はvalidじゃなくとも字句だけDの範疇ならOKだよね?
q{int int class class invalid;}とかやっても大丈夫だし。

966 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 04:33:28 ]
実行時mixinないかなー

967 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 04:39:23 ]
opStarAssignマダー

968 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 07:46:51 ]
亀ですまんけどちょっと質問>>542どうやって?
int a,b,c;
Tuple!(a, b, c) = Tuple!(10, 20, 30);とかって無理じゃね?

969 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:04:33 ]
>>968
template Tuple(T...) { alias T Tuple; }

970 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:07:40 ]
もしかしてDMD古いとできない?

971 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 11:12:39 ]
>>970
1.023/2.006 でバグフィックスされてできるようになったのでそれより古いとダメ

972 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 13:26:30 ]
obj[index] = value;
はopAssignでオーバーロードできるけど、
obj[index] += value;
みたいな複合代入をオーバーロードする方法ってある?

973 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 13:36:38 ]
opAddAssign

974 名前:デフォルトの名無しさん [2007/11/18(日) 13:39:55 ]
あ、配列か。
opIndexでオブジェクトを返すとか

()がいるけど



975 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 14:22:19 ]
>>971
1.020使ってたよ・・・(´・ω・`)
バージョンうpしたいけどgdcがなあ・・・

976 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 14:39:31 ]
opIndexOpAssign
opStarAssign
opStarOpAssign

このあたり追加して欲しい






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

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

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