Pukiwikiの検索で、ひらがなとカタカナを区別するように。

 創作活動するのにPukiwiki使ってるんだけども、知己に「"テイル"(人名)で検索したら"~~している"だのが引っかかって使い物にならない」といわれた。「見つめテイル、感じテイル、見守られテイル」という、いろんな意味で狭いジョークが現実にッ。「君、微笑んだ夜」は名曲!(お。

 で、ググってみたら、半角と全角文字を同一視するついでにそういう風にしたそうな。うーん、半角全角はわかるけど、ひらがなとカタカナって別モノだと思うんだけどなー。そもそも同一視されなくても、自分でor検索すればいいんじゃないかなー。同一視すべきと思える具体例が浮かばないなー。

 というわけで改善方法だが。検索機能の実体はプラグインではないので本体改造。といってもlib/func.phpの2か所書き換えるだけ。だけじゃないかな。ま、ちょっと覚悟は(ry
 175行目あたりにある$word_nm = $mb_convert_kana($word, 'aKCV');aKCVaKVに。195行目あたりの$or[] = preg_quote($mb_convert_kana($char, 'c'), $quote);を行ごとコメントアウト。これだけ。

 FTPの問題か知らんが、はじめ、同じ改造したはずなのに上手く行かなくて頭を抱えてしまった。思考錯誤の果てにもう一度やり直したらあっさり通ったという……。


[PR]
by lordnoesis | 2009-12-01 20:05 | テクノロジ | Trackback | Comments(0)

今さらPageReadingのパワァを思い知る。

 pukiwikiのページ一覧表示は"記号"、"A"~"Z"、"日本語"という分類がなされる。で、設定をONにすることで"日本語"を"ア"~"ン"といった具合に、さらに細かく分けることができる。
 読み仮名は設定がONの時にページ一覧を表示すれば、「:config/PageReading」に自動的に登録される(更新も然り)。KAKASIなどの漢字かな変換ツールが設定されていればベターだが、なくても「:config/PageReading/dict」の設定を元に適当にやってくれる。で、読み仮名が間違ってる時だけ手動で前者の方を変更すればよい。


 ――のだが、pukiwikiを運用し始めて早幾年、この機能が動作した覚えがないっつー。まあ別になくても困らんのでほっといたんだが。
 で、何となくpukiwiki.dev眺めていたら衝撃の事実が! pukiwiki.iniの「$pagereading_enable」をONにせにゃならんかったのかッ!(そら動作せんわ!

 読み仮名が$non_listに引っかかるように指定して、任意のページ非表示にできないかなと思ってやってみたら、できたできてなかったorz


[PR]
by lordnoesis | 2008-03-25 22:49 | テクノロジ | Trackback | Comments(0)

AutoLinkとBracketNameをベースネームのみにしてみた。

PukiWiki公式:続・質問箱/441

 質問箱にAutoLinkをベースネームだけにする(※1)方法がのってて中々に素敵だったので、ブラケットネームにも拡張してみた。エイリアスを指定していない場合のみ発動するように。./をエイリアスに指定した場合のみ発動するように。

※1 "AAA/BBB"という文章がオートリンクされた場合、本来なら"[[AAA/BBB]]"相当になるが、"[[BBB>AAA/BBB]]"相当になる。

 if ($name == '' || ! preg_match('/^' . $WikiName . '$/', $name)) {

 if ($alias == '') $alias = $name . $this->anchor;
+ if ($alias == './') $alias = preg_replace('/.*\//','',$name) . $this->anchor;

 if ($name != '') {

 ……たぶんこんな感じ(自信なさ気だ。

 これで"[[./>AAA/BBB]]"と書くだけで表示が"[[BBB>AAA/BBB]]"相当になる。

 これで以前よりは階層化への抵抗がなくなったかな。階層化するとオートリンクの恩恵受けにくいのは相変わらずだけどな!(Plus! i18nに移ろうかなー)。

 でも階層で表記する=ページ名を意識してるってことで、そういう場合、大抵はブラケット使うよなぁ……。


[PR]
by lordnoesis | 2008-02-25 18:36 | テクノロジ | Trackback | Comments(0)

Pukiwikiの添付ファイル。

 pukiwikiの添付ファイルって、attachにあるファイルを探すだけなんだなー。逆にいえばファイル名に気をつければ、attachに放り込むだけで添付できるということか。CGIによるアップロード禁止の鯖だからどうしようかと思ったが、これで問題は回避できる。えかったえかった。

 ファイル名は、「添付先ページ名」と「添付ファイル名」を区切り文字を除いたURLコード――ってつまりただの16進数(大文字。EUC版はEUC)。そしてその二つを_でつなげたもの。「FrontPage」に画像「001.jpg」を添付したとしたら、その画像のファイル名は「46726F6E7450616765_3030312E6A7067」になる。

なんか公開してみた。


 pukiwikiが更新日時にファイルシステムのタイムスタンプを利用しなくなる日はやってくるのだろうか。
 FTPでパーミッションいじっただけで更新扱いするのやーめーてー。


[PR]
by lordnoesis | 2007-08-02 01:07 | Web | Trackback | Comments(0)

comment.inc.phpを複数行対応に(ついでにスパム対策もね☆)

美麻Wiki美麻Wikiでシステム的に修正している点#comment.inc.php

 ふとコメント中で改行したくなった。&br;使わずに。かつてpcommentには自力で実装したのだが、どうせならスパム対策もオマケにと上記を実装した。ただpcommentならともかく、commentが複数行だと違和感があるので(頻繁に使うし、シンプルなイメージ)、1行でもTextAreaになるようにしておいた。それと空改行は#brでなく行頭~に書き換えるようにしておいた。


[PR]
by lordnoesis | 2007-05-20 16:30 | Web | Trackback | Comments(0)

PukiWiki+DBの話。

 Pukiwikiのファイルアクセスをデータベースに置き換えるPPDBというものがある。DBならページ数が1k単位でも安心?

 PPDB公式wikiがあり私も利用しているRibbon Networkのサービスは、PHPが使え、ユーザー認証も許可されておりさらに無料と、実に私好みなのだが、CGI/PHPが生成するファイルは500kB未満でないとならない。つまりpukiwikiの各ページも500kB未満でなければならないが、PPDBを使えばこれを解決できる。件の鯖ではSQLiteが使えるので、PPDBを導入すれば前述の制限は関係なくなるのだ。――とはいっても、プレーンテキストで500kB超えるなんてそうそうないとは思うが。

 なおPPDBを導入するとファイルを操作する類のプラグインが動作しなくなる。例えばファイル添付を行うattachなどである。まあattachは件の鯖の場合、そもそもPHPのfile_uploadsが許可されていないので、最初から利用できないが。
 wikiフォルダ以下のテキストを直接操作することもできなくなる。これはどうしようもない。

 PPDBは本当にそれだけの機能しか含まないので、既存のwikiフォルダの中身を一気に移植するだとか、Pukiwikiを介さずに直接内容を書き変えたい(※1)場合には、自分でDBをいじる必要がある。

 Dumpでリストアすれば……と思ったが、だめやった。Dumpは素直に解凍してるだけだから、wikiフォルダが展開されて終わり。

 wikiテキストをDBに書き込むソフト作ったけど、PPDBの動作が不安定だったので、結局導入取りやめたっつー……。


[PR]
by lordnoesis | 2007-05-09 15:23 | Web | Trackback | Comments(0)

table_editでlabel要素を指定してみた。

 table_editでテーブル編集してたら、「タイムスタンプを変更しない」などのラベルをクリックしてもチェックボックスにチェックが入らないのが気になったので、label要素を指定しといた。
 ソースを「checkbox」で検索して見つかったinputにidを追加して、ラベル名をlabelでくくっただけだが、その効果は計り知れないッ(いいすぎ。


[PR]
by lordnoesis | 2007-02-10 09:34 | テクノロジ | Trackback | Comments(0)

pukiwikiのtable_editプラグイン。

PukiWiki-official自作プラグイン/table_edit.inc.php

 テーブル編集を少しだけ楽にしてくれるtable_editプラグイン(追加や編集が目立つのが玉に瑕)だが、これってヘッダ行指定とか無視してとにかく「一番最初に記述されている行をテンプレートにする」のな。今更気づいた。

 というわけで、今まで「ヘッダ/テンプレ/内容」という順番だった表を「テンプレ/ヘッダ/内容」に変更した。こうすればテンプレが有効になる。
 なおヘッダ行はhtmlに変換する際に、pukiwikiが正しい位置(tbodyの前)に直してくれる。

 ……なぜテンプレ=ヘッダではないのか。それは、表のキャプションをヘッダに指定してるからなんだね(えー。

 わ、私のせいじゃない! pukiwikiがcaption要素を記述できるようになってないのが悪いんだー!!(みゃー。


[PR]
by lordnoesis | 2007-02-05 21:46 | テクノロジ | Trackback | Comments(0)

Windows環境でpukiwikiを使う時に便利 / pukiwikiが真っ白に

 Pukiwikiの話題をふたつー。

Windows環境でpukiwikiを使う時に便利

 我が家のPCではpukiwikiが動いてます。

 友人と共同作業するために開放してあるのですが、私にとってはローカルなわけで。大量にページを更新したり、一括置換するのには鯖を通さないで直接.txtを編集した方が高速。
 そんな状況で便利なのが以下のソフト。

Vector:ひとりWiki(WindowsNT/2000/XP / インターネット&通信)MASのページ
Vector:複数行置換(Windows95/98/Me / ユーティリティ)INASOFT
Vector:日付を戻そう(Windows95/98/Me / ユーティリティ)reicot.com


 編集時に便利なのが「ひとりwiki」。
 ひとりwikiは様々なwiki文法に対応している、スタンドアロンでの使用を前提にしたパーソナルなwiki。これでpukiwikiのwikiフォルダを開くわけです。
 ネイティブな実行ファイルなのでPHPより早いんですが、各文法を完全にサポートしているわけではないので注意。pukiwikiのAutoLinkとか、高度なテーブル記法とか、当然プラグインとか通りませんが、本文の編集だけなら問題ありません。
 ブラウザ的なページ移動(前のページに戻る)とか使えません(最近のver.なら「戻る」は使える)。「最近」タブを駆使してください。


 一括置換もwikiフォルダを直接処理すればよいわけですが、pukiwikiの.txtの文字コードはEUC-JPなので、EUCに対応した一括置換ソフトが必要です。
※ UTF-8版pukiwikiもありますが、ひとりwikiはEUC-JPにしか対応してなかったりで。ウチはEUC版。
 私が使ってるのは「複数行置換」。他の自称EUC対応ソフトはなぜか置換できなんだ……。


 しかしここで注意したいのがタイムスタンプ。ひとりwikiも複数行置換もファイルのタイムスタンプ(プロパティから見れますね、更新日時)を更新します(ていうかタイムスタンプってそういうものですが)。
 pukiwikiはファイルのタイムスタンプを更新チェックに使っているので、内容的な意味のない小さな修正でも「最新の*件」にデカデカと。こいつぁ困る。

 そこで活躍するのが「日付を戻そう」。
 こいつはある時点のタイムスタンプを記録しておいて、あとで書き戻しできるソフト。ようするに編集前にタイムスタンプを記録しておいて、編集後に書き戻してしまえばいいわけですな。


 他に.txt直接編集の注意点としては、pukiwikiを通さないとpukiwikiのリンクキャッシュが更新されないので、relatedプラグインなどがまともに働きません。"?cmd=links"でリンクキャッシュを手動更新しましょう。

 さあみんなもレッツトライ!(ローカルのWindows鯖でpukiwiki動かしていてる人間がどれだけいると。

PHPがタイムアウトしてpukiwikiが真っ白に。

 最近(もう結構前?)、pukiwikiでページを編集すると真っ白になることが。でもリロードすると編集自体には成功してるようなので放置。

 しかし。リンクキャッシュを更新すると確実に真っ白になることが判明。こら参ったと調査を開始。

 調べたところ、PHPがタイムアウトしてるのが原因のようだ。リンクキャッシュ更新の際にpukiwikiは制限値を再設定してタイムアウトを防いでいるのだが、再設定できなくなった模様(PHPの仕様変更?)。
 というわけでphp.iniの"max_execution_time"を"180"に増やしてことなきを得る。


[PR]
by lordnoesis | 2007-01-09 08:21 | テクノロジ | Trackback | Comments(0)
ブログトップ | ファンになる