2011年11月30日水曜日

Bose SoundLink Wireless Mobile speaker を買おうと悩んでいたらApple TVを買っていた

BoseのSoundLink Wireless Mobile speakerが日本でも発売されると聞いて物欲指数上昇中でした。ipadではTuneIn Radio Proを、MacではRadiumを使ってjazz系のラジオを聴いているのですが、やはり内蔵のスピーカーではもの足らないので、ある程度音がよいスピーカーで聴きたいと思ったからです。このスピーカーはbluetooth対応なので実機のそばにスピーカを置かずに使えるので邪魔にならないと言うのも物欲指数上昇ポイントのひとつです。

SoundLink Wireless Mobile speaker

アメリカでの価格は$299、それに対して日本での価格は36,750円。1ドル70円代後半の時代にこの価格は高すぎるだろうと、個人輸入出来るショップを探してみるとSMARTHOMEと言うサイトが日本へ配送可能らしい。送料は$37.98で商品とあわせて$336.98となり1ドル=80円としても27,000円程度で買えることになる。

危うくポチりそうになったのだけれども結構高額なので、冷静になって既に持っているアンプとスピーカーを有効活用できないものかと調べてみました。すると"Apple TV"や"AirMac Express"を使えばairplayを使用して無線・有線経由で音声データを送れる事が出来るらしい。これだと1万円程度でワイヤレスなオーディオ環境を構築できるので、こちらに急遽変更することにしました。

airplay対応の機種は少ないながら幾つか出ていますが、サードパティ製のairplayのアンプやスピーカーなどは高いので却下w 一番安価な"Apple TV"か"AirMac Express"を選ぶことにします。

"AirMac Express"は無線ルータですが、付属機能としてairplayが使えるようです。アナログ出力もあるのでアナログアンプと接続も直接できます。しかし、無線ルータは既に持っている。発売時期が2008年と古いので、新しい製品が出ると悔しい思いをしそうな気がします。なにより、ネット上で評判をみると熱がこもりやすいので故障しやすいとの事なので、汎用性の高そうな(動画も見れるし)Apple TVの方が良さそうです。

AirMac Express

"Apple TV"の場合、出力がオプティカルのみでアナログアンプに接続するには、デジタル→アナログ変換するDCコンバータを別途買う必要があります。

Apple TV

ネット上で調べてみると同じ事を考える人がいるようで、"Apple TV"にDCコンバータをかましてアナログアンプに接続している方々がおられました。その中で評判が良かった ハイパーツールズ デジタル→アナログ音声変換器 DCT-3を選択してみます。

DCT-3

買うものは決まったので、最安値を検索して…と言っても"Apple TV"は値引きしている所がほとんどありません。2〜3日グダグダと安いところは無いかと探していると、なんとamazonのマーケットプレスで中古-新品同様のApple Tvが7,147円で出されています。出品者はwarehouse_deals_jp。なんか怪しそうだと思いつつ検索をかけてみると、アマゾンが商品を中古販売する時に使うIDらしい事がわかったので即注文w 同時にハイパーツールズのDCT-3と同等品と思われるランサーリンク DCT-3が安かったのでこちらも注文。合計して送料込みで11,127円と比較的安く買えました。

注文合計

届いたApple TVは箱の角が多少凹んでいる程度の未開封新品でしたので、お買い得だったと思います。

届いたApple TV

早速開封し、接続して使っています。そのうち感想でも書こうと思います。

開封したApple TV

2011年11月26日土曜日

回転させると機能が切り替わる多機能時計Löttorpを買って見た。

久々にIKEAに行ったら、面白そうなガジェットが安く売られていたので買ってみた。これです!

Löttorp

このLöttorpは、4辺に各機能を表すピクトグラムが描いてあり、上に来たピクトグラムの機能が有効になります。時計・温度計・アラーム・タイマー機能がありますが、 ピクトグラムわかりづらくないかい? 時計とアラームの区別がぱっと見てわからないのですけどw ひとつ349円なのでその辺は突っ込んではいけないのかもしれない。

回転させると、機能ごとに発行する色も変わってオシャレ。まずは時計。

時計

温度計

温度計

アラーム

アラーム

最後にタイマー

タイマー

自分はキッチンに置いてキッチンタイマーとして使っています。単四電池二本で駆動します。

2011年11月21日月曜日

MacPorts2.0で Binary Archivesを使用してコンパイルしないでインストール

