「Web技術」タグアーカイブ

WordPress2.5.1のLightBox不具合を修正する

WordPress2.5になってから、メディアアップローダがAjaxライクなものに変更されました。しかし、この新アップローダを使って画像を貼り付けるとLightBox系スクリプトに不具合が出ます。画像のタイトルが表示されません。そこで修正方法をここに記しておきます。

この問題は、リンクタグaにtitle属性が付与されなくなったことが原因。LightBoxはaタグのtitle属性を読み込んで画像の説明に使っています。以下修正箇所。

//wp-admin\includes\media.php
function get_image_send_to_editor($id, $alt, $title, $align, $url='', $rel = false, $size='medium') {

	$html = get_image_tag($id, $alt, $title, $align, $size);

	$rel = $rel ? ' rel="attachment wp-att-'.attribute_escape($id).'"' : '';

	if ( $url )
//		$html = "<a href='".attribute_escape($url)."'$rel>$html</a>";
		$html = "<a href='".attribute_escape($url)."'$rel title='".attribute_escape($title)."')>$html</a>"; //Modified

	$html = apply_filters( 'image_send_to_editor', $html, $id, $alt, $title, $align, $url, $size );

	return $html;
}

ちなみにaタグから消えたtitle属性はimgタグに移っていました。こちらは構文的に存在OKなので書き換えていません。LightBox系スクリプトが完全動作しなくてお困りの方は試してみてください。

願わくば、次の更新で修正されていますように…。

海外製wikiでURLエンコードの文字化けを無くす方法

海外製のwikiは、基本的に国際化対応されています。しかし、文字コードの扱いにおいて一部問題があり、文字化けするときがあります。今回はそれを避けるための方法を3種類紹介します。

まず、どういったときに文字化けするのか。MediaWiki、DokuWiki、pmWikiで検証しました。これらwikiでは、新規ページを作成する方法が2つあります。未作成ページへのリンクをクリックするか、ロケーションバーにページ名を入力することです。しかし、ロケーションバーに日本語を入力した場合、古いブラウザではSJIS、EUC、JISコードでページ名を送信してしまうことがあるのです。ブラウザの送信する文字コードについては規格で特に決まっておらず、どんな文字コードが送られて来ても文句は言えません。検証したwikiは、どれもUTF-8を内部コードとしており、間違ったコードのまま文字化けしたドキュメントを作成してしまいました。問題ブラウザはFirefox2のWindows版のみ。IE6、IE7、最近公開されたFirefox3は問題ありませんでした。

Firefox2のURLエンコードで文字化け

  1. ブラウザの設定で対策
    常にUTF-8でURLエンコードするようにします。Wikipediaの編集に必須。今後のブラウザの主流です。利用者に設定変更を強要するため現実的ではありません。以下の設定で切り替えられます。

    IE
    [メニュー]-[ツール]-[インターネット オプション]-[詳細設定タブ]-[設定チェックリスト]-[インターナショナル]-[UTF-8のURLを送信する]にチェック
    Firefox
    ロケーションバーに「about:config」と入力。network.standard-url.encode-utf8をtrueにする
  2. Wikiのソースを修正する
    内部文字コードに変更するか、想定外の文字コードは排除する方法です。セキュリティ的にも一番安全ですが、アップデート毎の更新が面倒になります。

    //DokuWiki - doku.php
    //import variables
    $_REQUEST['id'] = mb_convert_encoding(trim($_REQUEST['id']), "UTF-8", "UTF-8,SJIS,EUC-JP");//Add
    $QUERY = trim($_REQUEST['id']);
    //pmWiki - scripts/xlpage-utf-8.php
    $pagename = preg_replace('!/+$!','',$pagename);
    $pagename = mb_convert_encoding($pagename, "UTF-8", "auto");//Add
    $FmtPV['$RequestedPage'] = "'".htmlspecialchars($pagename, ENT_QUOTES)."'";
  3. .htaccessで変換
    PHPスクリプトのときだけ有効な変換フィルターです。

    php_flag mbstring.encoding_translation on
    php_value mbstring.http_input UTF-8,SJIS,EUC-JP #autoだと化ける
    php_value mbstring.internal_encoding UTF-8
    php_value mbstring.language Japanese
    php_value mbstring.substitute_character none

    Firefox2のSJISエンコードをUTF-8に変換

以上、3種類の方法を紹介しましたが、安易な文字コード変換は脆弱性に繋がります。ブラウザで設定する対策以外は十分注意しましょう。

Firefox 3、ギネス記録に挑戦、24時間最多ダウンロードで挑む

