RSS
 

XOOPSの外部利用

28 8月

XOOPSのライブラリの機能だけを流用する方法はないかと見てみたが、
どうもmainfile.phpだけを読み込めば
DB接続から何から行ってくれているようだ。
あとは適当にモジュールのファイルを読み込んで関数を呼んだり、
DB接続クラスを呼び出したりも可能。
フォーラムの最新書き込み呼び出しとかも非常に簡単に
外部で利用することもできた。

 
No Comments

Posted in php

 

オリジナルのView

24 4月

CakePHPではViewにViewというクラスが用いられているが、
これはオーバーライドしたものを利用できる。

例えばSmartyViewを作りたい場合、
app/viewsにsmarty.phpという名前のファイルに
SmartyViewクラスを作成。
クラスの内容自体は関数をオーバーライドして適当に作ればいい。

あとはコントローラで
var $view = ‘Smarty’
と宣言すればいい。

気を付けなればいけないのが、
テンプレートの拡張子にctpもしくはthtmlを利用する場合、
Viewの_render関数をオーバーライドしても
勝手にView::_renderという感じでViewのものを呼び出されてしまう。
なのでテンプレートの拡張子をtplとかに変更するか、
_renderメソッドを呼び出しているところもすべて
オーバーライドする必要がある。

 
No Comments

Posted in CakePHP

 

サウンドをループ

06 3月

flexでサウンドをループする方法。
BGM等に使用したい場合。
あと、主に複数サウンドをならしたい時に
一つのリスナー関数で終わらしたい時の話。
Soundを再生する時、以下のようにチャンネルオブジェクトが出てくる。
その時そのチャンネルオブジェクトにイベントを設定。

var channel:SoundChannel = snd.play();
channel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete);

で、ぐぐっても出なかったしリファレンスにも
ちゃんとした情報が載っていなかったのだけど、
リスナーで受け取ったパラメータに、SoundChannelが割り当てられている。
なのでSoundとSoundChannelをなにかで結びつけて保存しておけば、
どのSoundが終了したのかを判別できる。

public function onSoundComplete(evt:Event):void
{
    for (var name:String in m_sounds)
    {
        if (m_sounds[name].channel == evt.target)
        {
            m_sounds[name].sound.play();
            break;
        }
    }
}
 
No Comments

Posted in flex

 

画像の回転

05 3月

flexでBitmapオブジェクトを回転させる際、
リファレンスを見るとrotaionというプロパティがあり、
それを変更することで簡単に回転が出来る。
が、よくよく見るとx=0, y=0の部分で回転しているため、
ちゃんと真ん中で回転してくれない。
リファレンスを見ると、その基準点を変更するための
プロパティも何も無いようだ。

色々調べていると、行列変換が使えることが分かった。
これで回転どころか何もかも好き勝手に出来る。
さすがflex。携帯のアプリとは違う。

具体的には、Bitmap.transform.matrixに
Matrixオブジェクトを代入しておけばよい。
行列を知らない人はなんのこっちゃと思うかもしれないが、
特に難しいことはない。

var matrix:Matrix = new Matrix();
matrix.rotate(angle);

という感じで何も分からなくても簡単に変換行列は作成できる。
で、具体的に回転させるのは、
まず基準点を画像の中心に合わせ、
それから回転、スケール変更を行い、
表示する位置に移動する、という作業。
内容的にはこれだけ。

var matrix:Matrix = new Matrix();
matrix.tx = -bitmap.bitmapData.width / 2;
matrix.ty = -bitmap.bitmapData.height / 2;
matrix.scale(scalex, scaley);
matrix.rotate(Math.PI * angle / 180);
matrix.tx += x;
matrix.ty += y;
bitmap.transform.matrix = matrix;
 
No Comments

Posted in flex

 

フォームから配列で複数アイテムを使う

26 2月

CakePHP1.2ではフォームの作成にはhtmlヘルパーを使わず、
formヘルパーを使うようになった。
使い方は以下のような感じ。

< ?php
$form->create(’User’);
$form->input(’name’);
$form->end(’Submit’);
?>

1.1から移行した時はなんだか良く分からないなあと思うけど、
使っていくうちに$form->inputが色々出来ることに気付く。
誕生日なんかも$form->input(’birthday’, array(’type’ => ‘date’));
みたいな感じで出来るので面白い。
月が英語で出るのがやっかいだが。
例えば以下のようなデータ構造の場合。
User
- Item
- Item
- Item
このようにItemが複数ある場合もフォームで作れる。
もしかしたら1.2betaバージョン以降じゃないと駄目かもしれないが、
以下のように作成できる。

