» サーバの引っ越し完了

2010.08.26 Category : 未分類

サイトマップ系のエラーが段々増えてきまして、 サーバの移行を常々考えていましたが、ようやく完了。 Wordpressも思い切って3.0に。 久々のエクスポート&インポート作業でどうなることかと思いましたが、 とりあえず何の不具合もなく稼働中。

» MySQL : TIPS

2009.07.03 Category : MySQL, Reference, TIPS

Database

表示 mysql> SHOW DATABASES
作成 mysql> CREATE DATABASE db-name
使用 mysql> USE db-name

Table

作成 mysql> CREATE TABLE tb-name(no INT, name VARCHAR(50), birth DATE)
表示 mysql> SHOW TABLES
構造修正 mysql> ALTER TABLE tb-name ADD added-fieldname INT
※ADD部分はいろいろあります。
フィールド表示 mysql> SHOW FIELDS FROM db-name
データ追加 mysql> INSERT INTO tb-name VALUES(data1, data2)
※値は全てフィールドに合わせる。
更新 mysql> UPDATE tb-name SET field-name=value WHERE no=6
※WHERE condition
削除 mysql> DELETE FROM tb-name WHERE no=6
mysql> DELETE FROM tb-name WHERE no BETWEEN 1 AND 5 ※WHERE condition
検索 mysql> SELECT * FROM tb-name WHERE no=6
※WHERE condition

» Smarty : TIPS

2009.07.01 Category : PHP, Reference, Smarty, TIPS

assignで渡す配列のアクセス 単純配列の場合 : {$array[0]}
連想配列の場合 : {$array.key}  ※{$array['key']}はアウト
オブジェクトの場合 : {$object->property} , {$object->method()}

» etc. : TIPS

2009.06.24 Category : TIPS

Flash Switcherのエラー回避 1. /Library/Internet Plug-Insのパーミッションを777にする。
2. Firefox終了後、Flash Player.pluginとflashplayer.xptを削除する。

» PHP : TIPS

2009.06.16 Category : PHP, Reference

'$var'と"$var" '$var'は文字列。"$var"は変数として展開。
コメント //,# --- 単数行
/**/ --- 複数行
. 文字列連結
-> プロパティ、メソッドへのアクセス
=> キー(配列ならインデックス)に値を割り振る。
'XML' => 'Extensible Markup Language'
0 => 'Hypertext Preprocessor'
(int) データ型のキャスト。print((int)$data)
指定できるのは、bool, boolean, double, float, real, int, integer, string, object
foreach foreach(配列名 as 値用の変数){}
foreach(配列名 as キー用の変数 => 値用の変数){}
& 値渡しではなく参照渡し。変数の代入、関数の戻り値でも使われる。
戻り値のときは関数名の前 → function &getValue(){}
スクリプト名、ディレクトリ名いろいろ お題:http://www.fujinando.com/dir1/dir2/index.php?var=data1
$_SERVER['PHP_SELF'] → /dir1/dir2/index.php
$_SERVER['REQUEST_URI'] → /dir1/dir2/index.php?var=data1
$_SERVER['SCRIPT_NAME'] → /dir1/dir2/index.php
$_SERVER['SCRIPT_FILENAME'] → /var/www/htdocs/dir1/dir2/index.php
$_SERVER['QUERY_STRING'] → var=data1
__FILE__ → /var/www/htdocs/dir1/dir2/index.php
dirname(__FILE__) → /var/www/htdocs/dir1/dir2
basename(__FILE__) → index.php
basename(__FILE__, '.php') → index
!isset($var)とis_null($var) $var = nullのとき、どちらもfalseが出る。
is_null($var)はnoticeエラーも出る。
シンボルテーブルに名前のない変数のときにnoticeが出るらしい。$var = nullだと変数名varはシンボルテーブルに登録されていて、Cでのポインタ値が0(意味のないメモリ番地)になっている。

» AS3 : SingletonクラスをStageMovieClip内に予め配置。

2009.04.14 Category : AS3

package
{
    import flash.display.*;
    public class ClassA extends Sprite
    {
        private static var instance:ClassA = null;
        public function ClassA(en:SingletonEnforcer){}
        public static function getInstance():ClassA
        {
          if( instance == null )
          {
              instance = new ClassA( new SingletonEnforcer() );
          }
          return instance;
        }
    }
}
class SingletonEnforcer extends Sprite{}

