の形で呼ぶ。
//
// 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);
}
//-->
IRORIBATA
その他あれこれ
| IRORIBATAを動かすためのシステムの条件についての情報です。 |
|
|
その昔、ホームページの作り方としていわゆるLAMP構成というのがいいと言われ、流行りはじめました。 L ... Linux ...(OS) A ... Apache ..(WEBサーバー) M ... MySQL ...(データサーバー) P ... PHP .....(プログラム言語)
です。 現在でもこの構成はホームページ作成の基本として引き継がれているようです。 IRORIBATAはまさにこの構成です。 オーソドックスで無理がなく、またソフト類もこの構成が標準的なものとして構築が楽なように考慮されています。 ただデータサーバーはよほどの規模のサイトでなければSQLiteでも充分です。
|
OS
OSはLinuxです。Windowsでは試していません。 開始当初VineLinux4.2を使用していました。サーバーのディフォルト言語はEUC-JPでした。
その後CentOS5, 6, 7 を使い、ディフォルトの言語はUTF8に変わりました。 サーバーはディフォルト以外でもちゃんと指定すればどの言語でもかまいませんが、今後UTF8が主流になると思われたのでファイルをUTF8に変換しました。
他のLinuxでもさほど大きな問題はないと思います。
|
アプリケーション構成
以下のアプリケーションがインストールされ、稼働(待機)している必要があります。 | アプリケーション | 参考情報(2023年3月現在) |
|---|
| apache2 | apache1系では試していません。バージョンは当初2.2、現在は2.4です。 | php-apache2 php-pdo php-mysql php-sqlite | phpは5以前のバージョンでの確認はしていません。現在は7.4です。 php8.1での動作確認で少し問題が出ましたが鋭意修正して今は問題ありません。 データベースとしてMySQLあるいはSQLiteを使います。 ただしよほど大きなサイトでない限りMySQLはめんどうで、SQLiteで充分です。 | MySQL-server MySQL-shared | MySQLを使う場合、MySQLのバージョンは5.6、あるいは8.0です。 MySQLについては他にMySQL-client,MySQL-embeddedが入っていますが本当に必要かどうかはよくわかりません。 | | shell | bashなど。ファイル関係の操作や各種コマンドの起動に使用します。 よく使うコマンドはwhois, convertなど。 | | ImageMagick | convertコマンドをjpg以外の画像ファイルのサイズ変換等に使用しています。 必ずしも絶対必要ではありません。 | postfix または sendmail | メールによるコメント投稿通知に使用します。 メールによる投稿通知をしないなら不要です。 |
|
HTTPサーバー Apache
以下の条件が必要です。 | 1) | PHPがapacheのモジュールもしくはcgiとして動作すること。 | | 2) | IRORIBATAをインストールしたサイトについて、AllowOverride Allで.htaccessが許可されていること。 | | 3) | できれば細かい制御ができるようにいくつかのモジュールが有効になっており使えること。 | | headers_module : Header Set でロボットアクセス制御などに使用。 | | expires_module : キャッシュ制御に使用。 | | rewrite_module : http:// を https:// に書き換え。 など。 |
|
|
あとはほとんどVineLinux, CentOS、Ubuntuなどのディフォルトのままで動作していますが、ディストリビューションによって追加や変更が必要かもしれません。
関係ありそうなhttpd.confの設定部分は、 AccessFileName .htaccess # .htaccess 使います。 HostnameLookups On # アクセスログにホスト名を記録します。 といったところです。
|
言語モジュール php
phpの設定ファイルphp.iniはほとんどディフォルトのままですが、一部変更しています。
;;default_charsetを指定するとShift-JISの古いページが文字化けする。 ;;指定しなければそれなりに判断して処理してくれるようだ。 default_charset =
IRORIBATAには昔作った古いページなどもそのまま取り込んで表示する機能がありますが、昔のShift-JISのページが思い切り文字化けしてしまいました。 その対策として、上記php.iniのdefault-charsetの指定を変えました。
|
SQLデータサーバー
いちおうLAMP構成ではMySQLを使うことにはなっていますが、一日100人が見にくるかどうかといった個人のホームページで何千ページものサイトを作るのでもなければSQLiteで充分です。 MySQLもやってみたのは実を言うと単に技術的興味からだけでした。 SQLiteならデータサーバーに関して準備は特にいりません。
このサイトはSQLiteで動いています。 SQLiteの利点はサイトのフォルダをそっくり別のサーバーにコピーして少し調整すればサイトの移動やバックアップがわりと簡単にできてしまうことです。
|
|
|
|