[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:00645] Re: High-speed and improved MHC



On Tue, 30 May 2000 23:24:31 +0900,
	TSUCHIYA Masatoshi <tsuchiya@xxxxxxxxxxxxxxxxxxxxxxx> said:

> nom> いい忘れましたが、速いですねぇ。TSU_SPEED
> nom> 最初、byte-compile 忘れてた。
> 
> そりゃあ、全ての面において速度を重視した coding をしてありますから…。

血道っていう意味が分かりますね。

> もっと徹底するなら、X-SC- が省略できることにして、
> 
>     X-SC-Subjcet: 研究会
>     X-SC-Cond: Wed
>     X-SC-Complex: Day: 20000531; Subject: 研究会発表
> 
> という記法を許すことにする。この記法ならば、X-SC-Complex: によってまと
> められていない部分が default を表すと考えれば分かりやすそうです。例え
> ば、
> 
>     X-SC-Subjcet: 班別会議
>     X-SC-Cond: Thu
>     X-SC-Location: 大会議室
>     X-SC-Complex: Day: 20000601; Location: 第2会議室
> 
> というような書き方が出来るでしょう。

僕も、帰りの車の中で同じような事を考えてました。1つの解だと思います。

>     X-SC-Sexp: (if (day 20000531) (subject "研究会発表"))
> 
> ‥‥というのはやり過ぎですね。

実は、このやり過ぎもありかなと思っています。
Sexp は、elisp に寄り過ぎるので、適切な文法を定義してやるのはどうでしょう。

これしかないのはやりすぎですが。MHC の元々のヘッダで、ほとんどの
場合 OK なはずです。となると、第二の方法を使うのは、
かなり複雑なのを書きたいときです。どうせなら万能を目指すというのも
1つの方法です。calendar.el とかも、そうじゃなかったっけ。

実際の所、他の人は、どんなデータが MHC では記述できずに困ってい
るのか調査したい所ですね。僕が書きたいのは、公務員の給料日。

・基本的に毎月 17日だが、17日が休日の場合は 16, 15 ..
  と手前にずれる。でも 3日以上は手前にずれないで、
  その場合は、18, 19 .. と後方の平日に向かってずれる。

これが書ける能力が欲しいです。

あと、ありがちで書けないのは、

・ 2週に 1回の木曜日。ただし、年末年始は除く。

他に何かありませんか。
春分、秋分もこれで書けるなら、列挙する方針を変えます。

> 土> つまり、1つのヘッダが、内容によって AND を表したり OR を表したりする
> 土> という複雑なことを行っているわけです。
> 
> nom> これは僕も承知しています。こういう規則が裏にあるというのは、
> nom> 分かり辛いですよね。でも、規則を知らなくても、理性で正しく書けませんか?
> 
> 同意します。parser を書くのは面倒でしたが…。

> nom> 美しいかもしれませんが、頻出する
> nom> X-SC-Cond: 1st Wed 
> nom> を 2つに分けて書かないといけないのは、苦痛ですし、避けたくないですか?
> 
> でしたら、積和標準形に直すのはどうでしょう? つまり、1つのヘッダの中で
> は AND 条件、並置されたヘッダは OR 条件とします。

うーん、そうすると、
  X-SC-Cond: 5 15 25      ;; 「5の付く日」 
  X-SC-Cond: 1st 3rd Wed  ;; 第一第三 水曜日

も比較的よくあるスケジュールだと思うのですが。これのとき困りますよね。

> ただまあ、こうすると予想されるのは、「第1、第3水曜日」という指定が面倒
> じゃないか、ということなんです。

あ、そのとおり。基本的に、決めの問題ですから、
解はいくらでもあるのですが、落とし所の問題ですよね。。

> と、よく考えてみると、X-SC-Duration: が導入されている理由が分からなく
> なってきますね。X-SC-Cond: で指定される他の構文要素と判別可能なので、
> 統一できるのではないでしょうか。

そうですね。そういう意味では、Date: も Cond: とまとめられます。
これは、見た目です。

> えっと、毎月月末に発生するんですか。そういうのはスケジュールに記入して
> 欲しいなぁ…。
> 
> ## 弱気モード。
> 
>     X-SC-Cond: Last
>     X-SC-Subject: 月末決算書の整理
>     X-SC-ToDo: 100
> 
> という指定が出来るのですが、どうでしょう?

