Hatena::ブログ(Diary)

Capture Through Light RSSフィード

2011-02-28

MacPortsからhomebrewに移行する

ちょくちょく、homebrewというMac OS用のパッケージ管理システムのことが耳に入るようになりました。

homebrewの方が軽いし、綺麗に環境が構築できるとは聞くのですが、

MacPortsから移るのが面倒臭くて実行には移していませんでした。

先日mercurialインストールする機会があったのですが、

これと同時にhomebrewに移行しよう、と決心していろいろやってみました。

以下作業ログ。


1. MacPortsアンインストール

2.5. Uninstallを参考にアンインストールします。

/Applicationフォルダにあるものもアンインストールされるので注意。

$ sudo port -f uninstall installed
$ sudo rm -rf \
    /opt/local \
    /Applications/DarwinPorts \
    /Applications/MacPorts \
    /Library/LaunchDaemons/org.macports.* \
    /Library/Receipts/DarwinPorts*.pkg \
    /Library/Receipts/MacPorts*.pkg \
    /Library/StartupItems/DarwinPortsStartup \
    /Library/Tcl/darwinports1.0 \
    /Library/Tcl/macports1.0 \
    ~/.macports

2. homebrewインストール

Installationを参考にインストール

$ sudo rm -r /usr/local/include /usr/local/lib
$ ruby -e "$(curl -fsSLk https://gist.github.com/raw/323731/install_homebrew.rb)"

.zshrcでも.bashrcにでも

$ export /usr/local/bin:/usr/local/sbin:$PATH

一行加えてパスが通るようにしておきます。

zsh使ってるなら、

# コピー先ディレクトリは各自読み替えてください。
# echo $fpathで通ってるところに!
$ cp /usr/local/Library/Contributions/brew_zsh_completion.zsh ~/.zsh/completion/_brew
$ source ~/.zshrc

これで補完も通るようになります!

これだけです! なんて簡単!


3. 必要なパッケージをもろもろインストール

試しにインストールしてみる。

$ brew update
$ brew install wget git lv

mercurialを入れてみる。

$ brew install hg
Mercurial can be install thusly:
  brew install pip && pip install mercurial

怒られた。

過去のissueによると、

Mercurial is part of PyPI and we don't duplicate it's packages, sorry.

じゃあPyPIを入れてみよう。

$ brew install pip && pip install mercurial
==> Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.14.tar.gz
File already downloaded and cached to /Users/ln/Library/Caches/Homebrew
Error: The Distribute brew is only meant to be used against a Homebrew-built Python.
    Homebrew's "distribute" formula is only meant to be installed against a Homebrew-built version of Python, but we couldn't find such a version.

    The system-provided Python comes with "easy_install" already installed, with the caveat that some Python packages don't install cleanly against Apple's customized versions of Python.

    To install distribute against a custom Python, download distribute from:
      http://pypi.python.org/pypi/distribute
    unzip, and run:
      /path/to/custom/python setup.py install

また怒られる。

OS Xpythonにはデフォルトでeasy_installが入ってるらしく、

pipとコンフリクトするらしい。

だから、別のpythonの環境を構築しないといけない。

pythonbrewとか使ってもいいんだけど、自分はpythonは全くといいほど触らないので、

普通にhomebrewpythonインストールした。

$ brew install python pip
$ pip install mercurial
$ export $PATH:/usr/local/Cellar/python/2.7.1/bin

これでmercurialインストールされた!

HomebrewでFirefox4 Betaをビルドする環境を整える

Firefoxベータ版、別に自分でビルドしなくてもバイナリが配布されているのですが、

自分は64bitで動かしたい+高速化したいので自分でビルドしてみました。

(2011/3/18: autoconf-2.13のより正確なインストール方法とmercurialを利用したインストールを追記)


Mac OS X Build Prerequisitesを参考にまずは環境を構築してみる。

MacPortsで全てをインストールするように書いてあるが、homebrewで読み替える。

$ brew install yasm libidl

