ラベル Mac OS X 10.6 の投稿を表示しています。 すべての投稿を表示
ラベル Mac OS X 10.6 の投稿を表示しています。 すべての投稿を表示

2010年7月10日土曜日

virtualenv が上手く動作しない場合は -p オプションと --distribute オプションを試す

Python Hackathon という変態の巣窟に来ています。 virtualenv と buildout のハンズオンを受けているのですが、いくつか詰まった点があったのでメモ。

■virtualenv
普通にインストールするとき(ベースとなるpythonのsite-packageを受け継がないようにする場合)は以下のようにします。
python virtualenv.py --no-site-package myenv
ですがこの方法ではMac OS X 10.6付属のPython 2.6.1ではエラーになってしまいました。
New python executable in foo/bin/python
ERROR: The executable foo/bin/python is not functioning
ERROR: It thinks sys.prefix is '/System/Library/Frameworks/Python.framework/Versions/2.6' (should be '/private/tmp/virtualenv-1.4.3/foo')
ERROR: virtualenv is not compatible with this system or executable
そこで https://bitbucket.org/ianb/virtualenv/issue/17/virtualenv-not-working-with-default-python-on-mac-os を参考にして回避策を探してみたところ、
python virtualenv.py --no-site-package -p /usr/bin/python myenv
のようにして-pオプションを使いベースとなるPythonのパスを明示的に指定することで上手い具合にインストールできました。


■buildout
buildoutのbootstrap.pyをダウンロードしてきて実行すればよいのですが、Mac OS X 10.6付属のPython 2.6.1のsetuptoolsはバージョンが低い(0.6c9)ため、以下のようなエラーが出てしまうことがあります。
akisute server$ python bootstrap.py 
The required version of setuptools (>=0.6c11) is not available, and
can't be installed while this script is running. Please install
a more recent version first, using 'easy_install -U setuptools'.

(Currently using setuptools 0.6c9 (/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python))
もちろんsetuptoolsのバージョンを上げてもいいのですが、あまりデフォルトの環境を汚したくありません。そこで--distributeオプションを使用します。
python bootstrap.py --distribute
こうすると、distributeというsetuptools上位互換のモジュールが自動的にbuildout環境下にインストールされ、その結果上手い具合にインストールに成功します。buildout環境下へのインストールなのでデフォルトの環境は汚れません。すばらしい。

2010年1月9日土曜日

パスワードが無くなってログインできない Mac に無理矢理ログインする方法

会社で前任者が使用していたMacを使用する際など、管理者ユーザーのパスワードが紛失してしまってログインできなくなってしまう場合があります。っていうか、実際になって大変困りました><
このような場合、Mac OS Xでは「シングルユーザーモード」でOSを起動して、ユーザーのパスワードを自由に書き換えてログインできるようにすることができます。万が一の場合に便利なのでご紹介いたします。

参考にしたページはこちら。
http://d.hatena.ne.jp/viz3/20091029


■対象環境
  • Mac OS X 10.4以上であること (launchctlを使用するため)
  • UNIX / Linuxの対話環境についてある程度以上の知識があること
  • 失敗しても泣かない心があること
大変申し訳ありませんが、こちらに記載されている内容を実行して失敗してシステムが起動しなくなっても当方は責任を負いかねます><


1.シングルユーザーモードでMacを起動する
Macの電源を押して起動する際に、キーボードのCommand + Sキーを同時に押しっぱなしにしておくと、シングルユーザーモードで起動することができます。真っ黒な画面に文字がずらずら出てきたら成功です。


2./を読み書き可能にする(再マウントする)
画面上に
If you want to make modifications to files:
/sbin/fsck -fy
/sbin/mount -uw /
と表示されているので、ここに表示されているコマンドをそのまま入力します。コマンドの内容は以下の通り:
  • /sbin/fsck -fyは強制的にディスクチェックとディスクの問題修正を行う。-yがついているので、全ての問い合わせに対してYESを返したものと見なす。
  • /sbin/mount -uw /はすでに読み取り専用モードでマウントされている/を再度書き込み可能なモードでマウントし直す。

