NextGEN Gallery の導入

先日[ gallery ]機能について、いろいろ調査しましたが、やはりデフォルトの[ gallery ]機能では実現が難しいようなので、結局定番の「NextGEN Gallery」を導入しました。アルバムは最終的にはフォルダ(日付)単位で管理したほうが楽ですね。

以下のページ表示が非常に遅かったのですが、NextGEN Galleryの導入によりスッキリ表示されるようになりました。編集ソースも汚さずにきれいスッキリです。

Buffalo WHR-G301N 特定サイトが異常に遅い

この前のネットワーク経路通り、Buffalo AirStation WHR-G301N を導入し、このルータにPPPoEをやらせ、DynDNSのDDNS自動更新も正常に動作したのですが、なぜかYahoo!オークション(ヤフオク)や楽天サイト表示だけが異常に遅い。20秒程度ダンマリ後、表示はされるのですが画像がほぼ全滅。しかもログインしている時だけこの症状が出る。Yahoo!トップなどは全く問題なく表示されます。
ググりますと、ウイルスセキュリティZEROまたはセキュリティソフトが原因という回答が多かったのですが、我が家ではウイルスセキュリティZEROは使用していないですし、セキュリティソフトを一時OFFにしても症状は全く改善されず。IE8,Firefoxどちらとも同じ症状が出ます。別のWindowsXPでも同様の症状。ヤフオク、楽天だけに、このルータなにかやってんじゃ?と疑いたくなってしまう(汗)
しかもルータを元に戻す(PPPoEを別ルータにやらせる)とこの症状は全く出ません。

ログインした場合としない場合での違いはクッキーが書き換わるぐらいしか思いつかないのですが、これがなぜWHR-G301Nで影響が出るのか全く不明です。ブラウザのキャッシュクリアなど、いろいろな条件で試行錯誤した結果、Windows7では症状が出ないことがわかりました。WindowsXPとWindows7との違いといえば、MTUやRWINの違いぐらいしか思いつかない。

まあまずはやってみようということで、NetTuneを試したのですが改善されず。次にNet Speed Acceleratorを試しました。我が家はRV-230SEですのでVDSLです。FTTH①から順に設定&再起動で試していき、ADSL8MのMTU=1454の標準?の設定になったところで、なんとヤフオクが速攻表示され直ってしまいました。というか直りました。予想的中だったわけですが、まさかって感じです。NetTuneは設定の仕方が悪かっただけかもしれませんが、Net Speed Acceleratorのほうが基本設定を勝手にしてくれますし、MTU値だけが原因だけではない気もします(もっと詳しく調査すればわかるとは思いますが)。
WHR-G301Nは2台もあるので捨てなくてよかったと(笑)これでDDNSもやってくれますしVPNも問題なく接続でき、なかなかよいルータになりました。

WHR-G301Nと特定サイトとWindowsXP、レアな症状ではあると思いますが、同様の症状が出た場合は試してみる価値ありです。

後日、さらに詳しい調査をしました。結局、WHR-G301Nが原因ではありませんでした。WHR-G301Nにぶら下がっているNECのBR1500Hという骨董品ルータが原因でした。BR1500Hをもう一つ予備のWHR-G301Nに置き換えたところ、MTU値が1454でなくとも問題なく表示されました。またいまさらですが、NetTuneでも問題なく設定できました。設定項目についてはやはりMTU値により挙動が変わり、これが原因と思われます。
ADSL時代の骨董品ルータなだけにMTU=1454なのかなーと。これも設定次第でなんとかなるのかもしれませんが、すでに交換済ですのであしからず(汗)
ネットワーク経路を変更し、特定サイトのみ異常に遅い場合はMTU値を疑ってみるのもよいかもしれません。

[cc] [AsahiNet] —– [RV-230SE] —– [WHR-G301N(PPPoE)] —– [BR1500H(DHCP)] —– [PC] ↓
[AsahiNet] —– [RV-230SE] —– [WHR-G301N(PPPoE)] —– [WHR-G301N(DHCP)] —– [PC] [/cc]

Buffalo LS-VL SSHログイン化

もっと簡単にできる方法を追加しました。やってることは同じなんですが。。。