以前にportarchivemodeが廃止されたので、コンパイルされたパッケージからコンパイルレスでインストール出来なくなったと書いたのですが、マニュアルを読んでみると'binary-only mode'と言うオプションがあり、「これを指定するとbinary archivesからインストールするよ。」との記述があったので試してみたら簡単にできましたので方法を書いておきます。

最初に、母艦側で必要なパッケージをコンパイルしておくのが大前提です。母艦側でportのコンパイルが終わると/opt/local/var/macports/software/ の下にbinary archives(デフォルトだと拡張子がtbz2のファイル群)が出来ていると思います。これをtarなどで一つのファイルにまとめておきます。

#母艦側
$ cd /opt/local/var/macports/
$ tar cvf ~/software.tar software
$

母艦側でまとめたファイルをサブ機にコピーして、/opt/local/var/macports/に展開します。

#サブ機側
$ cd /opt/local/var/macports/
$ sudo tar xvfp ~/software.tar
$

展開が終了したら、bオプション(binary-only mode)をつけてインストールします。

#サブ機側
$ sudo port -b install lv +lesslikeslash
--->  Computing dependencies for lv
--->  Dependencies to be installed: ncurses xz gettext expat libiconv
--->  Fetching archive for ncurses
--->  Installing ncurses @5.9_1
--->  Activating ncurses @5.9_1
--->  Cleaning ncurses
--->  Fetching archive for expat
--->  Installing expat @2.0.1_1
--->  Activating expat @2.0.1_1
--->  Cleaning expat
--->  Fetching archive for libiconv
--->  Installing libiconv @1.14_0
--->  Activating libiconv @1.14_0
--->  Cleaning libiconv
--->  Fetching archive for gettext
--->  Installing gettext @0.18.1.1_2
--->  Activating gettext @0.18.1.1_2
--->  Cleaning gettext
--->  Fetching archive for xz
--->  Installing xz @5.0.3_0
--->  Activating xz @5.0.3_0
--->  Cleaning xz
--->  Fetching archive for lv
--->  Installing lv @4.51_3+lesslikeslash+xz
--->  Activating lv @4.51_3+lesslikeslash+xz
--->  Cleaning lv
$

同様に他のパッケージもインストールします。

2011年10月27日木曜日

Emacs nxml-modeの設定

最近、スマフォ関係でhtml5で書くことが多くなってきました。今まで使用していたpsgml-modeはhtml5と相性が悪く、インデントやタグの補完がうまく動かないので、nxml-modeに変更してみることにしました。

nxml-modeはCarbon Emacsやemacs23以降には標準搭載されているので、インストールは特に不要ですが、別途hober/html5-elをインストールする必要があります。

nxml-modeの設定

最初にnxml-modeの設定を行って、正常に動作するかチェックします。下記のように設定しました。

(setq auto-mode-alist
      (append '(
                ;;("\\.\\(html\\|xhtml\\|shtml\\|tpl\\)\\'" . xml-mode)
                ("\\.\\(html\\|xhtml\\|shtml\\|tpl\\)\\'" . nxml-mode)
                ("\\.php\\'" . php-mode)
                )
              auto-mode-alist))

(load "rng-auto.el" 't)
(add-hook 'nxml-mode-hook
          (lambda ()
            ;; 更新タイムスタンプの自動挿入
            (setq time-stamp-line-limit 10000)
            (if (not (memq 'time-stamp write-file-hooks))
                (setq write-file-hooks
                      (cons 'time-stamp write-file-hooks)))
            (setq time-stamp-format "%3a %3b %02d %02H:%02M:%02S %:y %Z")
            (setq time-stamp-start "Last modified:[ \t]")
            (setq time-stamp-end "$")
            ;;
            (setq auto-fill-mode -1)
            (setq nxml-slash-auto-complete-flag t)      ; スラッシュの入力で終了タグを自動補完
            (setq nxml-child-indent 2)                  ; タグのインデント幅
            (setq nxml-attribute-indent 4)              ; 属性のインデント幅
            (setq indent-tabs-mode t)
            (setq nxml-bind-meta-tab-to-complete-flag t) 
            (setq nxml-slash-auto-complete-flag t)      ; </の入力で閉じタグを補完する
            (setq nxml-sexp-element-flag t)             ; C-M-kで下位を含む要素全体をkillする
            (setq nxml-char-ref-display-glyph-flag nil) ; グリフは非表示
            (setq tab-width 4)))

custom-set-faces
 '(nxml-comment-content-face
   ((t (:foreground "red"))))                            ; コメント
 '(nxml-comment-delimiter-face
   ((t (:foreground "red"))))                            ; <!-- -->
 '(nxml-delimited-data-face
   ((t (:foreground "DarkViolet"))))                     ; 属性値やDTD引数値など
 '(nxml-delimiter-face
   ((t (:foreground "blue"))))                           ; <> <? ?> ""
 '(nxml-element-local-name-face
   ((t (:inherit nxml-name-face :foreground "blue"))))   ; 要素名
 '(nxml-name-face
   ((t (:foreground "dark green"))))                     ; 属性名など
 '(nxml-element-colon-face
   ((t (:foreground "LightSteelBlue"))))                 ; :(xsl:paramなど)
 '(nxml-ref-face
   ((t (:foreground "DarkGoldenrod"))))                  ; &lt;など
 '(nxml-tag-slash-face
   ((t (:inherit nxml-name-face :foreground "blue")))))  ; /(終了タグ)

