| @料理/食事

最近、結婚したときにいとこから御祝いとしてもらったシリコンの容器でよく料理してる。いまは嫁さんが実家に里帰りしてて一人なので自炊をする機会が多い。一人だと袋ラーメンとかで済ませがちなんだけど、それでは野菜不足だと思う。かといってサラダを用意したり、野菜で料理を作ったりとかも面倒だと思う。袋ラーメンに熱を通した野菜でものっければ見栄えも良くなるし健康にも良さそうだなと思って、もらったシリコンの容器で野菜を蒸してみた。そしたら意外とうまかったので結構な頻度で利用している。今週は月火水と三日連続利用した。

このシリコンの容器はルクエというメーカーのやつで、製品名をスチームケースというらしい。キャベツとか白菜とか小松菜とかタマネギだとかしめじだとかを適当に切って塩とこしょうを振ってレンジに入れて3〜5分加熱するだけで油を使わない温野菜的なものが出来上がる。油を使っていないのできっと体に良いはずだし、鍋の前についてて火加減を見るというようなことをしなくていいし、後片付けも水洗いするだけなのですこぶる楽。面倒くさがりの諸兄にオススメです。

| @雑談

11月の頭に子どもが生まれた。いまは会社に無理を言って育児休業をさせてもらっていて、朝から晩まで子どものおしめを替えたりミルクを飲ませたり家事をしたりしている。

他人の子どもとかちっともかわいいと思わなかったけど、自分の子どもはとてもかわいい。まだ子どもしか生まれてないのに脳内で大泉逸郎の『孫』がエンドレスリピートで流れるくらいかわいい。英才教育を施して、NHK 『美の壺』の草刈正雄の後釜に座れるような遊び人に育てていきたいと思う。

自分は24歳のときに患った精巣腫瘍の抗がん剤の治療のせいで精子をつくる力がなくなってしまったので、治療前に凍結保存しておいた精子を使い人工授精で子どもをさずかった。がんになったせいで仕事とか体の機能とか、もろもろ失ってしまったけど、就職はしたし、結婚はしたし、ついに人間の親にまでなってしまった。本当にありがたいことだと思う。

独身でがんになってしまい、抗がん剤治療を行うことになったら、たとえそのとき結婚の予定がなかったり恋人がいなかったとしても、精子や卵子は凍結保存しておくべきだと思う。治療をしなければ死んでしまうという状況に置かれると、自暴自棄になって精子や卵子の凍結保存は必要ないと思ってしまうかもしれない。7年半前の自分は、若すぎて自分が親になるなんてことが考えられなかった。しかし精子を保存しておいたおかげで子どもを授かることができた。

同じ病気の人がこのページを見るかわからないけど、サバイバーとして一言メッセージを書いておきたい。したり顔で「病気になったおかげでわかることがある」とか「得られるものがある」とかは決して言わない。病気のつらさは本人にしかわからないから。でも一つだけ確かに言えることがあって、生きているとささやかだけど幸せなことが必ずある。だから頑張って欲しい。

| @散財

一年前に会社に入った日に会社近くの有閑マダム向け食器屋で買ったアクリルのコップがヒビだらけになって割れるのが時間の問題だったので新しいコップを買った。保温容器とかをいっぱい売ってる THERMOS のやつで、 Amazon で画像を見てなんかかっちょよかったので買ってみた。

届いての感想だけど、思ったより小さかった。というか縦長細くて想像してたのと違った。400mlってこんなもんだっけという感じ。注げる量に疑問を感じたので試しに350ml缶のコーラを買って注いでみたら縁のところまで満たされた。400mlも入らんやんけ…。これならジットハブ社の Octopint 二個セットの方が良かったかも。円高だし。

ただ断熱なので熱い飲み物を入れても熱くて持てないということにはならないし、冷たい飲み物を入れても結露しないのはいい。また保温効果もガラスのコップよりかはある。家でビール飲むのに使うと良さそう。

| @技術/プログラミング

一個前の記事で書いた「記事の更新時に updated_at ではなく created_at が更新されてしまう」問題、原因はプログラム側にあるのではなく、MySQL の設定の問題だった。

mysql> desc entries;
+-----------------+--------------+------+-----+---------------------+-----------------------------+
| Field           | Type         | Null | Key | Default             | Extra                       |
+-----------------+--------------+------+-----+---------------------+-----------------------------+
| id              | int(11)      | NO   | PRI | NULL                | auto_increment              |
| user_id         | int(11)      | YES  |     | NULL                |                             |
| category_id     | int(11)      | YES  |     | NULL                |                             |
| slug            | varchar(255) | YES  |     | NULL                |                             |
| title           | varchar(255) | YES  |     | NULL                |                             |
| body            | text         | YES  |     | NULL                |                             |
| type            | text         | NO   |     | NULL                |                             |
| draft           | tinyint(1)   | YES  |     | 0                   |                             |
| created_at      | timestamp    | NO   |     | CURRENT_TIMESTAMP   | on update CURRENT_TIMESTAMP |
| updated_at      | timestamp    | NO   |     | 0000-00-00 00:00:00 |                             |
| frozen_tag_list | text         | YES  |     | NULL                |                             |
| markup          | varchar(255) | YES  |     | NULL                |                             |
+-----------------+--------------+------+-----+---------------------+-----------------------------+
12 rows in set (0.00 sec)

