<?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>punsuka. &#187; dev</title>
	<atom:link href="http://ricecaker.com/category/dev/feed/" rel="self" type="application/rss+xml" />
	<link>http://ricecaker.com</link>
	<description></description>
	<lastBuildDate>Sat, 28 Aug 2010 15:00:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Objective-C Documents</title>
		<link>http://ricecaker.com/dev/333/</link>
		<comments>http://ricecaker.com/dev/333/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 05:58:40 +0000</pubDate>
		<dc:creator>nock</dc:creator>
				<category><![CDATA[dev]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://ricecaker.com/?p=333</guid>
		<description><![CDATA[			
				
			
		
ついったで@kazz12211さんにおすすめのドキュメントを教えてもらったのでメモ。
Object-Oriented Programming with Objective-C
場所↓
/ [...]]]></description>
			<content:encoded><![CDATA[<div class="wpbuzzer_button" style="float: right"><a href="http://bit.ly/aYCoaV" title="Share with Google Buzz"><img src="http://ricecaker.com?wpbuzzer_static_button=1&id=333" alt="Share with Google Buzz"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fricecaker.com%2Fdev%2F333%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fricecaker.com%2Fdev%2F333%2F&amp;source=nocknocknock&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>ついったで<a href="http://twitter.com/kazz12211">@kazz12211</a>さんにおすすめのドキュメントを教えてもらったのでメモ。</p>
<p>Object-Oriented Programming with Objective-C</p>
<p>場所↓</p>
<p>/Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.DeveloperTools.docset/<br />
Contents/Resources/Documents/documentation/Cocoa/Conceptual/OOP_ObjC</p>
]]></content:encoded>
			<wfw:commentRss>http://ricecaker.com/dev/333/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress@Xrea Server (SAFE MODE php環境)でのWordPressの自動アップグレード方法</title>
		<link>http://ricecaker.com/dev/297/</link>
		<comments>http://ricecaker.com/dev/297/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 12:56:39 +0000</pubDate>
		<dc:creator>nock</dc:creator>
				<category><![CDATA[dev]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://ricecaker.com/?p=297</guid>
		<description><![CDATA[			
				
			
		
xrea serverでWordPressを使っていると，phpにSAFE MODEがかかっていてWordPressを自動アップグレード出来ない．
エラー例：

WordPress のア [...]]]></description>
			<content:encoded><![CDATA[<div class="wpbuzzer_button" style="float: right"><a href="http://bit.ly/d7T1KR" title="Share with Google Buzz"><img src="http://ricecaker.com?wpbuzzer_static_button=1&id=297" alt="Share with Google Buzz"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fricecaker.com%2Fdev%2F297%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fricecaker.com%2Fdev%2F297%2F&amp;source=nocknocknock&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>xrea serverでWordPressを使っていると，phpにSAFE MODEがかかっていてWordPressを自動アップグレード出来ない．</p>
<p>エラー例：</p>
<blockquote>
<h2>WordPress のアップグレード</h2>
<p><a href="http://ja.wordpress.org/wordpress-2.9.1-ja.zip">http://ja.wordpress.org/wordpress-2.9.1-ja.zip</a> からアップデートをダウンロードしています。</p>
<p><strong>Warning</strong>: touch() [<a href="http://ricecaker.com/wp-admin/function.touch">function.touch</a>]: SAFE MODE Restriction in effect. The script whose uid is 10418 is not allowed to access /tmp owned by uid 0 in<strong>/virtual/<em>hogehoge</em>/public_html/wp-admin/includes/file.php</strong> on line <strong>175</strong></p>
<p>ダウンロードに失敗しました。: 一時ファイルを作成できませんでした</p>
<p>インストール失敗</p></blockquote>
<p>xreaに限らず割とよく知られている問題のようで，以下のようなまとめサイトもある．</p>
<p><a href="http://wpdocs.sourceforge.jp/セーフモードによる制限と対処方法">セーフモードによる制限と対処方法 &#8211; WordPress Codex 日本語版</a>.</p>
<p>上記URLによると，phpをcgiモードで動かすと可能っぽいです．</p>
<blockquote><p><a title="レンタルサーバ情報" href="http://wpdocs.sourceforge.jp/%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E6%83%85%E5%A0%B1#XREA">XREA</a>・<a title="レンタルサーバ情報" href="http://wpdocs.sourceforge.jp/%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%90%E6%83%85%E5%A0%B1#CORESERVER.JP">CORESERVER.JP</a> にて、PHP を CGIモードで動かすことにより対処したい場合、次の内容を書いた <code>.htaccess</code> ファイルを <code>wp-admin/</code> ディレクトリに置きます。</p>
<p>WordPress 2.9.x の場合：</p>
<pre># 画像・ファイルアップロード
&lt;files async-upload.php&gt;
AddHandler application/x-httpd-phpcgi .php
&lt;/files&gt;
# プラグイン・テーマ 新規インストール／アップグレード
&lt;Files update.php&gt;
AddHandler application/x-httpd-phpcgi .php
&lt;/Files&gt;
# 本体アップグレード
&lt;Files update-core.php&gt;
AddHandler application/x-httpd-phpcgi .php
&lt;/Files&gt;</pre>
</blockquote>
<p>ただし，メリット／デメリットがあるらしい．</p>
<p><a href="http://sb.xrea.com/showthread.php?t=10744">PHPをCGIとして動かす方法について &#8211; XREA&amp;CORE SUPPORT BOARD</a>.</p>
<blockquote><p>○メリット</p>
<p>・ユーザー権限で実行され、セーフモードがOFFになっているため、様々な制限がない。<br />
・負荷率が管理画面で見られる。</p>
<p>○デメリット</p>
<p>・モジュール版PHPに比べて、動作が遅くなる。負荷が掛かる。<br />
・XREAサーバー特有の機能で、汎用性がない。</p></blockquote>
<p>多分そこまでデメリットでもないんだろうけど，たまたま他のやり方も見つけたのでメモがてら紹介．</p>
<ol>
<li>まず，上のエラーメッセージをよく読むと，以下のようなログがある．<br\><br />
/virtual/hogehoge/public_html/wp-admin/includes/file.php<br\><br />
このパスを参考に，アップデートファイルを置く場所を以下にする．<br\><br />
/virtual/hogehoge/public_html/tmp</li>
<li>wp-admin/includes/file.phpをダウンロードして，get_temp_dir()を以下のように修正する．</li>
<pre name="code" class="php">
function get_temp_dir() {
/*
        if ( defined('WP_TEMP_DIR') )
                return trailingslashit(WP_TEMP_DIR);

        $temp = WP_CONTENT_DIR . '/';
        if ( is_dir($temp) &#038;&#038; is_writable($temp) )
                return $temp;

        if  ( function_exists('sys_get_temp_dir') )
                return trailingslashit(sys_get_temp_dir());
*/
        return '/virtual/hogehoge/public_html/tmp/';
}
</pre>
<li>自分のアカウントの/public_html/下に，tmpディレクトリを作成し，chmodでパーミッションを777にする．</li>
</ol>
<p>ええ力尽くですともｗ<br />
でもこれで一応出来ました．<strong>tmpディレクトリはアップデートが済んだら消しておいた方がいいかもしれません．</strong>また，file.phpがどのタイミングで呼び出されるかとかをちゃんと調べてないので，<strong>不具合が起きてしまう可能性があるのでfile.phpのバックアップはお忘れなく</strong>．</p>
]]></content:encoded>
			<wfw:commentRss>http://ricecaker.com/dev/297/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DDNS登録とcron+Applescriptを利用したMacでのIP自動更新方法</title>
		<link>http://ricecaker.com/iphone/87/</link>
		<comments>http://ricecaker.com/iphone/87/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 17:13:20 +0000</pubDate>
		<dc:creator>nock</dc:creator>
				<category><![CDATA[dev]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://ricecaker.com/blog/87/</guid>
		<description><![CDATA[			
				
			
		
Macで自宅サーバの第一歩として、DDNSへの登録があります。
DDNSはDynamic DNSの略で、通常のDNSサーバと違いIP更新の頻度が早く、固定IPを利用出来ないような一般家庭 [...]]]></description>
			<content:encoded><![CDATA[<div class="wpbuzzer_button" style="float: right"><a href="http://bit.ly/chIFWd" title="Share with Google Buzz"><img src="http://ricecaker.com?wpbuzzer_static_button=1&id=87" alt="Share with Google Buzz"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fricecaker.com%2Fiphone%2F87%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fricecaker.com%2Fiphone%2F87%2F&amp;source=nocknocknock&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Macで自宅サーバの第一歩として、DDNSへの登録があります。</p>
<p>DDNSはDynamic DNSの略で、通常のDNSサーバと違いIP更新の頻度が早く、固定IPを利用出来ないような一般家庭でも簡単に自宅サーバーのドメインを利用出来るというものです。</p>
<ul>
<li><a onclick="javascript:pageTracker._trackPageview('/outgoing/e-words.jp/w/DDNS.html');" href="http://e-words.jp/w/DDNS.html">DDNSとは 【ダイナミックDNS】 (Dynamic DNS) – 意味/解説/説明/定義 ： IT用語辞典</a></li>
</ul>
<p>DDNSサーバへのIP更新は基本的にはHome Pageから出来るものが多いです。しかし、自動で更新出来た方が突然のIP変更などでも安心なので、そういう仕組みを用意したいところです。</p>
<p>Windowsであれば、<a onclick="javascript:pageTracker._trackPageview('/outgoing/www.hi-ho.ne.jp/yoshihiro_e/dice/');" href="http://www.hi-ho.ne.jp/yoshihiro_e/dice/">Dice</a>などのフリーウェアを使えばいいのですが、Macにはありません（少なくとも自分は知りません）。</p>
<p>そこで、Applescriptとcronを利用したIPの自動更新方法を紹介します。</p>
<p>前提とするもの</p>
<ul>
<li>無料・ダイナミックDNS(DDNS)サービス <a onclick="javascript:pageTracker._trackPageview('/outgoing/www.ieserver.net/');" href="http://www.ieserver.net/">ieServer.Net</a>を利用する。</li>
<li>上記 ieServer.Netの登録済みであり、自身のドメインのIDおよびパスワードを入手済みである。（まだのひとは<a onclick="javascript:pageTracker._trackPageview('/outgoing/www.ieserver.net/entry.html');" href="http://www.ieserver.net/entry.html">こちらから登録</a>してください。）</li>
<li>Mac OS X (Leopard, Snow Leopard推奨）の常時稼働環境</li>
</ul>
<p>手順</p>
<p>まず、以下のURLからieServer用のApplescriptをダウンロードします。</p>
<ul>
<li><a onclick="javascript:pageTracker._trackPageview('/outgoing/ddns.jpn.ch/');" href="http://ddns.jpn.ch/">DynamicDNS with Applescript</a></li>
</ul>
<p>ファイルを解凍したら、ieServerScript0.2をAppleScriptエディタで開きます。変更するのは最初の３行</p>
<pre name="code" class="php">set UserName to "username"
set UserPassword to "password"
set Domain to "dip.jp" ---"myhome.cx" "or.cf" "jpn.ph" "fam.cx" "dip.jp" の５種類から選択</pre>
<p>上の赤字の部分です。変更／保存したら、実行をしてみましょう。</p>
<p>〜〜〜〜を保存しました。</p>
<p>と表示されればOKです。</p>
<p><img class="alignnone size-full wp-image-92" title="スクリーンショット（2009-10-07 0.55.25）" src="http://ricecaker.com/wp-content/uploads/e31b289cb29cb8017255f0c29bba7c5a.png" alt="スクリーンショット（2009-10-07 0.55.25）" width="440" height="193" /></p>
<p>次に、cronによる自動実行の準備をします。まず、今編集したスクリプトファイルをテキスト形式で保存しなおします。</p>
<p>“ファイル”→”別名で保存”を選び、<strong>ファイルフォーマットをテキストにして保存します</strong>。</p>
<p><img class="alignnone size-full wp-image-95" title="スクリーンショット（2009-10-07 1.29.58）" src="http://ricecaker.com/wp-content/uploads/de02fc8542092a8ee729af8ee9b08bfa.png" alt="スクリーンショット（2009-10-07 1.29.58）" width="438" height="269" /></p>
<p>次に、cronへスケジュールします。ターミナルからcrontabを起動</p>
<p>&gt; crontab -e</p>
<p>viが起動するので、以下のような感じに登録します。</p>
<pre name="code" class="php">0 9-17/2 * * 1-5 /usr/bin/osascript /Users/punsuka/ddns_punsuka.applescript
0 17-22/3 * * 6 /usr/bin/osascript /Users/punsuka/ddns_punsuka.applescript</pre>
<p>上記の設定の場合、平日9, 11, 13, 15, 17時、土曜日の17, 20時にIPの更新をします。</p>
<p>cronについては以下のURLを参考にしてください。</p>
<div>
<ul>
<li><a onclick="javascript:pageTracker._trackPageview('/outgoing/www.linux.or.jp/JM/html/cron/man8/cron.8.html');" href="http://www.linux.or.jp/JM/html/cron/man8/cron.8.html">Manpage of CRON</a></li>
<li><a onclick="javascript:pageTracker._trackPageview('/outgoing/park15.wakwak.com/~unixlife/linux/sys-cron.html');" href="http://park15.wakwak.com/~unixlife/linux/sys-cron.html">cronの設定</a></li>
<li><a onclick="javascript:pageTracker._trackPageview('/outgoing/miya0.dyndns.org/pc/settei/crontab.html');" href="http://miya0.dyndns.org/pc/settei/crontab.html">crontabの書き方</a></li>
<li><a onclick="javascript:pageTracker._trackPageview('/outgoing/net-newbie.com/linux/commands/vi.html');" href="http://net-newbie.com/linux/commands/vi.html">viエディタの使い方</a></li>
</ul>
</div>
<div>以上なんですが一つだけ注意点。</div>
<div>ieServer.Netは無料で利用できる便利なサービスです。IP更新を頻繁にやると、その分サーバに負荷がかかってしまいますので、あまり頻繁な更新は控えるようにしましょう。</div>
<div>※本当はIPがかわった時のみ更新するようにした方がいいんだけれど・・・やり方がわかりません。もし何か情報あればコメントください。</div>
]]></content:encoded>
			<wfw:commentRss>http://ricecaker.com/iphone/87/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>UISearchBarの検索語を先頭マッチではなく部分マッチさせるtips</title>
		<link>http://ricecaker.com/iphone/54/</link>
		<comments>http://ricecaker.com/iphone/54/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 10:28:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[dev]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://ricecaker.com/?p=54</guid>
		<description><![CDATA[			
				
			
		
iPhone SDK &#8211; TableSearch &#8211; Search all words instead of only the first one. &#8211 [...]]]></description>
			<content:encoded><![CDATA[<div class="wpbuzzer_button" style="float: right"><a href="http://bit.ly/9xHFWf" title="Share with Google Buzz"><img src="http://ricecaker.com?wpbuzzer_static_button=1&id=54" alt="Share with Google Buzz"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fricecaker.com%2Fiphone%2F54%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fricecaker.com%2Fiphone%2F54%2F&amp;source=nocknocknock&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://stackoverflow.com/questions/1116392/iphone-sdk-tablesearch-search-all-words-instead-of-only-the-first-one">iPhone SDK &#8211; TableSearch &#8211; Search all words instead of only the first one. &#8211; Stack Overflow</a>.からの抜粋メモ．</p>
<p>Appleの公開しているSample CodeであるTable Searchでリスト内検索をすると，入力した検索語と先頭からマッチする単語のみしか検索結果に出てこない点を解決するためのノウハウが書かれている．</p>
<p>TableSearchの使っているマッチング方法は，</p>
<pre name="code" class="c++">NSComparisonResult result = [product.name compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];</pre>
<p>で，これに対してresultがNSOrderedSameかどうかで判定するって方法。これだと先頭からのマッチ結果しか得られない．</p>
<p>これを解決するために，</p>
<ol>
<li>resultをNSRange型で宣言する</li>
<li>NSStringをrangeOfString:options:で部分マッチングさせる</li>
<li>resultをNSNotFoundで判定する</li>
</ol>
<p>という方法で解決できますよ，ということみたいです．</p>
<pre name="code" class="php">NSRange result = [product.name rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];</pre>
<p>自分は手探りでTableSearchを書き換えながら作っていたのでこの記事は助かった．少しずつ知識を蓄えてます :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://ricecaker.com/iphone/54/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone SDKのNDAについて</title>
		<link>http://ricecaker.com/dev/25/</link>
		<comments>http://ricecaker.com/dev/25/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 14:06:04 +0000</pubDate>
		<dc:creator>nock</dc:creator>
				<category><![CDATA[dev]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://ricecaker.com/?p=25</guid>
		<description><![CDATA[			
				
			
		
iPhone Developer ProgramのNDAの範囲がよくわかんないので調査するなど．ほとんどが一昨年や去年の情報ばっかりで，最近の動向がよく見えてこない中で１つだけ発見．
S [...]]]></description>
			<content:encoded><![CDATA[<div class="wpbuzzer_button" style="float: right"><a href="http://bit.ly/aFqKWV" title="Share with Google Buzz"><img src="http://ricecaker.com?wpbuzzer_static_button=1&id=25" alt="Share with Google Buzz"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fricecaker.com%2Fdev%2F25%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fricecaker.com%2Fdev%2F25%2F&amp;source=nocknocknock&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>iPhone Developer ProgramのNDAの範囲がよくわかんないので調査するなど．ほとんどが一昨年や去年の情報ばっかりで，最近の動向がよく見えてこない中で１つだけ発見．</p>
<blockquote><p>SDK3.0アップデイトで再度Agreementに同意しなさいって画面が出てる時点で項5.1からNDAというキーワードが消えていたのは気づいてたのだが。。。つたない英語力で超絶要約するとこんな感じ？</p>
<p>pre-releaseな内容はあいかわらずApple Confidential Informationですよ</p>
<p>commercial releaseなものはconfidentialではありません</p>
<p>つまりだ、これまではAppStoreにリリースしたアプリに関するものだけがNDAの対象から外れるってとこから、AppStoreへのリリースに関わらずAppleがiPhone Developer Programの中で正式にリリースしている情報すべてがNDAの対象に外れるっつーかNDA撤廃！みたいなことだよね。いやね、あまりにも英語理解力が乏しくて自信がなかったわけで、まぁそのうち各ニュースサイト取り上げてくれるからそれで詳細は明らかになるよねって思ってたらどこもニュース取り上げないでやんの（あくまで自分がキャッチアップしてる範囲では）。</p></blockquote>
<blockquote><p>引用元: <a href="http://kozy.heteml.jp/l4l/2009/06/iphoneiphone-sdk-nda.html"> [iPhone]iPhone SDK の NDA がさらに緩和してる件 &#8211; l4l </a>.</p></blockquote>
<p>Developer向けOSの内容にだけ注意すればいいのかな・・・？<br />
Agreement自体も&#8221;No Redistribution&#8221;ってなってて公開したら怒られそうだし。自分で作ったソースコードの公開も許されると考えてよいのだろうか。うーむ・・。</p>
<p>結局結論がわかってないんですが、メモということで公開。後で書き直すかもです。</p>
]]></content:encoded>
			<wfw:commentRss>http://ricecaker.com/dev/25/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
