2008年12月31日水曜日

DecoNikiプロジェクト

ここんとこずっと取り組んでいるソフト、DecoNikiの公式サイトをオープンしました。まだときのりさん@PW書き下ろしのFlash絵本しか無いですけど、随時充実させていきます。
DecoNikiネタはこちらの方にアップしていきます。

多分これが今年最後のエントリになるかと思いますが、来年はソフト量産元年、どうぞ宜しくお願い致します。また、皆様も良いお年を。

2008年12月6日土曜日

街へいこうよ どうぶつの森

街へいこうよ どうぶつの森を、昨日から子供達と一緒に始めている。
小2の娘は、最初どうやってお金を稼ぐか良くわからず、漫然と村をうろうろしたり、タヌキチに酷使されながらも健気に咲いているお花を抜いては自分の家の近くに移植して、

「私のお花畑!」

とか言って喜んでいた。

で、私がリンゴや花を普通にお金に換えているのに気づいたら、目の色変えて「させてくれ!」とコントローラを横取りし、さっきまでせっせと作っていたお花畑の花を全部抜いて換金してしまった。


↑お花畑跡地。

しばらく後に娘の家に行ってみたら、1階が豪華になっていた。。。


ローンはちゃんと返済しているのかなぁ。
とても複雑な気分です。

2008年12月2日火曜日

Mac OS Xでの定期的な処理 - launchdについて

Macでlaunchdを使うという話。

経緯:
  1. バックアップサーバ (Fedora Core 1 + Pentium-II 333MHzの骨董品。) のディスクが残り少なくなって来た。
  2. 社内を見回す。→I-O DATAのLANDISK (HDL-GT) が目につく。いつもはMac/Windowsクライアントにとってのお手軽NAS.
  3. LANDISKをバックアップサーバにマウントしようとするも、様々な要因で断念。
  4. 再度社内を見回す。→あまり使わなくなったPowerMac G5 (Leopard) が目につく。
  5. mount_afpでLANDISKをマウントする。
  6. バックアップサーバで動いていたバックアップスクリプトをPowerMacに持ってくる。
  7. そのスクリプト達をcronジョブとして登録しようとすると…あれ??!

Mac OS Xにはcrond無いんですね。その様な用途にはlaunchdを使えとあります。

Getting Started with launchd

launchdにいろいろ仕事をさせるための設定ファイルはXML形式となっています。手で書くのもしんどいなと思って探していたら、こんな素敵なアプリを見つけました。

Lingon

これを使ってFedora Core 1で動かしていたバックアップスクリプト用のlaunchd.plistを作成しても、スクリプトの末尾にある以下の様なよくあるメール送信コマンドがうまく動きません。

$ echo <メール本文> | mail -s <メールSubject> <宛先アドレス>

system.logには以下の様なエントリが残っています。

08/12/02 15:48:55 com.apple.launchd[110] (<launchdラベル>[<プロセスID>]) Stray process with PGID equal to this dead job: PID 316 PPID 1 sendmail <ホスト名>:

バックアップスクリプトが終了した途端、mailコマンドから起動されるsendmailがkillされている様に見える。

以下の様な事が起きているのかなと推測。
  1. launchdがバックアップスクリプトを呼び出す。
  2. バックアップスクリプト中のmailコマンドが呼ばれる。
  3. mailコマンドは非同期に終了、バックアップスクリプトのプロセスに戻ってくる。
  4. バックアップスクリプトが終了、launchdのガーベージコレクタが、先に非同期に起動された、同じプロセスグループIDを持つsendmailも片付けちゃう。
  5. 結果、メールが送信されない。

さらに色々調べるとこんなページを発見。AppleのDarwin関連ドキュメントって実はしっかりしてたんだなあと感心。

Technical Note TN2083: Daemons and Agents

ここを読むと、概ね上の推測は外れてない事がわかる。書かれている通りplistに


<key>AbandonProcessGroup</key>

<true/>



を追加すると、mailは送信されるようになった!

が、system.logに上のStray process云々のエントリはまだ残ってる。なんじゃこりゃ。

一応動いてるからいいって事にしといていいのか?

…しばらく様子を見よう。