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

主要コンポーネントの定義済みアクション一覧

独自に定義したアクションのキーストロークがSwingコンポーネントに吸われてしまってハマることが多いので、自分のためにリストアップ。カーソル移動系の自明なアクションは省略してあります。JTableのF8とか、JSplitPaneのF6/F8辺りは盲点だと思います。 JR…

バインディング機能再設計

まず、開発中のS2Swingの現状。以下のような画面があるとします。 public class UserDialog extends JDialog { private JTextField username; private JPasswordField passwd; private JTextField birthDate; ... } 次のモデルクラスを書くと、UserDialogの…

Bean Validation Early Draft Preview

JSR 303のBean ValidationにEarly Draft Previewが出たとのことで、早速目を通してみました。個人的に面白いと思った機能を挙げていきます。 Multi-valued constraints 以下の例のように、同一種類のアノテーションを配列で複数指定できるようです。 public …

java-ja第七回行ってきた

java-ja初参加しました。羽生さんやid:t_yanoさんやid:gothedistanceさんとお話しできて嬉しかったです。いろいろ面白いことが聞けたんですが、一番印象的だったのは、懇親会で羽生さんが語っていた、『日本のSIは世界一わがままな日本の顧客が相手。だから…

Happy Hacking Keyboard Professional2買った

