Nucleusでつくる!最強のブログサイト
2007-04-25-2: [Books]

http://www.amazon.co.jp/o/ASIN/4881665707/todaysnonsenc-22/ref=nosim/
Nucleus CMS Japanチーム (著)
ソーテック社
ISBN: 4881665707
2007/04
3,360 円
Nucleus の解説本.
Nucleus に関する書籍ははじめてかも.
2007-04-25-2: [Books]

http://www.amazon.co.jp/o/ASIN/4881665707/todaysnonsenc-22/ref=nosim/
Nucleus CMS Japanチーム (著)
ソーテック社
ISBN: 4881665707
2007/04
3,360 円
Nucleus の解説本.
Nucleus に関する書籍ははじめてかも.
Solaris 10 に MeCab と Senna と MySQL をインストールする …… 失敗 の続きです.
MySQL 4.1.22 用の Tritonn パッチがリリースされたので,テストです.
- mir the tritonn - MySQL 4.1対応版リリース
http://d.hatena.ne.jp/mir/20070412/p1
前回も少し書いたのですが,Senna の MySQL パディングは Tritonn という別プロジェクトになっています.
当初は,MySQL 5.0.x 用のパッチのみの提供でしたが,今回 MySQL 4.1.22 用のパッチがリリースされました.
まず,MeCab,Senna 本体のインストールをします.インストールは [2007-03-24-1] と同じです.
Senna は 1.0.4 にバージョンアップして,Solaris 10 では UINT_MAX の未定義のエラーは出なくなっています.
次に,Tritonn パッチをダウンロードして,MySQL にパッチを当てます.
- SourceForge.jp: Project File List
http://sourceforge.jp/projects/tritonn/files/
$ tar -zxvf tritonn-1.0.2.mysql-4.1.22.senna-1.0.4.tar.gz
$ tar -zxvf mysql-4.1.22.tar.gz
$ cd mysql-4.1.22
$ patch -p1 < ../tritonn-1.0.2.mysql-4.1.22.senna-1.0.4/mysql-4.1.22.senna.diff
configure を再生成します.
$ libtoolize -c -f
$ aclocal
$ autoheader
$ automake -c -a -i
$ autoconf
$ touch sql/sql_yacc.yy
次に configure をします.
configure の際には,--with-senna と --with-mecab をオプションに追加します.
$ ./configure --prefix=/usr/local/mysql \
--with-extra-charsets=all \
--without-readline \
--enable-assembler \
--with-low-memory \
--with-senna=/usr/local/senna \
--with-mecab=/usr/local/mecab/0.9
$ make
うーむ.[2007-03-24-1] と同じエラーでした.
sql_yacc.cc: In function `int yyparse(void*)':
sql_yacc.cc:22059: error: expected primary-expression before "__attribute__"
sql_yacc.cc:22059: error: expected `;' before "__attribute__"
make[4]: *** [sql_yacc.o] Error 1
- ちなみに MySQL 5.0.37 では
まったく問題なく行きました!
$ mysql -uroot -p test
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.37-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE TABLE t1 (c1 TEXT, FULLTEXT INDEX ft USING NGRAM (c1)) ENGINE = MyISAM DEFAULT CHARSET ujis;
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO t1 VALUES ("すもももももももものうち");
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO t1 VALUES ("生麦生米生卵");
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO t1 VALUES ("東京特許許可局");
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM t1 WHERE MATCH(c1) AGAINST("特許");
+----------------+
| c1 |
+----------------+
| 東京特許許可局 |
+----------------+
1 row in set (0.00 sec)
ということで,MySQL 5.0.37 で使っています.検索は想像以上に高速です.
また,折をみて,MySQL 4.1.22 用は試してみたいと思います.
2007-04-08-1: [Subversion]
サーバ側の都合で Subversion のリポジトリの場所を変更した場合,その作業コピーでは元の URL にアクセスできなくなります.
例えば,リポジトリを file:///repos から file:///new-repos に移動した場合,以下のようなエラーになります.
svn: No repository found in 'file:///repos'
これを解決するには,新しい作業コピーをチェックアウトしてもいいのですが,svn switch を使って,URL を書き換えてしまう方法もあります.
svn switch --relocate file:///repos file:///new-repos
これは file:///repos から file:///new-repos に URL を書き換えるということになります.
svn:// や svn+ssh:// の場合もこれでいけます.
- svn switch
http://subversion.bluegate.org/doc/re28.html
- 追記
ブランチのように同じリポジトリ内の異なるパスに再配置しようとすると,以下のようにエラーが出ます.
Relocate can only change the repository part of an URL
relocate は、URL のリポジトリ部分しか変更できません
この場合は,--relocate をつけずに単なるパスの切り替えだけでできます.
svn switch file:///repos/branches/foo .
- 追記 (2009-10-30)
TortoiseSVN の場合は、単に「再配置」を行えば OK です。
そもそもですが,CakePHP は MySQL 4.0 以上が対象らしいです.
ただ,公式のドキュメントは見つかっていませんが……
それでも,MySQL 3.23 な環境で CakePHP を使って,なおかつ hasAndBelongsToMany も使いたい場合の対処法です.
MySQL 3.23 な環境では,hasAndBelongsToMany を使うとき,SQL のエラーが出ます.具体的には JOIN に失敗しています.
このとき CakePHP は以下のような SQL 文を発行します.
SELECT `Tag`.`id`, `Tag`.`tag`
FROM `tags` AS `Tag`
JOIN `posts_tags` ON `posts_tags`.`post_id` = '2'
AND `posts_tags`.`tag_id` = `Tag`.`id`
WHERE 1 = 1
MySQL のリファレンスにあるように,JOIN は MySQL 4.0.11 以降で対応なので,この JOIN を INNER JOIN にしてあげればいいわけです.
- ref.: MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.4.1.1 JOIN 構文
http://dev.mysql.com/doc/refman/4.1/ja/join.html
注意:INNER JOIN 構文で join_condition を使用できるのは、MySQL 3.23.17 以降に限られます。同様に、JOIN と CROSS JOIN に関しても、MySQL 4.0.11 以降でのみ条件を指定できます。
ちょうど昨日 CakePHP の最新版 (1.1.14.4797) がリリースされたので,この最新版と,その前のバージョン (1.1.13.4450) での修正箇所を挙げておきます.
- 1.1.14.4797 の場合
cake/libs/model/datasources/dbo_source.php の 1051 行目を修正します.
--- cake_1.1.14.4797-orig/cake/libs/model/datasources/dbo_source.php 2007-04-06 04:21:05.000000000 +0900
+++ cake_1.1.14.4797/cake/libs/model/datasources/dbo_source.php 2007-04-06 08:46:09.015389000 +0900
@@ -1048,6 +1048,7 @@
'joins' => array(array(
'table' => $joinTbl,
'alias' => $joinAssoc,
+ 'type' => 'INNER',
'conditions' => array(
array("{$joinAlias}.{$assocData['foreignKey']}" => '{$__cakeID__$}'),
array("{$joinAlias}.{$assocData['associationForeignKey']}" => '{$__cakeIdentifier['."{$alias}.{$linkModel->primaryKey}".']__$}')
- 1.1.13.4450 の場合
cake/libs/model/datasources/dbo_source.php の 1043 行目を修正します.
--- cake_1.1.13.4450-orig/cake/libs/model/datasources/dbo_source.php 2007-02-03 11:55:49.000000000 +0900
+++ cake_1.1.13.4450/cake/libs/model/datasources/dbo_source.php 2007-04-06 09:13:16.018886000 +0900
@@ -1040,7 +1040,7 @@
}
$sql .= ' ' . join(', ', am($this->fields($linkModel, $alias, $assocData['fields']), $joinFields));
$sql .= ' FROM ' . $this->fullTableName($linkModel) . ' ' . $this->alias . $this->name($alias);
- $sql .= ' JOIN ' . $joinTbl;
+ $sql .= ' INNER JOIN ' . $joinTbl;
$joinAssoc = $joinTbl;
上記の修正はあくまで,hasAndBelongsToMany を使いたい場合で,そのほかの項目はあまりテストしていませんのでご注意を.
可能であれば,MySQL 4.0.x にアップデートするのが一番だと思います.
2007-04-06-1
- [O] ConsolasフォントとモトヤシーダフォントをFontLinkして使う
http://overlasting.dyndns.org/2006-11-07-3.html
この記事を見て,モトヤシーダを試してみたのですが,いまいちフォントが薄い(?)ような気がして落ち着きません.
そこで,「M+ と IPA フォントの合成フォント」である M+2VM+IPAG circle を FontLink してみました.
- Consolas Font Pack for Microsoft Visual Studio 2005
http://www.microsoft.com/downloads/details.aspx?familyid=22e69ae4-7e40-480 ...
一応,正式には Visual Studio 2005 がインストールされていないと Consolas フォントはインストールできないようです.
- M+ と IPAフォントの合成フォント : ダウンロード
http://mix-mplus-ipa.sourceforge.jp/download.html
どのフォントを選ぶかは好みですが,M+2VM+IPAG-circle.ttf を選びました.
レジストリエディタで
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink
の Consolas を
M+2VM+IPAG-circle.ttf,M+2VM+IPAG circle
に変更します.もし,Consolas が無かったら,右クリックして [新規] - [文字列値] か [複数行文字列値] を作成します.
あとは,コンピュータを再起動すれば完了です.
# レジストリをいじるので,自己責任でお願いします.
- スクリーンショット
こんな感じになりました (クリックすると大きくなります).

2007-04-01-2: [Books]

http://www.amazon.co.jp/o/ASIN/4774130729/todaysnonsenc-22/ref=nosim/
WEB+DB PRESS 編集部
技術評論社
ISBN: 4774130729
2007/3/30
1,974 円
本屋に行ったらあったので,早速購入してみました.
これは,かなりいいです.
創刊から 36 号までの全ての記事が PDF で収録されています.
各号の目次は PDF にありますし,誌面にもカラーで一覧があります.
収録された PDF は印刷可,内容抽出可なので,Google Desktop などのデスクトップ検索アプリケーションでも検索することができます.大変太っ腹なことです.
そして,PDF が 収録された CD-ROM のみではなくて,いくつかの書き下ろしの記事があるのもポイントが高いです.
これは,買いですよ.
2007-04-01-1: [MySQL]
オープンソースの DB モデリングツール DB Designer にバンドルされている HTMLReport を少し改造してみました.
改造前の HTMLReport は,出力される HTML ファイルのモデル名が,以下のように強制的に「plugin_tmp.xml」という文字列になります.

本来ここは,[オプション] - [一般設定] - [モデル名] で指定した文字が入るのが妥当だと思います.
また,[オプション] - [一般設定] - [コメント] で入力したコメントがどこにも反映されません.
HTML レポートを出力するたびに,モデル名を書き換えて,さらにコメントを加えるのは大変面倒なので,きちんとモデル名が反映されて,コメントも出力できるように改造してみました.
改造対象は,日本語化された DB Designer で,ソースコードは日本語化サイトからダウンロードすることができます.
- DBDesigner 4 日本語化サイト
http://dbdesigner.iimp.jp/
- パッチ
http://pocari.org/tools/DBDesigner/HTMLReport.diff
--- HTMLReport-orig/Main.pas 2003-09-20 17:10:14.000000000 +0900
+++ HTMLReport/Main.pas 2007-03-31 14:26:59.000000000 +0900
@@ -504,7 +504,10 @@
try
aReportFile.LoadFromFile(theFilePath+'ReportHeader.txt');
theReport:=DMMain.ReplaceText(aReportFile.Text,
- '<?=$Modelname?>', 'Database Model '+ExtractFileName(EERModel.ModelFilename));
+ '<?=$Modelname?>', EERModel.GetModelName);
+
+ theReport:=DMMain.ReplaceText(theReport,
+ '<?=$ModelComments?>', EERModel.ModelComments);
aReportFile.LoadFromFile(theFilePath+'Report.css');
- パッチを当てたバイナリ (Windows 版)
http://pocari.org/tools/DBDesigner/DBDplugin_HTMLReport.zip
(パッチを当てたバイナリは,DB Designer がインストールされたフォルダに上書きコピーしてください.)
このパッチを適用すると以下のように,モデル名,コメントが反映されるようになります.
テンプレート変数 $Modelname にモデル名が割り当てられて,$ModelComments にコメントが割り当てられます.

また,標準で付いているテンプレートを日本語化したファイルも以下に置いておきます.
DBDesigner\Data\Plugins\HTMLReport 以下にディレクトリごとコピーしてください.
- テンプレートの日本語化
http://pocari.org/tools/DBDesigner/Standard-ja.zip
ライセンスは,オリジナルと同じ GPL です.