バカンス駆動開発

この前バカンスって言ったら「古っ」って言われました

Windows7でコマンドラインでgitを使う

自宅ではMacのターミナルからgitコマンドを叩いてますが、職場がWindows7なのでWinでもコマンドで叩くためのあれこれ。

1. msysgitインストール

CUIのクライアントソフトとしてmsysgitというものがあります。

Git for Windows

bashでgitを扱う感じをWindowsでも再現したみたいな感じのものだと思います。使い勝手はMacターミナルと同じ感じです。sshとかgitコマンド以外のコマンドも使えます。昔のバージョンは日本語入力自体できないので最新版でよろしくお願い致します。

WindowsでgitをGUIで使うためのクライアントである「 Git Extension 」をインストールすると同時にインストールされますが、これはバージョンが古い気がするので要注意です。msysgitを単体で入れなおした方が良いかもしれません。

2. 日本語まわり補強

lsコマンドで日本語ファイルが文字化け

このオプションつければOKです。

ls --show-control-chars

git statusで日本語ファイルが文字化け

これを打てばOK

git config --global core.quotepath false

fontがどうとかエラーメッセージが出る

こんなエラーが出る場合。

Warning: Your console font probably doesn’t support Unicode. If you experience strange characters in the output, consider switching to a TrueType font such as Lucida Console!

  1. msysgitウィンドウの上部バーを右クリックしてプロパティをクリック
  2. フォントタブをクリックしてMS ゴシックを選択してOK

3. その他設定

ブランチ名をタブ補完できるようにする

こちらのファイルをコピーしてファイル名を.git-completion.bashとかで保存。保存場所はhomeで宜しくお願いします

git/contrib/completion/git-completion.bash at master · git/git

同じくhome/.bash_profileを作成してsource ~/.git-completion.bashと書き込む。msysgit再起動で反映されます。

エイリアスを設定

home/.bashrcを作成。

// .bashrc
alias ls='ls  --show-control-chars'    //さっきの日本語用オプションをエイリアスに。
alias dev='cd /path/to/dev-dir/'    'dev'と叩くと開発現場直行するように。

あとは各自よく使うコマンドとかオプションをエイリアスにしてください。

先ほどの.bash_profilesource ~/.bashrcと書き込む。msysgit再起動。

git status, git pull等を早くする

// ファイル、インデックスの比較を並列実行
git config --global core.preloadindex true

// キャッシュを有効化してるっぽい
git config --global core.fscache true

gitコマンドのエイリアス

~/.gitconfigを開いて以下を書き込んで保存。

[alias]
    alias = !git config --list | grep 'alias\\.' | sed 's/alias\\.\\([^=]*\\)=\\(.*\\)/\\1\\\t => \\2/' | sort
    b = branch -a
    br = browse-remote
    ci = commit 
    co = checkout
    d = diff
    dc = diff --cached
    di = diff   
    dic = diff --cached
    f = fetch --prune
    fs = !git f && git su
    ignore = !([ ! -e .gitignore ] && touch .gitignore) | echo $1 >> .gitignore
    info = remote show origin
    l = log --graph -n 20 --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %s %C(green)- %an, %cr%Creset'
    ll = log --stat --abbrev-commit
    ln = log --graph -n 20 --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %s %C(green)- %an, %cr%Creset' --name-status
    lp = log --oneline -n 20 -p
    ls = log --stat --abbrev-commit -n 1 # display previous log
    s = status --short --branch
    st = status 
    su = submodule update

あとこれ以外にもこれとかよく使います。

    dl = branch -D    //ブランチを消去
    cim = commit -m    //コミットコメントを同時に

他に何かいい設定が見つかれば追記していきます。

追記

// `git p`で今作業しているブランチをプッシュする
p = !git push origin `git rev-parse --abbrev-ref HEAD`

この設定をしていないと、master以外のブランチで作業中のときはgit push origin brunchABCという風に冗長になる。

スペシャルサンクス

  1. msysgit で日本語を使いたい - Qiita
  2. bash で git コマンドのブランチ名などを補完するには - Qiita
  3. 天下一gitconfig大会

gitのリモートリポジトリをさくらのVPSに設置して自動ビルドさせる方法

前提

