わかったつもりになってはいけない

地下室においてあるPCのWEBServerはIISで動いている。 いや、Windwos7がはいっていたので、気軽な気持ちでIISを導入し、うごかしてみたら、設定が簡単だったのと、PHPのサポートが意外と充実していたので、サーバーとして使うことにしたのだ。すでに2年ほど支障なく動いている。 もっとも、アプリケーションはPHPで動くModXだ。 asp、aspx ベースではない。Visual Studioも(タダだし)起動画面までは見てみたのだが、C#もVBも覚えるつもりがなく、 結局JavaScriptやCSSだけでWEBサイトを構築できるPHPベースのModXでうごかしている。 ひとつだけ問題があるとしたら、IISベースではFriendly URLがサポートされていないこと。 IIS自体はFURLはサポートしているのだが、別途設定しなければならない。これがApache ベースのサーバーではModXに付属してくる.htaccess ファイルで簡単に対応できる。 世の中よくしたもので、IISでこの.htaccess をそのまま使えるツールが存在する。 Helicon Ape というユーティリティなのだが、サーバー3本までは無料バージョンでサポートされている。 これを入れて、ModX側のFriendly URLのシステム設定をOnにするだけで、FURLが有効になる。 するとそれまでは http://mysite.org/index.php? id=36 などという味気ないURLが http://mysite.org/this_pabe.html という”読みやすく覚えやすいFriendlyな”アドレスに書き換わる。 この組み合わせで半年ほど快適に使ってきたのだが、ある日突然うごかなくなってしまった。 なぜか、最初はわからなかった。 で、いろいろ調べた結果わかったのが、IISの設定。このサイト、.net frameworkをつかっていないのだからいらないだろうと、.netのサポートをIISのメニューから前の日に外していた。外した途端に動かなくなったわけで、ホームページ自体はPHPがきちんと動いて表示するが、リンクが全部だめになったのは、要するにApeが作動していなかったので、 http:/mysite.org/this.page.html を Apeが以下に変換、 http://mysite.org/index.php ?q=”this page.html” さらにこれをModXが読み込んで http://mysite.org/index.php ?id=36 に変換 という書き換えができなくなっていたわけ。 つまりApe 自体はIISの.net frameworkの上で動いていたわけだ。 で、あらためてHeliconのページを読んでみれば Helicon Ape is implemented as managed IIS 7 module and can be installed as .NET module on any ASP.NET-compatible IIS version. It works transparently for both server and client and can even be installed on a shared hosting account without administrative access. .NET module だと、しっかり書いてある。(おい) わかったつもりになっていてはいけません。

WRT 54G の退場

過去10年ほど、家庭内のネットワークハブにLinksysの WRT54Gを使ってきた。 Bestbuyのカタログを見ると、いまだに後期モデルの54GLを販売している。 最近の大勢として、802.1Nが安価で販売されているのにもかかわらず、802.1G/Nで頑張っている、かなりのロングセラーである

JQueryの.load()を使ってみて complete: にはまった、という話

