やっとこさ JS ヘルパーのおよそのコツがつかめてきました

まぁ、JS ヘルパーを使うことによって、jQuery の記述を分離する必要がなくなるのは利点といえば利点。
でもそれ以上の不利もある。

  • 繰り返しロジックの中で JS ヘルパーを使うと、そのたびにスクリプトが生成されることになり、これはコードの無駄な冗長に繋がる。
  • ビューの HTML の中の PHP 記述の更に内側に javascript(jQuery)記述が割り込んでくるので、これがわかりにくい
  • ヘルパーで自動生成される javascript(jQuery)記述ががわかりにくい。

まぁ JS ヘルパーに限らず、全体的にヘルパーというのは、使用した際に最終的にどのような HTML になるかを少なからず想像しなくてはならないものなのだが、JS ヘルパーはその想像が難しい。
しかも CakePHP 御大が提供しているドキュメントがウンコで、とても判りにくい。結局、JS ヘルパーの場合、ヘルパーのコアソースを追うのが一番早かった。
あと、Ajax ヘルパー(prototype.js)のように、jQuery の経年による陳腐化した際の仕様変更や廃止も怖い。

こうなると javascript(jQuery)は、ヘルパーを使わずに普通に記述したほうがよいのかもしれない。

でも、JS ヘルパーを利用することにより、ソースコーディング量が減るもの事実。
実際 javascript(jQuery)を記述するよりも、ソースコーディングは減った。(結果的に生成される HTML は、javascript(jQuery)を記述するよりも大きいのだが。)

WordPress 日本語メッセージの対応(面倒臭い版)

正直なところ、直接、テーマのスタイルやPHPソースファイルを修正したほうが手っ取り早いです。参考書籍でさえ、そのような記述が為されているものが多いです。

でも折角なので、なるべく TwentyTen のテーマを構成しているソースの構成をベースに残したまま、メッセージを修正してみます。

ちなみに、WordPress の日本語版に同梱されている TwentyTen テーマは、日本語ローカライズに対応していて、元文書のPHPソースを修正せず、設定ファイルみたいな物を介して、該当箇所の英語メッセージを日本語に置換して表示しています。
今回はこの仕組みをそのまま利用するための修正方法です。

WordPress をバージョンアップするときの注意事項

テーマをカスタマイズしている場合、特に TwentyTen などWordPress のデフォルトテーマをベースに style.css などをカスタマイズしている場合は、必ずバックアップを取得する事。

バックアップせずにバージョンアップするとテンプレートも上書きされてしまいます。

まぁ、やってしまった本人が語っているので、間違いない。。。(T_T)

CSS と DOCTYPE の設定に悩まされた週末

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

いわゆる「ゆるゆるHTML」フォーマットです。
でも互換モードブラウザが表示する形になるため、ブラウザによって見栄えが大きく変わってしまう場合がある。

今後の Web デザインのブラウザ間の統一性を図るためにも、以下参考に変更する方向で。

基本は「Strict」タイプで。
ちなみに「Strict」とは「厳格な」という意味。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

おそらく、意味としては「HTML 4.01 で定義されているタグと属性以外は認めない」でよいかと思います。

そう考えると、HTML 4.01 以降に定義された新しいタグや、ブラウザで独自拡張されたタグは駄目だと思います。

例えば、Flash などのオブジェクトを動作させるための <embed> タグなどは、今となってははどのブラウザでも動くようになっていますが、HTML 4.01 定義では <object> タグを使う必要があります。

それ以外にも、HTML タグとして利用できない要素(タグ名)や属性(タグの続けて記述する付属の設定)があり、それらは CSS に記述するなどの対応が必要です。

あとフレームセットも使えません。詳しくは以下のページ参照。

ただし、この厳格に沿った場合、想定したレイアウトが実現できない場合もあります。

その場合は、適宜以下を使って緩めてく方向で。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

ちなみに XHTML の厳格宣言は以下。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

phpMyAdmin のディレクトリを移動したとき

現象

Web サーバのメンテナンスや整備で、phpMyAdmin のディレクトリを移動し、phpMyAdmin のログインからユーザ名とパスワードを入力し「実行する」をクリックした際、

エラーが出たためセッションを開始できませんでした。 PHP やウェブサーバのログファイルに出ているエラーを確認して、PHP を正しく設定してください

というエラーに出くわすことがある。

原因

