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

Wii

Wii を購入しました。家庭用ゲーム機を買うのはセガサターン以来なのであまりの進化に浦島太郎のような気分を味わってます。ヨメさんはバーチャルコンソール版のスーパーマリオに「クリボー怖い!」と叫びながら狂喜。 というわけで、新鮮な刺激を満喫してい…

Input Method Kit の罠

IMK 版 AquaSKK の雛形を作ってみたのですが、/Library/Input Methods 以下にインストールしても、なぜか環境設定の言語環境パネルに表示されません。ああ、嫌な予感が...あーでもないこーでもないとさんざん四苦八苦した結果、CFBundleIdentifier に "input…

続:Input Method Kit

http://developer.apple.com/releasenotes/Cocoa/RN-InputMethodKit/index.html Every input method creates an IMKServer object in its main function. One of the parameters for the IMKServer object is a connection name. The IMKServer object uses …

Input Method Kit

ざーっと読んでみました。勘違いもあるかもしれませんが、以下のような感じです。 IMKServer(≒ TSM コンポーネント) が入力セッションを束ねる 各セッションは IMKInputSession(client) と IMKInputController(server) のペア IMKInputSession は TSM ドキュ…

Leopard の良くないところ

まだ使い込んでいませんが、とても快適です。Spaces に Quick Look、Cover Flow。そして、なんと言っても Safari のスピード。google の検索結果が静的 HTML のようにカッと表示されます。AquaSKK も拍子抜けするくらいあっさりと動いているし、Leopard 本体…

IM 飲み会その 2

加藤さんに誘われて、急遽、IM 飲み会に参加してきました。昨年のメンバー + uim のヤマケンさん、OpenVanilla 開発者の Gugod さん & girl friend の総勢 8 名。いろいろと興味深い話が聞けて、とても刺激になりました。また来年も楽しみにしてます。 AquaS…

温故知新:マニュアルはちゃんと読もう

先週、GNU make の拡張機能について取り上げましたが、その後 make.info を頭から読み直していたら衝撃の事実を発見してクラクラしたので、懺悔しつつここに記します。 静的パターンルールを使う 複数ターゲットに対して共通のルールを設定する「静的パター…

温故知新:GNU make の拡張機能

