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


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

C#, C♯, C#相談室 Part60



1 名前:デフォルトの名無しさん mailto:sage [2010/06/27(日) 03:17:20 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part59
pc12.2ch.net/test/read.cgi/tech/1274019232/

Visual C# 2010 Express Edition 日本語版
www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>1-5くらい


193 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:11:03 ]
隠蔽はあるだろ…
タスクマネージャのタスク一覧を直接弄って消すのは10年前のウィルスですらやってる事
今はサービス、他社のタスク一覧まで消す奴もある

194 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:11:45 ]
常駐させずにタスクスケジューラに登録しとけ

195 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:17:16 ]
>>194
おまい、天才だな・・
サンクス

196 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:18:25 ]
>>190
そいつの心臓が弱くていきなり出たメッセージに驚いてポックリ逝ったら責任とれるのか?あ?

197 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:18:51 ]
>>190
本人に直接言え。

198 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:19:09 ]
>>196
スキルのねぇカスはひっこんでろ

199 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:20:33 ]
それはキモいというか、普通にそんなことされたら嫌だろよ。

200 名前:196 mailto:sage [2010/07/03(土) 20:22:38 ]
>>198
176も178も私ですけどスキルがなくてすいませんねえ

201 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:23:20 ]
タスクマネージャの心配はするのにタスクスケジューラはOKってどういうことだよw
確かにタスクスケジューラなんてまず使わないけどな。

俺に言えるのは、100%確実な方法はないってことだな。
パソコンの操作を全部記録するようなソフトを入れてないとも限らないし。



202 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:25:29 ]
>>201
普通、タスクスケジューラなんて使わないよな?
ちょっと不安になってきたw
操作を記録するソフト入ってたら無理だなw

203 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:28:44 ]
勝手にアプリを入れさせるようなレベルなんだし、
スタートアップに置いといてもばれないんじゃね?

204 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:31:04 ]
スタートアップに入れておけ。
誕生日に起動した時だけダイアログを出して他のタイミングは即座に終了して消えるようにする。

205 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:33:25 ]
スタートアップはたまに覗いたりしないか?

206 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:34:35 ]
svchost.exeって名前にしとけ

207 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:35:44 ]
>>200
事実は事実

208 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:43:33 ]
>>190
誕生日はお前以外の相手と一日中デートしててPCを起動しない可能性は?
カーチャンとかだったらごめん

209 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 20:51:35 ]
>>187
そりゃMVVMじゃなくて君が開発した別のパターンだ。
MVVMに関するMSの記事のどこを見てもそんなことは書いてない。
もちろんWPFはそのパターンを公式にはサポートしてない。頑張るのは君だ。

210 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 21:00:56 ]
>>209
えー
だってMVVMのパターンの概要を見るとViewとViewModelの分離の事は書かれてるよね
この疎結合の副作用を利用して差し替えをしてるだけであって完全マイルールってわけじゃないよー
それにイベントハンドラを書くのは結合度の観点からも勧められないと著名人達は口を揃えて言ってるよん

誰かAdorner何かを使ってTextBoxをマスク処理してるコードを格好良くみせてくれないかなーとか期待してたんだけど無理かなぁ


211 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:16:45 ]
WPFしらんのでテキトーだけど、UserControlをアダプタとしてPasswordBoxのせて、
仲介してもらうとかできない?



212 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:20:00 ]
>>211
ググるとそのやり方をやってる風なコメントがあるよねー
んー、やっぱりその方法がいいのかな
と言う前に、やってみるか!

213 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:45:58 ]
>>212
うむ。そうするのじゃ

214 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:08:00 ]
MVVMにこだわるんだったらそのUserControlのためにまた別のViewModelが必要だから
UserControl作ったって同じことでしょ

215 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:09:26 ]
おぬし、ViewModelを勘違いしとるぞい

216 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:10:07 ]
というと?

217 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:13:29 ]
なんで別のViewModelが必要と思ったの?

218 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 00:54:11 ]
ViewModelを差し替えたいならせめてインターフェイス通すべきだろ
実際のバインディングの動作には全く関係ないけどね
公式サンプルのPrismはViewがViewModelをインターフェイス経由で露に参照してる
差し替えたりしてはいないけど、バインドするVMのメンバは基本的にインターフェイスに宣言されてる