phpMyAdmin のディレクトリを移動する前はログインできていたのに、移動した途端に動かなくなった場合、cookie 内に保存しているセッションが不整合を起こしている可能性があり。

config.inc.php の中に

$cfg['Servers'][$i]['auth_type'] = 'cookie';

と設定している場合は、セッションは cookie に格納されている。

対処

  • クライアントの該当する cookie を削除。
  • ブラウザを再起動。phpMyAdmin にアクセスし、再度ログイン。

ただし、これでもエラーが発生する場合や、上記の場所とは違う画面や操作でセッションのエラーが発生している場合、php.ini の設定など別の問題が考えられるので、ググって確認するべし。

VBScript では Const 定義した整数値を、そのまま変数宣言の配列数として直接はセットできない

要するに、

Dim aryHogeHoge(15)

これはできるのに、

Const ARRAY_POINT 15
Dim aryHogeHoge(ARRAY_POINT)

これができない。

Microsoft VBScript コンパイル エラー: 整数型の定数がありません。

って怒られます。

Const ARRAY_POINT 15
Dim aryHogeHoge()
ReDim aryHogeHoge(ARRAY_POINT)

とかにしなくてはいけません。
つまり「面倒くさい」という話。

table レイアウトと div レイアウト

基本的には <div> とスタイルシートを用いて、コンテンツデザインが実現できるのであれば、そうすべきだと思います。
理由としては、以下。

  • <table> タグを使用すると、自ずと <tr> <td> タグを使用することになる。
    その点 <div> タグとスタイルシートの関係さえ効率的に定義すれば、タグの記述が減らすことが可能なため、HTMLファイルの中身がスッキリする。
  • スマートフォン用ページなど、レイアウトを変更したページを実現する事が比較的容易。

ただし <table> タグによるレイアウトを用いないと、上手く実現できないレイアウトもあります。例えば、

  1. メインブロック(枠線付き)は、常にウインドウ縦横両中央(ど真ん中)に表示。
  2. ウインドウ下部にフッタ。
  3. ウインドウの縦幅を縮めた場合、メインブロックとフッタが重ならない、レイアウトは崩されない。
    メインブロックとフッタがくっついたら、縦スクロールで逃げる。

この場合、諦めて <table> タグを使用するほかありません。

また、<div> タグとスタイルシートの関係さえ効率的に定義体系的に行わないと、タグは減らせません。

それに、iモードをはじめとする携帯向けページは、HTML 規格そのものが異なるため、<div> や <table> タグでは対応できない。
本当なら携帯でもスタイルだけを変更して表示させたいところだが、現時点では HTML ファイルそのものを別にするしかない。

  • tableレイアウトとdivレイアウト…どっちも地獄(マイコミジャーナル)(閉鎖)

まぁでも、将来を見据えて XHTML 化ぐらいは視野をいれておくとよいかも。
とはいえ、現状関係しているクライアントは HTML 世代の方々なので、本格的な XHTML ソースコード化は避け、XHTML 化する際に影響の少ないソースコードを書いていただく方向だけで。
そうする事により、将来のリニューアルも見据え、かつ現状デザインにおいても、体系的なコンテンツ制作がもできると思います。

Web コンテンツの動作確認

  • Internet Explorer 6.0
  • Internet Explorer リリース最新版
  • FireFox リリース最新版
  • Google Chrome リリース最新版
  • Safari リリース最新版
  • Opera リリース最新版

これらで動作確認をすれば、世の中で使用されているブラウザの90%以上で正常に表示されるはずです。
基本的に最新版ブラウザで表示されることを確認すればよいかと。

なお「Internet Explorer 6.0」(以下、IE6)については、主に企業ユーザが利用されているPCのブラウザとして標準的に使用しているなど、未だにシェアが高いため、例外的にIE6での確認もする必要があります。
おそらくxpのサポート完全終了となる2014年頃までは利用されるのかな、と。

ただし企業などを対象としないコンテンツを制作する場合は、正直意識しなくてもよいかと。
実際 Twitter の Web サイトをはじめとする幾つかの有名サイトが IE6 の配慮をあまりしない方向でコンテンツを提供してますし。
何よりも、IE6 のためにわざわざ CSS や HTML、レイアウトを考慮するのは、時間もかかるし、正直なところ馬鹿馬鹿しい。
いっそ IE6 用には、テキスト版コンテンツを提供するとかでも良いのかもしれない。。。

Windows 版の Ruby で XSLT を動かす

