キムラデービーブログ

オープンソースデータベースを加速する「キムラデービー」のブログです。カレー日記を兼ねてます。なお著者は2010-06-01より日本オラクルに在籍していますが、本サイト(ブログ、またはウェブサイト)において示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。
使い慣れたSQLに潜む実装依存: Firebirdの場合(12) UPDATE文による主キーの入れ替え
0
    本エントリはFirebird Adventcalendar 2016の17日目です。

    使い慣れたSQLに潜む実装依存:3.構文とトランザクション UPDATE文による主キーの入れ替え

    まぁMySQLと同じでだめな感じですorz 素朴な実装なので。。。。

    SQL> create table table1(c1 int primary key);
    SQL> insert into table1 values(1);
    SQL> insert into table1 values(2);
    SQL> update table1 set c1 = case c1 when 1 then 2 when 2 then 1 end;
    Statement failed, SQLSTATE = 23000
    violation of PRIMARY or UNIQUE KEY constraint "INTEG_15" on table "TABLE1"
    -Problematic key value is ("C1" = 2)

    これはできるのが正しくて、できないMySQLやFirebirdは仮の数字をワーク変数として
    ひとつのトランザクションでやるしかないですねぇ。

    CASE式を使用して、主キーを入れ替える方法 SQL(開発チームのブログ)

    まぁそもそも「主キーの入れ替えすんな」と思っちゃいますがね :)

    さて、しのはらさんのLTに頼りきりの今回の連載(?) 今回で終了です。次回までにネタを探します。

    ありがとうございましたm(_ _)m しのはらさん

    JUGEMテーマ:コンピュータ



    | meijik | Firebird/InterBase | 00:18 | comments(0) | trackbacks(0) | - | - |
    使い慣れたSQLに潜む実装依存: Firebirdの場合(10) ORDER BY でのNULLの扱い
    0
      本エントリはFirebird Adventcalendar 2016の17日目です。

      使い慣れたSQLに潜む実装依存:3.構文とトランザクション ORDER BY

      最新のFirebird 3.xでは、MySQL, SQL serverと同様にNULLは最小として扱われます。

      SQL> create table table_name(column_name int);
      SQL> insert into table_name values(1);
      SQL> insert into table_name values(2);
      SQL> insert into table_name values(3);
      SQL> insert into table_name values(null);
      SQL> insert into table_name values(null);
      SQL> comiit;

      SQL> select * from table_name order by 1;

      COLUMN_NAME
      ============
      <null>
      <null>
      1
      2
      3

      SQL> select * from table_name order by 1 desc;

      COLUMN_NAME
      ============
      3
      2
      1
      <null>
      <null>

      またNULLS FIRST, NULLS LASTもサポートされています(Firebird 1.5以降)

      SQL> select * from table_name order by 1 asc nulls last;

      COLUMN_NAME
      ============
      1
      2
      3
      <null>
      <null>

      SQL> select * from table_name order by 1 desc nulls first;

      COLUMN_NAME
      ============
      <null>
      <null>
      3
      2
      1

      Firebird 特有の仕様として、Firebird 1.xではNULLは必ずSORT結果の最後にくる、
      というものがありました。これは2.0で現在の仕様(最小)に変更されました。詳細は
      次のドキュメントをご参照ください。

      Sorts

      ミックさんが翻訳した「プログラマのためのSQL 第4版」でも7.3.2 ORDER BY句にて
      同様のトピックがあがっています。しかしNULLS FIRST, NULLS LASTを「これはもともと、DB2と
      Oracleに実装されていた機能だ。」というのは誤りでは? というのも、LUW版DB2で
      NULLS FIRST, NULLS LASTがサポートされたのは9.x (おそらくは9.5)ですから。

      SQL ServerのようにNULLS FIRST, NULLS LASTをサポートしてない環境にて
      ORDER BY時のNULLの出現位置をコントロールしたい場合は、以下のブログエントリを参考にしてください。

      FirebirdSQLパズル: 2-1-18 nulls Firstとnulls Last(キムラデービーブログ)

      この方法はDBFluteでも利用されたようです :)

      MySQLではVal IS NULLを使うこともできます。

      JUGEMテーマ:コンピュータ

      | meijik | Firebird/InterBase | 00:17 | comments(0) | trackbacks(0) | - | - |
      使い慣れたSQLに潜む実装依存: Firebirdの場合(9) 予約語
      0
        本エントリはFirebird Adventcalendar 2016の12日目です。

        使い慣れたSQLに潜む実装依存:3.構文とトランザクション 予約語

        Firebirdは2.5の時点のものですが、以下にまとめられています。

        Appendix B: Reserved words and keywords – full lists

        予約語が167, 予約語を含む「キーワード」というくくりが364語です。(予約語すべてと記号20個含む)

        Firebirdで特徴的なのはデータベースのミラーを作成するシャドウデータベース機能に使うSHADOWとか、

        SHADOW

        InterBaseのオリジナルのエラーコードGDSCODEとかですかね。

        GDSCODE

        もともとInterBaseは米国マサチューセッツ州ゴートンで開発され、
        そのときの社名はゴートン・データベース・システム(GDS)だったので、
        ソースのそこかしこにGDSとか、そのときの開発に使われたコードネーム
        (ダッドリー、バープ、アリス)とか散らばっています。来歴は以下。

        How InterBase came to be−InterBaseはどのようにして生まれたか−

        As Jim Starkey remembers it−Jim Starkeyによる回想−

        JUGEMテーマ:コンピュータ



        | meijik | Firebird/InterBase | 09:36 | comments(0) | trackbacks(0) | - | - |
        使い慣れたSQLに潜む実装依存: Firebirdの場合(8) 暗黙の型変換
        0
          本エントリはFirebird Adventcalendar 2016の11日目です。

          使い慣れたSQLに潜む実装依存:2.データ型と演算子 暗黙の型変換

          最近のFirebirdではPostgreSQLのように厳密になっており、どちらもエラーになります。

          SQL> select '123' + '456' from rdb$database;
          Statement failed, SQLSTATE = 42000
          Dynamic SQL Error
          -expression evaluation not supported
          -Strings cannot be added or subtracted in dialect 3

          SQL> select '123' + 'XYZ' from rdb$database;
          Statement failed, SQLSTATE = 42000
          Dynamic SQL Error
          -expression evaluation not supported
          -Strings cannot be added or subtracted in dialect 3

          ここでInterBase/Firebirdで特有の概念dialectがあります。
          dialectについては次のブログエントリをご参照ください。

          Firebirdでの数値の扱い方を知る(キムラデービーブログ)

          一時的にdialectを当該セッションのみ1に変更することが可能です。

          これを設定すると、動作がInterBase 6.0より前のものにすることができます。
          この場合の動作は、OracleとDB2と同じです。

          SQL> set sql dialect 1;
          WARNING: Client SQL dialect has been set to 1 when connecting to Database SQL dialect 3 database.
          SQL> select '123' + '456' from rdb$database;

          ADD
          =======================
          579.0000000000000

          SQL> select '123' + 'XYZ' from rdb$database;

          ADD
          =======================
          Statement failed, SQLSTATE = 22018
          conversion error from string "XYZ"

          Oracle, DB2, Firebirdではコンバートエラーになった+ 'XYZ'をそのまま全体のエラーしてあげますが、MySQLでは + 'XYZ'を無視して、'123'だけ返す、という仕様です。ちゃんとWarningはでてます。

          mysql> select '123' + 'XYZ';
          +---------------+
          | '123' + 'XYZ' |
          +---------------+
          | 123 |
          +---------------+
          1 row in set, 1 warning (0.02 sec)

          mysql> show warnings;
          +---------+------+-----------------------------------------+
          | Level | Code | Message |
          +---------+------+-----------------------------------------+
          | Warning | 1292 | Truncated incorrect DOUBLE value: 'XYZ' |
          +---------+------+-----------------------------------------+
          1 row in set (0.00 sec)

          SQL Serverの場合は 文字列に対する + は文字列連結記号なので、
          この動作はしかたないですね。。。

          JUGEMテーマ:コンピュータ



          | meijik | Firebird/InterBase | 10:38 | comments(0) | trackbacks(0) | - | - |
          使い慣れたSQLに潜む実装依存: Firebirdの場合(7) INSERT時のスペース
          0
            本エントリはFirebird Adventcalendar 2016の10日目です。

            使い慣れたSQLに潜む実装依存:2.データ型と演算子 INSERT時のスペース

            ここでもFirebirdは多数側、つまりOracleとVertica以外のRDBMSと同じ結果を返します。

            SQL> create table table1(c1 char(3),c2 varchar(3));
            SQL> insert into table1 values('ABC ','AB ');
            SQL> select * from table1;

            C1 C2
            ====== ======
            ABC AB

            ちょっとわかりにくいので、c2にちゃんと後続のスペースがついているかどうか確認すると。。。

            SQL> select octet_length(c1),octet_length(c2) from table1;

            OCTET_LENGTH OCTET_LENGTH
            ============ ============
            3 3

            まぁOracleではきっとchar型でも後続のスペースをとらずに入れようとして
            カラム定義長にひっかかっているのでしょうか?

            ただ、VARCHARにちゃんと後続の空白付で入ったからといって、油断をしてはなりません。

            Firebirdは(そしてMySQLも)文字列比較セマンティクスは「空白埋め」だからです。
            そのため、たとえばc2にユニーク制約をつけると、'AB 'が入っているカラムに
            'AB'はインサートできません。ユニーク制約違反になります。詳細はMySQL用に書いた
            以下のブログをご参照ください。

            MySQLの文字列比較セマンティクスは「空白埋め」

            JUGEMテーマ:コンピュータ



            | meijik | Firebird/InterBase | 20:58 | comments(0) | trackbacks(0) | - | - |
            MySQL 8.0 Lab版でCTE(Common Table Expression)
            0
              本エントリはMySQL Casual Advent Calendar の9日目です。

              MySQL Lab坂の8.0 (Optimizer)では、CTEが実装されています。詳しくは次のエントリをどうぞ。

              MySQL 8.0 Lab版: MySQLの (再帰)共通テーブル式(CTE)

              まあじっくり攻めるなら上記エントリでいいのですが、ここは簡単にざっくり動かしてみます。

              まずlab坂の当該パッケージはRHEL7のtarballとソースしか配布されていません。
              このtarballをCentOS7のmysql sandboxで動かします。

              [2016-12-27 追記] MySQL Sandboxは3.2.xからMySQL 8.0に対応しており、現時点での最新3.2.04では
              8.0.0としてインストールもユーザテーブル作成も大丈夫です。私が試したのは3.1.xでその際には
              以下の代替作業が必要でした。

              //->ここから代替作業
              解凍して8.0.0にディレクトリ名を8.0.0とすると動きませんので、まぁ一番近い5.7の、
              まぁ使わないバージョンとして5.7.1としてインストールして、make_sandbox 5.7.1とします。

              ユーザテーブルがうまく作成されないみたいなので、my.sandbox.cnfを以下のようにします。

              [client]
              #user = msandbox
              user = root
              #password = msandbox

              ./start
              ./use

              で起動、ログイン可能です。データベースtestをつくり、

              create database test;
              //<-ここまで代替作業

              ここ十年くらい使っている以下のサンプルを作成します。

              階層構造を隣接リストで表現

              こんな感じで、テーブル、データをつくり、

              use test;
              CREATE TABLE shain(empid INT PRIMARY KEY, name VARCHAR(20), mgrid INTEGER) charset=utf8;
              INSERT INTO shain VALUES ( 1, 'みやはら', NULL);
              INSERT INTO shain VALUES ( 2, 'きむら', 1);
              INSERT INTO shain VALUES ( 3, 'かまたき', 1);
              INSERT INTO shain VALUES ( 4, '加藤', 2);
              INSERT INTO shain VALUES ( 5, '林', 2);
              INSERT INTO shain VALUES ( 6, '三浦', 5);

              以下のクエリを実行します。

              mysql > WITH RECURSIVE n AS
              -> (
              -> SELECT empid, name FROM shain WHERE name = 'きむら'
              -> UNION ALL
              -> SELECT nnext.empid, nnext.name FROM shain as nnext, n WHERE n.empid= nnext.mgrid
              -> )
              -> SELECT * FROM n;
              +-------+-----------+
              | empid | name |
              +-------+-----------+
              | 2 | きむら |
              | 4 | 加藤 |
              | 5 | 林 |
              | 6 | 三浦 |
              +-------+-----------+
              4 rows in set (0.00 sec)

              キモは上記のように初期集合を求めるSELECTと再帰集合を求めるSELECTをUNION ALLし、
              それに共通表名をつけ、SELECTするところです。

              WITH RECURSIVE 共通表名 AS
              (
              初期集合を求めるSELECT
              UNION ALL
              再帰集合を求めるSELECT
              )
              SELECT * FROM 共通表名

              ではでは。
              | meijik | MySQL | 20:59 | comments(0) | trackbacks(0) | - | - |
              使い慣れたSQLに潜む実装依存: Firebirdの場合(6) 文字列との結合演算子
              0
                本エントリはFirebird Adventcalendar 2016の8日目です。

                使い慣れたSQLに潜む実装依存:2.データ型と演算子 文字列の結合演算子

                Firebirdの場合、ここでの多数を占めるように結果はNULLとなります。
                またCONCAT関数はありません。

                SQL> select null || 'ABC' from rdb$database;

                CONCATENATION
                =============
                <null>

                SQL> select concat(null,'ABC') from rdb$database;
                Statement failed, SQLSTATE = 39000
                Dynamic SQL Error
                -SQL error code = -804
                -Function unknown
                -CONCAT

                文字列の結合で片方がNULLの場合に、結果がNULLになるのは当然の結果で、
                NULLにならないOracle DBとSQL Serverが「おかしい」のですが、
                これはNULLを特別視する両者の歴史的な理由によるものだと思います。

                NULLとの戦いRDBMS実装編

                なお、しのださんの資料でMySQLの||は論理和ということですが、

                mysql> select null || 'abc';
                +---------------+
                | null || 'abc' |
                +---------------+
                | NULL |
                +---------------+
                1 row in set, 1 warning (0.00 sec)

                mysql> show warnings;
                +---------+------+-----------------------------------------+
                | Level | Code | Message |
                +---------+------+-----------------------------------------+
                | Warning | 1292 | Truncated incorrect DOUBLE value: 'abc' |
                +---------+------+-----------------------------------------+
                1 row in set (0.00 sec)

                sql_modeにpipes_as_concatを設定すれば、||をconcatとして利用できます。
                まぁ結果は同じくNULLなんですけどね。

                mysql> set sql_mode='pipes_as_concat';
                Query OK, 0 rows affected (0.00 sec)

                mysql> select null || 'abc';
                +---------------+
                | null || 'abc' |
                +---------------+
                | NULL |
                +---------------+
                1 row in set (0.00 sec)

                文字列結合、後は結合結果がどの型で戻るか、オーバーフローエラーが
                あるか、というのは各RDBMSとバージョンにより違うと思います。
                みなさんお使いのもので確認してみてください。ちなみにFirebirdは以下です。

                || (string concatenator)

                JUGEMテーマ:コンピュータ



                | meijik | Firebird/InterBase | 20:07 | comments(1) | trackbacks(0) | - | - |
                使い慣れたSQLに潜む実装依存: Firebirdの場合(5) CURRENT_TIMESTAMP
                0
                  本エントリはFirebird Adventcalendar 2016の7日目です。

                  使い慣れたSQLに潜む実装依存:1.関数 CURRENT_TIMESTAMP

                  Firebirdの場合 バージョン2.0からCURRENT_TIMESTAMPが実装され、
                  戻り値としては、ここで多数を占める「現在時刻」を返します。

                  ここでいう「現在時刻」とは、CURRENT_TIMESTAMPを評価するステートメントの開始時刻です。

                  そのため、ステートメント内で複数回評価されても、同じ値を返すことになります。

                  またCURRENT_TIMESTAMP(n)という形で精度を指定することもできます。

                  Firebirdの場合はn=0〜3で、(n)を指定しないときは(3)を指定したものと同じ精度を戻します。
                  (MySQLではn=0〜6で、(n)を指定しないときは(0)を指定したものと同じ精度を戻します。
                   これは秒以下をサポートしたのが最近(MySQL 5.6)だったため、5.5以前との互換性のためです)

                  もうひとつ「現在時刻」には、その関数を評価するごとに、その評価の瞬間を返すものがあります。
                  (OracleやMySQLでいうsysdateと同等のもの)

                  Firebirdの場合 バージョン2.1から実装された'now'がそれで、以下のように利用します。

                  SQL> select cast('now' as timestamp) as now from rdb$database;

                  NOW
                  =========================
                  2016-12-07 22:54:31.1550

                  または同じくバージョン2.1でドキュメント化されたShorthand castsにて以下のようにも表記できます。(このShorthand casts自体はInterBase 6から存在していましたが、ドキュメント化されてませんでした)

                  SQL> select timestamp 'now' from rdb$database;

                  CONSTANT
                  =========================
                  2016-12-07 23:26:52.3170

                  ただし、CURRENT_TIMESTAMPのように精度指定はできません。常に精度は(3)で戻ります。

                  MySQLのようにsleep()があると、CURRENT_TIMESTAMPと'now'を比較しやすいのですが、
                  Firebirdにはありません。fb_sleep()というUDFがパブリックドメインで公開されていますが、
                  ソースだけで、自分でコンパイルする必要があります。

                  JUGEMテーマ:コンピュータ



                  | meijik | Firebird/InterBase | 23:11 | comments(0) | trackbacks(0) | - | - |
                  使い慣れたSQLに潜む実装依存: Firebirdの場合(4) CHAR型に対するLENGTH
                  0
                    本エントリはFirebird Adventcalendar 2016の5日目です。

                    使い慣れたSQLに潜む実装依存:1.CHAR型に対するLENGTH


                    OracleとDB2が10を返していますが、基本的にCHAR型の性質を考えると
                    こちらのほうが正しい挙動にみえます。Firebirdもこれらと同じ動作です。

                    SQL> create table t1(c1 char(10));
                    SQL> insert into t1 values('ABC');
                    SQL> select char_length(c1) from t1;

                    CHAR_LENGTH
                    ============
                    10

                    ただ、このような仕様だとchar(10)にデータとして何をいれてもchar_lengthが10であるため
                    そもそも意味がない、ということで、3を戻す実装が多くあるのだと思います。

                    Firebirdで意味のある値を戻すにはtrim関数を使います。

                    SQL> select char_length(trim(trailing from c1)) from t1;

                    CHAR_LENGTH
                    ============
                    3

                    なお、MySQLの場合は、そもそもCHAR型であっても、取り出したときにはVARCHAR型と同じように
                    データのみしか返さず、定義長の空白パディングがされない動作がデフォルトですので、これを
                    通常のRDBMSのように空白をつけて返すようにすれば、lengthの値は3ではなく10を戻します。

                    mysql> create table t1(c1 char(10));
                    Query OK, 0 rows affected (0.18 sec)

                    mysql> insert into t1 values('ABC');
                    Query OK, 1 row affected (0.03 sec)

                    mysql> select length(c1) from t1;
                    +------------+
                    | length(c1) |
                    +------------+
                    | 3 |
                    +------------+
                    1 row in set (0.00 sec)

                    mysql> set sql_mode=PAD_CHAR_TO_FULL_LENGTH;
                    Query OK, 0 rows affected, 1 warning (0.00 sec)

                    mysql> select length(c1) from t1;
                    +------------+
                    | length(c1) |
                    +------------+
                    | 10 |
                    +------------+
                    1 row in set (0.00 sec)

                    JUGEMテーマ:コンピュータ



                    | meijik | Firebird/InterBase | 00:59 | comments(0) | trackbacks(0) | - | - |
                    使い慣れたSQLに潜む実装依存: Firebirdの場合(3) LENGTH
                    0
                      本エントリはFirebird Adventcalendar 2016の4日目です。

                      使い慣れたSQLに潜む実装依存:1.関数LENGTH

                      ここでの違いはlength()でバイト数を戻すか、文字数を戻すか、の違いです。

                      MySQLとDB2はlength()はバイト数を返すので、1ではなくなっていますが、
                      その場合はcharacter_lengthを利用すれば(そして文字コードを正しくセットしていれば)1になります。

                      大元の問題はlength()がバイト数、文字数どちらを返すかがRDBMSによりまちまちなところです。

                      しかしFirebirdの場合は、length()がなく、バイナリ長を戻すoctet_lengsh()と
                      文字長を戻すcharacter_length()しかないので、ある意味曖昧さが軽減されています。

                      SQL> set names sjis_0208;
                      SQL> select char_length('あ') from rdb$database;

                      CHAR_LENGTH
                      ============
                      1

                      SQL> select octet_length('あ') from rdb$database;

                      OCTET_LENGTH
                      ============
                      2

                      SQL> select length('あ') from rdb$database;
                      Statement failed, SQLSTATE = 42000
                      Dynamic SQL Error
                      -SQL error code = -104
                      -Token unknown - line 1, column 14
                      -(

                      SQL標準では文字数はchar_length, バイト数はoctet_lengthですので、
                      それを使うと間違いがありません。なおoctet_lengthのようにバイト数を戻すには
                      Oracleではlengthb, SQL Serverではdatalength(SQL Server 2008以降)を使います。

                      ここでのトピックはMicrosoft SQL Serverで文字数を返すlenの仕様(実装)が以下であることです。

                      (1) BMP外のUTF8(つまり俗にいう4-byte UTF8)の1文字に対して、文字数2を返すところですね。
                        これは大変わかりにくいし、対処どうしよう、という困ったものです。
                      (2) 「指定された文字列式の、末尾の空白を除いた文字数を返します」という仕様。。。

                      JUGEMテーマ:コンピュータ



                      | meijik | Firebird/InterBase | 23:17 | comments(0) | trackbacks(0) | - | - |
                            1
                      2345678
                      9101112131415
                      16171819202122
                      23242526272829
                      30      
                      << April 2017 >>
                      + RECOMMEND
                      + RECOMMEND
                      IS <インフィニット・ストラトス> アンコール『恋に焦がれる六重奏』 [Blu-ray]
                      IS <インフィニット・ストラトス> アンコール『恋に焦がれる六重奏』 [Blu-ray] (JUGEMレビュー »)

                      原作第四巻の映像化(らしい)この売れ具合で二期の制作可否が決まる??
                      + RECOMMEND
                      プロのための Linuxシステム構築・運用技術 (Software Design plus)
                      プロのための Linuxシステム構築・運用技術 (Software Design plus) (JUGEMレビュー »)
                      中井 悦司
                      Linuxの構築・システム運用について非常にコンパクトにうまくまとまった本。
                      + RECOMMEND
                      + RECOMMEND
                       (JUGEMレビュー »)

                      インターネットラジオ。これ以外は全滅か。。。
                      + RECOMMEND
                      + RECOMMEND
                      MySQL 5.1 Plugin Development
                      MySQL 5.1 Plugin Development (JUGEMレビュー »)
                      Andrew Hutchings,Sergei Golubchik
                      MySQL 5.1 のプラグインを作るならこれ!
                      + RECOMMEND
                      AWKを256倍使うための本 (Ascii 256倍)
                      AWKを256倍使うための本 (Ascii 256倍) (JUGEMレビュー »)
                      志村 拓,鷲北 賢,西村 克信
                      ここにきてまさかの復刊。15〜16年前の本ですが、いまでも十分役立ちますよ!!
                      + RECOMMEND
                      実践ハイパフォーマンスMySQL 第2版
                      実践ハイパフォーマンスMySQL 第2版 (JUGEMレビュー »)
                      Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D. Zawodny,Arjen Lentz,Derek J. Balling
                      待望の日本語版登場!英語版には日々お世話になっていますm(_ _)m
                      + RECOMMEND
                      High Availability MySQL Cookbook
                      High Availability MySQL Cookbook (JUGEMレビュー »)
                      Alex Davies
                      MySQL Clusteringを書いたAlexの新作。
                      + RECOMMEND
                      MySQL High Availability: Tools for Robust Data Centers
                      MySQL High Availability: Tools for Robust Data Centers (JUGEMレビュー »)
                      Charles Bell,Mats Kindahl,Lars Thalmann
                      Expert MySQLの著者とMySQLのエンジニアが書いたHAの本。
                      + RECOMMEND
                      Linux-DB システム構築/運用入門 (DB Magazine SELECTION)
                      Linux-DB システム構築/運用入門 (DB Magazine SELECTION) (JUGEMレビュー »)
                      松信 嘉範
                      Linux-DB システム構築の新スタンダード。DB Magazine人気連載、待望の書籍化です!!
                      + RECOMMEND
                      + RECOMMEND
                      超・極める!MySQL
                      超・極める!MySQL (JUGEMレビュー »)
                      坂井 恵,志村 和彦,ひろせ まさあき,松信 嘉範
                      内容は少々古くなりましたが、内部説明があり、いろいろ面白いです。
                      + RECOMMEND
                      The Root of .NET Framework
                      The Root of .NET Framework (JUGEMレビュー »)
                      荒井 省三
                      .NETの根っこをつかむ、か?
                      + RECOMMEND
                      + RECOMMEND
                      間違いだらけのソフトウェア・アーキテクチャ―非機能要件の開発と評価 (Software Design plus)
                      間違いだらけのソフトウェア・アーキテクチャ―非機能要件の開発と評価 (Software Design plus) (JUGEMレビュー »)
                      Tom Engelberg
                      技術評論社から献本されました。ありがとうございました。
                      + RECOMMEND
                      プログラマーのためのソースコードを読む技術
                      プログラマーのためのソースコードを読む技術 (JUGEMレビュー »)
                      高木 信尚
                      技術評論社から献本されました。ありがとうございました。
                      + RECOMMEND
                      カレーの心得 (エイムック 1979)
                      カレーの心得 (エイムック 1979) (JUGEMレビュー »)

                      カレー特集。レシピも多々ありよい感じです。
                      + RECOMMEND
                      おとなの週末 2010年 07月号 [雑誌]
                      おとなの週末 2010年 07月号 [雑誌] (JUGEMレビュー »)

                      カレー特集。新しいお店も多くはいっていてグッド!!
                      + RECOMMEND
                      SQL Antipatterns: Avoiding the Pitfalls of Database Programming (Pragmatic Programmers)
                      SQL Antipatterns: Avoiding the Pitfalls of Database Programming (Pragmatic Programmers) (JUGEMレビュー »)
                      Bill Karwin
                      俗にいう「落とし穴(Pitfalls)」本のSQL版。チト期待。
                      + RECOMMEND
                      + RECOMMEND
                      エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
                      エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド (JUGEMレビュー »)
                      奥野 幹也
                      これまでにない構築、そして構築後のMySQLのための本。
                      + RECOMMEND
                      12ステップで作る組込みOS自作入門
                      12ステップで作る組込みOS自作入門 (JUGEMレビュー »)
                      坂井 弘亮
                      KOZOSプロジェクト坂井さん渾身の一冊。この一冊が組み込み開発の明日を作るといっても過言ではありません!!
                      + RECOMMEND
                      シンクロニシティーン
                      シンクロニシティーン (JUGEMレビュー »)
                      相対性理論
                      ねらわずさわがず、まさかのVocal回帰のアルバム。ここが相対性理論の分水嶺か?!
                      + RECOMMEND
                      Oh!
                      Oh! (JUGEMレビュー »)
                      少女時代
                      K-POP最前線。かわいいだけではない韓国アイドルの底力が見えます!
                      + RECOMMEND
                      「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか
                      「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか (JUGEMレビュー »)
                      小森 裕介
                      技術評論社から献本されました。ありがとうございました。
                      + RECOMMEND
                      Database Management Systems
                      Database Management Systems (JUGEMレビュー »)
                      Raghu Ramakrishnan,Johannes Gehrke
                      ミックさん連載の参考書籍です。
                      + RECOMMEND
                      WEB+DB PRESS Vol.56
                      WEB+DB PRESS Vol.56 (JUGEMレビュー »)
                      WEB+DB PRESS編集部
                      ミックさんの新連載はじまりました。
                      + RECOMMEND
                      Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series)
                      Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series) (JUGEMレビュー »)
                      W. Richard Stevens,Stephen A. Rago
                      必読! といいつつ私が読んだのは初版の日本語訳です。差分はチェックしないといけませんね。
                      + RECOMMEND
                      + RECOMMEND
                      + RECOMMEND
                      Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE
                      Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE (JUGEMレビュー »)

                      DELL SX260の換装用に購入。今はコチラのほうが安いですね。
                      + RECOMMEND
                      情熱プログラマー ソフトウェア開発者の幸せな生き方
                      情熱プログラマー ソフトウェア開発者の幸せな生き方 (JUGEMレビュー »)
                      Chad Fowler
                      OSC2010神戸に出展されたジュンク堂で買いました。
                      + RECOMMEND
                      Software Design 総集編 【2000~2009】(DVD付)
                      Software Design 総集編 【2000~2009】(DVD付) (JUGEMレビュー »)

                      メガトン級の過去記事。売り切れる前にお店に急げ!
                      + RECOMMEND
                      + RECOMMEND
                      玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2
                      玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2 (JUGEMレビュー »)

                      Aspire 1410 HDD換装後、昔のHDDはこれにいれます。
                      + RECOMMEND
                      + RECOMMEND
                      ゼロから学ぶ!最新データベース (日経BPパソコンベストムック)
                      ゼロから学ぶ!最新データベース (日経BPパソコンベストムック) (JUGEMレビュー »)

                      最新のデータベース勉強ムック。付録はMS SQL Server Express Edition.
                      + RECOMMEND
                      Kaspersky Internet Security 2010 1年版 鷹の爪コラボパック
                      Kaspersky Internet Security 2010 1年版 鷹の爪コラボパック (JUGEMレビュー »)

                      た〜か〜の〜つ〜め〜。
                      ファンにうれしいコラボパック。
                      + RECOMMEND
                      Software Design ( ソフトウェアデザイン ) 2010年 02月号 [雑誌]
                      Software Design ( ソフトウェアデザイン ) 2010年 02月号 [雑誌] (JUGEMレビュー »)

                      Key-valueストアのまとめ(memcached除く)と松信さんのMySQL短期連載1回目(4回予定)が掲載されています。
                      + RECOMMEND
                      日経ソフトウエア 2010年 01月号 [雑誌]
                      日経ソフトウエア 2010年 01月号 [雑誌] (JUGEMレビュー »)

                      やはりビギナーには日経ソフトウエアかな。
                      + RECOMMEND
                      Linuxで作るアドバンストシステム構築ガイド (18Network Server Construction Guide)
                      Linuxで作るアドバンストシステム構築ガイド (18Network Server Construction Guide) (JUGEMレビュー »)
                      デージーネット
                      名著といわれた「Linuxアドバンストネットワークサーバ構築ガイド〜HAサーバ構築編」の改訂版です。要チェック!
                      + RECOMMEND
                      acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22
                      acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22 (JUGEMレビュー »)

                      色違い黒(他に青と白があります): メモリは最大4GBとあるが、がんばれば8GBいけるらしい。
                      + RECOMMEND
                      WEB+DB PRESS Vol.54
                      WEB+DB PRESS Vol.54 (JUGEMレビュー »)
                      WEB+DB PRESS編集部
                      ミックさんの連載、いつも見てます。
                      + RECOMMEND
                      SoftwareDesign(ソフトウェアデザイン) 2010年 01月号 [雑誌]
                      SoftwareDesign(ソフトウェアデザイン) 2010年 01月号 [雑誌] (JUGEMレビュー »)

                      特集「LLとオープンソースに学ぶコードを読む技術」に寄稿いたしました。
                      + RECOMMEND
                      厳選!旨い焼鳥焼きとん130店 完全保存版 (Town Mook)
                      厳選!旨い焼鳥焼きとん130店 完全保存版 (Town Mook) (JUGEMレビュー »)

                      Firebirdといえばこれでしょう、というのは嘘ですが、おいしい焼き鳥、焼き豚のお店で満杯です。
                      + RECOMMEND
                      Firebird 徹底入門
                      Firebird 徹底入門 (JUGEMレビュー »)
                      木村 明治,はやし つとむ,坂井 恵
                      Firebird日本ユーザ会のはやしさん、そしてMyNAから拝借(?) してきた坂井さんとともに書きました。まだ誰も知らないFirebird 2.5や、いままでドキュメントのなかったツール類についてもソースを確認してとりあげた本です。是非ご活用ください。
                      + RECOMMEND
                      MySQLデータベース構築バイブル
                      MySQLデータベース構築バイブル (JUGEMレビュー »)
                      志村 和彦,松信 嘉範,池田 徹郎
                      志村さん、松信さん、池田さん、ととにかく濃いこの一冊。構築バイブルというよりHackに近いです。
                      + RECOMMEND
                      MySQL全機能バイブル ~現場で役立つAtoZ~
                      MySQL全機能バイブル ~現場で役立つAtoZ~ (JUGEMレビュー »)
                      鈴木 啓修
                      名著「
                      MySQL全機能リファレンス」はバージョン4.xまでの対応でしたが、今回装いも新たに5.1まで対応しての発売です。
                      + SELECTED ENTRIES
                      + RECENT COMMENTS
                      • 使い慣れたSQLに潜む実装依存: Firebirdの場合(6) 文字列との結合演算子
                        noname (12/10)
                      • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
                        Moriaki_ (01/05)
                      • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
                        Moriaki_ (01/05)
                      • 2015年版 InterBaseの歩み
                        nakagami (12/06)
                      • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
                        meijik (11/22)
                      • 分散DB本読書会第46回メモ「STOP AFTER 10」
                        masudahidehiko (09/01)
                      • Windows上でのMySQLビルド方法
                        kinoyasu (03/31)
                      • 気軽に新しいMySQLを試してみる: MySQL Sandboxのススメ
                        MeijiK (09/19)
                      • 伝わらない曲シリーズ: 川島恵「ミスター不思議」
                        96 (07/05)
                      • 気軽に新しいMySQLを試してみる: MySQL Sandboxのススメ
                        MeijiK (02/17)
                      + RECENT TRACKBACK
                      + CATEGORIES
                      + ARCHIVES
                      + MOBILE
                      qrcode
                      + LINKS
                      + PROFILE