ページ更新: 2006-06-18 (日) (6067日前)
サーバ管理やPukiwiki修正の記録。
2005-12-21 #[編集][PukiWiki] ページのキャッシュ #0hitぷき - キャッシュ実装 http://puki.0hit.net/index.php/convert_html_from_cache を試してみる。 (なお、最新版は http://puki.0hit.net/index.php/Convert_Cache だが、まだ試していない (2006-09-07)) PukiWiki 1.4.4を使用(ようするにこのサイト。)
0hitぷき - キャッシュ実装より、次のファイルを入手。
cache.php-v0.3fixはcache.phpにファイル名を変更、漢字コード・改行コードを確認後、lib/に転送。 cache_extra.3.zipも中身を確認、サーバに転送して展開し、delhtmlcache.inc.php, nocache.inc.php は plugin/へ。 cache_htmlディレクトリを作成。パーミッションはPukiWikiのcacheディレクトリと同じにする。 cache.diffを使って、index.php, lib/file.php, lib/pukiwiki.php にパッチを当てる。 (んが、さほどパッチ個所がないので、手パッチした) 動作をしばし確認したのち、lib/cache.phpでデバッグ出力を停止する。 新しいバージョン http://puki.0hit.net/index.php/Convert_Cache が出ているが、まだ試してない。 [編集]2005-12-17 #[編集][PukiWiki] ページがないときの画面に、検索のリンクを追加 #ページがないときはページの編集画面ではなく404とエラーメッセージを出力の画面に検索のリンクを追加した。 ja.lngに'$3'を追加、plugin/read.inc.phpに$3を"?cmd=search"に置き換える処理を追加した。 ja.lng $_msg_notfound = '指定されたページは見つかりませんでした。<br /><a href="$1">編集</a>するか、<a href="$2">親ディレクトリ</a>にアクセスするか、あるいか<a href="$3">検索</a>してみて下さい。'; plugin/read.inc.php } else if (is_pagename($page)) { header('HTTP/1.0 404 Not Found'); return array( 'msg'=>'NOT FOUND', 'body'=>str_replace('$1', "?cmd=edit&page=$page", str_replace('$2', preg_replace('/\/[^\/]+$/','','?'.$page), str_replace('$3', "?cmd=search", $_msg_notfound))) );[編集] 2005-11-06 #[編集][PukiWiki] Web Site Iconの<link rel>を追加 #いまさらだけど。 skin/pukiwiki.skin.ja.php ** pukiwiki.skin.ja.php~ Tue Aug 23 23:08:00 2005 --- pukiwiki.skin.ja.php Sun Nov 6 00:57:42 2005 *************** *** 31,36 **** --- 31,37 ---- <title><?php echo "$title - $page_title" ?></title> <link rel="stylesheet" href="skin/default.ja.css" type="text/css" media="screen" charset="Shift_JIS" /> <link rel="stylesheet" href="skin/print.ja.css" type="text/css" media="print" charset="Shift_JIS" /> + <link rel="shortcut icon" href="/favicon.ico" /> <?php global $trackback, $referer; if ($trackback) {[編集] 2005-10-27 #[編集][PukiWiki] 内部・外部リンクを区別して表示 (PukiWikiのリンク生成部分で処理) #自作プラグイン-exlink.inc.php - PukiWiki-officialの使用をいったん中止し(といってもMenuBarに書いてたプラグイン呼び出しをコメントアウトしただけ)、 PukiWiki-改造-内部・外部リンクを区別する - cubic9.comを使ってみることにした。 次の理由から、画像を使わずに、これまでと同じようにリンクの直後に ⇒を表示する。
skin/default.ja.css: 今回使わないが、そのうちCSS側でなにかやるかもしれないので、定義だけしておく。 /* ext_link.diff */ a.external { } default.ini.php: 次の行を追加 (メモ: 当初、⇒ の';'を忘れてたのだけど、Firefox 1.0.7では表示されるので間違ってるのに気がつかなかった) ///////////////////////////////////////////////// // 外部リンクを示す文字列 $ext_link_marker = '⇒'; lib/make_link.php: ext_link.diff(PukiWiki1.4.4専用)のパッチを適用後したあと、'class=external'を指定してる部分3個所で$ext_link_markerを挿入。 $ diff -u make_link.php.org make_link.php --- make_link.php.org 2005-10-27 22:57:29.000000000 +0900 +++ make_link.php 2005-10-27 23:59:15.000000000 +0900 @@ -335,7 +335,13 @@ } function toString() { - return "<a href=\"{$this->name}\">{$this->alias}</a>"; + global $my_site, $ext_link_marker; + + if (strpos($this->name, $my_site)) { + return "<a href=\"{$this->name}\">{$this->alias}</a>"; + } else { + return "<a href=\"{$this->name}\" class=\"external\">{$this->alias}{$ext_link_marker}</a>"; + } } } // url (InterWiki definition type) @@ -368,7 +374,8 @@ } function toString() { - return "<a href=\"{$this->name}\">{$this->alias}</a>"; + global $ext_link_marker; + return "<a href=\"{$this->name}\" class=\"external\">{$this->alias}{$ext_link_marker}</a>"; } } //mailto: @@ -468,7 +475,8 @@ } function toString() { - return "<a href=\"{$this->url}{$this->anchor}\" title=\"{$this->name}\">{$this->alias}</a>"; + global $ext_link_marker; + return "<a href=\"{$this->url}{$this->anchor}\" title=\"{$this->name}\" class=\"external\">{$this->alias}{$ext_link_marker}</a>"; } } // BracketName[編集] 2005-10-11 #[編集][Linux] Apache mod_gzip使用中止 #
2005-10-10 #[編集][Linux] Apacheにmod_gzipを設定 #Port80 Software- Tools 2005-09-23 #[編集][Debian] sqlite2, sqlite3, php4-sqlite, python2.3-sqlite #次のパッケージをインストールした
→ソフト/Script言語/Python ソフト/Script言語/PHP [編集][Debian] apt-listchangesでエラー(unknown encoding: EUC-JP) #Sargeにしてから、apt-listchangesが次のエラーを吐く。 Traceback (most recent call last): File "/usr/bin/apt-listchanges", line 35, in ? import apt_listchanges File "/usr/lib/site-python/apt_listchanges.py", line 26, in ? _ = gettext.translation('apt-listchanges').gettext File "/usr/lib/python2.3/gettext.py", line 416, in translation t = _translations.setdefault(key, class_(open(mofile, 'rb'))) File "/usr/lib/python2.3/gettext.py", line 176, in __init__ self._parse(fp) File "/usr/lib/python2.3/gettext.py", line 304, in _parse tmsg = unicode(tmsg, self._charset) LookupError: unknown encoding: EUC-JP rootはLANG=Cにしてあるのだが、どこの設定を見てるのだろうか。 今後Pythonも使おうと思っているので、Japanese Codecsを入れて解消することにした。 # apt-cache search python | grep -i japan python-japanese-codecs - Japanese Codecs for Python python2.2-japanese-codecs - Japanese Codecs for Python python2.3-japanese-codecs - Japanese Codecs for Python # apt-get install python2.3-japanese-codecs[編集] [Linux] quota変更 #
# edquota defaultuser ★テンプレートになるユーザの設定を修正 # edquota -p defaultuser targetuser1 targetuser2 ★実際にユーザに設定を複写[編集] 2005-08-17 #08/17〜19にdiscypus.jpのサーバのメンテナンスを行います。(07/30に時間がなくてできなかったことをいくつか)
サーバ停止中にトラブルがあったときは http://discypus.cocolog-nifty.com/ で告知します。 [編集][Hardware] ドライブの交換 #
[Debian] Debian GNU/Linux 3.0(Woody)→3.1(Sarge)への移行 #
[Hardware] genpowerの設定 #
2005-07-31 #[編集][Hardware] RAID1を追加 #
[Hardware] NonStop電源に交換 #
2005-07-03 #[編集][PukiWiki] 「管理者だけが添付ファイルをアップロードできるようにする」でアップロードできなくなったようなので修正 #添付ファイルをアップロードするとき、正しいパスワードを入れても「管理者パスワードが一致しません」が出る。 たぶん「管理者だけが添付ファイルをアップロードできるようにする」設定の影響だと思う。 編集の認証を行っていないページだと添付できる。 Linux day after day(2005-06-25) attachref.inc.php を見て、 attach, attachrefを次のように修正して、解消した。 plugin/attach.inc.php $ diff -u attach.inc.php~ attach.inc.php --- attach.inc.php~ Thu May 19 22:27:38 2005 +++ attach.inc.php Sun Jul 3 23:21:43 2005 @@ -547,7 +547,7 @@ if (ATTACH_DELETE_ADMIN_ONLY || $this->age) { return attach_info('err_adminpass'); } else if (ATTACH_PASSWORD_REQUIRE && - md5($pass) != $this->status['pass']) { + $pass != $this->status['pass']) { return attach_info('err_password'); } } plugin/attachref.inc.php $ diff -u attachref.inc.php~ attachref.inc.php --- attachref.inc.php~ Mon May 30 10:22:48 2005 +++ attachref.inc.php Sun Jul 3 23:24:14 2005 @@ -176,7 +176,7 @@ { return array('msg'=>'attach.inc.php not found or not correct version.'); } - $pass = array_key_exists('pass',$vars) ? md5($vars['pass']) : NULL; + $pass = array_key_exists('pass',$vars) ? $vars['pass'] : NULL; $retval = attach_upload($file,$vars['refer'],$pass); if ($retval['result'] == TRUE) { いじったあとで 質問箱3/99 を 見つけた。 [編集]2005-06-10 #[編集][PukiWiki] ページ新規作成時のページ名入力欄の桁数を変更する #ページ名入力欄の桁数が固定なので、defauit.ini.phpに設定項目を追加し、それを使うように修正する。 ページ新規作成時の入力欄のHTML: ページ新規作成: <input name="page" size="30" value="" type="text"> defauit.ini.phpに設定項目がなかったので、phpファイル内を検索: $ find . -type f -name "*.php" | xargs egrep 'size="30"' ./plugin/amazon.inc.php: <input type="text" name="asin" size="30" value="" /> ./plugin/lookup.inc.php: <input type="text" name="page" size="30" value="$default " /> ./plugin/newpage.inc.php: <input type="text" name="page" size="30" value="$s_newp age" /> default.ini.phpへ設定項目を追加: ///////////////////////////////////////////////// // ページ新規作成時のテキストエリアの行数 $newpage_cols = 60; plugin/newpage.inc.phpを修正: $ diff -u newpage.inc.php~ newpage.inc.php --- newpage.inc.php~ Tue Jun 7 23:26:30 2005 +++ newpage.inc.php Fri Jun 10 01:08:46 2005 @@ -3,7 +3,7 @@ function plugin_newpage_convert() { - global $script,$vars,$_btn_edit,$_msg_newpage,$BracketName; + global $script,$vars,$_btn_edit,$_msg_newpage,$BracketName,$newpage_cols; $newpage = ''; if (func_num_args()) { @@ -20,7 +20,7 @@ <input type="hidden" name="plugin" value="newpage" /> <input type="hidden" name="refer" value="$s_page" /> $_msg_newpage: - <input type="text" name="page" size="30" value="$s_newpage" /> + <input type="text" name="page" size="$newpage_cols" value="$s_newpage" /> <input type="submit" value="$_btn_edit" /> </div> </form>[編集] 2005-06-11 「ページ名の変更」も同様に修正 #plugin/rename.inc.phpに3箇所 size="80"があるので、次のように修正: $ diff -u rename.inc.php~ rename.inc.php --- rename.inc.php~ Sat Jul 31 12:09:20 2004 +++ rename.inc.php Sat Jun 11 22:05:56 2005 @@ -116,7 +116,7 @@ //第一段階:ページ名または正規表現の入力 function rename_phase1($err = '', $page = '') { - global $script, $_rename_messages; + global $script, $_rename_messages, $newpage_cols; $msg = rename_err($err, $page); $refer = rename_getvar('refer'); @@ -148,9 +148,9 @@ <input type="radio" name="method" value="regex"$radio_regex /> {$_rename_messages['msg_regex']}:<br /> From:<br /> - <input type="text" name="src" size="80" value="$s_src" /><br /> + <input type="text" name="src" size="$newpage_cols" value="$s_src" /><br /> To:<br /> - <input type="text" name="dst" size="80" value="$s_dst" /><br /> + <input type="text" name="dst" size="$newpage_cols" value="$s_dst" /><br /> <input type="submit" value="{$_rename_messages['btn_next']}" /><br /> </div> </form> @@ -161,7 +161,7 @@ //第二段階:新しい名前の入力 function rename_phase2($err = '') { - global $script, $_rename_messages; + global $script, $_rename_messages, $newpage_cols; $msg = rename_err($err); $page = rename_getvar('page'); @@ -192,7 +192,7 @@ <input type="hidden" name="plugin" value="rename" /> <input type="hidden" name="refer" value="$s_refer" /> $msg_rename<br /> - {$_rename_messages['msg_newname']}:<input type="text" name="page" size="80" value="$s_page" /><br /> + {$_rename_messages['msg_newname']}:<input type="text" name="page" size="$newpage_cols" value="$s_page" /><br /> $msg_related <input type="submit" value="{$_rename_messages['btn_next']}" /><br /> </div>[編集] 2005-06-07 #[編集][PukiWiki] ページがないときはページの編集画面ではなく404とエラーメッセージを出力 #PukiWiki/改造/ページがないときは404を出力 - cubic9.com
ja.lngはcubic9.comのと同じで(注:長い行の後ろに\を入れてます): $ diff -u ja.lng~ ja.lng --- ja.lng~ Sun Apr 24 14:16:56 2005 +++ ja.lng Tue Jun 7 23:21:52 2005 @@ -32,7 +32,7 @@ 確認後、[ページの更新]を押してください。<br />'; $_msg_invalidiwn = '$1 は有効な $2 ではありません。'; $_msg_invalidpass = 'パスワードが間違っています。'; -$_msg_notfound = '指定されたページは見つかりませんでした。'; +$_msg_notfound = '指定されたページは見つかりませんでした。<br /><a href="$1">編集</a>するか、\ <a href="$2">親ディレクトリ</a>にアクセスしてみて下さい。'; $_msg_addline = '追加された行は<span class="diff_added">この色</span>です。'; $_msg_delline = '削除された行は<span class="diff_removed">この色</span>です。'; $_msg_goto = '$1 へ行く。'; plugin/newpage.inc.phpもcubic9.comのと同じで: $ diff -u newpage.inc.php~ newpage.inc.php --- newpage.inc.php~ Sat Jul 31 12:09:20 2004 +++ newpage.inc.php Tue Jun 7 23:24:23 2005 @@ -43,7 +43,7 @@ get_fullname($page,$vars['refer']) : $page); $r_refer = rawurlencode($vars['refer']); - header("Location: $script?cmd=read&page=$r_page&refer=$r_refer"); + header("Location: $script?cmd=edit&page=$r_page&refer=$r_refer"); die(); } ?> plugin/read.inc.phpはcubic9.comのものから、編集リンク(?cmd=edit...)と親へのリンク(preg_replaseの部分)を修正: $ diff -u read.inc.php~ read.inc.php --- read.inc.php~ Wed Aug 4 22:43:23 2004 +++ read.inc.php Tue Jun 7 23:34:30 2005 @@ -8,7 +8,7 @@ function plugin_read_action() { - global $vars, $_title_invalidwn, $_msg_invalidiwn; + global $vars, $_title_invalidwn, $_msg_invalidiwn, $_msg_notfound; $page = isset($vars['page']) ? $vars['page'] : ''; @@ -22,8 +22,12 @@ return do_plugin_action('interwiki'); // InterWikiNameを処理 } else if (is_pagename($page)) { - $vars['cmd'] = 'edit'; - return do_plugin_action('edit'); // 存在しないので、編集フォームを表示 + header('HTTP/1.0 404 Not Found'); + return array( + 'msg'=>'NOT FOUND', + 'body'=>str_replace('$1', "?cmd=edit&page=$page", + str_replace('$2', preg_replace('/\/[^\/]+$/','','?'.$page), $_msg_notfound)) + ); } else { // 無効なページ名[編集] TODO 2005-06-09 サイト内へのリンクの修正ミス指摘の連絡先をメッセージに追加したい #指定されたページは見つかりませんでした。 編集するか親ディレクトリにアクセスしてみて下さい。 を修正して、次の項目も追加したい。(discypus.jpの静的ページの404 Not Found画面に似せる)
2005-06-09 「新規」リンクを押すと、404のページが表示されてしまう。 #…なので、一手間増えるのは面倒だが、しかたないかも。 [編集][Debian] Sargeがリリースされたのでsources.listを修正 #Sargeがリリースされたので、/etc/apt/sources.listの'stable'を'woody'に変更。 とは言っても、もともと次の1行しかstableは使ってなかったけど: deb http://security.debian.org stable/updates main contrib non-free これを次のように書き換えて、apt-get updateして完了。 deb http://security.debian.org woody/updates main contrib non-free[編集] 2005-06-05 #[編集][PukiWiki] ページの新規作成時に「タイムスタンプを変更しない」指定すると「最新の〜」に載せないようにする #PukiWiki/改造/新規作成時最新の〜に載せない - cubic9.com $ diff -u file.php~ file.php --- file.php~ Thu Apr 21 02:42:20 2005 +++ file.php Sun Jun 5 13:09:09 2005 @@ -115,8 +115,12 @@ $str = preg_replace("/\r/", '', $str); $str = rtrim($str) . "\n"; - if ($notimestamp and file_exists($file)) { - $timestamp = filemtime($file) - LOCALZONE; + if ($notimestamp) { + if (file_exists($file)) { + $timestamp = filemtime($file) - LOCALZONE; + } else { + $timestamp = gmmktime(0,0,0,1,1,2000) - LOCALZONE; + } } なるほど、「タイムスタンプを変更しない」($notimestamp No timestamp) で既存ファイルが存在しない(file_exists の else)ときに、 タイプスタンプを2000/01/01 00:00:00 にするのか。 [編集]2005-06-02 #[編集][pukiwiki] ユーザのパスワードをmd5にする #PukiWiki/1.4/ちょっと便利に/任意のページごとの閲覧・編集制限 - コメントより。 lib/auth.phpを修正 $ diff -u auth.php~ auth.php --- auth.php~ Sun Aug 1 10:54:35 2004 +++ auth.php Thu Jun 2 23:36:50 2005 @@ -102,7 +102,7 @@ if (!isset($_SERVER['PHP_AUTH_USER']) or !in_array($_SERVER['PHP_AUTH_USER'],$user_list) or !array_key_exists($_SERVER['PHP_AUTH_USER'],$auth_users) - or $auth_users[$_SERVER['PHP_AUTH_USER']] != $_SERVER['PHP_AUTH_PW']) + or $auth_users[$_SERVER['PHP_AUTH_USER']] != md5($_SERVER['PHP_AUTH_PW'])) { if ($auth_flag) { pukiwiki.ini.phpの $auth_users = array( 'username' => 'ここをmd5に', );[編集] 2005-05-19 #[編集][PukiWiki] Errata - Default setting of file-attaching function allows XSS (- 1.4.5_1) #http://pukiwiki.sourceforge.jp/index.php?%3AErrata#qf91cd08
2005-05-07 #[編集][PukiWiki] ページの一覧、ページファイルの一覧のリンクから 'cmd=read&page=' を削除 #ページの一覧(?cmd=list)、ページファイルの一覧(?cmd=filelist)のリンクから 'cmd=read&page='を削除する。 ページの一覧、ページファイルの一覧のリンクはlib/func.phpのpage_list関数が作成している。 そこで、$cmdが'read'のときだけ、'cmd=read&page='を出力しないようにしてみた。 func.phpより引用: // ページ一覧の作成 function page_list($pages, $cmd = 'read', $withfilename = FALSE) page_list関数の使用個所をリストアップ: $ find . -name '*.php' -type f | xargs grep page_list ./lib/func.php:function page_list($pages, $cmd = 'read', $withfilename = FALSE) ./plugin/backup.inc.php: return page_list($pages,'backup',$withfilename); ./plugin/deleted.inc.php: $retval['body'] = page_list($deleted_pages,'backup',$withfilename); ./plugin/list.inc.php: return page_list($pages,'read',$withfilename); ./plugin/referer.inc.php: 'body' => page_list($pages,'referer',FALSE) ./plugin/tb.inc.php: return array('msg'=>'trackback list', 'body'=>page_list($pages, 'read', FALSE)); $cmdが'read'のときだけ、'cmd=read&page='を出力しないよう、page_list関数を次のように修正。 PHPの文字列比較ってどうやるのかよく知らないので、おおざっぱにstrcmpで比較してみた。 $ diff func.php.bak func.php 291c291,296 < $str = " <li><a href=\"$script?cmd=$cmd&page=$r_page\">$s_page</a>$passage"; --- > if (strcmp($cmd, 'read') == 0) { > // $cmdがreadのときは、cmdとpageを省く。 > $str = " <li><a href=\"$script?$r_page\">$s_page</a>$passage"; > } else { > $str = " <li><a href=\"$script?cmd=$cmd&page=$r_page\">$s_page</a>$passage"; > }[編集] 2005-04-24 #[編集][PukiWiki] アンカーを示すマークを「†」から「#」に変更 #ja.lngの$_symbol_anchorを#に変更。#はnumberって意味もあるから誤解されるかも知れないが、 †は脚注のように見えるので。 /////////////////////////////////////// // symbols $_symbol_anchor = '#'; //$_symbol_anchor = '†'; $_symbol_noexists = '?'; ///////////////////////////////////////[編集] 2005-04-23 #[編集][PukiWiki] gcounter #pukiwiki:自作プラグイン/gcounter.inc.php を設置した。 初期値を求めるために、全ページのカウンタの合計を次のスクリプトで算出し、 直接カウンタに設定(ファイル書き換え)した。 wikicount (GNU awkスクリプト) #!/usr/bin/gawk -f FILENAME ~ /gcounterで使うページのカウンタファイル名/ { nextfile } FNR == 1 { all += $1 } FNR == 3 { today += $1 } FNR == 4 { yesterday += $1 } FNR == 5 { nextfile } END { print "all=" all print "today=" today print "yesterday=" yesterday } $ ./wikicount path/to/pukiwiki/wiki/counter/*.count all=569634 today=1612 yesterday=2010 gcounterを使って、各ページでこのサイト全体の「昨日のアクセス」の合計を表示した。 更新: 2005-04-21 (木) (3d) / アクセス 昨日:54 (2010) 今日:23 合計:19758 / 接続:5 の「昨日:54 (2010)」の2010の部分。 [編集]2005-04-21 #[編集][PukiWiki] ページの更新日時から時刻を消す #このサイトはさほど更新していないので、更新時刻はさほど重要ではない。 よって、時刻を消して見やすくする。(ここに new! とか update! とか出せると面白いかも) # タイムゾーンが判らなくなるだろうけど…。 pukiwiki.skin.ja.phpで$lastmodifiedから時刻を消しても良いけど(正規表現やsubstrで)、 lib/func.php ... format_dateをコピーして、format_dateonlyを作る。 // 日時文字列を作る(日付曜日のみ) function format_dateonly($val, $paren = FALSE) { global $date_format, $time_format, $weeklabels; $val += ZONETIME; $ins_date = date($date_format, $val); $ins_week = '(' . $weeklabels[date('w', $val)] . ')'; $ins = "$ins_date $ins_week $ins_time"; return $paren ? "($ins)" : $ins; } lib/html.php ... $lastmodifiedに代入する個所で、format_dateをformat_dateonlyに置き換える。 // ページの最終更新時刻(文字列) $lastmodified = $is_read ? format_dateonly(get_filetime($_page)).' '.get_pg_passage($_page,FALSE) : '';[編集] [PukiWiki] ページのリンク先ページを表示しない #PukiWiki のカスタマイズ , PukiWiki のカスタマイズ (2) - ナビゲーション , PukiWiki のカスタマイズ (3) - 画面デザイン , PukiWiki.. (machu.jp) より。 lib/file.php //あるページの関連ページを得る function links_get_related($page) { global $vars, $related; static $links = array(); if (isset($links[$page])) return $links[$page]; // 可能ならmake_link()で生成した関連ページを取り込む // $links[$page] = ($page == $vars['page']) ? $related : array(); // ★コレをコメントアウト $links[$page] = array(); // ★コレを追加 // データベースから関連ページを得る $links[$page] += links_get_related_db($vars['page']); return $links[$page]; }[編集] 2005-03-21 #[編集][PukiWiki] 「cmd=read」を使ったページをサーチエンジンが記憶しないようにする #Yahoo!が「cmd=read」つきのページをたくさん記憶しているので、 これを抑制するためにskin/pukiwiki.skin.ja.phpを次のように修正してみた。 元の: <?php if (!$is_read ) { ?> <meta name="robots" content="NOINDEX,NOFOLLOW" /> <?php } ?> 修正後: <?php if (!$is_read ) { ?> <meta name="robots" content="NOINDEX,NOFOLLOW" /> <?php } elseif (strpos($_SERVER['REQUEST_URI'], 'cmd=read') !== false) { ?> <meta name="robots" content="NOINDEX" /> <?php } ?>[編集] [PukiWiki] スタイルシートとスキンの修正 #
2005-03-11 #[編集][PukiWiki] 添付ファイルのアイコンを表示しないように #ref.inc.phpとattach.inc.phpの先頭付近に次の行を挿入。 define('FILE_ICON', '');[編集] 2005-03-03 #[編集][PukiWiki] 表紙(SSI)にPukiWikiの更新日を表示 #PukiWikiのデータディレクトリの更新日を表紙に表示しようとした。 でも、このディレクトリはSSIで参照できない場所にあるので、無理。 そこで、PukiWikiのデータディレクトリをチェックし、更新日をDocumentRoot以下のファイルに 反映させるスクリプトを用意し: #!/bin/sh /usr/bin/touch --reference={PukiWikiのデータディレクトリ} {DocumentRoot下のファイル} これをcronで定期的に実行、SSIでこのファイルの更新日を次のようにして参照するようにした: <!--#config timefmt="%Y.%m.%d" --><!--#flastmod virtual="{DocumentRoot下のファイル}" --> こんな面倒な事せずに、表紙をPHPで書き直せって?……そのとおりです。 [編集]2005-03-25 #pukiwiki.ini.phpで、次のようにすればOK。 $update_exec = '/usr/bin/touch DocumentRoot下のファイル'; …てなことは前に気がついてたのだけど、直すのをすっかり忘れてた。 [編集]HTMLに対しては #HTMLコンテンツに対しては、Namazu (mknmz)をcronで実行しているので、 ファイルの変更があればNMZ.iiが更新される事を利用して、次のようにしている。 /usr/bin/touch --reference={Namazuのインデックスディレクトリ/NMZ.ii} {DocumentRoot下のファイル}[編集] [PukiWiki] メールアドレスをHTMLの数値文字参照で表示する #メールアドレスをHTMLエンティティ生成で 数値文字参照(&#ddd)で表記すると、PukiWikiがメールアドレスと認識しない。 次のようにしても、InterWikiNameと見なされるので、だめ(あたりまえだけど)。 [[mailto:hogehoge@example.jp]] そこで、次のようなファイルを用意し: <a href="mailto:hogehoge@example.jp">hogehoge@example.jp</a> これをhtmlinsertプラグインでinsertした。 PukiWikiのプラグイン書いた方がいいって……その通り。 メールアドレスをランダムに数値文字参照に置き換えるプラグインがあれば、便利かも。 [編集]2005-02-28 #[編集]サーチエンジンが持ってる旧URL #旧URL「/pukiwiki/」「/pukiwiki.php」とサイト全体について検索。 旧URL Google 検索: site:discypus.jp "pukiwiki.php" -"/wiki/"
サイト全体 Google 検索: site:discypus.jp
旧URL Yahoo!検索 - pukiwiki.php#wiki
サイト全体 Yahoo!検索 - discypus
2005-02-26 #[編集][PukiWiki] ls2_1.inc.php.24のインストール #pukiwiki:自作プラグイン/ls2_1.inc.phpをインストール(改行コードをLFに替えて)した。 このとき「cmd=read&page=hogehoge」を「?hogehoge」になるよう、修正した。 --- ls2_1.inc.php.24 2005-02-27 00:19:38.683936200 +0900 +++ ls2_1.inc.php 2005-02-26 23:42:21.347897300 +0900 @@ -445,7 +445,7 @@ $s_page = htmlspecialchars($page); $title = $s_page . ' ' . get_pg_passage($page, false); $r_page = rawurlencode($page); - $href = $script . '?cmd=read&page=' . $r_page; + $href = $script . '?' . $r_page; // relative オプション。リンク名制御。 if ($params['relative']) { // パターンの最後の / 以下を取り除く。例) sample/test/d -> sample/test[編集] [PukiWiki] exlinkの表示を文字に変える #JavaScriptを修正し、アイコンの代わりに⇒を表示するよう修正した。 function external_link(){ var host_Name = "discypus.jp"; var host_Check; var link_Href; for(var i=0; i < document.links.length; ++i) { link_Href = document.links[i].href; host_Check = link_Href.indexOf(host_Name); if(host_Check == -1){ document.links[i].innerHTML = "⇒" + document.links[i].innerHTML; } } } window.onload = external_link;
2005-02-20 #[編集][PukiWiki] exlinkプラグインの外部リンクの判別条件を緩くする。 #Google翻訳などを使うと、ほとんどすべてのリンクが外部リンクと判断されるので、 あえて判別条件をゆるくする。 具体的には:
function external_link(){ var host_Name = "discypus.jp"; var host_Check; var link_Href; for(var i=0; i < document.links.length; ++i) { link_Href = document.links[i].href; host_Check = link_Href.indexOf(host_Name); if(host_Check == -1){ document.links[i].innerHTML = "<img src=\"image/external_link.png\" height=\"11px\" width=\"11px\" alt=\"外部リンク\" title=\"外部リンク\" class=\"external_link\" />" + document.links[i].innerHTML; } } } window.onload = external_link; 翻訳結果は……。 [編集]ひたすらRedirect #既存のコンテンツ(*.shtml) のうちPukiWikiに移した物は削除し、かわりに Redirect するようにした。
これで、従来のコンテンツをアクセスしなくなったので、各ページのSSIアクセスカウンタも 更新されなくなった。ちょっとさびしい。 [編集]2005-02-27 #だめもとで、アンカーもリダイレクトしてくれいるかどうか試してみた。 Redirect permanent /pc/linux/etc.shtml#dhcpd.cgi \ http://discypus.jp/wiki/?Linux%2Fdhcpd%2Cipchains%2Cppp%A5%ED%A5%B0%C9%BD%BC%A8CGI#xa1de3a1 …ダメでした。 [編集][PukiWiki] urlbookmarkプラグインを設置 #文字コードを確認(EUC-JP)後、コピーしただけ。 [編集]2005-02-18 #[編集][PukiWiki] リンクが「?cmd=read&page=ほげほげ」のリダイレクト…未解決。 #できれば、Apacheの方でもRedirectしたい。「?cmd=read&page=ほげほげ」へ リンクされてることが結構あるし、サーチエンジンも今のところそうだし (こちらは1〜3ヶ月後には解消するだろうけど) Apache 1.3 URL Rewriting Guide 「?cmd=read&page=([^&]+)$」がリクエストされたら「?$1」に置き換えたアドレスに リダイレクト(ステータスコード301で)できればよいわけで。 mod_rewrite風にいうと: RewriteRule /wiki/\?cmd=read&page=([^&]+)$ /wiki/?$1 [R=301,L] な感じ。でも、mod_rewriteは?以後(QUERY_STRING) の一部分を抜きだせなかったと 思う…。 NPH-CGI 書いて組み合わせるか、自分でApacheモジュール書かんとあかんのかな…。
いっそ、PukiWikiの lib/init.php あたりで細工したほうがよいのかも。 (自分の技量じゃ、そもそも可能なのか判断できないけど) [編集][PukiWiki] タイトルの修正の修正(の、予定) #(普通はやらないであろう)topicpath を ページタイトル (<h1>) に使用しちゃったので、FrontPageとかRecentChangeとかのページタイトルが出なくなったのを修正する予定。 PHPはほとんど知らないけど、topicpathの結果が""なら<title></title>に使ってる 文字列に置き換えちゃえ…。あるいはtopicpath自体を書き換えたほうがよいかな。 [編集]修正した (2005-02-21) #[編集]2005-02-17 #[編集][PukiWiki] ls2 プラグインをちょいと修正 #生成されるリンクが「?cmd=read&page=ほげほげ」なので、「?ほげほげ」に変更。 $ diff -u ls2.inc.php.org ls2.inc.php --- ls2.inc.php.org Thu Feb 17 01:15:23 2005 +++ ls2.inc.php Thu Feb 17 01:16:35 2005 @@ -155,7 +155,7 @@ $r_page = rawurlencode($page); $s_page = htmlspecialchars($page); $title = $s_page . ' ' . get_pg_passage($page, FALSE); - $href = $script . '?cmd=read&page=' . $r_page; + $href = $script . '?' . $r_page; ls2_list_push($params, $level); $ret = $include ? '<li>include ' : '<li>';[編集] 2005-02-16 #[編集][PukiWiki] exlink プラグインをちょっと修正 #Googleのキャッシュに入るとリンクが全部外部リンクとみなされる(当たり前)なので、 ホスト名をハードコードした。 var host_Name = "discypus.jp"; サーチエンジンからのアクセスでは無効にすればいいのだけど、 手段を考えるのが面倒なので、とりあえずはこれで。 [編集]2005-02-13 #[編集][PukiWiki] popular2 プラグイン #昨日の人気のある(アクセス数の多い)ページの一覧を表示する popular2 プラグインを入れた。 (入れたと思ってて忘れてた) [編集]2005-02-12 #[編集][PukiWiki] URL変更 #変更して2週間もたってない(2005-01-31#新URLへ変更)のに、URLを変更。 /pukiwiki.php? を /wiki/? に変更。 もともと DirectoryIndex index.php を設定してあったので、 シンボリックリンクを張って(wiki -> pukiwiki-1.4.4)から、 httpd.confの設定を変更。 変更前: Redirect permanent /pukiwiki/pukiwiki.php http://discypus.jp/pukiwiki.php Redirect permanent /pukiwiki/ http://discypus.jp/pukiwiki.php Alias /pukiwiki.php /path/to/htdocs/pukiwiki-1.4.4/pukiwiki.php 変更後: Redirect permanent /pukiwiki/pukiwiki.php http://discypus.jp/wiki/ Redirect permanent /pukiwiki/ http://discypus.jp/wiki/ Redirect permanent /pukiwiki.php http://discypus.jp/wiki/ discypus.jpの静的コンテンツをPukiWikiに移動した。(リンク集が3つ残っているが…) mod_alias - Apache HTTP サーバ
2005-01-31 #[編集][PukiWiki] PukiWiki 1.4.4 にアップデート、URL変更。 #[編集]1.4.2 → 1.4.4 にアップデート #
カスタマイズ、プラグインの設定 #
新URLへ変更 #
旧ページの削除、バックアップ設定の変更 #
エラー #ページ(44KB, 1238行) を修正したら次のエラーが出た。 Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1979377 bytes) メモリはまだ余裕があるので、ちょっとだけメモリサイズを増やしてみた。php.ini を修正。(8MB→12MB) memory_limit = 12M ; Maximum amount of memory a script may consume (8MB)
|