macの最近のブログ記事

http://developer.apple.com/iphone/program/sdk.html
Get Ready for iPhone OS 3.0 - iPhone Developer Program

まだあんまり中身見通してないのでアレですけども。とりあえず個人的に欲しい機能がまだ来ないっぽいのが(´・ω・`)です。はい。

あとはかつて使ってたiPod Touch(16GB)を手放さずにとっとけばよかったな、とも。

Intermezzo 0.7.0 リリース

| コメント(0) | トラックバック(0)

Intermezzo 0.7.0リリースしました。...といってもやっとbetaなので、取り扱いにご注意ください(何)

http://trac.foursics.jp/intermezzo/
Intermezzo trac

  • 今のところ10.5(Leopard)専用ですが、10.4以前への対応は検討中です。
  • ドキュメントは今作ってます。
  • メニューに余計なのとか入ってるっていうか残ってますけど、気にしないでください。
  • バグレポートや機能要望などはtracのチケットで受けられるようにしますのでそちらにどうぞ(ここでもいいけど^^;;)

NSTextAttachmentを使ってNSAttributedStringに画像をはめ込むことが出来るのは知ってたんだけど、最近ふと思いついて初めてちゃんと使ってみた。

	NSFileWrapper* filewrapper = [[[NSFileWrapper alloc] initWithPath:@"..."] autorelease];	
	NSTextAttachment* attachment = [[[NSTextAttachment alloc] initWithFileWrapper:filewrapper] autorelease];

	id text = [NSAttributedString attributedStringWithAttachment:attachment];

こんな風に。だけど、適当に拾ってきた画像だと縦横サイズが不定なので、やたらどでかいファイル持ってこようものなら、際限なく広がってしまってちょっと始末が悪い。最大サイズを指定してそれ以上になったらリサイズするようにしてみたくなった。

pict01.png

つまりこれが、

pict02.png

こうなっちゃったりすると、いやよね奥さんそう思いませんおほほ?という。

でこれが、あれやこれやと試してみてなかなかうまく行かなかった。NSTextAttachmentCellがNSTextAttachmentによって自動的に生成されるに任せていると、元のファイルのサイズでそのまま出てしまう。-[NSTextAttachment attachmentCell]で得られるのはid<NSTextAttachmentCell>で、内部で生成されたNSImageインスタンスを参照するメソッド等は用意されていない。むりくりNSTextAttachmentCell*型にキャストするわけにもいかないので、どうしようかという話になった。

まあ、思いつけばな〜んだの部類すけど、縮小したNSImageを自前で生成してそれを同じく自前で作ったNSTextAttachmentCellに渡してNSTextAttachmentにつなげる、という手はずに乗せたらうまくいったとよ。


NSSize
_size_proportionally(NSSize origSize, NSSize maxSize)
{
	CGFloat zoom = (origSize.width > origSize.height ? maxSize.width / origSize.width : maxSize.height / origSize.height);

	return NSMakeSize(origSize.width * zoom, origSize.height * zoom);
}

- (IBAction)doAction:(id)sender
{
	NSURL *url = [NSURL URLWithString:@"http://icanhascheezburger.files.wordpress.com/2008/11/funny-pictures-always-hold-hands-with-your-kitten.jpg"];
	NSImage *image = [[[NSImage alloc] initWithContentsOfURL:url] autorelease];

	[image setSize:_size_proportionally([image size], NSMakeSize(200, 200))];
    NSTextAttachment* attachment = [[[NSTextAttachment alloc] init] autorelease];
	NSTextAttachmentCell* attachmentCell = [[[NSTextAttachmentCell alloc] initImageCell:image] autorelease];
	
	[attachment setAttachmentCell:attachmentCell];
	
	id text = [NSMutableAttributedString attributedStringWithAttachment:attachment];
	[text addAttribute:NSLinkAttributeName value:url range:NSMakeRange(0, [text length])];
	
	[[textView textStorage] appendAttributedString:text];
}

pict03.png

こうなった。よーしよし。

手元のテキストファイルでUTF-8のがあって、適当なスクリプトやアプリケーションに渡してテキスト処理を行っていたのがどうもうまくいかないことがあったので、よく見てみたら先頭にBOMがついていたときの話。

nkfのマニュアルを見たところ、-wと-w8とでBOMの有無を区別してくれるので、こいつに通せばよしなに変換してくれるかと思ったけども、どうやら入力ではBOMを判別してはくれないらしい。変化はなかった。ちなみにバージョンは2.0.7。

ここで変換によるBOM取りをあきらめてエディタで削除する方針に変更。何もしないとvimはBOM付きでもちゃんと認識して表示を隠してくれるので、隠さず見せるようにバイナリモードで読む必要があり。

$ vim -b hogehoge.txt

これでok。

<feff>hoge
このようにして見せてくれるので、<feff>を消せばよい。

MacOSX上でネットワークを扱うプログラムを書く場合、やり方はいくつかある。

  • ソケット
  • NSStream
  • NSURLConnection
  • 分散オブジェクト環境

あと、CarbonベースでもよC言語向けのが欲しければCFNetwork、あとBSDソケットとほぼ同等だけどCFSocketという手もある。まだ他にもあるかななな。

http://www.geekpage.jp/programming/macosX-network/
Geekなぺーじ : Mac OS Xネットワークプログラミング

まあ、NSURLConnectionなんかはURLベースなので「ネットワーク」というには大分限定的・局所的だし、分散オブジェクト環境に至ってはCocoaアプリケーション同士でないとほとんど使いこなせない。汎用性ではソケットに勝るものは無いでしょう。ただ、状況に応じていろんな選択肢があること、これを常に心に留めておくことはとっても重要。

あと、Cocoaではソケット・ファイルディスクリプタをwrapすることのできるNSFileHandleもあるので、ぜひこれらをフル活用していきたい。通知(NSNotification)やデリゲートの仕組みを元に、メインループからの非同期的読み込みの機構も実装されているので、これを使った方がCocoa GUIアプリケーションとしてより自然な挙動を実現することができる。

確かにソケットでよく使うFIONBIOやselect()/poll()などはそのまま適用可能だけど、UNIX系由来のコードを出来るだけそのまま動かすといった明確な意図に基づいて扱う場合以外は、それが有効に効力を発揮する局面はあんまり無いように思う。(≒GUIを持たない、純粋にC言語でmain()からがりがり書くようなケースも含む。ただそれでも、結果的にCocoa/Carbonに乗っておいた方が楽になれることも結構ある)

まあ、NSStreamとNSFileHandleさえあればわりとごはん3杯くらいいけます。はい。

http://developer.apple.com/documentation/Cocoa/Conceptual/Streams/Streams.html
Stream Programming Guide for Cocoa: Introduction to Stream Programming Guide for Cocoa

http://developer.apple.com/documentation/Cocoa/Conceptual/LowLevelFileMgmt/LowLevelFileMgmt.html
Low-Level File Management Programming Topics: Introduction to Low-Level File Management Programming Topics

欲しいのは欲しいんだが

| コメント(0) | トラックバック(0)

http://www.apple.com/jp/news/2008/oct/15macbook.html
新しいMacBookファミリー、ノートブックのデザインを再定義

筐体がアルミでありながらLEDディスプレイの周りが黒ブチになったのは自分としてはものすごく嬉しい。ディスプレイの周辺を黒色で締めてほしいってのはずっと思ってたし、これは大変よろこばしい。うちのTVもこれがあって今のをつかってるようなもの。

http://www.toshiba.co.jp/product/tv/ctv/25zb22.htm
東芝4:3フラットテレビ 25ZB22/25ZS12(生産終了製品)

こっち↑はまだまだ現役っすよ。

ま、Nehalem(っていうかCore i7)が出ればすぐにマイチェンするんだし、そんときでいっかなーと思いはするものの、そそられる物欲がいいかんじです。

とはいえ現状の環境(MacPro+MacBookAir)で不満が無いので、しばらくは眺めてることにします。

MacBookを手放そうかと

| コメント(0) | トラックバック(0)

まあ、こちらを奮発したのにはわけがあって、この半年自宅作業になった影響でノートPCをほとんど使わなくなってしまったことに気がついた、というのもある。Mac機はすでにMac Proがあるし、Win機を1台用意する方がはるかに利用度が高いっつーか。

とはいえまったく使うシチュエイションがなくなったかっていうとそうでもなく、適度に悩ましいんだなこれが。どうしましょうね。

どーもだめだ。突然UIが効かなくなって画面がフリーズすることしばしば。しゃべってる間にそうなったり、スクリーンセーバから戻れなくなったり。何なんだ?一体。かんべんしてくれええええええ。

Xcodeが

| コメント(0) | トラックバック(0)

3.1になっとる。

いや、iPhone SDK入れたらなんかいきなり細かいところが違ってたってことなんですがね。

http://developer.apple.com/iphone/gettingstarted/docs/creatingiphoneapps.action
Apple Developer Connection - iPhone Dev Center - Getting Started Docs

公開と同時につっこんだんですがそれっきりですよあはははやくこのテストコードくらいさっさと試したいんですが何とかしてくださいいやほんとorz

Entourageがだめぽな件

| コメント(0) | トラックバック(0)
  • SubjectのMIME decodingに時々失敗する
  • 本文の一行が勝手に折り返されてその文字数が変更できない
  • アドレス帳をOSX標準のアドレスブックと同期させてると起動ごとに同じエントリが重複してロードされていく(何これ)

だめぢゃん。。。