3.dsclをlocalonlyモードで起動する
お次はdsclというツールを使用します。ですがこのツールそのままでは起動できないようなので(dscl .とタイプするとなにやら警告が出ると思います)、以下のようにしてlaunchctlを使ってdsclツールの設定ファイルを読み込んでから、dsclをlocalonlyモードで起動します。
launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServicesLocal.plist
dscl localonly


4.対象のアカウントのパスワードを書き換える
dsclがlocalonly対話モードで起動したら、cdコマンドとlsコマンドを利用して対象のアカウントのある/Local/Target/Usersまで移動します。
 > ls
Local

Contact
Search
> cd Local
/Local > ls
Default
Target
/Local > cd Target
/Local/Target > cd Users
/Local/Target/Users > ls
ずらずらとここにアカウント名が羅列されるはず
ここまで移動できたら、以下のコマンドを入力すればパスワードが書き換わります。
passwd 対象のユーザー 新しいパスワード
たとえばさっきの状態からユーザーakisuteのパスワードをabesiに書き換えたいなら、
passwd akisute abesi
です。


5.再起動してログインする
あとは再起動して普通にMacを起動します。
reboot
先ほど入力したパスワードでログインできるはずです。


■注意
この方法を用いれば、物理的にアクセス可能な任意のMacの操作権限を奪うことが可能になってしまいます。くれぐれも悪用しないように。

逆に、この方法を用いてアクセスされたくないMacについては、以下のページで紹介されている方法を用いてシングルユーザーモードによる起動を禁止することができます。
Mac OS X 10.1 以降で、ファームウェアのパスワードプロテクションを設定する


■UNIX / Linuxユーザー向け
Mac OS Xのユーザーって、/etc/passwdじゃなくてDirectory Serviceで管理されてるんですねー。最初/etc/passwd以下を調べに行ってハマりました・・・

2009年12月19日土曜日

iMovie 08 でニコニコ動画にアップロードするための動画をエンコードする設定まとめ

皆さんご存じニコニコ動画。Windows環境で動画を作ってアップするための情報はたくさんあるのですが、Mac環境用のネタが少ないので、メモしておきます。

参考にしたページは以下の通り。
http://d.hatena.ne.jp/KZE/20091106/p1

http://www.smilevideo.jp/static/www/help/#000562

http://nicowiki.com/encode.html


■環境編
Mac OS X 10.6.2 Snow Leopard
iMovie 08
QuickTime Player X (Snow Leopard付属)

iMovieは08を使用します。各所でお勧めされているiMovie HDであれば高性能でflvも扱えるらしいのですが、新しいソフトを入れて管理するのが面倒という理由により却下です。また、iMovie 09からは動画クリップごとの再生速度管理もできるらしいので、kskとかスローモーションの演出もできるためそっちのほうがお勧めです。

エンコの際にはQuickTimeを利用してエンコするため、一応QuickTimeのバージョンも載せておきました。たぶんLeopard付属のQuickTime Player 9とかでもうまくいくと思います。


■エンコ設定編
まず注意点として、私はプレミアム会員なので、以下の設定はプレミアム会員用に合わせています(ビットレート最大1000Kbps程度、ファイルサイズ最大100MB)。一般会員の方はビットレートを落とせばそのまま利用できるかと思います。

さて肝心の設定内容ですが、http://d.hatena.ne.jp/KZE/20091106/p1で解説されている内容とほとんど同じです。iMovie 08からはそのままflvを書き出すことができませんので、mpeg-4 H.264でエンコードします。具体的には以下の通り。
  1. メニューの「共有」から、「QuickTime を使用して書き出す」を選択する
    Cmd+Eの「ムービーを書き出す」では上手くエンコできませんので注意。
  2. 「書き出し」欄は「ムービーからMPEG-4」を選択する
    ここで「ムービーからQuickTimeムービー」を選択するとどんなに上手くエンコしてもニコ動側で再エンコされてしまいます。絶対に「ムービーからMPEG-4」を選択すること。
  3. 以下の画像のように設定する



    一番上のファイルフォーマットを「MP4(ISMA)」から「MP4」にしないとH.264でエンコできませんので、まず最初に変えておくこと。
    一般会員の方はムービーのデータレートをもっと落としてください。300ぐらいかな?逆に600より上げる必要はよっぽど画質が気になるか短い動画でもないかぎり無いと思います。ビットレートについては私なんぞよりもまとめWikiなどのほうが詳しいのでそちらをご覧ください。
  4. 「ストリーミング」の「ストリーミングを使用する」チェックボックスは入れない
    入れても大丈夫かどうかは未確認ですが、余計な物を入れると変なことになるのではと思い外してます。入れた方がいいのかな・・・