PFU Happy Hacking Keyboard Professional2 白/無刻印 英語配列 USBキーボード 静電容量無接点 UNIX配列 WINDOWS/MAC両対応 ホワイト PD-KB400WN出版社/メーカー: PFU発売日: 2006/03/23メディア: Personal Computers クリック: 37回この商品を含むブログ (1…

Wikipediaのダンプをインポートする際のTips

Wikimedia Downloads上記ページで公開されているWikipediaのMySQLテーブルダンプですが、何しろサイズが巨大で、そのままインポートしようとすると色々大変です。特に英語版Wikipediaは巨大すぎます。なので、インポート前にダンプファイルをいじっておいた…

Eee PCとえいご漬けで寝ながら英語勉強

英語のリスニング学習に、PC版の「えいご漬け」シリーズを使っています。このソフト、センテンスの質が低かったり(リスニング教材なのに文法学習用のセンテンスが使われてたりする)微妙な点も多いんですが、非常に強力な英語学習法であるディクテーション…

デュアルディスプレイ化

自宅の開発環境をデュアルディスプレイ化しました。メインで使ってるiMacがWSXGA+で横長なので、サブディスプレイもワイドだと視線の切り替えに疲れそうだと思ったことと、「ディスプレイ1枚当たりのサイズは小さい方がいい」というshi3zさんのエントリを参…

Time Capsule 500GB買った

昼休みにApple Store銀座店で買ってきた。500GBと1TB、どっちも在庫はあるみたいだった。とりあえず帰宅が楽しみ。あとは、この前注文したPowerEdge SC440が届けば、自宅環境を一新できそうです。

比較的強固なライセンスキーの生成

プログラムのバイナリ自体が改ざんされる可能性を無視して、解析・偽装が困難なライセンスキーを生成/検証する手法というと、やっぱり以下のような公開鍵暗号方式になるんだろうか。 RSAのキーペアを作成しておく。 管理者側は「プログラム固有の情報+ユー…

GUIアプリケーションとステートレス

S2Swingを作り始めてからというもの、WebアプリケーションとGUIアプリケーションの開発手法の乖離の大きさを改めて実感しています。Webアプリの定型化が容易であるのに対し、GUIアプリ開発手法のパターン化は本当に難しい。パターン化しにくいのだから、Swin…

JListとJComboBoxの選択項目バインディング

Beans Bindingの現在のバージョンでは、JListとJComboBoxの選択項目バインディングに制約があって、UIからモデルへの書き出ししかできないようになっています。これは、たとえモデルオブジェクトに初期選択値をセットしておいても、画面では未選択のままにな…

PowerEdge SC440買った

いつの間にか19800円+送料無料になってたので購入しました。僕の運営してるサービスはトラフィック的には全然大したことないんですけど、飲食店DBとかWordNetとかWikipediaエントリ間リンクを高速検索のためにオンメモリ展開しているので、1台でAPサーバ+DB…

アイコン販売サイトの落とし穴

例えばこのサイトでは、「数千個から一万個超」のアイコンパッケージを$350から$750くらいで販売しているんだけど、カタログをチェックするとあることに気付く。 Display.png Display.png に+マークを重ねた Display Add.png Display.png に吹き出しマークを…

Eee PC買った

ビックカメラに寄ったらEee PCの在庫があったので、衝動的に購入。 Eclipseを入れてみたけど、プロジェクトのチェックアウトとビルドだけで何分もかかってしまって、プログラミング用途には厳しそう。でも、コードを読むだけなら、そんなに問題なさそうな感…

newInstanceできないクラスを無理やりインスタンス化する

newInstanceで汎用的にインスタンス化できないクラスがあります。例えば以下のようなクラスです。 public class HardToCreate { public HardToCreate(int code) { if (code != 123456789) { throw new IllegalArgumentException(); } } public void hello() …

アクションの実行可否を宣言的に記述する(続き)

アクションの実行可否を宣言的に記述する - kaisehのブログ上記エントリに書いた、Actionの実行可否状態と選択状態のOGNL式によるバインディング機能は、試してみて非常に便利だったので、S2Swingに取り込みます。EDTがイベントを1つ消費する度に、S2Swingが…

入力情報を単純にセッションに保存するとろくなことがない

Web

某大手ドメイン業者の決済システムの話。複数のドメインに対して、別々のメールで契約更新案内が来ていたので、それぞれメール内の決済専用URLをクリックして、別々のタブで決済画面を開いた。それぞれの画面に支払い情報を入力して「次へ」をクリックしたら…

アクションの実行可否を宣言的に記述する

Swing Application Frameworkでは、メソッドに@Actionアノテーションを付けることでアクションを定義できます。さらに、@ActionにenabledPropertyパラメータやselectedPropertyパラメータを付加することで、アクションの実行可否状態や選択状態を宣言的に記…

JavaでWindowsアプリ

Windowsアプリ開発にVisual Studio以外の選択肢は無いと思い込んでいたけど、Javaにも Launch4jのようなexeファイルラッパ NLinkのようなネイティブリンカ があるし、 SubstanceのようなクールなL&F JIDEのようなリッチなSwingコンポーネント も揃っているか…

今の時代、GUIの状態は富豪的手法で更新したい

GUI

僕は十数年前、PC-9801でゲーム作りに熱中していました。PC-9801はVRAMが非常に低速だったので、ゲーム開発の労力の半分以上は、いかに画面の差分書き換えを工夫するかに費やされていました。その後PCのスペックが向上して、ゲーム画面は全書き換えが当たり…

不親切なGUI用語

GUI

GUIで"Split Vertically"といえばビューに縦線を入れて左右に分割することで、"Split Horizontally"は横線を入れて上下に分割することですけど、JSplitPaneのVERTICAL_SPLITとHORIZONTAL_SPLITは意味が逆になっています。これは、スプリッタの配置方向に着目…

フレームワークと制約

インターフェースの押しつけはフレームワーク設計者のエゴだ - y-komori’s diary 2008-02-13 トラックバックをいただいて、いろいろ考えを深めることができました。文章化できるほど考えがまとまっていないので、思いつくまま箇条書きにします。 大前提とし…

こんなEclipseプラグインないかな

コメントを使って、C#のregionディレクティブのような感じで区間を指定すると、コードフォーマット時にその区間をフォーマット対象から除外してくれるプラグイン。 //#noformat personList = jdbcManager.from(Person.class) .where("age > ?", age) .orderB…

POI 3.0.2で読めないExcelファイル多数

Apache POIに3.0.2-FINALが出ていたのでアップデートしてみたら、いろんなExcelファイルで読み込み失敗するようになった。OpenOfficeで保存したExcelファイルの読み込みに失敗する可能性が高い気がするけど、詳細不明なので3.0-FINALに戻した。

インターフェイスかアノテーションか、それとも規約か

フレークワークが特定の状況下でユーザクラスのインスタンスにメッセージを通知したい場合、ユーザクラスに何らかの形で「印」を付けることを強制して、どのメソッドを呼び出すのか決定する必要があります。その「印」として考えられるのは、基本的に次のい…

「流暢なインターフェイス」によるGUI構築支援

S2Swingでは、XML等による画面定義機能を提供しない代わりに、簡潔な記述でコンポーネント階層を構築できるビルダを用意しようと思っています。発想としてはGroupLayoutBuilderと同じで、以下のエントリも参考にしました。 現在のJavaで、ツリー構造の構築を…

シンプル重要

Teedaのメリット・デメリットという話が出てますけど、僕が実際に使って(去年のMash up Award応募作品SensrはTeeda製です)感じた印象とも大体一致していて、納得しながら読みました。僕が持っているTeedaのイメージは、『規約に従うことで八割方はサクサク…

何で今さらS2Swing?

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

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

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