Sunday, September 27, 2009

OSの言語切り替え

自宅はMacとWindowsの2台体制で、Windowsの方はHPのノートPCにVista Ultimateが入っている。そのVistaも使っていくうちに不評な理由がだんだん分かってきて(特にHibernationの遅さは致命的)、最近はWindowsでしかできないことが無い場合を除き、ほとんど起動しなくなってしまった。

それに対してWindows7の評判は良いようで、10月末に発売ということでEditionごとの機能をチェックしてみた。自分が最も重視するのはOSの表示言語で、英語でないともうダメな体になってしまった。Vistaの場合は言語の切り替えができるというだけの理由でUltimateにしているという状態で、Windows 7ではどうなったかを確認すると、予想通りWindows 7 Ultimateでなくてはならず、アップグレード版で\25,000以上の出費になるようだ。

Macの場合は、標準で表示言語を切り替えられるのに、Windowsはなんでダメなんだろう。まあ、自分のニーズが多数派でないのは理解するが、言語を切り替えるためだけにUltimateを買わざるを得ないというのは納得がいかない。

Windowsでしかできないことを一度列挙してみて、本格的にWindowsを使わないという方向を検討してみるか?

Sunday, August 02, 2009

MacでPIL

妻が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)をしている当時を思い出した。

Friday, July 17, 2009

XULで遊んでみるか

いろいろFirefox上のBookmarkletで遊んでいるうちにやりたいことが増えてきた。しかし、Web画面のキャプチャを取るなどの凝ったことをやろうとすると、やはりadd-onでないとできないようだ。

Firefoxのadd-onの開発は未経験だが、これとかこれを見ると、なかなか楽しそう。
XULで遊んでみようかなあ。

Yahoo! Japanってダメだな

「友達がYahoo! Messengerを使っているから自分も使ってみたい」と妻に頼まれたのでいろいろ調べてみた。すると、Yahoo! Japanにまつわる以下の制限が分かった。
  1. 他の国のYahoo!アカウントと切り離されている
  2. Yahoo! Japan版のYahoo! Messenger(for Mac)は、バージョンが古くて音声通話に未対応
1.については、既に妻が持っているアカウントはワールドワイドで、yahoo.comはもちろん、yahoo.co.uk(イギリス)やyahoo.fr(フランス)などでログインできることを確認した。しかし、このアカウントでYahoo! Japanにはログインできず。つまり、yahoo.co.jpだけ世界中のYahoo!から切り離されているのだ。よって、友達がYahoo! Japanのアカウントを持っているので、このためだけに新たにYahoo! Japanのアカウントを作成する必要がある。

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にしておこう。

Saturday, May 23, 2009

[jQuery] live()が激しく便利な件について

最近jQueryを使って動的なページを作っており、頻繁にappend()やremove()を使ってページエレメントを追加・削除している。その時に面倒だったのが新たに追加したエレメントへのイベントのバインドだ。つまり、append()で追加したエレメントにイベントを毎度バインドするということをやっていた。

しかし、何かうまい方法があると思ってもう一度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のソースを読む機会があったのだが、その中で妙な記述があるのを見つけた。


<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 + 八仙堂キャップ

25mmパンケーキのキャップは、ねじ込み式なのとレンズフードLH-43と併用できないということで、あまり使い勝手が良くない。

色々ネットで調べてみると、八仙堂のキャップが良さそうだが、43mmだとピッタリすぎで入らないようだ。ということで、44〜45mm用を購入。しかし、これだと若干大きすぎるようで、少し衝撃がかかっただけでポロッと落ちてしまう。仕方がないのでペンチで口径の部分を少しだけ内側へ曲げると、テンションがかかってちょうど良い具合に。
これでようやくパンケーキ、フード、キャップという3点セットがそろった。この連休中はこのセットを常に持ち歩いて、いろいろ撮影するつもりだ。

Saturday, April 25, 2009

.emacsのチョー基本設定

.emacsの設定は、OSを再セットアップした時にしか行わないので、毎回検索しては、だれかのサイトにお世話になっている。最低限の設定くらいは自分のブログにメモしておくか。

