Home > Tags > OSX

OSX

[物欲]iLife’09購入

DMC-LX3のRAWファイル対応のために購入。MacBook Proについてきたのは’08なので、折角のアップデートでのLX3対応も対象外なのであった。

発表から1年を越えているので、そろそろ次のバージョンがくる可能性はあるが、最近の更新ペースは1年半なので後半年は使えるはず(だといいなあ)。

なお、LX3の場合カメラがかなり頑張ってくれるのでRAWで救いたい状況はそうそうない。ただ、ピーカンとか曇り空とか屋外で露出が微妙な状況はいくらでもあるので、そういう時に活用して余裕ができるのは嬉しい。

PS3 Media Server

ps3mediaserver – Project Hosting on Google Code

DLNAサーバ化させるPS3 Media ServerをMacBook Proに入れて、PS3からみてみる。無線でも十分みられるものなんだな。BRAVIAでモードをかえるとモーションフローがきくのが面白い。

BRABIA自体もDLNA対応のようだが、若干の設定がいるらしい。PS3 Media Server (PMS) まとめwikiを参考にいじればなんとかなる…のだろか?とりあえずPS3経由で見られるからいいか。

Objective-C学習中

通勤中にヒレガス本を読んで、帰ってから課題の一つである文字列の入力とその文字数を数えるメッセージを出すというのをやってみた。場所でいうと「5.6 チャレンジ」(日本語版の場合p96、英語はp90)。

まずは素直に IBOutlet/IBAction を使うバージョン。NSTextField の outlet を二つ用意して、ボタンの押下を IBAction のメソッドで受ける。ついでに awakeFromNIB メソッドを定義してラベルの初期値を設定してみた。これは課題のページのすぐ前あたりでやっていることなので簡単。

さらに作りなおしてみる。Key-Value コーディングが面白そうだったので、がらっと違う方法で挑戦。

NSString を二つ(テキスト入力用、テキスト出力用)用意して、@property と @synthesize で setter/getter を自動定義。文字列の入力即文字数カウントとしたかったので、IBで入力テキストフィールドのContinuesを有効にして、setter だけ自前で書く。このへんでどハマり。

まず、NSString の更新ってどうなるんだっけ、と延々マニュアルをあさってみたりする。結局 textField = t; と単純なポインタ代入でよかったようだ。本当はその前にt を retainしたりtextField を release したり必要なはずだが、しばらくはメモリ管理は忘れたままでおきたいので、ガーベージコレクションをビルドオプションでつけて逃げる。

そして、あんのじょう値を直接更新したのに更新通知を飛ばしてしまい、willChangeValueKey と didChangeValueKeyに辿りつくまで長々と悩んでしまう。出力側のテキストの更新も少々悩んだが、こちらは self 経由で [self setLengthMessage:msg]; と @synthesize がつくってくれた setter を指定することで逃げた。

なんだかんだで2,3時間かけて課題完了。少しは勘所がわかってきた気がする。

NIBがないとわからないが、一応二番目の課題でつくったクラス AppController.h。

#import 

@interface AppController : NSObject {
	NSString *textField;
	NSString *lengthMessage;
}
- (id)setTextField:(NSString *)t;
- (int)countLength:(NSString *)t;
@property (readwrite, copy) NSString *lengthMessage;
@property (readonly) NSString *textField;
@end

ついでに AppController.m。

#import "AppController.h"

@implementation AppController
- (id)setTextField:(NSString *)t
{
	// set new textField
	[self willChangeValueForKey:@"textField"];
	textField = t;
	[self didChangeValueForKey:@"textField"];

	NSLog(@"%@ -> %@", textField, t);

	// update length message
	[self countLength: t];

	return self;
}

- (int)countLength:(NSString *)t
{
	NSString *msg;
	int length;

	// make message from textfield's length
	length = textField.length;
	msg = [[NSString alloc] initWithFormat:@"'%@' has %d characters.",
		   textField,
		   length];

	// set value using self-setter(automated)
	[self setLengthMessage:msg];
	NSLog(@"%@", msg);

	return length;
}

@synthesize textField;
@synthesize lengthMessage;
@end

これはヒレガス本ではない。ヒレガス本++だ。

ちょうどヒレガス本の日本語版が発売されていたようなので、何件かまわって購入してみた。原書で持っているだけに日本語で読めるというだけではちょっと買いにくいが、XCode 3.2/Snow Leopard 対応がされているというので「これはヒレガス本++とでも言うべき内容だ」と自分を納得させて購入。ああ、矢張り日本語で読むと楽だねえ(←そこが主眼だっだのか)

ObjectiveCふたたび

ちょっとアプリケーションっぽいものの構想ができたので、実現可能かどうか軽くXcodeに手を出してみることにする。教本は以前買ってあったヒレガス本と荻原本。荻原本は言語としての解説なので、Cocoaアプリからせめるヒレガス本と実によく馴染む。

うーむ、例がうまく動かん。「もうそれ使ってないよ」「将来消えるAPIだね」とかそういう警告は無視するにしても、何故だーー。

