2008年11月30日日曜日

ElasticFoxが使えない…

Amazon EC2がなぜか使えない。ElasticFox経由で使おうとしているんだけど、
EC2 responded with an error for DescribeInstances
AuthFailure: AWS was not able to validate the provided access credentials
と言われる。

Access KeyもSecret Access Keyもちゃんといれているつもりなんだが…

2008年11月29日土曜日

ログデータから、特定項目についてユニークなものを調べる

スペース区切りのログデータの3〜5項目めについて、
ユニークなものを調べる。
check unique rows on 3 - 5 columns of space-separated log data.
awk '{ print $3, $4, $5; }' file | sort -u
awk便利だ。
awk is very useful!

2008年6月18日水曜日

【Hadoop】JAVA_HOMEの設定


Hadoopを動かすには、conf/hadoop-env.shの中にJAVA_HOMEという値を設定する必要があります。JAVA_HOMEには、Javaをインストールしたディレクトリのパスを指定します。以下に、一般的なJavaホームディレクトリのパスを記載します。
※1.5.0の部分は、使用するJavaのバージョンによって変えてください。

Windowsでの例

C:\jdk1.5.0

MacOSXでの例

/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/

Linuxでの例

/usr/java/j2sdk1.5.0


2008年6月16日月曜日

コロー展とスナップスケッチ


西洋美術館のコロー展に行ってきた。

美術館で絵を見るとき、いつもなら他の人と同じように1つ1つ絵を見ていくのだが、今日はちょっと違ったことにチャレンジしてみた。

絵を見ながらその場でメモ帳にエンピツでスナップスケッチを描いてみたのである。

実際に自分でスケッチしてみると、驚いた。

ただ見るだけでは気づかなかったものが次々と見えてきたり、その絵をあとからでもはっきりと頭に思い描くことが出来るのである。

模写して画家の描いたものをなぞることによって、はじめてその絵を見たことになるのかもしれない。

2008年6月5日木曜日

グーグルとアマゾンのクラウドの違い


@ITより

GAEはWebアプリケーション作成に特化したプラットフォームを提供
AWSはより汎用的なコンピューティングプラットフォームを提供

GAEで利用できる開発言語は今のところPythonだけ。
SDKには、Djangoが含まれている。
その他、グーグルが提供するAPI群も利用できる
- Datastore API
- Images API
- Mail API
- Memcache API
- URL Fetch API
- Users API
GAE上で稼働するWebサービスはグーグルのインフラ上で大規模利用
に耐えるほどスケールする、というのがグーグルの売り文句。

一方、Amazon EC2はよりPCに近い仮想環境を提供する。
開発言語どころか、どのOSを使うかも自由。

AWSにはAmazon EC2のほかにも、仮想ストレージ(Amazon S3)、
仮想データベース(SimpleDB、AmazonSQS)などがある。

AWSに出来てGWSに出来ないのは、次のような利用方法。
つまり、Hadoopを使った分散処理。
例として挙っているのは、ニューヨークタイムズの担当者が
過去の記事をデジタルアーカイブとして公開するために合計
4TBにもなるTIFF画像をPDF化するためにHadoopを使ったという例。
Amazon EC2に100インスタンスを生成。24時間以下で1100万枚の
画像から1.5TB分のPDFを作ることに成功したという。

2008年5月14日水曜日

iPod Touch 1.1.4でmouseDownイベントを取得するには


iPod Touch 1.1.4でmouseDownイベントを取得する。

・__GSEventの宣言が必要。

・__GSEvent.i4がx座標、__GSEvent.i5がy座標。
 いずれもfloat型。

・UIResponderのサブクラスに定義する。

・短辺がx軸、長辺がy軸。
typedef struct __GSEvent {
long i0;
float i1;
long eventType;
float i3;
float i4;
float i5;
} __GSEvent;

- (void)mouseDown:(struct __GSEvent *)fp8
{
NSLog(@"(%f,%f)", (*fp8).i4, (*fp8).i5);
}

2008年5月11日日曜日

ブラウザとサーバで双方向通信


古橋貞之の日記より
Ajaxはクライアントの都合でサーバーに通信を仕掛けるpull型の通信ができ、Cometはサーバーが好きなタイミングでクライアントへデータを送りつけるpush型の通信ができるわけですが、新たに双方向の通信ができる技術を開発しました。...
とのこと。

ブラウザとサーバで双方向通信ってどうやるんだ?
と思っていると、
...仕組みはどうなっているかと言うと、通信部分にFlashを使っています。Flashとサーバーとの通信には、ActionScriptのSocketを使っています。...
だって。
Flashってソケット通信できたのか!
なるほどなぁ

2008年5月7日水曜日

フォルダ内のファイルの拡張子を一括削除


OSXのAutomatorを使えば、
フォルダ内のすべてのファイルに一括で拡張子を付けることができる。
しかし、逆に一括で削除することが出来なくて困った。

そこで、シェルスクリプトで拡張子を一括削除する1行を書いてみた。
for i in `ls`; do mv $i ${i:0:${#i}-4};done
${variable:offset:length}で変数variableをスライスできる。

さらに、${#i}の部分でファイル名の文字数を取得し、
そこから"."+拡張子3文字分を引いている。

カレントディレクトリ内のすべてのファイルから、
3文字の拡張子を取り除く。

例:hoge.txt -> hoge

2008年5月4日日曜日

Cocoaで"~/"を展開するには


Cocoaで、"~/Documents"などを展開して

ホームディレクトリの絶対パスを得るには、
- [NSString stringByStandardizingPath]
を使う。たとえば、
NSString* d;
d = [@"~/Documents" stringByStandardizingPath];
NSLog(d);
のようにする。

2008年5月2日金曜日

【Haskell】Networkモジュール


Networkモジュールを使ってみた。
import Network
import System.IO

main = withSocketsDo (
do s <- listenOn $ PortNumber 8080
(h, n, p) <- accept s
print ( h, n, p )
getLineAndPrint s h
sClose s
)

getLineAndPrint s h = do l <- hGetLine h
print l
exitTest l
where exitTest "exit\r" = return ()
exitTest _ = getLineAndPrint s h

PortNumber 8080 をlistenOnして、acceptする。

hGetLineソケットから読み込み、printする。

もし入力されたものが"exit\r"なら終了。

そうでなければ、引き続き読み込む。

【Python】OSからのシグナルをハンドルする


signalモジュールを使うと、OSからのシグナルをハンドルできます。

たとえば、プログラムを停止するときの"Control + C"。

これもシグナルの1つです。

こんなコードを書くことで、"Control + C"をハンドルできます:
import signal

def handler( signum, frame ):
print 'Signal handler called with signal', signum

signal.signal( signal.SIGINT, handler )

while True:
pass
このコードを実行すると・・・"Control + C"を押しても停止しません!

決まった停止手順を踏ませたい場合など、

"Control + C"を無効にしたいときに使えます。

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が含まれますがこれはダンプ時ではなくてインポート時にロックする指定です。


■関連エントリ

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


--