2010-01-01から1年間の記事一覧

SQLiteでの「file is encrypted or is not a database」エラー

とあるアプリが作成したsqliteのファイルを開こうと思ったら以下のようなエラーが出て開けなかった。 $ sqlite hoge.sqlite Unable to open database "/opt/services/galaxy/development/current/database/universe.sqlite": file is encrypted or is not a …

ユーザubuntuのパスワードを強引に変更したい

Amazon EC2用のUbuntuイメージを利用してるのだけど、ログインユーザであるubuntuのパスワードが分からなくていろいろ難儀してる。ログイン自体は公開鍵を利用したログインのためパスワードがなくてもログインできる。ログインできてるならpasswdコマンドを…

指定したディレクトリにMercurialをインストールしたい

指定したディレクトリにMercurialをインストールしたい場合は、以下のようにPREFIXにインストール先のディレクトリを指定してmake installすればOK。 $ make PREFIX=/some/directory/mercurial-1.7 install以下はおまけ。ダウンロードからインストールして動…

明日の俺へ

つ http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/Introduction/Introduction.html

UIViewのサイズを変更したい

UIViewのサイズの変更のしかたをいつも忘れるので、メモっておく。 // オリジナルの枠を取得 CGRect original = aView.frame; // 枠の高さを半分に CGRect new = CGRectMake(original.origin.x, original.origin.y, original.size.width, original.size.heig…

sshでパスワードなしでログインしたい

これもいい加減スリーアウトなので、メモしておく。公開鍵をリモートサーバにコピーして以下の手順で ~/.ssh/authorized_keys に公開鍵を追加し、ファイルのパーミッションを600にすればOK。 $ cat id_dsa.pub >> ~/.ssh/authorized_keys $ chmod 600 ~/.ssh…

そういえば、aptでRubyGemsを入れちゃだめだった(1年半ぶり2回目)

Ubuntu10でRubyのtwitterライブラリをgemでインストールしようとしたら $ gem install twitter WARNING: Installing to ~/.gem since /var/lib/gems/1.8 and /var/lib/gems/1.8/bin aren't both writable. WARNING: You don't have /home/thata/.gem/ruby/1.…

DocDiffで文字単位でのdiffをとる

通常のdiffは行単位なのですが、文字単位でdiffをとりたくなったのでDocDiffというのを使ってみた。 DocDiff http://www.kt.rim.or.jp/~hisashim/docdiff/ インストール まずは以下の手順で ~/usr の下にDocDiffをインストール。 $ cd ~/usr $ curl http://w…

デタッチされてないscreenにアタッチする

$ screen -rxでOK。

リポジトリ間共通のgitignoreを指定したい

git

以下のコマンド実行後、~/.gitignore にリポジトリ間共通でignoreしたいファイルを記入する。 git config --global core.excludesfile ~/.gitignore# ~/.gitignore build/ *.pbxuser *.mode1v3 .svn

現在の日時を取得したい

NSDateのクラスメソッドdateを呼ぶと現在の日時をもつNSDateのインスタンスが返されます。 NSDate *now = [NSDate date]; NSLog(@"Now: %@", now); // => Now: 2010-08-12 18:21:39 +0900

ミリ秒単位でふたつの日時の差異を求めたい

// ミリ秒単位のふたつの日時の差異を求めたい NSDate *now = [NSDate date]; NSLog(@"now: %@", now); for (int i=0; i<10; i++) { NSLog(@"delay!!"); } NSDate *then = [NSDate date]; NSLog(@"then: %@", then); NSLog(@"then - now: %1.3fsec", [then t…

文字列から日時を生成したい

// 文字列から日時を生成する NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm"]; NSDate *date = [formatter dateFromString:@"2010-7-8 13:14"]; NSLog(@"Date: %@", date);

日時をフォーマット出力したい

// 日時をフォーマット出力する // 書式はここ http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns NSDate *now = [NSDate date]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd(E)…

n日後の日時を求めたい

// n日後の日時をもとめる NSCalendar *calendar = [NSCalendar currentCalendar]; NSDate *now = [NSDate date]; NSDateComponents *sevenDays = [[NSDateComponents alloc] init]; [sevenDays setDay:7]; NSDate *sevenDaysLater = [calendar dateByAdding…

ふたつの日時の差を求めたい(日時分)

