Jeans & Development:
Deprecated: Function strftime() is deprecated in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/blog.php on line 333
2007年 05月の記事

NP_or, NP_and [Nucleus]

2007年5月29日

<%if%>構文で、or や and が使えるようになるプラグインを作成。詳しくは、wiki を参照

global $blog を乗っ取る [Nucleus]

2007年5月23日

また別のプラグインで同じようなことをするかもしれないから、忘れないようにメモ。

ここの例では、BLOG::getSqlSearch() 関数に、
array_merge($searchclass->blogs,array(1,2,3));
と、一行追加するように、BLOG オブジェクトを入れ替える。

NP_nestedinclude [Nucleus]

2007年5月15日

前の記事の続き。

NP_nestedinclude は、スキン変数の入れ子構造に対応したスキンパースを行う。<%parsedinclude%>と置き換えて使用。

スキンとテンプレートの両方で使用できる。テンプレートは、アイテム本体と、コメント本体でのみ使用可能。

スキン変数の入れ子構造 [Nucleus]

2007年5月15日

Nucleus のスキン変数・テンプレート変数は、入れ子で使えない。また、タグの始まりは『<%』で終わりは『%>』というルールになっているが、どちらの表記をどちらに用いても、エラーにならない。つまり、

<%blog(default/index,10)%>
%>blog(default/index,10)%>
<%blog(default/index,10)<%
%>blog(default/index,10)<%

はどれも、エラーなく同じように機能する。

なので、入れ子構造のスキンを例えば次のように表記すると

<%blog(default/index,<%blogsetting(id)%>)%>

これは思ったように機能しない。このコードは、次のコードと等価であるからだ。

<%blog(default/index,%>blogsetting(id)<%)%>

『blogsetting(id)』はタグの外なのでそのまま表示され、『<%)%>』というタグは存在しなため、『<%)()%>』が表示される。

NP_UnsetManagerCache [Nucleus]

2007年5月11日

前のNP_UnsetItemObjectがまったく意味のないコードだったので、別のプラグインを書いてみた。

<?php 
class NP_UnsetManagerCache extends NucleusPlugin { 
    function getName() { return preg_replace('/\.php$/','',basename(__FILE__)); }
    function getMinNucleusVersion() { return 220; }
    function getAuthor()  { return 'Katsumi'; }
    function getVersion() { return '0.1'; }
    function getURL() {return 'http://www.rad51.net/nucleus/index.php?itemid=313';}
    function getDescription() { return $this->getName().' plugin'; } 
    function supportsFeature($what) { return (int)($what=='SqlTablePrefix'); }
    function doSkinVar($skinType,$type) {
        global $manager;
        switch ($type){
        case 'cachedInfo': exit;
        default: if (@is_array($manager->$type)) $manager->$type=array();
        }
    }
}
?>

$manager->getItem()を多用しているプラグインのテンプレート変数・スキン変数の直後に

<%UnsetManagerCache(items)%>

と書けばよい。

古い VB インストール時の注意 [プログラミング]

2007年5月10日

VB5 を Windows XP にインストールすると、いろいろとエラーが出た。古いプログラムをデバッグするときにはこういったことも必要なので、メモしておく。

まず、エラーが出てセットアップキットが起動しない。この指示に従って、\SETUPKIT\KITFIL32\VB5DEP.INI ファイルの内容を次のように変更する。

;Drive1=1.44 MB,1457664,512
;Drive2=2.88 MB,2915328,1024
;Drive3=1.2 MB,1213952,512
;Drive4=720 KB,730112,1024
;Drive5=360 KB,362496,1024

フロッピーディスクの指定がないと、エラーになるらしい。これをコメントアウトすることで、エラーを回避する。

また、OCX ファイルについても操作しないと、OCXを用いたプログラムをコンパイルするときにエラーになる。新しい OCX を古いOCXで上書きできず、その新しいOCXにはプログラム製作ライセンスが含まれていないためらしい。この指示に従って、『regsvr32 /u』でOCXの登録を解除した後にVBを再インストールすると、解消される。その後、Visual Studio サービス パックを再適用する必要がある。

NP_UnsetItemObject [Nucleus]

2007年5月7日

方々で、Nucleusはメモリ食いだと議論されている様子。$manager->getItem() がやり玉にあがっている。もし、MANAGERオブジェクトにITEMオブジェクトが蓄積されていくのがその原因なのであれば、次のようなプラグインでそれが解消できるかもしれない。このプラグインは無効のため、別のプラグインを書いてみた。

削除しました。

PostItemイベントを捕まえて、一つ前のitemオブジェクトを廃棄する仕様。テンプレート呼び出しで多数のアイテムが呼び出される場合には、効果的かもしれない。私が管理しているサイトで、700個以上のitemオブジェクトが作成されるものがあるから、それにインストールして様子を見てみる。

(追記)ver 0.1 は、意味のないコードだったので、若干修正。ver 0.1.1とした。

(追記)このコードの効果を確認するためのテストを行った。

(追記)このコードは、意味がなかった…。もっとよく考えてみることにしよう。

スキン専用プラグイン [Nucleus]

2007年5月7日

スキンに専用のプラグインが必要なとき、プラグインのインストールを行わずに doSkinVar/doTemplateVarの呼び出しを実現させるための仕組み。

製作中の、Nucleus版フォーラムで使う予定であったが、実際にプラグインをインストールする必要がありそうなので、このルーチンは削除の予定。うまく働いていたのでコードを捨てるには忍びないため、ここにメモ。

デバッグ用msgbox()関数 [Nucleus]

2007年5月4日

config.phpの冒頭に、以下のコードを追加。

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でのバグフィックスを行いました。