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

gihyo.jpで「情報可視化」の連載を開始しました

技術評論社のサイトgihyo.jpで、「具体例で学ぶ!情報可視化のテクニック」と題した連載を始めました。 第1回 情報可視化の概要:具体例で学ぶ!情報可視化のテクニック|gihyo.jp … 技術評論社TopHatenarやHatenarMapsの公開がきっかけになり、情報可視化と…

LGPLとクラス継承

僕の理解が正しければ、LGPLのライセンス規定では、LGPLライブラリを使用するソフトウェアには次の区別があります。 改変物(modified versions) 元のLGPLライブラリを修正したもの。改変物を頒布する場合、そのライセンスはLGPLかGPLでなければならない。 …

JNLPファイルの作成を支援してくれるAntタスク

http://sourceforge.net/projects/ovanttasks上記のOrangevolt Ant Tasksは、17個の便利なAntタスクが詰め合わせになってるんですが、その中にjnlpタスクというものがあります。 Java Web StartアプリはJARファイルの数が多くなりがちで、それを1つ1つJNLPフ…

連番ファイル名のソート順

Swing製のアプリで、ファイルダイアログでファイル名が正しくソートされないという報告を受け確認すると、JFileChooserの表示がこんな風になってました。文字コード順で言ったら正しいのはこっちだけど、エクスプローラでもMacのFinderでも、連番ファイルは…

TOEICスコアを短期間で伸ばす方法を具体的に書いてみる

僕は勉強期間3ヶ月で、TOEICスコアを630から910まで上げたことがあります(2005年5月、旧制度TOEIC)。短期間でTOEICスコアを伸ばすためには何が必要か、僕の考えを書いてみます。「TOEIC勉強法」が書いてあるブログや書籍を読むと、あれもこれもと総花的に…

iPhone+Safari上のGoogle Mapsの動作が改善されている

iPhoneのSafariで、Google Maps APIを使って地図を表示する場合、従来は地図のパン操作ができませんでした。Safari上のドラッグ操作が画面全体のスクロール用途に消費されてしまって、地図要素まで届かないからです。ところがさっき確認してみたら、iPhoneの…

Seasar Conference 2008 Autumnで喋ります

9月6日(土)、法政大市ヶ谷キャンパスで開催されるSeasar Conference 2008 Autumnで、ライトニングトークをすることになりました。僕のテーマはS2Swingです。まず、Swing Application Framework + Beans Binding (+ NetBeans)による近年のSwing開発スタイルに…

動画『メイキング・オブ・HatenarMaps』を作ってみた

ここのところ、はてな村勢力地図『HatenarMaps』のデバッグのために、地図生成途中の計算結果を画像ファイルにトレースしていました。その画像をぱたぱたアニメみたいにして眺めていたら、領土がうねうね動いて面白いなと思ったので、少し気合いを入れてムー…

可変長引数ではAuto Unboxingが優先される?

メソッドがプリミティブ型の引数 / Object型の引数でオーバーロードされている そのメソッドに数値ラッパ型のオブジェクトを渡す という場合、渡された数値オブジェクトがUnboxingされるよりも先に、Objectであることが優先されて、Object引数の方のメソッド…

OpenNLP Toolsによる英語の解析: 構文解析編

以前のエントリで、Javaの自然言語処理ライブラリOpenNLP Toolsを使った英語の品詞解析(POS tagging)について書いたんですが、構文解析についても方法を知りたがっている方が多いようなので、手順を簡単に説明します。1. OpenNLP Toolsのダウンロード以下…

暗黙型変換の適用条件

