Today アクセスカウンター Yesterday アクセスカウンター

オークリー プルトナイト

新しい眼鏡を、近所のラクセーヌ 2 階の正眼堂で作ったのだが、
これが非常に良い。

眼鏡が届いてから、「オークリー」という ブランドと「プルトナイト」
について調べたみたのだが、プルトナイトは特許があるため、
オークリー純正のフレームで作ることになったのだなと気付いた。
(遅い)
眼鏡屋では、私が深く聞かなかったのもいけないのだが、
「ここの区画のフレームの中ならば、このレンズで作れます」
としか説明されなかったのである。

私はもともと非常に目が悪いので、レンズが高い。
(そもそも一年中かけっぱなしの眼鏡に金をケチっても
しかたがないと思っている。)
1 年ほど前に作った眼鏡も、元値はトータルで 7 万円以上した
のだが、セール対象品だったために半額ほどで済んだわけである。
今回はセール除外品だったので、トータル 7 万円弱だったのだが、
安い買い物だったと思う。
(ほぼ、フレームがオークリー純正だったぶんである。レンズ
自体の値段はそれまでのものとほとんど変わらなかった。)

もともと目が弱く、極度の近視による影響か、正常眼圧緑内障
の疑いが非常に濃厚な身 (生まれつきの視神経乳頭陥凹
なのか、病気の進行によるものなのかは、数年に渡って経過を
見なければ断定はできない。) である。
目にはいくら気を使っても使いすぎるということは無いだろう。

仕事柄、PC のディスプレイを長時間、一日中見ているわけ
なのだが、最近特に目の疲労が酷く、一時は夕方ぐらいに
なると酷い頭痛と眼痛に悩まされ、仕事に深刻な
支障をきたすほどであった。

また、夕方ごろにウォーキング (最近は徐々にランニングに
シフトしているのだが) に出かけた時など、西日や車のライト
などが非常に嫌だったのである。
おそらく目が疲労している時、偏光が強い刺激となるのだろう。
(また、夕刻は特に紫外線が強い時間帯でもある。)
同じ理由で、デュアルディスプレイの使ってない方も、
目の疲労が激しい時は消していた。とにかく偏光が
強いストレスとなるのだろう。

そもそも瞳孔の調節機能自体が弱っていたのだろうか、光自体が
辛かった。会社のブースの照明も半分しか点けないで、
(全部消したかったのだが、それだと不在と誤解される恐れがある。)
ディスプレイの輝度も最低にして、なんとか仕事ができるような
状態であった。家に帰ってきても、テレビや照明がまぶしいので、
電気も付けずに、激しい疲労のため 10 時半には
寝ないと辛かったほどである。

このような悩みが、偏光レンズにより全て解決した。
大変素晴らしいものである。全ての同じ目の悩みをもつ人に
偏光レンズをおすすめしたい。

眼鏡屋の人に上記したような悩みを相談したところ、
最上級の偏光レンズとして、タイトルにもあるオークリーの
プルトナイトを勧められたので、そのレンズで作った。
PC のディスプレイから出る、網膜に有害な青色光を
カットする素材を用いたレンズなのだそうだ。

また、さらに度数を 1 つ落としている。(1 年前に作った眼鏡も、
もう遠くの黒板の字を見たりする機会が無く、一日中
デスクワークなので、学生時代よりも度数を 2 つ
落としたのだが。)

完全に PC 作業に特化した仕様になっている。

いわゆる象が踏んでも壊れない筆箱と同じ素材、超高純度の
ポリカーボネイトを使用しているそうだ。ショットガンの弾も貫通
しないそうだが、日本に住んでいる限りあまり関係ないだろう。
むしろ化学薬品、特にアルカリに弱いそうなので、
レモン汁等には注意が必要とのこと。
サウナなどの高温高湿度も厳禁だそうだ。
(通常のプラスチックレンズほど融通がきかないので、形状や度数の
レンジも制限されるそうだ。私が作れたのだから、ほとんどの人は
大丈夫だと思うが。)

他の偏光レンズを使用したことが無いので違いはわからない
のだが、とにかく劇的に目が楽になった。
今までの疲労感が嘘のように、夜になっても全く目が疲れなく
なり、頭痛も無くなった。もっと早く知っておけばという感じである。
あまりにも楽になりすぎて、最近は、朝会社にきて、ひたすら
コードを書いて、気が付いたら 21 時になっている。
それまでは、途中で目が辛くなるので、定期的に
ディスプレイから目を離して休憩しないといけなかったのだが。

というわけで偏光レンズは大変素晴らしいものなのだが、
色が入るのが唯一のネックと言える。
会社の人たちに 「かなわんな、なんか知らんおっさんがおるで」
「セコムセコム」 「どこのヤクザかと思った」 「迫力があるな」
「ミナミの帝王」「子供泣くわ」 「どう見ても本職の人か企業舎弟や」
「わかってても怖い」など散々な評判である。
関西人たちに絶好のネタを与えてしまった。
しばらくはネタにされ続けることになるかと思う。

ペルソナとベルセルク

この 2 作品には共通のモチーフがあるように感じる。
もちろん、どちらも源流ではなく、さらに遡れるのだろうと思う。
分析などという大仰なものではなく、思いついたことのラフスケッチである。
以下、ベルセルクという漫画と、プレイステーションのゲーム
女神異聞録ペルソナ、ペルソナ 2 罪 & 罰のネタバレしかない。
ちなみに 3 以降は未プレイである。

続きを読む

gasでcrtを書く

前回のコードをgas(GNU assembler)で書き直した。また、以下の点が異なる。

