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


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

ふらっとC#,C♯,C#(初心者用) Part41



1 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 12:30:18 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

前スレ

ふらっとC#,C♯,C#(初心者用) Part40
pc12.2ch.net/test/read.cgi/tech/1239599317/

116 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:38:35 ]
VB→C#なら手で変換しなくてもいいやん

117 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:40:50 ]
マクロはCから引き継いだ負債だな明らかに

118 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:42:03 ]
>>115
最悪なのは define マクロだよ、これが全てのツールを全滅させる。
インテリセンスやドキュメント生成、果てはテストツールまで
文法も破壊してしまうし、理解できない深刻なバグも誘発する。

119 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:42:54 ]
>>117
C#のdefineは、マクロじゃないぞ

120 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:47:59 ]
>>119
流れ読めるならそんなツッコミは出ないはずなのだが…

121 名前:デフォルトの名無しさん [2009/06/07(日) 15:49:19 ]
つかC++の話題はC++スレでやれっちゅーの、おまえら何しに来てんだ?

122 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 17:27:25 ]
異文化交流だよ

123 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 17:41:14 ]
せめてC++マスターしてからこいよ

124 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 17:50:48 ]
マスター(苦笑)



125 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 18:53:07 ]
そこまで書いたんなら最後まで教えてあげようよ

>>107
参照設定でMicrosoft.VisualBasic.dllを入れると
Microsoft.VisualBasicという名前空間でVB固有のクラスが使えるようになる

C言語は文字列をcharの配列で代用するという文化があって、
今でもCharとChar[]とStringを厳密に区別するから
文字列の処理は微妙にややこしいんだよな。
一番VBを使いたくなるのは、たぶんこういう時。

126 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 19:48:21 ]
> C言語は文字列をcharの配列で代用するという文化があって、
これ関係なくない?

むしろ、スクリプト言語の
どんどん暗黙の型変換を行いますよ
っていう文化の有無によるものだと思うんだけど

127 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:09:23 ]
生のC言語は文字列の扱いもう少し何とかならんかったのかとは思う

128 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:22:27 ]
文字列が扱えたら低級言語じゃなくなるだろ。
マクロだって微量のスタック領域しかない昔の処理系ではとくに有用なんだよ。

129 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:25:29 ]
要するに時代遅れって事だな

130 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:29:33 ]
それは違う。
ダイヤモンドの原石とダイヤモンドを比べて原石のほうを時代遅れと言ってるようなもの。

131 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:31:12 ]
C++だってマクロがなければ価値が半減する。
マクロがなかったらMFCなんか使えたもんじゃないよ。

132 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:35:18 ]
お前らC#以外の言語大好きだな

133 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:54:43 ]
結局昨日から沸いてる変な人に釣られてるんだよ…
さぞほくそ笑んでるだろうよ

134 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:57:20 ]
まったくC++に疲れ果ててC#に移り住んだのに、ここでC++の話題かよ
今後もC++使いたい奴は話し相手がいないからってここに来るなよw



135 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:03:00 ]
>>134
ある意味、C++の愚痴大会w

136 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:16:12 ]
C++のスレが最近やたらアゲられるが強烈に自演臭いんだよな、そんなに寂しいかwww

137 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:20:47 ]
皆C++一度は経験してるの?
C#の前にC++やっといたほうがいい?


138 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:22:07 ]
C++の勉強?必要ないかと
経験はあるよ、そりゃ当然、オレおっさんだし。

139 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:27:27 ]
C++のコンパイルの遅さとデバッグの面倒さに嫌気がさしてC#に移ってきましたよ

C++の知識はいらんけど、Cのライブラリの呼び出し方とCOMの知識はあると便利

140 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:37:19 ]
>>137
今から始めるなら別にC++要らない。
(参考程度に後から調べるとかはありだと思うけど)
今C++愚痴まくってるのは、俺含めみんな多分おっさん。

141 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:42:28 ]
ありがとございます
そんなにC++って面倒なのですか?
C#の方がメリットがありそうな感じとwikiで読んだぐらいなので、実感はありませんが
そんなに面倒ならC++組もC#に乗り換えればいいと思うんですがねぇ

