| @Mac/iPhone

Mountain Lion な Mac (MacBook Pro Mid 2009)で MacVim (kaoriya版) から quickrun を実行すると以下のようなエラーが出て困ってる。

⚡ Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 62, in <module>
    import os
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", line 398, in <module>
    import UserDict
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/UserDict.py", line 83, in <module>
    import _abcoll
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_abcoll.py", line 11, in <module>
    from abc import ABCMeta, abstractmethod
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/abc.py", line 8, in <module>
    from _weakrefset import WeakSet
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_weakrefset.py", line 5, in <module>
    from _weakref import ref
ImportError: No module named _weakref

CUI の Vim で quickrun してもエラーは出ないし、会社で使ってる Mac (Mountain Lion MacBook Pro Early 2011) の MacVim (同じくkaoriya 版)で quickrun やってもエラーは出ない。

どうやらこの辺が関係ありそう。リンク先には ujihisa さんバージョンの quickrun ではなく thinca さんバージョンのやつを使えばエラーは出なくなる、とあるけど、自分が使っている quickrun は thinca さんバージョンのやつで、どうすればいいかさっぱりわからない。

MacVim が想定する Python とパスが通ってる Python のバージョンが違うのが問題なような気がする(調べてみたら、Python は 2.5 と2.6 と 2.7 がインストールされていた。なんでこんなに入ってるの…。パスが通ってるのは 2.7 らしい)ので、とりあえず MacVim を kaoriya 版から Homebrew のやつに変えてみることにする(brew install macvim)。brew でインストールするとコンパイルを行うので、パスが通ってる Python を利用するようになるはず。

と思ってやってみたら案の定、エラーはでなくなった。

| @Mac/iPhone

46dd7418f43fe24786c47fada3fe4916.png (975×595)

会社は IRC を多用してて、入社してすぐに横の席の人が使ってた Linkinus を真似して入れて使ってた。なんで LimeChat を使わないのかというと、LimeChat だと Growl とかの通知がメッセージ全体ではなく冒頭の数文字だけだから。これでは LimeChat のウィンドウにフォーカスを移さないと続きを読むことが出来ない。Linkinus の通知は全文表示されるので、ちょっとしたメッセージなら Growl 通知だけで内容を把握できる。そいうわけで Linkinus を使っていた。

しかし Linkinus にも問題があって、最近は全然メンテされてないし、ときどきテキストフィールドがどんどん狭くなっていく現象に遭遇するようになって、自分の人間の器がテキストフィールドの大きさに反映されてるみたいで非常に使い心地が悪かった。なんかいい IRC クライアントないかなー、と物色していたら、 Textual というやつを発見した。試用版を入れてみたところなかなかいい。Retina Display の MacBook Pro にも対応していて(つまりちゃんとメンテされてる)、テーマは良い感じのやつがあるし(Monokai みたいな色合いでかっこいい)、Linkinus と同じ3カラムレイアウトなので違和感もなかった。テキストフィールドが入力不能になることはないし、 Linkinus では Growl 通知されなかった Notice status を通知させることもできる。非常におすすめです。

| @Mac/iPhone

MacBook Air すごく速くて使いやすいけど、自分のものではなくて家庭の所有物みたいな感じになっててあまり使わせてもらえなかった。悔しいので3年前に買った MacBook Pro 15” の HDD を外して SSD に入れ換えてみた。嘘みたいに速くなった。買ったのはこれ。いまは 512GB のやつも3万円くらいで買える。

一緒にディスクケースも買ったけど、間違って SATA じゃなくて IDE のやつを買ってしまって買い直さないといけなかった。あとポリカ MacBook の頃はトルクスドライバーは T8 でよかったのに(本当は恐ろしいMacBookのHDD換装)、最近の MacBook Pro は T6 じゃないとダメらしいので注意が必要。折角 SSD が手もとに届いたのにトルクスドライバーが無いために換装作業が出来なくて悶々としてしまった。

取り換え作業自体はそんなに難しくない。ただし光学ドライブ外して SSD と HDD の二ストレージ構成とかにしようとすると難しいと思う。TimeMachine からの復旧は NAS からやったら信じられないくらい遅かったし(300GB のデータ転送に三日くらいかかった)、Adobe 製品のライセンシングが機能しなくなってものすごくめんどくさいことになったのでオススメしません。ポリカ MacBook で HDD の換装やったときのデータの取り込みは、ディスクケースに入れて USB 接続した旧 HDD からやったけどこういう問題には遭遇しなかった。こっちの方が速くて安全だと思う。

ちなみに円高終わるっぽいので換装を考えてる人は早めに SSD 買った方が良いですよ。

使った道具

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

Mac の iTerm 2 皆さん使ってますか。コンソール中に現れた文字列をハイライト通知できたりしていろいろ便利らしいですね。でも僕は使っていませんでした。なぜか。

Ctrl + Shift + J によるかな入力変換ができないから。

これが非常にだるかった。宗教上の理由や国外在住でJISキーボードが手に入らないなどの理由のためやむなく英語キーボードを使っている方、おられると思います。そういう人はだいたい Ctrl + Shift + J で英数 -> かなの入力変換を行っていると思いますが(Command + Space の切り換えもできなくはないけどだるいですよね…)、iTerm 上では Ctrl + Shift + J で改行が行われてしまうため、このような操作が行えていませんでした。かなから英数入力に切り替える Ctrl + Shift + * も同様、むなしく ' などが表示されるだけ。標準の Terminal.app ではできるのになんでやねん。

iTermでの日本語入力 - 初学者の箸置 なんかを参考に Send Hex Codes 0x4a するようにしてみたりしたのだけどうまくいかなかった。

