マンセル表色系を使って視覚化の配色を改善する

データを視覚化するとき、重要なのが色の選び方です。せっかく描いたグラフも、配色が悪いと見栄えがぱっとしなかったり、目が疲れたりします。以下はJFreeChartのデフォルト配色ですが、あまり良くない色使いの例だと思います。この配色は、 #FF5555, #5555…

グラフ理論ライブラリのJGraphTを使ってみた

JGraphTJGraphTは、Javaのグラフライブラリです。グラフの描画ではなく、グラフ理論のモデルとアルゴリズムの方にフォーカスしています。とても使いやすかったので、紹介してみます。 無向グラフ UndirectedGraph<String, DefaultEdge> g = new SimpleGraph<String, DefaultEdge>( DefaultEdge.class); </string,></string,>…

Swing Application Frameworkのアクションメソッド引数

Swing Application Frameworkのアクションメソッドは引数を持たないのが普通ですが、以下の型で引数を宣言しておくと、メソッド呼び出し時にフレームワークが適切なオブジェクトを代入してくれます。 java.awt.event.ActionEvent javax.swing.Action javax.s…

Lucene 2.4とLucene 2.0の検索速度比較

前回、Lucene 2.4と2.0でインデックス構築速度の比較をしたので、ついでに検索速度の比較もしてみました。前回のエントリーでは、以下のようにインデックスを作成しました。 データ: 日本語版Wikipediaのダンプから先頭20万記事 インデックス形式: 記事タイ…

TopHatenarの部門別ランキングにフィルタを導入しました

TopHatenarのランキング対象を全ドメインに拡大して以降、アルファなブログが大半の部門で常連化したことで、部門の特色が薄くなってしまうという問題がありました。先日、この問題への対処として、部門別ランキングの表示ユーザ数を拡張しました。今回、追…

S2Swing 0.1.2リリース

S2Swing 0.1.2をリリースしました。http://s2swing.sandbox.seasar.org/・[SWING-1] S2ActionUpdaterへの参照が残り続ける不具合を修正しました。

Lucene 2.4とLucene 2.0のインデックス構築速度比較

Luceneは、こちらのベンチマークなどを見る限り、Sennaなど他の全文検索エンジンに比べて相当遅いとされているようです。上記ページのベンチマークではLucene 2.0が使われています。僕も数年前にLucene 2.0を使ったことがあって、それ以降はLuceneに触れてい…

TopHatenarの部門別ランキングを100位まで拡張しました

従来、各部門につき50位まで表示していたTopHatenarの部門別ランキングを、100位まで表示するように変更しました。先日TopHatenarが全ドメインに対応したことで、部門別ランキングの上位が一部の巨大ブログで占められる傾向が強くなったので、表示を拡張しま…

TopHatenarが全ドメインのブログに対応しました

はてなダイアリーのランキングサイトとして公開してきたTopHatenarですが、今回、はてな以外の全ドメインのブログに対応しました。従来のページにアクセスすると、はてな内ランキングに加えて、全ブログ内でのランキングも表示されるようになります。はてな…

Seasar Conference 2009 Whiteで発表しました

14日のSeasar Conference 2009 Whiteで、S2Swingについて話してきました。40人部屋が満席になった上に、立ち見してくださる方までいて、とても嬉しかったです。ご来場ありがとうございました。45分使って話すのは初めてだったので緊張しましたが、笑いも多少…

Seasar Conference 2009 White

14日のSeasar Conference 2009 White@法政大で、S2Swingについてのセッションを持ちます。 会場: S304(定員40名) 時間: 15:00 - 15:45 タイトル: 『モダンSwing - S2SwingでGUI開発はどう変わるか』 去年秋のSeasar ConferenceではLT枠をいただきましたが、…

アプレットを開いたユーザに拒絶感を与えない方法

Javaアプレットが載ったHTMLページを開くと、こういうスプラッシュ画像が出てきます。この画像が目に入った瞬間、反射的にページを閉じる習慣が身に付いてしまっているユーザは、僕を含めて多いと思います。Java SE 6 Update 10でサポートされたimageパラメ…

外部イテレータと内部イテレータ

Javaでコレクションクラスを作ってそのイテレータを実装する場合、Javaにはクロージャが無いので、外部イテレータを使うことがほとんどだと思います。例えばint値のコレクションとイテレータを自作するときは、まず以下のようにIntIteratorとIntIterableを用…

エラーを含んだXMLをルーズにパースする

