| Main | BACK >> |
2008-07-11 Fri
諸事情でPHPからPostgreSQLのシーケンスを操作をすることに
端折って書きますと、
@pg_query($con, 'begin');
// いろいろな処理
// シーケンスの操作
@pg_query($con, "select setval('nantara_table_seq', (select max(id) from nantara_table))");
というようなことをしたわけですけど、
この後ロールバックしようと思ってもできません。
(commitしてないのに、値が変わってしまう)
よくよく調べたら
いずれにしてもsetval演算は決してロールバックしません。
だそうです。これで2時間悩みました。
同じ境遇の人のために書いておこう。
でも、シーケンス直接いじるなんて、あんまりしないのかも。
ここのページによりますと、create table などの処理もロールバックできないみたいですね。
2008-06-27 Fri
会社の隣の席の人の影響で、早起き生活をはじめました。

私が起きた時間をグラフ表示するだけ。左のペインの下のほうに設置しました。
だからなんだ?という感じですが、
公開することで早起きに対するモチベーションを高めようという狙いです。
携帯でメール送信して記録できれば最高なんですけど、そういう機能は見当たらないですね。
ともあれ、みなさんもお試しあれ。
早起き生活 [link]
2008-06-25 Wed
先日インストールしたMobaSiF。インストールしただけでは面白くないので、サンプルコードをインストールして遊んでみました。サンプルコードはこちらのExcelファイル(外部リンク)をご参照ください。
サンプルコードをインストールすると、どこかでみたことあるようなミニコミュニティサイトが動きます。会員登録をして日記を書くぐらいしかできませんが、ソースコードを見るといろいろなことが分かって面白いですね。
で、このサンプルコードを少し触ってみたいと思います。
トップページの一番下にFAQってありますよね。この下に「お問い合わせ」という項目をつくって、新しく作成した静的ページにリンクを張ってみます。
まず、FAQがどうなっているのか見てみます。http://localhost/ がトップページだとすると、このFAQのリンク先は、 http://localhost/faq/ になっています。
実際に、このページのHTMLファイルは template/_html/faq/index.html にあります。
なるほど。では、template/_html/faq/toiawase.html をつくればいいのかな。
ということで、同じディレクトリにある index.html を参考に toiawase.htmlを作成します。
<html>
<head><title>$CON:title$</title></head>
<body $STY:attr-body$>
$INC:header:title=問い合わせ$
$INC:small$
お問い合わせはこちらまで!
電話:0120-123-456
E-Mail:toiawase@domain.com
$INC:/small$
$INC:footer$
</body>
</html>
できた!
これで、http://localhost/faq/toiawase.html にアクセスしてみよう!
・・・・だめ。これだけではダメなんですね。ドキュメントをよく読みましたらテンプレートをコンパイルする必要があるらしい。
コンパイラは script/tool/compile_template にあるようです。
# cd script/tool
# ./compile_template
/_html/faq/toiawase(d)
/_html/faq/toiawase(a)
/_html/faq/toiawase(v)
なんだかコンパイルしてるっぽい。
これで、http://localhost/faq/toiawase.html にアクセス。
これで、表示された。
あとは、トップページからリンクを張ればオッケイですね。
トップページのテンプレートは template/_system/top/top.html にあるので、適当な場所にリンクを追加。
問い合わせ
で、先ほど同様にテンプレートをコンパイルする
# ./compile_template
/_system/top/top(d)
/_system/top/top(a)
/_system/top/top(v)
おー、できた。できた。コンパイラは修正があったファイルを自動的に認識してくれるみたい。
・・・というわけで、読んでいる人にはなにがなんだかな文章ですが、静的ページの作成方法をまとめると・・・
(1) template/_html/ 内にページを作成する
(2) テンプレートをコンパイルする(script/tool/compile_templateを実行)
ということですね。この静的ページですが、カスタマイズすれば静的ページにも、ニックネームを表示させたりできるっぽいですね。(この時点で静的とは言えないですが) そのあたりはまた今度書いてみたいと思います。
追記:上記のHTMLのソース aタグが効いてますね。&gt;とか書いてもダメ。面倒くさいので直しません。すみません。
2008-06-18 Wed
速い速いと噂のFirefox3を早速インストール。
今まで「速い」と言われても、実際に体感するということは少なかったが、今回もアレでしょ。あんまり大きいこと言っちゃ・・・
・・・速え。
今までのアレはなんだったんだというぐらい速い。
今回は、本当速いと思いました。gmailとか速いよ。
重いといってる人もいる?そんなことは知らない。僕のマシンで速いからいいや。
もうしばらく他には戻れないです。
2008-06-17 Tue
既存のEUC_JPで作成されたDBをUTF-8に移行する作業のメモ書き。
1. pg_dumpでデータを全部吐き出す。
# pg_dumpall > db.out
2. 吐き出したデータをUTF-8に変換
# nkf -w --overwrite db.out
3. データ中、EUC_JP の箇所は全部 UNICODE に
# sed -e "s/EUC_JP/UNICODE/g" db.out > db.out.2
4. Postmaster停止(環境によって方法は違います)
# pg_ctl stop
5. データディレクトリ消去(一応残しとくけど)して、新規作成しなおす
# mv /var/lib/pgsql/data /var/lib/pgsql/data.old
# mkdir /var/lib/pgsql/data
6. DB初期化
# initdb -D /var/lib/pgsql/data
※後ろに -E UNICODE とつけるのもよし
7. リストア
# psql -f db.out2 template1
8. postmaster再起動
# pg_ctl start
で、psql でデータベースの中身を見ようとすると怒られちゃう。
ERROR: 符号化方式"UTF8"で無効なバイトシーケンスです: 0xa5
HINT: This error can also happen if the byte sequence does not match
the encoding expected by the server, which is controlled by "client_encoding".
はうー。はまった。
・・・と思いましたが、このページがあって助かった!幸せになれました。
# export PGCLIENTENCODING=EUC-JP
# psql -U [DB名]
これで無事に移行できた感じです。
2008-06-16 Mon
体調を崩して会社を欠勤。
家で静かにしていたら、一通メールが。
おー、そうだった。今日はとある会合(キリスト教系)だった。
欠席の連絡を入れると、Skypeで参加できないかという話に。
ちょうどSkype会議をしようという話をしていたっけ。その実験か。
しかし、病人に向かってSkypeを使ってでも会議に出ろとはクリスチャンとは思えん厳しさだわ。
時間になり、Skypeにつなぐ。おー、よく聞こえる。聞こえる。
「まるやまさん、席真ん中ですよ」
「まるやまさん、何飲みます?」
飲めるか!
「まるやまさん、今犬鳴きました?」
いや、うち犬飼ってないし。
「まるやまさん、「はい」は一回でいいよ」
顔が見えねえから、不安になって、つい「はいはいはい」っていっちゃうんだよー。
・・・会議は順調に進む。で、クリスチャンの集まる会議なので最後にお祈りするわけである。
こういうときは誰かが代表でお祈りするのね。はい、お祈りして終わろうよ。なんかSkypeで会議って結構疲れるよね。
「まるやまさん、お祈りお願いします」
は?
「まるやまさん、お祈りお願いします!」
・・・
まさか、お祈りまでさせられるとは思わんかった。
いじめだ。いじめ。
2008-06-15 Sun
とあるサイトの地図部分にGoogle Maps API を使うことに。
Firefoxで開発して、「できましたー」と報告したら、IE6でエラーらしい。IE6...!(泣)
div タグや table タグで地図部分を囲むと良くないという記事を見つけて、囲んであるタグを全部はずしてみた。・・・が、エラー。
どこでエラーが出ているか確認するために、スクリプトをどんどん削っていく。
で、ついに
map = new GMap2(document.getElementById("map"));
の一行しか残らなくなった。でもエラー。
は?
そして、ふと、この一行を
var map = new GMap2(document.getElementById("map"));
としたら、動いた。varがなかっただけ。なんだよ!
私はmap変数を複数の関数間で受け渡しするのが面倒くさいのでグローバルに使おうと思ってvarをはずしてました。
そして、グローバルに使う変数は関数の外側で宣言するようにしてみました。
var map;
var geocoder;
function load() {
map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(35.658517, 139.745493), 15);
map.addControl(new GLargeMapControl());
geocoder = new GClientGeocoder();
// 以下(ry
}
動いた!
地図を表示するページの文字コードがUTF8じゃないと駄目という記事がありますが、今のところは
<script src="http://maps.google.com/maps?file=api&v=2&key=hogehoge" type="text/javascript" charset="utf-8"></script>
とscriptタグに文字コードをutf-8で指定してやれば、シフトJISでもオッケイ。divタグで地図部分囲んでますが、問題なく動いています。
文字コードが政治的な事情で(笑)、UTF8にできないという方はお試しください。
これでも動作が不安定になったら、iframeとかつかわざるを得ないのかなぁ。
