2008年4月25日金曜日

【SQL】FROM句でサブクエリを使う


WHERE句、SELECT句でのサブクエリは結果として値を利用する。
 
FROM句でサブクエリを利用すると、結果を1つのテーブルとして扱うことができる。FROM句でのサブクエリの利用は非常に応用性が高い。

FROM句にサブクエリを使うことで、集計関数を組み合わせた計算が出来る。たとえば、COUNTのAVGを計算することができる。

サブクエリには";"をつけない。

2008年4月23日水曜日

The Haskell School of Expression: Lerning Functional Programming Through Multimedia


こんな本を買ってみました。

Haskellの入門書なのですが、他の本とはひと味違います。

Haskellの本は、数学的な文脈で語られることが多いのですが、この本では、グラフィクス、アニメーション、コンピュータミュージックといったマルチメディアアプリケーションを題材として使っています。

レベルとしては、初級者と上級者の両方に向けて書かれています。
簡単なイントロダクションからはじまり、もっと進んだ話題へと進みます。Haskellがまったく初めての方にはややテンポが速いかもしれません。

けどさ・・・グラフィクスとかアニメーションって、純粋関数言語を使う意味があんまりないんじゃ?だって、副作用のかたまりやん;)

2008年4月20日日曜日

【Haskell】Haskellの低レイヤグラフィクスライブラリまとめ


Haskellの低レイヤグラフィクスライブラリをまとめました。
各プラットフォームのグラフィクスシステムへのバインディングです。
GLUT
OpenGL GLUT Libraryへのバインディング。
OpenGL GLUT Libraryは、プラットフォーム固有の処理を吸収してOpenGLを使いやすくするためのライブラリです。
GLFW
GLFWへのバインディングです。
GLFW(OpenGL Framework)は、GLUTと同様、プラットフォーム固有の処理を吸収してOpenGLアプリケーションを使いやすくするためのライブラリです。
GLUTよりも新しいです。
TclHaskell
TclHaskellは、Tck/tkへのバインディング。
Tck/Tkは、Unix、Windows、Macintosh上で動作するGUIスクリプティング環境です。
Win32
Win32ライブラリは、Win32APIのうちグラフィクスに関係する部分へのバインディングです。
Win32APIは、Windowsの標準APIです。
X11
X11ライブラリは、X11へのバインディングです。
X11は、Unix系OSのウィンドウシステムであるX Window Systemのバージョン11です。


2008年4月11日金曜日

【MySQL】カーソルの使い方


カーソルの宣言
DECLARE [カーソル名] CURSOR FOR [SELECT文];
カーソルを開く
OPEN [カーソル名]
1行ごとにデータを取り出す
FETCH NEXT FROM [カーソル名] INTO [変数リスト];
WHILE (@@FETCH_STATUS = 0)
BEGIN
FETCH NEXT FROM [カーソル名] INTO [変数リスト];
END;
カーソルを閉じ、リソースを解放する
CLOSE [カーソル名]
DEALLOCATE [カーソル名]

2008年4月6日日曜日

複数のファイルを1つ1つコマンドに読ませるには


複数のファイルを1つ1つコマンドに読ませる方法。

たとえば、POV-Rayのサンプルファイル(*.pov)を

一度にpovrayに処理させるには、
for i in $(ls *.pov); do povray $i; done
とする。

POV-Ray


POV-RayをPowerBookにいれた。

POV-RayはレイトレースでCGをレンダリングするためのプログラム。

OSX用のバイナリだとコマンドラインから実行できないみたいなので、ソースからコンパイル。

ここの下の方からソースコードをダウンロードして展開。

カレントディレクトリを移動して
$ cd povray-3.6.1
$ ./configure
$ make
$ sudo make install
これでok.
$ which povray
/usr/local/bin/povray
ちゃんと入っている。

2008年4月3日木曜日

MySQLでDBをコピーするには


MySQLのデータベースをコピーするには、mysqldumpを使います。

mysqldumpはデータベースをダンプするためのユーティリティですが、他のMySQLサーバにデータをコピーするのに使うことができます。

ローカルで動いているMySQLの中で"source_database"から"dest_database"へデータをコピーするには、以下のようにします。
$ mysqldump -u user_name -p -n source_database | ¥
> mysql -u user_name -p dest_database
-nオプションは、CREATE DATABASEを出力に含めないようにするためのオプションです。これを付けることで、dest_databaseへデータをコピーできるようになります。

また、コピーしたいデータベースが巨大なときもあるかと思います。そのようなときに、以下のオプションを使うと、さらに効率良くデータをコピーできます。

--no-autocommit
これをつけると、ダンプしたファイルの全体を囲うようにautocommit=0がつきます。つまり、後でリストア時にはファイル全体が1トランザクションになり、うまくいけば劇的に早くインポートできます。

--single-transaction
このオプションを付けてダンプすると--lock-tablesを付けずにシングルトランザクションでダンプするので、一貫性のあるデータをダンプできます。

--opt
これはデフォルトで有効になっているはずです。このオプションには--lock-tablesが含まれますがこれはダンプ時ではなくてインポート時にロックする指定です。


■関連エントリ

粒子法による固液連成シミュレーション


--