ヒレガス本の英語が優しくて助かる。

Dictionary.app を Carbon Emacs から使う

面倒だったので、ニコイチして作成。買い物ログ別館の方だけでも良かったのだけれども、C-x C-y で lookup っぽく呼びだしたかったので、そのあたりのルーチンをひとりぶろぐの方からもってきた。

Processing 言語で遊ぶ

最近ビジュアライゼーションをやっていないので、Processingを試してみることにする。画像、アニメーション、音楽を容易にプログラムするための言語で、Javaに変換して実行される。そのため文法も Java っぽい。

まずは、ダウンロードしてOS Xにインストール。起動してみるとソースコードを入力するエディタが出た。千葉商科大学政策情報学研究科 プレゼンテーション法の講義を参考にいくつか改造しながら試してみると、大体要領がわかってきた。結構素直で使いやすい。

はまった点が一つ。Processing で obsolete な関数を使おうとするといきなりウェブに飛ばされてしまった。シンタックスハイライトしている部分と、そのページにあるChangesを見比べたところ、どうやら framerate(30); という部分が frameRate(30); になるらしい。一文字なおしたら無事makeが通るようになった。

しばし、MSXを思い出しつつサンプルコードをいじって遊ぶ。うーん、楽しい。矢張り結果がすぐ絵と音でわかるプログラミング環境って素晴しいものだ。

Gallery of Computationを見ると、色々な表現とそのソースコードが入手できる。しばらくはこれで遊べそうだ。

しかし、その前にIDE環境を整える必要がある。折角OS X にはXcodeという快適な環境があるので、使わないのはもったいない。

まずはMac Dev Centerから最新版の Xcode を入手して、3.2→3.2.1にアップグレード。色々参考にして

  1. Java Applet でプロジェクトを新規作成
  2. /Applications/Processing.app/Contents/Resources/Java/core.jar を作成したプロジェクトの lib フォルダに放りこむ(CLASSPATHはどこで通すんだ…?)
  3. resource ディレクトリに Processing で使う画像やフォントを放りこむ。今回は必要なし

とまでやって後はアプレット風味で遊ぼうとしたところで本日は終了。面倒すぎるので素直にProcessing単体で遊ぶかも。

[物欲] USB-シリアルケーブル購入

ひょんな事で入手したNS50のシリアルコンソール用にシリアル-USB変換が必要になる。

購入前に新宿ヨドバシの店員にOSX対応品を聞いてみたら、その場でググりはじめた。仕方がないので適当に安いのを購入してみる。

FTDIチップを使っているとの事なので、Virtual COM Port Driversからダウンロード…しても無駄だった。/dev/tty.* で見えない。

あきらめて、VMWare Fusion 上の Windows XP にドライバを入れ、TeraTerm で接続をする。かなり負けた気分だ。

デフォルトのIPアドレスが家と被っているので、シリアルコンソールで接続してIPアドレスを変更する。NSのコマンドラインは慣れないな…。なんとかウェブ経由で見えるところまで持っていったところで終了。

Apple 新製品発表

Macmini Server が欲しい。OSの値段を考えるとお特すぎる。

アップル – Snow Leopard Serverを搭載したMac mini。

[物欲]SH-04A用品色々

新宿西口のドコモショップによって、卓上ホルダを確保。ついでにマイドコモなる謎の手続きをしてくる。以後このショップをひいきにしろという事かな。通勤経路上一番寄りやすいので特に問題はなさそうだ。

携帯電話データバックアップ+iSync対応 携帯シンク for Mac 5をウェブで調べて、SH-04A対応&Snow Leopard対応版がダウンロードできるのを確認してから、購入。これでやっと電話帳の同期ができる。他の機能はかなりどうでもいいが、これだけは移さないと実用にならない。

ついでに、空の軌跡FCのシナリオブックが出ていたので確保。見たところ、ほぼ余分な情報や後書き無しで、ただひたすら本編+脇シナリオのメインストリームの台詞を見やすく乗せただけという侠気仕様。町の人の会話は無いままでいいから、SCでは是非戦闘中の台詞も加えて欲しいものだ。そうでないと、土下座や剣帝の一撃の台詞が乗らない。

Snow Leopard は拡張子で判別するようになった

クリエータがなくなった Snow Leopard – soundscape out

旧 MacOS から OS X Leopard まで連綿と続いてきた、ファイル自体に親アプリケーションを記憶させる仕組み。今迄はそれ故に同じJPEGファイルでもダブルクリック時の処理アプリケーションを変更できたのだが、Snow Leopard からは変更されたらしい。Windows 同様、拡張子による判別になったとか。

正直使いわけでいない私としてはあまり影響が無いとはいえ、画像関係では使い分けをする人も多いだろうし大変だな。

PHPにxcacheを再導入

XCacheからダウンロード。INSTALL の通りにして make、設定はそのまま引き継いで完了。

rep2+expack が動かなくなっていたので、スレを見て最新版(rep2ex-090912-1710)に更新。こちらも設定をやりなおして、なんとか動くところまで行く。

