7月22日の午前中に皆既日食を国内で観測することができる。私が住む船橋では70%ほど欠けるとのこと。思ったより欠けるようなので写真撮影にトライしてみようと思う。ということで、機材、構成を悶々と考えてみた。相手が太陽なので、強烈な可視光だけでなく赤外というか熱との勝負でもある。あと紫外線。

 まず可視光。Wikipediaによると、太陽は月よりも14.1等級明るいとのこと。1等級違うと100の0.2乗違うので、太陽は月よりも100の2.82乗等級すなわち436515倍明るい。これは18.7EVに相当する。月を撮影の露出からざっと19段露出を落とさなければならない。これは大変だ。ND400という色を変えないで光を1/400に減光するというフィルタが手に入りにくいようなので、次に濃いフィルタであるND-8を使うと、6枚は必要だ。あとは月を撮影してみて、適正露出を見つければ、それを基準に太陽光での露出をおおよそ推定することができる。ここまでは可視光の話。

 次に赤外線。職場で赤外線にNDフィルタを使っているが、赤外にND-8を使っても光量は1/8になってくれない。浜ホトの資料によるとガラス(Si)の赤外線の透過率は50%程度のようなので、NDフィルタの基板がガラスだとすると、6枚重ねで1.6%にまで落ちる。

 ただ受光素子にはレンズで集光された光が結像する。レンズ径を50mm、受光素子に結像するスポット径を1mmとすると、レンズを通す前の太陽光の625倍の光がそのスポットに当たる。NDフィルタ6枚重ねを考慮しても10倍の光に相当する。これは危険だ。フレーミングと撮影をするときだけレンズを太陽に曝し、それ以外はレンズキャップか覆いを被せなければ、受光素子やフィルムが熱で損傷をうける可能性が高い。もしかすると発火するかもしれない。一眼レフの場合、レフ板でファインダーにレンズを透過した赤外線も導かれるので、フィルターをしているとはいえ、フレーミングの時間も最小限にするべきだ。さもないと人間の受光素子すなわち網膜が焼ける可能性がある。

 最後に紫外線だが、紫外線はガラスの透過率は低いため、ND-8フィルタの6枚重ねで大部分がカットされる。浜ホトの資料によると真空紫外で透過率が50%程度なので受光素子に到達する紫外線は赤外線同様の議論になる。もう少し波長が長いほうは、UVカットフィルタが効くだろう。

 ポイントはフィルタの6枚重ねのようだ。おそらくND-400の2枚重ねではここまで紫外、赤外をカットできないはずだ。ちなみにプロはD4というND-10000フィルタ相当のフィルタを使とのことだ。これは金属基板なので赤外の透過率は低い。こっちのほうが安全で確実だ。でも高い。実はND-8フィルタ6枚と値段はあまり変わらなかったりするが。さらに太陽光撮影のときは、できるだけ長焦点レンズを使って受光素子に結像する面積を広くするべきだろう。

 言うまでもなくこの記事には計算間違いや勘違い、見落としがある可能性がある。私を含め素人の太陽光の直接撮影は非常に危険な行為である。はっきり言って、この程度のことが理解できなければ太陽の撮影はやらないほうが良いと思う。おそらくフィルムが発火するか、受光素子が焼けるか、最悪失明するだろう。この記事を真に受けてカメラを壊したり、失明しても私は責任をとらない。ってかとれないので、あしからず。

 写真は後日。

2009-06-26追記
 どうやらkenkoND-400フィルタを販売するようだ。なのでND-400を2枚使えば、ND-8を6枚重ねにする必要はなくなった。だが赤外線のガラスの吸収が減るので、長焦点で撮る、レンズに直射日光が入る時間とファインダを覗くを極力短くすることは変わらない。紫外線はUVフィルタを入れることで対応する。

