Working With Objects

MVC の父、Trygve Reenskaug(読み方不明:トリグヴェ・リーエンスコゥグ?)の「Working With Objects」を読んでみました。Working With Objects: The Ooram Software Engineering Method作者: T. Reenskaug出版社/メーカー: Prentice Hall Software発売日: 19…

続:protobuf

protobuf に関する巷の反応にいささかウンザリしている Google 社員の blog を見つけました。http://diveintomark.org/archives/2008/07/12/protobuf最後の段落を引用してみます。 Comparisons to other data formats was, I suppose, inevitable. Old-timer…

protobuf による一撃

Google の protobuf をちょっと試してみました。可変長の数値表現である Base 128 変形とか、符号付き数値をコンパクトにシリアライズするための ZigZag エンコーディング等の面白そうな詳細はさておき、まあ、普通に使えそうです(当たり前)。文字列は UTF-8…

Core Animation でフェードアウト

新エンジンでは、入力モードの変更や入力セッションがアクティブになったタイミングで、Core Animation を使ってカーソル位置に入力モードアイコンを表示します。アニメーション仕様はごく簡単に「入力モードアイコンを 1 秒間表示したら 1 秒でフェードアウ…

子育て

無事、娘が一歳になりました。最近は大人の真似をするのが楽しいようで、神妙な面持ちで携帯電話を耳にあてたりします。携帯がない時には大型の電卓を代用するので、「一歳児の抽象化能力もなかなか侮れないな」と驚いていたのですが、今朝は茹でたブロッコ…

追記:EBNF を修正

重複していた group_entry を ascii_group_entry に修正 single_entry と group_entry の各 modifier 指定を修正

新エンジンのキーマップ設定

まだアルファ版もリリースできていない新エンジンですが、キーマップ設定の自由度が向上しています。AquaSKK スレに書けるほど短かくまとめられないので、このあたりの仕様変更について簡単に書いておきます。 基本的な考え方 新エンジンでは、全てのキーが…

Singleton の憂鬱

パターンを覚え始めた頃は、Singleton ばかり使っていました。引数で渡す手間なしに、いつでもどこからでもオブジェクトにアクセスできる。なんて便利なんだと。しかし最近になって、Singleton がやけに鬱陶しくなってきたのです。たぶんそれは、中毒のよう…

Programming -- Principles and Practice Using C++

Stroustrup によるプログラミング初学者向けの「Programming -- Principles and Practice Using C++」が 8 月に出版されるようです。http://www.research.att.com/~bs/programming.htmlPreface のドラフトが公開されていますが、じんわりと胸が熱くなるよう…

TBB: Intel Threading Building Blocks

会社帰りに八重洲ブックセンターに立寄ってみると、O'Reilly から Intel Threading Building Blocks の解説本が出ていました。http://www.oreilly.co.jp/books/9784873113555/結局買わずに帰ったものの、面白そうだったので英文の Tutorial(PDF) をダウンロ…

pthread の condition

SKK 辞書の初期化を非同期化して検索のテストしているのですが、辞書のロードが完了する前に検索が走る現象がちらほら出てきました。検索が空振りするのでテストも失敗します。対策が必要です。検索時にコンテナが空かどうか確認するのはどうだろう。できれ…

Private Interface イディオム

基底クラスのメソッドを派生クラスで隠す手法について調べてみました。 この手法は合法なのか? まずは C++ FAQ Lite に以下の記述を見つけました。 [21.1] Should I hide member functions that were public in my base class?Never, never, never do this. …

派生クラスでアクセス制御を強める

Buddy イディオムは我ながら良いアイデアではないかとご機嫌でいろいろ実験していたのですが、今日になって驚くべき事実(つまり、自分の無知)を知ることになりました。今さらなんですが、C++ ではアクセス制御と継承は直交する概念なんですね。だから、派生…

Buddy イディオム(仮)

長い間、どう実装すべきか悩んでいた問題をうまく解決できました。とはいっても、オブジェクト指向に馴染んだ人には当たり前すぎることかもしれないし、派手なトリックもありません。ただ、個人的にはとても大きな気付きがあって嬉しかったので、記念に書い…

今年学ぶべき言語

達人プログラマーの「毎年少なくとも一つの言語を学習する」という自己投資についてのガイドラインにならって、今年学習すべき言語についてじっくりと考えてみました。達人プログラマー―システム開発の職人から名匠への道作者: アンドリューハント,デビッド…

AquaSKK 3.6 リリース

使い勝手の改善と細かなバグ修正を盛り込んだ 3.6 をリリースしました。全ての AquaSKK ユーザーにバージョンアップをお勧めします。なお、TSM 版の AquaSKK はこれが最後のバージョンになります。不具合にはなるべく対応したいと思ってますが、機能追加や改…

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