Tracインストール

7 月 16th, 2008

■インストール
yum install python-setuptools
easy_install genshi
easy_install Trac
yum search pysqlite
yum search clearsilver

■セットアップ、起動
trac-admin /home/www/hoge/ initenv
htpasswd -c .htpasswd username1
htpasswd .htpasswd username2
tracd -d –port=8000 –basic-auth=hoge,/home/www/hoge/.htpasswd,/home/www/hoge /home/www/hoge


成都での協力会社探し

7 月 9th, 2008

成都の現地企業で、仕事をお願いできるところがいくつか見つかりました。

あとは、スケジュール管理ツールやコーディング規約チェックツールを使って効率よく管理できるようにできればいいと思っています。

trac

http://pear.php.net/package/PHP_CodeSniffer

あたりの導入を考えています。

中国でオフショア開発の協力会社探し中

7 月 1st, 2008

6/29から中国に来ています。昨日、早速某大手システム開発会社の現地社員と打ち合わせをして、週末に現地企業を紹介してもらえることになりました。

中国では、日本やアメリカからのオフショア開発が多いせいか、javaや.netの技術者は多いのですが、PHPなどのもう少し規模が小さい仕事でよく使う技術を持った開発者が少ないです。

PHPができない、というだけなら勉強すればすぐできるようになるとは思うのですが、プログラマ的な仕事が多いので、広い知識を生かして、様々な問題を解決していけるようなオールマイティな人が少ないように思います。

ですが、時々高い技術力を持った人もいるので根気強く良いパートナーを探したいと思います。

ZOO KEEPER

6 月 21st, 2008

ここでできちゃいます。

avgでリンクスキャナーを外す

6 月 20th, 2008

avgrsx.exeが重いので調べたら、リンクスキャナーを外せばいいらしい。
http://free.grisoft.com/ww.faq.num-1338#faq_1338
それには、リンクスキャナーを外して再インストールが必要。

インストール用のexeを用意して、以下のオプションをつけて実行すればいい。
C:\>avg_free_stf_all_8_100a1295.exe /REMOVE_FEATURE fea_AVG_SafeSurf /REMOVE_FEATURE fea_AVG_SafeSearch

中国語コーパス

6 月 20th, 2008

http://we.fl.kansai-u.ac.jp/corpus.html
http://china.fl.kansai-u.ac.jp/
”このコーパスについては、非営利を目的とした教育、学習であれば、利用は自由とさせていただきます。 ぜひ教育や研究にご利用下さい。”
だそうなので、個人的な利用は問題ないようです。

さくらインターネットでMySQLにコンソール接続

6 月 20th, 2008

mysql -u ユーザ名 -h mysql**.db.sakura.ne.jp ユーザ名 -p

firefoxでマウスジェスチャー(All-in-One Gestures)

6 月 20th, 2008

firefox3のアドオン入手サイトでは、All-in-One Gesturesをインストールすることはできませんが 作者のページに行くと、普通にインストールできます。

WordPressでsyntaxhighlighterのインデントがおかしい。。。

6 月 20th, 2008

WordPressでsyntaxhighlighterのインデントがおかしかったので
SyntaxHighlighter Plusというのを入れました。
使い方はsyntaxhighlighterと同じなので、今までの記事を修正する必要もありません。

CakePHPで論理削除

6 月 20th, 2008

app_model.phpでModelクラスをオーバーライドする。

これで、del()を呼び出すだけで、論理削除されるようになる。子テーブルなどのデータも全て論理削除される。

ただし、ある部分は論理削除、ある部分は物理削除、のような場合、別の対応を取る必要がある。

コードは以下の通り

	function del($id = null, $cascade = true) {
		if (!empty($id)) {
			$this->id = $id;
		}
		$id = $this->id;

		if ($this->exists() && $this->beforeDelete($cascade)) {
			$db =& ConnectionManager::getDataSource($this->useDbConfig);

			if (!empty($this->behaviors)) {
				$behaviors = array_keys($this->behaviors);
				$ct = count($behaviors);
				for ($i = 0; $i < $ct; $i++) {
					if ($this->behaviors[$behaviors[$i]]->beforeDelete($this, $cascade) === false) {
						return false;
					}
				}
			}
			$this->_deleteDependent($id, $cascade);
			$this->_deleteLinks($id);
			$this->id = $id;

			if (!empty($this->belongsTo)) {
				$keys = $this->find('first', array('fields', $this->__collectForeignKeys()));
			}

			$this->saveField('deleted', date('Y-m-d H:i:s'));
			$this->saveField('deletedby', $this->delUser);
			return true;

			//if ($db->delete($this)) {
			//	if (!empty($this->belongsTo)) {
			//		$this->updateCounterCache($keys[$this->alias]);
			//	}
			//	if (!empty($this->behaviors)) {
			//		for ($i = 0; $i < $ct; $i++) {
			//			$this->behaviors[$behaviors[$i]]->afterDelete($this);
			//		}
			//	}
			//	$this->afterDelete();
			//	$this->_clearCache();
			//	$this->id = false;
			//	$this->__exists = null;
			//	return true;
			//}
		}
		return false;
	}

あとはcontroller内で


	$this->ParentModel->delUser = $delUser;
	$this->ParentModel->ChildModel->delUser = $delUser;
	if ($this->ParentModel->del($id)) {

のようにdelUserをセットして、普通にdel()を呼び出せばいい。

なお、対象テーブルにはdeletedとdeletedbyカラムを用意する必要がある。

ここはdel_flgやdelete_flgなどを用意して、それに対応したソースに修正しても良いと思う。

CakePHPのバージョンは、1.2.0.6311 betaです。