2012年 10月 06日

TAMRON 大口径標準ズームレンズ SP 24-70mm F2.8 Di VC USD キヤノン用 フルサイズ対応 A007E - タムロン(TAMRON)

タムロン(TAMRON)

3.0 / 5.0

TAMRON SP24-70mm F2.8 Di VC USD (A700) を買った。純正 24-70mm を買おうと思っていたけど、値段 (ほぼ倍) の割に画質面で飛び抜けていいという話も聞かないし、手ぶれ補正もないので、TAMRON 製に手を出した。

手ぶれ補正は、4段だと ISO1600 必要だったのが ISO100 にできるぐらいのインパクトがあるので、多少レンズが大きくなっても欲しい機能だと思う。とはいえ TAMRON のこれは思いのほか大きくない。

これでようやく、大体の画角で撮影できるようになった。広角側でしっくりくる画角を探したら、良さげな単焦点のを買おうと思う。

関連エントリー (画像)

2012年 10月 05日

関連エントリー (画像)

ひだまりスケッチ×ハニカム

まさかの4期で期待が膨らみまくっていたけれども、特に何も裏切られず、1話からとても良かった。ひだまりスケッチの良さがどこにあるのか、うまく言葉にすることができないが、奇跡的なバランスで成り立っている素晴しい作品であると思う。

おそらく人によって違うであろう心の溝に、それぞれうまくカチりと当て嵌るような感覚を覚える。

1話終わり、エンディングで夢から覚めて朝になるような、いつまでも夢が続けばいいと思うがそうもいかない、ああいい夢だった、けれど今日は生きていかなければならないと、なんとなく悲しい思いを残して終わるのが、1期から変化せずあるように思う。

2012年 10月 04日

関連エントリー (画像)

gerry++

2012年 10月 03日

関連エントリー (画像)

micro-template.js について

LTソンでちょっと喋れたのはいいけど、ちょっと説明不足の部分があって、あーと思ったので書き残しておきたいと思います。

これは John Resig 氏が 2008 年 (!) に書いたテンプレートと互換性を持つテンプレートエンジンで、以下のような特徴があります。

  • 既存の John Resig 氏の tmpl() を置き換えて使用することが可能
  • 実行時エラーが発生した場合に、エラーが発生した行数を表示可能
  • source map に対応していれば、syntax エラーも行数を表示可能
  • 割と早い
  • デフォルトでHTMLエスケープ

そもそもの動機としては「エラーメッセージちゃんと出したい」というもので、なんとなく「無理矢理こうしたらうまくいきそう」というアイデアを実装してみた、というものを元に少々の改良を加えたものになっています。

with() 最適化

John Resig 氏の tmpl() に互換にするためには、with() で変数を展開するというのが不可欠になってきます。パフォーマンス的には with() を使わずに

  1. あらかじめテンプレートで使う変数名を列挙
  2. 特定のオブジェクトに全ての変数をプロパティとしてセット

などしたほうがいいのですが、互換を目指す以上 (あるいは使い勝手という意味で) with() で変数を展開するというのははずせませんでした。

しかし with() のパフォーマンス劣化は非常に有名なほど著しいものなので、できれば十分高速にしたいと思い、既知の変数に関しては this を経由してアクセスするというクソハックをしています。

どういうことかというと、出力する文字列のバッファには this.ret、行番号に関しては this.line というプロパティをローカル変数の変わりに使うようにします。this は変数ではなく、特定の値を参照するキーワードであるため、with によるスコープチェインへの割り込みの影響をうけません。

これにより、既知の変数については with() の影響をうけなくなるため高速化されます。

特殊タグの置き換え

コンパイルタイムの短縮のため、正規表現で一括置換という構造を変えたくなかったため、<% %> というタグを \x11 (XON) \x13 (XOFF) というコントロールキャラクタ1文字に置換してから処理をしています。1文字にすることで正規表現で否定表現が書きやすくなって便利です。\x11 と \x13 が使えなくなりますが、まず使わないので気にしないことにしています。

速度厨用あるいはベンチマーク用

with() を多少高速化したといっても、既知ではない変数参照はあいかわらず遅いので、一応 with() を使わないようにもできるようになっています。

template.variable = 's';

などと指定すると、with() が無効になり、s に全部の変数が入ってくるようになり s.foobar という形でアクセスするようになります。この場合 with() による速度悪化がなくなるので、だいたいこれ以上早くならないだろ、ぐらいまで早くなると思います。

JavaScript で視力検査で使われるアレを描く (ランドルト環)

http://cho45.stfuawsc.com/landolt/landolt.html

最近、写真とプリントについて考えていると、どうも人間の視力というのをよく知る必要があるようだ、ということに気付いたので、ひとまずランドルト環を描くことにしました。

たぶん同じようなのはいくらでもあると思うのですが勉強がてらという感じです。結構楽しいです。type="range" を使ってるのでモダンな HTML5 ブラウザでしか動かないです。特筆するようなことはなく、定義に従って描いただけという感じです。ただ、日本で一般的な 5m の距離で 1.5mm を識別できる、というやつではなく、国際標準の1分 (1/60度) を識別できる、という定義でやってます (違うとはいえほぼ同じです)

なんか間違ってる可能性は大いにあるので信頼できるものではないです。(教えてください)

使いかたは (説明するまでもない感じですが)

  • 2cm のスケールが書いてあるので、財布から1円玉 (直径が 2cm) を取り出して画面にあてつつ、「スケール調整」と書かれたやつを左右に動かします
  • 測定距離を適度に設定して (普通は 3m か 5m)、準備完了です

バグ

  • 測定距離を測る良い方法がないので、画面から自分までの距離は別途メジャーが必要
  • 必然的にコンピュータから離れることになるので、スクロールができず不便

gerry++