Skip to content.

Sections
Personal tools

Cotton Bolls: June 2004

Document Actions

« April 2004 | トップページ | July 2004 »

2004.06.27

ポケットCVSリポジトリ

5月6月は死ぬほど忙しく,休日もろくにとれないありさま.ブログを書くどころじゃありませんでした.もともとここは日記のつもりで始めたんじゃないんです.Niftyの過去ログ集のような記事を書きたいと思っていて,ブログなら簡単にできるだろうと始めたのでした.なので更新は遅いです…と前置き(というより言い訳)はこれぐらいにして.

久しぶりに梅田のヨドバシカメラによってUSBのフラッシュメモリ(BuffaloのClip Drive)を買ってきた.一年半ぐらい前にUSB1.1の128Mのものを買ってずっと使ってきたが,遅いのでUSB2.0にした.容量も増やして256Mになった.

Clip Driveは,もっぱらCVSのリポジトリ用に使っている.例えば家でEclipseのプラグインを作り,会社で使ってみる.もしバグがあればその場で直してチェックイン.家に帰ってcvs updateで更新.すごく便利だ.いまのところ会社と家のパソコンで同期をとるには一番いいように思う.

CVSクライアントはいつもEmacsのpcl-cvsを使っている.ただ,EclipseのプロジェクトはEclipse自身のCVS機能を使ったほうが便利だ.でもこれだとlocalのCVSリポジトリに対応できないのでpserverを立てることになってしまう.そのときEclipse WikiのCygwinでCVSサーバーを立てる - Eclipseが役に立った.ありがとうございます>書いてくれた方々.

CVSには自作のツールやライブラリ,ホームページの記事や原稿を入れている.変わったところでは,会社に提出する交通費清算書や購買申請書までCVSに入れていたりする.

会社に提出するのはExcelシート(で印刷した紙)なので,そのままではCVSには向かない.こういう定型文書はXMLファイルに書くようにしている.例えば交通費清算書はこんな感じだ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE travel-cost SYSTEM "travel-cost.dtd">
<travel-cost name="石井 勝" date="2024/6/27">
  <way date="6/22" trans="阪神" dest="セラノ社MMシステム打合せ">
    <root from="梅田" to="三宮" ftime="13:13" ttime="13:40" fare="310"/>
  </way>
  <way date="6/22" trans="ニューポートライナー" dest="セラノ社MMシステム打合せ">
    <root from="三宮" to="新浜" ftime="13:55" ttime="14:10" fare="240"/>
  </way>
</travel-cost>

dtdさえ作成すればEmacsのpsgml-modeで簡単に書けるから便利だ.

上のファイルを2024-06-27.xmlのように保存し,Makefileを次のように書いておく:

all:build

build-files = $(subst .xml,.xls,$(wildcard *.xml))

build: $(build-files)

clean:
	rm -f $(build-files)

rebuild:clean build

test:
	ruby -Ks travel-cost-test.rb

%.xls:%.xml
	ruby -Ks travel-cost.rb travel-cost.xlt $< $@

一番最後のターゲットルールがExcelファイルを作成しているところだ.travel-cost.rbというRubyのスクリプトファイルを使っている.このスクリプトがやっていることはRubyによるWin32OLEプログラミング - Excelプログラミング(文書作成編)に書いていることと同じだ.少し面倒なだけでそんなに難しいことではない.こうしておけば,makeコマンド一発で交通費清算書が作成され,後は印刷するだけになる.

そんなわけで,Excelをじかに書くことは極力さけている.テキストファイルだとディレクトリ階層にまたがってgrepできるし,過去の履歴とのdiffもとれる.ExcelやWordで文書管理している人はどうしているのか不思議だ.

| | コメント (0) | トラックバック (3)