来る6月のFirefox 3リリース日に、Mozzilaは24時間のダウンロード数でギネス記録に挑戦すると発表しました。リリース日を「Download Day」と名づけ、コミュニティ主導でのイベントになる予定。参加方法は公開初日にFirefox 3をダウンロードするだけ。詳しくは以下のイベントページをご覧下さい。

Download Day 2008 (www.Spreadfirefox.com)

Firefox 3は現在のFirefox 2よりも、最適化や機能向上がなされています。余程大きな理由が無い限り、Firefoxユーザは乗り換えすることをお勧めします。当日、サーバがダウンしないことを祈りつつ、リリース日を待ちましょう。

余談ですが、イベントページの国境線が怪しいですよね。これ以上突っ込むと火種になるので控えますが…。

silverlight&Firefoxでフーグアイ(不具合)発生

アスキーとマイクロソフトのコラボレーションサイト、Visual Studio Robotと言うのがあります。このサイト、VIsual Studio 2008とsilverlightの販促ページなのですが、面白い仕掛けがあったので紹介しましょう。

Firefoxでアクセスするとオープニング映像が流れます。ナレーションは起動戦士ガンダムのアムロ・レイ役、古谷徹。PC歴ウン十年の猛者としても知られていますね。

フーグアイの脅威フーグアイに立ち向かうVisual Studio使い達

フーグアイによって大地や海は毒され、自然は破壊されていった。

フーグアイ、つまり、不具合に人類は悩まされており、それに立ち向かうためVisual Studioを使って決起したというあらすじのようです。

いよいよ、オープニングが終わりメインサイトに誘導されました。すると…

Firefoxでsilverlightエラー

Firefoxでエラーが発生。これはサイトの演出ではなく本当に不具合が起こっているようです。IEでは問題ありませんでした。まさか、実際にフーグアイを体験させて我々を驚かすとは、マイクロソフト侮りがたし。

Firefoxユーザの皆さんはお気をつけ下さい。

MODx0.9.7はマルチサイト対応になるらしい

次期MODx0.9.7はマルチサイトに対応するのか?という質問を頂いたので調査してみました。

0.9.7-Alpha Release Announcement (MODx公式)

完璧なカスタマイズ性

  • 1コアのインストールで複数サイトを運用
  • root以外の場所へのコアのインストール
  • managerやassetsディレクトリを名称変更可能
  • 管理画面のカスタマイズ

上記の通り、どうやら対応されるようです。私が公開しているマルチドメイン用ハックは0.9.7でお役御免となることでしょう。

では、使用感は次期バージョンでどうなるのか。youtubeの動画をご覧下さい。

分かりにくいですが、Ajaxを駆使してブラウザを意識しない滑らかな操作感を実現しています。技術者でなくても直感的に管理が可能だと思われます。逆に、システム構成が大幅に変更されたため、コアの深いところを触ろうとすると躓くかもしれません。

説明はこれくらいにして、実際に使用してみましょう。ここでは開発版のためのインストール方法を解説します。

  1. 開発版MODx0.9.7のダウンロードMODx0.9.7 svnリポジトリから全ファイルをダウンロードしてください。tortoiseSVN等のSVNクライアントがあると便利です。
  2. 設定ファイルの書き換え
    /_build/build.config.sample.phpを参考に/_build/build.config.phpを作成してください。内容のXPDO_DB_USERとXPDO_DB_PASSに使用するDBアカウントを設定しましょう。
  3. アップロード
    全てのファイルをサーバにアップロードしてください。ht.accessは.htaccessにリネームしたものとそうでないもの両方をアップ。
  4. 下準備
    次にセットアップ前の下準備をします。/_build/transport.core.phpにアクセスしてください。0.9.7から導入のcore.transport.zipが作成されます。もし、エラーが出るようであれば、この手続き以降safeモードを解除して実行してみてください。ただし、セキュリティが大幅に低下するため、外部サーバを使う場合は、体験が済んだら早急に元に戻しておいてください。
  5. セットアップスクリプトの起動
    ここからセットアップの始まりです。/setup/にアクセスしてください。MODx0.9.6に近い手順でインストールが完了すると思います。
  6. 管理画面へログイン
    インストール最後にログインを促されてもスクリプトエラーが起きるかもしれません。無視しましょう。管理画面へのアドレスを入力し、そちらからログインすれば問題ありません。

以上で開発版MODx0.9.7のインストールが完了しました。一足先に使い勝手を体験し、使いにくい部分やバグがあれば、どんどん公式へ報告しましょう。今なら正式版へ反映されるかもしれません。