半透明ステータスバーの透明度は多分 0.6

キーボードのアニメーション速度は0.3秒

UITextViewのマージンは8ピクセル。
現在のところ、UITextViewのマージンを(普通に)設定する方法は無いらしい。

posted by genki genki on Fri 31 Oct 2008 at 14:23 with 0 comments

iPhoneのキーボードが出現するときには、slide up のアニメーションがかかりますが、このアニメーションの開始から完了までの時間間隔は、0.3秒のようです。消える時のアニメーションも同様のようです。

ドキュメントを調べても取得するAPIがわからなかったのですが、
UICatalogのサンプルアプリケーションの中で、定数が定義されていました。

キーボードの寸法については、NotificationのuserInfoの中の値から調べられます。

posted by genki genki on Mon 27 Oct 2008 at 15:33 with 0 comments

iPhoneのツールバー(UIToolbar)の高さを取得する方法のメモです。

objective-c>>

  • (CGFloat)
    heightForToolbar
    {
    UIToolbar *toolbar = [UIToolbar new];
    [toolbar sizeToFit];
    CGRect frame = toolbar.frame;
    [toolbar release];
    return frame.size.height;
    }
    <<--

何かどこかに定数定義とかがあるかもしれないですが、
とりあえず sizeToFit すればあるべき高さに収まるようです。
UIStatusBarでも同様ですね。

