| @Mac/iPhone

1090_workspace.png

いまこんな感じの環境で働いてます。MacBook Proは仕事で使おうと思って買ったんだけど、結局貧乏性なのでMacBook (LATE 2006) を職場に持ち込んで使ってます。モニターはEIZOのColorEdge CG19、これにHHK Lite 2とLogicool MX-Rという組み合わせです。これがなかなか快適。

MacBookは結構液晶がダメダメになっていて、昼間とかほとんど真っ暗にしか見えないんですけど、Mini DVIでCG19に出力してるのでまじ快適です。実はCG19のこと、最初は縦横比が1:1に近くて、Windowsパソコンに付属でついてくるくそださいダメダメモニターだと思ってたんですけど、調べてみたらEIZOの製品で新品価格が20万円近くする上物でした。1280×1024の解像度はMac OS XのDockを常時表示させるのに好都合で、いまでは結構気に入ってます。縦長ディスプレイはTumblrのDashboardを眺めるのにも向いてます。さらにこのモニター、二つ入力を受け付けるのでMacBookのほかに事務作業専用のWindows機もつないであります。モニターの切り替えボタンを押すだけでMacとWindowsを切り替えられてなかなか便利です。

HHKはLiteだけどみんなが良い良いと言うだけあってやっぱ良いですね。あの打鍵感のおかげでつまらん入力作業も楽しくなります。マウスはLogicool MX-R。HHK LiteがUSB Hubの役割も果たすので無線レシーバーはHHK Liteにつけてあります。

Mini DVIケーブルとHHK Lite 2の合計7000円くらいの出費で、くたびれたMacBookが復活したような感じがしてうれしいです。やっぱ黒MacBookは名機だわ。

| @技術/プログラミング

一個前のやつ、セルフ添削してみました。

if (imgWidth > imgHeight) のところで True でも False でも同じ処理になってて無意味だったし、i を初期化してなかったし全然ダメダメですね。userAgent っていう変数名も navigator のプロパティと同じだしダメ。以下のようにしてみました。

    // fit image for iPhone
    function imgReduction() {
        var i, uA, imgHeight, imgWidth, imgRatio;
        var newWidth = 440;
        uA = navigator.userAgent;
        if (uA.match(/iPhone/)) {
            for (i = 0; i < document.images.length; i++) {
                imgHeight = document.images[i].height;
                imgWidth = document.images[i].width;
                imgRatio = imgHeight / imgWidth;
                if (imgWidth > newWidth) {
                    document.images[i].width = newWidth;
                    document.images[i].height = newWidth * imgRatio;
                }
            }
        }
    }

これを <body onload="imgReduction();"> でロードします。

さてどうでしょう?

| @技術/プログラミング

Google Readerみたく、iPhoneでアクセスしたときにJavaScriptで画像を縮小表示させるようにしてみた。当然ながら自サーバーにあるものだけでなく、Flickrとかの画像も縮小表示する。そしてこれまた当然ながら画像をリサイズするわけじゃなくてあくまで小さく表示させるだけなので、ページの読み込み速度とかは短くなったりしない。

    // fit image for iPhone
    function iPhone() {
        var userAgent, imgHeight, imgWidth, imgRatio;
        var newWidth = 440;
        userAgent = navigator.userAgent;
        if (userAgent.match(/iPhone/)) {
            for (i = 0; i < document.images.length; i++) {
                imgHeight = document.images[i].height;
                imgWidth = document.images[i].width;
                imgRatio = imgHeight / imgWidth;
                if (imgWidth > newWidth) {
                    if (imgWidth > imgHeight) {
                        document.images[i].width = newWidth;
                        document.images[i].height = newWidth * imgRatio;
                    } else {
                        document.images[i].width = newWidth;
                        document.images[i].height = newWidth * imgRatio;
                    }
                }
            }
        }
    }

関数名がアホっぽいのはご愛敬。

職場のサーバーは自分でセッティングしないと何もモジュール入ってないのでクライアントサイドで遊べるJavaScriptを気合い入れて勉強しようかな。

| @技術/プログラミング

プロフィールのページにWakoopaのフィードから拾ってきた「最近使ったアプリケーション」を表示してるんですけど、これをjQueryを使ってMac OS XのDock風の動きをするものにしてみました。

Dock風の表示

Wakoopaの提供するアイコンの解像度が低いのでマウスオーバーするとシャギーなアイコンが表示されてしまいます。またCSSは細かくいじってないのであんまし見栄えは良くないですが、一応OS XのDock風の動きをしてくれます。参考にしたのは、というかまるまるソースコードを拝借したのは以下のサイト。

これとは別なんですけど、もう一個ぶったまげたのがこれ。

HTML 5とjQueryだけで、動的に生成されるテーブルとグラフを作ってます。テーブル内の数値が編集可能で、値を編集するとちゃんとグラフも再生成されちゃう。スゲー。

