#access #norelated * PukiWikiのメモ。 [#e907ca5f] - 基本的に、Pluginが充実しているので、結構便利。が、どんなPluginがあるのか良く分からないし、見付かりにくいため不便。なぜか[[Pukiwikiのサイト:http://pukiwiki.sourceforge.jp]]はめちゃ反応がにぶいし。 - Pukiwiki自身の単語検索(search)の弱さ・遅さにも辟易だなあ…。 - わかってきたが、tracker_listとかsearchとか、エンジンそのものが非常に遅いようだ。これは致命的かもしれない。PHPデフォルトの30秒という実行時間内に終わらないこともしばしば。 ---- #contents ** インストール [#l069ddfb] *** パーミッションについて [#j7e65f88] ユーザー自身が含まれるグループを書き込み可能にしておいた後、スーパーユーザーにディレクトリ全体のOwnerをapacheに変えてもらうのがよさげ。あとでpukiwiki.ini.phpをいじりたいときにNot Ownerなんて言われたら超めんどくさいので。~ いずれにせよ、少しめんどくさい。 *** 管理人パスワード設定 [#q73d7d90] pukiwiki.ini.phpにて&adminpassを適宜設定。 *** 編集時にパスワードを求める [#ad9da609] pukiwiki.ini.phpにて // Edit auth (0:Disable, 1:Enable) $edit_auth = 1; $edit_auth_pages = array( '##' => 'kei', ); とする。上の例では、全てのページがパスワード保護される。 *** WikiName/Autolinkの廃止 [#w83698fd] pukiwiki.ini.phpにて // _Disable_ WikiName auto-linking $nowikiname = 1; とする。McDonnaldsとかでオートリンクされるのがイヤン。 *** 秘密ページ [#xf925a84] ini.php において // Read auth (0:Disable, 1:Enable) $read_auth = 1; $read_auth_pages = array( // Regex Username '/^:.*$/' => 'kei', などとやると、":"から始まるページはkeiのパスワードを要求することができる。[[RecentChanges]]やList of pagesなどにも表示されない。 *** deldel.inc.php [#h4ccdff1] http://fullmetal.dip.jp/pukiwiki/ の、自作/プラグイン にて配布しているdeldel.inc.phpをゲット。日本語がEUCのままなので、ujconvにてUTF8に変換し、pluginディレクトリにセット。 http://meteora.ucsd.edu/~kyoshimura/?cmd=deldel とやると一括削除が可能になる。便利。 ***Mixiの外部ブログに登録する [#x38ed493] mixiでは、mixi日記を使わず「外部ブログ」を日記のところに表示させることができる。よくよく調べると、単にRSSを食わせているだけっぽいので、ここのようなpukiwikiページも外部ブログに登録できる、ってことだ。 というわけで、興味本位でやってみた。手順は以下のとおり。ちなみにmixiのページは[[ここ:http://mixi.jp/show_friend.pl?id=12520375]](mixiログインが必要)。 + mixi会員になる(誰かに招待されましょう) + 「設定変更」-「日記・ブログの選択」-「その他」 + 「設定変更」-「日記・ブログのURL」-(例)http://meteora.ucsd.edu/~kyoshimura + 「設定変更」-「RSSのURL」-(例)http://meteora.ucsd.edu/~kyoshimura/?cmd=rss10pp&page=Normal%20Diary このページではrss10ppを入れているので、デフォルトの場合はその部分を「rss10」にする。pageを設定するとそのページ以下のページのみがfeedされる。設定しないとすべてのページがfeed。 Mixi側でのRSSの更新は4時間ごとらしいので、すぐは更新されないことに注意。 ** 内容 [#oa47db78] *** attachref.inc.php [#t8269eb4] デフォルトでは、画像等を貼り付けたいときはUpload→ファイル名を確認→&ref埋め込み、という作業が必要でめんどくさい。 [[ここ:http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fattachref.inc.php]] にある、attachref.inc.phpは、最初の文章に&attachref;を埋め込んでおくと、その後好きなときにUploadすれば自動的にrefを引いてくれるので、上記の3段階の手間の1.5手間くらい削減してくれる。 手順。 +[[最新版(v0.14?):http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fattachref.inc.php]]をゲット、plugin/に保存。 +170-80行目くらいにある (旧)$pass = array_key_exists('pass',$vars) ? md5($vars['pass']) : NULL; の記述を (新)$pass = array_key_exists('pass',$vars) ? $vars['pass'] : NULL; とする。普通のattachプラグインにかかっているパスワードとバッティングするのを避けるため。 *** RSSでdescriptionを出力する [#j410b40c] デフォルトのRSSでは、更新ページのタイトルのみがフィードされ、つまらない。Google Desktopなどで購読する際にはdescriptionもあったほうが良い。というわけで、[[Epilogueさんのrss10pp.inc.php:http://logue.tk/?Web%E7%B4%A0%E6%9D%90%2FPukiWiki%2Frss10pp.inc.php]]を導入。入れ方は、 +pluginディレクトリにダウンロードして +lib/http.phpにて$_LINK['rss10']の部分を変更(上記リンクの指示と少し異なる) $_LINK['rss10']="$script?cmd=rss10pp"; でおしまい。 これで、ページ右下のRSSボタンを押すと[[このようなdescriptionつき更新一覧:http://meteora.ucsd.edu/~kyoshimura/?cmd=rss10pp]]がでる。また、Google Desktopのウェブクリップオプションでhttp://meteora.ucsd.edu/~kyoshimura/?cmd=rss10ppを追加すれば、更新のたびにDescriptionつきでポップアウトしてくれる。 ただ、ページの上のほうのテキストを抜粋しているだけなので、ページの中での新たな更新などはdescriptionに入らないのね。 ''(2007/06/23追記)'' どうも、http://www.feedvalidator.org/ によるともとのrss10ppはvalidなrssではないみたい。generator、dc:creator、あと著作者のページ(宣伝)を書くところが問題、ということなので、それらをすべて削除した。 そして、&ref(http://meteora.ucsd.edu/~kyoshimura/image/valid-rss.png); が下のRSSフィードボタンに表示されるようにした。(image/rss.pngを置き換えた) *** calendar2/calendar(teananさん版) [#nc979921] [[ここ:http://teanan.homeip.net/pukiwiki/?%BC%AB%BA%EE%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%2Fcalendar.inc.php%28%B2%FE%29]] から取得、eucでかかれているのでUTF-08に変換。 [kyoshimura@meteora ~/http]$ ujconv calendar.inc.php.0.15.txt -t utf8 > plugin/calendar.inc.php calendar2との主な違い(上記HPに記載のないもの) - カレンダーの日付をクリックしたとき、記事がないとEditになる(calendar2)~ 常に閲覧(calendar) - templateというページを用意しておけば新規記事のときそのページが読まれる(calendar2)~ テンプレートは使えない(calendar)。 *** 改行・正規表現・その他ちょいネタ。 [#d2abdb5a] 行末に"~"で改行。~ 正規表現はどうするのかなあ…。コード表で相当するのを直書きするのが良いようだ。めんどくさ。("&"は"&amp;")~ &sad;や&bigsmile;を使うとこういうの(&sad;&bigsmile;)が出る。;)や(^^;でもでるみたい ;) (^^;。でも、後者のは、直前に空白がいるみたいだ。 *** ページ削除 [#n04e5756] Editの際、空にしてUpdate。 *** 画像の一覧表示 [#ub60acf3] プラグイン#jphotoを使用(オプション)。ポップアップされるのとか、フラッシュそのものが嫌だったりする。 *** 階層内のページ一覧表示 [#aada97af] #ls2が使える。見出しまで表示したいときは#ls2(,title)とする。 *** も少し詳細な階層内のページ一覧表示 [#eb5ce71c] #tracker_listが使えそう。詳細不明。 つくってみたが、trackerはうまく作動しても、tracker_listのほうに大きな問題があるみたいだ。それを使いたいのに…。本文が長いとlistが止まり、[body]という項目があるとなにやら勝手に反応する。(予期していない項目が[body]を食っていたりする。) やれやれ、どうしたもんだか。長くなりそうなので[[大項目>#yba4bb0c]]を作った。 *** 画像を一度にアップロード [#l720d6f3] ひとつずつしかできない。tarでまとめてアップし、そこで解凍させるらしい・・・~ [[ここ>#t07bbf2d]]参照。 *** 目次の表示 [#u456b65f] #contentsを挿入(デフォルト) *** カウンター [#dd2b9ee5] MenuBarに RIGHT: total: &color(green){&counter;};~ today: &color(green){&counter(today);};~ yesterday: &color(green){&counter(yesterday);};~ などと埋める。 *** アクセス解析 [#b30503a6] オプションプラグイン#accessでページごとのログ取り、#accessviewで閲覧。~ #accessviewは一つ一つのページを埋め込む必要があって、めんどくさい。~ 秘密ページにもしたいが、やりかた不明→できた。あと、日本語でしか表示されない上に、エンコードに不備がある。(UTF-8が使われてない)~ - 修正点 -- [[ujconv:http://tech.ymirlink.co.jp/]] -f euc -t utf8 '''infile''' > '''outfile'''によって、UTF-8に書き換え。 -- あと~ function readlog_accessview($page){ //global $timestamp,$ip,$host,$user_agent; というようにglobal〜のところをコメントアウト。(そうしないと、カウントが変) -[2007/11/03] プラグインではなく、専用ツールを使うことにした。詳細は[[BBClone導入>./bbclone]]のページ参照。 *** 容量制限・一括添付 [#t07bbf2d] - 結局、サーバー側のPHPの容量制限に引っかかるらしく、500KBが上限のようだ。そうじゃない場合の変更は、plugin/attach.inc.phpの''upload_max_filesize''や''PLUGIN_ATTACH_MAX_FILESIZE''をいじる。 - ひとつのファイルずつしかuploadできないので、http://cubic9.com/PukiWiki/ で配布されているattach、ref改造パッチをあててみた。 -- が、どうもUTF-8版には対応していないらしく、コメント等に日本語が含まれる箇所でパッチできない。何ヵ所かは手動で書き換えた。 - でも、tarしても500KBだと大してまとめられないので、やっぱりめんどくさい。scpで一括転送しよ…。 - 上記の問題は、apacheのphp.confにあるLimitRequestBodyの設定にあることがわかった(デフォルトで500KB)。/etc/httpd/conf.d/php.confでその制限をあげてやるか0にすると解決する。(2007/06/07追記) - さらに変更箇所が必要なことが発覚。/etc/php.ini内の、memory_limit, post_max_size, upload_max_filesizeをそれぞれ変更。その後PHPを再起動。(2007/06/08追記) *** 見出しごとの編集 [#y873f94d] - いろんなPukiWikiのページで実装されているのに、本家でやりかたが載っていない。(載っているけど、最新版での方法等がしっかり示されていない。) - 色々調べて、[[ここ>http://fullmetal.dip.jp/pukiwiki/index.php?memo%2F%E6%94%B9%E9%80%A0%2Fparaedit.diff%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6]]で配布されている1.4.7版の[[パッチ>http://fullmetal.dip.jp/pukiwiki/index.php?plugin=attach&refer=memo%2F%E6%94%B9%E9%80%A0%2Fparaedit.diff%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6&openfile=paraedit20060527.diff.gz]]が使えることが分かった。 [kyoshimura@meteora ~]$ cd http [kyoshimura@meteora ~/http]$ patch -p0 --dry-run --verbose < paraedit20060527.diff [kyoshimura@meteora ~/http]$ patch -p0 --verbose < paraedit20060527.diff で見出しごとに鉛筆マークが出るようになれば成功。~ 結構いろんなファイルを書き換えている。ちょっとどきどきだ。 *** コメント挿入 [#o574bca8] - #commentは、一番下にしか書き込めない。段落を下げるには、コメント記入の際行頭に"-"をつける。改行を含むコメントは、どこかで作ってからコピペ。(普通にEnterを押すと投稿されてしまう。→pcommentも同様。) - #pcommentは、別ページに書き込む。replyというパラメータをつけると古いコメントの真下に書き込むことができる。 #pcomment(reply) - 別ページに#pcommentを埋め込んでおいて、できたコメントページをまたさらに別のページで#include('''コメントページ''',notitle)すると、そのページで入力欄なし・投稿時間情報ありなコメントを表示することができる。要するに更新記録などを表示するのに便利。[[TOPページ>/]]のNews, Updateがそう。#pcommentは管理ページ('':''から始まるページ。このサイトだと:Log←SPAM対策のため、非リンク)にまとめるとさらに便利。(2007/06/06追記) *** コメントプラグインで改行を可能にする (comment2/pcomment2)[#wfe59627] デフォルトのcomment.inc.phpおよびpcomment.inc.phpでは、inputタグのタイプで"text"を使用しているため、入力時に改行が使えない(Enterキーを押すと投稿されてしまう)。コピペも一行しかされない。というわけで[[ここ:http://www.miasa.info/index.php?%C8%FE%CB%E3Wiki%A4%C7%A5%B7%A5%B9%A5%C6%A5%E0%C5%AA%A4%CB%BD%A4%C0%B5%A4%B7%A4%C6%A4%A4%A4%EB%C5%C0#nb4e09c0]]や[[ここ:http://pukiwiki.sourceforge.jp/dev/?BugTrack%2F631]]を参考に、それぞれを改造した。 ほとんど[[美麻wiki:http://www.miasa.info/index.php?%C8%FE%CB%E3Wiki%A4%C7%A5%B7%A5%B9%A5%C6%A5%E0%C5%AA%A4%CB%BD%A4%C0%B5%A4%B7%A4%C6%A4%A4%A4%EB%C5%C0#nb4e09c0]]さんのいうとおり書き換えたが、元の一行comment、pcommentも保存しておきたいのでそれぞれcomment2、pcomment2というプラグインにした。 改造のポイントは次のとおり。 - プラグインファイルの名前を変えているため、いくつかのfunction名も変更する。 - "\s+$" (空白文字(改行+スペース+タブ)が1つ以上最後まで続く)を""(何もなし)で置換し、 - "^\s*\n" (空白文字から始まって改行で終わる=空白行)を"&br;"で置換する。 -- ここは、オリジナルの改変とは異なる。(オリジナルでは#br\nで置換→完全な空行が入る) 改造後のファイル:&attachref(comment2.inc.php); &attachref(pcomment2.inc.php); ~ -インストール:pluginディレクトリに保存 -呼び方:#comment2や#pcomment2で呼ぶ -改行方法:通常のPukiWiki編集と同様に、1行以上の空行を入れる。 ** 外観(skin) [#ob17f74e] *** ヘッダーの画像変更 [#cf3cc9ba] ./image 内に画像を置き、pukiwiki.skin.phpにて // Set site identities $_IMAGE['skin']['logo'] = 'xxxx.jpg'; と変更。 *** ヘッダー(ページ一番上)のアドレスが表示されているところを階層状にする. [#a7680b5b] pukiwiki.skin.php内にて if (! defined('SKIN_DEFAULT_DISABLE_TOPICPATH')) define('SKIN_DEFAULT_DISABLE_TOPICPATH', 0); // 1, 0 とする。 *** MenuBarの箇条書きを無くす [#gb5276b7] pukiwiki.css.phpにて /* kei */ div#menubar ul li { list-style-type:none; } などと足す。 *** ヘッダー部分の「Edit」「New」などのコマンド表示をなくす [#y0b46c1c] Navigation Barというらしい。pukiwiki.skin.phpにて if (! defined('PKWK_SKIN_SHOW_NAVBAR')) define('PKWK_SKIN_SHOW_NAVBAR', 0); // 1, 0 の部分を0(Off)とする。下にもあるしね。 *** ブラウザからSkinを変更できるようにする [#bf40364d] それぞれのスキンを別のディレクトリにおいて(例えばskin/i_blue)、index.phpの代わりのページ(例えばi_blue.php)にて''SKIN_DIR''を指定するようにする。 大体のスキンはそれで動くが、中には動かないものもある(skin直下にpukiwiki.skin.phpがないと、リンクが動かないとか。例えばGS)。 - [[i_blue:http://meteora.ucsd.edu/~kyoshimura/i_blue.php]] / [[i_orange:http://meteora.ucsd.edu/~kyoshimura/i_orange.php]] by [[ikuyubon-san:http://wiki.ikuyubon.com/sample/]] [[ikuyubon-san:http://wiki.ikuyubon.com/sample/]]のページからwgetし、入手したファイルはskin/i_blue(またはi_orange)に保存。index.phpをコピーしてi_blue.php(i_orange.php)を作成、その中で''SKIN_DIR''をskin/i_blue(またはi_orange)と指定。 - [[simple2:http://meteora.ucsd.edu/~kyoshimura/simple2.php]] by [[hirokasa-san:http://hirokasa.info/info/index.php?skin/simple2]] [[hirokasa-san:http://hirokasa.info/info/index.php?skin/simple2]] のページからwgetし、simple2.phpをpukiwikiディレクトリにセーブ。 - [[orangebox:http://meteora.ucsd.edu/~kyoshimura/orangebox.php]] by [[ari-san:http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%82%B9%E3%82%AD%E3%83%B3%2FOrangeBox]] i_blueなどと同様だが、UTF-8化されていない。 - [[cloudwalk:http://meteora.ucsd.edu/~kyoshimura/cloudwalk.php]] by [[ari-san:http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%82%B9%E3%82%AD%E3%83%B3%2Firid]] skin/iridのpukiwiki.skin.phpからはiridwire、orangebox、cloudwalkの3種類が選べるが、ブラウザからは選べないため、どれかのみ。UTF-8未対応。日本語をいくつか英語に変えた。 - [[GS:http://meteora.ucsd.edu/~kyoshimura/gs.php]] by [[yiza-san:http://www.yiza.net/index.php?PukiWiki%2F%A5%AA%A5%EA%A5%B8%A5%CA%A5%EB%A5%B9%A5%AD%A5%F3%2FGS2]] skin直下にしか置けない。色のバリエーションも豊富。 - [[original:http://meteora.ucsd.edu/~kyoshimura/orig.php]] デフォルト。 ** tracker.inc.phpについて [#yba4bb0c] [[study]]のページでは、 #tracker(study) #tracker_list(study) を使っている。 :config/plugin/tracker/study 及びその下のform・page・listというページ(ファイルではなく、[[Wiki上のページ>http://meteora.ucsd.edu/~kyoshimura/?:config/plugin/tracker/study]] のこと。)を適宜いじくる。 trackerを使いはじめてから:configのほうで項目を増やすと、すでにある投稿ページのtracker_listが壊れる(データベースとの整合性がとれなくなる?)可能性があるので要注意。~ が、カテゴリーの要素を増やすことには対応できているようだ。 また、はっきりとした原因は不明だが、tracker_listによる検索のパワー不足でPHP実行のタイムアウトが頻発する模様。ページの内容が増えると加速度的に処理時間がかかるようだ(感じとしては、ページ全体に項目毎のパターンマッチングをかけている?)。 後で追加した内容でも、同様の問題が起きる。というわけで、 - trackerする項目は極力減らした方が良い - trackerのtypeも、titleなどはやめてtextにした方が良い 気がする。[[study]]は現在10ページ・新規6項目(+いくつかの予約項目)で2.2秒。 ただ、defaultの設定(#tracker_listのみ)だと、新規項目数は5とそんなに変わらないのに0.3秒程度。謎。 ** SPAM対策について [#z8c5dd3f] ***戦いの経緯 [#r0b48dd0] -trackerプラグインでは、ページをFreezeしていたりEdit認証をつけていたりしても、誰でも自由に投稿できてしまう。そのような理由から、[[study]]のページがSpamに狙い撃ちされるようになった。犯人は208.36.144.9。(2007年4月ごろから) -投稿フォームを削除したり、閲覧制限つきページに移動させてみても、止まらない。Backupされているところから攻撃してくるのか、Cashからかはわからない。(trackerでは、どの投稿フォームから来ているかはわからない。) -http://www.ark-web.jp/sandbox/wiki/190.html を参考にAkismetフィルタを使ってみた。(2007/06/02) -- ログがないため、動作確認しにくい。 -- というわけで動作確認せず様子をみてみたが、うまく働いていない模様。 -http://note.sonots.com/?PukiWiki%2Fakismet.inc.php を参考に上記フィルタのPlugin版を入れてみた。(2007/06/16) -- 手持ちのスパムデータを送信してみたところ、うまく弾かれた。ログも残った。 -- 例の敵からの送信はまだ。 -- 空ページが生成されてしまうようだ。ちょっとやっかい。 -- 強すぎて、自分のページ(例えばこの[[IT memo/wikimemo]])もSpamと判断されてしまう。 --- reCAPCHAを通ると、パラグラフ単位の変更なのにそれがページ全体となってしまう。(通常のEditだと問題ない) --- reCAPCHAの認証がうまく通らない。(ソースの中にSpam疑惑があるたびに聞いてくる??→そうではなく、SPAM取り消しが受け付けられておらず、自動ポストのたびにSPAMと判定されている、ということのようだ。) - というわけで、trackerにも認証をつけることとした。(tracker.inc.phpを[[ここ:http://pukiwiki.sourceforge.jp/?Q%EF%BC%86A%2F%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Ftracker%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3#x7bc40a0]]に従って直接編集) --結局フィルタいらんかったやんけ!とは言ってはいけない。 - [[sonotsさん:http://note.sonots.com/?Note%2FPukiWiki%2Fakismet.inc.php]]に直接泣きついてakismet.inc.phpを改良してもらう。(2007/06/17) -- パラグラフ単位の変更に対しては、edit.inc.phpをいじることで対応できそう。 -- しかし、すでにある問題(空ページ生成問題とreCAPCHA認証通らない問題(=SPAM取り消し通らない))が問題だと言うことに気づいた。 --- 空ページ生成問題:trackerの投稿では、reCAPCHAの認証に行った時点で空ページができてしまう。 --- SPAM取り消し通らない問題:スパムと認識されてしまうあるデータを非スパム報告しても、再度スパムと認識される。 - ウチだけの問題なのでは…と悩み中。。。 - SPAM取り消し通らない問題はAkismetの仕様みたい。そこはどうしようもないのだが、reCAPCHAをクリアしたらフィルタを介さないように修正してもらった。 - trackerの問題も、ソース見たらわかった。ページ内容を送信する前にtouchしていたので、そこをコメントアウト。今のところ弊害なし。 - これで、SPAM対策はほぼOK?(2007/06/19) -- ある朝、スパム投稿が2つも作られてて効いてないやん~、と思ってログを見たら、30個くらい挑戦した形跡があった。完璧にするのはむりやんな。(2007/06/20) *** kcaptcha導入 [#s7f19bcd] -akismetをすり抜けるSPAMがたびたびあるので、[[kcaptchaプラグイン:http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fpcomment_kcaptcha.inc.php]]を導入することにした。 -詳しい手順は[[./kcaptcha]]を参照。 -[[この日記>Normal Diary/2007-08-10]]にも書いてあります。 ---- #comment2_kcaptcha