今回試した中で一番苦労した、、、にも関わらず結果的に使えなかったという、、、
だれか続きをやってくれw

ご無沙汰しています。かどです。
最近とある事情により iPhone のデータ連携について調べまくっています。その中で、ActiveSync互換 OSS である z-push の存在を知ったので試しに入れてみました。
ちなみに、ActiveSyncは、Exchange と Windows Mobile などの携帯端末のデータを同期するために MS が策定した独自プロトコルです。Windows用のものであれば、動くものがMSからダウロードもできたかと。
独自プロトコルとは言え、現在様々な製品で採用されているため、実質的に業界標準になりつつあります。
ご多分に漏れず iPhone でも採用されているため、上手く使えば iPhone と各種システムとのデータ連携なんてこともできちゃいます。(Googleカレンダーとも連携できるのでご存じの方も多いはず)
ちなみに、この z-push 自体は、php で開発されたプロトコル部分の実装になるので、基本的にはバックエンドの処理は php で開発してあげる必要があります。
付属で IMAP のバックエンドプログラムが同梱されているので、今回はそれを試してみました。
あと、OSS ですが、商売で使うには、多分某MSにとっても高いライセンス料を支払う必要があると思うので、ご注意ください。<詳細は調べてません^^
しかし、この年にして&Web開発者なのに初めて php に触りましたwといっても、Perlとほとんど変わんねーってことで全然抵抗はなかったわけですが。
メール関係は仕事上比較的知識がある方なので、題材としてもとっつきやすかったです。
iPhone での、CalDAV、LDAPについても色々調べてはいるのですが、まぁまた今度。<需要があれば、、、

昨今 Web の世界でも Google Docs や、Sky Drive などファイル共有のシステムが多く世に広まっています。
ファイル共有ができるということは、便利な反面、セキュリティには十分に配慮する必要があります。
特に、IEの仕様上、ファイルの拡張子・種類に関わらずファイルの先頭256バイトの内容によって、そのファイルをHTMLとして実行してしまうため、注意が必要です。
サンプル:
http://blog.himawari-dream.com/sample/xss/xss.txt
http://blog.himawari-dream.com/sample/xss/xss.html
http://blog.himawari-dream.com/sample/xss/xss.gif
※Cookieを表示するだけのサンプルです
※ファイルの中身は全て同一です

や、ほろ酔いです。w
まぁそれはともかくとして、WEBシステムでは、情報のリアルタイム性を確保するために、サーバからのレスポンスについては基本的にキャッシュさせないようにコンテンツを作成させることが多い事と思います。
たとえば、HTML中に、キャッシュをさせないためのタグを埋め込んだり、リクエストURLが一意なものとなるように、あえて時間を埋め込んだり。
ただこの場合、ブラウザの設定によっては、JSファイルや画像ファイルについてもキャッシュされずに、画面遷移の都度読み込まれてしまい思わぬパフォーマンス低下を招いたりします。
特に最近ではJSファイルですら数百倍KByteになったりするので、低スペックのマシンであると毎回処理に数秒〜数十秒かかったりするもんですから、馬鹿にできません。<まぁ低スペックマシンの場合は、JSの処理にも時間がかかりますが、、、
てことで、そんな場合には、mod_expireを使うと良いかも知れません。

IE8がリリースされ、世のウェブサイト・システムの管理者・開発者はまた対応ブラウザが増えるのかと頭を抱えていることと思います。<いやそんなことはないだろうけど。
シンプルな構造のHTMLやCSSだとあまり目立った問題はなさそうですが、Ajax系は結構厳しいですね。弊社製品でも、さらっと流してみたのですが、クラシカルインターフェース(ほぼHTML+CSS+簡単なJavaScript)だと大きな問題は見当たらなかったのですが、リッチインターフェース(Ajaxごりごり)な部分は、ちょっとそのままでは使えなさそう、、、
本来ならば、すぐにでも対応!というのが理想的ですが、それにはやはりどんなシステムであれ、時間とお金が必要。。。でも、ブラウザの世代交代は待ってくれません。。。
なので、そのつなぎまでの応急対応が必要になりますね。
ここで救いなのは、IE8ではIE7の互換モードを備えているとうこと。しかもこれ、コンテンツの作り方や、Apacheの設定で簡単に強制的にIE7互換モードにできちゃいます。(さすがに今までの悪行への反省はしているらしい)
ということで、その方法をご紹介。
つっても、前CSSNiteに参加した時の内容を試してみただけなんですけどね、、、^^;

とあるユーザから、WEBシステムからダウンロードした圧縮ファイルが破損して解凍できないことがあるという相談を受けました。
バックアップ用に取得するファイルなので、破損したままダウンロードしてしまうと、復旧に支障を来すため、何とかして欲しいとのことでした。
調べてみると原因はひどく単純なことでした。
それは、ダウンロードファイルの保存時に Apache の Timeout を超えるとある程度のファイルサイズを持つファイルならば必ず破損する(エラーにならない)というものでした。
ダウンロード処理ではなく、ダウンロード時にIEではダウンロードファイルを「開く」「保存」を選択するダイアログか「保存」を押した場合の保存先の選択画面で Timeout を超えた場合がこれに該当します。
ユーザはおそらく、ダウンロードが開始されるまで(ファイルが生成されるまで)が長く、中座してその間にそのダイアログが表示されてしまったり、保存を押した場合の保存先の選択画面でもたついたりといったことで意図せず TImeout を超えてしまったのでしょう。
ちなみにこれは Apache のバージョンに限りませんし、また一般的なソフトライブラリサイトでも現象を確認することができます。(Vector などから、ソフトをダウンロードする場合に5分程度待てば再現できます)
Timeout を超えているのだから、、、と言ってしまえばそうなのですが、1万人以上が使うシステムで、全社的に注意を促したとしても、浸透させることは難しくトラブルの種になることは想像に難くありませんでした。
ってことで、何か方法がないかなぁと頭をひねっていた際、本当にふとしたきっかけで、通信が暗号化されていれば、ダウンロード途中で中断されたら正しく復号化できないから、中途半端なファイルはできないんじゃね?と思い立ち、探し当てたのが暗号化ではないけど、ダウンロード時に転送ファイルを圧縮し送信する mod_gzip でした。
これは、本来圧縮転送することで、ダイアルアップなどのネットワーク帯域に余裕がない通信環境での高速化を意図した Apache の追加モジュールです。
インストール後、さっそく試してみると、、、なんともはや予想通りというか、良いのか悪いのか、Timeout を超えた場合でも、ファイルの破損が発生することはなくなりました。
意図したものであるとはいえ(作った人には意図してないのでしょうけど)、なんとも面白い効用を知ることができました。
ということで、いつも通りインストールメモ。