Ruby 上で XSLT を使うには、ruby-xslt というのを使うらしいのだが、Windows 版ではそのままでは動かないらしい。
ということでネットで調べてた事をまとめてみた。

実はこの調べるのが一番難儀でした。
直球でズバリ解説しているサイトはなかったので、とにかく回りくどいというか、リンク切れというか。英語というか。

  • Compiling ruby-xslt on Windows(Aquifer)(閉鎖)

色々と書いてあるが、本文最下行にある「~ Aquifer SourceForge site.」という文中にあるリンクから以下の場所へ移動。

ここから「ruby-xslt-(バージョン番号)-win.zip」というファイルを落とす。

あとは解凍して、本文にある通り、コピー。

  • xslt_lib.so
    →(Ruby のインストール先)\lib\ruby\site_ruby\1.8\i386-msvcrt\xml
  • xslt.rb
    →(Ruby のインストール先)\lib\ruby\site_ruby\1.8\xml

なお xml フォルダがない場合、フォルダを新規作成したうえでコピー。

でもこのままだと、DLL が足らないと言われ、エラーで落っこちる。
というわけで、今度は足らない DLL を追加する必要がある。

ここから以下の3ファイルを落とす。

  • libxslt-(バージョン番号).win32.zip
  • libxml2-(バージョン番号).win32.zip
  • iconv-(バージョン番号).win32.zip

ちなみに Windows の場合、ruby-xslt は以下の参照関係がある模様。

xslt.rb → xslt_lib.so → libexslt.dll → libxml2.dll → iconv.dll

(使わない機能がある場合、おそらく DLL も一部不要かもしれん。)

そんなわけで、必要な DLL をすべてインストール。
ちなみにインストールとは言え、実際には「適当に解凍して、Windows システムフォルダ配下の system32 フォルダ内に DLL を手動コピーする」のこと。

これで、動く…らしい。

HDDの復旧

なんか、最近立て続けにHDDの復旧依頼が来てたので、ちょっとまとめてみました。

所詮は機械。いつかは壊れる。

これは肝に銘じておいて欲しいのです。
そして壊れた時に大騒ぎすることになりますし、そしてデータが復旧できなければ、それこそ「あとの祭り」。

なぜに壊れる?

まずは中の構造を以下のサイトを参考に見てください。

そんなわけで、ハードディスクは機械(ディスク・ヘッドなどの記憶)の部分と電子部品(ディスク表面の基盤でデータの読み書きを制御している部分)が合わさって、1つの構造を成しています。
よって、

  • モーターや駆動部があるため、経年劣化が生じて壊れます。
  • 精密機器なので、振動などで壊れることがあります。
  • 電子機器なので、静電気や急な電源断などで壊れることがあります。

まぁ、車のエンジンや家電製品だって、壊れるでしょ?
それと同じ。

あと、破損しているデータが記録されていると、壊れる原因を作ることがあります。

意外と知られていないのが、壊れる原因

1. 破損データなどの影響での故障

PCにはデータの一部が破損していても、ある程度であれば、再度読み取ろうとしたり、データそのものを補って、正しく読み取ることができる技術があります。

そのためデータが破損していても、それを補正しようとするため、何度もデータを再読込を試みたりします。
結果、データが記録されている同じ場所を何度も走査するので、その動作よって同じ場所が劣化することもあります。
また物理的に破損しているような場所だと、その再読込の動作よって傷口を広げることだってあります。

(余談ですが、ウイルスソフトには、この技を使ってハードディスクを物理的に壊すものが、確かあったような気がします。)

2. 音楽データや画像データ

動画や音楽を再生するという事は、その間はずっと記憶媒体にアクセスしていると考えてほぼ間違いありません。

破損データを再読込するのよりは頻度は落ちるかもしれませんが、お気に入りの曲を何度もリピート再生していれば、それだけ同じ記憶箇所を何度も読むことにはなるので、破損する可能性は高くなります。

壊れないようにするためには

…そんなものはありません。
所詮「機械」であり、いつかは壊れます。
もともとの品質的・構造的な点から早く壊れることもあります。機械としていつ壊れるかというのは、もはや「運」でしかありません。

でも機械は「大切に使えば」長く使うことはできます。

そのために心がけるべきこと。

…とはいえ、「壊れないようにするためになるべく使わないようにしよう」というのは本末転倒です。
便利に使いたいのであれば「壊れても慌てないような対策を講じる」という事になります。

