携帯各キャリアの公式サイト一覧のURLです。
docomo公式サイト
http://imode-press.jp/imode/top/
au公式サイト
http://k-tai.auone.jp/ezweb/
softbank公式サイト
https://mb.softbank.jp/scripts/japanese/mysoftbank/tool/contents_bookmark/index.jsp
2008年12月21日日曜日
2008年11月30日日曜日
ElasticFoxが使えない…
Amazon EC2がなぜか使えない。ElasticFox経由で使おうとしているんだけど、
Access KeyもSecret Access Keyもちゃんといれているつもりなんだが…
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 is very useful!
ユニークなものを調べる。
check unique rows on 3 - 5 columns of space-separated log data.
awk '{ print $3, $4, $5; }' file | sort -uawk便利だ。
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このコードを実行すると・・・"Control + C"を押しても停止しません!
def handler( signum, frame ):
print 'Signal handler called with signal', signum
signal.signal( signal.SIGINT, handler )
while True:
pass
決まった停止手順を踏ませたい場合など、
"Control + C"を無効にしたいときに使えます。
2008年5月1日木曜日
【Haskell】メモ
Haskellの役に立ちそうなリソースをメモ。
The Haskell School of Expression
http://www.haskell.org/soe/index.htm
Haskell Hierarchical Libraries
http://cvs.haskell.org/Hugs/pages/libraries/index.html
hackageDB
http://hackage.haskell.org/packages/hackage.html
Hoogle
http://www.haskell.org/hoogle/
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とする。
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が含まれますがこれはダンプ時ではなくてインポート時にロックする指定です。
■関連エントリ
粒子法による固液連成シミュレーション
--
2008年3月31日月曜日
粒子法シミュレーション—物理ベースCG入門
東大の越塚さんによる、粒子法の入門書。
つい今月出版されたみたい。
Amazonで注文したが、まったく内容を見ずに買ったので少し不安。
粒子法というのは、流体をコンピュータでシミュレーションする方法の一つ。
流体をコンピュータでシミュレーションする方法には、大きく分けて2つある。
メッシュベースのアプローチとパーティクルベースのアプローチ。
粒子法というのは、その名の通りパーティクルベースのアプローチ。
パーティクルベースのアプローチの特徴は、波や雫といった液体表面の状態を表現しやすいという点。
この記事にソースコードを置いています。
■関連する記事
粒子法のプログラム第1回(概要)
粒子法のプログラム第2回(プログラムの大枠)
粒子法のプログラム第3回(データ構造)
粒子法のプログラム第4回(密度と圧力の計算)
粒子法のプログラム第5回(力の計算)
粒子法のプログラム第6回(境界条件と粒子位置の更新)
粒子法のプログラム最終回(粒子の出力)
【粒子法】粒子を流体としてレンダリング
3次元の粒子法シミュレーション
粒子法のシーンを2倍のサイズにしてみたが…
粒子法のシーンを2倍のサイズにしてみた
つい今月出版されたみたい。
Amazonで注文したが、まったく内容を見ずに買ったので少し不安。
粒子法というのは、流体をコンピュータでシミュレーションする方法の一つ。
流体をコンピュータでシミュレーションする方法には、大きく分けて2つある。
メッシュベースのアプローチとパーティクルベースのアプローチ。
粒子法というのは、その名の通りパーティクルベースのアプローチ。
パーティクルベースのアプローチの特徴は、波や雫といった液体表面の状態を表現しやすいという点。
この記事にソースコードを置いています。
■関連する記事
粒子法のプログラム第1回(概要)
粒子法のプログラム第2回(プログラムの大枠)
粒子法のプログラム第3回(データ構造)
粒子法のプログラム第4回(密度と圧力の計算)
粒子法のプログラム第5回(力の計算)
粒子法のプログラム第6回(境界条件と粒子位置の更新)
粒子法のプログラム最終回(粒子の出力)
【粒子法】粒子を流体としてレンダリング
3次元の粒子法シミュレーション
粒子法のシーンを2倍のサイズにしてみたが…
粒子法のシーンを2倍のサイズにしてみた
ラベル:
粒子法
2008年3月26日水曜日
lifeclock
この時計は、人の一生を刻む時計です。
短針は、時の代わりに、その人が生まれてから何年経ったかを表します。
長針は、分の代わりに、直前の誕生日から何週間がたったかを表します。53週間で1週します。
長針の1週が1年にあたり、短針の1週がその人の一生にあたるのです。
(いまのところInternet Explorerでは動きません・・・)
使い方
あなたの生年月日を入れて以下のURLにアクセスすると、あなたのlifeclockが表示されます。http://kamonama.sakura.ne.jp/lifeclock/lifeclock.html?yyyymmdd
yyyymmddを、あなたの生年月日で置き換えてください。
たとえば、1983年10月14日生まれの場合は、
http://kamonama.sakura.ne.jp/lifeclock/lifeclock.html?19831014
となります。
ブログパーツとして使うには
iframeを使えば、ブログパーツとして使うことができます。たとえば、上のlifeclockは、以下のようなiframeで書かれています。
<iframe
src="http://kamonama.sakura.ne.jp/lifeclock/lifeclock.html?19831014"
marginheight="0"
marginwidth="0"
width="172"
height="172"
frameborder="0">
2008年3月24日月曜日
【Python】sqlobject0.10
SQLObjectが0.10にバージョンアップした。
SQLObjectはPythonのO/Rマッパ。
以下、変更点の一部を紹介。
- SQLBuilderのSelectがreversed, distinct, joinsをサポート
- SelectResults.througnToが追加された。オブジェクトを経由せずに、SQLでリレーションをトラバースできる
- ViewSQLObjectが追加された。
- MySQLConectionがSSLに関係するパラメータを受け付けるようになった。ssl_key, ssl_cert, ssl_ca, ssl_capath。
- etc.
Mac OSX トラブル対処法
Mac OSXがトラブったときの対処法。
電源を入れたあと、
- shiftを押し続ける → セーフモード
- Cを押し続ける → インストールディスクから起動
- Dを押し続ける → ハードウェアテスト
- マウスボタンを押し続ける → ディスクを取り出す
2008年3月19日水曜日
2008年3月17日月曜日
【Python】メモリ使用量のいろんな調べ方
Pythonからプロセスのメモリ使用量を調べるにはいろいろ方法がある。
- /proc(linux限定)
- resourceモジュール
- psコマンド
- PSI(Python System Infomation)
2008年3月14日金曜日
2008年3月12日水曜日
【Python】Heapy: A Memory Profiler and Debugger for Python
http://guppy-pe.sourceforge.net/
Python用のメモリプロファイラ。
メモリに関する問題のデバッグ、最適化に使う。
・Data gathering
オブジェクトヒープの情報を集める
・Data processing
参照点からの差分を計算する
・Presentation
プロファイリング結果を表示する
といった機能がある。
作者のmaster's thesisのpdfをダウンロードできる。
背景、設計、実装などが記述してある。
"Heapy: A Memory Profiler and Debugger for Python"
http://guppy-pe.sourceforge.net/heapy-thesis.pdf
2008年2月28日木曜日
【Python】for文よりリスト内包記法のほうが効率的?
中で関数を呼ぶときは、for文を使うよりリスト内包記法を使う方が処理が速い。たとえば、以下の2つのスクリプトを試してみる。
■1.py
def a():■2.py
return "a"
s = ""
for _ in range( 0, 30000000 ):
s += a()
def a():
return "a"
s = "".join( a() for _ in range( 0, 30000000 ) )
結果は以下。
■1.py
$ time python 1.py■2.py
real 1m45.563s
user 0m19.425s
sys 0m0.974s
$ time python 2.py後者の方が約60%の時間で処理できている。
real 1m4.801s
user 0m11.880s
sys 0m1.139s
ちなみに、以下のように関数呼び出しをなくしてみると・・・
■1.py
s = ""■2.py
for _ in range( 0, 30000000 ):
s += "a"
s = "".join( "a" for _ in range( 0, 30000000 ) )
結果はこれ。
■1.py
$ time python 1.py■2.py
real 0m14.904s
user 0m13.254s
sys 0m0.972s
$ time python 2.py逆に、後者の方が遅いという結果に。
real 0m35.092s
user 0m6.368s
sys 0m1.125s
「文字列の連結は遅くて.joinメソッドは速い」という問題では
ないみたい。ちゃんと調べるか・・・?
splitコマンド
splitコマンドを使うと任意の行数やバイト数でファイルを分割できる。
使用例
split -l 1000 original.txt file-original.txtを1000行ごとに分割する。
分割したものはfile-**という名前のファイルに保存される。
出力されるファイル
file-aa
file-ab
...
2008年2月27日水曜日
manページの後ろの番号って何?
manページの後ろには番号がついている。
たとえば、grep(1)。
これはセクション番号を表している。
セクション番号とその意味は以下(ソース)
1 | だれもが実行できるユーザコマンド |
2 | システムコール、つまり、カーネルが提供する関数 |
3 | サブルーチン、つまり、ライブラリ関数 |
4 | デバイス、つまり、/dev ディレクトリのスペシャルファイル |
5 | ファイルフォーマットの説明、例 /etc/passwd |
6 | ゲーム(説明不要だろうネ) |
7 | その他 例: マクロパッケージや取り決め的な文書 |
8 | システム管理者だけが実行できるシステム管理用のツール |
9 | Linux 独自のカーネルルーチン用のドキュメンテーション |
n | 新しいドキュメンテーション:よりふさわしい場所に移動されるだろう |
o | 古いドキュメンテーション 猶予期間として保存されているもの |
l | 独自のシステムについてのローカルなドキュメンテーション |
・・・あれぇ?へんな空白ができてしまう。
Mac OSXからLinuxにNFSマウントしたい
Mac OSXからLinuxにNFSマウントしたい。
ここによると、
ファイダーのサーバへつなげるでは駄目。
ターミナルから、
sudo mount_nfs -P 接続先:ディレクトリ マウント先
とする。
はずす時は、
sudo umount マウント先
とのこと。
やってみると、
$ sudo mount_nfs -P 192.168.1.10:/home/someone /tmpといわれてしまう。うむ・・・
mount_nfs: can't access /home/someone: Permission denied
どうすれば?
結局、sshfsを使いました。
2008年2月25日月曜日
パリに親子丼の店を開いてみては?
パリに親子丼の店を開いてみてはどうだろう?
親子丼を食べたあとにエスプレッソがでてくるような。
そう。店の前には、親子丼のスケッチを飾る。
だって、パリの人にとっては未知の食べ物だから。
日本にあるような見本は良くない気がする。
色鉛筆で色づけしたスケッチが良い。
写真でもいいかも?
うーん、やっぱりスケッチがいいでしょ。
白地に青の模様が入ったどんぶりに、
黄色いふわふわ卵が入っていて、
ワンポイントに緑のみつ葉がのっかってるの。
おぉ。いい感じだ。
2008年2月15日金曜日
Load averageって?
Load averageとは、処理を待っているプロセスの平均数。
1以下なら、処理を待っているプロセスがないということ。
1を超えると、処理を待っているプロセスがあるということ。
muninのcpuspeedモジュール
muninには、cpuspeedというモジュールがある。
CPUの動作周波数をレポートする。
単位はMHz。たとえば、3.0kと表示されれば3GHz。
CPUの動作周波数は、/proc/cpuinfoから取得される。
2008年2月11日月曜日
消息筋ってダレ?
ニュースによく出てくる「消息筋」
いったい誰?と思って調べてみると、
「ある方面の事情に詳しい人々や関係機関」
のことだそうな。大辞泉より。
要は、報道の世界で情報源を匿名にするときの決まり文句ということか。
2008年2月10日日曜日
Gaucheのリスト操作ライブラリ SRFI-1
リストを操作するためのライブラリ集。
たとえば、1から100までの整数のリストを作ってみるとこんな感じ。
gosh> (iota 100 1)
(1 2 ... 100)
スペル修正プログラムはどう書くか
「スペル修正プログラムはどう書くか」Peter Norvig / 青木靖 訳
http://www.aoky.net/articles/peter_norvig/spell-correct.htm
Googleでたとえば"speling"を検索すると、
もしかして:"spelling"じゃないかといってくる。
このようなスペル修正プログラムを実際にかいてみせている。
iPhone/iPod touchアプリ 「Balls」
iPhone/iPod touch用に、アプリケーションを作ってみました。
上からボールがぽこぽこ落ちてきます。
ダウンロード
http://kamonama.sakura.ne.jp/download/Balls.zip使い方
1.ダウンロードして解凍する2.makeする
3.iPhone/iPod touchに転送する
2008年2月8日金曜日
2008年2月7日木曜日
ケニアの民族対立
大統領ムワイ・キバキ率いるのキクユ人と
最大野党党首ライラ・オディンガ率いるルオ人との対立。
きっかけは、昨年12月27日の大統領選。
ずさんな選挙で、国連視察団が勝者を決められないと判断するほど。
オディンガ側が大統領に求めているのは、
大統領選での敗北をみとめて辞任し、直ちに再選挙を行うこと。
一方、大統領側ではそれを拒否している。
最近はやりのアーティスト?
最近のはやり?
- 9mm Parabellum Bullet
- いきものがかり
- Perfume
- たむらぱん
- RADWIMPS
Prefumeは何度か聞いたことがあった。女の子3人のグループ。
たむらぱんはmyspaceがオフィシャルサイトになってる。へぇ。
オバマとジョン・F・ケネディ
オバマとジョン・F・ケネディは似ているところがある。
オバマは黒人初の大統領を目指している一方、
ケネディはカトリックで初めての大統領だった。
似ているところもあるが、異なるところもある。
ジョン・F・ケネディの裏では、弟のロバート・ケネディが
政治に必要な裏の仕事を一手に引き受けていた。
オバマにはそういう存在がいまのところいないようだ。
2008年2月5日火曜日
スパーチューズデーって?
アメリカ大統領選で、多数の州が集中的に
予備選・党員集会を行う火曜日のこと。
その結果が選挙戦の行方を左右することから
「スーパーチューズデー」と呼ぶ。
大統領選の本選挙も、連邦法で
「11月の第1月曜日の次の火曜日」と
決められている。(今年は11月4日)
もともと米国では休日である土、日曜は
「私的な時間」「安息日」と考えられ、
公的行事の選挙を行うことには抵抗があった。
また、国土が広大なため、有権者は
遠く離れた投票所に向けて月曜日に出発し、
火曜日に投票するのは通例になった、といわれる。
予備選・党員集会を行う火曜日のこと。
その結果が選挙戦の行方を左右することから
「スーパーチューズデー」と呼ぶ。
なんで火曜日?
米国では多くの選挙が火曜日に行われる。大統領選の本選挙も、連邦法で
「11月の第1月曜日の次の火曜日」と
決められている。(今年は11月4日)
もともと米国では休日である土、日曜は
「私的な時間」「安息日」と考えられ、
公的行事の選挙を行うことには抵抗があった。
また、国土が広大なため、有権者は
遠く離れた投票所に向けて月曜日に出発し、
火曜日に投票するのは通例になった、といわれる。
2008年2月3日日曜日
SICP第1章を読了
SICP第1章を読了。
プログラミング言語は以下を備えていることが大事:
最後の方でいろんな数学の手法を抽象化してみせた部分は感動ものだった。
プログラミング言語は以下を備えていることが大事:
- プリミティブな式
- 式を組み合わせられること
- 式を抽象化できること
最後の方でいろんな数学の手法を抽象化してみせた部分は感動ものだった。
ラベル:
SICP
2008年1月31日木曜日
TracのBrowse Sourceをシンタックスハイライトするには
tracpygmentsをインストール
$ svn export http://trac-hacks.org/svn/tracpygmentsplugin/ \
branches/matt_good ./tracpygments
$ cd tracpygments
$ sudo python setup.py install
trac.iniに設定
[components]
tracpygments.* = enabled
Apacheを再起動
$ apache2ctl graceful
http://trac-hacks.org/
2008年1月30日水曜日
OSXのグローバルホットキーを使うには
OSXにはグローバルホットキーという機能があります。
グローバルホットキーに登録しておくと、
フォアグラウンドにでなくてもキー入力を受け取ることができます。
フレームワークの登録
Carbon.frameworkをリンクします。コールバック関数を用意する
グローバルホットキーが押されたときに呼ばれるコールバック関数を定義します。OSStatus MyHotKeyHandler( EventHandlerCallRef nextHandler,
EventRef theEvent,
void *userData )
{
// ホットキーが押されたときの処理
return noErr;
}
ホットキーを登録する
アプリケーションを初期化するときに以下を実行します。cmd+opt+spaceを登録してみます。EventHotKeyRef gMyHotKeyRef;
EventHotKeyID gMyHotKeyID;
EventTypeSpec eventType;
eventType.eventClass = kEventClassKeyboard;
eventType.eventKind = kEventHotKeyPressed;
InstallApplicationEventHandler( &MyHotKeyHandler,
1,
&eventType,
NULL,
NULL );
gMyHotKeyID.signature = 'htk1';
gMyHotKeyID.id=1;
RegisterEventHotKey( 49, /* space key */
cmdKey + optionKey,
gMyHotKeyID,
GetApplicationEventTarget(),
0,
&gMyHotKeyRef );
2008年1月27日日曜日
Starbucks in Osaki Gate City is pretty good!
i love to read books at Starbucks.
today i went to the Starbucks in Osaki Gate City for the first time, to which i have really taken because of it's size and silence. additionally, it opens until 10:30 PM!
by the way, i heard that Starbucks of the United States has a tight game recently. McDonald begins to open cafe and take Starbucks' customers. McDonald?
in Japan, Starbucks is place to enjoy the atmosphere with time and space, not only some coffee. On the other hand, McDonald is place to eat hamburgers. it's impossible for McDonald to be the alternative to Starbucks in Japan!
大崎ゲートシティのスタバが、so good!
よくスタバで本を読むんですが、
今日行った大崎のゲートシティにあるスタバがいい感じ。
広くて静かで。
しかも、夜10:30まで開いてる。
次からここにしよ。
それはそうと、アメリカの本家スタバはここ1年大苦戦らしい。
米マクドがカフェを展開し始めて、
そっちにお客をとられているんやって。
えー、マクドが?
日本やと、スタバには単にコーヒーだけでなくて、
時間とか場所といった雰囲気を買いに行っている感じがする。
マクドはやっぱりハンバーガーを食べるところ。
スタバの代わりにマクドなんてありえん(笑)
2008年1月26日土曜日
Applescriptで現在の日付を取得するには
Applescriptで現在の日付を取得するには、以下のようにする
set d to current date文字列として使いたい場合は以下のようにする
set d to ( current date ) as string
ラベル:
AppleScript
2008年1月25日金曜日
2008年1月20日日曜日
<iframe>タグ覚え書き
<iframe>タグを使う時に、余計な枠や余白をなくしたいことがよくあります。そんなときのための覚え書き。
<iframe src="http://kamonama.sakura.ne.jp/bar/bar.html"
marginheight="0"
marginwidth="0"
width="155"
height="30"
frameborder="0">
</iframe>
marginheight | ・・・ | 縦マージン |
marginwidth | ・・・ | 横マージン |
width | ・・・ | 横幅 |
height | ・・・ | 縦幅 |
frameborder | ・・・ | 枠のあり/なし |
SICP (Structure and Interpretation of Computer Programs)を読み始めた
SICP (Structure and Interpretation of Computer Programs)を読み始めた。
書いてあることはプログラミングとしてはほとんど分かる。けど、情報科学という意味でちゃんとやったことがないので、最後まで読みたい。
章の前書きも含め、小節が全部で121個ある。1つ1つの小節はせいぜい5ページ程度。これならなんとかなりそう。
できるだけ、1日1小節は読み進めたい。そんなわけで、はてなグラフを貼付けました。
しし鍋を食べにいった
しし鍋を食べにいった。野獣鍋、¥6800なり。
しし鍋と、鹿刺しと、鹿肉の立田揚げ、しし肉の煮込み、熊汁を食べた。
猪と鹿と熊。
1回食べたらもういっか、という味。しょっぱい。
昔のごちそうやってんな。
しし鍋と、鹿刺しと、鹿肉の立田揚げ、しし肉の煮込み、熊汁を食べた。
猪と鹿と熊。
1回食べたらもういっか、という味。しょっぱい。
昔のごちそうやってんな。
ラベル:
グルメ
2008年1月18日金曜日
CocoaからAppleScriptを送信するには
CocoaからAppleScriptを送信するには、NSAppleScriptを使う。
NSDictionary* errorDict;
NSAppleScript* scriptObject;
NSString* source;
source = @" \
tell Application \"CotEditor\"\n \
make new document\n \
activate\n \
end tell";
scriptObject = [[[NSAppleScript alloc] initWithSource: source]
autorelease];
[scriptObject executeAndReturnError: &errorDict];
【Mochikit】itemgetter
itemgetter(name)という関数がある。
obj[name]を返すような関数function(obj)を返す。
へぇ〜。
例:
a = b = {};
a.x = 1;
b.x = 3;
x_getter = itemgetter( "x" );
assert( x_getter( a ) == 1 );
assert( x_getter( b ) == 3 );
2008年1月13日日曜日
【Hadoop】1つのノードで疑似的に分散処理
Hadoopのドキュメント"Hadoop Quickstart"の日本語訳です。
【Hadoop】クイックスタートの続きです。
新しい分散ファイルシステムを用意し、Hadoopデーモンを開始します。
デフォルトでは${HADOOP_HOME}/logsです。
【Hadoop】クイックスタートの続きです。
設定ファイルを用意する
すでに用意されているconf/hadoop-site.xmlを使います。<configuration>
<property>
<name>fs.default.name</name>
<value>localhost:9000</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
パスフレーズなしでsshできるようにする
パスフレーズなしでローカルホストにsshできるか確認します。$ ssh localhostもしパスフレーズなしでsshできない場合は、以下を実行します。
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
実行する
単一プロセスと同じことを疑似分散でやってみます。新しい分散ファイルシステムを用意し、Hadoopデーモンを開始します。
$ bin/hadoop namenode -format入力ファイルを分散ファイルシステムにコピーします。
$ bin/start-all.sh
$ bin/hadoop dfs -put conf input分散モードの場合も、単一プロセスの場合と同じようにgrepを実行することができます。
$ bin/hadoop jar hadoop-*-examples.jar grep input output ¥
> 'dfs[a-z.]+'
結果を表示する
出力結果を分散ファイルシステムからローカルのファイルシステムにコピーして表示してみます。$ bin/hadoop dfs -get output output分散ファイルシステム上の出力結果を直接見ることもできます。
$ cat output/*
$ bin/hadoop dfs -cat output/*
終了する
終わったら、デーモンを止めます。$ bin/stop-all.sh
おまけ
Hadoopデーモンのログは${HADOOP_LOG_DIR}に書き込まれます。デフォルトでは${HADOOP_HOME}/logsです。
【Hadoop】クイックスタート
Hadoopのドキュメント"Hadoop Quickstart"の日本語訳です。
動作確認のために、Hadoopスクリプトの使用方法を表示してみます。
入力されたファイルの中から、与えられた正規表現にマッチする行をすべて表示してみます。入力にはconfディレクトリのコピーを使い、出力先にはoutputディレクトリを指定してみます。
ダウンロードする
ここからHadoopをダウンロードし、展開します。準備をする
conf/hadoop-env.shを編集しJAVA_HOMEを指定します。動作確認のために、Hadoopスクリプトの使用方法を表示してみます。
$ bin/hadoopHadoopスクリプトの使用方法が表示されれば、正しく動作しています。
単一プロセスで実行してみる
まず、単一プロセスでHadoopを実行してみます。デフォルトでは、Hadoopは単一プロセスで実行するようになっています。入力されたファイルの中から、与えられた正規表現にマッチする行をすべて表示してみます。入力にはconfディレクトリのコピーを使い、出力先にはoutputディレクトリを指定してみます。
$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-*-examples.jar grep input output \
> 'dfs[a-z.]+'
$ cat output/*
2008年1月10日木曜日
2008年1月8日火曜日
【Python】いとこモジュールのインポート
モジュールが以下のような構成になっているときに、module.a.a1からmodule.b.b1をインポートしたいことがある。
■2.4まで
2.4まではこのケースを相対パスで書くことはできない。
なので、おとなしくmoduleからのパスを書くしかない:
■2.5から
2.5から、相対パスでモジュール内をたどってインポートできるようになった。このように書くことができる:
モジュール階層が深くなってくるとうれしいはず。
module
- a
- a1
- a2
- b
- b1
- b2
■2.4まで
2.4まではこのケースを相対パスで書くことはできない。
なので、おとなしくmoduleからのパスを書くしかない:
# module.a.a1.py
from module.b.b1 import hoge
■2.5から
2.5から、相対パスでモジュール内をたどってインポートできるようになった。このように書くことができる:
# module.a.a1.py
from ..b.b1 import hoge
モジュール階層が深くなってくるとうれしいはず。
2008年1月5日土曜日
iPod touchでrogue、可不可?
iPod touchでrogueが動かないかと思い、試してみた。
コンパイルしたファイルをiPod touchに送って、実行。
・・・
「横幅がたりないー!」って言われた・・・
横70以上、縦22以上が必要みたい。
残念。
http://rogue.rogueforge.net/
コンパイル
- ここからダウンロード
Rogue 3.6.3 Source Code (r1043)
- Makefileを以下のように変更してコンパイル
■変更前CC=gcc
■変更後CC=/usr/local/bin/arm-apple-darwin-gcc
試してみた
コンパイルしたファイルをiPod touchに送って、実行。
・・・
「横幅がたりないー!」って言われた・・・
横70以上、縦22以上が必要みたい。
残念。
rogue
http://rogue.rogueforge.net/
プラハ国立美術館展「ルーベンスとブリューゲルの時代」
200余年の歴史を誇るプラハ国立美術館は、ヨーロッパ有数の美術館として西洋絵画の名品を所蔵しています。
本展では同美術館の所蔵品のうち、16世紀から17世紀にかけて描かれたフランドル絵画黄金期の秀作70点を展覧するものです。農民の日常生活を数多く絵にしたブリューゲル一族や、ヨーロッパ各国の王侯貴族から絵の注文が殺到した人気画家ルーベンスなど、宗教画、風景画、風俗画、静物画と、あらゆるジャンルの作品が出品されます。それらの絵には、比喩や教訓的な意味合いが含まれたものも多く、絵を読むという視点からも楽しめる作品群といえるでしょう。
ヨーロッパの古典絵画の名品と、描かれた絵に込められた謎に触れる絶好の機会です。
プラハ国立美術館展「ルーベンスとブリューゲルの時代」
そごう美術館
2008年1月2日(水)〜1月23日(水)
cocopad所感
cocopad
さくさく動く感じが良い。
ラインや方眼、ガラスの切り替えが気持ちいい
タイプできればいいのに。全部手書きはキツい。
手書きするとベクターの円や四角になるというのはどう?
自由度を下げて使いやすくする。
名前をつけて保存は面倒。勝手に保存しといて欲しい
規定のサイズにぱっとできるのも良い
http://projects.digitalwaters.net/index.php?q=cocopad
iPhone版ができたら良い?
さくさく動く感じが良い。
ラインや方眼、ガラスの切り替えが気持ちいい
タイプできればいいのに。全部手書きはキツい。
手書きするとベクターの円や四角になるというのはどう?
自由度を下げて使いやすくする。
名前をつけて保存は面倒。勝手に保存しといて欲しい
規定のサイズにぱっとできるのも良い
http://projects.digitalwaters.net/index.php?q=cocopad
iPhone版ができたら良い?
2008年1月4日金曜日
Hello jiggy!
I've made a HelloWorld with "jiggy", the javascript-based IDE for iPhone/iPod touch. I'll show the steps.
Create new application -- HelloJiggy
Login to jiggy
- launch jiggy in your iPhone/iPod touch.
- access to jiggy with the browser of your Mac/PC. the IP to access is on the screen.
- login to jiggy with the User name and the Password on the screen.
Create new application -- HelloJiggy
- click "Create new application" on the left navigation.
- input "Title" and "Identifier." Below is an example. ("Description", "Version", "Author", "URL", "Icon" are your options)
Title: HelloJiggy
Identifier: jp.kamonama(.hellojiggy) - click "Save" below the form.
- it's ok that your iPhone/iPod touch has been locked.
Hello jiggy!
- unlock your iPhone/iPod touch and launch jiggy.
- access to jiggy.
- click "HelloJiggy" come up on the left navigation.
- click "main.js" in the "HelloJiggy" folder.
- write the code below in main.js.
Plugins.load( "UIKit" );
var rect = UIHardware.fullScreenApplicationContentRect
rect[0] = rect[1] = 0;
var window = new UIWindow( rect );
window.setHidden( false );
window.orderFront();
window.makeKey();
window.backgroundColor = [ 1.0 , 1.0 , 1.0, 1.0 ];
var hello = new UITextLabel( rect );
hello.text = "Hello jiggy!";
hello.backgroundColor = [ 0.6 , 0 , 0 , 1.0 ];
hello.setFont( new Font( "Trebuchet MS" , 2 , 46 ) );
hello.color = [ 1 , 1 , 1 , 1 ];
hello.centersHorizontally = true;
window.setContentView( hello ); - click the floppy-disk icon to save main.js.
- click the right-pointing triangle icon to run HelloJiggy. (or tap the HelloJiggy icon on the spring board of your iPhone/iPod touch.)
- Congratulation! HelloJiggy is running, now!
jiggyでHelloWorld
iPhone/iPod touchのjavascriptベースの開発環境「jiggy」で、HelloWorldを作ってみます。ただ、HelloWorldはあんまりなので、HelloJiggyに。
jiggyにログインする
- iPhone/iPod touchでjiggyを起動する
- 手元のMac/PCのブラウザからjiggyにアクセスする
(jiggyに表示されているIPを使う) - jiggyに表示されているUser name/Passwordでログインする
新しいアプリケーションを作る
- 左ナビの「Create new application」をクリックする
- TitleとIdentifierを入力する(Description, Version, Author, URL, Iconは任意)
Title: HelloJiggy
Identifier: jp.kamonama(.hellojiggy) - 画面下部の「Save」をクリックする
- iPhone/iPod touchがロック状態になればOK
Hello jiggy!
- ロックを解除し、jiggyを起動する
- jiggyにアクセスする
- 左ナビに「HelloJiggy」が追加されているので、それをクリックする
- HelloJiggyフォルダ中のmain.jsをクリックする
- 以下のコードをmain.jsに記述する
Plugins.load( "UIKit" );
var rect = UIHardware.fullScreenApplicationContentRect
rect[0] = rect[1] = 0;
var window = new UIWindow( rect );
window.setHidden( false );
window.orderFront();
window.makeKey();
window.backgroundColor = [ 1.0 , 1.0 , 1.0, 1.0 ];
var hello = new UITextLabel( rect );
hello.text = "Hello jiggy!";
hello.backgroundColor = [ 0.6 , 0 , 0 , 1.0 ];
hello.setFont( new Font( "Trebuchet MS" , 2 , 46 ) );
hello.color = [ 1 , 1 , 1 , 1 ];
hello.centersHorizontally = true;
window.setContentView( hello ); - フロッピーディスクのアイコンをクリックし、main.jsを保存する
- 右向き三角のアイコンをクリックし、HelloJiggyが起動すればOK
(スプリングボードのHelloJiggyアイコンをタップしても起動できます)
2008年1月3日木曜日
Bloggerで投稿のスタイルを変更するには
Bloggerでは投稿のスタイルを自由に変更することができます。
<pre>〜</pre>タグのボーダーを破線にし、背景を薄い黄色にしてみる。
■変更前
■変更後
手順
- 管理画面を表示する
- 「テンプレート」タブをクリックする
- 「HTMLの編集」リンクをクリックする
- テキストボックスにテンプレートが入っている。
<b:skin>〜</b:skin>の中にスタイルが定義されているので、必要に応じて編集する。
具体例
<pre>〜</pre>タグのボーダーを破線にし、背景を薄い黄色にしてみる。
■変更前
1 -module(echo).
2 -export([echo/0]).
3
4 echo() ->
5 receive
6 Msg -> io:format("~necho: ~p", [Msg]),
7 echo()
8 end.
■変更後
1 -module(echo).
2 -export([echo/0]).
3
4 echo() ->
5 receive
6 Msg -> io:format("~necho: ~p", [Msg]),
7 echo()
8 end.
Erlangで関数の実行にかかった時間を計るには
Erlangで関数の実行にかかった時間を計るには、timer:tcを使います。
timer:tc( パッケージ名, 関数名, 引数リスト ).出力は、{ かかった時間[microsec]、関数の出力 }
実行例
1> fib(40).
165580141
2> timer:tc(fib, fib, [40]).
{8464307,165580141}
ノンデザイナーズ・デザインブック
ノンデザイナーズ・デザインブック
お薦め本。
センスのいいレイアウトのための"コツ"が紹介されています。
1.まず、悪い(やってしまいがちな)例を載せて、
2.次にそれを良くした例を載せる。
という形で書いてあるので、自分ですぐに試すことができます。
「で、具体的には、どうやればいいの?」がわかる、良書です。
2008年1月2日水曜日
The Erlang mode for Emacs
EmacsのErlangモードを使うには、.emacsに以下のコードを追記します。
詳しくは:
http://www.erlang.org/doc/apps/tools/erlang_mode_chapter.html
(setq load-path (cons "/usr/local/otp/lib/tools-<ToolsVer>/emacs"
load-path))
(setq erlang-root-dir "/usr/local/otp")
(setq exec-path (cons "/usr/local/otp/bin" exec-path))
(require 'erlang-start)
- /user/local/otpは、Erlangのインストールパスで置き換えてください。
- 1行目の<ToolsVer>には、インストールされているErlangのバージョンが入ります。実際のディレクトリ構成に合わせてください。
詳しくは:
http://www.erlang.org/doc/apps/tools/erlang_mode_chapter.html
Erlangでメッセージパッシング
Erlangは言語レベルでメッセージパッシングの仕組みを持っている。
そこで、Erlangでメッセージパッシングのコードを書いてみた。
1行目
モジュールの宣言
2行目
echo関数のエクスポート
4〜8行目が本体の関数です。メッセージを受け取り、標準出力に出力します。再帰することでなんどもメッセージを受け取るようにしています。具体的には以下。
4行目
関数の開始。関数名は"echo"。
5行目
receive式でメッセージを受け取る。
6行目
Msgにメッセージが入る。io:formatで、受け取ったMsgを標準出力に出力する。
7行目
echo関数を再帰的に呼ぶ。こうすることで、なんどもメッセージを受け取ることができる。
8行目
receive式を閉じる。
echo.erlをコンパイル。
2行目
echo関数をプロセスとして呼び出し。
プロセスIDが返ってくるのでPidに入れる。
<0.40.0>は返ってきたプロセスID。
3行目
!演算子を使って、プロセスPidに"Hello!"メッセージを送る。
echo関数がメッセージを受け取り、「echo: "Hello!"」を出力する。
なお、その前の「"Hello!"」は!演算の評価結果。
そこで、Erlangでメッセージパッシングのコードを書いてみた。
サンプルコード(echo.erl)
1 -module(echo).
2 -export([echo/0]).
3
4 echo() ->
5 receive
6 Msg -> io:format("~necho: ~p", [Msg]),
7 echo()
8 end.
1行目
モジュールの宣言
2行目
echo関数のエクスポート
4〜8行目が本体の関数です。メッセージを受け取り、標準出力に出力します。再帰することでなんどもメッセージを受け取るようにしています。具体的には以下。
4行目
関数の開始。関数名は"echo"。
5行目
receive式でメッセージを受け取る。
6行目
Msgにメッセージが入る。io:formatで、受け取ったMsgを標準出力に出力する。
7行目
echo関数を再帰的に呼ぶ。こうすることで、なんどもメッセージを受け取ることができる。
8行目
receive式を閉じる。
実行例
$ erl1行目
1> c(echo.erl).
{ok,echo}
2> Pid = spawn( echo, echo, [] ).
<0.40.0>
3> Pid ! "Hello!".
"Hello!"
echo: "Hello!"
echo.erlをコンパイル。
2行目
echo関数をプロセスとして呼び出し。
プロセスIDが返ってくるのでPidに入れる。
<0.40.0>は返ってきたプロセスID。
3行目
!演算子を使って、プロセスPidに"Hello!"メッセージを送る。
echo関数がメッセージを受け取り、「echo: "Hello!"」を出力する。
なお、その前の「"Hello!"」は!演算の評価結果。
登録:
投稿 (Atom)