2012/01/17

MacOS X Lion : メール添付されたzipが開けない・・・ Thunderbird が原因だった

Stuffit Expander は優秀。パスワード付き zip でも lha でも、ほとんどのアーカイブを解凍してくれて重宝します。Macユーザにとっては MUST HAVE なツールですね。

MacとWindowsのzipファイルの互換性は過去の話かと思いきや、Windowsで作成され、メールに添付されたzipファイルが開けないという問題に遭遇しました。
Stuffit は「アーカイブが破損している可能性があります」と報告し、コマンドラインのunzipで展開しようとしても「End-of-central-directory signature not found」zipファイルではない、と言われる。

仕事のメールでじっくり調べている時間もないので、とりあえずWin機を起動してそちら側で添付ファイルを解凍していたが、自宅にいないとこれはできないので何かと不便。


最初はzipの互換性の問題かと思い、The Unarchiver や WinZip for Mac などいくつかの解凍ソフトを試すがどれもNG。
一時は AppStore で有償のアーカイバ買わなきゃダメか? とまで思った。

ふと思いつき、メールの添付ファイルをWebメーラからダウンロードしてみたらあっさり解凍できた。
メーラは Thunderbird を使用しているが、Thunderbird には添付ファイルのエンコード名の扱いによって添付ファイルが壊れることがあるらしい。

出典 : [ソフトウェア]Thunderbirdの添付ファイル不具合


これは少し古いバージョンの話なのと、今回の添付ファイル名には日本語は使われていないので同じ原因であるかどうかは怪しいところ。
ただ、メーラの相性によって Thunderbird で添付ファイルが壊れることがあるのだけは事実。
Thunderbird を使用していて上記のエラーに遭遇したら、一度他のメールクライアントやWebメーラなどで添付ファイルを落としてみましょう。

あ、でも Win機も Thunderbird だけど、こっちはファイル壊れていなかったな。
プラットフォームか文字セットの設定に依存しているっぽい。
ん〜、MacとWindowsの障壁はまだまだ無くならないようです。

2012/01/05

NGINX で MySQL に保存されている redmine のアカウント情報を元にBASIC認証する

まだ実施していないけど、実現するために必要そうな情報をちょいメモ。

<やりたいこと>
nginx でBASIC認証をしたいが、認証情報は redmine のアカウント情報(MySQL)をソースとしたい。

<背景>
redmine を導入したプロジェクト管理サーバに jenkins も導入。
jenkins の管理画面や ant により生成した javadoc やテストレポートなどの静的なファイルもプロジェクト管理サーバで閲覧できるようにしたい。
当然、これらのファイルにも認証をかけたいが、アカウント情報はredmineのものを使いたい。
public にこれらのドキュメントを配置しても良いが、静的なコンテンツのために rails のリソースを使うのはもったいないので、これらは nginx で直接返すようにしたい。

<Apacheの場合>
mod_auth_mysql を以下のように設定すればよいらしい
Auth_MySQL                      On
Auth_MySQL_Socket               /var/run/mysqld/mysqld.sock
Auth_MySQL_Host                 localhost
Auth_MySQL_User                 [redmineのデータベースユーザ名]
Auth_MySQL_Password             [redmineのデータベースパスワード]
Auth_MySQL_DB                   [redmineのデータベース名]
Auth_MySQL_Password_Table       users
Auth_MySQL_Username_Field       login
Auth_MySQL_Password_Field       hashed_password
Auth_MySQL_Encryption_Types     SHA1Sum
Auth_MySQL_Empty_Passwords      Off
AuthType Basic
AuthName "Authorization Realm"
Require valid-user

<NGINXの場合>
nginx には mod_auth_mysql はない。
替わりに mod_auth_pampam_mysql を使えばいけそう。

http://web.iti.upv.es/~sto/nginx/
http://pam-mysql.sourceforge.net/