2010/09/29

Adobe Application Manager がアップデートエラーになった場合の対処

MacOS X 用の Adobe Photoshop を CS3 から CS5 へとアップデートしました。

インストールが終了し、早速 Photoshop を起動。まずはアップデートを行なおうと「ヘルプ > アップデート」からアップデートを実行したところ Adobe Application Manager が起動しました。この管理ツールにより、Photoshop だけでなく Bridge や Camera RAW など、関連するアプリケーションも一括でアップデートできるようになっています。


しかし「アップデート」ボタンを押したところ「一部のアップデートがインストールされませんでした」というエラーが出てしまいました。

理由には、「Adobe Application Manager が動作しています。インストールを続けるには、Adobe Application Manager のすべてのインスタンスを終了してください。」と表示されていますが、このインスタンス以外に Adobe Application Manager は起動していません。ps で調べても、関連プロセスが動作しているような気配もありません。

いろいろ試したところ、terminal から、アップデートコマンドの実体である PDAappを sudo 経由で起動したところ、うまくアップデートが完了しました。

% sudo /Library/Application\ Support/Adobe/OOBE/PDApp/core/PDApp.app/Contents/MacOS/PDApp

どうやら、アップデートはスーパーユーザで実行しなければならなかったようです(open コマンド経由での PDApp.app 起動では、エラーを抑止できませんでした)。

Webを検索しても、同じ症状に悩んでいる人は少ないようですので、私の環境でパーミションに問題がある可能性はありますが、同じ内容で悩まれている方は、試してみてはいかがでしょうか。

Google Developer Day 2010 Japan 参加しました

Google Developer Day 2010 Japanへ参加しました。



2008年2009年に引き続き3回目の参加です。

去年、一昨年と代わり、今年は東京国際フォーラムでの開催となり、基調講演など、規模が一回り大きくなった感じがします。

HTML5、Android、Waveといった新規技術の立ち上げがメインであった去年に比べ、それらの技術が安定成長期へと移行しつつある今年は、やや講演テーマがおとなしめな印象。それでも、最先端の技術動向や細かな技術内容を解説してくださるのは、有り難い限りです。

今年春のDevFestに続き、今回もDevQuiz選抜が行われた事の影響でしょう、現役の開発者が多かったようで、会場には MacBookとAndoridケータイを所持している方々がたくさん。デザイナさんの参加が多かったり、iPhoneケータイ一色になるApple系のイベントとは異なる雰囲気で、コミュニティカラーの差に面白さを感じます。

今回参加させていただいたセッションでは、矢倉眞隆さんが御講演くださった「HTML5とウェブサイトデザイン」内が勉強になりました。特に各種CSS3の説明やモバイル端末でのグラフィック表現などに関し、実際の存在するWebサイトをショーケースとして解説くださった点で、大変参考になり、またより深い興味を覚えました。機会があれば、より長い発表時間で、さらなる深い解説をお伺いしたい気がしています。

今回も数多くのボランティアの方々がイベントを支えてくださったと伺っています。Google社員の方々、またボランティアスタッフの方々へ深く感謝いたします。どうも有難うございました。

セッションとは直接関係ありませんが、普段なかなか会えない方々へ出会うことができたことも、大きな喜びの一つでした。そのような機会を与えて下った点でも、この Google Developer Day へは大変大きな意義のあるイベントだと感じました。

2010/09/24

1/144 RG RX-78-2 ガンダムを組みました

「ガンプラ生誕30周年記念」として発売された、ガンプラの新シリーズ「RG」。


1/144 とは思えないリアルな造型、可動範囲の広さが特徴です。

このシリーズが発売されることは知っていたのですが、プラモデルを最後に作ってから既に数十年、購入する予定はありませんでした。

しかし、先月上旬「カップヌードル シャア専用チリトマトヌードル」を購入し、久しぶりにプラモデルへ触れた懐かしさから、ついつい購入。

