6. 各アプリケーションのもろもろ 2

★ xcal でスケジュール管理

やっぱり, いくら *BSD がのっているとはいえ, モバイルギアは PIM です. ということで, スケジューラが欲しい. PocketBSD には, かの有名な taskmg があります. 素晴らしいです. が, わしはそんなに精密に予定を立てて行動しない. . .

xcal.el で出来ることくらいを扱えれば, わしのしょうもない日常を 管理するには充分なのでした. この xcal は まつもとゆきひろ さんが fj に流されたものです.
(XEmacs でも多分使える), mule 19.34 の xcal.el xcal.el
編集中の図

これの良いところは, 「この日何をする」程度の記録しか出来ない ということと, 母艦で使える xcalendar とデータの互換性がある (同じディレクトリに同じフォーマットのデータを保存する) ことです.

ちょっと, .Xdefaults を細工しています. データを保存するディレクトリを $HOME/.Calendar/xy1999 (1999年の場合)にしています.
.Xdefaults.xcalendar

この xcal.el の PocketBSD 上の nemacs でも使える古いバージョンを 使ってみました. mule の本家から入手できます.
ftp://etlport.etl.go.jp/pub/mule/contrib/xcal.tar.gz

で, ポケビにインストールしました. 昔の xcal は上の mule の xcal のようにカレンダーを下に描きませんが, mgterm のミニアプリの カレンダーとなんだか良くマッチしています(笑).

$HOME/.emacs の設定は, 母艦, PocektBSD ともにこんな感じです.
; XCal の設定
 (autoload 'xcal "xcal"
    "xcal for emacs." t)
 (autoload 'day-of-week "cal")
 (autoload 'calendar-month "cal")
(setq xcal-directory "~/.Calendar")
これで, M-x xcal で上のようにカレンダーを起動できます. あ, そうだ cal.el も必要です. 気に入ったら, いつものように byte-compile-file します.

さて, こうやって xcal.el を PocketBSD で使える最大のメリットは, 母艦の xcal.el , 母艦の xcalendar , PocketBSD の xcal.el で データの互換性があることなのでした. そこで, 母艦側と PocketBSD 側とでデータの同期を行いたい.

基本的には, ftp で同期させられると思いました. まぁ, NFS などを用いてディスク(?)をマウントすれば, 別の方法も あるかと思いますが, 最も簡単なものを考えよう, と. そのために, いろんな方法があると思うのですが, 有名な mirror は perl を使うので硬派な私は awk しか入れてないので 駄目で, mirrordir なんてのもありましたが, 使い勝手が今一つで, 結局, ncftp と sh だけでごりごりやってみようと思いました. が, FreeBSD 2.5 などで良く使う ncftp は Ver. 2.4 で, 作者曰く, 「sh スクリプトからの使用は考えていない(とくに upload)」ということで, Ver. 3.* になってライブラリ libncftp を作って, 自由にやって 下さいということになったようです. こういう需要が多かったのか, Ver. 3.* には ncftpput というツールが同梱されました. 仲間の ncftpget だのを含めて, ミニパッケージを作りましたので, 手軽に試したい人はどうぞ.
ncftp-3.0b19-mini.tgz
これは, いわゆる FreeBSD のパッケージではなくて, 実行ファイルと man を tar しただけですので注意を. strip した ncftpput は 100 KB ほどになっていて, これだけを PocketBSD にコピーすれば使えます. ncftp 自体は, FreeBSD の Ver.2.4 をコピーしてきたもので充分です.

で, 作ったスクリプトが
synccal です.
わしは $HOME/bin というディレクトリにこの手の便利なスクリプト等を 置いて $PATH に加えているので, chmod 755 synccal;mv synccal ~/bin/ てな感じで放り込んでおいて使っています. 最低, RMOTE_HOME と REMOTE_HOST は自分の設定に書き換えなければ 使えません. REMOTE_HOST は母艦のホスト名ですが, ping が通る 名前, あるいは IP Address にします.

synccal の使い方

先ほどの ncftpput と ncftp があることを前提にしています. 他には, sh , awk , grep , test しか使っていないので, 標準的な(?) PocketBSD ならそのまま使えるかと思います. (いや, こんなこと書くのも, 最初 母艦で touch を使う仕様で作っていて PocketBSD に touch がないことに気がついて唖然としたから. . )

1. まず, PocketBSD および 母艦の xcal.el をセットアップして, ~/.Calender/xy1999 以下に xc19Aug といったデータファイルが 作成されることを確認してください.

2. 次に, ncftpput で読み込む, 母艦側のホスト名などを設定する ファイル ~/.login_cfg を作ります.
host Bozo.probe.net
user gleason
pass mypasswd
これにはパスワードを書きますので, chmod 600 ~/.login_cfg しておきます.

3. ncftp で母艦からダウンロードするので,
% ncftp 
> hosts
とやって ncftp の bookmark editor で母艦にパスワードなしで 入れるように設定してください.

4. そしたら, ネットワークに接続して(多分 ppp だと思いますが), おもむろに
% synccal
で, ファイルの同期がはじまります.

5. synccal をマジで使いたい方は, 「年をまたぐ get には要注意」 だということを覚えておいて下さい. put は, デフォルトで 2 年分 (つまり, 年をまたぐ場合も O.K.) に対応しています.

こんな感じで ncftp の仲間を使えば, 「住所録」なんかの PIM っぽいデータを同期させられそうですね. 個人的に興味があるのは, 「文献データ(*.bib)」の同期です. 他の PIM で(というか Mobile Gear の UNISHELL でも) 基本的な データの同期のさせかたは, 「母艦側からなんでもやる」ことでしょう. これは, inetd (必ずしも必要ではないが) と ftpd をポケビ側に入れれば済むことなんですが, ポケビは PIM 側で充分複雑な操作が行えますし, キーボードも大きいので わしは, この方法でストレスを感じません. 母艦, ポケビのどちらかでスケジュールのデータが追加されたら, おもむろに synccal と打てばでデータが一緒になるので, 非常に楽なんじゃないでしょうか. ローテクな方法ですが.

6. あとがき
と, 思ったけど, 最近 (2000.2.1) PocketBSD で Ruby やりはじめたから, もっとスマートに上の仕事が出来そうだと思った. ftplib 使えるもんね.