gettextのmo/poファイルを更新したらApacheを再起動する

PHP logo

サイトを国際化するにあたってgettextを使って、mo/poファイルを作って翻訳を行うということはよくあり、今触っているシステムでもFuelの下で(Fuelのi18nは使わずに)gettextを使って日本語版と英語版の切り替えを実現しています。当然、このファイルは頻繁に更新されるわけですが、ローカルで確認していると更新後にロケールが正しく取得されずに日本語版で英語が表示されてしまうことがよくあります。何度かページ更新したり、時間をおいたりすると直るんですが、ローカルならまだしも本番環境で同じことが起こったら軽く事故ですね。ファイルサイズとかサーバスペックとかでキャッシュ更新タイミングが決まってるのか、運良く本番環境では発生していなかったようですが。

続きを読む

自分のはてなブックマーク一覧を取得するスクリプトが上手く動いていなかったのを修正した

このエントリの続き。 はてなブックマークの何かが壊れて直った | mutter 結論から言うと、PHPプログラムからRSS(http://b.hatena.ne.jp/nobodyplace/rss)へのアクセスが遮断されているっぽい。20分に1回GETリクエストを投げているだけなのだけど、それが嫌がられたんだろうか。それともサーバの不調?よくわからないがSimpleXml_load_fileだけでなくfile_get_contentsでも取得出来ない(falseが返る。エラーをよく見ると503が返されてる)ので、XMLパース出来ないとかいう問題ではないみたい。

続きを読む

【メモ】PukiWikiのURLの短縮化

PukiWiki

前提

短縮URLサービスを使っても良いんだけど、URLを見てpukiwikiのリンクであることがわかると社内共有とかで便利なので、ほどほどに短縮したい。

プラグインを使う

umoriguさん制作のプラグインを使う 自作プラグイン/s.inc.php – PukiWiki-official umorigu/pukiwiki.urlshortener · GitHub これで、こんな感じに短縮される
http://hoge/pukiwiki/index.php?PHP%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%83%BB%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3
http://hoge/pukiwiki/?&2dc9e012b6

mod_rewriteを使ってさらに短縮

.htaccessファイルを配置。内容はこんな感じ。
RewriteEngine on
RewriteBase /
RewriteRule ^wiki/(.*)$ /pukiwiki/?cmd=s&k=$1
これで、こんな感じに短縮される。
http://hoge/pukiwiki/?&2dc9e012b6
http://hoge/wiki/2dc9e012b6

続きを読む

【メモ】楽天GOLDのFTPにPHPでファイルをアップロードする

(今どきFTPですか?っていう議論はさておき)FTPサーバにアップロードするってこれまでも需要がありそうだったのになぜかやったことがなかったので、調べてやってみた。サンプルコードはこんな感じ。

ポイント

  • ポート番号を「16910」で設定する
  • パッシブモードをオンにする
割と何も難しいこと考えずに実行出来ました。

続きを読む

楽天市場の商品ページにPHPでの処理結果を表示させる

rms.jpg 色々制約がある楽天市場の商品ページ。通常だとJavaScriptも使えませんが、店舗用のサーバサービスである「楽天GOLD」を使うとJavaScriptが使えます。また「楽天GOLD」のページであれば、楽天市場のページにiframeを使って埋め込むことも可能です。 楽天GOLDでは基本的にhtmlしか使えないので、基本的にJavaScriptでの処理になります。それでやっても良いんですが、楽天GOLDは基本的にファイルサーバ的なサービスなので、処理系を作るのには向いてません。なので、プログラム処理する部分はサーバを借りてそこに置くしかありません。 で、結局流れとしては、

[自サーバ] プログラム処理して結果出力 ↓ [楽天GOLD] Ajaxで出力を取得して表示 ↓ [楽天市場] 楽天GOLDのページをiframe使って商品ページに埋め込む
という感じ。

注意点

自サーバの出力を取得するためには、自サーバ側でクロスドメインを許可しておく必要があります。詳しくはこの辺を参考に。 続 クロスドメインで使う XMLHttpRequest と CORS の話 | 日頃の行い PHPでやるんなら、出力時にヘッダを付加しておくのが便利です。
header('Access-Control-Allow-Origin: *');
Ajax取得はjQueryで適当にやりました。以下、サンプルコード。
$(document).ready(function() {
$.ajax({
url : 'http://hogehoe/sample.php',
type : 'GET',
dataType : 'html',
crossDomain : true,
}).done(function(data, textStatus, jqXHR) {
$("#result").append(data);
});
});
楽天市場は色々と使いづらいけど、やってみればいろいろやり方はあるんだなー

続きを読む