購入時は「1/144だから半日もあれば完成するのだろう」と、8月の休暇中に楽しむつもりだったのですが、届いた箱を開けた瞬間、膨大な部品数と細かなシールの数々に、その考えがあまりに無謀なものであることに気付かされました。

結局、週末などの空き時間を使い、ゆっくり作ることにして、1か月ほどで完成。

各パーツが綺麗に色分けされており、また数多くのリアルなデカールが付属していることから、ただ組み上げるだけで非常にカッコ良く完成します。しかもパーツを切り取り、嵌め合わせるだけなので、(パーツの量は別にして)簡単に組み上げることができます。

私の中にあるガンプラのイメージは、「接着剤」必須、色を塗らなければ全体的に単調で、デカール貼付は水必須、完成造型はちょっとイマイチ、というものだったのですが、今回、このイメージが非常に大きく変化しました。それでも、接着剤をはみ出させ、塗料をこぼし、パーツを無くしかけながら、友達と一緒に作った遠い日々を思い出すことが出来ました。

さて、完成品を「静岡ガンダム」を意識した立ちポーズで。


遠い昔にガンプラを作ったことのある、今ではオトナになった「大きな子供」な方々へ、是非あの当時を思い出しながら作っていただきたいな、と思いました。

おまけとして「カップヌードル シャア専用チリトマトヌードル」の3体と一緒に。1/380は流石に小さいですね。


2010/09/19

第3世代 Kindle は PDF ファイルの読みやすさが向上

8月末に発売された「第3世代Kindle」を購入しました。


9月1日頃注文したのですが、品不足のため出荷日が確定したのは12日でした。この時点では「17日から20日に発送します」とのことでしたが、実際には予定よりも1日早い16日に発送が行われ、18日午前中には受け取ることができました。相変わらずAmazonの迅速さには驚くばかりです。

第3世代 Kindle は、第1/2世代 Kindle とは異なり、Wi-Fi専用モデルと、3G+Wi-Fiモデルの2種類があります。差額は$50です。今回は「円高還元セール」の名目のもと(?)、3G+Wi-Fiモデルを購入しました。3G+Wi-Fiモデルには、従来モデル同様の「White」と、新色である「Graphite」の2色が用意されています。今回はGraphiteを選択。

いつもの箱で到着。1つはKindle本体、もう1つは先に届いていたカバーケースです。


第2世代と同様のパッケージ構成です。


本体の大きさ比較。少し小さくなっています。見た目は僅かな差ですが、片手で気軽に掴めるサイズになりました。


背面素材はプラスチックになりました。重量は17%軽くなったそうですが、小型化と背面素材変更が影響しているのでしょう、片手で持った時の印象は、それ以上に軽く感じます。


 ケースの比較。第3世代向けのオフィシャルカバーケースにはゴムバンドが付いています。蓋が勝手に開いてしまうことがなくなり、持ち運びやすくなりました。カバーケースにはライト付きモデルも用意されていますが、私はライトの無いシンプルなモデルを選択しました。


第2世代 Kindle を持っているにも関わらず、第3世代を購入したのは、物欲に負けたからE-INKディスプレイの向上と、PDF表示時に濃淡調整が追加された為です。

従来のKindleでA4サイズのPDFファイルを表示させた場合、ファイルに依っては、読みにくさを感じることが少なからずありました。読みにくさを感じる要因の一つは文字の濃度です。小さな文字は当然線のボリューム感が失われ、背景に紛れてしまうことになります。

もしPDFの濃度調整が行えるのであれば、この問題を回避できるのではないかと考えました。

まずは第2/3世代のE-Inkディスプレイ色見比較。使用したPDFファイルはO'Reilly Japan Ebook Storeで購入した「Real World Haskell」。

お互いデフォルト設定のままでの表示です。写真では分かりにくいのですが、第3世代Kindleのほうが、ややしっかりと表示されています。


