PowerDNS GUIの困った話(その3)。

その1 の問題はよくよく考えたらMXレコードでも同じで、さらにサンプルのテンプレートが固定のドメインになっているのもどうかなと思ったので、 インストール時に作成されるテンプレートも%DOMAIN%で作成してしまおう 、ということで、これもパッチ作ってその1と同じ issueに追加登録 しておきました。

Git本がようやく出版されます。

Gitによるバージョン管理 』がようやく出版されることになりました。

Gitによるバージョン管理

この子はとても難産でした。どれくらい大変だったかは、原稿のリポジトリのgit logを見ると分かります。logと共に自分の過去を振り返ってみました。

最初のコミット。

今から約3年前ですね。

$ git log --pretty=format:"%h %ci %an %s" --reverse
a7f6736 2008-09-01 17:48:33 +0900 Nobuhiro Iwamatsu First commit
(snip)

このときは私はまだこの執筆には加わっていませんでした。というか、この時点では まだ結婚もしておらず 、Debian JP Projectにも参加していませんでした。 1

Git本の執筆に参加。

Gitの初心者の立場 2 から執筆に参加しない?と岩松さんに誘われて参加後、最初のコミットがこれ。

$ git log --reverse --pretty=format:"%h %ci %an %s" --author=Kouhei
85dae47 2009-05-09 20:07:14 +0900 Kouhei Maeda add msysgit screen shot
(snip)

この時は KVMの記事の最終回 用に、oVirtの検証を帰宅後夜中にやって、なかなか上手く行かずハマってヒーヒー言っていたころですね。

小川さんが参加。

自身のブログに エントリを投稿されていました が、レビュワーとして協力して頂いていた小川さんが執筆に参加して、最初のコミットがこれ。

$ git log --reverse --pretty=format:"%h %ci %an %s" --author=OGAWA
5dfcb23 2009-10-25 20:08:49 +0900 Shin-ichiro OGAWA Add user stories of development of Rails applications.
(snip)

ここまでの間に、 CouchDB JPを立ち上げ 、ヨメさんは最初の子供(通称こまめ)を稽留流産し、掻爬手術のすぐ後、ヨメさん置いて私は Deb Conf 参加 のため スペイン に行き 、帰国後、 こまめを新しい家族として迎え ました。

そして2年後。

ようやく出版にされることになったのですが、編集で大変お世話になった森田さんによる最新のコミットがこれ。

$ git log --pretty=format:"%h %ci %an %s"
5391850 2011-10-07 10:09:52 +0900 Hisashi Morita Adjust tag message with the tag name. Fix #629.
(snip)

ここまでの間に 後から執筆に参加させて頂いた本が先に出版されCouchDBの記事を書きDebian JP Projectの会長になり 、ここ数ヶ月では 待望の第一子(通称おまめ)が安定期 に入り、 転職 し、 初の自動車を購入 しました。2年半も経てばいろいろありますね。

私にとってはこの本は、Git初心者たる自分のために執筆して、他の三人のノウハウを学ぶための一冊だと思ってます。来週末には発売される予定なので、ぜひ書店でお手に取って購入して、Gitを使ってみてください。

追記。

ちなみに、私のバージョン管理システムの利用経験は、

  1. 日付付きのファイルのコピー(hoge.YYYYMMDD)

  2. rcs

  3. Git

と、CVSやSubversionをすっ飛ばして、いきなりGitです。

1

JPに参加したのは結婚後の2008年11月。

2

Debian勉強会の資料は、LaTeXで書いて、Gitで管理しているので、勉強会資料を書いたり、印刷するために編集したり、するために最低限必要な程度にはGitを使っていました。

PowerDNS GUIの困った話(その2)。

pdns-guiのインストールは、PHP 5.3以上を使っている環境ではこけます 1 。理由は、data/symfony/config/php.ymlファイルにある、zend.ze1_compatibility_modeというキーが、PHP 5.3以上ではphp.iniでサポートされなくなったためです 2

この問題は、pdns-guiの issueに登録されていた のですが、上記のYAMLファイルから上記のキーの行を削除しただけではダメで、YAMLファイルのパース時以外にも、symfony.phpや、data/symfony/bin/symfony.phpで、

if (ini_get('zend.ze1_compatibility_mode'))
{
  die("symfony cannot run with zend.ze1_compatibility_mode enabled.\nPlease turn zend.ze1_compatibility_mode to Off in your php.ini.\n");
}

として別にチェックされているので、

--- a/data/symfony/bin/symfony.php
+++ b/data/symfony/bin/symfony.php
@@ -13,10 +13,12 @@ if (!isset($sf_symfony_lib_dir))
   die("You must launch symfony command line with the symfony script\n");
 }