新エンジン用のユニットテストには昔ながらの Makefile を使っています。改めて調べてみると GNU make の拡張機能には便利なものがあり、Makefile のメンテナンスが随分楽になりました。 VPATH を自動設定する 新エンジンのディレクトリ構成は、$(project_ro…

server-completion の実装

SKK-ML で server-completion の話題が出ていました。L 辞書はソート済なので対数時間で処理できるはずです。むずむずしたので実験してみました。 補完動作の確認 まずは補完動作がきちんとできることを確認するために、小さなプログラムを書きます。main 関…

UTF-8 イテレータ再考

新エンジンの実装を進めているところですが、UTF-8 文字列の扱いを向上すべく utf8iterator を練り直してみました。 template <typename Iterator> class utf8iterator { Iterator curr_; unsigned size() const { static unsigned table[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1</typename>…

Subversion 実践入門

WebKit の一件で Subversion に興味を持ったので、『Subversion 実践入門』を読んでみました。Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)作者: Mike Mason,でびあんぐる出版社/メーカー: オーム社発売日: 2007/04/21メディア: 単行本(…

State Chart XML

IBM が Web 技術特許を開放したというので覗いてきました。実を言うと Web 関連の技術にはあんまり興味がないので、ひやかしのつもりでざざざっとスクロールしていたのですが、たまたま State Chart XML (SCXML): State Machine Notation for Control Abstra…

英文読解術

WebKit 問題で向こうの開発者と色々とやり取りする中で、bugzilla がキチンと運用できていることに驚いたり、彼等のレスポンスの良さ・誠実さに感心したりと、予想外に新鮮な経験ができました。しかし同時に、自分の英語力のなさを痛感というか再認識して嫌…

追記

既にバグ登録されている模様です。しばらく様子見ですね。 http://bugs.webkit.org/show_bug.cgi?id=13263

WebKit 問題

ASCII 遷移で「l」が入力されたり、ひらかな→カタカナ遷移の「q」が効かないという問題ですが、WebKit のコードを眺めて調査したところ、 WebKit が AquaSKK にキー入力イベントを渡す AquaSKK はイベントを正しく処理する WebKit が同じイベントを再度発行…

Carbon は 64-bit 化されない(ところもある)らしい

WWDC での Jobs のスピーチを聴いた Carbon Love な人々に衝撃が走り、まとめサイトが出現。 http://www.carbondev.com/site/?page=64-bit+Carbonついにこの日が来たかという感じですが、Finder は Leopard でも 32-bit Carbon App らしいです。 とりあえず…

stream parser

以前、stringstream で簡単 split という日記を書いたのですが、もうちょっと直感的な構文を使えないかと思い、実験してみました。 #include <iostream> #include <string> #include <sstream> template <typename T> struct string_to_any { void convert(const std::string& from, T& to) const { </typename></sstream></string></iostream>…

大安吉日

本日、娘が誕生しました。 予定日を 10 日ほど過ぎていましたが、始まってみればあっけないほどの安産で、母子ともに健康です。何もできませんでしたが運よく立ち会うこともでき、妻はますます精悍かつ慈悲深い顔付きになり、人間的にも大きく成長したようで…

土とコンピューター

今日は連休最終日ですが、とうとう一行もコードを書かずに終わりそうです。ぐうたらする暇もなく、アンジェラ・アキのコンサート*1に行き、ウチの実家に一泊して、奥さんの実家に一泊して、仕事を少々といった感じでした。家庭を持つというのは、こういうこ…

予言パターン

昨日の続きを発展させて「予言パターン」というアイデアを思いつきました。きっと似たようなことを書いている人がいると思いますが、とりあえず書いてみます。 動機 プログラムとは結局のところ、未来を作り出すものです。その未来は大きくわけて、以下の三…

壊して作ってまた壊して

ひと通り動くものはできたのですが、どうもコードがしっくりきません。状態変数が増え、多段 if で分岐し、個々のクラスが冗長かつ緊張感のない通信をするという、なんともトホホな感じに。そこで、一度組み上がったエンジンをまたバラして設計を検討し直し…

コンポーネント設計

引き続き、新エンジンを開発しています。状態遷移やコンテキストの管理など細かい部分の実装は一段落したので、エンジンを包み込むコンポーネント部分の抽象化を考えてみました。まず、アプリケーションとコンポーネントの関係をおさらいしておきます。 アプ…

C++再考[新装版]

レトロな表紙を見て「ま、読まなくてもいいだろ」と勝手に敬遠してましたが、これがとんだ大間違いでした。C++ で良いコードを書きたいと思っていて、まだ成長段階だと自覚している全ての人にお勧めです。C++再考作者: アンドリューコーニグ,バーバラ・E.ム…

UTF-8 をいったりきたり

AquaSKK のベータ版をリリースしました。これでまた AppleScript を忘れてしまいそうです。 さて、新エンジンで文字列と言えば std::string であり、中身は UTF-8 です。これまでのところは何の工夫もないまま、std::string に助けられて順調に進んできたの…

Apple Script でキー入力

Apple Script を勉強してます。AquaSKK のアンインストーラを作って以来なので、かなりご無沙汰です。とりあえず、キー入力を生成するための Handler から作ってみました。 on emit(input_string) tell application "System Events" tell application "TextE…

暗黙の確定

fix-skkserv 1.0 には暗黙の確定に関するバグがありました。「暗黙の確定」とは、テンポ良く入力するために不可欠な機能です。例えば、 ▼漢字という状態で「Nyuuryoku」と入力すると 漢字▽にゅうりょくのように「漢字」が確定され、自動的に見出し語入力状態…

stringstream で簡単 split

iPhone 触ってみたいですねー。商標でもめてますが、いっそのこと Apple Phone でも良いような。 さて、C++ で独自フォーマットのテキストファイルを読み込む場合には、find_first_* と substr を組み合わせて泥臭く処理をすることが多かったのですが、『区…

謹賀新年

あけましておめでとうございます。今年もよろしくお願いします。クラス図を更新したのでお披露目します。キーマップを管理する汎用的なクラスとして SKKInputKeymap を作り、SKKPreProcessor から分離してみました。また、現在の KanaTreeController の UTF-…