142 名前:デフォルトの名無しさん [2009/06/07(日) 21:46:18 ]
>>141
しつこい、C++スレに池

143 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:47:35 ]
ただし向こうでC#の名前を出すなよ面倒だから

144 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:49:21 ]
textbox1.Text = "1";
textbox2.Text = "1" + "あ";

これを

string s = "1";
textbox1.Text = s;
textbox2.Text = s + "あ";

って書く意味は何が有利なの?



145 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:50:21 ]
C#使いの大半はC++からの移行組みのせいか
C++経験ない人は劣等感ありまくりだな。

146 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:50:53 ]
業務上の都合というものが色々あってだな

147 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:50:58 ]
"1" が別の文字列に変わったときに修正する箇所が1箇所で済む

148 名前:デフォルトの名無しさん [2009/06/07(日) 21:51:09 ]
うぜーな、自分で考えろ、sの定義行書き換えたら一斉に変更がきくってだけだろ。死ね。

149 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:51:53 ]
初心者は保守性第一に書くのが吉。

150 名前:デフォルトの名無しさん [2009/06/07(日) 21:52:37 ]
C++荒らしの自演だろ、アホくさ

151 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:52:42 ]
>>1-1000
スレ違い

152 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:52:58 ]
>>148
それだけじゃねーだろ。コンパイル結果見ろ。見て分からなきゃ市ね。

153 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:53:32 ]
>>150
どんだけ劣等感持ってんだよw

154 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:55:43 ]
>>152
分からん
死ぬ前に教えてくれ



155 名前:デフォルトの名無しさん [2009/06/07(日) 21:56:03 ]
C++も極めればそれなりに使える、自演C++厨房は巣に帰ってガンバレ

156 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:57:34 ]
C++に過剰反応する奴はもう寝ろ。疲れてるだろ。

157 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:57:35 ]
コンパイル結果はJIT次第だ、ローレベルの話がしたくて仕方がないC++坊は無視

158 名前:デフォルトの名無しさん [2009/06/07(日) 21:58:37 ]
>>156
あのさぁ、過剰反応つーか、埋め尽くすなよって話だろ
ここなんのスレだよ?言ってみろ

159 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:58:52 ]
>>157 ← JITがどういう処理をしてるか分かってない奴。

160 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:00:47 ]
>>158
反応しないでスルーできないのか?  スルーしたら埋め尽くされないの。2ch初心者?
おまえみたいのがいるから荒れるんだよ。

161 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:02:12 ]
>>158
スルーしろっつってんだよ。馬鹿か?

162 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:02:15 ]
ほっとていも、ほっとかないでも酷有様、つか埋め尽くし犯人お前だろ >> 160

163 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:02:41 ]
だまんねえと改行で埋めるぞ

だまれ

164 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:03:02 ]
>>158
【魔力】書き込むと願いが必ず叶うスレ【強力】409
だろが



165 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:04:11 ]
C++の人アタマおかし過ぎ

166 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:04:58 ]
それにしても >>142 一人で必死すぎだろw

167 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:05:08 ]
>>164
VB スレに誤爆すんなよw

168 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:05:31 ]
"1"が他に置き換わるような設計してる時点でミスですよ僕に言わせれば

169 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:06:03 ]
心療内科へいって治療してもらえ

170 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:06:22 ]
クラック対策だろjk

171 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:08:37 ]
メソッド内部で書かれたsは定数として処理されて出てこないよ
上でも下でも出力は一緒ね、メンテの問題だけね、変なやついるから相手すんなよ

172 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:10:14 ]
出力が違うと思ってた奴は一人もいないのに偉そうに説明すんな。

173 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:11:01 ]
>>171
分かってないな。そんな話じゃないだろ。

174 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:11:39 ]
つまらん話で発狂するなよ



175 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:12:31 ]
よほどコンプレックスがあるのだろう。

176 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:12:43 ]
もりあがってまいりました

