<feed xmlns="http://www.w3.org/2005/Atom">
    <title>RAKUGAKI.jp</title>
    <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/" />
    <link rel="self" type="application/atom+xml" href="http://www.rakugaki.jp/atom.xml" />
    <id>tag:www.rakugaki.jp</id>
    <updated>2010-02-19T05:02:56+09:00</updated>
        <entry>
        <title>地図メモ開発状況</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20100219,26.html" />
        <id>tag:www.rakugaki.jp//26</id>
        <published>2010-02-19T05:00:00+09:00</published>
        <updated>2010-02-19T05:02:56+09:00</updated>
        <summary>いつも地図メモをご利用いただきありがとうござい...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<div>いつも地図メモをご利用いただきありがとうございます。</div><div>また、ご意見、ご感想、ご要望等、たくさんいただきまして大変感謝しております。</div><div>皆様からのコメントはアップデートする上でとても参考にさせていただいております。</div><div><br></div>アップデートが滞っていて大変申し訳ないのですが、現在の地図メモ開発状況をお知らせいたします。<div><br></div><div>現在、サーバにバックアップが取れるようにサーバ側の準備を日々行っている現状です。</div><div>iPhone端末での入力もやはり面倒なので、PCからウェブ経由で情報の整理などを行えるようにしています。</div><div><br></div><div><br></div><div>・地図メモウェブのオープン</div><div>iPhone端末でとりあえず場所だけチェックしておいて、帰宅してからウェブで詳細を記入。なんてことができるようになるので、とても便利になると考えています。</div><div>これができると、バックアップをサーバに残しつつ、使い勝手も良くなるので頑張って作っています。</div><div><br></div><div>・地図メモとウェブとの自動同期</div><div>一件一件手動で同期をするのはやはり面倒（自分で作ってみて試しましたがやっぱり面倒）なので、一回同期の設定をしたら自動的に同期をするようにしようと思います。アプリ側で自動同期をしない設定もできるようにする予定なので、同期したくない方はしないこともできる感じです。</div><div><br></div><div>・写真の一覧表示</div><div>数名の方からご要望を戴いていた、写真からメモを選択出来る機能を次のアップデートで入れ込む予定です。「地図表示」「一覧表示」「写真表示」の３つの表示方法ができる感じになるので、ボタンが少々多くなってしまい煩雑になりそうなのが心配なところですが、使っているととても便利なのでこれは次に入れていこうと思っています。</div><div><br></div><div>・Google先生から検索</div><div>iPhoneでどういうUIを作ったら便利に実装できるのかまだ悩んでいるところです。自分的にも欲しい機能なので入れたいのですが、もう少し考えさせてください。ウェブ版では始めから入れていこうと思っています。</div><div><br></div><div><br></div><div>正直なお話し、自動同期部分の実装で手間取っています。バックグラウンドで同期をするのは必須と考えているのですが、何か操作をしている時にマレにエラーでアプリが落ちてしまう現象が数件確認されているので、もう少しテストをしてからリリースすることになりそうです。</div><div>バックアップを心待ちにしている皆様にはご迷惑をおかけしますが、今しばらくお待ちいただければと思います。</div><div><br></div><div><br></div><div>ウェブにデータを保存するときには、やっぱり利用規約とか必要ですよね・・・</div><div>個人で運営するには危険なんだろうかとちょっと心配になっています。。。</div><div>そのあたりに詳しい方で心優しい方、アドバイスをいただけると大変ありがたいです。</div><div><br></div><div><br></div>]]>
		</content>
    </entry>
        <entry>
        <title>地図メモ 3.0.0 が公開されたぞ！</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20100120,25.html" />
        <id>tag:www.rakugaki.jp//25</id>
        <published>2010-01-20T04:00:00+09:00</published>
        <updated>2010-01-20T14:07:22+09:00</updated>
        <summary>
表記のとおり、地図メモ3.0.0が公開されました！
...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
表記のとおり、地図メモ3.0.0が公開されました！<br />
まとまった時間がなかなか取れず、更新を待っていただいている皆様には大変ご迷惑をおかけしていると、ただただ反省ばかりです。<br />
ウェブサイトの内容も更新できておりませんが、ウェブより先にサービス優先なのでまだまだ頑張りたいと思います。<br />
<br />
皆様からたくさんご意見、ご感想戴いていること、大変感謝しております。<br />
皆様のご意見をたくさん入れつつ、使いにくくならないようになんとか頑張って作っていきたいと思います。<br />
<br />
今後ともどうぞよろしくお願いいたします。<br />
<br />
<br />
# iPod touch対応も今行っているところです。基本的にGPS取れないのでどのような実装にしたらいいのか迷っています。GPS取れないとちょっと不便になってしまうのですが満足に使用してもらえるのかがとても心配なところです。「とりあえず」使えるようにはしてリリースしますのでiPod touch版、もう少々お待ちください！
</p>

]]>
		</content>
    </entry>
        <entry>
        <title>地図メモ 2.1.0 が公開されたぞ！</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20091028,24.html" />
        <id>tag:www.rakugaki.jp//24</id>
        <published>2009-10-28T14:35:00+09:00</published>
        <updated>2009-10-28T14:37:40+09:00</updated>
        <summary>
申請から約2週間、ようやく公開されました。