219 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 01:04:25 ]
Prismをかなり使い倒してるんだがそんなインターフェイスでViewとViewModelを繋いでるサンプルなんてあるか?
RegisterTypeでIDataService何かのサービスをレジストしたりするのはよくやるが



220 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 01:44:52 ]
素人としては、ViewModel をストラテジパターンの要領で差し替えて使ってると
認識してて、そうなるとインタフェース必須だと思ってるんだけど違うの?

221 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:07:06 ]
Prismにしろ何にしろViewModelにインターフェイスは使えないだろjk
RoutedUICommand一つとってもViewModel側にstaticで定義しないと駄目なんだぞ?



222 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:08:56 ]
あ、インタフェースって言ってもViewModelから呼ばれるストラテジのインタフェース
って意味で。
そういう感じで作ればXAML共通で、VMの実処理だけ差し替えられるよな?と。

223 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:10:11 ]
つまりどういう事だってばよ!?

224 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:22:57 ]
つまり、固定のViewModel と、固定の Model の間で検証したりするロジックが
いくつかパターンがあるんで、それをアダプタ化して差し替え可能にしてるって
ことじゃね?>>187 は。

225 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:25:42 ]
とか思ったら PasswordBox 悩む必要無さそうだな、それじゃw

226 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:48:34 ]
BというクラスがあったとしてAクラスで A hoge = new A(); というように実体が作られたとします。
そこでBクラスがAクラスで実体が作られたという事を知ることはできないでしょうか?

Bクラスのコンストラクタで作られたクラスを取得したいです。
引数にでもして入力すればいいとも思うのですが自動でとれたら便利だと思いました。お願いいたします。

227 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:49:20 ]
A hoge = new A(); は B hoge = new B(); です、失礼しました

228 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 02:54:04 ]
ttp://msdn.microsoft.com/en-us/devlabs/ee794896.aspx
これ使ってObserverを使う

229 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 07:17:08 ]
どうもどうも〜

230 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 11:07:45 ]
Rxってイベントベースじゃなかったっけ?
A側にもB側にも特別なコードを追加せずにnewを検知しようと思ったら
ILのリライトしかないと思うけどそんなことやってくれるの?

231 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 12:07:23 ]
>>230
Rx 進めてる時点で、>>229 はそういうイベントコード書けって事だと思うけど。
ぶっちゃけ、それなら、class B に static な NewInstance イベントでも足して、
B のコンストラクターでイベント起こせせばいい気はする。

特別なコード足したくないならそれは無理。



232 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 12:46:38 ]
IEnumerable,yield,ToObservableで簡単に実装出来るけどな
ただRx強力かつ難解なんで上級者でも中々手がない代物
複数人の開発じゃ手が出しにくい

233 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 12:47:31 ]
×ただRx強力かつ難解なんで上級者でも中々手がない代物
○ただRxは強力かつ難解なんで上級者でも中々手が出せない代物

234 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 12:58:47 ]
イベントベースの非同期プログラミングが面倒だから
LINQ使ってDSLっぽくイベントハンドラを作ろうというやつだよね
そんなに難しいの?

235 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:10:36 ]
うーんどうだろ。
Rx が難しいっていうよりは、C# のイベント機能が簡単すぎる気もする。
あとは、やっぱドキュメント少ない。

236 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:22:00 ]
using System;
using System.Diagnostics;

namespace OnCreate {
class B {
static event Action<Object, EventArgs> Created;
public B() {
OnCreated(new EventArgs());
}
void OnCreated(EventArgs arg) {
if (Created!=null) {
Created(this, arg);
}
}

static void Main(string[] args) {
Created += CreateEventHandler;
B b = new B();
}
static void CreateEventHandler(Object obj, EventArgs arg) {
Console.Out.WriteLine(new StackTrace().ToString());
}
}
}
とか言ってみるテスト。スレッドセーフじゃないよなぁこれは。

237 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:24:37 ]
Rxはおもしろ事が出来そうなんだけどドキュメント少ないし
やっぱり非同期系は難しい
Rxよりはいるけど.Net4の並列系も使いこなしてる人がすくないよね

238 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:26:15 ]
ttp://sazameki.jp/programming/programmer-levels
C#じゃないけど、それとなく当てはめてみて
おまいらはどのレベルなの?

239 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:29:53 ]
それ微妙に納得いかないのよねぇ。