Slingboxなどのリモート接続用に今まで自宅のネット回線には固定IPの1セッションともう1セッションの2セッションをAsahiネットにて確保していたのですが、震災をきっかけに節電対策でSlingbox等を停止。あわせて固定IP&1セッションも解約。いわば一般的な回線契約に戻しました。
そのおかげで固定IP\800円+1セッション\735円=\1,535円/月もお安くなったわけですが、海外渡航でのSlingboxは必須?なので、今回の渡航前、無料DynamicDNSサイトのDynDNSで取り急ぎドメインを発行。すでに固定IPではないわけですので一定時間毎にDynamicDNS側へ自IPを更新する必要があるわけですが、渡航時は時間がなくとりあえずネットブック(Dell Inspiron mini10)を引っ張り出してきてDynDNS更新ソフトをインストして常時電源ONで旅立ったわけです。今後のためにもDynamicDNS更新できるものを用意しておこうかということでBuffalo LS-V2.0Lを購入してきました。なんでNASかといえばあれなんですが(汗)題目のようなことができ遊べますし、Webファイルストレージとしても使用できるのでまあ一石二鳥かなと。以前は自鯖も飼っていたのですが、2年前にすべてレンタルサーバへ移行。これからは消費電力の少ないサーバ、つまりNASでしょう!(笑)このLS-VLシリーズのスペックなら結構遊べるサーバになると思うのですが。。。

BuffaloのルータでDynDNS更新という手もあるのですが、これですとルータはPPPoE接続しないとグローバルIPがわからないはずで、うちではRV-230SEにPPPoEとDMZをさせ、PCとは別ルータで挟んでセグメントを別けておきたいのでNG。
[cc] [AsahiNet] —– [RV-230SE] –+– [Router] —– [PC] +– [LS-VL(静的IPマスカレード)] +– [Slingbox(静的IPマスカレード)] [/cc] LS-XLの時はhddrootfs.img本体にトラップを仕掛けファーム更新でrootハックしていたのですが、効率が悪すぎですので今回はacp_commander.jarのお世話になりました。こちらのほうが数百倍簡単です(笑)

まずはLS-VLにログインできないとなにも始まらないですので、SSHログイン化してみます。

  1. freerootpw.sh
    NAS-Centralに行きrootパスワードを潰すfreerootpw.shとacp_commander.jarを拾ってきます。freerootpw.shはそのままLS-VLのshareフォルダへ転送します。中身はなんてことはない以下のようなコマンドっす。まあ他にもやり方はありそうですが。。。

    • freerootpw.sh
    #!/bin/sh
    . /etc/profile
    mv /etc/shadow /etc/shadow.org
    cat /etc/shadow.org | perl -pe 's/root:[^:]*?:/root::/' > /etc/shadow
    chmod 644 /etc/shadow
    
  2. sshd_config
    次にBuffaloでfirmwareを拾ってきて解凍します。途中hddrootfs.imgのパスワードを聞かれたりしますが適宜入力(パスはNAS-Centralにあります)解凍を繰り返し/etc/sshd_configを抜き出します。で、以下の設定変更をしこれまたLS-VLのshareフォルダへ転送します。

    • sshd_config
    PermitRootLogin yes
    PasswordAuthentication yes
    PermitEmptyPasswords yes
    
  3. acp_commander.jar
    最後にacp_commnader.jarから下記2ファイルをコマンド操作します。

    • freerootpw.sh を実行。
    • sshd_config を/etc/sshd_config に上書きコピー

    acp_commnader.jarの「-s」オプションはワンライナーの実行しかできません。「/root>」プロンプトで1回コマンド実行できる感じです。

    • acp_commnader.jar
    [cc theme=”blackboard”] java -jar acp_commander.jar -t -ip -pw -s
    [/cc]

再起動しますと、rootユーザでパスワードは空でログインができるはずです。あとはなんでもできますので、sshd_configの「PermitEmptyPasswords no」にしたり、rootに新パスワードを設定しておきます。