(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について簡単に説明すると、普通は白飛びや黒飛びしてしまう写真を合成して以下のような写真にする、というもの。普通は、照明側に露出をあわせるとビルの下の部分が黒つぶれ、逆にビルの下側にあわせると照明が白つぶれしてしまう。

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

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

Macでwmv再生

MicrosoftはWindows Media Player9でMac用の開発を打ち切ったのか。その代わり別にFlip4Macというのがあるのか。メモメモ。

Saturday, April 11, 2009

プリンター物色の顛末

これまで使ってきたEPSON PM-890Aの調子が悪く、印刷がかすれてしまう。ヘッドクリーニングで直るのだが、再びかすれ始めるまでの間隔が最近はどんどん短くなり、ものすごいフラストレーションに。

というわけで今日は秋葉原でプリンターを物色。せっかく買い換えるのだから自分なりの条件を考えてみた。
  1. 両面印刷が自動でできること: 自分はネットの記事やプログラムのコードを印刷することが多いのだが、紙の節約と扱いやすさで2UP(A4横に2ページ印刷すること)を使っている。最近は印刷する量が本当に多くなってきたので(最近では、これのPDFを全ページ印刷した)、さらなる紙の節約のために自動両面印刷ができる機種を希望。
  2. 前面に給紙トレイがあること: 今持っているのには後ろにしか給紙トレイがない。自分はA4以外にもL版の写真を多く印刷するので、そのたびに用紙を入れ直さないといけないのは面倒だ。また、後ろの給紙トレイに用紙を入れっぱなしにしておくとホコリがたまるのも気になる。よって、前面に専用の給紙トレイがある機種を希望(L版用のものもある2段前面トレイだとなお良い)。
  3. メニュー言語を英語へ変えられること: 妻が日本人ではないのでこれは重要な機能だ。さもないと、何かがあるごとに自分が呼ばれることになる。
その他、各社が力を入れて差別化しようと頑張っている機能についてだが、解像度は「文字や写真が見られればよい」のでそんなにこだわらないし、無線対応は今のがAirPortにつながっているのでこれもこだわらない。結局、上に挙げた条件を満たすものとして挙がったのが、EPSON EP-801A(+ 両面印刷オプション)、Canon MP630HP C309aだ。

しかし、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機能しか使ったおらず、通電しっぱなしだったので気持ち悪かったが、そのストレスが解消した。作者に感謝。

Monday, March 23, 2009

Traveler's Notebook Passport Size

以前から気になっていたトラベラーズノートパスポートサイズが出たようだ。
普段は超整理手帳を使っており、普通のサイズを持つ必要はないが、メモ取りのためにこのパスポートサイズは買ってみるのもいいかも。

Wednesday, March 11, 2009

とうとうポメラを購入

去年さんざん迷った末に今まで購入を見合わせていたポメラ(白)を購入した。今いろいろイジって遊び中...


英語キーボードではないとか、ControlとCaps Lockを入れ替えられないとか、Emacsキーバインドじゃあないとか、いろいろ不満はあるものの、こういった製品は今これしかないことからすると仕方ないか。

とはいえ、前にも書いたとおり「良い割り切り」で本当に良い製品だと思う。

Python: zipサイコー

プログラムを書いていると、一つのループで複数のコンテナ型(配列やリスト)にアクセスしたいときがある。これまでは整数でループを回して、その整数を使って添え字アクセスをしていた。しかし、Pythonでzipを使えばもっとスマートになることが分かった。


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対応かどうかを意識する必要がある。

Saturday, February 28, 2009

昆布だし

妻が北海道旅行のお土産として知り合いから乾燥した利尻昆布をもらってきた。しかし、これまで顆粒の「だし」しか使ったことのない自分は、どうやってとればよいのかが分からない。そこでWebで調べてみると、おおむね以下のようなことらしい。
  1. 鍋にだし昆布と水を入れて30分以上つけておく(可能ならば一晩)
  2. そのまま火にかけ、沸騰直前に昆布を取り出す
ポイントは、「水から煮て」「煮立たせない」ことらしい。料理に入れたままにして煮立たせると、「臭み」や「ぬめり」の原因になるからだそうだ。

料理にそのまま入れっぱなしにして、長時間たてばたつほど「だし」が出るというものではないらしい。勉強になった。

Saturday, February 14, 2009

Ultimate Windows Tweaker

新しいPCを買って不満なのがOSだ。バンドルされてきたのはWindows Vistaなのだが、XPと比較して起動・終了がとても遅く、明らかにデグレードをしている。

色々レジストリをいじれば早くなるであろうということは分かっているのだが、そんな「環境設定」に時間を掛けられるほど自分はヒマではない。さらに言うと、何も新しいものを生み出さない環境設定やOSのセットアップに時間を掛けることは、バカバカしいとすら思っている。

そんなこんなでデフォルト状態でずっとVistaを使ってきたが、Life Hackerに「Ultimate Windows Tweaker」の記事が。


これは、レジストリの操作が必要なカスタマイズ項目をGUIで提供してくれるというもの。早速使ってみると、5分もしないで自分好みに設定ができ、スピードも速くなった。作者には本当に感謝。

Thursday, February 12, 2009

Firefox Plugin - Hide Menubar

これまで使っていたThinkPax X40に変えて、新しいHPのノートPCを買った。今、ワイド画面を満喫しているところだが、この横幅に慣れてしまうと、もっと縦幅が欲しくなる。
特にWebブラウザでは顕著だ。そこでFirefoxのPluginを調べてみたところ、Hide Menubarというプラグインが。

単にメニューバーが消えるだけなのだが、これだけでも相当縦幅が長くなった気がする。
メニューが欲しければAltキーを押すだけだし、ブックマークのロードなどのメニュー操作はいつもキーボードを使っているのでまったく問題ない。

また、新しく常用するプラグインが増えた。

Wednesday, February 11, 2009

Django雑感

最近、Djangoを使いはじめた。自分なりに色々触ってみての雑感は以下だ。
  • 設定ファイルをいろいろいじらないといけない
例えば開発用サーバでHTMLや画像といった静的コンテンツを表示するために追加で設定が必要だったり、アプリケーションやViewを作成するたびにsettings.pyやurls.pyというファイルを編集したりと、設定ファイルを頻繁に変更する必要がある。

これまでは、PHP + SMARTYやPythonでもmod_python + Cheetahという組み合わせを使っていたので、新たに作ったViewのためのファイルはそのまま使うことができたが、ちょっと勝手が違う。

つまり、ApacheのDocumentRootに置いたものはすべて閲覧/実行可能で適宜.htaccessで制限を掛ける、に対して、Djangoではデフォルトで何も閲覧できない状態で、公開するものをその都度設定する、という逆の発想なのだ。セキュリティを考えるとこちらの方が望ましいのだろう。
  • O/Rマッパーやフォームの自動生成
これは本当に便利だ。これまでゴリゴリ自分でDBのラッパを書いていた作業がなくなるのは本当にうれしいし、これはフォームの値のValidationについても同様だ。特に1.0で導入されたFileUploadは秀逸。
  • settings.pyのフルパス記述の強要
settings.pyのMEDIA_ROOTやTEMPLATE_DIRといったディレクトリを書く項目は、必ずフルパスが要求される。これまでは、動作させるサーバに依存しないためにWebアプリケーションは相対パスで書くようにしていたので、最初は少し戸惑った。しかし、この場合でも毎回settingsの値を参照するようにして、別のサーバ機に移行したときにはsettings.pyを編集すればよい、という点ではまったく同じだ。また、何かフォルダ定数ができるたびにsettings.pyに保存しておく癖をつければ、「とりあえずハードコーディングであとでiniファイルに落とせばいいや」で結局そのまま、という悪癖をなくすこともできる(まあ、これまでは自分の意思が弱かっただけ、といううわさもあるが)。

しかし、自分はアップロードした画像をファイルとして保存して扱うアプリケーションを書くことが多いので、ロジック中でMEDIA_ROOTを使い、Viewへ渡すときにMEDIA_URLベースに変更という作業が毎回発生して少しウザイ。

また、MEDIA_ROOT内の特定のフォルダを相対パスで指定してglobでトラバースした結果が空になるという動作には、本当にまいった(MEDIA_ROOTを使って絶対パスを使用すれば問題ない)。これで5時間ハマった。
まあ、これは画像もModel化してDBへ保存しろという神の思し召しかもしれない。

いろいろ書いたが、Django固有のAPIさえ頭に入れれば、快適快適。もう少し早く使い始めたかったと後悔しているくらいだ。

Saturday, January 31, 2009

SQLite管理ソフトウエア

最近でSQLiteをよく使うのだが、扱うデータやテーブルが増えてきたのでGUIの管理ソフトウエアを使いたくなった。ググッて見つけたのがPupSQLite。なかなか使いやすい。
とはいえ、最初の一つで決めてしまうと比較ができないので、sqlite-managerも試してみるか。FirefoxのAdd-onとして動くというのが面白い。

こういったソフトウエアにはお世話になりっぱなしで、作者たちには本当に感謝している。

Saturday, January 24, 2009

Firefoxのフォームのフォントが汚い件について

ブラウザとしてFirefoxを常用しているが、以前からオプションのフォントをいくら変更してもフォームのフォントが汚いのが気になっていた。色々調べたところ、StylishというAdd-onをインストールし、以下のエントリを追加すれば良いことがわかった。

input, select, optgroup {font-family:sans-serif;}

これでまた使い勝手が良くなった。