いしなお!
2009-10-29 [長年日記]
_ phpmyadmin 3系とmysql 5.0系 on windows
windows(xp or vista)で、xamppのphpmyadminとmysqlを使ってruby on rails(2.3.4)からmysqlを使おうとしたら、gemでインストールしたruby(1.8.7)のmysqlドライバがmysql 5.1で使おうとすると落ちる。どうやらmysql 5.0ならOKらしい。
しょうがないんで、xamppのmysql 5.1系は削除して、mysql 5.0系を入れることにしたんだけど、ちょうどtritonnのwindowsバイナリが5.0系だったんで、それを入れることにした。
すると、phpmyadminが「show pluginsがない」というエラーを出して動かないようになってしまった。
どうやら"show plugin"だか"show plugins"だかは、mysql 5.1以降で追加されたコマンドなんだけど、phpmyadmin 3系の新しいやつはそれを問答無用で使っちゃってるんでエラーが出るらしい。
phpmyadminのソースをgrepしてみたら、"show plugins"を使っているのはlibraries/blogstreaming.lib.phpしか見あたらなかった。
どう直すのが妥当なのかよくわからないけど、どうせサポートしてない機能の情報を得ようとしているんだから、"select null"にしておいた。
副作用があるかどうかは知らん。
_ vistaでmysqldをサービス登録する
tritonnのWindowsバイナリをd:\mysqlにコピーして、
d:\mysql\bin\mysqld-net --install mysql
とかしようと思ったら、
Install/Remove of the Service Denied!
とかでてサービス登録できない。なぜかと思ったらvistaのUACのせいらしい。コマンドプロンプト自体を明示的に「管理者として実行」して、「管理者:コマンドプロンプト」から実行したら、ふつうに登録できた。
vistaのUACは、自分が管理者アカウントでログインしているときでも、こうやって明示的に「管理者として実行」しないといけないときがあるけど、その仕組みがよくわからん。
で、サービスとして登録できたから、
net start mysql
とかしたらエラーが出て止まる。イベントログを見ると
Can't find messagefile 'C:\mysql\share\english\errmsg.sys'
とか書いてあって、どうやらデフォルトでc:\mysqlを見に行っているせいらしい。コンパネのサービスからmysqlの起動オプションに
--basedir=d:/mysql
とかつけたらようやく動きだした。
コンパネから起動オプションを追加しただけだと
再起動したら起動オプションを忘れてしまうらしい。いったんmysqlサービスを終了してから、
mysqld-nt --remove mysql
してサービスを削除し、
mysqld-nt --install MySQL --basedir=d:/mysql
みたいに起動オプション付きでサービス登録した方がよさそう。
2009-03-30 なんかあんまり変わってない [長年日記]
_ tDiaryを2.1.4から2.3.1にアップデートした。文字コードがEUC-JPからUTF-8に変わったはずなのに、何も変換操作をしなくても勝手にデータもアップグレードされてくれたっぽい?
ここ1年以上、RSSリーダーもほとんど放置状態だったんだけど、いったん未読をリセットしてからちらっと回ってみた感触では、1年以上見てなかった割には、ネット界はあんまり変わっていないように見えるなー。
実際、個人でのネットの活動にあんまりおもしろみを感じなくなって、(仕事と受動的な遊び以外は)何となくネットから離れていたんだけど、ここ最近ってあんまり大きな変化って起こってないのかな?
2008-07-07 [長年日記]
_ [PHP][発言小町][熱狂小町] 熱狂小町 - 発言小町リーダー作りました
じわじわとブックマークされつつあるみたいなんで、こっちにも書いておきます。Google Codeを使ってみる実験でもあるんで、何かありましたらあちらにどうぞ。

2008-04-25 [長年日記]
_ obsoleteフラグ
blogとかの古い記事に、簡単にobsoleteフラグを付ける機能があるといいね。消しはしないけど、すでに現状に即していない記事ですよ、というのをわかりやすくするために。obsoleteフラグがついた記事は、古文書風にぼろぼろに表示される(CSSがあたる)といいのかな。
第三者からの評価として行う場合は、ソーシャルブックマークなんかでobsoleteタグを付けておいて、そのタグの数で識別する、なんてのもいいかもね。
あと、記事の掲載日時を表示するときには、単に「○○年×月△日」とだけ書くんじゃなくて、ある程度古くなったら自動的に「○○年×月△日(掲載から□年経過)」とか、その記事が古いことをわかりやすく表示するといいかもね。
っつーか、自分のところもそうだし何か調べていてググった場合もそうだけど、古い技術系の記事のobsolete度合いを簡単に識別する手段があると便利だよね。obsolete度評価専門のソーシャルブックマークとか誰かつくんね?
2008-03-12 [長年日記]
_ [PHP][Zend Framework] Zend_Db_Select::where()メソッドの$type
trunkでは、
* @param string $cond The WHERE condition.
* @param string $value OPTIONAL A single value to quote into the condition.
* @param constant $type OPTIONAL The type of the given value
* @return Zend_Db_Select This Zend_Db_Select object.
*/
public function where($cond, $value = null, $type = null)
{
if ((func_num_args() > 3) or (($type !== null) and ($type !== 0) and ($type !== 1) and ($type !== 2))) {
$value = func_get_args();
array_shift($value);
$type = null;
}
$this->_parts[self::WHERE][] = $this->_where($cond, $value, $type, true);
return $this;
}
なんて感じになっているんだけど、この「(($type !== null) and ($type !== 0) and ($type !== 1) and ($type !== 2))」ってのはどこから現れたんだ?
where()メソッドでは、
* @param constant $type OPTIONAL The type of the given value
になっているけど、ここから呼ばれている_where()メソッドでは、
* @param string $type optional
になっているし、実際PDO_MYSQLを使ったZend_Db_Tableのinfo()では、DATA_TYPEはstringで返ってくる("varchar"とか"int"とか)。
0、1、2という数値から、Zend_Db::INT_TYPE = 0、Zend_Db::BIGINT_TYPE = 1、Zend_Db::FLOAT_TYPE = 2あたりが怪しそうな気がするけど、この値ってZend_Db_Adapter_Abstract内で$_numericDataTypesとして定義されて以降、まったく使われていないし、意味的にも$typeが数値ではなかった場合に$valueを配列扱いするっていう意味がわからない。
これのせいで、trunkにしたらZend_Db_Tableのリレーション周り(findParentRow()とか)が動かなくなっちゃったんだよなー(Zend_Db_Table_Row_Abstract::findParentRow()内でZend_Db_Table_Abstract::info()で取得したDATA_TYPEをそのまま渡しているため)。自前で直そうにも、コードの意味がわからなくて直せないし。
3/13追記
昨日更新されたrevision 8783で、上記の怪しげな条件文はばっさり削除された。なんだったんだ……。
2008-03-11 [長年日記]
_ [PHP][Zend Framework] Zend_Controller_Dispatcher_Standardのtrunk 247行目
if (!$this->getParam('useDefaultControllerAlways') && !empty($controller)) {
は
if (!$this->getParam('useDefaultControllerAlways') && empty($controller)) {
のような気がするんだけど、いい花粉が飛んでいて頭がぼーっとするせいで、いまいち自分の判断が信用できない。ここは、useDefaultControllerAlwaysが無効な場合は、コントローラ名が解決できない→例外を発生させる処理だよな。
_ w [熱狂小町、使わせていただいてます。 とても便利です! 以下、もしバグフィックスの参考になれば・・・。 投稿者の名前..]
_ ishinao [>w様 Revision 9で修正しておきました。アーカイブにはそのうち反映させます。]
_ w [早速のお返事、ありがとうございます!]