2010年03月10日

ビット列の取り扱い

 Expression Templete 大好き人間としては見逃せないエントリがあったので紹介。
 あまのりょーさんのツィートから。

ビットをもっと自由自在に扱えるようにしてみた。

 このエントリの前のエントリで「え、std::vector<bool>と何が違うの?」って思ったら、全然違った。operator,() を定義して


unsigned int make_rgb555(unsigned int r, unsigned int g, unsigned int b)
{
    const Unsigned<5> r5(r);
    const Unsigned<5> g5(g);
    const Unsigned<5> b5(b);

    return (r5, g5, b5);
}

とか


(a, reserve<2>, b) = 0x77; // a => 3, 途中2ビットは捨てられる, b => 3

 なんてのが出来るようになっているのが変態w

 嘘ですごめんなさい。正直その発想が一種の発明を見たようで嫉妬しました。
 これって pair とかにも応用出来るかな。ちょっと世界が開けたかも。

 ただ普段は左辺に複数の変数を持ってこられるべきだと考えている人間だけれども、これやっちゃうと C++ の文法から逸脱しちゃうからなあ。実用しちゃっていいのかどうか判断に苦しむ。
 かといって、昔は「マクロでトリッキーな事をしたら読みにくくなるから駄目」なんて言われていて「そんなことなくね?」って思っていたのに、案の定 boost なんて変態マクロが公然と使われていて、しかもそれが素晴らしいとか人気を博しているから世の中いい加減。

 ET も変態マクロもデバッグの効率を下げる事が多いから、良くないというのも分かるけどね。

2010年03月02日

言ってる側から(Power eSATAの続き)

多和田新也のニューアイテム診断室 統合チップセット上位モデルが世代交代「AMD 890GX」

 着々と PCI Express 2.0 / USB 3.0 / SATA 6Gbps な環境が整いつつあるなあ。

 玄人志向 USBeSATA-EC34 は Amazon で在庫が切れているみたいだからキャンセルしてもう少し待とうか、でも去年から AVX 登場まで待つと決めているからあと 1 年ちょいはパソコンを買い替える予定は無いんだよなあ。

Power eSATA

 Let's note CF-R6 のメモリと Intel X25-M が欲しかったんだけど、今まで高いと思っていたので手を出していなかった。
 CF-R6 のメモリは SO-DIMM ではなくて Micro-DIMM というマイナーな規格。
 Intel X25-M は言わずと知れた、高性能だけど高い SSD。安物とは違うのだよ安物とは。

 今日もいつものようにインターネットの海で溺れていたら、玄人志向 USBeSATA-EC34っていう商品を見つけた。

 USB と FireWire 400 は約 400 Mbps、FireWire 800 は 800 Mbps だけど HDD ケースが軽く 1 万円以上する。USB 3.0 も FireWire 800 の上位規格も Gbps の世界だけどまだ普及していない。
 今どきの HDD/SSD は SATA で繋がっていて、1.5 Gbps から 6 Gbps を必要とするからこれでは足りない。
 で、内蔵の為の規格である SATA を USB みたいに外に引き出したのが eSATA。こいつは既に製品が沢山出ているけれど、信号線だけで USB や FireWIre みたいな電力を持っていないので今ひとつ盛り上がっていない。正直、電力をもたせなかったのは失敗だと思う。

 今日見つけたこの玄人志向 USBeSATA-EC34は、Power eSATA とかいう勝手な拡張で、中心が eSATA で外側を USB の殻で包んである。eSATA のコネクタが小さいから出来る離れ業。調べてみたところ、何社か Power eSATA の商品を出している。しかも USB と eSATA という普及している規格をくっつけただけなので FireWire 800 と違って安い。
 これを MacBook Pro に付けたら幸せじゃね?と思ってせっかくなので SSD の価格も調べてみたら、Intel X25-M も 80 GB なら23,000 円。うん、手が出せる。
 ただ 80 GB じゃあメインマシンである MacBook Pro には少ないから、Let's note に入れようかな、それならメモリも調べてみようかな、あ、3,000 円で買えるじゃん!

 ということで、この 3 つとも購入。

 Power eSATA のケースはマーケットプレースのみで販売者が Amazon ではなかった。マーケットプレースはクレジットカード払いなので断念。後日ソフマップで買ってこよう。

 届くまでは数日かかるけど、これが Let's note で快適なら Mac 用に 160 GB も買っちゃおうかと。