■仕上がり編
上記の設定でエンコしてみた結果がこちら。


特に問題なく見られていると思います。ただしエコノミー回避はしていないのでエコノミーが発動すると悲惨なことになりそうですが・・・


■FLVでエンコしたい編
FLVでエンコしたい場合や、もっと詳細な設定がしたい場合には、ffmpegXというツールを使うと良いようです。試していないのでここでは割愛します。
その他、iMovieから直接FLVでエンコできるようにする方法もあるらしいです。しかしH.264で直接アップロードできるようになった今となっては別にFLVにこだわるメリットも無いかも。

2009年11月23日月曜日

maven2を使ってScalaのHello Worldを書いてみた

先日@yuroyoro氏により開催されましたScala Hackathon #1に行ってきました。Scalaは初めてだったので、ハッカソン資料に従ってまずはHello Worldから作ってみました。資料によると、
  • インタラクティブコンソールを使う
  • Eclipseのプラグインを使う非推奨
  • NetBeansのプラグインを使う
  • IntelliJ IDEAのプラグインを使う
  • テキストエディタとMavenとmaven-scala-toolsを使う
  • テキストエディタとsbt(Simple build Tool)を使う
これだけの開発手法を選択することが出来るそうです。そこであえて私はMaven2を使ってScalaのHello Worldを書いてみることにしました。

参考にした資料はこちら。
http://dl.dropbox.com/u/261418/scala-hackathon/setup.html#maven2
参考にしたページはこちら。
http://scala-tools.org/mvnsites/maven-scala-plugin/plugin-info.html
http://scala-tools.org/mvnsites/maven-scala-plugin/usage_run.html


■まずはmvnプロジェクトを作る
基本的には資料に記載されている内容と全く同じです。次の殺人的に長いmvnコマンドを入力するだけでプロジェクトを作ってくれます。
mvn org.apache.maven.plugins:maven-archetype-plugin:1.0-alpha-7:create \
-DarchetypeGroupId=org.scala-tools.archetypes \
-DarchetypeArtifactId=scala-archetype-simple \
-DarchetypeVersion=1.2 \
-DremoteRepositories=http://scala-tools.org/repo-releases \
-DgroupId=scalahackathon.helloworld -DartifactId=scalahackathon.helloworld
ただし、このコマンドによって生成されたデフォルトのScalaプロジェクトではそのままビルド結果を実行することができません。多少不備があります。後ほど詳しく説明します。とりあえずビルドとテストはできるので後回しにします。


■Appクラスを書かなくちゃ始まらない
生成されたデフォルトのScalaプロジェクトにあるAppクラスを書きます。このAppクラスと言う奴が、いわゆるJavaでいうmain関数を持ったメインクラスの扱いになってるみたいです。
akisute scalahackathon.helloworld$ cd src/main/scala/scalahackathon/helloworld 
akisute helloworld$ vim App.scala
package scalahackathon.helloworld

/**
* Hello world!
*
*/
object App extends Application {
println("Hello World!");
val l = List(1, 2, 3, 4, 5, 6);
l.foreach(println(_));
}
Applicationを拡張したAppクラスの中身が、そのままmain関数相当になるみたいです。このあたりよく分かってませんが、Appクラスの中で再度main関数を定義すると思いっきり怒られるのできっとそうなんだと思います。