とまあ、上記経路図を書いていたら、やっぱりBuffaloのルータでPPPoEやらせたほうがよい気がしてきました。それはVPNです。中国ではあれがこれで有名サイトにアクセスできない。VPNすれば問題ないのでやっぱり以下に変更しようかと思ってます。RV-230SEはPPPoEブリッジ、もしくはVDSLユニットからルータユニットを通さず直接Buffaloルータへ。幸いBuffaloルータは複数台在庫があるので問題ないかと。DynamicDNSもBuffaloルータに任せようかと、いうことでLS-VLにddclientを入れる必要がなくなりそうです。
ルータ1台の消費電力は増えてしまいますが。。。
[cc] [AsahiNet] —– [RV-230SE] —– [WHR-G301N] –+– [Router] —– [PC] +– [LS-VL(静的IPマスカレード)] +– [Slingbox(静的IPマスカレード)] [/cc]

[ gallery ]機能について

大量(100枚以上)の画像を扱うと<a>タグでは記事を汚すので無理ですよね。そこでWordPressデフォルトの[ gallery ]機能を使うのですが、この機能、グルーピング(グループ化、カテゴリ化)ができない。デフォルトですと記事画像が全部表示されます。取り合えず、2.9からついたincludeオプションでなんとかなんちゃってグルーピングは可能なのですが、いまいち。やっぱりデフォルトの機能では無理っぽい。もちろんFile Galleryプラグインは入れているのですが(大量ですとこれがないと無理)ソートもいまいちですし、元々グルーピングができない。

本当はデフォルトのアップロード機能にてアップしたメディアにて、グルーピングやファイルなどのメタ(昔ですとポインタ)情報のみ管理できるプラグインが理想かなーと思っているのですが。SONYのLife-Xのように。プラグインを削除や変更してもファイルやその情報は削除されたり変更されたりしないようにしたい。

いろいろやってみたのですが、[ gallery include=”xxx” ]で記事に大量のサムネイルを表示しますと、かえってロード時、画面描画に時間がかかってしまい逆に表示が遅くなってしまいます。やっぱり正当なgalleryプラグインを入れ、そのgalleryへのパスだけ埋め込むほうがよい気がしてきました。プラグイン依存なるモデルはあまり好きになれないのですが、いまのところ仕方ないですかね。HTML5レディの時にFlash依存にもなりたくないのですが(ここはAppleと同じ(笑))。
なんかよいプラグインがあったら教えてください。

Counterize II カウンタ更新時刻が9時間ずれる

「Counterize II 時間」でググると出てくる wp-setting.php の「UTC」→「UTC+9」に変更する以下の模範案?なのですが

// Set default timezone in PHP 5.
if ( function_exists( 'date_default_timezone_set' ) )
	date_default_timezone_set( 'UTC' );

// Set default timezone in PHP 5.
if ( function_exists( 'date_default_timezone_set' ) )
	date_default_timezone_set( 'UTC+9' );

 
WPをかじり始めたばかりでまだWPのお作法(慣習)を理解してないのですが、本家がバグとは認識しているかいなかは別にして(チケットは既に上がっているようですが)、そもそも一般的にWPの設計思想においては正しい動きのような気がします。「PHP5ではUTCにしておくよ」的なメッセージがコードにこめられている気がしてならない。
また普通は本体側をゴニョゴニョするより、プラグイン側を弄るのが正しいと思うのは私だけ?しかもCounterize IIのソースはプラグイン編集画面で変更可能ときた。まあ変更箇所はいっぺーなのですが、とりあえず使用している関数のみ以下の対応をしました。
counterizeii/counterize.php を見ますとこんな感じ。

// Returns amount of hits today.
function counterize_gethitstoday()
{
	global $wpdb;
	$today = date("Y-m-d");

// Returns amount of hits today.
function counterize_gethitstoday()
{
	global $wpdb;
	$today = date("Y-m-d", current_time('timestamp'));

このdate()がUTCで時刻を取ってるはずなんで、WP本体側と同じ時刻の取り方「current_time(‘timestamp’)」にするよう変更したほうが正当な修正方法ですかね。もっとよい方法がありそうですが、Counterize II側が本体側と違う時刻の取り方をしているのが原因かと。これなら「設定 > 一般設定 > タイムゾーン」で設定したロケールがちゃんと反映されますし。

counterize.phpには、すでにcounterize_gethitsyesterday()関数を追加してしまいましたし、Counterize II側が直さない限りアップデートしなければいいので。