レベル1とかのプログラミングの基礎知らなくても、
専門知識だけ持った人が専門知識を生かせるような簡単プログラミングの時代来ないとダメだ。

240 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:30:44 ]
Rxでいう非同期はマルチスレッドの非同期じゃなくて
同期スタイルなら { キーが押されるまで待機(); A(); キーが押されるまで待機(); B(); }と書けるところを
キーイベントを使った"非同期"スタイルだと状態を保持する変数を持たないといけなくて面倒だよねという話

241 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:32:31 ]
>>238
それで行けば専門家レベルだな
基準がぬるいよ



242 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:36:00 ]
>>240
その状態を保持しながら通知するから便利なんだろ?
簡単に言えばステートフルな非同期処理
だから強力なのさ

243 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:38:52 ]
>>238
これの初級レベルでここや初心者用で質問したら
ググれと言われて相手にされないだろwww
と思ったけど大学4年以上いっても初級レベルの奴がゴロゴロいるよな…

244 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:49:26 ]
>>236
void OnCreated(EventArgs arg) {
var created = Created;
if (created!=null) {
created(this, arg);
}
}
これでスレッドセーフ?
関係ないけどイベントハンドラ用のデリゲートを作りたくなかったらEventHandler<TEventArgs>
それと引数なしのEventArgsはEventArgs.Emptyを使う

245 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:51:38 ]
> var created = Created;
そのテクニックどっかでみたな?
どこだっけ?

246 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:59:09 ]
>>244
>スレッドセーフじゃないよなぁこれは。

247 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 14:07:55 ]
じゃあスレッドセーフにしてくれ
ロックはなしで

248 名前:245 mailto:sage [2010/07/04(日) 14:19:44 ]
あー思い出したわw
MSDNだ、そうそうw
ttp://msdn.microsoft.com/ja-jp/library/ms173168%28VS.80%29.aspx

で、横からだけどスレッドセーフ
public event EventHandler<EventArgs> Created = (_, __) => {}

こいつはPropertyChangedなんかで使われるテクニックだわな
(Week何とかつかえとかPrism使えとか言われてるけどw)

まー、このケースで言えばこれでOKだろ

さぁ、俺を褒め称えよ!w

249 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 14:26:00 ]
245△

250 名前:245 mailto:sage [2010/07/04(日) 14:34:44 ]
>>249
なはw
律儀にあんがとさんw

251 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:10:24 ]
すまん。>>244 の"スレッドセーフ?"と言ったのを、 >>236 の最後を見落としてて
揶揄してるんだと誤解してた。スレッドセーフにしてくれてたのね。



252 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:19:27 ]
いいよ気にしないで
慣れてるから

253 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:29:03 ]
>>244
これってなんでスレッドセーフになるの?
解説を聞きたい!

254 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:29:43 ]
>>248
public event EventHandler<EventArgs> Created = (_, __) => {}

これもなぜこれだけでスレッドセーフになるのかわからにぃ

255 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:32:20 ]
>>253
null比較がスレッドセーフではないからローカル変数に一時待避でスレッドセーフ

>>254
null比較しなくていいように前もって空イベント挿入でスレッドセーフ

また、△ってしてもいいんだぜ!

256 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:36:57 ]
>>253
if (Created!=null) {
/* この間に別のスレッドがイベントを-=してCreateをnullにする可能性がある */
Created(this, arg);

257 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:43:18 ]
はあ・・・また自演っぽいな

258 名前:fushianasan mailto:sage [2010/07/04(日) 16:46:58 ]
別に自演じゃないよ。
ホントにわかんないだけ。

259 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:50:31 ]
>>256
var created = Created;
Created-=********** --この時点でcreated -= *********
したのと同じことにはならないの?
参照型でしょイベントって。

260 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:58:33 ]
add/removeしたら別オブジェクト
a += b;は
TDelegate c = (TDelegate)Delegate.Combine(a, b)
a = c;
の略で、このとき
Object.ReferenceEquals(a, c)もObject.ReferenceEquals(b, c)もfalse

261 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:59:26 ]
君は
var objA = new object();
var objB = objA;

この時どうなると思ってんだ?
ちゃんとポインタ(厳密には違うけど)はコピーされてるんだぞ



