2008-01-01から1ヶ月間の記事一覧

何で今さらS2Swing?

「この時代にSwingかよ」って感じですが、自分としては、別に今さらでも構わないと思ってます。Swingの資産はすぐに消えてしまう訳ではないし、現にSwingで進めなければいけない案件が迫ってきて、必要を感じて作っているので。将来JavaFXなりAIRなりに移行…

S2Framework単体をリフレクションユーティリティとして使う

S2Containerを抜きにして、S2Framework単体をリフレクション用途に使う手も全然ありなんですよね。クラスのメタデータを取得する場合、Java標準のIntrospector.getBeanInfo()の代替としてBeanDescとPropertyDescが非常に便利です。getter/setterの無いpublic…

S2SwingをSandboxプロジェクトに登録しました

ここのところ開発を続けている「S2Swing的なもの」ですが、ある程度完成の見通しが立ってきたので、昨日思い切ってSeasarのSandboxプロジェクトとして申請し、無事受理をいただきました。近日中にソースをコミットしようと思っています。S2SwingはLGPLのライ…

S2Swing的なもの開発記: バリューバインディング

以下のように、アノテーションを付けたモデル側のフィールド値と、ビュー側のUIコンポーネント値を自動バインディングするようにしました。 モデル側 public class EmployeeModel { @ReadWrite @NotBlank private String name; @ReadWrite @Required @Conver…

無引数のメソッドとGenericsの謎

public class Test { public static void main(String[] args) { String s; s = Test.<String>foo(); // (a) s = foo(); // (b) bar(Test.<String>foo()); // (c) bar(foo()); // (d) } static <T> T foo() { return null; } static void bar(String s) { } } (a)(b)(c)はコンパ</t></string></string>…

S2Swing的なもの開発記: アクションとイベントのバインディング

以下のような仕様で、自動バインディングの仕組みを作ってみました。試した感触はなかなか悪くないです。 アクションのバインディング仕様 まず、アクションハンドラとなるメソッドを作成し、@Actionアノテーションを付けます。ここまではSwing Application …

JavaBeansクラスのBeans Binding対応自動化

Beans Binding(JSR 295)でJavaBeansを監視できる条件は、クラスがPropertyChangeEventをサポートしていることです。つまり public class MyModel { private String name; public String getName() { return name; } public void setName(String name) { this…

S2Swing的なものを作りたい

Swing Application Frameworkは、リソースインジェクションや非同期タスクのサポートによって、Swingアプリケーションの開発を支援してくれます。ただし、Swing Application Frameworkの仕組み自体は非常に簡潔で、アプリケーションの「土台中の土台」の部分…

Substance L&Fを使えばJTabbedPaneに閉じるボタンを付けられる

Nimbusの登場で注目度の下がっているらしいSubstance Look & Feelですが、全体的にセンスが良いし、Office 2007風のスキンなんかもあって結構使えると思います。Substanceを使ってちょっと嬉しいのは、JTabbedPaneで「閉じる」ボタンがサポートされているこ…

GroupLayoutの記述量を削減できるBuilderを作った

J2SE 6からSwingに標準搭載されたGroupLayoutは非常に優秀なレイアウトマネージャですが、レイアウトを組み立てるコードは複雑化しやすく、可読性が高いとは言えません。IDEがコードを自動生成するだけなら問題ないですが、手書きでレイアウトコードを作成し…

Swing Application Framework続き

Swing Application Frameworkのソースは、構成がシンプル(全部で25クラス程度)なので理解しやすく、読んでいて面白い。特に、非同期処理周りは「なるほど!」と納得することだらけ。今までサーバサイドの開発パターンにばかり関心が向いていて、クライアン…

Swing Application Framework

Javaのリッチクライアントを本格的に作る必要が出てきて、SWTかSwingかで迷っていたんだけど、Java2Dや開発済みのSwingコンポーネントを使いたいという理由もあってSwingで行くことにした。SWTならぜひUrumaを試したかったんだけど、今回はSwingということで…

PRGパターンを使うべきでない場面

Web

開発中のWebアプリで、画面遷移を全部PRGパターンで統一しようとしていろいろ試した結果、今さらかもしれないけど気付いたこと。 自分の結論 PRG(POST-GET-REDIRECT)パターンは、Conversation境界で適用することに意味がある。Conversation途中の画面遷移で…

麻雀アルゴリズムの課題

自分のためにまとめ。麻雀では、「新しい牌をツモって、不要な牌を切る」を繰り返して和了り(上がり)の形を目指します。 牌は34種類あって手牌は14枚あるので、単純に考えると、n巡の先読みをする場合はゲーム木のノード数が(34*14)^n=476^nも必要になりま…

麻雀ライブラリ開発中

大学時代に中途半端に作って放置していた麻雀ライブラリがあるんですが、最近また興味が出てきて、いろいろ弄ってます。とりあえず、数牌の全組み合わせについて面子構成を事前計算しておくことで、任意の手牌のシャンテン数を高速に求めるところまでは完成…

高速道路に乗ってるんだから、100km出せるのは当たり前

先日、アカデミックな世界にいる友達と飲んだときに出た話からつくづく感じたこと。IT業界は「学習の高速道路」が一番整備されてる世界。それだけに、自分が高速道路に乗っていること自体に安心感を覚えやすいと思う。「ぐぐって問題解決できる自分すげー」…

RESTfulとイベント駆動型Webフレームワークの相性は?

「RESTful Webサービス」、まだ半分しか読めてないけど良い本だと思います。URIがなぜ重要かは、今までも何となく分かっているつもりでしたが、その主張の背景がだんだん理解できてきました。で、RESTfulとWebフレームワークの相性について、ちょっと疑問が…

SkipListのベンチマーク

要素の挿入、削除、ランダムアクセスが全部高速なリストを作った - kaisehのブログ上記エントリに書いたSkipListとSkipListSetのベンチマークを取ってみました。数値の単位はミリ秒、CPUはCore Duo 1.66GHzです。 タスク ArrayList LinkedList SkipList Skip…

はてなの元旦は6時からだったか!

「明けまして…」のエントリーが12/31扱いになってしまった。