今...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
申請から約2週間、ようやく公開されました。<br />
<br />
今回はみなさまからのご意見を主にアップデート内容としたのですが、色々詰め込みすぎてUIがややごちゃごちゃしてしまった感が否めません。<br />
色々すっきりしたUIを考えているのですが、んー悩ましい。<br />
<br />
色々ご意見いただけるとありがたいです。
</p>

]]>
		</content>
    </entry>
        <entry>
        <title>地図メモ 2.1.0 の申請をしたぞ</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20091016,23.html" />
        <id>tag:www.rakugaki.jp//23</id>
        <published>2009-10-16T01:20:00+09:00</published>
        <updated>2009-10-16T01:48:48+09:00</updated>
        <summary>
ようやくアップデートとバグチェックが終わったの...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
ようやくアップデートとバグチェックが終わったので申請かけました。<br />
おそらく10日前後でアップデートかかると思います。<br />
今回はみなさんにもらったご意見をふんだんに盛り込んで結構なアップデートになります。<br />
少々UI変わったところもあるから、気に入ってもらえるかちと心配ですが・・・
</p>

<p>
＜機能追加＞<br />
- メモへの電話番号、メールアドレス、URL項目の追加<br />
- メモからダイレクトに電話、メール、ウェブ閲覧機能追加<br />
- メモをアドレス帳に登録する機能追加<br />
- メモからの「マップアプリ」立ち上げ機能追加<br />
- 一覧表示でのメモ検索機能追加<br />
<br />
＜機能変更＞<br />
- カテゴリ管理ボタンを設定ボタンへと変更<br />
　設定画面からカテゴリ名や、カテゴリ並び替え可能<br />
<br />
＜バグfix＞<br />
- 写真を削除する際に複数枚同時に消えてしまうバグをfix<br />
<br />
＜パフォーマンス改善＞<br />
- 地図表示でピンが大量に立っている場合のパフォーマンス改善<br />
- 一覧表示の動作高速化<br />

</p>

<p>
大きな機能としては、検索が乗っかったことが大きいかな？<br />
数が増えてもある程度は対応できるんじゃないかと思います。<br />
あと、どなたかに指摘をもらっていた「外部連携」関連の機能をかなり盛り込みました。<br />
電話をかけたり、メールができたり、ウェブが見れたり、連絡先追加できたり、標準で入ってるマップアプリにピンを立てて起動できたり。<br />
メモ詳細画面も、AppBankさんの記事で「これ好きじゃない」って言われてしまったのでちょっと改造しておきました。気に入ってもらえるかどうか・・・
</p>

<p>
とまあ、心配もありつつ、期待もありつつ。<br />
結構気合い入れてアップデートしたのでぜひぜひ感想とかいただけるとありがたいです。
</p>

<p>
地図メモ用のtwitterアカウント作りました！<br />
<a href="http://twitter.com/mapnote">@mapnote</a><br />
<br />
どしどしご意見、ご感想いただければと思います！
</p>

]]>
		</content>
    </entry>
        <entry>
        <title>Snow Leopardでffmpegを使えるようにする</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20091012,22.html" />
        <id>tag:www.rakugaki.jp//22</id>
        <published>2009-10-12T01:20:00+09:00</published>
        <updated>2009-10-12T01:23:23+09:00</updated>
        <summary>
Snow Leopardにしてからffmpegの存在をすっかり忘...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
Snow Leopardにしてからffmpegの存在をすっかり忘れていて、使おうと思ったらなかった・・・<br />
インストールしてみよう。<br />
<br />
まずは準備から
</p>

<p>
<strong>lameをいれる</strong><br />
<br />
<a href="http://lame.sourceforge.net/download.php">ここ</a>からダウンロードしてくる
</p>

<pre class="brush:command;">
$ tar zxvf lame-398-2.tar.gz
$ cd lame-398-2
$ ./configure
$ make
$ sudo make install
</pre>

<p>
<strong>faac/faadをいれる</strong><br />
<br />
<a href="http://www.audiocoding.com/downloads.html">ここ</a>からダウンロードしてくる
</p>

<pre class="brush:command;">
$ tar zxvf faad2-2.7.tar.gz
$ cd faad2-2.7
$ ./configure
$ make
$ sudo make install

$ tar zxvf faac-1.28.tar.gz
$ cd faac-1.28
$ ./configure
$ make
$ sudo make install
</pre>

<p>
準備は終わり、ffmpeg入れます。<br />
<br />
チェックアウトしてきてインストール開始
</p>

<pre class="brush:command;">
$ svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
$ cd ffmpeg
$ ./configure --enable-libmp3lame --enable-libfaac --enable-libfaad \
   --enable-gpl --enable-nonfree --enable-shared --disable-mmx --arch=x86_64
$ make
$ sudo make install

</pre>

<p>
しゅうりょーう！
</p>

]]>
		</content>
    </entry>
        <entry>
        <title>地図メモがAppBankに載りました！</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20091011,21.html" />
        <id>tag:www.rakugaki.jp//21</id>
        <published>2009-10-11T22:35:00+09:00</published>
        <updated>2009-10-11T22:55:21+09:00</updated>
        <summary>
ありがたいことに、AppBankにて @toshism0331 氏...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
ありがたいことに、AppBankにて @toshism0331 氏に「地図メモ」のご紹介をしていただきました！<br />
<a href="http://www.appbank.net/2009/10/11/iphone-application/56116.php">地図メモ: デフォルトのマップの『メモ機能』に不満があるあなたへ。</a><br />
<br />
大変感謝です。。<br />
やはりメディア力というのはとんでもないんだなーとつくづく実感です。<br />
<br />
これからもがんばってアップデートしていこうと思いマッス！<br />
<br />
<a href="http://www.rakugaki.jp/app/mapnote/">こちら</a>に詳細情報掲載してます！
</p>

]]>
		</content>
    </entry>
        <entry>
        <title>CEATECいってきた</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20091010,20.html" />
        <id>tag:www.rakugaki.jp//20</id>
        <published>2009-10-10T16:10:00+09:00</published>
        <updated>2009-10-10T16:39:28+09:00</updated>
        <summary>
