2011年11月29日火曜日
mysqlコマンドメモ
参考
テーブル定義をダンプ --no-dataオプション
省略系は-d
mysqldump -u hoge -p --no-data db_name > dumpfile
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
データだけダンプ
- t オプション
ダンプファイルを読み込む
mysql -u hoge db_name < dumpfile
テーブルが破損してないかチェック
check table table_name
2011年11月28日月曜日
dieをシグナルでフックしたいが、evalは例外にしたい。
evalで囲っているけど、$@が出力されてない、コード全部直すの面倒!ってときに
$SIG{__DIE__} = sub {
# ログ出力
}
eval内の例外をキャッチするコードはちゃんと書いているので、eval内のdieはフックせず無視したい場合
- eval内でdieされたときは $^S == 1(perlvar参照)
$SIG{__DIE__} = sub {
return if $^S;
# ログ出力
}
2011年11月20日日曜日
xcodeショートカット
バージョンは3.2.6
編集
現在行の定義場所へジャンプ
- cmd-ダブルクリック
- 飛べないときは、cmd-opt-D で。
文頭、文末にジャンプ
- cmd-矢印
保存前に戻す
- cmd-u
コード折り畳み
- 全折り畳み
- Ctrl + Cmd + ↑
- 全展開
- Ctrl + Cmd + ↓
- 単体折り畳み
- Ctrl + Cmd + ←
- 単体展開
- Ctrl + Cmd + →
ウインドウ
エディタ最大化
- opt-cmd-E
対になっている.mと.hファイルを切り替え
- opt-cmd-↑
- マウスパッドで3本指で上にスライド
前後の編集場所に戻る?
- マウスパッドで3本指で左右にスライド
- 定義場所にジャンプしてから、元のファイルに戻りたいときに使っている
デバック画面に切り替え
- opt-Y
- もとに戻すのはどうやるんだ、、、
ビルド
ビルドと解析
- cmd-A
ビルドと実行
- cmd-RET
- cmd-y
クリーニング
- cmd-K
- make cleanを行う。インターフェースビルダー変更後に必要。
他
環境設定を開く
- cmd-,
2011年11月16日水曜日
Objective-C入門 メソッドとクラス
- 基本的にC言語と同じ。
- 大きく異なるのはメソッド呼び出しくらい。
メソッド呼び出し
メッセージ式
メッセージ式(角括弧[])でメソッド呼び出し。
コロンの前後で1セットという感じだが、最初だけ異なっている。
[object method:引数1 ラベル:引数2 ラベル2:引数3]
Perlでいうと、
$self->method(arg1, { ラベル => 引数2, ラベル2 => 引数3, })
って感じか。
- 引数なしのメソッド呼び出し
- [string length]
- 引数1つ
- [string characterAtIndex: 0]
- 引数2つ
- [string rangeOfString:@"hogehoge" options:NSCaseInsensitiveSearch]
メソッド名はラベルと末尾のコロンも含める
上記の引数2つのメソッド名は、rangeOfString:options: になる。
メソッドの宣言
C言語と同じく、最初に返り値の型を書き、あとは、各引数の型を書くだけ。型は()で囲む。
(NSRange)rangOfString:(NSString*)string options:(NSStringCompareOptions)mask
IDE上の+と-
-がインスタンスメソッド
+がクラスメソッド
クラス宣言(インタフェース)
ヘッダーファイルでクラス宣言する。クラス名は先頭大文字。
@interface クラス名:親クラス名
{
//インスタンス変数
//インスタンス変数はメソッド内の変数と区別するために先頭をアンダーバーにする規則もある
int hoge;
NSString* foo;
}
-(BOOL)isHoge //メソッド宣言
@end
クラスにスコープがない
このため、NS、UI、CAなどの接頭辞がある。
- NS
- Mac OS Xの前身、NEXTSTEPの略
型
型はCと同じものと、Objective-Cのものがある。Objective-Cの型は*を付ける。当然ポインタ参照なわけですね。
クラスはすべてヒープメモリに確保されるので、そのインスタンスをあらわす変数は実体ではなくポインタ。
クラス実装
hoge.mファイルに実装を書いていく。
#import "インタフェースのあるヘッダファイルパス"
@implementation クラス名
-(BOOL)isHoge
{
.......
return .....;
}
@end
wordbreak.jsでforefox8でデザインが崩れた。
JQueryで連続した半角英数字を任意の場所で改行するプラグイン
これを使わせていただいてたのですが、Firefox8でデザインが崩れてしまいました。
原因
- インデントの部分がtextContentで取得されてしまう
以下では、pとspanの間がtextNodeとして取得されてしまいました。
<p class="wordbreak">
<span>hoge<span>
</p>
修正
$(h).each(function(){
if ( /^\s*$/.test(this.textContent) ) {
elm.append(this);
}
else if ( this.nodeType == 3) {
elm.append($.trim(this.textContent.split('').join($.wb.sep)));
}
else {
elm.append($.wb.remake($(this)));
}
});
空白だけか、空の時は何もしない。
this.nodeTypeのところは、this.textContentの中身を調べるって条件ではダメなのかな。
(JavascriptおよびDOMがわかってない)
2011年11月5日土曜日
Excel列名変換問題
Excel列名変換問題で第2回社内プログラミングコンテストを開催してみた(前編)
とりあえず書いてみたら、print reverse $str とかやってしまった。(リストの順番を逆順にするので、この場合なんら変化なし)
問2が難しいのは、問1の成功体験が足かせになるところか。問1が基数変換で解けるものだから、そのまま問2にいくとはまる。例えばZ(=26)の次のAA(27)で、2桁目のAが1で、一桁目のAが0になる。
問1の場合、僕は2位の人と同じように、ordを使用してましたが、
1位の人みたいにループごとに現在の累積値に26をかけて桁をひとつ上げていくのがスマートでした。
ただ2点、Perlらしくないなーと思うのが、
- ハッシュを手書きで登録している
- ハッシュはハッシュスライスで、 @table{'A'..'Z'} = (1..26); とすべき。
- C言語風のループ
好みかもしれませんが、無駄に長いので、、、。
あとC言語風ループなら $i < ($#input+1) じゃなくて $i < scalar @input か$i <= $#inputかなー。
for (my $i=0; $i < @input; $i++)
↓
for my $i (0..$#input)
ソースは書いてみたけど、mooseの練習に書き直してみようと思う。仕事でよく使うようになってきたので。