PHOTO: Sub Console

 昨日、今日と連続で終夜運転の夜シフトだった。私が若手で一番機動力があるので仕方がないが。昼間10時間睡眠をかましたにもかかわらず、眠かった。

 今日は東京エリアDebian勉強会に参加する予定だったが、今日仕事でミスを犯してしまい、そのツケを払わざる得なくなり参加中止....orz

 昨日 argv.org にある私のWeb Pageを整理していたら、昔書いた日記のようなものが出てきた。2003年の日付がある。例によって3日も続いていないが、そのころの文章の方が今よりも面白いのが悲しい。

 このblogのblogサーバプログラムを更新した。おそらく見た目にはなにも変わっていないはず。運用している私にも何が変わったかわからないくらいだ。問題があったら知らせてください。

MacBookPro 購入

| | Comments (0) | TrackBacks (0)

 先週の日曜日に 13 inch MacBookPro を購入。いままで持っていたMacBook(白)は下取りに出す。ヨドバシのmac売り場では、最大20,000円で買い取り的な記述があったので、10000円で売れれば御の字と思っていたら33,000円で売れた。 せっかくなので、Adobe LightRoom ver. 2も購入。

 アルミ一体整形になったせいか重量が軽い。メモリも4GByte載っているので動作も軽い。Leopardのスタックも良い感じだし、タッチパッドに右クリックが導入されたのも心地よい。

 私は普通laptopを買うときは、それまで持っていたlaptopが壊れていかんともし難くなってから購入していたが、今回はまだ普通に使えるのに購入した。なぜならGPUで遊びたかったからだ。Snow LeopardからOpenCVがサポートということなので、今のうちからCUDAで遊んでおこうという魂胆。さらにiPod touchのアプリも作れるようになる。あとGoogle Developer DayでAndroid開発用の携帯電話をもらったので、Androidでも遊べるか。まぁ最近忙しいので遊んでいる時間があるのかという問題はあるが。

 そういえば、Adobeの人がPhotoshopで普通のぽっちゃりした女の子の写真をアイドルちっくにレタッチするというデモをやっていた。ひずみをいれて、目を大きくしたり、あごのラインを細くしたり、ぼかしを入れて肌をきれいにしたり....なんか笑ってしまった。

 Snow Leopardから64bit OSになるみたいなことをWWDCの基調講演で言っていたのでLightRoomがSnow Leopardになっても動くようサポートがあるかと聞いたら、動くよと言われた。まぁ64bit版をダウンロードしろと言われるのかと思って調べてみると、Leopardでもちゃんと64bitで動いている。Leopardって64bit OSだったのね。すばらしい。

 前回の記事haveの指摘に従い、参照渡しをやめてヴェクタを返す関数にしてみた。

std::vector<string> 
slice(const std::string source, const std::string dem)
{
  std::string::size_type i1 = 0;
  std::string::size_type i2 = source.find(dem);
  std::vector<string> retval;

  if(std::string::npos == i2)
    return retval;

  std::string s = source + dem;

  do{
    retval.push_back(s.substr(i1, i2-i1));
    i1 = i2+1;
  }while(std::string::npos != (i2 = s.find(dem, i1)));

  return retval;
}

 ちょっと効率は落ちたが、Atomicになったので前回のコードにくらべ、マルチスレッドプログラミングで安全に使えるようになった。

Thanks! nice comment > Have

C++を書いていて、JavaのSttringTokenizerのようなことをやりたいことがある。C++標準ライブラリだけで書いてみた。

void slice(const std::string source, 
	   const std::string dem, 
	   std::vector<std::string> *retval)
{
  std::string::size_type i1 = 0;
  std::string::size_type i2 = source.find(dem);

  if(std::string::npos == i2)
    return;

  std::string s = source + dem;

  do{
    retval->push_back(s.substr(i1, i2-i1));
    i1 = i2+1;
  }while(std::string::npos != (i2 = s.find(dem, i1)));
}

 この関数は、sourceで指定した文字列をdemで指定した文字で切り分けて、切り分けた結果をretvalで指定したヴェクタに格納ものである。テストしてみると。