177 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:14:07 ]
向上心なければどの言語でも無駄って事を知れ C++ の人

178 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:16:17 ]
おい黙れって言ってるだろ

179 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:21:59 ]
黙ったぞ

180 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:23:52 ]
>>178-179
お前変過ぎる、精神病院へいけ、今すぐ

181 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:28:46 ]
>>157
ふつうに考えてC#のコンパイル結果ってILの話だと思うぞ。

182 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:30:27 ]
>>157 >>171
スレが荒れているので聞き流されるかもしれないが、C#のコンパイラはあまり最適化などかけず、
かなり素直なコードを吐き出すんだが、それを知っているんだろうか。
public void SampleMethod1()
{
this.textBox1.Text = "1";
this.textBox2.Text = "1あ";
}
public void SampleMethod2()
{
string s = "1";
this.textBox1.Text = s;
this.textBox2.Text = s + "あ";
}
最初の質問の例を一旦コンパイルした後、ディスアセンブルするとこんな感じになる。
ほとんど最適化されてない。

183 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:35:40 ]
ディスアセンブル? バイナリをアセンブラにすることなんだが。

184 名前:デフォルトの名無しさん [2009/06/07(日) 22:39:25 ]
メソッドのインライン展開が行われたりするのは実行時なんだが、それを知っているんだろうか。



185 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:42:36 ]
>>182
ILやメタデータって string s のローカル変数名を保持してんの?
もしそうなら恥ずかしい名前つけれないんだが。

186 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:45:18 ]
>>184
そんなことは当たり前のことだから省略した。長かったからな。
>>185
そう。だから.NET用の難読化ツールとかが出回ってたりする。
前のスレでも話題になった。

187 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:46:22 ]
>>185
保持はしていないね、直接定数をロードしている。
ちなみに const string s = 1; としてしまえばどちらも一緒。

188 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:49:09 ]
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication2.Form1::textBox1
IL_0006: ldstr "1"
IL_000b: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
IL_0010: ldarg.0
IL_0011: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication2.Form1::textBox1
IL_0016: ldstr "1a"
IL_001b: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
IL_0020: ret
ちなみにこんな感じだね、しかしこんなのチクチク詰めていっても関係無くないw
あほくさあほくさ

189 名前:デフォルトの名無しさん [2009/06/07(日) 22:50:03 ]
フィールドと違って最適化で消えることはあるけど基本的には保持される

190 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:50:38 ]
じゃあディスコンパイルしたらどうやって >>182 の sって名前を特定したんだ?
>>182 はガセ?

191 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:51:29 ]
いちいちツッコミどころかC++厨房うぜぇーって感じだな

192 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:52:50 ]
ガセではない。IL表記ならこうだ。
.method public hidebysig instance void SampleMethod2() cil managed
{
.maxstack 3
.locals init (
[0] string s2)
L_0000: ldstr "1"
L_0005: stloc.0
L_0006: ldarg.0
L_0007: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox ImageComposer.Form1::textBox1
L_000c: ldloc.0
L_000d: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
L_0012: ldarg.0
L_0013: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox ImageComposer.Form1::textBox2
L_0018: ldloc.0
L_0019: ldstr "\u3042"
L_001e: call string [mscorlib]System.String::Concat(string, string)
L_0023: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
L_0028: ret
}

193 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:52:51 ]
reflectorでぐぐれ

194 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:53:51 ]
ああ、s2になっているのは、ローカル変数がたまたまsという
名前になっているのではないかと疑ったので変えてみた。



195 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:56:46 ]
>>192
おや、おれのと結果違うね
.method private hidebysig instance void Test2() cil managed
{
// コード サイズ 41 (0x29)
.maxstack 3
.locals init (string V_0)
IL_0000: ldstr "1"
IL_0005: stloc.0
IL_0006: ldarg.0
IL_0007: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication2.Form1::textBox1
IL_000c: ldloc.0
IL_000d: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
IL_0012: ldarg.0
IL_0013: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication2.Form1::textBox1
IL_0018: ldloc.0
IL_0019: ldstr "a"
IL_001e: call string [mscorlib]System.String::Concat(string,
string)
IL_0023: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
IL_0028: ret
} // end of method Form1::Test2
まっ、こんなのはコンパイラのバージョン次第で何でてるくかなどコンパイラの作り手の勝手なわけですが。

