Latest Publications

tw2mv – twitterとmixiボイスを連携するスクリプト version 2.1.4

しばらく更新が滞っていましたがtw2mvの修正を行い、mixi公式のTwitter連携で投稿されたつぶやきを再転送しない修正を加えたver2.1.4をリリースしています。

twitter2mixivoice version 2.1.4

また、告知を行っていませんでしたがversion2.1.3から許可・除外フィルターに正規表現を利用できるようになっています。
フィルター値を”/正規表現(preg)/”のようにスラッシュを前後に加えて記述することで正規表現として評価されます。

なお、tw2mvの機能的な追加はこれで最後です。
今後はTwitter、mixiの変更があった場合に気が向いたら対応する程度となります。

tw2mvの詳細については以下のURLを参照してください。
tw2mv – twitterとmixiボイスを連携するスクリプト @ php-tips

CakePHP 1.3のビューでヘルパーのコードを補完する for Eclipce PDT

CakePHP 1.3になってからビューでのヘルパーの推奨される呼び出し方法が変わりました。

1.3以前

$html->link();
$form->input();

1.3以降

$this->Html->link();
$this->Form->input();

コントローラとモデル・コンポーネントの呼び出し方法同様に、$this(Viewオブジェクト)の要素としてヘルパーを呼び出すようになります。
なお、以前の呼び出し方法も使えます。

今回はこの新しい書き方をEclipse PDT上で補完する方法を紹介します。

(続きを読む…)

CakePHPのAclBehaviorをさらに手軽に AclPlusBehavior for CakePHP 1.3

CakePHPでは、モデルオブジェクトでアクセスコントロールを行う場合にAclビヘイビアを使用します。
ただし、標準のAclビヘイビアは若干クセがあり、設定しづらいものとなっています。

今回はAclBehaviorを拡張し、ACLの機能をモデルへ手早く組み込むことが出来るようにする、AclPlusBehaviorを紹介します。

(続きを読む…)

jqPlotがIE8で動作しない場合の対処方法

暑い日が続きますね。昼間に外に出るとカリカリベーコンになってしまうのかと思うほどです。というわけで、こんにちは nojimage です。

jQuery向けのグラフ描画プラグイン”jqPlot“を最近利用してみました。
手軽にグラフ描画ができるのでとても重宝します。

さくさくっと作っていたのですが、IE8でテストした際にグラフが描画されない場合がありました。(使用したバージョンは 0.9.7r597

IEの場合に呼び出す、explorercanvas.jsでエラーを吐いているので、
以下のURLから最新版を取ってきて置き換えることで無事動作するようになりましたとさ。

http://code.google.com/p/explorercanvas/downloads/list

CakePHP 1.3.3でSession.timeoutの解釈がさらにややこしくなっている件

CakePHP 1.3.3が先日リリースされました。

早速変更点を確認していたのですが、app/config/core.phpのSession.timeoutのコメント内容が変更されており、おやっと思いました。

--- a/app/config/core.php
+++ b/app/config/core.php
@@ -167,7 +167,7 @@
        Configure::write('Session.cookie', 'CAKEPHP');

 /**
- * Session time out time (in seconds).
+ * Session time out time (in minutes).
  * Actual value depends on 'Security.level' setting.
  */
        Configure::write('Session.timeout', '120');

Session.timeoutの指定値が分として解釈されるようになった?

cake/libs/cake_session.phpの変更点も見てみます。

--- a/cake/libs/cake_session.php
+++ b/cake/libs/cake_session.php
/* ... 前略 ... */
@@ -460,28 +468,17 @@ class CakeSession extends Object {
  */
        function __initSession() {
                $iniSet = function_exists('ini_set');
-
                if ($iniSet && env('HTTPS')) {
                        ini_set('session.cookie_secure', 1);
                }
+               if ($iniSet && ($this->security === 'high' || $this->security === 'medium')) {
+                       ini_set('session.referer_check', $this->host);
+               } 

-               switch ($this->security) {
-                       case 'high':
-                               $this->cookieLifeTime = Configure::read('Session.timeout') * Security::inactiveMins();
-                               if ($iniSet) {
-                                       ini_set('session.referer_check', $this->host);
-                               }
-                       break;
-                       case 'medium':
-                               $this->cookieLifeTime = Configure::read('Session.timeout') * Security::inactiveMins();
-                               if ($iniSet) {
-                                       ini_set('session.referer_check', $this->host);
-                               }
-                       break;
-                       case 'low':
-                       default:
-                               $this->cookieLifeTime = Configure::read('Session.timeout') * Security::inactiveMins();
-                       break;
+               if ($this->security == 'high') {
+                       $this->cookieLifeTime = 0;
+               } else {
+                       $this->cookieLifeTime = Configure::read('Session.timeout') * (Security::inactiveMins() * 60);
                }

                switch (Configure::read('Session.save')) {
/* ... 後略 ... */

Security.levelが’medium’または’low’の場合、$this->cookieLifeTimeが以前より60倍、「分」として解釈されるようになっています。
ただし、$this->cookieLifeTimeは、セッションCookieの有効期限なのでセッション自体の有効期限ではありません。

セッションの有効期限は、これまで通り

$this->sessionTime = $this->time + (Security::inactiveMins() * Configure::read('Session.timeout'));

であり、Security.levelがhighであれば「Session.timeout * 10 (秒)」、mediumであれば「Session.timeout * 100 (秒)」、lowであれば「Session.timeout * 300 (秒)」のままです。

しかし、なんで誤解を招きそうなコメント&Cookieだけ期限が延長になったんでしょうか。

Get Adobe Flash playerPlugin by wpburn.com wordpress themes