< ?php
$form->create(’User’);
$form->input(’name’);
$form->input(’Item/0/name’);
$form->input(’Item/1/name’);
$form->input(’Item/2/name’);
?>

これで
$this->data[’Item’]に複数のItemが入る。
色々出来るんだなあと思った。
後は、app_model.phpにそれようのバリデーション関数や
保存関数を加えておけばもっと便利に。

function insertList($rows) {
  foreach ($rows as $row) {
    $this->create($row);
    if (!$this->save()) return false;
  }
  return true;
}

みたいな感じ。

 
No Comments

Posted in CakePHP, php

 

userDefined

25 2月

CakePHPの1.2のバリデーションにuserDefinedというのがある。
これを利用すればフレームワークを汚さなくても
独自のバリデーションを加えることが可能。
具体的な使い方は以下の通り。
まずは特定のモデルもしくはapp_model.php等に
専用のバリデーション関数を追加する。
例えば以下のような関数。
function tel($data) {
return preg_match(’/¥d{2,4}-¥d{3,4}-¥d{4}/’) ? true : false;
}
そしてモデルのバリデーション設定には以下のように設定。
var $validate = array(
‘tel’ => array(’rule’ => array(’userDefined’, ‘User’, ‘tel’)),
);
配列の3つめに先ほどのtelを記入。
2番目はよく分からないけどモデル名を書いておけばよいと思う。
別のモデルのも使えるよと言うことだろうか。

ちなみに、モデル内にruleで指定するメソッドを定義しておけばそれでもいいらしい。

 
No Comments

Posted in CakePHP, php

 

年齢の計算

25 8月

すごい、なんだこれ…
echo (int)((20070823 – 19850101)/10000);
で年齢が計算できるらしい。
http://itpro.nikkeibp.co.jp/article/Watcher/20070822/280097/

 
No Comments

Posted in php

 

php.iniによるサーバー変更時におこるPOST,GETの文字化け対策

07 8月

サーバーを変更した時にmbstring関係の設定は正しいはずなのに、
POSTやGETだけが文字化けしてしまう時がある。
他の部分はちゃんと動いているのに。

POSTやGET関連のmbstring設定はいくつかあるが、
これらが関連している。

原因は、設定のタイミング。

プログラム内でini_setとかで設定しても修正できない。
なぜなら、POSTやGETの代入はプログラムが開始される前に起きていることだから。

なので、プログラム内では設定せず、
.htaccessやphp.iniで設定しよう。

.htaccessの場合は

php_value mbstring.internal_encoding UTF-8
php_value mbstring.http_input auto
php_value mbstring.http_output pass
php_flag mbstring.encoding_translation Off

みたいな感じで。

 
No Comments

Posted in php

 

Ajaxが使えないサーバー

14 7月

こんな症状が発生。

Ajaxリクエストを行うと失敗するのだが、以下のような条件。

IEでcss等 … 成功
IEでphpファイル … 失敗
FireFox?でphpファイル … 成功
別のサーバーでIEでphpファイル … 成功

つまり、特定のサーバーでphpファイルのリクエストを行うと
失敗してしまうという現象。

原因は、apacheの設定で
AddDefaultCharset none

とするとこうなるらしい。
ちゃんと

#AddDefaultCharset
という風にしなければならない。

 
No Comments

Posted in CentOS

 

RAID1の設定

19 6月

http://www.ysd.bne.jp/linux/raid.htm

http://tangiku.net/wiki/index.php?Ce­ntOS%A4%C7%A5%BD%A5%D5%A5%C8%A5%A6%A 5%A7%A5%A2RAID
を参考にしたら出来た。

bootが後者と同じくmd0にあったので、

grub-install --root-directory=/boot /dev/hda

にしたら、再起同時に見事にgrubの画面で止まった。
しょうがないので

configfile /grub/grub.conf

で復活できます。

原因は上記コマンドだと/boot/boot/grubを見てしまうために
設定ファイルが足りないから。
色々と変な情報が行き交ってて訳がわからなかったが、
とりあえず以下が正しいよう。

grub-install --root-directory=/ /dev/hda

あとは参考URLに書いてあるとおりにしたら出来た。

 
No Comments

Posted in CentOS