各種ブログのRSSのようなWeb上のXMLリソースをdom4jやJDOMなどで読み込むと、パースに失敗するケースがとても多いです。というのも、こういうXMLは基本的に、validであることをあまり期待できないからです(エスケープ漏れがあったり、"

SwingコンポーネントをXPathで操作する

フレームやダイアログの中から特定の条件を満たすコンポーネントを見つけたり、トラバースできると便利だと思い、JDOMをベースにして以下のプログラムを作ってみました。 SwingDOMBuilder SwingPath Swingのコンポーネント階層をDOMに変換して、XPathを使え…

英語を勉強するときは英語のことだけに集中するべき

「技術的な知識が付いて、英語の勉強にもなるから」という理由で、CNET Buzz Out Loudを聴き続けたり、技術書を読むときに和訳本じゃなく原著を買ったりしてたんですけど、それって実はあまり英語の勉強になってないことに気付きました。こういうPodcastとか…

iPhoneが割れた

iPhoneをjailbreakならぬ、本当にbreakしてしまいました。今までも何回か落としたことがあって、その時は傷一つ付かなかったので「iPhoneって丈夫なんだな」と思ってましたが、着地姿勢が悪いと簡単にこうなるようです…。表面は割れたけど本体の動作には支障…

TopHatenar部門別ランキングの順位変動

ここ数日ほど、EDGE Datasetsを活用して、今までTopHatenarで拾いきれていなかった過去のはてなダイアリー記事(2008年初頭ごろまでに書かれたブックマーク数中堅クラスのエントリー)をクロールしました。この結果として、部門別ランキングが一部変動しまし…

ニコニコ動画データ分析研究発表会: タグの可視化

ニコニコ動画データ解析発表会でニコニコ大百科の宣伝を行いました(発表資料もあるよ!) - グニャラくんのグニャグニャ備忘録@はてなニコニコ動画で使われているタグのクラスタリング結果がHatenarMapsと同じ手法で可視化されていて、興味深いです。デンド…

K-means法によるクラスタリングのスマートな初期値選択を行うK-means++

K-means法は、入力データからK個のランダムな個体を初期クラスタの中心として選択し、以降、クラスタの重心を移動させるステップを繰り返すことでクラスタリングを行う非階層的手法です。K-means法はシンプルで高速ですが、初期値依存が大きいのが弱点で、不…

TopHatenarの部門別ランキングにエントリー表示機能を追加しました

TopHatenarの部門別ランキングで、「どの記事がどれだけブックマークタグを集めたのか」が分かるように、内訳表示機能を追加しました。以下のように、個別のエントリーとタグ数(pts)を確認することができます。

RDBMSをKey-Value Storageとして使う場合のパフォーマンス計測(H2, MySQL編)

Tokyo Cabinet, QDBM, Lux IOなど、DBM同士のパフォーマンス比較はWebで良く見かけるのですが、MySQLのような普通のRDBMSをKey-Value Storage的に使用した場合、DBMと比べてどれくらい差が付くものなのかイメージが湧かなかったので、実際に計測してみました…

2008年の振り返りと2009年の抱負

明けましておめでとうございます。僕の2008年を振り返ると、その前年の1981s忘年会で刺激を受けて、自分も面白いアウトプットを出したいと思ったことから始まった気がします。TopHatenarを作ったのが5月ですが、その基礎になるデータ自体は、何かの材料にな…

TopHatenar+HatenarMapsのシステム構成

TopHatenarとHatenarMapsのシステム構成が、バージョンアップの度に複雑化してきて、自分でも把握しづらくなってきたので、整理する意味で図を作ってみました。図に示したように、HatenarMapsは、S2RMIを使ってTopHatenarと協調動作しています。はてなダイア…

HatenarMapsのブログパーツを開始しました

HatenarMapsでの領地の状況を、ブログパーツとして貼れるようにしてみましたので、ぜひご利用ください。こんな感じの画像を埋め込むことができます。貼り付け用のHTMLサンプルは以下になります。"XXXXXXXX"の部分を、自分のはてなIDに書き換えてください。 <a href="http://hatenarmaps.com/view/XXXXXXXX"><img src="http://hatenarmaps.com/chart/XXXXXXXX" width="160" height="120"/></a> …

新HatenarMapsのFAQ

新しいHatenarMapsについて、ブクマコメント等でいろいろ疑問をいただいているので、FAQにまとめました。 ○○について書いたことが一度もないのに、○○地区に入っています。何で? できるだけ適切(?)な地区に入るようにしていますが、クラスタリングの性質上…

はてな村の勢力地図『HatenarMaps』を大幅リニューアルしました

はてなダイアリーの上位ブロガーと人気エントリーを地図化したサイト、HatenarMapsを大幅にリニューアルしました。いろいろと新機能を追加しましたので、順に紹介します。※過去のHatenarMapsについてはこちらのエントリーをご覧ください。 新機能1: 人口を最…

Seasar忘年会に行ってきた

昨日、Seasarの忘年会に参加しました。僕は、この前行った「知っ得 納得 Webフレームワーク勉強会」で取り上げられていたS2Flex2に感銘を受けて、HatenarMapsをS2Flex2で書き直しているところなんですが、その新HatenarMapsのデモをid:higayasuoさんに見せつ…

Duke自転車が届いた

さっき、SunからMA4賞品のロードバイクが届きました!ありがとうございます。なんと、サドルがDukeです。これはかなり目立つ!ベルもDukeです。こうして見ると、Dukeって日の丸みたいですね。Sunだけに、Dukeの鼻は太陽をイメージしてるのだろうか。などと思…

リソースインジェクションについて、SAFとNetBeansとS2Swingのそれぞれの役割

Swing Application Frameworkのリソースインジェクションにおける、 Swing Application Framework自身 NetBeansのフォームデザイナ&コード自動生成 S2Swing のそれぞれの役割について書きます。内容は後で整理して、S2Swingのドキュメントに追加しようと思…