[an error occurred while processing this directive]
_ 2年ぶりのアップデートです。といっても、大した変更はありません。今年5月に祝日法が以下のように改正され、2007年から施行されることになりました。これへの対応だけです。
_ まず、祝日の変更。4/29 は「みどりの日」から新設の「昭和の日」に変更され、「みどりの日」は 5/4 に移動します。これまで 5/4 は祝日にはさまれていた休日でしたが、2007年から祝日が3日続くことになります。
_ さらに、これまで「日曜日と祝日が重なったら翌日は休日」だった振替休日の制度が「日曜日と祝日が重なったら翌日以降の祝日でない日は休日」と変更されました。
_ 5月の3、4、5日が3連休なのは変わりませんが、これまでの制度では5日のこどもの日が日曜日だった場合のみ6日(月)が振替休日になるのに比べて、2007年からは3日の憲法記念日が日曜日だった場合にも6日(水)が振替休日になり、4連休になる確率が高くなります。
_ ということで、今回の nsmm のアップデートはこの制度変更に追随するものです。2007年のゴールデンウィークまでにバージョンアップをお願いします。
_ オマケとして、RSS 出力用のサンプルもつけておきました。あくまでオマケです。ちゃんと動くかどうか細かいところまでは確認してません。
_ nsmm-0.6.3 にバグが発見されました。特定の日に config.awk の monthname[] や wdayname[] が無効になる場合があります。修正版( tar+gz/EUC; LHa/SJIS)に入れ替えるか、以下のパッチを適用してください。なお、0.6.2 までにはこのバグは存在しません。
--- nsmm-0.6.3/nsmm.awk Sun Nov 3 20:37:07 2002 +++ nsmm-0.6.3.1/nsmm.awk Sun Mar 2 23:44:38 2003 @@ -1,6 +1,6 @@ #!/usr/bin/awk -f # ↑実はあっても意味なし(^^; -# nsmm v0.6.3 +# nsmm v0.6.3.1 # 日記システム名称未定 ############### @@ -316,7 +316,7 @@ ############### # メインルーチンだよん BEGIN{ - var["version"] = "0.6.3(2002/11/03)"; + var["version"] = "0.6.3.1(2003/03/02)"; init_var(); FS="[ \t]+"; @@ -1223,7 +1223,16 @@ if(f in counter_fn) _d["F"] = counter_fn[f]; } -function timefmt2( days){ +function timefmt2( days, dj, dk, dl){ + days = days_from_epoch(_d["Y"], _d["m"], _d["d"]); + dj = get_holiday(days, holiday); + dk = get_holiday(days, holiday2); + if(!dk && days >= furikae_start && wday_of_date(days-1) == 0 && + get_holiday(days-1, holiday) != ""){ + dk = (dk == "") ? furikae : dk " " furikae; + } + dl = get_holiday(days, memorialday); + if(_d["m"]+0 in monthname) _d["b"] = monthname[_d["m"]+0]; if(_d["m"]+0 in Monthname) _d["B"] = Monthname[_d["m"]+0]; if(_d["d"]+0 in dayname) _d["e"] = dayname[_d["d"]+0]; @@ -1233,15 +1242,9 @@ _d["P"] = day2part[_d["d"]+0]; _d["Q"] = month2mpart[_d["m"]+0]; - days = days_from_epoch(_d["Y"], _d["m"], _d["d"]); - _d["J"] = get_holiday(days, holiday) - _d["K"] = get_holiday(days, holiday2) - if(!_d["K"] && days >= furikae_start && wday_of_date(days-1) == 0 && - get_holiday(days-1, holiday) != ""){ - _d["K"] = (_d["K"] == "") ? furikae : _d["K"] " " furikae; - } - _d["L"] = get_holiday(days, memorialday) - + _d["J"] = dj; + _d["K"] = dk; + _d["L"] = dl; } function timefmt(str, t, buf, p, len, tmp, i){
_ 先日 FreeBSD 5.0-RELEASE がリリースされましたが、4 系と異なり、5 系ではシステム標準の awk が GNU awk ではなく、awk のもともとの作者のひとり Kernighanによる awk に変更されています。Kernighan のサイトでは the one true awk と書いてありますし、FreeBSD のソースツリーでも /usr/src/contrib/one-true-awk という場所にありますが、一般には New AWK(nawk)として知られているものです。Solaris では /usr/bin/nawk としてインストールされてますね。
_ で、nsmm は日記システムなのでカレンダーを扱います。日付計算が必須ですが、実はこれは GNU awk の拡張機能を利用しています。ということで、nawk では動きませんので注意してください。FreeBSD 5 を利用するユーザは ports なり自力ビルドするなりして GNU awk をインストールしてください。
_ ちなみにわしの記憶に違いなければ、Debian では gawk とも nawk とも異なる mawk というのが標準で使われてるはずです。これもまた日付関連の関数がないので nsmm では使えません。gawk を使ってください。なお、mawk の マルチバイト対応 Win32 移植版ではこれが独自に拡張されているので、同じ mawk なのに nsmm が動いしまいます。
_ といっても、infoseek の都合で URL が変わるだけですが。ここの URL が
に変わりました。-web ってなんじゃらほい、と思ったら、わしとは別に yamaya さんが いたんでバッティングしないようにしたってことみたいだね。_ もともと freeweb ではじめたんだけど、気がついたら infoseek isweb に吸収されて、今度は HOOPS! とくっついてまた変わる。KDD と合併したつもりなのにまたすぐ DDI といっしょになったテレウェイとか、Compaq に吸収されたはずがいつのまにか HP になってた DEC とかと同じ運命を感じますな。いや、そんなのよりはるかに規模は小さいけどさ。
_ あー、2年ぶりですか。なんかムチャクチャひさしぶりですが、ちょこっとだけいじったんで公開します。0.6.3 です。
_ 追加した機能は主にふたつ。ひとつは祝日対応、もうひとつは妄想支援です。それ以外には小さなバグを取ったぐらいで、過去分をまとめて再生成するときに起きるかもしれないバグについてはめんどくさかったので放置してます。ごめんなさい。 このへんの記述は気にしないこと(ぉ。
_ 祝日対応: ちょうどよく今日は祝日なわけですが、日記システムの方でこれを勝手に識別してくれます。11/3 文化の日はずーっと固定なわけですが、ハッピーマンデーや春分、秋分のような移動祝日や、ある年までは 4/29 は天皇誕生日で次の年からはみどりの日、といった変更にも対応します。とーぜん振替休日も扱えるので、祝日と日曜が重なると月曜日は休みになるし、5/4 は日曜と重なっても翌日に持ち越しません。さらに、祝日、休日のほかに、休みにならないけど特別な日である記念日という概念がありまして、たとえば、あらかじめ自分の誕生日を設定しておくと、その日の日記には自分で何もしなくても「誕生日」と出力してくれますです。
_ 妄想支援: …と書くと語弊がありますが、特定のコマンドについて、テンプレートを切り替えることができるようになりました。たとえば、設定ファイルに
と書いておくと、template["DIV:MOSO"] = "<!-- BEGIN_MOSO -->\n<blockquote>\n"; template["/DIV:MOSO"] = "</blockquote>\n<!-- END_MOSO -->\n"; template["SPAN:TAMAKI"] = "<font color=\"navy\">珠季「${content}」</font><br>\n"; template["SPAN:MINAGI"] = "<font color=\"green\">美凪「${content}」</font><br>\n";という記述に対して template["DIV"] や template["SPAN"] の設定ではなく template["DIV:MOSO"] や template["SPAN"TAMAKI"] による設定に切り替えられて、DIV MOSO SPAN TAMAKI ばーか SPAN MINAGI アスパラー /DIV珠季「ばーか」という出力が得られます。いろんな用途は考えられるんですが、 妄想したい人にはよろしいのではないかと。
美凪「アスパラー」
_ ちうことで、ダウンロードその他は nsmm のページで。
_ ところで、このおバカ日記システムを Linux Software Searchに登録したのは誰ですか(滝汗)。
この日記に対するリンクや引用は許可なく勝手にやってください(とゆーか,いちいち問い合わせたりなんかしないでください)。