<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>@Protocol</title>
<link>https://ameblo.jp/susan335/</link>
<atom:link href="https://rssblog.ameba.jp/susan335/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>メモ書きです。</description>
<language>ja</language>
<item>
<title>CentOS5.9にnode.jsをインストール</title>
<description>
<![CDATA[ nodebrew経由です。<br><br>これは、多分必要だと思う。<br><div>$ yum -y install openssl-devel</div><div>$ yum -y install gcc-c++</div><br>ここから本番。<br>$&nbsp;curl https://raw.github.com/hokaccha/nodebrew/master/nodebrew | perl - setup<br>$&nbsp;export PATH=$HOME/.nodebrew/current/bin:$PATH<br>$&nbsp;source ~/.bashrc<br>$&nbsp;nodebrew install v0.8.18<br><br>っと、ここでエラー。<br><div style="text-align: left;"><div style="text-align: left;">&nbsp; File "./configure", line 355</div><div style="text-align: left;">&nbsp; &nbsp; 1 if options.unsafe_optimizations else 0)</div><div style="text-align: left;">&nbsp; &nbsp; &nbsp; &nbsp;^</div><div style="text-align: left;">SyntaxError: invalid syntax<br><br>原因はPython。一時的にシンボル入れ替え<br><div style="text-align: left;">$ sudo yum install python26</div><div style="text-align: left;">$ ls -l /usr/bin/python*</div><div style="text-align: left;">$ rm /usr/bin/python</div><div style="text-align: left;">$ ln -s /usr/bin/python26 /usr/bin/python<br><br>$ nvm install v0.8.18<br></div></div></div>
]]>
</description>
<link>https://ameblo.jp/susan335/entry-11463767986.html</link>
<pubDate>Mon, 04 Feb 2013 21:12:42 +0900</pubDate>
</item>
<item>
<title>Xibファイルのローカライズ (っていうか自動マージ)</title>
<description>
<![CDATA[ Xibファイルが各言語毎にある場合、<br>レイアウトの変更とか、ボタン追加とか、<br>全部のファイルを変更しなきゃいけないから面倒くさい。<br><br>一応、コマンドラインのibtoolなるものが存在し、<br>頑張ればレイアウト変更などを自動的にマージしてくれる。<br><br>ibtoolのコマンドをGUIから叩けるツールを作ったので欲しい方はどうぞ。<br><a></a><a></a><a href="https://github.com/susan335/XibFileMerge" target="" title="">GitHub - XibFileMerge</a><br>簡易的なツールですので作り込みはアマアマです。<br><br>このサンプルは、現状Xcode3.2.6向けです。<br>ビルドバイナリはMountainLionでも動作しました。<br>
]]>
</description>
<link>https://ameblo.jp/susan335/entry-11463392542.html</link>
<pubDate>Mon, 04 Feb 2013 10:41:56 +0900</pubDate>
</item>
<item>
<title>UITextField、UITextView、キーボードで隠れないようにする</title>
<description>
<![CDATA[ <b>UITextField</b><br>UIScrollViewのSubviewとして配置し、編集時に隠れない位置までスクロールさせる。<br><br>UITextView<br>キーボードで隠れる部分をのぞいた矩形にリサイズする。すると、カーソル位置が常に見える位置になる。<br><br>サンプルソースはこちら<br><a></a><a href="https://github.com/susan335/TextEditSample" target="" title="">GitHub</a><br><br>
]]>
</description>
<link>https://ameblo.jp/susan335/entry-11463041994.html</link>
<pubDate>Sun, 03 Feb 2013 21:21:56 +0900</pubDate>
</item>
<item>
<title>Mac core dumpの取り方</title>
<description>
<![CDATA[ Macが2台必要。<br>※1台でも出来るかも知れないが、やり方を知らない。。。<br><br>あと、この方法はLeopard以降で有効だと思います。<br><br>サーバー　　：dumpファイルを受信するマシン<br><br>クライアント：dumpを送る試験マシン<br><br><b>1.サーバーマシンでコマンド実行</b><br><em>sudo mkdir /PanicDumps</em><br><br><em>sudo chown root:wheel /PanicDumps</em><br><br><em>sudo chmod 1777 /PanicDumps</em><br><br><em>sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.kdumpd.plist</em><br><br><em>sudo launchctl list | grep kdump<br></em><br><b>2.サーバーでplistを編集</b><br>/System/Library/LaunchDaemons/com.apple.kdumpd.plist<br><br>Key "Disable" を削除する。<br><br><b>3.クライアントでコマンド実行</b><br>サーバーのIPアドレスが、'169.254.0.0'だったとして<br><br><i>sudo nvram boot-args="debug=0xd44 _panicd_ip=169.254.0.0"</i><br><span class="Apple-style-span" style="font-style: normal; ">※仮想環境(VMWare)の場合は<br>&nbsp;/Library/Preferences/SystemConfiguration/com.apple.Boot.plist<br></span>key"Kernel Flags" に<br><i>-v&nbsp;debug=0xd44 _panicd_ip=169.254.0.0</i><br><br><b>4.クライアント再起動</b><br><b><br></b><br>意図的にカーネルパニック起こすには<br><em>sudo dtrace -w -n "BEGIN{ panic();}"</em><br><br><pre class="sourcecodebox">sudo gdb -c /PanicDumps/core-xnu-...<br>とかして、バックトレース見れる。<br>シンボル読み込ませるには<br>add-symbol-file /hogehoge<br><br>ADCにKernel Debug Kitで検索すると、<br><div>mach_kernelのシンボルとかも手に入る。<br><br>参考：<a href="http://developer.apple.com/library/mac/#technotes/tn2004/tn2118.html" target="" title="">http://developer.apple.com/library/mac/#technotes/tn2004/tn2118.html</a><a></a></div></pre><br>
]]>
</description>
<link>https://ameblo.jp/susan335/entry-11445482943.html</link>
<pubDate>Wed, 09 Jan 2013 17:27:42 +0900</pubDate>
</item>
<item>
<title>サーバーサイド初心者がPassBookサーバーを作った(環境構築 編)</title>
<description>
<![CDATA[ <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'"><span style="font: 12.0px Times">環境構築<br><br>1.</span>インストーラー叩く</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">たいそうなもんじゃない。インストーラー叩くだけ。</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times">http://nodejs.org/download/</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px"><br></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'"><span style="font: 12.0px Times">2.</span>拡張モジュールをインストール</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">とりあえず、これだけ。</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; color: #042eee"><span style="text-decoration: underline"><a href="http://expressjs.com/">express</a></span></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'"><span style="font: 12.0px Times">node.js</span>をインストールしたら、以下のコマンドを叩く。</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times">$ sudo npm install -g espress</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times"><span style="font: 12.0px 'Hiragino Mincho ProN'">（</span>Mac/Linux<span style="font: 12.0px 'Hiragino Mincho ProN'">の場合）</span></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px"><br></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">これで大体こと足りる。</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'"><span style="font: 12.0px Times">Apache</span>みたいな面倒な準備は不要。<br><br><b>※重要</b><br>PassBook.appはhttps通信に対応しているサーバーでないと、ハジカレてしまいます。<br>また、第三者機関で証明された証明書を使っていないとNGです。<br>証明書の準備が出来ない場合は、iPhoneへ開発者のプロファイルをインストールし<br>設定.appの "デベロッパ" で Allow HTTP Services を ONにしましょう。<br></p><br>
]]>
</description>
<link>https://ameblo.jp/susan335/entry-11431556089.html</link>
<pubDate>Fri, 21 Dec 2012 10:11:56 +0900</pubDate>
</item>
<item>
<title>サーバーサイド初心者がPassBookサーバーを作った</title>
<description>
<![CDATA[ iOS触ってたら PassBook対応 のナニガシに誘われたので作ることになった。<br><br>PassBookサーバーとして、対応する通信は<br>・デバイス登録<br>・Passのシリアルナンバーを返す<br>・最新のPassを返す<br>・デバイス削除<br>・PassBookアプリからのログ受信<br>ざっくりこんなもんです。<br>詳しくは&nbsp;<a></a><a href="https://developer.apple.com/library/ios/#documentation/PassKit/Reference/PassKit_WebService/WebService.html" target="" title="">Passbook Web Service Reference</a><br><br><br>サーバー環境<br>・Mac OSX Server 10.8<br>・node.js<br><br>PassBookサーバーはhttpサーバーであれこれします。<br>Apacheなど、環境構築のコストを考慮すると、<br>node.jsで書くのが効率的に思えました。<br><br>以下、参考にさせて頂きました。<br><a></a><a href="http://blog.techfirm.co.jp/2012/10/23/node-js%E3%81%A7passbook%E3%82%B5%E3%83%BC%E3%83%90%E3%82%92%E3%81%A4%E3%81%8F%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B1/" target="" title="">node.jsでPassbookサーバをつくってみる(1)</a><br><br>Obj-Cプログラマとして、「あれー、これどーすんだ？」ってトコとか重点的にメモしていこうと思います。<br>
]]>
</description>
<link>https://ameblo.jp/susan335/entry-11431552077.html</link>
<pubDate>Fri, 21 Dec 2012 09:50:41 +0900</pubDate>
</item>
<item>
<title>構造体struct を NSDictionaryへ</title>
<description>
<![CDATA[ CやC++の構造体をNSDictionaryとか、NSArrayに入れる方法。<br>または<br>CやC++の構造体をオブジェクトのプロパティに突っ込んでCocoaBindingする方法。<br><br>大体、このパターンはNSValueでラップする。<br><br><b>構造体をNSValueに入れる</b><br>struct Hoge *hogePtr;<br>NSValue *value =[NSValue valueWithPointer:hogePtr];<br><br><b>NSValueから構造体を取り出す<br></b>NSValue *value;<br>void *ptr = [value pointerValue];<br>struce Hode *hogePtr = static_cast&lt;Hoge*&gt;(ptr);<br><br>static_castを使うときは、ソースファイルの拡張子を *.mmに。<br>C++なので。
]]>
</description>
<link>https://ameblo.jp/susan335/entry-11431541638.html</link>
<pubDate>Fri, 21 Dec 2012 09:26:52 +0900</pubDate>
</item>
<item>
<title>awakeFromNib とか init とか</title>
<description>
<![CDATA[ <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'"><span style="font: 12.0px Times">UIView</span>とか、<span style="font: 12.0px Times">NSView</span>の初期化処理の実装を</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">どこに記述するべきか？</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px"><br></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times"><b>- (void)awakeFromNib</b></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">メンバのインスタンスは<span style="text-decoration: underline">生成済み</span></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">呼び出し回数は一回とは<span style="text-decoration: underline">限らない</span></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times"><b>- (id)initWithFrame:(</b><a href="https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/Reference/reference.html#//apple_ref/doc/c_ref/NSRect"><span style="text-decoration: underline ; color: #042eee"><b>NSRect</b></span></a><b>)<i>frameRect</i></b></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times"><b>- (id)initWithCoder:(</b><a href="https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSCoder_Class/Reference/NSCoder.html#//apple_ref/doc/c_ref/NSCoder"><span style="text-decoration: underline ; color: #042eee"><b>NSCoder</b></span></a><b>&nbsp;*)<i>decoder</i></b></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">メンバのインスタンスは<span style="text-decoration: underline">未生成</span></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">呼び出し回数は<span style="text-decoration: underline">一回</span></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px"><br></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">最低限、これだけ把握していれば判断出来るかと。</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px"><br></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px"><br></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times"><b>- (void)awakeFromNib</b></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'"><span style="font: 12.0px Times">View</span>が<span style="font: 12.0px Times">Nib</span>からロードされた後に呼ばれる。</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'"><span style="font: 12.0px Times">(View</span>だけじゃないけど<span style="font: 12.0px Times">)</span></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'"><span style="font: 12.0px Times">1</span>つのインスタンスに対して、<span style="font: 12.0px Times; text-decoration: underline">1</span><span style="text-decoration: underline">回だけ呼ばれるとは限らない</span>。</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">例えば、<span style="font: 12.0px Times">TestView</span>を<span style="font: 12.0px Times">nib</span>からロードしたとする。</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times">TestView<span style="font: 12.0px 'Hiragino Mincho ProN'">から</span>&nbsp;-initWithNibName: bundle: <span style="font: 12.0px 'Hiragino Mincho ProN'">などで、</span>Test2View<span style="font: 12.0px 'Hiragino Mincho ProN'">をロードしたとする。</span></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times"><span style="font: 12.0px 'Hiragino Mincho ProN'">このとき、</span>TestView<span style="font: 12.0px 'Hiragino Mincho ProN'">の</span>&nbsp;awakeFromNib <span style="font: 12.0px 'Hiragino Mincho ProN'">も呼ばれる。</span></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">細かい話はリファレンスで</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times">MacOS</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; color: #042eee"><span style="text-decoration: underline"><a href="https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Protocols/NSNibAwaking_Protocol/Reference/Reference.html">NSNibAwaking Protocol Reference<span style="font: 12.0px Times; text-decoration: underline"></span></a></span></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times">iOS</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; color: #042eee"><span style="text-decoration: underline"><a href="https://developer.apple.com/library/ios/#documentation/UIKit/Reference/NSObject_UIKitAdditions/Introduction/Introduction.html">NSObject UIKit Additions Reference<span style="font: 12.0px Times; text-decoration: underline"></span></a></span></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times; min-height: 14.0px"><br></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times"><b>- (id)initWithFrame:(</b><a href="https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/Reference/reference.html#//apple_ref/doc/c_ref/NSRect"><span style="text-decoration: underline ; color: #042eee"><b>NSRect</b></span></a><b>)<i>frameRect</i></b></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">これ、<span style="font: 12.0px Times">nib</span>からロードしたときは呼ばれない。</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times"><b>- (id)initWithCoder:(</b><a href="https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSCoder_Class/Reference/NSCoder.html#//apple_ref/doc/c_ref/NSCoder"><span style="text-decoration: underline ; color: #042eee"><b>NSCoder</b></span></a><b> *)<i>decoder</i></b></p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">呼ばれるのはコッチ。</p><br><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Hiragino Mincho ProN'">この<span style="font: 12.0px Times">2</span>つは普通、<span style="font: 12.0px Times">1</span>つのインスタンスに対して、<span style="font: 12.0px Times">1</span>回だけ呼ばれる。普通は。</p><br>
]]>
</description>
<link>https://ameblo.jp/susan335/entry-11424889208.html</link>
<pubDate>Tue, 11 Dec 2012 15:38:35 +0900</pubDate>
</item>
<item>
<title>NSStringを1行毎に分解</title>
<description>
<![CDATA[ 改行コードでセパレートとか考える人もいるかも知れないけど…<br><br>望ましいのはこれ<br><br>NSString *aString; // マルチラインの文字列<br><div>NSUInteger lineEnd = 0;</div><div>while (lineEnd &lt; [aString length])</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre"></span>NSRange currentRange = [aString lineRangeForRange:NSMakeRange(lineEnd, 0)];</div><div><span class="Apple-tab-span" style="white-space:pre"></span>NSString *currentLine = [aString substringWithRange:currentRange];</div><div><span class="Apple-tab-span" style="white-space:pre"></span></div><div><span class="Apple-tab-span" style="white-space:pre"></span>lineEnd = currentRange.location + currentRange.length;</div><div>}<br><br>NSStringのインスタンスメソッド、lineRangeForRange: で1行辺りのRangeを取る。<br>あとはぐるぐる回すだけ～</div><br>
]]>
</description>
<link>https://ameblo.jp/susan335/entry-11419724149.html</link>
<pubDate>Tue, 04 Dec 2012 14:02:16 +0900</pubDate>
</item>
<item>
<title>performSelectorOnMainThread に複数の引数</title>
<description>
<![CDATA[ 何かと便利な&nbsp;performSelectorOnMainThread。<br>これに引数を何個も渡したい。そんなときは…<br><a href="https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSInvocation_Class/Reference/Reference.html" target="" title="">NSInvocation</a>を使う。<br><br>私はNSObjectのカテゴリを作っちゃます。<br>こんな感じ<br><br><div>@interface NSObject (MainThreadInvoke)</div><div>- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg withObject:(id)arg2 waitUntilDone:(BOOL)wait;</div><div>@end<br><br>実装はこんなかんじ<br><div>- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg withObject:(id)arg2 waitUntilDone:(BOOL)wait</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre"></span>NSMethodSignature *aSignature = [[self class] instanceMethodSignatureForSelector:aSelector];</div><div><span class="Apple-tab-span" style="white-space:pre"></span>NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:aSignature];</div><div><span class="Apple-tab-span" style="white-space:pre"></span>[invocation setSelector:aSelector];</div><div><span class="Apple-tab-span" style="white-space:pre"></span>[invocation setTarget:self];</div><div><span class="Apple-tab-span" style="white-space:pre"></span>[invocation setArgument:&amp;arg atIndex:2];</div><div><span class="Apple-tab-span" style="white-space:pre"></span>[invocation setArgument:&amp;arg2 atIndex:3];</div><div><span class="Apple-tab-span" style="white-space:pre"></span></div><div><span class="Apple-tab-span" style="white-space:pre"></span>[invocation performSelectorOnMainThread:@selector(invoke)</div><div><span class="Apple-tab-span" style="white-space:pre"></span> withObject:nil</div><div><span class="Apple-tab-span" style="white-space:pre"></span> &nbsp;waitUntilDone:wait];</div><div>}<br><br>キモはinvocationのsetArgument。<br>indexが2から始まるのは0と1が予約済みだから。<br>0がselfで1が何だっけな？？？そんな感じ。</div></div><br>
]]>
</description>
<link>https://ameblo.jp/susan335/entry-11419719828.html</link>
<pubDate>Tue, 04 Dec 2012 13:51:28 +0900</pubDate>
</item>
</channel>
</rss>
