Bフレッツの開通を記念して、数年前までに集めた、C言語プログラム(関数)を順次公開するね。

既にどこかで、多くの方々に見られていたものかもしれない。
ただ、サポート等は一切できないと思う。ご質問にお答えすることもままならないかもしれない。ご容赦を。

さて、1本目、曜日を正しく計算してくれる関数の公開。

染色体の異常に起因するダウン症患者、知的発達が遅れるといいながら、西暦と月日を尋ねれば瞬時に曜日を言い当ててしまう、ということが簡単にできるらしい。

しかし、一般のわれわれには、曜日の計算はなかなかできない。が、ツェラー公式 が判れば、スマートに計算できるはず。

<関数名>
  dayOfWeek —- 西暦年月日からその曜日を算出

<形式>
  int dayOfWeek(int year, int month, int day);

<引数>
  year, month, day 西暦年月日

<関数値>
  各曜日に対応する 0 〜 6 の値
     0: 日、1: 月、2: 火、3: 水、4: 木、5: 金、6: 土

<注意事項>
  引数として渡される西暦年月日が実在するかどうか については、本関数内ではチェックしない。
  1582年10月15日以降の日についてのみ正しく算出する。

用例
  dayOfWeek(2004, 8, 14);

<関数本体>
  dayOfWeek.c

<説明>
  ツェラー (Zeller) の公式 による計算法。
  現在使われているグレゴリオ暦の初日は1582年10月15日(金曜)である。本関数はその日以降の曜日を正しく算出。
  ちなみに、1582年10月15日(金曜)の前日はなんと、ユリウス暦1582年10月4日(木曜)。時間の空白があったわけだね(笑)。また、曜日だけは連続していて、休むことの大切さ、そこにもしみじみ感じる。

● もともとの話については、 ここ を参照されたい。

DDNSサーバに対する、IP 更新プログラム。
ベースとなったのが、お世話になっている ipServer.net サイト内の Perl スクリプト

<使用環境>
  OS Linus Fedora Core / Centos
  Perl  Ver 5.8.1以上
  DDNSサーバ www.ipServer.net

<使用するディレクトリ、およびファイル>
  ディレクトリ /usr/local/ddns/
  プログラム本体 ddns.pl
  データファイル ddns.dat 現在使用中のIP及び前回更新時刻の記録データ
  履歴ファイル ddns.log いままでの更新履歴
  データファイル及び履歴ファイルはプログラムが必要に応じて自動作成する。

<プログラム本体>
  Perl スクリプト ddns.pl
  注:アカウント名、ドメイン名、パスワードの3項目はご自分の環境に合せること!
  ちなみに、データファイルおよび履歴ファイルの中身はこちら。
  データファイル ddns.dat
  履歴ファイル ddns.log

<使い方>
  cron で Perl スクリプト ddns.pl を、10分間隔で走らせるといいだろう。必要でなければ、DDNSサーバに対する更新は実際、やらないのだ。
  ただし、日付が変わると強制更新を必ずやることになっている。ときたま声かけないと、DDNSサーバがこちらの存在を忘れるかもしれないから (というのは冗談)。
  履歴ファイル ddns.log の各行に書かれている言葉は、Updateが不可欠な更新; Dailyがただの生存連絡を意味する。

IP更新プログラムの良し悪しはサーバとしての信頼性を大きく左右するので、ご利用の際に十分吟味して欲しい。