Archives

You are currently viewing archive for August 2007
Category: Web dev
Posted by: hajime osako
$a &= $b      $a = $a & $b      Bitwise And
$a |= $b      $a = $a | $b      Bitwise Or
$a ^= $b      $a = $a ^ $b      Bitwise Xor
$a <<= $b     $a = $a << $b     Left shift
$a >>= $b     $a = $a >> $b     Right shift
Category: Web dev
Posted by: hajime osako
Category: Web dev
Posted by: hajime osako
第3回 変数の宣言とスコープ - @IT

参照型:
 配列(array)
 オブジェクト(object)
 関数(function)

ローカル変数は関数全体で有効である
ローカル変数は関数の先頭で宣言する

関数リテラルとFunctionコンストラクタにおけるスコープの違い

クロージャは一種の記憶域を提供する仕組み
クロージャを利用したトグル・ボタンの動作例
document.getElementById('btn').onclick = setButtonState();

function setButtonState() {
    var flag = false;
    var btn = document.getElementById('btn');

    return function() {
        flag = !flag;
        this.innerText = flag ? "有効" : "無効";
  };
}
Category: Web dev
Posted by: hajime osako
CodeZine:JavaFXによるGUIアプリケーションの作成(OpenJFX, JavaFX)
[実行]-[構成および実行]メニュー
    * 名前: JavaFX Application
    * [メイン]タブ
      プロジェクト: FXSample(実行するプロジェクトを選択)
      メイン・クラス: net.java.javafx.FXShell
      (デフォルトで設定されているので設定不要)
    * [引数]タブ
      プログラムの引数: ${resource_name}
      (「変数」ボタンで、resource_nameを選択)
Category: Web dev
Posted by: hajime osako
MySQL Performance Blog � COUNT(*) vs COUNT(col)
countでNULLを許可するカラム名を指定すると、NULLはカウントされないので結果が異なります。(スピードも遅くなる)
Category: Web dev
Posted by: hajime osako
Category: Web dev
Posted by: hajime osako
Category: Web dev
Posted by: hajime osako
MySQLのSQL_MODEとストリクトモード - hirohama.work

Manual:4.2.6. SQL モード
デフォルトの SQL モードを使用するには、--sql-mode="modes" オプションで mysqld を立ち上げます。Unix では my.cnf で、Window では my.iniで、sql-mode="modes" を使用します。
次のステートメントで、現行のsql_mode のグローバルまたはセッション値を読み取ることができます。

SELECT @@global.sql_mode;
SELECT @@session.sql_mode;

To check all variables (parameters):
SHOW VARIABLES;
SHOW VARIABLES LIKE 'max_allowed_packet';
Category: Web dev
Posted by: hajime osako
# リファレンス仕様の変更 
# 無効な配列アクセス
# 関数定義仕様の変更
# PHPバイナリの名前
# 長い名前のシステム定義配列
# register_globals
# 参照カウンタの32ビット化
# オブジェクト関連の変更
# オブジェクト変数の代入
# オブジェクトのコピー作成
# $this変数の取り扱い
特集:残り一年! PHP4からPHP5への移行|gihyo.jp
Category: Web dev
Posted by: hajime osako
The MySQL table types

CREATE TABLE heap2 TYPE=HEAP SELECT name FROM myisam1;
ALTER TABLE heap2 ADD INDEX(name);

* HEAP indexes cannot be built on BLOB or TEXT fields
* HEAP tables cannot use partial keys (prefixes)
* HEAP tables do not support AUTO_INCREMENT fields
* HEAP indexes can only use the '=' and '<=>' operators
* HEAP indexes cannot be used to return an 'ORDER BY' result.
* HEAP indexes cannot provide information on how many records are between two results, which would assist the optimizer in its choice of index.
Category: Web dev
Posted by: hajime osako
Category: Web dev
Posted by: hajime osako
# mysqldump -Xd -u [userid] -p[password] [database] [table] > [output xml]
-X: XML output
-d: no data
Category: Web dev
Posted by: hajime osako
UML 2 クラス図の概要
黒い三角は関連を表す。
メソッドの下線はクラスレベルでの責任を表す

More detail:
UML basics: An introduction to the Unified Modeling Language
UML basics: The class diagram
UML basics: The component diagram
UML's Sequence Diagram
Category: Web dev
Posted by: hajime osako
Category: Web dev
Posted by: hajime osako
"ROLLUP 使用時のその他の考慮事項
以下に、MySQL における ROLLUP の実装固有の動作について、いくつか説明します。 ROLLUP の使用時には、ORDER BY 節を使用して結果をソートすることはできません(ROLLUP と ORDER BY は相互排他的です)。しかし、ソート順序をある程度制御することは可能です。 MySQL で GROUP BY を使用すると結果がソートされます。また、GROUP BY リストに指定したカラムに明示的な ASC または DESC キーワードを付けることによって、個々のカラムのソート順序を指定できます(この場合も、ROLLUP によって追加される上位レベルの集計レコードは、ソート順序とはかかわりなく、それぞれの計算の対象となったレコードの後に表示されます)。"
MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.3.7.2 GROUP BY の修飾子
Category: Web dev
Posted by: hajime osako
@IT:オブジェクト指向言語に生まれ変わるPHP5[前編](2/2)
    * オブジェクトは参照渡しがデフォルト
    * プロパティにアクセス制限を導入
    * メソッドにアクセス制限を導入
    * abstractクラスとabstractメソッド
    * インターフェイス
    * final宣言
    * 名前空間
    * クラス内定数
    * クラス変数
    * 統一コンストラクタ
    * デストラクタ
    * アクセサ

08/03: PHPの罠

Category: Web dev
Posted by: hajime osako

dechexはintegerじゃないものを渡すと正しい値を返さない。そこで0を足す。
echo(dechex("2724838310"+0));
なぜか、
echo(dechex((int) "2724838310"));
はうまくいかない。

array_mergeは数字がインデックスの配列を渡すと、なぜかインデックスを作り直してしまう。(つまり数字と値の関係が失われてしまう。)

isset() does not return TRUE for array keys that correspond to a NULL value, while array_key_exists() does.

Category: Web dev
Posted by: hajime osako
COALESCE(param1, param2, ...)
最初にNULLでない値を返す。
CONCAT_WS(separator, str1, str2,...)
区切り文字付きの CONCAT(CONCAT With Separator)。separatorがNULLだとNULLを返すが、CONCATと違って、strXがNULLだとその文字列はスキップされる。
カラムタイプ DATEとDATETIME
変換しないでそのまま比較すると、結果がおかしい
JOIN句の比較とWhere句の比較は結果が異なる
select * from a left join b on a.id=b.id and b.id is null;
select * from a left join b on a.id=b.id where b.id is null;
テーブルの定義を表示するには
SHOW CREATE TABLE table_name;
SELECTで変数をセットするときLIMITに注意
select @val := col_a from a limit 0, 1;
とすると、なぜか@valには最後のcol_aが代入される
SELECTでWHERE句に変数を使用するとき宣言に注意
SELECT * FROM a WHERE @myVal IS NULL OR a.col = @myVal;
で、SET @myVal = NULL; が事前に有ると無いのでは結果が異なる
Unsigned subtraction
In some cases where an unsigned subtraction would have resulted in a signed integer, it now results in an unsigned integer.
For example, "SELECT column_int - 1 FROM t;" If column column_int is unsigned integer and value is 0, the result is 18446744073709551615, not -1.
To get the older behavior, use CAST(i - 1 AS SIGNED) to convert the expression result to a signed value.
Category: Web dev
Posted by: hajime osako