コントラストを変更してみます。第3世代Kindleでは、5種類の中からコントラストを選択できますが、最も濃い設定にしてみました。


効果は抜群です。読みやすさが大きく変化しました。これならば、この文字サイズであっても十分に読むことが出来ます。

今度は自分でスキャンしたファイルで試してみます。使用した書籍は『機動戦士ガンダムUC 2 ユニコーンの日(下)』(福井晴敏/著)。スキャナ等の環境は「紙の書籍を電子化して保存する: 機材の導入」で購入した、Scan Snap S1500など一式です。

スキャンした、素のファイルを第3世代Kindleで読んでみると、Kindleが備えている自動拡縮機能による文字かすれが発生してしまい、読みにくく表示されてしまいます。これは第2世代Kindleと同じ状態です。


そこで濃度を最高にしてみました。先程よりはやや読み易くなったものの、相変わらず読み続けるのは困難な状態です。


同じファイルを自作のkdconvスクリプトで加工した後、表示させてみました。このスクリプトは、オリジナルのPDFファイルへ細工を行ない、Kindle自身による自動拡縮を抑止させ、且つ、文字を太めにする、という処理を施すものです。

まずは標準濃度での表示です。


自動拡縮が抑止され綺麗に読めます。また進化したE-Inkディスプレイのお陰で、第2世代Kindleよりも文字がくっきりとしています。

濃度を最高にしてみました。


文字は、より、くっきりとしたのですが、やや濃すぎる印象です。このまま読み続けると、目が疲れそうな気がします。一方、暗目の場所で読むには良いかもしれません。

第3世代Kindleへ搭載されたE-INKディスプレイは、第2世代Kindleよりも読みやすさが向上しています。加えて新たに実装されたPDF濃度の調整機能は、A4サイズ程度のPDFファイルをKindleの画面サイズで読む際に大きな威力を発揮することも分かりました。両機能により、新しいKindleは、「軽く小さい電子ブックリーダでPDFファイルを読みたい」という方にとって、より魅力的な機器へと進化したのでは、と感じています。

2010/09/09

「カップヌードル シャア専用チリトマトヌードル」食べました

この夏発売されたカップヌードル シャア専用チリトマトヌードル

各カップラーメンに 1/380 スケールのシャア専用プラモデルが付属したカップ麺です。全部で3種類の味があり、「チリトマトヌードル」味にはザクIIが、「辛さ3倍チリトマトヌードル」味にはズゴックが、そして「赤いチーズチリトマトヌードル」味にはゲルググが付いてきます。

結構良い値段がするのですが(3倍高い?)、先月上旬、家内の買い物かごへとコッソリと忍ばせ、3種類まとめて購入してもらいました。ありがとう!


生憎と今まで食べる機会がなかったのですが、今日、辛さ3倍チリトマトヌードルを頂きました。なるほど、通常品よりもピリ辛な味で、辛いもの好きには大変満足な味です。

パッケージの背後にはシャアの絵が。


パッケージの上にはズゴックの絵が書かれています。


プラモデルは上の透明ケースへ入っています。「色プラガンダムシリーズで史上最小」との謳い文句。


中身と組立図。


蓋の裏にはズゴックに関する説明。細かいですね。


というわけで、作ってみました。下の台座は穴あきルービックキューブです。プラモデルの小ささがわかります。


美味くて楽しいカップラーメンでした。

2010/09/06

Closure Linter で日本語読点を認識させる

プログラムを書く際に lint は非常に役立つツールです。

今まで JavaScript を書く際には JSLintを使っていましたが、開発の都合でClosure Linterへ乗り換えてみました。

Closure Linterは機能豊富なツールで、例えば JSDoc の行末が読点で終わっていない場合などに警告を出してくれます。ただ、残念ながら日本語の読点(「。」)を読点として認識してくれません。