Query ライブラリーの中に.load()というmethodがあり、これを使うと、WEBページの一部に他のページをはめ込む、ということが簡単にできる。 たとえばmain.html というページがあり、 そこに<div id=”sections”></div> というセクションをつくっておき、 この部分にcontent1.htmlというページを差し込むためには $(‘#sections’).load(‘content1.html’); というjavascript 一行で済む。 これを使えば、content2.html, content3.html などというページを用意しておいて、Javascriptを使ってインターアクティブに(ページを全部ロードしなおすのではなく)ページの一部だけを差し替えることができるようになるわけだ。 これって、巷にいうAjaxだが、jQuery のAjax サポートは ajaxSetup というobjectががあって、この中で、Ajax関係の諸パラメーターを前もって設定することが可能、 で、とりあえず $.ajaxSetup({ beforeSend: function() { $(‘#sections’).css(‘visibility’,’hidden’); $(‘#aContainer’).css(‘background’, ‘url(images/ajax-loader.gif) no-repeat center’); }, complete: $(‘#aContainer’).css(‘background’,’none’); } }); とやって、 ページをロードしたときに、前のページの表示を消し、バックグランドにロード中お待ちくださいのイメージをはっておき、ロードし終わったときに、これを取り除く、という 動作を付け加えた。 ところが実際に動かしてみると、ロードが完了して新しいページが表示された後でもイメージが消えない。 ブラウザの開発ツールで見ると、スタイルシート上、バックグランドイメージがそのまま残っている。つまり、complete: の部分が動いていない。 これで2時間ほどハマったわけだが、 結論からかいてしまう。 実は.load()というコマンドにはコールバック機能があり、 これを使って、ロードされた画面の初期化を行うためのjavascriptを指定していた($(‘#sections’).load(‘content1.html’,’doSomething’)) のだが、これがcomplete: に指定された処理を無効化してしまうようである。 jQueryの.load と complete: の部分のマニュアルをじっくり読んでそういう結論に達した。 というわけで、Complete: event ではなく Success:event に動作をぶら下げて解決。.load()ではなく、.get()を使うとすっきりしそうだが、詳しく調べてないのでこれでよしとする。 jQuery.ajaxSetup({ beforeSend: function() { $(‘#sections’).css(‘visibility’,’hidden’); $(‘#aContainer’).css(‘background’, ‘url(images/ajax-loader.gif) no-repeat center’); }, success: $(‘#aContainer’).css(‘background’,’none’); } }); $ajax を使うと、もっときめ細かいAjax操作ができるそうだが、現状ではこれで十分。 一応動いている証拠は ここに http://shogishack.net/modx/pages/assess-the-situation/exchanging-pieces/ ModX/WayFinderで作ったメニュのa href部分をjqueryで一括加工し、それぞれのアイテムをクリックすると、Jumpではなく、.loadが呼び出されるようになっている。 ModXと jQuery を使ったAjax, なかなか相性がよさそうである。

100円ドメインと無料ホスト

専用ドメインを取った。Godaddy は SuperBowl で流した宣伝が品が無いとか女性蔑視だとか物議をかもしているが、info ドメインに関しては97セントで(一年目は)レジスターしてくれるので文句はありません。はい。 無料サイトも提供してくれるが、広告用のバナーがついてくる。これが結構うるさい。マークアップで消してしまうことも可能だがそれは厳密なことをいうとTOS(契約)に違反する。 そこでWEBを徘徊すること2日目にして000Webhostなるサービスを見つけた。 MySQLは2本まで、SSL はさすがについてこないが、PHP と MySQL を試してみるにはちょうどよさそう、ということでお世話になることにした。 レジスタラはgodaddy, Webホスティングは 000Webhost ということで、しばらく様子を見てみることにする。 レジスタラとホストの業者が違う場合(昔はこれが一般的だったらしい)はホストの設定をしたあと、レジスタラのサイトに行って、ドメインネームサーバーのアドレスをホスト側から供給されるURLに変更する必要がある。 面倒なのはdomain name serverというメニューにたどり着くくらいで作業そのもの自体はあっけないほど簡単に終わる 前後するが、このプロバイダーの無料サイトをアクティベートするときに、TOS をよく読んでね、サイトの使い方に寄っては一方的にシャットダウンすることもあるので変な使い方を考えているのなら最初からやめたほうが良いよ、という警告文が出る。  中身を呼んでみると、へんな使い方とは成人向けのコンテンツ(有料サービスにアップグレードするとその限りではないそうな。)などのことだが、「ファイルの格納だけに使った場合」というのもあった。  まあ、突然サイトをシャットダウンされる可能性がゼロではない、ということで、これは無料サイトの宿命か。 バックアップをしっかり取っておけば、ドメイン自体は Godaddy にあるので、他のプロバイダーでの再構築もできる。 このあたりが、独自ドメインを登録しておくことの長所かな?