MacBook Pro の仕様 のページに、バッテリー駆動時間が発表されてた。
17inch は 5.5時間かー。PowerBook G4 に比べると若干短い?
そしてとうとう、PowerBook は 12inch だけになってしまいました…
MacBook Pro / Battery Life
MacBook Pro の仕様 のページに、バッテリー駆動時間が発表されてた。 17inch は 5.5時間かー。
そんなことよりデバッグしようぜ!
MacBook Pro の仕様 のページに、バッテリー駆動時間が発表されてた。 17inch は 5.5時間かー。
MacBook Pro の仕様 のページに、バッテリー駆動時間が発表されてた。
17inch は 5.5時間かー。PowerBook G4 に比べると若干短い?
そしてとうとう、PowerBook は 12inch だけになってしまいました…
MacOS X の top とかで表示される空きメモリ容量を、自分のプログラムからシステムコールとか使って取得したいなー、と思ってたのだけれど、どうも sysctl ではダメらしい。で、いろんなフリーのツールのソースを読んだりしてびびっときたのが host_statistics() というやつだ。Mach のシステムコールらしい。
直接参考になったのはこれ。ユーザランドは BSD だけど、カーネルは Mach なんだよなー、なるほどなー、という感じだ。
C のプログラムにするとこんな感じ。
#include <stdio.h> #include <mach/mach_init.h> #include <mach/host_info.h> #include <mach/mach_host.h> int main(){ vm_statistics_data_t page_info; vm_size_t pagesize; mach_msg_type_number_t count; kern_return_t kret; pagesize = 0; kret = host_page_size (mach_host_self(), &pagesize); count = HOST_VM_INFO_COUNT; kret = host_statistics (mach_host_self(), HOST_VM_INFO, (host_info_t)&page_info, &count); if (kret == KERN_SUCCESS){ unsigned int pw, pa, pi, pf; pw = page_info.wire_count*pagesize; pa = page_info.active_count*pagesize; pi = page_info.inactive_count*pagesize; pf = page_info.free_count*pagesize; printf("wired %d\n", pw); printf("active %d\n", pa); printf("inactive %d\n", pi); printf("free %d\n", pf); } return 0; }
実行すればこうだ。
% ./a.out wired 136630272 active 330928128 inactive 348598272 free 526020608
めでたい。FreeBSD では sysctl でいけるんだけど、Linux は procfs みるしかないのかな?
#if defined (__APPLE__) && defined (__ppc__) printf("ppc32\n"); #endif #if defined (__APPLE__) && defined (__ppc64__) printf("ppc64\n"); #endif
こいつを gcc -arch ppc -arch ppc64 hogehoge.c とかしてコンパイルしてやると、32bit な環境と 64bit な環境ではちゃんと違った表示になる。ちなみに、__APPLE__ は、__linux__ とか __FreeBSD__ と同等の識別子、だと思う。
理由はめんどくさいので秘密なのですが、自分が /usr/local/lib にあることを主張しない libexpat.dylib がほしかったので、ちょっとやってみた。テキトウに ./configure –prefix=(/usr/localでない、そのへん) したあとで、
% vi libtool
-archive_cmds=”¥$nonopt ¥$(test ¥¥¥”x¥$module¥¥¥” = xyes && echo -bundle || echo -dynamiclib) ¥$allow_undefined_flag -o ¥$lib ¥$libobjs ¥$deplibs¥$linker_flags -install_name ¥$rpath/¥$soname ¥$verstring”
+archive_cmds=”¥$nonopt ¥$(test ¥¥¥”x¥$module¥¥¥” = xyes && echo -bundle || echo -dynamiclib) ¥$allow_undefined_flag -o ¥$lib ¥$libobjs ¥$deplibs¥$linker_flags -install_name ¥$soname ¥$verstring”
% make
% make install
としてやればよい。
otool -L (つまり ldd) で見ると、こんな感じだ。
% ldd ../expat/lib/libexpat.dylib
../expat/lib/libexpat.dylib:
libexpat.0.dylib (compatibility version 6.0.0, current version 6.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.5)
Proteus が free になりましたよ。 やれうれしや。
Proteus が free になりましたよ。
やれうれしや。
Hackathon で泥沼 (泥縄かも?)
swig-1.3.29
% ./configure ; make
xerces-c 2.7.0 (/usr/local 用ではない)
% cd xerces-c-src_2_7_0
% setenv XERCESCROOT ${PWD}
% cd src/xercesc
% vi Makefile.incl
– LD_SONAME = -install_name ${PREFIX}/lib/${SO_NAME}
– LD_SODEPDOM = -install_name ${PREFIX}/lib/${SO_DEPDOM}
+ LD_SONAME = -install_name ${SO_NAME}
+ LD_SODEPDOM = -install_name ${SO_DEPDOM}
% ./runConfigure -pmacosx -nnative
% make
libsbml-2.3.4
./configure –with-xerces=`pwd`../xerces-c-src_2_7_0 –with-java=/usr –enable-layout –with-swig
make
こけました。swig が新しいとダメみたいです。1.3.25 あたりがよさそう。
MacOS をインストールするときに入れるものチェックリスト- Growl (いろいろ通知してくれるツール)- DesktopManager (仮想画面ユーティリティ)- Skype- 買わなきゃ:- ecto の追加ライセンス- proteus の追加ライセンス- iLife ’06 family Pack- ATOK… どうしよー。
MacOS をインストールするときに入れるものチェックリスト
+ .Mac のアカウント設定
+ Growl (いろいろ通知してくれるツール)
++ HardwareGrowler, GrowlTunes (Growl のおまけでついてる)
++ MacBiff (IMAP+Growl な biff)
+ DesktopManager (仮想画面ユーティリティ) : ログイン時起動リストに登録
+ Skype (IP telephone)
– Microsoft Office:mac (Office Suite)
+ Microsoft VirtualPC (PC/AT Emulator)
+ SSH Agent (ssh-agent の GUI: Keychain 対応)
+ Eclipse (統合開発環境)
+ stuffit expander (archiver)
– iWork ’05 (Apple な office suite)
– iWork ’06 (Apple な office suite)
+ X11
+ XCode Tools
+ /usr/local 以下一式 + Emacs (Unix)
買わなきゃ:
– ecto (blogging): ライセンス +1
– proteus (instant messaging): ライセンス +1
– iLife ’06 family Pack: そのうち
+ ATOK2005 買った
コピーするファイル
+ ~/.{emacs,wl,folders}
+ ~/.ssh
+ ~/.{cshrc,xinitrc}
そのほか
+ shell を /bin/tcsh にしなきゃいや
[xerces-c++-2.7.0 ]./configure だとうまくいかない感じ。 % setenv XERCESCROOT ${PWD}% cd src/xercesc% ./runConfigure -pmacosx -nnative -cgcc-3.3 -xg++-3.3 -P/usr/local% gnumakeなんか、最後に警告がいっぱい出るんですが…
[xerces-c++-2.7.0 ]
./configure だとうまくいかない感じ。
% setenv XERCESCROOT ${PWD}
% cd src/xercesc
% ./runConfigure -pmacosx -nnative -cgcc-3.3 -xg++-3.3 -P/usr/local
% gnumake
なんか、最後に警告がいっぱい出るんですが… 動くと信じよう。
[ libSBML-2.3.4 ]
% ./configure –with-swig –with-python –with-perl –with-java –with-xerces –enable-layout=yes
% make
xerces が怪しいのだけれど、なんかちゃんと動いてるみたいだ。
しばらくこのままテストしてみよう。
glib-2.8.6atk-1.10.3cairo-1.0.2cairo は Quartz 対応してるのか。
がっつり更新。
基本的に ./configure ; make ; sudo make install ですな。
2.8 からは cairo が必要。
glib-2.8.6
atk-1.10.3
cairo-1.0.2
pango-1.10.3
cairo は Quartz 対応してるのか。
gtk-2.8.13
こいつだけ configure script を修正して実行。
vi configure
%s/-ltiff/-ltiff37/
%s/-ljpeg/-ljpeg62/
uim も作り直したが、どうせ同じフォルダにインストールされるので、意味なかったかも。
[ mlterm-2.9.2 (uim つき) ]./configure –prefix=/usr/local –enable-uim –with-type-engines=xft –with-imagelib=gdk-pixbufuim-mactsm はいろいろテスト中です。… uim-xim 経由で、tgif からも使いたいのだが、これはなんだかうまくいかない。
[ mlterm-2.9.2 (uim つき) ]
./configure –prefix=/usr/local –enable-uim –with-type-engines=xft –with-imagelib=gdk-pixbuf
uim-mactsm はいろいろテスト中です。Gtk+-2.x ではちゃんと動く。
uim-xim 経由で、tgif からも使いたいのだが、これはなんだかうまくいかない。
uim な mlterm ではちゃんと使えました。でもこれって何に役立つかな?
ていうか、Emacs で uim 使えればウハウハだな。のすけ師匠の uim.el 導入か?