updated_atcreated_at の設定値が逆になってたのが原因。ALTER 文でカラムの情報を入れ替えておいた。

MySQL に流し込んだ Sqlite3 のデータを dump したやつの CREATE TABLE entries を見ると以下のようになってた。

CREATE TABLE `entries` (`id` integer PRIMARY KEY AUTO_INCREMENT, `user_id` integer, `category_id` integer, `slug` varchar(255), `title` varchar(255), `body` text, `type` text NOT NULL, `draft` boolean DEFAULT '0', `created_at` timestamp, `updated_at` timestamp, `frozen_tag_list` text, `markup` VARCHAR(255));

なんでこれが created_at に対して更新時に現在時間を上書きし、 updated_at は作成時のみ現在時刻が入るようになるのかは分からない。

それにしても日頃 MongoDB ばかり使っていて、データにおかしなことがあるのはほぼ間違いなくコードのせいだと思う癖がついていることが今回よくわかった。データベースのスキーマを見てみるまでに3日くらい時間がかかった。とほほ。

一方でデータベース内のデータ構造のことをあまり考えなくてよく、開発のみに集中すればよい MongoDB はやっぱり便利だなと思った。規模がでかくなったり高速な読み書きをさばかなければならない状況だと MongoDB にも色々問題があるのでしょうけどね。

| @技術/プログラミング

Lokka 、データベースはずっと SQLite で使ってたけど仕事で MongoDB を使っているため SQL 力の弱まりを感じてきたので MySQL に変えてみた。SQLite3 から MySQL への移行は意外と面倒くさくて、以下の Redmine の手順を参考にやってみた。

  1. Strip out PRAGMA lines
  2. Strip out BEGIN TRANSACTION; lines
  3. Strip out COMMIT; lines
  4. Strip out DELETE FROM and INSERT INTO the sqlite_sequence table
  5. Replace AUTOINCREMENT with AUTO_INCREMENT
  6. Replace DEFAULT ‘t’ and DEFAULT ‘f’ with DEFAULT ‘1’ and DEFAULT ‘0’
  7. Replace ,’t’ and ,’f’ with ,’1’ and ,’0’
  8. Replace “ with ` except in string values (otherwise it replaces all quotes in your text)

Migrating from sqlite3 to mysql - Redmine

↑の通りにやっておおむねうまくいったんだけど、なんか過去の記事を編集して更新すると、updated_at カラムだけじゃなく created_at まで更新されてしまうっぽい。SQLite で使ってるときにはそんなことなかったんだけどなぁ。これは問題な気がする。DataMapper のバグかな。土日で余裕があったら調べてみる。

| @散財

買うなら iPad mini の方がいいに決まってる。Kindle は Mac 版のアプリケーションでページのスクロールという概念がなくて、スクロールホイールを動かすとカクカクカクとページが変わっていくのがいけてない。UI がクソ。まったく欲しくない。

| @技術/プログラミング

VM 上の Scientific Linux で Jenkins を動かしていて、テスト結果のグラフが表示できない問題に遭遇していた。出るエラーメッセージは以下のようなもの。

Graphics N/A
Unable to access X. You need to run the web container in the headless
mode. Add -Djava.awt.headless=true to VM.

OpenJDK が原因らしい(jenkinsでGraphics N/Aが出た時にしたこと | ミラボ)。

OpenJDK をやめて Oracle の JDK に変えればいいらしいのだけど、 OpenJDK でもグラフ表示できている人はいるっぽいし、ソースから Java を入れるのが嫌なので OpenJDK で何とかする方法を探していた。

もろもろ情報をあさってみたところ、どうもフォントがないのが問題らしい。

Jenkins の wiki にあるとおりに /var/log/jenkins/jenkins.log を漁ってみたら、以下のようなエラーメッセージを発見した。

Caused by: java.lang.Error: Probable fatal error:No fonts found.

これに対して公式 wiki には

Obviously graphics rendering needs access to font metrics. So check java /etc/java-6-openjdk/fontconfig.properties and install missing fonts. OpenJDK refers to DejaVu-Fonts. So type:

sudo apt-get install ttf-dejavu

とあるので、yum search dejavu して dejavu って名前がついてるフォントを片っ端から入れたらちゃんとグラフが表示されるようになった。

お困りの方はお試しください。