2010年02月15日

Look In My PC

 「PC の詳細情報をレポートにして出力してくれる無料ツール「Look In My PC」」より。

 PCの動作環境をレポートしてくれるツール。
 使ってないけど便利そう。
http://www.lookinmypc.com

 俺はもっぱら OS に付属の systeminfo.exe を使ってます。でも Look In My PC の方がサービス、スタートアップ、プリンタとかありがちな聞きたい情報を出してくれて、トラブル対応には向いていそう。

2010年02月12日

MacでVim

 「Macのエディタ事情」を書いてから、LETTER 君に MacVim を教えてもらった。ただこいつは時折暴走していたので、Text Wrangler や、こんなアップルスクリプトを書いて Terminal の vim と併用していた。

 Terminal じゃなくて iTerm ならこんな感じ。

※この無理矢理1行に収めている所がやっつけ流暢でしょ?

 しかし今回、yu++ さんに MacVim-Kaoriya を教えてもらったのでしばらく使ってみようと思う。

2010年02月09日

PSPSDK on Mac OS X 10.6

 Mac OS X 10.6 Snow Leopard で PSPSDK をビルドする為の備忘録。
 こちらの記事を参考にしました。

 まず下記のコマンドを実行します。

 port では 32 ビット版が必要とかなると怖いので、闇雲に+universalしてます。

 次に scripts/005-gcc-4.3.2-stage2.sh をエディタで開いて、以下のように追加して下さい。

追加前:


 ## Enter the source directory and patch the source code.
 cd gcc-4.3.2
 patch -p1 < ../../patches/gcc-4.3.2-PSP.patch

追加後:


 ## Enter the source directory and patch the source code.
 cd gcc-4.3.2
 patch -p1 < ../../patches/gcc-4.3.2-PSP.patch

 cp gcc/cp/Make-lang.in gcc/cp/Make-lang.in.orig
 sed -e "s/tree-inline.o//" gcc/cp/Make-lang.in.orig > gcc/cp/Make-lang.in

 次に scripts/007-gdb-6.8.sh を開いて以下のように追加して下さい。

追加前:


 ## Enter the source directory and patch the source code.
 cd gdb-6.8
 patch -p1 < ../../patches/gdb-6.8-PSP.patch

追加後:


 ## Enter the source directory and patch the source code.
 cd gdb-6.8
 patch -p1 < ../../patches/gdb-6.8-PSP.patch

 cp sim/mips/interp.c sim/mips/interp.c.orig
 sed -e "s/#include \"sysdep.h\"//" sim/mips/interp.c.orig > sim/mips/interp.c

 準備ができたらいよいよビルドします。


$ export C_INCLUDE_PATH="/opt/local/include" 
$ export CPLUS_INCLUDE_PATH="/opt/local/include" 
$ export LIBRARY_PATH="/opt/local/lib" 
$ ./toolchain.sh

2010年01月19日

vimで矩形タイプ

 今までvimでCtrl+Vで矩形選択してキー入力する方法が分からない。
 諸悪の根源は何故かiを受け付けてくれない事。
 ググってもcくらいしか見つからなかったんだけど、今日vim使いに聞いてみたらI (Shift+i)でいいらしい。

 なんとIは行頭じゃなくてセレクションの頭って意味になるのか!
 これは便利。サクラエディタの使い勝手に一段と近づいた。
 大切な事なのでもう一度言うけれど、諸悪の根源はiを受け付けてくれない事。vimの設計が悪い。

 それにしても、長年使っていて今更知ったよ。
 基本的にマニュアル読まないからなあ。