MySQLとrubyでログブック 04月20日, 2010


HyperCardで作成していたLogBookのデータを、MySQL, Rubyに乗せ換えることにしました。HyperScriptは直感的に使えて大変好きだったのですが、今は部屋の隅に積み重ねてある古いiBookでしか動きません。SuperCardという選択肢もあるのですが、どうもねえ。画面は、これも以前見た目が気にいっていた"MyPDB"から借用することにしました。ただ、原著作者を知りません。本来なら表示すべきでしょうが、Netを探しても別物のMyPDBしか見当たらず、今は明記していません。PHPからMySQLにアクセスするしゃれたプログラムですが、PHPは構造が見えにくいように感じていて、どうも好みではなかったので、見た目は好きだと思いつつあまり活用せずに持っていたものです。今回、webby,rubyで全体を再構成しました。

MySQLのインストールが事前に必要ですが、その記事はNetにあふれていますし、設定済みの方も多いと思いますので省きます。また、create databaseなどの手動によるセットアップが必要です。前提としている環境は、Macのみで、具体的には次の通りです。他の環境では試していません。
・MySQL-5.1.44(インストールが必要)
・ruby-1.8.7(システム既存)
・Safari-4.0.5

ファイルアーカイブはWebby用のソースとrubyのcgiスクリプトです。再構成するにはWebbyが必要です。しかし、このままの形で、outputディレクトリのファイルとcgiスクリプトをhttpd.confに合わせて置けばWebby無しでも起動できます。(Apacheの設定は、他に情報が多いことでもあり詳細を省略します。) MySQLへのアカウントは"_mydef.ini"に設定します。

MySQLのDB名は"logbook"、TABLE名は"list"としていて、その構成は次の通りです。

相手コールサイン 名前 QSO日付 交信周波数 交信モード QSL送付日 QSL受領日 備考
call_sign name qso_date frq mode send_qsl rcvd_qsl notes
mysql> create database logbook default charset utf8;
mysql> use logbook;
mysql> create table list (
    code int unsigned not null auto_increment primary key,
    call_sign varchar(20),
    name varchar(20),
    qso_date date,
    frq char(3),
    mode char(3),
    send_qsl date, 
    rcvd_qsl date,
    notes tinytext
    ) default charset utf8;

HyperCardから書き出したタブ区切りテキストを、
mysql> load data infile "LogData.txt" into table list (call_sign,name,qso_date,frq,mode,send_qsl,rcvd_qsl,notes);
などでデータベースに読みこみ、Safariからhttp://localhost/logbookなどとして開きます。(このURLは、httpd.confの設定により変わります。)

logbookアーカイブ