■さて実行、その前に
さてここで
mvn scala:run
を実行すればプロジェクトをビルドして実行してくれるのですが、実は先ほど申し上げましたようにこのままではビルドには成功しますが実行に失敗します。原因はメインクラスがpom.xmlで定義されていないためです。
実行するためには、以下のように直接メインクラスを指定するか、
mvn scala:run -DmainClass=scalahackathon.helloworld.App
または以下のようにpom.xmlを修正してから実行する必要があります。毎回毎回直接メインクラスを指定するのは骨が折れるので、pom.xmlを直してみましょう。
<!-- reportingの中を直す、build要素はそのままでよい -->
<reporting>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<configuration>
<scalaVersion>${scala.version}</scalaVersion>
<!-- このlaunchers要素を新規に作る。idとmainClassは必須。 -->
<launchers>
<launcher>
<id>app</id>
<mainClass>scalahackathon.helloworld.App</mainClass>
<!-- 以下、任意要素。 args と jvmArgs を指定できます。 -->
<!--
<args>
<arg>arg1</arg>
</args>
<jvmArgs>
<jvmArg>-Xmx128m</jvmArg>
<jvmArg>-Djava.library.path=...</jvmArg>
</jvmArgs>
-->
</launcher>
</launchers>
</configuration>
</plugin>
</plugins>
</reporting>
修正してからmvn scala:runを実行すると、長い長いjarダウンロードの末、以下のような結果が得られます。
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'scala'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - scalahackathon.helloworld:scalahackathon.helloworld:jar:1.0-SNAPSHOT
[INFO] task-segment: [scala:run]
[INFO] ------------------------------------------------------------------------
[INFO] Preparing scala:run
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [scala:compile {execution: default}]
[INFO] Checking for multiple versions of scala
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [scala:testCompile {execution: default}]
[INFO] Checking for multiple versions of scala
[INFO] Nothing to compile - all classes are up to date
[INFO] [scala:run]
[INFO] Checking for multiple versions of scala
[INFO] launcher 'app' selected => scalahackathon.helloworld.App
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
Hello World!
1
2
3
4
5
6
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Mon Nov 23 20:59:51 JST 2009
[INFO] Final Memory: 18M/79M
[INFO] ------------------------------------------------------------------------
うまくいったみたいですね。

Mac OS Xには最初から/usr/share以下にmaven2やantが付いてくる

先日のScala Hackathon #1にて初めて気づいた驚愕の事実。なんとMac OS Xには最初からJavaの開発ツールが付いてきていたのでした。
akisute ~$ mvn --version
Maven version: 2.0.9
Java version: 1.6.0_15
OS name: "mac os x" version: "10.6.2" arch: "x86_64" Family: "mac"
akisute ~$ ant -version
Apache Ant version 1.7.0 compiled on July 20 2009
akisute ~$ which mvn
/usr/bin/mvn
akisute ~$ which ant
/usr/bin/ant
ちょっとmaven2のバージョンが古いですが、普通に使う分にはたぶん問題なさそうです。ちなみにこれらのツールは/usr/share以下に用意されています。
akisute ~$ cd /usr/share
akisute share$ ls
NotificationServer/ distcc_compilers info/ sandbox/
Ssh.bin doc/ java/ screen/
TargetConfigs/ emacs/ junit/ sdef/
aclocal/ enscript/ langid/ servermgrd/
aclocal-1.10/ examples/ libiodbc/ skel/
ant/ file/ libtool/ snmp/
apr-1/ ftpd/ locale/ statsCollector/
autoconf/ gdb/ man/ swig/
automake-1.10/ germantok/ maven@ tabset/
bakefile/ gprof.callg mecab/ tcsh/
bison/ gprof.flat misc/ terminfo/
caldavd/ groff/ mk/ texi2html/
calendar/ gtk-doc/ openmpi/ texinfo/
cracklib/ gutenprint/ openmpi-default-hostfile uucp/
cups/ heapdiff/ openmpi-mca-params.conf vim/
cvs/ hiutil/ openmpi-totalview.tcl xcode-select/
derby/ httpd/ podcastproducer/ zoneinfo/
dict/ icu/ ri@ zsh/
おお、他にもderbyとかありますね。TomcatやJettyのようなサーブレットコンテナがないので、そのまますぐにWebアプリ開発とはいきませんが、なかなか面白そうです。

・・・む、ひょっとしてこれ常識ですか? ><

2009年9月13日日曜日

iMacもSnow Leopardにしてみた



MacBook Airに引き続き、iMacのほうもようやくSnow Leopardに乗り換えてみました。


■ユーティリティとか動くの?
USB Overdrive
動きました!一番気がかりだったので嬉しいです!
Shades
こちらも動作しました。Snow Leopardで多少マシになった輝度設定ですが、まだまだ明るすぎるので重宝しています。
ただし、画面右上のアイコンをクリックして表示されるスライダーが動きません。輝度設定を変更したいときは、システム環境設定のパネルからShadesを直接起動して変更する必要があります。まぁ、その程度なら全然OK!
MenuMeters
やっぱりダメでした。残念ですが忘れようと思います><


