Java

Wicketで階層構造を扱う際にHTMLとJavaコードの構造を一致させる

Scala exercise 6: Tackling the Wicket hierarchy mismatch problemという記事に触発されて、同様の手法をJavaで再現してみました。Wicketでネストされたコンポーネントを扱う場合、HTMLテンプレートに比べてJava側は見通しが悪くなりがちだと思います。元…

Wicketのコンポーネント追加先指定にHTMLのID属性を利用可能にするライブラリを作成してみた

Wicketでコンポーネントを追加する場所を指定する場合、通常は該当するタグにwicket:idという属性を付与する必要があるのですが、代わりにHTMLのID(class)属性を利用可能とするライブラリを作成してみました。Wicketでコンポーネントを追加する場所を指定す…

Java (.javaファイル) のみで利用可能なDB用ライブラリを作ってみた

以前Wicketを使っていた際は、データベースの操作にHibernate(JPA)を利用していたのですが、今一つ気に入らない部分がありました。下記のような部分です。 設定をXMLファイルで書かないといけない。 テーブル定義とマッピング定義を分離できない。 カラム名…

Bouncy CastleでOpenPGP鍵を操作する

Bouncy CastleのOpenPGP用ライブラリ(bcpg)を使ってOpenPGP鍵を操作する方法のメモです。以前の日記にsecring.gpgを読み込んで利用する方法がありますので、今回はそれ以外の操作が対象です。 PGPSecretKeyを生成する public PGPSecretKey generateSecretKey…

JCEでAES/CTRを試してみた

TLSの例を調べたついでにJCEで実装する方法を調べてみた。CTRモードを使う時の最大の問題はIVをどう扱うかということだったけれど、JCEのCipherではinit()時くらいしかIVの指定する方法がないような気がする。この場合、複数のブロックを暗号化する場合にIV…

暗号で使用できるビット数を調べる

Javaは標準では「強力ではあっても制限付きの暗号」という微妙な表現の暗号しか使うことができません。これはブロック暗号なら128ビットまで許可、といったビット数による輸出(輸入?)規制に合わせるために、使用可能なビット数を制限するという意味のようで…

JSR-82を使ってBluetoothデバイスを探索する

JavaでBluetoothデバイスを探索する方法のメモJavaとWiiリモコンをBluetoothでつなげてみようという記事に触発されて試してみました。といってもWiiリモコンをもっていないので、同じページで紹介されていたbluecoveを使ってみただけです。bluecoveはDLLを含…

JavaからGnuPG(PGP)の鍵を利用する

鍵生成のついでにJavaから利用する方法のメモ自力で読み込みプログラムを作成すると大変なので、Bouncy Castleのライブラリを利用します。必要なjarファイルはbcprovとbcpgの二つになります。最初にGnuPGの鍵が保存されているsecring.gpgを読み込みます。読…

JavaRebelが良い感じになってきた

気がついたらJavaRebelの1.1M1がリリースされてました。購入した人にはメールで教えてくれても良いのになぁと思いつつ、素直にRSSリーダーに登録しろということなのでしょうね。 JavaRebel 1.1 M1 Released変更点自体はアノテーションのリロードに対応したと…

JCEでDiffie-Hellman鍵交換を行う

JCEでDiffie-Hellman鍵交換を行う方法を調べた時のメモ*1。内容はAとBが秘密鍵を交換するシンプルなものです。最初にAがベースとなる素数等のパラメータを生成します。AlgorithmParameterGeneratorを使わずに、AlgorithmParametersのinit()にDHAlgorithmPara…

persistence.xmlを読み込んでテーブルを作成する

Hibernateでは起動時に自動的にテーブルが作成されるが、それを手動で実行する方法のメモ。Hibernateでのテーブル作成には、SchemaUpdateというクラスを利用すれば良いが、これにはConfigurationという設定クラスを渡す必要がある。起動時にHibernateが構築…

Hibernateで自動生成されるカラム名に文字を付加する

最近PostgreSQLからMySQLに乗り換えたのですが、Hibernateがhbm2ddlでテーブルを生成する時にエラーが出るようになってしまいました。Hibernateでテーブルの自動生成をすると、フィールド名がそのままカラム名になるため、MySQLの予約語と同じフィールド名が…