$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
08/29: Windows上でコマンドライン版PHPを使う
08/22: Javascript > 参照型のデータタイプ
第3回 変数の宣言とスコープ - @IT
参照型:
配列(array)
オブジェクト(object)
関数(function)
ローカル変数は関数全体で有効である
ローカル変数は関数の先頭で宣言する
関数リテラルとFunctionコンストラクタにおけるスコープの違い
クロージャは一種の記憶域を提供する仕組み
クロージャを利用したトグル・ボタンの動作例
参照型:
配列(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 ? "有効" : "無効"; }; }
08/21: JavaFXによるGUIアプリケーションの作成
CodeZine:JavaFXによるGUIアプリケーションの作成(OpenJFX, JavaFX)
[実行]-[構成および実行]メニュー * 名前: JavaFX Application * [メイン]タブ プロジェクト: FXSample(実行するプロジェクトを選択) メイン・クラス: net.java.javafx.FXShell (デフォルトで設定されているので設定不要) * [引数]タブ プログラムの引数: ${resource_name} (「変数」ボタンで、resource_nameを選択)
MySQL Performance Blog � COUNT(*) vs COUNT(col)
countでNULLを許可するカラム名を指定すると、NULLはカウントされないので結果が異なります。(スピードも遅くなる)
countでNULLを許可するカラム名を指定すると、NULLはカウントされないので結果が異なります。(スピードも遅くなる)
08/21: DbEdit Plugin for Eclipse
08/17: MySQL > SQL_MODE
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';
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';
08/15: PHP4からPHP5への移行
# リファレンス仕様の変更 # 無効な配列アクセス # 関数定義仕様の変更 # PHPバイナリの名前 # 長い名前のシステム定義配列 # register_globals # 参照カウンタの32ビット化 # オブジェクト関連の変更 # オブジェクト変数の代入 # オブジェクトのコピー作成 # $this変数の取り扱い特集:残り一年! PHP4からPHP5への移行|gihyo.jp
08/14: MySQL > TYPE=HEAPを指定する
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.
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.
08/14: MySQL > カラムのCollationを調べる
MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 9.4.7 SHOW FULL COLUMNS
SHOW FULL COLUMNS FROM a;
SHOW FULL COLUMNS FROM a;
08/13: MySQL > mysqldumpで、XMLを出力する
# mysqldump -Xd -u [userid] -p[password] [database] [table] > [output xml]
-X: XML output
-d: no data
-X: XML output
-d: no data
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
黒い三角は関連を表す。
メソッドの下線はクラスレベルでの責任を表す
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
latin1キャラクタセット文字列とのCONCATは | MySQL日本語の旅 | OpenSource Web
...WHERE state = CONVERT(@state USING latin1);
...WHERE state = CONVERT(@state USING latin1);
MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.3.7.2 GROUP BY の修飾子"ROLLUP 使用時のその他の考慮事項
以下に、MySQL における ROLLUP の実装固有の動作について、いくつか説明します。 ROLLUP の使用時には、ORDER BY 節を使用して結果をソートすることはできません(ROLLUP と ORDER BY は相互排他的です)。しかし、ソート順序をある程度制御することは可能です。 MySQL で GROUP BY を使用すると結果がソートされます。また、GROUP BY リストに指定したカラムに明示的な ASC または DESC キーワードを付けることによって、個々のカラムのソート順序を指定できます(この場合も、ROLLUP によって追加される上位レベルの集計レコードは、ソート順序とはかかわりなく、それぞれの計算の対象となったレコードの後に表示されます)。"
08/06: PHP5の新機能とPHP4との互換性
@IT:オブジェクト指向言語に生まれ変わるPHP5[前編](2/2)
* オブジェクトは参照渡しがデフォルト * プロパティにアクセス制限を導入 * メソッドにアクセス制限を導入 * abstractクラスとabstractメソッド * インターフェイス * final宣言 * 名前空間 * クラス内定数 * クラス変数 * 統一コンストラクタ * デストラクタ * アクセサ
08/03: PHPの罠
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.
08/02: MySQL > よく忘れる、落とし穴的SQL
- 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.