コンテンツ
Mako Templaters for Pythonメモ1:Makoってなに?
最近Pythonのテンプレートエンジン「Mako」を触ってるんだけど、日本語の情報が全然ないのでまとめてみる。
gitメモ:diffとやり直し
最近久しぶりにgitを触って色々と忘れていたので再度メモ。
mergeを取り消す
mergeを実行したらconflictが大量に出てしまったので取り消したい、という場合、下記を実行。
$ git reset --hard ORIG_HEAD
conflictを解決する
gitにはmergeを実行した場合にconflictを解決するコマンド「git mergetool」がある。conflictしているファイルに対して、順番にdiffツールを実行して編集を促すもの。しかし、Windows上のMSysGit環境で実行したら見事にvimのdiffが実行されたので個人的にはデフォルトでは使えない認定(自分はvimはあまり使えないので)。
$ git mergetool
.gitconfigの「merge」および「mergetool」項目で起動するツールを設定できるそうなので、今度はEmacsに設定してテストしてみようかな。
diffを使う
マニュアルに書いてあるけど、「git diff」コマンドの書式は下記のとおり。
git diff <比較元commit> <比較先commit> [<対象ファイルパス>]
ここで、比較元・比較先commitはハッシュだけでなく、「HEAD」(最新のコミット)や「HEAD^」(最新の1つ前のコミット)、「HEAD^^」(最新の2つ前のコミット)、「HEAD~4」(最新の4つ前のコミット)などのほか、tagも利用可能。
例えば最新のコミットと、その1つ前のコミットでdiffを取るには次のようにする。
$ git diff HEAD^ HEAD hogehoge.py
PythonでCGI経由でファイルアップロード
Webベースで記事作ったりサイトデザインしたりしていると、多量のファイルをアップロードする機会も多々あるのでファイルを自動アップロードするスクリプトを書きたい、という話。
とりあえずググったら「 残高照会メモ: pythonでアップロード 」が出てきたのだが、自前でMIMEエンコーディングしなきゃいけないのがちょっとアレだ。
ちなみにPerlだと下記のような感じでいける。
sub post_attachment {
my $self = shift @_;
my %args = @_;
my $file_name = $args{file}; # filename
my $url = "アップロード先URL";
my $ua = LWP::UserAgent->new( 'agent' => "適当なUserAgent文字列", );
my $req = HTTP::Request::Common::POST $url, Content_Type => 'form-data',
Content => [
file_content => ["$file_name"],
description => "",
op => "addFileForStory", # form "op"の値
sid => $sid, # form "sid"の値
Submit => "Submit", # form "Submit"の値
];
my $resp = $ua->request( $req );
if( $resp->is_error ) {
return 0; #print "upload $file_name: failed.\n";
} else {
return 1; #print "upload $file_name: succeed.\n";
}
}
これをPythonでやりたい。ということで続く。
