Home > プログラム制作 Archive

プログラム制作 Archive

年齢計算プログラム(Perl編) Ver 0.3

前バージョンのver 0.2を公開してからそんなに時間が経ってないのにもう次かい、と突っ込みたくなるかもしれませんが、最近講義やTAでプログラミングしてないせいか、なんかプログラミングしたい衝動に駆られ、バージョンアップしてみました。

*ver 0.2からの変更点

  • 生年月日を8桁の引数として置き換え、表示できるようにした。(複数対応)
  • サーバタイムの補正に対応。(サーバタイムとズレの時間さえ分かっていれば、国を問わずに補正可能)

*サンプル

*ダウンロード

age030.txt(右クリックからファイル名を指定して保存してください。)

*使い方

必要な箇所ににSSIとして書き込むのは変わっていません。(ver 0.1参照

現バージョンで対応した生年月日を8桁の引数として表示する場合。

生年月日が1981年12月6日の場合、8桁の数字は「19811206」となります。月や日が1桁の場合は、1桁目に「0」を付け、2桁としてください。

その数字を設置したCGIの最後に「ファイル名.cgi?19811206」という形式にします。

例) http://my.sena.to/age.cgi?19811206

*次バージョンでの課題

ここまではエラー処理が結構甘いので、エラー処理をしっかりとしたいと思います。

現段階では、現在日時より先、つまり未来の生年月日も指定できますし、月日として有り得ない日、つまり13月40日なども設定できてしまいます。その辺のエラー処理も加えたいなぁ、と。

まぁ、正しい使い方をすれば問題のない事ですけど。

他としては、他のサイトから参照できないようにする排他制御や、SSIを利用しなくても表示できる用に画像にも対応したいと考えています。画像対応は大分後の話になると思いますが...。

年齢計算プログラム(Perl編) Ver 0.2

実は前バージョンである0.1を作って数日後には0.2が出来上がっていたのですが、公開し忘れていたという...(汗)。すみません。

*ダウンロード

年齢表示計算プログラム 0.2 (age020.txt)

*使い方

  1. ダウンロードした「age.cgi.txt」を「age.cgi」または「好きなファイル名とCGIプログラムを動作させる時の拡張子」にリネーム
  2. 1行目のPerlのパスを利用するサーバに対応した物に書き換える。
  3. ファイル内の「自分の生年月日を登録」以下3行の値($b_year、$b_mon、$b_day)を自分の生年月日に書き換える。
  4. CGIが動作する環境にアップロード。
  5. CGIが動作するパーミッションに変更。(一般的には755 or 705)
  6. SSIが動作するファイル内の年齢を表示させたいところにを記述。

*今回の変更点

  • 安易チェックを追加

チェックモードでサーバタイムの確認や設定した生年月日の確認、現在の年齢を確認できるようにしました。

*サンプル

*今後の予定

一応現状として、サーバタイムの補正に取り組んでいます。微妙な差ですが、海外のサーバタイムと日本の時間を合わせる為に、ある程度の補正の自由を利かせようかと。この辺りは近いうちに実装させます。

もう一つは0.1を公開した時にも書いていた、ファイルの引数で年齢の表示とバリエーションに対応させる事です。これは自分があつかった事がない分野のプログラムが必要となりそうなので、少し時間が掛かりそうです。

Continue reading

年齢計算プログラム(Perl編) Ver 0.1

自分のプロフィールページで年齢を1年毎に書き換えるのが面倒だなと思い、年齢を計算するプログラムを作り、誕生日が来たら自動的に年齢を更新するようにしてみました。

経歴欄は毎年書き換える必要が無いというか、書き換える時は1年も経たずに書き換えるだろうし、定期的に変更の必要がある分だけでも自動化をしようかと。

最近作る自分のWebPageは、ヘッダやフッタ等の共通部分などは予め用意しておいたファイルを読み込ませるだけなどして、どんどん簡素化していっています。そして、たまに時間が開くと自分が何がしたかったのか分からなくなってしまっているという... orz

このプログラムに関しては改良の余地もあるし、汎用的にしたいので、自分がしている事を忘れないためにもここに公表しておきます。使いたい人はどうぞご自由に。

*age.cgi ソース

#!/usr/local/bin/perl

# Copyright 2006 Sena Minamino All rights reserved.
# WebPage http://my.sena.to/
# E-Mail  --@----.--

# 自分の生年月日を登録
$b_year = 1981;	# 年(西暦4桁)
$b_mon = 12;	# 月
$b_day = 6;	   # 日

# 現在の日時取得
local($sec, $min, $hour, $mday, $mon, $year) = (localtime());
$year = $year + 1900;
$mon = $mon + 1;

# 現在の年から誕生日の年を引く
$age = $year - $b_year;
# 現在の日時が誕生日の日時を越えてなければ年から更に1歳引く
if (($mon < $b_mon) || ($mon == $b_mon && $mday < $b_day)) {
	$age--;
}

# 計算結果を表示
print "Content-type: text/html\n\n";
print "$age";

*HTMLへの組み込み

実際のHTMLへ表示するためにはSSIで表示します。

事前にSSIで必要な設定は済ませておき、年齢を表示したい所に

年齢 <!--#include file="./age.cgi"-->歳

と記述します。

*今後の予定

このプログラムを実行した時に年齢の数字しか表示されないので、自分がプログラム内に書き込んだ生年月日や現在の日時を表示するチェックモードを付けようと思います。

他、複数のプログラムを設置しなくても、引数によって表示結果が変わるように改良を加え、その引数の記述形式も西暦4桁、西暦2桁、和暦にも対応するつもりです。

今回は自分が一番得意なPerlで制作しましたが、PHPでも同等品を製作予定です。

*余談

プロトタイプはとっくの昔に作っておいたのに、実装する時間を後々に回してしまったので時間が掛かってしまった orz

Index of all entries

Home > プログラム制作 Archive

Search
Feeds

Return to page top