autoconfはversionが2.13が必要らしい。

brewにはなかったので直接GNUから落としてコンパイル

$ wget ftp://ftp.gnu.org/pub/gnu/autoconf/autoconf-2.13.tar.gz
$ tar xzf autoconf-2.13.tar.gz && cd autoconf-2.13
$ ./configure && make && make install

autoconf213がwhichで実際に見つからないとエラーになるので、ハードリンクを作成する。

(本当はautoconf213って名前でインストールしたいんだがやり方がわからない)

$ ln /usr/local/bin/autoconf /usr/local/bin/autoconf213

ソースコードを落とす

$ wget http://releases.mozilla.org/pub/mozilla.org/firefox/releases/4.0b**/source/firef
ox-4.0b**.source.tar.bz2
#リリースに合わせて各自読み替えてください
#もしくは
$ hg clone http://hg.mozilla.org/releases/mozilla-2.0
$ hg up FIREFOX_4_0rc1_RELEASE
#hg tagsして出てくるもので欲しいバージョンを指定する。

ビルドする前に.mozconfigという設定ファイルが必要なのでそれを作成する

ここではgithubのを落としてくる

$ wget https://gist.github.com/raw/826523/acc2486efd32d394bc026fd5d255c8383d036966/.mozconfig

※注: OSのバージョンが10.6.6じゃないならちょっとした修正をしないといけない。

`uname -s -r`して出てきたのと対応するように

ac_add_options --target=x86_64-apple-darwin10.6

をいじる。


ビルドする。

$ make -f client.mk build && cd ./obj-fx-beta && make package

dmgファイルができるのでそれを開く。

$ open ./dist/firefox-4.0**.en-US.mac64.dmg

DMGファイルが吐き出されるので、アプリケーションフォルダにコピーしてインストール


これで自前のfirefoxビルドできた。

体感としてはそんなに変わりはないが、

たくさんタブを開いてもクラッシュしにくくなったように思う。


不満があるとすれば、32bit版のプラグインが読めないので、

(特にflashとかsilverlightとかが困る)

別のブラウザを起動しなきゃいけないとこ。

64bit版のflashもあるにはあるが、ベータで使い物にならない。

それを除けばまずまずの出来だと思う。

2010-12-31

afplayを使ってiTunesのライブラリを再生する

afplayは高音質なことで有名ですが、

いかんせんコマンドラインでしか叩けないので使い勝手が悪い。


なら自分で使い勝手がいいようにすればいいと。

普段はiTunesを使ってるので、音楽ライブラリはそれにそって全部整理されています。

ということはディレクトリ構造が、

/[アーティスト]/[アルバム]/0* [トラック].拡張子

ってなってるってことで、

アルバム単位でしか聞かない俺にはいじりやすくなってるわけです。


まぁ要するに引数ディレクトリを渡して、

それを各ファイルごとにafplayに渡していこうってことです。


ただ、物事はそんなに単純ではなくて、

自分のライブラリaiff/alac/aacが混在していて、

しかも、パソコンで聞くようの高音質版とiPod touch用の低音質版が一緒に存在しています。

つまり、高音質があるものはそっちで聞きたい、けどなければ低音質でもいいからききたい、

そういうのを達成したいわけです。



具体的には、ffmpegに-i引数でファイルを渡して、タグが表示されるので、

それを元にいろいろなデータを配列に格納、それで、検索して同じタイトルがあれば弾くってことをしてます。

aiffのタグはffmpegが読めないので、ディレクトリ構造で弾いてます。

ただ、ここがMacの困ったところで、Macの内部エンコーディングUTF-8-Macっていうのになってます。

Normalization Form Dで最適化されていて、具体的には、濁点と半濁点を合成して表示します。

つまり、「ぱ」とか「だ」とか文字は「は゜」と「た゛」に分解されて処理されるということです。

ですが、rubyUTF-8処理はUTF-8Nと呼ばれるものでUTF-8-Macではありません。

