今日もガクリ('A`)
きっと明日もまたガクリ?('A`)
2010 / 09
« «  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
author "zodiac" archive
WordPress を 3.0 にしました…

WordPress を 3.0 にしました。その影響で、テーマファイルで独自で作成していた機能が対応できなくなっていて、不具合が各所で見られる事を現在確認済みです。少しずつ修正を行うので、一部閲覧によって不都合が発生しています。修正されるまでご容赦ください

WordPressno comments(185)
赤アドーンメント表 (GRD)

超久しぶりの更新です。現在は、EverQuest II という MMORPG ゲームをプレイ中です。赤アドーン商人の前で悩んでる時間が勿体ないので、一覧表を作って見ました

赤アドーンメント表 (GRD)

<> 
アドーンメント
フォーカス:アサルト VII              
フォーカス:コール・トゥ・アーム VII              
フォーカス:シールドバッシュ VIII              
フォーカス:セントリー・ウォッチ              
フォーカス:タウント・ブロウ VIII              
フォーカス:バトルクライ VII              
フォーカス:バトル・タクティクス VI              
フォーカス:クライ・オブ・ウォーリアー              
フォーカス:センティネル・ストライク              
フォーカス:ディフェンシブ・マインデッド              
アドーンメント
フォーカス:ポテンシー              
フォーカス:クリティカルボーナス              
フォーカス:アーマー              
フォーカス:クリティカル発生率              
フォーカス:クリティカル軽減力              
フォーカス:スウィーピング・スウィング              
アドーンメント
フォーカス:ダブルアタック              
フォーカス:フラーリィ攻撃            
フォーカス:ブロック発生率              
フォーカス:ヘイト低減              
フォーカス:再使用速度              
フォーカス:反撃              
アドーンメント
フォーカス:反撃ダメージ              
フォーカス:呪文ダブルアタック              
フォーカス:命中力              
フォーカス:獲得ヘイト              
フォーカス:矢/弾保存              
フォーカス:詠唱速度              
フォーカス:貫通              

更新履歴

日付内容
2010/07/28 (水)
Everquest II, gameno comments(260)
foobar2000 : foo_custominfo データベースダイエット

普段はあまり気にしていなかったのですが、先日に foobar2000 本体やコンポーネントをアップデートした際に異様に起動が遅い…foobar2000 をインストールしたディレクトリを覗いてみると custominfo_sqlite.db のサイズが 6MB 超えている…

なんでだろうと思い、一旦 foobar2000 を終了し SQLite Database Browser にて custominfo_sqlite.db の中を見てみると、同じ曲の fieldname が PLAYED_TIMESTAMP のレコードがやたらとできてる…多分コレのせいでしょう…

Preferences › Playback Statistics Custom › Playback Statistics Custom Settings の Play Stamp をチェックしていると Playback Statistics Update Timing に合致する度にレコードが挿入されてしまう。要はコレは再生履歴なんですが、foobar2000 じゃこのデータを使う手段や使い道がないのでチェックオフにしておく

で、PLAYED_TIMESTAMP フィールドは UI の中でも使用していないので、このレコードを削除する事にします。SQLite Database Browser で行ってもいいんですが、PHP で以下のような簡易ダイエットスクリプトを作成して実行

  1. <?php
  2. $dbf = './custominfo_sqlite.db';
  3. $dbh = new PDO( 'sqlite:'.$dbf );
  4. $stmt = $dbh->query( 'DELETE FROM quicktag WHERE fieldname = "PLAYED_TIMESTAMP"' );
  5. echo 'row count: '.$stmt->rowCount()."\n";
  6. echo 'error code: '.$stmt->errorCode()."\n";
  7. $stmt = $dbh->query( 'VACUUM' );
  8. echo 'error code: '.$stmt->errorCode()."\n";
  9. ?>

上記スクリプトを実行する事によって、約 25000 レコードが削除され、6.02MB だったファイルが 1.19MB までに小さくなりました。小さくなった custominfo_sqlite.db を foobar2000 のディレクトリに戻し、起動…サックリ起動するようになりました

使用しているフィールド PLAY_COUNT, FIRST_PLAYED_TIMESTAMP, LAST_PLAYED_TIMESTAMP が UI 側で正常に表示される事を確認して終了です

参照

PHP, foobar2000comment (1)(4,647)
foobar2000 : 0.9.5.2 へバージョンアップ
foobar2000 v0.9.5.2 Setup
foobar2000 v0.9.5.2 Setup

と言っても、0.9.5.1 から 0.9.5.2 へのバージョンアップです…0.9.5.3 から作者が暴走し始めたので、1 0.9.5.2 にしました

取り敢えず、自分が使用しているコンポーネントの覚え書き


foobar2000 standard
foobar2000 standard

コンポーネントもアップデートして、自分が作った UI が動作する事も確認して終了…また、暇をみて UI 弄りでもしましょうかね…


  1. 以前から怪しい兆候はありましたが、ここまでやるとは…('A`)
foobar2000comment (1)(2,958)
WordPress Plugins : Akismet htaccess writer
Akismet htaccess writer 1.0
Akismet htaccess writer 1.0

ここのブログシステムに WordPress を使用していることはフッター表示で解ると思いますが、スパムブロックには Akismet という同梱プラグインを使用しています。非常に優秀なプラグインで、ほとんどのスパムをブロックしてくれます…が、しかし、ブロックした後の処理がないので件の様なプラグインを作成しました

概要

以下のようなケースの場合に .htaccess の更新を行うプラグインです

  • Akismet がスパムと判定したコメントが書き込まれた
  • ダッシュボードのコメントにて、スパムとしてマークした
  • ダッシュボードのコメントの編集にて、承認ステータスをスパムとして保存した

以上のケースの場合に、承認ステータスがスパムとなっているコメントを書き込んだ IP アドレスのリストをアクセス拒否として、.htaccess を更新します

.htaccess の更新内容は # BEGIN written by WordPress plugin - Akismet htaccess writer# END written by WordPress plugin - Akismet htaccess writer ブロック内で行われます。ブロックが存在しない場合にはファイルの末尾に追加で書き込まれます。以下、サンプルです

  1. # BEGIN written by WordPress plugin - Akismet htaccess writer
  2. Order Allow,Deny
  3. Allow From All
  4. Deny From aaa.bbb.ccc.ddd
  5. Deny From eee.fff.ggg.hhh
  6.   .
  7.   .
  8.   .
  9. Deny From www.xxx.yyy.zzz
  10. # END written by WordPress plugin - Akismet htaccess writer

要求仕様

  • PHP 5.x.x
  • WordPress 2.5.1 1

インストール

  1. ダウンロードした akismet-htaccess-writer.zip アーカイブファイルを解凍します
  2. 解凍した akismet-htaccess-writer ディレクトリをワードプレスの /wp-content/plugins/ へコピーまたは移動します
  3. ダッシュボードの プラグイン ページを表示し、使用する を選択します
  4. ダッシュボードの プラグイン » Akismet htaccess writer にて .htaccess ファイル名を設定します

.htaccess ファイル名が設定されていない、または書き込み可能ではないと .htaccess ファイルは更新されません

ダウンロード

このプラグインに関して、決して Akismet プラグイン作者に連絡は取らないでください


  1. 他のバージョンでも動作するかもしれませんが、テストする余裕がないです…('A`)
WordPresscomments (12)(5,609)
PHP 5.2.6 インストール for Windows

PHP を 5.2.5 から 5.2.6 へアップデートしたので、その時のインストールメモです

PHP 5.2.6 ダウンロード、インストール

  1. PHP 5.2.6 のダウンロード
    まずは PHP 本体をダウンロードします。ダウンロードするファイルは Windows Binaries の以下の 2つです。相変わらず PHP 5.2.6 installer は不具合を抱えているのでお薦めしません 1
  2. ダウンロードした php-5.2.6-Win32.zip を解凍します
    PHP をインストールするディレクトリに解凍します
  3. ダウンロードした pecl-5.2.6-Win32.zip を解凍します
    php-5.2.6-Win32.zip を解凍したディレクトリに ext ディレクトリがあるので、このディレクトリに解凍します
  4. 必要に応じて php.ini ファイルの編集をします
    新規にインストールした場合は、解凍したディレクトリにある php.ini-dist または php.ini-recommendedphp.ini にコピーしてテキストエディタで編集します
    1. 注意しなければならないのが、extension 部分の依存関係
      exif を使うには mbstring が必要なので、exif の前に mbstring を記述しておく必要があります
      1. extension_dir=./ext/
      2. extension=php_mbstring.dll
      3. extension=php_exif.dll
      extension_dir の指定も忘れずに…
    2. エラーログの設定
      1. error_log = "C:/logs/php_error.log"
    3. インクルードパスの設定
      1. include_path = ".;C:\PHP\pear;C:\PHP\includes;"
  5. コンソールで確認します
    php -m と入力して、設定した extension がリストアップされるか確認します
  6. Windows システムの設定をします
    環境変数 path, pathext の設定。assoc, ftype コマンドでファイルサフィックス(.php) の関連付けを行います。環境変数の設定は、システムのプロパティ > 詳細設定 > 環境変数 で行ったほうがよいでしょう

    >path C:\php;%path%
    >set pathext=.php;%pathext%
    >assoc .php=PHP_Script
    >ftype PHP_Script="C:\php.exe" "%1" %*

Apache HTTP Server の設定

httpd.conf を使っている Apache のバージョンに合わせて編集します

  1. PHPCGI として動かす場合の設定です
    1. AddType application/x-httpd-php .php
    2. Action application/x-httpd-php "/php/php-cgi.exe"
    3. PHPIniDir "C:/php"
  2. PHP を モジュールとして動かす場合の設定です
    1. # for Apache 1.x
    2. LoadModule php5_module "C:/php/php5apache.dll"
    3. # for Apache 2.x
    4. LoadModule php5_module "C:/php/php5apache2.dll"
    5. # for Apache 2.2.x
    6. LoadModule php5_module "C:/php/php5apache2_2.dll"
    7. AddType application/x-httpd-php .php
    8. PHPIniDir "C:/php"

Apache を再起動、確認して終了です

Pear のインストール

Pear のセットアップとパッケージのインストール を参照してください

他システムと関係があるファイル

私が解っている範囲で他のシステムと関係のあるファイルを列挙しておきます

  • Apache HTTP Server
    • php5apache2.dll
    • php5apache2_2.dll
    • php5apache2_2_filter.dll
    • php5apache2_filter.dll
    • php5apache.dll
    • php5apache_hooks.dll
  • OpenSSL
    • ssleay32.dll
    • libeay32.dll
  • MySQL
    • libmysql.dll

参照

更新履歴

日付内容
2008/07/10 (木)

  1. カスタムインストールでインストール対象を全て選択するとインストラーがエラーを起こす。必要なファイルしかインストールしない。なので、他に必要なファイルや extension を追加しようにもまたインストラーを起動しなければならない…等々…
PHPno comments(5,674)
OpenSearch maker の使い方
OpenSearch maker 1.0.0
OpenSearch_maker 1.0.0

OpenSearch maker なるモノを作ったもののマニュアルがないので作成…('A`)

使い方

各入力フィールドやチェックボックス、ラジオボタンなどを設定して、generate searchplugin ボタンを押す事によって、OpenSearch に対応している UA で使用できます。以下、各項目について、PHP の関数を検索を行うプラグインを作成する例にならって説明していきます

各項目について

ヘッダーの指定

XML ヘッダーを出力する の項目をチェックする事によって XML ヘッダー が生成されるファイルの先頭に付きます。OpenSearch の仕様では、XML ヘッダー は付きません

  1. <?xml version="1.0" encoding="UTF-8"?>

検索エンジンの短い名前 : ShortName

必須項目で省略できません。設定した名前が Firefox の検索バーに表示されます

  1. <ShortName>PHP 関数検索</ShortName>

検索エンジンの説明 : Description

省略できます。検索エンジンの簡単な説明を記述します

  1. <Description>PHP 関数を検索</Description>

入力エンコード : InputEncoding

省略できますが、省略された場合 UTF-8 が使われます。GET および POST メソッドで検索エンジンに対してリクエストされる際のエンコードを指定します。ここで指定するエンコード文字セット名称は IANA Character Set Assignments を参照してください

  1. <InputEncoding>UTF-8</InputEncoding>

アイコン : Icon

省略できます。検索バーに表示される縦16ドット、横16ドットのアイコンファイルを指定します。base64 をチェックすると、アップロードされたアイコンファイルを Base64 でエンコードします。チェックしないと URL エンコード されます。アップロード処理が何らかの原因でエラーになった場合はサーチプラグインファイルは生成されません

  1. <Image width="16" height="16">data:image/x-icon;base64,Qk02AwAAAAAAADYAAAAo… (省略)</Image>

URL

必須です。検索エンジンのサイト URL を記述します。実際に検索が行われる URL でなければなりません。URL として正しくない値を入力するとエラーとなり、サーチプラグインファイルは生成されません

メソッド : Method

GET または POST のいずれかを指定しなければなりません。簡単に説明すると GET メソッドは検索エンジンサイトのホスト名や検索語などのパラメーターを URL としてリクエストします。一方、POST メソッドは URL とは別に検索語などのパラメーターをデータとして送信し、検索エンジンにリクエストします

  1. <Url type="text/html" method="POST" template="http://www.php.net/search.php">

GET メソッドを指定した場合の例を以下に示します。後述のパラメーターを指定する事によって以下の様に出力します

  1. <Url type="text/html" method="GET" template="http://blog.zodiac.vc/">
  2.   <Param name="s" value="{searchTerms}"/>
  3. </Url>

GET メソッドを指定し、パラメーターを指定しなかった場合には以下の様に出力します

  1. <Url type="text/html" method="GET" template="http://blog.zodiac.vc/?s={searchTerms}" />

パラメーター : Parameter

メソッドが POST の場合は必須です。検索バーで入力した検索語をサーチプラグインに渡す為のキーワード {searchTerms} は値のどこかに設定しなければ、サーチプラグインに検索語が渡りません。また。記述する名前、値のどちらかが欠けていれば、エラーとなり、サーチプラグインファイルは生成されません

  1. <Param name="pattern" value="{searchTerms}"/>
  2. <Param name="lang" value="ja"/>
  3. <Param name="show" value="quickref"/>

サーチプラグインファイルの生成、ダウンロード

generate searchplugin を押す事によって、サーチプラグインを生成し、ダウンロードダイアログが表示されるのでダウンロードを行います。アップロードされたアイコンファイルや生成されたサーチプラグインはダウンロードの段階で削除されます

サーチプラグインファイルのインストール

ダウンロードしたサーチプラグインファイルを Firefox のプロファイルディレクトリの中の searchplugins ディレクトリにコピーまたは移動し、Firefox を再起動します

参照

internet, softwareno comments(7,607)
CSS の border と hr 要素の見た目を同じに

hr 要素が未だに廃止予定にないので、たまに記事の中で使ってますが、align, noshade, size, width 属性が廃止予定なのと CSS の border 関係のプロパティと見た目が余りに違うので、統一して使用してます。この記事では、その見た目を同じにする CSS の小技を一つ…

  1. hr
  2. {
  3.   padding: 0em;
  4.   border-top: 1px solid #dcdcdc;
  5.   border-left: none;
  6.   border-bottom: none;
  7.   border-right: none;
  8.   color: #212121;
  9.   background-color: #212121;
  10. }

斜体部分の色指定はお好みで…因みにこんなのでもいいです

  1. hr
  2. {
  3.   padding: 0em;
  4.   border: none;
  5.   border-top: 1px solid #dcdcdc;
  6.   color: #212121;
  7.   background-color: #212121;
  8. }

参照

CSS, HTMLno comments(2,891)
ただいま、改修中…

サイトの管理に時間が取れる様になったので、テンプレートや古い記事などを改修中です。ついでによく閲覧される記事のトップ 10 をサイドバーに表示するプラグイン WP-PostViews 1.30 Readme を導入してみました。取り敢えず、古い記事の中で改修の優先順位はここを参照する事に…

WordPress, blogno comments(879)
meta 要素の name 属性値 keywords の内容を可変に…

meta 要素の name 属性値 keywords の内容を、記事単体表示の場合には可変にしてみました。ある種実験的な試みなので、内容にはまったく影響ありません…('A`)

バグ発覚…直ちに修正…('A`) みっともない PHP エラーを御覧になった方、ごめんなさい…('A`)

WordPress, blogno comments(1,095)
Firefox 3 : サーチプラグインについて

Firefox はサーチプラグインによって、検索バーに検索エンジンを容易に追加できます。このサーチプラグインの仕様は Firefox 独自の MozSearch と、IE など他のブラウザでも使用できる OpenSearch の二つの形式をサポートしています

詳細な資料は MDCCreating OpenSearch plugins for Firefox - MDCCreating MozSearch plugins - MDC です。後者の MozSearch は Mozilla プロジェクトのみの仕様なので、非標準となっています

実際に自分で OpenSearch プラグインを作成して見ようと色々と試してみて、解った事

  • 省略できない項目は OpenSearchDescription, ShortName, Url の3つ
  • ShortName は他のサーチプラグインと重複してはならない
    Firefox は起動時にサーチプラグインの検索をインストールディレクトリの中の searchplugins ディレクトリ、プロファイルディレクトリの中の searchplugins 順番で検索していきますが、ShortName が重複したプラグインがあると最初のプラグインが適用されます
  • Firefox インストールディレクトリにあるサーチプラグインは 検索バーの管理... で削除しても、インストールディレクトリの中の searchplugins ディレクトリからは XML ファイルは削除されないが、プロファイルディレクトリの中の searchplugins ディレクトリ内の XML ファイルは削除されてしまうので注意
  • Firefox インストール時に同梱されているサーチプラグインを誤って削除した場合は、検索バーの管理...初期設定に戻す ボタンを押せばいいです
Firefox 3.0 searchplugin
検索プラグインの自動検出

で、MDC の資料を見ながら、実際にこのサイト用の検索プラグインを作って、検索プラグインの自動検出もできる様にしてみました…ついでに、検索部分のテンプレート多少手直し…

検索プラグインを作成する際に、いちいちエディタを起動して…なんてめんどくさいので、OpenSearch maker なるものを作ってみました。右のコンテンツメニューからもアクセスできます

HTTP リクエストのメソッドが POST のサイトの場合、Proxomitron 1 などを使っていくつか検索プラグインを作ってみました。名前を付けてリンク先を保存(K)... でダウンロードしてください


  1. いずれ、このソフトの記事も書きたいと思います…('A`)
internet, softwareno comments(2,189)
Firefox 3 : ロケーションバーにマルチバイト文字を入力

Firefox 3 のロケーションバーにマルチバイト文字を入力して、サイトにアクセスすると正しく URL が渡らない。検索エンジンなどで使用すると、一部の検索エンジンで入力した文字列が正しくサイト側に伝わらず文字化けしてしまうという問題が…('A`)

ロケーションバーを見ると、何やら URL がエンコードされている様です…この件で検索してみると、やっぱり同じような問題が見つかりました。about:confignetwork.standard-url.encode-query-utf8 の値を true に変更する事で問題が解決しました

user_pref("network.standard-url.encode-query-utf8", true);

ところが、この問題は半分解決したといった方がいいでしょう。何故なら、この設定はサイト側の URL エンコード処理が UTF-8 の場合しか効果がありません。例えば 緑のgoo に以下の様に文字列を渡してやると、やはり文字化けします 1

http://green.search.goo.ne.jp/search?MT=漢字入力ですよ

入力エンコード指定の URL パラメーターにて、以下の様にエンコードを指定してやれば 緑のgoo に関しては、解決です

http://green.search.goo.ne.jp/search?MT=漢字入力ですよ&IE=UTF-8

サイト側でこの問題を解決する方法もあります。URL パラメーターとして入力された文字列をサイト側で処理すべき文字エンコードに変換してやればいいのです。以下の例は PHP の例です 2

  1. foreach ( $_GET as $key => $value ) {
  2.   echo '1 key: ' . $key . ' value: ' . $value . "<br />\n";
  3.   echo '2 key: ' . mb_convert_encoding( $key, 'UTF-8', 'UTF-8,SJIS,EUC-JP' ) . ' value: ' . mb_convert_encoding( $value, 'UTF-8', 'UTF-8,SJIS,EUC-JP' ) . "<br />\n";
  4. }

他の UA でも試してみましたが、Opear, IE6 は駄目でした。特に Opera 3 は酷く、ロケーションバーにマルチバイト文字を入力してエンターキーを押すと URL エンコードどころか、激しく文字化けし、4 しかもその文字化けしたデータをそのまま URL としてサイトにアクセスします。なので、サイト側で解決しても駄目です

追記

どうも、この問題は思っていたほど根が深いようです。時間がある時に調べてみたいと思います


  1. Google ではエンコード変換しているので文字化けしません
  2. mb_convert_encoding お約束ですが、この関数の3番目のパラメーターには決して AUTO は指定しないように…('A`)
  3. バージョン 9.50 と 9.51 で発生している現象です。9.27 では発生しません
  4. どうやら、JIS 変換してるような感じです…Shift-In/Out のエスケープコードが表示されます
PHP, internet, softwarecomments (2)(3,766)
WordPress : 記事内で PHP コードを実行

WordPress の記事内に PHP コードを記述し、実行するプラグインがないかと検索してみました。Exec-PHPrunPHP の二つのプラグインが見つかりました

取り敢えず、後者の runPHP をインストール、ダッシュボードのプラグイン設定にて使用するように設定し、echo 文だけの PHP コードを記事に書き込み、投稿、閲覧しても何故か実行されません 1 次に前者の Exec-PHP をインストールし、同じようにテスト用の記事を閲覧するとこちらの方のプラグインは実行されました

このプラグインを入れておくだけでは面白くないので The people sending SPAM なるページを作って見ました。このページは WordPress に最初から同梱されているスパムブロッカーのプラグイン Akismet がスパムと判断したコメントの投稿者の IP アドレスを閲覧できるようにしたものです 2


  1. 時間のある時にソースコードを追って原因を調べたいと思います…('A`)
  2. これでわざわざダッシュボードまでアクセスしなくて済みそうです
WordPressno comments(1,323)
Firefox 3 : アドオン keyconfig によるショートカットキー割り当て

Firefox 3 において keyconfig アドオンを使用してのショートカットキーの割り当てです。私は合わせて functions for keyconfig も使用しています

ページのソースを新しいタブに表示

通常、新しいウィンドウにページのソースが表示されてしまいますが、それを新しいタブ内に表示するように変更

  1. var sourceURL = 'view-source:' + content.document.location.href;
  2. gBrowser.selectedTab = gBrowser.addTab( sourceURL );

ページ情報ダイアログ表示

なぜか CTRL + I を押しても、サイドバーにブックマークが表示されてしまうので、ページ情報ダイアログを表示するように変更

  1. BrowserPageInfo();

前のタブ

ファンクションキーでタブの切り替えを行いたいので変更

  1. gBrowser.mTabContainer.advanceSelectedTab(-1,true);

次のタブ

ファンクションキーでタブの切り替えを行いたいので変更

  1. gBrowser.mTabContainer.advanceSelectedTab(+1,true);

コピー URL

現在表示しているページの URL をクリップボードにコピーします

  1. var w = window._content;
  2. var d = w.document;
  3. var txt = d.location.href;
  4. const CLIPBOARD = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
  5. CLIPBOARD.copyString(txt);

コピータイトル

現在表示しているページのタイトルをクリップボードにコピーします

  1. var w = window._content;
  2. var d = w.document;
  3. var txt = d.title;
  4. const CLIPBOARD = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
  5. CLIPBOARD.copyString(txt);

コピーアンカー

現在表示しているページの URL とタイトル等の情報を元に HTML のアンカー要素を生成し、クリップボードにコピーします。本サイトのアンカー要素の生成はコレで行っています

  1. var w = window._content;
  2. var d = w.document;
  3. /* var l = d.documentElement.attributes[0].value; */
  4. var l = '';
  5. var txt = '<a target="_blank" hreflang="' + l + '" href="' + d.location.href + '" title="' + d.title + '">' + d.title + '</a>';
  6. const CLIPBOARD = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
  7. CLIPBOARD.copyString(txt);

3行目がコメントになってますが、ページの言語情報がページによってはうまく取得できないで、ここだけは手入力してます…('A`)

検索バー切り替え↑

検索バーのサーチエンジンをキーボードの入力フォーカスを移す事なく切り替えます。トップの場合は最後の検索エンジンに切り替えます

  1. var search = document.getElementById("searchbar");
  2. var newIndex = search.engines.indexOf(search.currentEngine);
  3. if ( --newIndex < 0 ) newIndex = search.engines.length-1;
  4. search.currentEngine = search.engines[newIndex];

検索バー切り替え↓

検索バーのサーチエンジンをキーボードの入力フォーカスを移す事なく切り替えます。最後の場合はトップの検索エンジンに切り替えます

  1. var search = document.getElementById("searchbar");
  2. var newIndex = search.engines.indexOf(search.currentEngine);
  3. if ( ++newIndex >= search.engines.length ) newIndex = 0;
  4. search.currentEngine = search.engines[newIndex];

選択文字列を検索バーで現在選択されているエンジンで検索

前述の 検索バー切り替え↑検索バー切り替え↓ と合わせて使うととても便利です

  • Web ページ上の文字列を選択した後にアサインしたキーを押す事によって検索エンジンでの検索結果ページを表示します
  • CTRL キーを押しながらの複数選択文字列にも対応
  • サーチエンジンの検索結果は新しいタブに表示されますが、8行目の tabcurrent に変更する事によって、現在アクティブのタブに表示します
  • 検索バーには検索語は表示されません
  1. var sel = window._content.getSelection( );
  2. var s = '';
  3. if ( !sel.rangeCount || sel.getRangeAt(0) == '' ) return ;
  4. for ( i = 0; i < sel.rangeCount; ++i ) {
  5.   s += sel.getRangeAt(i).toString().replace( /^\s+|\s+$/g, '' ) + ' ';
  6. }
  7. s = s.replace(/[\+\s]+$/g,'');
  8. document.getElementById( "searchbar" ).doSearch(s, 'tab');
  • 選択文字列の中に空白が含まれている場合のバグを修正 (12行目)
  • さらにバグ…('A`) どうやら encodeURIComponent は必要ない模様… (12行目)
  • 7行目の修正と全体的に冗長なコードをまとめた

選択範囲を検索

選択文字列(複数対応) を検索エンジン(googleの場合) で検索し、ページを新しいタブに表示します。14 行目を変更する事によって、他の検索エンジンや検索エンジンへ渡す URL パラメーターを変更できます

  1. var win = window._content;
  2. var doc = win.document;
  3. var sel = win.getSelection( );
  4. var s = '';
  5. var sURL = '';
  6. if ( !sel.rangeCount || sel.getRangeAt(0) == '' ) {
  7.   return ;
  8. }
  9. for ( i = 0; i < sel.rangeCount; ++i ) {
  10.   stmp = sel.getRangeAt(i).toString().replace( /^\s+|\s+$/g, '' );
  11.   s += (encodeURIComponent(stmp) + '+').toString().replace(/%20/g,'+');
  12. }
  13. s = s.replace(/\++$/g,'');
  14. sURL = 'http://www.google.co.jp/search?q=' + s + '&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a';
  15. gBrowser.selectedTab = gBrowser.addTab( sURL );

選択文字列の中に空白が含まれている場合のバグを修正 (11行目)

選択文字列を検索バーへ

選択文字列(複数対応) を検索バーの入力ボックスへセットします

  1. var win = window._content;
  2. var doc = win.document;
  3. var sel = win.getSelection( );
  4. var s = '';
  5. if ( !sel.rangeCount || sel.getRangeAt(0) == '' ) {
  6.   return ;
  7. }
  8. for ( i = 0; i < sel.rangeCount; ++i ) {
  9.   s += sel.getRangeAt(i) + ' ';
  10. }
  11. document.getElementById("searchbar").value = s.replace(/^\s+|\s+$/g,'');

検索バーをクリア

検索バーをクリアします

  1. document.getElementById("searchbar").value = "";

Firefox を再起動

Firefox を再起動します

  1. const nsIAppStartup = Components.interfaces.nsIAppStartup;
  2. var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
  3. var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"].createInstance(Components.interfaces.nsISupportsPRBool);
  4. os.notifyObservers(cancelQuit, "quit-application-requested", null);
  5. if (cancelQuit.data) return;
  6. Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(nsIAppStartup).quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit);

再起動時に終了時の状態復元が必要なければ、2~5行目は不要です

JavaScript, internet, softwareno comments(8,156)
WordPress 2.5.1

帰国してから早々と行ったのが WordPress のバージョンアップ作業でした。前のバージョンは確か 2.3.3 を使用していました。1 以前のバージョンでも私の場合は問題無かったのですが、ダッシュボードの大幅な変更や 500 以上にも及ぶ修正点 2 をダラダラと眺めてバージョンアップする事にしました

WordPress | 日本語 から、バージョン 2.5.1 日本語版をダウンロードし、解凍。私はローカルにもほぼ同じ環境を構築しているので、取り敢えずローカル環境にインストールしてみる事にしました

インストールは単に解凍したディレクトリ/ファイルをコピーするだけなんですが、私の場合は自分で修正したファイルが幾つかあるので、それをコピー、リネームして待避。そして、そのままコピーしてインストールは終了。アップグレードなので /wp-admin/upgrade.php にアクセスしてあっけなくアップグレード作業は終了

一通りの動作テストを済まし、レンタルサーバーの方もバージョンアップしようと、作業を開始する事に。開始の前に Maintenance Mode Plugin にてメインテナンスモードへ移行。そして、ローカルと同じようにインストール作業を行い、最後にアップグレードを作業を行う所でとんでもない事が発覚…

/wp-admin/upgrade.php にアクセスしてもメインテナンスモードに…('A`) ダッシュボードにアクセスしようにも、やはりメインテナンスモード…('A`) どうやら WordPress をインストールした所は全てメインテナンスモードになってしまったようです

しょうがないので phpMyAdmin にてデータベースを書き換えて、通常モードに変更して事なきを得ました。なんで、こんな事態に陥ってしまったかというと、メインテナンスモードプラグインの設定にアクセス許可設定を設定してなかった為に、全てのディレクトリ/ファイルにアクセスしてもメインテナンスモードになってしまったようです。アクセス許可設定を設定し、一通りの動作確認を行って全てのバージョンアップ作業は終了しました 3


  1. うろ覚え…('A`)
  2. Custom Query - WordPress Trac - Trac を参照
  3. フッターのリンク先も変更しないと…
WordPress, blogcomment (1)(972)
Firefox 3 : userChrome.css

Firefox を 2 から 3 へアップグレードしたのはいいが、userChrome.css がほとんど反映されていなかったので、DOM Inspector を使いながら userChrome.css を修正していきました。この記事はそれをまとめたものです 1

ブックマークツールバーのアイコンを非表示に

ブックマークツールバーは通常はアイコンとテキストの両方を表示してますが、私はブックマークツールバーに入れているブックマークアイテムのテキストは 1文字にしていますので、2 アイコンの表示は必要ないので、非表示にします

Firefox 3.0 bookmarks toolbar
変更前 : ブックマークツールバー
Firefox 3.0 bookmarks toolbar
変更後 : ブックマークツールバー

/**
 * ブックマークツールバーフォルダのアイコン非表示
 */
hbox#bookmarksBarContent .toolbarbutton-icon
{
  display: none !important;
}
hbox#bookmarksBarContent toolbarbutton[image*="data:image"] .toolbarbutton-icon
{
  display: none !important;
}

検索バーの虫メガネアイコンを非表示に

私にとっては邪魔なだけなので、消えてもらいます

Firefox 3.0 searchbar
変更前 : 検索バー
Firefox 3.0 searchbar
変更後 : 検索バー

/*
 * 検索バーの検索ボタン(虫メガネアイコン)を非表示
 */
#searchbar .search-go-button
{
  display: none !important;
}

履歴メニューを非表示に

まったく使わないので消えてもらいます

Firefox 3.0 main menu
変更前 : メインメニュー
Firefox 3.0 main menu
変更後 : メインメニュー

/*
 * メニューの「履歴」を非表示
 */
#history-menu
{
  display: none !important;
}

ステータスバーのリサイズパネルを非表示に

邪魔なので消えてもらいます

Firefox 3.0 statusbar
変更前 : ステータスバー
Firefox 3.0 statusbar
変更後 : ステータスバー

/*
 * ステータスバーのリサイズパネルを非表示
 */
#status-bar .statusbar-resizerpanel
{
  display: none !important;
}

ブックマークメニューの不要な項目を非表示に

まったく使わないので消えてもらいます

Firefox 3.0 bookmark
変更前 : ブックマークメニュー
Firefox 3.0 bookmark
変更後 : ブックマークメニュー

/*
 * ブックマークのメニューから以下の項目とその下のセパレーターを非表示にする
 */
/* このページをブックマーク */
#bookmarksMenuPopup menuitem[command="Browser:AddBookmarkAs"],

/* このページを購読... */
#bookmarksMenuPopup #subscribeToPageMenuitem,
#bookmarksMenuPopup #subscribeToPageMenupopup,

/* すべてのタブをブックマーク... */
#bookmarksMenuPopup menuitem[command="Browser:BookmarkAllTabs"],

/* ブックマークの管理... */
#bookmarksMenuPopup menuitem[command="Browser:ShowAllBookmarks"],

/* セパレーター */
#bookmarksMenuPopup #organizeBookmarksSeparator,

/* よく見るページ 最近ブックマークしたページ
   最近付けたタグ ブックマークツールバー */
#bookmarksMenuPopup .bookmark-item[label*="よく見るページ"],
#bookmarksMenuPopup .bookmark-item[label*="最近ブックマークしたページ"],
#bookmarksMenuPopup .bookmark-item[label*="最近付けたタグ"],
#bookmarksMenuPopup .bookmark-item[label*="ブックマークツールバー"],

/* セパレーター */
#bookmarksMenuPopup menuseparator[builder="start"]
{
  display: none !important;
}

修正、項目を加えました。凄く…スッキリしました

Firefox 3.0 bookmark
さらに変更後 : ブックマークメニュー

ブックマークのメニューからタブですべて開くを非表示にする

危険なので消えてもらいます

Firefox 3.0 bookmark
変更前 : ブックマークメニュー
Firefox 3.0 bookmark
変更後 : ブックマークメニュー

/*
 * ブックマークのメニューから タブですべて開く とその上のセパレーターを非表示にする
 */
#bookmarksMenuPopup menuitem[label*="タブですべて開く"],
#bookmarksMenuPopup menuseparator[builder="end"]
{
  display: none !important;
}

HTTPS ページ表示時の ロケーションバーの背景色を変更

何故か 3 になってから色が変化しません…なので、背景色を変更します

Firefox 3.0 urlbar
変更前 : ロケーションバー
Firefox 3.0 urlbar
変更後 : ロケーションバー

/*
 * ロケーションバーの背景色変更
 */
#urlbar[level="high"][pageproxystate="valid"],
#urlbar[level="low"][pageproxystate="valid"],
#urlbar[level="high"][pageproxystate="valid"] > :not(#identity-box):not(#urlbar-icons),
#urlbar[level="low"][pageproxystate="valid"] > :not(#identity-box):not(#urlbar-icons),
#urlbar[level="high"][pageproxystate="valid"] > :not(#identity-box)>:not(dropmarker):not(progressmeter):not(.progress-bar),
#urlbar[level="low"][pageproxystate="valid"] > :not(#identity-box)>:not(dropmarker):not(progressmeter):not(.progress-bar)
{
  color: #000000 !important;
  background-color: #e0ffff !important;
}

#e0ffff の部分はお好みで変更して使用します。Firefox 2 の時の色は #f5f6be です

ID や class 名称が変更になっているので、DOM Inspector で探し当てるのがめんどくさかった…特にブックマークメニューやセパレーターが ID, class 名が割り振られていないので、CSS Selectors を使用してやや強引にしてあります。取り敢えず、私の環境では無問題なのでコレで良しとします


  1. 記事にする前に某掲示版の某スレッドへ書き込んでいました…('A`)
  2. 変わった使い方だって?そうですか…('A`)
internet, softwareno comments(18,654)
Internet Explorer 死亡のお知らせ
Firefox 3.0
Firefox 3.0

前回の記事 今日もガクリ('A`) » Internet Explorer 終了のお知らせ に続き、Firefox 2 から 3 へアップグレードしました。 ダウンロードを行ったのはちょうど Spread Firefox | Download Day 2008 のイベントが開始された直後にダウンロードしました

このダウンロードイベントによる Firefox 3 の一日辺りのダウンロードカウントは全世界で約 830 万ほどになったようです

ダウンロードはしたものの、アドオンの関係でインストールは暫く様子を見ようかと思いましたが、インストールの準備の為にプロファイルディレクトリの中身を覗いててアドオンの問題を解決する方法 1 が思いついたのでインストールする事にしました


インストール手順は以下の様に行いました

  1. 以下の項目の Windows レジストリ をエクスポート
    • HKEY_LOCAL_MACHINE¥SOFTWARE¥Mozilla
    • HKEY_LOCAL_MACHINE¥SOFTWARE¥mozilla.org
  2. Firefox 2 をインストールしたディレクトリをバックアップコピー
  3. %APPDATA%¥Mozilla ディレクトリをバックアップコピー
  4. ダウンロードした Firefox Setup 3.0.exe を実行し、インストール
  5. セットアップウィザードに従ってインストール

起動し、まず驚いたのが、Firefox 2 の環境をキッチリと受け継いでくれた事。ブックマークもキチンと引き継がれました。2 あとはなんと言っても、全体的なブラウジングの速度が飛躍的に向上したこと。起動も速くなった事。と、私にとってはとても満足のいくアップグレードでした

ただ、幾つかのアドオンと userChrome.css 等が有効となって無い事が判明。この事に付いては別の記事に詳細を記述していこうかと思います


  1. extensions ディレクトリ内の各アドオンを格納しているディレクトリ内の install.rdf を書き換えて Firefox 3 を再起動して、強引に認識させてしまうという方法('A`)
  2. 私の場合は何も問題無くプロファイルは引き継がれたんですが、環境によってはうまく引き継がれないようです
internet, softwareno comments(1,072)
約5ヶ月ぶりの更新です

約5ヶ月ぶりの更新です。日本を離れて、ヨーロッパ、北米、カナダと遊び周ってました。ネットカフェなどから、スパムの処理など基本的な管理は行っていました。先月に日本に戻ってきてたんですが、色々と状況が変化したようですね…1これから、マイペースでちょこちょこと更新していきます


  1. 相変わらず日本は良い方向には変化していませんね…('A`)
blogno comments(753)
Customizable Post Listings の修正

当ブログで使用している WordPress のプラグイン Customizable Post Listings 1 の修正点

  1. サーバーとローカル環境での MySQL のバージョンの違いによる不具合の修正

    $sql .= "GROUP BY $tableposts.ID ORDER BY $orderby $order";

    ローカルで構築した MySQL のバージョンだと、GROUP BY 句を指定していると正常に SELECT されないので、以下の様に修正

    $sql .= "ORDER BY $orderby $order";

  2. バグを見つけたので修正

    if ($orderby != 'rand()') $orderby = "$tableposts.post_$orderby";

      ・
      ・
      ・

    if ('modified' == $orderby) $sql .= "AND $tableposts.post_modified_gmt <= '$now' ";

    上記の最初の if 文で $orderby 変数を置き換えてしまっているので、2番目の if 文では真とはなりません。なので、関数の最初で別変数に保持するように修正

    $o = $orderby;

      ・
      ・
      ・

    if ('modified' == $o) $sql .= "AND $tableposts.post_modified_gmt <= '$now' ";

  3. 新規の投稿も更新にリストアップされるのが気に入らないので、recent posts = recent updates にならないように修正(2番の修正が必要)

    if ('modified' == $o) $sql .= "AND $tableposts.post_modified_gmt <= '$now' AND $tableposts.post_date_gmt <> $tableposts.post_modified_gmt ";

    単に投稿日時と更新日時が同じでないレコードを抽出するように条件を加えただけ

  1. recent posts, recent updates の部分で使用しています。配布元サイトのバージョンは 1.1 となっていますが、何故か私が持っているのは 1.5 です…なんでだろう?どこで落としたのか所在がわからなくなりました…('A`)
WordPress, blogcomment (1)(1,373)
WordPress の大きなお世話

WordPress の事 の記事で書いた問題が解決したので、その時行った対策を記事としておきます。結論から言うと、formatting.php を修正する事でほぼ解決。ソースの中を見ると解るように私にとっては余計な事をし過ぎている。修正した点は wptexturize, wpautop の 2つの関数。1 前者は一部の処理をコメントにし、後者は入力パラメーターを処理はせずにそのまま返す様に修正

前述の修正を施した WordPress を暫くの間、ローカル環境の WordPress でテストし、私が使用するもとでは問題ないと判断し、その時にテストしていたプラグイン 2 と一緒にサーバー側にも反映させました。最近の記事 (recent posts) と最近更新 (recent update) された記事のリストがそうです

話は変わって、WordPress はカスタマイズ性が抜群にいいのはいいのですが、如何せん、ドキュメントの不備が酷すぎます。今回の移転で私は初めて WordPress を触りました。所謂、WordPress 初心者です。実際にテンプレートを作製している時に感じたんですが、やりたいこと、実現したいことは解っているのですが、そこから目的の情報に辿り着くまでが時間かかり過ぎました。ひとえに逆引きやチュートリアルといった情報を掲載しているサイトがないからです。これは、公式サイト、日本の WordPress 関連サイトでもそうでした

例を挙げると WordPress でテンプレートを作成するには テンプレートタグ(実体は PHP の関数) というものを使用します。で、公式サイトを閲覧していき、テンプレートタグのマニュアルページなるものを見つけましたが…こんなんじゃ初めて触る人には理解できません。テンプレートタグの要約すら記述していません('A`) 結局テンプレートタグ一つ一つのページを何ができるのかを知る為に見て回らなければなりません。一言要約を記述するだけでこの手間が省けるに…('A`) これらを日本語に翻訳したサイトもあるんですが、情報が古かったり、リソースを置いてる場所が不安定だったりと日本語での情報収集は断念しました

実際にテンプレートについて書いていこうかと思いましたが、ダラダラと長くなるので今回は此処までとします


  1. なんで、こんな余計な事をするのか理解できない。データベースに入っているデータをそのまま無加工で出力して欲しいのに…('A`) しかも、wpautop 関数にはバグがあることが判明('A`)
  2. このプラグインをテストしている最中に問題が発生。サーバーとローカル環境での MySQL のバージョンの違いにより、ローカルでは正しく動作しない事が判明。ローカル側のプラグインのソースを修正する事で対応しましたが…('A`)
WordPress, blogno comments(905)
contents
most viewed (179735)
categories
archives
recent posts
recent updates
recent comments
  • Cooper Foster : Need for Speed ProStreet : 2007年10月26日(金)
  • Ranime-Wiki : S!速報ニュース : 2007年10月23日(火)
  • Anonymous : デジタルカメラを買いました : 2008年01月11日(金)
  • Crasty : foobar2000 : foo_custominfo データベースダイエット : 2008年07月15日(火)
  • Christopher : WordPress Plugins : Akismet htaccess writer : 2008年07月12日(土)
recent trackbacks
mobile
qrcode:home
profile
曇り札幌市中央区 ‘ 曇り
気温: 26℃ ‘ 湿度: 80%
recommends
Valid XHTML 1.0 Transitional Valid CSS X.X
RSS 2.0 RSS 0.92
RDF/RSS ATOM
get Firefox 2 get Opera
ie
毎日の検索で環境貢献
green tree
このパーツからbook
Powered byspacer