Vimのコマンドライン編集をEmacs風にしたい

vim

~/.vimrc に以下を追加すればOK。 "コマンドラインをEmacs風に編集する :cnoremap <C-A> <Home> :cnoremap <C-F> <Right> :cnoremap <C-B> <Left></left></c-b></right></c-f></home></c-a>

秘密鍵を持たないユーザをsshでログインできないようにする

/etc/ssh/sshd_configのPasswordAuthenticationを「no」にし、 # Change to no to disable tunnelled clear text passwords #PasswordAuthentication yes ↓ PasswordAuthentication noその後sshdを再起動すればOK。 $ /etc/init.d/ssh restart

HTTPリクエストのリクエストヘッダにリファラを設定したい

NSMutableURLRequestクラスのsetValue:forHTTPHeaderField:メソッドを使う。NSURLRequestではなくNSMutableURLRequestを使うのがポイント。HTTPメソッドやHTTPヘッダをセットしたい場合はプロパティの変更が不可能(Immutable)なNSURLRequestじゃなくて変更可…

UIWebView上でJavaScriptを走らせたい

UIWebView上でJavaScriptを走らせたい場合はUIWebViewクラスのstringByEvaluatingJavaScriptFromString:メソッドを利用する。返り値には最後に評価した式の値が格納される。以下では最後に評価された「a + b」の結果である「3」が返る。 NSString *s = [webV…

SQLiteのスキーマ定義をHTML形式で出力する

SQL形式ので出力なら以下のコマンドでできるんだけど、 $ sqlite3 db_file ".schema" HTML形式で見たかったのでサックリとシェルスクリプトを書いた。あとでまた使うかもしれないのでメモっておく。 # sqlite_schema.sh sqlitedb=$1 echo "<html><body>" for i in `sqlit</body></html>…

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 の時のみモーダルビューを表…