■その他、iMacの気になるところ直った?
画面の輝度が明るすぎる
多少マシになってます。一番最低まで下げれば、以前よりはまぶしくない(気がします、単にコントラストの設定が2.2になったせい?)。でもまだまぶしいです、引き続きバグチケットをAppleに投げてきます。
マウス
相変わらず加速度がオフに出来ない糞仕様です。反応速度自体はマシになっていますが・・・しかも困ったことに初代Macintoshからこうらしいです、伝統だとか。改善されることはなさそうです>< USB Overdrive様々。
ExposeとSpacesのマウス操作仕様
困ったことにSpacesのマウス操作が微妙に変わっています。Spacesをボタンで起動した後、開きたいSpaceを「左クリック」しない限りSpaceが切り替わらない仕様になってしまいました。いままでは「Spacesの起動ボタン」でもSpaceが切り替わっていたのですが。Exposeは従来通りなので差異が発生してます。地味に困るのでこれもバグチケット投げないと。

2009年9月8日火曜日

Mac OS X 10.6 Snow Leopardのeasy_installでPILをビルドするときに気をつけることなど

Snow LeopardにPIL(Python Imaging Library)をインストールしようとして見事にハマりましたので、後学のために事の顛末を記しておきます。


■まず最初に、調べて分かった結論
  • Snow LeopardでPythonを使うときは、デフォルトで付属しているPython 2.6.1を使用すること。
  • Snow LeopardにはPython 2.5.4も付属しているが、こちらは使用するべきではない。
  • Snow LeopardのPython 2.5.4のdistutilには不具合?があり、UnixCCompilerクラスがC言語のモジュールを64bitでビルドしてくれないため、Snow Leopardでは動作しなくなる
  • したがって、C言語のモジュールを使用しているPILはSnow LeopardのPython 2.5.4を使うとビルド出来ない
  • どうしても2.5.4を使いたいときには、環境変数にARCHFLAGS "-arch x86_64"を追加してからPILをビルドするとうまくいくかもしれない(未確認)
  • MacPortやMacPythonからのインストールは実験していないため未確認

※ あくまで2009年9月8日現在での断片的な情報です。皆様がごらんになっている時点では既にMacPort上のPythonやMacPythonも対応を完了しているかもしれませんので、参考程度にご覧ください。でもSnow Leopard上のPython 2.5.4はほんとお勧めしません。


■ことのはじまり
Leopardのころはきちんと動いていたGoogle App Engine SDKが、Snow Leopardにアップグレードしたとたん突然PILモジュールがないと警告を出すようになってしまいました。確認してみると/Library/Python/Python2.5/site-packages/以下に確かにインストールされているのですが、何度試しても警告が消えません。Pythonのバージョンも以前から使っているPython 2.5のままです。これは何かがおかしい、再インストールした方がいいだろうと判断し、http://www.pythonware.com/products/pil/から1.1.6のソースコードを落としてきていざビルド。
sudo python setup.py install
python selftest.py
・・・が、動きません。なにやらImagingMathが見つからないだのなんだのとエラーが出てしまいます。これだけではよく分からないので、直接PILのモジュールをPythonからimportしてみることにしました。
akisute PIL$ python2.5
Python 2.5.4 (r254:67916, Jul 7 2009, 23:51:24)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import Imaging
>>> # 問題なくインポートできました
>>> import _imaging
Traceback (most recent call last):
File "", line 1, in
ImportError: dlopen(./_imaging.so, 2): Symbol not found: _jpeg_resync_to_restart
Referenced from: /Library/Python/2.5/site-packages/PIL/_imaging.so
Expected in: flat namespace
in /Library/Python/2.5/site-packages/PIL/_imaging.so
>>>
ふむふむ、どうやらこの_imaging.soというのがなにやら悪さをしているようです。@tokibito先生にお尋ねしたところ、このsoファイルというのはC言語のソースをコンパイルしたライブラリで、Pythonから動的にインポートできるようにpython.hというヘッダをインクルードしてつくられているらしいということが分かりました。なるほど、それでPythonから直接C言語で書かれてビルドされたライブラリをimportできるんですね。凄いなPython。