昨日CEATEC行ってきた。
数年ぶりの参戦だったか...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
昨日CEATEC行ってきた。<br />
数年ぶりの参戦だったからドキドキしながらブースまわってきやした。
</p>

<p>
<img src="/assets/images/200910/10161156_4_m.jpg" alt="IMG_0267" align="left"/>やっぱり一番インパクトあったのはセカイカメラブースかなーと。<br />
他のブースとは全然空気が違っていて、秋葉原にいるような雰囲気？<br />
ちょうど歌っているとこを拝見できたんだけども、「セカイカメラ」でどうやら歌わせる曲を投票させたかったみたいだね。。ほとんどの人が持っていなくて断念。<br />

</p>

<p>
<img src="/assets/images/200910/10161159_5_m.jpg" alt="IMG_0271" align="left"/>実際にセカイカメラ立ち上げてみるとたくさんのミクたちが中を漂っていましたw<br />
会場全体のいたるところに色んなエアタグはられててなかなか楽しかったっす。<br />
今までと違った楽しみ方ができる点でセカイカメラ面白いなーと。
</p>

<p>
<img src="/assets/images/200910/10161148_2_m.jpg" alt="IMG_0262" align="left"/>実は他のブースはあんまりインパクトにかけたかなーって感じ。<br />
個人的に「コレキタ」だったのは、TOSHIBAのセルレグザ！実際画面をのぞいてみたんだけど、きれいすぎる。ってかきれいすぎて気持ち悪いくらい。<br />
今世の中に出回っているフルハイビジョンテレビって、アナログから移行したときにはマジで感動できる代物だけども、セルレグザはそれと同じくらいのインパクトがあるかも！！<br />
縦の弱い部分を強くしたってことだけど、それだけでここまで変わるものなのかーと驚愕
</p>

<p>
<img src="/assets/images/200910/10161153_3_m.jpg" alt="IMG_0263" align="left"/>あとは、色んなブース総合して3Dに力入ってるなーと思った。<br />
SONYさんにしても、他のブースにしても3Dをかなり全面に出してきていた感じ。<br />
3Dをいかにして酔わないように提供するかをとりあえず実装してもらえればとても面白い世の中になりそうだね。<br />

</p>

<p>
いつの日かどこからが現実との境界線なのかわからない世の中になりそうな気がしました。<br />
やっぱCEATECは近未来的な感じでとても楽しい！技術最高！
</p>

]]>
		</content>
    </entry>
        <entry>
        <title>ウェブサイトをリニューアルしました！</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20091003,19.html" />
        <id>tag:www.rakugaki.jp//19</id>
        <published>2009-10-03T20:10:00+09:00</published>
        <updated>2009-10-03T20:12:29+09:00</updated>
        <summary>
今までblog.rakugaki.jpにてブログを書いておりま...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
今までblog.rakugaki.jpにてブログを書いておりましたが、更新頻度が少なかったのと、iPhoneアプリをまとめて紹介できるページが欲しかったのでwww.rakugaki.jpとしてサイトをリニューアルしました。<br />
<br />
このサイトを通して、わたくしのiPhoneアプリを使っていただいているユーザのみなさまとコミュニケーションがとれることを祈っております。
</p>

]]>
		</content>
    </entry>
        <entry>
        <title>Mac開発環境(Apache/PHP/MySQL)</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20090822,18.html" />
        <id>tag:www.rakugaki.jp//18</id>
        <published>2009-08-22T17:00:00+09:00</published>
        <updated>2009-10-03T23:22:55+09:00</updated>
        <summary>
毎回毎回Leopard再インストールするたびに忘れて...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
毎回毎回Leopard再インストールするたびに忘れてしまうのでメモっとく。
</p>

<p>
MapPortsをアップデート
</p>

<pre class="brush:command;">
$ sudo port -d selfupdate
</pre>

<p>
gawkとnawkを入れておく
</p>

<pre class="brush:command;">
$ sudo port install gawk
$ sudo port install nawk
</pre>

<p>
MySQLインストール
</p>

<pre class="brush:command;">
$ sudo port install mysql5-devel
$ sudo port install mysql5-server-devel
$ sudo /opt/local/bin/mysql_install_db5 --user=_mysql
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
$ sudo /opt/local/lib/mysql5/bin/mysqladmin -u root password 'password'
</pre>

<p>
Apache/PHPインストール
</p>

<pre class="brush:command;">
$ sudo port install php5 +apache2 +mysql5 +sqlite +gd +pear
$ cd /opt/local/apache2/modules
$ sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
</pre>

<p>
PHPでimagickを使えるようにしておく
</p>

<pre class="brush:command;">
$ sudo port install ImageMagick +no_x11 +perl +q32 +hdri +jpeg
$ sudo port install re2c
$ pecl install imagick
Please provide the prefix of Imagemagick installation [autodetect] : /opt/local
$ sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini
$ cd /opt/local/lib/php/extensions
$ sudo ln -s no-debug-non-zts-20090626/imagick.so
$ sudo echo extension=imagick.so &gt;&gt; /opt/local/etc/php5/php.ini
</pre>

