Nucleus
Jeans & Development | 電子ブロック工房 | 三日坊主 | フロントページ |
スキン専用プラグイン [Nucleus]
2007年5月7日
スキンに専用のプラグインが必要なとき、プラグインのインストールを行わずに doSkinVar/doTemplateVarの呼び出しを実現させるための仕組み。
製作中の、Nucleus版フォーラムで使う予定であったが、実際にプラグインをインストールする必要がありそうなので、このルーチンは削除の予定。うまく働いていたのでコードを捨てるには忍びないため、ここにメモ。
製作中の、Nucleus版フォーラムで使う予定であったが、実際にプラグインをインストールする必要がありそうなので、このルーチンは削除の予定。うまく働いていたのでコードを捨てるには忍びないため、ここにメモ。
デバッグ用msgbox()関数 [Nucleus]
2007年5月4日
config.phpの冒頭に、以下のコードを追加。
関数名は、『fprint』でも何でも、好きなものを…。
function msgbox($text){ echo '<script type="text/javascript">/*<![CDATA[*/'."\n"; echo 'var confirm_canceled;'."\n"; echo 'if (confirm_canceled!="yes") {'."\n"; echo ' if (!confirm(unescape("'.rawurlencode($text).'"))) confirm_canceled="yes";'."\n"; echo '}'."\n"; echo '/*]]>*/</script>'."\n"; }
関数名は、『fprint』でも何でも、好きなものを…。
Nucleus 3.3 SQLite [Nucleus]
2007年5月3日
SQLite版 Nucleus 3.3 を、フォーラムにアップロードしました。
SQLite ラッパー 0.8.5 を採用しています。以下の特徴があります。
1.SQL クエリーのパフォーマンスがアップ
ito-yuさんご指摘のように、『PRAGMA short_column_names=1』を始めに実行するようにしました。これにより、SQLクエリー実行時のPHPのコード実行量が減り、パフォーマンスがアップしました。
2.セキュリティー強化
SQLiteでは『;』を用いることで、2つ以上のクエリーを一度のクエリー文で実行することが出来ます。これは、SQL インジェクションに非常に弱いため、MySQLと同様こういった2つ以上のクエリーを禁止するようにしました。
3.インストールの高速化
インストール時に、『PRAGMA synchronous = off;』を実行することで、インストールが高速化されました。
4.バグフィックス
主に、ALTER TABLEでのバグフィックスを行いました。
SQLite ラッパー 0.8.5 を採用しています。以下の特徴があります。
1.SQL クエリーのパフォーマンスがアップ
ito-yuさんご指摘のように、『PRAGMA short_column_names=1』を始めに実行するようにしました。これにより、SQLクエリー実行時のPHPのコード実行量が減り、パフォーマンスがアップしました。
2.セキュリティー強化
SQLiteでは『;』を用いることで、2つ以上のクエリーを一度のクエリー文で実行することが出来ます。これは、SQL インジェクションに非常に弱いため、MySQLと同様こういった2つ以上のクエリーを禁止するようにしました。
3.インストールの高速化
インストール時に、『PRAGMA synchronous = off;』を実行することで、インストールが高速化されました。
4.バグフィックス
主に、ALTER TABLEでのバグフィックスを行いました。
新手のスパムに注意 [Nucleus]
2007年4月23日
サーバログを見ていて、おかしなことが起こっていることに気がついた。
このブログのあるページへのアクセスで、リファラとして Google のサイトの検索結果ページが指定されているのであるが、ここで用いられている検索語が、当ブログとはまったく関係のない言葉なのである。仮に、ここで用いられている検索語を『そんな 検索語は 含まれていません』だとしよう。当ブログでは、『そんな 検索語は 含まれていません』という表現はまったく使っておらず、Google の検索でヒットするはずはない。
もう一つおかしなことは、『そんな 検索語は 含まれていません』で Google で検索すると、Nucleus で構築されているいくつかのサイトがヒットすることである。
このブログのあるページへのアクセスで、リファラとして Google のサイトの検索結果ページが指定されているのであるが、ここで用いられている検索語が、当ブログとはまったく関係のない言葉なのである。仮に、ここで用いられている検索語を『そんな 検索語は 含まれていません』だとしよう。当ブログでは、『そんな 検索語は 含まれていません』という表現はまったく使っておらず、Google の検索でヒットするはずはない。
もう一つおかしなことは、『そんな 検索語は 含まれていません』で Google で検索すると、Nucleus で構築されているいくつかのサイトがヒットすることである。
Nucleus-SQLite 3.3 RC1 [Nucleus]
2007年4月20日
Nucleus 3.3 に関して、Nucleus JP チームの動きがあわただしくなってきて、RC1 が Sourceforge でリリースされている。正式版のリリースも間近。
SQLite 版の RC1 も作成したので、ここにメモ。
Nucleus 3.3 EUC-JP RC1 SQLite
Nucleus 3.3 UTF-8 RC1 SQLite
SQLite 版の RC1 も作成したので、ここにメモ。
Nucleus 3.3 EUC-JP RC1 SQLite
Nucleus 3.3 UTF-8 RC1 SQLite
Nucleus 3.3 へアップグレード後の変更点 [Nucleus]
2007年4月18日
CSS ファイルを若干変更する必要がある。
以下の記述を追加
以下の様に変更
変更前
変更後
以下の記述を追加
.formfield { display:block; (略) .commentform .formfield, .commentform .formbutton, .loginform .formbutton { display: block; }
以下の様に変更
変更前
#nucleus_cf_name, #nucleus_cf_mail
変更後
#nucleus_cf_name, #nucleus_cf_mail, #nucleus_cf_email
Nucleus本、いよいよ販売です(Nucleus 3.3 リリースも間近です) [Nucleus]
2007年4月17日
地域にも拠るそうですが、4月20日からソーテック社出版の『Nucleusでつくる!最強のブログサイト』が販売開始されます。著者は、Wouter Demuynckさん(Nucleus の生みの親;序文を担当)を含めて15人で、私も少しばかりお手伝いさせていただきました。
本の出版にあわせて、Nucleus 3.3 をリリースすることになって、Kimitake さんを中心としてコードの整備が行われました。この新しいバージョンは、これまでのバージョンと違って、日本チームにより、最終整備が行なわれています。したがって、日本語版のリリースが、英語版のリリースより先になると思います。
この Nucleus 3.3 で新しくなった点について、気のついたところをまとめてみました。
本の出版にあわせて、Nucleus 3.3 をリリースすることになって、Kimitake さんを中心としてコードの整備が行われました。この新しいバージョンは、これまでのバージョンと違って、日本チームにより、最終整備が行なわれています。したがって、日本語版のリリースが、英語版のリリースより先になると思います。
この Nucleus 3.3 で新しくなった点について、気のついたところをまとめてみました。
Nucleus の PostPluginOptionsUpdate にバグ [Nucleus]
2007年3月30日
PostPluginOptionsUpdate イベントにバグを見つけた。これは、プラグインオプションを変更したあとに起こるイベントである。このイベントを単独で使用するときにはバグは発生しないが、このイベントより前に起こる別のイベント(PostAuthenticationなど)とともに使用すると、変更されたプラグインオプションの値が、getOption() の戻り値として反映されない。
Cookie key を暗号化 [Nucleus]
2007年3月28日
Nucleus では、ログインキーは md5 で暗号化されて MySQL データベースに保存されているが、クッキー認証キーは生のまま保存されている。これだと、万一、何かしらの脆弱性(SQL injection など)でクッキー認証キーが洩れた場合に、セッションハイジャックが起きる。
md5 で暗号化すれば、万一クッキー認証キーが洩れても、暗号解読が必要なので、セッションハイジャックは難しい。ついでに、md5 による暗号化の前に$_SERVER['REMOTE_ADDR']の情報も加えておけば、XSS でクッキー認証キーが洩れても、別のIP address からの接続はほとんど不可能である。
先日、MEMBER.php の改造でこれを実現しようとしたのであるが、なかなか改造コードが完成しなかった。改めてコアのコードを見てみると、globalfunctions.php の改変だと、比較的簡単にこれが実現できることが分かった。
md5 で暗号化すれば、万一クッキー認証キーが洩れても、暗号解読が必要なので、セッションハイジャックは難しい。ついでに、md5 による暗号化の前に$_SERVER['REMOTE_ADDR']の情報も加えておけば、XSS でクッキー認証キーが洩れても、別のIP address からの接続はほとんど不可能である。
先日、MEMBER.php の改造でこれを実現しようとしたのであるが、なかなか改造コードが完成しなかった。改めてコアのコードを見てみると、globalfunctions.php の改変だと、比較的簡単にこれが実現できることが分かった。
NP_match [Nucleus]
2007年3月14日
Nucleus 3.3 の<%if%>の新しい機能、doIf() を使ったプラグインの大まかな構想がほぼ決定。NP_ExtendedIf の後継となるもので、より高いパフォーマンスと機能が期待できる。この構想に従い、NP_ExtendedIf は引退させることになりそう(3.24より前のNucleus用に、wiki のページは置いておくけれども)。ちょっと勇み足かもしれないけれど、ここに公開。
このプラグインは、なるべく肥大化しない方向で、シンプルなソースコードになるように開発したい。おそらく、100行以下を一つの目安とすると思う。
(最新版の情報は、Wiki にあります。)
このプラグインは、なるべく肥大化しない方向で、シンプルなソースコードになるように開発したい。おそらく、100行以下を一つの目安とすると思う。
(最新版の情報は、Wiki にあります。)