以下のプログラムの出力結果がどうなるか、自信を持って答えられませんでした。 public class Test { static void print(short n) { System.out.println("short"); } static void print(int n) { System.out.println("int"); } static void print(float n) {…

MacのNetBeansは不安定?

この前参加させていただいたWicket勉強会で、id:t_yanoさんがMacでライブコーディング中にNetBeansがフリーズしていましたが、僕のMacの環境でもNetBeans 6.1が頻繁に固まります。Javaファイルをダブルクリックで開くとき、応答しなくなることが多いみたいで…

高速なPNG出力ライブラリ: ObjectPlanet PngEncoder

TopHatenarとHatenarMapsとEatSpotは、PNGエンコード処理がボトルネックという共通点があります(HatenarMapsの場合は、システム利用時のボトルネックではないですが)。TopHatenarのブログパーツユーザが増えてきたこともあって、この3つのサービスで使って…

飲食店地図検索サイト『EatSpot』をiPhone対応にしました

EatSpotは、任意の地点を中心として「半径○○メートル以内」の口コミ上位の飲食店検索ができるので、外出中にiPhoneを使って、今いる場所の近くの美味しい店を探すのには最適だろうと思っていました。ただ、PC用のEatSpotをそのままiPhoneで使っても重くて不…

iPhoneの強制終了とアドエスのハングアップ

iPhoneのSafariは本当に頻繁に落ちるけど、アプリが強制終了するだけでOSは生きているので、単にSafariを再起動すれば済む話です。iPhoneを買う前はアドエスでOperaを使っていたけど、この時は酷かった。ちょっと重いサイトを閲覧すると、すぐOS自体がハング…

飲食店地図検索サイト『EatSpot』をリニューアルしました

去年1月に価格.comのコンテストで最優秀賞をいただいたあと、放置気味になっていた飲食店検索サイトのEatSpotですが、今回久々に更新しましたのでお知らせします。レストラン検索サイト [EatSpot]EatSpotは、食べログ.comの飲食店DBを、HeartRailsの路線DBと…

主要コレクションライブラリの機能比較

Javaで有名と思われる、以下のコレクション拡張ライブラリを比較してみました。 Commons Collections Google Collections Library Commons Primitives Trove fastutil Commons Collections Google Collections Library Commons Primitives Trove fastutil Ve…

iPhone買った

朝から並んで、16GBホワイト購入できました!一通り使って気になった点は、Safariがアドエス並に良く落ちること。重いサイトを開くと、かなりの確率で強制終了します。で、Safariを再起動すると、落ちたページを勝手に復帰するんですが、mixiだと足あとが2回…

XStreamを利用して簡単にディープコピー

XStreamで書き出し→読み込みすれば、どんなオブジェクトでもディープコピーできるんだなあ。 import com.thoughtworks.xstream.XStream; public class CopyUtils { public static <T> T deepCopy(T obj) { XStream xs = new XStream(); return (T) xs.fromXML(x</t>…

LDRのAPIがFastladderでも使える件 / TopHatenarをFastladder対応に

Count API - Live Dwango Reader (旧livedoor Reader)まとめサイト上記ページにあるように、以下のようなURLでLDRのフィード購読者数を取得できるんですが、 http://rpc.reader.livedoor.com/count?feedlink=http://d.hatena.ne.jp/kaiseh/rss => 105試し…

Javaで動的型付け的なこと

Javaは静的型付け言語とはいえ、リフレクションがあるので、その気になれば動的型付けだって簡単に実現できるよなと思いました。例えば、以下のようにユーティリティクラスを書いておけば、 package test; public class Dynamic { private static final Map<Class<?>,</class<?>…

Think ITにTopHatenarとHatenarMapsの記事を執筆しました

TopHatenarとHatenarMapsのDB! | Think IT(シンクイット)データベース特集の連載第1回として、TopHatenarとHatenarMapsのDB周りについて記事を書かせていただきました。初執筆です!両アプリケーションのテーブル設計と、S2JDBCによるDBアクセス手法を紹…

Javaのランタイムコアrt.jarの内訳

JREのコアになるrt.jarが、Javaのバージョンアップと共にどんどん大きくなってることに気付きました。JRE 1.4.2の時点でrt.jarは22MBなんですが、1.5.0になると33MB、1.6.0だと42MBに増えています。その内訳がどうなっているのか、HDD使用状況分析ツールのOv…

Cocoaで最も名前が長いメソッドベスト10

ここのところObjective-Cを勉強中なんですが、まず最初にびっくりしたのがメソッド名の長さです。Objective-Cでは、メソッドの呼び出し時に引数の名前を明示するので、「このメソッドの2番目の引数は何の意味だっけ?」などと悩む必要がなくなる反面、メソッ…

うまい棒を大量に買い占めてみた

うまい棒の工場が火事になったそうです。この工場では、たこ焼き味を製造していたとのこと。今後、たこ焼き味が品不足になったら大変なので、そうなる前に近所のコンビニで買い占めてきました。本当に一箇所で買い占めてしまうと他のお客さんがかわいそうな…

abstractなSerializableクラスにもserialVersionUIDが必要な理由

EclipseではserialVersionUIDが明示されていないSerializableなクラスに警告が表示されますが、今までは具象クラスのみが対象でした。Eclipse 3.4ではそのポリシーが変わって、クラスがabstractな場合にも警告が表示されるようになっています。Eclipseのこれ…

Javaのメソッドコード長制限とLLへの影響

Javaには、1つのメソッドのコード長が65535バイトを超えられないという制限があり、64KB以上のメソッドを含むコードはコンパイルエラーになります。ということは、JVM上で動くLLにも、この制限が課される可能性があるわけです。例えば以下のコード、Pythonで…

Javaでコレクションクロージャメソッドっぽいこと

Rubyのselectとかcollectみたいなものって、Javaでも匿名クラスで一応実現できるけど、それだとどうしても冗長になります。クロージャの部分にLLの力を借りたらすっきりするかなと思って、Java+Groovy版のコレクションクロージャメソッドを書いてみました。J…

JavaからWindowsのレジストリ項目やショートカットを作成できるRoxes Win32 for Java

JavaでWindowsのショートカット(lnkファイル)を作成したかったので、この前のエントリに書いたNLinkを使おうかと思ったんですが、この辺のShell機能にはCOMが絡んでくるので、Win32APIを使うにしても結構面倒臭い。ショートカットをメソッド一発で作成でき…

SenよりGoSenの方が遅い?

形態素解析エンジンSenを改良したGoSenというライブラリがあります。 Significantly improved text analysis speed http://itadaki.org/wiki/index.php/GoSen と書いてあるので、どの程度速くなったのかなと思ってSenと比べてみたんですが、逆にSenより遅い…