using namespace std;

int main(void)
{
  string source = 
    "DCV_,___,___,-00.0073E-3,DCV_,___,___,+00.000E-3,6247865";

  vector<string> vec;
  vec.clear();

  slice(source, ",", &vec);
  if(vec.empty()){
    cout<< "not found"<< endl;
    return -1;
  }

  cout<< vec[3]<< " "<< vec[7]<< endl;
  return 0;
}


$ ./a.out
-00.0073E-3 +00.000E-3

 ちゃんと値は切り出せている。listに結果を格納するようにすれば、もっとStringTokenizerっぽくなるかな。

 愛用のカメラが壊れて、後継機を購入したことを先日書いた。今日、カメラに入っている写真を取り出そうと電源を入れたら直っていた。正確にいうと症状が出なくなった。なぜ?もう新しいの買っちゃったのに...orz

 ということで、ちゃんとフォーカスが合うカメラになりました。欲しい人、かつ使ってくれるにあげます。RICOH GR Digital、800万画素、レンズはF2.8/28mm単焦点、バッテリ、充電器付き。SDカードはなし。箱、取説付き、外装キズ有。欲しい人は私に連絡するか、コメント欄にどうぞ。

2009-06-14 追記
里親は決まりました。

久しぶりScheme

| | TrackBacks (1)
PHOTO: On Lisp Cover

 久しぶりにschemeでコードを書いてみた。実用のコードでは初かな。処理系はGaucheで、標準入力から数値を入力して標準偏差を計算するコード。

(define (ave-list lst)
  (/ (fold + 0 lst) (length lst)))

(define (var lst)
  (let ((ave (ave-list lst)))
    (/ (fold + 0 
	     (map (lambda (x) (* x x)) 
		  (map (lambda (x) (- x ave)) lst)))
       (length lst))))

(define (sd lst)
  (sqrt (var lst)))

(display (sd 
	  (map string->number (port->string-list 
			       (current-input-port)))))

リストを修正するコードの連鎖と高階関数。この感覚がLISPっぽい。

 新しいカメラは届きました。

2009-06-06 追記
 はぁ?LET?とか言われそうなので(誰に?)、LETなしバージョンは、sdをこうすれば良い。


(define (var lst)
  ((lambda (ave)
    (/ (fold + 0
	     (map (lambda (x) (expt x 2))
		  (map (lambda (x) (- x ave)) lst)))
       (length lst)))
   (ave-list lst)))

もう誰もついてきてないか....
あと写真を追加しました。

HTML5雑感

| | TrackBacks (0)
PHOTO: HTML5 Spec Draft

最近のGoogle coding blogの記事を見ると、GoogleはHTML5への積極的な対応をしている。ChromeもHTML5を徐々にサポートしつつある。W3CがWHATWGに尻を叩かれて、HTML5の議論を本格的に始めたし、これから着々とHTML5の仕様が決まり、対応が進むのかな。

せっかくなのでW3CのHTML5のTechnical Reportをざっと見てみた。 いままで独立した仕様だったDOMがHTMLの一部として定義されているところから、HTML4に「振る舞い」を加えたものになっているようだ。

 HTML5対応のブラウザが普及するまでに時間はもう少しかかるだろうが、おそらくAjaxをはじめとするWebアプリケーションの時代が来るのだろう。一般的なアプリケーションのロジックとデータはネットワークの向こう又はLANの中のサーバにあり、ブラウザがJavaScriptインタープリターとしてユーザーインターフェースを担当する。シンクライアントの時代に。