<p>
Pearで使うだろうパッケージをインストールしておく
</p>

<pre class="brush:command;">
$ sudo pear install Mail
$ sudo pear install Mail_mime
$ sudo pear install HTTP_Request
$ sudo pear install Calendar-0.5.4
$ sudo pear install Services_Amazon_S3-0.2.0
$ sudo pear install Services_Facebook-0.2.8
$ sudo pear install OLE-1.0.0RC1
$ sudo pear install Spreadsheet_Excel_Writer-0.9.1
$ sudo pear install PhpDocumentor
</pre>

]]>
		</content>
    </entry>
        <entry>
        <title>アイドルタイマーを無効にする</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20090731,17.html" />
        <id>tag:www.rakugaki.jp//17</id>
        <published>2009-07-31T01:50:00+09:00</published>
        <updated>2009-10-03T20:04:40+09:00</updated>
        <summary>
iPhoneではデフォルトでアイドルタイマーが有効に...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
iPhoneではデフォルトでアイドルタイマーが有効になっている。<br />
これが働いてしまうとなんか処理中のときに画面が真っ暗になってしまい一旦スリープモードに。。<br />
これを回避したいときにやりかた。
</p>

<pre class="brush:objc;">
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
</pre>

]]>
		</content>
    </entry>
        <entry>
        <title>iPhoneで連絡先に追加</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20090729,16.html" />
        <id>tag:www.rakugaki.jp//16</id>
        <published>2009-07-29T16:10:00+09:00</published>
        <updated>2009-10-03T20:04:56+09:00</updated>
        <summary>
よーやく理解できたー
結構簡単に連絡先追加でき...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
よーやく理解できたー<br />
結構簡単に連絡先追加できるのね。UIも用意してくれてるみたいだし。<br />
うん、こりゃ便利。
</p>

<p>
--- AddBookViewController.h ---
</p>

<pre class="brush:objc;">
#import &lt;AddressBook/AddressBook.h&gt;
#import &lt;AddressBookUI/AddressBookUI.h&gt;

@interface AddBookViewController : UIViewController &lt;ABNewPersonViewControllerDelegate&gt; {
}

@end

</pre>

<p>
--- AddBookViewController.m ---
</p>

<pre class="brush:objc;">
#import "AddBookViewController.h"

@implementation AddBookViewController

- (void)viewDidLoad {
	UIButton *addBookButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
	[addBookButton setFrame:CGRectMake(10, 10, 300, 30)];
	[addBookButton setTitle:@"AddBook" forState:UIControlStateNormal];
	[addBookButton.titleLabel setFont:[UIFont systemFontOfSize:14.0]];
	[addBookButton addTarget:self action:@selector(addBookButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
	[self.view addSubview:addBookButton];
	[addBookButton release];
}

- (void)addBookButtonClicked:(UIButton *)sender {
	NSString *lastName = @"Last";
	NSString *firstName = @"First";
	NSString *telNum = @"03-0000-0000";
	NSString *url = @"http://blog.rakugaki.jp";
	NSString *addressPostal = @"100-0000";
	NSString *addressPref = @"Tokyo";
	NSString *addressCity = @"Machida";
	NSString *addressStreet = @"1-1-1-1";
	UIImage *faceImage = [UIImage imageNamed:@"icon.png"];
	// create view controller
	ABNewPersonViewController *viewController = [[ABNewPersonViewController alloc] initWithNibName:nil bundle:nil];
	ABRecordRef newBook = ABPersonCreate();
	CFErrorRef error;
	// name
	ABRecordSetValue(newBook, kABPersonLastNameProperty, (CFStringRef)lastName, &amp;error);
	ABRecordSetValue(newBook, kABPersonFirstNameProperty, (CFStringRef)firstName, &amp;error);
	// phone
	ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
	ABMultiValueAddValueAndLabel(multiPhone, telNum, kABPersonPhoneMainLabel, NULL);
	ABRecordSetValue(newBook, kABPersonPhoneProperty, multiPhone, &amp;error);
	CFRelease(multiPhone);
	// url
	ABMutableMultiValueRef multiUrl = ABMultiValueCreateMutable(kABMultiStringPropertyType);
	ABMultiValueAddValueAndLabel(multiUrl, url, kABPersonHomePageLabel, NULL);
	ABRecordSetValue(newBook, kABPersonURLProperty, multiUrl, &amp;error);
	CFRelease(multiPhone);
	// address
	ABMutableMultiValueRef multiAddress = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
	NSMutableDictionary *addressDictionary = [[NSMutableDictionary alloc] init];
	[addressDictionary setObject:addressPostal forKey:(NSString *)kABPersonAddressZIPKey];
	[addressDictionary setObject:addressPref forKey:(NSString *)kABPersonAddressStateKey];
	[addressDictionary setObject:addressCity forKey:(NSString *)kABPersonAddressCityKey];
	[addressDictionary setObject:addressStreet forKey:(NSString *)kABPersonAddressStreetKey];
	ABMultiValueAddValueAndLabel(multiAddress, addressDictionary, kABOtherLabel, NULL);
	ABRecordSetValue(newBook, kABPersonAddressProperty, multiAddress, &amp;error);
	CFRelease(multiAddress);
	// image
	if(faceImage!=nil) {
		// resize image
		UIGraphicsBeginImageContext(CGSizeMake(60.0,60.0));
		[faceImage drawInRect:CGRectMake(0, 0, 60, 60)];
		UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
		UIGraphicsEndImageContext();
		NSData *imageData = UIImagePNGRepresentation(image);
		// add image data
		ABPersonSetImageData(newBook, (CFDataRef)imageData, &amp;error);
	}
	// set new book to view controller
	viewController.displayedPerson = newBook;
	viewController.newPersonViewDelegate = self;
	CFRelease(newBook);
	[self.navigationController pushViewController:viewController animated:YES];
	[viewController release];
}

# pragma mark --- ABNewPersonViewControllerDelegate methods

- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person {
	// save button action
	if(person!=NULL) {
		CFErrorRef error;
		ABAddressBookRef addressBook = ABAddressBookCreate();
		ABAddressBookAddRecord(addressBook, person, &amp;error);
		ABAddressBookSave(addressBook, &amp;error);
	}
	// cancel button action
	else {
	}
	[newPersonViewController.navigationController popViewControllerAnimated:YES];
}

</pre>

]]>
		</content>
    </entry>
        <entry>
        <title>vimの環境設定などなど</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20090213,14.html" />
        <id>tag:www.rakugaki.jp//14</id>
        <published>2009-02-13T01:35:00+09:00</published>
        <updated>2009-10-03T19:59:46+09:00</updated>
        <summary>
