<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
<title>Suinasia(プリロード)</title>
<subtitle>「プリロード」なエントリー</subtitle>
<link rel="alternate" type="text/html" href="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89"/>
<link rel="self" type="application/atom+xml" href="http://suin.asia/feed/atom/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89"/>
<author>
<name>suin</name>
</author>
<updated>2012-02-08T22:54:46Z</updated>
<id>http://example.com/atom1.xml</id>
<entry>
<title>XOOPS Cube &amp; TOKYOPenでパワフルなデバッグツールAdelieDebug</title>
<link href="http://suin.asia/2012/01/06/xoops-adelie-debug"/>
<summary>&lt;p&gt;XOOPS Cubeの開発者なら必ず入れておきたいデバッグツール AdelieDebug について紹介します。&lt;/p&gt;

&lt;h3&gt;AdelieDebugって何？&lt;/h3&gt;

&lt;p&gt;AdelieDebug(アデリーデバッグ)は、XOOPS Cube Legacy や &lt;a href=&quot;http://tokyopen.jp...</summary>
<published>2012-01-06T06:18:36Z</published>
<updated>2012-01-06T06:16:58Z</updated>
<id>http://suin.asia/2012/01/06/xoops-adelie-debug</id>
<category term="XOOPS" label="XOOPS" scheme="http://suin.asia/tag/XOOPS" />
<category term="AdelieDebug" label="AdelieDebug" scheme="http://suin.asia/tag/AdelieDebug" />
<category term="TOKYOPen" label="TOKYOPen" scheme="http://suin.asia/tag/TOKYOPen" />
<category term="プリロード" label="プリロード" scheme="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="ダウンロード" label="ダウンロード" scheme="http://suin.asia/tag/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89" />
<content type="html" xml:lang="ja" xml:base="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">
<![CDATA[<p>XOOPS Cubeの開発者なら必ず入れておきたいデバッグツール AdelieDebug について紹介します。</p>

<h3>AdelieDebugって何？</h3>

<p>AdelieDebug(アデリーデバッグ)は、XOOPS Cube Legacy や <a href="http://tokyopen.jp">TOKYOPen</a> でモジュール・プリロードなどを開発するデベロッパー向けのパワフルな開発支援ツールです。どのあたりが、パワフルかいくつか特徴を紹介しましょう。</p>

<h4>特徴1: 見やすいデバッグ画面</h4>

<p class="photo"><a href="https://picasaweb.google.com/lh/photo/38bZCxP_0kYIu8zXhzF2kdMTjNZETYmyPJy0liipFm0?feat=embedwebsite"><img src="https://lh3.googleusercontent.com/-6eASUD-qeYk/TwaPZpHaY9I/AAAAAAAABno/GcZuarntiGM/s400/%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%252588%2525202012-01-06%25252014.14.33.png" height="258" width="400" /></a></p>

<p>XOOPS Cube標準のデバッグモードでは、PHP・MySQL・Smartyなど各モードを切り替えなければなりません。一方、AdelieDebugではPHP・MySQLをひとつの画面に出すことができます。PHPについては、エラーがあれば<span style="color:red">赤</span>でハイライトされて表示されるので、標準のものと違い見落とす危険性が少ないです。MySQLについては、クエリーログを表示します。もちろんエラーが起こっているクエリーはハイライト表示がされます。加えて、var_dump()で確認することが多い、$_GET, $_POST, $COOKIE, $_FILES, $_SESSION, $_SERVER, 送信されたHTTPヘッダなどの環境変数も自動で表示してくれます。</p>

<p>PHPやSQLのログはひとつの<strong>タイムライン</strong>にまとめて表示してくれます。これにより、処理の時系列や前後関係が把握しやすくなっています。例えば、あるクエリーがどこで発行されているか知りたい場合があります。従来であれば、var_dump(__FILE__, __LINE__); を随所に仕込んだうえで、出力されたファイル名と行数をなんとなく頭の中にいれて判断するといった具合でした。AdelieDebugでは、adump() を任意の箇所に仕込めば、タイムライン上でadump()とクエリーの関係を一目で知ることが可能です。</p>

<h4>特徴2: 便利なデバッグ関数</h4>

<p>AdelieDebugは便利なデバッグ関数を提供します。それはvar_dump()よりも強力で、var_dump()+Xdebugよりも導入が簡単です。</p>

<p>adump(): var_dump()関数と同じ働きをしますが、出力内容を&lt;pre&gt;タグで囲むので見やすくなっています。var_dump()は、あちこちに仕込むとどこに仕込んだた分からなくなることがありました。adump()は仕込んだファイル名と行数を表示するので、見失う心配がありません。</p>

<pre name="code" class="php">
adump($uid);
</pre>

<p class="photo"><a href="https://picasaweb.google.com/lh/photo/tIOseCd_Ng-4MC-JfqzZgNMTjNZETYmyPJy0liipFm0?feat=embedwebsite"><img src="https://lh3.googleusercontent.com/-iaqUbSyDuvE/TwaPZyItxAI/AAAAAAAABns/LGgrmvu_BLU/s400/%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%252588%2525202012-01-06%25252014.14.07.png" height="166" width="400" /></a></p>

<p>atrace(): その行がどの関数で呼ばれているかを表示します。PHPビルトイン関数の<a href="http://php.net/manual/ja/function.debug-print-backtrace.php">debug_print_backtrace()</a>と同等の働きをしますが、debug_print_backtrace()のようにメモリオーバーになる心配はありません。</p>

<pre name="code" class="php">
atrace();
</pre>

<p class="photo"><a href="https://picasaweb.google.com/lh/photo/cl0BAxTj-LEmOXkINxIsrtMTjNZETYmyPJy0liipFm0?feat=embedwebsite"><img src="https://lh6.googleusercontent.com/-u6bvc6PrqlE/TwaPe5u8MuI/AAAAAAAABoA/YVTogUUoQ-g/s400/%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%252588%2525202012-01-06%25252014.41.15.png" height="160" width="400" /></a></p>

<p>awhich(): オブジェクトやクラス、関数がどのファイルの何行目で定義されているかを表示します。awhich()を使えば、わざわざファイル全体をgrep検索する必要はありません。</p>

<pre name="code" class="php">
awhich('Legacy_Controller');
awhich($mRoot);
</pre>

<p class="photo"><a href="https://picasaweb.google.com/lh/photo/NhXPShpVzYN6_1tLMzx8l9MTjNZETYmyPJy0liipFm0?feat=embedwebsite"><img src="https://lh5.googleusercontent.com/-CTufJRnd2tk/TwaPY8znD_I/AAAAAAAABng/f-4zA0u3as0/s400/%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%252588%2525202012-01-06%25252014.52.44.png" height="21" width="400" /></a></p>

<p>asynop(): クラスやインターフェイスの概要(synopsys)を表示します。継承した親クラス、実装したインターフェイス、クラスが持っている定数・プロパティ・メソッドが一目でわかるようになります。</p>

<pre name="code" class="php">
asynop('Legacy_Controller');
asynop($this);
</pre>

<p class="photo"><a href="https://picasaweb.google.com/lh/photo/QTsAzOLO3QjRGglhdbLCm9MTjNZETYmyPJy0liipFm0?feat=embedwebsite"><img src="https://lh3.googleusercontent.com/-MZ2rYtdhFTY/TwaPZAqAUjI/AAAAAAAABnk/zbYbW9SEwRc/s400/%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%252588%2525202012-01-06%25252013.36.56.png" height="276" width="400" /></a></p>

<h4>特徴3: XOOPS Cube Legacyのためのツールであること</h4>

<p>XOOPS Cube Legacy は標準出力をバッファでのみこんでしまいます。なので var_dump() しても何も表示されず、すぐあとに exit() をつけないといけませんでした。さもなければ、&lt;{stdout}&gt;をテーマに書く必要がありました。AdelieDebugは、そのような手間は不要です。XOOPSのob_bufferを自動的に回避するからです。</p>

<p>var_dump() は問答無用で文字列を出力します。なので、XML出力画面にダンプしてしまって、Ajaxのテストがうまくできない、なんてことがありました。AdelieDebugでは、AJAXリクエストのときやHTML出力以外のコンテクストではデバッグ出力を自動でオフにすることで、そういったストレスを軽減します。</p>


<h4>特徴4: 実践で使われているツールであること</h4>

<p>AdelieDebug は開発現場から生まれた実践的ツールです。XOOPSを用いたシステム開発を数多く手がける<a href="http://ryus.co.jp">株式会社RYUS</a>では(地道な布教活動により 笑)プログラマに広く活用されています。</p>

<h3>導入・使い方</h3>

<p>AdelieDebug はプリロードといわれるワンファイルのXOOPS Cube用のプラグインです。ですので、導入は至って簡単。<a href="https://raw.github.com/suin/xoops-adelie-debug/master/build/AdelieDebug.class.php">こちらのAdelieDebug.class.php</a>をダウンロードして、 preload フォルダに放り込むだけです。</p>

<p>不要になった場合は、このプリロードを削除します。</p>


<h3>AdelieDebug</h3>

<ul>
	<li>github: <a href="https://github.com/suin/xoops-adelie-debug">https://github.com/suin/xoops-adelie-debug</a></li>
	<li>ライセンス: たぶんGPL</li>
	<li>動く環境: PHP 5.2 ~</li>
	<li>動くプラットフォーム: XOOPS Cube Legacy 2.1 ~, TOKYOPen 1.0 ~</li>
</ul>]]>
</content>
</entry>
<entry>
<title>[XOOPS Cube]プリロードでブロックの内容を取得するサンプル</title>
<link href="http://suin.asia/2011/08/17/xoops_preload_get_block_contents"/>
<summary>&lt;p&gt;プリロードでブロックの内容を取得するサンプルです。ブロックのタイトルすべてに「&lt;a href=&quot;http://www.warna.info/archives/1620/&quot;&gt;だぷー&lt;/a&gt;」を付けます&lt;/p&gt;
&lt;p class=&quot;photo&quot;&gt;&lt;a href=&quot;https://pica...</summary>
<published>2011-08-16T15:00:00Z</published>
<updated>2011-08-16T15:00:00Z</updated>
<id>http://suin.asia/2011/08/17/xoops_preload_get_block_contents</id>
<category term="XOOPS" label="XOOPS" scheme="http://suin.asia/tag/XOOPS" />
<category term="プリロード" label="プリロード" scheme="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="Tips" label="Tips" scheme="http://suin.asia/tag/Tips" />
<content type="html" xml:lang="ja" xml:base="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">
<![CDATA[<p>プリロードでブロックの内容を取得するサンプルです。ブロックのタイトルすべてに「<a href="http://www.warna.info/archives/1620/">だぷー</a>」を付けます</p>
<p class="photo"><a href="https://picasaweb.google.com/lh/photo/mlSjOsrw-AUwUldsYH6ilQ?feat=embedwebsite"><img src="https://lh4.googleusercontent.com/-qTuu6EqRc1I/Tkni-NP2bSI/AAAAAAAABgU/YicdOMr-c04/s800/%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%252588%2525202011-08-16%25252012.24.04.png" height="314" width="187" /></a></p>
<script src="https://gist.github.com/1148371.js?file=gistfile1.aw"></script>]]>
</content>
</entry>
<entry>
<title>モジュールアップデートに便利なプリロードRapidModuleUpdate</title>
<link href="http://suin.asia/2011/03/01/rapidmoduleupdate_preload"/>
<summary>「RapidModuleUpdate」プリロードが便利です。このプリロードは、XOOPS Cubeのモジュール管理に「モジュール一括アップデート」機能をつけてくれるものです。モジュールアップデートを行う機会</summary>
<published>2011-03-01T04:19:48Z</published>
<updated>2011-03-01T04:04:49Z</updated>
<id>http://suin.asia/2011/03/01/rapidmoduleupdate_preload</id>
<category term="XOOPS" label="XOOPS" scheme="http://suin.asia/tag/XOOPS" />
<category term="プリロード" label="プリロード" scheme="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="ダウンロード" label="ダウンロード" scheme="http://suin.asia/tag/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89" />
<content type="html" xml:lang="ja" xml:base="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">
<![CDATA[<p><a href="http://ryus.co.jp/modules/d3blog/details.php?bid=339">株式会社RYUS</a>で、配布されている「RapidModuleUpdate」プリロードが便利です。このプリロードは、XOOPS Cubeのモジュール管理に「モジュール一括アップデート」機能をつけてくれるものです。モジュールアップデートを行う機会自体少ないので、「自動化しよう」とは思わず、モジュールひとつひとつ手動で作業しがちです。</p>

<p>実際に、RapidModuleUpdateがどんなものかは動画を見てみるのが早いでしょう</p>

<p class="photo">
<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/p97e1w0u-Ds" frameborder="0" allowfullscreen></iframe>
</p>

<p>RapidModuleUpdateはプリロードなので、そのファイルをひとつサーバーに置いておけば、すぐさま「モジュール一括アップデート」が行えるようになり難しい知識は一切いらないのも特徴です。</p>

<p>プリロードだけで、<strong>管理画面で</strong>JavaScriptを動かす裏技も詰まってるので、興味のある開発者はソースコードを見てみてください(笑)</p>]]>
</content>
</entry>
<entry>
<title>protectorの締め出しを強制解除させるプリロード: F*ckinBan</title>
<link href="http://suin.asia/2011/02/18/fxinban_preload"/>
<summary>このプリロードはprotectorモジュールに締め出されたと思われるときに使うことで締め出しを解除します。</summary>
<published>2011-02-18T10:28:38Z</published>
<updated>2011-02-18T08:12:46Z</updated>
<id>http://suin.asia/2011/02/18/fxinban_preload</id>
<category term="XOOPS" label="XOOPS" scheme="http://suin.asia/tag/XOOPS" />
<category term="プリロード" label="プリロード" scheme="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="ダウンロード" label="ダウンロード" scheme="http://suin.asia/tag/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89" />
<content type="html" xml:lang="ja" xml:base="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">
<![CDATA[<a href="http://dl.dropbox.com/u/949822/Downloads/FxckinBan_1.0.zip" class="download">download</a>

<blockquote>2月18日、東京在住の男性(23)自称プログラマが、自分が管理者であるはずのサイトにおいてprotectorモジュールに締め出されたことに腹を立てて、protectorの締め出しを解除するプリロードを作っていたことが当局の調査で明らかになった。なお同氏は「ついカッとなって作った。今は反省している。」と話している。protector設定によって、管理者さえも排除の対象になる点については以前からXOOPSユーザの間でたびたび問題視されてきた。protectorの機能を一時無効化するプリロードを作った例はこの件が初めてだと言う。</blockquote>


<h3>このプリロードについて</h3>
このプリロードはprotectorモジュールに締め出されたと思われるときに使うことで締め出しを解除します。

<h3>使うタイミング</h3>
<ul>
<li>自分はアクセスできないのに、他の人がアクセスできる。</li>
<li>何度かアクセスしているうちに、画面が真っ白になった。</li>
<li>protectorに怒られたと思ったら、次から画面が真っ白になった。</li>
</ul>

<h3>使い方</h3>

<ol>
<li>FxckinBan.class.phpをFTPなどでpreloadフォルダにアップロードする</li>
<li>締め出しを食らったサイトにアクセスする</li>
<li>再び締め出される前に、protectorモジュールの設定を変更する</li>
<li>FTPなどでFxckinBan.class.phpを削除する</li>
</ol>

<h3>注意事項</h3>
<ul>
<li><font color="red">一時的にprotectorの機能を無効化するので、使い終わったら直ちにFxckinBan.class.phpを削除してください。</font></li>
</ul>]]>
</content>
</entry>
<entry>
<title>公開画面から直にブロック編集に行けるプリロード:QuikManageBlock</title>
<link href="http://suin.asia/2010/10/11/quick_manage_block"/>
<summary>XOOPS Cubeでブロックを編集しようとなると、一旦管理画面に行く必要があります。確認は公開側の画面になります。管理画面と公開側を行ったり来たりするのが面倒なので、公開側のブロッ</summary>
<published>2010-10-12T03:56:33Z</published>
<updated>2010-10-11T10:13:24Z</updated>
<id>http://suin.asia/2010/10/11/quick_manage_block</id>
<category term="ダウンロード" label="ダウンロード" scheme="http://suin.asia/tag/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="QuikManageBlock" label="QuikManageBlock" scheme="http://suin.asia/tag/QuikManageBlock" />
<category term="プリロード" label="プリロード" scheme="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="XOOPS" label="XOOPS" scheme="http://suin.asia/tag/XOOPS" />
<content type="html" xml:lang="ja" xml:base="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">
<![CDATA[<a href="http://dl.dropbox.com/u/949822/Downloads/QuikManageBlock_1.1.zip" class="download">ダウンロード</a>

<p>久しぶりのXOOPS Cubeネタです。</p>

<p>XOOPS Cubeでブロックを編集しようとなると、一旦管理画面に行く必要があります。確認は公開側の画面になります。管理画面と公開側を行ったり来たりするのが面倒なので、公開側のブロックから直接ブロック管理に飛べるようにするプリロードを作りました。題して、QuikManageBlock。</p>

<p>QuikManageBlockは、ブロックのタイトルの右隅に編集ボタンを作ってくれます。公開側のブロックから編集したいブロックを視覚的に選べるので、直感的な操作ができるようになります。</p>

<p class="photo"><img src="http://dl.dropbox.com/u/949822/Downloads/QuikManageBlock.png" /></p>

<p>使うには、QuikManageBlockをダウンロードしてきて、QuikManageBlock.class.phpをpreloadフォルダに入れるだけです。あとは、「互換モジュール」の管理者権限のあるアカウントでログインするだけです。要らなくなったら、QuikManageBlock.class.phpを削除するだけです。</p>

<h4>余談</h4>

<p>Legacy_RenderSystem.BeginRenderデリゲートを使って、ブロックをdivタグで囲む処理を作りたかったんだけど、うまくいかなかった...orz。かわりに何か応用できないかなと思って作ったのがこのプリロードです(汗) 転んでもただでは起きないプリロードでした(笑) Ajaxとmodal windowを駆使すれば、管理画面に良く必要すらないんだろうけど^^;</p>

<p>いくつかプリロードを作ってきたけど、プリロードの情報を一括するサイトがあると便利なんだろうな。時間があったらPreload Finderでもつくろう。</p>

<h4>ブロックのアンインストールができるようになりました v1.1</h4>

<p>あの「<a href="http://usadeki.jp/">うさぎにもできるXOOPS Cube入門</a>」で有名なmikaさんがブロックのアンインストールもできるようにしてくれました！</p>]]>
</content>
</entry>
<entry>
<title>Google Analyticsのトラッキングコードを追加するプリロード</title>
<link href="http://suin.asia/2010/05/02/google_analytics_preload"/>
<summary>Google Analyticsは無料で利用できる高機能なアクセス解析サービスです。利用する場合は、サイトにトラッキングコードを追加します。XOOPS Cubeで、トラッキングコードを追加するには、普通は</summary>
<published>2010-05-01T16:24:12Z</published>
<updated>2010-05-01T16:17:39Z</updated>
<id>http://suin.asia/2010/05/02/google_analytics_preload</id>
<category term="XOOPS" label="XOOPS" scheme="http://suin.asia/tag/XOOPS" />
<category term="プリロード" label="プリロード" scheme="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="GoogleAnalytics" label="GoogleAnalytics" scheme="http://suin.asia/tag/GoogleAnalytics" />
<content type="html" xml:lang="ja" xml:base="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">
<![CDATA[<p>Google Analyticsは無料で利用できる高機能なアクセス解析サービスです。利用する場合は、サイトにトラッキングコードを追加します。XOOPS Cubeで、トラッキングコードを追加するには、普通はテーマにトラッキングコードを書き込んでしまうのが早いです。しかし、テーマを変更することが想定される場合は、プリロードにしておくと便利です。テーマが変わってもトラッキングコードが抜ける心配がないからです。</p>

<p>下のプリロードはGoogleAnalytics.class.phpというファイル名で保存します。トラッキングコードを所定の場所にコピペするだけです。Google Analytics以外に、HTMLのヘッダに貼りつけたいコードがある時にも、応用できると思います。</p>

<pre class="php" name="code">
&lt;?php

class GoogleAnalytics extends XCube_ActionFilter
{
	public function preBlockFilter()
	{
		$this-&gt;mRoot-&gt;mDelegateManager-&gt;add('XoopsTpl.New', array(&amp;$this, 'hook'));
	}

	public function hook(&amp;$xoopsTpl)
	{
		$trackingCode = &lt;&lt;&lt; DOC_END
//トラッキングコードをここに貼付け。
DOC_END;

		$xoopsModuleHeader = $xoopsTpl-&gt;get_template_vars('xoops_module_header');
		$xoopsTpl-&gt;assign('xoops_module_header', $xoopsModuleHeader.$trackingCode);
	}
}

?&gt;
</pre>]]>
</content>
</entry>
<entry>
<title>DynamicThemeChanger 1.0.0 URLで動的にテーマを切り替えるプリロード</title>
<link href="http://suin.asia/2010/04/21/dynamic_theme_changer_100"/>
<summary>DynamicThemeChangerはURLで指定したテーマに切り替えるプリロードです。テーマ配布サイトがテーマのプレビューを示すことを想定して作りました。プリロードをアップロードすることで、URLで?t</summary>
<published>2010-04-21T14:48:50Z</published>
<updated>2010-04-21T14:43:47Z</updated>
<id>http://suin.asia/2010/04/21/dynamic_theme_changer_100</id>
<category term="XOOPS" label="XOOPS" scheme="http://suin.asia/tag/XOOPS" />
<category term="プリロード" label="プリロード" scheme="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="ダウンロード" label="ダウンロード" scheme="http://suin.asia/tag/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="DynamicThemeChanger" label="DynamicThemeChanger" scheme="http://suin.asia/tag/DynamicThemeChanger" />
<content type="html" xml:lang="ja" xml:base="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">
<![CDATA[<a href="http://suin-xoops.googlecode.com/files/DynamicThemeChanger.1.0.0.zip" class="download">ダウンロード</a>
<p>DynamicThemeChangerはURLで指定したテーマに切り替えるプリロードです。テーマ配布サイトがテーマのプレビューを示すことを想定して作りました。プリロードをアップロードすることで、URLで?theme={テーマディレクトリ名}の形でテーマを指定すると、そのテーマに切り替わります。</p>]]>
</content>
</entry>
<entry>
<title>WhiteoutRescue 真っ白画面解決支援プリロード</title>
<link href="http://suin.asia/2010/03/12/whiteoutrescue_preload"/>
<summary>WhiteoutRescueプリロードは、ホワイトデイに「真っ白」画面を出さないためのプリロードです。ホワイトデイに真っ白画面に出くわしたサイトオーナーがこのプリロードをアップロードします</summary>
<published>2010-03-11T15:59:48Z</published>
<updated>2010-03-11T15:19:16Z</updated>
<id>http://suin.asia/2010/03/12/whiteoutrescue_preload</id>
<category term="XOOPS" label="XOOPS" scheme="http://suin.asia/tag/XOOPS" />
<category term="ダウンロード" label="ダウンロード" scheme="http://suin.asia/tag/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="プリロード" label="プリロード" scheme="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89" />
<content type="html" xml:lang="ja" xml:base="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">
<![CDATA[<p>
<a href="http://dl.dropbox.com/u/949822/Downloads/WhiteoutRescue_1.0.zip" class="download">WhiteoutRescue_1.0.zip</a>
ホワイトデイ(3月14日)は、一般には男子が女子にクッキーをあげる日ですが、XOOPSユーザにとっては厄日だそうです。XOOPSオーナーが最も嫌うのは、エラーなどでXOOPSの画面が「真っ白」になることです。ホワイトデイの「ホワイト」が「真っ白」を連想させることもあり、ホワイトデイに「真っ白」画面が出ると、その年のXOOPS運が大殺界であることを意味するそうで、縁担ぎのために3月14日の1日だけXOOPSを止めたり、熱心なXOOPS関係のデベロッパーの中にはこの日だけ開発を休んだりするそうです。</p>

<p>WhiteoutRescueプリロードは、ホワイトデイに「真っ白」画面を出さないためのプリロードです。ホワイトデイに真っ白画面に出くわしたサイトオーナーがこのプリロードをアップロードします。そして、真っ白画面のページにアクセスすると、黒背景を基調としたデバッグページが現れます。サイトオーナーはそのデバッグ情報をたよりに真っ白画面を解消します。このように、真っ白画面を直すことで、厄払いの意味になり、その年のXOOPS運が大安になると言われています。</p>

<p class="photo"><a href="http://picasaweb.google.co.jp/lh/photo/8WxTNouyTtprVY2q8vpKJQ?feat=embedwebsite"><img src="http://lh5.ggpht.com/_dG0BBWAhWis/S5kJmrP1wtI/AAAAAAAABJ8/5_DyGvIV9vM/s400/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3%201.png" /></a></p>

<h3>動作要件</h3>
<ul>
<li>XOOPS Cube Legacy 2.x</li>
<li>PHP 5.1 (5.2からかも)</li>
<li>UTF-8環境(EUC-JPでも動くことは動く)</li>
</ul>

<h3>WhiteoutRescueプリロードの使い方</h3>

<p>XOOPSオーナーに伝わるWhiteoutRescueプリロードの使い方は以下のようです。</p>

<ol>
<li>WhiteoutRescue.class.phpを/preloadにアップロードする</li>
<li>真っ白のページにアクセスする</li>
<li>表示されたデバッグ情報をもとに問題を解決する</li>
<li>使い終わったら、WhiteoutRescue.class.phpを削除する</li>
</ol>

<p>なお、使い終わってもWhiteoutRescueプリロードを削除しないでいると、XOOPSのセキュリティやパフォーマンスが低下し、XOOPSが白い悪魔に取り憑かれるそうなので、必ず削除するようにしましょう。</p>

<p>WhiteoutRescueを使っても真っ白のままの場合、以下のことが考えられます。</p>
<ul>
<li>プリロード読み込み以前にXOOPSがこけてる</li>
<li>PHPのパースエラー（セミコロンがダブルコロンだ、など）この場合はPHPのエラーログを参照</li>
<li>サーバーの問題 (.htaccessの設定ミスなど)</li>
<li>そもそもXOOPS Cube Legacyじゃない</li>
<li>しかるべくして真っ白なページ</li>
</ul>

<h3>ライセンス</h3>
<p>GNU GPL2ライセンスです。動作無保証です。あなたは、GPL2の条件をみたせばこのプログラムを改変・頒布することができます。</p>

<h3>リポジトリ</h3>
<code>
svn checkout http://suin-xoops.googlecode.com/svn/trunk/WhiteoutRescue suin-xoops-read-only
</code>

<h3>[訂正 2010/03/12]</h3>
<p>XOOPSオーナーの間で、3月14日が厄日などの記述がありましたが、実際にはそんな習慣はないそうです。教えてくれたwhite_devilさんありがとうございます。</p>]]>
</content>
</entry>
<entry>
<title>SubversionでのPreloadの管理方法</title>
<link href="http://suin.asia/2010/03/11/how_to_manage_preloads_with_subversion"/>
<summary>Preloadをバージョン管理するとき私が行っている方法を紹介しようと思います。ディレクトリごとにバージョン管理する場合、開発中のプリロードを/preloadディレクトリにおいてしまうと、他</summary>
<published>2010-03-11T08:54:56Z</published>
<updated>2010-03-11T08:14:45Z</updated>
<id>http://suin.asia/2010/03/11/how_to_manage_preloads_with_subversion</id>
<category term="XOOPS" label="XOOPS" scheme="http://suin.asia/tag/XOOPS" />
<category term="プリロード" label="プリロード" scheme="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="開発" label="開発" scheme="http://suin.asia/tag/%E9%96%8B%E7%99%BA" />
<content type="html" xml:lang="ja" xml:base="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">
<![CDATA[<p>Preloadをバージョン管理する便利な方法を紹介しようと思います。ディレクトリごとにバージョン管理する場合、開発中のプリロードを/preloadディレクトリにおいてしまうと、他のプリロードまでバージョンされてしまいます。こういう場合では、/preloadにサブディレクトリを作って、そこでバージョン管理したほうが管理性が向上します。</p>
<p xml:lang="en">I will introduce you how to develop preloads with Subversion. If you put your preloads under /preload directory, it is difficult to manage the versions of its. Because, Subversion treats not only your preload but also the other ones. In such a case, you can make subdirectories under /preload. This way helps you to increase your manageability.</p>
<p>配布することを考えれば、サブディレクトリにLicense.txtやReadme.txtを置くといいでしょう。そうしておくと、svn -exportでプリロードの配布パッケージが簡単に生成できます。</p>
<p xml:lang="en">If you plan to distribute your preload, you may put License.txt or Readme.txt under the subdirectory. It is a smart way. You only have to command "svn -export" at the subdirectory when you distribute it.</p>

<h3>ディレクトリの構成方法</h3>

<pre>
/XOOPS_ROOT_PATH
	/preload
		/VersionedPreload.class.php (a)
		/VersionedPreload
			/.svn
			/VersionedPrelaod.class.php (b)
			/License.txt
			/Readme.txt
</pre>

<h3>VersionedPreload.class.php (a)のソース</h3>

<pre class="php" name="code">
&lt;?php

$file = basename(__FILE__);
$dir  = str_replace('.class.php', '', $file);

require $dir.'/'.$file;

?&gt;
</pre>

<p>(a)はただ、requireするだけです。（プロキシと言ったラインだろうか。）このサンプルソースはどんなプリロードにもそのまま流用できます。なぜなら、ファイル名を動的に取得しているからです。/preloadディレクトリに(a)をひとつ作っておけば、新しくプリロードを作る度に、コピーして名前を変更するだけでいいので便利です。</p>
<p xml:lang="en">The (a) only includes your preload. You can apply this sample to your any other preloads. Because, this sample get the file name dynamically. If you create the (a) once, you only have to copy and rename it, when you create a new preload. It is useful.</p>

<h3>VersionedPreload.class.php (b)のソース</h3>

<pre class="php" name="code">
&lt;?php
/**
 *
 * @package    Versioned Preload
 * @author     Foo Bar &lt;http://example.com/&gt;
 * @copyright  2010 Foo Bar
 * @license    http://www.gnu.org/licenses/gpl-2.0.html GNU GPL v2 or later
 *
 */

if ( !defined('XOOPS_ROOT_PATH') ) exit;

class VersionedPreload extends XCube_ActionFilter
{
	public function preBlockFilter()
	{
		$this-&gt;mRoot-&gt;mDelegateManager-&gt;add('Delegate.Name', array(__CLASS__, 'doSomething'));
	}

	public static funciton doSomething(&amp;$param)
	{
		// Do something here.
	}
}
?&gt;
</pre>

<p>(b)では、プリロードを作るときの普段どおりの書き方をするだけです。とくに変わったことをする必要もありません。</p>]]>
</content>
</entry>
<entry>
<title>ユーザのパスワードに期限をつけるプリロード PasswordLimitter 1.2</title>
<link href="http://suin.asia/2010/03/05/passwordlimitter"/>
<summary>パスワードは定期的に変更するほうがより安全と言われています。PasswordLimitterは、XOOPSのユーザのパスワードに期限を設け、期限がすぎたユーザに対しては、ログイン時にパスワード変更を</summary>
<published>2010-03-04T16:52:44Z</published>
<updated>2010-03-04T16:47:43Z</updated>
<id>http://suin.asia/2010/03/05/passwordlimitter</id>
<category term="XOOPS" label="XOOPS" scheme="http://suin.asia/tag/XOOPS" />
<category term="プリロード" label="プリロード" scheme="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="ダウンロード" label="ダウンロード" scheme="http://suin.asia/tag/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="PasswordLimitter" label="PasswordLimitter" scheme="http://suin.asia/tag/PasswordLimitter" />
<content type="html" xml:lang="ja" xml:base="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">
<![CDATA[<a href="http://dl.dropbox.com/u/949822/Downloads/PasswordLimitter_1.2.zip" class="download">ダウンロード</a>

<p>パスワードは定期的に変更するほうがより安全と言われています。PasswordLimitterは、XOOPSのユーザのパスワードに期限を設け、期限がすぎたユーザに対しては、ログイン時にパスワード変更を促すメッセージを表示します。</p>

<h3>インストール方法</h3>
<ol>
<li>PasswordLimitter.class.phpを/preloadにアップロード</li>
<li>管理アカウントで、http://あなたのXOOPS/misc.php?password_limitter=adminにアクセス</li>
<li>「INSTALL」をクリックしてインストールを実行</li>
<li>その後、設定ページで期限日数を設定する</li>
</ol>

<h3>アンインストール方法</h3>
<ol>
<li>管理アカウントで、http://あなたのXOOPS/misc.php?password_limitter=adminにアクセス</li>
<li>「UNINSTALL」をクリックしてインストールを実行</li>
<li>PasswordLimitter.class.phpを/preloadから削除</li>
</ol>

<h3>変更点 1.0 =&gt; 1.2</h3>
<ul>
<li>ユーザ新規登録時に有効期限がセットされないバグを修正。</li>
</ul>
<p>1.1とばしてしまった…orz</p>

<h3>開発情報</h3>

<ul>
<li><a href="http://code.google.com/p/suin-xoops/source/browse/#svn/trunk/PasswordLimitter">リポジトリ</a></li>
</ul>]]>
</content>
</entry>
<entry>
<title>ユーザのパスワードに期限をつけるプリロード PasswordLimitter 1.0</title>
<link href="http://suin.asia/2010/02/23/passwordlimitter_1.0"/>
<summary>パスワードは定期的に変更するほうがより安全と言われています。PasswordLimitterは、XOOPSのユーザのパスワードに期限を設け、期限がすぎたユーザに対しては、ログイン時にパスワード変更を</summary>
<published>2010-03-04T16:50:47Z</published>
<updated>2010-02-22T20:59:19Z</updated>
<id>http://suin.asia/2010/02/23/passwordlimitter_1.0</id>
<category term="XOOPS" label="XOOPS" scheme="http://suin.asia/tag/XOOPS" />
<category term="プリロード" label="プリロード" scheme="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="PasswordLimitter" label="PasswordLimitter" scheme="http://suin.asia/tag/PasswordLimitter" />
<content type="html" xml:lang="ja" xml:base="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">
<![CDATA[<div class="errorMsg">
<ul>
<li>この情報は古いです。<a href="http://suin.asia/2010/03/05/passwordlimitter">新しい情報</a>を御覧下さい。</li>
</ul>
</div>

<p>パスワードは定期的に変更するほうがより安全と言われています。PasswordLimitterは、XOOPSのユーザのパスワードに期限を設け、期限がすぎたユーザに対しては、ログイン時にパスワード変更を促すメッセージを表示します。</p>

<h3>インストール方法</h3>
<ol>
<li>PasswordLimitter.class.phpを/preloadにアップロード</li>
<li>管理アカウントで、http://あなたのXOOPS/misc.php?password_limitter=adminにアクセス</li>
<li>「INSTALL」をクリックしてインストールを実行</li>
<li>その後、設定ページで期限日数を設定する</li>
</ol>

<h3>アンインストール方法</h3>
<ol>
<li>管理アカウントで、http://あなたのXOOPS/misc.php?password_limitter=adminにアクセス</li>
<li>「UNINSTALL」をクリックしてインストールを実行</li>
<li>PasswordLimitter.class.phpを/preloadから削除</li>
</ol>

<h3>開発情報</h3>

<ul>
<li><a href="http://code.google.com/p/suin-xoops/source/browse/#svn/trunk/PasswordLimitter">リポジトリ</a></li>
</ul>]]>
</content>
</entry>
<entry>
<title>あなたのモジュール開発が加速するSuinDebugプリロード</title>
<link href="http://suin.asia/2010/02/12/suin_debug_preload"/>
<summary>SuinDebugプリロードは、たったひとつのファイルで、あなたのデバッグをよりスムースにするためのサイトプリロードです。</summary>
<published>2010-02-12T07:31:40Z</published>
<updated>2010-02-12T06:40:56Z</updated>
<id>http://suin.asia/2010/02/12/suin_debug_preload</id>
<category term="XOOPS" label="XOOPS" scheme="http://suin.asia/tag/XOOPS" />
<category term="プリロード" label="プリロード" scheme="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="ダウンロード" label="ダウンロード" scheme="http://suin.asia/tag/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89" />
<category term="SuinDebug" label="SuinDebug" scheme="http://suin.asia/tag/SuinDebug" />
<content type="html" xml:lang="ja" xml:base="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">
<![CDATA[<a href="http://dl.dropbox.com/u/949822/Downloads/SuinDebug_1.0.zip" class="download">Download</a>

<p>SuinDebugプリロードは、たったひとつのファイルで、あなたのXOOPS Cube Legacyでのデバッグをよりスムースにするためのサイトプリロードです。</p>

<object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/n_XczAn4_8A&hl=ja_JP&fs=1&hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/n_XczAn4_8A&hl=ja_JP&fs=1&hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object>

<p>HD画質なので、フルスクリーンで見るのをおすすめします。</p>

<h3>特徴</h3>

<ul>
<li>
<h4>サイト(開発環境)を汚さない</h4>
SuinDebugは、たったひとつのファイルからなるサイトプリロードです。{stdout_buffer}をテーマに書くことでテーマが汚れるデメリットや、デバッグ関連のファイルをいくつもアップロードすることで、開発パッケージに余分なファイルがあふれるデメリット、デバッグ関連の情報をデータベースに保存することで、データベースに不必要な情報が紛れ込むデメリットが一切ありません。
</li>
<li>
<h4>エラーで画面を汚さない</h4>
SuinDebugは、PHPやMySQLなどのデバッグ情報をウェブページに直接出力しません。デバッグ情報などによる、レイアウト崩れ・ソースの汚損からま逃れることができます。
</li>
<li>
<h4>ポップアップウィンドウを開かない</h4>
SuinDebugを使えば、デバッグのためにこれ以上ポップアップウィンドウを開く必要はありません。デバッグ情報はJavaScriptによるモーダルウィンドウで表示されます。つまり、ひとつのウィンドで完結するので、ポップアップからくるストレスを軽減できます。
</li>
<li>
<h4>それなりのインターフェイス</h4>
エラーSQLやDelegateのハイライト機能など、視覚的な面が考慮されています。また、デバッグモードを切り替える必要なしに、SQL, Delegate, XoopsTpl, stdout_buffer, PHP Errorsを一様に閲覧することができます。
</li>
</ul>

<h3>使い方</h3>

<ol>
<li>SuinDebugをダウンロードします。</li>
<li>それを解凍して、{XOOPS_ROOT}/preload/に保存します。</li>
<li>JavaScriptをONにした状態で、管理者アカウントでログインします。</li>
<li>管理画面でPHPデバッグモードをONにします。</li>
<li>ウィンドウ上端から100pxくらいのところにカーソルを移動するとメニューが表示されます。</li>
<ol>

<h3>注意</h3>

<p>SuinDebugを公開サイトにアップロードしないでください。あくまで、このプリロードは非公開の開発環境で使用することを想定しています。たとえば、VMwareやXAMPP・MAMPで構築されたローカル開発環境。なお、サイトを公開する場合は、SuinDebugを削除してください。</p>


<h3>SuinDebug description</h3>

<p>SuinDebug is a site preload. It will help your debugging when you develop modules in XOOPS Cube Legacy.</p>

<h3>Features</h3>

<ul>
<li>
<h4>SuinDebug doesn't litter your XOOPS</h4>
SuinDebug consists of only one site preload file. You never have to write {stdout_buffer} in your theme. You never have to upload too many files for debugging. You never have to add any information into your database. You only have to upload SuinDebug preload.
</li>
<li>
<h4>SuinDebug doesn't litter your webpages with errors</h4>
SuinDebug doesn't directory output debugging information into your webpages such as PHP or MySQL. So, it doesn't break webpage layout with debugginf information.
</li>
<li>
<h4>SuinDebug never opens popup windows any more</h4>
To show debugging informaiton, SuinDebug uses mordal window. So it never annoy you with popup windows.
</li>
<li>
<h4>SuinDebug has good interface</h4>
Without changing debugging mode, you can browse SQL, Delegate, XoopsTpl, stdout_buffer, PHP Errors at the same time in the same window.
</li>
</ul>

<h3>How to Use</h3>

<ol>
<li>Please Download SuinDebug.</li>
<li>Please Upload it to {XOOPS_ROOT}/preload/</li>
<li>Please Turn on JavaScript and login as site admin.</li>
<li>Please Turn on PHP debugging mode in legacy module.</li>
<li>Please Move your pointer by near 100px from window top.</li>
<ol>

<h3>Notice</h3>

<p>Please DO NOT upload SuinDebug to public website. SuinDebug should be used only in local developing envenment; for example, VMware, XAMMP, MAMP and so on. When you public your website, please remove SuinDebug.</p>]]>
</content>
</entry>
</feed>