262 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:59:42 ]
ならないの。デリゲートはStringと似たつくりになっていて、一度作成したインスタンスは変更できない。
イベントの実装はこうなってる
private EventHandler _Created;
public event EventHandler Created {
[MethodImpl(MethodImplOptions.Synchronized)] add { _Created = (EventHandler)Delegate.Combine(_Created, value); }
[MethodImpl(MethodImplOptions.Synchronized)] remove { _Created = (EventHandler)Delegate.Remove(_Created, value); }
}

[MethodImpl(MethodImplOptions.Synchronized)]のおかげでaddアクセサとremoveアクセサの呼び出しもスレッドセーフ。

263 名前:253,254,259(261は別人) mailto:sage [2010/07/04(日) 17:27:30 ]
>>260,>>262
解説ありがとう。
参照型だけど毎回インスタンスが生成されるクラスなんですね。
理解しました。


264 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 17:39:38 ]
何読んだらそう言うのがわかるようになるの?

265 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 18:47:37 ]
>>255
> null比較がスレッドセーフではないから
そういう話じゃないような

266 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 19:01:53 ]
>>265
うん、間違えたw

267 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 22:59:50 ]
あほか。nullはスレッドセーフだわ、ボケ。

268 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 01:22:17 ]
えっ?

269 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 01:44:53 ]
>>244
実はECMAの仕様ではスレッドセーフではなかったり。


270 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 03:05:16 ]
完全なスレッドセーフなど存在しない

271 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 03:07:36 ]
しかしlockを何個も書くのはかっこ悪いしめんどいんだが
このオブジェクトは最初から排他仕様だからよろしくみたいなことは出来ないのか?



272 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 10:20:28 ]
比較自体はスレッドセーフじゃないからあながち間違いではないけどな

273 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 13:46:46 ]
は?

274 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 14:22:32 ]
>>272
だよな 間違ってないよな
さすがだな

275 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 17:20:35 ]
え?
obj = nullは常にスレッドセーフだよ?
あと
obj = 0とobj = falseもさ
大丈夫?あぁネタかw

276 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 17:24:40 ]
ほ?

277 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 18:27:47 ]
それがどうであるかと>>244がなぜスレッドセーフなのかはまるで関係ないよね。

278 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 18:57:15 ]
>>275
obj = ""が抜けてるよ♪

279 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 22:54:43 ]
>>277
>>244がスレッドセーフであることの前提条件ではあるだろ

280 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 00:39:11 ]
C#でDllMainって使うにはどうしたらいいかわかるひといる?

281 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 00:45:48 ]
うん



282 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 00:49:24 ]
>>281
マジで知ってるなら教えて下さいm(_ _)m

283 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 01:45:26 ]
>>282
COMコンポーネントあたりでぐぐってみるといいよ
サムネイル表示するのをWindows7に移植しようとC#で作ってみたが
その時にそんな感じのことをした気がする
結局動かなくてテストに毎回再起動するのがまんどいので放置してるが

284 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 02:58:32 ]
>>279
いや、そんなことないが。落ち着け。

285 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 03:03:12 ]
とまぁ、えらそうに申しておりますが、俺も>>248 >>262で初めて知り、
>>265のツッコミをした程度のへっぽこです。
知らなかったらlockステートメント使ってたと思う。

286 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 03:30:32 ]
んなこたあどうでもいいから>>282に教えて上げなさい

287 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 03:39:33 ]
質問が曖昧すぎて回答できません

288 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 03:43:35 ]
とりあえずクラスライブラリとかDllImportとか曖昧回答して上げなさい

289 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 03:46:10 ]
ぐぐったら少ないけど情報出てくるね。

290 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 10:41:53 ]
デッドロックの恐れがあるからCLR2.0以降では禁止されているという話らしいよ

291 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 12:48:59 ]
約束は破るためにあるっちゅうことやな



292 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 13:06:04 ]
ところでこいつを見て欲しい。どう思う?
ttp://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_22/extremecs_22_02.html
Observerの変形と言えなくもない気がするが、状態オブジェクトが焼け太りしそうな悪寒。
実際んとこ、コレどんな場面で有効だと思う?

293 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 13:31:43 ]
Observerとかいう次元じゃなくてアプリケーション全体の構造の話でしょ
ステートが絶対に変化しないならいいんじゃないの
素直にやったら全部グローバル変数と変わらないから、テストのことを考えると
IProductsStateとかインターフェイスで小分けすることになるだろうけど
インターフェイス使っちゃうと後で変更がきかないよね






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

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

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