vimを便利に使おうと思い始めたので、とりあえず...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
vimを便利に使おうと思い始めたので、とりあえず設定ファイルを作ってみることにした。<br />
<br />
困り事1<br />
CentOS上で日本語で書かれているファイルを開くと文字化けしまくりで日本語が読めない<br />
<br />
困り事2<br />
行番号表示する度に set number は面倒<br />
<br />
<br />
$ vi ~/.vimrc<br />
:set number<br />
:set encoding=utf-8<br />
:set fileencodings=iso-2022-jp,euc-jp,sjis,utf8<br />
<br />
<br />
あーこういうやりかたあったのねー<br />
日本語も問題なく表示できましたー
</p>

]]>
		</content>
    </entry>
        <entry>
        <title>tarコマンドで覚えておくと便利なものたち</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20090213,13.html" />
        <id>tag:www.rakugaki.jp//13</id>
        <published>2009-02-13T01:15:00+09:00</published>
        <updated>2009-10-03T19:57:38+09:00</updated>
        <summary>
tarに関するメモ

パーミッションをそのまま保持...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
tarに関するメモ<br />
<br />
パーミッションをそのまま保持する<br />
$ tar cpf archive.tar archive<br />
<br />
gunzipにしてパーミッションも保持<br />
$ tar zcpf archive.tar archive<br />
<br />
tarで固めるときにファイル名に日付を使いたい<br />
$ tar cpf archive_`date '+%Y%m%d%'`.tar archive<br />
<br />
時間も入れる<br />
$ tar cpf archive_`date '+%Y%m%d%H%M%S'`.tar archive<br />
<br />
.svnとか.projectとかよけいなものを入れない<br />
$ tar cpf archive.tar --exclude .svn --exclude .project archive
</p>

]]>
		</content>
    </entry>
        <entry>
        <title>Xenをインストール</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20090203,15.html" />
        <id>tag:www.rakugaki.jp//15</id>
        <published>2009-02-03T04:00:00+09:00</published>
        <updated>2009-10-03T20:00:17+09:00</updated>
        <summary>
Xenのインストールメモ

xenblkモジュールを読み...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
Xenのインストールメモ<br />
<br />
xenblkモジュールを読み込むように設定<br />
# vi /etc/modprobe.conf<br />
alias scsi_hostadapter xenblk<br />
<br />
<br />
xenカーネルで起動するように設定<br />
# vi /etc/sysconfig/kernel<br />
DEFAULTKERNEL=kernel-xen<br />
<br />
<br />
xen本体とxenカーネルをインストール<br />
# yum -y install xen kernel-xen<br />
<br />
<br />
楽するためにスクリプト作ってみました。<br />
<br />
#!/bin/bash<br />
<br />
# Add xenblk module<br />
echo alias scsi_hostadapter xenblk &gt;&gt; /etc/modprobe.conf<br />
<br />
# Change default kernel<br />
mv /etc/sysconfig/kernel /etc/sysconfig/kernel.org<br />
sed -e "s/DEFAULTKERNEL/#DEFAULTKERNEL/g" /etc/sysconfig/kernel.org &gt; /etc/sysconfig/kernel<br />
echo "DEFAULTKERNEL=kernel-xen" &gt;&gt; /etc/sysconfig/kernel<br />
<br />
# Install Xen and Xen kernel<br />
yum -y install xen kernel-xen
</p>

]]>
		</content>
    </entry>
        <entry>
        <title>PHPのソースコードをRPMで配布したい</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20081222,12.html" />
        <id>tag:www.rakugaki.jp//12</id>
        <published>2008-12-22T23:50:00+09:00</published>
        <updated>2009-10-12T01:29:26+09:00</updated>
        <summary>