しかし先ほど仕事をさぼって iTerm の設定項目を確認していたら以下の設定で使えるようになったのでここに書き記しておきます。

iTerm で Ctrl + Shift + J でかな入力変換する方法

↑のように、iTerm の Preferences -> Profile -> Keys で Ctrl + Shift + JCtrl + Shift + * の項目を追加し、メニューから "Do Not Remap Modifiers" を選ぶだけでオッケー。かな英数の切り換えが快適に行えるようになる。困っている方お試し下さい。

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

Qiita の Kobito、入れてみた。いい気がする。

プログラミン関連のメモとかは Evernote に書いてきたけど、正直かなりだるかった。シンタックスハイライトできないし、タブ幅とかこちらで指定できないし、コードを入力した部分を選択して固定幅フォントを指定する手間とかもだるかった。

Qiita は基本的に Markdown で書くっぽい。

| @Mac/iPhone

仕事するときはWindowsでもLinuxでもVimを使っているので、最近ではVimが手足のようになっています。エレベーターに乗るときも j k を押そうとしてしまうほどです。しかしMacでコードを書くときはTextMateも使ってしまいます。TextMate Bundleが提供するスニペットや + R でスクリプトを走らせる機能とかやはり便利ですね。

しかしVimが手足のようになってる皆さんならお分かりいただけるかと思いますが、Vimmerは口より先に j k を連打してカーソルを動かそうとしますし、Ctrl + uCtrl + d による高速スクロール、Visualモードによる選択・一括編集、 #* を利用した検索なしのテキストエディティングなんて苦痛でしかないわけなんですね。

TextMateでVimのキーバインディングが使えないかなー、あるいはVimの中でTextMate Bundleが使えないかなー的なことを夢想していたら、それを実現しているテキストエディタがあったわけですよ。Vicoってやつでした。春頃チェックしてたんだけど、先日、「TextMate vim keybinding」みたいキーワードで検索していて改めてその存在を知ったので試用版をダウンロードして使ってみた次第です。まんまTextMate + Vimという感じ。

TextMateとの相違点としては、

  • Vimキーバインディング(Vimが使えない人には多分使いにくい)
  • デフォルトで日本語に対応!!!
  • デフォルトでサイドドロワーがついてる
  • ウィンドウ分割あり!!!

良くできてる点

  • TextMate Bundleが利用できる
  • GUIエディタとCLIエディタの長所をうまい具合に統合している。
  • TextMate同様、カスタムシェル変数を設定できる。
  • 従って + R でスクリプトを走らせるときに TM_RUBY という具合にシェル変数を設定しておくことで、RVMのRubyを実行時のインタープリタとして利用できる。

気になる点

  • テキストをインサートモード時にバックスペースで削除すると、削除するつもりのない文字を一文字余計に削除する
  • .vimrc を見て機能を拡張された状態のVimを使えるわけではなさそう
  • upコマンド(テキストが変更されていれば保存する機能)が使えない
  • なんとなく動作が不安定

このように気になる点がないわけでもないので、Vicoで書いていたこのテキストを途中でVimに切り替えて書いてしまっちゃった。Vimは .vimrc にごちゃごちゃ書いたりプラグインをインストールして始めて快適に使えるようになるので、キーバインディングだけviライクでもVimそのものの機能を提供してくれるわけではないVicoは、生粋のVimmerからするとちょっと使いにくいところがありますね。

それでも「j k 連打したい!」というVimmerの切実な欲求は満たしてくれますので、TextMate Bubdleは手放したくないというVimmerの皆様にはおかれましては導入をご検討いただければと思います。Mac App Storeで3540円ですが、以下から試用版がダウンロードできます。

| @Mac/iPhone

Google Chromeの拡張機能に、Chrome Keyconfig ってのがあります。これはMinibuffer + LDRizeとまではいかないまでも似たような機能を提供してくれるエクステンションで便利に使っていたんですけど、最近、一旦Google Chromeを終了すると前回使用時に変更した拡張機能設定項目の内容が読み込まれないという不具合が発生するようになり、非常に不便でした。

Chrome KeyconfigとTberarelooの組み合わせで、Firefox + Greasemonkey + Minibuffer + LDRize + Reblog Command とほぼ同様の快適さでTumblrが閲覧できるようになるわけでして(Google ChromeでFirefoxのようなReblogしまくれる環境を構築する - Syoichi's Tumblr)、毎回Tumblr閲覧時にChrome Keyconfigの設定画面を開いて設定を変更するのは面倒くさいこと極まりありませんでした。

ちょっと調べてみたところ、以下のような原因でChrome Keyconfigの設定項目の変更内容が反映されないようです。すなわち、Chrome Keyconfigの設定項目の内容を保存しているDBの "ItemTable" というテーブルに "Config" という key を持つレコードと "Keyconfig" という key を持つレコードがあって、設定項目の変更内容は "Keyconfig" に保存されるけどChrome KeyconfigはGoogle Chromeを一旦終了して再起動すると "Config" の方を読みに行っちゃう、ということらしいです。

したがってChrome Keyconfigの設定内容を保存しているSQLite3のDBを直接開いて編集してやればよいわけですね。"Config" という key を持つレコードの value を "Keyconfig" の値で上書きしてやればよい。上記リンク先ではWindows環境で、SQLiteを編集するソフトを使って値を変更する方法が紹介されていますが、Macでは以下のコマンドで行けます。

cd ~/Library/Application Support/Google/Chrome/Default/Local Storage  
sqlite3 chrome-extension_okneonigbfnolfkmfgjmaeniipdjkgkl_0.localstorage "update ItemTable set value = (select value from ItemTable where key = 'Config') where key = 'Keyconfig';"
{: .console }

よろしければお試し下さい。