2013年7月30日火曜日

jQueryを使ってみた -要素の取得とbindメソッド-

jQueryどころかjavascriptすら良く知らないけど、
webページでスライダーを使うというからやってみた。
jQueryって支援ライブラリだったのね。

とりあえず参考ソースが手元にあったのでそれを参考にする。

...うまくいかねえ!

というわけでネットで調べつつ初歩の初歩からやってみる。

まずはhtml上の要素を取得する

    var element = $("div");     // 要素の名前で直接
    var element = $("#hoge");   // id
    var element = $(".hoge");   // class

あら簡単。
さあやってみよう。

...またしてもうまくいきませんよ?

苦悩にうなり声を上げつつ格闘し続けた結果、原因がわかった。
javascriptの定義のところにべた書きしてたのが問題っぽい。
window.onloadメソッドの中でやったらちゃんと要素を取得できた。
要素がそもそも生成されていなかったってことか?
なんにせよ要素が取得できたので次に進む。

要素を取得したらば次は取得した要素がタッチしてるときに反応するようにする。
bindメソッドを使えばそれができるらしいぞ。

    obj.bind( "click", function(){
        alert( "click event" );
    } );

メソッドのテストをしたいだけなので要素がクリックされたらアラート画面を呼び出す。
今度はつまずくことなくうまくいった。

とりあえず簡単にjQuery。
...まさかたったこれだけのことをやるのに半日以上かかるとは...。

2013年7月29日月曜日

CakePHP2.x モデルのバインドパラメータ

いちいち調べるのも面倒なので
自分がよく使う使い方のものだけまとめておく

$hasOne = array(
"ModelName" => array(
"type" => "inner",
"className" => "ModelName",
"foreignKey" => false,
"conditions" => array(),
),
);
$model->bindModel( array( "hasOne" => $hasOne ) );

こうして毎回動的に生成するのは果たしてどうなのか。
とはいえ、ページごとにテーブルに求めたいデータというのは異なるものになりがちなので
こうしたほうがいい気がする。

foreignKey を false に指定すると conditions で指定した条件でテーブルが結合される。
最後に、モデルにバインドされているアソシエーションを解除する方法。

$model->unbindModel( array( "hasOne" => array_keys( $model->hasOne ) ) );

アソシエーションの種類により hasOne のところは変化する。

CakePHP2.x シェルを使う

CakePHP2.x系でシェルを使うには

/app/Console/Command/TestShell.php

<?
class TestShell extends AppShell
{
        public function main()
  {
                CakeLog::write( "debug", "test" );
  }
}
?>

テストなので適当にログを吐き出すだけ。
ほとんどコントローラっぽく使えるようだ。

<?
// ※未テスト
class TestShell extends AppShell
{
        public $uses = array( "User" );

public function main()
{
                $this->User->find( "all" );
}
}
?>

あとはこいつをシェルスクリプトから呼び出せばいい。
メソッド名がmainの場合は引数で渡さなくても勝手に解決してくれるみたい。

        $ /app/Console/cake Test -app

さて問題は、シェルスクリプトもそもそもあまりコンソールにも触らない自分は
cronどころかそもそもシェルスクリプトがどういったものなのかすら知らないということだ。

なのであくまでCakePHPのシェルクラスの作り方ページ

参考にしたサイト
http://blog.xao.jp/blog/cakephp/cakephp-2-0-%E3%81%A7-cron-%E3%82%92%E4%BD%BF%E3%81%86/

2013年7月26日金曜日

SDLでマウスを使う

SDLでマウスの情報を取得するための関数

    Uint8 SDL_GetMouseState(int *x, int *y)

戻り値が現在押されているボタン
引数が座標

ボタンに関してはとりあえず1が左ボタン、3が右ボタンで十分かな
数値分ビットシフトした値が入ってくる