Category: Environment

githubが使いたくなったりcoLinuxのインストールに失敗したり、という理由があって、Windows環境でまともなシェルを使いたくなった。ちょっと調べたら、使い慣れたPuTTY / 使ってみたかったzsh / もはやおなじみcygwinで環境が作れそうなので、さっそく構築してみた。

環境はWindows XP Professional SP3 / Core2 Duo E7400である。

(さらに…)

今までの流れからするとだいぶ唐突なネタだが、仕事で半日苦労したのでメモしておく。

まとめていたらえらく長文になったので先に結論。

  • Postfixのaliasは正規表現を使ってマッピングできる
  • Postfixでlocalがregexpを使う場合ローカルパートしか渡さない(らしい)
  • $_ENVがnullの場合はphp.iniのvariables-orderディレクティブをチェック

●メールでデータを受け取りたい

ご存知の通り、携帯はブラウザのフォームからMultipartでPOSTできないようになっている。つまり、ファイルのアップロードができないということだ。ユーザからテキスト以外のデータ投稿を受け付けようとすると、メールに添付してもらうしか方法がない。

一方、携帯のユーザの行動パターンには「メールアドレスをころころ変える」という特徴がある。個人的には気に入ったアカウントは長く使いたいと思うのだが、若年層のケータイユーザはそうではないらしい。となると、ユーザ側で簡単に変更できるメールアドレスをキーにするのはあまり都合がよろしくない。それ以外の情報でユーザを識別する必要がある。

●メールを送ってきたユーザを識別したい

私が担当しているコンテンツの前任者は、以下の手段でメール送信ユーザを識別していた。

  • ユーザIDを適当に暗号化
  • mailto:タグのbody要素に仕込む
    →クリックすると本文が入力された状態で端末のメーラが起動する
  • 受信したメールをパーズしてユーザIDを復号

正直あまりよろしくない方法である。ユーザが本文にテキスト情報を付与して送信することができないし、本文のキーをいじられるとあまりいいことはない。

一方、例えばmixiの「携帯で日記を投稿する機能」などは、ローカルパート(メールアドレスの内「@」以前の部分」に識別キーを入れて送るようになっている。これによってメールのsubjectが日記のタイトル / メールのbodyが日記の本文 / 画像が添付されていれば写真投稿、というメール一通で日記投稿を完結させることが可能になる。

ああ前置きが長くなった。つまり、ローカルパートに情報を載せたメールを処理するための設定方法をメモしておく、というのが本題である。

(さらに…)

GainerProcessing,Flash(AS2),MAX/MSPで制御することができる。非公式にはRuby,Perl,C#/VBなどからも制御できるので、お好みの言語を使えばいいだろう。

私は個人的な好みからProcessingを選択した。しかしどういうことか、Processing用ライブラリにはMODE7(8 x 8ドットマトリクスLED制御)のコードが書かれていない。せっかく秋月で4つも買ってきたのに、使えないとは納得が行かない。

調べてみると同じような納得行かなさを感じていた先達がいて、しかももうライブラリに手を入れて対応作業を完了していた。オープンソースって素晴らしい!と感激するところだが、使うためにはGainerライブラリだけじゃなくて、Processing本体もビルドしなくちゃならない(当然だが)。

リンクを紹介して終了してもいいのだが、いくつかハマれるポイントがあったので手順を記載しておく。


【2009-03-08】追記:

結論から言うと、動いた。本家のチュートリアルを真面目に読まなかったのが原因なのでお恥ずかしい限りである。

GAINER.cc | Tutorial / Processingで使う
http://gainer.cc/Tutorial/HowToUseGainerWithProcessing?p=4

自分でbuildしたProcessingの場合は/path/to/project_dir/processing/build/windows/work/以下にlib/keywords.txtとlibraries/*をコピーする。

【2009-03-06】追記:

この記事は昨日公開したものだが、一晩経って試してみたら動作しないことが判明した。一度記事を非公開にしていろいろ試してみたが、現状では「この記事の通りbuildしたProcessingで、この記事の通りにbuildしたgainer.jarは動かない」という状況である。

build済みバイナリで構築したProcessing環境に、この記事の通りにbuildしたgainer.jarを設置することで(MODE7も含めて)動作することまでは確認したので、とりあえずこの状態で再度公開しておく。原因が判明したら追記していく予定である。

なお、build済みバイナリでProcessing環境を構築する方法については、以下のエントリで簡単に紹介している。

Kwappa開発室: ProcessingでHello,Worldを表示する
http://kwappa.txt-nifty.com/blog/2009/01/processinghello.html
Kwappa開発室: GainerとProcessingの動作テストをする
http://kwappa.txt-nifty.com/blog/2009/01/gainerprocessin.html

(追記ここまで)


(さらに…)

やらねばならないのは痛いほどわかっていたが、面倒なのでひたすら先延ばしにしていたユニットテスト。既存のコードに組み込むのはほぼ不可能というのを言い訳にしてきたが、さすがに新しくフレームワークを実装するとなれば書かないわけにはいかないだろう。

そんなわけでPHP用UnitTestの本流、xUnitファミリの一員であるPHPUnitを導入してみる。環境はWindows XP SP3 / xampp 1.6.6a。

(さらに…)

現場では意外に、すべての開発をサーバ上で開発する人が多い。毎度毎度書く>アップロード>ブラウザでチェック、というサイクルを回すのはわりと大変なので、私はクライアント(ありがちなWindowsXPマシン)に環境を作ってしまうことが多い。

今更感満点の内容だが、ローカルにも開発環境を整えるといいよ!という啓蒙も含めてエントリしてみる。

(さらに…)

同僚がWindows環境の構築で苦労している。結論から言うと原因はこれだった。

Windows 版の PHP 5.2.6 にバージョンアップしたら、実行時にポップアップで「LIBPQ.dllが見つからなかったため、このアプリケーションは開始できませんでした。」とのエラーメッセージが出るようになってしまった。

Web系プログラミングにまつわるアレコレ :
PostgreSQL使いはPHP5.2.6へのバージョンアップは注意が必要かも

http://blog.livedoor.jp/squikole/archives/801626.html

別の挙動を調査していた私も、期せずしてこの不具合に引っかかっていた。WAPP(Windows / Apache / PostgreSQL / PHP)環境で開発されている方は注意されたい。

テスト環境から商用環境へのデプロイにrsyncを使っている。一方ローカルの開発環境(Windows)からはちまちまと手動でアップロードすることも多い。チーム内で見かけた手段はWinSCP、FFFTP、FileZilla、Eclipse + ant、ftp(コマンドライン)…。

どうせならローカルからサーバもrsyncでコマンド一発!のほうが幸せになれるんじゃないか?ということで方法を探ってみた。

(さらに…)