おのたく日記 YouTubeも始めました→
2011-06-15(Wed) [長年日記]
■ [Scuttle] バージョンアップ
Scuttleがいつのまにかgithub.com移っていて、バージョン0.7.4から0.9.0に上がっていた。
期間は空いたたけど、tables.sqlは変わっていないので、データベーススキーマがそのままなので簡単そうなので、2007年3月19日以来のバージョンアップを行った。
まずは、データが壊れると怖いので、データのバックアップをする。ついでにmysql 4.1の頃から使っているデータなので中身がutf8されていないのでutf-8化も行った。
バックアップはlatin1で取り出す。
$ mysqldump --user=www-data --default-character-set=latin1 scuttle >scuttle-20110614.0.7.4.sql
これをutf-8にコンバートするために「|nkf -w -Z -x -I」なんてもやってみたけど、utf-8の最後のバイトが尻切れになっていまっているフィールドなどがあり、データはメロメロだったので、いちどemacsで開いて
/*!40101 SET NAMES utf8 */;
にするとともに、emacsで保存するときの警告を元に手動で尻切れのデータの余分なバイトを消去した。
$ mysql --user=www-data --default-character-set=utf8 scuttle <scuttle-20110614.0.7.4.sql
でリストアして、データをutf-8にした。これで今後は文字の尻切れがなくなるはず。
次は、scuttleプログラムのバージョンアップ、以前はsubversionだったけどgitに変わっているので新しく取り出すことにした。
# mv /var/www/scuttle /var/www/scuttle.old
# mkdir /var/www/scuttle
# chown oyo.oyo /var/www/scuttle
$ cd /var/www
$ git clone https://github.com/scronide/scuttle.git
$ cd scuttle
$ chgrp www-data cache
$ chmod g+w cache
$ cp -p config.php.example config.php
$ vi config.php
として、config.phpは
$dbtype = 'mysql4';
$locale = 'ja_JP';
$shortdate = 'Y-m-d';
$longdate = 'Y F j';
$nofollow = FALSE;
$defaultPerPage = 25;
$cleanurls = TRUE;
$usecache = TRUE;
あたりを変えた。
リモートからの登録を拒否するために2009年2月26日の日記のように、
RewriteRule ^register.php /scuttle/ [L,P]
[.htaccessより引用]
を加えた。 ※バージョン0.9.0だと[P]をつけないと変なエラーになるのはなぜ?
これで完成だと思って、Webを開いてみると、ブックマークの内容が文字化けしていた。「Changes for correct utf-8 support (e.g. german umlauts) - ID: 2215940」を参考に、
diff --git a/includes/db/mysql4.php b/includes/db/mysql4.php
index 0639518..2dccb1d 100644
--- a/includes/db/mysql4.php
+++ b/includes/db/mysql4.php
@@ -44,6 +44,8 @@ class sql_db
{
if (@mysql_select_db($this->dbname))
{
+ #for db utf8
+ mysql_query('SET CHARACTER SET utf8', $this->db_
connect_id);
return $this->db_connect_id;
}
}
とDB接続のエンコーディングをutf8にしたら、ajaxGetTitle.phpの方は手を入れなくても、ちゃんと登録できて表示されるようになったので完成とする。
git化してあるので、今後は $ git pull --rebase でバージョンアップできるはず…
|