Vimのコマンドライン編集をEmacs風にしたい
~/.vimrc に以下を追加すればOK。
"コマンドラインをEmacs風に編集する :cnoremap <C-A> <Home> :cnoremap <C-F> <Right> :cnoremap <C-B> <Left>
HTTPリクエストのリクエストヘッダにリファラを設定したい
NSMutableURLRequestクラスのsetValue:forHTTPHeaderField:メソッドを使う。
NSURLRequestではなくNSMutableURLRequestを使うのがポイント。HTTPメソッドやHTTPヘッダをセットしたい場合はプロパティの変更が不可能(Immutable)なNSURLRequestじゃなくて変更可能(Mutable)なNSMutableURLRequestを使う必要があります。
... NSURL *url = [NSURL URLWithString:@"http://example.com"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request setValue:@"http://referer.example.com" forHTTPHeaderField:@"Referer"]; ...
UIWebView上でJavaScriptを走らせたい
UIWebView上でJavaScriptを走らせたい場合はUIWebViewクラスのstringByEvaluatingJavaScriptFromString:メソッドを利用する。返り値には最後に評価した式の値が格納される。
以下では最後に評価された「a + b」の結果である「3」が返る。
NSString *s = [webView stringByEvaluatingJavaScriptFromString: @"var a = 1; var b = 2; a + b;"]; NSLog(@"=> %@", s); //=> 3
以下はUIWebView上で選択中の文字列をNSLogで出力する例。
- (IBAction) showSelectedText { NSString *s; // 選択中の文字列を取得(なぜかtoString()しないと値が返らない) s = [webView stringByEvaluatingJavaScriptFromString: @"document.getSelection().toString()"]; NSLog(@"=> %@", s); }
SQLiteのスキーマ定義をHTML形式で出力する
SQL形式ので出力なら以下のコマンドでできるんだけど、
$ sqlite3 db_file ".schema"
HTML形式で見たかったのでサックリとシェルスクリプトを書いた。あとでまた使うかもしれないのでメモっておく。
# sqlite_schema.sh sqlitedb=$1 echo "<html><body>" for i in `sqlite3 ${sqlitedb} ".tables"` do echo "<h2>${i}</h2><ul>" for j in `sqlite3 ${sqlitedb} "PRAGMA table_info(${i});" | awk 'BEGIN{FS="|"}{printf "%s(%s)\n", $2, $3}'` do echo "<li>${j}</li>" done echo "</ul>" done echo "</body></html>"
使い方はこんな感じ。
$ sh sqlite_schema.sh db_file
スキーマだけじゃなく中のデータも出力したい場合
中のデータも出力したくなったときはこちらを。
# sh sqlite_dump.sh db_file sqlitedb=$1 echo "<html><body>" for i in `sqlite3 ${sqlitedb} ".tables"` do echo "<h2>${i}</h2>" echo "<table border=1>" echo "<tr>" for j in `sqlite3 ${sqlitedb} "PRAGMA table_info(${i});" | awk 'BEGIN{FS="|"}{printf "%s\n", $2}'` do echo "<th>${j}</th>" done echo "</tr>" sqlite3 -html ${sqlitedb} "select * from ${i};" echo "</table>" done echo "</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 database
調べてみた所、sqlite3で作られたDBをsqlite2で開こうとするとこのエラーが出る事があるらしい。sqliteコマンドを叩いて確認してみたところ確かにこれはsqlite2。
$ sqlite SQLite version 2.8.17 Enter ".help" for instructions sqlite>
ということで、sqlite3をインストールして無事に望むsqliteファイルを開くことができたのでした。
$ sudo aptitude install sqlite3 $ hash -r $ sqlite3 hoge.sqlite SQLite version 3.7.2 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite>
ユーザubuntuのパスワードを強引に変更したい
Amazon EC2用のUbuntuイメージを利用してるのだけど、ログインユーザであるubuntuのパスワードが分からなくていろいろ難儀してる。
ログイン自体は公開鍵を利用したログインのためパスワードがなくてもログインできる。ログインできてるならpasswdコマンドを使えばいいかと思ったら変更する前に現在のパスワードを聞かれてしまいあえなく失敗。
悲しみにくれつつWebをさまよったところ以下のコマンドでいけることが分かった。
$ sudo passwd ubuntu
無事にパスワードを変更して快適になったよ。