妻がMacBook Proを買ったので、旧機種のMacBookが余った。これを機にこのMacBookを開発専用機にしよう、ということで、様々なツールをインストール。まずはEclipse+PyDevでPythonの開発を開始。
しかし、いざPIL(Python Imaging Library)をインストールして使おうとすると、JPEGがサポートされていないというエラーが。以下のURLからJPEGライブラリをインストールした後にPILを再インストールした。
http://www.ijg.org/
これまではWindowsやLinuxで開発をしていたので、ダブルクリックとかパッケージツールを使って簡単にインストールできていたが、Macではそうではなさそうだ。
Saturday, July 18, 2009
Project Tuva
Bill GatesがCornell大学でのFeynmanレクチャーの権利を買い取り、Project Tuvaとしてネットに公開をした。
自分はさっき1番目のレクチャーを観終えたが、本当に面白い。
特に印象的だったのは、重力の法則が振り子の運動のような身近なものから、銀河の形成にまで適用されるという普遍性(Universality)を「simple is beautiful」と言った部分だ。
最近自分の周辺は、複雑なモノや事情に支配されており、それに圧倒されているように感じていたが、案外そうではないかもしれない。昔、大学でカオスの研究(Universality in chaos)をしている当時を思い出した。
自分はさっき1番目のレクチャーを観終えたが、本当に面白い。
特に印象的だったのは、重力の法則が振り子の運動のような身近なものから、銀河の形成にまで適用されるという普遍性(Universality)を「simple is beautiful」と言った部分だ。
最近自分の周辺は、複雑なモノや事情に支配されており、それに圧倒されているように感じていたが、案外そうではないかもしれない。昔、大学でカオスの研究(Universality in chaos)をしている当時を思い出した。
Friday, July 17, 2009
XULで遊んでみるか
Yahoo! Japanってダメだな
「友達がYahoo! Messengerを使っているから自分も使ってみたい」と妻に頼まれたのでいろいろ調べてみた。すると、Yahoo! Japanにまつわる以下の制限が分かった。
2.については、英語版のYahoo! Messenger(for Mac)はバージョン3.0で既に音声対応しているが、日本語版は2.6で音声通話に未対応、さらにYahoo! Japan限定版というありさま。
Yahoo! JapanはSoftBank傘下という特殊な事情があるのは知っているが、ここまであからさまに制限があるのはいかがなものか。結果、「チャットや音声通話をしたければSkypeを使え」という結論に至った。
Yahoo! Japanってダメだな
- 他の国のYahoo!アカウントと切り離されている
- Yahoo! Japan版のYahoo! Messenger(for Mac)は、バージョンが古くて音声通話に未対応
2.については、英語版のYahoo! Messenger(for Mac)はバージョン3.0で既に音声対応しているが、日本語版は2.6で音声通話に未対応、さらにYahoo! Japan限定版というありさま。
Yahoo! JapanはSoftBank傘下という特殊な事情があるのは知っているが、ここまであからさまに制限があるのはいかがなものか。結果、「チャットや音声通話をしたければSkypeを使え」という結論に至った。
Yahoo! Japanってダメだな
Friday, July 03, 2009
FirefoxのGeolocation(位置検出)をOFFに
Firefox3.5がリリースされて早速インストール。話題になっているGeolocationをまずOFFにした。
やり方は、URLにabout:configと入れて、geo.enabledをfalseにするだけ。
本当にこれがないと使えない便利なモノがあればONにするかもしれないが、今のところはOFFにしておこう。
やり方は、URLにabout:configと入れて、geo.enabledをfalseにするだけ。
本当にこれがないと使えない便利なモノがあればONにするかもしれないが、今のところはOFFにしておこう。
Saturday, May 23, 2009
[jQuery] live()が激しく便利な件について
最近jQueryを使って動的なページを作っており、頻繁にappend()やremove()を使ってページエレメントを追加・削除している。その時に面倒だったのが新たに追加したエレメントへのイベントのバインドだ。つまり、append()で追加したエレメントにイベントを毎度バインドするということをやっていた。
しかし、何かうまい方法があると思ってもう一度jQueryのドキュメントを見てみると、live()というチョー便利な関数が(version 1.3から追加されたみたいだ)。以下に簡単なサンプルを。
これまでは、要素が追加されるたびにbind()を使っていたのが、live()のおかげで楽チンになった。やっぱりjQueryはすばらしい。
しかし、何かうまい方法があると思ってもう一度jQueryのドキュメントを見てみると、live()というチョー便利な関数が(version 1.3から追加されたみたいだ)。以下に簡単なサンプルを。
// class=messageをクリックすると自分自身が消えるようにする
$('.message').live('click', function() {
$(this).remove();
});
// id=addというボタンを押すと、class=messageというdivをページに追加
$('#add').click(function() {
$('body').append('hello');
});
これまでは、要素が追加されるたびにbind()を使っていたのが、live()のおかげで楽チンになった。やっぱりjQueryはすばらしい。
Monday, May 04, 2009
[JavaScript] document.write("<scr" + "ipt>")って?
最近色々なJavaScriptのソースを読む機会があったのだが、その中で妙な記述があるのを見つけた。
これは、JavaScript中で別のファイルを読み込む時に使う。最初は、なんだこりゃ?と思ったが、よく考えてみると、もしdocument.writeの"</scr" + "ipt>"が"</script>"だったとすると、これが最初の<script>タグの対だと認識されてしまうからだというのが分かった。
しかし、こういったバッドノウハウで回避しないといけないような作りになっているこのスクリプトの方が問題だと思うのだが...
<script type="text/javascript">
...
document.write("<script type=\"text/javascript\" src=\"foo.js\">" + "</scr" + "ipt>");
...
</script>
これは、JavaScript中で別のファイルを読み込む時に使う。最初は、なんだこりゃ?と思ったが、よく考えてみると、もしdocument.writeの"</scr" + "ipt>"が"</script>"だったとすると、これが最初の<script>タグの対だと認識されてしまうからだというのが分かった。
しかし、こういったバッドノウハウで回避しないといけないような作りになっているこのスクリプトの方が問題だと思うのだが...
Thursday, April 30, 2009
[Camera] 25mmパンケーキ + LH-43 + 八仙堂キャップ
Saturday, April 25, 2009
.emacsのチョー基本設定
.emacsの設定は、OSを再セットアップした時にしか行わないので、毎回検索しては、だれかのサイトにお世話になっている。最低限の設定くらいは自分のブログにメモしておくか。
単にCtrl+hでバックスペースとバックアップファイルを作らない、という設定だけだけど。
(global-set-key "\C-h" 'delete-backward-char)
(setq make-backup-files nil)
単にCtrl+hでバックスペースとバックアップファイルを作らない、という設定だけだけど。
Sunday, April 19, 2009
簡単にHDRを合成 - Qtpfagui
ちょっとHDR(High Dynamic Range)で遊びたくなってフリーなソフトウエアを物色していたところ、Qtpfaguiを見つけた。
ちょこっと使ってみたが、入力としてブラケット撮影した写真をインポートし、あとはパラメータを調整するだけでとっても簡単。
HDRの技術的なテクニックについては分からないが、「とりあえずHDRを試してみたい」という場合には必要十分のような気がする。Qtを使っているのでWindows/Mac/Linuxどれても動作するのもうれしい。
ここでHDRについて簡単に説明すると、普通は白飛びや黒飛びしてしまう写真を合成して以下のような写真にする、というもの。
普通は、照明側に露出をあわせるとビルの下の部分が黒つぶれ、逆にビルの下側にあわせると照明が白つぶれしてしまう。
同じように、下の写真の場合、空か地面かどっちを優先しようか迷うことなく、露出のブラケット撮影さえしておけば以下のような写真を合成することが可能となる。
これから、ブラケット撮影をする機会が多くなりそうだ。
ちょこっと使ってみたが、入力としてブラケット撮影した写真をインポートし、あとはパラメータを調整するだけでとっても簡単。
HDRの技術的なテクニックについては分からないが、「とりあえずHDRを試してみたい」という場合には必要十分のような気がする。Qtを使っているのでWindows/Mac/Linuxどれても動作するのもうれしい。
ここでHDRについて簡単に説明すると、普通は白飛びや黒飛びしてしまう写真を合成して以下のような写真にする、というもの。

同じように、下の写真の場合、空か地面かどっちを優先しようか迷うことなく、露出のブラケット撮影さえしておけば以下のような写真を合成することが可能となる。

Saturday, April 18, 2009
「クルトガ」欲しいかも
Thursday, April 16, 2009
Googleのバグ?
Twitterのmasuiさんのつぶやきで知ったのだが、「完済→関西」「標語→兵庫」とそれぞれ認識してしまうみたいで、「完済」「標語」で検索すると「関西」「兵庫」のページばかり検索されてしまう。
まあ、誰も「完済」「標語」で検索することはないんだろうけど、これはあんまりだなあ。
まあ、誰も「完済」「標語」で検索することはないんだろうけど、これはあんまりだなあ。
Monday, April 13, 2009
[jQuery] 色のアニメーション
最近jQueryで遊んでいるが、jQueryだけでは色を変えるアニメーションはできないようで、jQuery/UIも必要なようだ。あと、CSSっぽくプロパティを指定するのではなく、Camel Styleで指定する必要がある。
← これが必要
Sunday, April 12, 2009
Saturday, April 11, 2009
プリンター物色の顛末
これまで使ってきたEPSON PM-890Aの調子が悪く、印刷がかすれてしまう。ヘッドクリーニングで直るのだが、再びかすれ始めるまでの間隔が最近はどんどん短くなり、ものすごいフラストレーションに。
というわけで今日は秋葉原でプリンターを物色。せっかく買い換えるのだから自分なりの条件を考えてみた。
しかし、EPSONは現行機でウンザリしていることや、今持っているスペアのインクについてはどうせ互換性がなく、さらに安いとはいえ(約3,000円)両面自動印刷がオプションなので却下。
あとはCanonとHPで迷っていたのだが、いざ決めようとしていた時に、日本で買ったプリンターと海外で買ったインクの組み合わせで動作しないという「プリンターインクのリージョンコード問題」について以前Twitterで読んだことがあるのを思い出した。つまり、上記3の条件で述べた事情から、将来は(近い将来かも)日本に住まない可能性があるため、4つ目の条件が加わったというわけだ。
結局どのメーカーにリージョンコード問題があるのかをその場で思い出すことができず、今日秋葉原で買うことを断念。
自宅に戻ってからネットで調べてみると、リージョンコード問題はHPにあるようだ。というわけで、Canonを買うことに決めたのだが、まだ現行機のインクを新調したばかりなのを思いだし、しばらく現行機をだましだまし使うことに。もー、なにやってんだか。
というわけで今日は秋葉原でプリンターを物色。せっかく買い換えるのだから自分なりの条件を考えてみた。
- 両面印刷が自動でできること: 自分はネットの記事やプログラムのコードを印刷することが多いのだが、紙の節約と扱いやすさで2UP(A4横に2ページ印刷すること)を使っている。最近は印刷する量が本当に多くなってきたので(最近では、これのPDFを全ページ印刷した)、さらなる紙の節約のために自動両面印刷ができる機種を希望。
- 前面に給紙トレイがあること: 今持っているのには後ろにしか給紙トレイがない。自分はA4以外にもL版の写真を多く印刷するので、そのたびに用紙を入れ直さないといけないのは面倒だ。また、後ろの給紙トレイに用紙を入れっぱなしにしておくとホコリがたまるのも気になる。よって、前面に専用の給紙トレイがある機種を希望(L版用のものもある2段前面トレイだとなお良い)。
- メニュー言語を英語へ変えられること: 妻が日本人ではないのでこれは重要な機能だ。さもないと、何かがあるごとに自分が呼ばれることになる。
しかし、EPSONは現行機でウンザリしていることや、今持っているスペアのインクについてはどうせ互換性がなく、さらに安いとはいえ(約3,000円)両面自動印刷がオプションなので却下。
あとはCanonとHPで迷っていたのだが、いざ決めようとしていた時に、日本で買ったプリンターと海外で買ったインクの組み合わせで動作しないという「プリンターインクのリージョンコード問題」について以前Twitterで読んだことがあるのを思い出した。つまり、上記3の条件で述べた事情から、将来は(近い将来かも)日本に住まない可能性があるため、4つ目の条件が加わったというわけだ。
結局どのメーカーにリージョンコード問題があるのかをその場で思い出すことができず、今日秋葉原で買うことを断念。
自宅に戻ってからネットで調べてみると、リージョンコード問題はHPにあるようだ。というわけで、Canonを買うことに決めたのだが、まだ現行機のインクを新調したばかりなのを思いだし、しばらく現行機をだましだまし使うことに。もー、なにやってんだか。
Wednesday, April 01, 2009
[Mac] Deep Sleep
MacでWindowsのHibernationと同等の機能が欲しくなって、探してみるとDeep SleepというDash Board用のツールがあった。
セットアップは単にダウンロードしたファイルを解凍してダブルクリックするだけ。そうするとDash BoardにDeep Sleepが追加され、管理者パスワードを設定してあとは中央のアイコンをクリックするだけでHibernationになってくれる。
これまでは、OSのSleep機能しか使ったおらず、通電しっぱなしだったので気持ち悪かったが、そのストレスが解消した。作者に感謝。
セットアップは単にダウンロードしたファイルを解凍してダブルクリックするだけ。そうするとDash BoardにDeep Sleepが追加され、管理者パスワードを設定してあとは中央のアイコンをクリックするだけでHibernationになってくれる。
これまでは、OSのSleep機能しか使ったおらず、通電しっぱなしだったので気持ち悪かったが、そのストレスが解消した。作者に感謝。
Monday, March 23, 2009
Wednesday, March 11, 2009
とうとうポメラを購入
去年さんざん迷った末に今まで購入を見合わせていたポメラ(白)を購入した。今いろいろイジって遊び中...

英語キーボードではないとか、ControlとCaps Lockを入れ替えられないとか、Emacsキーバインドじゃあないとか、いろいろ不満はあるものの、こういった製品は今これしかないことからすると仕方ないか。
とはいえ、前にも書いたとおり「良い割り切り」で本当に良い製品だと思う。

英語キーボードではないとか、ControlとCaps Lockを入れ替えられないとか、Emacsキーバインドじゃあないとか、いろいろ不満はあるものの、こういった製品は今これしかないことからすると仕方ないか。
とはいえ、前にも書いたとおり「良い割り切り」で本当に良い製品だと思う。
Python: zipサイコー
プログラムを書いていると、一つのループで複数のコンテナ型(配列やリスト)にアクセスしたいときがある。これまでは整数でループを回して、その整数を使って添え字アクセスをしていた。しかし、Pythonでzipを使えばもっとスマートになることが分かった。
こんな感じで簡単に使えるなんて、やっぱりPythonサイコー。
a_list = ['a', 'b', 'c', 'd', 'e']
b_list = ['A', 'B', 'C', 'D', 'E']
zipped = zip(a_list, b_list)
for x, y in zipped:
print x, y # a, Aという組み合わせでe, Eまで表示される
こんな感じで簡単に使えるなんて、やっぱりPythonサイコー。
Saturday, March 07, 2009
Django: objects.get_or_create()
DjangoのModelを最近使っている。Modelでunique属性を有効にした場合、同じ属性を持つレコードをsave()するとIntegrityErrorが帰ってくるので、これまではこれをキャッチしてobjects.get()を実行し、最終的にインスタンスを取得していた。しかし、これだと一つのレコードで4,5行位は使ってしまう。
いろいろ調べてみると、objects.get_or_create()という関数があり、これはレコードが存在していれば取得し、無ければ作成する、というもの。これだと1行で簡単に上に書いた処理を実行することができる。
Django本のP.142のサンプルでは、この関数の戻り値が1つ(インスタンス)という記述になっているが、その後(インスタンス、レコード作成のTrue/False)という2つの戻り値に変更になっているようだ。
Djangoはすばらしいのだが、ネットや書籍の情報を見るときには、1.0対応かどうかを意識する必要がある。
いろいろ調べてみると、objects.get_or_create()という関数があり、これはレコードが存在していれば取得し、無ければ作成する、というもの。これだと1行で簡単に上に書いた処理を実行することができる。
Django本のP.142のサンプルでは、この関数の戻り値が1つ(インスタンス)という記述になっているが、その後(インスタンス、レコード作成のTrue/False)という2つの戻り値に変更になっているようだ。
Djangoはすばらしいのだが、ネットや書籍の情報を見るときには、1.0対応かどうかを意識する必要がある。
Subscribe to:
Posts (Atom)