2016年12月9日金曜日

DockerでMQ環境を作る

DockerHubのibmcom/mqを使う。ファイルシステムとしてtmpfsは使えないのでこれを参考に/mnt/sda1に置き換える。

brew install docker docker-machine
docker-machine create --driver virtualbox mqdev
eval $(docker-machine env mqdev)
docker run  --env LICENSE=accept  --env MQ_QMGR_NAME=QM1 \
--volume /mnt/sda1:/var/mqm  --publish 1414:1414 ibmcom/mq

2016年4月26日火曜日

Bloggerでシンタックスハイライト(Prism)

このブログはBloggerを使っているがソースコードを読みやすく表示したくて、色々調べた結果、SyntaxHighlighterが割と有名っぽいのだが、Prismというのが見た目もかっこいいし良さそう。

使い方は、テンプレートからHTMLの編集を選んで、2行追加すればOK。
</head>のすぐ上に
<link href='https://cdnjs.cloudflare.com/ajax/libs/prism/1.4.1/themes/prism.min.css' 
rel='stylesheet'/>
</body>のすぐ上に
<script src='https://cdnjs.cloudflare.com/ajax/libs/prism/1.4.1/prism.min.js'/>
と書くだけ。

本文には
<pre><code class="language-css">p { color: red }</code></pre>
のように書けば良い。cssの部分が言語になるのだが、ハイライトしてくれる言語はこちら

2016年3月6日日曜日

ハロウィーン問題

WikipediaのHalloween Problemこのブログの要約。

ハロウィーン問題はデータベースの更新処理をによって更新されたレコードのデータベース上の位置が変更されることによって、同じレコードが何度も更新されてしまう問題を指す。こんな名前なのは、ハロウィーンに発見された歴史的経緯から。

ポイントとなるのは、

  • テーブルやインデックスのスキャン
  • そのスキャンによって読み込まれるレコードを変更すること
  • 変更によってレコードの位置をこれからスキャンされる位置に移動させること
結果として、スキャンによって更新されたレコードがまたスキャンで読み込まれてしまい再度更新されるという結果になってしまう。

具体的にはカーソルを使った照会と更新を行うときに問題が発生しうる。JDBCを使っている場合もそうだが、カーソルを使った更新をするときには、カーソル更新の結果が照会に反映されるか注意が必要である。

この問題を避けるためには、更新が照会に影響を及ぼさないようにすれば良い。

DB2 9.7.2以降を使っている場合は、カーソルを使用する際には、INSENSITIVE指定をすることで、スキャンの開始時点で照会結果が確定されるので、この問題を避けることができる。

DockerでMQ環境を作る

DockerHubの ibmcom/mq を使う。ファイルシステムとしてtmpfsは使えないので これ を参考に/mnt/sda1に置き換える。 brew install docker docker-machine docker-machine create --drive...