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

要素の挿入、削除、ランダムアクセスが全部高速なリストを作った

スキップリスト(Skip List)は1990年に発表された比較的新しいアルゴリズムで、要素の挿入や削除、検索を平衡木と同等のパフォーマンスで実行可能なリスト構造です。Skip Listは連結リストの多層構成になっています。路線に例えると、最下層のリンクは各駅…

明けましておめでとうございます

今年もよろしくお願いします!

「RESTful Webサービス」買った

ヨドバシで部屋の電球を買ったついでに書籍フロアに寄ったら、最近話題の「RESTful Webサービス」が目についたので購入。帰省中に読みます。RESTful Webサービス作者: Leonard Richardson,Sam Ruby,山本陽平,株式会社クイープ出版社/メーカー: オライリー・…

来年のWebサービス開発目標

今年はWebサービスをとにかく作るだけ作ったという感じで、作った後のブラッシュアップが疎かになってしまいました。なので来年は、既存のサービスを充実させることに重点を置きたいと思っています。以下、目標の箇条書きです。 全般 サーバを増強する。 ク…

Q for Eclipse(q4e)使ってみた

最近気になっていたMavenプラグインです。Google Code Archive - Long-term storage for Google Code Project Hosting.プロジェクトに追加されるメニューはこんな感じ。"View dependencies"をクリックすると、こんなDependency Graphも描いてくれます。ただP…

主要コレクションクラスの内部メモリ消費量一覧

Javaの主要コレクションクラスの内部メモリ消費量を、一覧表にまとめてみました。メモリ消費量がコレクションの要素数に対して線形増加すると見なした場合の、実測を基にした推定値です。表を見ると、TroveのTHashMapとTHashSetのメモリ効率が非常に優秀だと…

形態素解析するときは未知語の扱いに注意

僕が全文検索システムを作るときに使っている方法は、 Senでテキストを形態素に分解して、FULLTEXTインデックスを張ったMySQLのMyISAMテーブルに突っ込む。 LuceneにJapaneseAnalyzer(Sen)を組み合わせて使う。 のどちらかです。MySQL+FULLTEXTよりLuceneの…

OracleでIN句に1000件超のパラメータを渡す

Oracleには、リストに式を最大1000件までしか書けないという制限があるので、IN句に1001個以上のパラメータを渡すとエラーになってしまいます*1。そこで、S2JDBCで引数が1000件超の場合にIN句を分割するWhereを書いてみました。 AbstractIn.java package com…

JWNLを使ってJavaからWordNetにアクセスする方法のメモ

OpenNLPに続いて、NativeChecker関連ネタを書いてみます。NativeCheckerでは、WordNetをオンメモリ展開して、スペルミスチェックと類義語検索に使っています。ここで利用しているのがJWNLです。僕がJavaのWordNetライブラリをいくつか試した中では、JWNLの出…

システムアナリスト合格証書届いた

忘年会から帰ってきたら、証書が届いてた。しばらく部屋に飾っておこうかな。

1981s忘年会

1981s忘年会に行ってきました。誰とも面識のない状態だと思ってたけど、価格.comのコンテスト表彰式でお話しした方が僕の顔を憶えていてくれて、嬉しかったです。待ち合わせ場所で最初に声をかけた人がKodougu開発者のあかさたさんだったり、二次会で隣に座…

Mighty Mouseの使い心地が微妙

Mac

Macのマウスは本体とボタンの境目がないので、心理的にどうしても、マウスを覆った手のひら全体でボタンを押し込みたくなってしまう。手のひら全体を使うと疲れるし、ドラッグが非常にやりにくい。 2ボタン設定にしても、左ボタンと右ボタンの物理的な境目が…

Ext JS 2.0のモジュール依存関係を可視化してみた

Ext

Ext JSは非常に多機能な反面、jsファイルが巨大になっています(ext-all.jsは圧縮済みで500KB近く)。このサイズを少しでも減らすために、バージョン1.1にはBuild your own Extなんていうメニューが用意されていましたが、2.0には今のところ見当たりません。…

システムアナリスト

合格しました。役に立たない資格と言われればそれまでですが、論文対策の過程で国語力をみっちり鍛えることができたので、受験して良かったなと思います。午後IIで論文のある高度情報処理技術者試験(システムアナリスト、アプリケーションエンジニア、プロ…

Ext.TabPanelの中にExt.form.HtmlEditorを入れる

Ext

Firefoxには、不可視なiframe中のdesignModeをonにできないという制限があるらしい。なので、Ext.TabPanelで非アクティブなタブにExt.form.HtmlEditorを入れると、Firefoxで正しく表示することができない。これを回避するには、タブのactivateイベントを拾っ…

Ext.TabPanelのレイアウトとIE6

Ext

Ext JSで、TabPanelの幅をコンテナのサイズに合わせて自動的に伸縮させたい場合、defaultsプロパティでautoWidthをtrueにすれば良い(TabPanel自身のautoWidthではないので注意が必要)。 new Ext.TabPanel({ renderTo: 'tab-panel', activeTab: 0, defaults…

Macのフォントレンダリングは奇麗だけどコーディングに向かない

Mac

Font smoothing, anti-aliasing, and sub-pixel rendering – Joel on Software Font Rendering: Respecting The Pixel Gridこのエントリが非常に興味深いです。フォントのレンダリングに対するMicrosoftとAppleの考え方は、真正面から対立しているようです。…

iMacを購入

Mac

誘惑についに負け、20インチのiMac(MA876J/A)を買ってしまいました!スペックは基本的に問題ないけど、メモリ(標準1GB)は全然足りないので、秋葉原で2GB×2を買って付け替え。4GBが1万円強で買えるなんて、恐ろしい時代になったなあ。何気にびっくりした…

Ext JSメモ

Ext

Ext JSへはスムーズに移行できるかと思っていたけど、最初の数時間で結構つまづいた。引っかかった箇所を淡々と記録。 2.0のドキュメントをローカルで閲覧するとエラー →localhostにサーバを立てて、その中にドキュメントを置く。 IEでExt.form.NumberField…

バリデーションメッセージのラベル部を国際化

OValのようなアノテーションベースのバリデーションを採用する場合、ラベル部(「○○の入力は必須です」の○○の部分)の国際化をどうするかという話の続き。gettext風に、プロパティファイルを自動生成(または差分マージ)するツールを作る方法が現実的かなあ…

OVal - the object validation framework

OVal - the object validation framework for Java™ 5 or later –これ、いいなあ。こんな感じで使えそう。 DTOにアノテーションを書いておく。 Logicに渡された引数の中にDTOがあれば、自動的にバリデーションを実行するInterceptorを用意。S2JSFの場合、エ…

Wii Fit

始めて6日目です。今のところ、順調に体重が減ってます。Wii Fitのキモは、何と言っても体重の管理機能。計った結果がそのままグラフになるという一点だけで、十分買う価値があると思います。Wii Fit自体に運動効果を期待するんじゃなく、毎日体重を記録して…

EntityManagerで更新系SQLをカスタマイズ

S2DaoでSQLを細かくカスタマイズしたい場合、AbstractDaoの継承クラスからEntityManagerを使用することになります。ただし、EntityManagerには検索系のメソッドしか用意されていないので、更新処理目的では使うことができません。今回、更新用のSQLをカスタ…

Ext JSの導入を検討

Ext

S2JSFで開発継続中のWebアプリケーションが、カレンダーだのWYSIWYGエディタだのタブコントロールだのと、JSライブラリ寄せ集め状態になって収拾が付かなくなってきたので、Ext JSへの移行を検討中。S2JSFがレンダリングしたform要素を、Extのコントロールに…