こんなにインタラクティブなものがJavaScript + CSSで実現できるわけですから、「HTML 5がフツーに使われるようになったらFlash死ぬんじゃね?」なんて思ってしまいます。少なくともナビゲーションメニューをロールオーバーさせるためだけにFlashを使ったりするのは下火になりそう。Flashはもっと本格的な、「魅せるサイト」を作るために使われるようになる気がする。Flasherな方々は今後より一層の研鑽が求められるでしょうね。

| @散財

一年くらい前にLogicoolのMX-Rというマウスを買った、とブログに書きました(そろそろワイヤレスマウスについて一言いっとくか)。そのときはデザインが気持ち悪いとかレシーバーが邪魔であるとか散々な書き方をしていたのですが、いまではすっかり慣れてしまって手放せなくなっています。やっぱ多ボタンマウスは便利だわ。バッテリー内蔵式なので乾電池用意せんでもいいし。そういうわけでこいつは職場で使うことにしました。

さて、では自宅で使うマウスをどうするかということなんですが、MX-Rは一万円ちかくして高いし、やっぱUSBポートを占拠するレシーバーの出っ張りが気になるし、Bluetoothマウスで良いのはないかなー、とAmazonを徘徊していてこういうのを見つけました。

TARGUS AMB08AP

Mac専用らしいです。特徴を箇条書きにすると以下の通り。

  • BluetoothなのでMac本体にレシーバーを取り付ける必要なし
  • スクロール部は光学式なのでWireless Mighty Mouseの最大の弱点であるスクロールボールのゴミつまりと無縁
  • 5ボタン式
  • 専用のドライバーを入れるとサイド下部のボタン二個に好きな動作を割り当てられる
  • 乾電池式なので充電は面倒くさい

色はグレーっぽい感じなのでアルミiMacやUnibody MacBookにはマッチするデザインだと思います。しかし光学式のスクロール部が微妙。ズバズバっと大量にスクロールしたり、逆に高速スクロールしたいときにゆっくりしか動かなかったり、なかなか意図したとおりには動かせないです。

とはいえ、Bluetoothマウスは非常に選択肢が少なく、あとはマイクロソフト製の物くらいしかないので、アンチMSな人はこれを購入候補に加えても良いかも。値段も手頃です。

| @Mac/iPhone

MacBook Pro 15"

一昨日のジョブズ復帰イベントで新しいMacが発表されなかったので、昨日は価格.comで急激にMacが値上がりしてた。前々からそろそろMacを買い替えようと思って15inchのMacBook Proを物色してはいたんだけど、なかなか踏ん切りが付かなかった。そしたら急激に値段が上がり始めたので焦った。奇跡的にまだ安い価格で売ってるところを発見したので、いまを逃したらこの価格では買えないだろうなと思って飛びついた。

現行のMacはSnow Leopard前に発売された機種ということもあり、発売直後から買い控え対策のためすごく安い値段で売られてた。4年前に買ったPowerBook G4 17”もTigerの発売前の機種だったためかなり安く買うことができた。貧乏な人がMac買うんだったらOSの変わり目が狙い目ですな。

費用対便益で考えたら明らかにiMacの方がコストパフォーマンス良いんだけど、ついついノートを選んでしまった。iMacだと家でしか使えないですからね。確かに24inch液晶や圧倒的な低価格は魅力なんだけど、iMacは雷に弱いイメージがあるし、最近働き始めたので一日中家にいるわけでもなくなり、職場でも使えるようノートにしときました。はやいとこWindows XPのひたすらシャギーなフォントや変態的UIのExplorerにおさらばしたい!

| @技術/プログラミング

「対応した」って高らかに宣言しながら対応してなかったISBN変換プラグインですが、やっと対応させました。ISBN変換プラグイン利用者の方には随分お待たせいたしました。

なんで手こずってたかっていうとSOAPでアクセスしてたからです(元々の開発元の福耳Cafeさんで公開されたときからSOAPでリクエストしてたので)。SOAPはいろんなことが出来る反面、速度がとろいらしく、フツーの人はRESTでリクエストするみたいです。だもんであんまりネットに情報がなくて。Amazon自身もSOAPについてのドキュメントは少なめにしか用意してくれてなくて難儀しました。結局、認証情報はSaopHeaderに埋め込まなきゃいけないっていうところが理解できてなかったわけでした。

// Authentication
$xmlns_aws = 'http://security.amazonaws.com/doc/2007-01-01/';
$kidheader = new soapheader($xmlns_aws, 'AWSAccessKeyId', $this->awsaccess_key_id, false);
$tsheader = new soapheader($xmlns_aws, 'Timestamp', gmdate('Y-m-dTH:i:s'), false);
$sigheader = new soapheader($xmlns_aws, 'Signature', $signature, false);
$soapclient->__setSoapHeaders(array($kidheader, $tsheader, $sigheader));

と書き加えたことで無事動くようになりました。ダウンロードは以下から。