今日の振り返り

仕事のこと

今日は全然だめだった。作業がまるっきりはかどらなくて悲しかった。
テンプレートエンジンのinclude機能を多用しているテンプレートに手を入れたけど、
やっぱりincludeし過ぎはテンプレートを書いた本人以外にはわけがわからない。

何でもかんでも1箇所に記述するのも良くないけど、細かく分けすぎるのも悪だと思う。
今日のはまさに細かく分けすぎて失敗しているって感じだった。

でも、明日と金曜日でいまやろうとしている改修はできるんじゃないかなって楽観的に思えた。
僕っていつも悲観的だから、こう思えるっていいことだよね。

学んだこと

vimで矩形ビジュアルモードのIとcで一括文字入力する方法を覚えた。
  1. Ctrl+Vすると矩形ビジュアルモードが開始されるので、Iを押す。
  2. すると、挿入モードに切り替わるんだけど、入力した後escを押してノーマルモードに戻した後、
  3. Enterを押すと最初に矩形選択した部分の左端に入力内容が全部の行に入る。

これでソースをコメントアウトするのが簡単になった。
cを使うと最初に矩形選択した部分が全部捨てられて、捨てられたところの左端に入力内容が入る。

PostgreSQLのMVCC

MVCC: MultiVersion Concurrency Control

PostgreSQLWikipediaの説明で、VACUMEという機能について触れられている。
http://ja.wikipedia.org/wiki/PostgreSQL

PostgreSQLは、MVCCの実現のため、追記型のアーキテクチャを採用している。 
データを削除する際は実際のレコードは削除せず、該当行に削除マークを付けるのみである。 
更新の際も内部的には削除と挿入を同時に行っている。 
そのため、更新・削除が繰り返されるテーブルにおいては、
たとえ理論的な行数が変わらなくとも、
更新・運用を重ねるごとに物理的なファイルサイズが増加する。

これって「ソフトウェアトランザクショナルメモリ(STM)」のことじゃない?
って思ったんだけど、すぐ後にそう書いてあった。

http://ja.wikipedia.org/wiki/MultiVersion_Concurrency_Control

MVCCの考え方を採用するその他のソフトウェア
-----
Clojureのソフトウェアトランザクショナルメモリ

何か、並列処理とかって
関数型言語お家芸で・新しくて・いけてるエンジニアだけのものってイメージがあったんだけど、
よく考えたら排他制御とかトランザクションとか、データベースの得意分野だよね。

関数型言語を知らない僕には難しくて無理かな〜って思っていたんだけど、
RDBだったら触ったことがあるから理解できるかもって思った☆
何か嬉しい。