の形で呼ぶ。
//
// anchor_idはフレームを使う場合最低限各フレームごとに設定。お互い他のフレームを書換えたときにへんな干渉をさけるため。
// その他ページの種別毎などで変えてもよいが、あまり小分けにするとcookieが増える。
// 同じanchor_idで保存されるcookieは1セットのみ。でも単独ページ表示のサイトなら概ねこれで充分。
anchor_id = "anc_main";
noanchor = false; // bodyにanchorをしかけたときなど場合によって一時無効にするためのフラグ。
// アンカーの記憶。
function anchor_save(object_id, page_id) {
if(noanchor) { anchor_erase(); return; }
get_scroll();
setcookie(anchor_id+"_pid", page_id, 0);
setcookie(anchor_id+"_st", scroll_top, 0);
setcookie(anchor_id+"_sl", scroll_left, 0);
if(object_id) {
object_top = scroll_top + get_object_top(object_id);
object_left = scroll_left + get_object_left(object_id);
setcookie(anchor_id+"_oid", object_id, 0);
setcookie(anchor_id+"_ot", object_top, 0);
setcookie(anchor_id+"_ol", object_left, 0);
} else {
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
}
// アンカーの適用。
function anchor_apply(page_id) {
if((saved_page_id = getcookie(anchor_id+"_pid")) && page_id != saved_page_id) { return; }
get_scroll();
if((anchor_st = getcookie(anchor_id+"_st")) != "" && (anchor_sl = getcookie(anchor_id+"_sl")) != "") {
anchor_st = parseInt(anchor_st);
anchor_sl = parseInt(anchor_sl);
} else {
anchor_st = scroll_top;
anchor_sl = scroll_left;
}
if((object_id = getcookie(anchor_id+"_oid"))
&& (anchor_ot = getcookie(anchor_id+"_ot")) != ""
&& (anchor_ol = getcookie(anchor_id+"_ol")) != "") {
offset_top = (scroll_top + get_object_top(object_id)) - parseInt(anchor_ot);
offset_left = (scroll_left + get_object_left(object_id)) - parseInt(anchor_ol);
} else {
offset_top = offset_left = 0;
}
window.scrollTo(anchor_sl + offset_left, anchor_st + offset_top);
}
// アンカー消去。あえてとっておく必要がなければanchor_apply()後すぐ消去が望ましい。
function anchor_erase() {
setcookie(anchor_id+"_pid", "", -1);
setcookie(anchor_id+"_st", "", -1);
setcookie(anchor_id+"_sl", "", -1);
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
//-->
倉金家ホームページ
趣味の部屋/インターネットサーバー/LinuxMintサーバー化
さっそく従来のiroribataを使ってwebページを作成・表示してみました。 でもさっそく初っ端からこけました。 |
|
|
ホームページ動作テスト
さっそくweb動作テストを行います。
・apache2のweb表示ディレクトリに新しいiroribataのプログラムをおきます。 ・phpMyAdminでMySQLにデータベースを作りユーザとパスワードを登録します。 ・ブラウザを立ち上げ http://localhost/iroribata でアクセスします。 →サイトの枠組みが表示されます。
・新しいページを作ります。.... あれ???? →新しいページが表示されません。ページが作られないみたいです。
データベースをSQLiteに切り替えて同じことをやてみます。 →OKです。
すなわちMySQLがちゃんと働いていません。 → ・・・こ、こまります。
|
MySQLがだめだった原因
データベースなどというものは50年100年使う可能性があり、データベースソフトを途中でバージョンアップしたからと言ってもよほどのセキュリティー問題でもない限り途中で使えなくなるとは思ってもいませんでした。
ログをみても「そんな項目ないよー」といった単なる現象についてのエラーログばかりで、原因についての知見が得られません。 さっそくSQLデータベースソフトを駆使して(駆使というほどでもないが)調べてみますと、テーブルが何もありません。すなわちテーブルが作成されていません。
SQL文を一生懸命見直してもわかりません。今まで動いていたのだし。 仕方ないのでテーブル作成のSQL文をばらして一つひとつデータベースソフトから手動投入してなんとか突き止めました。
結果、以下のテーブル作成文のDATETIMEのDEFAULTの部分がだめだった(今回のMySQLバージョン8.0ではだめになった)のでした。
$create_xxxx_table_sql = "CREATE TABLE IF NOT EXISTS xxxx ( xxxx_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, ....., xxxx_datetime DATETIME DEFAULT '0000-00-00 00:00:00' );
MySQL8.0のマニュアルを見るに、DATETIMEのDEFAULT値として'0000-00-00 00:00:00'は許されなくなり、実際にDATETIMEとして取り扱える値、'0001-01-01 00:00:00'から'9999-12-31 23:59:59'までの値でなくてはならなくなっていたのです。MySQLでは宇宙の悠久なる時間は取り扱えません。 で、変更忘れがあっても気がつきやすいように初期値をいちいち'1111-11-11 11:11:11'にしようかとも思いましたが、マニュアル推奨の DATETIME DEFAULT CURRENT_TIMESTAMP にしておきました。
これでテーブルがちゃんと作成されOKでした。めでたしめでたし。
|
apache2調整
/etc/apache2/apache2.conf は HostnameLookups On アクセスログに逆引きホスト名を記録しわかりやすくするためです。
/etc/apache2/envvars で export APACHE_RUN_USER= export APACHE_RUN_GROUP= を変更。レンタルサーバーに合わせました。パソコンの方もすべて合わせました。 所有者やパーミッションを気にしなくてよくなるのでいろいろとあとが楽です。
.htaccess の Header Set でエラーになりました。 /etc/apache2/mods-available/headers.load を /etc/apache2/mods-enabled/ にリンクしてOK。
あとは /etc/apache2/sites-available/000-default.conf に表示サイトの記述。
こんなとこです。
|
バックアップサーバーとして
ヘテムルのサーバーとはすでに sshfs という方法でつないであり、ふつうのパソコン内のファイルを扱うのと同じに操作できるようになっています。FTPよりはるかに便利です。
またユーザが合わなかったのでこちらのパソコンのユーザ名やユーザ・グループ番号をヘテムルのサーバーに合わせてしまいました。
おそらくこちらのバックアップサーバーの方が先にこけるとは思いますが、2050年まであと28年、ヘテムルのサーバーが無事に動いていることを祈ります。
私も同期会の人たちも100歳になりますので、そのときこんなこともあったなあとホームページを見ながら思い出せればいいなと想います。
|
|
|