Hatena::ブログ(Diary)

寄り道ばかりの お勉強日記★ このページをアンテナに追加 RSSフィード Twitter

引っ越し後の日記はコチラです

tokoromのその他の日記

2012-07-29 ブログ引っ越しします このエントリーを含むブックマーク

  • Gitで記事の管理/更新をしたい
  • 記事の記述をMarkdownで統一したい

など幾つかの理由により、今後は Github Patges & Octoress でブログを書くことに決めました。

何日か試してみていろいろと都合が良さそうなので、

http://www.tokoro.me/

に引っ越しをします。

今後とも宜しくお願いします!

2012-05-17

さくらVPS(CentOS6)にGititをインストール

さくらVPSの環境

  • さくらのVPS 1G
  • CentOS 6 x86_64

まず失敗例

ghcをyumでインストールしたら失敗しました。

具体的には、

$ cabal install pandoc gitit -fhighlighting --reinstall 

cabal: Error: some packages failed to install:
blaze-html-0.4.3.4 failed during the building phase. The exception was:
ExitFailure 1
gitit-0.9.0.1 depends on blaze-html-0.4.3.4 which failed to install.
happstack-server-7.0.1 depends on blaze-html-0.4.3.4 which failed to install.
highlighting-kate-0.5.0.6 depends on blaze-html-0.4.3.4 which failed to
install.
pandoc-1.9.3 depends on blaze-html-0.4.3.4 which failed to install.

こんな感じで blaze-html のインストールに失敗しました。

もしかしたらコンパイラが古いのではとGHCについて検索してみると、yumでインストールしたものは6.12.3で、http://www.haskell.org/ghc/ にある最新版は既に7.4.1になっていました。

ということで、GHCの最新版をyumでなくソースからインストールすることにしました。

ghcのインストール

$ sudo yum erase ghc

$ wget http://www.haskell.org/ghc/dist/7.4.1/ghc-7.4.1-x86_64-unknown-linux.tar.bz2  
$ tar jxf ghc-7.4.1-x86_64-unknown-linux.tar.bz2
$ cd ghc-7.4.1
$ ./configure
$ sudo make install

gititのインストール

そして、再度gititのインストールをリトライ。

$ cabal update

Downloading the latest package list from hackage.haskell.org

$ cabal install pandoc gitit -fhighlighting --reinstall

Registering gitit-0.9.0.1...

$ gitit --version

gitit version 0.9.0.1 +plugins
Copyright (C) 2008 John MacFarlane
This is free software; see the source for copying conditions.  There is no
warranty, not even for merchantability or fitness for a particular purpose.

インストール成功!

gititの起動テスト

$ gitit

で無事に起動ができました。


wgetでレスポンスを取得してみると無事に *Welcome to Gitit!* の文字列が確認できました。

$ wget -q -O - "http://localhost:5001/" 

...
<h1 id="welcome-to-gitit"><a href="#TOC">Welcome to Gitit!</a></h1>
...

2011-07-15

zshでgitの状態(編集有り / 未commit / 未push)を表示する

情報元

基本、

(zsh版)pushし忘れないようにプロンプトに表示するようにした - ゆろよろ日記

のまんまです。

表示イメージ

f:id:tokorom:20110715122939p:image

  • testという名前のブランチにいるので右のほうに「@test」と出ている
  • 次に vi .vimrc とファイルを編集したので「@test-」というように「-」で編集した(unstageな)ファイルがあることを示す
  • 次に git add .vimrc で編集したファイルをステージングすると「@test+」というように「+」でステージングされたファイルがあることを示す
  • 最後に git commit でステージングされたファイルをコミットすると「@test?」というように「?」で未pushのコミットがあることを示す

というようにします。

事前準備

zshのバージョンが 4.3.10 以降である必要がありますので、古いようでしたら事前にupdateが必要です。

.zshrc への設定追加

  • Gitと連携する部分