で、iconvなどを使ってエンコード処理をしてやらないといけないわけです。

幸いMacのiconvにはネイティブでUTF-8-Macが扱えるようになっているので(当たり前)

iconvを差して一旦変換してから処理しています。


ただ、何がいけないのか検索処理がうまくいかなくて、

なかなかタイトルが同じはずなのに弾いてくれる時と弾いてくれない時とあります。

なんでか自分の力量ではわからないので

誰か解明して教えてください

2010-12-09

Snow LeopardでAndroidのスクリーンショットを撮る(2.3SDK導入)

先日、念願だったDesire HDを手に入れました。

イギリスなのでもちろんSim Free版。

MoreLocale2ってのでロケールを日本語に変更、

そして、OpenWnnというIMEを入れると日本語環境は整備できます。


それでいろいろと弄ってみて、Androidの底力をみた感じでした。

iOSiOSでいいんだけれども、あれは外部のボタンをできるだけ排除することによって

(そして開発者が利用できるAPIを制限することによって)

開発者にアプリがタッチ動作でスムースに動くことを要求しています。

できるだけミニマリストでありたいってことでしょうね。

Androidは余計にボタンはついていますけど、

それを開発者がAPIで利用できるのでそこがいろいろなユニークなアプリが出てくるのではと。

ただ、Appleが既にiOSで、タッチ動作だけでもここまでできるんだよー、ってことを実証してなければ

Androidも成功できなかったでしょうから、そこはまた難しいところですね。

(おそらくボタン操作が主となっていたのではないか、と思います)


閑話休題。

iOSでは簡単にスクリーンショットを撮ることができるのですが、

Androidではそうもいかないようです。

端末だけではrootedでなければ撮れないというのは自分にはにわかに信じられない話なのですが

実際そうであるのでしょうがありません。

rootedにしてもよいのですが、そこまで辿りつくまでにいろいろと資料を読み込まなければならず、

今のところは時間のあるときにすることと見送っています。


そこで、もう一つの方法なのですが、AndroidSDKを使ってスクリーンショットを撮る方法です。

といってもやることはそんなに難しくなくて

普通にGUIがあるプログラムを起動するのとなんら代わりはありません。

少しトリッキーだったのは、SDKのバージョンが2.3に変わったばかりであった、ということと、

Snow Leopardを使っていた(=64ビットOS)ということでした。

現在では特にパッチをあてなくても大丈夫なようになっています。

ですので記事を改訂しました(2011/08/29付)。


というわけで以下作業ログ。


1. Android SDK Starter Packageをダウンロード

ここのページから最新版のSDK Starter Packageを落としてきます。

要するに全部のインストーラみたいなものです。

解凍したあとtoolsに移動します。


wget "http://dl.google.com/android/android-sdk_r12-mac_x86.zip"
unzip android-sdk_r12-mac_x86.zip
cd android-sdk-mac_x86/tools

2. SDKインストール

次にSDK本体をインストールします。

./android

f:id:lshenqi:20110829213836p:image

androidコマンドを実行するとGUIが起動しますから、

左のAvailable Packagesをクリック、

そうすると右の画面にAndroid Repositoryというのが出るのでそれを展開します。

そして、上のように、Android 2.3.3にチェックをいれ、

Install Selectedをクリックします。

f:id:lshenqi:20110829213837p:image

そうすると、上のような画面がでるので、そのままInstallを押して

パッケージをすべてインストールします。


インストールが終わるとadb再起動するように聞かれますから、

Yesで再起動して作業は終了です。


3. USBデバッグを有効にしてスクリーンショットを撮る

f:id:lshenqi:20110829213838p:image:w360

次に、AndroidMacUSBで接続します。

そのままではパソコンに認識されませんから、

設定メニューを開き、アプリケーションを選択、

開発というメニューがありますから、

そのなかにあるUSBデバッグを上のように有効にします。


そしたらデバッガーを起動します。

./ddms

f:id:lshenqi:20110829215313p:image

