ページ更新: 2006-10-09 (月) (6077日前)

サーバ管理やPukiwiki修正の記録。

[編集]

2006-11-12 #

[編集]

[PukiWiki] RSSの<link>を追加 #

いまさらだけど。

skin/pukiwiki.skin.ja.php

<link rel="alternate" type="application/rss+xml" title="RSS" href="http://discypus.jp/wiki/?cmd=rss10" />
[編集]

2006-10-09 #

[編集]

[PukiWiki] 特定の文字列でpcomment書き込みを排除 #

続・質問箱/489 - PukiWiki-official
http://pukiwiki.sourceforge.jp/?%E7%B6%9A%E3%83%BB%E8%B3%AA%E5%95%8F%E7%AE%B1%2F489

の comment.wiki_ngword.diff を手で pcomment.inc.php に当てて見た。とりあえずエラーはなし。禁止文字列を含むコメントを排除できた。

パッチ。

*** pcomment.inc.php.org	Mon Oct  9 21:37:31 2006
--- pcomment.inc.php	Mon Oct  9 21:37:36 2006
***************
*** 59,64 ****
--- 59,67 ----
  // タイムスタンプを更新する
  define('PCMT_TIMESTAMP', 0);
  
+ // NGワード集ページ
+ define('COMMENT_NGWD_PAGE',':config/plugin/comment');
+ 
  function plugin_pcomment_action()
  {
  	global $script, $vars;
***************
*** 66,71 ****
--- 69,99 ----
  	if (! isset($vars['msg']) || $vars['msg'] == '') return array();
  	$refer = isset($vars['refer']) ? $vars['refer'] : '';
  
+ // QandA/489
+ 
+ 	$ng_words_page = COMMENT_NGWD_PAGE;
+ 	if(is_page($ng_words_page))
+ 	{
+ 		$ng_words = array();
+ 		foreach (get_source($ng_words_page) as $line)
+ 		{
+ 			$match = array();
+ 			if (preg_match('/^-\s*(.[^\s]+)/',$line,$match) )
+ 			{
+ 				$ng_words[] = preg_quote($match[1],'/');
+ 			}
+ 		}
+ 		if(count($ng_words)>0)
+ 		{
+ 			$pattern = '/'. join('|',$ng_words). '/';
+ 			if(preg_match($pattern,$vars['msg']))
+ 			{
+ 				// NGワードに一致した場合は書き込めない
+ 				return array('msg'=>'', 'body'=>'');
+ 			}
+ 		}
+  	}
+ //
  	$retval = pcmt_insert();
  	if ($retval['collided']) {
  		$vars['page'] = $refer;
[編集]

2006-05-13 #

[編集]

[PukiWiki] navigatorの順序を変更 #

ナビゲータの順序を変更。

自分はメンテナンス時しか「一覧」を見ないし、「一覧」に切り替えると隣に「ファイル名一覧」も表示するので以後の並びが1つずれるのでうっとうしい。

そこで、「一覧」「ファイル一覧」の順序を後ろにずらしたいと思った。

念のため、アクセスログのてきとーな解析(2006年5月のみ調査、サーチエンジンのアクセスを排除してない、ページの遷移を分析してない)では:

$ grep Recent access.log | wc -l    ★最新の
352

$ grep Popular access.log | wc -l   ★人気の
291

$ grep 'cmd=search' access.log | wc -l  ★検索
186

$ grep 'cmd=list' access.log | wc -l ★一覧
94

:てなことで、めでたくアクセス数が多い順で「最新の」「人気の」「検索」「一覧」にすることに決定。

修正ファイルは skin/pukiwiki.skin.ja.php 。

  • 旧: トップ | 一覧 最新の 人気の 検索
  • 新: トップ | 最新の 人気の 検索 一覧
[編集]

2006-02-11 #

[編集]

[PukiWiki] urlbookmarkプラグインの書式を変更 #

urlbookmarkプラグインの書式を変更。日時(日付のみに変更)、Title、コメント の順に。

$ diff -u urlbookmark.inc.php.org urlbookmark.inc.php
--- urlbookmark.inc.php.org     2006-02-11 06:13:16.000000000 +0900
+++ urlbookmark.inc.php 2006-02-11 06:00:28.000000000 +0900
@@ -35,10 +35,10 @@
 // ブックマークの挿入フォーマット
 define('URLBOOKMARK_NAME_FORMAT','$name');
 define('URLBOOKMARK_MSG_FORMAT',' -- $msg');
-define('URLBOOKMARK_NOW_FORMAT',' SIZE(10){$now}');
+define('URLBOOKMARK_NOW_FORMAT',' $now');
 /////////////////////////////////////////////////
 // ブックマークの挿入フォーマット(コメント内容)
-define('URLBOOKMARK_FORMAT',"\x08NAME\x08 \x08MSG\x08 \x08NOW\x08");
+define('URLBOOKMARK_FORMAT',"\x08NOW\x08 \x08NAME\x08 \x08MSG\x08");
 /////////////////////////////////////////////////
 // ブックマークを挿入する位置 1:欄の前 0:欄の後
 define('URLBOOKMARK_INS',1);
@@ -101,7 +101,9 @@
        }

        $_msg  =                                 str_replace('$msg', $post['msg'], URLBOOKMARK_MSG_FORMAT);
-       $_now  = ($post['nodate'] == '1') ? '' : str_replace('$now', $now,         URLBOOKMARK_NOW_FORMAT);
+       $date = get_date('Y-m-d',$time);
+
+       $_now  = ($post['nodate'] == '1') ? '' : str_replace('$now', $date,         URLBOOKMARK_NOW_FORMAT);

        $urlbookmark = str_replace("\x08MSG\x08", $_msg, URLBOOKMARK_FORMAT);
        $urlbookmark = str_replace("\x08NAME\x08",$_name,$urlbookmark);

既存のブックマークはエディタで「」と行末の「」を取り除いてから、以下のawkスクリプトで修正。Cygwinのgawkを使用。

{
  if ($0 ~ /^-/) {
    date = $(NF-2)  # 日付を取りだして
    $(NF-2) = "";   # 日付、
    $(NF-1) = "";   # 曜日、
    $(NF) = "";     # 時刻を消す
    $1 = substr($1, 2); # 先頭の - を削除
    print "-" date " " $0;  # - と日付、残りの文字列を出力
  } else {
    print;
  }
}

……AWKを一番最初に覚えたせいか、こういうパターンだとPerlやPythonを使うよりgawkのほうが楽だなあ。

[編集]

2005-02-04 #

[編集]

[Apache] PukiWikiのページのリダイレクト (力業編) #

以下の2つのページを力業(ページごとにRewriteCond/RewriteRuleを記述)で新ページにリダイレクトした。

  • ソフト/開発ツール/Bug Tracking
  • ソフト/開発ツール/Bug Tracking/trac

AliasプラグインでURLに「cmd=read」が付くのがいやだけど、「?ページ名」形式にすると 当然ループを検出できないので、あきらめてmod_rewriteで書き換えることにした。

httpd.conf への追加

RewriteEngine on

# ソフト/開発ツール/Bug Tracking
RewriteCond %{QUERY_STRING} ^%A5%BD%A5%D5%A5%C8%2F%B3%AB%C8%AF%A5%C4%A1%BC%A5%EB%2FBug%20Tracking$
RewriteRule ^/wiki/$ "/wiki/?ソフト/Bug Tracking" [R=301,L]

# ソフト/開発ツール/Bug Tracking/trac
RewriteCond %{QUERY_STRING} ^%A5%BD%A5%D5%A5%C8%2F%B3%AB%C8%AF%A5%C4%A1%BC%A5%EB%2FBug%20Tracking%2Ftrac$
RewriteRule ^/wiki/$ "/wiki/?ソフト/Bug Tracking/trac" [R=301,L]

ブラウザの動作 : 「ソフト/開発ツール/Bug Tracking」の場合

GET /wiki/?%A5%BD%A5%D5%A5%C8%2F%B3%AB%C8%AF%A5%C4%A1%BC%A5%EB%2FBug%20Tracking HTTP/1.1
 :

HTTP/1.1 301 Moved Permanently
 :
Location: http://discypus.jp/wiki/?%a5%bd%a5%d5%a5%c8/Bug%20Tracking
 :

ブラウザの動作 : 「ソフト/開発ツール/Bug Tracking/trac」の場合

GET /wiki/?%A5%BD%A5%D5%A5%C8%2F%B3%AB%C8%AF%A5%C4%A1%BC%A5%EB%2FBug%20Tracking%2Ftrac HTTP/1.1
 :
HTTP/1.1 301 Moved Permanently
Location: http://discypus.jp/wiki/?%a5%bd%a5%d5%a5%c8/Bug%20Tracking/trac

(2006-02-08)

残りのページ「ソフト/開発ツール/Bug Tracking/trac/*」はすべて「ソフト/Bug Tracking/trac」にリダイレクトするようにした。

httpd.confの設定

# ソフト/開発ツール/Bug Tracking/trac/*
RewriteCond %{QUERY_STRING} ^%A5%BD%A5%D5%A5%C8%2F%B3%AB%C8%AF%A5%C4%A1%BC%A5%EB%2FBug%20Tracking%2Ftrac%2F
RewriteRule ^/wiki/$ "/wiki/?ソフト/Bug Tracking/trac" [R=301,L]
[編集]

2006-01-16 #

[編集]

[PukiWiki] SubMenu #

SubMenuを使ってみた。同一階層にたくさんページがあるとちょっと煩雑になるので、ページ構成を工夫しなきゃ…

MenuBarに次の行を追加

#includesubmenu()

各階層のSubMenuページを作成 (例: 未整理の階層)

''未整理''
#ls2_1(未整理/,relative,depth=1,except=SubMenu)

各階層の目次ページ。「except=SubMenu」を追加

#ls2_1(,new,relative,except=SubMenu)