そうなると、例えば家庭に1台マルチコアのCPUを持つHome Serverがあり、家族はブラウザが動く程度の小さな端末でサーバに入っているアプリケーションをみんなで使うことになる。大半の人のPCの用途であるWeb、Mail、文書作成、閲覧、表計算くらいであればすでに実用化されている。もちろん小さな端末といっても、ディスプレイは大きくてもいいし、iPod touchをB5サイズにしたようなタッチパネルの端末でもいい。ただそうなると、数値計算でつかうような高速な計算機は、スケールメリットを失うので非常に高くなるなぁ。

 HTML5が普及するにつれて、PCの利用に関してパラダイムシフトが徐々に起こるだろう。だがおそらくこれは企業から先に普及する。一般の人はケータイで満足しているから。とはいえ企業がこのパラダイムシフトに対応できるかどうか、これはまた別の話か。

 言うまでもないが、HTML5の仕様がこのまま固まったとしても、目論見通り普及するとは限らないし、私が頓珍漢な認識しか持っていない可能性もある。鵜呑みにして騒いでも私は責任を一切とらない(ってか、とれない)のでそのつもりで。

 写真はカメラが届いてから。

2009-06-06 追記
写真を追加しました。

カメラが壊れた

| | TrackBacks (1)
PHOTO: Schematic

 不覚にもカメラを壊してしまった。壊したのはRicoh GR Digital。ズームなし、手ぶれ補正なしというとても21世紀のカメラとは思えない代物だったが、なんだかんだ一番アクティブにつかっていた。このblogに載せた写真のほとんどはこのカメラで撮ったものだ。まぁ1年くらい前からときどき動きがおかしかったし、おかしくなった原因も心当たりがある。症状は、フォーカスが合わなくなったことだけ。補償光学系を入れればなんとかフォーカスが合う。

 修理に出すか迷ったが、amazonで後継機が33,000円くらいだったので、ぽちり。来週のWWDCで新Macbookの発表があると踏んで、Macbookを買う気満々だったのに....この出費は痛い。ひと月延期だなぁ。とはいえGRD IIが3万円台で買えるとは。これで商売になるのか? >Ricoh

 フォーカスは合わないは外装に傷があるわで散々なモノだが、修理に出せば普通に使えるようになるのは確実なので、自分で修理に出して、使ってくれる人がいればあげます。欲しい人は私に連絡するか、コメント欄にどうぞ。

2009-06-06 追記
 写真を追加。この写真は、壊れたカメラに補償光学系を付けて撮った回路図の写真。端が落ちてなかなかいい感じ。この日壊した電源の回路図。ちなみに後日、壊れた原因は私のせいでなく、メーカーの半田づけ不良であったことが判明。

 豚インフルエンザをA型インフルエンザと呼ぶ事が決まったらしい。豚肉製品への風評被害への対応という。豚肉を食べたらインフルエンザがどうのこうの言う人は、火を通せば大丈夫なので。豚肉を生で食べる文化は日本人には稀だろう。そのような文化を持っている人はしばらくあきらめましょう。

 疫学的には、A型インフルエンザが流行すると他のA型インフルエンザは流行できないという。 これが本当ならば成田空港でひっかかるA型インフルエンザ感染者が香港型ソ連型であるかぎり豚インフルエンザは流行していないということになる。

 パンデミック警戒フェーズが3から5に短期間で上がった事に騒いでいたようだが、フェーズ5までは明確な基準がある。例えばフェーズ5は、「二カ国以上で人から人への感染の証拠がある」という状態だ。ただし6は別だ。フェーズ6は大流行を宣言するもので、明確な基準は無い。WHOはおそらく、新たなA型インフルエンザの感染者が香港型、ソ連型の感染者ではなく、豚インフルエンザだけになった時にフェーズ6に上げるだろう。

 日本では梅雨が来るまでインフルエンザの流入を阻止すればひとまずは勝ちだ。冬になるとまた危機が訪れるのでそれまでにワクチンが開発されていれば完全勝利。そうでなければヤバい。これから冬になる南半球でどうなるか。これで色々決まるだろう。今の所流入は防げていることになっているが、断じて油断してはならない。梅雨が来るまでは。そして冬が来てからは。