posted by genki genki on Mon 27 Oct 2008 at 15:25 with 0 comments
今話題の [gemspec.info](http://gemspec.info) でs21gブログのOpenIDでログイン出来るようにしていただけました。 まいむぞうさんありがとうございます! s21gブログのOpenIDは、 pre>> blog.s21g.com/openid/ <<-- の形式です。
posted by genki genki on Mon 27 Oct 2008 at 11:03 with 0 comments

昨日のRails勉強会でMaihaさん、Yuguiさんと話してましたが、
PayPalが日本円でのマイクロペイメントサービスを開始したようです。

PayPal、日本円でもマイクロペイメントサービス開始

米eBay傘下の決済サービス大手PayPalは22日、少額決済を行える、いわゆる「マイクロペイメント」サービスを拡大したと発表した。米国だけでなく、日本円など19通貨にも対応した。

この業界でB2Cサービスを展開してる会社にとっては、結構大きな出来事じゃないでしょうか。

See Also

posted by genki genki on Mon 27 Oct 2008 at 07:29 with 0 comments
技術評論社さまより、WEB+DB PRESS vol.47 を献本いただきました。 どうもありがとうございます。
WEB+DB PRESS Vol.47
WEB+DB PRESS Vol.47
posted with amazlet at 08.10.25
WEB+DB PRESS編集部
技術評論社
売り上げランキング: 127
今号はmemcached特集が面白かったです。いろいろ参考になりそうです。 各言語/ライブラリからの利用方法もまとまっています。 笠谷さんのObjective-Cの記事も、 これから始める人には参考になりそうですね。
posted by genki genki on Sat 25 Oct 2008 at 05:23 with 0 comments

Railsのacts_as_searchableプラグインに類似検索機能をつけた
acts_as_searchable_with_similarityを、GitHubに移管いたしました。

http://github.com/genki/acts_as_searchable_with_similarity/tree/master

今後はこちらをお使いいただけるとありがたいです。

posted by genki genki on Sat 25 Oct 2008 at 05:19 with 0 comments

中川さん(aka Psychs)
がiPhone用の画像ダウンロードライブラリ
ImageStore
をGitHub上で公開されたようです。

iPhone 用の画像ダウンロードライブラリ、ImageStore のソースコードを公開します。

http://github.com/psychs/imagestore/tree/master

ライセンスは、New BSD ライセンスです。

Thanks!

posted by genki genki on Sat 25 Oct 2008 at 04:37 with 0 comments

CoreGraphics
を使った角丸長方形(RoundRect)
を描画するためのメソッドです。

objective-c>>

  • (void)
    drawRoundRect:(CGRect)rect
    withRadius:(CGFloat)radius
    inContext:(CGContextRef)context
    {
    CGFloat lx = CGRectGetMinX(rect);
    CGFloat cx = CGRectGetMidX(rect);
    CGFloat rx = CGRectGetMaxX(rect);
    CGFloat by = CGRectGetMinY(rect);
    CGFloat cy = CGRectGetMidY(rect);
    CGFloat ty = CGRectGetMaxY(rect);

    CGContextMoveToPoint(context, lx, cy);
    CGContextAddArcToPoint(context, lx, by, cx, by, radius);
    CGContextAddArcToPoint(context, rx, by, rx, cy, radius);
    CGContextAddArcToPoint(context, rx, ty, cx, ty, radius);
    CGContextAddArcToPoint(context, lx, ty, lx, cy, radius);
    CGContextClosePath(context);
    CGContextDrawPath(context, kCGPathFillStroke);

}
<<--

角丸が好きなので多用しそうな気がします。
事前にStrokeやFillの色を設定してお使いください。

posted by genki genki on Tue 21 Oct 2008 at 13:10 with 0 comments

gitを使っていて、間違ったファイルをgit addしてしまった場合に、
これをキャンセルする為には、以下のコマンドが使えます。

pre>>
% git rm --cached
<<--

git rmは、Working Tree (作業コピー)と
index からファイルを削除するコマンドですが、
--cachedを指定する事で、
indexからのみファイルを削除する事ができます。

git addはWorking Treeからindexにファイルを追加するコマンドなので、
git rm --cachedは、git addと対をなすコマンドだと言えますね。

posted by genki genki on Fri 17 Oct 2008 at 01:39 with 0 comments

Sqlite3を使っている場合に、テーブルが存在するかどうかを確認する為には、
以下のようなSQLを実行すればOkです。

sql>>
SELECT count(*) FROM sqlite_master
WHERE type='table' AND name=?;
<<--

?には、sqlite3_bind_textなどで存在を確認したいテーブルの名前をbindします。

あとは結果をsqlite3_column_intなどで取得すればOkです。

See Also

posted by genki genki on Wed 15 Oct 2008 at 18:58 with 0 comments

Xcodeでgdbを使ってObjective-Cのコードをデバッグしているときに、
Objective-Cのメソッドを呼んだ結果が知りたい場合、
以下のようにすれば良いようです。

objective-c>>
(gdb) call (int) [@"a" length]
$1 = 1
<<--

C関数の形式で以下のように呼び出してもOkです。

objective-c>>
(gdb) call (int) objc_msgSend(@"ab", @selector(length))
$2 = 2
<<--

ただし、戻り値のサイズや型によっては、objc_msgSend
ではなく、objc_msgSend_stretなどを使う必要があります。

posted by genki genki on Mon 13 Oct 2008 at 00:36 with 0 comments

時々忘れるのでメモ。

|
|
|引数の数,英語(A),英語(B)
|
|0,constant function,==
|1,unary function,monadic function
|2,binary function,dyadic function
|3,ternary(trinary) function,triadic function
|4,quaternary function,tetoradic function
|不定/可変,multinary function,variadic function

5つ以上の場合は、
quinary, senary, septenary, octonary, nonary, denary, undenary, duodenaryなどと続きます。

posted by genki genki on Fri 10 Oct 2008 at 03:41 with 0 comments

Objective-Cで、Method構造体からCレベルの関数ポインタを取得する方法のメモです。

以前は、

objective-c>>
Method *method = class_getInstanceMethod(class, selector);
IMP imp = method->method_imp;
<<--

という感じで取得出来ていたみたいですが、現在はDeprecatedとなっており、
以下のようにする必要があるようです。

objective-c>>
IMP imp = method_getImplementation(method);
<<--

posted by genki genki on Thu 9 Oct 2008 at 02:25 with 0 comments

Objective-Cで、クラスやプロトコルを前方宣言(前方参照とも呼ばれたりします)をする方法のメモです。

クラスの前方宣言

クラスを前方宣言する場合は、@classに続いてクラス名、セミコロンを書きます。

objective-c>>
@class Foo;
<<--

プロトコルの前方宣言

クラスのときと同様、プロトコル名のあとにセミコロンでOk。

objective-c>>
@protocol Foo;
<<--

posted by genki genki on Wed 8 Oct 2008 at 16:52 with 0 comments

Objective-Cでオブジェクトを初期化する処理は、-init
メソッドなどの初期化メソッドで実装されます。
よく見かけるのはこんな例ですね。

objective-c>>

  • (id)init
    {
    [super init];
    /* initialization code */
    return self;
    }
    <<--

しかしながら、基底クラスの初期化処理[super init]の最中に、
メモリアロケーションの失敗などによって正常に初期化が行われなかった場合に備えて、次のようなエラーハンドリングを行った方が良いでしょう。

objective-c>>

  • (id)init
    {
    if(self = [super init]){
    /* initialization code */
    }
    return self;
    }
    <<--

この辺の処理はXcodeなどが生成するひな形にも書かれていますね。

さて、ここからが本題ですが、上述の
/* initialization code */
の中で初期化が失敗したときは、どうしたら良いでしょうか。
仕様的には、初期化に失敗したら nil を返す必要がありますが、
その際、途中までの段階で確保したリソースを解放する必要があるでしょう。
つまり、[super init]の中で確保されたであろうリソースを解放する必要があります。

objective-c>>

  • (id)init
    {
    if(self = [super init]){
    /* initialization code /
    if(/
    initialization failure /){
    /
    release all resources */
    [super dealloc];
    return nil;
    }
    }
    return self;
    }
    <<--