(注)
これはあくまで、個人的な経験や勘からの見解なので、以下を実践したからと言って、壊れても保証はできません。(まぁ、こんな事書くのはあれですが。。。)
あと以下の手順、法外ではありませんが、お金や手間は度外視しています。

リスクは分散しましょう。これ大前提。

仕事用のPCに動画や音楽を入れるべからず。

動画や音楽を日常的に再生しながら仕事される方は、マシンを別にするか、動画や音楽用のHDDを増設して、そちらに入れるようにしましょう。
通常のアプリケーションや、日々の仕事データを読み書きする際と、マルチメディアコンテンツの再生時、ハードディスクの動作はかなり異なります。
お互いのデータの記憶場所によっては、ハードディスクの動きがかなり激しいものとなり、それが原因で壊れることだってあります。

仕事用のデータは常にバックアップ

死活問題となるようなデータは必ずバックアップを。
ちなみに最近は RAID など便利な技術もありますが、ドライブじゃなくて、機材本体が逝かれた時には、どうしようもありません。
物理的にバックアップディスクを別にして、それに録ったほうが安全です。

【参考】我が家の場合

  • マルチメディアコンテンツはDVDなどのメディアに焼いて保存
  • 仕事データはNASサーバにバックアップ専用ドライブの2台構成

という形をとっています。

壊れた時に備えて

最近のプレインストール PC は、工場出荷状態のイメージが HDD 内にあらかじめ記録されています。
ところが、その HDD が壊れたら、その「イメージ自体もろとも」になってしまい、どうしようもありません。
製品にもよりますが、リカバリ CD を作成する手順が示されている場合があります。

必ず説明書を確認し、もしもリカバリCDを作成する手順が示されている場合は、面倒でもリカバリCDを作成するようにしてください。

また、

Officeやメールをはじめとする、使用しているプログラムの環境設定

などは、ソフトウェアのメニューや関連ツールとして環境設定をファイルに保存することができるものがあるので、それらを保存します。

メールデータ

などは、My Dcocument フォルダの配下に My Mail というフォルダを作成、そこにメールファイルを保存するようにしています。

そして、内臓 HDD を増設し、My Documents は増設したドライブに保存するように変更すると、万一 OS やアプリケーションのドライブが逝ってしまっても、自分のデータは残るようになりますし、必要なら自分のデータを保管しているドライブだけバックアップを録れば良いことになります。

【余談】OSも含めてフルバックアップ

これをやるのもひとつの「手」ではあるのですが、意外とハードルが高いのと、そして煩雑だったりします。
そして何よりも、本当にちゃんとバックアップとリストアができるのか、いまいち信用できないんです、これが。その理由が一番大きい。

最近は専用のソフトもあるようなので、それで「おまかせ」も可能だとは思いますし、信用あるものもあるのかもしれませんが、私はあえて使ってません。

というのも、

ディスク破損交換=クリーンインストールの時期

だと割り切っているから。

このタイミングでクリーンインストールをすることによって、長年蓄積された余計なファイルやレジストリが整理され、最終的に快適な環境となることが多いのです。
それに、使用していないソフトをインストールしないという、よい機会にもなりますし。

確かにクリーンインストールは時間も手間も割かなくてはなりませんが、「どうせハードディスクが壊れて、その対応に時間が割かれるなら」と考えています。
それに引き続きそのマシンを使うのであれば、より快適な環境を見直すのにもよい機会だと思いますし。

壊れる予兆があったら

最近のマシンは普通に速いので、明らかにディスクアクセスで遅くなったと感じたとき、特定のファイルやプログラムのアクセスが遅いときは要注意。
早々にデータのバックアップを行ったうえで、ディスクのメンテナンスや交換を検討したほうが良いかと思います。

【余談】復旧

ちなみに、私の使用しているソフトはこんな感じ。

これらのソフトでの復旧が駄目なら、そこまでで。
精々、ディスクかヘッダに問題があることを原因究明するのが精一杯。
上記ソフトで復旧できなければ、もうお手上げですな。

ちなみにHDDを業者に復旧してもらう場合は、信頼ある業者に依頼するようにしましょう。
市販の復旧ソフトで復旧させる業者とかもあれば、技術力不足な業者も多々あります。
基本は、ハードウェアのメーカーが推奨する業者、なければ、有名なファイル復活ソフトが紹介している業者あたりにお願いするのが良いかと思います。
でもその場合、金額にかなりの覚悟が必要。一般的にはウン十万円以上の世界です。