kiri’s blog

no fun, no life

Browsing Posts in Blog

なので、いれてみた。
twitterなんかでつぶやくときにmixi内のページを参照すると見られないひともいるので気が引けたんだけど、このスクリプトがあれば解決。

mixiニュースに提供元の記事へ飛ぶリンクを追加するGreasemonkeyスクリプト書いてみた – 5.1さらうどん

すこし気になったので一箇所手を入れた。アイコンを作者の方のサイトから採ってくるようになってるので、それをしないようにした。こんなかんじ。

with(link.style){
	//backgroundImage="url(http://gigi-net.net/script/images/MixiAppManager/newspaper.png)";
	backgroundImage='url(data:image/png;base64,'+
	    'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ'+
	    'bWFnZVJlYWR5ccllPAAAAedJREFUeNqkUr2KIkEYrNH2DxMNRG9ERGUjxWQTQTBwI4ONfYWNNzAx'+
	    'UPABDjPB2MRHMLhUEA9fYNBMTfwJFM//7eq1B91L7tiCnunu76vqmuoxarUaDMN4BfAD/4Zfp9PJ'+
	    'Op/PuF6vEJxImNVqtXW5XNQm37IJrHFwTViWhV6v93YTsvhw6CZN1ASuOT8ej9jv99jtdthsNmg0'+
	    'Gi25/yK5TxQQbJAwHA4H+v0+vF4vMpkMhsMh3G43PB4PFouF2lsul+h0Okin061ms/kueT8FrVJA'+
	    'ArlcTp3MoefaBUc+n1fufD4fD/hz70Ch3W4jHA4jm82iXq+rxmQyiWAwiHK5jG63i1AoRAfQPHE4'+
	    'HGwHpVJJnRqLxR7I4/EYLpcLxWJROYhGo5A8Q4V4s6cEZrMZ1us11R7I0+kUTqcT8/lc1ZkXOeQ+'+
	    'ODBNU9liQ6VSsfPQN0RnzEQIYTsQvCIK8DGZTBAIBBCPxzEYDNQNEEy/UCioeiKRUAKSZ/yVAW3f'+
	    'FsqNPp2i3EulUmpNh3YGdEA1NvD7mMN9HqzrXOhAz8lhTWy3W9sBQ+O4d0Dw5/rqUPI+P2E0GiES'+
	    'iQimTfXVagWdh9xXvzAHwboWlQ4Fb4Uqz36//1l+VxD/AXkrK+niNwVMfAMfAgwAkuhP6bdSG1IA'+
	    'AAAASUVORK5CYII=)';

base64変換は、[JavaScript] dataスキームURI生成(画像データのBase64変換)を使いました。

[追記: 8/29]
mixiのbetaがとれて、レイアウトが変更された影響で元のソースボタンが表示されなくなってた。
つぎのところを修正。divを一つ増やすといい。
var diaryUtility = GetXpath(“/html/body/div/div/div/div/div/ul”);

この前のPHPを入れる話の続きです。

このサーバはさくらインターネットのレンタルサーバですが、現在のところlibxml2のバージョンが2.7.2で、入力をパースするときに<>を取り除いてしまうというバグがあります。このためlibxml2を使っているphpもxml関連の処理で不具合が生じます。

あいかわらずよくわかってないことが多いのだけど、いろいろ気をつけないと/usr/localに入っているlibxml2を使ってしまうので、スクリプトを書いてしまうことにしました。

スクリプトを実行すると、カレントディレクトリにphp, libxml2, libxsltのtarボールをダウンロードして、コンパイルして、$HOME/localにインストールします。

#!/bin/sh
TOPDIR=$PWD
LIBXML2DIR=./libxml2-2.7.3
LIBXSLTDIR=./libxslt-1.1.24
PHPDIR=./php-5.2.9
PREFIX=$HOME/local

wget ftp://xmlsoft.org/libxml2/libxml2-2.7.3.tar.gz
wget ftp://xmlsoft.org/libxml2/libxslt-1.1.24.tar.gz
wget http://jp2.php.net/get/php-5.2.9.tar.gz/from/jp.php.net/mirror

tar xzf libxml2-2.7.3.tar.gz
tar xzf libxslt-1.1.24.tar.gz
tar xzf php-5.2.9.tar.gz

### libxml2 ###
cd $TOPDIR/$LIBXML2DIR
./configure --prefix=$PREFIX

make && make install

### libxslt ###
cd $TOPDIR/$LIBXSLTDIR
./configure \
  --prefix=$PREFIX \
  --with-libxml-prefix=$PREFIX \
  --with-libxml-include-prefix=$PREFIX/include \
  --with-libxml-libs-prefix=$PREFIX/lib \
  --with-libxml-src=$HOME/tmp/$LIBXML2DIR

cp -p $TOPDIR/$LIBXML2DIR/.libs/libxml2.* $TOPDIR/$LIBXSLTDIR/libexslt/

make && make install
/usr/bin/install -c ./libexslt/.libs/libexslt.so.8 $PREFIX/lib/libexslt.so.8
#/usr/bin/install -c ./libexslt/.libs/libexslt.so.8T $PREFIX/lib/libexslt.so.8

### PHP ###
cd $TOPDIR/$PHPDIR
PHP_LDFLAGS="-L$PREFIX/lib -lxml2 -lxslt -L/usr/local/mysql/5.1/lib/mysql" \
EXTRA_LDFLAGS="-L$PREFIX/lib -lxml2 -lxslt -L/usr/local/mysql/5.1/lib/mysql" \
INCLUDES="-I$PREFIX/include -I$PREFIX/include/libxslt -I$PREFIX/include/libexslt -I$PREFIX/include/libxml2" \
./configure \
--prefix=$PREFIX \
--with-config-file-path=$PREFIX/etc \
--with-pear=$PREFIX/share/pear5 \
--with-libxml-dir=$PREFIX \
--enable-force-cgi-redirect \
--enable-mbstring=all \
--enable-mbregex \
--with-pcre-dir=/usr/local \
--with-openssl=/usr \
--with-iconv=/usr/local \
--with-gd \
--with-zlib=/usr \
--with-jpeg-dir=/usr/local \
--with-png-dir=/usr/local \
--with-ttf \
--with-freetype-dir=/usr/local \
--with-mysql=/usr/local/mysql/5.1 \
--with-pdo-mysql=/usr/local/mysql/5.1 \
--enable-soap \
--with-curl \
--with-xsl=/usr/local \
--enable-dom \
--with-gettext=/usr/local \
--enable-exif

make && make install

flickrrssではまった。もlibxml2のアップデートで直ったみたい。原因は同じだったんだと、読み直して思った。

iPhoneからWordpress for iPhoneを使って投稿出来ない件をしらべてたんだけど、WordPress for iPhoneのレビューでも困っている人を発見。

なんとなく、WordPress for iPhoneの問題ではなくて、WordPress本体というか、phpか、サーバーの問題なんじゃないかという気がしてきて、WordPressやfor iPhoneのことはおいといて、調べなおしたら、でてきたのがこんな情報。

結論としては、<>が取れてしまうのはWordPress for iPhoneの問題ではなくて、使っているphpの問題。phpがリンクしているlibxml2のバージョン2.7.2にバグがあって、<>を取り去ってしまうので、2.7.3にバージョンアップしたものをphpにリンクして使えばいい、ということ。

回避策もあって、WordPressでxmlの処理前に、<>を数値参照に書き換えるというもの。
MarsEdit で WordPress に投稿したらサクサク (バグ対応済み)

とりあえず回避策もみつかったので、libxml2を2.7.3にアップデートしたphpをインストールすることにした。参考にしたのは「さくらのレンタルサーバーにPHP5を入れる(PDO対応・今さら編)」。

  1. The XML C parser and toolkit of Gnomeからlibxmlの2.7.3をダウンロードする。
  2. 適当なところに展開してconfigure, makeして、インストールする。
  3. php5.2.9のソースコードをダウンロードする。
  4. 適当なところに展開してconfigureする。
    ./configure \
    --prefix=$HOME/local \
    --with-config-file-path=$HOME/local/etc \
    --with-pear=$HOME/local/share/pear5 \
    --with-libxml-dir=$HOME/local \
    --enable-force-cgi-redirect \
    --enable-mbstring=all \
    --enable-mbregex \
    --with-pcre-dir=/usr/local \
    --with-openssl=/usr \
    --with-iconv=/usr/local \
    --with-gd \
    --with-zlib=/usr \
    --with-jpeg-dir=/usr/local \
    --with-png-dir=/usr/local \
    --with-ttf \
    --with-freetype-dir=/usr/local \
    --with-mysql=/usr/local/mysql/5.1 \
    --with-pdo-mysql=/usr/local/mysql/5.1 \
    --enable-soap \
    --with-curl \
    --with-xsl=/usr/local \
    --enable-dom \
    --with-gettext=/usr/local \
    --enable-exif
    		
  5. このままmakeすると/usr/local/lib/libxml2(バージョン2.7.2)が先にリンクされてしまって、自分でインストールした2.7.3が使われないままになる。たぶん正しい解決方法があるとおもうのだが、手順がわからなかったので余分な-lxml2をMakefileから削除したら、なぜだか2.7.3のlibxml2のリンクが先になって、たまたま問題解消。(依然として古い2.7.2もリンクされるが、順序が後になるので、参照されない)
  6. それでmakeしてインストールする。
  7. あとは参考ページのとおりcgi-binにコピーして.htaccessを設定する。

こんな感じで<>が消える問題が解決する。

おなじライブラリが複数あって、そのうちの1つを明示してリンクするにはどうしたらいいのだろうか。状況としては、

  • 自分でインストールしたxml2が$HOME/local/libに入っている。
  • /usr/local/libには、デフォルトのxml2がはいっている。
  • /usr/local/lib/libxml2.soは使わず、$HOME/local/lib/libxml2.soを使いたい。
  • /usr/local/libには、phpのコンパイルに必要なライブラリが入っている

乱暴な方法としては、phpに必要なライブラリを$HOME/localに全部入れるというのがある。しかし、それは避けたい。となると、どうしたらいいんだろうなぁ。

どうだ?

写真を貼れるかな。
近所の公園。

width=300

追記
Wordpress for iPhoneでpostしたら、みごとにタグの<>が飛んだ。pcから再編集。

手書きというか指定フォントで書いた文字をイメージに変換してくれるプラグインをみつけたのでためしてみる。
こんなかんじか?
どんなもんだろ。

http://wppluginsj.sourceforge.jp/wp-tegaki/

設定してもさっぱり表示されない。phpがまだわかってないので、ひたらすらdebug printいれて、追いかけた。
結局fetch_rss()で取ってきたデータがおかしな(<>が抜けたhtml)になっていて、regexで拾えなかったのが原因。
で、気を取り直してさがしたら、やっぱり既知の問題だった。回避策もちゃんと示されてた。
[Plugin: flickrRSS] No images with 2.7

いくつかテーマをみてみたけど、デフォルトのテーマが無難だ。

高機能なやつは、さっぱり理解できないというのもあったが。

もうすこしWordPressが理解できたら、またテーマを探しをしてみよう。