196 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:59:04 ]
/oの有無の違いに決まってるだろjk

197 名前:デフォルトの名無しさん [2009/06/07(日) 23:01:27 ]
pdbファイルが同じディレクトリにあったらildasmが読んでるみたいだ
アセンブリ自体には含まれない

198 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:04:17 ]
しかしなんで string s 使うか直書きするかの違いがILDの話になるんだと……
おかしくね?

199 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:04:40 ]
試したらアセンブリ自体には含まれないな。冷や汗かいたぜ。

200 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:05:45 ]
アホのC++坊よけには丁度いいかもしれんけど

201 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:08:33 ]
結論:string s 推奨。

202 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:18:48 ]
あんだけ荒れてたのにスレ止まった・・

203 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:22:07 ]
C#の話題、C++であってもC#と関連する話ならいくらでもレス付けますがな
C++サイコーっていいたいなら巣に帰れって事

204 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:25:41 ]
C++サイコーなんて主旨の書き込みはどこにもないわけだが。
一人必死でC++叩いてる奴が荒らしてただけだよ。



205 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:30:09 ]
まったくこれだけ書き込みまくっていけしゃぁしゃぁと、死んでしまえw

206 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:34:10 ]
一人汚いレスばかりする人がいますな。

207 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:37:31 ]
C++の人さ、努力って大事だよ、ちゃんと勉強してC++使えるようになろうな
そしたら、こんなスレッドで嫌がらせなどしなくても自信もって生活できるようになる。

208 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:48:10 ]
>>141はC++が初心者装った嫌味に見え
>>142が反応した
という流れじゃなかろうか

209 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 23:50:46 ]
ちょっと話変わるけど、Visual studio 2010でC#のインテリセンス変わったよな。
インクリメンタルサーチ式になったけど、あれはもう旧式に戻らないのか?オプションに設定項目はなかったが
進化だとしても旧式も用意して欲しいもんだ

210 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 00:03:54 ]
え?

211 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 00:15:42 ]
>>207
そうやって煽ってるのはおまえ一人だけなんだが。さっさと消えろカス。

212 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 04:04:23 ]
C#勉強中です。

Google LABSのソースコード検索をマニュアルの補助に使っているのですが、
ちょっと疑問に思うコードがあったので教えてください。

リソースの解放を確実に行うため、usingを使ってスコープを定義すると
いう方法があると思うのですが、そのコードではこう書かれていました。

SQLiteDataReader reader;
using (reader = command.ExecuteReader())
{
 何かの処理
}

この様にusingの外にDataReaderを定義して、usingの終わりで確実に
Dispose()されるのでしょうか?


213 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 04:12:07 ]
>>212
SQLiteDataReader reader;
try
{
}
finally


のように宣言することが推奨されている。

msdn.microsoft.com/ja-jp/library/yh598w02.aspx

214 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 04:14:03 ]
すまん変なところで送信してしまった。

SQLiteDataReader reader;
{
try
{
 // 何かの処理
}
finally
{
 if (reader != null) ((IDisposable)reader).Dispose();
}
}
と同等だけど
using (SQLiteDataReader reader = command.ExecuteReader())
{
 // 何かの処理
}
のように宣言することが推奨されている。



215 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 04:14:22 ]
>>212
using が実は現状確実にDispose してくれないという話的には Dispose され
ないと答えるけど、その話を除けば普通に
using(SQLLiteDataReader reader...)
とした場合と同等レベルには Dispose される。

これとそれの違いはスコープぐらいかな、意図がそれだけだと正直わか
らんが。

216 名前:212 mailto:sage [2009/06/08(月) 04:38:37 ]
>>213-215
ありがとうございました。

GCがいつ実行されるか分からないというのは一応承知してます。
安心してusing内に書くようにします。







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

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

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