-if (ini_get('zend.ze1_compatibility_mode'))
-{
-  die("symfony cannot run with zend.ze1_compatibility_mode enabled.\nPlease turn zend.ze1_compatibility_mode to Off in your php.ini.\n");
-}
+if (! (PHP_VERSION_ID > 50300)) {
+  if (ini_get('zend.ze1_compatibility_mode'))
+    {
+      die("symfony cannot run with zend.ze1_compatibility_mode enabled.\nPlease turn zend.ze1_compatibility_mode to Off in your php.ini.\n");
+    }
+}

 // set magic_quotes_runtime to off
 ini_set('magic_quotes_runtime', 'Off');

のように、PHPのバージョンをチェックをさせるようにしました。YAMLは条件分岐を入れられない?と思うので、これは素直にINSTALLに注意書きを追記して、 issueにパッチを登録 しておきました。

1

むしろこっちが”その1”じゃないか、というツッコミは無しで。w

2

検証で使っている環境はUbuntu 10.04 LTSで、PHP 5.3.2なので。

PowerDNS GUIの困った話(その1)。

PowerDNS のフロントエンドとして PowerDNS GUI (pdns-gui)を使おうとしているのですが、ちょっと困った問題があったのでメモしておきます。

ドメインのテンプレートが作成出来ない話。

テンプレートを作る際に、SOAレコードのcontentの値がinvalidとなり、登録できないという問題があります。pdns-guiのインストール時に自動的に設定されるdomainテンプレートのSOAレコードのcontentの値は、”ns5.dnsmadeeasy.com hostmaster.%DOMAIN% %SERIAL%”という文字列で 1 、テンプレートからdomainを作成する際にはフォームで入力したdomainの値がこの%DOMAIN%に代入されて作成されます。pdns-guiで運用する際は、dns.madeeasy.comというドメインではなく任意のドメインを指定したいので、テンプレートとして作成する際には、例えば”ns.%DOMAIN% hostmaster.%DOMAIN% %SERIAL%”という文字列も使いたいですよね。ですが、実際にはテンプレート作成を行うapps/frontend/modules/template/actions/actions.class.phpの中で、

282       switch ($data['type'])
283       {
284         case 'SOA':
285           if (!preg_match('/^[a-z0-9\.\-_]+\s[a-z0-9\.\-_]+\s%SERIAL%/',$data['content']))
286           {
287             $this->getRequest()->setError('record',"Row $i: invalid SOA content.");
288             return false;
289           }
290           break;

となっており、”%DOMAIN%”という文字列は許可されておらず、”ns0.ca.local hostmaster.ca.local %SERIAL%” のように、文字列%DOMAIN%を使わずドメインを個別に設定する必要があります。これじゃあテンプレートの意味がありません。これじゃ使い物になりませんので、以下のような、 2行パッチ書いてissueに登録 しておきました。

diff --git a/apps/frontend/modules/template/actions/actions.class.php b/apps/frontend/modules/template/actions/actions.class.php
index 9c6b6c0..2f67b9a 100644
--- a/apps/frontend/modules/template/actions/actions.class.php
+++ b/apps/frontend/modules/template/actions/actions.class.php
@@ -282,7 +282,8 @@ class templateActions extends MyActions
       switch ($data['type'])
       {
         case 'SOA':
-          if (!preg_match('/^[a-z0-9\.\-_]+\s[a-z0-9\.\-_]+\s%SERIAL%/',$data['content']))
+          if (!preg_match('/^[a-z0-9\.\-_]+\s[a-z0-9\.\-_]+\s%SERIAL%/',$data['content']) &&
+             !preg_match('/^[a-z0-9\.\-_]+\.%DOMAIN%\s[a-z0-9\-_]+\.%DOMAIN%\s%SERIAL%/',$data['content']))
           {
             $this->getRequest()->setError('record',"Row $i: invalid SOA content.");
             return false;
--
1.7.6.3

NSレコードも同じだった。

ので、追加パッチを登録しておいた。

1

これはdata/fixtures/sample-data.ymlファイルで指定されており、template_recordテーブルに自動的にinsertされます。

WellnessLinkがまた便利に。

昨日、待望のNFC経由でデータをアップロードできるAndroid用公式アプリが公開されていました。

https://market.android.com/details?id=jp.co.omron.healthcare.wl.android.basic

今までは、WindowsでUSBで接続して、Windows専用アプリでアップロードするしか無かったのですが、これでWindows無しでもNFC搭載のAndroid端末だけ 1 で計測データ&朝晩ダイエット開始のデータ同期ができるようになりました。 2月のダイエット開始直前くらい から 歩数計体組成計 を使っていますが、ようやく本領発揮し始めた、というところですね。残念ながら、現時点では歩数計は未対応で、WellnessLinkの体組成計と血圧計限定ですが、歩数計も早く使えるようになるといいなぁ。

結局、 予想通り自分で何とか対応させよう、というのはやるやる詐欺になってました ね…。

1

ちなみに上記リンク先の推奨機器にはもちろん記載されていませんが、NSでも問題なくアップロードできます。