となると怪しいのはPILのビルド工程。先ほどのエラーを見ると_jpeg_resync_to_restartというシンボルが見つからないと表示されていたため、インストールに使ったlibjpeg(MacPortよりインストール)に何か問題があったのではないかと推測したのですが、特に問題は見つからず。

次にPILのビルドログを調査。細かいwarningが出まくるのはいつものことなので無視して調べてみますが、一見何もエラーは出ていません。するとあることに気づきました。
gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup -arch i386 -arch ppc build/temp.macosx-10.6-i386-2.5/_imaging.o build/
temp.macosx-10.6-i386-2.5/decode.o build/temp.macosx-10.6-i386-2.5/encode.o build/temp.macosx-10.6-i386-2.5/map.o build/
----
中略
----
-L/o
pt/local/lib -L/System/Library/Frameworks/Python.framework/Versions/2.5/lib -L/usr/lib -ljpeg -lz -o build/lib.macosx-10
.6-i386-2.5/_imaging.so
うん、なるほど、原因が分かりました。-arch i386と -arch ppcでしかビルドされていないのがまずそうですね。Snow Leopardは64bitですから、-arch x86_64を追加してビルドしなければならないはずです。

ためしにPython 2.6.1でこの_imaging.soを読み込もうとしてみた結果がこちら。
akisute PIL$ python
Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import _imaging
Traceback (most recent call last):
File "", line 1, in
ImportError: ./_imaging.so: no appropriate 64-bit architecture (see "man python" for running in 32-bit mode)
>>>
ビンゴ!間違いなさそうです!あとは、どうすれば64bitでビルド出来るかを調べるだけです。


■distutilとの戦い
とは言ってみたものの、そもそも一体全体どういうカラクリでpython setup.py installコマンドがgccビルドを実行しているのかが分かりません。まずはsetup.pyのソースを読んでみることにしました。するとdistutils.command.build_extなるモジュールをimportして使っていることが判明。怪しい。Python2.5のシステムライブラリをあさってみると、ありましたありました。


さっそくコードを読んでみると・・・
475         objects = self.compiler.compile(sources,
476 output_dir=self.build_temp,
477 macros=macros,
478 include_dirs=ext.include_dirs,
479 debug=self.debug,
480 extra_postargs=extra_args,
481 depends=ext.depends)
おおっといきなり発見、self.compiler.compileとか怪しさ抜群です。こいつはどこからやってきたのかとソースをたどると、なにやらunixccompiler.pyというモジュールを発見。いかにも私がコンパイラだと言わんばかり。犯人はこいつに違いない。さっそくコードを開いて-archとかで検索をかけてみましたが、i386とかppcとか直接指定している箇所は見あたりませんでした。その代わり別の収穫を発見。
def _darwin_compiler_fixup(compiler_so, cc_args):
"""
This function will strip '-isysroot PATH' and '-arch ARCH' from the
compile flags if the user has specified one them in extra_compile_flags.

This is needed because '-arch ARCH' adds another architecture to the
build, without a way to remove an architecture. Furthermore GCC will
barf if multiple '-isysroot' arguments are present.
"""
----
中略
----
if stripArch or 'ARCHFLAGS' in os.environ:
while 1:
try:
index = compiler_so.index('-arch')
# Strip this argument and the next one:
del compiler_so[index:index+2]
except ValueError:
break

if 'ARCHFLAGS' in os.environ and not stripArch:
# User specified different -arch flags in the environ,
# see also distutils.sysconfig
compiler_so = compiler_so + os.environ['ARCHFLAGS'].split()
----
後略
----
環境変数ARCHFLAGSとかいうのを見てるみたいです。なるほど、じゃこいつに"-arch x86_64"とか追加すればきちんと64bitビルドしてくれるのでしょうか?


■そしてあっけない幕切れ
ここまでなんとか一人で調査していたものの、たまりかねた隣の席の皆さんからアドバイス。

「Python 2.6じゃないのがまずいんじゃね?」

え、何、そういうこと?まぁ念のために試してみるか、ということでPythonを2.6に切り替えて再度PILをビルド。

あ、-arch x86_64がビルドオプションについてる。

あ、python selftest.py一発で通った。

あ、Google App Engine SDKがPILの警告吐かなくなった。

