2008/08/03

Outlook の修復

最近本当に iPaq 112の調子が悪くて困っています。正確には、「Outlook とメモの同期が上手くいかない」問題なので、ActiveSync の問題なのですが。

現象は「x項目が競合しています」という大変良く目にするものです。この現象が起こった場合、今までは、
  1. PC側のメモをどこかへ退避

  2. 「競合の解決」を選択

  3. PDA側で情報を上書き

  4. 両ファイル差分を確認

  5. 手マージして、再度 sync
ということで乗りきっていました。

しかし、何時の頃からかこの方式が使えなくなり、「競合の解決」を選択すると、「デバイスでファイルが使われているかデバイスのメモリ不足」というメッセージがでるようになってしまいました。最後にはお決まりの、「状態の表示」エラーになり「デスクトップで問題が発生しました。サポート コード:85010014」が繰り返されることに。

この場合も解決策は決まっていて、
  1. デバイスを再起動する

  2. Outlookを終了させた後、タスクマネージャで Outlook プロセスを探し、残っている場合には、強制的に終了させる

  3. Outlook の「ヘルプ」から「アプリケーションの自動修復」

  4. ActiveSync で「モバイルデバイスの削除」を選んで、再度コネクションを設定する

  5. ActiveSyncを再インストールする
という、なんだか情けないことを順番にためす事になります。しかし、なぜか今回はこれでもだめなのです。

しかも、最もよく分からないのが、「上手く行くことがある」こと。何度かデバイスの再起動やOutlookの修復を繰り返すと、スルっと上手く行ってしまうことがあります。しかも、これ以後も、そのまま上手く行くようになるか、再び発生してしまうかは、運次第だというのが嫌らしいところです...。
特に私は自宅と勤務先の二か所で sync しているので、更にややこしく、片方では上手く行っても、もう片方はだめだった、という事は頻発します。

現在は、競合したメモを全て退避、削除した後、再度 sync を行うことで、なんとか折り合いをつけているのですが、確実な現象の切り分けと回避策を見つけたわけではないので、ドキドキです...。

この辺り、PalmOSでは困ったことがなかったので、流石に良く出来ていたな、と改めて感心してしまいました。

Mew で IMAP

私の愛用メイラは、もう随分と長い間、Emacs+Mewです(山本さんに感謝です)。

運用方法は、手元のFreeBSD内の/var/mailにあるメイルを、直接Mewがアクセスして読み込む、という至ってシンプルなもの。もともとは、自宅サーバがSMTPを直接受けつけていた為、一番理にかなった運用でした。

ただ、2年ほど前に、自ドメインの運用を Google Appsへ移してからは、Google Apps のメイルサーバ(実体はGMail)から fetchmail を使って POP 経由でメイルを取得し、FreeBSD の /var/mail へ叩きこんだ上で、Mew により読み取る、という、結構間抜けな運用になってしまっていました(普通なら、直接 Mew で GMail へ pop する筈)。IMAPへ移行するのが良いのだろうな、と思いながらも、困っていないので、腰が上がらず...。

ただ、先日のMacOS X導入を気に、折角なので Mail.app や MacOS X 上の Emacs+Mew でも同じようにメイルを読めるようにしたいな、と思い、IMAPへ環境への移行を決行。

有り難いことに、GMail + Mewの設定方法は、色々な方が公開してくださっています。その中から、私は特に「KDE on Vine Linux」さんの「Gmail(IMAP) with Mew」を参考にさせていただきました。

Mewの設定自体は簡単で、こちらのサイトで紹介してくださっている通り、
(setq mew-proto "%")
(setq mew-imap-server "imap.gmail.com")
(setq mew-imap-ssl t)
(setq mew-imap-ssl-port "993")
(setq mew-imap-auth t)
(setq mew-imap-user "foo@example.com")
(setq mew-imap-delete nil)
とするだけです。GMail 自身もクライアントとして使うこと、また GMail の容量は、まだ5%も使っていないことなどから、メイルは削除しないようにしています。

メイル送信をGMailのSMTP経由にしたところ、転送に時間がかかるようでしたので、この点は、従来通り手元のFreeBSD上で上がっているMTAを経由させることにしました。結果、smtpの設定は特に変更していません。

一点注意することは、GMailとのSSLコネクションの為に証明書を適切に設定しなければならない、ということです。このサイトでも紹介してくださっている通り、[mew-dist 27313]を参考に設定すると良いでしょう。

また、GMail側のTrashを有効に活用するために、GMailを英語モードにした上で、次の設定を行いました。
(setq mew-imap-trash-folder "%[Gmail]/Trash")
英語モードにしている理由は、フォルダ移動の度に日本語入力を起動しなければならないのが面倒だったため。

加えて、今までは /var/mail を見れば良かった関係で Emacs 本体の biff 機能を使っていましたが、今回から Mew の biff を使うようにしました。これに関しては、「sanae の日記」さんが大変参考になりました。
(setq mew-biff-function 'mew-biff-bark)
(setq mew-use-biff t)
(setq mew-use-biff-bell t)
(setq visible-bell t)

;; biff の結果をタイトルバーに表示
(setq frame-title-format
'((multiple-frames "")
mew-biff-string ; メール数
" %b " (buffer-file-name "[%f]") ; バッファ名(ファイル名)
))
(setq icon-title-format 'frame-title-format)
というわけで、上記設定を行った結果、Mew でも、Mail.appでも自由にメイルを読んで refile できるようになりました。勿論、外出先からでも Webメイルとしての GMail は普通に機能しますし、どのクライアントで未読処理やrefileを行っても、他クライアントでそのまま活用できます。この為、家に戻ってから、未読整理 & refile処理に追われることもなくなり、お陰で大変便利になりました。

色々な設定を公開してくださっている皆様、どうも有り難うございました。

C++とSTL

久方ぶりに、業務上、短期間でC++とSTLでコードをガリガリ書く機会がありました。C++もSTLも久しぶり。ここまで日常生活が、コード書きに追いまくられるのも久しぶり。

vectorへの push_back() で、メモリ割り当てがこま切れに発生するのは嫌だから、reserve() しておこう、と考えたのは良いのですが、vector が適切に初期化される前に reserve() してしまい、場合によっては push_back() が落ちる、という羽目に。しかも、stack を壊されて、しばしはまりました。

分かってしまえばなんてことないんですが、暫く遠ざかっていたので勘が働きません。なんか、衰えたなぁ、と流石に少し凹み気味。