先日（２ヶ月くらい前だけど）、友人に「PHPのプ...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
先日（２ヶ月くらい前だけど）、友人に「PHPのプログラムをRPMで簡単インストールとかってできないのかねー？」って聞かれて、できると思うよーと答えるだけだったけども、必要にかられたため書いてみました。<br />
<br />
実際この配布方法がいいのかどうかわからないけど（ライセンスなどなど）、とりあえず作り方だけならいいと思うので書いておきます。<br />
<br />
必要なもの<br />
rpmbuild<br />
<br />
rpmbuildがインストールされていれば、/usr/src/redhat というディレクトリの中に以下のディレクトリ群があるはず。<br />
・ BUILD （RPM生成中のテンポラリファイルが入っているディレクトリみたいなもの）<br />
・ RPMS （できあがったRPMが入っているディレクトリ）<br />
・ SOURCES （RPMパッケージに含めるファイルなどを入れておくディレクトリ）<br />
・ SPECS （RPM生成のための設定ファイルのようなものを入れておくディレクトリ）<br />
・　SRPMS (できあがったSRPMが入っているディレクトリ）<br />
<br />
<br />
まずは SPEC ファイルを作ることからはじまる。<br />

</p>

<pre class="brush:command;">
# cd /usr/src/redhat/SPECS
# vi test.spec

</pre>

<pre class="brush:bash;">
# ウェブディレクトリを定義
%define webroot /var/www/html

# アプリケーション名
Name: test
# アプリケーションの説明
Summary: test package
# バージョン
Version: 1.0
# リリース番号
Release: 1
# ライセンス
License: BSD
# ソースコードの入手場所
Source: %{name}-%{version}-%{release}.tar.gz
# パッケージグループ
Group: Application/Internet
# ビルドルート
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}
# 対象アーキテクチャ（PHPのプログラムだから noarch でいいだろう）
BuildArch: noarch
# このパッケージを使うのに必要な他のパッケージ
Requires: httpd, php


%description
ここにこのパッケージの説明を書いておく。


%prep
# 作業ディレクトリを削除しておく（BuildRootで指定したディレクトリが削除される）
rm -rf $RPM_BUILD_ROOT


# Sourceで指定したファイルを$RPM_BUILD_ROOTに展開する
%setup -qn %{name}-%{version}-%{release}


%build
# ビルドは必要ないのでここでは指定しない


%install
# インストール先のディレクトリを作成する
install -d $RPM_BUILD_ROOT%{webroot}/%{name}
# 展開したファイル群をコピーする
cp -r * $RPM_BUILD_ROOT%{webroot}/%{name}/
# キャッシュディレクトリを作ってみる
mkdir -p $RPM_BUILD_ROOT%{webroot}/cache
# キャッシュディレクトリパーミッション変更（これは %filesセクションでも可能）
chmod 777 $RPM_BUILD_ROOT%{webroot}/cache


%clean
# 作業ディレクトリを削除する
rm -rf $RPM_BUILD_ROOT


%files
# デフォルトのパーミッションや、所有者情報をセット
%defattr(-,root,root)
# コピーしたファイル群をインストール対象として追加（ディレクトリごと追加）
%{webroot}/%{name}


%changelog
* 変更日時 パッケージ作成者の名前 メールアドレス
ログメッセージ

</pre>

<p>
<br />
とこんな感じで作る。<br />
<br />
続いて tar ball を用意する。これは、SPECのSource欄で定義したもの。<br />
SOURCESディレクトリの中にソースコードを入れておいて tar ball を作る。<br />
ここでのディレクトリ名は test-1.0-1 を使用する。<br />

</p>

<pre class="brush:command;">
# cd /usr/src/redhat/SOURCES
# tar zcvf test-1.0-1.tar.gz test-1.0-1

</pre>

<p>
SVNからチェックアウトした場合は、.svnとか.projectとかをexcludeしてあげる。<br />
（小生はeclipse使っているので .project がコミットされている）
</p>

<pre class="brush:command;">
# tar zcvf test-1.0-1.tar.gz --exclude .svn --exclude .project test-1.0-1
</pre>

<p>
<br />
これで、ソースコードの準備ができた。<br />
<br />
続いて、RPMを実際に作ってみる。<br />

</p>

<pre class="brush:command;">
# cd /usr/src/redhat/SPECS

%prepまでを実行して検証できる
# rpmbuild -bp test.spec

%installまでを実行して検証できる
# rpmbuild -bi test.spec

%filesの検証ができる
# rpmbuild -bl test.spec

通常のビルドはこれ
# rpmbuild -bb test.spec

ソースRPMは特に必要はないと思う（ソースがtarで固まっているだけだから）
# rpmbuild -ba test.spec

</pre>

<p>
これでいい感じに配布できると思われます。<br />
<br />
業務用ではエラい役に立ちそうなネタでした。
</p>

]]>
		</content>
    </entry>
        <entry>
        <title>MacにPHP/Imagickをインストールする</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20081106,11.html" />
        <id>tag:www.rakugaki.jp//11</id>
        <published>2008-11-06T18:40:00+09:00</published>
        <updated>2009-10-03T19:55:14+09:00</updated>
        <summary>