終了。

なにそれ。俺の苦労、何よ。


■あれ?
・・・おかしいな、今日作るはずだったGoogle App Engineのアプリ、まだ10行ぐらいしか書いてないよ><

2009年8月29日土曜日

Macbook Air (Early 2008)にMac OS X 10.6 Snow Leopardをインストールしてみた


最初は見送ろうかと思っていたのですが、Twitterのタイムラインを眺めていると「速い!」とか「良い!」との声が多数見受けられ、居ても立っても居られず仕事帰りにさくっと買ってきてさくっとインストールしてみました。
iMacとMacBook Airの2台あるので、まずはAirのほうに試しにインストール。

(2009/08/30追記) QuickSilverが動作するようになったので追記しました。
(2009/09/13追記) 64bit Kernel起動を試してみたので追記しました。


■インストールにかかる時間
大体40分〜50分ぐらいでした。OKボタンを数回押して放置するだけ。簡単です。


■インストールしてみて第一印象
確かに「速い!」です。もっとも印象に残るのが再起動やスリープ→復帰。また、アプリの起動や終了も明らかに速くなっています。具体的にはDockの上で4回はねないと起動しなかったアプリが1回はねただけで起動したりします。

それから地味に嬉しいのが入力ソースをアプリごとに保持するオプション。10.4までは可能で10.5で廃止されたオプションですが、10.6でめでたく復活しました。QuickSilverとTextMateは英字でTweetieは日本語でとか保持してくれるのがいい感じ。
http://d.hatena.ne.jp/Psychs/20090828/1251467136

そして何よりトップにも載せましたが4本指スワイプが使えるようになりました。最近のMacBookでは当たり前でしたが、なにせ私が使っている初代MacBook Airはこのオプションが無くてずいぶん肩身の狭い思いをしていたので嬉しくてたまりません。もうこれだけのために3000円払ってもいい。


■使えて良かった開発系のツール一覧
Firefoxは完全にそのままOK。Multiclutchの設定もそのまま使えました。
XcodeとiPhone SDKは専用の物をインストールしなおしてすぐにそのままビルド出来るようになりました。こちらも問題なし。
TextMate問題なし。OmniFocusやEvernoteも問題なさそうです。DropBoxも動いています。Growlも意外なことにきちんと動作しています。日本語入力のATOK2008 for Macも大丈夫です。
最大の問題としてMacPortがバージョン1.7系だと動作しませんが、つい先ほど公式の1.8インストーラがリリースされたため、こちらからSnow Leopard用の1.8をインストールしなおし、sudo port uninstall installedしてから必要な物を再度installし直すことで復旧できました。
QuickSilverもそのままでは設定画面が壊れて表示されなくなってしまいますので、最新のβビルドをこちらのページ(http://code.google.com/p/blacktree-alchemy/downloads/list)からダウンロードして入れ直すことで無事使えるようになりました。


■使えなくなってしまったアプリ一覧
SIMBLを使っていたアプリは32ビットモードで起動しても使えなくなっているようです。たとえばTerminalColourは完全にダメ。MenuMetersもダメです。QuickSilverも起動するだけなら問題なさそうですが、設定画面を開いた瞬間にフリーズして落ちてしまいます。
幸いにしてあまりSIMBLに依存した生活をしていなかったおかげで、ほとんど被害無く過ごすことが出来ています。


■64bit kernel起動は?
そもそもMacBook Air(Early 2008)は64bitカーネルのサポート対象外なのですが、ダメ元で試してみました。
結果、Boot modeは64bitにできましたが、実際に立ち上がるカーネルは32bitになってしまいました。やっぱりダメみたいです。あと、EvernoteとFirefoxのEvernoteプラグインの挙動が変になってしまったため、すぐに戻しました。


■まとめ
普通に使っている方にはアップグレードの手間もほとんど無くいい感じです。特に初代MacBook Airをお使いの方は是非アップグレードをお勧めします。逆にSIMBLやSafariプラグインに依存した生活をお送りで、ユーティリティが動かないと困る方はしばらくアップグレードを見合わせた方がよいかもしれません。

あと各所でインストールディスクが傷だらけでインストールできないという症例が報告されておりますのでご注意ください。最悪の場合はApple Storeに持ち込めばたぶん交換してくれます。