Mac OS X 10.5 Leopard (PPC) で PHP をmakeする方法(邪道風味)

OSX Server 10.5 (64bit)でPHP+GDを参考にして、PHPをmake。libpng, libjpeg, freetype は fink でインストールしたものを利用した。


# LIBS="-lresolv -L/usr/pkg/lib" ./configure --prefix=/usr/local/ --with-apxs2=/usr/sbin/apxs --enable-cli --with-libxml-dir=/usr --with-openssl=/usr --with-zlib=/usr --with-bz2=/usr --enable-exif --enable-mbstring --enable-mbregex --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-snmp=/usr --with-xmlrpc --with-xsl=/usr --with-gd=/sw --enable-gd-native-ttf --enable-gd-jis-conv --with-jpeg-dir=/sw --with-png-dir=/sw -with-iconv=shared,/usr
# time make -j2

Undefined symbols:
  "_res_nclose", referenced from:
      _zif_dns_get_record in dns.o
      _zif_dns_get_record in dns.o
      _zif_dns_get_record in dns.o
  "_res_nmkquery", referenced from:
      _zif_dns_get_record in dns.o
  "_res_ninit", referenced from:
      _zif_dns_get_record in dns.o
  "_res_nsend", referenced from:
      _zif_dns_get_record in dns.o

DNS まわりのエラーが出てしまうようだ。

darwinportのphp5を参考に、main/php_config.h から以下の箇所(計6箇所)をコメントアウト


#define HAVE_RES_NMKQUERY 1
#define HAVE_RES_NSEND 1

今度はiconvまわりでひっかかったので、Leopard に PHP5.2.6 をインストールするを見て configure のオプションを –with-iconv=shared,/usrとしてiconv問題を回避


Build complete.
Don't forget to run 'make test'.

real	32m56.261s
user	18m31.758s
sys	5m56.835s

やっと完成。念のために make test もかけておく。数時間待ちの結果、若干エラーは出たものの、みたところ微妙な箇所なので気にしないことにする。


# make test
=====================================================================
EXPECTED FAILED TEST SUMMARY
---------------------------------------------------------------------
output buffering - fatalism [tests/output/ob_011.phpt]
Inconsistencies when accessing protected members [Zend/tests/access_modifiers_008.phpt]
Inconsistencies when accessing protected members - 2 [Zend/tests/access_modifiers_009.phpt]
SimpleXML: array casting bug [ext/simplexml/tests/034.phpt]
=====================================================================

インストールした結果は以下の通り。php.ini が /usr/local/lib という妙な場所に行ってしまったのが嫌な感じだが、configure からやりなおすのは面倒なので放置する。


# make install
Installing PHP SAPI module:       apache2handler
/usr/share/httpd/build/instdso.sh SH_LIBTOOL='/usr/share/apr-1/build-1/libtool' libs/libphp5.so /usr/libexec/apache2
/usr/share/apr-1/build-1/libtool --mode=install cp libs/libphp5.so /usr/libexec/apache2/
cp libs/libphp5.so /usr/libexec/apache2/libphp5.so
Warning!  dlname not found in /usr/libexec/apache2/libphp5.so.
Assuming installing a .so rather than a libtool archive.
chmod 755 /usr/libexec/apache2/libphp5.so
[activating module `php5' in /private/etc/apache2/httpd.conf]
Installing PHP CLI binary:        /usr/local//bin/
Installing PHP CLI man page:      /usr/local//man/man1/
Installing shared extensions:     /usr/local//lib/php/extensions/no-debug-non-zts-20090626/
Installing build environment:     /usr/local//lib/php/build/
Installing header files:          /usr/local//include/php/

Installing helper programs:       /usr/local//bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local//man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /usr/local//lib/php/

これで一安心。Apache に指定して phpinfo() を見ると無事動いていた。まだ xcache 等が動いていないので、かなり遅いがひとまず今日はこのへんで終了。

PHPのmake

さらっとやってみるも失敗。

pkgsrcでbmakeしてみようとしたら、perlとかから全部makeしそうになって、あげくの果てに普通のパスと全く違う環境が出来そうだったので、断念する。

Snow Leopard 導入

先日購入した Snow Leopard を MacBook Pro(2008E)に導入してみる。

そのままの環境のアップグレードが良いとのことなので、Leopard を一旦 TimeCapsule でバックアップさせた後、実行してみる。

延々放置してバージョンアップ完了。そして、アップデートを当てたりTimeCapsuleで一晩放置が必要になったりしたり。

ソフトウェアの非互換性は、気になったのは iStat menus[1]位で後はそれほどでもない。システム環境設定が一部初期に戻されてしまっていたので、なおした程度か。後は、AquaSKK で、Spotlight部分に入力できなくなっていた[2]

しばらく使ってみて、非互換性を確認してみる予定。

  1. 後日2.0で解決 []
  2. 後日、1.xをアンインストールの上最新版betaにして解決 []

Home > Tags > OSX

Return to page top

123...Last »