# gitのブランチ名と変更状況をプロンプトに表示する 
autoload -Uz is-at-least
if is-at-least 4.3.10; then
  # バージョン管理システムとの連携を有効にする 
  autoload -Uz vcs_info
  autoload -Uz add-zsh-hook

  zstyle ':vcs_info:*' enable git
  zstyle ':vcs_info:git:*' check-for-changes true
  zstyle ':vcs_info:git:*' stagedstr "+"
  zstyle ':vcs_info:git:*' unstagedstr "-"
  zstyle ':vcs_info:git:*' formats '@%b%u%c'
  zstyle ':vcs_info:git:*' actionformats '@%b|%a%u%c'

  # VCSの更新時にPROMPTを自動更新する
  function _update_vcs_info_msg() {
    psvar=()
    LANG=en_US.UTF-8 vcs_info
    [[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_"
    psvar[2]=$(_git_not_pushed)
  }
  function _git_not_pushed() {
    if [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ]; then
      head="$(git rev-parse HEAD)"
      for x in $(git rev-parse --remotes)
      do
        if [ "$head" = "$x" ]; then
          return 0
        fi
      done
      echo "?"
    fi
    return 0
  }
  add-zsh-hook precmd _update_vcs_info_msg
fi
  • RPROMPT(右側のほう)に表示させる部分
RPROMPT="%{${fg[green]}%}%1v%2v [%~]%{${reset_color}%}"

%1v が、上記設定の psvar[1] に代入した部分(ブランチ名と+-)を表示するところ

%2v が、上記設定の psvar[2] に代入した部分(?)*1を表示するところ

*1:未pushのコミットがあるかどうか

2011-05-01

dotfilesのgit管理の強化

先日より自分のホームディレクトリ(~/)をdotfilesとしてまとめてgitで管理するようにしていたのだが、

git status

とかしたときに管理対象としたくないファイルがずらずらっと並べられるのが気になっていた。

これらのファイルを1つ1つ .gitignore に加えればこの状態を避けられるとはいえ、それはとっても面倒臭い。


そんなとき、

■ホームディレクトリをGitで簡単に管理するための.gitignore活用法

を見させていただき、逆の発想で

  • いったん全てのファイルをignore対象にする
  • その後に必要なファイルをそこから除外する

ようにすれば良いということが発覚。


ということで、まずは

/*
/.*

で全てのファイルをignore対象にして、その後に、

!/vimfiles
!/.gitconfig
!/.gitignore
!/.tmux.conf
!/.vimrc
!/.zshenv
!/.zshrc

といったかんじでignoreから除外すると良いみたい。

これはイイ!


現状、私の .gitignore はこんなかんじになってます。↓

# まずは全部ignore
/*
/.*
# 管理対象にしたいファイルだけignoreから除外する
!/Library/Application Support/KeyRemap4MacBook/*.xml
!/bin
!/vimfiles
!/.gitconfig
!/.gitignore
!/.gvimrc
!/.screenrc
!/.tmux.conf
!/.vimperatorrc
!/.vimrc
!/.zshenv
!/.zshrc
!/dot.nodoka
# 管理対象のディレクトリ内でも除外したいものはこの下に追加する
.DS_Store
.svn
*.pyc
.netrwhist

2011-04-17

ローカルでtmuxを使ってサーバにSSHログインした後に、そのサーバ上でもtmuxを使いたいときの対処療法

tmuxを常用するようになって逆に困ったこと

前回記事より、tmuxを常用するようになり、逆に困ったことがあります。

それは、普段ローカルのTerminalでもtmuxを使っているため、いざサーバにsshログインしたときにもサーバ上でtmuxを起動し、tmuxが二重になってしまったい場合のことです。

二重になること自体は問題ないのですが、サーバのtmuxの操作をしようとすると、そのtmux用のキー操作がローカルのtmuxに奪われてしまい、サーバのtmuxが操作できないのです。

f:id:tokorom:20110417105748p:image

どっちかのtmuxのキーバインドを変えてしまう?

となると、ローカルかサーバ側かのどちらかのキーバインドを変更するしかなさそうです。

ただ、普段からずっとどちらかのキーバインドを変えておくのも不便です。

ということで、

tmux set-option -ag prefix C-b

といったコマンドで一時的にどちらかのキーバインド(メインで使わないほうの端末)を変更する方向で考えます。

現在の形

私の場合は、.zshenv に以下aliasを定義することにしました。*1

alias tmux-changekey='tmux set-option -ag prefix C-b'
alias tmux-revertkey='tmux set-option -ag prefix C-t'

これで、一時的にキーバインドを変更したいときは

tmux-changekey

戻したくなったら

tmux-revertkey

で戻すという感じにしてます。

*1:普段は C-t をprefixにしている