設定後htmlファイルを開くと、モードラインにnXMLと表示されます。そしてHTML構文に誤りが無ければValidと表示されます。

nxml-mode

また、"C-c C-s C-w"で現在どのスキーマを使用しているか表示してみると'/Applications/Emacs.app/Contents/Resources/site-lisp/nxml-mode/schema/xhtml.rnc'が使われているのがわかります。

hober/html5-elのインストール

次にDownloads for hober's html5-elのページからファイルをダウンロードして適当なディレクトリに展開します。

$ cd ~/.elisp
$ tarxvfz ~/hober-html5-el-934944b.tar.gz
$ cd html5-el
$ make relaxng
$ make webapps
$ 

インストールが完了したら、README.markdownに従って設定を行います。

(add-to-list 'load-path "~/.elisp/html5-el/")
(eval-after-load "rng-loc"
   '(add-to-list 'rng-schema-locating-files "~/.elisp/html5-el/schemas.xml"))
(require 'whattf-dt)

設定後、同じファイルを開いて使用されてるスキーマを調べると'~/.elisp/html5-el/relaxng/xhtml5.rnc'となりhtml5(xhtml5?)対応になります。

nxml-mode html5

上記の場合、xhtml1をxhtml5として解釈しているため、Invalidとなってしまっています。こういうときは"C-c C-s C-t"と打って明示的にDocument Typeを指定する事が出来ます。指定したDocument Typeはrng-schema-locating-filesに保存されるので、次回からは指定しなくてもセットされます。

Document Type

rng-schema-locating-filesを修正

まだ、xhtmlで書くことの方が多いから、デフォルトはxhtmlでhtml5を編集する場合は"C-c C-s C-t"で明示的に指定したいと言うときは、rng-schema-locating-filesに定義したファイルを修正すれば出来ると思います。rng-schema-locating-filesはhober/html5-elをインストールしたときに"~/.elisp/html5-el/schemas.xml"に設定しました。

(eval-after-load "rng-loc"
   '(add-to-list 'rng-schema-locating-files "~/.elisp/html5-el/schemas.xml"))

このファイルの中身をみると下記のように記述されています。

<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
  <uri pattern="*.html" typeId="XHTML5"/>
  <uri pattern="*.xhtml" typeId="XHTML5"/>
  <namespace ns="http://www.w3.org/1999/xhtml" typeId="XHTML5"/>
  <documentElement localName="html" typeId="XHTML5"/>
  <typeId id="XHTML5" uri="relaxng/xhtml5.rnc"/>
</locatingRules>

これを次のように記述すれば良いと思います。

<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
  <uri pattern="*.html" typeId="XHTML"/>
  <uri pattern="*.xhtml" typeId="XHTML"/>
  <namespace ns="http://www.w3.org/1999/xhtml" typeId="XHTML5"/>
  <documentElement localName="html" typeId="XHTML5"/>
  <typeId id="XHTML5" uri="relaxng/xhtml5.rnc"/>
</locatingRules>

使い方

最初使い方がわからなかったのですが、youtubeにチュートリアルな動画がありましたので、それを見て大体の使い方は理解出来ました。



主なキーアサイン

主なキーアサインをまとめておきました。

