C#のgenericsでは型パラメータを持つ型パラメータを制約するには余分な型パラメータが増えて困るorz

C#のgenericsでは、型パラメータを持つ型パラメータを制約するには余分な型パラメータを増やすしかありません(私が知らないだけかもしれないです)。
これが非常に不便で、genericsを駆使して抽象化を行ってゆくと、この制約に泣かされることになります。
何のことか分からないですね。とりあえず、次のプログラムを見てください。
(さらに…)

投稿者:Yamaguchi Youhei 投稿日時:

KeyStoreの作り方

KeyStoreを作ったり、その中にオレオレ証明書を格納する方法を紹介します。
JDKが導入されていれば、KeyStoreを編集するためのkeytoolが入っています。
(Windowsの場合 X:Program FilesJavajdk1.X.X_XXbinkeytool.exe というパスにkeytoolが見つかるはずです。)

詳しい利用方法はSunのkeytoolのページを参照してもらうとして、SSLServerSocketを作るために証明書が1つだけ格納されたキーストアファイルを新規に作ってみます。
以下の例ではキーストアファイル名は”kyunkyun.keystore”です。また、証明書の識別名は”moemoe”です。
どちらも、好みで設定してかまいません。
(さらに…)

投稿者:sato 投稿日時:

SSLServerSocketの作り方

以下のコードで単純にServerSocketFactory#createServerSocket(int, int)を呼び出すと、

ServerSocketFactory tServerSocketFactory = SSLServerSocketFactory.getDefault();
ServerSocket tServerSocket = tServerSocketFactory.createServerSocket(8889, 10);
Socket tSocket = tServerSocket.accept();

証明書が無いという例外が起きます。

Exception in thread "main" javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled.
  at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.checkEnabledSuites(Unknown Source)
  at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.accept(Unknown Source)
  at jp.kurusugawa.research.serversocket.Server.main(Server.java:36)

この例外は、証明書が入っているキーストアを指定していないことが原因で起きています。
(さらに…)

投稿者:sato 投稿日時:

俺様デシリアライザを作ろうとして困ったこと

クラスjava.io.ObjectInputStreamはどうやって実現されているんだ?

俺様デシリアライザを作るにはクラスjava.io.ObjectInputStreamをカスタマイズする必要があります。クラスjava.io.ObjectInputStreamの振る舞いを変えるには完全に再実装するしかありません(そのように無理やり制限されています)。ということは、俺様デシリアライザでクラスjava.io.ObjectInputStreamと同じような振る舞いを実現しなければいけないことになります。そこで、いろいろ考えたところ問題にぶち当たりました。

(さらに…)

投稿者:Yamaguchi Youhei 投稿日時: