<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xml:lang="ja">
<channel>
<title>かおすふぃーるど - kaosfield Blog</title>
<link>http://d.hatena.ne.jp/kaosf/</link>
<description>かおすふぃーるど - kaosfield Blog</description>
<dc:creator>kaosf</dc:creator>


<item>
<title>[Ruby][HTML]Ruby の Mechanize を使って Yahoo! JAPAN にログインする</title>
<link>http://d.hatena.ne.jp/kaosf/20120229/1330519724</link>

<description><![CDATA[
<div class="section">
<p><a href="http://rubygems.org/gems/mechanize" target="_blank">mechanize</a> は version 2.3 を使用 (現時点最新)．</p>
<p>要約 : 正しいブラウザであると見せかけ .albatross を倒し連続アクセスを避ければ良い</p>
<p>(2012-03-05 追記) 単なる code snippet なんで gist に移しました</p>
<p><a href="https://gist.github.com/1976653" target="_blank">login to Yahoo! JAPAN with Mechanize on Ruby - Ruby の Mechanize を使って Yahoo! JAPAN にログインする - Gist</a></p>
<p><del>(2012-03-03 追記) Ruby コードは GitHub に置いてみました．</del></p>
<p><del><a href="https://github.com/kaosf/login-to-yahoo-jp-with-mechanize-on-ruby/blob/master/login-test.rb" target="_blank">kaosf / login-to-yahoo-jp-with-mechanize-on-ruby | GitHub</a></del></p>
<p>課題</p>

<ul>
<li>agent.user_agent は何ぞ他にもっと短く書けないのか</li>
<li>JavaScript は Mechanize では扱えないので Watir や Selenium を検討する</li>
</ul>
<p>参考</p>
<p><a href="http://www.tomiflu.com/prog/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E7%94%A8%E3%81%84%E3%81%A6yahoojapan%E3%81%B8%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/" target="_blank">プログラムを用いたYahoo!Japanへのログイン手法 | Tomi-flu</a></p>
<p><a href="http://mechanize.rubyforge.org/" target="_blank">mechanize-2.3 Documentation</a></p>
</div>
]]></description>

<dc:creator>kaosf</dc:creator>

<pubDate>Wed, 29 Feb 2012 12:48:44 GMT</pubDate>



<category>Ruby</category>

<category>HTML</category>


</item>

<item>
<title>[Ruby][Ubuntu]RVM から rbenv + ruby-build に乗り換えました (on Ubuntu 10.04 Server)</title>
<link>http://d.hatena.ne.jp/kaosf/20120229/1330517762</link>

<description><![CDATA[
<div class="section">
<p>複数の Ruby 環境を管理するために今まで RVM を使っていましたが，rbenv と ruby-build を使う方が便利だよとか Bundler あるのに gemset とかオワコンとか聞いた気がするので乗り換えました．</p>
<p>簡単に概念を説明すると，rbenv で複数の Ruby 環境を管理出来，<del>ruby-build を使うことで自分でいちいち Ruby をビルドする手間が省けるようになる</del>，という感じです．</p>
<p>(2012-03-06 追記) 嘘でした．RVM 同様，自分でビルドはさせられます．なので build-essential や zlib1g-dev パッケージは必要です．</p>
<p>前準備 (curl も必要でした)</p>
<pre class="syntax-highlight">
sudo aptitude install git-core curl
</pre>

<p><del>もしかすると，以下も必要かも？</del>必要です．zlib1g-dev がまず必要であり，rails 使おうとするなら libreadline-dev (無いと rails c 出来ない) や libssl-dev (無いとブラウザからアクセスしたときエラー出る) も必要です．後から依存するパッケージをインストールした場合は rbenv install 1.9.2-p290 等でリビルドする必要がある…かと．</p>
<pre class="syntax-highlight">
sudo aptitude install libreadline-dev libssl-dev zlib1g-dev
</pre>

<p>さて…</p>
<p>「<a href="http://dic.nicovideo.jp/a/%E3%83%9C%E3%83%AB%E3%82%AC%E5%8D%9A%E5%A3%AB%E3%80%81%E3%81%8A%E8%A8%B1%E3%81%97%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84!" target="_blank">RVM、お許しください！</a>」</p>
<pre class="syntax-highlight">
rvm seppuku
</pre>

<p>なおこのとき，自分で作った随所の .rvmrc ファイルは自動的に消えないので手動で消してねって警告が出ました．別にあっても困りませんので見つけたら消していけばいいかと．あと，.zshrc とか .bash_profile とかその辺に残っている</p>
<pre class="syntax-highlight">
[[ -s &#34;/home/ka/.rvm/scripts/rvm&#34; ]] &#38;&#38; source &#34;/home/ka/.rvm/scripts/rvm&#34;
</pre>

<p>も消しておきましょう．</p>
<p>ここから rbenv + ruby-build の準備 + 構築です．基本的に GitHub の解説通りにコマンド打っていけば OK です．</p>
<p><a href="https://github.com/sstephenson/rbenv" target="_blank">sstephenson/rbenv - GitHub</a></p>
<p><a href="https://github.com/sstephenson/ruby-build" target="_blank">sstephenson/ruby-build - GitHub</a></p>
<p>このエントリは，GitHub に書いてある解説を見て試した一人の人間の単なる結果です．いずれ古くなるでしょうし，英語読むのしんどいからちょっと参考に…　程度にお使い下さい．</p>
<pre class="syntax-highlight">
cd
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo &#39;export PATH=&#34;$HOME/.rbenv/bin:$PATH&#34;&#39; &#62;&#62; ~/.zshenv
echo &#39;eval &#34;$(rbenv init -)&#34;&#39; &#62;&#62; ~/.zshenv
exec $SHELL
mkdir -p .rbenv/plugins
cd .rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git
</pre>

<p>後はインストールしたい Ruby を以下のようにインストール．自分でビルドしないとは言えファイルの展開には結構時間掛かる．</p>
<pre class="syntax-highlight">
rbenv install 1.9.3-p125
rbenv install 1.9.2-p290
rbenv rehash
</pre>

<p>デフォルトで使うバージョンを指定するには</p>
<pre class="syntax-highlight">
rbenv global 1.9.3-p125
</pre>

<p>どこか特定のディレクトリであるバージョンの Ruby が使いたいなら</p>
<pre class="syntax-highlight">
cd somewhere
rbenv local 1.9.2-p290
</pre>

<p>Rails とか Bundler とかインストールしたら</p>
<pre class="syntax-highlight">
rbenv rehash
</pre>

<p>結構忘れやすいので注意．</p>
<p>参考</p>
<p><a href="http://twilog.org/ka_/date-120218" target="_blank">か(@ka_)/2012年02月18日 - Twilog</a></p>
</div>
]]></description>

<dc:creator>kaosf</dc:creator>

<pubDate>Wed, 29 Feb 2012 12:16:02 GMT</pubDate>



<category>Ruby</category>

<category>Ubuntu</category>


</item>

<item>
<title>[Heroku][PostgreSQL][Rails]ローカルで dump した PostgreSQL のバックアップを Heroku に restore する</title>
<link>http://d.hatena.ne.jp/kaosf/20111214/1323876555</link>

<description><![CDATA[
<div class="section">
<p>ローカルの動作環境は以下の通り．</p>

<ul>
<li>sakura VPS 512</li>
<li>Ubuntu 10.04 LTS</li>
<li>PostgreSQL 8.4</li>
<li>heroku-gem 2.16.2</li>
</ul><p>まず heroku で pgbackups という addon を導入しておく．現時点では以下のコマンドで OK<span class="footnote"><a href="/kaosf/#f1" name="fn1" title="半年も経過すると変わっている可能性は非常に高い">*1</a></span>．</p>
<pre class="syntax-highlight">
$ heroku update
$ heroku addons:add pgbackups
</pre>

<p>Heroku ではない何処かに既にある PostgreSQL のデータベースを dump しておき，それをどこか DL 可能な場所にアップする．</p>
<p>私の場合は，自前のサーバからバックアップし，自前の web サーバにアップした．</p>
<pre class="syntax-highlight">
# まずバックアップ
$ su - postgres
$ pg_dump &#60;DATABASENAME&#62; -F c -f &#60;DUMPFILE&#62;
$ cp &#60;DUMPFILE&#62; &#60;どこか&#62;
$ exit
</pre>

<p>で，&#60;DUMPFILE&#62; をどこか HTTP で DL 可能な場所にアップする．</p>
<p>そこの URL を &#60;DUMPFILE_URL&#62; とする．</p>
<p>まず heroku pgbackups のヘルプを読んでみる．</p>
<pre class="syntax-highlight">
$ heroku pgbackups --help
Usage: heroku pgbackups

 list captured backups

Additional commands, type &#34;heroku help COMMAND&#34; for more details:

  pgbackups:capture [DATABASE]                           # capture a backup from a database id
  pgbackups:destroy BACKUP_ID                            # destroys a backup
  pgbackups:restore [&#60;DATABASE&#62; [BACKUP_ID|BACKUP_URL]]  # restore a backup to a database
  pgbackups:url [BACKUP_ID]                              # get a temporary URL for a backup
</pre>

<p>上記のように書いてあるので，pgbackups:restore を試してみる．</p>
<pre class="syntax-highlight">
$ heroku pgbackups:restore &#60;DATABASENAME&#62; &#60;DUMPFILE_URL&#62;
</pre>

<p>すると，以下のようなエラーが．</p>
<pre>
 !    Could not resolve database &#60;DATABASENAME&#62;
 !
 !    Available databases:
 !    SHARED_DATABASE (DATABASE_URL)
&#91;1]
</pre>

<p>よく分からないが SHARED_DATABASE が Available とのことなので，以下のコマンドを打ってみる．</p>
<pre class="syntax-highlight">
$ heroku pgbackups:restore SHARED_DATABASE &#60;DUMPFILE_URL&#62;
</pre>

<p>すると以下のような出力があり，破壊的な動作だからと警告が出ている．</p>
<pre>
SHARED_DATABASE (DATABASE_URL)  &#60;---restore---  &#60;DUMPFILE&#62;

 !    WARNING: Potentially Destructive Action
 !     This command will affect the app: &#60;CUSTOM_DOMAIN&#62;
 !    To proceed, type &#34;&#60;CUSTOM_DOMAIN&#62;&#34; or re-run this command with --confirm &#60;CUSTOM_DOMAIN&#62;

&#62; 
</pre>

<p>ここで入力待ちになっている．処理をするために，&#60;CUSTOM_DOMAIN&#62; と入力するか --confirm &#60;CUSTOM_DOMAIN&#62; とオプションを付けてコマンドをもう一回実行しろと言っている．なので &#60;CUSTOM_DOMAIN&#62; と入力する．</p>
<pre>
&#62; &#60;CUSTOM_DOMAIN&#62;
Retrieving... done
Restoring... done
</pre>

<p>ここで特にエラーも出ずに終了．</p>
<p>そして http://&#60;CUSTOM_DOMAIN&#62;.herokuapp.com にブラウザからアクセスして確認すると，restore がちゃんと出来ていた．データベースの中身がちゃんと入っていた．</p>
<p>すごい！</p>
<p>そもそもなんでこんなことになったかって…　development 環境で，動作確認のためだったのに本番に入れていいデータを 10 件くらい入力してしまっていて，これをまた入力するのめんどいな…　そのまま restore 出来ないのかな…　となったからです ^^;</p>
<p>本番環境に restore するって，ちょっとおかしいためなのかその方法を書いてる記事が見つかりませんでした．バックアップの手法の解説は公式のマニュアルも含めて 3 件ほど見つけましたが…</p>
<p>普通に再度入力した方が明らかに早かったですが，いい練習にはなりましたｗ</p>
<p>ちなみに，db/schema.rb はローカルも Heroku 側も一致してないとダメ…だと思います．私が今回試したこの例では，一致していました．違っていると，restore 時にエラーが出るのかもしれません．</p>
<p>あと SHARED_DATABASE ってのが何のことなのかよく分からないので，どなたかご存知でしたらご教授下さい (他力本願)．</p>
<p><del>あとそもそも外部に PostgreSQL の database があるなら，heroku_external_db なる gem がある (<a href="https://github.com/nbudin/heroku_external_db" target="_blank">nbudin/heroku_external_db - GitHub</a>) そうなので，これ使う方がいいかもしれません．まだ私は使ってないので詳しくは分かりませんが…</del>←heroku_external_db は MySQL を使うためのもののようです．PostgreSQL ならそもそも gem なんて無くて良かった．そのための方法を以下にまずは簡単に追記．</p>
<p>2011-12-24T23:08:00+09:00 追記</p>
<p>heroku config コマンドで，Heroku のデプロイされた環境における環境変数が確認出来る．ここで，DATABASE_URL という値があるが，これがデフォルトだと </p>
<pre>
DATABASE_URL =&#62; postgres://なんじゃらかんじゃらamazonaws.com/なんとか
</pre>

<p>となっているはずである．(これは SHARED_DATABASE_URL の値と同じになっているはずである．) 実は，ここを自分で作った DB に接続出来るものに書き換えるだけで，外部の PostgreSQL の DB が使える．変更の方法は以下の通り．</p>
<pre class="syntax-highlight">
heroku config:add DATABASE_URL=postgres://&#60;USRENAME&#62;:&#60;PASSROD&#62;@&#60;HOSTNAME or IPADDRESS&#62;:&#60;PORT&#62;/&#60;DATABASENAME&#62;
</pre>

<p>この辺の仕様に関しては，PostgreSQL の領域である．</p>
<p>これで私は今現在，sakura VPS 512 上に用意した PostgreSQL に Heroku から接続してやることに成功している．</p>
<p>追記ここまで</p>
<p>参考記事</p>

<ul>
<li><a href="http://www.sraoss.co.jp/PostgreSQL/Manual/document/8.4/html/app-pgdump.html" target="_blank">pg_dump</a></li>
<li><a href="http://devcenter.heroku.com/articles/pgbackups" target="_blank">Heroku | Dev Center | Heroku PG Backups</a></li>
<li><a href="http://d.hatena.ne.jp/ruedap/20110223/ruby_heroku_database_postgresql_backup" target="_blank">HerokuでDBのデータをバックアップする - アインシュタインの電話番号</a></li>
<li><a href="http://journal.sooey.com/29" target="_blank">HerokuにPG Backupsというアドオンが加わり、Heroku上のPostgreSQLからダンプ取得・リストアが簡単にできるようにな... - Sooey</a> ※情報は古い</li>
</ul>
<p>追加 2011-12-24T23:08:00+09:00</p>

<ul>
<li><a href="http://devcenter.heroku.com/articles/heroku-postgresql#specifying_and_promoting_databases" target="_blank">Heroku | Dev Center | Heroku PostgreSQL # Specifying and Promoting Databases</a></li>
<li><a href="http://rina.jpn.ph/~rance/linux/postgresql/connect.html" target="_blank">他ホストから接続するための設定</a> (PostgreSQL)</li>
<li><a href="http://d.hatena.ne.jp/ruedap/20110503/ruby_heroku_web_app_development_tips_5" target="_blank">HerokuでWebアプリ開発を始めるなら知っておきたいこと (5)環境変数ENV - アインシュタインの電話番号</a></li>
</ul>
</div>
<div class="footnote">
<p class="footnote"><a href="/kaosf/#fn1" name="f1">*1</a>：半年も経過すると変わっている可能性は非常に高い</p>
</div>
]]></description>

<dc:creator>kaosf</dc:creator>

<pubDate>Wed, 14 Dec 2011 15:29:15 GMT</pubDate>



<category>Heroku</category>

<category>PostgreSQL</category>

<category>Rails</category>


</item>

<item>
<title>Windows 7 で yamy を使ってキー配列を変更 (Windows XP での窓使いの憂鬱の後継)</title>
<link>http://d.hatena.ne.jp/kaosf/20111122/1321969965</link>

<description><![CDATA[
<div class="section">
<p>窓使いの憂鬱は色々な事情から Windows VISTA/7 で使えなくなったようです．で，その後継に yamy なるツールがあるそうです．</p>
<p>とりあえず設定ファイルの書き方は窓使いの憂鬱そっくりなので，助かりました．何とか適当にググってるだけで従来 Windows XP で行なっていたことは実現出来ました．で，後の自分のためにもメモを残しておきます．</p>
<p>実現したいことは，</p>

<ul>
<li>日本語 109 キーボードを US 配列にする</li>
<li>US 配列にした上で ] キーを Enter キーにする (US 配列ではこの位置が Enter なので)</li>
<li>CapsLock を Left Control にする</li>
<li>US 配列にしたせいで Space になってしまう無変換キーを IME 起動キーにする</li>
<li>US 配列にしたせいで Space になってしまう変換キーを変換キーに戻す</li>
</ul>
<p>です．手順は以下の通り．</p>

<ol>
<li>yamy をダウンロードする．今回 DL したのは "YAMY 0.03 (UNICODE)"</li>
<li>何処でもいいので展開する．</li>
<li>yamy.ini の escapeNSLKeys = 0 を 1 に変更する．</li>
<li>yamy.exe と同じ階層に .mayu を用意する</li>
<li>yamy.exe を「管理者として実行」する．</li>
</ol>
<p>.mayu ファイルの内容は以下の通り．</p>
<pre>
include &#34;109.mayu&#34;
include &#34;104on109.mayu&#34;
def subst &#42;RightSquareBracket = &#42;Enter
def subst &#42;E0英数 = &#42;E0英数
mod control += E0英数
key &#42;E0英数 = &#42;LControl
def subst &#42;変換 = &#42;変換
def subst &#42;E0無変換 = $ToggleIME
</pre>

<p>注意する点は，窓使いの憂鬱で「英数」「無変換」と書かれていたものを「E0英数」「E0無変換」と書く必要があること．E0 (O (alphabet) じゃなく 0 (zero)) であること注意．</p>
<p>"def subst *E0英数 = *E0英数" の行の設定は無意味に見えるが，その理由は<a href="http://d.hatena.ne.jp/kaosf/20101120" target="_blank">日本語キーボードで英語配列 + 色々な設定 (Windows XP) - かおすふぃーるど - kaosfield Blog</a> (私の過去のエントリ) を参照．</p>
<p>参考サイト</p>

<ul>
<li><a href="http://d.hatena.ne.jp/kenhys/20091121/1258791497" target="_blank">Windows 7でCtrlとCapsLockを入れ替える方法 - ひとりしずかに。</a></li>
<li><a href="http://sourceforge.jp/ticket/browse.php?tid=17575&group_id=4424" target="_blank">チケット #17575: 「英数(CapsLock)」「半角・全角」「ひらがな」の3キーが正しくフックできない - Yet Another Mado tsukai no Yuutsu - SourceForge.JP</a></li>
<li><a href="http://d.hatena.ne.jp/LM-7/20090614/1244980470" target="_blank">Vista/Windows 7におけるキーボードカスタマイズ問題 - A Successful Failure</a></li>
</ul>
<p>ちなみに .mayu ファイルは普通にファイル名変更では作れないので，例えば a.txt を .mayu の内容で編集しておいて，コマンドプロンプトで</p>
<pre>
move a.txt .mayu
</pre>

<p>としてやれば良い．</p>
</div>
]]></description>

<dc:creator>kaosf</dc:creator>

<pubDate>Tue, 22 Nov 2011 13:52:45 GMT</pubDate>




</item>

<item>
<title>窓使いの憂鬱 for Happy Hacking Keyborad Professional 2 (HHK Pro2)</title>
<link>http://d.hatena.ne.jp/kaosf/20111004/1317733033</link>

<description><![CDATA[
<div class="section">
<p>基本的に高性能過ぎて涎が出そうになる HHK Pro2 ですが，キーが少なくて個人的にはちょっと使い辛いと思うのも事実．(参考 : <a href="http://www.pfu.fujitsu.com/hhkeyboard/hhkbpro2/standard.html" target="_blank">Happy Hacking Keyboard HHKB Professional2 | 標準モデル | PFU</a>)</p>
<p>ということで，ディップスイッチと窓使いの憂鬱で使いやすいようにしよう！</p>
<p>以下の目的を達成するためのディップスイッチと窓使いの憂鬱の設定ファイルを書き記します．</p>

<ul>
<li>英語配列</li>
<li>Esc と Grave/Tilde (` と ~) の位置入れ替え</li>
<li>左下の Alt (Opt) キーを「無変換」にしてこのキーで IME 起動</li>
<li>右下の Alt (Opt) キーを「変換」</li>
</ul>
<p>以前書いた「<a href="http://d.hatena.ne.jp/kaosf/20101120" target="_blank">日本語キーボードで英語配列 + 色々な設定 (Windows XP)</a>」の設定も参考にします．</p>
<p>ディップスイッチは 3 と 5 を ON に，他は OFF に．</p>
<p>(※考えてみたらこの設定って今回の内容と本質的に関係ない気がする．)</p>
<p>dot.mayu とか .mayu とかに書いておくべき設定は以下の通り．</p>
<pre>
include &#34;109.mayu&#34;
include &#34;104on109.mayu&#34;
keymap Global
def subst &#42;Esc = &#42;$GRAVE_ACCENT
def subst S-&#42;Esc = &#42;$TILDE
def subst &#42;半角/全角 = &#42;Esc
def subst &#42;変換 = &#42;変換
def subst &#42;無変換 = $ToggleIME
</pre>

<p>Windows XP 側では，普通に日本語キーボードのドライバを使うよう設定しておきます (つまり何もしない)．</p>
<p>詳しい解説は…　聞きたい人はコメントして下さい．コメントしてくれたら，やる気が起動して書きます (公約)．</p>
<p>でも keymap Global の意味とかもう大方忘れちゃってるなぁ…</p>
<p>まずは<a href="http://mayu.sourceforge.net/mayu/doc/CUSTOMIZE-ja.html" target="_blank">窓使いの憂鬱のオンラインマニュアル 7. customize</a>を読んだ方が早いかも…</p>
</div>
]]></description>

<dc:creator>kaosf</dc:creator>

<pubDate>Tue, 04 Oct 2011 12:57:13 GMT</pubDate>




</item>

<item>
<title>Git 練習の件</title>
<link>http://d.hatena.ne.jp/kaosf/20111004/1317728731</link>

<description><![CDATA[
<div class="section">
<p>サポーターが集まるまで毎日やるのはやめときますｗ</p>
<p>ただ，ミスった commit を無かった事にしたいとか，特定の revision まで戻って別の方向でやり直したいとかいうことを早速やる必要性が出てきたので，また色々実験してます．</p>
<p>そこで試行錯誤した結果は適当にメモってる (手書き) ので，それをまた適当に公開していこうかなと思います．</p>
<p>kezoku.com にて宣言したのは，果てさてどう扱えばいいのか… ^^;</p>
</div>
]]></description>

<dc:creator>kaosf</dc:creator>

<pubDate>Tue, 04 Oct 2011 11:45:31 GMT</pubDate>




</item>

<item>
<title>[Git][Ubuntu]Git を使えるようになるまで頑張る その 1</title>
<link>http://d.hatena.ne.jp/kaosf/20110927/1317135265</link>

<description><![CDATA[
<div class="section">
<p><a href="http://tomykaira.github.com/HowToGit_tddbc" target="_blank">Git のいろは</a></p>
<p>ここを見ながら適当に色々やってみた結果です．</p>
<p>動作環境は，さくら VPS 512 上の Ubuntu 10.04 です．</p>
<pre class="syntax-highlight">
$ sudo aptitude install git-core
</pre>

<p>で Git はインストールされています (RVM のために既にインストールはしていました)．</p>
<p>まず，使えるエディタを Vim に変更したかったので，Twitter で軽く質問的な tweet を投げました．そして返って来た返答がこちら．</p>
<pre class="syntax-highlight">
$ git config --global core.editor vim
</pre>

<p>※core.editor = vim と誤って記載していたのを修正</p>
<p>もしくは</p>
<pre class="syntax-highlight">
$ export EDITOR=vim
</pre>

<p>後者の方は，.bashrc なり .zshrc なりに書いておけばいいでしょう．</p>
<p>とりあえず私は前者を実行しました．このとき，何のレスポンスも無かったので変更されてるのかどうか分かりませんでしたが，Twitter で man git-var で解説を見てご覧と言われたので，見てみたら，どうやら</p>
<pre class="syntax-highlight">
$ git var -l
</pre>

<p>で確認出来そうでした．実際 core.editor = vim となっていました．</p>
<p>また，この設定は $HOME/.gitconfig にも記載されていました．</p>
<p>さて，Git のいろはの最初の方だけを見ながら，ひとまず rollback 的な動作はまったく考えず，commit の繰り返しだけとにかくやってみよう，ということで実験．</p>
<pre class="syntax-highlight">
$ cd ~
$ mkdir -p work/git/test0
$ cd work/git/test0
</pre>

<p>とりあえず適当に Git 実験用ディレクトリ作ってそこに移動して…</p>
<pre class="syntax-highlight">
$ git init
</pre>

<p>はい，なんとこれだけでリポジトリが作られるようです．</p>
<p>ここで Git の幾つかの機能を実験．</p>
<pre class="syntax-highlight">
$ git status
$ git diff
$ git log
</pre>

<p>git status で</p>
<pre>
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use &#34;git add&#34; to track)
</pre>

<p>…と言われますね．</p>
<p>git diff は何も出ません．そりゃ何もしてないのだから差分は何も無いわけですな．</p>
<p>git log も</p>
<pre>
fatal: bad default revision &#39;HEAD&#39;
</pre>

<p>まだログは何も無い．エラー的な文章になってる意味は分かりません．</p>
<p>さて，ファイルを作ってみます．</p>
<pre class="syntax-highlight">
$ touch a.txt
</pre>

<p>ここで同様に 3 つのコマンドを実行してみると git status だけ結果が変わってます．</p>
<pre>
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use &#34;git add &#60;file&#62;...&#34; to include in what will be committed)
#
#       a.txt
nothing added to commit but untracked files present (use &#34;git add&#34; to track)
</pre>

<p>ははぁ．a.txt を git add でどうにかしなさい，というような感じですね．</p>
<p>git add は，Git のいろはでも「追跡対象に追加する」という説明以外は特に説明もなく出てますね．</p>
<p>じゃあやりましょう．</p>
<pre class="syntax-highlight">
$ git add a.txt
$ git commit
</pre>

<p>git commit した時点で Vim が起動されたと思います．されてない人は…　環境変数読み直すとかが出来てない可能性が…？</p>
<p>で，この辺 Subversion と同じで私は何となく分かります．要するに，1 行目に commit message を追加すればいいのでしょう．2 行目以降の # で始まる行は，全部コメントとなり無視される…と．ああ，書かれていますね．</p>
<pre>
Please enter the commit message ... with &#39;#&#39; will be ignored, ...
</pre>

<p>では早速 1 行目に</p>
<pre>
add a.txt
</pre>

<p>とでも書いて，保存して終了します．</p>
<p>すると，おっ？何か出ましたね．</p>
<pre>
&#91;master (root-commit) 65e64e5] add a.txt
 Committer: ka &#60;ka@XXX.sakura.ne.jp&#62;
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

    git config --global user.name &#34;Your Name&#34;
    git config --global user.email you@example.com

If the identity used for this commit is wrong, you can fix it with:

    git commit --amend --author=&#39;Your Name &#60;you@example.com&#62;&#39;

 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a.txt
</pre>

<p>コミット出来たような気がします．</p>
<pre class="syntax-highlight">
$ git log
</pre>

<p>で，何やらログが見えますね．</p>
<pre>
commit 65e64e5cb591a3f4740bf5448ede40ab18c0d812
Author: ka &#60;ka@XXX.sakura.ne.jp&#62;
Date:   Tue Sep 27 23:43:39 2011 +0900

    add a.txt
</pre>

<p>さて，では a.txt をちょいと編集してみましょう．abcd とでも追記します．</p>
<p>で，</p>
<pre class="syntax-highlight">
$ git diff
</pre>

<p>すると</p>
<pre>
diff --git a/a.txt b/a.txt
index e69de29..acbe86c 100644
--- a/a.txt
+++ b/a.txt
@@ -0,0 +1 @@
+abcd
</pre>

<p>おっ．差分出ますね．</p>
<p>次は git add しないで commit してみます．</p>
<pre class="syntax-highlight">
$ git commit
</pre>

<pre>
# On branch master
# Changed but not updated:
#   (use &#34;git add &#60;file&#62;...&#34; to update what will be committed)
#   (use &#34;git checkout -- &#60;file&#62;...&#34; to discard changes in working directory)
#
#       modified:   a.txt
#
no changes added to commit (use &#34;git add&#34; and/or &#34;git commit -a&#34;)
</pre>

<p>エラーです．add しないと，commit 出来ないんですね．理由はまだよく分かりません．</p>
<p>さて，git commit には -a オプションを付けるとなんだか add をすっ飛ばせそうな雰囲気が Git のいろはの 18 ページから漂ってきます．試しましょう．</p>
<pre class="syntax-highlight">
$ git commit -a
</pre>

<p>おお！エディタ開きますね！で，同じく commit message を書いて，保存して終了．</p>
<pre>
&#91;master 0716bf5] add abcd to a.txt
 Committer: ka &#60;ka@www8070u.sakura.ne.jp&#62;
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

    git config --global user.name &#34;Your Name&#34;
    git config --global user.email you@example.com

If the identity used for this commit is wrong, you can fix it with:

    git commit --amend --author=&#39;Your Name &#60;you@example.com&#62;&#39;

 1 files changed, 1 insertions(+), 0 deletions(-)
</pre>

<p>commit message は add abcd to a.txt としてみました．</p>
<p>で，git log を見てみると…</p>
<pre class="syntax-highlight">
$ git log
</pre>

<pre>
commit 0716bf575448159ce6e316eb11881753326e9b2f
Author: ka &#60;ka@XXX.sakura.ne.jp&#62;
Date:   Tue Sep 27 23:51:41 2011 +0900

    add abcd to a.txt

commit 65e64e5cb591a3f4740bf5448ede40ab18c0d812
Author: ka &#60;ka@XXX.sakura.ne.jp&#62;
Date:   Tue Sep 27 23:43:39 2011 +0900

    add a.txt
</pre>

<p>ふむぅ．ログ見えますね．</p>
<p>とりあえず，今日はここまで．</p>
</div>
]]></description>

<dc:creator>kaosf</dc:creator>

<pubDate>Tue, 27 Sep 2011 14:54:25 GMT</pubDate>



<category>Git</category>

<category>Ubuntu</category>


</item>

</channel>
</rss>

