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の設定により変わります。)