Windows7でコマンドラインでgitを使う
自宅ではMacのターミナルからgitコマンドを叩いてますが、職場がWindows7なのでWinでもコマンドで叩くためのあれこれ。
1. msysgitインストール
CUIのクライアントソフトとしてmsysgitというものがあります。
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!
- msysgitウィンドウの上部バーを右クリックしてプロパティをクリック
- フォントタブをクリックして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_profile
にsource ~/.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
という風に冗長になる。
スペシャルサンクス
gitのリモートリポジトリをさくらのVPSに設置して自動ビルドさせる方法
前提
すでに公開ディレクトリに走らせているソースコードがある。
今までは一人で管理していたが、複数人でgitで管理することにする。
ローカルからプッシュすると公開ディレクトリに自動でビルドされるようにする
サーバー環境はさくらのVPSでCentOS5.6。
gitはすでにインストール済み。
公開ディレクトリを/var/www/html/website/
とする。
中央リポジトリを/var/www/git/website.git
に置く。
流れ
- 作業グループを作成してユーザーを所属させる
- 中央リポジトリを作成
- 公開ディレクトリ以下をgitで管理
- 公開ディレクトリから中央リポジトリにプッシュ
- 公開ディレクトリを消去して新規作成
- 公開ディレクトリ上で中央リポジトリをクローン
- ディレクトリの権限等をきちんと設定 ←一番大事!
- 中央リポジトリにローカルからプッシュすると公開ディレクトリに自動でビルドさせるようにする
- ローカルからプッシュ
オフラインリファレンス&スニペット管理の「Dash」がすごくいい
Dashとは
OSXのアプリ「Dash」とは、リファレンスを閲覧するためのアプリです。自作スニペットの管理もできます。
良いと思った所を列挙します
リファレンスの数がかなりある
数えてないんですけど、結構あります。数えてないんですけど。
検索が早い
ネイティブアプリで且つ、オフラインだからだと思いますが、表示速度がかなり早いです。呼び出すためのショートカットコマンドを登録しておけば、一瞬で呼び出せます。そうmacならね。
スニペットの管理がしやすい
このDashはスニペットを登録する機能もありますが、finderみたいな感じで登録閲覧できるので、とても管理しやすいです。
僕はテキストエディタはSublimeText2を使っているのですが、どんなスニペットを登録したかの一覧性が悪く、使いづらいと思ってました。
スニペットをどこからでも呼び出せる
これが一番凄い。ST2の場合ST2内でしか登録したスニペットを呼び出せませんが、Dashの場合、起動していればどんなエディタ(ブラウザのtextarea内でさえも)でも呼び出せる。これは凄いぞ。
さらにスニペットファイルをDropboxに置けば複数のMac間でスニペットを共有できます。
余談
スニペット集が配布されているのを見かけるけど、ああ言うの使ってる人って多いのかな。僕は自作スニペットしか使いません。というのも自分で作ったものじゃないと覚えられないから、呼び出すにも呼び出せませんよね?
AjaxにおけるCSRF攻撃対策
前回で近いうちにAjaxのセキュリティについて書きます!と宣言しましたが、あれはつまりCSRF攻撃の対策についてでした。今回はAjaxでCSRF対策を行う方法を書きます。
先に結論
Ajax通信におけるCSRF攻撃対策は通常の遷移時に施す対策と考え方はかわりません。
実装方法
- ログイン時にトークンを生成しセッションオブジェクトにセットし、トークンをクライアントに送信
- クライアント側のjsスクリプト内でトークンをAjax通信時に常に付加するように設定
- サーバー側でAjaxで送信されたトークンの有無とセッションオブジェクト内のトークの一致を確認
- ログアウト時にセッションは全て破棄
ここで生成するトークンはワンタイムではないです。ログイン時にずっと使いまわします。
続きを読むAjaxこと始めまとめ
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(徳丸浩)の日記
続きを読む