2009/03/11(水)箱根湯元・東京電力山崎発電所・早川取水関堰(らしい)

先日箱根に行ってきたわけですが、興味深いものをいくつか見かけました。で、その話のうちのひとつ。

今回宿は箱根湯本に取りました。駅から川に並行して走る国道一号線を上流に向かって歩いてゆくと、土木遺産旭橋というのがあり、この先に目指す宿があります。
しかしさすがは国道一号線、横断歩道がありません。
うっかり道の反対側を歩いていたら道路を横断できず、目の前に見えている宿にたどり着けません。仕方がなく、道路を横断できるところを探してそのまま道沿いに行過ぎてみたところ、突然目の前に妙な施設が現れました。
東京電力山崎発電所

あれ、こんなところラバーダムが。

続きを読む

2009/03/10(火)Apache httpdのセクション評価順

Apache httpdの設定を行うときに、を書くことは非常に多いと思いますが、これらの優先順位はどうなっているのか、という話。

まずはドキュメントを当たってみる。
セクションのマージ方法
マージの順番は以下のようになっています:
1. <Directory> (正規表現無し) と .htaccess を同時に (.htaccess が許可されていれば、それが <Directory> を上書きします) 
2. <DirectoryMatch> (と <Directory ~> 
3. <Files> と <FilesMatch> を同時に 
4. <Location> と <LocationMatch> を同時に 
(中略)
後のセクションのディレクティブが前のセクションのものを上書きします。
さて、これを裏付けるはずのソースコードですが...正直よくわかりません。

http://example.jp/ そのものと
http://example.jp/ 以下のコンテンツ
これらに違う設定を与えたい場合は
<LocationMatch ^/$>
  hogehoge
</LocationMatch>
<Location />
  fugafuga
</Location>
と書けば良いような気がするんですが...思ったようには動いてくれませんねぇ...

2009/03/04(水)mysqlで自動更新されるtimestampをあえて更新しない

世間でも言われていますが、mysqlのtimestamp型はいろいろバッドノウハウの固まりではないかと思います。
最近はできるだけdatetime型にするようにしているのですが、すでにtimestamp型依存で動いているコードがある場合、alter tableするのも難しかったりします。

10.3.1. DATETIME、DATE、そして TIMESTAMP タイプ10.3.1.1. TIMESTAMP MySQL 4.1での性質 (いずれもMySQLマニュアル)にも諸々書いてありますが、気になるポイントは以下のあたり。
  • 各テーブルの最初に現れるtimestamp型カラムは、明示的に更新をしていないとUPDATE, REPLACEで現在時刻に自動更新される
  • 各テーブルの二つ目以降のtimestamp型カラムは自動更新されない
  • 扱える期間が1970年~2037年である (datetime型は1000年~9999年)
特に自動更新関係は、気がつかないうちにデータが書き換わってしまったり、思ったように書き換わらないことがあるので妙なバグを発生させやすいように思います。

で、今回はそんなtimestamp型で「自動更新されるはずのカラムをあえて更新しないでレコードをUPDATEする」方法について、少々。

続きを読む