通常はライブラリで引数をとるClassAにリンケージされたMovieClip, Spriteは、stageやDisplayObjectContainerに予め配置しておくことができない。引数を指定できないから。ただし、上のようにクラスファイル内のprivate class(SingletonEnforcer, デコンパイルするとprivate classとして定義されてる)を引数にとる場合は問題ないが、private classもMovieClip, Spriteを継承する必要がある(かも。エラーが出る場合があり。原因未調査)。もっと単純化するなら(使い方に注意がいるけど)以下のとおり。

package
{
    import flash.display.*;
    public class ClassA extends Sprite
    {
        private static var instance:ClassA = null;
        public function ClassA()
        {
            instance = this;
        }
        public static function getInstance():ClassA
        {
            if( instance == null )
            {
                instance = new ClassA();
            }
            return instance;
        }
    }
}

使い方は注意が必要。newができてしまうので、必ずgetInstance経由で呼び出す。

» AS3 : Tweener CurveModifiersクラス

2009.04.14 Category : AS3

カーブに沿ってTweenさせたいとき。

package
{
    import caurina.transitios.properties.CurveModifier;
    public class Main extends Sprite
    {
        var sp:Sprite = new Sprite();
        ...
        Tweener.addTween(sp, {x:20, y:20, _besier:{x:10, y:10} });
    }
}

_besierはコントロールポイント。Tweenの始点・終点を結んだ曲線上を移動する。

_besierのx,yのどちらかを省略した場合は、始点・終点の中点が補われる(ハズ)。

» AS3 : Iteratorパターン

2009.03.16 Category : AS3, DesignPattern

DesignPattern学習。

Iterator Pattern

iterator.gif

note.

■ ConcIteratorのコンストラクタでは、引数にIAggregateを取る。どの集合体を数え上げるかが渡される。 ■ ConcAggregateで実装しとくべきメソッド ・function getLast(){} → 自身がもつ(数える対象となる)要素の最終位置(=length) ・function getItemAt(index:int){} → index位置の要素を返す ■ ConcIteratorでは、indexをプロパティにもつ。どの位置を捜査しているか、の値。nextが呼ばれたらインクリメント。

» AS3 : Stateパターン

2009.03.15 Category : AS3, DesignPattern

DesignPattern学習。

State Pattern

state.gif

note.

■ Contextには、stateプロパティ用のsetter,getterメソッドを実装するパターンがほとんど。
function setState(state:IState){};
function getConcState1(){};
function getConcState2(){};

■ ConcState(ex : PlayState)にContextの参照をもたせて、特定の処理をさせてからContext.setState()を呼び出し、Context.stateプロパティを変更(ex : PlayState)する。

■ 新たなStateを追加する場合
1. IStateに追加State用のメソッドを追加
2. 既存の全ConcStateに1.のメソッドを実装
3. 新規ConcStateクラスを作成
4. Contextを変更。setter、getter、新規ConcState用のrequestを追加

■ Context内のrequestA,Bは、methodA,BのようにIStateが規定するメソッドと同じ名前にしたほうが解りやすいか。

» AS3 : Observerパターン

2009.03.15 Category : AS3, DesignPattern

DesignPattern学習。

Observer Pattern

observer.gif

note.

■ 2つの抽象クラスはインターフェースにしても。observers:Arrayの設定が必須。

■ ConcSubjectとConcObserverが同じプロパティを持つと解りやすい。
Subjectがsetter メソッドで自プロパティを上書きして、そのプロパティ値を引数にして、notifyObserverを呼ぶ、など。

» AS3 : Adapterパターン

2009.03.14 Category : AS3, DesignPattern

DesignPattern学習。

Adapter Pattern

adapter.gif

note.

■ 2タイプあり
継承パターン → Adapteeクラスを拡張。
委譲パターン → Adapteeクラスの参照を保持。

» AS3 : Compositeパターン

2009.03.14 Category : AS3, DesignPattern

DesignPattern学習。

Composite Pattern

composite.gif

note.

■ clientはLeafもCompositeも同一視(=同じメソッドを使える)

■ methodA,methodBはComposite内では再帰的に処理される。
→ Compositeの中にはLeafだけでなくCompositeも含まれる。

■ removeのときは要注意。
→ 参照を全てnullにして、ガベージコレクションの対象にする。

■ CompositeのmethodAは、chilren:Array全てに対してmethodAを呼び出す。children[i]が、
Leafのとき → 特定の処理
Compositeのとき → children:Arrayの各itemに対してmethodAを呼び出す。
= recursion.

» AS3 : Decoratorパターン

2009.03.14 Category : AS3, DesignPattern

DesignPattern学習。

Decorator Pattern

decorator.gif

note.

