2014/10/25

Vimperator が Mac で素直に make できるようになった話

Vimperator を Mac で make する時は、GNU の sed とか使わないといけなかったので記事 を書いてたのだけれど、素直に make できるようになった。

手順

  • git clone git://github.com/vimperator/vimperator-labs.git
  • cd vimperator-labs
  • make
  • open -a 'firefox' downloads/vimperator*.xpi
前回の記事で紹介した時は Google Code の mercurial repository だったのだけれど、いつの間にか Github に移ってるので git で。
make するだけで downloads の下に vimperator の最新版が手に入るようになりました。便利。

経緯

前回 pull request を送った時に取り込んで貰ったけれど、最新版が make できなくなってました。
どうやら xargs と find を Make 時に使うようなったけれどそのオプションが GNU の find と xargs にしか付いてなくて、Mac の default のものだコケるみたい。

findutils とかを入れて対処しようにもコマンドがベタで書かれてるので、その部分を変数にして、せめて環境によってコマンド名変えさせてくれー、って言ってみた
そうしたら、GNU への依存を消してくれたので make が楽に。ありがたい。

2014/10/13

Vimperator in Mac で C-[ とかが効かなかくなっていたので修正してみた

普段のブラウジングは Vimperator を使っているのですが、いつからか C-[ で Escape できなくなってました。
なんか面倒臭いなー、と思ったらソースが Github で公開されているっぽいので修正して Pull Reqest を投げてみたら merge されたやったー、というお話。

環境

Mac OSX 10.9.5
Firefox 32.0.3
Vimperator(22faadf35b32fb7d31cac323a5206c104efc4b6f)

Vimperator の key handling

ソース読んでたら、打たれたキーは最終的に toSttring される みたいで、 ctrlKey は押されているかー、とかkeyCode は何かー、とかチェックしている様子。
それで整形されて String になって処理が続いていく様子。たぶん map とかを replce するために文字列化とかしているのかな。

それはさておき、Mac の Firefox にはバグがあるっぽくて、コントロールを押すと keyCode が変わってしまうので、その場で対処している、とのこと

Firefox in Mac での KeyCode 調べと修正

window.addEventListener('keypress', function(e) { window.hoge = e; }, false);
とかして今の Mac の keyCode を見るとこんなんだった。

] keypress Control { target: <body#gsr.hp>, key: "[", charCode: 0, keyCode: 219 }
- keypress Control { target: <body#gsr.hp>, key: "-", charCode: 0, keyCode: 173 }
_ keypress Control-Shift { target: <body#gsr.hp>, key: "_", charCode: 0, keyCode: 173 }
\ keypress Control-Shift { target: <body#gsr.hp>, key: "_", charCode: 0, keyCode: 173 }
^ keypress Control-Shift { target: <body#gsr.hp>, key: "^", charCode: 0, keyCode: 54 }
全然違ったのでそれぞれで動くように ad-hoc な if 修正やら switch を追加やら
んで C-[ でちゃんと insert も抜けるようになったし

inoremap <C-]> ]]]
inoremap <C--> ---
inoremap <C-_> ___
inoremap <C-\\> \\\
inoremap <C-^> ^^^
とかも動くようになたので、C- 付きの記号5つの対応はできたっぽい。

オチ

どうせなので Pull Reqest にすっかー、ってなことで投げたら merge された。やったー。

C-[ が使えなくて困ってる Mac User の方、直りましたよー、って言おうとしたけれど build がコケる。
一応それも原因は分かったのでまた Pull Reqest 投げてます。merge されたらまた記事を書くはずなので解説はその時

2014/10/04

Windows で管理していた mp3 を Mac の iTunes に import する時の文字化けへの対処

Windows で管理していた mp3 を Mac の iTunes に import する時の文字化けへの対処です。
タイトルからして長いけれど、紆余曲折して結構長い話。


そもそもの経緯

  • Windows で mp3 の音楽を管理していた
  • tag の encoding とかは気にしてなかった(というかたぶん当時知らなかった)
  • その Windows を数年くらい放置(なので Windows の iTunes はとても古いはず)
  • データだけ NAS に移してマシン放棄
  • NAS から mac に音楽を import すると文字化けしているさあ大変

問題と面倒な部分

  • mp3 の tag が SJIS
  • iTunes 11 on Mac は Latin1 と ASCII と UTF8 しか対応していないらしい
  • 文字化けをどうやって変換するか

先人達の対処方法


試した対処方法とその結果

  • iTunes によるタグ変換
    • どう変換かませても無理だった
    • UTF8 を修正だろうと latin1 -> ASCII だろうと化けてる
  • id3v2 による変換
    • シェルスクリプト書いて変換してみた
    • "TALB" "TIT2" "TPE1" を SJIS から UTF8 に変換
    • しても iTunes は認識せず
    • というか iTunes できちんと認識されている日本語のエンコーディングが謎
    • id3info を grep して nkg -g すると ASCII 扱いになってるので id3v2 じゃ無理っぽい
  • mac 上で SJIS サポートしてるソフトを使う
    • 有償だった
  • Win機で変換してから送ってくる
    • Win機が無い。

最終的な対処方法

  • Wine + SuperTagEditor
Win機無いならエミュレートすれば良いじゃない状態。というか Mac さんなんかその辺りの解決方とか用意ないのかなー。

環境


Super Tag Editor を起動するまで

  • brew install wine
  • wget https://gist.githubusercontent.com/mattintosh4/6591305/raw/b86e0a9b6132aaa8b6cb5febf7255d60f6c0375a/osx-wine.inf
  • wine osx-wine.inf
  • export LC_ALL=ja_JP.UTF-8
  • wine SuperTagEditor.exe
まず wine を入れます。参考にしたのはここ
設定ファイルを作ってくれた方がいらっしゃるようなので、 gist から落としてきて実行。
あと locale が ja_JP じゃないと豆腐が出てきたので export してから実行。別に LC_ALL=ja_JP.UTF-8 wine SuperTagEditor.exe とかでも良いんだけれど。
そして落としてきた SuperTagEditor を実行する、と。

Super Tag Editor で Tag Info を直す

  • ファイルを選択
  • 変換 > ID3v2 形式に変換
  • 変換 > ID3v2バージョン/文字エンコードの変換
  • v2.4/UTF-8 にする
どうやら手順としてはこんな感じらしい。一旦 v2.4/UTF16 してから v2.3 にするって謎の手順を推奨する方法もあるみたいだけれど。とりあえずこれでどうにかなった。

まとめ

  • SuperTagEditor で ID3v2 tag を 2.4/UTF-8 にすると良い
  • 正直 Win でやった方が楽そう
  • 最悪 wine でもどうにかなったけれど

結局の結論

  • Windows から Mac に音楽を移す時は Windows 側で id tag を v2.4 とかにしてから移しましょう
  • Mac 側でやる手段は割と無いっぽさげ?

おまけ

この記事を書いてる時に python で実行できそうな文字化け修正方法を見つけたりした。
というか参照記事とかの年とか、やってることが何年も前のことしてる気がした。