- gasはmasmのような高級な構文(invokeや.ifなど)を持っていないので、全てより低水準な表現で書き直されている。

ループなどをアセンブラで書くのは面倒だったので、Cで書ける部分はCで書いた。(crt.c)

- 関数の戻り値をチェックしている。
- main()に渡されるargvの型を、wchar_t *argv[]ではなく、より標準的なchar *argv[]にした。

CommandLineToArgvW()で確保された、ワイド文字列の領域を、WideCharToMultiByte()でマルチバイト文字列に変換した後のargvで破壊的に更新することが合法なのかどうかは謎なのだが、呼び出し側の責任でLocalFree()することが義務付けられているようなので、問題無いと思う。

- MinGWのgcc 3.4.5では、main()のプロローグ部分で_allocaの呼び出しが要求されるので、適当に実装。

test.c
extern void *stdout;
#define EOF (-1)

int main(int argc, char *argv[])
{
    int i;

    for (i = 0; i < argc; i++) {
        if (fputs(argv[i], stdout) == EOF) return 1;
        if (fputs("\n", stdout) == EOF) return 1;
    }
    return 0;
}

コンパイルは以下のように行う。
$ gcc -fno-builtin -c test.c
$ gcc -fno-builtin -c crt.c
$ as crt.s -o crt1.o
$ ld crt.o crt1.o test.o -lkernel32 -lshell32 --entry=mainCRTStartup

続きを読む

masmでcrtを書く

昨日のやつのcrt(C RunTime)的な部分、要するにエントリーポイントからmainを起動するまでの部分をmasmで書いてみた。main以降は全く同じなので省略する。もちろん本物のcrtとはほど遠い、最小限の初期化しかしていない。

ビルドにはVisualStudioが必要である。(無償のExpress Editionで十分。)VC++2008のコマンドプロンプトを起動し、以下のようにする。
>ml /c crt.asm
>cl /c main.c # 任意のCプログラム
>link /subsystem:console /NODEFAULTLIB main.obj crt.obj kernel32.lib shell32.lib

masmはVC++のアセンブラなのだが、ローカル変数も使えるし、制御構造もあるし、invokeで関数と同様にサブルーチンが呼べる。アセンブラというか、ほとんどCと同じである。

putsなど、出力がコンソールと決まっているルーチンについては、WriteConsoleW()などを使った方が良いのかもしれない。あと、argvがchar*[]ではなく、wchar_t*[]だといろいろ不都合なので、ここらへんもなんとかしたいところ。

ちなみに32bit環境のWindows XPでしか動作確認はしていない。

続きを読む

MinGW/VC++でlibcを使わずにプログラムを書く

少し前から趣味でCコンパイラを作っているのだが、
libcをどうしたものかと少々難儀した。

私が作っているのはpre K&Rという非常に初期のC
を処理するコンパイラなのだが、おおよそ近代的な
機能は何一つ備えていない。プリプロセッサもdefineと
includeしか無い。defineも、マクロ引数すら無い。
当然ifdefの類も無く、現代のCで書かれたヘッダや
プログラムは一切読めない。全て自前で書くしかない。

そもそもlibcという概念すら無い時代のCなので、
フルセットのlibcまではいらない。当時はiolibと
呼ばれていたように、最小限のI/Oライブラリや
ユーティリティ関数を提供する程度で良い。
これならばなんとかなるとは思う。

とりあえず、MinGW/VC++で、それぞれのコンパイラに付属のlibc
を捨て、完全に自前のlibcと差し替えたい。つまり、依存
ライブラリを、OSのAPIのみにしたいのである。

MinGWの方は-nostdlibと-nodefaultlibsを、VC++の方は
/NODEFAULTLIBをリンカオプションに付ければ良さそうだ。
しかし困ったことに、CコンパイラとOSは深く結びついてしまっている
ために、自前でstartupルーチンまで書かないといけなくなる。

とりあえずWin32APIのみで、mainが起動するところまでを書いてみた。
当たり前の話だが、windows.hを捨てるだけではなく、コンパイラが
stdcallをサポートしなければ、Win32APIを呼び出すことはできない。
完全なブートストラップはコンパイラ部分のみと妥協し、最下層のiolib
はMinGW/VC++それぞれでビルドし、アセンブラやリンカもそれぞれの
ものを使用するというのが現実的だと思う。将来的には、stdcallを
サポートし、binutils相当も全て自前で用意するかもしれないが、
たぶんその前に飽きるだろう。

pre K&Rの時代には、ASCIIしか存在しなかったので、Unicode(UTF16)は
要らないのだが、CommandLineToArgvA()というAPIは存在しないようだ。
とりあえず全部ワイド文字列で誤魔化している。型などもいい加減だ。

以下は、MinGWのgccと、VC++2008のコマンドラインで確認している。

続きを読む

プロフィール
  • Author:あろは (alohakun)
  • 京都のデバッガベンダーに勤めるアラサー会社員。

    本ブログの内容は,あくまでも個人的な感想や意見であり,会社の意見を代表するものでは一切ありません.

    連絡先 : alohakun ___at___ gmail.com
    mixi : http://mixi.jp/show_friend.pl?id=182927
    twitter : http://twitter.com/alohakun













    あわせて読みたい


    この日記のはてなブックマーク数


    スカウター : ホワット・ア・ワンダフル・ワールド


    Map
FC2カウンター
ブロとも申請フォーム

この人とブロともになる

最近のコメント
リンク
最近のトラックバック
人生の残り日数
日本人男性の平均寿命は 28700日.
RSSフィード
カテゴリー
  1. RSSリーダー