■ AbDecoratorはAbComponentの参照を持つ。

■ AbComponentでメソッド定義。実装はサブクラスで。

■ ConcDecoratorのメソッドであるmethodAは、参照をもつConcComponentのmethodAを呼び出し、さらに処理を追加する。= Decoration.

» AS3 : Commandパターン

2009.03.14 Category : AS3, DesignPattern

DesignPattern学習。

Command Pattern

command.gif

note.

■ Receiver = 実際の命令の受け取り手、というイメージ。

■ client(Documentクラス)がInvokerの役を果たすこともある。

■ 抽象クラスが使えないので、AbCommandはインターフェースにしてみても。

■ AbCommandを配列で保持するAbMacroCommandみたいなクラスもありうる。
add、removeを(インタフェースで)実装。
ConcMacroCommand.execute()で配列内の全Commandをexecute。ProgressionのSerialListみたいな感じか。Compositeにも近い。

» AS3 : XML演算子

2009.03.04 Category : AS3, Reference

XML演算子リスト

@ XMLまたはXMLListの属性値にアクセス
{} XMLまたはXMLListの式で変数を囲む
[] XMLまたはXMLListのノードにアクセス
+ XMLまたはXMLListの値の連結
+= XMLまたはXMLListの値を連結して代入
.. XMLまたはXMLListの子孫エレメントに移動。@と併用も可能。
ノード名がActionScriptの予約語と一致するときはXML.descendants()メソッドを使う。
. XMLまたはXMLListの子エレメントまたはアトリビュートにアクセス
() XMLまたはXMLListの構造内の式を評価・実行
<> XMLタグを定義する
delete XMLエレメントまたはアトリビュートの削除

サンプルXMLがこちら

<?xml version="1.0" encoding="UTF-8"?>


A
Kohei
Tabuchi
Catcher


A
Shingo
Wakabayashi
First base


A
Kizashi
Sasaki
Third base


A
Futoshi
Nakagomi
Pitcher


A
Hajime
Uchiyama
Short stop

var xml:XML = new XML();
xml = XML(xmlLoader.data);
trace(xml..lastName[0].text());
//Result -> Tabuchi
trace(xml..employee[4].@id);
//Result -> 6
trace(xml..employee.(firstName=="Shingo").position);
//Result -> First base
trace(xml..employee.(Number(@id)>5).lastName);
//Result -> Uchiyama

» AS3 : Progression TIPS

2009.02.11 Category : AS3, Progression

addCommandとinsertCommandの違い。

addCommand(
    function(){
        addCommand(new Command(step1));
    },
    new Command(step2),
    new Command(step3)
}

実行順はstep2 → step3 → step1

addCommand(
    function(){
        insertCommand(new Command(step1));
    },
    new Command(step2),
    new Command(step3)
}

実行順はstep1 → step2 → step3
実行リストの尻に加えるのか、横入りさせるのかの違い、みたいな感じ。

» AS3 : 予め配置されたMovieClipとクラス定義

2009.02.11 Category : AS3

parentClass.as内

public var child_instanceName : childClass

・親クラスのプロパティ名 = 子のインスタンス名
・childClassはリンケージで書き出し設定済み
・childClass用のプロパティはpublicで宣言

» JS : TIPS

2009.02.09 Category : JS

01.ブロックスコープが存在しない。

scriptA

function func(){
for(var i=0; i<10; i++){
var j = i;
}
alert(j);// access ok.
}

scriptAは以下と同じ。

function func(){
var i,j;
for(i=0; i<10; i++){
j = i;
}
alert(j);
}

「関数内ローカル変数は全て先頭で宣言したことになる」だと。出典:builder

02.クロージャでprivate的なプロパティ

var sample = (function(){
var n = 0;
return function(){
alert(n++);
}
})();
sample(); //0
sample(); //1
sample(); //2

» JS : jQueryプラグイン

2009.02.09 Category : JS

jQueryプラグインは、jQueryオブジェクトを返す形で。
メソッドチェーンが切てしまうから。

$.fn.pluginName = function(){
return this.each(
function(obj){
var cgiPath = 'http://yourdomain.com/?';
var param = $(this).attr('href');
$(this).hover(
function(ev){
$('img#frame')
.show()
.attr('src',sgiPath + param)
.css({'border':'1px splid #DDD'});
},
function(ev){
$('img#frame').hide();
}
);
}
);
};
$(document).ready(
function(ev){
$('a').pluginName();
}
};

» JS : google JSAPI

2009.02.02 Category : JS

<script type="text/javascript" src="http://www.google.com/jsapi">