ということで、こんな感じに[super dealloc]
を呼び出して nil を返します。
ここで、[super release] を呼び出すと、
参照カウンタが0になり、 [self dealloc]
が呼び出されてしまうので注意が必要です。
[self dealloc]を呼び出すようにする場合は、上述の
/* release all resources */
の中でリソースを解放せずに、[self dealloc]
の中で解放するようにする必要があります。
しかし、失敗した初期化処理の中で中途半端に確保したリソースを、
正しく解放する為には、[self init]
の内部で解放処理まで行った方が楽な気がします。
あるいは、以下の様に初期化済みのものだけ解放するようなコードを
[self dealloc]に書いておくという手もあるかもしれません。

objective-c>>
#define RELEASE(x) if(x) [(x) release]

  • (void)dealloc
    {
    RELEASE(_something);
    [super dealloc];
    }
    <<--

こんなコードを見ると、なんだかノスタルジーを感じます。

ちなみに関係ないですが、このブログシステムでは、
Objective-Cのソースコードを以下のような記法でSyntax highlightさせる事ができます。

pre>>
objective-c>>
/* Objective-C code */
<<objective-c
<<pre

posted by genki genki on Mon 6 Oct 2008 at 22:09 with 4 comments

久々にRailsプラグインの紹介です。

Plugins - NamedScope

This is not simple hack of named scope like you might find in WillPaginate. This is a fully backported and tested version of NamedScope that will work on rails 1.2.6 or 2.0.4.

Rails-2.0.4およびRails-1.2.6でNamedScopeが使えるようになるようです。

posted by genki genki on Sun 5 Oct 2008 at 07:26 with 0 comments

~/.gitconfigをさらしてみます。[user]は省略。

pre>>
[color]
status = auto
diff = auto
[alias]
co = checkout
ci = commit -a
st = status
up = pull --rebase
<<--

こんな感じ。SVNぽい感じで使えるようにサブコマンドのaliasを設定してます。
色づけはautoで。

posted by genki genki on Fri 3 Oct 2008 at 16:17 with 0 comments

いろいろ調べた事をブログに書けなくて、
フラストレーションがたまっていたのですが、
ついにソースコードの開示や解説などが解禁されたようですね。

NDA契約更新が完了次第、iPhoneアプリ開発についても
ブログに書いていこうと思います。
今まで通りRailsアプリ開発の話も書いていきます。

See Also

posted by genki genki on Fri 3 Oct 2008 at 03:33 with 0 comments
Contents rssrss
光ファイバーを二次元振動させて走査するAR用ディスプレイ
因果の取り違え
Swift2's defer for CoffeeScript
mongodb-3.0からcreateIndexのdropDupsが無くなったらしい
mongodb-3.0以降のWiredTigerの設定を動的に変更する方法
一般楕円の高速生成アルゴリズムへの道標
farro mantecatoのレシピ
Droonga関連の記事のまとめ
RuntimeErrorの特定のメッセージに限定してrescueする方法
jQueryでscriptタグを実行せずにappendする
Tags
memoiphoneobjective-cnewsgitpluginrailsbusinesscgdrawgdbmathNDAsqlite3tipお知らせ書籍紹介
Comments rssrss
瀧内元気 瀧内元気: MacOS版は以下にあります genki/ViMouse 01/16 05:40
dsjf dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これでも出... 01/08 23:23
瀧内元気 瀧内元気: おお、チェックしてみます。thx! 12/24 05:23
overisland overisland: Reeder for iPhone もこの UI を実装していますね。 12/24 05:13
瀧内元気 瀧内元気: その情報は見たのですが、以下のサイトによると、現在はまた必要になってるっぽいんですよね。 http:... 12/01 12:20
tkawa tkawa: http://devcenter.heroku.com/articles/rails31_herok... 12/01 10:47
瀧内元気 瀧内元気: どもー。いまはgithubに置いてあります https://github.com/genki/irb... 07/10 08:31
ともち ともち: こんにちは! すばらしいプログラムをありがとうございます。しかし、merbiのドメイン、切れているみ... 07/10 02:30
Services from s21g
YOMU Web小説リーダー
YOMUは、Web小説の読み上げに特化したiPhoneアプリです。
補助探
公開されている補助金・助成金情報を集約し、条件に合う制度を探しやすくするサービスです。
jotter.me
個人開発者のためのホスティング一体型ノートサービス
ハンドミラー
iPhone向けの手鏡アプリ
ツイプロ(twpro)
Twitterプロフィールの高速検索エンジン