<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1567866602594596769</id><updated>2012-02-02T15:24:30.510+09:00</updated><category term='flash'/><category term='AntiVirus'/><category term='Maildir'/><category term='synergy'/><category term='aria'/><category term='postgresql'/><category term='flot'/><category term='巡音ルカ'/><category term='rsync'/><category term='web'/><category term='Game'/><category term='socks'/><category term='localization'/><category term='Jogging'/><category term='AudioUnits'/><category term='Core Foundation'/><category term='SELinux'/><category term='ngspice'/><category term='auction'/><category term='sed'/><category term='1Password'/><category term='firefox'/><category term='銀行'/><category term='CoreMIDI'/><category term='awk'/><category term='Dead Space'/><category term='Git'/><category term='imz'/><category term='jal'/><category term='makefile'/><category term='PC'/><category term='ねんどろいど'/><category term='vim'/><category term='Mutt'/><category term='ダイエット'/><category term='wget'/><category term='backup'/><category term='MacPorts'/><category term='uploadify'/><category term='動物園'/><category term='dovecot'/><category term='VMWare'/><category term='mysql'/><category term='UIButton'/><category term='camera'/><category term='札幌マラソン'/><category term='httpd'/><category term='security'/><category term='local'/><category term='CentOS'/><category term='Opera'/><category term='DDNS'/><category term='futaba'/><category term='ffmpeg'/><category term='reason'/><category term='iPhone Development'/><category term='DTM'/><category term='bash'/><category term='函館'/><category term='Obj-C'/><category term='slime'/><category term='Development'/><category term='POSIX'/><category term='Smarty'/><category term='xcode'/><category term='iPhone'/><category term='iTunes'/><category term='dns'/><category term='flickr'/><category term='雪ミク'/><category term='au'/><category term='Sound'/><category term='mac'/><category term='mp3'/><category term='ubuntu'/><category term='bit.ly'/><category term='figure'/><category term='svn'/><category term='subversion'/><category term='ボーカロイド'/><category term='gnuplot'/><category term='フィギュア'/><category term='tethering'/><category term='WebShell'/><category term='javascript'/><category term='カメラ'/><category term='SnowLeopard'/><category term='perl'/><category term='PSP'/><category term='Virtual musical instruments'/><category term='xargs'/><category term='postfix'/><category term='撮影機材'/><category term='dlvr.it'/><category term='サーバ'/><category term='common lisp'/><category term='AquaTerm'/><category term='サナギさん'/><category term='clang'/><category term='初音ミク'/><category term='Silex'/><category term='Audio'/><category term='futaba_nendo'/><category term='CoreAudio'/><category term='shell'/><category term='zoo'/><category term='amazon'/><category term='nendoroid'/><category term='Objective-C'/><category term='llvm'/><category term='Kobold2D'/><category term='旅行'/><category term='imagemagick'/><category term='oauth'/><category term='firewall'/><category term='DynDns.com'/><category term='Powerpoint'/><category term='futaba_figma'/><category term='database'/><category term='MNP'/><category term='system call'/><category term='apache'/><category term='L-04C'/><category term='linux'/><category term='mht'/><category term='google analytics'/><category term='emacs'/><category term='research'/><category term='bot'/><category term='Minecraft'/><category term='spice'/><category term='php'/><category term='jTemplates'/><category term='IMAP'/><category term='music'/><category term='ssh'/><category term='silenthill'/><category term='static-analyzer'/><category term='VisualBasic'/><category term='private'/><category term='bitbucket'/><category term='regex'/><category term='jquery'/><category term='c/c++/objc'/><category term='blogger'/><category term='Nike+'/><category term='unix'/><category term='twitter'/><category term='samba'/><category term='Cocoa'/><category term='server'/><category term='色づけ'/><category term='gcc'/><category term='htaccess'/><category term='cocos2D'/><category term='anime'/><category term='ドメイン取得'/><category term='ソースコード'/><category term='softbank'/><category term='iptables'/><category term='Mac Development'/><category term='正規表現'/><category term='health'/><category term='mercurial'/><category term='b-mobile'/><category term='fusion'/><category term='雪豹'/><category term='マラソン'/><category term='R'/><title type='text'>ICHIBA BLOG</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default?start-index=101&amp;max-results=100'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>242</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-4808368291287723778</id><published>2012-01-23T17:28:00.003+09:00</published><updated>2012-01-23T17:39:04.775+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Kobold2D'/><category scheme='http://www.blogger.com/atom/ns#' term='cocos2D'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone Development'/><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>Kobold2D入れたよメモ</title><content type='html'>・Xcode4.1と4.2を共存させたい場合はAppStoreではなくdeveloper.apple.comのメンバ用ページから.dmgをダウンロードしてインストールすると良い。インストールの際には既存の開発環境('/Developer')は適当にリネームしておく事。&lt;br /&gt;・Kobold2D本体をDropbox下に置くと同期に矢鱈と時間を取らされるのでやめた方が良いかも。&lt;br /&gt;・テンプレートからプロジェクト作成後にはKobld2D.xcworkspaceを開いて、そこに作成したプロジェクトを追加するのが良いかもしれない。単体(.xcodeproj)でプロジェクトを開くと、ビルドしようとしても"libkobold2d-ios.a"が無いから失敗する場合が有る。&lt;br /&gt;・少なくともiPhone/iPadシミュレータを使ってる時は[KKInput sharedInput]の方でMac上のキーボード入力によるキーイベントは拾ってないくさい。(Mac用アプリにすると拾う。シミュレータでもソフトキーボードを出していれば拾うのかもしれない）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-4808368291287723778?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/4808368291287723778/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=4808368291287723778' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4808368291287723778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4808368291287723778'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2012/01/kobold2d.html' title='Kobold2D入れたよメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-9154868932077610522</id><published>2012-01-19T23:47:00.003+09:00</published><updated>2012-01-20T00:20:56.275+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tethering'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><title type='text'>PayUpPunk使用下でSSH接続する</title><content type='html'>PayUpPunkについては、&lt;a href="http://gori.me/iphone/11362"&gt;脱獄不要！！「PayUpPunk」を使ってiPhone 4Sでテザリングする方法が公開！ | gori.me&lt;/a&gt;などを参照して下さい。&lt;br /&gt;&lt;br /&gt;最初SSH over HTTPで調べてたんですが、Socks Proxyを経由してssh接続しないと行けないという事に気づきました。＞＜&lt;br /&gt;で、ネット上で調べてみたらconnectというコマンドを中継させるとSocks Proxyを経由させる事が可能なようです。&lt;br /&gt;（OpenSSHクライアント単体でもできそうなもんですが…）&lt;br /&gt;&lt;br /&gt;というわけでまずはインストール。&lt;br /&gt;Macのパッケージ管理ソフトでconnectをインストールできるものは無さげなので、&lt;a href="http://www.meadowy.org/~gotoh/ssh/connect.c"&gt;ソース&lt;/a&gt;を持って来て、そのソースに書かれている通りに自前でビルドします。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ gcc connect.c -o connect -lresolv&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;生成物は適当なディレクトリに配置します。&lt;br /&gt;続いてSocks Proxyを経由するようssh configを設定します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# .ssh/config&lt;br /&gt;Host hostname.com.socks&lt;br /&gt; HostName hostname.com&lt;br /&gt; User hogehoge&lt;br /&gt; Port fugafuga&lt;br /&gt; ProxyCommand /path/to/connect -a none -S 10.0.1.13:8888 %h %p&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;[参考:&lt;a href="http://watermans-linuxtips.blogspot.com/2009/06/socksssh.html"&gt;Linuxユーザのためのチップス: socksサーバ経由でSSH接続する方法&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;設定は以上で、実際に接続するにはHostで設定した部分を指定すればOK。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ ssh hostname.com.socks&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;少々この環境で自鯖をいじってみたところ、イオンの980円SIMよりは断然快適です。(若干もたつきますが。。。）&lt;br /&gt;ただ、30分程すると切れたりしたので、その辺我慢する必要が有るかもしれません。(PayUpPunk再起動で治りましたけど)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-9154868932077610522?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/9154868932077610522/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=9154868932077610522' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/9154868932077610522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/9154868932077610522'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2012/01/payuppunkssh.html' title='PayUpPunk使用下でSSH接続する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-486406704914876918</id><published>2012-01-11T15:20:00.003+09:00</published><updated>2012-01-11T15:24:11.763+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='nendoroid'/><category scheme='http://www.blogger.com/atom/ns#' term='ねんどろいど'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>ねんどろいど価格追跡始めました</title><content type='html'>&lt;a href="http://uri-labs.com/nt/"&gt;nendo_tracer&lt;/a&gt;&lt;br /&gt;集計処理は自鯖(上記サイトではない鯖)で行っているので、データは自動で更新されません。&lt;br /&gt;これについては近日中になんとかします。&lt;br /&gt;今後はランキング系を充実させる予定です。&lt;br /&gt;&lt;br /&gt;アフィ目的なのでうっかり踏まない様に気をつけてくだち！＞＜&lt;br /&gt;&lt;br /&gt;人が来るようならAdsense付けたりしたい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-486406704914876918?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/486406704914876918/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=486406704914876918' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/486406704914876918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/486406704914876918'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2012/01/blog-post_11.html' title='ねんどろいど価格追跡始めました'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-1452580929995330284</id><published>2012-01-09T20:14:00.004+09:00</published><updated>2012-01-09T20:23:10.324+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>さくらのVPSにpostgresql 8.4系インストールメモ</title><content type='html'>自鯖ではCent OS 6.0上でpostgresql 8.4.7を使用中。&lt;br /&gt;Cent OSのバージョンは&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# cat /etc/redhat-release&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;で確認可。&lt;br /&gt;さくらのは5.7っぽくて、yum install postgresqlだと8.1を入れようとしていたので、&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# yum install postgresql84 postgresql84-server&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とすると8.4.9が入った。&lt;br /&gt;&lt;br /&gt;以下、ひとまず起動までのメモ。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# psql --version&lt;br /&gt;psql (PostgreSQL) 8.4.9&lt;br /&gt;コマンドライン編集機能のサポートが組み込まれています。&lt;br /&gt;# service postgresql start&lt;br /&gt;&lt;br /&gt;/var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first.&lt;br /&gt;                                                           [失敗]&lt;br /&gt;# service postgresql initdb&lt;br /&gt;データベースを初期化中:                                    [  OK  ]&lt;br /&gt;# service postgresql start&lt;br /&gt;postgresql サービスを開始中:                               [  OK  ]&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-1452580929995330284?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/1452580929995330284/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=1452580929995330284' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1452580929995330284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1452580929995330284'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2012/01/vpspostgresql-84.html' title='さくらのVPSにpostgresql 8.4系インストールメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2059415345374194264</id><published>2012-01-06T20:19:00.002+09:00</published><updated>2012-01-06T20:28:24.018+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='private'/><title type='text'>山越えた</title><content type='html'>昨日論文が完成(ボスのOK付き)し、今日支部会の発表が無事終わりました。&lt;br /&gt;おめでとうございます。ありがとうございます。&lt;br /&gt;&lt;br /&gt;どうも自分は山が同時に複数重なる性分っぽいです...(´Д` ;)&lt;br /&gt;&lt;br /&gt;ともあれ一段落したので、少しの間マッタリできそうです。&lt;br /&gt;直属の学生二人が共に追込み時期なので実験もしにくいし、&lt;br /&gt;温泉でも行こうかなーとか考えております。&lt;br /&gt;&lt;br /&gt;後何個か山は越えないといけない訳ですが、&lt;br /&gt;この調子で頑張りたいですねぇ( ´Д`)y━･~~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2059415345374194264?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2059415345374194264/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2059415345374194264' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2059415345374194264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2059415345374194264'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2012/01/blog-post.html' title='山越えた'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-3317503811211062545</id><published>2012-01-01T22:09:00.001+09:00</published><updated>2012-01-01T22:11:02.511+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>phpPgAdminでレコードを削除できるようにする</title><content type='html'>ユニークキーを付ける必要が有る模様。&lt;br /&gt;[参考:&lt;a href="http://warumono.at.webry.info/201003/article_3.html"&gt;phpPgAdminでレコードの編集・削除できない場合の対応 LUNARAVE WEBクリエイターの仕事と休息/ウェブリブログ&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-3317503811211062545?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/3317503811211062545/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=3317503811211062545' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3317503811211062545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3317503811211062545'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2012/01/phppgadmin.html' title='phpPgAdminでレコードを削除できるようにする'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5162445463550620117</id><published>2012-01-01T16:46:00.002+09:00</published><updated>2012-01-01T16:54:39.498+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amazon'/><title type='text'>AmazonのProduct Advertising APIが色々変わってしまっていた</title><content type='html'>以前はある商品を出品している全ての店舗について、それぞれ商品の値段を取得できたんですが、&lt;br /&gt;APIの仕様変更により出来なくなってしまった模様です。&lt;br /&gt;[参考:&lt;a href="https://affiliate.amazon.co.jp/gp/advertising/api/detail/api-changes.html?ie=UTF8&amp;pf_rd_t=501&amp;ref_=amb_link_61613089_4&amp;pf_rd_m=AN1VRQENFRJN5&amp;pf_rd_p=&amp;pf_rd_s=assoc-center-1&amp;pf_rd_r=&amp;pf_rd_i=assoc-api-detail-1-v2"&gt;Product Advertising API&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;久しぶりに使ってみたら、OfferFullだと各Conditionで最安値の店舗（と値段）を１件ずつしか取れなくなってました。＞＜&lt;br /&gt;APIのバージョンを古くしても同様。バージョン振る意味ねーじゃん！＞＜&lt;br /&gt;&lt;br /&gt;つーわけで今作ってるサイトの内容は大幅に変更が必要になりました。&lt;br /&gt;まぁ、そっちの方がシンプルなんで別に良いっちゃ良いかな…。などと思っております。&lt;br /&gt;&lt;br /&gt;あと、各リクエストの確認に便利なヘルパ。&lt;br /&gt;&lt;a href="http://associates-amazon.s3.amazonaws.com/signed-requests/helper/index.html"&gt;Signed Requests Helper - Amazon Product Advertising API&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Amazonのドキュメントは相変わらず見にくいし探しにくいし更新されてないし最悪っすわー。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5162445463550620117?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5162445463550620117/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5162445463550620117' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5162445463550620117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5162445463550620117'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2012/01/amazonproduct-advertising-api.html' title='AmazonのProduct Advertising APIが色々変わってしまっていた'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5289714569112458648</id><published>2011-12-29T00:59:00.002+09:00</published><updated>2011-12-29T01:04:36.849+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><title type='text'>CentOSにmercurialを入れる</title><content type='html'>[参考:&lt;a href="http://www.yuyak.com/788"&gt;Yuyak.com   &amp;raquo; さくらのVPS（CentOS 5 x86_64）でMercurial&lt;/a&gt;]&lt;br /&gt;うちも今回はさくらのVPS上のCentOSに入れようとしていたので、上記サイトのエントリの通り&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# yum install -y gcc python python-devel python-setuptools&lt;br /&gt;# easy_install mercurial&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;でイナフ。&lt;br /&gt;自宅鯖の方には既に入れてたんですが、どうやって入れたのかが思い出せない。。。&lt;br /&gt;easy_installが入っていたので、同じ方法で入れたのかもしれないけど、&lt;br /&gt;yum search mercurialで一応ヒットするので、yum.repos.dの中をいじってyumで入れたのかも。。。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5289714569112458648?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5289714569112458648/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5289714569112458648' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5289714569112458648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5289714569112458648'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/12/centosmercurial.html' title='CentOSにmercurialを入れる'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-7807541566936682267</id><published>2011-12-22T19:26:00.003+09:00</published><updated>2011-12-22T19:46:27.180+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Powerpoint'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='VisualBasic'/><title type='text'>Microsoft Powerpoint for Mac 2011で全てのスライドのノートを抽出する</title><content type='html'>最初、&lt;a href="http://support.microsoft.com/kb/307792/ja"&gt;Visual Basic for Applications を使用して、PowerPoint 2002 スライド ノートを抽出します。&lt;/a&gt;のコードをコピペしてみましたが、上手く行きませんでした。&lt;br /&gt;&lt;br /&gt;そこで、もうひとひねりして、&lt;a href="http://www.d-consulting.biz/presentation/powerpoint/vba_del_note/"&gt;PowerPoint VBA - 全スライドのノートを削除する -  | プレゼン　トラのアナ&lt;/a&gt;を参考に以下のようなマクロを書いてみました。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;Sub GetAllComments()&lt;br /&gt;    For Each mySld In ActivePresentation.Slides&lt;br /&gt;          Debug.Print mySld.NotesPage.Shapes.Placeholders(2).TextFrame.TextRange&lt;br /&gt;          Debug.Print "--"&lt;br /&gt;    Next&lt;br /&gt;End Sub&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;このマクロを実行すると、イミディエイトウインドウというウインドウに全スライドのノートが'--'区切りで出力されます。&lt;br /&gt;この出力はテキストエディタ等にコピペして利用する事ができます。&lt;br /&gt;&lt;br /&gt;macでもいつの間にかVBが使える様になってたんですねぇ(マクロのみだと思いますけど)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-7807541566936682267?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/7807541566936682267/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=7807541566936682267' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7807541566936682267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7807541566936682267'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/12/microsoft-powerpoint-for-mac-2011.html' title='Microsoft Powerpoint for Mac 2011で全てのスライドのノートを抽出する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-1954765056403240472</id><published>2011-12-05T20:33:00.003+09:00</published><updated>2011-12-05T20:42:23.078+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>bashで特定の拡張子を持つものだけヒットするような表現</title><content type='html'>最初"bash 正規表現 論理和"みたいなキーワードでググったけど、なかなか見つからなかった。。。&lt;br /&gt;.TXTと.mだけヒットさせたい場合&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ &lt;font color=blue&gt; ls&lt;/font&gt;&lt;br /&gt;LICENCE.TXT README.TXT ccmp.m  soundDelegate.h&lt;br /&gt;Makefile ccmp  d  soundDelegate.m&lt;br /&gt;$ &lt;font color=blue&gt;ls *\.{TXT,m}&lt;/font&gt;&lt;br /&gt;LICENCE.TXT README.TXT ccmp.m  soundDelegate.m&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とまあ、こんな感じで"{hoge,fuga}"とカンマで区切って中括弧で括れば実現できるようです。&lt;br /&gt;&lt;br /&gt;[参考:&lt;a href="http://technique.sonots.com/?UNIX%2F基礎知識%2Fワイルドカード、メタキャラクタ"&gt;UNIX/基礎知識/ワイルドカード、メタキャラクタ - 会津大学UNIXウィキ&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;06から19までを"{0[6-9],1[0-9]}"と表現する事も可能。（もっと簡単な表現が有りそうですが）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-1954765056403240472?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/1954765056403240472/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=1954765056403240472' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1954765056403240472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1954765056403240472'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/12/bash.html' title='bashで特定の拡張子を持つものだけヒットするような表現'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-1625786807936093959</id><published>2011-12-01T13:25:00.003+09:00</published><updated>2011-12-01T13:37:09.231+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><category scheme='http://www.blogger.com/atom/ns#' term='AudioUnits'/><title type='text'>Xcode 4.1でAudioUnitのテンプレートを用いてビルドする</title><content type='html'>Xcode 4.1に付いているAudio Unitのテンプレートですが、そのままではビルドが通らないというなんともお粗末な事になっているようです。&lt;br /&gt;（最初は自分が設定をどこか間違えてるのかと思ってしまった…）&lt;br /&gt;そもそも4.2には付いてないし。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www2.ph.ed.ac.uk/~s0956654/Site/Guitar.html"&gt;Guitar Modeling&lt;/a&gt;というページのXc41_Effect.rtf, Xc41_Instrument.rtfの手順通りに修正する事で、正常にビルドする事ができるようになります。&lt;br /&gt;こちらで試した限り、ビルドだけであれば、Instrumentの方は3, 4, 7-10の修正だけでも良いようです。&lt;br /&gt;&lt;br /&gt;上記サイトの作者はFDTDで楽器のシミュレーションとかをやってるみたいですね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-1625786807936093959?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/1625786807936093959/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=1625786807936093959' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1625786807936093959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1625786807936093959'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/12/xcode-41audiounit.html' title='Xcode 4.1でAudioUnitのテンプレートを用いてビルドする'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-9181842666580957581</id><published>2011-11-22T15:55:00.004+09:00</published><updated>2011-12-01T14:46:07.335+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMWare'/><category scheme='http://www.blogger.com/atom/ns#' term='fusion'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>VMWare Fusion 4を買ったよメモ</title><content type='html'>&lt;font color=red&gt;注: 10.5, 10.6の両クライアント版の仮想化はライセンス違反との事。＞＜&lt;br /&gt;4.1.0リリースの数日後にクライアント版をインストールできない&lt;a href="http://downloads.vmware.com/jp/d/details/fus_411_jp/dCVlYnRwaHBidHRlaA=="&gt;4.1.1&lt;/a&gt;がリリースされた模様です。&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;VMWare Fusionが4.1からLeopardとSnow Leopardのクライアント版(サーバではない方)のインストールできるようになったと聞き、&lt;br /&gt;早速購入しました。[ソース:&lt;a href="http://www.macrumors.com/2011/11/20/vmware-fusion-now-allows-virtualization-of-mac-os-x-leopard-and-snow-leopard/"&gt;VMWare Fusion Now Allows Virtualization of Mac OS X Leopard and Snow Leopard - Mac Rumors&lt;/a&gt;]&lt;br /&gt;札幌ヨドバシでは売り切れだったので、札幌ビックで購入しました。実質4,400円くらいでしょうか。&lt;br /&gt;昨今の円高を考えるとVMWareのサイトから直接購入した方が安く済むかもしれません。&lt;br /&gt;まあ、USBディスクが付いてるのでその分だと思えば。&lt;br /&gt;&lt;br /&gt;以下、やったこと。&lt;br /&gt;・Fusionのインストールやライセンス登録などは普通に完了。&lt;br /&gt;・その後、Snow Leopardのディスクイメージ(デベロッパ向けの10.6(.0))からVMを作成しインストール。&lt;br /&gt;　このとき、Rosettaも一緒にインストールした。逆にプリンタや言語環境など不要なものは除去しておいた。&lt;br /&gt;・OSのユーザ登録後、PowerPCバイナリをコピーし、VM上でもRosettaで無事起動できる事を確認。&lt;br /&gt;・Homebrew用にXcode 4.1 Snow Leopard用をインストール。これは何故か10.6.8に上げないとパッケージを起動できなかった。&lt;br /&gt;・10.6.8にアップデートして再起動したとき、正常に再起動できなかった。シャットダウン＋再度起動で対処した。&lt;br /&gt;　モニタ周りかなーという気はする。ちなみにフルスクリーンにしておけば、起動時にモニタのサイズを自動判別してVM側も合わせてくれるっぽい。&lt;br /&gt;・Homebrewをインストール。楽ですねこれ。やっぱこっちにしようかなぁ。。。&lt;br /&gt;&lt;br /&gt;というわけで、無事インストールできました。&lt;br /&gt;レスポンスに関しては、若干画面がチラついたりしますが、Core Duo 1.82GHzのMacBook Proより断然快適です。これは良い！&lt;br /&gt;ネットワークはNATにしておけばホストを経由してくれるようなので、特に何も設定しなくても繋がってくれました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-9181842666580957581?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/9181842666580957581/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=9181842666580957581' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/9181842666580957581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/9181842666580957581'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/11/vmware-fusion-4.html' title='VMWare Fusion 4を買ったよメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-1287618763284498556</id><published>2011-11-20T20:38:00.003+09:00</published><updated>2011-11-20T20:41:05.589+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreAudio'/><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><category scheme='http://www.blogger.com/atom/ns#' term='AudioUnits'/><title type='text'>Xcode 4.2にAudio Unitのテンプレートが入ってない件</title><content type='html'>もうちょい待てばそのうち追加されるんじゃね？みたいな話をしてます。&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/7854756/how-to-create-an-audio-unit-without-the-template-in-xcode-4-2"&gt;osx - How to create an Audio Unit without the template in Xcode 4.2? - Stack Overflow&lt;/a&gt;&lt;br /&gt;確かに以前からインストーラでカスタムを選ぶと、CoreAudioだけ別パッケージだったりした記憶があります。&lt;br /&gt;とりあえずmbaの方は4.1でテンプレートが有ったので、そちらで作る予定。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-1287618763284498556?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/1287618763284498556/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=1287618763284498556' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1287618763284498556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1287618763284498556'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/11/xcode-42audio-unit.html' title='Xcode 4.2にAudio Unitのテンプレートが入ってない件'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-6256191459524806074</id><published>2011-11-17T23:06:00.004+09:00</published><updated>2011-11-17T23:39:53.818+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacPorts'/><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'>vimでSimplenoteを使う</title><content type='html'>&lt;b&gt;0:Simplenoteのアカウントを作る&lt;/b&gt;&lt;br /&gt;&lt;a href="https://simple-note.appspot.com/"&gt;Simplenote&lt;/a&gt;で登録します。&lt;br /&gt;webインタフェースがなかなかリッチなので、変にクライアント入れる必要も無いのかもしれません。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1:python enabled vimをビルドする&lt;/b&gt;&lt;br /&gt;[参考:&lt;a href="http://d.hatena.ne.jp/t2y-1979/20110322/1300803695"&gt;Mac OS X で vim の Python インタフェースを有効にする - forest book&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sudo port install vim +python27&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;こちらの環境だとpython32だとsimplenote.vimが正常に動いてくれませんでした。&lt;br /&gt;余談ですが、自分はDarwin方面も詳しく知りたいので、今後もMacPortsを使う事になりそうです。&lt;br /&gt;この状態でvimとすると/usr/bin/vimが起動してしまうので、ひとまず~/.bashrcにalias vim="/opt/local/bin/vim"としましたが、この手は微妙な感じがします。。。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2:pathogen.vimを入れる&lt;/b&gt;&lt;br /&gt;[参考:&lt;a href="http://tech.kayac.com/archive/vim-plugin-coding.html"&gt;vimプラグインでよりよいコーディングを | tech.kayac.com - KAYAC engineers' blog&lt;/a&gt;]&lt;br /&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=2332"&gt;pathogen.vim - Easy manipulation of 'runtimepath', 'path', 'tags', etc : vim online&lt;/a&gt;からver.2.0をダウンロードし、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ mkdir ~/.vim/autoload&lt;br /&gt;$ mv /path/to/pathogen.vim ~/.vim/autoload&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;プラグインをディレクトリ単位で管理できるようになるようです。&lt;br /&gt;ちなみにvimのプラグインを入れるのはこれが初めてです。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3:simplenote.vimを入れる&lt;/b&gt;&lt;br /&gt;&lt;a href="http://mrtazz.github.com/simplenote.vim/"&gt;simplenote.vim @ GitHub&lt;/a&gt;を参考にして、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ mkdir ~/.vim/bundle&lt;br /&gt;$ cd ~/.vim/bundle&lt;br /&gt;$ git clone git://github.com/mrtazz/simplenote.vim.git&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4:.vimrcをいじる&lt;/b&gt;&lt;br /&gt;以下を追加。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;call pathogen#infect()&lt;br /&gt;let g:SimplenoteUsername = "xxxxxxxxxx"&lt;br /&gt;let g:SimplenotePassword = "yyyyyyyyy"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;"xxxxxxxxxx", "yyyyyyyyy"はそれぞれSimplenoteのアカウント名（メアド）とパスワードです。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5:使ってみる&lt;/b&gt;&lt;br /&gt;&lt;a href="https://github.com/mrtazz/simplenote.vim/blob/master/README.md"&gt;README.md at master from mrtazz/simplenote.vim - GitHub&lt;/a&gt;で使い方が確認できます。&lt;br /&gt;&lt;br /&gt;読み込むとき固まるのが若干ストレスでしょうかね。&lt;br /&gt;でもしばらく使ってみようと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-6256191459524806074?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/6256191459524806074/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=6256191459524806074' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6256191459524806074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6256191459524806074'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/11/vimsimplenote.html' title='vimでSimplenoteを使う'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-7792224096046098181</id><published>2011-10-29T14:10:00.002+09:00</published><updated>2011-10-29T14:16:33.650+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fusion'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>母艦(Mac mini)をLionにアップグレードした</title><content type='html'>母艦の方でiCloudが使えないのも如何なものかと思いアップグレードしました。&lt;br /&gt;よく考えたら買わなくてもADCでダウンロード出来たんですよね。。。&lt;br /&gt;&lt;br /&gt;ADCのサイトでLionダウンロード用のRedeemコードを発行してもらい、&lt;br /&gt;それをAppStoreで入力する形だったわけですが、&lt;br /&gt;ADCログイン時のAppleIDと、AppStoreでコード入力する時のAppleIDは&lt;br /&gt;違っていても特に問題ないようでした。&lt;br /&gt;&lt;br /&gt;SnowLeopardからLionに上げた際の不具合に関して、&lt;br /&gt;とりあえずFusionでUSBデバイスが認識されないというものがありました。&lt;br /&gt;この件は&lt;a href="http://www.unlimited-extreme.com/akihisa.higuchi/software/os-x-lion-vmware-fusion-3.html"&gt;OS X LionでのVMware Fusion 3の不具合への対応まとめ | エクストリームオフライン&lt;/a&gt;にある通り、&lt;br /&gt;/のパーミッションを変更する事で解決しました。&lt;br /&gt;&lt;br /&gt;Fusion 4へのアップグレードはどうするかな…また安売りした時で良いかな…。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-7792224096046098181?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/7792224096046098181/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=7792224096046098181' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7792224096046098181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7792224096046098181'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/mac-minilion.html' title='母艦(Mac mini)をLionにアップグレードした'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-4662772376809874264</id><published>2011-10-29T01:35:00.003+09:00</published><updated>2011-10-29T01:58:11.639+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='slime'/><category scheme='http://www.blogger.com/atom/ns#' term='common lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>lispで無駄にハマったよメモ</title><content type='html'>結論：改行は\nではなく~%&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;*  (format t "hoge\nfuga\nhago\n")&lt;br /&gt;hogenfuganhagon&lt;br /&gt;NIL&lt;br /&gt;*  (format t "hoge~%fuga~%hago~%")&lt;br /&gt;hoge&lt;br /&gt;fuga&lt;br /&gt;hago&lt;br /&gt;NIL&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;[参考:&lt;a href="http://www.gnu.org/s/kawa/Format.html"&gt;Formatted Output (Common-Lisp-style)&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;\nとか書いてるサイト！絶対に許さないよ！！&lt;br /&gt;&lt;br /&gt;clisp消してsbclにしてみたり、emacs + slimeを導入してみたりしたけど\nだとダメで、&lt;br /&gt;\nはxyzzy lispっていうやつの方言っぽいですなー。&lt;br /&gt;亜種によってフォーマットが違うとか、、、先が思いやられる。。。&lt;br /&gt;(いわゆるcommon lispだと~%なのだろうか。。。）&lt;br /&gt;&lt;br /&gt;emacs + slimeのインストールは&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sudo port uninstall clisp&lt;br /&gt;$ sudo port install sbcl slime&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;くらいしかやった記憶が無いです。（clispをアンインストールしてたりしますが）&lt;br /&gt;slimeを入れると同時にemacs 23.3.1が/opt/local/bin/emacsに入り、whichでもこちらが表示されるのですが、&lt;br /&gt;普通にemacsと打つと/usr/bin/emacs 22.1.1が起動します。(^^;&lt;br /&gt;&lt;br /&gt;SLIMEの利用方法については &lt;a href="http://d.hatena.ne.jp/Rion778/20100719/1279537664"&gt;SLIMEインストールメモ - もうカツ丼でいいよな&lt;/a&gt;が良かったです。&lt;br /&gt;.emacsの設定をコピペするだけで使えた。（他のサイトに載っている設定では何故か上手く行かなかった）&lt;br /&gt;&lt;br /&gt;また、今回ずっとターミナルからemacsを利用してた訳ですが、メタキーはalt(option)だと思い込んで&lt;br /&gt;一所懸命Option + xでslimeと入力してました。（結果、sだけコマンドとして認識されて、limeだけエディタ側に入力&lt;br /&gt;されるみたいな状況になってた）&lt;br /&gt;この問題に関しては、&lt;a href="http://d.hatena.ne.jp/goinger/20090104/1231048095"&gt;[mac][emacs] Terminal上でemacsのメタキーを使う方法 - goinger的日記&lt;/a&gt;に書かれている通り、ターミナルの環境設定画面で「メタキーとして option キーを使用」にチェックを入れる事でM + x slimeと入力してslimeを利用する事ができるようになりました。&lt;br /&gt;&lt;br /&gt;emacsの使い方を覚えながらlispも勉強する感じになるかなと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-4662772376809874264?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/4662772376809874264/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=4662772376809874264' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4662772376809874264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4662772376809874264'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/lisp.html' title='lispで無駄にハマったよメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-8475298150501433586</id><published>2011-10-24T22:13:00.003+09:00</published><updated>2011-10-24T22:30:44.666+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='flot'/><category scheme='http://www.blogger.com/atom/ns#' term='Smarty'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='Silex'/><title type='text'>phpリハビリメモ</title><content type='html'>HDDクラッシュでｱﾎﾞ-ﾝしたシステムを暇を見つけて再構築中。。。&lt;br /&gt;&lt;br /&gt;今回Silexというのを使ってみました。&lt;br /&gt;&lt;a href="http://silex-users-jp.phper.jp/doc/html/usage.html"&gt;使用方法 | Japan Symfony Group&lt;/a&gt;&lt;br /&gt;もうくじけそうです。。。簡単なシステムなので、view(Smarty)とmodel(俺俺pgsqlクラス)が有れば&lt;br /&gt;コントローラはどうでも良いかなー的な。&lt;br /&gt;&lt;br /&gt;とりあえずrouting(?)が出来るのが便利かなと。&lt;br /&gt;でもPOSTはRequestというのを使うしか無いのだろうか。。。Synfony使わないと行けないなら即使用をやめる予定。&lt;br /&gt;&lt;br /&gt;ほんと小さいシステムなので。&lt;br /&gt;&lt;br /&gt;あとは適当メモ：&lt;br /&gt;Silex:&lt;br /&gt;・開発中はdisplay_errorsのセットと$app['debug'] = trueをセットしておいた方が良さげ。&lt;br /&gt;・index.phpがあるディレクトリが指定された場合に対応するには&lt;br /&gt;　$app-&gt;get( '/', function () use ($app) { // みたいな感じ。/{item_id}ならfunction($item_id)として引数の数を対応させる必要あり&lt;br /&gt;Smarty:&lt;br /&gt;・$view-&gt;left_delimiter = '&amp;lt;!--{'; $view-&gt;right_delimiter = '}--&amp;gt;'; // でSmarty($view)のタグ変更&lt;br /&gt;・$view-&gt;template_dir = 'hoge'; // でテンプレートのディレクトリを変更( デフォルトは./templates )&lt;br /&gt;・$view-&gt;compile_dir = 'fuga'; // でキャッシュのディレクトリを変更( デフォルトは./templates_c )&lt;br /&gt;&lt;br /&gt;flot:&lt;br /&gt;・とりあえずjquery.flot.jsをscriptタグで読み込ませれば動く。&lt;br /&gt;・$(functions());を使うならjquery.jsも読み込む必要が有る。&lt;br /&gt;・データは[ x, y ]の配列なのでちょっとデータの整形がめんどいか。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-8475298150501433586?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/8475298150501433586/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=8475298150501433586' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8475298150501433586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8475298150501433586'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/php.html' title='phpリハビリメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-9215081031385309857</id><published>2011-10-23T18:45:00.003+09:00</published><updated>2011-10-23T18:59:50.003+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='iptables'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='httpd'/><title type='text'>iptablesで海外からのhttpアクセスを拒否する</title><content type='html'>本格的な(?)webサーバ公開にあたり、iptablesを見直してみました。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://centossrv.com/iptables.shtml"&gt;ファイアウォール構築(iptables) - CentOSで自宅サーバー構築&lt;/a&gt;から&lt;br /&gt;国別に制限をかける部分のみパチりました。&lt;br /&gt;&lt;br /&gt;今回作成したシェルスクリプトは以下の通りです。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#/bin/bash&lt;br /&gt;# http://centossrv.com/iptables.shtml をカスタムし、ACCEPT_COUNTRYというルールを作成する&lt;br /&gt;&lt;br /&gt;# ACCEPT_COUNTRY_MAKE関数定義&lt;br /&gt;# 指定された国のIPアドレスからのアクセスを許可するユーザ定義チェイン作成&lt;br /&gt;ACCEPT_COUNTRY_MAKE(){&lt;br /&gt;    for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print $2}'`&lt;br /&gt;    do&lt;br /&gt;        iptables -A ACCEPT_COUNTRY -s $addr -j ACCEPT&lt;br /&gt;    done&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# IPアドレスリスト取得関数定義&lt;br /&gt;IPLISTGET(){&lt;br /&gt;    # http://nami.jp/ipv4bycc/から最新版IPアドレスリストを取得する&lt;br /&gt;    wget -q http://nami.jp/ipv4bycc/cidr.txt.gz&lt;br /&gt;    gunzip cidr.txt.gz&lt;br /&gt;    # 最新版IPアドレスリストが取得できなかった場合&lt;br /&gt;    if [ ! -f cidr.txt ]; then&lt;br /&gt;        if [ -f /tmp/cidr.txt ]; then&lt;br /&gt;            # バックアップがある場合はその旨をroot宛にメール通知して処理を打ち切る&lt;br /&gt;            echo cidr.txt was read from the backup! | mail -s $0 root&lt;br /&gt;            return&lt;br /&gt;        else&lt;br /&gt;            # バックアップがない場合はその旨をroot宛にメール通知して処理を打ち切る&lt;br /&gt;            echo cidr.txt not found!|mail -s $0 root&lt;br /&gt;            exit 1&lt;br /&gt;        fi&lt;br /&gt;    fi&lt;br /&gt;    # 最新版IPアドレスリストを /tmpへバックアップする&lt;br /&gt;    /bin/mv cidr.txt /tmp/cidr.txt&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;IPLISTGET&lt;br /&gt;&lt;br /&gt;# 現在のチェインを削除&lt;br /&gt;iptables -F ACCEPT_COUNTRY&lt;br /&gt;&lt;br /&gt;# 新しくチェインを作成&lt;br /&gt;iptables -N ACCEPT_COUNTRY&lt;br /&gt;&lt;br /&gt;ACCEPT_COUNTRY_MAKE JP&lt;br /&gt;iptables -A ACCEPT_COUNTRY -j REJECT&lt;br /&gt;&lt;br /&gt;# LAN内からのhttpdへのアクセスは許可する&lt;br /&gt;iptables -I INPUT 1 -p tcp --dport 80 -s 192.168/16 -j ACCEPT&lt;br /&gt;&lt;br /&gt;# LAN以外からのhttpへのアクセスはACCEPT_COUNTRYで処理する&lt;br /&gt;iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT_COUNTRY&lt;br /&gt;&lt;br /&gt;# ACCEPT_COUNTRYでACCEPTされないhttpアクセスは拒否する&lt;br /&gt;iptables -I INPUT 3 -p tcp --dport 80 -j REJECT&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;参考サイトに載っていたIPリスト取得部分とフィルタ設定部分がコピペでそのまま動いてしまったので&lt;br /&gt;敢えてそのまま載せてしまいます。(^^;&lt;br /&gt;&lt;br /&gt;iptablesのオプションは&lt;a href="http://www.asahi-net.or.jp/~aa4t-nngk/iptables.html"&gt;Stray Penguin - Linux Memo (iptables)&lt;/a&gt;が分かり易いです。&lt;br /&gt;&lt;br /&gt;このスクリプトは80番ポート用のルールを追加するだけで、１から作り直すわけではありません。&lt;br /&gt;許可するのはLAN内と日本国内からのアクセスで、それ以外は拒否します。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;とりあえず、このスクリプトを１度実行した状態でしばらく様子を見てみる予定です。&lt;br /&gt;正しく動いていれば、httpdのaccess_logに海外IPが追加されなくなっているはず…！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-9215081031385309857?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/9215081031385309857/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=9215081031385309857' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/9215081031385309857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/9215081031385309857'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/iptableshttp.html' title='iptablesで海外からのhttpアクセスを拒否する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-9032977189418596974</id><published>2011-10-23T16:28:00.003+09:00</published><updated>2011-10-23T16:39:08.678+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='1Password'/><title type='text'>iPhone間で1Passwordのデータを移す</title><content type='html'>iPhone 4sの方にジワジワとデータを移行しています。iCloudやEvernoteのようにネットで簡単に同期&lt;br /&gt;させるタイプのアプリは良いのですが、そうでないタイプは結構大変ですね。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;必要な物&lt;/b&gt;&lt;br /&gt;・PC, iPhone(移行元), iPhone(移行先)&lt;br /&gt;・Wifiネットワーク(3台とも同一ネットワーク内につながっている事)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;手順&lt;/b&gt;&lt;br /&gt;・iPhone(移行元)の1Passwordを実行し、[Settings]-[Database]-[Backup &amp; Restore]を選択する&lt;br /&gt;・iPhone(移行元)に表示されたアドレスにPCのブラウザからアクセスする。&lt;br /&gt;・ブラウザで「Backup」側のリンクを押下してバックアップファイルをダウンロードする。&lt;br /&gt;・iPhone(移行元)の1Passwordを終了する。&lt;br /&gt;・iPhone(移行先)の1Passwordを実行し、上記と同様にブラウザからアクセスできるようにする。&lt;br /&gt;・今度は「Restore」の方で、先ほどダウンロードしたファイルを選択し、「Restore」ボタンを押下する。&lt;br /&gt;・データが移行された事を確認する。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-9032977189418596974?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/9032977189418596974/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=9032977189418596974' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/9032977189418596974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/9032977189418596974'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/iphone1password.html' title='iPhone間で1Passwordのデータを移す'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5975524143309912671</id><published>2011-10-23T16:21:00.003+09:00</published><updated>2011-10-23T16:27:52.170+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tethering'/><category scheme='http://www.blogger.com/atom/ns#' term='L-04C'/><title type='text'>Optimus chat L-04CのRootを有効にしてテザリングできるようにした</title><content type='html'>参考にしたのは&lt;a href="http://homebase.gotdns.org/home/index.php/ja/2008-06-21-09-04-40/17-2010-11-20-15-23-11/103-optimus-chat-l-04c-root?showall=1&amp;limitstart="&gt;Optimus chat L-04C Root化&lt;/a&gt;と&lt;a href="http://ayati.cocolog-nifty.com/blog/2011/08/rooted-optimus-.html"&gt;rooted Optimus chat L-04Cの簡単なカスタマイズ: こばこのひみつ&lt;/a&gt;辺りです。&lt;br /&gt;&lt;br /&gt;自分の場合はSuperOneClickv1.7-ShortFuse.zipをダウンロードしました。&lt;br /&gt;あと、puttyで実機にログインできなかった(puttyが落ちる？)ので、ESファイルエクスプローラを使いました。&lt;br /&gt;既に別のputtyをインストール済みだったからかもしれません。&lt;br /&gt;テザリングを実際に有効にすると、WiFiルータと同様の手順でL-04Cを通じてネットにアクセスする事が出来ます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5975524143309912671?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5975524143309912671/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5975524143309912671' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5975524143309912671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5975524143309912671'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/optimus-chat-l-04croot.html' title='Optimus chat L-04CのRootを有効にしてテザリングできるようにした'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2652617202387634953</id><published>2011-10-23T15:48:00.004+09:00</published><updated>2011-10-23T16:10:49.113+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='b-mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='L-04C'/><title type='text'>NTT docomo Optimus chat L-04Cにイオンb-mobileのSIMを挿したよメモ</title><content type='html'>NTT docomo Optimus chat L-04Cをゲットしました&lt;br /&gt;主目的はb-mobileのイオンSIMを入れてMacbook Airでテザリングする事です。&lt;br /&gt;ヤフオクで5千円＋送料でした。(2011/10/19)&lt;br /&gt;&lt;br /&gt;元々モバイルWiFiルータを購入しようと思っていたのですが、&lt;a href="http://www.logsoku.com/thread/hibari.2ch.net/mobile/1318939755/"&gt;【日本通信】イオンプラン専用19店舗目【b-mobile】&lt;/a&gt;を見て調べてみるとヤフオクではHW-01C(黒卵)よりこちらの方が安かったのでこちらにしました。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;導入手順&lt;/b&gt;&lt;br /&gt;・SIMを挿入してL-04Cを起動する&lt;br /&gt;・始めの画面から下方向にスクロール後、[本体設定]-[設定]-[無線とネットワーク]-[モバイルネットワーク]-[アクセスポイント名]で&lt;br /&gt;　「新しいAPN」を選択し、b-mobileの説明書？に書いてある通りの設定を入力する&lt;br /&gt;・[アクセスポイント名]と同階層の[データ通信を有効にする]にチェックを入れる。&lt;br /&gt;・画面上部のアンテナ本数の左側に「H↑↓」みたいなアイコンが表示されればOK.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;L-04Cでのb-mobile(プランA)の使用感&lt;/b&gt;&lt;br /&gt;・ふたば閲覧はかなりキツい！！&lt;br /&gt;・twitterはテキストは早い。アイコン読み込みはかなり待つ。画像がキャッシュされればそこそこ普通に使える。&lt;br /&gt;・Androidマーケットも初回は相当待つ。&lt;br /&gt;&lt;br /&gt;画像が有るサイトはキャッシュが命ですかね。ふたばは画像多いから厳しいなぁ。&lt;br /&gt;RSS, Twitter, メール用かなーという感じがしますね。&lt;br /&gt;まぁ暇つぶしには十分かと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2652617202387634953?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2652617202387634953/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2652617202387634953' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2652617202387634953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2652617202387634953'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/ntt-docomo-optimus-chat-l-04cb.html' title='NTT docomo Optimus chat L-04Cにイオンb-mobileのSIMを挿したよメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5959425358255395830</id><published>2011-10-23T15:14:00.003+09:00</published><updated>2011-10-23T15:48:37.615+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='local'/><title type='text'>iPhone 4sゲットしてきました</title><content type='html'>2011/10/22、札幌ヨドバシにてゲットしてきました。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;使った物&lt;/b&gt;&lt;br /&gt;契約時：&lt;br /&gt;・au iPhone 4sの予約票&lt;br /&gt;・MNPの予約票&lt;br /&gt;・運転免許証&lt;br /&gt;・Softbank iPhone 3GS&lt;br /&gt;・クレジットカード&lt;br /&gt;支払時：&lt;br /&gt;・本体代金&lt;br /&gt;・ヨドバシポイントカード&lt;br /&gt;&lt;br /&gt;意外と多い！&lt;br /&gt;&lt;br /&gt;気づいた事など。&lt;br /&gt;・契約プランの決定と諸々の確認で30分強かかった&lt;br /&gt;・その後au側の処理のため、1時間待たされた。街をぶらぶら&lt;br /&gt;・MNPしたiPhon 3GSは待ち時間開始から30分程度で使えなくなっていた&lt;br /&gt;・乗り換えキャンペーンの１万円は郵便為替で届くらしい（クレカ契約だから？）&lt;br /&gt;・本体代金は現金一括払い。ヨドバシポイントは5%&lt;br /&gt;・本体代金以外は契約したクレカから電話代金と一緒に請求される模様&lt;br /&gt;・受け取り時、若干トラブっていた（本体の連絡先に自分の電話番号が表示されてこない、&lt;br /&gt;　他人の携帯電話を渡されそうになる）&lt;br /&gt;&lt;br /&gt;電波状況は追って報告します。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5959425358255395830?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5959425358255395830/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5959425358255395830' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5959425358255395830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5959425358255395830'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/iphone-4s.html' title='iPhone 4sゲットしてきました'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-1763115040796563052</id><published>2011-10-20T19:54:00.004+09:00</published><updated>2011-10-20T20:06:08.268+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='au'/><category scheme='http://www.blogger.com/atom/ns#' term='MNP'/><category scheme='http://www.blogger.com/atom/ns#' term='softbank'/><title type='text'>au iPhone 4sを札幌ヨドバシで予約してきました</title><content type='html'>2011/10/20&lt;br /&gt;&lt;a href="http://www.yodobashi.com/ec/support/news/1213377683901/index.html"&gt;ヨドバシ.comのお知らせ&lt;/a&gt;を見ると&lt;br /&gt;在庫があるものは即日ゲットで来そうですが、全然無理でした。&lt;br /&gt;2日後の10時に再来店の予定。&lt;br /&gt;&lt;br /&gt;店員(キャリアの専門員ではなく、あくまでヨドバシの店員っぽい)が大変そっけなく、&lt;br /&gt;「10時半で」と言うと「10時ですね」とか、「16GB白で」と言うと、「16GBの黒ですね」とか言う始末。&lt;br /&gt;予約表を見ると手続きの来店時刻は1時間刻みでしか受け付けてない模様。先に言えよ。&lt;br /&gt;&lt;br /&gt;てな感じで気分が悪い中予約してきました。&lt;br /&gt;MNPの手続きは自分でする必要があるとのことだったので、帰りにSBに寄って&lt;br /&gt;予約番号を発行してもらいました。&lt;br /&gt;自分は2009/09からの契約で、現在2年2ヶ月目なのでちょうど更新月内(2年1〜3ヶ月までOKっぽい)&lt;br /&gt;なので解約手数料はかかりませんでした。手数料の2,100は現在の支払いと同じ方法で支払われる模様。&lt;br /&gt;&lt;br /&gt;次号を待て。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-1763115040796563052?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/1763115040796563052/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=1763115040796563052' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1763115040796563052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1763115040796563052'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/au-iphone-4s.html' title='au iPhone 4sを札幌ヨドバシで予約してきました'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-8335092085747221340</id><published>2011-10-20T19:29:00.003+09:00</published><updated>2011-10-20T19:54:32.299+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='b-mobile'/><title type='text'>イオンのb-mobile simを購入しました</title><content type='html'>&lt;a href="www.bmobile.ne.jp/aeon/"&gt;イオン限定サービス | b-mobileSIM - b-mobile&lt;/a&gt;&lt;br /&gt;@桑園イオン。もちろんAプラン(980円/月)&lt;br /&gt;&lt;br /&gt;事前に&lt;a href="http://tatsuakisakai.net/?p=149"&gt;イオンb-mobile提携のSIMカードを購入してみました &amp;laquo;  Tatsuaki Sakai .NET&lt;/a&gt;で予習してから行きました。&lt;br /&gt;上記の記事の通りでした。気づいた事を何点か。&lt;br /&gt;&lt;br /&gt;・携帯売り場で取り扱っていた。&lt;br /&gt;・必要な物は身分証明証＋クレカで、メアドも必要っぽい。&lt;br /&gt;・AMEX OK。初期手数料もここから引き落とされる模様。&lt;br /&gt;・手続き後、10分くらい待たされた。その後SIM受け取りで終了。&lt;br /&gt;・日本通信からの仮登録メールが2時間後くらいに届いていた。&lt;br /&gt;・この後10日ほど待ってもメールが来ない場合、自分で問い合わせが必要とのこと。&lt;br /&gt;&lt;br /&gt;というわけで、メール待ちステータスです&lt;br /&gt;当日開通は無理かー&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-8335092085747221340?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/8335092085747221340/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=8335092085747221340' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8335092085747221340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8335092085747221340'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/b-mobile-sim.html' title='イオンのb-mobile simを購入しました'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5447869563713230215</id><published>2011-10-17T14:17:00.002+09:00</published><updated>2011-10-17T14:24:58.235+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='awk'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Unix系OSでテキストデータの最大値を求める</title><content type='html'>&lt;pre&gt;&lt;br /&gt;awk '$1&gt;m{m=$1}END{print "Max number: "m}' &lt;i&gt;file&lt;/i&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;[参考:&lt;a href="http://www.unix.com/shell-programming-scripting/91271-count-max-awk.html"&gt; count the max by awk - The UNIX and Linux Forums&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5447869563713230215?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5447869563713230215/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5447869563713230215' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5447869563713230215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5447869563713230215'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/unixos.html' title='Unix系OSでテキストデータの最大値を求める'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2827821032683137605</id><published>2011-10-16T23:27:00.003+09:00</published><updated>2011-10-16T23:36:20.468+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Minecraft'/><title type='text'>Minecraftをクレジットカードで買ったよメモ</title><content type='html'>・普通のショッピングサイトと同様にクレジットカードで決済する。&lt;br /&gt;・すると、正式にサブミットされてない的なメッセージが表示され、確認メールをSMSに送るから、&lt;br /&gt;　携帯の番号を入力しろと促される。&lt;br /&gt;・+81は日本の国番号なのでそのままにしておき、右の方に携帯の番号を入力して確定する。&lt;br /&gt;・すると、キー番号を入力する画面になる。&lt;br /&gt;・数十秒すると、どこぞからSMSにメールが届き、読むとキー番号が記載されている。&lt;br /&gt;・ブラウザの画面にキー番号を入力して確定する。&lt;br /&gt;・決済が完了する。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;というわけで、週末Mac上でやってました。すぐ死ぬのでPeacefulにしてます。&lt;br /&gt;肩が凝るのでやっぱコントローラでやりたいなあと思っています。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2827821032683137605?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2827821032683137605/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2827821032683137605' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2827821032683137605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2827821032683137605'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/minecraft.html' title='Minecraftをクレジットカードで買ったよメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-4010569849460156881</id><published>2011-10-16T22:59:00.005+09:00</published><updated>2011-10-16T23:26:39.492+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='private'/><title type='text'>Canon CanoScan LIDE 210 買ったよメモ</title><content type='html'>実験ノートのスキャン用に購入しました。&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=urisawa-22&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=B004184NBY" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以下、雑感＋メモ：&lt;br /&gt;&lt;br /&gt;・必ず底面のスイッチでロックを解除してから使いましょう。&lt;br /&gt;　そうしないと、例えばPreview.appでは「デバイス上でセッションを開けませんでした」というエラーが出たりする。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-UOdbAtdu5do/TprmJzfAFhI/AAAAAAAAAK4/cxLsqFTPyOg/s1600/scan.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 248px;" src="http://4.bp.blogspot.com/-UOdbAtdu5do/TprmJzfAFhI/AAAAAAAAAK4/cxLsqFTPyOg/s320/scan.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5664092537485268498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;・ドライバのインストールは必須。付属CDからでなくwebから落としても良いと思う。&lt;br /&gt;　（但し、webは若干見つけにくい、http://cweb.canon.jp/cgi-bin/download/select-product-by-catg.cgi?i_cd_pr_catg=005&lt;br /&gt;　からリンクをたどるの良さげ（どうも機種名をセッションで管理してるくさい）&lt;br /&gt;&lt;br /&gt;・付属アプリはカスらしいので入れてない。&lt;br /&gt;　http://review.kakaku.com/review/K0000147959/ReviewCD=377379/&lt;br /&gt;&lt;br /&gt;・MacBook AirにインストールCDからインストールするには、今回は「DVD または CD 共有」で&lt;br /&gt;　Macmini側のDVDドライブを共有した。なぜかファイアウォールをオフにしないと使えなかった。。。&lt;br /&gt;　あと、このドライブ共有は同じサブネット内にマシンがいないとダメかもしれない。&lt;br /&gt;　Macmini: 有線、MBA: 無線、という環境では共有したドライブが見えなかった。&lt;br /&gt;&lt;br /&gt;・Preview.appだと本体前面のスイッチ押下時にいちいちダイアログが出てくるので、&lt;br /&gt;　大量にスキャンする場合はイメージキャプチャ.appの方が良いかもしれない。&lt;br /&gt;　但し、ボタン通りの動作（例えばメール添付やPDF出力など）はできない。&lt;br /&gt;　「詳細情報を表示」での設定が適用されてスキャンが実行されるのみ。&lt;br /&gt;&lt;br /&gt;・このタイプのスキャナで大量にスキャンするのはやはり疲れる。。。&lt;br /&gt;　ノートを切ってしまうのを我慢してドキュメントスキャナでも良かったかも。。。&lt;br /&gt;&lt;br /&gt;・スキャンしたデータはOCRは使わず、各ページにタグを付けて管理する予定。&lt;br /&gt;　Spotlightのコメントにタグを付ける感じかなと。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-4010569849460156881?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/4010569849460156881/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=4010569849460156881' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4010569849460156881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4010569849460156881'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/canon-canoscan-lide-210.html' title='Canon CanoScan LIDE 210 買ったよメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-UOdbAtdu5do/TprmJzfAFhI/AAAAAAAAAK4/cxLsqFTPyOg/s72-c/scan.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-3077368025734841</id><published>2011-10-10T14:11:00.003+09:00</published><updated>2011-10-10T14:24:42.104+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><category scheme='http://www.blogger.com/atom/ns#' term='localization'/><title type='text'>Xcodeでアプリがローカライズされなくなった件</title><content type='html'>発端はよく覚えてないのですが、アプリがローカライズされなくなってしまった場合は、&lt;br /&gt;Info.plist( [アプリ名]-Info.plist )に"CFBundleAllowMixedLocalizations"という項目を追加し、&lt;br /&gt;YES(true)に設定すると、上手く行く場合があるようです。&lt;br /&gt;&lt;br /&gt;こちらの環境ではLocalizable.stringsの他、CoreAudioで取得するデバイス名やソース名なども&lt;br /&gt;英語のままでローカライズされた文字列が取得できなくなってしまっていました。&lt;br /&gt;&lt;br /&gt;[参考:&lt;a href="http://developer.apple.com/library/mac/#documentation/general/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-SW1"&gt;Information Property List Key Reference: Core Foundation Keys&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;ただ、テンプレートからXcodeのプロジェクトの作成すると、&lt;br /&gt;CFBundleAllowMixedLocalizationsがセットされていないにも関わらず&lt;br /&gt;ちゃんと日本語の文字列が取得できる模様。。。。よく分からない。。。。要調査。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-3077368025734841?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/3077368025734841/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=3077368025734841' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3077368025734841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3077368025734841'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/xcode.html' title='Xcodeでアプリがローカライズされなくなった件'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-515818618908646235</id><published>2011-10-08T19:21:00.002+09:00</published><updated>2011-10-08T19:35:29.890+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreAudio'/><title type='text'>オーディオデバイスの音量を変更する</title><content type='html'>&lt;pre class="prettyprint"&gt;&lt;br /&gt;+ (void)setVolumeOfDevice:(AudioDeviceID)deviceID isInput:(BOOL)isInput volume:(Float32)volume {&lt;br /&gt;    OSStatus err;&lt;br /&gt;    UInt32 size;&lt;br /&gt;&lt;br /&gt;    Float32* volumePtr = &amp;amp;volume;&lt;br /&gt;    size = sizeof(Float32);&lt;br /&gt;    AudioObjectPropertyAddress prop = MakeAOPA( kAudioDevicePropertyVolumeScalar,&lt;br /&gt;                                               MakeIOScope(isInput),&lt;br /&gt;                                               kAudioObjectPropertyElementMaster );&lt;br /&gt;&lt;br /&gt;    // check whether the master channel volume is editable&lt;br /&gt;    Boolean isSettable;&lt;br /&gt;    AudioObjectIsPropertySettable( deviceID, &amp;amp;prop, &amp;amp;isSettable );&lt;br /&gt;&lt;br /&gt;    if ( isSettable ) {&lt;br /&gt;        err = [uAudioHardwareMananger prv_setPropertyData:deviceID&lt;br /&gt;                                                 property:&amp;amp;prop&lt;br /&gt;                                                     size:&amp;amp;size&lt;br /&gt;                                                     data:(void**)&amp;amp;volumePtr];&lt;br /&gt;        assert( noErr == err );&lt;br /&gt;    } else {&lt;br /&gt;        UInt32 numChannels = [uAudioHardwareMananger numberOfChannelsOfDevice:deviceID isInput:isInput];&lt;br /&gt;        for ( UInt32 i = 1; i &amp;lt;= numChannels; i++ ) {&lt;br /&gt;            prop.mElement = i;&lt;br /&gt;            AudioObjectIsPropertySettable( deviceID, &amp;amp;prop, &amp;amp;isSettable );&lt;br /&gt;            // check whether each channel volume is editable&lt;br /&gt;            if ( isSettable ) {&lt;br /&gt;                err = [uAudioHardwareMananger prv_setPropertyData:deviceID&lt;br /&gt;                                                         property:&amp;amp;prop&lt;br /&gt;                                                             size:&amp;amp;size&lt;br /&gt;                                                             data:(void**)&amp;amp;volumePtr];&lt;br /&gt;                assert( noErr == err );&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    assert( noErr == err );&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;・AudioObjectPropertyAddress.mElementはチャンネルを表す模様。但し、0(kAudioObjectPropertyElementMaster)はマスターチャンネルっぽい。&lt;br /&gt;・上記ソースでは、マスターチャンネルのボリュームを変更できればマスターチャンネルを、できなければ各チャンネルのボリュームを&lt;br /&gt;　変更する。&lt;br /&gt;・ Audio MIDI設定.appとシステム環境設定のサウンドを比較すると、システム環境設定の「主音量」は&lt;br /&gt;　全てのチャンネルでの最大値を示している…ような気がする。&lt;br /&gt;　また、Audio MIDI設定で1chと2chの音量を異なるように変更するとシステム環境設定の「バランス」が変わる。&lt;br /&gt;　主音量やバランスを一気に変更する方法があるかどうかは要調査。バランスはkAudioDevicePropertyStereoPanかも。&lt;br /&gt;&lt;br /&gt;・AudioObject系の関数群ではAudioObjectIsPropertySettable()やAudioObjectHasProperty()などで変更可否やプロパティの有無を判定するようだ。&lt;br /&gt;・自前のuAudioHardwareManangerクラスのメソッド解説は割愛。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-515818618908646235?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/515818618908646235/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=515818618908646235' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/515818618908646235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/515818618908646235'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/blog-post_2310.html' title='オーディオデバイスの音量を変更する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5281782107142022727</id><published>2011-10-08T17:36:00.003+09:00</published><updated>2011-10-08T18:05:07.444+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreAudio'/><title type='text'>オーディオデバイスのソース名を取得する</title><content type='html'>&lt;pre class="prettyprint"&gt;&lt;br /&gt;+ (NSString*)sourceNameOfDevice:(AudioObjectID)deviceID isInput:(BOOL)isInput {&lt;br /&gt; // Get the data source item ID somehow.&lt;br /&gt;    UInt32 dataSource = [uAudioHardwareMananger dataSourceOfDevice:deviceID isInput:isInput];&lt;br /&gt;&lt;br /&gt;    AudioObjectPropertyAddress prop;&lt;br /&gt;    OSStatus err;&lt;br /&gt;   &lt;br /&gt; // Prepare AudioObjectPropertyAddress somehow.&lt;br /&gt;    prop = MakeAOPA( kAudioDevicePropertyDataSourceNameForIDCFString,&lt;br /&gt;                    MakeIOScope( isInput ),&lt;br /&gt;                    kAudioObjectPropertyElementMaster );&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    CFStringRef dataSourceName = NULL;&lt;br /&gt;   &lt;br /&gt; // Prepare AudioValueTranslation somehow.&lt;br /&gt;    AudioValueTranslation avt = MakeAVT( &amp;amp;dataSource,&lt;br /&gt;                                        sizeof( UInt32 ),&lt;br /&gt;                                        &amp;amp;dataSourceName,&lt;br /&gt;                                        sizeof( CFStringRef ) );&lt;br /&gt;    UInt32 avtSize = sizeof( AudioValueTranslation );&lt;br /&gt;   &lt;br /&gt; // Get the source name as CFString, which is retained.&lt;br /&gt;    err = AudioObjectGetPropertyData( deviceID,&lt;br /&gt;                                     &amp;amp;prop,&lt;br /&gt;                                     0,&lt;br /&gt;                                     NULL,&lt;br /&gt;                                     &amp;amp;avtSize,&lt;br /&gt;                                     &amp;amp;avt);&lt;br /&gt;   &lt;br /&gt;    assert( noErr == err );&lt;br /&gt;   &lt;br /&gt;    return [(NSString*)dataSourceName autorelease];&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;AudioObjectGetPropertyData()を使ってオーディオデバイスのプロパティを取得する際に、&lt;br /&gt;そのプロパティに何か入力パラメータが必要な場合（今回はデバイスのデータソースID、&lt;br /&gt;デバイスは複数のデータソースを持つため）はAudioValueTranslationという変数を介する必要がある。&lt;br /&gt;[参考:&lt;a href="https://bitbucket.org/jclyons/adium-av/src/e26f0aa03a89/Source/AIMediaPreferences.m"&gt;jclyons / adium-av / source &amp;mdash; Bitbucket&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;その事になかなか気づかず、一所懸命AudioObjectGetPropertyData()の第2、第３引き数にdata source IDを入れてしまっていた。。。&lt;br /&gt;この方法ではAudioObjectGetPropertyDataSize()はnoErrだったため、サイズの指定とかに問題が有るんだろうと決め込んでいた。。。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;自前で実装している&lt;br /&gt;・+ [uAudioHardwareMananger dataSourceOfDevice:isInput:]&lt;br /&gt;・MakeAOPA()&lt;br /&gt;・MakeIOScope()&lt;br /&gt;・MakeAVT()&lt;br /&gt;については割愛。&lt;br /&gt;&lt;br /&gt;取得したCFStringは呼び出し元がreleaseする必要がある。&lt;br /&gt;[参考:CoreAudio.framework/AudioHardware.hのkAudioDevicePropertyDataSourceNameForIDCFStringへのコメント]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5281782107142022727?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5281782107142022727/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5281782107142022727' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5281782107142022727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5281782107142022727'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/blog-post_08.html' title='オーディオデバイスのソース名を取得する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2056321506737480605</id><published>2011-10-08T12:35:00.003+09:00</published><updated>2011-10-08T12:46:08.808+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><category scheme='http://www.blogger.com/atom/ns#' term='localization'/><title type='text'>mercurialでブランチ切ったメモ</title><content type='html'>Xcodeで開発してたら文字列やリソースを日本語化できなくなり、リカバーできなくなってしまいました。。。&lt;br /&gt;色々試行錯誤した結果を残しておきたいので、ブランチを切った時の内容を貼っておきます。&lt;br /&gt;(一度ローカライズした日本語用MainMenu.xibを消したのが原因？？？）&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ &lt;font color=blue&gt;hg branches&lt;/font&gt;&lt;br /&gt;default                        1:749ce7a01830&lt;br /&gt;$ &lt;font color=blue&gt;hg branch unlocalizable&lt;/font&gt;&lt;br /&gt;作業領域をブランチ unlocalizable に設定&lt;br /&gt;$ &lt;font color=blue&gt;hg st&lt;/font&gt;&lt;br /&gt;M Hoge.xcodeproj/project.pbxproj&lt;br /&gt;M Hoge.xcodeproj/project.xcworkspace/xcuserdata/urisawa.xcuserdatad/UserInterfaceState.xcuserstate&lt;br /&gt;M HogeAppDelegate.m&lt;br /&gt;M main.m&lt;br /&gt;! English.lproj/InfoPlist.strings&lt;br /&gt;! English.lproj/MainMenu.xib&lt;br /&gt;! English.lproj/Hoge-Info.plist&lt;br /&gt;? .DS_Store&lt;br /&gt;? InfoPlist.strings&lt;br /&gt;? Hoge-Info.plist&lt;br /&gt;? en.lproj/.DS_Store&lt;br /&gt;? en.lproj/Localizable.strings&lt;br /&gt;? en.lproj/MainMenu.xib&lt;br /&gt;? ja.lproj/InfoPlist.strings&lt;br /&gt;? ja.lproj/Localizable.strings&lt;br /&gt;? ja.lproj/MainMenu.xib&lt;br /&gt;? ja.lproj/Hoge-Info.plist&lt;br /&gt;? ja.lproj/localized.strings&lt;br /&gt;$ &lt;font color=blue&gt;hg add en.lproj/&lt;/font&gt;&lt;br /&gt;en.lproj/.DS_Store を追加登録中&lt;br /&gt;en.lproj/Localizable.strings を追加登録中&lt;br /&gt;en.lproj/MainMenu.xib を追加登録中&lt;br /&gt;$ &lt;font color=blue&gt;hg add ja.lproj/&lt;/font&gt;&lt;br /&gt;ja.lproj/InfoPlist.strings を追加登録中&lt;br /&gt;ja.lproj/Localizable.strings を追加登録中&lt;br /&gt;ja.lproj/MainMenu.xib を追加登録中&lt;br /&gt;ja.lproj/Hoge-Info.plist を追加登録中&lt;br /&gt;ja.lproj/localized.strings を追加登録中&lt;br /&gt;$ &lt;font color=blue&gt;hg add InfoPlist.strings Hoge-Info.plist &lt;/font&gt;&lt;br /&gt;$ &lt;font color=blue&gt;hg st&lt;/font&gt;&lt;br /&gt;M Hoge.xcodeproj/project.pbxproj&lt;br /&gt;M Hoge.xcodeproj/project.xcworkspace/xcuserdata/urisawa.xcuserdatad/UserInterfaceState.xcuserstate&lt;br /&gt;M HogeAppDelegate.m&lt;br /&gt;M main.m&lt;br /&gt;A InfoPlist.strings&lt;br /&gt;A Hoge-Info.plist&lt;br /&gt;A en.lproj/.DS_Store&lt;br /&gt;A en.lproj/Localizable.strings&lt;br /&gt;A en.lproj/MainMenu.xib&lt;br /&gt;A ja.lproj/InfoPlist.strings&lt;br /&gt;A ja.lproj/Localizable.strings&lt;br /&gt;A ja.lproj/MainMenu.xib&lt;br /&gt;A ja.lproj/Hoge-Info.plist&lt;br /&gt;A ja.lproj/localized.strings&lt;br /&gt;! English.lproj/InfoPlist.strings&lt;br /&gt;! English.lproj/MainMenu.xib&lt;br /&gt;! English.lproj/Hoge-Info.plist&lt;br /&gt;? .DS_Store&lt;br /&gt;$ &lt;font color=blue&gt;hg rm English.lproj&lt;/font&gt;&lt;br /&gt;English.lproj は削除されません: 構成管理対象ではありません&lt;br /&gt;English.lproj/InfoPlist.strings を登録除外中&lt;br /&gt;English.lproj/MainMenu.xib を登録除外中&lt;br /&gt;English.lproj/Hoge-Info.plist を登録除外中&lt;br /&gt;$ &lt;font color=blue&gt;hg st&lt;/font&gt;&lt;br /&gt;M Hoge.xcodeproj/project.pbxproj&lt;br /&gt;M Hoge.xcodeproj/project.xcworkspace/xcuserdata/urisawa.xcuserdatad/UserInterfaceState.xcuserstate&lt;br /&gt;M HogeAppDelegate.m&lt;br /&gt;M main.m&lt;br /&gt;A InfoPlist.strings&lt;br /&gt;A Hoge-Info.plist&lt;br /&gt;A en.lproj/.DS_Store&lt;br /&gt;A en.lproj/Localizable.strings&lt;br /&gt;A en.lproj/MainMenu.xib&lt;br /&gt;A ja.lproj/InfoPlist.strings&lt;br /&gt;A ja.lproj/Localizable.strings&lt;br /&gt;A ja.lproj/MainMenu.xib&lt;br /&gt;A ja.lproj/Hoge-Info.plist&lt;br /&gt;A ja.lproj/localized.strings&lt;br /&gt;R English.lproj/InfoPlist.strings&lt;br /&gt;R English.lproj/MainMenu.xib&lt;br /&gt;R English.lproj/Hoge-Info.plist&lt;br /&gt;? .DS_Store&lt;br /&gt;$ &lt;font color=blue&gt;hg commit&lt;/font&gt;&lt;br /&gt;$ &lt;font color=blue&gt;hg push&lt;/font&gt;&lt;br /&gt;ssh://server:port//path/to/repo/Hoge への反映中&lt;br /&gt;変更点を探索中&lt;br /&gt;中止: 連携先に新しいブランチが作成されます: unlocalizable!&lt;br /&gt;(連携先への新規ブランチ作成は 'hg push --new-branch')&lt;br /&gt;$ &lt;font color=blue&gt;hg push --new-branch&lt;/font&gt;&lt;br /&gt;ssh://server:port//path/to/repo/Hoge への反映中&lt;br /&gt;変更点を探索中&lt;br /&gt;遠隔ホスト: adding changesets&lt;br /&gt;遠隔ホスト: adding manifests&lt;br /&gt;遠隔ホスト: adding file changes&lt;br /&gt;遠隔ホスト: added 1 changesets with 14 changes to 14 files&lt;br /&gt;$ &lt;font color=blue&gt;hg sum&lt;/font&gt;&lt;br /&gt;親リビジョン    : 2:47f1ae789755 tip&lt;br /&gt; Preserved UNLOCALIZABLE project into 'unlocalizable' branch.&lt;br /&gt;ブランチ        : unlocalizable&lt;br /&gt;想定 commit 結果: 未知ファイル       3 (改変無し)&lt;br /&gt;update 候補     : (現行のまま)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;・hg branchesで現在のブランチを確認？&lt;br /&gt;・hg branch &lt;i&gt;branchName&lt;/i&gt;でブランチ作成（この時点でローカルが&lt;i&gt;brancheName&lt;/i&gt;ブランチとなる？）&lt;br /&gt;・hg commit でブランチにコミット。&lt;br /&gt;・hg push --new-branchで元のレポジトリにブランチを作成。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2056321506737480605?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2056321506737480605/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2056321506737480605' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2056321506737480605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2056321506737480605'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/mercurial.html' title='mercurialでブランチ切ったメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-3340419108662846250</id><published>2011-10-04T01:27:00.004+09:00</published><updated>2011-10-04T02:03:44.168+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='awk'/><category scheme='http://www.blogger.com/atom/ns#' term='gnuplot'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='R'/><title type='text'>集計メモ</title><content type='html'>勢いとノリだけで作った「&lt;a href="http://ichiba-blog.blogspot.com/2011/10/2011_04.html"&gt;2011札幌マラソンの完走タイム分布&lt;/a&gt;」の作成手順など。&lt;br /&gt;&lt;br /&gt;&lt;pre class="pretty print"&gt;&lt;br /&gt;$ cat hoge.php&lt;br /&gt;&lt;font color=blue&gt;&amp;lt;?php&lt;br /&gt;// 男性・30代の場合&lt;br /&gt;$html = file_get_contents( 'http://hokkaido.yomiuri.co.jp/36th_satumara/kiroku/men_half_30.htm' );&lt;br /&gt;preg_match( '/&amp;lt;table bordercolor=\&amp;quot;#191970\&amp;quot; border=\&amp;quot;2\&amp;quot; bgcolor=\&amp;quot;white\&amp;quot; &amp;gt;(.*)&amp;lt;\/table&amp;gt;/s', $html, $match );&lt;br /&gt;$table_html = $match[1];&lt;br /&gt;preg_match_all( '/&amp;gt;([0-9]*):([0-9]*):([0-9]*)&amp;lt;/', $table_html, $matches );&lt;br /&gt;$num_matches = count( $matches[1] );&lt;br /&gt;for ( $i = 0; $i &amp;lt; $num_matches; $i ++ ) { &lt;br /&gt;    $time = $matches[1][$i] * 60 + $matches[2][$i];&lt;br /&gt;    echo( $time . &amp;quot;\n&amp;quot; );&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;/font&gt;&lt;br /&gt;$ php hoge.php &gt; 30m.txt&lt;br /&gt;$ wc -l 30m.txt&lt;br /&gt;&lt;font color=blue&gt;     998 30m.txt&lt;/font&gt;&lt;br /&gt;$ cat a.txt&lt;font color=blue&gt;&lt;br /&gt;x &amp;lt;- read.table( &amp;quot;30m.txt&amp;quot; )&lt;br /&gt;result &amp;lt;- hist(x[,1],breaks=seq(0,180,5))&lt;br /&gt;write.table( result['counts'],'out.txt', quote=F, col.names=F);&lt;/font&gt;&lt;br /&gt;$ cat out.plt&lt;font color=blue&gt;&lt;br /&gt;set terminal pdf&lt;br /&gt;set output &amp;quot;out.pdf&amp;quot;&lt;br /&gt;set xrange[50:180]&lt;br /&gt;set size .7,1&lt;br /&gt;set xtics 10&lt;br /&gt;set yrange[0:*]&lt;br /&gt;unse key&lt;br /&gt;plot 'out2.txt' with boxes&lt;br /&gt;set output&lt;/font&gt;&lt;br /&gt;$ R --no-save &amp;lt; a.txt; cat out.txt | awk '{print ($1-1)*5+2.5,$2}' &amp;gt; out2.txt; gnuplot out.plt; open out.pdf&lt;br /&gt;$ mv out.pdf 30m.pdf&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;・phpファイル中のURL( http://...men_half_30.htm )&lt;br /&gt;・php実行結果の出力先( 30m.txt )&lt;br /&gt;・Rに食わせるバッチファイル中のデータファイル名( 30m.txt )&lt;br /&gt;・最後のpdfのファイル名( 30m.pdf )&lt;br /&gt;&lt;br /&gt;この４点をなんとかできればhtml読み込みからpdf出力までスクリプト１発でやれたんだけど&lt;br /&gt;そこまで知識と気力がなく、手作業で変更していった方が早いと思いそうしてしまった。&lt;br /&gt;&lt;br /&gt;なお、wcはちゃんと行数が一致しているかどうかを確認するために読んでいます。&lt;br /&gt;&lt;br /&gt;今回初めてawkなるものを使ってみましたがなかなかユーザーフレンドリで良いですね。食わず嫌いはダメですね。&lt;br /&gt;&lt;br /&gt;あ、最後にpdfからjpegに変換するautomator設定を貼っておきます。&lt;br /&gt;地味にiPhotoだとpdf開けないっぽいですね。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-CYJiEWghDS0/TonqvFkm1JI/AAAAAAAAAKw/b_SiXQWhz1Y/s1600/auto.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 118px;" src="http://2.bp.blogspot.com/-CYJiEWghDS0/TonqvFkm1JI/AAAAAAAAAKw/b_SiXQWhz1Y/s320/auto.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5659312501438207122" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-3340419108662846250?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/3340419108662846250/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=3340419108662846250' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3340419108662846250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3340419108662846250'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/blog-post.html' title='集計メモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-CYJiEWghDS0/TonqvFkm1JI/AAAAAAAAAKw/b_SiXQWhz1Y/s72-c/auto.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5381389731144967175</id><published>2011-10-04T01:08:00.011+09:00</published><updated>2011-10-04T01:27:43.035+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='札幌マラソン'/><title type='text'>2011札幌マラソンの完走タイム分布</title><content type='html'>&lt;a href="http://hokkaido.yomiuri.co.jp/36th_satumara/kiroku_menu.htm"&gt;第３６回札幌マラソン大会 : 北海道発 : yomiuri online（読売新聞）&lt;/a&gt;&lt;br /&gt;に結果が出てたので集計してみました。&lt;br /&gt;横軸がタイムで単位は分（５分刻みで集計）、縦軸が人数です。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;男子&lt;/b&gt;&lt;br /&gt;10/20歳代&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-86LvwGltQBE/TonenPxNCMI/AAAAAAAAAJo/2YiPymYavts/s1600/20m.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://1.bp.blogspot.com/-86LvwGltQBE/TonenPxNCMI/AAAAAAAAAJo/2YiPymYavts/s320/20m.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5659299172596910274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;30歳代&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-liXZwZfUsEo/TonettSLOdI/AAAAAAAAAJw/ipfCh2L2awI/s1600/30m.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://1.bp.blogspot.com/-liXZwZfUsEo/TonettSLOdI/AAAAAAAAAJw/ipfCh2L2awI/s320/30m.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5659299283599047122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;40歳代&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-OwwxaI6V5d4/Tonezphug-I/AAAAAAAAAJ4/m67GiprSyME/s1600/40m.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://4.bp.blogspot.com/-OwwxaI6V5d4/Tonezphug-I/AAAAAAAAAJ4/m67GiprSyME/s320/40m.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5659299385669747682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;50歳代&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-QFqqxHqtUdQ/Tone48oEKqI/AAAAAAAAAKA/tIOilIOXv2E/s1600/50m.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://3.bp.blogspot.com/-QFqqxHqtUdQ/Tone48oEKqI/AAAAAAAAAKA/tIOilIOXv2E/s320/50m.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5659299476695952034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;60歳以上&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-7yQ46A-T0Rg/Tone-5yKFAI/AAAAAAAAAKI/LdsZfhnDBcM/s1600/60m.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://1.bp.blogspot.com/-7yQ46A-T0Rg/Tone-5yKFAI/AAAAAAAAAKI/LdsZfhnDBcM/s320/60m.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5659299579012191234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;女子&lt;/b&gt;&lt;br /&gt;10/20歳代&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-6au6KLc3a6s/TonfGCjySFI/AAAAAAAAAKQ/qJFWjFL5ysk/s1600/20w.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://2.bp.blogspot.com/-6au6KLc3a6s/TonfGCjySFI/AAAAAAAAAKQ/qJFWjFL5ysk/s320/20w.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5659299701626914898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;30歳代&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-tQNaYAoOr9I/TonfLdKzyPI/AAAAAAAAAKY/A-hGsrATQG8/s1600/30w.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://4.bp.blogspot.com/-tQNaYAoOr9I/TonfLdKzyPI/AAAAAAAAAKY/A-hGsrATQG8/s320/30w.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5659299794669258994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;40歳代&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-0rfPnpFCKOE/TonfQQw7mjI/AAAAAAAAAKg/ZIC9w7d95jg/s1600/40w.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://4.bp.blogspot.com/-0rfPnpFCKOE/TonfQQw7mjI/AAAAAAAAAKg/ZIC9w7d95jg/s320/40w.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5659299877238839858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;50歳以上&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-WuRndfC30tw/TonfaMX9QVI/AAAAAAAAAKo/5RmqIa7mxv8/s1600/50w.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://1.bp.blogspot.com/-WuRndfC30tw/TonfaMX9QVI/AAAAAAAAAKo/5RmqIa7mxv8/s320/50w.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5659300047859040594" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5381389731144967175?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5381389731144967175/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5381389731144967175' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5381389731144967175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5381389731144967175'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/2011_04.html' title='2011札幌マラソンの完走タイム分布'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-86LvwGltQBE/TonenPxNCMI/AAAAAAAAAJo/2YiPymYavts/s72-c/20m.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5090631443157528378</id><published>2011-10-03T11:28:00.005+09:00</published><updated>2011-10-04T01:24:02.241+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='private'/><title type='text'>2011年札幌マラソンお疲れさまでした</title><content type='html'>わたくしも由緒正しき&lt;a href="http://www.mutopia-label.com/main.htm"&gt;MuToPiA LABEL&lt;/a&gt;のメンバーとして参加して参りました。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-rFvzjMPQYFY/Tokk9CNcImI/AAAAAAAAAJY/s73USWTlO5E/s1600/IMG_0885.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 67px;" src="http://4.bp.blogspot.com/-rFvzjMPQYFY/Tokk9CNcImI/AAAAAAAAAJY/s73USWTlO5E/s320/IMG_0885.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5659095037751599714" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;(びっくりするほど伏せ字だらけですが)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;良かった点&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;・2時間切った(手元の時計では号砲からゴールまでで1h58m弱)&lt;br /&gt;&lt;br /&gt;詳しい結果は来週web上で見れるようになるんじゃないでしょうか。&lt;br /&gt;そのときまた振り返りたいと思います。&lt;br /&gt;ちなみに2年前に出たときは2h09mくらいでした。&lt;br /&gt;この10分の違いがハーフマラソン的には大きい差なのか小さい差なのかは&lt;br /&gt;よくわかりません。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;悪かった点&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;・一週間前の練習の時膝を痛めてしまい、当日まで治らなかった&lt;br /&gt;・会場入りした時点で既に集合時刻である11:20だった&lt;br /&gt;・荷物預かり所が混み過ぎでスタート１分前にコースに入れた&lt;br /&gt;　（言い換えると荷物預けるのに30分ほど待たされた）&lt;br /&gt;・アップが全くできなかった&lt;br /&gt;・トイレに行けずスタート前から普通に尿意があった&lt;br /&gt;・道中で膝が痛くなり、思ったようにペーズを上げられなかった&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;遅くに会場入りした自分が悪いのですが、&lt;br /&gt;それを差し引いても荷物預かり所の体制は良くなかったと思います。&lt;br /&gt;前もあんなんだったけなぁ……&lt;br /&gt;近くに居たオッサンがめちゃめちゃ切れてたのも良い思い出です。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;膝故障&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;それはともかく、膝の痛みが再燃してしまい今はまともに歩けない状態です。&lt;br /&gt;普通に歩けるようになるには二日、走る練習ができるようになるには&lt;br /&gt;（経験上）１ヶ月くらいかかるんじゃないかと思います。&lt;br /&gt;&lt;br /&gt;とりあえず今年は他に大会に出る予定が無いのですが、&lt;br /&gt;・&lt;a href="http://www.tokyo42195.org/2012/outline"&gt;東京マラソン&lt;/a&gt;(2012/02/26)&lt;br /&gt;・&lt;a href="http://www.kyoto-marathon.com/outline/"&gt;京都マラソン&lt;/a&gt;(2012/03/11)&lt;br /&gt;に申し込み中で、もし当選すればそれに向けて練習しないといけないので、&lt;br /&gt;早く治さないといけないことには変わりないという感じです。&lt;br /&gt;（東京は10倍、京都は2倍くらいの倍率？）&lt;br /&gt;&lt;br /&gt;&lt;b&gt;それはともかく&lt;/b&gt;&lt;br /&gt;やはり外で体を動かすのは良いですねー。&lt;br /&gt;最後は晴れてたし、非常に走り易い大会だったのではないでしょうか。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-tLBAtVJQZsY/TokqRpK5QMI/AAAAAAAAAJg/ayk9i37Sg4o/s1600/IMG_0882-2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/-tLBAtVJQZsY/TokqRpK5QMI/AAAAAAAAAJg/ayk9i37Sg4o/s320/IMG_0882-2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5659100889365430466" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ご褒美&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;おめでとうございます！&lt;br /&gt;見事完走したurisawa様にはAppleよりMagic Trackpad(自腹)が進呈されます！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_top&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=urisawa-22&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=B003XKO2LW" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2011/10/04 追記&lt;/b&gt;&lt;br /&gt;&lt;a href="http://hokkaido.yomiuri.co.jp/36th_satumara/kiroku/men_half_30.htm"&gt;第３６回札幌マラソン大会結果 : 北海道発 : yomiuri online（読売新聞）&lt;/a&gt;で結果が出てました！&lt;br /&gt;自分は1:57:31でしたー。やはり２時間切ってましたよ！！&lt;br /&gt;&lt;br /&gt;このサイトのデータをもとに&lt;a href="http://ichiba-blog.blogspot.com/2011/10/2011_04.html"&gt;今大会のリザルトのヒストグラム&lt;/a&gt;も作ってみましたので良ければ参考にしてください。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5090631443157528378?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5090631443157528378/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5090631443157528378' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5090631443157528378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5090631443157528378'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/10/2011.html' title='2011年札幌マラソンお疲れさまでした'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-rFvzjMPQYFY/Tokk9CNcImI/AAAAAAAAAJY/s73USWTlO5E/s72-c/IMG_0885.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-6322715691530956340</id><published>2011-09-28T00:46:00.004+09:00</published><updated>2011-09-28T01:18:07.905+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='system call'/><category scheme='http://www.blogger.com/atom/ns#' term='c/c++/objc'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>fopenでオープン中のファイルのサイズを小さくする</title><content type='html'>ファイルの縮小はftruncate()を使う。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;// unistd.h&lt;br /&gt;int ftruncate( int fd, off_t length );&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;fdはファイルデスクリプタなので、FILE*から変換するには&lt;a href="http://ichiba-blog.blogspot.com/2011/09/fopenfilefd.html"&gt;前エントリ&lt;/a&gt;の通り、fileno()を使う。&lt;br /&gt;&lt;br /&gt;[参考: man 2 truncate]&lt;br /&gt;&lt;br /&gt;が、どうやら実際に使ってみると、truncateされる時とされない時があった。&lt;br /&gt;最初はオープン中に複数回ftruncateを呼ぶと一度目しか効かない、みたいな現象かと思ったが、&lt;br /&gt;別のパターンも有った。以下のコードではftruncateの効果は確認されなかった。&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;$ cat main.c&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;#include &amp;lt;assert.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main( void ) {&lt;br /&gt;    FILE* fp = fopen( &amp;quot;hoge.txt&amp;quot;, &amp;quot;w&amp;quot; );&lt;br /&gt;    assert( NULL != fp );&lt;br /&gt;&lt;br /&gt;    for ( int i = 0; i &amp;lt; 300; i++ ) {&lt;br /&gt;        putc( 'a', fp );&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    assert( 0 == ftruncate( fileno( fp ), 200 ) );&lt;br /&gt;    assert( 0 == ftruncate( fileno( fp ), 100 ) );&lt;br /&gt;    assert( 0 == ftruncate( fileno( fp ), 50 ) );&lt;br /&gt;&lt;br /&gt;    fclose( fp );&lt;br /&gt;&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;$ gcc -o hoge -std=c99 main.c &amp;&amp; ./hoge; ls -l hoge.txt&lt;br /&gt;-rw-r--r--  1 urisawa  staff   &lt;font color=blue&gt;300&lt;/font&gt;  9 28 01:06 hoge.txt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;このコードの場合については、ftruncate()の前にfflush()を入れたところ、&lt;br /&gt;意図通り動作してファイルサイズが50バイトになった。&lt;br /&gt;fflush()のコストも含め要調査。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-6322715691530956340?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/6322715691530956340/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=6322715691530956340' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6322715691530956340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6322715691530956340'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/fopen.html' title='fopenでオープン中のファイルのサイズを小さくする'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2686585487081610639</id><published>2011-09-28T00:41:00.002+09:00</published><updated>2011-09-28T00:46:53.063+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c/c++/objc'/><category scheme='http://www.blogger.com/atom/ns#' term='POSIX'/><title type='text'>fopenで取得したFILE*からfd(ファイルデスクリプタ)を取得する</title><content type='html'>// stdio.h&lt;br /&gt;int fileno( FILE *stream );&lt;br /&gt;&lt;br /&gt;[参考: man 3 ferror]&lt;br /&gt;&lt;small&gt;システムコール系は2、POSIX系は3、、、でしたっけ。。。&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2686585487081610639?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2686585487081610639/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2686585487081610639' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2686585487081610639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2686585487081610639'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/fopenfilefd.html' title='fopenで取得したFILE*からfd(ファイルデスクリプタ)を取得する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5368987018487973715</id><published>2011-09-26T16:00:00.001+09:00</published><updated>2011-09-26T16:20:22.937+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><title type='text'>mercurialのsshで鍵認証する</title><content type='html'>&lt;pre&gt;&lt;br /&gt;$ vim .hg/hgrc&lt;br /&gt;[ui]&lt;br /&gt;ssh = ssh -i /path/to/id_key_file&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;[参考: &lt;a href="http://blog.pg1x.com/2011/06/16/mercurial-ssh-によるバージョン管理/"&gt;Mercurial + ssh によるバージョン管理 | MyNotebook&lt;/a&gt;]&lt;br /&gt;[参考:man hgrc]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5368987018487973715?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5368987018487973715/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5368987018487973715' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5368987018487973715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5368987018487973715'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/mercurialssh.html' title='mercurialのsshで鍵認証する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-3947611216825000556</id><published>2011-09-25T23:31:00.003+09:00</published><updated>2011-09-25T23:56:21.540+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='futaba'/><category scheme='http://www.blogger.com/atom/ns#' term='wget'/><title type='text'>ふたばのスレを無くなるまで監視したい　その１</title><content type='html'>なんか去年か一昨年くらいに下書きしたままのやつが出てきたので載せます。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;br /&gt;ちょっとメモ代わりで申し訳ないですがw&lt;br /&gt;&lt;br /&gt;&lt;b&gt;目的&lt;/b&gt;&lt;br /&gt;・ふたばのスレを自動的に保存したい&lt;br /&gt;・なるべく無くなる寸前のスレを保存したい。(数分単位？）&lt;br /&gt;&lt;br /&gt;てな感じです。&lt;br /&gt;&lt;br /&gt;CentOSなのでcronとwgetかなと。考えとしては&lt;br /&gt;&lt;br /&gt;・保存したいスレが見つかったら適宜cronに登録するか、予めcronで何か走らせといてトリガを他で扱う。&lt;br /&gt;・URLは分かっているのでwgetでスレが無くなくまで保存する。&lt;br /&gt;・でも無くなると404ページが表示されるので、保存したデータがそれで上書きされると困るので要工夫？&lt;br /&gt;・スレ毎に圧縮して保存しておきたい。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;wgetでスレが存在するかどうかを確認する。&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;wgetはURLが存在しなかった場合等はステータスが1で終了するらしい。。。&lt;br /&gt;&lt;br /&gt;あ、&lt;a href="http://it.kndb.jp/entry/show/id/1007"&gt;ダウンロードコマンドwgetのオプション一覧(linux) - Knowledge Database IT&lt;/a&gt;と、&lt;br /&gt;&lt;a href="http://ameblo.jp/pclindesk/entry-10192327404.html"&gt;wgetでURLが存在すれば0を、存在しなければ1以上を返す｜PC-Unix弄り始めました。&lt;/a&gt;を参考にしとります。&lt;br /&gt;&lt;br /&gt;で、直前のコマンドのステータスは&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt; $ echo $? &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;とかで確認出来るらしい。へぇ〜。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;とりあえずふたばでも利用出来るかテスト&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt; &lt;br /&gt;$ wget --spider --server-response   http://may.2chan.net/b/res/xxxxxxxxx.htm&lt;br /&gt;スパイダーモードが有効です。リモートファイルが存在してるか確認します。&lt;br /&gt;--2010-06-21 23:14:41--  http://may.2chan.net/b/res/xxxxxxxxx.htm&lt;br /&gt;may.2chan.net をDNSに問いあわせています... xxx.xx.xxx.xx&lt;br /&gt;may.2chan.net|xx.xx.xxx.xx|:80 に接続しています... 接続しました。&lt;br /&gt;HTTP による接続要求を送信しました、応答を待っています...&lt;br /&gt;  HTTP/1.1 404 Not Found&lt;br /&gt;  Date: Mon, 21 Jun 2010 14:14:29 GMT&lt;br /&gt;  Server: Apache/2.2.3 (CentOS)&lt;br /&gt;  Last-Modified: Mon, 31 May 2010 13:39:52 GMT&lt;br /&gt;  ETag: "2b10001-1ed-fdc95a00"&lt;br /&gt;  Accept-Ranges: bytes&lt;br /&gt;  Content-Length: 493&lt;br /&gt;  Connection: close&lt;br /&gt;  Content-Type: text/html; charset=Shift_JIS&lt;br /&gt;  Content-Language: ja&lt;br /&gt;リモートファイルが存在していません -- リンクが壊れています!!!&lt;br /&gt;&lt;br /&gt;$ echo $?&lt;br /&gt;1&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;OKっぽいですね！つーかほんとに、wget -q --spiderで良いなこれ。。。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;wgetでスレを丸々保存する&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;ここで言う丸々とは&lt;br /&gt;１：スレのHTMLファイル&lt;br /&gt;２：投稿された画像&lt;br /&gt;３：投稿された画像のサムネイル(１で表示される画像）&lt;br /&gt;です。他は別に良いかなぁ。。。&lt;br /&gt;&lt;br /&gt;使えそうなオプションは&lt;br /&gt;--recursive: リンク先の画像やサムネを保存したい&lt;br /&gt;--level=1: スレのHTMLからリンクを貼られているファイルだけ&lt;br /&gt;--follow-tags=img,a&lt;br /&gt;--reject=htm,html,php,cgi&lt;br /&gt;&lt;br /&gt;http://blog.mufu.jp/2008/07/1bourn-shell.html&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;という感じでシェルスクリプトと組み合わせて実現しようとしていたらしい…。&lt;br /&gt;とりあえずやってみた結果、指定したURLのスレhtmlとサムネ画像および本画像を保存するコマンドは以下の通り。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ wget -e robots=off --recursive -k --level=1 --follow-tags=img,a --reject=php,cgi --accept=jpg,gif,png,htm,html -H -D2chan.net http://may.2chan.net/b/res/76769710.htm&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;-e robots=off &lt;/td&gt;&lt;td&gt;robots.txtを無視する&lt;/td&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;--recursive&lt;/td&gt;&lt;td&gt;リンクを再帰的にダウンロードする(-rと同じ )&lt;/td&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;-k&lt;/td&gt;&lt;td&gt;HTML中の絶対リンクをダウンロードしたローカルでの相対パスに変更する&lt;sup&gt;[1]&lt;/sup&gt;&lt;/td&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;--level=1 &lt;/td&gt;&lt;td&gt;再帰ダウンロードする階層(元HTMLが0)を指定する。(-l 1と同じ)&lt;/td&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;--follow-tags=img,a&lt;/td&gt;&lt;td&gt;指定したタグのリンクを再帰ダウンロードする&lt;/td&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;--reject=php,cgi&lt;/td&gt;&lt;td&gt;指定した拡張子のファイルは無視する(-R php,cgiと同じ)&lt;/td&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;--accept=jpg,gif,png,htm,html&lt;/td&gt;&lt;td&gt;指定した拡張子のファイルをダウンロードする(-A jpg,gif...と同じ)&lt;/td&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;-H&lt;/td&gt;&lt;td&gt;元URLのドメイン以外のURLのファイルもダウンロードする&lt;/td&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;-D2chan.net&lt;/td&gt;&lt;td&gt;指定したドメインのファイルのみダウンロードする&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;[参考:&lt;a href="http://hnw.jp/documents/unixmemo/wget.html"&gt;wget tips&lt;/a&gt;]&lt;br /&gt;[参考:&lt;a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/230995/"&gt;【 wget 】 ファイルをダウンロードする - Linuxコマンド集：ITpro&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;こんな感じです。実は以前ある程度自動的にログを保存するスクリプトを組んだんですが、&lt;br /&gt;一度目の自鯖HDDの死亡で消し飛んで以来、手をつけてなかったのでした。&lt;br /&gt;でももう一度やってみようかなと思っとります。&lt;br /&gt;&lt;br /&gt;なお、上記のコマンドで取得したスレのhtmlを開いてみると、-kで相対パスに変更したにもかかわらず、&lt;br /&gt;画像がリンク切れになってしまっています。&lt;br /&gt;これは元々html中にbaseタグが含まれているためです。&lt;br /&gt;適当なエディタでbaseタグを取り除く事で、ローカルに落としたサムネと本画像を表示できるようになります。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-3947611216825000556?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/3947611216825000556/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=3947611216825000556' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3947611216825000556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3947611216825000556'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/blog-post_8558.html' title='ふたばのスレを無くなるまで監視したい　その１'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-1663243915955730369</id><published>2011-09-25T20:25:00.003+09:00</published><updated>2011-09-25T20:39:28.722+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='private'/><title type='text'>(突然ウェブサイトを始める患者)</title><content type='html'>&lt;a href="http://uri-labs.com"&gt;uri-labs.com&lt;/a&gt;&lt;br /&gt;です〜&lt;br /&gt;&lt;br /&gt;あんまりHTMLいじると仕事思い出しそうなんでどうしようかなーとか思ってますが。。。&lt;br /&gt;技術系blogは引き続きここ(ICHIBA BLOG)、プライベートはtwitter、成果物公開は自サイト、&lt;br /&gt;みたいな感じでやって行こうかと思います。宜しくお願い致します。&lt;br /&gt;&lt;br /&gt;== 2011/09/25 20:38追記 ==&lt;br /&gt;&lt;br /&gt;なんか選り分けたらコンテンツが１つしか無いぞオイ！！！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-1663243915955730369?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/1663243915955730369/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=1663243915955730369' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1663243915955730369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1663243915955730369'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/blog-post_25.html' title='(突然ウェブサイトを始める患者)'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2453694228870683794</id><published>2011-09-25T14:22:00.004+09:00</published><updated>2011-09-25T14:46:09.390+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><category scheme='http://www.blogger.com/atom/ns#' term='bitbucket'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='mp3'/><title type='text'>ccmp 1.0をリリース(笑)しました</title><content type='html'>https://bitbucket.org/urisawa/ccmp&lt;br /&gt;&lt;br /&gt;ソースの品質は一応gccの-Wallとclangのstatic analyzerで確認しましたが、&lt;br /&gt;やっぱInstrumentsとか使わないとダメかなあ、という感じがしています。&lt;br /&gt;せっかくXcodeあるんだから使った方が良いよねみたいな。&lt;br /&gt;デバッグもvimだけだとかなり面倒くさい。(gdbは今回未使用)&lt;br /&gt;たかだか数百行程度ですが色々問題は山積みという感じです。。。&lt;br /&gt;&lt;br /&gt;なお、ソースそのままだとmp3が除外されるのであまり意味無いです。&lt;br /&gt;ライセンスの関係で除外するようにしてあります。この辺は結局グレーなんだろうなぁと思います。&lt;br /&gt;NSSoundを使うと簡単に再生できる訳で、NSSoundでのデコードはAppleがライセンス料を払って&lt;br /&gt;フレームワークに組み込んでる訳だから、それを使ったソフトウェアがライセンス料を払う必要は&lt;br /&gt;無かろうと思うのですが、そうではないようですね。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mp3licensing.jp/help/developers.html#5"&gt;mp3licensing.jp ｜ よくあるご質問 ｜ 開発者・メーカー用 - 5) 自社開発、又はサード・パーティーのmp3ソフトウェアを持っていますが、ライセンスを取得する必要がありますか？&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ソースの配布ならば必ずOKというわけでもなさそうで、色々なエンコーダ／デコーダが配布を中止したりとか、LAMEが当初パッチとして開発を進めていたという話は興味深かったです。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.initialt.org/lame/patent.html"&gt;mp3というフォーマットと特許・著作権&lt;/a&gt;(ISO-2022-JP)&lt;br /&gt;&lt;br /&gt;一方、特定のデコーダを使用する場合はライセンス料は不要だという回答も有るようで、かなりケースバイケースというか&lt;br /&gt;ここまで年月が経過してても未だはっきりしてないのはなんだかなぁという気がしています。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://faq.comicmaker.info/archives/2009/01/mp3wma.html"&gt;CMGI FAQDB: MP3,WMAのライセンスについて&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;上記リンクの話で行くと、NSSoundつうかCoreAudioを使うならmp3の再生は問題無い気もします。&lt;br /&gt;が、これ以上深入りするのも面倒なので、mp3は除外する方向でリリースしました。&lt;br /&gt;&lt;br /&gt;・メモ&lt;br /&gt; NARC (NEW,ALLOC,RETAIN,COPY)という言葉があるらしい。初めて知った。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2453694228870683794?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2453694228870683794/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2453694228870683794' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2453694228870683794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2453694228870683794'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/ccmp-10.html' title='ccmp 1.0をリリース(笑)しました'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-4730673453617951127</id><published>2011-09-25T11:57:00.004+09:00</published><updated>2011-09-25T12:56:12.932+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iTunes'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='c/c++/objc'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>iTunesライブラリをパースする</title><content type='html'>面倒なのでソース。&lt;br /&gt;&lt;br /&gt;[参考: &lt;a href="http://code.google.com/p/imedia/"&gt;imedia - The Karelia iMedia Browser, framework and application for browsing media on Mac OS X - Google Project Hosting&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;NSDictionary* createiTunesLibrary( void ) {&lt;br /&gt;    CFArrayRef databases = CFPreferencesCopyAppValue((CFStringRef)@&amp;quot;iTunesRecentDatabases&amp;quot;,(CFStringRef)@&amp;quot;com.apple.iApps&amp;quot;);&lt;br /&gt;&lt;br /&gt;    NSDictionary *lib = nil;&lt;br /&gt;    for ( NSString *libs in (NSArray*)databases ) {&lt;br /&gt;        NSURL *url = [NSURL URLWithString:libs];&lt;br /&gt;        if ( [[NSFileManager defaultManager] fileExistsAtPath:[url path]] ) {&lt;br /&gt;            lib = [[NSDictionary alloc] initWithContentsOfURL:url];&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    CFRelease( databases );&lt;br /&gt;    return lib;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;NSArray* filePathsFromiTunesPlayList( const char *playListName ) {&lt;br /&gt;    NSDictionary *lib = createiTunesLibrary();&lt;br /&gt;    assert( nil != lib );&lt;br /&gt;    NSDictionary *tracks = [lib objectForKey:@&amp;quot;Tracks&amp;quot;];&lt;br /&gt;    [tracks retain];&lt;br /&gt;    assert( nil != tracks );&lt;br /&gt;    NSArray *playlists = [lib objectForKey:@&amp;quot;Playlists&amp;quot;];&lt;br /&gt;    [playlists retain];&lt;br /&gt;    [lib release];&lt;br /&gt;    assert( nil != playlists );&lt;br /&gt;    NSString *playListNameStr = [NSString stringWithUTF8String:playListName];&lt;br /&gt;&lt;br /&gt;    NSArray *filePaths = [NSArray array];&lt;br /&gt;&lt;br /&gt;    for ( NSDictionary *playlist in playlists ) {&lt;br /&gt;        NSString *name = [playlist objectForKey:@&amp;quot;Name&amp;quot;];&lt;br /&gt;&lt;br /&gt;        if ( ![playListNameStr isEqualToString:name] ) {&lt;br /&gt;            continue;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        NSArray *playlistItems = [playlist objectForKey:@&amp;quot;Playlist Items&amp;quot;];&lt;br /&gt;&lt;br /&gt;        for ( NSDictionary *playlistItem in playlistItems ) {&lt;br /&gt;            NSNumber *trackID = [playlistItem objectForKey:@&amp;quot;Track ID&amp;quot;];&lt;br /&gt;            NSDictionary *track = [tracks objectForKey:[trackID descriptionWithLocale:nil]];&lt;br /&gt;            assert( nil != track );&lt;br /&gt;            NSString *location = [track objectForKey:@&amp;quot;Location&amp;quot;];&lt;br /&gt;            if ( nil == location ) {&lt;br /&gt;                printf( &amp;quot;Location tag for track NOT found:%s\n&amp;quot;, [[track objectForKey:@&amp;quot;Name&amp;quot;] UTF8String] );&lt;br /&gt;                continue;&lt;br /&gt;            }  &lt;br /&gt;&lt;br /&gt;            location = [[NSURL URLWithString:location] path];&lt;br /&gt;&lt;br /&gt;            if ( ![[NSFileManager defaultManager] fileExistsAtPath:location]  ) {&lt;br /&gt;                printf( &amp;quot;File NOT exist at path:%s\n&amp;quot;, [location UTF8String] );&lt;br /&gt;                continue;&lt;br /&gt;            }  &lt;br /&gt;&lt;br /&gt;            filePaths = [filePaths arrayByAddingObject:location];&lt;br /&gt;        }&lt;br /&gt;        break;&lt;br /&gt;    }&lt;br /&gt;    [tracks release];&lt;br /&gt;    [playlists release];&lt;br /&gt;    return filePaths;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;createiTunesLibrary()&lt;/b&gt;&lt;br /&gt;・返り値のretain countの問題で名前にcreateを付けてある。&lt;br /&gt;　メモリ使用量の観点からautoreleaseを避けるためにこうしたんだけど、あまり効果が無いので要検討。&lt;br /&gt;・CFPreferencesCopyAppValue()では、実際は~/Preferences/com.apple.iApps.plistの中のiTunesRecentDatabasesという&lt;br /&gt;　キーで紐付いた文字列を取得しに行く。この文字列がiTunes Music Library.xmlへのパスになる。&lt;br /&gt;・iTunes Music Library.xmlはplist形式なのでNSDictionaryで一気に読み込んで返す。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;filePathsFromiTunesPlayList()&lt;/b&gt;&lt;br /&gt;・ここもメモリ使用量の観点からretainやreleaseが散見されるが、あまり上手く行ってない。。。&lt;br /&gt;・xmlのフォーマットは実際ファイルを見た方が早い。構造を簡単化して今回必要な項目のみ図示すると以下のような感じ。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-kaNvjU03RAc/Tn6i4zWSLUI/AAAAAAAAAJI/BuuPjwzxQvo/s1600/itml.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 248px; height: 320px;" src="http://2.bp.blogspot.com/-kaNvjU03RAc/Tn6i4zWSLUI/AAAAAAAAAJI/BuuPjwzxQvo/s320/itml.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5656137278763969858" /&gt;&lt;/a&gt;&lt;br /&gt;・Playlists[i]['Playlist Items'][j]['Track ID']とTracksのキーを結びつけられれば良い。&lt;br /&gt;・音声ファイルへのパスは通常Tracks[trackID]['Location']にセットされている。&lt;br /&gt;・上記パスはfile://という形式なので、絶対パスに変換する際には[[NSURL URLWithString:location] path]という感じで&lt;br /&gt;　一旦NSURLを経由する。&lt;br /&gt;・URL形式のパスが512バイト以上だとLocationがセットされないという報告あり。&lt;br /&gt;　　&lt;a href="http://do-gugan.com/~furuta/archives/2007/07/itunes_music_li.html"&gt;iTunes Music Library.xmlを編集したい時の覚え書き - 道具眼日誌：古田-私的記録&lt;/a&gt;&lt;br /&gt;　　&lt;a href="http://web-creators.info/2011/09/02/ちょっとメモ：songbirdでitunesのプレイリストを取り込む/"&gt;ちょっとメモ：SongbirdでiTunesのプレイリストを取り込む際の注意点 | ブクマ！&lt;/a&gt;(こっちは３桁間違ってる気もする)&lt;br /&gt;・なので、厳密にはiTunes Library.itlの方をパースする必要が有るように思う。しかし、こちらを解析しているものはほとんど無い。&lt;br /&gt;　　&lt;a href="http://code.google.com/p/titl/"&gt; titl - Tools for iTunes Libraries - Google Project Hosting&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;・プレイリストの中に指定した名前と同じものがあれば、そのプレイリストに登録されている曲のファイルパス(Location)を配列に入れて返す。&lt;br /&gt;・ファイルが存在しない場合や、上述の通りLocationが無い場合は無視する。&lt;br /&gt;　　&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-4730673453617951127?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/4730673453617951127/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=4730673453617951127' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4730673453617951127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4730673453617951127'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/itunes.html' title='iTunesライブラリをパースする'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-kaNvjU03RAc/Tn6i4zWSLUI/AAAAAAAAAJI/BuuPjwzxQvo/s72-c/itml.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-964457999124577312</id><published>2011-09-25T10:42:00.003+09:00</published><updated>2011-09-25T11:13:00.828+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='makefile'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='clang'/><category scheme='http://www.blogger.com/atom/ns#' term='c/c++/objc'/><category scheme='http://www.blogger.com/atom/ns#' term='static-analyzer'/><category scheme='http://www.blogger.com/atom/ns#' term='llvm'/><title type='text'>Makefileで管理しているプロジェクトをclangのscan-buildで静的解析する</title><content type='html'>色々試行錯誤中です。&lt;br /&gt;&lt;br /&gt;DeveloperTools付属のclang行けそうな気もしたんですが難しそうなので諦めました。&lt;br /&gt;&lt;br /&gt;まず、公式サイトの「&lt;a href="http://clang-analyzer.llvm.org/index.html"&gt;Clang Static Analyzer&lt;/a&gt;」からcheckerをダウンロードし、適当に展開、配置します。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;詳しい使い方については公式サイトの&lt;a href="http://clang-analyzer.llvm.org/scan-build.html"&gt;scan-build: running the analyzer from the command line&lt;/a&gt;をよく読むと良いと思います。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Makefileを修正する&lt;/b&gt;&lt;br /&gt;'gcc'と直接書いていた場合は環境変数CC、'g++'の場合はCXXに変更します。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# 変更前&lt;br /&gt;hoge: hoge.m&lt;br /&gt;　　　gcc -std=c99 hoge.m -o hoge -framework Foundation -framework AppKit&lt;br /&gt;&lt;br /&gt;# 変更後&lt;br /&gt;CC = gcc&lt;br /&gt;&lt;br /&gt;hoge: hoge.m&lt;br /&gt;　　　$(CC) -g -O0 -Wall -std=c99 hoge.m -o hoge -framework Foundation -framework AppKit&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;-g, -O0 -Wallはデバッグ用に付けただけなので、無くてもOK。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. scan-buildを実行する&lt;/b&gt;&lt;br /&gt;こちらで試した限りでは、-kオプションを付けないとどうも普通のビルドになってしまうようなので、&lt;br /&gt;必ず-kを付けて実行します。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cd /path/to/project&lt;br /&gt;$ /path/to/scan-build -k make&lt;br /&gt;/Users/urisawa/checker-257/libexec/ccc-analyzer -g -O0 -Wall -std=c99 hoge.m -o hoge -framework Foundation -framework AppKit&lt;br /&gt;hoge.m: In function ‘main’:&lt;br /&gt;hoge.m:30: warning: unused variable ‘a’&lt;br /&gt;hoge.m:29: warning: unused variable ‘n’&lt;br /&gt;&lt;font color=red&gt;&lt;br /&gt;hoge.m:30:15: warning: Potential leak of an object allocated on line 30 and stored into 'a'&lt;br /&gt;        NSArray *a = [NSArray alloc];&lt;br /&gt;                     ^&lt;br /&gt;hoge.m:30:11: warning: Value stored to 'a' during its initialization is never read&lt;br /&gt;        NSArray *a = [NSArray alloc];&lt;br /&gt;                 ^   ~~~~~~~~~~~~~~~&lt;br /&gt;2 warnings generated.&lt;br /&gt;scan-build: 2 bugs found.scan-build: Run 'scan-view /var/folders/98/98za6YTfHO0nnuedfkvu9++++TI/-Tmp-/scan-build-2011-09-25-12' to examine bug reports&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;赤字の部分がclangによるものです。&lt;br /&gt;このように、「ちょｗｗｗおまｗｗｗリークｗｗｗｗｗ」とか、「ちょｗｗｗｗ使ってやれよｗｗｗｗｗ」とか言われます。&lt;br /&gt;なお、-Vを付けると自動的にブラウザが起動してリッチなUIで確認できて良いですね。&lt;br /&gt;あと、-vを付けると処理の詳細が表示されます。(3つまで付けられる？)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-964457999124577312?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/964457999124577312/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=964457999124577312' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/964457999124577312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/964457999124577312'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/makefileclangscan-build.html' title='Makefileで管理しているプロジェクトをclangのscan-buildで静的解析する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-7877150041254331469</id><published>2011-09-24T14:33:00.002+09:00</published><updated>2011-09-25T11:56:54.232+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='c/c++/objc'/><title type='text'>getoptでオプションをパースする</title><content type='html'>[参考:&lt;a href="http://atomic.jpn.ph/prog/lang/arg.html#c"&gt;プログラム用例 - 言語 - 起動オプション&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;今回書いたソースとメモ。&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;#pragma mark *** Function implementations ***&lt;br /&gt;options parseOptions ( int argc, char *argv[] ) {&lt;br /&gt;    options o;&lt;br /&gt;&lt;br /&gt;    o.playListName = nil;&lt;br /&gt;    o.numFilePaths = 0;&lt;br /&gt;    o.loop = 0;&lt;br /&gt;    o.volume = 100L;&lt;br /&gt;   &lt;br /&gt;    int c;&lt;br /&gt;    while ( -1 != ( c = getopt( argc, argv, &amp;quot;ha:i:l:&amp;quot; ) ) ) {&lt;br /&gt;        switch ( c ) {&lt;br /&gt;            case 'i':&lt;br /&gt;                o.playListName = malloc( strlen( optarg ) + 1 );&lt;br /&gt;                strcpy( o.playListName, optarg );&lt;br /&gt;                break;&lt;br /&gt;            case 'l':&lt;br /&gt;                o.loop = (long)atoi( optarg );&lt;br /&gt;                break;&lt;br /&gt;            case '?':&lt;br /&gt;                printf( &amp;quot;Unknown option:%c&amp;quot;, optopt );&lt;br /&gt;                break;&lt;br /&gt;            case 'h':&lt;br /&gt;                printf( &amp;quot;Usage: ccmp [-l numLoops] [-a volume] [[file ...] | [-i iTunesPlayListName]]\n&amp;quot; );&lt;br /&gt;            case 'a':&lt;br /&gt;                o.volume = (long)abs(atoi( optarg ));&lt;br /&gt;                o.volume = ( o.volume &amp;gt; 100 ? 100 : o.volume );&lt;br /&gt;                break;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    for ( ; optind &amp;lt; argc; optind++ ) {&lt;br /&gt;        if ( o.numFilePaths &amp;lt; kNumFilePathsMax ) {&lt;br /&gt;            o.filePaths[ o.numFilePaths ] = (char*)malloc( strlen( argv[ optind ] ) + 1 );&lt;br /&gt;            strcpy ( o.filePaths[ o.numFilePaths ], argv[ optind ] );&lt;br /&gt;            o.numFilePaths++;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return o;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;・getopt()にargc, argv, オプションとして使いたい文字を渡す。&lt;br /&gt;　・オプションに引数が不要な場合はその文字のみを指定する。(上記例ではh)&lt;br /&gt;　・オプションに引数が(必須かどうかに関わらず)必要な場合はその文字の後に:を付ける。(上記例ではa, i, l)&lt;br /&gt;　・オプションをスキャンし終わった場合は-1を返す。&lt;br /&gt;　・予期していないオプションが指定された場合は?を返す。&lt;br /&gt;　・そのオプションに対応する引数はグローバル変数optargに格納されている。&lt;br /&gt;　・--オプションを検出すると強制的に-1を返す。&lt;br /&gt;・getopt()で処理しきれなかった引数については、その後グローバル変数optindを使ってargv[optind]で参照可能。&lt;br /&gt;　・optindからargc-1番目までが残りの引数を指す。&lt;br /&gt;&lt;br /&gt;・getopt()のみならunistd.hをインクルードして使用化。getopt_long()を使用する場合はgetopt.hを使う。&lt;br /&gt;　・そもそもgetopt_long()はGNUによる拡張でLGPLらしかったが、macの場合はヘッダ(/usr/include/getopt.h)&lt;br /&gt;　　を見る限りNetBSDのチームによって作り直されており、バークレーライセンスの模様。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-7877150041254331469?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/7877150041254331469/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=7877150041254331469' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7877150041254331469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7877150041254331469'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/getopt.html' title='getoptでオプションをパースする'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-6523255055586903439</id><published>2011-09-22T23:28:00.004+09:00</published><updated>2011-09-23T01:18:57.586+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='c/c++/objc'/><title type='text'>gccさんと仲良くなりたい</title><content type='html'>GPLやらLGPLについて調べてたら、ふと、「自分で作成しているプログラムはどうやって動いてるんだろう」&lt;br /&gt;つう極々基本的な(本来は初学の時点で思うべきorz)疑問が沸き起こりました。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;リンクしているライブラリを調べる&lt;/b&gt;&lt;br /&gt;まず、どういうライブラリにリンクしているのかを調べました。通常、BSDやlinuxではldd .aoutで分かるらしいのですが、macの場合はotool -L a.outというようにotoolを使うようです。[参考:&lt;a href="http://mt.endeworks.jp/d-6/2006/06/-mac-os-xldd.html"&gt;メモ - Mac OS Xでlddの代わり - D-6 [相変わらず根無し]&lt;/a&gt;]&lt;br /&gt;なお、otoolについては&lt;a href="http://homepage.mac.com/mkino2/spec/man/otool.html"&gt;manの日本語訳&lt;/a&gt;が有ります。&lt;br /&gt;以下、以前作ったもので試した結果。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ otool -L a.out&lt;br /&gt;a.out:&lt;br /&gt; /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio (compatibility version 1.0.0, current version 1.0.0)&lt;br /&gt; /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 751.42.0)&lt;br /&gt; /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)&lt;br /&gt; /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 550.42.0)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;デフォルトインクルードパス&lt;/b&gt;&lt;br /&gt;&amp;lt;&amp;gt;で囲むやつですね。英語ではangle bracketらしい...&lt;br /&gt;インクルード処理を行うのはプリプロセッサなので、cppに問い合わせます。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cpp -v&lt;br /&gt;Using built-in specs.&lt;br /&gt;Target: i686-apple-darwin10&lt;br /&gt;Configured with: /var/tmp/gcc/gcc-5666.3~123/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1&lt;br /&gt;Thread model: posix&lt;br /&gt;gcc version 4.2.1 (Apple Inc. build 5666) (dot 3)&lt;br /&gt; /Developer/usr/bin/../libexec/gcc/i686-apple-darwin10/4.2.1/cc1 -E -traditional-cpp -quiet -v -I/usr/include -imultilib x86_64 -iprefix /Developer/usr/bin/../lib/gcc/i686-apple-darwin10/4.2.1/ -D__DYNAMIC__ - -fPIC -mmacosx-version-min=10.6.8 -m64 -mtune=core2&lt;br /&gt;ignoring nonexistent directory "/Developer/usr/bin/../lib/gcc/i686-apple-darwin10/4.2.1/../../../../i686-apple-darwin10/include"&lt;br /&gt;ignoring nonexistent directory "/usr/local/include"&lt;br /&gt;ignoring nonexistent directory "/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../../../i686-apple-darwin10/include"&lt;br /&gt;ignoring duplicate directory "/usr/include"&lt;br /&gt;  as it is a non-system directory that duplicates a system directory&lt;br /&gt;#include "..." search starts here:&lt;br /&gt;#include &lt;...&gt; search starts here:&lt;br /&gt; /Developer/usr/bin/../lib/gcc/i686-apple-darwin10/4.2.1/include&lt;br /&gt; /usr/lib/gcc/i686-apple-darwin10/4.2.1/include&lt;br /&gt; /usr/include&lt;br /&gt; /System/Library/Frameworks (framework directory)&lt;br /&gt; /Library/Frameworks (framework directory)&lt;br /&gt;End of search list.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;この後cppは入力待ちになるのでC-x C-cなどで抜けてください。orz&lt;br /&gt;&lt;br /&gt;&lt;b&gt;cppへのパス&lt;/b&gt;&lt;br /&gt;gccにcppへのパスを問い合わせる方法が有るはずだと思ったのですが、上手く行きませんでした。通常は、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ gcc -print-prog-name=cpp&lt;br /&gt;cpp&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とすることで、cppへのパスが表示されるようなのですが、単に=の後に指定した文字列が表示されるのみでした。&lt;br /&gt;ldやcc1だとフルパスが表示されるのですが。。。要調査。&lt;br /&gt;&lt;br /&gt;どうも/usr/bin/cppはシェルスクリプトのようだ。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ file `which cpp`&lt;br /&gt;/usr/bin/cpp: POSIX shell script text executable&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;このスクリプトの中では&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;CPP="gcc -E"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;となっておりましたが、この辺が鍵でしょうか。。。要調査です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-6523255055586903439?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/6523255055586903439/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=6523255055586903439' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6523255055586903439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6523255055586903439'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/gcc.html' title='gccさんと仲良くなりたい'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2901216897877117181</id><published>2011-09-19T13:00:00.003+09:00</published><updated>2011-09-19T13:34:32.952+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c/c++/objc'/><title type='text'>可変個引数メモ</title><content type='html'>[参考:&lt;a href="http://program.station.ez-net.jp/special/vc/basic/function/stdarg.asp"&gt;EZ-NET 研究室： printf みたいな関数を作る&lt;/a&gt;]&lt;br /&gt;今回はvprintf()に渡すだけだったので自前でこねくり回したりはしませんでしたが。。。以下メモ。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;・stdarg.hをincludeする。&lt;br /&gt;・使用開始時にはvoid va_start( va_list ap, last )、終了時にはvoid va_end( va_list ap )を呼ぶ。&lt;br /&gt;・通常はtype va_arg( va_list ap, type )を実行して引数を順番に一つずつ取り出す。&lt;br /&gt;・va_*()はマクロらしい&lt;br /&gt;・va_startのlastを指定するためか、最低１つは明示的な引数が必要？&lt;br /&gt;・...の部分に幾つ変数が並んでいるかは判断できない？&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;以下はvprintf()を自前関数内で実行するだけのコードで、printf()と全く同じ要領で使います。&lt;br /&gt;これにヘッダやフッタを出力するコードを足して見やすくしてデバッグ用に使ってみたりしています。&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;int hoge( const char *format, ... ) {&lt;br /&gt;　va_list ap;&lt;br /&gt;　va_start( ap, format );&lt;br /&gt;　int n = vprintf( format, ap );&lt;br /&gt;　va_end( ap );&lt;br /&gt;　return n;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2901216897877117181?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2901216897877117181/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2901216897877117181' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2901216897877117181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2901216897877117181'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/blog-post.html' title='可変個引数メモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2513918544708225687</id><published>2011-09-18T16:49:00.002+09:00</published><updated>2011-09-18T16:55:13.087+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>phpでposix関連関数が使えない場合</title><content type='html'>&lt;pre&gt;&lt;br /&gt;# yum install php-process&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;知らんがな！(`Д´)&lt;br /&gt;[参考:&lt;a href="http://stackoverflow.com/questions/2197366/how-to-install-posix-in-php"&gt;how to install posix in php - Stack Overflow&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.php.net/manual/ja/posix.installation.php"&gt;PHP: インストール手順 - Manual&lt;/a&gt;には&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;--disable-posix により無効にする ことができます。&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;と書いてるんだけど、phpinfo();を実行してconfigureを確認するとそのようなオプションを指定した様子は有りませんでした。(CentOS 6のyum経由)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2513918544708225687?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2513918544708225687/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2513918544708225687' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2513918544708225687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2513918544708225687'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/phpposix.html' title='phpでposix関連関数が使えない場合'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-73388748007982966</id><published>2011-09-16T11:19:00.002+09:00</published><updated>2011-09-16T11:27:31.698+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='VMWare'/><title type='text'>VM上のCentOSのディスク容量を増やす</title><content type='html'>VMってすごいですね。&lt;br /&gt;[参考:&lt;a href="http://se-suganuma.blogspot.com/2009/04/centoslvmvmwarehdd.html"&gt;SE奮闘記: &amp;#12304;CentOS&amp;#12305;LVMでディスク容量を拡張&amp;#65288;VMwareのHDD容量を増やす&amp;#65289;&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;こちらでは「仮想マシン」-「設定...」メニューからディスク容量を変更してから、&lt;br /&gt;上記記事の&lt;br /&gt;# fdisk /dev/sda&lt;br /&gt;以下を実行したのですが、&lt;br /&gt;よく読んだら&lt;br /&gt;# vmware-vdiskmanager -x 40Gb vdisk.vmdk&lt;br /&gt;からやった方が良かったかもなぁ。。。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-73388748007982966?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/73388748007982966/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=73388748007982966' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/73388748007982966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/73388748007982966'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/vmcentos.html' title='VM上のCentOSのディスク容量を増やす'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-3893120882951721184</id><published>2011-09-15T01:06:00.003+09:00</published><updated>2011-09-15T01:20:03.006+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>DB復旧失敗したよメモ</title><content type='html'>運用時環境: CentOS 4か5, postgres 8.1, i386?&lt;br /&gt;復旧用環境: CentOS 6, postgres 8.4, x86_64&lt;br /&gt;&lt;br /&gt;pg_dumpでバックアップ取ってなくて、pgsql/dataをそのままrsyncしてて、すぐ復旧できない状態。&lt;br /&gt;今日色々やってみたけどダメでした。&lt;br /&gt;結局は同じ環境でやれやって話になりそう。(下記URLはmacでの話っぽいですが)&lt;br /&gt;http://serverfault.com/questions/69098/incorrect-checksum-during-recovery-postgresql-database-32bits-from-a-backup-on&lt;br /&gt;&lt;br /&gt;以下、気づいた事などのメモ&lt;br /&gt;・データの互換はメジャーバージョン間のみっぽい(8.1.xxで復旧する必要が有りそう)&lt;br /&gt;・CentOS 6でpostgres 8.1を使う場合、yumでは見つけられなかったのでソースからビルドした。 http://www.postgresql.jp/PostgreSQL/8_1/8_1_23&lt;br /&gt;　./configure --without-readline --without-zlib でmakeできた&lt;br /&gt;・postmasterはroot以外で起動しないとダメ  http://nobuneko.com/blog/archives/2011/05/postgresqlinitdb_cannot_be_run.html&lt;br /&gt;・ソースからビルドした場合の起動方法などはここが分かり易い http://y-kit.jp/saba/xp/postgreinst.htm&lt;br /&gt;&lt;br /&gt;明日32bitのCentOS 5辺りでリトライ予定&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-3893120882951721184?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/3893120882951721184/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=3893120882951721184' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3893120882951721184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3893120882951721184'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/db.html' title='DB復旧失敗したよメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-6609314185593370507</id><published>2011-09-14T14:24:00.002+09:00</published><updated>2011-09-14T14:29:54.078+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>svn+sshでポート指定</title><content type='html'>user@server:port&lt;br /&gt;みたいに指定するのではなく、クライアント側の~/.subversion/configファイルのtunnelというセクションをいじるらしい。&lt;br /&gt;&lt;br /&gt;[参考:&lt;a href="http://un-q.net/2007/12/svn_ssh_port_dsa.html"&gt;svn+ssh でポートをとかキーを指定する (Unknown Quality)&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;うち( OS X 10.7.1 )の場合は以下の通りに設定。(xxxはsshのポート番号)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ssh = $SVN_SSH ssh -q -p xxx&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-6609314185593370507?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/6609314185593370507/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=6609314185593370507' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6609314185593370507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6609314185593370507'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/svnssh.html' title='svn+sshでポート指定'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-7715028845071670825</id><published>2011-09-14T01:24:00.002+09:00</published><updated>2011-09-14T01:26:41.729+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='SELinux'/><title type='text'>SELinuxを切る</title><content type='html'>&lt;pre&gt;&lt;br /&gt;# vim /etc/selinux/config&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;SELINUX=enforcing&lt;br /&gt;を&lt;br /&gt;SELINUX=disabled&lt;br /&gt;としリブートする。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# shutdown -r now&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-7715028845071670825?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/7715028845071670825/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=7715028845071670825' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7715028845071670825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7715028845071670825'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/selinux.html' title='SELinuxを切る'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-6531407321788458286</id><published>2011-09-12T18:14:00.005+09:00</published><updated>2011-09-12T19:22:20.209+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='R'/><title type='text'>Rでヒストグラムを作ってみたい</title><content type='html'>&lt;b&gt;インストール&lt;/b&gt;&lt;br /&gt;例によってMacPortsです。最近はHomebrewというのが流行りだそうですね。(サボテン氏談)&lt;br /&gt;MacPortsで入れたものが奇麗に引き継ぎできれば乗り換えようと思っていますが。。。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ which R&lt;br /&gt;$ sudo port install R&lt;br /&gt;&lt;font color=blue&gt;(途中略)&lt;/font&gt;&lt;br /&gt;$ which R&lt;br /&gt;/opt/local/bin/R&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;もしかするとperlのバージョンがぶつかってインストールできないかも(OS X 10.6で確認)&lt;br /&gt;何が依存しているのかはよくわかりませんでした。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;バッチ処理&lt;/b&gt;&lt;br /&gt;とりあえずinteractiveにやるのはめどいので、txtファイルにコマンドを書いて出力だけ取り出すのを目指します。&lt;br /&gt;man Rで確認すると&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;...&lt;br /&gt;R [options] [&lt; infile] [&gt; outfile]&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とあるのでコマンド類はstdinから渡すようです。&lt;br /&gt;なお、その場合は--no-saveオプションを付ける必要が有りそうです。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;データファイル読み込み&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;データファイルを変数(Rの世界では'データ名')に格納するには&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;変数 &lt;- read.table( ファイル名 )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とする模様。[参考:&lt;a href="http://rbloger.blog51.fc2.com/blog-entry-4.html"&gt;統計ソフトRのブログ  ファイルからの読み込み&lt;/a&gt;]&lt;br /&gt;つーわけで、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;x &lt;-  read.table( 'test.txt' )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とします。ここで、test.txtはテキストデータで、以下のように１列目に時刻、２列目に強度でスペース区切りのデータです。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ head test.txt&lt;br /&gt;0.010 18&lt;br /&gt;0.020 11&lt;br /&gt;0.030 11&lt;br /&gt;0.040 14&lt;br /&gt;0.050 12&lt;br /&gt;0.060 16&lt;br /&gt;0.070 14&lt;br /&gt;0.080 9&lt;br /&gt;0.090 11&lt;br /&gt;0.100 24&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ヒストグラムの作成&lt;/b&gt;&lt;br /&gt;ヒストグラムはhist()というコマンド(関数?)で作成する模様。[参考: &lt;a href="http://r.livedocs.net/graph/hist.html"&gt;ヒストグラム - Rプログラミングではhist()関数でヒストグラムを描写できる&lt;/a&gt;]&lt;br /&gt;つーわけで、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;hist(x)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;としたところ、&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Error in hist: 'x' must be numeric"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;というエラーが発生しました。ググったところ、xはそのままだとヒストグラムを作成できない模様。複数列のベクトルだから？&lt;br /&gt;そこで、以下の通り列を明示的に指定する事でhist()が通るようになった。[参考:&lt;a href="http://tolstoy.newcastle.edu.au/R/help/06/01/19540.html"&gt;R help archive: Re: [R] &amp;quot; 'x' must be numeric&amp;quot;&lt;/a&gt;]&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;hist(x[,2])&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ちなみに2は2列目(強度の列)という意味だと思います。&lt;br /&gt;上述のヒストグラム解説ページのbreaksでヒストグラムの幅と範囲を設定する模様。&lt;br /&gt;強度minからmaxまで、幅widthのヒストグラムを作りたいときはbreaks=seq(min,max,width)と指定するみたいですね。&lt;br /&gt;&lt;br /&gt;hist()実行後、というかグラフ描画時はRplots.pdfというファイルができる模様。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-eFLtXfTuKqI/Tm3XH1jpVmI/AAAAAAAAAJA/ErBDGoK1wjs/s1600/hist.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 317px;" src="http://4.bp.blogspot.com/-eFLtXfTuKqI/Tm3XH1jpVmI/AAAAAAAAAJA/ErBDGoK1wjs/s320/hist.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5651409637055485538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ヒストグラムの書き出し&lt;/b&gt;&lt;br /&gt;このhist()コマンドの返り値はデータになっているようなので、ここから必要なデータのみ書き出せれば良さそうです。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;result &lt;- hist(x[,2])&lt;br /&gt;result&lt;br /&gt;&lt;font color=blue&gt;(途中略)&lt;/font&gt;&lt;br /&gt;$breaks&lt;br /&gt; [1]   0  10  20  30  40  50  60  70  80  90 100 110 120 130 140 150 160 170 180&lt;br /&gt;[20] 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370&lt;br /&gt;[39] 380 390 400 410 420 430 440 450 460 470 480 490 500&lt;br /&gt;&lt;br /&gt;$counts&lt;br /&gt; [1] 11588 21604  5247  1400   909   855   814   930  1104  1365  1533  1422&lt;br /&gt;[13]  1306   865   587   443   480   496   459   529   530   596   583   665&lt;br /&gt;[25]   657   678   634   549   440   300   179   135    61    34    14     8&lt;br /&gt;[37]     2     1     0     0     0     0     0     0     0     0     0     0&lt;br /&gt;[49]     0     0&lt;br /&gt;&lt;br /&gt;$intensities&lt;br /&gt; [1] 1.931269e-02 3.600547e-02 8.744709e-03 2.333256e-03 1.514950e-03&lt;br /&gt;&lt;font color=blue&gt;(以下略)&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;というわけで、とりあえずcountsだけファイルに書き出してみます。(１列目にbreaks, 2列目にcountsを持って来れればベストなのですが...、要検討)&lt;br /&gt;ファイルに書き出すにはwrite()またはwrite.table()というのがあるようです。&lt;br /&gt;[参考:&lt;a href="http://cse.naro.affrc.go.jp/takezawa/r-tips/r/45.html"&gt;R-Source&lt;/a&gt;]&lt;br /&gt;write()の方が簡単そうですが、'リスト名'というのがわからなかったのでwrite.table()を使います。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;write.table(result['counts'], quote=F, col.names=F )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ファイル名を明示しなければstdoutに出力されるようなので、これを使って２列目だけ取得できないかと思ったのですが、&lt;br /&gt;他のコマンド結果や入力などもstdoutに出力されてくるようなので諦めました... ( R --quiet, R --silentでもダメでした。要検討 )&lt;br /&gt;&lt;br /&gt;&lt;b&gt;まとめ&lt;/b&gt;&lt;br /&gt;作成したバッチファイルと使用法は以下の通りです。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cat a.txt&lt;br /&gt;x &lt;- read.table( "test.txt" )&lt;br /&gt;result &lt;- hist(x[,2],breaks=seq(0,500,10))&lt;br /&gt;write.table( result['counts'], 'out.txt', quote=F, col.names=F );&lt;br /&gt;$ R --no-save &lt; a.txt&lt;br /&gt;$ head out.txt&lt;br /&gt;1 11588&lt;br /&gt;2 21604&lt;br /&gt;3 5247&lt;br /&gt;4 1400&lt;br /&gt;5 909&lt;br /&gt;6 855&lt;br /&gt;7 814&lt;br /&gt;8 930&lt;br /&gt;9 1104&lt;br /&gt;10 1365&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;1列目は不要なので可能であればcutなどを使わずに取り除きたいですが、&lt;br /&gt;ひとまずこれでヒストグラムを取得する事ができました。&lt;br /&gt;なお、vimでは:set ft=Rでカラーシンタックスを利用できるようです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-6531407321788458286?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/6531407321788458286/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=6531407321788458286' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6531407321788458286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6531407321788458286'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/r.html' title='Rでヒストグラムを作ってみたい'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-eFLtXfTuKqI/Tm3XH1jpVmI/AAAAAAAAAJA/ErBDGoK1wjs/s72-c/hist.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-3721295811120247018</id><published>2011-09-01T12:14:00.002+09:00</published><updated>2011-09-01T12:24:59.367+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Skip last N lines on Mac OS X</title><content type='html'>どうも最近のバージョンのMacに入っているheadコマンドでは'head -n 負の整数'という書き方は出来ない模様。&lt;br /&gt;で&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ head -n -10&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;のように最後の10行(?)だけ無視したいような場合は&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ tail -r | tail -n +11 | tail -r &lt;br /&gt;&lt;br /&gt;とする必要がある模様。&lt;br /&gt;[参考:&lt;a href="http://stackoverflow.com/questions/418467/whats-an-easy-way-to-trim-n-lines-from-the-tail-of-a-file-without-the-use-of-h"&gt;osx - What&amp;#39;s an easy way to trim N lines from the tail of a file (without the use of &amp;#39;head&amp;#39;)? - Stack Overflow&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;以下、先頭の10行と最後の1行を除いて、改行コードをLFにして保存する具体例。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ tail -n+11 27-03.asc | tail -r | tail -n+2 | tail -r | nkf -d --in-place &gt; 27-03.txt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;面倒っすね。(まぁheadとtailの応用法自体初めて知ったんですが)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-3721295811120247018?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/3721295811120247018/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=3721295811120247018' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3721295811120247018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3721295811120247018'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/09/skip-last-n-lines-on-mac-os-x.html' title='Skip last N lines on Mac OS X'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-7883867542034500032</id><published>2011-08-25T16:03:00.004+09:00</published><updated>2011-08-25T16:13:54.377+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>tarコマンドメモ</title><content type='html'>参考:&lt;a href="http://ext.omo3.com/webmaster/tar_tips.html"&gt;tarバックアップから一部のディレクトリ・ファイルを取り出す | 渋谷生活&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;tgzファイル検索+アーカイブの中身検索&lt;/b&gt;&lt;br /&gt;注意点は&lt;br /&gt;・findでワイルドカードを使って再帰的にヒットさせたい場合は\*を使う&lt;br /&gt;・findからxargsに渡す時は-print0を使ってnull終端させる&lt;br /&gt;てとこすかね。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ find . -name \*.tgz -print0 | xargs tar -tf | grep -r 22-22.TXT&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;tarファイルから一部のファイルのみ展開する&lt;/b&gt;&lt;br /&gt;こちらは圧縮するときと同様に引数にファイルまたはディレクトリを指定すればOKっぽいですね。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ tar -xzvf 2007.tgz "Volumes/UNTITLED 1/2007/07-11"&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-7883867542034500032?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/7883867542034500032/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=7883867542034500032' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7883867542034500032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7883867542034500032'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/08/tar.html' title='tarコマンドメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5616096649415834292</id><published>2011-08-20T20:50:00.004+09:00</published><updated>2011-08-20T21:44:18.017+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xargs'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='sed'/><title type='text'>sedとxargsで一括リネームメモ</title><content type='html'>参考:&lt;a href="http://nixtip.wordpress.com/2010/10/20/using-xargs-to-rename-multiple-files/"&gt;Using sed + xargs to rename multiple files &amp;laquo; NixTip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;macからsambaにアクセスすると、たまに日本語のファイルを読めない時がある。&lt;br /&gt;というわけで一括変換。&lt;br /&gt;シェルスクリプトはほんと弱いんで時間かかりました。&lt;br /&gt;結局スクリプト書いてないし。orz&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cd /path/to/dir &lt;font color=blue&gt;替えたいファイルがあるディレクトリに移動する&lt;/font&gt;&lt;br /&gt;$ ls&lt;br /&gt;01 それが､愛でしょう.m4a               06 もう一度君に会いたい.m4a  11 はじまり (カバーバージョン).m4a  16 Alone.m4a&lt;br /&gt;02 翼 ～memories of maple story～.m4a  07 ねずみは米がすき.m4a      12 南風.m4a                         17 たった､ひとつの.m4a&lt;br /&gt;03 Bird.m4a                            08 悲しみに負けないで.m4a    13 tomorrow.m4a                     18 枯れない花.m4a&lt;br /&gt;04 蕾 ～tsubomi～.m4a                  09 藍色の空の下で.m4a        14 キミの願い.m4a                     x&lt;br /&gt;05 想い出がいっぱい.m4a                10 あの日に帰りたい.m4a      15 BELIEVER ～旅立ちの歌～.m4a&lt;br /&gt;$ cat x &lt;font color=blue&gt;替えたいファイル名を羅列したファイルを予め用意(上記リンクの通り、ls使えば不要そう)&lt;/font&gt;&lt;br /&gt;01 それが､愛でしょう.m4a&lt;br /&gt;02 翼 ～memories of maple story～.m4a&lt;br /&gt;03 Bird.m4a&lt;br /&gt;04 蕾 ～tsubomi～.m4a&lt;br /&gt;05 想い出がいっぱい.m4a&lt;br /&gt;06 もう一度君に会いたい.m4a&lt;br /&gt;07 ねずみは米がすき.m4a&lt;br /&gt;08 悲しみに負けないで.m4a&lt;br /&gt;09 藍色の空の下で.m4a&lt;br /&gt;10 あの日に帰りたい.m4a&lt;br /&gt;11 はじまり (カバーバージョン).m4a&lt;br /&gt;12 南風.m4a&lt;br /&gt;13 tomorrow.m4a&lt;br /&gt;14 キミの願い.m4a&lt;br /&gt;15 BELIEVER ～旅立ちの歌～.m4a&lt;br /&gt;16 Alone.m4a&lt;br /&gt;17 たった､ひとつの.m4a&lt;br /&gt;18 枯れない花.m4a&lt;br /&gt;$ cat x | sed 'p;s/ .*$/.m4a/g' | sed 's/^/\"/g' | sed 's/$/\"/g' | xargs -n2 mv &lt;font color=blue&gt;ファイル名のスペース以降を'.m4a'に変更し、行頭から行末までをダブルクオーテーションで括りxargsでmvを実行する。&lt;/font&gt;&lt;br /&gt;$ ls&lt;br /&gt;01.m4a	03.m4a	05.m4a	07.m4a	09.m4a	11.m4a	13.m4a	15.m4a	17.m4a	x&lt;br /&gt;02.m4a	04.m4a	06.m4a	08.m4a	10.m4a	12.m4a	14.m4a	16.m4a	18.m4a&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;汚い上に冗長で申し訳ないんですが、こんな感じです。&lt;br /&gt;iTunesでCD読み込んで勝手にファイル名を付けられた場合に便利かと思います。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;追記:&lt;/b&gt;&lt;br /&gt;ちょっと短くかつ汎用的にしてみた。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ls | sed 'p;s/ .*\././g' | sed 's/^\(.*\)$/\"\1\"/g' | xargs -n2 mv&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;「各行をダブルクオーテーションで囲む」っていう操作を簡単にやる方法がよく分からん。&lt;br /&gt;echoと``と駆使してみても自分の知識のみでは上手くいかなかった。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5616096649415834292?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5616096649415834292/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5616096649415834292' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5616096649415834292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5616096649415834292'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/08/sedxargs.html' title='sedとxargsで一括リネームメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5671947929661445851</id><published>2011-07-25T02:10:00.002+09:00</published><updated>2011-07-25T02:14:11.660+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ffmpeg'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>macのffmpegでflvをmp3に変換メモ</title><content type='html'>忘れそうなのでメモ&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ ffmpeg -i hoge.flv -vn -ab 128k hoge.mp3&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;i&gt;-i&lt;/i&gt;: 入力ファイル名&lt;br /&gt;&lt;i&gt;-vn&lt;/i&gt;: ビデオ出力無し&lt;br /&gt;&lt;i&gt;-ab&lt;/i&gt;: オーディオのビットレート&lt;br /&gt;&lt;br /&gt;で最後に出力ファイル名。出力フォーマットは拡張子で判断してくれる模様。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5671947929661445851?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5671947929661445851/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5671947929661445851' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5671947929661445851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5671947929661445851'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/07/macffmpegflvmp3.html' title='macのffmpegでflvをmp3に変換メモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-551188211934501866</id><published>2011-07-02T23:25:00.002+09:00</published><updated>2011-07-02T23:34:24.528+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><title type='text'>mercurialでディレクトリをバージョン管理から除去する</title><content type='html'>[参考:&lt;a href="http://d.hatena.ne.jp/dayflower/20080307/1204863044"&gt;Mercurial 勉強中 (3) - .hgignore で無視リスト - daily dayflower&lt;/a&gt;]&lt;br /&gt;こちらはhgの情報が豊富なのでちょくちょく確認するようにしたいですね。&lt;br /&gt;&lt;br /&gt;Xcodeプロジェクトのbuild以下を無視するように設定&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cd /path/to/project&lt;br /&gt;$ hg st&lt;br /&gt;? build/hogehoge&lt;br /&gt;? build/....&lt;br /&gt;? build/....&lt;br /&gt;M Classes/fuga.m&lt;br /&gt;$ echo -e syntax:glob'\n'build &gt; .hgignore&lt;br /&gt;$ hg st&lt;br /&gt;M Classes/fuga.m&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;こんな感じです。つーかechoは-eオプションで改行できるって知らんかった。&lt;br /&gt;[参考:&lt;a href="http://d.hatena.ne.jp/rero/20071117/p1"&gt;echo $&amp;#39;\n&amp;#39; で改行が表示できる - reroの日記&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-551188211934501866?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/551188211934501866/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=551188211934501866' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/551188211934501866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/551188211934501866'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/07/mercurial.html' title='mercurialでディレクトリをバージョン管理から除去する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-3358239064949717048</id><published>2011-07-01T22:45:00.003+09:00</published><updated>2011-07-01T23:04:05.588+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Obj-C'/><title type='text'>objc 2のfast enumerationが良い</title><content type='html'>objc 2.0から&lt;a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSFastEnumeration_protocol/Reference/NSFastEnumeration.html%23//apple_ref/doc/uid/TP40004559"&gt;NSFastEnumeration&lt;/a&gt;というのが使えるらしく&lt;br /&gt;for( hoge in fuga ) という構文が使えるようになった。&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;NSArray *hoges = [foo bar];&lt;br /&gt;NSEnumerator *hogeEnum = [hoges objectEnumerator];&lt;br /&gt;Hoge *hoge;&lt;br /&gt;while ( nil != ( hoge = [hogeEnum nextObject] ) ) {&lt;br /&gt;　[hoge fuga];&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;こんなんだったのが&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;NSArray *hoges = [foo bar];&lt;br /&gt;for ( Hoge *hoge in hoges ) {&lt;br /&gt;　[hoge fuga];&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;これで良い。これは…ありがたい…&lt;br /&gt;NSArrayだけでなくNSDictionaryでも大丈夫で&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;NSDictionary *hogeDic = [foo bar];&lt;br /&gt;for ( NSStinrg *key in hogeDic ) {&lt;br /&gt;　id value = [hogeDic objectForKey:key];&lt;br /&gt;　// ...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;てな感じでkeyが簡単に取れる。phpでいう&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;foreach ( $hogeDic as $key =&gt; $value ) {&lt;br /&gt;　// ...&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;的な事が楽にできる。&lt;br /&gt;&lt;br /&gt;[参考:&lt;a href="http://www.atmarkit.co.jp/fcoding/articles/objc/05/objc05d.html"&gt;配列とループ処理を理解しよう - ＠IT&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;但し、列挙中にそのコレクション(配列やディクショナリ自身)を変更するのはNGな模様。&lt;br /&gt;&lt;br /&gt;[参考:&lt;a href="http://stackoverflow.com/questions/2143372/for-each-loop-in-objective-c-for-accessing-nsmutable-dictionary"&gt;nsdictionary - for each loop in objective c for accessing NSMutable dictionary - Stack Overflow&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-3358239064949717048?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/3358239064949717048/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=3358239064949717048' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3358239064949717048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3358239064949717048'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/07/objc-2fast-enumeration.html' title='objc 2のfast enumerationが良い'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2308879775409276910</id><published>2011-06-26T13:42:00.003+09:00</published><updated>2011-06-26T14:19:22.806+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>macでMercurialをインストール</title><content type='html'>例によって&lt;a href="www.macports.org/"&gt;MacPorts&lt;/a&gt;で。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ which hg&lt;br /&gt;$ sudo port install mercurial&lt;br /&gt;$ which hg&lt;br /&gt;/opt/local/bin/hg&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;自鯖側のレポジトリをcloneする。httpはめどいのでsshする。[参考:&lt;a href="http://d.hatena.ne.jp/fn7/20100416/1271374639"&gt;SSH越しでmercurialのリポジトリのクローンを作る - fn7の日記&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ &lt;font color=blue&gt;hg clone ssh://user@server:port//path/to/repo&lt;/font&gt;&lt;br /&gt;user@server's password: &lt;br /&gt;複製先ディレクトリ: repo&lt;br /&gt;全チェンジセットを取得中&lt;br /&gt;チェンジセットを追加中&lt;br /&gt;マニフェストを追加中&lt;br /&gt;ファイルの変更を追加中&lt;br /&gt;1 のチェンジセット(1567 の変更を 1567 ファイルに適用)を追加&lt;br /&gt;ブランチ default へ更新中&lt;br /&gt;ファイル状態: 更新数 1567、 マージ数 0、 削除数 0、 衝突未解決数 0&lt;br /&gt;$ &lt;font color=blue&gt;cd repo&lt;/font&gt;&lt;br /&gt;$ &lt;font color=blue&gt;hg sum&lt;/font&gt;&lt;br /&gt;親リビジョン    : 0:55a479081cb9 tip&lt;br /&gt;hogehogehoge&lt;br /&gt;ブランチ        : default&lt;br /&gt;想定 commit 結果: (改変無し)&lt;br /&gt;update 候補     : (現行のまま)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;日本語ですね。すごいね。&lt;br /&gt;相変わらずsshがパスワード認証なのをいい加減なんとかしないとなぁ。&lt;br /&gt;&lt;br /&gt;続いてcommit, push確認。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ &lt;font color=blue&gt;touch hoge.txt&lt;/font&gt;&lt;br /&gt;$ &lt;font color=blue&gt;hg add hoge.txt&lt;/font&gt;&lt;br /&gt;$ &lt;font color=blue&gt;hg commit -u user&lt;/font&gt;&lt;br /&gt;$ &lt;font color=blue&gt;hg push&lt;/font&gt;&lt;br /&gt;ssh://user@server:port//path/to/repo への反映中&lt;br /&gt;user@server's password: &lt;br /&gt;変更点を探索中&lt;br /&gt;遠隔ホスト: adding changesets&lt;br /&gt;遠隔ホスト: adding manifests&lt;br /&gt;遠隔ホスト: adding file changes&lt;br /&gt;遠隔ホスト: added 1 changesets with 1 changes to 1 files&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;・このままだとcommitの度に-uが必要。&lt;br /&gt;・始めpushしたときにPermission deniedされたので鯖側でchmod -R 777 repoした&lt;br /&gt;&lt;br /&gt;なんとなくsvnコマンドとの対応はこんなものかなぁ。(あくまでそう思ってるだけ)&lt;br /&gt;svn co: hg clone&lt;br /&gt;svn st: hg st&lt;br /&gt;svn log: hg log (-vも使えるがファイル名ごとに改行されてない？)&lt;br /&gt;svn info:  hg sum&lt;br /&gt;svn commit: hg commit &amp;&amp; hg push (?)&lt;br /&gt;svn up: hg pull (?)&lt;br /&gt;svn up -r &lt;i&gt;revision&lt;/i&gt;: hg up -r &lt;i&gt;revision&lt;/i&gt; (?)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2308879775409276910?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2308879775409276910/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2308879775409276910' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2308879775409276910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2308879775409276910'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/06/macmercurial.html' title='macでMercurialをインストール'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-4051267614824084729</id><published>2011-06-26T12:47:00.003+09:00</published><updated>2011-06-26T14:22:34.643+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><title type='text'>mercurialメモ</title><content type='html'>インストール手順は…忘れた…。&lt;br /&gt;&lt;a href="http://mercurial.selenic.com/"&gt;Mercurial SCM&lt;/a&gt;(公式サイト)のQuickStart部分を参考に。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;レポジトリ作成&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# mkdir /usr/local/hg&lt;br /&gt;# cd /usr/local/hg&lt;br /&gt;# mv /path/to/dir .&lt;br /&gt;# cd dir&lt;br /&gt;# hg init&lt;br /&gt;# hg add&lt;br /&gt;# hg commit -u username&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;rootで作業しましたが、他ユーザにpushさせるには.hgへの書き込み権限を与えないと行けない模様。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-4051267614824084729?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/4051267614824084729/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=4051267614824084729' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4051267614824084729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4051267614824084729'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/06/mercurial.html' title='mercurialメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-7892363986864288664</id><published>2011-06-16T22:42:00.003+09:00</published><updated>2011-06-16T23:01:31.184+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='common lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>macでcommon lisp</title><content type='html'>色々有るらしいんですが、Mac Portsを入れているのとGNUだがらということで&lt;br /&gt;&lt;a href="http://www.gnu.org/software/gcl/"&gt;GNU Common Lisp&lt;/a&gt;を入れてみた。&lt;br /&gt;[参考:&lt;a href="http://d.hatena.ne.jp/qnzm/20080925/1222292076"&gt;Mac OS XでCommon Lispの実行環境を作る(CLISP + Carbon Emacs + SLIME) - qnzm.log(クニジマログ)&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;環境は10.6.7。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ &lt;font color=blue&gt;which clisp&lt;/font&gt;&lt;br /&gt;$ &lt;font color=blue&gt;sudo port install clisp&lt;/font&gt;&lt;br /&gt;&lt;font color=green&gt;(中略)&lt;/font&gt;&lt;br /&gt;Error: Target org.macports.build returned: shell command failed (see log for details)&lt;br /&gt;Error: Status 1 encountered during processing.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;こちらの環境でも一度失敗した。log見てもよくわからなかった。ログは&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ &lt;font color=blue&gt;sudo port log clisp&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とかでstdoutに出てくる。&lt;br /&gt;&lt;br /&gt;selfupdateしてもう一度トライ。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ &lt;font color=blue&gt;sudo port selfupdate&lt;/font&gt;&lt;br /&gt;&lt;font color=green&gt;(中略)&lt;/font&gt;&lt;br /&gt;$ &lt;font color=blue&gt;sudo port install clisp&lt;/font&gt;&lt;br /&gt;&lt;font color=green&gt;(中略)&lt;/font&gt;&lt;br /&gt;$ &lt;font color=blue&gt;which clisp&lt;/font&gt;&lt;br /&gt;/opt/local/bin/clisp&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;インストール成功。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;なんで今さらlispかと言うと、Cマクロをもうちょっと使い込みたいなと思っただけです。&lt;br /&gt;&lt;br /&gt;そのうち以前作ったプログラムを勉強目的で見返してチューンしてみようかなとか思ってます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-7892363986864288664?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/7892363986864288664/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=7892363986864288664' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7892363986864288664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7892363986864288664'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/06/maccommon-lisp.html' title='macでcommon lisp'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-1486570624258462227</id><published>2011-05-03T18:54:00.005+09:00</published><updated>2011-05-03T19:52:39.450+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='makefile'/><category scheme='http://www.blogger.com/atom/ns#' term='c/c++/objc'/><title type='text'>ハノイの塔まとめ</title><content type='html'>だいぶ前にiakioさんに教えてもらった人の動画なのですが、&lt;br /&gt;最近ようやく観る気になったので観てみました。&lt;br /&gt;いろいろあるんですが、自分は再帰があまり得意ではないので&lt;br /&gt;&lt;br /&gt;http://www.youtube.com/watch?v=WHwCVDzHSo4&lt;br /&gt;&lt;br /&gt;辺りを観ながらCで実装してみたり。&lt;br /&gt;&lt;br /&gt;再帰の便利さは理解できましたが、&lt;br /&gt;&lt;br /&gt;「小さいリングの上に大きいリングを置いてはいけない」&lt;br /&gt;&lt;br /&gt;つうルールがどこで適用されてるのかが分からん…&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;…のだが、あまり深く考えない事にした。&lt;br /&gt;&lt;br /&gt;これ初期状態に助けられてるだけだよなぁ。初期状態かえると速攻破綻する。&lt;br /&gt;まぁ、いいや。&lt;br /&gt;&lt;br /&gt;で、今回Makefileを使ったのでメモっときます。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;hanoi: hanoi.o stack.o&lt;br /&gt;    gcc hanoi.o stack.o -o hanoi&lt;br /&gt;hanoi.o: hanoi.c&lt;br /&gt;    gcc -c hanoi.c -o hanoi.o&lt;br /&gt;stack.o: stack.c&lt;br /&gt;    gcc -c stack.c -o stack.o  &lt;br /&gt;stack.c: stack.h&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;使うたびに徐々に使える技が増えてるような気はするけどまだまだっすなぁ。&lt;br /&gt;今回は-cオプションと.cが.hに依存している場合の書き方を覚えました。&lt;br /&gt;サフィックスルールとかはまだまだ使わない予定。&lt;br /&gt;[参考:&lt;a href="http://www.unixuser.org/~euske/doc/makefile/"&gt;Make と Makefile の説明&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-1486570624258462227?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/1486570624258462227/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=1486570624258462227' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1486570624258462227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1486570624258462227'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/05/blog-post.html' title='ハノイの塔まとめ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5456442235308084453</id><published>2011-05-01T15:57:00.004+09:00</published><updated>2011-05-01T21:15:46.319+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='MacPorts'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>macでpgbench</title><content type='html'>&lt;b&gt;postgresqlのインストール&lt;/b&gt;&lt;br /&gt;とりあえず&lt;a href="http://www.macports.org/"&gt;MacPorts&lt;/a&gt;を入れます。(詳細略)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sudo port search postgres*&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;としてpostgresのバージョンが色々有る事を確認w&lt;br /&gt;自分の場合は自鯖で稼働中のものと比較するため、8.1.23を入れる事にしました。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sudo port install postgresql81 postgresql81-server&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;設定(始めの３行)はinstall実行時のログに出てたものをそのまま利用し、その後postmasterを起動しました。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sudo mkdir -p /opt/local/var/db/postgresql81/defaultdb&lt;br /&gt;$ sudo chown postgres81:postgres /opt/local/var/db/postgresql81/defaultdb&lt;br /&gt;$ sudo su postgres81 -c '/opt/local/lib/postgresql81/bin/initdb -D /opt/local/var/db/postgresql81/defaultdb'&lt;br /&gt;&lt;br /&gt;$ sudo su postgres81 -c '/opt/local/lib/postgresql81/bin/postmaster -D /opt/local/var/db/postgresql81/defaultdb &amp;'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;で、その後psqlでプロンプトからcreate databaseを実行してDBを作成。&lt;br /&gt;ちなみにデフォルトでは認証が全てtrustになってるっぽいので注意。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ psql -Upostgres81 template1&lt;br /&gt;template1=# CREATE DATABASE test&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;ひとまずサーバの設定は以上。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;pgbenchの準備&lt;/b&gt;&lt;br /&gt;MacPortsには無さそうなので&lt;a href="http://www.postgresql.org/ftp/source/"&gt;公式サイトからソースを&lt;/a&gt;もって来ました。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ mkdir ~/work&lt;br /&gt;$ cd ~/work&lt;br /&gt;$ sudo port install wget&lt;br /&gt;$ wget http://wwwmaster.postgresql.org/redir/311/h/source/v8.1.23/postgresql-8.1.23.tar.gz&lt;br /&gt;$ tar -xzvf postgresql-8.1.23.tar.gz&lt;br /&gt;$ cd postgresql-8.1.23&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;この後が少し手間で、始めにpostmasterをmakeし、その後pgbenchをmakeする必要が有ります。&lt;br /&gt;その際、postmasterの方はMacPortsで入れたものとパスが合うようにconfigureで設定してやります。&lt;br /&gt;と言っても全てのパスが必要な訳ではなくprefixとlibdirさえ合っていれば良いようです。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ ./configure --prefix "/opt/local" --libdir "/opt/local/lib/postgresql81"&lt;br /&gt;$ make &lt;font color=blue&gt;(MacPortsで入れたのでmake installは実行しない)&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;次にpgbenchをmakeします。こちらは単純に&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cd contrib/pgbench&lt;br /&gt;$ make&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;でOK。pgbench実行時に&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ ./pgbench &lt;br /&gt;dyld: Library not loaded: /path/to/lib/libpq.4.dylib&lt;br /&gt;  Referenced from: /path/to/pgbench&lt;br /&gt;  Reason: image not found&lt;br /&gt;Trace/BPT trap&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;てなエラーが出る場合は上述のlibdir等の設定を見直してみてください。&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;追記：&lt;br /&gt;&lt;b&gt;MacPortsでphp用postgresql IFをインストール&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# yum install php-pgsql &lt;font color=blue&gt;(の代わりに)&lt;/font&gt;&lt;br /&gt;$ sudo port install php5-postgresql&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ただし以下のものに依存しているのでインストールには時間がかかります...orz&lt;br /&gt;php5 apache2 apr apr-util db46 sqlite3 pcre bzip2 perl5 perl5.12 autoconf213 gawk gsed libtool automake autoconf help2man p5-locale-gettext mhash pkgconfig postgresql90 ossp-uuid&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5456442235308084453?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5456442235308084453/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5456442235308084453' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5456442235308084453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5456442235308084453'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/05/macpgbench.html' title='macでpgbench'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-4572138041342699709</id><published>2011-03-28T23:00:00.002+09:00</published><updated>2011-03-28T23:18:00.078+09:00</updated><title type='text'>TorchlightとAmnesia買った</title><content type='html'>とりあえずMac側でやり始めたんですが&lt;br /&gt;長時間（５時間程度）やってるとフリーズが頻発するようになるくさいです。&lt;br /&gt;(Macmini Core2Duo 2.4 GHz, 8GB, OS X 10.6.6) &lt;br /&gt;&lt;br /&gt;cmd + opt + esc で強制終了できますが、システムを再起動しないと治らないっぽいです。&lt;br /&gt;このゲームはtown portalや階層移動でのロード時にデータがセーブされるっぽいので&lt;br /&gt;割りとやり直しは効くのですが、階の終盤でフリーズしたりするとやる気をガッツリ&lt;br /&gt;持っていかれてしまい、その後ふてくされてゲームをやめてしまうという状況に陥りましたw&lt;br /&gt;&lt;br /&gt;win側にもインストールしてそちらでやろうと思ったのですが、&lt;br /&gt;どうもセーブデータはsteam cloudでは保持してないらしく、mac-win間では同期できませんでした。&lt;br /&gt;Macでは &lt;br /&gt;~/Library/Application\ Support/runic\ games/torchlight&lt;br /&gt;辺りに全部保存されてて、これをwinの&lt;br /&gt;マイドキュメント下の不可視フォルダ（名前失念）にコピーしてみましたが、&lt;br /&gt;データ構造が異なるのか、アプリが異常終了して同期できませんでした。&lt;br /&gt;&lt;br /&gt;とりあえず終盤まで来てしまっているので、一旦クリアしてからwinで新しく始めようと思います。&lt;br /&gt;&lt;br /&gt;ゲーム内容はアクション風diabloって感じです。（作ってるとこ同じ）&lt;br /&gt;steamでPC版を買いましたが、パッドでプレイできる箱○版の方が良かったかなあと思ったりしてます。&lt;br /&gt;（机に手を置いとかないといけなくて肩凝るし…）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Amnesiaはなんか3D酔いさせる気満々な演出なので若干放置気味ですw&lt;br /&gt;体調良いときじゃないと厳しいかなぁ。&lt;br /&gt;&lt;br /&gt;それでは！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-4572138041342699709?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/4572138041342699709/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=4572138041342699709' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4572138041342699709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4572138041342699709'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/03/torchlightamnesia.html' title='TorchlightとAmnesia買った'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-7325755476594514094</id><published>2011-03-20T10:43:00.003+09:00</published><updated>2011-03-20T10:54:28.302+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><title type='text'>CentOSでネットワーク設定</title><content type='html'>えー、今更ですが今回初めて自鯖のネットワーク設定をしました。&lt;br /&gt;&lt;br /&gt;ずっとDHCPに頼りっぱなしでした。&lt;br /&gt;&lt;br /&gt;が、先日落ちたと思ってた原因がどうやらLAN内でのIPアドレス変更によるものらしく、&lt;br /&gt;そりゃ繋がんないよね的な状態だったので、固定でIPを割り振る事にしました。&lt;br /&gt;&lt;br /&gt;つーわけで、設定手順。&lt;br /&gt;大昔に仕事で設定方法を教わったはずですが、すっかり忘れてました。&lt;br /&gt;ひとまず&lt;a href="http://d.hatena.ne.jp/bojovs/20081020/1224429418"&gt;CentOSのネットワーク設定を手動で行う方法 - bojovs blog&lt;/a&gt;を参考にすればイナフ！&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# vim /etc/sysconfig/network-scripts/ifcfg-eth0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;ファイルの内容は以下の通り（伏せ字ばっかですが）。&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;# /etc/sysconfig/network-scripts/ifcfg-eth0&lt;br /&gt;DEVICE=eth0&lt;br /&gt;BOOTPROTO=none&lt;br /&gt;IPADDR=xxx.xxx.xxx.xxx&lt;br /&gt;NETMASK=yyy.yyy.yyy.yyy&lt;br /&gt;GATEWAY=zzz.zzz.zzz.zzz&lt;br /&gt;HWADDR=AA::BB:CC:DD:EE&lt;br /&gt;ONBOOT=yes&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# service network restart&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;sshとかでログイン中だと、このタイミングで接続が切れて無反応になります。&lt;br /&gt;特に問題なく別ターミナルからログインできる事を確認。&lt;br /&gt;&lt;br /&gt;(´ω｀)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-7325755476594514094?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/7325755476594514094/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=7325755476594514094' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7325755476594514094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7325755476594514094'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/03/centos.html' title='CentOSでネットワーク設定'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2504123467764786940</id><published>2011-03-12T23:11:00.001+09:00</published><updated>2011-03-12T23:54:48.965+09:00</updated><title type='text'>お疲れさまです</title><content type='html'>・大事なデータを外部(さくらのVPS)に逃がす&lt;br /&gt;・食料／飲料水数日分調達&lt;br /&gt;・非常用品確保（つってもライトとか程度）&lt;br /&gt;・情報収集（確度の高いソースの確保、近所の避難所情報など）&lt;br /&gt;&lt;br /&gt;とかやってました。&lt;br /&gt;&lt;br /&gt;あと&lt;br /&gt;&lt;br /&gt;・燃料補充（灯油／ガソリン）&lt;br /&gt;・さらに食料確保&lt;br /&gt;・iPhone用電源確保&lt;br /&gt;・ラジオ確保&lt;br /&gt;&lt;br /&gt;とかもちゃんとやっときたいんですが、&lt;br /&gt;北海道だしどうだろうねぇ。。。&lt;br /&gt;&lt;br /&gt;灯油は半月分以上あるっぽいので良いかな…（でも今はこれが一番心配）&lt;br /&gt;ガソリンは明日確認してみます。&lt;br /&gt;電源とかは遠出しないと入手できないので週明けかねぇ。。。&lt;br /&gt;ラジオは100均に無かったのでどうしようかなと。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;原発の件は結構焦りました。&lt;br /&gt;こんな時に匿名掲示板を見るのもどうかとは思うんですが、&lt;br /&gt;かなり情報が錯綜してました…　日本全国で高度な情報戦が…&lt;br /&gt;&lt;br /&gt;正しいか否かは自分で判断するしかないっすなぁ。&lt;br /&gt;正確な情報を発信してるソースを探すのも自分でやるしかない。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;twitterに関しては、TLはノイズが大きすぎてほとんど役に立たないレベル。&lt;br /&gt;多くの人のRTを非表示にしました。&lt;br /&gt;&lt;br /&gt;ただ、そんな中でも質の高い情報をポストしてるアカウントは有るようなので、&lt;br /&gt;それを見つけてくしかないなぁと。&lt;br /&gt;&lt;br /&gt;あと、twitterは被災者にとっては避難所や補給といったローカルな情報が&lt;br /&gt;素早く入手できるのでかなり役に立つらしかった。これは注目すべき点だと思った。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;つーわけで自分は体力温存のため早々に寝まする。&lt;br /&gt;北海道は今はまだ余震の影響がほとんど無いけど、&lt;br /&gt;いつこっちで起きてもおかしくない状況だからねぇ。&lt;br /&gt;&lt;br /&gt;でわ〜。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2504123467764786940?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2504123467764786940/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2504123467764786940' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2504123467764786940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2504123467764786940'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/03/blog-post_12.html' title='お疲れさまです'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-1678338009880411389</id><published>2011-03-12T00:01:00.001+09:00</published><updated>2011-03-12T00:02:54.560+09:00</updated><title type='text'>お疲れさまです</title><content type='html'>週明けまでtwitterは自粛ー。&lt;br /&gt;botも止めた。&lt;br /&gt;&lt;br /&gt;でわ〜。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-1678338009880411389?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/1678338009880411389/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=1678338009880411389' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1678338009880411389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1678338009880411389'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/03/blog-post.html' title='お疲れさまです'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-4343386691801475823</id><published>2011-02-28T23:36:00.003+09:00</published><updated>2011-02-28T23:53:33.537+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>twitteroauthでアイコン変更</title><content type='html'>ご無沙汰しとります。ネタは有るんだけど時間が…orz&lt;br /&gt;&lt;a href="http://github.com/abraham/twitteroauth/tree/master/twitteroauth/"&gt;twitteroauth&lt;/a&gt;を使ってBOTを実装してたんですが、&lt;br /&gt;アイコン変更用APIの実行には対応してないっぽい。&lt;br /&gt;しかも去年の３月くらいから放置状態っぽい。&lt;br /&gt;&lt;br /&gt;調べてみると、有志の方がアイコン変更メソッドを追加したりして使っている様子。&lt;br /&gt;[参考:&lt;a href="http://twbot.blogspot.com/2010/01/oauth_07.html"&gt;&amp;#12300;簡単じゃない twitter bot&amp;#12301; の作り方メモ: oAuth対応&amp;#12288;続き&lt;/a&gt;]&lt;br /&gt;[参考:&lt;a href="http://d.hatena.ne.jp/bardothodol/20100526/p1"&gt;OAuthのアイコン変更 - プログラミングを始める10の理由&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;早速こちらでもリンク先と同様に修正しアイコン変更にトライ。&lt;br /&gt;&lt;br /&gt;でも、ウマくイカなかった…。orz&lt;br /&gt;&lt;br /&gt;ので、とりあえず不貞寝。&lt;br /&gt;&lt;br /&gt;で、再度調べてみたところ、別のURLにPOSTしている例を発見。&lt;br /&gt;[参考: &lt;a href="http://pro10.sakura.ne.jp/tree/index.php?all=417"&gt;twitter bot掲示板&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;https://twitter.com/account/update_profile_image.xml&lt;br /&gt;を&lt;br /&gt;http://api.twitter.com/1/account/update_profile_image.xml&lt;br /&gt;に換えてリトライ。無事変更できました。。。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;なんだろう…。ちゃんとAPI用のURL叩かないとダメなんだろうか…それともSSLだから？&lt;br /&gt;記事的にはSSLの方が新しいっぽいんだけども…ぐぬぬ…。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-4343386691801475823?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/4343386691801475823/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=4343386691801475823' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4343386691801475823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4343386691801475823'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/02/twitteroauth.html' title='twitteroauthでアイコン変更'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-8137323081824174222</id><published>2011-02-15T14:22:00.004+09:00</published><updated>2011-02-28T23:35:44.152+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dead Space'/><title type='text'>DeadSpace2 HardCoreクリアしたよメモ</title><content type='html'>&lt;b&gt;道中&lt;/b&gt;&lt;br /&gt;開始&lt;br /&gt;&lt;br /&gt;１章のPukerさんに殺されるorz&lt;br /&gt;(最初からやり直しなのでノーカウントと言う事で…)&lt;br /&gt;&lt;br /&gt;６章辺りのPregnant×2の後にLeaperが４匹くらい出てくる広場の前で１回目のセーブ。(うろ覚え)&lt;br /&gt;&lt;br /&gt;１０章辺りの石村中の長い通路(トラム下)、１回目のBruteで弾薬が尽きかけたのでトラムステーション向かいで２回目のセーブ。&lt;br /&gt;&lt;br /&gt;１０章辺りの汚染除去室(?)でのラッシュで黒Pukerさんに殺される。&lt;br /&gt;&lt;br /&gt;１１章辺り、宇宙空間に放り出された後に人工衛星(?)２機をどけて建物に入る途中、&lt;br /&gt;うっかりCystが吐いた弾に当たって即死。&lt;br /&gt;&lt;br /&gt;１４章、Elleと別れた直後のラッシュの前で３回目のセーブ。&lt;br /&gt;&lt;br /&gt;特に問題無くクリア。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;雑感&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;使用武器&lt;/b&gt;&lt;br /&gt;・プラズマカッター（１章〜&lt;br /&gt;・特典フォースガン（１章〜&lt;br /&gt;・ジャベリンガン（７章〜&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-8137323081824174222?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8137323081824174222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8137323081824174222'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/02/deadspace2-hardcore.html' title='DeadSpace2 HardCoreクリアしたよメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-947345219070165217</id><published>2011-02-13T15:12:00.003+09:00</published><updated>2011-02-14T08:18:31.671+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>javascriptメモ02/13</title><content type='html'>&lt;b&gt;連想配列が特定のキーを持つかチェック（PHPでいうisset( $foo['var'] )）&lt;/b&gt;&lt;br /&gt;!== undefinedを使う。&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/2613192/check-if-an-array-item-is-set-in-js"&gt;javascript - Check if an array item is set in JS - Stack Overflow&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;PHPでいう$_GET&lt;/b&gt;&lt;br /&gt;最良の解決法はまだ見つけられてません。ひとまず、&lt;br /&gt;&lt;a href="http://ameblo.jp/linking/entry-10353146034.html"&gt;jQueryでURLのパラメーターを簡単に取得する関数｜本を買わずに解決するWeb制作の小技&lt;/a&gt;&lt;br /&gt;を参考にしましたが、'#'が入ると正常動作しないので改良。&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;    function getUrlVars() &lt;br /&gt;    { &lt;br /&gt;        var vars = [], hash; &lt;br /&gt;        var hashes;&lt;br /&gt;        var href = window.location.href;&lt;br /&gt;        var pos = href.indexOf('#');&lt;br /&gt;        if ( -1 != pos ) { &lt;br /&gt;            href = href.slice( 0, pos );&lt;br /&gt;        }&lt;br /&gt;        hashes = href.slice(href.indexOf('?') + 1).split('&amp;'); &lt;br /&gt;        for(var i = 0; i &lt; hashes.length; i++) { &lt;br /&gt;            hash = hashes[i].split('='); &lt;br /&gt;            vars.push(hash[0]); &lt;br /&gt;            vars[hash[0]] = hash[1]; &lt;br /&gt;        } &lt;br /&gt;        return vars; &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-947345219070165217?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/947345219070165217/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=947345219070165217' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/947345219070165217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/947345219070165217'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/02/javascript0213.html' title='javascriptメモ02/13'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-7720396771116737861</id><published>2011-02-06T09:19:00.002+09:00</published><updated>2011-02-06T09:44:27.622+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone Development'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreAudio'/><title type='text'>CoreAudioでオーディオデバイス名を取得する(改)</title><content type='html'>最近のAPIで書き直してみた&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;#import &amp;lt;CoreAudio/CoreAudio.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#define _CASE_OSSTATUS( s ) case s: printf( #s &amp;quot;\n&amp;quot; ); break;&lt;br /&gt;#define _P printf( &amp;quot;%d:&amp;quot;, __LINE__ ); printOSStatus( err );&lt;br /&gt;&lt;br /&gt;void printOSStatus( OSStatus err );&lt;br /&gt;&lt;br /&gt;int main( int argc, void* argv[] ) {&lt;br /&gt; OSStatus err;&lt;br /&gt; AudioDeviceID *devivceIDPtr;&lt;br /&gt; UInt32 size;&lt;br /&gt; CFStringRef cfstrref;&lt;br /&gt; AudioObjectPropertyAddress propAddr;&lt;br /&gt;&lt;br /&gt; // Get device&lt;br /&gt; propAddr.mSelector = kAudioHardwarePropertyDefaultOutputDevice;&lt;br /&gt; propAddr.mScope = kAudioObjectPropertyScopeGlobal;&lt;br /&gt; propAddr.mElement = 0;&lt;br /&gt;&lt;br /&gt; err = AudioObjectGetPropertyDataSize( kAudioObjectSystemObject, &amp;amp;propAddr, 0, NULL, &amp;amp;size );&lt;br /&gt; _P;&lt;br /&gt; devivceIDPtr = malloc( size );&lt;br /&gt; err = AudioObjectGetPropertyData( kAudioObjectSystemObject, &amp;amp;propAddr, 0, NULL, &amp;amp;size, devivceIDPtr ); &lt;br /&gt; _P;&lt;br /&gt; &lt;br /&gt; // Get device name&lt;br /&gt; propAddr.mSelector = kAudioObjectPropertyName;&lt;br /&gt; propAddr.mScope = kAudioObjectPropertyScopeGlobal;&lt;br /&gt; propAddr.mElement = 0;&lt;br /&gt;&lt;br /&gt; err = AudioObjectGetPropertyDataSize( *devivceIDPtr, &amp;amp;propAddr, 0, NULL, &amp;amp;size );&lt;br /&gt; _P;&lt;br /&gt; &lt;br /&gt; err = AudioObjectGetPropertyData( *devivceIDPtr, &amp;amp;propAddr, 0, NULL, &amp;amp;size, &amp;amp;cfstrref ); &lt;br /&gt; _P;&lt;br /&gt; NSLog( @&amp;quot;deviceName with CFString:%@&amp;quot;, cfstrref );&lt;br /&gt;  &lt;br /&gt; CFRelease( cfstrref );&lt;br /&gt; free( devivceIDPtr );&lt;br /&gt;&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void printOSStatus( OSStatus err ) {&lt;br /&gt; switch( err ) {&lt;br /&gt;  _CASE_OSSTATUS( kAudioHardwareNoError );&lt;br /&gt;  _CASE_OSSTATUS( kAudioHardwareNotRunningError );&lt;br /&gt;  _CASE_OSSTATUS( kAudioHardwareUnspecifiedError );&lt;br /&gt;  _CASE_OSSTATUS( kAudioHardwareUnknownPropertyError );&lt;br /&gt;  _CASE_OSSTATUS( kAudioHardwareBadPropertySizeError );&lt;br /&gt;  _CASE_OSSTATUS( kAudioHardwareIllegalOperationError );&lt;br /&gt;  _CASE_OSSTATUS( kAudioHardwareBadObjectError );&lt;br /&gt;  _CASE_OSSTATUS( kAudioHardwareBadDeviceError );&lt;br /&gt;  _CASE_OSSTATUS( kAudioHardwareBadStreamError );&lt;br /&gt;  _CASE_OSSTATUS( kAudioHardwareUnsupportedOperationError );&lt;br /&gt;  _CASE_OSSTATUS( kAudioDeviceUnsupportedFormatError );&lt;br /&gt;  _CASE_OSSTATUS( kAudioDevicePermissionsError );&lt;br /&gt;  default:&lt;br /&gt;   printf( &amp;quot;unknown OSStatus\n&amp;quot; );&lt;br /&gt;   break;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;よく考えたらNSAutoreleasePoolは要らなかったので#import文も含めて消しました。&lt;br /&gt;&lt;br /&gt;ビルド。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ gcc main.m -framework CoreAudio -framework Foundation&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;warning無し！ヽ(´∀` )ノ&lt;br /&gt;&lt;br /&gt;以下まとめ&lt;br /&gt;・Audio***GetPropertyInfo(), Audio***GetProperty()の代わりにAudioObjectGetPropertyDataSize(), AudioObjectGetPropertyData()を使う。&lt;br /&gt;２つの関数の定義は以下の通り。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;// http://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CACoreAudioReference/AudioHardware/CompositePage.html#//apple_ref/c/func/AudioObjectGetPropertyDataSize&lt;br /&gt;extern OSStatus AudioObjectGetPropertyDataSize(&lt;br /&gt;    AudioObjectID inObjectID, &lt;br /&gt;    const AudioObjectPropertyAddress*inAddress, &lt;br /&gt;    UInt32 inQualifierDataSize, &lt;br /&gt;    const void*inQualifierData, &lt;br /&gt;    UInt32*outDataSize);  &lt;br /&gt;&lt;br /&gt;// http://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CACoreAudioReference/AudioHardware/CompositePage.html#//apple_ref/c/func/AudioObjectGetPropertyData&lt;br /&gt;extern OSStatus AudioObjectGetPropertyData(&lt;br /&gt;    AudioObjectID inObjectID, &lt;br /&gt;    const AudioObjectPropertyAddress*inAddress, &lt;br /&gt;    UInt32 inQualifierDataSize, &lt;br /&gt;    const void*inQualifierData, &lt;br /&gt;    UInt32*ioDataSize, &lt;br /&gt;    void*outData);  &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;・AudioHardwareのプロパティにアクセスする場合にはAudioObjectIDにkAudioObjectSystemObjectを指定する。(デバイスにアクセスする場合はAudioDeviceID)&lt;br /&gt;&lt;br /&gt;・具体的なプロパティの指定はAudioObjectPropertyAddress構造体に行う。AudioObjectPropertyAddressの定義は以下の通り。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;struct AudioObjectPropertyAddress { &lt;br /&gt;    AudioObjectPropertySelector mSelector; &lt;br /&gt;    AudioObjectPropertyScope mScope; &lt;br /&gt;    AudioObjectPropertyElement mElement; &lt;br /&gt;}; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;・mSelectorにはアクセスしたいプロパティ、mScopeとmElementはいまいち良く分からん！&lt;br /&gt;・inQualifierDataSizeはinQualifierDataのサイズ、inQualifierDataは…場合によってはプロパティを取得するときに必要になるデータみたいなもの？とりあえず今回は0とNULLで問題無し。&lt;br /&gt;・後はプロパティのサイズとプロパティの問い合わせ結果ですね。&lt;br /&gt;&lt;br /&gt;今後はAudioObjectGetPropertyData()を使っていこうと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-7720396771116737861?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/7720396771116737861/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=7720396771116737861' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7720396771116737861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7720396771116737861'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/02/coreaudio_06.html' title='CoreAudioでオーディオデバイス名を取得する(改)'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5223810222596225903</id><published>2011-02-05T22:55:00.003+09:00</published><updated>2011-02-05T23:41:23.522+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone Development'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreAudio'/><title type='text'>CoreAudioでオーディオデバイス名を日本語で取得する</title><content type='html'>XCodeで開発している場合は日本語用plistやnib, xibを追加すればOKな模様。(詳細略)&lt;br /&gt;&lt;br /&gt;このブログでは勉強も兼ねてコマンドライン上で完結するような方法で実装してますが、&lt;br /&gt;今回ばかりはなかなか難しい。。。&lt;br /&gt;&lt;br /&gt;が、ひとまず解決方法を見つけたのでご紹介。それはInfo.plistを使うというものです。&lt;br /&gt;&lt;br /&gt;[参考:&lt;a href="http://d.hatena.ne.jp/zariganitosh/20080531/1212246463"&gt;Xcode3.0での設定はどのようにCocoaアプリケーションに反映されるのか？ - ザリガニが見ていた...。&lt;/a&gt;]&lt;br /&gt;Info.plistの内容は以下の通り。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;dict&amp;gt;&lt;br /&gt;        &amp;lt;key&amp;gt;CFBundleDevelopmentRegion&amp;lt;/key&amp;gt;&lt;br /&gt;        &amp;lt;string&amp;gt;Japanese&amp;lt;/string&amp;gt;&lt;br /&gt;&amp;lt;/dict&amp;gt;&lt;br /&gt;&amp;lt;/plist&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Japaneseという値をCFBundleDevelopmentRegionキーで持たせればOKです。&lt;br /&gt;このInfo.plistをバイナリと同じディレクトリに配置し、(なぜ同じディレクトリで良いのかは分かってません)&lt;br /&gt;前回の"&lt;a href="http://ichiba-blog.blogspot.com/2011/02/coreaudio.html"&gt;CoreAudioでオーディオデバイス名を取得する&lt;/a&gt;"と同じバイナリを実行してみます。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$./a.out&lt;br /&gt;2011-02-05 23:12:22.068 a.out[3224:60f] deviceName with C string:&lt;br /&gt;2011-02-05 23:12:22.071 a.out[3224:60f] deviceName with CFString:内蔵出力&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;この通り、「内蔵出力」という文字列が得られました。&lt;br /&gt;C文字列の方は出力できてませんでした。こちらはフランス語の場合も文字化けして出力されました。(Sortie intégr)&lt;br /&gt;アルファベット以外の文字が混ざる場合はCFStringで取得した方が良さそうです。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;今後の開発では、このInfo.plistを使っていこうと思います。&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;以下雑記&lt;br /&gt;フランス語環境に設定してるけど英語表記で取得したいような場合は自前でデバイスドライバを調べる必要が有りそう。&lt;br /&gt;&lt;a href="http://lists.apple.com/archives/coreaudio-api/2004/Dec/msg00063.html"&gt;Re: kAudioDevicePropertyDeviceName and localisation&lt;/a&gt;&lt;br /&gt;あと、オプションで -AppleLanguages ("ja") を付ける方法も試してみたが効果が無かった。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5223810222596225903?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5223810222596225903/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5223810222596225903' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5223810222596225903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5223810222596225903'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/02/coreaudio_05.html' title='CoreAudioでオーディオデバイス名を日本語で取得する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-5183227880104081441</id><published>2011-02-05T22:16:00.004+09:00</published><updated>2011-02-05T22:45:10.504+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone Development'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreAudio'/><title type='text'>CoreAudioでオーディオデバイス名を取得する</title><content type='html'>デフォルトの出力デバイスを取得して、そのデバイス名を表示してみます。&lt;br /&gt;&lt;br /&gt;以下ソース。&lt;br /&gt;&lt;br /&gt;&lt;pre class=prettyprint"&gt;&lt;br /&gt;// main.m&lt;br /&gt;#import &amp;lt;CoreAudio/CoreAudio.h&amp;gt;&lt;br /&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main( int argc, void* argv[] ) {&lt;br /&gt; OSStatus err;&lt;br /&gt; AudioDeviceID *devivceIDPtr;&lt;br /&gt; UInt32 size;&lt;br /&gt; char* str;&lt;br /&gt; CFStringRef cfstrref;&lt;br /&gt;&lt;br /&gt; // Get device&lt;br /&gt; err = AudioHardwareGetPropertyInfo( kAudioHardwarePropertyDefaultOutputDevice, &amp;amp;size, NULL );&lt;br /&gt; devivceIDPtr = malloc( size );&lt;br /&gt; err = AudioHardwareGetProperty( kAudioHardwarePropertyDefaultOutputDevice, &amp;amp;size, devivceIDPtr );&lt;br /&gt; &lt;br /&gt; // Get device name with C string&lt;br /&gt; err = AudioDeviceGetPropertyInfo( *devivceIDPtr, 0, false, kAudioDevicePropertyDeviceName, &amp;amp;size, NULL );&lt;br /&gt; str = malloc( size );&lt;br /&gt; err = AudioDeviceGetProperty( *devivceIDPtr, 0, false, kAudioDevicePropertyDeviceName, &amp;amp;size, str );&lt;br /&gt; NSLog( @&amp;quot;deviceName with C string:%s&amp;quot;, str );&lt;br /&gt; free( str );&lt;br /&gt;&lt;br /&gt; // Get device name with CFString&lt;br /&gt; err = AudioDeviceGetPropertyInfo( *devivceIDPtr, 0, false, kAudioDevicePropertyDeviceNameCFString, &amp;amp;size, NULL );&lt;br /&gt; err = AudioDeviceGetProperty( *devivceIDPtr, 0, false, kAudioDevicePropertyDeviceNameCFString, &amp;amp;size, &amp;amp;cfstrref );&lt;br /&gt; NSLog( @&amp;quot;deviceName with CFString:%@&amp;quot;, cfstrref );&lt;br /&gt; CFRelease( cfstrref );&lt;br /&gt;&lt;br /&gt; free( devivceIDPtr );&lt;br /&gt;&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;C文字列とCFStringRefの２種類の取得方法が有ります。&lt;br /&gt;ビルド。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ gcc main.m -framework CoreAudio -framework Foundation&lt;br /&gt;main.m: In function ‘main’:&lt;br /&gt;main.m:12: warning: ‘AudioHardwareGetPropertyInfo’ is deprecated (declared at /System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardware.h:1098)&lt;br /&gt;main.m:14: warning: ‘AudioHardwareGetProperty’ is deprecated (declared at /System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardware.h:1119)&lt;br /&gt;main.m:17: warning: ‘AudioDeviceGetPropertyInfo’ is deprecated (declared at /System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardware.h:2338)&lt;br /&gt;main.m:19: warning: ‘AudioDeviceGetProperty’ is deprecated (declared at /System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardware.h:2367)&lt;br /&gt;main.m:24: warning: ‘AudioDeviceGetPropertyInfo’ is deprecated (declared at /System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardware.h:2338)&lt;br /&gt;main.m:26: warning: ‘AudioDeviceGetProperty’ is deprecated (declared at /System/Library/Frameworks/CoreAudio.framework/Headers/AudioHardware.h:2367)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ギャー！deprecatedになってるー！！&lt;br /&gt;こちらの環境は10.6.3ですが、10.5からdeprecatedになったのかな？&lt;br /&gt;ひとまず最新の定義は&lt;a href="http://developer.apple.com/library/mac/#documentation/MusicAudio/Reference/CACoreAudioReference/AudioHardware/index.html"&gt;Documentation for AudioHardware (AudioHardware.h)&lt;/a&gt;で確認可能な模様。&lt;br /&gt;&lt;br /&gt;対策は後日考えます。&lt;br /&gt;&lt;br /&gt;そして実行。実行時のシステム環境設定の"サウンド"およびAudio MIDI設定.appの表示は以下の通り。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MHazjq2YTDI/TU1RuXPH5kI/AAAAAAAAAIw/a0bZp96T7rw/s1600/audio.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 225px; height: 320px;" src="http://4.bp.blogspot.com/_MHazjq2YTDI/TU1RuXPH5kI/AAAAAAAAAIw/a0bZp96T7rw/s320/audio.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5570198171080451650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ ./a.out&lt;br /&gt;2011-02-05 22:24:58.522 a.out[3071:903] deviceName with C string:Built-in Output&lt;br /&gt;2011-02-05 22:24:58.526 a.out[3071:903] deviceName with CFString:Built-in Output&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;これで一応取得できました。おそらく「内蔵出力」だと思いますが日本語で取得できてません。&lt;br /&gt;対策は別エントリで。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-5183227880104081441?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/5183227880104081441/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=5183227880104081441' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5183227880104081441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/5183227880104081441'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/02/coreaudio.html' title='CoreAudioでオーディオデバイス名を取得する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_MHazjq2YTDI/TU1RuXPH5kI/AAAAAAAAAIw/a0bZp96T7rw/s72-c/audio.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2919902222133323438</id><published>2011-02-02T18:29:00.004+09:00</published><updated>2011-02-02T18:39:48.553+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><title type='text'>Dockに現れないようアプリケーションを設定する</title><content type='html'>Info.plist(のルート直下)にてLSUIElementというキーで値を1に設定する。&lt;br /&gt;[参考: &lt;a href="http://developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/InfoPlistKeyReference.pdf"&gt;Information Property List Key Reference (PDF)&lt;/a&gt;]&lt;br /&gt;[参考: &lt;a href="http://xcatsan.blogspot.com/2008/03/nsbgonly-nsuielement-lsuielement.html"&gt;(旧) Cocoaの日々: NSBGOnly と NSUIElement と LSUIElement&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;こうなるとメニューやDockからquitできない上にCmd+Option+Escで強制終了にも出てこないので注意！＞＜&lt;br /&gt;(XCodeから起動してる場合はXCodeから終了できる模様)&lt;br /&gt;&lt;br /&gt;つーか、最近(10.6)ではInfo.plistではなくInfoPlist.stringsっつー名前になってるのね。&lt;br /&gt;&lt;br /&gt;なお、APIリファレンスではこういうタイプのアプリを'agent application'って呼んでるみたいっすな。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2919902222133323438?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2919902222133323438/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2919902222133323438' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2919902222133323438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2919902222133323438'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/02/dock.html' title='Dockに現れないようアプリケーションを設定する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-8268221580964785800</id><published>2011-01-27T03:39:00.003+09:00</published><updated>2011-01-27T04:53:55.711+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Services_Amazonメモ</title><content type='html'>商品の価格を取得するまでのメモ&lt;br /&gt;&lt;br /&gt;&lt;b&gt;特定商品の検索&lt;/b&gt;&lt;br /&gt;特定の商品をピンポイントで検索するには&lt;a href="http://pear.php.net/package/Services_Amazon/docs/0.8.0/Services_Amazon/Services_Amazon.html#methodItemLookup"&gt;ItemLookup()&lt;/a&gt;を使う。第１引数の$item_idにはASINを指定する。(カンマ区切りで複数指定可能？）&lt;br /&gt;ASINは各商品詳細ページで確認可能。&lt;br /&gt;&lt;br /&gt;とりあえず使ってみる。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;require_once( 'Services/Amazon.php' );&lt;br /&gt;&lt;br /&gt;$amazon = new Services_Amazon( 'XXX', 'YYY', 'ZZZ');&lt;br /&gt;$amazon-&gt;setLocale( 'JP' );&lt;br /&gt;&lt;br /&gt;// ねんどろミクを検索&lt;br /&gt;$result = $amazon-&gt;ItemLookup( 'B000ZGMF8O' );&lt;br /&gt;var_dump( $result );&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;これだけだとDetailPageURL, ItemLinks, ItemAttributes( Manufacturer, ProductGroup, Title )は取得出来るが、価格は取得出来ない。(まぁ、店毎に違うしなぁ)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;価格の取得&lt;/b&gt;&lt;br /&gt;というわけで、オプションを設定。&lt;br /&gt;&lt;a href="http://www.ajaxtower.jp/ecs/responsegroup/index14.html"&gt;販売情報(OfferFull) - 取得する情報の種類(ResponseGroup) - Amazon Web サービス&lt;/a&gt;を参考にすると、ResponseGroupに'OfferFull'を指定すると取得出来そうだ。また、他店舗も取得したい場合は'MerchantId'と'Condition'も指定する必要が有る模様。というわけで以下ソース。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;require_once( 'Services/Amazon.php' );&lt;br /&gt;&lt;br /&gt;$amazon = new Services_Amazon('XXX', 'YYY', 'ZZZ');&lt;br /&gt;$amazon-&gt;setLocale( 'JP' );&lt;br /&gt;&lt;br /&gt;$options = array(&lt;br /&gt;    'ResponseGroup' =&gt; 'OfferFull',&lt;br /&gt;    'MerchantId' =&gt; 'All',&lt;br /&gt;    'Condition' =&gt; 'All'&lt;br /&gt;);&lt;br /&gt;$result = $amazon-&gt;ItemLookup( 'B000ZGMF8O', $options );&lt;br /&gt;var_dump( $result );&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;これで一応価格らしきものは取得出来た。$resultは概ね以下のような配列構造になっている模様。&lt;br /&gt;(価格が書いてある部分だけ詳しく書く)&lt;br /&gt;&lt;pre&gt;       &lt;br /&gt;array(&lt;br /&gt;    'Request' =&gt; array( ... ),&lt;br /&gt;    'Item' =&gt; array(&lt;br /&gt;        0 =&gt; array(&lt;br /&gt;            'ASIN' =&gt; ...,&lt;br /&gt;            'OfferSummary' =&gt; array( ... ),&lt;br /&gt;            'Offers' =&gt; array(  &lt;br /&gt;                'TotalOffers' =&gt; ...,&lt;br /&gt;                'TotalOfferPages' =&gt; ...,&lt;br /&gt;                'Offer' =&gt; array(&lt;br /&gt;                    0 =&gt; array (&lt;br /&gt;                        'Merchant' =&gt; array( ... ),&lt;br /&gt;                        'OfferAttributes' =&gt; array( ... ),&lt;br /&gt;                        'OfferListing' =&gt; array(&lt;br /&gt;                            'OfferListingId' =&gt; ...,&lt;br /&gt;                            'ExchangeId' =&gt; ...,&lt;br /&gt;                            'Price' =&gt; array(&lt;br /&gt;                                'Amount' =&gt; '5139',&lt;br /&gt;                                'CurrencyCode' =&gt; 'JPY',&lt;br /&gt;                                'FormattedPrice' =&gt; '￥ 5,139'&lt;br /&gt;                            ),&lt;br /&gt;                            'Availability' =&gt; ...,&lt;br /&gt;                            'AvailabilityAttributes' =&gt; array( ... ),&lt;br /&gt;                            'Quantity' =&gt; ...,&lt;br /&gt;                            'IsEligibleForSuperSaverShipping' =&gt; ...&lt;br /&gt;                        )&lt;br /&gt;                    ),&lt;br /&gt;                    1 =&gt; array( ... ),&lt;br /&gt;                    2 =&gt; array( ... ),&lt;br /&gt;                    ...&lt;font color=green&gt;(店舗数だけ繰り返し)&lt;/font&gt;&lt;br /&gt;                )&lt;br /&gt;            )&lt;br /&gt;        ),&lt;br /&gt;        1 =&gt; array( ... )&lt;br /&gt;        2 =&gt; array( ... )&lt;br /&gt;        ...&lt;font color=green&gt;(商品数だけ繰り返し？(未確認、今回は１つだけ検索なので0番目のみ))&lt;/font&gt;&lt;br /&gt;    )&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;つーわけで、最初の店舗での価格は&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$result['Item'][0]['Offers']['Offer'][0]['OfferListing']['Price']['Amount']&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;みたいな感じで取得出来るようです。なげぇよ！&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ページング&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.ajaxtower.jp/ecs/page/index1.html"&gt;商品数とページ数 - ページ管理 - Amazon Web サービス&lt;/a&gt;によると、&lt;br /&gt;1度のリクエストで10件しか取得出来ないようです。実際、この例ではTotalOffersが36, TotalOfferPagesは4でした。&lt;br /&gt;11件目以降を取得するにはOfferPageオプションを指定する必要がある模様。&lt;br /&gt;&lt;br /&gt;というわけで、特定商品の全Offerを取得し配列を作り、価格を出力するソースは以下の通り。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;require_once( 'Services/Amazon.php' );&lt;br /&gt;&lt;br /&gt;$amazon = new Services_Amazon('XXX', 'YYY', 'ZZZ');&lt;br /&gt;$amazon-&gt;setLocale( 'JP' );&lt;br /&gt;    &lt;br /&gt;$options = array( &lt;br /&gt;    'ResponseGroup' =&gt; 'OfferFull',&lt;br /&gt;    'MerchantId' =&gt; 'All',&lt;br /&gt;    'Condition' =&gt; 'All',&lt;br /&gt;    'OfferPage' =&gt; 1        &lt;br /&gt;);&lt;br /&gt;                            &lt;br /&gt;$offers = array();              &lt;br /&gt;    &lt;br /&gt;do { &lt;br /&gt;    $result = $amazon-&gt;ItemLookup( 'B000ZGMF8O', $options );&lt;br /&gt;    $offers = array_merge( $offers, $result[ 'Item' ][ 0 ][ 'Offers' ][ 'Offer' ] );&lt;br /&gt;    $options['OfferPage']++;&lt;br /&gt;} while ( $result[ 'Item' ][ 0 ][ 'Offers' ][ 'TotalOfferPages' ] &amp;gt; $result[ 'Request' ][ 'ItemLookupRequest' ][ 'OfferPage' ] );&lt;br /&gt;&lt;br /&gt;foreach( $offers as $offer ) {&lt;br /&gt;    var_dump( $offer[ 'OfferListing'][ 'Price' ][ 'Amount' ] );&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;ヽ(´∀` )ノ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-8268221580964785800?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/8268221580964785800/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=8268221580964785800' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8268221580964785800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8268221580964785800'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/01/servicesamazon.html' title='Services_Amazonメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2822073645786775247</id><published>2011-01-18T23:47:00.003+09:00</published><updated>2011-01-19T00:02:56.686+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><title type='text'>クリップボード内のデータをファイルに書き出す</title><content type='html'>先日の&lt;a href="http://ichiba-blog.blogspot.com/2011/01/blog-post.html"&gt;任意のデータをクリップボードに挿入する&lt;/a&gt;機能の逆のみたいなものです。&lt;br /&gt;デバッグのお供に。&lt;br /&gt;&lt;br /&gt;以下ソース。&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;#import &amp;lt;AppKit/AppKit.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main( int argc, char *argv[] ) {&lt;br /&gt; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];&lt;br /&gt; NSPasteboard *pboard = [NSPasteboard generalPasteboard];&lt;br /&gt; NSArray *types = [pboard types];&lt;br /&gt; NSEnumerator *typesEnum = [types objectEnumerator];&lt;br /&gt; NSString *type;&lt;br /&gt;&lt;br /&gt; while ( NULL != ( type = [typesEnum nextObject] ) ) {&lt;br /&gt;  NSData *data;&lt;br /&gt;  BOOL success;&lt;br /&gt;&lt;br /&gt;  data = [pboard dataForType:type];&lt;br /&gt;  success = [data writeToFile:type&lt;br /&gt;     atomically:YES];&lt;br /&gt;  NSLog( @&amp;quot;type:%@ save %@&amp;quot;, type, ( success ? @&amp;quot;succeeded&amp;quot; : @&amp;quot;failed&amp;quot; ) );&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; [pool release];&lt;br /&gt;&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;あらかじめSarafiで適当にテキストをコピーした後、ビルドと実行。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ gcc main.m -framework Foundation -framework AppKit &amp;&amp; ./a.out&lt;br /&gt;2011-01-18 23:54:17.511 a.out[886:903] type:com.apple.webarchive save succeeded&lt;br /&gt;2011-01-18 23:54:17.514 a.out[886:903] type:Apple Web Archive pasteboard type save succeeded&lt;br /&gt;2011-01-18 23:54:17.515 a.out[886:903] type:public.rtf save succeeded&lt;br /&gt;2011-01-18 23:54:17.516 a.out[886:903] type:NeXT Rich Text Format v1.0 pasteboard type save succeeded&lt;br /&gt;2011-01-18 23:54:17.517 a.out[886:903] type:public.utf8-plain-text save succeeded&lt;br /&gt;2011-01-18 23:54:17.518 a.out[886:903] type:NSStringPboardType save succeeded&lt;br /&gt;2011-01-18 23:54:17.522 a.out[886:903] type:public.utf16-external-plain-text save succeeded&lt;br /&gt;2011-01-18 23:54:17.523 a.out[886:903] type:CorePasteboardFlavorType 0x75743136 save succeeded&lt;br /&gt;2011-01-18 23:54:17.524 a.out[886:903] type:dyn.ah62d4rv4gk81n65yru save succeeded&lt;br /&gt;2011-01-18 23:54:17.525 a.out[886:903] type:CorePasteboardFlavorType 0x7573746C save succeeded&lt;br /&gt;2011-01-18 23:54:17.528 a.out[886:903] type:com.apple.traditional-mac-plain-text save succeeded&lt;br /&gt;2011-01-18 23:54:17.529 a.out[886:903] type:CorePasteboardFlavorType 0x54455854 save succeeded&lt;br /&gt;2011-01-18 23:54:17.530 a.out[886:903] type:dyn.ah62d4rv4gk81g7d3ru save succeeded&lt;br /&gt;2011-01-18 23:54:17.531 a.out[886:903] type:CorePasteboardFlavorType 0x7374796C save succeeded&lt;br /&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Safariだとテキストのコピーだけで14種類のpboardタイプをファイルに書き出します。＞＜&lt;br /&gt;よくわからんバイナリを出力するものが多いのですが、&lt;br /&gt;例えばpublic.rtfはそのままテキストエディットで開けたりします。&lt;br /&gt;NSStringPboardTypeが一番シンプルかな。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2822073645786775247?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2822073645786775247/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2822073645786775247' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2822073645786775247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2822073645786775247'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/01/blog-post_3667.html' title='クリップボード内のデータをファイルに書き出す'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-3090642396153905061</id><published>2011-01-18T15:52:00.003+09:00</published><updated>2011-01-22T02:30:21.791+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><title type='text'>自宅鯖が落ちてた</title><content type='html'>なんか定期的に落ちるなあ。&lt;br /&gt;今回/var/log/messagesに最後に残ってたのは&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Jan 18 00:51:36 localhost automount[2835]: key ".hal-mtab" not found in map source(s).&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;でした。&lt;br /&gt;後日調べる。&lt;br /&gt;&lt;br /&gt;[1/22]&lt;br /&gt;また落ちたorz&lt;br /&gt;再起動しててブートオーダーの関係で起動画面で止まってた&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Jan 21 06:59:47 localhost dhclient: DHCPREQUEST on eth0 to 192.168.1.1 port 67&lt;br /&gt;Jan 21 06:59:47 localhost dhclient: DHCPACK from 192.168.1.1&lt;br /&gt;Jan 21 06:59:47 localhost dhclient: bound to 192.168.1.6 -- renewal in 6460 seconds.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-3090642396153905061?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/3090642396153905061/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=3090642396153905061' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3090642396153905061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3090642396153905061'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/01/blog-post_18.html' title='自宅鯖が落ちてた'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2766369732919612791</id><published>2011-01-18T02:20:00.004+09:00</published><updated>2011-01-18T03:20:50.069+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><title type='text'>libxml2でrssデータをパースする</title><content type='html'>ちょっと苦戦。&lt;br /&gt;最終的にはポッドキャストのRSSデータをパースしたいと考えています。&lt;br /&gt;テスト用データとして&lt;a href="http://www.voiceblog.jp/mutopia/rss2.0.xml"&gt;みゅ〜らじのRSS&lt;/a&gt;を調べてみると、&lt;br /&gt;音声データのURLは&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;enclosure url="http://db1.voiceblog.jp/data/mutopia/1293799134.mp3" length="20674861" type="audio/mpeg" /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;という、なかなか微妙な書かれ方をしています。&lt;br /&gt;&lt;br /&gt;今回はlibxml2を使ってこのURLを取り出してみます。&lt;br /&gt;&lt;br /&gt;libxml2の基本的な使い方は&lt;a href="http://journal.mycom.co.jp/column/iphone/008/index.html"&gt;【コラム】実践! iPhoneアプリ開発 (8) RSSリーダの作り方 (4) - libxmlでパースする | エンタープライズ | マイコミジャーナル&lt;/a&gt;を参考にしました。&lt;br /&gt;（端折り過ぎで大して役に立たんけど…)&lt;br /&gt;&lt;br /&gt;各コールバック内で文字列を出力すると、割と簡単に要素名や要素そのものは取得出来たんですが、属性(attribute)を&lt;br /&gt;C文字列として取得するのは難しかった… nb_attributesが3とかなのに1つしか出力出来なかったりとか。&lt;br /&gt;色々調べると、どうもattributesは5つが属性1つに相当するらしい。&lt;br /&gt;すなわち、nb_attributesが3ならattributesは15のポインタの配列となる模様。&lt;br /&gt;&lt;br /&gt;で、5つのポインタを調べてみると&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;0: 属性キー名&lt;br /&gt;1: null&lt;br /&gt;2: null&lt;br /&gt;3: 属性値（非null終端)&lt;br /&gt;4: 受信データの残りの文字列 ( 大抵ダブルクオーテーションで始まって受信データの最後まで続く？ )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;てな感じになってました。&lt;br /&gt;上方に書いたenclosureタグの例で言うと&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;0: url ( null終端 )&lt;br /&gt;1: null&lt;br /&gt;2: null&lt;br /&gt;3: http://db1.voiceblog.jp/data/mutopia/1292335915.mp3（非null終端なのでprintf()とかだとmp3で終わらずもっと続く)&lt;br /&gt;4: " length="20674861" type="audio/mpeg"&amp;gt;&lt;font color=green&gt;...以下略&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;という感じです。&lt;br /&gt;ひとまず&lt;a href="http://stackoverflow.com/questions/2075894/how-to-get-the-name-and-value-of-attributes-from-xml-when-using-libxml2-sax-parse"&gt;iphone - How to get the name and value of attributes from xml when using libxml2 sax parser? - Stack Overflow&lt;/a&gt;を参考にして4番目の文字列長を計算する事で属性のキーと値を取得出来るようになりました。&lt;br /&gt;&lt;br /&gt;以下ソース。&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;// main.m&lt;br /&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;#import &amp;lt;AppKit/AppKit.h&amp;gt;&lt;br /&gt;#import &amp;lt;libxml/tree.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#define kStringLengthMax (65535)&lt;br /&gt;#define _TRACE( v, l ) traceXmlChar( #v, v, l );&lt;br /&gt;&lt;br /&gt;void traceXmlChar( const char const* name, const xmlChar *var, int level );&lt;br /&gt;static void startElementCallback (&lt;br /&gt;                void *ctx,&lt;br /&gt;                const xmlChar *localname,&lt;br /&gt;                const xmlChar *prefix,&lt;br /&gt;                const xmlChar *URI,&lt;br /&gt;                int nb_namespaces,&lt;br /&gt;                const xmlChar **namespaces,&lt;br /&gt;                int nb_attributes,&lt;br /&gt;                int nb_defaulted,&lt;br /&gt;    const xmlChar **attributes&lt;br /&gt;);&lt;br /&gt;static void endElementCallback (&lt;br /&gt;                void *ctx,&lt;br /&gt;                const xmlChar *localname,&lt;br /&gt;                const xmlChar *prefix,&lt;br /&gt;                const xmlChar *URI);&lt;br /&gt;static void charactersCallback (&lt;br /&gt;                void *ctx,&lt;br /&gt;                const xmlChar *ch,&lt;br /&gt;                int len);&lt;br /&gt;&lt;br /&gt;static xmlSAXHandler gSaxHandler = {&lt;br /&gt;    NULL,            /* internalSubset */&lt;br /&gt;    NULL,            /* isStandalone   */&lt;br /&gt;    NULL,            /* hasInternalSubset */&lt;br /&gt;    NULL,            /* hasExternalSubset */&lt;br /&gt;    NULL,            /* resolveEntity */&lt;br /&gt;    NULL,            /* getEntity */&lt;br /&gt;    NULL,            /* entityDecl */&lt;br /&gt;    NULL,            /* notationDecl */&lt;br /&gt;    NULL,            /* attributeDecl */&lt;br /&gt;    NULL,            /* elementDecl */&lt;br /&gt;    NULL,            /* unparsedEntityDecl */&lt;br /&gt;    NULL,            /* setDocumentLocator */&lt;br /&gt;    NULL,            /* startDocument */&lt;br /&gt;    NULL,            /* endDocument */&lt;br /&gt;    NULL,            /* startElement*/&lt;br /&gt;    NULL,            /* endElement */&lt;br /&gt;    NULL,            /* reference */&lt;br /&gt;    charactersCallback, /* characters */&lt;br /&gt;    NULL,            /* ignorableWhitespace */&lt;br /&gt;    NULL,            /* processingInstruction */&lt;br /&gt;    NULL,            /* comment */&lt;br /&gt;    NULL,            /* warning */&lt;br /&gt;    NULL,            /* error */&lt;br /&gt;    NULL,            /* fatalError //: unused error() get all the errors */&lt;br /&gt;    NULL,            /* getParameterEntity */&lt;br /&gt;    NULL,            /* cdataBlock */&lt;br /&gt;    NULL,            /* externalSubset */&lt;br /&gt;    XML_SAX2_MAGIC,  /* initialized */&lt;br /&gt;    NULL,            /* private */&lt;br /&gt;    startElementCallback,    /* startElementNs */&lt;br /&gt;    endElementCallback,      /* endElementNs */&lt;br /&gt;    NULL,            /* serror */&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;int main( const int argc, const char const* argv[] ) {&lt;br /&gt; const NSAutoreleasePool const *pool = [[NSAutoreleasePool alloc] init];&lt;br /&gt;&lt;br /&gt; xmlParserCtxtPtr parserContext;&lt;br /&gt; parserContext = xmlCreatePushParserCtxt(&amp;amp;gSaxHandler, NULL, NULL, 0, NULL);&lt;br /&gt;&lt;br /&gt; // データファイル読み込み&lt;br /&gt; NSData *data = [NSData dataWithContentsOfFile:@&amp;quot;rss.xml&amp;quot;];&lt;br /&gt;&lt;br /&gt; // データパース処理&lt;br /&gt; xmlParseChunk( parserContext, (const char*)[data bytes], [data length], 0);&lt;br /&gt;&lt;br /&gt; [pool release];&lt;br /&gt;&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void startElementCallback (&lt;br /&gt;                void *ctx,&lt;br /&gt;                const xmlChar *localname,&lt;br /&gt;                const xmlChar *prefix,&lt;br /&gt;                const xmlChar *URI,&lt;br /&gt;                int nb_namespaces,&lt;br /&gt;                const xmlChar **namespaces,&lt;br /&gt;                int nb_attributes,&lt;br /&gt;                int nb_defaulted,&lt;br /&gt;    const xmlChar **attributes ) {&lt;br /&gt; printf( &amp;quot;startElementCallback\n&amp;quot; );&lt;br /&gt; _TRACE( localname, 1 );&lt;br /&gt; _TRACE( prefix, 1 );&lt;br /&gt; _TRACE( URI, 1 );&lt;br /&gt;&lt;br /&gt; int i;&lt;br /&gt; for ( i = 0; i &amp;lt; nb_namespaces; i++ ) {&lt;br /&gt;  _TRACE( namespaces[i], 2 );&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; for ( i = 0; i &amp;lt; nb_attributes; i++ ) {&lt;br /&gt;  char tmp[ kStringLengthMax ];&lt;br /&gt;  // http://stackoverflow.com/questions/2075894/how-to-get-the-name-and-value-of-attributes-from-xml-when-using-libxml2-sax-parse&lt;br /&gt;  int len = attributes[4] - attributes[3]; // attributes[3]のデータ長計算&lt;br /&gt;  memcpy( tmp, attributes[3], len );&lt;br /&gt;  tmp[len] = '\0'; // attributes[3]をC文字列として扱う&lt;br /&gt;  printf( &amp;quot;\t\tattributes[%d] - key:%s, value:%s\n&amp;quot;, i, attributes[0], tmp );&lt;br /&gt;  attributes += 5;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void endElementCallback (&lt;br /&gt;                void *ctx,&lt;br /&gt;                const xmlChar *localname,&lt;br /&gt;                const xmlChar *prefix,&lt;br /&gt;                const xmlChar *URI) {&lt;br /&gt; printf( &amp;quot;endElementCallback\n&amp;quot; );&lt;br /&gt; _TRACE( localname, 1 );&lt;br /&gt; _TRACE( prefix, 1 );&lt;br /&gt; _TRACE( URI, 1 );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void charactersCallback (&lt;br /&gt;                void *ctx,&lt;br /&gt;                const xmlChar *ch,&lt;br /&gt;                int len) {&lt;br /&gt; char buf[ kStringLengthMax ];&lt;br /&gt; printf( &amp;quot;charactersCallback\n&amp;quot; );&lt;br /&gt; if ( NULL != ch ) {&lt;br /&gt;  memcpy( buf, ch, len );&lt;br /&gt;  buf[len] = '\0';&lt;br /&gt;  printf( &amp;quot;\tbuf:%s\n&amp;quot;, buf); &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void traceXmlChar( const char const* name, const xmlChar *var, int level ) {&lt;br /&gt; int i;&lt;br /&gt; if ( NULL != var ) { &lt;br /&gt;  for ( i = 0; i &amp;lt; level; i++ ) {&lt;br /&gt;   putchar( '\t' );&lt;br /&gt;  }&lt;br /&gt;  printf( &amp;quot;%s:%s\n&amp;quot;, name, var );&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;ビルド。&lt;br /&gt;-Lオプションでライブラリのパスを指定する方法では上手くライブラリを指定できなかった。&lt;br /&gt;あと、-Iオプションではフルパスを指定しているが、SDKのバージョンを指定してバージョンに応じたライブラリを&lt;br /&gt;指定するような方法も有りそうな気もする。(Xcodeがその辺上手く吸収しているだけかもしれんけど。。。)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;gcc main.m -framework Foundation -framework AppKit -I/Developer/SDKs/MacOSX10.6.sdk/usr/include/libxml2/ -lxml2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;rss.xmlに予めRSSデータを入れておき、実行。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ ./a.out&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行結果。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;font color=green&gt;&lt;br /&gt;...(省略)...&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;startElementCallback&lt;br /&gt;    localname:enclosure&lt;br /&gt;        attributes[0] - key:url, value:http://db1.voiceblog.jp/data/mutopia/1293799134.mp3&lt;br /&gt;        attributes[1] - key:length, value:20674861&lt;br /&gt;        attributes[2] - key:type, value:audio/mpeg&lt;br /&gt;endElementCallback&lt;br /&gt;    localname:enclosure&lt;br /&gt;charactersCallback&lt;br /&gt;    buf:&lt;br /&gt;&lt;font color=green&gt;&lt;br /&gt;...(省略)...&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;とまぁ、こんな感じで属性を取得する事ができました。&lt;br /&gt;もうちょっと詰めればポッドキャストRSSがパース出来るようになりそうです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2766369732919612791?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2766369732919612791/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2766369732919612791' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2766369732919612791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2766369732919612791'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/01/libxml2rss.html' title='libxml2でrssデータをパースする'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-2015554236273908490</id><published>2011-01-18T01:34:00.003+09:00</published><updated>2011-01-18T01:42:28.412+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><title type='text'>AppKitでHTTPリクエスト</title><content type='html'>&lt;pre class="prettyprint"&gt;&lt;br /&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;#import &amp;lt;AppKit/AppKit.h&amp;gt; &lt;br /&gt;    &lt;br /&gt;int main( const int argc, const char const* argv[] ) {&lt;br /&gt;    const NSAutoreleasePool const *pool = [[NSAutoreleasePool alloc] init];&lt;br /&gt;                        &lt;br /&gt;    const NSData const *data = [NSURLConnection &lt;br /&gt;                        sendSynchronousRequest:&lt;br /&gt;                            [NSURLRequest requestWithURL: &lt;br /&gt;                                [NSURL URLWithString:&lt;br /&gt;                                    [NSString stringWithUTF8String: argv[1] ]&lt;br /&gt;                                ] &lt;br /&gt;                            ] &lt;br /&gt;                        returningResponse:&lt;br /&gt;                            nil&lt;br /&gt;                        error:&lt;br /&gt;                            nil &lt;br /&gt;                    ];&lt;br /&gt;    const UInt32 length = [data length];&lt;br /&gt;    const void const* bytes = [data bytes];&lt;br /&gt;    fwrite( bytes, length, 1, stdout );&lt;br /&gt;&lt;br /&gt;    [pool release];&lt;br /&gt;&lt;br /&gt;    return 0;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;ビルド。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;gcc main.m -framework Foundation -framework AppKit&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ ./a.out http://www.google.com&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;これでcurlを実行するのと似たような結果が取得出来ます。&lt;br /&gt;なお、ちゃんと'http://'付けないとデータが取得出来ないようです。&lt;br /&gt;また、いわゆる同期的な動作なのでデータ取得中はタスクが戻ってきません。&lt;br /&gt;非同期通信のケースはまた後日試してみたいと思います。&lt;br /&gt;&lt;br /&gt;[参考: &lt;a href="http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/index.html"&gt;NSURLConnection Class Reference&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-2015554236273908490?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/2015554236273908490/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=2015554236273908490' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2015554236273908490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/2015554236273908490'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/01/appkithttp.html' title='AppKitでHTTPリクエスト'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-7167338980780451017</id><published>2011-01-15T00:27:00.005+09:00</published><updated>2011-01-15T00:48:55.779+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><title type='text'>任意のデータをクリップボードに挿入する</title><content type='html'>ちょっとデバッグ用に勢いで作ってみた。&lt;br /&gt;&lt;br /&gt;ソースは以下の通り。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;// main.m&lt;br /&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;#import &amp;lt;AppKit/AppKit.h&amp;gt;&lt;br /&gt;#import &amp;lt;unistd.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#define kStringLengthMax (255)&lt;br /&gt;&lt;br /&gt;const NSString* pboardTypeFromString( const NSString* string );&lt;br /&gt;void p( void );&lt;br /&gt;&lt;br /&gt;int main( int argc, char* argv[] ) {&lt;br /&gt; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];&lt;br /&gt; NSString* type;&lt;br /&gt; int c;&lt;br /&gt;&lt;br /&gt; BOOL usesStandardDataType = false;&lt;br /&gt; char typeStr[ kStringLengthMax ];&lt;br /&gt;&lt;br /&gt; while(( c = getopt(argc, argv, &amp;quot;st:&amp;quot;)) != -1) {&lt;br /&gt;  switch( c ) {&lt;br /&gt;   case 's':&lt;br /&gt;    usesStandardDataType = true;&lt;br /&gt;    break;&lt;br /&gt;   case 't':&lt;br /&gt;    strcpy( typeStr, optarg );&lt;br /&gt;    break;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; if ( usesStandardDataType ) {&lt;br /&gt;  type = pboardTypeFromString( [NSString stringWithUTF8String:typeStr] );&lt;br /&gt;  if ( nil == type ) {&lt;br /&gt;   NSLog( @&amp;quot;standard type:%s NOT found&amp;quot;, typeStr );&lt;br /&gt;   exit( 0 );&lt;br /&gt;  } else {&lt;br /&gt;   NSLog( @&amp;quot;standard type:%s found&amp;quot;, typeStr );&lt;br /&gt;  }&lt;br /&gt; } else {&lt;br /&gt;  NSLog( @&amp;quot;type set to:%s &amp;quot;, typeStr );&lt;br /&gt;  type = [NSString stringWithUTF8String:typeStr];&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; NSPasteboard *pboard = [NSPasteboard generalPasteboard];&lt;br /&gt; [pboard clearContents];&lt;br /&gt;&lt;br /&gt; NSFileHandle *input = [NSFileHandle fileHandleWithStandardInput];&lt;br /&gt; NSData *inputData = [NSData dataWithData:[input readDataToEndOfFile]];&lt;br /&gt; &lt;br /&gt; BOOL success = [pboard setData:inputData&lt;br /&gt;       forType:type];&lt;br /&gt;&lt;br /&gt; NSLog( @&amp;quot;Replacing pasteboard %@&amp;quot;, ( success ? @&amp;quot;succeeded&amp;quot; : @&amp;quot;failed&amp;quot; ) );&lt;br /&gt;&lt;br /&gt; [pool release];&lt;br /&gt;&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;const NSString* pboardTypeFromString( const NSString* string ) {&lt;br /&gt;#define _CMP_MACRO( t ) if ( [string isEqualToString:@#t] ) return t;&lt;br /&gt; _CMP_MACRO( NSStringPboardType );&lt;br /&gt; _CMP_MACRO( NSFilenamesPboardType );&lt;br /&gt; _CMP_MACRO( NSPostScriptPboardType );&lt;br /&gt; _CMP_MACRO( NSTIFFPboardType );&lt;br /&gt; _CMP_MACRO( NSRTFPboardType );&lt;br /&gt; _CMP_MACRO( NSTabularTextPboardType );&lt;br /&gt; _CMP_MACRO( NSFontPboardType );&lt;br /&gt; _CMP_MACRO( NSRulerPboardType );&lt;br /&gt; _CMP_MACRO( NSFileContentsPboardType );&lt;br /&gt; _CMP_MACRO( NSColorPboardType );&lt;br /&gt; _CMP_MACRO( NSRTFDPboardType );&lt;br /&gt; _CMP_MACRO( NSHTMLPboardType );&lt;br /&gt; _CMP_MACRO( NSPICTPboardType );&lt;br /&gt; _CMP_MACRO( NSURLPboardType );&lt;br /&gt; _CMP_MACRO( NSPDFPboardType );&lt;br /&gt; _CMP_MACRO( NSVCardPboardType );&lt;br /&gt; _CMP_MACRO( NSFilesPromisePboardType );&lt;br /&gt; _CMP_MACRO( NSMultipleTextSelectionPboardType );&lt;br /&gt; return nil;&lt;br /&gt;#undef _CMP_MACRO&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void p( void ) {&lt;br /&gt; NSLog( @&amp;quot;pass&amp;quot; );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Makefileはこんなん。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;a.out: main.m&lt;br /&gt;    gcc main.m -framework Foundation -framework AppKit&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;使用例&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ make &amp;&amp; ./a.out -s -t NSTIFFPboardType &lt; img.tiff&lt;br /&gt;$ make &amp;&amp; ./a.out -s -t NSStringPboardType &lt; test.txt&lt;br /&gt;$ make &amp;&amp; ./a.out -t my_pboard_type &lt; data.dat&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;概要&lt;/b&gt;&lt;br /&gt;stdinの入力データをクリップボード(pasteboard)に挿入します。&lt;br /&gt;オプションを指定する事で、任意のpboardTypeを指定する事が出来ます。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;オプション&lt;/b&gt;&lt;br /&gt;-t &lt;i&gt;type&lt;/i&gt;: pboardTypeを&lt;i&gt;type&lt;/i&gt;に指定します。(必須)&lt;br /&gt;-s: 指定すると、-tの&lt;i&gt;type&lt;/i&gt;と同じ名前の&lt;a href="http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSPasteboard_Class/Reference/Reference.html#//apple_ref/doc/constant_group/Types_for_Standard_Data_Mac_OS_X_10.6_and_later_"&gt;standard pboard types&lt;/a&gt;を検索し、typeが見つかればそのpboardTypeを設定します。(省略可能)&lt;br /&gt;&lt;br /&gt;FoundationやAppKitが提供・定義しているpasteboard typeはまだ有るようだ。(i.e. &lt;a href="http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSSound_Class/Reference/Reference.html#//apple_ref/c/data/NSSoundPboardType"&gt;NSSoundPboardType&lt;/a&gt; )&lt;br /&gt;&lt;br /&gt;まぁ必要に応じてpboardTypeFromString()の中身を増やして行けば良いんじゃないでしょうか。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;今日はこの辺で！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-7167338980780451017?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/7167338980780451017/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=7167338980780451017' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7167338980780451017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7167338980780451017'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/01/blog-post.html' title='任意のデータをクリップボードに挿入する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-8189369333717986869</id><published>2011-01-15T00:13:00.002+09:00</published><updated>2011-01-15T00:21:58.276+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><title type='text'>obj-c(Foundation Framework)でSTDINからデータ入力</title><content type='html'>[NSFileHandle fileHandleWithStandardInput]を使う。&lt;br /&gt;[参考: &lt;a href="http://caiustheory.com/read-standard-input-using-objective-c"&gt;Read standard input using Objective-C - Caius Theory&lt;/a&gt;]&lt;br /&gt;NSDataに入れたい時は上記サイトのコードそのままでOK。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;    NSFileHandle *input = [NSFileHandle fileHandleWithStandardInput];&lt;br /&gt;    NSData *inputData = [NSData dataWithData:[input readDataToEndOfFile]];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;[参考: &lt;a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSFileHandle_Class/Reference/Reference.html%23//apple_ref/doc/uid/TP40003659"&gt;NSFileHandle Class Reference - fileHandleWithStandardInput&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;他にも&lt;a href="http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSFileHandle_Class/Reference/Reference.html#//apple_ref/occ/clm/NSFileHandle/fileHandleWithStandardError"&gt;fileHandleWithStandardError&lt;/a&gt;, &lt;a href="http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSFileHandle_Class/Reference/Reference.html#//apple_ref/occ/clm/NSFileHandle/fileHandleWithStandardOutput"&gt;fileHandleWithStandardOutput&lt;/a&gt;が使用出来ます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-8189369333717986869?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/8189369333717986869/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=8189369333717986869' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8189369333717986869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8189369333717986869'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/01/obj-cfoundation-frameworkstdin.html' title='obj-c(Foundation Framework)でSTDINからデータ入力'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-8929580744135867947</id><published>2011-01-05T17:27:00.002+09:00</published><updated>2011-01-05T17:44:14.802+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>CentOSにPHP 5.3をインストールメモ</title><content type='html'>参考: &lt;a href="http://www.natzworks.com/digital/2010/444.html"&gt;CentOS 5.5 に PHP 5.3 をインストール&lt;/a&gt;&lt;br /&gt;上記のサイトの通りで問題無さげ。&lt;br /&gt;&lt;br /&gt;表示内容をメモし忘れたので実行したコマンドだけ載せます。orz&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# rpm -ivh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm&lt;br /&gt;# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm&lt;br /&gt;# yum info php --enablerepo=remi&lt;br /&gt;# yum remove php php-* mysql&lt;br /&gt;# yum install mysql php php-cli php-common php-devel php-gd php-ldap php-mbstring php-mysql php-pdo php-pear php-pgsql php-xml MySQL-python libdbi-dbd-mysql mysql-server --enablerepo=remi&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;あと一応daemonの再起動。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# service mysqld restart&lt;br /&gt;# service httpd restart&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-8929580744135867947?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/8929580744135867947/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=8929580744135867947' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8929580744135867947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8929580744135867947'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/01/centosphp-53.html' title='CentOSにPHP 5.3をインストールメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-1631503269677354976</id><published>2011-01-05T14:54:00.002+09:00</published><updated>2011-01-05T16:29:20.199+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>mysqlメモ</title><content type='html'>&lt;b&gt;起動:&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# service mysqld start&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DB作成/DB削除&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# mysql -uroot&lt;br /&gt;mysql&gt; CREATE DATABASE hoge;&lt;br /&gt;mysql&gt; DROP DATABASE hoge;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ダンプファイル読み込み:&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# mysql -uroot hoge &lt; mysqldump.dump&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ユーザ追加:&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mysql&gt; GRANT ALL ON *.* TO user@host;&lt;br /&gt;mysql&gt; SET PASSWORD FOR user@host  = PASSWORD('password');&lt;br /&gt;mysql&gt; FLUSH PRIVILEGES;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;参考: &lt;a href="http://webos-goodies.jp/archives/50596138.html"&gt;MySQL のユーザー管理 - WebOS Goodies&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;クライアント文字コード設定&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# vim /etc/my.cnf&lt;br /&gt;// 以下を追加&lt;br /&gt;&lt;br /&gt;[client]&lt;br /&gt;default-character-set=utf8&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;文字コードを指定してDB作成&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mysql&gt; CREATE DATABASE hoge DEFAULT CHARACTER SET utf8;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;DBも文字コードはutf-8でもクライアントの文字コードがlatin1とかになってると&lt;br /&gt;mysqlプロンプト上では文字化けしてしまう模様。&lt;br /&gt;(webから叩くと文字化けしてなかったりと、若干混乱させられる)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-1631503269677354976?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/1631503269677354976/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=1631503269677354976' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1631503269677354976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1631503269677354976'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/01/mysql.html' title='mysqlメモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-8930173427569951599</id><published>2011-01-03T19:38:00.004+09:00</published><updated>2011-09-25T16:20:22.313+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><title type='text'>sshを公開鍵認証にする</title><content type='html'>パスワード認証から公開鍵認証に切り替えたいような状況を想定。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;鍵作成&lt;/b&gt;&lt;br /&gt;mac側(クライアント)で作りました。&lt;br /&gt;( &lt;font color=blue&gt;青字&lt;/font&gt;: ユーザの入力内容, &lt;font color=purple&gt;紫字&lt;/font&gt;: 環境やユーザによって変わりそうな部分, &lt;font color=green&gt;緑字&lt;/font&gt;: その他コメント )&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ &lt;font color=blue&gt;ssh-keygen -t rsa&lt;/font&gt;&lt;br /&gt;Generating public/private rsa key pair.&lt;br /&gt;Enter file in which to save the key (/Users/&lt;font color=purple&gt;user&lt;/font&gt;/.ssh/id_rsa): &lt;font color=blue&gt;[return]&lt;/font&gt;&lt;br /&gt;Enter passphrase (empty for no passphrase): &lt;font color=blue&gt;[パスワードを入力&amp;return]&lt;/font&gt;&lt;br /&gt;Enter same passphrase again: &lt;font color=blue&gt;[パスワードを入力&amp;return]&lt;/font&gt;&lt;br /&gt;Your identification has been saved in /Users/&lt;font color=purple&gt;user&lt;/font&gt;/.ssh/id_rsa.&lt;br /&gt;Your public key has been saved in /Users/&lt;font color=purple&gt;user&lt;/font&gt;/.ssh/id_rsa.pub.&lt;br /&gt;The key fingerprint is:&lt;br /&gt;&lt;font color=purple&gt;xx:xx:xx:xx:xx:xx:xx:x:xx:xx:xx:xx:xx:xx:xx:xx user@host&lt;/font&gt;&lt;br /&gt;The key's randomart image is:&lt;br /&gt;+--[ RSA 2048]----+&lt;br /&gt;&lt;font color=green&gt;(中略)&lt;/font&gt;&lt;br /&gt;+-----------------+&lt;br /&gt;$ &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;サーバに公開鍵をコピーしてログイン(パスワード認証)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ &lt;font color=blue&gt;scp ~/.ssh/id_rsa.pub user@server:&lt;/font&gt;&lt;br /&gt;$ &lt;font color=blue&gt;ssh user@server&lt;/font&gt;&lt;br /&gt;user@userver's password:&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;サーバ側で公開鍵を登録する。パーミッションが600または400になっていない場合は変更する。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;server $ &lt;font color=blue&gt;cat id_rsa.pub &gt;&gt; .ssh/authorized_keys&lt;/font&gt;&lt;br /&gt;server $ &lt;font color=blue&gt;chmod 600 .ssh/authorized_keys&lt;/font&gt;&lt;br /&gt;server $ &lt;font color=blue&gt;rm id_rsa.pub&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;一旦ログアウトし、秘密鍵を利用してログインし直す。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;server $ &lt;font color=blue&gt;exit&lt;/font&gt;&lt;br /&gt;$ &lt;font color=blue&gt;ssh -t ~/.ssh/id_rsa user@server&lt;/font&gt;&lt;br /&gt;&lt;font color=green&gt;(Macの場合はキーチェーンにパスフレーズを入力するダイアログが表示される)&lt;/font&gt;&lt;br /&gt;server $&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;その後、rootでsshdの設定を変更する。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;server $ &lt;font color=blue&gt;su -&lt;/font&gt;&lt;br /&gt;Password:&lt;br /&gt;server # &lt;font color=blue&gt;vim /etc/ssh/sshd_config&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color=green&gt;sshd_configのPasswordAuthentication yes&lt;br /&gt;を&lt;br /&gt;PasswordAuthentication no&lt;br /&gt;に変更して保存&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;# &lt;font color=blue&gt;service sshd reload&lt;/font&gt;&lt;br /&gt;Reloading sshd:                                            [  OK  ]&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;参考: &lt;a href="http://www.nina.jp/server/slackware/openssh/sshd_config.html"&gt;sshd の設定（sshd_config）&lt;/a&gt;&lt;br /&gt;参考: &lt;a href="http://www.nabe.bne.jp/linux/ssh.html"&gt;SSH で公開鍵認証を行う&lt;/a&gt;&lt;br /&gt;参考: &lt;a href="http://www-net.nifs.ac.jp/lnas/manual/man-sshrsa.html"&gt;SSH公開鍵認証手続き&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-8930173427569951599?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/8930173427569951599/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=8930173427569951599' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8930173427569951599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8930173427569951599'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/01/ssh.html' title='sshを公開鍵認証にする'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-961107206154091178</id><published>2011-01-03T17:17:00.004+09:00</published><updated>2011-01-03T17:54:52.880+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='private'/><title type='text'>2011賀正</title><content type='html'>あけましておめでとうございます。&lt;br /&gt;今年も宜しくお願い致します。&lt;br /&gt;&lt;br /&gt;えー、早速&lt;a href="http://ichiba-blog.blogspot.com/2010/01/blog-post.html"&gt;前年&lt;/a&gt;の目標を振り返ってみたいと思います。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;gt; 何かソフト作る&lt;/b&gt;&lt;br /&gt;結果: ×&lt;br /&gt;iPhone用つららは完成させられませんでした。。。&lt;br /&gt;が、今月中に一応ソース公開までするつもりですよ！&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;gt; 北海道マラソン(フル)完走する&lt;/b&gt;&lt;br /&gt;結果: ×&lt;br /&gt;申し込み前に締切られて参加すらできませんでした。orz&lt;br /&gt;札幌マラソンも同様。orzorzorz&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;gt; 来年(2011)の冬コミに参加する(事が出来るようにCD作る)&lt;/b&gt;&lt;br /&gt;結果: ×&lt;br /&gt;MuToPiA用に2曲作ったという意味では割と健闘しましたが、&lt;br /&gt;CDを作るまでには至りませんでした。。。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;gt; 引っ越す&lt;/b&gt;&lt;br /&gt;結果: ×&lt;br /&gt;諸事情によりD取得までは居ようと思います。。。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;gt; 嫁探す&lt;/b&gt;&lt;br /&gt;結果: ×&lt;br /&gt;何もしていません。orz&lt;br /&gt;もうどうでも良いや感が少し…。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;全部ダメじゃねーか！&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;はいはい。というわけで今年の目標です。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;D取得する&lt;/b&gt;&lt;br /&gt;今年で決着を付けるつもりでおります。&lt;br /&gt;つーか取得の見込みが付くまで休もうかとも思ってます。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;つららを3D化する&lt;/b&gt;&lt;br /&gt;まぁつららは&lt;a href="http://www.amazon.co.jp/gp/product/4844328085?ie=UTF8&amp;tag=urisawa-22&amp;linkCode=as2&amp;camp=247&amp;creative=7399&amp;creativeASIN=4844328085"&gt;OpenGLで作るiPhone SDKゲームプログラミング&lt;/a&gt;&lt;img src="http://www.assoc-amazon.jp/e/ir?t=urisawa-22&amp;l=as2&amp;o=9&amp;a=4844328085" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;を参考にして作ってるんですが、&lt;br /&gt;今は前半の2Dの部分だけしか読んでないので、後半の部分を勉強しながら3D化(というかポリゴン化)しようかなと思ってます。&lt;br /&gt;&lt;br /&gt;これは割とイージーな目標のはず。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ふたば学園祭に参加してみたい&lt;/b&gt;&lt;br /&gt;GW辺りに行われている&lt;a href="http://futaba-only.net/"&gt;ふたば学園祭&lt;/a&gt;に参加したいんですが…&lt;br /&gt;ふたばに関係有る創作物とか何か作れるんだろうか…(^^;;&lt;br /&gt;全く思いつかない状態。&lt;br /&gt;締め切りは３月下旬なので、それまでに目処が付けば応募してみます。&lt;br /&gt;&lt;br /&gt;これはまぁ、もしネタが有れば的な感じです。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;音系iPhoneアプリを作ってApp Storeで公開する&lt;/b&gt;&lt;br /&gt;iPhone開発の勉強がてら作る予定です。音はあまり関係ないかもしれない…&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Macアプリなんか作って公開する&lt;/b&gt;&lt;br /&gt;今年は細々したものを作ってスキルアップとノウハウの蓄積を図りたいと思っています。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;なんかなんちゃってwebサービス的な事ものを公開する&lt;/b&gt;&lt;br /&gt;たぶんものすごくニッチなものになると思います。&lt;br /&gt;せっかくレンタル鯖を使い始めたので有効活用したいですしね。&lt;br /&gt;twitter botの開発のおかげで結構瞬発力付いてきた実感があるので応用したいというのも理由の１つです。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ブログのアクセス数が 2000 sessions/month になるよう目指す&lt;/b&gt;&lt;br /&gt;11月から大量に書くようになりましたが、12月は1000弱でした。&lt;br /&gt;この調子で上げていきたいです。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;札幌マラソン出る&lt;/b&gt;&lt;br /&gt;昨年は全く走らなかったので、今年はしっかり意識して出場しようと思います。&lt;br /&gt;で、来年に北海道マラソン(フル)に出たいなと。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;来年(2012)の冬コミに参加する(事が出来るようにCD作る)&lt;/b&gt;&lt;br /&gt;Reason 5のおかげで理想と現実のギャップがやや縮んだ実感が有るので、&lt;br /&gt;なんとか頑張ってみたいなぁ。と&lt;br /&gt;つーかいい加減何年も脳内に有るネタをアウトプットしてしまいたいってのも有ります。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;メガネ買う&lt;/b&gt;&lt;br /&gt;視力が落ちて辛い&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ひとまずこんな所でしょうか。&lt;br /&gt;というわけで、今年も宜しくお願い致します。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-961107206154091178?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/961107206154091178/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=961107206154091178' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/961107206154091178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/961107206154091178'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2011/01/2011.html' title='2011賀正'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-9119178597892781351</id><published>2010-12-23T16:55:00.002+09:00</published><updated>2010-12-23T17:13:37.855+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='iptables'/><title type='text'>iptables最低限</title><content type='html'>入力はsshとsmtpだけ。あとは接続が確立しているパケットのみ許可&lt;br /&gt;(sshのポートはxxx)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# iptables -A INPUT -p tcp --dport 25 -j ACCEPT&lt;br /&gt;# iptables -A INPUT -p tcp --dport xxx -j ACCEPT&lt;br /&gt;# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;# iptables -A INPUT -p all -j REJECT&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;iptables -Lでの出力のINPUT部&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Chain INPUT (policy ACCEPT)&lt;br /&gt;target     prot opt source               destination         &lt;br /&gt;ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:smtp &lt;br /&gt;ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:xxx&lt;br /&gt;ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED &lt;br /&gt;REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;ひとまずこれで様子見。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-9119178597892781351?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/9119178597892781351/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=9119178597892781351' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/9119178597892781351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/9119178597892781351'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/iptables.html' title='iptables最低限'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-4674973395565419045</id><published>2010-12-23T16:21:00.003+09:00</published><updated>2010-12-23T17:06:36.073+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><title type='text'>CentOSでsshdのポート番号変更</title><content type='html'>sshのポート番号を変更するには、sshd_configファイル内のPortという項目を設定します。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# vim /etc/ssh/sshd_config&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ポート番号をxxxに設定したい場合は以下の通り。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Port xxx&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;その後、sshdの設定を再読み込み。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# service sshd reload&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;reloadが無ければrestartまたはstopとstartでしょうかね。&lt;br /&gt;reload, restartではssh接続は切断されませんでした。&lt;br /&gt;&lt;br /&gt;続いてiptables。上記のポートへのtcp通信を許可します。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# iptables -I RH-Firewall-1-INPUT 10 -p tcp --dport xxx -j ACCEPT&lt;br /&gt;# service iptables save&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;サーバ側の設定は以上です。&lt;br /&gt;クライアント側から接続できるか確認します。&lt;br /&gt;ポート番号は-pスイッチで指定します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ ssh -p xxx to.server&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-4674973395565419045?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/4674973395565419045/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=4674973395565419045' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4674973395565419045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4674973395565419045'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/centossshd.html' title='CentOSでsshdのポート番号変更'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-3991278961977517501</id><published>2010-12-20T21:24:00.002+09:00</published><updated>2010-12-20T21:28:48.274+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'>CentOSでvimが入ってないような場合</title><content type='html'>viを実行するとvimが起動するような環境で、&lt;br /&gt;vim上にて:syntax onにしても色が付かない場合、&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# yum install vim-enhanced&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;とするとカラーシンタックスが使えるvimがインストールされます。&lt;br /&gt;[参考: &lt;a href="http://www.ai.cs.kobe-u.ac.jp/~a.nakasuga/document/memo.html"&gt;MEMO&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-3991278961977517501?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/3991278961977517501/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=3991278961977517501' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3991278961977517501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3991278961977517501'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/centosvim.html' title='CentOSでvimが入ってないような場合'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-7671687109929038939</id><published>2010-12-20T18:02:00.004+09:00</published><updated>2010-12-20T18:59:37.489+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>phpでAmazon Advertising APIを利用して商品検索メモ</title><content type='html'>いや別にアフェをしようとしているわけではなく、以前からちょっとやってみたかったので。&lt;br /&gt;&lt;br /&gt;検索した所、PHPならPEARの&lt;a href="http://pear.php.net/package/Services_Amazon/docs/0.8.0/li_Services_Amazon.html"&gt;Services_Amazon&lt;/a&gt;を使うのが簡単そう。&lt;br /&gt;[参考:&lt;a href="http://d.hatena.ne.jp/p4life/20090510/1241954889"&gt; Amazon Product Advertising API への対応（PHP版） - もやし日記&lt;/a&gt;&lt;br /&gt;つーか、&lt;a href="http://aws.amazon.com/jp/"&gt;Amazon Web Services&lt;/a&gt;のサイトが非常に分かりにくい。&lt;br /&gt;多分exampleコードとか、ガイドとかもほとんど役に立たないのではないでしょうか。。。&lt;br /&gt;&lt;br /&gt;つーわけでインストール。PEAR自体入ってなかったのでそこから。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# &lt;font color=blue&gt;yum install pear&lt;/font&gt;&lt;br /&gt;# &lt;font color=blue&gt;pear install Services_Amazon&lt;/font&gt;&lt;br /&gt;Failed to download pear/Services_Amazon within preferred state "stable", latest release is version 0.8.0, stability "beta", use "channel://pear.php.net/Services_Amazon-0.8.0" to install&lt;br /&gt;install failed&lt;br /&gt;# &lt;font color=blue&gt;pear install channel://pear.php.net/Services_Amazon-0.8.0&lt;/font&gt;&lt;font color=red&gt;(betaなのでchannnelを直接指定しろと言われたので指定)&lt;/font&gt;&lt;br /&gt;WARNING: "pear/HTTP_Request" is deprecated in favor of "pear/HTTP_Request2"&lt;br /&gt;Failed to download pear/XML_Serializer within preferred state "stable", latest release is version 0.20.2, stability "beta", use "channel://pear.php.net/XML_Serializer-0.20.2" to install&lt;br /&gt;Did not download optional dependencies: pear/Cache, use --alldeps to download automatically&lt;br /&gt;WARNING: "pear/Net_URL" is deprecated in favor of "pear/Net_URL2"&lt;br /&gt;pear/Services_Amazon requires package "pear/XML_Serializer" (version &gt;= 0.17.0)&lt;br /&gt;pear/Services_Amazon can optionally use package "pear/Cache"&lt;br /&gt;downloading HTTP_Request-1.4.4.tgz ...&lt;br /&gt;Starting to download HTTP_Request-1.4.4.tgz (17,109 bytes)&lt;br /&gt;......done: 17,109 bytes&lt;br /&gt;downloading Net_URL-1.0.15.tgz ...&lt;br /&gt;Starting to download Net_URL-1.0.15.tgz (6,303 bytes)&lt;br /&gt;...done: 6,303 bytes&lt;br /&gt;downloading Net_Socket-1.0.10.tgz ...&lt;br /&gt;Starting to download Net_Socket-1.0.10.tgz (5,429 bytes)&lt;br /&gt;...done: 5,429 bytes&lt;br /&gt;install ok: channel://pear.php.net/Net_URL-1.0.15&lt;br /&gt;install ok: channel://pear.php.net/Net_Socket-1.0.10&lt;br /&gt;install ok: channel://pear.php.net/HTTP_Request-1.4.4&lt;br /&gt;# &lt;font color=blue&gt;pear install --alldeps channel://pear.php.net/Services_Amazon-0.8.0&lt;/font&gt;&lt;font color=red&gt;(必須パッケージ以外は無視したと言われたので--alldepsを付加)&lt;/font&gt;&lt;br /&gt;WARNING: "pear/HTTP_Request" is deprecated in favor of "pear/HTTP_Request2"&lt;br /&gt;Failed to download pear/XML_Serializer within preferred state "stable", latest release is version 0.20.2, stability "beta", use "channel://pear.php.net/XML_Serializer-0.20.2" to install&lt;br /&gt;WARNING: "pear/HTTP_Request" is deprecated in favor of "pear/HTTP_Request2"&lt;br /&gt;pear/Services_Amazon requires package "pear/XML_Serializer" (version &gt;= 0.17.0)&lt;br /&gt;downloading Cache-1.5.6.tgz ...&lt;br /&gt;Starting to download Cache-1.5.6.tgz (31,384 bytes)&lt;br /&gt;.........done: 31,384 bytes&lt;br /&gt;install ok: channel://pear.php.net/Cache-1.5.6&lt;br /&gt;# &lt;font color=blue&gt;pear install --alldeps channel://pear.php.net/XML_Serializer-0.20.2&lt;/font&gt;&lt;font color=red&gt;(XML_Serializeがbetaなのでchannelを直接指定)&lt;/font&gt;&lt;br /&gt;downloading XML_Serializer-0.20.2.tgz ...&lt;br /&gt;Starting to download XML_Serializer-0.20.2.tgz (35,634 bytes)&lt;br /&gt;.........done: 35,634 bytes&lt;br /&gt;downloading XML_Util-1.2.1.tgz ...&lt;br /&gt;Starting to download XML_Util-1.2.1.tgz (17,729 bytes)&lt;br /&gt;...done: 17,729 bytes&lt;br /&gt;downloading XML_Parser-1.3.4.tgz ...&lt;br /&gt;Starting to download XML_Parser-1.3.4.tgz (16,040 bytes)&lt;br /&gt;...done: 16,040 bytes&lt;br /&gt;install ok: channel://pear.php.net/XML_Util-1.2.1&lt;br /&gt;install ok: channel://pear.php.net/XML_Parser-1.3.4&lt;br /&gt;install ok: channel://pear.php.net/XML_Serializer-0.20.2&lt;br /&gt;# &lt;font color=blue&gt;pear list&lt;/font&gt;&lt;br /&gt;INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET:&lt;br /&gt;=========================================&lt;br /&gt;PACKAGE          VERSION STATE&lt;br /&gt;Archive_Tar      1.3.2   stable&lt;br /&gt;Cache            1.5.6   stable&lt;br /&gt;Console_Getopt   1.2.3   stable&lt;br /&gt;HTTP_Request     1.4.4   stable&lt;br /&gt;Net_Socket       1.0.10  stable&lt;br /&gt;Net_URL          1.0.15  stable&lt;br /&gt;PEAR             1.9.1   stable&lt;br /&gt;Structures_Graph 1.0.2   stable&lt;br /&gt;XML_Parser       1.3.4   stable&lt;br /&gt;XML_RPC          1.5.1   stable&lt;br /&gt;XML_Serializer   0.20.2  beta&lt;br /&gt;XML_Util         1.2.1   stable&lt;br /&gt;# &lt;font color=blue&gt;pear install --alldeps channel://pear.php.net/Services_Amazon-0.8.0&lt;/font&gt;&lt;font color=red&gt;(Services_Amazonが入ってないので再度install。orz)&lt;/font&gt;&lt;br /&gt;WARNING: "pear/HTTP_Request" is deprecated in favor of "pear/HTTP_Request2"&lt;br /&gt;downloading Services_Amazon-0.8.0.tgz ...&lt;br /&gt;Starting to download Services_Amazon-0.8.0.tgz (20,992 bytes)&lt;br /&gt;........done: 20,992 bytes&lt;br /&gt;install ok: channel://pear.php.net/Services_Amazon-0.8.0&lt;br /&gt;# &lt;font color=blue&gt;pear list&lt;/font&gt;&lt;br /&gt;INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET:&lt;br /&gt;=========================================&lt;br /&gt;PACKAGE          VERSION STATE&lt;br /&gt;Archive_Tar      1.3.2   stable&lt;br /&gt;Cache            1.5.6   stable&lt;br /&gt;Console_Getopt   1.2.3   stable&lt;br /&gt;HTTP_Request     1.4.4   stable&lt;br /&gt;Net_Socket       1.0.10  stable&lt;br /&gt;Net_URL          1.0.15  stable&lt;br /&gt;PEAR             1.9.1   stable&lt;br /&gt;Services_Amazon  0.8.0   beta&lt;br /&gt;Structures_Graph 1.0.2   stable&lt;br /&gt;XML_Parser       1.3.4   stable&lt;br /&gt;XML_RPC          1.5.1   stable&lt;br /&gt;XML_Serializer   0.20.2  beta&lt;br /&gt;XML_Util         1.2.1   stable&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;でServices_Amazonがインストールされた事を確認。&lt;br /&gt;続いてServices_Amazonで商品を検索してみます。&lt;br /&gt;ドキュメントに有った&lt;a href="http://pear.php.net/package/Services_Amazon/docs/0.8.0/Services_Amazon/Services_Amazon.html#methodItemSearch"&gt;例題コード&lt;/a&gt;をほぼそのままパチる&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;// a.php&lt;br /&gt;require_once( 'Services/Amazon.php' );&lt;br /&gt;&lt;br /&gt;// XXX: access key id, YYY: secret access key, ZZZ: associate tag( tracking id )&lt;br /&gt;$amazon = new Services_Amazon('XXX', 'YYY', 'ZZZ');&lt;br /&gt;&lt;br /&gt;$options = array();&lt;br /&gt;$options['Keywords'] = 'sushi';&lt;br /&gt;$options['Sort'] = 'salesrank';&lt;br /&gt;$options['ResponseGroup'] = 'ItemIds,ItemAttributes,Images';&lt;br /&gt;&lt;br /&gt;$result = $amazon-&gt;ItemSearch('Books', $options);&lt;br /&gt;&lt;br /&gt;var_dump( $result );&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;実行と実行結果。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ php a.php&lt;br /&gt;array(4) {&lt;br /&gt;  ["Request"]=&gt;&lt;br /&gt;  array(2) {&lt;br /&gt;    ["IsValid"]=&gt;&lt;br /&gt;    string(4) "True"&lt;br /&gt;    ["ItemSearchRequest"]=&gt;&lt;br /&gt;    array(8) {&lt;br /&gt;      ["Condition"]=&gt;&lt;br /&gt;      string(3) "New"&lt;br /&gt;      ["DeliveryMethod"]=&gt;&lt;br /&gt;      string(4) "Ship"&lt;br /&gt;      ["Keywords"]=&gt;&lt;br /&gt;      string(5) "sushi"&lt;br /&gt;      ["MerchantId"]=&gt;&lt;br /&gt;      string(6) "Amazon"&lt;br /&gt;      ["ResponseGroup"]=&gt;&lt;br /&gt;      array(3) {&lt;br /&gt;        [0]=&gt;&lt;br /&gt;        string(7) "ItemIds"&lt;br /&gt;        [1]=&gt;&lt;br /&gt;        string(14) "ItemAttributes"&lt;br /&gt;        [2]=&gt;&lt;br /&gt;        string(6) "Images"&lt;br /&gt;      }&lt;br /&gt;      ["ReviewSort"]=&gt;&lt;br /&gt;      string(15) "-SubmissionDate"&lt;br /&gt;      ["SearchIndex"]=&gt;&lt;br /&gt;      string(5) "Books"&lt;br /&gt;      ["Sort"]=&gt;&lt;br /&gt;      string(9) "salesrank"&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  ["TotalResults"]=&gt;&lt;br /&gt;  string(3) "819"&lt;br /&gt;  ["TotalPages"]=&gt;&lt;br /&gt;  string(2) "82"&lt;br /&gt;  ["Item"]=&gt; .... &lt;font color=red&gt;(以下略)&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;と、非常に簡単にAdvertising APIを利用する事ができました。ヽ(´∀` )ノ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-7671687109929038939?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/7671687109929038939/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=7671687109929038939' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7671687109929038939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7671687109929038939'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/phpamazon-advertising-api.html' title='phpでAmazon Advertising APIを利用して商品検索メモ'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-6106065314189865507</id><published>2010-12-15T17:07:00.002+09:00</published><updated>2010-12-15T17:14:59.171+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>postgresqlで割り算</title><content type='html'>割り算には'/'演算子が使用可能。&lt;br /&gt;整数型の割り算だと計算結果が丸められてしまうので、&lt;br /&gt;必要に応じてdecimal型など小数を扱える型にキャストする。&lt;br /&gt;精度が必要なければrealなどでも可。&lt;br /&gt;[参考:&lt;a href="http://www.dbonline.jp/postgresql/type/index1.html"&gt;数値データ型 - データ型 - PostgreSQLの使い方&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;hoge=# select 10/30;&lt;br /&gt; ?column? &lt;br /&gt;----------&lt;br /&gt;        0&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;hoge=#SELECT CAST( 10 AS dec ) / CAST( 30 AS dec );&lt;br /&gt;        ?column?        &lt;br /&gt;------------------------&lt;br /&gt; 0.33333333333333333333&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;hoge=# select CAST( 10 AS real ) / CAST( 30 AS real );&lt;br /&gt; ?column? &lt;br /&gt;----------&lt;br /&gt; 0.333333&lt;br /&gt;(1 row)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-6106065314189865507?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/6106065314189865507/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=6106065314189865507' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6106065314189865507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6106065314189865507'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/postgresql.html' title='postgresqlで割り算'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-6094295277585522655</id><published>2010-12-15T15:36:00.002+09:00</published><updated>2010-12-15T15:48:25.023+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>parse_ini_fileでダブルクオーテーションがエスケープされる件</title><content type='html'>&lt;a href="http://www.php.net/manual/ja/function.parse-ini-file.php"&gt;parse_ini_file&lt;/a&gt;はダブルクオーテーションを頑にエスケープしてしまう模様。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;; hogeにfugaが代入される&lt;br /&gt;hoge = "fuga" ; &lt;br /&gt;&lt;br /&gt;; hogeにfugahagoが代入される(ダブルクオーテーションが消される)&lt;br /&gt;hoge = "fuga"hago""&lt;br /&gt;&lt;br /&gt;; hogeにfuga\hago\が代入される(ダブルクオーテーションが消され、バックスラッシュは特にエスケープされない)&lt;br /&gt;hoge = "fuga\"hago\""&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;回避策としてはphpファイル内にてdefineでダブルクオーテーションに相当する文字列を定義して&lt;br /&gt;.iniファイル内にその文字列を書く事で実現出来るらしい。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;参考:&lt;/b&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.php.net/manual/en/function.parse-ini-file.php#70847"&gt;PHP: parse_ini_file - Manual&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.asgrim.com/2010/03/01/double-quotes-in-ini-files-loaded-with-parse_ini_file/"&gt;James Titcumb  &amp;raquo; Blog Archive   &amp;raquo; Double quotes in INI files loaded with parse_ini_file &lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;が、非常に面倒くさい＞＜&lt;br /&gt;場合によってはparse_ini_fileを使わない方が良いような気がする...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-6094295277585522655?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/6094295277585522655/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=6094295277585522655' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6094295277585522655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6094295277585522655'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/parseinifile.html' title='parse_ini_fileでダブルクオーテーションがエスケープされる件'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-3974241874818683463</id><published>2010-12-06T17:28:00.003+09:00</published><updated>2010-12-06T17:36:38.528+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreMIDI'/><title type='text'>CoreMIDIでMIDIデバイスの入出力源を取得する</title><content type='html'>前回に引き続き、UM-1を接続しています。&lt;br /&gt;今回は入出力源(source, destination)を取得します。&lt;br /&gt;&lt;br /&gt;以下ソース。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;#import &amp;lt;CoreMIDI/MIDIServices.h&amp;gt;&lt;br /&gt;&lt;br /&gt;OSStatus getMIDIDeviceOfName( MIDIDeviceRef *outDeviceRef, const CFStringRef inName );&lt;br /&gt;void dumpMIDIObjectRef( const MIDIObjectRef *inObjectRef );&lt;br /&gt;inline bool CFStringEqualsToString( const CFStringRef str1, const CFStringRef str2 );&lt;br /&gt;&lt;br /&gt;int main( void ) {&lt;br /&gt; NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];&lt;br /&gt;&lt;br /&gt; MIDIDeviceRef deviceRef;&lt;br /&gt; UInt32 i;&lt;br /&gt; UInt32 numEntities;&lt;br /&gt; OSStatus err;&lt;br /&gt;&lt;br /&gt; err = getMIDIDeviceOfName( &amp;amp;deviceRef, CFSTR( &amp;quot;UM-1&amp;quot; ) );&lt;br /&gt;&lt;br /&gt; numEntities = MIDIDeviceGetNumberOfEntities( deviceRef );&lt;br /&gt; NSLog( @&amp;quot;numEntities:%lu&amp;quot;, numEntities );&lt;br /&gt;&lt;br /&gt; for ( i = 0; i &amp;lt; numEntities; i++ ) {&lt;br /&gt;  MIDIEntityRef entityRef;&lt;br /&gt;  MIDIEndpointRef source, destination;&lt;br /&gt;  UInt32 j, numSources, numDestinations;&lt;br /&gt;&lt;br /&gt;  NSLog( @&amp;quot;entity index:%lu&amp;quot;, i );&lt;br /&gt;  entityRef = MIDIDeviceGetEntity( deviceRef, i );&lt;br /&gt;&lt;br /&gt;  numSources = MIDIEntityGetNumberOfSources( entityRef );&lt;br /&gt;  NSLog( @&amp;quot;numSources:%lu&amp;quot;, numSources );&lt;br /&gt;&lt;br /&gt;  for ( j = 0; j &amp;lt; numSources; j++ ) {&lt;br /&gt;   source = MIDIEntityGetSource( entityRef, i );&lt;br /&gt;   dumpMIDIObjectRef( (MIDIObjectRef*)&amp;amp;source );&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  numDestinations = MIDIEntityGetNumberOfDestinations( entityRef );&lt;br /&gt;  NSLog( @&amp;quot;numDestinations:%lu&amp;quot;, numDestinations );&lt;br /&gt;&lt;br /&gt;  for ( j = 0; j &amp;lt; numDestinations; j++ ) {&lt;br /&gt;   source = MIDIEntityGetDestination( entityRef, i );&lt;br /&gt;   dumpMIDIObjectRef( (MIDIObjectRef*)&amp;amp;source );&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; [pool release];&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;OSStatus getMIDIDeviceOfName( MIDIDeviceRef *outDeviceRef, const CFStringRef inName ) {&lt;br /&gt; const UInt32 numDevices = MIDIGetNumberOfDevices();&lt;br /&gt; UInt32 i;&lt;br /&gt; OSStatus err;&lt;br /&gt;&lt;br /&gt; *outDeviceRef = NULL;&lt;br /&gt;&lt;br /&gt; for ( i = 0; i &amp;lt; numDevices; i++ ) {&lt;br /&gt;  MIDIDeviceRef deviceRef;&lt;br /&gt;  CFStringRef nameRef;&lt;br /&gt;&lt;br /&gt;  deviceRef = MIDIGetDevice( i );&lt;br /&gt;  err = MIDIObjectGetStringProperty( deviceRef, CFSTR( &amp;quot;name&amp;quot; ), &amp;amp;nameRef );&lt;br /&gt;&lt;br /&gt;  if ( noErr != err ) {&lt;br /&gt;   break;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  if ( CFStringEqualsToString( inName, nameRef ) ) {&lt;br /&gt;   *outDeviceRef = deviceRef;&lt;br /&gt;   break;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; return err;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void dumpMIDIObjectRef( const MIDIObjectRef *inObjectRef ) {&lt;br /&gt; CFPropertyListRef propertyListRef;&lt;br /&gt; UInt32 numProperties;&lt;br /&gt; UInt32 i;&lt;br /&gt; OSStatus err;&lt;br /&gt;&lt;br /&gt; MIDIObjectGetProperties( *inObjectRef, &amp;amp;propertyListRef, false );&lt;br /&gt; numProperties = [(NSDictionary*)propertyListRef count];&lt;br /&gt;&lt;br /&gt; NSLog( @&amp;quot;\tnumProperties:%lu&amp;quot;, numProperties );&lt;br /&gt; NSArray* keys = [(NSDictionary*)propertyListRef allKeys];&lt;br /&gt; NSArray* values = [(NSDictionary*)propertyListRef allValues];&lt;br /&gt;&lt;br /&gt; for ( i = 0; i &amp;lt; numProperties; i++ ) {&lt;br /&gt;  NSObject *k, *v;&lt;br /&gt;  k = [keys objectAtIndex:i];&lt;br /&gt;  v = [values objectAtIndex:i];&lt;br /&gt;  NSLog( @&amp;quot;\tkey:%@, value class:%@, value desc:%@&amp;quot;, k, [v className], [v description] );&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;inline bool CFStringEqualsToString( const CFStringRef str1, const CFStringRef str2 ) {&lt;br /&gt; return kCFCompareEqualTo == CFStringCompare( str1, str2, 0 );&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;エンティティ中の入力元数は&lt;a href="http://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/func/MIDIEntityGetNumberOfSources"&gt;MIDIEntityGetNumberOfSources()&lt;/a&gt;, 出力先数は&lt;a href="http://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/func/MIDIEntityGetNumberOfDestinations"&gt;MIDIEntityGetNumberOfDestinations()&lt;/a&gt;で取得できます。&lt;br /&gt;実際の入力、出力自体は&lt;a href="http://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/func/MIDIEntityGetSource"&gt;MIDIEntityGetSource()&lt;/a&gt;, &lt;a href="http://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/func/MIDIEntityGetDestination"&gt;MIDIEntityGetDestination()&lt;/a&gt;で取得します。これらの返り値は&lt;a href="http://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/tdef/MIDIEndpointRef"&gt;MIDIEndpointRef&lt;/a&gt;型です。&lt;br /&gt;&lt;br /&gt;以下、実行結果。&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ gcc main.m -framework Foundation -framework CoreMIDI&lt;br /&gt;numEntities:1&lt;br /&gt;entity index:0&lt;br /&gt;numSources:1&lt;br /&gt; numProperties:1&lt;br /&gt; key:uniqueID, value class:NSCFNumber, value desc:335343614&lt;br /&gt;numDestinations:1&lt;br /&gt; numProperties:1&lt;br /&gt; key:uniqueID, value class:NSCFNumber, value desc:-54704222&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;と、このようにUM-1の入力元と出力先を取得する事が出来ました。&lt;br /&gt;今回はこの辺で！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-3974241874818683463?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/3974241874818683463/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=3974241874818683463' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3974241874818683463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3974241874818683463'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/coremidimidi_5223.html' title='CoreMIDIでMIDIデバイスの入出力源を取得する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-6624856039208304690</id><published>2010-12-06T16:00:00.003+09:00</published><updated>2010-12-06T16:13:03.930+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>blogger用にソースコードを整形する</title><content type='html'>ソースコードの表示にはpreタグでclass="prettyprint"を指定する方法を使わせてもらってますが、&lt;br /&gt;'&amp;lt;', '&amp;gt;'を変換しないとHTMLタグと認識されてしまい正常に表示されない模様。&lt;br /&gt;&lt;a href="http://www.kuribo.info/2008/04/code-prettify.html"&gt;クリボウの Blogger Tips: コードをハイライトする「Code Prettify」ウィジェット&lt;/a&gt;の下部にある変換ツールを毎度毎度拝借するのもなぁ。&lt;br /&gt;&lt;br /&gt;ということで、自前でなんとかしてみます。&lt;br /&gt;&lt;br /&gt;要はphpの&lt;a href="http://php.net/manual/ja/function.htmlspecialchars.php"&gt;htmlspecialchars()&lt;/a&gt;で変換してしまえば良いので、&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ cat main.c | php -B "echo htmlspecialchars( file_get_contents( 'php://stdin' ) );" &amp;gt; out.txt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;これでひとまず良さげ。余分なファイルが不要、かつ、１ラインで行けるのが強みでしょうか。&lt;br /&gt;後はこれをシェルスクリプト化するなり、使い易いように加工して使えばOK！＞＜&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-6624856039208304690?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/6624856039208304690/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=6624856039208304690' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6624856039208304690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6624856039208304690'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/blogger.html' title='blogger用にソースコードを整形する'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-3343977245700936744</id><published>2010-12-06T15:41:00.002+09:00</published><updated>2010-12-06T15:49:56.102+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Core Foundation'/><title type='text'>CFStringが等しいかどうかの検証</title><content type='html'>&lt;a href="http://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFStringRef/Reference/reference.html#//apple_ref/c/func/CFStringCompare"&gt;CFStringCompare()&lt;/a&gt;を使って、返り値が&lt;a href="http://developer.apple.com/library/mac/#documentation/CoreFoundation/Reference/CFBaseUtils/Reference/reference.html%23//apple_ref/doc/c_ref/CFComparisonResult"&gt;kCFCompareEqualTo&lt;/a&gt;かどうかを調べれば良い、らしい。&lt;br /&gt;あんまり簡略化できてませんが、こんなん作ってみました。&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;inline bool CFStringEqualsToString( const CFStringRef str1, const CFStringRef str2 ) {&lt;br /&gt;    return kCFCompareEqualTo == CFStringCompare( str1, str2, 0 );&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-3343977245700936744?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/3343977245700936744/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=3343977245700936744' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3343977245700936744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/3343977245700936744'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/cfstring.html' title='CFStringが等しいかどうかの検証'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-6909122878153998639</id><published>2010-12-06T15:24:00.004+09:00</published><updated>2010-12-06T16:49:03.366+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreMIDI'/><title type='text'>CoreMIDIでMIDIデバイスのエンティティを調べる</title><content type='html'>&lt;a href="http://www.roland.co.jp/products/dtm/UM-1.html"&gt;Roland UM-1&lt;/a&gt;を挿してエンティティを調べてみます。&lt;br /&gt;エンティティってのは入出力のセットみたいなもの？でしょうか。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/func/MIDIGetSource"&gt;MIDIGetSource()&lt;/a&gt;, &lt;a href="http://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/func/MIDIGetDestination"&gt;MIDIGetDestination()&lt;/a&gt;から一気にsource, destinationを取得しても良かったんですが、&lt;br /&gt;デバイス単位でスキャンしてった方が良いのかなと思って、まずエンティティを取得しようと思った次第です。&lt;br /&gt;&lt;br /&gt;用語解説は&lt;a href="http://objective-audio.jp/2008/06/core-midi-midiobject.html"&gt;Core MIDI その１ MIDIObject - Objective-Audio&lt;/a&gt;の解説が大変分かり易いと思います。&lt;br /&gt;&lt;br /&gt;例によって、以下ソース例。&lt;br /&gt;'UM-1'という名前のMIDIDeviceを取得して、そのMIDIEntityをダンプしています。&lt;br /&gt;名前を指定してMIDIDeviceを取得する部分と、MIDIObjectをダンプする部分は関数化しています。&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;// main.m&lt;br /&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;#import &amp;lt;CoreMIDI/MIDIServices.h&amp;gt;&lt;br /&gt;&lt;br /&gt;OSStatus getMIDIDeviceOfName( MIDIDeviceRef *outDeviceRef, const CFStringRef inName );&lt;br /&gt;void dumpMIDIObjectRef( const MIDIObjectRef *inObjectRef );&lt;br /&gt;&lt;br /&gt;int main( void ) {&lt;br /&gt; NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];&lt;br /&gt; MIDIDeviceRef deviceRef;&lt;br /&gt; UInt32 i;&lt;br /&gt; UInt32 numEntities;&lt;br /&gt; OSStatus err;&lt;br /&gt;&lt;br /&gt; err = getMIDIDeviceOfName( &amp;amp;deviceRef, CFSTR( &amp;quot;UM-1&amp;quot; ) );&lt;br /&gt; dumpMIDIObjectRef( (MIDIObjectRef*)&amp;amp;deviceRef );&lt;br /&gt;&lt;br /&gt; numEntities = MIDIDeviceGetNumberOfEntities( deviceRef );&lt;br /&gt; NSLog( @&amp;quot;numEntities:%lu&amp;quot;, numEntities );&lt;br /&gt;&lt;br /&gt; for ( i = 0; i &amp;lt; numEntities; i++ ) {&lt;br /&gt;  MIDIEntityRef entityRef;&lt;br /&gt;&lt;br /&gt;  NSLog( @&amp;quot;entity index:%lu&amp;quot;, i );&lt;br /&gt;  entityRef = MIDIDeviceGetEntity( deviceRef, i );&lt;br /&gt;  dumpMIDIObjectRef( (MIDIObjectRef*)&amp;amp;entityRef );&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; [pool release];&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;OSStatus getMIDIDeviceOfName( MIDIDeviceRef *outDeviceRef, const CFStringRef inName ) {&lt;br /&gt; const UInt32 numDevices = MIDIGetNumberOfDevices();&lt;br /&gt; UInt32 i;&lt;br /&gt; OSStatus err;&lt;br /&gt;&lt;br /&gt; *outDeviceRef = NULL;&lt;br /&gt;&lt;br /&gt; for ( i = 0; i &amp;lt; numDevices; i++ ) {&lt;br /&gt;  MIDIDeviceRef deviceRef;&lt;br /&gt;  CFStringRef nameRef;&lt;br /&gt;&lt;br /&gt;  deviceRef = MIDIGetDevice( i );&lt;br /&gt;  err = MIDIObjectGetStringProperty( deviceRef, CFSTR( &amp;quot;name&amp;quot; ), &amp;amp;nameRef );&lt;br /&gt;&lt;br /&gt;  if ( noErr != err ) {&lt;br /&gt;   break;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  if ( kCFCompareEqualTo == CFStringCompare( inName, nameRef, 0 ) ) {&lt;br /&gt;   *outDeviceRef = deviceRef;&lt;br /&gt;   break;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; return err;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void dumpMIDIObjectRef( const MIDIObjectRef *inObjectRef ) {&lt;br /&gt; CFPropertyListRef propertyListRef;&lt;br /&gt; UInt32 numProperties;&lt;br /&gt; UInt32 i;&lt;br /&gt; OSStatus err;&lt;br /&gt;&lt;br /&gt; MIDIObjectGetProperties( *inObjectRef, &amp;amp;propertyListRef, false );&lt;br /&gt; numProperties = [(NSDictionary*)propertyListRef count];&lt;br /&gt;&lt;br /&gt; NSLog( @&amp;quot;\tnumProperties:%lu&amp;quot;, numProperties );&lt;br /&gt; NSArray* keys = [(NSDictionary*)propertyListRef allKeys];&lt;br /&gt; NSArray* values = [(NSDictionary*)propertyListRef allValues];&lt;br /&gt;&lt;br /&gt; for ( i = 0; i &amp;lt; numProperties; i++ ) {&lt;br /&gt;  NSObject *k, *v;&lt;br /&gt;  k = [keys objectAtIndex:i];&lt;br /&gt;  v = [values objectAtIndex:i];&lt;br /&gt;  NSLog( @&amp;quot;\tkey:%@, value class:%@, value desc:%@&amp;quot;, k, [v className], [v description] );&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;CoreFoundationのクラスの取り扱いに慣れてないので、結構リークしてるかもしれません。。。&lt;br /&gt;デバイスのエンティティ数およびエンティティの取得は&lt;br /&gt;&lt;a href="http://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/func/MIDIDeviceGetNumberOfEntities"&gt;MIDIDeviceGetNumberOfEntities()&lt;/a&gt;,&lt;a href="http://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/func/MIDIDeviceGetEntity"&gt;MIDIDeviceGetEntitiey()&lt;/a&gt;で行います。&lt;br /&gt;&lt;br /&gt;以下、実行結果。(NSLog()の日付部分は省略)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ gcc main.m -framework Foundation -framework CoreMIDI &amp;&amp; ./a.out&lt;br /&gt;    numProperties:8&lt;br /&gt;    key:driver, value class:NSCFString, value desc:jp.co.roland.RDUSB0009Midi    key:manufacturer, value class:NSCFString, value desc:EDIROL&lt;br /&gt;    key:name, value class:NSCFString, value desc:UM-1&lt;br /&gt;    key:USBLocationID, value class:NSCFNumber, value desc:1528037376&lt;br /&gt;    key:offline, value class:NSCFNumber, value desc:0&lt;br /&gt;    key:VsVidPidDid1, value class:NSCFNumber, value desc:1&lt;br /&gt;    key:uniqueID, value class:NSCFNumber, value desc:229689599&lt;br /&gt;    key:model, value class:NSCFString, value desc:UM-1&lt;br /&gt;numEntities:1&lt;br /&gt;entity index:0&lt;br /&gt;    numProperties:4&lt;br /&gt;    key:name, value class:NSCFString, value desc:UM-1&lt;br /&gt;    key:maxSysExSpeed, value class:NSCFNumber, value desc:3125&lt;br /&gt;    key:embedded, value class:NSCFNumber, value desc:0&lt;br /&gt;    key:uniqueID, value class:NSCFNumber, value desc:410383379&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;と、このような感じでエンティティが１つ取得できました。&lt;br /&gt;&lt;br /&gt;今回はこの辺で！次回はこのエンティティの入出力(source, destination)を取得してみます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-6909122878153998639?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/6909122878153998639/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=6909122878153998639' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6909122878153998639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/6909122878153998639'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/coremidimidi_06.html' title='CoreMIDIでMIDIデバイスのエンティティを調べる'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-8432088737595966809</id><published>2010-12-05T13:31:00.002+09:00</published><updated>2010-12-05T13:35:55.895+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><title type='text'>NSLog()の出力先</title><content type='html'>NSLog()がstderrに出力してるのに最近気づきました。。。&lt;br /&gt;&lt;br /&gt;ネットで調べてみるとやはりstdoutに変更したいという人達も居るようです。&lt;br /&gt;まだ試してないけど、どうしても変更したい場合はこの辺を使うと良いのかなぁ。&lt;br /&gt;&lt;br /&gt;http://www.atomicbird.com/blog/2007/07/code-quickie-redirect-nslog&lt;br /&gt;&lt;br /&gt;printf的に使える上にNSStringを%@で出力できるので、使うとデバッグが楽な場合が多いですよね。NSLog()。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-8432088737595966809?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/8432088737595966809/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=8432088737595966809' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8432088737595966809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/8432088737595966809'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/nslog.html' title='NSLog()の出力先'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-137492529453630221</id><published>2010-12-05T13:18:00.003+09:00</published><updated>2010-12-05T13:31:00.102+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac Development'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreMIDI'/><title type='text'>CoreMIDIで入出力先の数を調べる</title><content type='html'>入力数は&lt;a href="http://developer.apple.com/library/mac/#documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html%23//apple_ref/c/func/MIDIGetNumberOfSources"&gt;MIDIGetNumberOfSources()&lt;/a&gt;, 出力数は&lt;a href="http://developer.apple.com/library/mac/#documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html%23//apple_ref/c/func/MIDIGetNumberOfDestinations"&gt;MIDIGetNumberOfDestinations()&lt;/a&gt;で取得可能。&lt;br /&gt;&lt;br /&gt;以下、ソース例。&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;// main.m&lt;br /&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main( void ) {&lt;br /&gt;    UInt32 numDevices;&lt;br /&gt;    UInt32 numSources;&lt;br /&gt;    UInt32 numDestinations;&lt;br /&gt;&lt;br /&gt;    numDevices = MIDIGetNumberOfDevices();&lt;br /&gt;    numSources = MIDIGetNumberOfSources();&lt;br /&gt;    numDestinations = MIDIGetNumberOfDestinations();&lt;br /&gt;&lt;br /&gt;    NSLog( @&amp;quot;numDevices:%lu&amp;quot;, numDevices );&lt;br /&gt;    NSLog( @&amp;quot;numSources:%lu&amp;quot;, numSources );&lt;br /&gt;    NSLog( @&amp;quot;numDestinations:%lu&amp;quot;, numDestinations );&lt;br /&gt;&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;以下、実行結果。(NSLog()の日付は省略)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ gcc main.m -framework Foundation -framework CoreMIDI &amp;&amp; ./a.out&lt;br /&gt;numDevices:2&lt;br /&gt;numSources:0&lt;br /&gt;numDestinations:0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;両方0て！&lt;br /&gt;&lt;br /&gt;ちなみにMIDIGetNumberOfDevices()ですが、&lt;br /&gt;実際に接続しているMIDI機器のみを取得したい場合は&lt;br /&gt;&lt;a href="http://developer.apple.com/library/mac/documentation/MusicAudio/Reference/CACoreMIDIRef/MIDIServices/CompositePage.html#//apple_ref/c/func/MIDIGetNumberOfExternalDevices"&gt;MIDIGetNumberOfExternalDevices()&lt;/a&gt;&lt;br /&gt;を使うようです。&lt;br /&gt;&lt;br /&gt;ひとまずMIDI I/Fを挿してリトライしてみます。&lt;br /&gt;今回はこの辺で！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-137492529453630221?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/137492529453630221/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=137492529453630221' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/137492529453630221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/137492529453630221'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/coremidi.html' title='CoreMIDIで入出力先の数を調べる'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-146020529638828128</id><published>2010-12-04T23:08:00.003+09:00</published><updated>2010-12-05T11:26:40.520+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dead Space'/><category scheme='http://www.blogger.com/atom/ns#' term='Game'/><title type='text'>Dead Space 2</title><content type='html'>&lt;b&gt;通常版&lt;/b&gt;&lt;br /&gt;大手の日本の通販サイトでも普通に取り扱いを始めた模様。&lt;br /&gt;&lt;br /&gt;amazon.co.jp(US版？)&lt;br /&gt;http://www.amazon.co.jp/dp/B00309U0M6/&lt;br /&gt;&lt;br /&gt;あみあみ(アジア版)&lt;br /&gt;http://www.amiami.jp/shop/ProductInfo/product_id/188977&lt;br /&gt;&lt;br /&gt;メディアランド(アジア版)&lt;br /&gt;http://www.m-land.co.jp/fs/medialand/1000000260687&lt;br /&gt;&lt;br /&gt;ただし通常版なんだよなぁ。。。自分が欲しいのはcollector's edtionなんですが。。。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;collector's edtion&lt;/b&gt;&lt;br /&gt;12/4現在は海外通販サイトや洋ゲー通販に頼るしか無さげ&lt;br /&gt;&lt;br /&gt;Play-Asia&lt;br /&gt;http://www.play-asia.com/Dead_Space_2_Collectors_Edition/paOS-13-71-dh-49-jp-70-407t.html&lt;br /&gt;&lt;br /&gt;Amazon.com&lt;br /&gt;http://www.amazon.com/Dead-Space-2-Collectors-Xbox-360/dp/B0047O617Q/ref=sr_1_5?ie=UTF8&amp;qid=1291472304&amp;sr=8-5&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ちなみに詳しい動向は&lt;br /&gt;http://jbbs.livedoor.jp/game/51172/&lt;br /&gt;が非常に参考になります。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[12/5 11:30追記]&lt;br /&gt;&lt;br /&gt;上記「Dead Space 掲示板」での情報によると、&lt;br /&gt;GameStationOnlineでcollector's edtionの予約受付開始したようです！！&lt;br /&gt;http://www.gamestationonline.jp/xbox360preorder.htm&lt;br /&gt;&lt;br /&gt;自分もひとまず予約〜(*´∀`)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-146020529638828128?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/146020529638828128/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=146020529638828128' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/146020529638828128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/146020529638828128'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/dead-space-2.html' title='Dead Space 2'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-4789100343398133668</id><published>2010-12-04T22:59:00.002+09:00</published><updated>2010-12-04T23:08:21.191+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Game'/><category scheme='http://www.blogger.com/atom/ns#' term='PSP'/><title type='text'>PSP本体がそろそろ欲しいのだが</title><content type='html'>「モンスターハンターポータブル 3rd ＋ ハンターズモデル（PSP-3000MHB)」ってソフトは付いてないのかよ！どんだけだよ！&lt;br /&gt;なんかamazonとかでも普通に置いてるなと思ったら…&lt;br /&gt;&lt;br /&gt;危険危険&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;せっかくだから最近出た本体が良いなぁ。なんなら本体と何かソフトが付いてるのが良いのかなぁ、と考えている所でございます。&lt;br /&gt;&lt;br /&gt;「初音ミク -Project DIVA- 2nd いっぱいパック」を買っときゃ良かったかなぁ…&lt;br /&gt;でもこっちは初期不良多発っぽい。&lt;br /&gt;&lt;br /&gt;PSPの発売予定表はkakaku.comのが見やすいと思います。あんまり先の予定までは出てないみたいですが。&lt;br /&gt;&lt;br /&gt;http://kakaku.com/game/release/CategoryCD=4137/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;あとPSP goも一瞬視野に入れてみたんですが、UMDディスクのソフトを買っている身としては全く対象外みたいっすね。&lt;br /&gt;&lt;br /&gt;http://aray-ko-dai.cocolog-nifty.com/blog/2009/09/psp-go-46bf.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-4789100343398133668?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/4789100343398133668/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=4789100343398133668' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4789100343398133668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/4789100343398133668'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/psp.html' title='PSP本体がそろそろ欲しいのだが'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-1212659186664947504</id><published>2010-12-04T19:26:00.003+09:00</published><updated>2010-12-04T19:36:50.452+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Obj-C'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><category scheme='http://www.blogger.com/atom/ns#' term='Cocoa'/><title type='text'>CFPropertyListをtoll-free bridge的にキャストする</title><content type='html'>そもそもCFPropertyListは固有のデータクラスではなく、様々なデータクラスがCFPropertyListとしてキャストされているような感じらしい。&lt;br /&gt;そのため、NS*にキャストしてobj-cで使うにはCFGetTypeID()などでタイプを調べてからキャストする必要が有る模様。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lists.apple.com/archives/carbon-development/2003/Nov/msg01695.html"&gt;Re: CFPropertyList and NSDictionary/CFDictionary&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;言い換えれば、どのCF*クラスなのかが明白に分かっているならそれに対応したNS*クラスでキャストしてやればOK。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-1212659186664947504?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/1212659186664947504/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=1212659186664947504' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1212659186664947504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/1212659186664947504'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/cfpropertylisttol-free-bridge.html' title='CFPropertyListをtoll-free bridge的にキャストする'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1567866602594596769.post-7966561441656336152</id><published>2010-12-04T18:54:00.002+09:00</published><updated>2010-12-04T19:11:09.325+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>標準入力(stdin)からphpにデータを渡す</title><content type='html'>[参考:&lt;a href="http://php.net/manual/ja/wrappers.php.php"&gt;PHP: PHP 入出力ストリーム - Manual&lt;/a&gt; ]&lt;br /&gt;[参考: &lt;a href="http://php.net/manual/ja/features.commandline.io-streams.php"&gt;PHP: I/O ストリーム - Manual&lt;/a&gt;]&lt;br /&gt;&lt;pre class='prettyprint'&gt;&lt;br /&gt;$c = file_get_contents( 'php://stdin' );&lt;br /&gt;&lt;br /&gt;// 他にも1行ずつの場合は&lt;br /&gt;$fp = fopen( 'php://stdin', 'r' );&lt;br /&gt;$line = fgets( $fp );&lt;br /&gt;// や、この代わりに&lt;br /&gt;$line = fgets( STDIN );&lt;br /&gt;// でもOK&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1567866602594596769-7966561441656336152?l=ichiba-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ichiba-blog.blogspot.com/feeds/7966561441656336152/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1567866602594596769&amp;postID=7966561441656336152' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7966561441656336152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1567866602594596769/posts/default/7966561441656336152'/><link rel='alternate' type='text/html' href='http://ichiba-blog.blogspot.com/2010/12/stdinphp.html' title='標準入力(stdin)からphpにデータを渡す'/><author><name>uri-sawa</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_MHazjq2YTDI/S6chkiCePTI/AAAAAAAAAFc/G2s_hsCbO3E/S220/pana.jpg'/></author><thr:total>0</thr:total></entry></feed>