他の方の対応を探してみましたが、うまく見つけられなかった為、既に多くの方々が作られているであろうことを承知で、インチキ1行パッチを置いておきます。Python Script の文字コードと、JSファイルの文字コードが UTF-8 であることを仮定しています。public domainです。

本当はスクリプトファイルの言語情報を認識するなどすれば素敵なのでしょうが、私はPythonが苦手なので当面これで凌ごうと思います。

--- closure_linter-2.2.4-ORIG/closure_linter/ecmalintrules.py
+++ closure_linter-2.2.4-ja/closure_linter/ecmalintrules.py
@@ -535,7 +535,7 @@
               end_string = htmlutil.StripTags(end_token.string).rstrip()
 
           if not (end_string.endswith('.') or end_string.endswith('?') or
-              end_string.endswith('!')):
+              end_string.endswith('!') or end_string.endswith('。')):
             # Find the position for the missing punctuation, inside of any html
             # tags.
             end_position = None

HTTP 経由の git push で lock エラーへ対処する

プロジェクトでHTTP 経由の gitを使っています

生憎サーバのディスクが壊れてしまったので、OSのアップデートを
含め入れ替えを行ったのですが、それ以後、git push で lock エ
ラーが発生するようになってしまいました。
% git push
error: cannot lock existing info/refs
fatal: git-http-push failed
パーミション問題かな、と該当 repos にある info/refs のパーミションを確認しましたが、問題ないようです。
# ls -la
total 64
drwxr-xr-x  2 www  admin  16384 Jul 15 16:52 ./
drwxr-xr-x  7 www  admin  16384 Jul 15 16:42 ../
-rw-r--r--  1 www  admin    240 Jul 15 16:42 exclude
-rw-r--r--  1 www  admin    175 Sep  3 07:43 refs
ヒントは httpd-error.log    にありました。エラー発生時のログを見てみると以下のメッセージが書かれていました。
[Fri Sep 03 07:39:53 2010] [error] [client 137.153.67.138] Could not LOCK /scm/git/p/foo.git/info/refs due to a failed precondition (e.g. other locks).  [500, #0]
[Fri Sep 03 07:39:53 2010] [error] [client 137.153.67.138] The locks could not be queried for verification against a possible "If:" header. [500, #0]
[Fri Sep 03 07:39:53 2010] [error] [client 137.153.67.138] Could not open the lock database.  [500, #400]
[Fri Sep 03 07:39:53 2010] [error] [client 137.153.67.138] (13)Permission denied: Could not open property database.  [500, #1]
「info/refs を lock したかったが、他の lock など、その前提条件で失敗した」と読めます。なるほど、WebDav 自体の lock が怪しそうです。私は WebServer に Apache を使っていますので、該当する設定ファイルを確認してみました。
# cd /usr/local/etc/apache22/extra
# grep -i lock httpd-dav.conf
# on the directory where the DavLockDB is placed and on any directory where
DavLockDB "/usr/local/var/DavLock"
# ls -ld /usr/local/var/
drwxr-xr-x  3 root  admin  512 Sep  3 07:43 /usr/local/var/
実際 httpd が書き込めないパーミションになっていることがわかりました。OS再インストール時に確認を怠ったようです。このパーミションを正しくする、または、DavLockDB ディレクティブのパスを適切に変更すれば問題解決です。

なお DavLockDB へ指定するのはロックデータベースへのフルパスであり、ディレクトリではありません。書き込み権限などを確認する場合には、ロックファイルの書き込まれるディレクトリへ注目しましょう。

私はディレクティブへディレクトリを指定するものだと勘違いし、自分で掘ったディレクトリのパーミションへばかり気を取られ、しばらくはまってしまいました。なお、設定後には、Apacheの再起動が必要になります。

HTTP 経由の git push で lock エラーになってしまった場合には、repos のパーミションだけではなく、WebDAV の設定も確認してみると良いと思います。