Rubyの勉強、はじめました。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


msysGitと日本語

github使い始めた。

リーナス・トーバルスはGitについて講演しているときに、
「Subversionを使っている人がいるなら、
この場から去ったほうがいいかもしれない」と言ったそうだ。

Subversion愛用してたんですが…
そんなに違うものなのかな、まだいまいちわかってない。


で、そんなGitを使い始めたので、Git on Windowsでの日本語について少し。

Gitは文字をUTF8で処理するので、CP932なコマンドプロンプトとかとは相性が悪い。
TortoiseGitなら日本語問題なしだけど、
エディターはvim大好きっ子なのでそのままgit commitしちゃいたい。

Git on コマンドプロンプト with 日本語コミットログの設定方法。


1. 環境変数EDITOR


EDITORという環境変数を新規作成したげて、エディタを指定する。当然vim。
こうしとくとgit commit -a でエディタが立ち上がる。


2. vimの設定


vimrcに以下を追加。
au BufRead COMMIT_EDITMSG set fenc=utf8
これでGitのコミットメッセージ編集する時には、UTF8で処理するようになる。
(COMMIT_EDITMSGがGitのコミットメッセージのファイル名)


git logとかしちゃうと文字化けしちゃいますが、
TortoiseGitから見ればちゃんと表示できてる。

とりあえずはこれでよいかな。

git logで文字化けせずに表示する方法、誰か教えて!
スポンサーサイト


MechanizeでZipPluggableParser

ちょっと調べたけど検索にひっかかってこなかったので、
Mechanize用ZIPファイルパーサ置いておきます。
解凍にはzipruby使う想定。
zip_parser.rb
require 'rubygems'
require 'mechanize'
require 'zipruby'

class ZipParser < Mechanize::File
  def initialize(uri = nil, response = nil, body = nil, code = nil)
    super(uri, response, body, code)
  end

  def open
    streaming = lambda { return @body.slice!(0, 256) }

    Zip::Archive.open_buffer(streaming) {|zip_ar| yield(zip_ar)}
  end
end
Mechanize::PluggerableParserってのでMIMEタイプに応じたパーサを設定できるそうな。
#openでZip::Archiveを渡せば使いやすいかなと。

使い方はこんな感じ。
require 'rubygems'
require 'mechanize'
require 'zip_parser'

agent = Mechanize.new

agent.pluggable_parser["application/zip"] = ZipParser
agent.pluggable_parser["application/octet-stream"] = ZipParser

url = 'http://github.com/zeero/zeero_work/raw/master/zip_parser.zip'
agent.get(url) {|file|
  file.open {|zip_ar|
    zip_ar.each do |zf|
      puts zf.name
    end
  }
}

7行目でMIMEタイプ別でパーサを登録。
'application/zip'だけでいいと思いきや、
githubからだと'application/octet-stream'でくるのでそちらも登録。
これでagent.getでZipParserが生成される。
あとはopenでZip::Archiveつくって、ファイル名の一覧表示させる、と


FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。