2008年02月29日(金)
PHPのフレームワークを自分用メモ。 以下、主なPHPのフレームワーク。
- Symfony
- Zend Framework
- CakePHP
- http://cakephp.org/
- PHP4 / 5 (5対応というより、5でもエラーが出ないという感じで、プログラム自体が5でかかれている訳ではない。)
- The MIT License
- ケーキ(Cake)を焼けたり(bake)、名前の付け方がちょっとおもしろい。
- ちょっとしたWEBアプリを作るにはよさげ。
- Ethna
- Piece Framework
以下、現在はたぶん開発が停止している。
- Maple (和製。DIコンテナとか)
- Mojavi (一時期流行った。ダミーのホームページが復活してるみたい・・リンク押せないけど http://www.mojavi.org/)
- Agavi (Mojaviの派生。Railsとは違った方向に進んでたが)
2008年02月27日(水)
使える状況は限られますが、関連テーブルの値を利用してフィールドをアップデートする方法です。
※ MySQL バージョン 4.0.4以降でのみ有効な方法です。
「tbl」と[ref_tbl」の2つのテーブルが存在するとします。
-
CREATE TABLE `tbl` (
-
`tbl_id` int(11) NOT NULL AUTO_INCREMENT,
-
`subject` text,
-
`body` text,
-
`description` text,
-
PRIMARY KEY (`tbl_id`)
-
);
-
-
CREATE TABLE `ref_tbl` (
-
`ref_tbl_id` int(11) NOT NULL AUTO_INCREMENT,
-
`tbl_id` int(11) DEFAULT NULL,
-
`ref_value` text,
-
PRIMARY KEY (`ref_tbl_id`)
-
);
tblテーブルのdescriptionカラムに、ref_tblテーブルのref_valueカラムの値を追加する例です。
-
UPDATE tbl,ref_tbl SET tbl.description = concat(tbl.description,‘ ‘,ref_tbl.ref_value) WHERE tbl.tbl_id = ref_tbl.tbl_id;
2008年02月17日(日)
GoogleMapsAPIで、地図上にAjaxで動的なマーカーを表示する場合、
地図を移動したらマーカーを再度よみこみ直す処理をつくってみました。
が、マーカーにクリックイベントをつけて吹き出しを表示するようにすると、
場所によっては吹き出しを表示するときに地図が移動するので、
移動し終わった時にマーカーが再読込されて、吹き出しが消えてしまう問題が。
他にもいい方法がありそうですが、とりあえずremoveListenerで一時的にリスナーを消して、
無理矢理問題解決してみました。
※追記:残念ながら、不具合があります。
removeListener部分を実装する前。
修正後。
一見同じですが、
秋田辺りにあるマーカーをクリックすると違いがわかると思います。
そのソースコードの抜粋。
実際の例は、
このページを参照してください。
12行目。addListener時に、消すリスナーを保持しておくために、
reloadMarkerEventで返値を受けておきます。
-
var reloadMarkerEvent;
-
function load() {
-
if (GBrowserIsCompatible()) {
-
map = new GMap2(document.getElementById("map"));
-
map.addControl(new GLargeMapControl());
-
map.addControl(
-
new GMapTypeControl(),
-
new GControlPosition(G_ANCHOR_TOP_RIGHT,
-
new GSize(10,10)));
-
map.setCenter(new GLatLng(36.705663020513555, 137.76159691810608), 5);
-
displayMark(map);
-
reloadMarkerEvent = GEvent.addListener(map, "moveend", reloadMark);
-
}
-
}
5~10行目。openInfoWindowHtmlの前にいったんリスナーを消してます。
openInfoWindowHtmlの後に、移動が終わったら再度Listenerを追加するようにしてます。
-
function addMarker( map, p, text ) {
-
var marker = new GMarker(p);
-
var wattingEvent;
-
GEvent.addListener( marker, "click", function() {
-
GEvent.removeListener(reloadMarkerEvent);
-
marker.openInfoWindowHtml(text);
-
var wattingEvent = GEvent.addListener(map, "moveend", function() {
-
reloadMarkerEvent = GEvent.addListener(map, "moveend", reloadMark);
-
GEvent.removeListener(wattingEvent);
-
});
-
-
});
-
map.addOverlay(marker);
-
return marker;
-
}
2008年02月13日(水)
普通なかなかiノードが制限超えること無いと思いますが、
毎日、毎時、小さいファイルを大量に吐き出したりするシステムだと、
知らぬまにひどくiノードが増えてるかも・・・。
例)
-
# df -ih
-
Filesystem Iノード I使用 I残り I使用% マウント位置
-
/dev/hda1 1.3M 176K 1.1M 15% /
-
/dev/hda4 6.9M 1.9K 6.9M 1% /home
-
none 55K 1 55K 1% /dev/shm
-
/dev/hda2 1003K 40K 963K 4% /var
2008年02月13日(水)
各ファイルシステム(パーティション~の使用量(空容量)を確認するためのコマンド。
※大抵mオプションは不要だと思います。
例)
-
# df -mh
-
Filesystem サイズ 使用 残り 使用% マウント位置
-
/dev/hda1 9.7G 3.7G 5.5G 41% /
-
/dev/hda3 55G 10M 45G 18% /home
-
none 218M 0 218M 0% /dev/shm
-
/dev/hda2 7.7G 976M 6.4G 14% /var
ぼーっとMySQLをインストールして、
varの下にデータを置く設定なんかにしてると、
(大量の)初期データインポート中に容量いっぱいになって怒られてしまいます・・・。
muninとかcactiを仕掛けて監視してても気分で打ってしまうコマンド。