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

TopHatenarのグラフにエフェクトを追加しました

TopHatenarで、購読者数とブックマーク数の推移グラフに、ブログのアクティブ度を示すエフェクトを追加してみました。3users以上の被ブックマークエントリーがある場合、その日の背景からエフェクトが出ます。また、短い期間に3users以上のエントリーが連投…

SwingのWebブラウザコンポーネントMozSwing

JavaOneのSwing for the Massesというセッション資料の中で、MozSwingというWebブラウザコンポーネントが紹介されていました。MozSwing download | SourceForge.netMozSwingはXULRunnerのラッパーで、Windows, MacOS, Linux, Solaris用のバイナリが同梱され…

S2Swing 0.1.4 リリース

S2Swing 0.1.4をリリースしました。http://s2swing.sandbox.seasar.org/変更点は以下です。 [SWING-4] @S2Actionアノテーションのenabled, selected引数で指定された式の評価結果をキャッシュするようにしました。 [SWING-1] S2ActionUpdaterへの参照が残り…

TopHatenarに「先月比」表示を追加しました

先日、自宅サーバを二重化したおかげで、Webアプリの更新が精神的に非常に楽になりました。そんなわけで、2日前に続いてTopHatenarに機能追加しました。上の画像のように、「先月比」表示を追加しました。これで、購読者数とブックマーク数の最近の伸びが一…

TopHatenarに機能追加しました

地味な変更ですが、TopHatenarに2点機能を追加しました。 購読者数/ブックマーク数推移の期間別グラフを追加 TopHatenarの公開から1年以上経って、そろそろ期間別の指標値分析ができるようにしたいと思っていたので、まずグラフを追加してみました。以下の…

サーバ移行中

自宅サーバの構成を見直し中です。これまでDellのPowerEdge SC440を2台使って、1台でApache+Tomcat、もう1台でMySQLを動かしてきたんですが、Tomcatを冗長化していないので再デプロイの際にアクセスできない時間が発生したり、いろいろ問題がありました。最…

CubbyとScalaを連携してみた

最近、TopHatenarやHatenarMapsをScalaに移行したいと思っているんですが、Liftはハードルが高すぎると判断して、試しにCubby上でScalaを動かしてみました。以下、その手順です。 使用環境 Maven 2 Eclipse Scala IDE for Eclipse WTP プロジェクトの雛形を…

JTableとのバインディングアノテーション

S2SwingではJTableとのバインディングに特化したアノテーションがあって、例えば以下のように書くと、列と行をマッピングできます。 public class Book { @Column(index = 0) private String title; @Column(index = 1) private String author; ... } public…

S2Swing 0.1.3リリース

S2Swing 0.1.3をリリースしました。 [SWING-3] @ActionTargetの指定が不正な場合に例外を生成するようにしました。 [SWING-2] @ActionTargetに基づき設定されたコンポーネントのプロパティをコンポーネント名ベースの設定で上書きできるようにしました。 [SW…

自然な和訳のコツが分かる「英文翻訳術」

最近、「英文翻訳術」という本を買いました。英文翻訳術 (ちくま学芸文庫)作者: 安西徹雄出版社/メーカー: 筑摩書房発売日: 1995/05/01メディア: 文庫購入: 23人 クリック: 235回この商品を含むブログ (34件) を見るタイトルの通り、普通の英語学習用の書籍…

JCaptchaによる画像認証

先日、TopHatenarが全ドメイン対応したことで、任意のブログURLを登録できるようになりましたが、そこで画像認証が必要だったので、JCaptchaというライブラリを使用しました。JCaptcha overviewJavaのCAPTCHAライブラリには他にもSimpleCaptchaなどあります…

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

データを視覚化するとき、重要なのが色の選び方です。せっかく描いたグラフも、配色が悪いと見栄えがぱっとしなかったり、目が疲れたりします。以下は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と同じ手法で可視化されていて、興味深いです。デンド…