そうすると上のようなGUIが出ますから、

デバイスを選択し、上のDeviceメニューの中からScreen Captureを選択します。

f:id:lshenqi:20110829215314p:image:w360

次のようなウィンドウが出ますから、

Androidを操作し、スクリーンショットを取りたい場面で

Saveを押せば保存できます。

2010-12-03

iPod touch 2G non-MCを4.2.1にアップデートしてみた。

自分のiPod touchiOS4.0のまま放置されてたんですが、

この前Cydiaのアップデートかけたらtetheredになってしまい

いい機会なので4.2.1にアップデートしてみました。

(2011/3/18追記: ちょっとわかりやすいように手直しした)


以下作業ログ


※注意 Wifi-syncを入れてる人は必ずアンインストールしてから作業を行うこと。
iTunesのsyncプロセスを載っとってるのでアンインストールしないとうまくいきません!

(実はこれですごいハマった)


1. iTunesでのアップデート

例のごとくredsn0wを使うのでまずはiTunesで普通にアップデートします。

どうせデータは一辺消えるのでSyncとかはさせないで大丈夫です。

2. redsn0wで脱獄

いつものとおりです。デバイスによってはtetheredになってしまうので

対応デバイスをよく読んでから使ってくださいね。

リカバリーモードになってDFUモードになかなかならなかってハマった。

強制終了したあと(自動的に)起動した瞬間にパワーとホームボタンを長押し、

そしたら一見強制終了されたように画面が暗くなるのでそこでパワーボタンだけ離すと

晴れてDFUモードです。

3. コマンドライン環境を整備

Cydiaからopensshとaptitudeインストールします。

その後アドホックにして次を実行。

$ slogin moible@xx.xxx.xxx
$ passwd
$ su
$ passwd

インターネットにつないだ後次を実行。

$ su
$ aptitude install sudo vim
$ export EDITOR=/usr/bin/vim
$ visudo #mobileをsudoersに追加。
$ exit
$ sudo aptitude install wget unzip patch screen rsync zsh network-cmds git subversion less ruby coreutils

そしてここからMobile Terminalの最新版を落としてきて、

scpするなりしてからdpkg -iする。


以下は個人的設定だけれども、一応ログ。zshやらscreen周りの設定。

$ cd /private/var/mobile/ && mkdir dev && cd dev
$ git clone https://github.com/shenqi/dotfiles.git
$ echo 'source .screen/iphone' > .screenrc
$ vim ~/.zshrc #screenを自動起動させるとMobile Terminalで死ぬので該当行を削除
$ sudo vim /etc/master.passwd #mobileのログインシェルを変更
$ sudo aptitude install com.razi.ztoggle com.saurik.privacy  net.howett.cydelete sbsettings sbsettingsscrobble org.chris-w.scrobble rotationinhibitor  com.chpwn.no-bookmarks com.phoenix.nospot com.chpwn.mobilevolumesound org.thebigboss.playawake com.chpwn.five-icon-switcher  com.dapetcu21.multicleaner com.saurik.iphone.fid org.thebigboss.cstavish.synchronicity org.thebigboss.playawake #必要なjailbreak appの追加
$ reboot
$ exit
.sidebar { left: auto !important; right: 0px !important; } .main{ margin: 0 26% 0 0 !important; } .body h3.title { border-left: 9px solid #e22e14 !important; } div.section{ border-bottom: 0 !important; } div.body { border-left: 0 !important; border-bottom: 0 !important; border-right: 0 !important; } div.day, h2 { background-image: none !important; } div.day { background-color: #ffffff !important; } h2, h2 a { color: #2f3a51 !important; } h2 a { border-bottom: solid 1px !important; } h1, h1 a:hover, h1 a:link, h1 a:visited { text-decoration: none !important; border-bottom: 0 !important; color: #2f3a51 !important; margin: 20px auto !important; font-size: 200% !important; font-family: "Courier New",osaka,"Trebuchet MS",sans-serif !important; }