PolyMoNote Developer
PolyMoNote開発サイドの情報の発信場
FrontPage
| 目次 |
|---|
サイトについて
"PolyMoNote"の開発日記など、開発者サイドとしての情報を発信や標準では搭載されていないプラグインとコマンドの配布を行っています。
あと、プラグインやコマンドの開発者向け情報も公開する予定です。
メニュー
- プラグイン
-
標準搭載されていないプラグインの配布場所。
プラグインの開発に関する情報も、ここで公開する予定。 - コマンド
-
標準搭載されていないコマンドの配布場所。
コマンドの開発に関する情報も、ここで公開する予定。 - 開発日記
- PolyMoNote開発日記。
- メモ書き場
- PolyMoNoteに関する雑多なメモや些細な情報。
最近の開発日記
| 2026/01 | ||||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
2013/05/24 [Fri]
負荷を減らす改変
前日の日記で少し触れましたが、久しぶりにPolyMoNoteの改変を行い、現在しばらく運用などをしつつテストしている段階です。
改変の内容的には、処理速度の向上・負荷減らしを目的としたパフォーマンスの向上になります。
自分のサイトをPolyMoNoteで運営・・・
というか、それが目的で作ったわけですが、とにかく自サイトで利用していて、現在の総ページ数が約1,200あります。
そして、ページ数が800を越えたあたりから、一気にサイト検索("SEARCH"コマンド)の時間がかかるようになり、1,000ページを越えたあたりから、DIARYプラグインなどの日記取り込み系プラグインを動かしているページの負荷が増えてきました。
通常の1ページだけだと、ページが増えても表示にかかる時間はあまり変わらないんだけど、DIARYプラグインのような他のページを複数取り込んで表示するようなプラグインは、やはり総ページ数の影響を受けてしまうようです。
まぁ、サイト内検索については、検索するページ数が増えればそれだけ作業量が増えるわけですから、時間もかかるのは当たり前なのですが・・・
そこで、少しでも処理にかかる時間を減らせるようにと、色々修正を試みたわけです。
最初は、ソースを見直しつつ地味な修正を繰り返して、サイト検索については最大1/3くらいかかる時間を短くすることに成功。
日記系については、最大10ページ分、他のページを取り込むことと、その分プラグインの実行数も多くなるので、そのあたりの見直し・・・
特に、日記のカテゴリページへのリンクを自動でやってくれるDIARYCATEGORY_LINKプラグインは負荷が多いようなので、このプラグインを中心に色々と修正。
それで、ある程度は早くなったんだけど、どうにもピンとこないというか、もっと根本的な処理速度の上昇がさせられるのではないかと。
それで、色々と調べてみた結果、処理の高速化のために利用しているキャッシュファイルへのアクセスが、ページ数が増えたことで、取り込み系プラグインで複数ページを取り込んで表示するようなページでは、他のページよりもページリストのキャッシュファイルにアクセスすることが多くなるため、かえって遅くなってしまうことがわかりました。
そこで、ページ表示に対してページリストのキャッシュファイルへのアクセスを一回で済ませられるように修正したところ、ページ表示の速度がかなり速くなり、DIARYプラグインを動かしているページで1/3~1/5、サイト検索については最大1/10まで速くなりました。
もうしばらく自分のサイトで動かしてみて、問題なければ配布しようかと思います。
ただし、処理の時間が増えだすのは、僕のように日記がメインで取り込み系のプラグインを多く利用していて、かつページ数がかなり多い場合なので、ページ数が多くても取り込み系のプラグインをあまり利用していなかったり、ページにはそのページのテキスト内容のみだと、処理はそう重くなりません。
2013/05/21 [Tue]
ver.0.9.51β@アップデート
せっかくなので開発日記とかもやってみるか・・・と、作ってみたけど、案の定ほとんど更新していませんね
今日、久々にPolyMoNoteのアップデート版を公開したので、ついでにちょっと記事でも書きます。
処理の実行の中には、その内容の完了や成功・失敗云々のメッセージを表示するものがあるのですが、そのメッセージ表示のタイミングによってエラーが発生したので、今回の更新はそちらを修正したセキュリティアップデートのみです。
実は、今年に入ったあたりから、あまりプログラミングが出来なかったのですが、ここ一~二週間ほどはPolyMoNoteのアップデート作業を中心に行っていました。
・・・で、その作業中に前述の不具合に気づき、正直かなり色々とソースをいじっていたため、中途半端な改変状態で公開するのもなぁというのがあり、あと正直まったく普及していないCMSなので、すぐに公開するかは悩んだのですが、セキュリティのことを考えるとそういうわけにもいかないので、とりあえず前バージョンからエラー部分のみを修正したものをアップすることにしました。
この不具合は"ver.0.9.50β"のみなので、それ以前のバージョンでは起きませんが、それ以前のバージョンが持つ不具合が改変されているので、もしご利用の方がいたらできるだけ新しいバージョンを導入いただければと思います。
ちなみに、現在の改変作業ですが、一応一通り済ませてテスト中になります。
機能的な追加はありませんが、パフォーマンス向上のためにスクリプトを多岐にわたっていじっているので、アップデートの公開はもうしばらくテストして様子を見てからになります。
2012/08/15 [Wed]
ver.0.9.32β@アップデート
先日、久しぶりに"PolyMoNote"のアップデート版を公開しました。
アップデート内容について詳しくは、こちらのリリース情報を見てもらうとして、重要度の高い変更としては、"index.php"で行っていた主だった処理を別ファイルに移して、"index.php"のソースは必要最小限にしたことでしょうか。
これは数ヶ月前に話題となった"CGI版PHPの脆弱性"の問題をうけて、修正することにしたものです。
脆弱性についての詳しい内容は、リンク先の記事を読んでみてください。
ちなみに、この脆弱性の問題はCGI版でのことで、"Apacheモジュール"や"FastCGI"で動いている場合は、その影響はありません。
正直、スクリプトサイドでできる対策はないんだけど、メインのスクリプトに記述するソースを少なくすることで、もしソースが覗かれても見える範囲はほとんどないに等しいので、少しはマシになるかなぁと。
PolyMoNoteのベースとなった元々のWikiエンジンが、メインのスクリプトに結構処理が集まっていて、PolyMoNoteでもそれを引きずっていたんだけど、前々からメインスクリプトは必要最低限のソースにして、インクルードする下位のスクリプトに移行させたいと思いつつ、ついそのままになっていたんですよね。
まぁ、気休め程度の対策ですけど。
この問題は、PHP側の問題で、スクリプトサイドからやれることが少ないというのが困り者ですね。
前述の紹介記事では、
当脆弱性は極めて影響が大きい反面、影響を受けるサイトは限られます。
とありますが、企業が運営しているネット向けサービスや公式サイト等でPHP製スクリプトを動かしているところは、"Apacheモジュール"で動かしているところが多いと思いますが、一般のお客さん向けのレンタルサーバの場合、意外とCGI版ってところがあるんですよね。
ちなみに、改変自体は結構前にしたのですが、もうひとつの改変のテストに時間を使っていたので、ちょっと遅れ気味になりました。
2012/01/15 [Sun]
ページキャッシュを実装
めんどうだなぁと思いつつも、いずれは付けたいなと思っていたページのキャッシュ機能をver.0.9.3βで実装しました。
一応、説明するとWiki記法で書かれた内容がHTML変換されてサイトの内容として表示されますが、そのHTML変換されたものをファイル保存して、ページが表示される時に、そのファイルを読み取って表示させることで、記法→HTMLの変換処理がなくなる分、ページの表示が速くなるというものです。
一部のプラグインの扱いをどうするかが悩みだったんですよね。
ページが更新されたときだけ表示内容が変わるものはいいんだけど、COUNTERプラグインのようにほぼページ表示毎に表示される内容が変わるものを、どう処理するかが。
以前のバージョンでも、いまのところ自分で使っていてそう重たいと感じたことはないんだけど、取り込み系プラグインで多くのページを取り込むと、どうしても通常のページよりも重くなるので、これでだいぶ負荷の軽減になると思います。
ただ、キャッシュの作成されるタイミングは、サイトの更新がされた後の初表示時です。
なので、更新後の一回目の表示はキャッシュ無効の設定時と変わりません。
これは、たとえばDIARYプラグインだと、外部から渡される値(GET)でページめくりをするため、同じページでも表示の内容がGETの値で変わるため、ページ本文の保存時だと、それらすべての内容に対応できないためです。
あと、サイトの更新がされたときに、すべてのページのキャッシュがリセットされるのは、サイト内のどれかのページが更新されるごとに表示内容が変わるプラグインがあるからです。
2012/01/06 [Fri]
プラグイン&コマンド配布
標準で付属していないプラグインとコマンドの配布を始めました。
とりあえず、それぞれひとつずつの公開です。
- CATEGORYプラグイン
-
ブログのカテゴリのようなページを作成できるプラグイン。
記述したページの下位ページをインクルード表示します。 - PERMISSIONコマンド
-
データ・添付ファイルの各ディレクトリ内のファイル・ディレクトリのパーミッションを再設定するコマンド。
"PN_SAFEMODE"の"0"モード専用。
今後も、なにか標準のものとは違うものを配布していければと思います。
2012年あけましておめでとう
少し遅いですが、あけましておめでとうございます。
ハッキリ言って、まったく普及していないツールなのですが、今年は少しは利用者が増えるとうれしいかなぁと。