// ふたつの日時の差をもとめる(日時分のみ) NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *comps1 = [[NSDateComponents alloc] init]; [comps1 setYear:2010]; [comps1 setMonth:4]; [comps1 setDay:5]; [comps1 setHour:10]; …

ふたつの日時の差を求めたい(年月日)

// ふたつの日時の差を求める(年月日のみ) NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *comps1 = [[NSDateComponents alloc] init]; [comps1 setYear:2009]; [comps1 setMonth:3]; [comps1 setDay:10]; NSDate *date1 = [calen…

月日、時分秒を指定して日時オブジェクトを生成したい

// 年月日、時分秒を指定して日時オブジェクトを生成する NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *comps = [[NSDateComponents alloc] init]; [comps setYear:2010]; [comps setMonth:1]; [comps setDay:2]; [comps setHou…

日時オブジェクトから年月日や時分秒、曜日をとりだしたい

NSDate *date = [NSDate date]; NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *comps; // 年月日をとりだす comps = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:date]; NSI…

夜は短し歩けよ乙女

を読んでほっこりした。四畳半神話体系で明石さんにやられちゃった人は、同じ世界を共有する本書も読んで二足歩行ロボットのモノマネでほっこりするべき。

オートリリースプールとスレッドとNSOperation

Cocoaのリファレンスカウント式のメモリ管理で利用されるオートリリースプールはメインスレッドに対しては自動的に作られて自動的に解放されるので普段はあまり意識することはないのだけど、performSelectorInBackground:withObject:などを利用して別スレッ…

iPhone開発のメモリリーク対策

メモリリークを調べたい

iPhoneアプリケーション開発ではガベージコレクションが使えないためJavaやRubyのようなガーベージコレクションを備えている言語環境と異なりメモリリークの危険と常に隣り合わせです。しかし、iOS SDKにはメモリリークの検出をサポートするためのツールが用…

問い合わせ言語を使って配列内のオブジェクトをフィルタリングしたい

for文でぐるぐるまわすのもいいけど、NSPredicateクラスと問い合わせ言語「Cocoa Predicates」を使うと便利。問い合わせ言語を渡してNSPredicateオブジェクトを生成したのち、配列のfilteredArrayUsingPredicate:メソッドを呼び出して指定したオブジェクトの…

モーダルビューの2重起動を避けたい

iPhoneアプリでは、ひとつのビューから複数のモーダルビューを出そうとするとエラーが発生してしまう。モーダルビューの2重起動を防ぐには、モーダルビューを表示する前に UIViewController#modalViewController を確認して nil の時のみモーダルビューを表…

Objective-Cで正規表現を使いたい

NSPredicateを使って正規表現的なあれができるよ。 NSPredicate *regex = [NSPredicate predicateWithFormat:@"SELF matches %@", @"[hoge|fuga]+"]; NSString *s1 = @"hoge"; NSLog(@"%d", [regex evaluateWithObject:s1]); //=> YES NSString *s2 = @"fuga…

TapkuLibraryのカレンダーを使ってみた

自分用のメモとして、とりあえずコードだけ貼っておく。「+」ボタンを押すとメモに「とんかつ」と記録できるカレンダーです。 #import <UIKit/UIKit.h> #import "TapkuLibrary/TapkuLibrary.h" @interface MyCalendarViewController : TKCalendarMonthTableViewController </uikit/uikit.h>…

NSErrorな変数をnilで初期化してあげないとアレな件

NSURLConnectionを使った通信プログラムを書いていたところ、下記のようなexample.comからデータを持ってくるだけのコードがEXC_BAD_ACCESSで落ちてしまう。 - (void)doIt { NSHTTPURLResponse *res; NSError *error; NSURL *url = [NSURL URLWithString:@"h…

NSOperationを試してみた

非同期に処理を行わせたい場合は別スレッドを立てて裏で実行したりするのが定番だけど、MacOSXやiPhoneアプリではNSOperationを使って自然な感じに非同期処理を行わせることができる(らしい)。以下自分用メモ。mainの中でdoItLaterを非同期に呼び出してる…

XMLを解析したい

iPhoneで利用できるXMLパーサにはいくつかありますが今回はiPhoneSDKに標準添付されているNSXMLParserを利用します。ちなみに、NSXMLParser以外のXMLパーサには以下のようなものがあります。NSXMLParserはSAXベースのパーサなのに対し、TouchXMLやKissXMLはD…