Archive for the ‘雑談’ Category

1月の冷たい風とWebモーダルダイアログに潜む不具合

年が明けてしまいましたね。
 

日付に疎い私には、年がインクリメントしたところで特別おめでたがるところもありません。
 

とは言ってもやはりいろいろ周りの都合もあったりで、
うちは毎年正月になると、母親の実家(徒歩10分)へ行き寿司と酒をあおり集合写真を撮って祖母と麻雀を打つという恒例行事があるのですが、今年は年末年始連勤というやつをしまして未だに顔を出せていません。

休みは十分にとっているのですが、どこも事前に予定を入れていて後回しになっているという礼儀知らずな状態です。
 

今回の仕事で特に目立ったのがJavascriptのモーダルダイアログを多用するという点。
そもそもWebでモーダルを使っているサイトをあまり見たことがありませんでした。
 

気になったのはFireFoxでのshowModalDialogの挙動。

モーダルダイアログをネスト(入れ子)していくとウィンドウを動かしたときにフリーズしたりとかよくありました。

更にモーダルダイアログからファイルの出力をした時、FireFoxだけファイル名や操作を選択するボタンのないダイアログが表示されて、キャンセルしか選択できません。
一応、iframeを作ってそこで出力するとなんとかなりましたが。
 

あまり使われない機能はWebクライアントでもいくつもの不具合を抱えているのでしょうね。

サイズ指定子ウィンドウにframeset使った時InternetExplorerで起こる不思議空間(笑)とかもそうだし。

おめて゛とう! わーと゛ふ゜れすは 3.0 になりました!

なんもしてないのにブログ一覧トップになっちゃったからしょうがなく書く。

 

本当になんもしてない。ちょっと設定弄っただけ。

 
 
 

WordPressのバージョンアップをしました。

 

今までWordPress-muを使ってたけど、
3.0になって無印WordPressと統合してどちらからでも移行できるようになりました。
ちなみにmuはマルチユーザのことで複数のブログを管理できるってことです。

 

ただ日本語版をアップデートするにはちょっとコツが必要で、
一発で3.0日本語版を入れてもインストールに失敗するので、
一度英語版で3.0にアップデートしてから日本語版を入れます。

 

ただソースの中のコメントとかは英語のままみたいですね。

 

アップデートすると管理画面のアラートで
『cookie のセキュリティ向上のために wp-config.php に一行追記してください。
 /* 編集はここまで。ブログを楽しんでください */ の下だよ』
的なこと(文言忘れた)言われるけどソース中のコメントが英語だから
『/* That’s all, stop editing! Happy blogging. */』
になってます。
まぁ同ファイル内ならどこでも正常に動くはずです。

 

また
『RewriteRule が変わってます。
 wp-content/blog.php を wp-includes/ms-files.php に変更してください』
的なことも言われるので、これは .htaccess の該当箇所を変更してやればOK。

 
そしてそのままだとアラートが出っぱなしなので blog.php は削除するかリネームしておきましょう。
アプリケーションから見えなければアラートは消えます。

 

各ブログのアップデートもアラートが出ていると思うので最後にそれをやって一通り終了です。

IEでクッキー書き込みできない件


         ,. -‐””'””¨¨¨ヽ
         (.___,,,… -ァァフ|          あ…ありのまま 今 起こった事を話すぜ!
          |i i|    }! }} //|
         |l、{   j} /,,ィ//|       『InternetExplorerで開発中サイトの管理画面にログインしようと
        i|:!ヾ、_ノ/ u {:}//ヘ        思ったらいつのまにかログイン画面に飛ばれされていた』
        |リ u’ }  ,ノ _,!V,ハ |
       /´fト、_{ル{,ィ’eラ , タ人        な… 何を言ってるのか わからねーと思うが
     /’   ヾ|宀| {´,)⌒`/ |<ヽトiゝ        おれも何をされたのかわからなかった…
    ,゙  / )ヽ iLレ  u’ | | ヾlトハ〉
     |/_/  ハ !ニ⊇ ’/:}  V:::::ヽ        頭がどうにかなりそうだった…
    // 二二二7’T” /u’ __ /:::::::/`ヽ
   /’´r -―一ァ‐゙T´ '”´ /::::/-‐  \    セッションの設定だとかブラウザのゾーン設定だとかプライベートモードだとか
   / //   广¨´  /’   /:::::/´ ̄`ヽ ⌒ヽ    そんなチャチなもんじゃあ 断じてねえ
  ノ ‘ /  ノ:::::`ー-、___/::::://       ヽ  }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::…       イ  もっと恐ろしいものの片鱗を味わったぜ…

 

 事件は夏の暑い日に起こった。
 テスト機に上げ、大詰めのシステムテストを行っていたさなか突然メッセンジャーの受信を告げる音が鳴る。
 <IEで管理画面入れますか?>
 そんな馬鹿な。
 サーバの設定差異は既に調査している。ましてやブラウザ互換などその前のテストフェイズで確認済みなはずだ。
 聞くとセッション切れ時のメッセージと共にログイン画面へ飛ばされると言う。
 早速確かめてみるとたしかに何度やってもログインできない。バージョン6、7、8いずれも同じ現象。他のブラウザは入れるのである。
 別のプロジェクトとして切り分けられている利用者側も入力情報が保持されていないので、セッションに問題がある事は容易に予想がついた。
 アドレスバーに

javascript:document.cookie;

と打ち込みEnterを叩いてみると何も表示されない。
 これはクッキーが入っていないかセキュアフラグの付加されたクッキーを非SSL時に見た時に起こる。
 私は念のためphp.iniに設定がないことを確認し、.htaccessのクッキーセキュアフラグをoffにした。

php_flag session.cookie_secure off

 ブラウザのクッキーも削除し、再度管理画面へログインするがやはり結果は同じ。
 (さてはIEまた何かやらかしたか)
 疑いとわずかな期待を抱きつつグーグル先生で検索をかけてみる。
 最初は今回の件とは関係のない問題があがっていたがキーワードを色々変えているうちにこんなものを見つけた。

http://support.microsoft.com/kb/316112/ja
 

原因
セキュリティ修正プログラム MS01-055 では、不適切な構文を使用した名前のサーバーは Cookie 名を設定できません。Cookie を使用するドメインでは、ドメイン名およびサーバー名に英数字 (“-” または “.”) だけを使用しなければなりません。サーバー名にアンダースコア (“_”) など、その他の文字が含まれている場合、Internet Explorer は Cookie をブロックします。
 

ASP のセッション状態とセッション変数の機能は Cookie に依存しているため、クライアント上に Cookie を設定できない場合、ASP は要求間でセッション状態を維持できません。
 

この問題は、ホスト ヘッダ内の不適切な名前構文が原因の場合もあります。
 

解決方法
この問題を回避するには、次の方法のいずれかを使用します。
•   ドメインとサーバーの名前をを英数字だけを使用する名前に変更する。
•   ドメイン名やサーバー名ではなく、インターネット プロトコル (IP) アドレスを使用してサーバーを参照する

 どうやら原因はサブドメインに「_test」を付けてテスト環境を作っていたからで、ドメイン名の中のアンダースコア(検索用:アンダーハイフン)はRFC規約違反らしい。
 報告してドメインを変更してもらうとIEでも問題なくログインできるようになった。
 プロジェクト周辺の人はだれも知らなかったので実は知らない人割と多いのではないだろうか。
 クライアント側の仕様を把握しきれていないのがwebの怖いところだと私は思う。

みんなも気を付けてね。