<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>週刊（月刊？）プレカリアート &#187; Cocoa</title>
	<atom:link href="http://blog.neoneet.jp/category/%e3%82%b3%e3%83%b3%e3%83%94%e3%83%a5%e3%83%bc%e3%82%bf/%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0/cocoa/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.neoneet.jp</link>
	<description>ニートになりそうな私が好き勝手書きます</description>
	<lastBuildDate>Sat, 24 Dec 2011 06:19:08 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CocoaでHTMLを扱う</title>
		<link>http://blog.neoneet.jp/2009/04/02/cocoa%e3%81%a7html%e3%82%92%e6%89%b1%e3%81%86/</link>
		<comments>http://blog.neoneet.jp/2009/04/02/cocoa%e3%81%a7html%e3%82%92%e6%89%b1%e3%81%86/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 12:02:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[プログラミング]]></category>

		<guid isPermaLink="false">http://blog.neoneet.jp/?p=189</guid>
		<description><![CDATA[Mac OS X 10.4以降ではNSXMLDocumentでHTMLを扱える 比較的簡単にHTMLを扱うことができる。比較的ぶっ壊れたHTMLでもOKだそうだ。 #import int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; // insert code here... NSURL *url = [NSURL URLWithString:@"http://mixi.jp/"]; NSData *data = [NSData dataWithContentsOfURL:url]; NSXMLDocument *document = [[[NSXMLDocument alloc] initWithData:data options:NSXMLDocumentTidyHTML error:NULL] autorelease]; NSArray* nodes; NSError* error; nodes = [document nodesForXPath:@"/" error:&#38;error]; NSLog(@"%@",nodes); [...]]]></description>
			<content:encoded><![CDATA[				<h2>Mac OS X 10.4以降ではNSXMLDocumentでHTMLを扱える</h2>
				<p>比較的簡単にHTMLを扱うことができる。比較的ぶっ壊れたHTMLでもOKだそうだ。</p>
				<pre class="prettyprint">#import 

int main (int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    // insert code here...

    NSURL *url = [NSURL URLWithString:@"http://mixi.jp/"];

	NSData *data = [NSData dataWithContentsOfURL:url];
	NSXMLDocument *document = [[[NSXMLDocument alloc] initWithData:data options:NSXMLDocumentTidyHTML error:NULL] autorelease];

	NSArray* nodes;
	NSError* error;	

	nodes = [document nodesForXPath:@"/" error:&amp;error];

	NSLog(@"%@",nodes);

	[pool drain];
    return 0;
}</pre>
				<h2>NSAttributedString</h2>
				<pre class="prettyprint">[NSAttributedString initWithHTML:documentAttributes:]</pre>
<h2>HMDTより</h2>
<p>崩れるのでblockquoteしないけど、以下はコピペです。</p>
<p>Cocoaを使って、HTMLをパースするには、2つの方法がある。1つは、WebViewを使う方法。WebViewにHTMLを読み込ませて、WebFrameからDOMDocumentを取得する。これだと、Webページの表示とまったく同じDOMが得られる。JavaScriptも実行される。しかし、WebViewを作成して、HTMLレンダリングまでしてしまうので、単にパースをしたいだけのときは、ちと大げさ。</p>
<p>もう1つの方法は、NSXMLDocumentを使う事。NSXMLDocumentを作成するときのオプションに、NSXMLDocumentTidyHTMLを指定すれば、HTMLもパースできる。おぉ、便利だ。しかし、NSXMLDocumentが生成するツリーと、WebViewが作るものは、若干違うときがある。これは、パースのライブラリに、WebViewがkhtmlを使っているのに対して、NSXMLDocumentはlibxml2を使っているため。libxml2は、HTMLをパースするときに、XHTMLへの変換を試みるため（？）、閉じられていないタグの取り扱いなどに、少し解釈に差が出るみたい。そこだけ注意。</p>
<h2>HMDTより、その２</h2>
<p>崩れるのでblockquoteしないけど、以下はコピペです。</p>
<p>IE のお気に入りを読み込むための、長い道のり。</p>
<p>いまさらながら、Internet Explorer のお気に入りファイルを読み込むプログラムを書こうとしている。すでに多くの方がご存知のように、IE のお気に入りは、~/Library/Preferences/Explorer/Favorites.html に書き出されているんだ。これは Netsacpe Bookmark File Format っていうのと互換で書かれているらしい。簡単な説明がここにある。一言で言うと、HTML ファイルとして保存してある訳だ。ガッデム。再利用するときにめんどくさいじゃないか。XML にしろよ。</p>
<p>文句をいってもしかたがないので、どうにかすることを考える。まず、HTML ファイルをパースしないといけない。これは Cocoa ではできない。Web Kit を使うか？WebView を作成して、HTML ファイルを読み込ませて、DOM ツリーを取得。これならできそうだけど、たかがお気に入りファイルを読むために、そこまでやるのはおおげさすぎる。Web Kit の HTML パーサに直接アクセスできればいいんだけど。で、検討の結果、libxml2 を使ってみることにした。</p>
<p>libxml2 は、XML を取り扱うためのライブラリ。Panther あたりから、Mac OS X に標準で付いてくる（これ重要）。HTML のパーサもついている。次のようなコードで、HTML をパースしてツリーを得ることができる。</p>
<p>Sample</p>
<pre class="prettyprint">

#include ＜libxml/HTMLParser.h＞
#include ＜libxml/HTMLTree.h＞

int main(int argc, char** argv)
{
    htmlDocPtr htmlDoc;
    htmlDoc = htmlParseFile(
        "/Users/mkino/Library/Preferences/Explorer/Favorites.html", NULL);
}</pre>
				<p>おぉ、簡単だ。htmlParseFile を呼べばよろし。どのくらいの HTML ファイルに対応しているかは分からないけど、IE のお気に入りはとりあえず読み込めるようだ。<br />
				あと、エンコーディングも取得できる。HTML ファイルに、charset でエンコーディングが指定してある場合は、 htmlGetMetaEncoding で取得できる。</p>
				<p>次に、このツリー構造を解析する。解析の仕方は 2 つ。1 つは、一個ずつ手でたぐっていく方法。もう 1 つは XPath を使う方法だ。XPath を使えば、ダイレクトに目的のノードにアクセスできる。たとえば、IE のお気に入りだと、トップ階層にあるフォルダは、HTML の body 要素の下の、dl 要素の下の、dt 要素の下の、h3 タグとして表現されている。これにアクセスするコードは、次のような感じになる。</p>
				<pre class="prettyprint">
void getFolder(htmlDocPtr htmlDoc)
{
    xmlXPathContextPtr  context;
    context = xmlXPathNewContext(htmlDoc);

    xmlXPathObjectPtr   result;
    result = xmlXPathEvalExpression(
            (xmlChar*)"/html/body/dl/dt/h3", context);
    xmlXPathFreeContext(context);

    xmlNodeSetPtr   nodeSet;
    nodeSet = result->nodesetval;
    if (!xmlXPathNodeSetIsEmpty(nodeSet)) {
        int i;
        for (i = 0; i < nodeSet->nodeNr; i++) {
            xmlNodePtr  nodePtr;
            nodePtr = nodeSet->nodeTab[i];

            printf("name %s\n", nodePtr->name);
            printf("content %s\n", xmlNodeListGetString(
                    htmlDoc, nodePtr->xmlChildrenNode, 1));
        }
    }
    xmlXPathFreeObject(result);
}
</pre>
				<p>HTML ツリーに対して、/html/body/dl/dt/h3 っていう XPath を評価する。これで h3 タグの一覧が得られる訳だ。<br />
				XPath は便利だけど、今回のお気に入りの読み込みではフォルダをたぐるため、再帰的にアクセスする必要があるので、手でやった方が効率がいいかもしれない。これで、どうにかタイトルとアドレスは得ることができそうだ。</p>
				<h2>libxml2サーチパス</h2>
				<blockquote><p>
				libxml2を使いたくて、でもosxに既に入っているような気がした。</p>
				<p>/usr/include/のところにlibxml2の文字を発見、これだ。</p>
				<p>でも、ソースをみると、<br />
				#include ＜libxml/xmlmemory.h＞<br />
				#include ＜libxml/parser.h＞<br />
				と書いてある。</p>
				<p>#include ＜libxml2/libxml/parser.h＞<br />
				とか置き換えても、内部のパスがおかしいみたいになってしまう。</p>
				<p>うーむ。</p>
				<p>少し考えて、プロジェクトのサーチパスに<br />
				HEADER_SEARCH_PATHS = /usr/include/libxml2/<br />
				と加えてみたら、通った。
				</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.neoneet.jp/2009/04/02/cocoa%e3%81%a7html%e3%82%92%e6%89%b1%e3%81%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Debugger has exited due to signal 5 (SIGTRAP).</title>
		<link>http://blog.neoneet.jp/2008/04/26/the-debugger-has-exited-due-to-signal-5-sigtrap/</link>
		<comments>http://blog.neoneet.jp/2008/04/26/the-debugger-has-exited-due-to-signal-5-sigtrap/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 09:00:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[未分類]]></category>
		<category><![CDATA[株式投資]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.neoneet.jp/?p=86</guid>
		<description><![CDATA[ずっと困っている問題がある。LeopardのXcode 3.0で開発をしていると最初はいいのだが、すぐに 2008-04-26 17:42:29.343 Xcode[246:203] *** NSTask: Task create for path &#8216;/Users/私/Desktop/Cocoa SQLite Browser/build/Debug/Cocoa SQLite Browser.app&#8217; failed: 13, &#8220;Permission denied&#8221;. Terminating temporary process. The Debugger has exited due to signal 5 (SIGTRAP).The Debugger has exited due to signal 5 (SIGTRAP). となって止まってしまう問題がある。やはりちゃんとマニュアル類に目を通した方がいいのか。 さて、定番のGoogle検索で何とかしようと思うのだけど、例えば&#8220;has exited due to signal 5&#8243;をキーに探しても結果は324件しかなく、色々読んでも悩んでいる人はいることは分かるけど、効果的な解答が示されているものは見つからなかった。&#8220;NSTask: Task create for&#8221; &#8220;Permission denied&#8221;で探すとさらに結果は少なく78件しかない。 これはなんとかならないのか。とりあえず、Terminalで「バンドル/Contents/MacOS/バイナリ」を直接起動すると起動はするのでテストは可能。しかしFinderのアイコンには禁止マーク（？）がついているし、ダブルクリックしても「このアーキテクチャでは使用できないため、開くことができません」と言われる。これでは配布できないよ。。。]]></description>
			<content:encoded><![CDATA[				<p>ずっと困っている問題がある。LeopardのXcode 3.0で開発をしていると最初はいいのだが、すぐに</p>
				<blockquote><p>2008-04-26 17:42:29.343 Xcode[246:203] *** NSTask: Task create for path &#8216;/Users/私/Desktop/Cocoa SQLite Browser/build/Debug/Cocoa SQLite Browser.app&#8217; failed: 13, &#8220;Permission denied&#8221;.  Terminating temporary process.</p>
				<p>The Debugger has exited due to signal 5 (SIGTRAP).The Debugger has exited due to signal 5 (SIGTRAP).</p></blockquote>
				<p>となって止まってしまう問題がある。やはりちゃんとマニュアル類に目を通した方がいいのか。</p>
				<p>さて、定番のGoogle検索で何とかしようと思うのだけど、例えば<a href="http://www.google.com/search?rls=ja-jp&amp;q=%22has+exited+due+to+signal+5%22+Xcode">&#8220;has exited due to signal 5&#8243;</a>をキーに探しても結果は324件しかなく、色々読んでも悩んでいる人はいることは分かるけど、効果的な解答が示されているものは見つからなかった。<a href="http://www.google.com/search?rls=ja-jp&amp;q=%22NSTask:+Task+create+for%22+%22Permission+denied%22">&#8220;NSTask: Task create for&#8221; &#8220;Permission denied&#8221;</a>で探すとさらに結果は少なく78件しかない。</p>
				<p>これはなんとかならないのか。とりあえず、Terminalで「バンドル/Contents/MacOS/バイナリ」を直接起動すると起動はするのでテストは可能。しかしFinderのアイコンには禁止マーク（？）がついているし、ダブルクリックしても「このアーキテクチャでは使用できないため、開くことができません」と言われる。これでは配布できないよ。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neoneet.jp/2008/04/26/the-debugger-has-exited-due-to-signal-5-sigtrap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Document-based Applicationで起動時に自動的に新規書類を作らない方法</title>
		<link>http://blog.neoneet.jp/2008/04/23/document-based-application%e3%81%a7%e8%b5%b7%e5%8b%95%e6%99%82%e3%81%ab%e8%87%aa%e5%8b%95%e7%9a%84%e3%81%ab%e6%96%b0%e8%a6%8f%e6%9b%b8%e9%a1%9e%e3%82%92%e4%bd%9c%e3%82%89%e3%81%aa%e3%81%84%e6%96%b9/</link>
		<comments>http://blog.neoneet.jp/2008/04/23/document-based-application%e3%81%a7%e8%b5%b7%e5%8b%95%e6%99%82%e3%81%ab%e8%87%aa%e5%8b%95%e7%9a%84%e3%81%ab%e6%96%b0%e8%a6%8f%e6%9b%b8%e9%a1%9e%e3%82%92%e4%bd%9c%e3%82%89%e3%81%aa%e3%81%84%e6%96%b9/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 13:25:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[未分類]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.neoneet.jp/?p=80</guid>
		<description><![CDATA[Cocoa Document-based Applicationのプロジェクトを作って「ビルドして進行」を押すとウィンドウが現れる。これはMyDocument（クラスとnib）のためのウィンドウである。最近のアプリケーションは起動するとウィンドウを自動的に開くものが多い（テキストエディタとか）けれど、そうでない方がいいものもある（例えば画像ビューア）。さて、どうすればいいのだろう？ ポイントを先に書いてしまうと - (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender { return NO; } をdelegateしてしまればOKである。 しかし、Interface Builder 3.0ではインターフェースがずいぶん変わっていてやり方がわからないので試行錯誤してみた。IB 2.0までならIBでNSObjectのサブクラスを作ってインスタンス化してファイルとして書き出してコードを編集する。IB 3.0ではどうするのだろう？ どうもIB 3.0では先にXcodeでクラスを作る必要があるようだ。まずXcodeのファイルメニューから「新規ファイル」を選び「Cocoa→Objective-C class」を選ぶ。とりあえず名前は「ApplicationController」とでもしておく。ApplicationController.mには上記のapplicationShouldOpenUntitledFileメソッドを書いておく。 次にIBでMainMenu.nib（メインのnibファイル）を開いて、パレットからNSObjectをドラッグする。 適当な名前（SQLiteDBController）をつけてInspectorからIdentity Inspectorを開いてClassに先ほど作ったクラス名「ApplicationController」を指定する。 最後にFile&#8217;s Ownerから線を伸ばしてさきほど作ったクラス（SQLiteDBController）に接続し、delegateとして指定する。 以上で自動的に新しいファイルを作成しなくなる。]]></description>
			<content:encoded><![CDATA[				<p>Cocoa Document-based Applicationのプロジェクトを作って「ビルドして進行」を押すとウィンドウが現れる。これはMyDocument（クラスとnib）のためのウィンドウである。最近のアプリケーションは起動するとウィンドウを自動的に開くものが多い（テキストエディタとか）けれど、そうでない方がいいものもある（例えば画像ビューア）。さて、どうすればいいのだろう？</p>
				<p>ポイントを先に書いてしまうと</p>
				<pre class="prettyprint">
- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender {
return NO;
}
</pre>
				<p>をdelegateしてしまればOKである。</p>
				<p>しかし、Interface Builder 3.0ではインターフェースがずいぶん変わっていてやり方がわからないので試行錯誤してみた。IB 2.0までならIBでNSObjectのサブクラスを作ってインスタンス化してファイルとして書き出してコードを編集する。IB 3.0ではどうするのだろう？</p>
				<p>どうもIB 3.0では先にXcodeでクラスを作る必要があるようだ。まずXcodeのファイルメニューから「新規ファイル」を選び「Cocoa→Objective-C class」を選ぶ。とりあえず名前は「ApplicationController」とでもしておく。ApplicationController.mには上記のapplicationShouldOpenUntitledFileメソッドを書いておく。</p>
				<p><a href="http://blog.neoneet.jp/wp-content/uploads/2008/04/newclass.png"><img class="aligncenter size-full wp-image-82" title="新規Objective-Cクラス" src="http://blog.neoneet.jp/wp-content/uploads/2008/04/newclass.png" alt="新規Objective-Cクラス" width="500" height="427" /></a></p>
				<p>次にIBでMainMenu.nib（メインのnibファイル）を開いて、パレットからNSObjectをドラッグする。</p>
				<p><a href="http://blog.neoneet.jp/wp-content/uploads/2008/04/library.png"><img class="aligncenter size-full wp-image-83" title="Interface Builder 3.0ライブラリ" src="http://blog.neoneet.jp/wp-content/uploads/2008/04/library.png" alt="Interface Builder 3.0ライブラリ" width="329" height="772" /></a></p>
				<p>適当な名前（SQLiteDBController）をつけてInspectorからIdentity Inspectorを開いてClassに先ほど作ったクラス名「ApplicationController」を指定する。</p>
				<p><a href="http://blog.neoneet.jp/wp-content/uploads/2008/04/inspector.png"><img class="aligncenter size-full wp-image-84" title="Interface Builder 3.0インスペクタ" src="http://blog.neoneet.jp/wp-content/uploads/2008/04/inspector.png" alt="Interface Builder 3.0インスペクタ" width="301" height="772" /></a></p>
				<p>最後にFile&#8217;s Ownerから線を伸ばしてさきほど作ったクラス（SQLiteDBController）に接続し、delegateとして指定する。</p>
				<p><a href="http://blog.neoneet.jp/wp-content/uploads/2008/04/delegate.png"><img class="aligncenter size-full wp-image-85" title="Interface Builder 3.0でdelegate設定" src="http://blog.neoneet.jp/wp-content/uploads/2008/04/delegate.png" alt="Interface Builder 3.0でdelegate設定" width="384" height="618" /></a></p>
				<p>以上で自動的に新しいファイルを作成しなくなる。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neoneet.jp/2008/04/23/document-based-application%e3%81%a7%e8%b5%b7%e5%8b%95%e6%99%82%e3%81%ab%e8%87%aa%e5%8b%95%e7%9a%84%e3%81%ab%e6%96%b0%e8%a6%8f%e6%9b%b8%e9%a1%9e%e3%82%92%e4%bd%9c%e3%82%89%e3%81%aa%e3%81%84%e6%96%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leopard Technology Overview超訳</title>
		<link>http://blog.neoneet.jp/2007/10/28/leopard-technology-overview%e8%b6%85%e8%a8%b3/</link>
		<comments>http://blog.neoneet.jp/2007/10/28/leopard-technology-overview%e8%b6%85%e8%a8%b3/#comments</comments>
		<pubDate>Sat, 27 Oct 2007 16:59:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.neoneet.jp/?p=6</guid>
		<description><![CDATA[このエントリーは http://developer.apple.com/leopard/overview/ を勝手に要約・翻訳したものです。逐語訳ではありません。 見どころ Xcode、Objective-C 2.0、Core Animation、Image Kit、Instruments 開発ツール Xcode 3.0 Xcodeは統合開発環境です。プログラム開発は重要なので、最新版のXcodeを洗練したものにするためにずいぶん時間をかけました。特にテキストエディタの機能は大きく改良してあります。コードの折りたたみ、スコープ強調、iChatっぽいメッセージの吹き出し（警告やエラーがブレークポイント同様にわかりやすくなる）などが目玉です。 新しいResearch Assistantは小さなパネルにコードのシンボルに関する関連情報を表示し、作業中にドキュメントを読むのに便利です。詳しい情報が欲しければクリックすると完全なドキュメントが開きます。次にProject Snapshotはプロジェクトの状態を記録しておいて、必要に応じて戻せるものです。 Interface Builder 3.0 Interface BuilderはCore Animationの機能をアプリケーションに組み込むことができます。たとえばiChatのスライディングリスト、Keynoteのようなトランジションを数分で作れます。 Instruments 新登場、タイムラインにあわせたパフォーマンス視覚化ツールで、アプリケーションがどう動いているかわかるようにします。CPU、ディスクIO、メモリ使用量、ガベージコレクション、イベントなどを視覚的に表示します。たとえば、リアルタイムでユーザインターフェース関連のイベントを拾って、それがどうIOやCPU負荷に影響するかがわかります。 Application Technology Core Animation Core Animationはダイナミックなアニメーションインターフェースをシンプルなプログラミングモデルで実現するCocoaフレームワークです。流れるようなアニメーションはQuartz、OpenGL、Core Imageで作られています。これは見慣れたNSView似の階層構造です。Leopardの新しいインターフェースはCore Animationで作られています。Core Animationを使うと楽にすごい効果を出せます。スムーズに動くインターフェース、フェードイン・アウト、エフェクトを数行のコードで書けます。Interface Builder 3.0でもCore Animationの設定ができます。 Objective-C 2.0 わずらわしいメモリ管理から解放してくれるガベージコレクタがランタイムに実装されました。また文法も拡張され、たとえばプロパティとかFast Enumeratorがつきました。 解像度非依存 ディスプレイが72dpiという古い仮定をとっぱらいました。高解像度になると高精細にはなりますが、見づらくなるデメリットもあります。そのためにQuickDrawをやめて、Quartzを使う必要があります。 Graphics &#38; Media ImageKit ImageKitはCore ImageやCore Animationを使ったCocoaフレームワークです。イメージを見つけたりブラウズしたり表示するための機能を提供します。 OpenGLの改良 OpenGL 2.1になりました。 QuickTimeの改良 H264とか64ビット関連など改良されました。 OSの基盤 64ビット [...]]]></description>
			<content:encoded><![CDATA[				<p>このエントリーは</p>
				<blockquote><p><a href="http://developer.apple.com/leopard/overview/"> http://developer.apple.com/leopard/overview/</a></p></blockquote>
				<p>を勝手に要約・翻訳したものです。逐語訳ではありません。</p>
				<p><strong>見どころ</strong><br />
				Xcode、Objective-C 2.0、Core Animation、Image Kit、Instruments</p>
				<p><strong>開発ツール</strong><br />
				<em>Xcode 3.0</em></p>
				<p>Xcodeは統合開発環境です。プログラム開発は重要なので、最新版のXcodeを洗練したものにするためにずいぶん時間をかけました。特にテキストエディタの機能は大きく改良してあります。コードの折りたたみ、スコープ強調、iChatっぽいメッセージの吹き出し（警告やエラーがブレークポイント同様にわかりやすくなる）などが目玉です。</p>
				<p>新しいResearch Assistantは小さなパネルにコードのシンボルに関する関連情報を表示し、作業中にドキュメントを読むのに便利です。詳しい情報が欲しければクリックすると完全なドキュメントが開きます。次にProject Snapshotはプロジェクトの状態を記録しておいて、必要に応じて戻せるものです。</p>
				<p><em>Interface Builder 3.0</em><br />
				Interface BuilderはCore Animationの機能をアプリケーションに組み込むことができます。たとえばiChatのスライディングリスト、Keynoteのようなトランジションを数分で作れます。</p>
				<p><em>Instruments</em><br />
				新登場、タイムラインにあわせたパフォーマンス視覚化ツールで、アプリケーションがどう動いているかわかるようにします。CPU、ディスクIO、メモリ使用量、ガベージコレクション、イベントなどを視覚的に表示します。たとえば、リアルタイムでユーザインターフェース関連のイベントを拾って、それがどうIOやCPU負荷に影響するかがわかります。<br />
				<strong><br />
				Application Technology</strong></p>
				<p><em>Core Animation</em><br />
				Core Animationはダイナミックなアニメーションインターフェースをシンプルなプログラミングモデルで実現するCocoaフレームワークです。流れるようなアニメーションはQuartz、OpenGL、Core Imageで作られています。これは見慣れたNSView似の階層構造です。Leopardの新しいインターフェースはCore Animationで作られています。Core Animationを使うと楽にすごい効果を出せます。スムーズに動くインターフェース、フェードイン・アウト、エフェクトを数行のコードで書けます。Interface Builder 3.0でもCore Animationの設定ができます。</p>
				<p><em>Objective-C 2.0</em><br />
				わずらわしいメモリ管理から解放してくれるガベージコレクタがランタイムに実装されました。また文法も拡張され、たとえばプロパティとかFast Enumeratorがつきました。</p>
				<p><em>解像度非依存</em><br />
				ディスプレイが72dpiという古い仮定をとっぱらいました。高解像度になると高精細にはなりますが、見づらくなるデメリットもあります。そのためにQuickDrawをやめて、Quartzを使う必要があります。</p>
				<p><strong>Graphics &amp; Media</strong><br />
				<em>ImageKit</em><br />
				ImageKitはCore ImageやCore Animationを使ったCocoaフレームワークです。イメージを見つけたりブラウズしたり表示するための機能を提供します。</p>
				<p><em>OpenGLの改良</em><br />
				OpenGL 2.1になりました。</p>
				<p><em>QuickTimeの改良</em><br />
				H264とか64ビット関連など改良されました。</p>
				<p><strong>OSの基盤</strong><br />
				<em>64ビット</em><br />
				64ビットアプリケーションが作成できます。OS Xの64ビットモデルはLP64といって、SunやSGIと同じです。64ビットになっても32ビットアプリを実行できます。インテルプロセッサでは64ビットレジスタが利用可能です。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neoneet.jp/2007/10/28/leopard-technology-overview%e8%b6%85%e8%a8%b3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cocoaプログラミング始めました、その1</title>
		<link>http://blog.neoneet.jp/2007/10/17/cocoa%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e5%a7%8b%e3%82%81%e3%81%be%e3%81%97%e3%81%9f%e3%80%81%e3%81%9d%e3%81%ae1/</link>
		<comments>http://blog.neoneet.jp/2007/10/17/cocoa%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e5%a7%8b%e3%82%81%e3%81%be%e3%81%97%e3%81%9f%e3%80%81%e3%81%9d%e3%81%ae1/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 12:09:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.neoneet.jp/?p=4</guid>
		<description><![CDATA[Cocoaプログラミングを少しやってみた。簡単、分かりやすいと言われるCocoaだけど、確かに本に書いてある通りのことをするのは簡単で「私にもできる」感はあるのだけど、どうも釈然としないものがある。これは頭が古いのだろうか、それとも既存（知っている）本の流れが自分にあわないのか。 まず、Cocoa Applicationプロジェクトを作り「ビルドして実行」を押すとウィンドウが1つ出てくる。気になるのは、なぜ出てくるのかがよくわからない。Interface Builderでnibを開いてWindowsのプロパティから&#8221;Visible at launch time&#8221;チェックボックスをオフにするとウィンドウは現れなくなる。これはウィンドウ（インスタンス）を作成しないのか、作成するが表示しないだけかがよくわからない。このような細かい疑問がふつふつと湧いてくる。&#8221;Release when closed&#8221;は閉じたときに（インスタンスを）解放するという意味だろう。ということは、これをチェックしないとウィンドウを閉じたときにメモリリークするのか、それとも使い回すという意味か。NSApplication、First Responder、File&#8217;s Ownerあたりは最初に見た方がよさそう。入門書を見ていると、これらの説明は後回しになっている。NSStringのことよりもそっちが気になる。以下学習メモ（間違ってるかも） File&#8217;s Ownerはnibを呼び出す側のこと。NSApplicationインスタンスだったり、自作のクラスのインスタンスだったり。 First Responderはコマンドチェーン関係。Viewなどにメッセージを送って応答しないとnextResponderを次々辿っていく。]]></description>
			<content:encoded><![CDATA[				<p>Cocoaプログラミングを少しやってみた。簡単、分かりやすいと言われるCocoaだけど、確かに本に書いてある通りのことをするのは簡単で「私にもできる」感はあるのだけど、どうも釈然としないものがある。これは頭が古いのだろうか、それとも既存（知っている）本の流れが自分にあわないのか。</p>
				<p>まず、Cocoa Applicationプロジェクトを作り「ビルドして実行」を押すとウィンドウが1つ出てくる。気になるのは、なぜ出てくるのかがよくわからない。Interface Builderでnibを開いてWindowsのプロパティから&#8221;Visible at launch time&#8221;チェックボックスをオフにするとウィンドウは現れなくなる。これはウィンドウ（インスタンス）を作成しないのか、作成するが表示しないだけかがよくわからない。このような細かい疑問がふつふつと湧いてくる。&#8221;Release when closed&#8221;は閉じたときに（インスタンスを）解放するという意味だろう。ということは、これをチェックしないとウィンドウを閉じたときにメモリリークするのか、それとも使い回すという意味か。NSApplication、First Responder、File&#8217;s Ownerあたりは最初に見た方がよさそう。入門書を見ていると、これらの説明は後回しになっている。NSStringのことよりもそっちが気になる。以下学習メモ（間違ってるかも）</p>
				<p>File&#8217;s Ownerはnibを呼び出す側のこと。NSApplicationインスタンスだったり、自作のクラスのインスタンスだったり。</p>
				<p>First Responderはコマンドチェーン関係。Viewなどにメッセージを送って応答しないとnextResponderを次々辿っていく。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neoneet.jp/2007/10/17/cocoa%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e5%a7%8b%e3%82%81%e3%81%be%e3%81%97%e3%81%9f%e3%80%81%e3%81%9d%e3%81%ae1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