編集系のキーアサイン
キー 関数 機能
C-c C-x nxml-insert-xml-declaration xml宣言文を挿入
C-return nxml-complete タグ・属性の補完
/ nxml-electric-slash 直前の「開始タグ」に対応する「終了タグ」で補完する
C-c tab nxml-balanced-close-start-tag-inline 直前の「開始タグ」に対応する「終了タグ」を同じ行に挿入する
C-c C-b nxml-balanced-close-start-tag-block 直前の「開始タグ」に対応する「終了タグ」を改行して挿入する
C-c C-u nxml-insert-named-char HTML Character Entityを挿入する
C-c C-d nxml-dynamic-markup-word 選択文字列をカレントバッファから探し、同じタグで補完する
移動系のキーアサイン
キー 関数 機能
ESC h nxml-mark-paragraph 現在の段落を選択する
ESC } nxml-forward-paragraph 上の段落に移動する
ESC { nxml-backward-paragraph 下の段落に移動する
ESC C-p nxml-backward-element 1要素後ろに移動する
ESC C-n nxml-forward-element 1要素前に移動する
ESC C-d nxml-down-element 下の階層の要素に移動する。(下の階層があれば)
ESC C-u nxml-backward-up-element 上の階層の要素に移動する。(上の階層があれば)
検証系のキーアサイン
キー 関数 機能
C-c C-v rng-validate-mode 検証モードの切り替え
C-c C-n rng-next-error エラーが発生した箇所に移動する
C-c C-s C-w rng-what-schema 現在どのスキーマを使用しているか表示する
C-c C-s C-t rng-set-document-type-and-validate 現在開いている文章のDocument Typeをセットし検証を行う
セットしたDocument Typeはスキーマファイルに保存される
C-c C-s C-f rng-set-schema-file-and-validate 指定したスキーマファイルを読込み検証を行う
C-c C-s C-a rng-auto-set-schema-and-validate 現在開いている文章に最適なスキーマを読込み検証を行う
C-c C-s C-l rng-save-schema-location 現在使用しているスキーマファイルを保存する

2011年10月24日月曜日

MacPorts2.0 Xcode4.2でpostgreSQLがSegmentation Fault 11が起こり悶絶

先日、メインの開発マシンであるMac miniにLionをクリーンインストールしました。周辺ツールも、Xcode4.2・MacPorts2.0の最新版をインストールして、開発環境も順調に作成していました。

よく使うportsはコンパイルまでに正常に終わり、あとはDatabaseへデータのリストアをすれば完了だなと思っていたら、postgreSQLがデータのリストア時にSegmentation Fault 11で落ちてしまいます。やばい、これが動かないと仕事が出来ない。

...
Segmentation Fault 11
$

ちょっと焦りましたが、こういう時はgoogle先生に聞くのが一番です。ググってみるとMacPortsのバグトラッキングのページに「postgresql91 segfaults on OS X 10.7 when built with Xcode 4.2」と言う、今の状況そのまんまなバグ報告が見つかりました。

このバグ報告に付いているコメントをみると、「Xcode 4.2ではコンパイル時に/Developer/usr/bin/clangがデフォルトで使われるが、これが悪さをしているようなので/Developer/usr/bin/llvm-gcc-4.2を使った方が良い。」と書かれていたので、llvm-gcc-4.2を使ってコンパイルしてみます。

clangとはコンパイラのフロントエンドであり、llvmをバックエンドとして使用されるものらしいです。Xcode4になって、コンパイラがgccからllvmに移行したらしいので、他のポートでも色々不具合が出ているようです。

コンパイラをllvm-gcc-4.2に変更する方法は2つ有り、/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/databases/postgresql90/Portfileを変更する方法と、コマンドラインからコンパイラを指定する方法があります。Portfileを変更するより、コマンドラインから指定した方がお手軽なので、今回はコマンドラインで作業をしてみます。

コンパイラを変更するには下記のコマンドを実行します

$ sudo port -d install postgresql90 configure.compiler=llvm-gcc-4.2

configure.compilerには/opt/local/share/macports/Tcl/port1.0/portconfigure.tclに定義されている下記の文字列を指定できます(指定できても該当するコンパイラーがインストールされていないとエラーになりますよ。)

    switch -exact ${configure.compiler} {
        cc { set name "System cc" }
        gcc { set name "System gcc" }
        gcc-3.3 { set name "Mac OS X gcc 3.3" }
        gcc-4.0 { set name "Mac OS X gcc 4.0" }
        gcc-4.2 { set name "Mac OS X gcc 4.2" }
        llvm-gcc-4.2 { set name "Mac OS X llvm-gcc 4.2" }
        clang { set name "Mac OS X clang" }
        apple-gcc-3.3 { set name "MacPorts Apple gcc 3.3" }
        apple-gcc-4.0 { set name "MacPorts Apple gcc 4.0" }
        apple-gcc-4.2 { set name "MacPorts Apple gcc 4.2" }
        macports-gcc-4.0 { set name "MacPorts gcc 4.0" }
        macports-gcc-4.1 { set name "MacPorts gcc 4.1" }
        macports-gcc-4.2 { set name "MacPorts gcc 4.2" }
        macports-gcc-4.3 { set name "MacPorts gcc 4.3" }
        macports-gcc-4.4 { set name "MacPorts gcc 4.4" }
        macports-gcc-4.5 { set name "MacPorts gcc 4.5" }
        macports-gcc-4.6 { set name "MacPorts gcc 4.6" }
        macports-llvm-gcc-4.2 { set name "MacPorts llvm-gcc 4.2" }
        macports-clang { set name "MacPorts clang" }
        default { return -code error "Invalid value for configure.compiler" }
    }

ちなみに、コンパイルオプションを指定したい場合は、下記のようにconfigure.optflagsを追加します。

$ sudo port -d install postgresql90 configure.optflags="-O3 -pipe" configure.compiler=llvm-gcc-4.2

llvm-gcc-4.2でコンパイルしたpostgreSQLでリストアしたところ、無事に完了しました\(^O^)/ バグトラッキングでpatch fileも投稿されていたので、近々反映されるでしょう。

2011年10月11日火曜日

Glenn Gould on Television が届いた

来年は、グレン・グールドの生誕80年・没後30年と言うことで、SONY CLASSICALからCBCのアーカイヴに保管されていた19時間以上にわたるTVドキュメンタリー、演奏シーン、インタヴュー、対談などの全映像をまとめたDVD ボックスが発売されます。

Glenn Gould - The Complete Original Jacket Collectionも、以前ポッチとしてしてしまった身としては、これも買っておく他ないだろうと言うことで、amazonで予約をしました。

予定では9月末に発送の事でしたが、2週間ほど遅れて10/09に届きました。しかし、その日は仕事で修羅場の真っ最中、開けている暇も無かったのですが、ようやく一息ついたので、写真だけでもアップしておこうと思います。

まずは表紙。Import版のはずですが、何故か日本語のシールが貼ってあります。読んでみると簡単な紹介文と字幕は付いていませんと注意書きが書いてありました。

表紙

次は裏表紙

裏表紙

背表紙、薄型のケースを使っているので10枚組でもあまり場所を取りません。メディアをしまうスペースが無くなってきているので、薄型仕様は嬉しい。

背表紙

ブックレットは、最初に「Glenn Gould on Televisionの発売に寄せて」的な事が、英語・フランス語・ドイツ語(多分)で書かれています。それ以外は、各DVDの曲目が書かれているだけの簡単なものでした。

背表紙

DVD本体は至ってシンプルでした。

背表紙

今回は、記念リリースの第1弾らしいですが、2弾・3弾と出てくると財布が心配になってきます。しかし、限定版の場合は買い逃すと一生買えない可能性があるので、出たら買ってしまうのだろうな。

2011年8月2日火曜日

MacPortsのportarchivemodeが廃止された

MacPortsを再インストールでは、portarchivemodeを有効にして、複数のマシンに効率的にインストールする方法を書いたのですが、バージョンが2.0に変わってからportarchivemodeがなくなってしまいました。

portarchivemodeが無くなった代わりに、portはコンパイルする前にhttp://packages.macports.org/をチェックしてパッケージが存在する場合は、それを使うようになったみたいです。

$ sudo port install FDclone +autosort +emacs +lv
--->  Computing dependencies for FDclone
--->  Fetching archive for FDclone
パッケージを取得しているぽい。
--->  Attempting to fetch FDclone-3.00j_0+autosort+emacs+lv.darwin_10.x86_64.tbz2 from http://packages.macports.org/FDclone
--->  Fetching FDclone
--->  Verifying checksum(s) for FDclone
--->  Extracting FDclone
--->  Applying patches to FDclone
--->  Configuring FDclone
--->  Building FDclone
--->  Staging FDclone into destroot
--->  Installing FDclone @3.00j_0+autosort+emacs+lv
--->  Activating FDclone @3.00j_0+autosort+emacs+lv
--->  Cleaning FDclone

あらかじめコンパイルされたパッケージを使うようになって地球に優しくなったのですが、現状 http://packages.macports.org/ には、それほどパッケージが用意されていないので、結局はコンパイルする事になり、あまり役に立っていないのが現状です。

パッケージのFetchとportarchivemodeを両方サポートしてくれれば最高なんですけどね。今後に期待しましょう。