2011/07/15

[cakePHP] コントローラーでのルール

コントローラーはAppController を継承する
※間に1つ別のクラスを挟んだりしてもいいんだよな、多分…

-名前の定義
public $name
コントローラ名を定義する。1文字目は大文字。パブリックにする

-モデルの定義
public $uses = array('Table');
使うモデルの定義
そのコントローラーで使うモデルを定義しておく。
省略した場合は、コントローラー名の単数形のモデルを使う。
1つのテーブルしか使わないってことはそんなにはないよね?

-アクションの定義
function index(){}
メソッドとして登録
アクセスするURLは「/コントローラ名/アクション名」になる
省略した場合はindexアクション
php4の時は、メソッド名の最初を_(アンダースコア)で始めると、URLで指定してもアクセスできなかったみたい。
俺のとこはPHP5なんでprivateにしとけばいいんだろうけど。アンダースコアはいるのかな?試してみよう

-変数をビューに渡す
$this->set(変数名, 値)


cakePHP1.3からはfindAllはなくなったみたい。
find('all');で同じ動きになる

参考
CakePHPで作るToDoアプリ(1)

[cakePHP] cakePHPのデータベース、テーブルのルール

・データベース(以下DB)のテーブル名は複数形にする

・テーブルの主キーのカラム名はid

・作成日時はcreated、更新日時はmodifiedにする
※この名前にしておくと、自動で更新してくれる。

・外部キーに使用するカラム名は「関連付けたいモデル名」_id
※データベースの設定でprefixを付けていても、外部キーはprefixを無視してモデル名_idでつける


どれを単数形にして、どれを複数形にするかはすぐわすれてしまうなー

2011/07/13

[JavaScript] 要素を追加する

■子供要素を追加する方法

appendChildだと親要素の最後に子要素を追加できる

elem.appendChild(childElem);


先頭に追加したい場合はinsertBeforeを使う
insertBeforeは指定した要素の前に、新しい要素を追加できる

parent.insertBefore(追加したい要素, 既存要素);



なので先頭に追加したい場合は

parent.insertBefore(追加したい要素, parent.firstChild);


これで現状の最初の子要素の前に新要素を追加できる



■指定の場所に追加する

指定の要素の前に追加できる

node.insertBefore(elem);



参考
 [JavaScript] DOM Nodeに子ノードを



2011/07/12

JavaScriptで位置情報を取得する

スマートフォンサイトで位置情報を取得する処理があった。
コードはこんな感じ
if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function(pos){
    //取得成功時の処理
  }, function(){
    //エラー時の処理
  });
} else {
  error('not supported');
}

iPhoneではうまく動いたのに、Androidでは動かないけど、エラーも出ない。
確認してみるとnavigator.geolocationは確かにある。

調べてみると、Androidの設定によっては位置情報を取得できないみたい。
「設定」→「位置情報とセキュリティの設定」の中の「無線ネットワークを使用」と「GPS機能を使用」の両方にチェックを入れたら反応するようになった。
デフォルトで反応しないとなると、位置情報を使ったサービスを使わせるための引きこみが必要になるなー

※試したのはXPERIA SO-01B(Android 2.3)ってやつ。他人のもの(2人にお願いした)だったので、詳細はわからないけど、2人ともGPS絡みの設定はやったことないとのことなので、工場出荷状態だとGPSは反応しないみたい

2011/07/06

[JavaScript] 親要素・子要素・兄弟要素の取得方法

JavaScriptでの要素の取得方法。ライブラリばっかり使ってると忘れてしまうので

■親要素

element.parentNode


■子要素

子供一覧
element.childNodes //NodeListオブジェクトが返ってくる
※子要素がない場合でも、空っぽのNodeListオブジェクトが返ってくる

最初の子
element.firstChild

最後の子
element.lastChild


■兄弟要素


兄ちゃん要素
element.previousSibling

弟くん要素
element.nextSibling

改行なんかもTextノードだと認識されるので、注意




jQueryでの取得方法もまとめてます
jQuery親要素、子要素、兄弟要素取得のまとめ


参考
ノード木を探索する



2011/07/05

[iPhone] CSSアニメーションがちらつく場合

iPhoneでCSSアニメーションを使う場合、画面がちらついてしまう時がある。

俺の場合は、位置を移動させるtranslateXを-webkit-transitionでアニメーションさせようとした時に起きた。

Androidでは起きない症状。
translateXの指定をtranslate3dに変更することでちらつきはなくなった。

-webkit-transform: translateX(100px);

↓↓↓ 変更 ↓↓↓


-webkit-transform: translate3d(100px, 0px, 0px);


参考
スマートフォン制作のツボ最新を聞いてきた-CSS Nite,LP13

[iPhone] アニメーションは CSSでやるべし

iPhoneのアニメーションをJavaScriptでアニメーションすると非常にもっさりとして、コマ落ち気味の乙な動きになってしまうので、CSS3の-webkit-transitionを使用しようしようしよう。

イージングの種類が少ないのが残念だけど、動きの滑らかさはJavaScripとは比べ物にならない

参考
CSS3 変形処理を行う transform プロパティ