PHP/Imagickを使う用事があったのでインストール...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
PHP/Imagickを使う用事があったのでインストールしようと思ったら、普通にできなかったのでメモ。<br />
<br />
とりあえず ImageMagickをインストールする。<br />
<br />
$ sudo port install ImageMagick<br />
<br />
次に普通にPEARでインストールしようとするとWand-configがないと怒られる。<br />
$ sudo pecl install imagick<br />
----<br />
checking ImageMagick MagickWand API configuration program... configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.<br />
ERROR: `/private/tmp/pear/temp/imagick/configure --with-imagick' failed<br />
----<br />
<br />
しょうがないので、手動でインストールしてみる。<br />
<br />
$ curl -W http://pecl.php.net/get/imagick-2.2.1.tgz<br />
$ tar zxvf imagick-2.2.1.tgz<br />
$ cd imagick-2.2.1<br />
$ phpize<br />
$ ./configure --with-imagick=/opt/local<br />
$ make<br />
$ sudo make install<br />
<br />
モジュールファイルをコピー<br />
$ cd /opt/local/lib/php/extensions/no-debug-non-zts-20060613<br />
$ sudo cp imagick.so ../<br />
<br />
php.iniに設定する<br />
$ sudo vi /etc/php.ini<br />
;extension_dir = "./"<br />
extension_dir = "/opt/local/lib/php/extensions"<br />
extension=imagick.so<br />
<br />
apacheを再起動してモジュールロード<br />
$ apache2ctl stop<br />
$ apache2ctl start<br />
<br />
これでできたぞー<br />

</p>

]]>
		</content>
    </entry>
        <entry>
        <title>Apacheをチューニング(Prefork)</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20081017,10.html" />
        <id>tag:www.rakugaki.jp//10</id>
        <published>2008-10-17T04:20:00+09:00</published>
        <updated>2009-10-03T19:58:21+09:00</updated>
        <summary>
前回の続きです。

http://httpd.apache.org/docs...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
前回の続きです。<br />
<br />
http://httpd.apache.org/docs/2.0/ja/mod/prefork.html<br />
スレッドを使わず、先行して fork を行なう ウェブサーバを実装しています。 スレッドセーフでないライブラリとの互換性をとるために、 スレッドを避ける必要のあるサイトでは、このモジュールの使用が適切でしょう。<br />
<br />
本家のウェブにこんなことが書いてありますが、僕は基本的にスレッドセーフでないPHPを使用しているため、preforkの使用をしています。PHPを使用しない場合はworkerを使用した方がたぶんいいと思いますが、使用したことがないのでここでは説明をさけます。。<br />
<br />
StartServers 5<br />
MinSpareServers 5<br />
MaxSpareServers 10<br />
ServerLimit 256<br />
MaxClients 256<br />
MaxRequestPerChild 10000<br />
<br />
StartServersはサーバが起動したときに生成される子プロセスの数です。<br />
負荷があがると自動的に数は増えていくので特に設定する必要はないと思われます。<br />
<br />
MinSpareServers/MaxSpareServersはアイドル状態の子プロセス数を制御するパラメータです。<br />
MinSpareServersよりもアイドル状態の子プロセスが少なくなると親プロセスが新しい子プロセスを生成します。新しく生成されるのは１秒に一度のため、高負荷のウェブサーバの場合応答が間に合わなくなる可能性があります。<br />
このパラメータはチューニングしがいのある部分で、高負荷サーバでは応答速度に変化が見られる場合がありますが、そこまで高負荷でない場合は触る必要のない項目であります。<br />
<br />
ServerLimit/MaxClientsは、リクエストに応答するための子プロセスの最大数です。<br />
preforkの場合は、この値が同時アクセス数の値になるので、チューニングができる項目になります。<br />
デフォルト値は256となっていますが、メモリ容量とのからみもあるので安易に増やすとPHPが実行できないなどの状況に陥ってしまいます。<br />
例えば、2Gのメモリを搭載しているサーバで、PHPのmemory_limitに32Mを当てている場合、OSに使用するメモリを考えて1.5Gをウェブサーバで使用させるとすると・・・<br />
2G / 32M = 46プロセス<br />
になります。256プロセスデフォルトのままで運用してしまうと、同時アクセスがマックスになるとPHPがメモリエラーをはいてしまう可能性もある感じになります。<br />
（PHPがマックスまでメモリを使用していればの話ですが）<br />
ServerLimit/MaxClientsの値と、memory_limitは連動してくるお話になるので、両方を注意しながら地道にチューニングしていくと、同時アクセス数も調整できて、サーバがどのくらいさばけるのかが把握できるのでとても幸せ気分になれます。<br />
<br />
最後にMaxRequestPerChildですが、これは子プロセスが再起動する頻度を設定する項目です。<br />
プロセス再起動には時間がかかるので、再起動の間に大量アクセスがきていたら大変です。<br />
が、メモリリークがおこってしまった場合などの対処用に設定をしておいたほうがよい項目です。<br />
デフォルトでは10000が設定されていますが、10000回プロセスにアクセスがされたらプロセスの再起動を行う設定になっています。<br />
あまり設定する必要のない項目ではありますが、error_logでエラーが頻発しているようだったらこの値を変更してみて挙動をウォッチする手もあると思います。<br />
<br />
<br />
ざっくりと書いてきましたが、ほとんど本家ウェブサイトに書いてあることの転載なので、詳しくはそちらを参照した方がいいかもしれません。<br />
チューニングは実行するウェブアプリケーションによっても違ってきますし、搭載しているメモリ容量などにも関連してくるので、教科書通りにいかないというのが経験上いえることです。<br />
ちょっとずつ値を変更して最適なパラメータを見つけるのも楽しみの一つであるので、地道にやるのが一番いいのかなーと。<br />
<br />
<br />
次回は・・・なにをやりましょう。。。<br />

</p>

]]>
		</content>
    </entry>
        <entry>
        <title>Apacheをチューニング(KeepAlive)</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20081015,9.html" />
        <id>tag:www.rakugaki.jp//9</id>
        <published>2008-10-15T01:15:00+09:00</published>
        <updated>2009-10-03T19:53:30+09:00</updated>
        <summary>
ウェブサーバのレスポンスが遅くなったときにどの...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
ウェブサーバのレスポンスが遅くなったときにどのようにしたら早くなるのか。<br />
一時期かなり悩み悩み、色々試行錯誤をしたのですが、メモ程度にやったことを書いておこうと思います。<br />
遅くなっているウェブアプリケーションによって、設定方法も変える必要がかなりあって、あまりにもパターンがありすぎる感があるけども、何かの参考になれば・・・<br />
<br />
設定対象のファイルは httpd.conf になります。<br />
<br />
今日は KeepAlive の設定について。<br />
ウェブサーバは基本的には１ファイルごとにセッションを接続ー切断を繰り返して、処理を行うものですが、この設定を加えてあげることでセッションを切断せずに通信できるようになります。<br />
<br />
KeepAlive On<br />
MaxKeepAliveRequests 30<br />
KeepAliveTimeout 5<br />
<br />
上記設定では、30リクエストごとにいったん切断を行い、30リクエストに満たなくても5秒間でセッションを切断する設定になっています。<br />
注意すべき点としては、MaxKeepAliveRequestsをきちんと設定してあげることです。<br />
ページの表示が完了するまでに、画像ファイルやCSSなどのファイルも含めて、そのサーバから何ファイル出力されるのかを把握する必要があります。一番多いリクエストに合わせて、少々余裕を持たせた数字にしておくのがいいと思います。<br />
セッションを保持したままにするということは、その間はプロセスが占有されているままになるということなので、これもまた注意が必要です。なので、KeepAliveTimeoutを設定して、リクエストが来なくなったらリリースしてあげる仕組みになっています。<br />
<br />
ブログパーツのリクエストが多い場合や、携帯サイトの場合はあまりこの設定は意味がないかもしれません。ブログパーツはswfファイルの読み込みのみだったりするので、1リクエストで終了してしまう方が多いと思いますし、携帯は回線が遅いので、一回ずつ処理をしたほうが、プロセスをガメる量が減らせますし。<br />
<br />
実環境でテストしながらでないとなんともいえない部分なので、参考程度ということで。<br />
<br />
<br />
次回は prefork とか行ってみようと思います。
</p>

]]>
		</content>
    </entry>
        <entry>
        <title>MacPortsをインストールして快適に過ごす</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20080802,8.html" />
        <id>tag:www.rakugaki.jp//8</id>
        <published>2008-08-02T15:10:00+09:00</published>
        <updated>2009-10-03T19:51:32+09:00</updated>
        <summary>
MacPort は Fedora でいうところの yum のような...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
MacPort は Fedora でいうところの yum のようなツールですが、あまりにも便利すぎるので色々メモっておきます。<br />
<br />
まずはインストール。<br />
以下のサイトからdmgをダウンロードしてきてインストールします。<br />
&lt;a href="http://www.macports.org/install.php"&gt;The MacPorts Project - Download&lt;/a&gt;<br />
ちょっと迷ったんだけど、一番上のOSバージョンのリンククリックするとダウンロードできます。<br />
<br />
MacPort関連は /opt/local 以下にインストールされるらしく、パスを通しておきます。<br />
$ sudo vi /etc/bashrc<br />
--------<br />
export PATH=/opt/local/bin:/opt/local/sbin:$PATH<br />
<br />
これで環境としてはできあがりです。<br />
<br />
<br />
MacPortのアップデート<br />
$ sudo port -d selfupdate<br />
<br />
インストール可能なパッケージ一覧を更新<br />
$ sudo port -d sync<br />
<br />
インストール済みパッケージ参照<br />
$ port installed<br />
<br />
アップグレード可能パッケージ検索<br />
$ port outdated<br />
<br />
<br />
パッケージの検索<br />
$ sudo port search apache<br />
<br />
インストールオプション検索<br />
$ port variants apache2<br />
<br />
パッケージのインストール<br />
$ sudo port install apache2<br />
$ sudo port install apache2 +preforkmpm<br />
<br />
パッケージのアップグレード<br />
$ sudo port upgrade apache2<br />
<br />
パッケージのアンインストール<br />
$ sudo port uninstall apache2<br />
<br />
パッケージの有効化<br />
$ sudo port activate apache2<br />
<br />
パッケージの無効化<br />
$ sudo port deactivate apache2
</p>

]]>
		</content>
    </entry>
        <entry>
        <title>PHPにImageMagicのモジュールを組み込む</title>
        <link rel="alternate" type="text/html" href="http://www.rakugaki.jp/blog/archives/20080729,7.html" />
        <id>tag:www.rakugaki.jp//7</id>
        <published>2008-07-29T00:25:00+09:00</published>
        <updated>2009-10-03T19:49:37+09:00</updated>
        <summary>
PHPでの画像処理系はGDをよく使っていたんだけど...</summary>
        <author>
            <name>Shinya Kawamura</name>
        </author>
        <content type="html" xml:lang="ja" xml:base="http://www.rakugaki.jp/">
<![CDATA[
<p>
PHPでの画像処理系はGDをよく使っていたんだけども、大きい画像になるとメモリ消費量が激しかったりしてエラーが発生してしまうことが多々。<br />
で、色々調べていたらImageMagicがPHPで使えることがわかったのでちょっと導入してみました。<br />
Pearからインストールで普通に使えるみたい。<br />
<br />
うちのサーバ環境はこんな感じ<br />
CentOS 5.1<br />
PHP 5.2.6<br />
# yum -y install ImageMagick ImageMagick-devel<br />
# yum -y install php-devel php-pear<br />
# pecl install imagick<br />
<br />
でphp.iniに追記<br />
<br />
# vi /etc/php.iniextension=imagick.so<br />
<br />
<br />
これだけでとりあえず使えるようにはなるみたい。<br />
<br />
今度使ってみます。
</p>

]]>
		</content>
    </entry>
    </feed>