すでに公開ディレクトリに走らせているソースコードがある。
今までは一人で管理していたが、複数人でgitで管理することにする。
ローカルからプッシュすると公開ディレクトリに自動でビルドされるようにする
サーバー環境はさくらのVPSでCentOS5.6。
gitはすでにインストール済み。
公開ディレクトリを/var/www/html/website/とする。
中央リポジトリ/var/www/git/website.gitに置く。

流れ

  1. 作業グループを作成してユーザーを所属させる
  2. 中央リポジトリを作成
  3. 公開ディレクトリ以下をgitで管理
  4. 公開ディレクトリから中央リポジトリにプッシュ
  5. 公開ディレクトリを消去して新規作成
  6. 公開ディレクトリ上で中央リポジトリをクローン
  7. ディレクトリの権限等をきちんと設定 ←一番大事!
  8. 中央リポジトリにローカルからプッシュすると公開ディレクトリに自動でビルドさせるようにする
  9. ローカルからプッシュ
続きを読む

オフラインリファレンス&スニペット管理の「Dash」がすごくいい

Dash (Docs & Snippets)

Dash (Docs & Snippets)

  • Bogdan Popescu
  • 開発ツール
  • 無料

Dashとは

OSXのアプリ「Dash」とは、リファレンスを閲覧するためのアプリです。自作スニペットの管理もできます。

良いと思った所を列挙します

リファレンスの数がかなりある

f:id:egapool:20140113223023p:plain

数えてないんですけど、結構あります。数えてないんですけど。

検索が早い

ネイティブアプリで且つ、オフラインだからだと思いますが、表示速度がかなり早いです。呼び出すためのショートカットコマンドを登録しておけば、一瞬で呼び出せます。そうmacならね。

スニペットの管理がしやすい

このDashはスニペットを登録する機能もありますが、finderみたいな感じで登録閲覧できるので、とても管理しやすいです。

僕はテキストエディタはSublimeText2を使っているのですが、どんなスニペットを登録したかの一覧性が悪く、使いづらいと思ってました。

スニペットをどこからでも呼び出せる

これが一番凄い。ST2の場合ST2内でしか登録したスニペットを呼び出せませんが、Dashの場合、起動していればどんなエディタ(ブラウザのtextarea内でさえも)でも呼び出せる。これは凄いぞ。

さらにスニペットファイルをDropboxに置けば複数のMac間でスニペットを共有できます。

余談

スニペット集が配布されているのを見かけるけど、ああ言うの使ってる人って多いのかな。僕は自作スニペットしか使いません。というのも自分で作ったものじゃないと覚えられないから、呼び出すにも呼び出せませんよね?

AjaxにおけるCSRF攻撃対策

前回で近いうちにAjaxのセキュリティについて書きます!と宣言しましたが、あれはつまりCSRF攻撃の対策についてでした。今回はAjaxCSRF対策を行う方法を書きます。

先に結論

Ajax通信におけるCSRF攻撃対策は通常の遷移時に施す対策と考え方はかわりません。

実装方法

  1. ログイン時にトークンを生成しセッションオブジェクトにセットし、トークンをクライアントに送信
  2. クライアント側のjsスクリプト内でトークンをAjax通信時に常に付加するように設定
  3. サーバー側でAjaxで送信されたトークンの有無とセッションオブジェクト内のトークの一致を確認
  4. ログアウト時にセッションは全て破棄

ここで生成するトークンはワンタイムではないです。ログイン時にずっと使いまわします。

続きを読む

Ajaxこと始めまとめ

Ajaxこと始めまとめ

jQuery.ajax()のまとめ: 小粋空間

こと始めにはもってこいのエントリです。

jQuery.ajax(settings) - jQuery API 1.4.4 日本語リファレンス - StackTrace

どんなプロパティがあるか?を使い方と合わせて見やすくまとめられています。

サーバー側(PHP)

レスポンスのHTTPヘッダー

JOSNを返す場合

JSONを返す場合はしっかりヘッダにjsonである旨を記載しましょう。

Content-Type: application/json

理由はこちらのブログにとても詳しく書いてあります。有難うございます。 PHPのイタい入門書を読んでAjaxのXSSについて検討した(3)~JSON等の想定外読み出しによる攻撃~ - ockeghem(徳丸浩)の日記

続きを読む