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 の設定も確認してみると良いと思います。