なるほど。こういう書き方もあるのか。。

>     X-SC-Duration: 20001201-20001205
>     X-SC-Subject: 1st MHC International Conferenece
>     X-SC-Location: 九大

うーん。まず、Duration: だけではスケジュールを指定したことになら
ない仕様です。ので、現行の MHC 的には、これは空のスケジュールです。

>     X-SC-Next:
>     X-SC-Duration: 20000601-20000630
>     X-SC-Subject: 論文執筆
>     X-SC-ToDo: 100
>     X-SC-Next:
>     X-SC-Day: 200000630
>     X-SC-Subject: 論文提出
>     X-SC-Next:
>     X-SC-Duration: 20000901-20000930
>     X-SC-Subject: カメラレディ準備
>     X-SC-ToDo: 100
>     X-SC-Next:
>     X-SC-Day: 20000930
>     X-SC-Subject: カメラレディ提出
> 
> というのでは、十分に直感的ではないでしょうか。こうすると、スケジュール
> 帳に締切日が表示されるのと同時に、下の TODO リストにも表示されるように
> なるんですけど。

僕ならですね。

X-SC-Day: 20001201-20001205  ;; これは、便宜上の嘘ね。
X-SC-Subject: 1st MHC International Conferenece
X-SC-Location: 九大
X-SC-Next:
X-SC-Day: 20000630
X-SC-Subject: 論文提出締切
X-SC-ToDo: 100
X-SC-Next:
X-SC-Day: 20000930
X-SC-Subject: カメラレディ締切
X-SC-ToDo: 100

と書きたい。こう書くと、TODO の表示欄には、常に DONE になるまで
表示していてほしい。

1年後に締切があるような TODO をどこに置くかということになりますが、
土屋さんの意見は、 Duration: で 1年後を指定しといて、
intersect/ に入れようということですね。それとは別に、
締切をスケジュールにも出したい場合は、Next: でもう1個書くということですね。
それって、1個記事が増えるだけで、嬉しくなくないですか。

普通締切のある TODO はスケジュールに載せたいでしょう?
締切がない場合は、書かないから schedule にも出ないので、
ハッピーだと思うんですけど。

> MHC の内部では、file 単位での cache 制御が有効になっています。gemcal 
> などの外部プログラムと連携する場合に限って、slot が作り直されます。
:
> はい、編集できるようにはしていませんが、私の手元では既に X-SC-Next: を
> 使って書き直したものを使っています。このように変更すると、更に速くなり
> ます。
> 
> その気になれば、~/.schedule を捨てて、schedule/intersect/ 下の一般スケ
> ジュールファイルの1つとして扱うことも可能です。

なるほど。このへん、いい感じですね。

> 誤解させてしまいましたが、上述のように Day: も Cond: も使えます。しか
> し、
> 
>     X-SC-Day: 20000531
>     X-SC-ToDo: 1
> 
> という指定をすると、5月31日にスケジュールを確認したときだけ TODO リス
> トに掲載されることになるので、あまり意味がないと思います。
> 
> # X-SC-Day: の意味からすると、これが自然だと思うのですけれど。

うーん、やっぱり TODO のときは、Day: を Deadline として扱うのが
いいのでは? すると、schedule 上にも素直に反映させることができる。
Day: は X day なのです。TODO でいうと、締切。

Duration というのは、ある、スケジュールや TODO の有効範囲をさら
に限定するもので、直接 X day を示すものではないということです。

> いえ、別にそれでも構いませんが、そのようにすると結局 schedule/todo/ に
> ついても schedule/intersect/ と同じように検索をかけなければいけないと
> 言うことには変わりありませんから、ディレクトリが増えるだけで、プログラ
> ム的に嬉しいことはないような気がするのですけれど、どうでしょうか?

いわれてみれば、そうかもしれない気がしてきました。。

refile 先の計算が簡便になるというメリットと、
TODO 分けとくと、締切のなしスケジュールを一杯いれる人に
にはいいかなという気がしてたのですが。

あと、mh の scan だけで TODO リストが見れたりして嬉しいかなと。
--
nom