<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Katawara.*</title>
	<atom:link href="http://www.katawara.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.katawara.com</link>
	<description></description>
	<lastBuildDate>Sat, 21 Jan 2012 10:57:16 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>複数バージョンのRubyが使える開発環境を構築してみた</title>
		<link>http://www.katawara.com/2012/rvm/</link>
		<comments>http://www.katawara.com/2012/rvm/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 10:33:18 +0000</pubDate>
		<dc:creator>katawara</dc:creator>
				<category><![CDATA[Ruby / Rails]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[rvm]]></category>
		<category><![CDATA[setup]]></category>

		<guid isPermaLink="false">http://www.katawara.com/?p=336</guid>
		<description><![CDATA[MacBookAirを買って、最初からRubyがインストールされていたのは、非常に喜ばしいことだったのですけれども。 地味ーに最新のバージョンではないのですよね（買ったのもずいぶん前のことだったということもありますが）。]]></description>
			<content:encoded><![CDATA[<p>MacBookAirを買って、最初からRubyがインストールされていたのは、非常に喜ばしいことだったのですけれども。<br />
地味ーに最新のバージョンではないのですよね（買ったのもずいぶん前のことだったということもありますが）。<br />
以前、Homebrewを取り入れたときにデフォルトでインストールされているものよりもバージョンが上のものがとれてきたので、これで解決とも思っていましたが、RVMという、もっと便利な手法があるとのこと。試してみることとしました。</p>
<p><span id="more-336"></span></p>
<h4>RVMって何ぞ？</h4>
<p>&#8220;Ruby enVironment (Version) Manager&#8221;の略称で、複数のバージョンのRubyやgemsを共存させることができるもののようです。<br />
gemsも替えられるので、Railsのバージョンも複数持つなんてこともできます。どのRuby、どのgemsを使うかをコマンドひとつで切り替えられるのが素敵ですね。</p>
<h4>インストール</h4>
<p>ということで、早速インストール。<a href="https://rvm.beginrescueend.com/rvm/install/" title="RVM: Ruby Version Manager - Installing RVM" target="_blank">本家サイト</a>を参考に以下のコマンドを入れます。</p>
<pre class="cmd">
$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )
</pre>
</pre>
<p>今回は安定版を入れることにしました。</p>
<pre class="cmd">
Downloading RVM from wayneeseguin branch stable
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  799k  100  799k    0     0  99066      0  0:00:08  0:00:08 --:--:--  172k

Installing RVM to /Users/katawara/.rvm/
    Adding rvm loading line to '/Users/katawara/.bash_profile'.

# RVM:  Shell scripts enabling management of multiple ruby environments.
# RTFM: https://rvm.beginrescueend.com/
# HELP: http://webchat.freenode.net/?channels=rvm (#rvm on irc.freenode.net)
# Screencast: http://screencasts.org/episodes/how-to-use-rvm

# In case of any issues read output of 'rvm requirements' and/or 'rvm notes'

Installation of RVM in /Users/katawara/.rvm/ is almost complete:

  * To start using RVM you need to run `source /Users/katawara/.bash_profile`
    in all your open shell windows, in rare cases you need to reopen all shell windows.

  * Optionally you can run `rvm tools rvm-env ruby bash` which will generate
    shebang wrappers for easier selecting ruby in scripts.

# ,
#
#   Thank you for using RVM!
#   I sincerely hope that RVM helps to make your life easier and more enjoyable!!!
#
# ~Wayne
</pre>
<p>シングルユーザでのインストールなので、/Users/username/.rvmにディレクトリが作られます。</p>
<pre class="cmd">
$ls .rvm/
LICENCE       bin/          examples/     hooks/        man/          scripts/      wrappers/
README        config/       gems/         installed.at  patches/      src/
VERSION       contrib/      gemsets/      lib/          patchsets/    tmp/
archives/     environments/ help/         log/          rubies/       user/
</pre>
<p>.bash_profileにもこんな感じで書きこまれます。</p>
<pre class="cmd">
$cat .bash_profile
...(略)...
[[ -s "/Users/katawara/.rvm/scripts/rvm" ]] &#038;&#038; source "/Users/katawara/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
</pre>
<p>インストールの確認は、&#8221;source .bash_profile&#8221;で.bash_profileを更新してから、以下のコマンドを打つときちんと入っているかが確かめられます。</p>
<pre class="cmd">
$ source .bash_profile
$ type rvm | head -n1
rvm is a function
</pre>
<p>これが出ればインストール完了。</p>
<h4>実際に使ってみる</h4>
<p>まずは、以下のコマンドでインストールできるものを確認します。</p>
<pre class="cmd">
$ rvm list known
# MRI Rubies
1.8.6[-p420]
1.8.6-head
1.8.7[-p357]
1.8.7-head
1.9.1-p378
1.9.1[-p431]
1.9.1-head
1.9.2-p180
1.9.2[-p290]
1.9.2-head
1.9.3-preview1
1.9.3-rc1
1.9.3[-p0]
1.9.3-head
ruby-head

# GoRuby
goruby

# JRuby
jruby-1.2.0
jruby-1.3.1
jruby-1.4.0
jruby-1.6.1
jruby-1.6.2
jruby-1.6.3
jruby-1.6.4
jruby-1.6.5
jruby[-1.6.5.1]
jruby-head

# Rubinius
rbx-1.0.1
rbx-1.1.1
rbx-1.2.3
rbx-1.2.4
rbx[-head]
rbx-2.0.0pre

# Ruby Enterprise Edition
ree-1.8.6
ree[-1.8.7][-2011.12]
ree-1.8.6-head
ree-1.8.7-head

# Kiji
kiji

# MagLev
maglev[-head]
maglev-1.0.0

# Mac OS X Snow Leopard Or Newer
macruby[-0.10]
macruby-nightly
macruby-head

# IronRuby -- Not implemented yet.
ironruby-0.9.3
ironruby-1.0-rc2
ironruby-head
</pre>
<p>普通のRubyだけでなく、MacRubyとかJRuby、IronRubyまであるんですね。<br />
とりあえず、新しいものがほしいので、1.9.2を入れてみよう。</p>
<pre class="cmd">
$ rvm install 1.9.2
Fetching yaml-0.1.4.tar.gz to /Users/katawara/.rvm/archives
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  460k  100  460k    0     0   100k      0  0:00:04  0:00:04 --:--:--  110k
Extracting yaml-0.1.4.tar.gz to /Users/katawara/.rvm/src
Configuring yaml in /Users/katawara/.rvm/src/yaml-0.1.4.
Compiling yaml in /Users/katawara/.rvm/src/yaml-0.1.4.
Installing yaml to /Users/katawara/.rvm/usr
Installing Ruby from source to: /Users/katawara/.rvm/rubies/ruby-1.9.2-p290, this may take a while depending on your cpu(s)...

ruby-1.9.2-p290 - #fetching
ruby-1.9.2-p290 - #downloading ruby-1.9.2-p290, this may take a while depending on your connection...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 8604k  100 8604k    0     0   624k      0  0:00:13  0:00:13 --:--:--  321k
ruby-1.9.2-p290 - #extracting ruby-1.9.2-p290 to /Users/katawara/.rvm/src/ruby-1.9.2-p290
ruby-1.9.2-p290 - #extracted to /Users/katawara/.rvm/src/ruby-1.9.2-p290
ruby-1.9.2-p290 - #configuring
ruby-1.9.2-p290 - #compiling
ruby-1.9.2-p290 - #installing
Retrieving rubygems-1.8.15
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  245k  100  245k    0     0   182k      0  0:00:01  0:00:01 --:--:--  565k
Extracting rubygems-1.8.15 ...
Removing old Rubygems files...
Installing rubygems-1.8.15 for ruby-1.9.2-p290 ...
Installation of rubygems completed successfully.
ruby-1.9.2-p290 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
ruby-1.9.2-p290 - #importing default gemsets (/Users/katawara/.rvm/gemsets/)
Install of ruby-1.9.2-p290 - #complete
</pre>
<p>これでRubyとgemsのインストール完了。今rvm上で管理されているRubyのバージョンを見たいときは、以下のコマンド。</p>
<pre class="cmd">
$ rvm list

rvm rubies

   ruby-1.9.2-p290 [ x86_64 ]

# Default ruby not set. Try 'rvm alias create default <ruby>'.

# => - current
# =* - current &#038;&#038; default
#  * - default
</ruby></pre>
<p>複数バージョン入ると、rvm rubiesの中身が増えていく形ですね。<br />
インストールされたものは、.rvm/rubies/と.rvm/gemsの中に入っていきます。</p>
<pre class="cmd">
$ ls .rvm/rubies/
ruby-1.9.2-p290
$ ls .rvm/gems
cache			ruby-1.9.2-p290		ruby-1.9.2-p290@global
</pre>
<p>Rubyのインストールが終わったら、実際に入れたものを使うよう指定してみます。<br />
&#8220;rvm use [VERSION]&#8220;のコマンドで切り替えることができます。</p>
<pre class="cmd">
$ which ruby
/usr/local/bin/ruby
$ which gem
/usr/local/bin/gem
$ rvm use 1.9.2
Using /Users/katawara/.rvm/gems/ruby-1.9.2-p290
$ which gem
/Users/katawara/.rvm/rubies/ruby-1.9.2-p290/bin/gem
$ which ruby
/Users/katawara/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
</pre>
<p>見事に切り替わりましたね。<br />
もともと入れてたものをやっぱり使いたくなったときは、</p>
<pre class="cmd">
$ rvm use system
</pre>
<p>とすればOK。<br />
また、常にデフォルトで使いたいものを指定したい場合は、</p>
<pre class="cmd">
$ rvm --default use 1.9.2
</pre>
<p>として、デフォルトを解除したい場合は、</p>
<pre class="cmd">
$ rvm reset
</pre>
<p>とすればよいです。</p>
<p>gemもコマンド一個で切り替えたりできるけど、それはまた別の機会にでも。参考にした記事がそこら辺も触れているので、そちらを見てもらってもいいかも。<br />
仕事の場面だったら、プロジェクトごとに使うRubyやgemの状態を切り替えて、都度まっさらな状態にして環境構築を安全お手軽に、なんてこともできそう。こういうのがさくっとできたら、なんだかスマートですね。</p>
<p>Via：</p>
<ul class="favilist">
<li><a href="https://rvm.beginrescueend.com/rvm/install/">RVM: Ruby Version Manager &#8211; Installing RVM</a></li>
<li><a href="http://www.machu.jp/diary/20110521.html#p01">rvm 入門 … 複数バージョンの Ruby と Rails を混在させる &#8211; まちゅダイアリー(2011-05-21)</a></li>
<li><a href="http://dev.kakkunpakkun.me/?p=236">kp:dev ? Macで環境を整えるための環境-homebrewとrvmとrubygems-</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.katawara.com/2012/rvm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Base64エンコードの画像をPOSTしようとしてはまる</title>
		<link>http://www.katawara.com/2011/base64/</link>
		<comments>http://www.katawara.com/2011/base64/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 16:58:02 +0000</pubDate>
		<dc:creator>katawara</dc:creator>
				<category><![CDATA[Ruby / Rails]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.katawara.com/?p=246</guid>
		<description><![CDATA[久しぶりにRubyを使いまして。 API経由でBase64エンコードした画像をPOSTしようとしたら、いろいろとはまったのでメモ。 まずは、単純にBase64エンコードしようとした場合。 戻ってくる値は、こんな感じ。 Y]]></description>
			<content:encoded><![CDATA[<p>久しぶりにRubyを使いまして。<br />
API経由でBase64エンコードした画像をPOSTしようとしたら、いろいろとはまったのでメモ。</p>
<p><span id="more-246"></span><br />
まずは、単純にBase64エンコードしようとした場合。</p>
<pre class="brush: ruby; title: ; notranslate">
require 'base64'
Base64.encode64(&quot;abcdareijgtgue84520-2klkfurieare131243fdvm\555cdagjgisotgbvfxma&quot;)
</pre>
<p>戻ってくる値は、こんな感じ。</p>
<pre class="cmd">
YWJjZGFyZWlqZ3RndWU4NDUyMC0ya2xrZnVyaWVhcmUxMzEyNDNmZHZtbWNk\n
YWdqZ2lzb3RnYnZmeG1h\n
</pre>
<p>わかりやすくするために、便宜的に入れてみましたが、60文字に1回と文字列の最後に&#8221;\n&#8221;が挿入されてきます。<br />
画像のエンコード目的なので、こうした文字列が入り込んでくるのは歓迎できません。以下のような形で対応します。</p>
<pre class="brush: ruby; title: ; notranslate">
# ruby 1.9 以上で利用可
Base64.strict_encode64(&quot;abcdareijgtgue84520-2klkfurieare131243fdvm\555cdagjgisotgbvfxma&quot;)
# ruby 1.8 系だったらこちら
Base64.encode64(&quot;abcdareijgtgue84520-2klkfurieare131243fdvm\555cdagjgisotgbvfxma&quot;).split().join()
</pre>
<p>こうすると&#8221;\n&#8221;はきれいさっぱりなくなります。</p>
<pre class="cmd">
YWJjZGFyZWlqZ3RndWU4NDUyMC0ya2xrZnVyaWVhcmUxMzEyNDNmZHZtbWNkYWdqZ2lzb3RnYnZmeG1h
</pre>
<p>strict_encode64は、rubyのバージョンが古いと使えないので気をつけましょう。</p>
<p>さてさて、これであとはPOSTするばかり、と思ったらそんなことはなく。<br />
POSTはできるものの、画像はうまくエンコードされずに壊れた画像が上がってきます。<br />
いろいろ調べてみると、POSTする前と後ではこんな形で違っていたせい。</p>
<p>前）</p>
<pre class="cmd">
YWJjZGFyZWlqZ+3RndWU4NDUyM+C0ya2xrZnVyaWVhcmUxMzEy++NDNmZHZtbWNkYWdqZ2lzb3+RnYnZmeG1h
</pre>
<p>後）</p>
<pre class="cmd">
YWJjZGFyZWlqZ 3RndWU4NDUyM C0ya2xrZnVyaWVhcmUxMzEy  NDNmZHZtbWNkYWdqZ2lzb3 RnYnZmeG1h
</pre>
<p>POSTの際、requestのbodyに突っ込むと、&#8221;+&#8221; の文字がエスケープされてしまいます。<br />
なので、こんなときはCGI.escapeを使ってあげればよろしい。</p>
<pre class="brush: ruby; title: ; notranslate">
require 'cgi'
require 'base64'
CGI.escape(Base64.encode64(&quot;abcdareijgtgue84520-2klkfurieare131243fdvm\555cdagjgisotgbvfxma&quot;).split().join())
</pre>
<p>ここで、URI.escapeを使うと、URIとして使える記号（今回は&#8221;+&#8221;がそれに当たりますね）はそのままになってしまうので、そのままリクエストを投げてしまうと、違う意味で受け取られてしまいます。<br />
対して、CGI.escapeだったら、記号も全部書き換えてくれるので、きちんとリクエストとして投げられるということになります。</p>
<p>Via：</p>
<ul class="favilist">
<li><a href="http://stackoverflow.com/questions/2620975/strange-n-in-base64-encoded-string-in-ruby">Strange \n in base64 encoded string in Ruby &#8211; Stack Overflow</a></li>
<li><a href="http://d.hatena.ne.jp/gan2/20070601/1180677149">URI.escapeとCGI.escapeの違い &#8211; gan2 の Ruby 勉強日記</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.katawara.com/2011/base64/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GlobalizeライブラリでJavaScriptの国際化をしてみる</title>
		<link>http://www.katawara.com/2011/globalize/</link>
		<comments>http://www.katawara.com/2011/globalize/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 14:03:31 +0000</pubDate>
		<dc:creator>katawara</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Globalize]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.katawara.com/?p=224</guid>
		<description><![CDATA[やり方だけは何度か聞いたことがあったけれど、意外と実際にやってみたことがない対応、国際化（私だけかもしれない）。 いろんな言語でそれぞれやり方あるけれど、JavaScriptで国際化って、あまり聞いたことがない気がします]]></description>
			<content:encoded><![CDATA[<p>やり方だけは何度か聞いたことがあったけれど、意外と実際にやってみたことがない対応、国際化（私だけかもしれない）。<br />
いろんな言語でそれぞれやり方あるけれど、JavaScriptで国際化って、あまり聞いたことがない気がします。<br />
最近ちょっと調べてみる機会に恵まれたので、メモがてらまとめてみようかと思います。</p>
<p><span id="more-224"></span></p>
<h4>国際化とは？</h4>
<p>マルチロケールとか、多言語対応とか、英語化とか、いろんな人がいろんな言葉で説明してくれているけれど、概念的には、「国際化」と「地域化」という二つの言葉でくくるのが正しいようです。<br />
国際化は、UI上の表示やなんかを複数の文化（言語・度量衡含め）に対応できる仕組みを作ることで、地域化はその仕組みに乗っかって、その国や地域の言語や表記に翻訳・変換すること。<br />
世の中の英語化対応と言われているものは、国際化→地域化の二つの作業のコンボを指していることが多いみたいですね。</p>
<p>ちなみに、国際化と地域化をくくって「グローバライゼーション」と言ったりもするみたいです。<br />
あと、似たようなタイミングで出てくる「i18n」と「L10N」。これも国際化と地域化のことを指しています。「i18n」というのは国際化の別名で、「internationalization」の最初と最後のアルファベットとその間の文字数を取ったもの。「L10N」は地域化の別名で、「localization」の最初と最後のアルファベットとその間の文字数をとったものです。それぞれ大文字小文字なのは、iの大文字とLの小文字は区別がつきにくいから。</p>
<h4>国際化のライブラリ</h4>
<p>ちょっと調べてみた範囲だと、<a href="http://code.google.com/p/gettext-js/">gettext-js</a>、<a href="http://serennz.sakura.ne.jp/sb/log/eid88.html">localizer.js</a>といったものがあるそうですが、今回は、長いものには巻かれてみろってことで、<a href="https://github.com/jquery/globalize">Globalize</a>というライブラリを使ってみようと思います。</p>
<h4>Globalizeとは？</h4>
<p>天下のマイクロソフトさん謹製のjsライブラリです。元はjQueryのプラグインのひとつとして始まったものですが、ついに独立したライブラリとしてデビューしたようです。さすがにテキストの翻訳は自分でしなければなりませんが、日時や数字の表記のロケール対応はすでにしっかりサポートされており、その数350超。<br />
作った元が元だけに、ロケールの対応数はまじ半端ないと思います（でも、バージョン管理に入れる時間を待つのが面倒だったから、英語と日本語だけ残してひとまず全部消したのは内緒 :-P）。あと、プロジェクトとしてそれなりに持続しそうな雰囲気があるのもグッドですね。<br />
ただ、まだプラグインからライブラリへと変遷してきているせいなのか、jQuery-glob → jQuery-global → Globalize、と名前も実装方法も微妙に変化していっています。昨日まで見えていたGitHubのドキュメントが、次の日いきなり404なんてこともあったので、そこはちょっとマイナス。</p>
<h4>Globalizeの使い方</h4>
<h5>今回の検証環境</h5>
<p>前回に引き続き、同じくWindows。</p>
<ul>
<li>Google Chrome 12.0.742.91</li>
<li>Firefox 4.0.1</li>
</ul>
<h5>Globalizeの始め方</h5>
<p>先ほど紹介した<a href="https://github.com/jquery/globalize">ここ</a>から、globalizeを落としてきます。GitHubなり通常のダウンロードなりお好きなほうで。必要なものはlibフォルダの中にすべて入っているので、今回はlibフォルダ以下のみを持ってきて、i18nとでもリネームしておきます。</p>
<p>github的にはjQueryの中にありますが、jQueryはいりません。</p>
<h5>コードを書いてみる</h5>
<p>Readme.mdを参考にやってみます。基本的には、globalize.jsと一緒にlib/cultures/globalize.culture.****.jsを読み込むことで、ロケールの設定準備が整います。こんな感じで呼び出せばいいですね。</p>
<pre class="brush: xml; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot; src=&quot;js/i18n/globalize.js&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/i18n/cultures/globalize.culture.ja.js&quot; /&gt;
</pre>
<p>呼び出しができたら、実際にコードを書いてみます。<br />
言語の指定はこんな形です。&#8221;ja&#8221;や&#8221;ja-JP&#8221;のような形で、cultureメソッドの引数を指定します。</p>
<pre class="brush: jscript; title: ; notranslate">
Globalize.culture(&quot;ja&quot;);
</pre>
<p>こうすることで、cultureを日本語（&#8221;ja&#8221;）で指定したときに日付や単位を日本仕様で利用することができるようになります。<br />
この指定をしない場合、デフォルトの言語は英語（&#8221;en&#8221;）になります。</p>
<p>引数になるロケールの取得は、DBでユーザ情報の言語設定を保持しておいて使ったり、リクエストのロケールをとってきたりすれば、自動的にロケールを選ぶ形も作れるでしょう。</p>
<p>次に、addCultureInfoメソッドを利用して、翻訳したいテキストとキーをJSON形式で追加します。外部ファイルとかに出して、globalize.culture.****.jsと同時に読み込むのもいい感じですね。</p>
<pre class="brush: jscript; title: ; notranslate">
Globalize.addCultureInfo( &quot;ja&quot;, {
    messages: {
        &quot;hello&quot;: &quot;こんにちは！&quot;
    }
});
</pre>
<p>ここまで書いたところで、ようやく国際化対応の準備が整いました。<br />
実際にメッセージの置き換えは、以下のようなlocalizeメソッドを利用します。</p>
<pre class="brush: jscript; title: ; notranslate">
alert(Globalize.localize(&quot;hello&quot;, &quot;ja&quot;));
</pre>
<p>これでメッセージが置き換わります。あとは、&#8221;ja&#8221;で作ったものと同じノリで、&#8221;en&#8221;とか&#8221;fr&#8221;とか作ってみるといいんじゃないでしょうか。</p>
<p>ほかにも数値や日付を置き換えてくれたりするメソッドもあったりするのですが、それはまた別の機会ということで。</p>
<p>Via：</p>
<ul class="favilist">
<li><a href="https://github.com/jquery/globalize">jquery/globalize &#8211; GitHub</a></li>
<li><a href="http://weblogs.asp.net/scottgu/archive/2010/06/10/jquery-globalization-plugin-from-microsoft.aspx">jQuery Globalization Plugin from Microsoft &#8211; ScottGu&#8217;s Blog</a></li>
<li><a href="http://wiki.jqueryui.com/w/page/39118647/Globalize">jQuery UI Development &amp; Planning Wiki / Globalize</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.katawara.com/2011/globalize/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Webアプリにショートカットキーを導入してみる</title>
		<link>http://www.katawara.com/2011/shortcutjs/</link>
		<comments>http://www.katawara.com/2011/shortcutjs/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 10:00:08 +0000</pubDate>
		<dc:creator>katawara</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.katawara.com/?p=208</guid>
		<description><![CDATA[たとえば、Gmailやtwitterなどで「？」を押すと、サイト内独自のショートカットキーが出てきます。上級者向けの機能なのかもしれないとも思いつつも、マウスの操作をせずともサイト内を自由に動ける仕組みというのは、なかな]]></description>
			<content:encoded><![CDATA[<p>たとえば、Gmailやtwitterなどで「？」を押すと、サイト内独自のショートカットキーが出てきます。上級者向けの機能なのかもしれないとも思いつつも、マウスの操作をせずともサイト内を自由に動ける仕組みというのは、なかなか魅力的な気がします。今回は、自分が作ってるサービスなんかで簡単にショートカットキーを導入する方法はないものか、と興味本位で探してみました。</p>
<p><span id="more-208"></span></p>
<h4>Javascriptでショートカットキー</h4>
<p>いろいろ探してみた結果、大体以下の二つがよく紹介されている模様。</p>
<ul class="favilist">
<li><a href="http://rikrikrik.com/jquery/shortkeys/">rikrikrik.com &#8211; jQuery shortKeys plug-in</a></li>
<li><a href="http://www.openjs.com/scripts/events/keyboard_shortcuts/index.php">Handling Keyboard Shortcuts in JavaScript</a></li>
</ul>
<p>前者は、SafariではShift、Ctrl、Altが効かない＋Operaのブラウザ内蔵のショートカットと衝突することがあるらしいです。後者に関しては、Operaの検証まではしていませんが、Safariでもちゃんと動くようです。軽く動かしてみた感じと、コードの簡潔に見える度合いを考慮して、今回は、後者のshortcuts.jsを使って実装してみることにします。</p>
<h4>shortcuts.jsの使い方</h4>
<h5>今回の検証環境</h5>
<p>いずれもWindows。</p>
<ul>
<li>Google Chrome 12.0.742.91</li>
<li>Firefox 4.0.1</li>
</ul>
<h5>shortcuts.jsの始め方</h5>
<p>まずは、先ほど紹介したshortcuts.jsの<a href="http://www.openjs.com/scripts/events/keyboard_shortcuts/index.php">本家サイト</a>の「Code」とあるところからshortcuts.jsのソースをダウンロードしてきます。</p>
<p>jQueryとかは不要とのことで、これだけ読みこめばすぐに動かすことができます。簡単ですな。</p>
<h5>コードを書いてみる</h5>
<p>実際のコードは、こんな感じで書けば大丈夫みたい。</p>
<pre class="brush: jscript; title: ; notranslate">
// ショートカットキーの追加
shortcut.add(&quot;&amp;lt;使いたいキー&amp;gt;&quot;,function() {
    &amp;lt;起こしたい挙動&amp;gt;
},{
    &amp;lt;オプション各種;&amp;gt;
});
// ショートカットキーの削除
shortcut.remove(&quot;&amp;lt;使いたいキー&amp;gt;&quot;);
</pre>
<p>例を挙げると、こういうふう。</p>
<pre class="brush: jscript; title: ; notranslate">
shortcut.add(&quot;Shift+/&quot;,function() {
	alert(&quot;「？」が押されたよ。&quot;);
},{
   'disable_in_input':true,
   'keycode':191
});
</pre>
<p>あとは、ほしいキーに対して、それぞれ同じように書いていって、functionの中身と、オプションそれぞれ書き換えていけばよいです。</p>
<p>オプションには、なるべく例で書いた二つは入れたほうがよいですね。<br />
ひとつめの「disable_in_input」は、テキストエリアなど、input要素の上でショートカットキーを押しても動作するか（true：動作しない、デフォルトはfalse）を制御していて、もうひとつの「keycode」は入力したキーをキーコードの数字でも指定できるようにするためのものです。<br />
disable_in_inputを指定してないと、そのキーがテキストエリアで入力できない、なんてことが起こります。<br />
また、keycodeを指定してないと、別のキーで動作したり、本来のキーで動作しないことがたまにあるみたいなので、きちんと指定しておいたほうが無難のようです。（※キーコードがどういう対応になってるかわからん、という人は、<a href="http://faq.creasus.net/04/0131/CharCode.html">ここ</a>を参考にしておくとよいですよ。）</p>
<p>ちなみに、ここで指定できるオプションは以下のようになっています。和訳・解釈は一部間違っているかもしれませんが、ご参考までに。</p>
<div class="curlycontainer">
<div class="innerdiv">
・<strong>type（String）：</strong><br />
キーのイベントタイプを指定できます。<br />
&#8216;keydown&#8217;、&#8217;keyup&#8217;、&#8217;keypress&#8217;のいずれかで、デフォルトは&#8217;keydown&#8217;。</p>
<p>・<strong>disable_in_input（Boolean）：</strong><br />
テキストエリアみたいなinput要素の上でショートカットキーを押しても動作するかを指定できます。デフォルトはfalse（動作する）。</p>
<p>・<strong>target（DOM Node）：</strong><br />
キーボードのイベントを拾うときの要素を指定できます。特定の要素内でのみ動くショートカットとかを作りたいときにでも使うのかな。デフォルトはdocument。</p>
<p>・<strong>propagate（Boolean）：</strong><br />
もともと他で指定されているショートカットも動作させるかを指定できます。たとえば、Ctrl+Aを押したとき、ショートカットキーと、ブラウザの全選択を同時に実行する、みたいなことができます。デフォルトはfalse（動作させない）。</p>
<p>・<strong>keycode（Integer）：</strong><br />
キーコードを数字指定できます。指定したキーが動かないときなどがあるので、念のため設定しておいたほうが望ましいかと。
</div>
</div>
<h5>動かしてみて</h5>
<p>個人的には、ブラウザのショートカットとかとかぶるものは極力避けたほうがいいかな、と思います（どんなマイナーなものでも使っている人はいると思いますし）。<br />
あとは、ほかのサービスで実装されているようなショートカットキーは、極力同じ動作にしておくことも、たぶん大事なことかと。</p>
<p>本家サイトでは、Live Evaluationとして、試しに入れてみたコードがちゃんと動くかも確かめられるようになっているので、興味がある方は試してみるとよいと思います。</p>
<p>VIa：</p>
<ul class="favilist">
<li><a href="http://phpspot.org/blog/archives/2007/04/webjavascriptsh.html">WEBアプリに超絶簡単にJavaScriptのキーボードショートカット機能を実装する「shortcuts.js」:phpspot開発日誌</a></li>
<li><a href="http://d.hatena.ne.jp/hideack/20071114">2007-11-14 &#8211; テノニッキ</a></li>
<li><a href="http://yugenco.blog116.fc2.com/blog-entry-217.html">ものごいにっき　 ショートカットキーをjavascriptで実現するライブラリ</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.katawara.com/2011/shortcutjs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gitを使い始めてみた</title>
		<link>http://www.katawara.com/2011/git_startup/</link>
		<comments>http://www.katawara.com/2011/git_startup/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 14:10:03 +0000</pubDate>
		<dc:creator>katawara</dc:creator>
				<category><![CDATA[Git]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[setup]]></category>

		<guid isPermaLink="false">http://www.katawara.com/?p=178</guid>
		<description><![CDATA[SVNなんて小学生までだよねー、と言われて久しいらしいので、ここらでGitを使ってみることにしました。ここまで分散型バージョン管理なんてものも使わずに来たので、その勉強も兼ねてやってみようかと思います。 分散型バージョン]]></description>
			<content:encoded><![CDATA[<p>SVNなんて小学生までだよねー、と言われて久しいらしいので、ここらでGitを使ってみることにしました。ここまで分散型バージョン管理なんてものも使わずに来たので、その勉強も兼ねてやってみようかと思います。</p>
<p><span id="more-178"></span></p>
<h4>分散型バージョン管理って？</h4>
<p>概要やメリット・デメリットは、どのサイトを見ても、ある程度同じことが書いてあるみたいに見えたので、ひとついい感じにまとまっているページをご紹介。</p>
<ul class="favilist">
<li><a href="http://b4.x0.com/hiki/?Git%2F%CA%AC%BB%B6%A5%EC%A5%DD%A5%B8%A5%C8%A5%EA%A4%C3%A4%C6%B2%BF%A4%AC%B4%F2%A4%B7%A4%A4%A4%CE">かWiki &#8211; Git/分散レポジトリって何が嬉しいの</a></li>
</ul>
<p>個人的に分散リポジトリに一番メリットを感じるのは、自分のリポジトリを持てるようになることではないかと思っています。たとえば、単一リポジトリをチームで共有する場合、テストが終わるまでコミットしてはいけないというルールがあったりします。そのために長期間ローカルでバージョン管理もできず持ちっぱなしとか、挙句に仕様変更が入って修正のたびにハラハラドキドキするとか、そんなこともあるかもしれません。そういった問題点を解消できるのではないかと、ついつい期待してしまいます。</p>
<h4>Gitの始め方</h4>
<p><a href="http://www.katawara.com/2011/05/homebrew/">前回</a>、Homebrewをインストールした際に、Gitも入れているので、やや重複してしまいますが。Homebrewが入っている前提であれば、</p>
<pre><code>
$ brew install git
</code></pre>
<p>のみでOK。せっかくなので、バージョンも確認してみます。</p>
<pre><code>
$ git version
git version 1.7.3.4
</code></pre>
<p>こんな感じ。ここから、実際に入れてからのことをまとめていきたいと思います。</p>
<h4>ローカルでGit</h4>
<p>ローカルで始める場合、まずはGitを使いたいディレクトリ上で、以下のコマンドを打ちます。こんな感じ。</p>
<pre><code>
$ cd
$ mkdir Study
$ cd ~/Study
$ git init
</code></pre>
<p>これを打つと、Studyディレクトリ内に「.git」というファイルができています。これで作業ディレクトリの初期化ができました。<br />
続いて、適当にファイルを作ってみます。</p>
<pre><code>
$ touch README
</code></pre>
<p>これをローカルでコミットしてみます。ファイルをコミット対象として登録（今回はめんどがって全部指定ｗ）し、実際にメッセージを入れてコミットする、という流れ。</p>
<pre><code>
$ git add *
$ git commit -m 'first commit'
</code></pre>
<p>これでローカルでのコミットができました。これだけなら、そこまで難しくなさそうですね。</p>
<h4>リモートでもGit</h4>
<p>ローカルではどうにかなりそうなので、今度はリモートでGitを使ってみたいと思います。<br />
こちらはちょっと長くなるので、細かく切っていきます。</p>
<h5>GitHubの登録・設定</h5>
<p>まずは、Gitのリポジトリを持つにあたり、<a href="https://github.com/">GitHub</a>のアカウントを作ります。<br />
非公開のリポジトリを作りたいときは、有料にせざるを得ないようですね。今回は個人だし勉強がてらなので、Freeでアカウントで作ってしまいます（むしろ大体の人はFreeではないかと）。</p>
<p>続いて、GitHub上で新しいリポジトリを作ります。ダッシュボードの左下にある、「Create a Repository」のリンクをクリックすることで、新しいリポジトリが作れます。ローカルで作ったディレクトリに合わせて、「Project Name」を「Study」として登録します。</p>
<h5>Gitのグローバル設定</h5>
<p>GitHubでアカウントを作った後は、ローカル側の設定として、Gitのグローバル設定を行います。ユーザ名・メールアドレスと、Gitでdiffをとったときにデバイスに応じてカラー表示をしてくれる設定を入れておきます。後半は趣味ですが、前半はコミットログなんかで使われるみたいです。入力した内容は、~/.gitconfigというファイルに反映されています。</p>
<pre><code>
$ git config --global user.name '&lt;username&gt;'
$ git config --global user.email '&lt;email&gt;'
$ git config --global color.ui auto
</code></pre>
<h5>SSH公開鍵の設定</h5>
<p>Gitにpushする際、SSH公開鍵の設定が必要とのこと。なので、ホームディレクトリに戻ってRSAキーの作成をします。</p>
<pre><code>
$ cd
$ ssh-keygen
</code></pre>
<p>コマンドを打つと、~/.sshディレクトリの中に、id_rsa、id_rsa.pubというファイルが出来上がります。作成中、パスフレーズを求められたりしますが、何も入力しなくてもよいようです（僕は入れてしまいましたが＾＾；）。</p>
<p>ここまでできたら、GitHubのサイトに戻り、アカウントの設定から「SSH公開鍵」の設定を行います。さっき作ったばかりのid_rsa.pubの中のテキストをコピペして、公開鍵の設定をします。これで、GitHubでSSHでの接続ができるようになります。</p>
<h5>GitHubにPush</h5>
<p>もろもろ準備が整ったので、いよいよサーバにPushします。Gitの勉強用にローカルで作った、Studyディレクトリに移動して、以下のようなコマンドを打ちます。</p>
<pre><code>
$ git remote add origin git@github.com:&lt;username&gt;/Study.git
$ git push -u origin master
</code></pre>
<p>これで、自分のGitHubのページを見てみると、https://github.com/&lt;username&gt;/Study なんて場所にREADMEのファイルが入っている、という状態になるのではないかと思います。</p>
<p>今回は、ひとまずここまで。</p>
<p>Via：</p>
<ul class="favilist">
<li><a href="http://help.github.com/create-a-repo/">Help.GitHub &#8211; Create A Repo</a></li>
<li><a href="http://blog.katsuma.tv/2009/02/first_github.html">はじめてのgithub &#8211; blog.katsuma.tv</a></li>
<li><a href="http://d.hatena.ne.jp/Seasons/20081220/1229750384">英語なんてわかんねーよ！！ってな人へ贈るGithub入門 for MacOS &#8211; Seasons.NET</a></li>
<li><a href="http://e-arrows.sakura.ne.jp/2009/06/github-de.html">GitHub で始める Git &#8211; 八発白中</a></li>
<li><a href="http://weble.org/2011/02/14/git-mac-install">最速で Git を Mac にインストールして基本的なコマンドを使う方法 | ウェブル</a></li>
<li><a href="http://d.hatena.ne.jp/kanonji/20091204/1259919316">Githubに登録してみたので最初に使うgitコマンドを整理してみた。 &#8211; kanonjiの日記</a></li>
<li><a href="http://keijinsonyaban.blogspot.com/2010/11/git-tips.html">見えないチカラ: 【翻訳】あなたの知らないGit Tips</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.katawara.com/2011/git_startup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Macのパッケージ管理を始めてみた</title>
		<link>http://www.katawara.com/2011/homebrew/</link>
		<comments>http://www.katawara.com/2011/homebrew/#comments</comments>
		<pubDate>Sun, 22 May 2011 14:27:57 +0000</pubDate>
		<dc:creator>katawara</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Homebrew]]></category>
		<category><![CDATA[setup]]></category>

		<guid isPermaLink="false">http://www.katawara.com/?p=167</guid>
		<description><![CDATA[せっかくMacを買ったので、開発もやりたいと思います。で、SubversionやらGitやらのバージョン管理や、postgresqlやmysqlみたいなデータベースまで、環境構築するならできるだけ簡単にやりたいものです。]]></description>
			<content:encoded><![CDATA[<p>せっかくMacを買ったので、開発もやりたいと思います。で、SubversionやらGitやらのバージョン管理や、postgresqlやmysqlみたいなデータベースまで、環境構築するならできるだけ簡単にやりたいものです。そこで出てくるのがパッケージ管理。Windowsだとできませんでしたが、今回はきっちりできるようになろうと思います。</p>
<p><span id="more-167"></span></p>
<h4>パッケージ管理とは</h4>
<p>パッケージ名を指定すると、ソフトウェアをダウンロード、インストールしてくれる仕組みです。ほかのパッケージとの依存関係も自動で解決してくれたりもします。以前、<a href="http://www.katawara.com/2008/07/ruby_install_with_linux/">CentOSでRubyをインストールした際</a>は、rpmやyumといったコマンドで使ったことがありました。</p>
<h4>Macのパッケージ管理：MacPorts</h4>
<p>有名どころで行くと、ここは<a href="http://www.macports.org/">MacPorts</a>でしょうか。ということで、インストールの方法を調べ始めました。<br />
すると、後からわかったのは、<a href="http://developer.apple.com/xcode/">Xcode 4</a>には対応していないという事実……orz<br />
結局600円払っちゃってるし、今更<a href="http://developer.apple.com/devcenter/mac/index.action">XCode 3</a>にダウングレードするのもちょい切ない。。</p>
<p>いちおう、Xcode 4とXcode 3は同居できるらしいので、そこまでは以下のサイトを見ながら試してみました。ご参考までに。</p>
<ul class="favilist">
<li><a href="http://serennz.sakura.ne.jp/sb/log/eid198.html">SimpleBoxes | Xcode 4 の導入と Xcode 3 との併用</a></li>
<li><a href="http://yambow-yan.blogspot.com/2011/05/xcode34.html">yan&#8217;s Diary: Xcode4のリリースと、Xcode3との共存について</a></li>
<li><a href="http://togetter.com/li/110349">Togetter &#8211; 「ざっくりXcode4」</a></li>
<li><a href="http://twitpic.com/4a9hi6">Xcode 3 と Xcode 4 を同居させる件。何のことはない、Xcode 4 を普通にインストールしたあと、Xcod&#8230; on Twitpic</a></li>
</ul>
<h4>Macのパッケージ管理：Homebrew</h4>
<p>MacPortsのことを調べていくうち、どうやらMacPorts以外にも、<a href="http://mxcl.github.com/homebrew/">Homebrew</a>というものがあるらしいということを知りました。しかも、Xcode 4でも対応できるみたいで、都合がいい（笑）</p>
<p>てことで、こちらのインストールを始めることにしてみました。<br />
<a href="https://github.com/mxcl/homebrew/wiki/installation">GitHubのサイト</a>のRequirementsを見る限りでは、ほかにもJavaも必要みたいですが、MacBook Airであればすでに入っているらしく、Xcodeがインストールされさえすればよいみたいです。<br />
Xcodeがインストールした上で、以下のコマンドを打ちます。</p>
<pre><code>
$ ruby -e "$(curl -fsSLk https://gist.github.com/raw/323731/install_homebrew.rb)"
</code></pre>
<p>これだけ。コマンドは、ほかのサイトで見たものを入れたらエラーになったりしたこともあったので、うまくいかなかったらGitHubのサイトも確認してみましょう。</p>
<h4>Homebrewの使い方</h4>
<p>Homebrew本体のアップデートにはGitが必要ということで、最低限Gitは入れます。</p>
<pre><code>
$ brew install git
</code></pre>
<p>これで、Homebrewのアップデートは以下のコマンドでできるようになります。</p>
<pre><code>
$ brew update
</code></pre>
<p>あと、よく使いそうなコマンドをメモとしてまとめておきます。</p>
<pre><code>
brew install FORMULA... # パッケージのインストール、もしくはアップデート
brew uninstall FORMULA... # パッケージのアンインストール
brew search [foo] # パッケージの検索
brew list [FORMULA...] # 今インストールしているパッケージを一覧表示する
brew update # Homebrew本体のアップデート
brew outdated # インストール済みのパッケージの中で最新でないものを表示する
</code></pre>
<p>Via：</p>
<ul class="favilist">
<li><a href="http://d.hatena.ne.jp/yonchu/20110226/1298723822">Macのパッケージ管理をMacPortsからhomebrewへ &#8211; よんちゅBlog</a></li>
<li><a href="http://yasuwagon.blogspot.com/2010/08/homebrew.html">自分のための日記: homebrew のインストール</a></li>
<li><a href="http://tech.portalshit.net/2010/08/31/macports-is-deprecated/">MacPortsからHomebrewに移行しつつある | tech.portalshit.net</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.katawara.com/2011/homebrew/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WindowsからMacに乗り換えてみた</title>
		<link>http://www.katawara.com/2011/from_win_to_mac/</link>
		<comments>http://www.katawara.com/2011/from_win_to_mac/#comments</comments>
		<pubDate>Sun, 22 May 2011 10:36:22 +0000</pubDate>
		<dc:creator>katawara</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[setup]]></category>

		<guid isPermaLink="false">http://www.katawara.com/?p=160</guid>
		<description><![CDATA[先日（っても、だいぶ前からのことですが）、Macbook Airを買いました。 時間の合間を縫って慣れないセットアップを繰り返しながら、ようやくそれなりに使える雰囲気を出し始めたので、それまでの過程でもまとめてみようかと]]></description>
			<content:encoded><![CDATA[<p>先日（っても、だいぶ前からのことですが）、Macbook Airを買いました。<br />
時間の合間を縫って慣れないセットアップを繰り返しながら、ようやくそれなりに使える雰囲気を出し始めたので、それまでの過程でもまとめてみようかと思います。</p>
<p><span id="more-160"></span></p>
<h4>まずはセットアップから。</h4>
<p>このサイトを参考にして、いろいろ実施。</p>
<ul class="favilist">
<li><a href="http://www.msng.info/archives/2011/02/macbook-air-initial-settings.php">MacBook Air を買ってきて最初にやったことまとめ &#8211; 頭ん中</a></li>
</ul>
<p>「Mac OS のクリーンインストール」、「FileVault を有効にする」、「ソフトウェア・アップデートをする」、「Exposé と Spaces」、「セキュリティ」、「トラックパッド」、「サウンド」、「Bluetooth」、「Finder」あたりを実施。お好みで、ってことで。</p>
<h4>アプリもいろいろと。</h4>
<p>今度はこちらを参考にいろいろ入れたりセットアップしてみます。</p>
<ul class="favilist">
<li><a href="http://blog.livedoor.jp/lashow/archives/3704491.html">しょぼいエンジニアが教えたいこと : MacBookAirを買って最初にやること、を見ながら設定してみた</a></li>
<li><a href="http://d.hatena.ne.jp/moto_maka/20101115/1289763436">新MacBook Airと過ごした３日間をまとめてみました &#8211; もとまか日記Ｚ</a></li>
</ul>
<p>直接ダウンロードして入れたものたち。</p>
<ul class="favilist">
<li><a href="http://mozilla.jp/firefox/">Firefox</a></li>
<li><a href="http://www.google.com/chrome/intl/ja/landing.html">Google Chrome</a></li>
<li><a href="http://blog.boastr.net/?page_id=1722">BetterTouchTool</a></li>
<li><a href="http://www.freemacsoft.net/AppCleaner/">AppCleaner</a></li>
<li><a href="http://wakaba.c3.cx/s/apps/unarchiver.html">The Unarchiver</a></li>
<li><a href="http://growl.info/">Growl</a></li>
<li><a href="http://blog.haerulrijal.web.id/p/captur.html">Captur</a></li>
<li><a href="http://www.panic.com/jp/coda/">Coda</a></li>
</ul>
<p>ブラウザ、タッチパッド拡張、アンインストールツール、解凍ツール、通知アプリ、キャプチャー、よさげな開発環境とひと通り入れてみました。</p>
<p>AppStoreで入れたものたち。</p>
<ul class="favilist">
<li><a href="http://developer.apple.com/xcode/">Xcode 4</a></li>
<li><a href="http://www.evernote.com/about/download/mac.php">Evernote for Mac OS X</a></li>
<li><a href="http://sites.google.com/site/yorufukurou/">YoruFukurou</a></li>
</ul>
<p>ひとまず使いそうなものだけ、ぱぱっと。そのほかはまだまだ検討中。。。</p>
<p>この後、まだいろいろと入れ替えしてたりしますが、最初はこんな感じ。</p>
<p>Via：</p>
<ul class="favilist">
<li><a href="http://nori510.com/archives/4208">そんな機能もあったのか!!やっぱり凄い、凄過ぎる「BetterTouchTool」トラックパッドを更に便利に!! | GoTo Number</a></li>
<li><a href="http://wakabamac.blog95.fc2.com/blog-entry-280.html">わかばマークのMacの備忘録 : The Unarchiver</a></li>
<li><a href="http://wakabamac.blog95.fc2.com/blog-entry-28.html">わかばマークのMacの備忘録 : Growl</a></li>
<li><a href="http://veadardiary.blog29.fc2.com/blog-entry-3210.html">メニューバーからシンプルにスクリーンキャプチャを撮影『Captur』 | Macの手書き説明書</a></li>
<li><a href="http://www.webcreatorbox.com/tech/dreamweaver-to-coda/">DreamweaverからCodaに変えました | Webクリエイターボックス</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.katawara.com/2011/from_win_to_mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails2.0.2からRails2.3.4にアップデートしてみる</title>
		<link>http://www.katawara.com/2009/update_rails_2_3_4/</link>
		<comments>http://www.katawara.com/2009/update_rails_2_3_4/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 11:04:25 +0000</pubDate>
		<dc:creator>Shiino</dc:creator>
				<category><![CDATA[Ruby / Rails]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://www.katawara.com/2009/11/update_rails_2_3_4/</guid>
		<description><![CDATA[仕事にかまけて、Railsからしばらく離れていました。 RubyもRailsもアップデートも進んでしまったみたいなので、自分の開発環境もアップデートしようかと思います。 今の自分のRailsのバージョンは2.0.2なので]]></description>
			<content:encoded><![CDATA[<p>仕事にかまけて、Railsからしばらく離れていました。<br />
RubyもRailsもアップデートも進んでしまったみたいなので、自分の開発環境もアップデートしようかと思います。<br />
今の自分のRailsのバージョンは2.0.2なので、また随分と上がることになりますね＾＾；</p>
<p><span id="more-121"></span><br />
まずは今までインストールしてきたgemのアップデート。</p>
<pre><code>
C:\Users\hoge>gem update
Updating installed gems...
Attempting remote update of actionmailer
Install required dependency actionpack? [Yn]  y
Install required dependency rack? [Yn]  y
Install required dependency fcgi? [Yn]  y
Building native extensions.  This could take a while...
ERROR:  While executing gem ... (Gem::Installer::ExtensionBuildError)
    ERROR: Failed to build gem native extension.

ruby extconf.rb update
checking for fcgiapp.h... no
checking for fastcgi/fcgiapp.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --srcdir=.
        --curdir
        --ruby=c:/ruby/bin/ruby
        --with-fcgi-dir
        --without-fcgi-dir
        --with-fcgi-include
        --without-fcgi-include=${fcgi-dir}/include
        --with-fcgi-lib
        --without-fcgi-lib=${fcgi-dir}/lib

Gem files will remain installed in c:/ruby/lib/ruby/gems/1.8/gems/fcgi-0.8.7 for
 inspection.
Results logged to c:/ruby/lib/ruby/gems/1.8/gems/fcgi-0.8.7/ext/fcgi/gem_make.ou
t
</code></pre>
<p>ハイ。こけました。fcgi辺りでこけてるようです。<br />
どうやら、gem自体をアップデートしなければならないようですね。<br />
ちなみに、</p>
<pre><code>
C:\Users\hoge>gem -v
0.9.4
</code></pre>
<p>今の自分のgemのバージョンは0.9.4。なので、こうコマンドを打ちます。</p>
<pre><code>
gem update --system
</code></pre>
<p><a href="http://rubybizcommons.blogspot.com/2009/01/gem131ni.html">こちら</a>によりますと、gemは1.3以降は違うコマンドのようなので、注意が必要です。<br />
ひたすら「y」を連打してしばらく待っていると、</p>
<pre><code>
Updating version of RubyGems to 1.3.5
Installing RubyGems 1.3.5
RubyGems 1.3.5 installed

・ｿ=== 1.3.5 / 2009-07-21

Bug fixes:

* Fix use of prerelease gems.
* Gem.bin_path no longer escapes path with spaces. Bug #25935 and #26458.

Deprecation Notices:

* Bulk index update is no longer supported (the code currently remains, but not
  the tests)
* Gem::manage_gems was removed in 1.3.3.
* Time::today was removed in 1.3.3.

------------------------------------------------------------------------------

RubyGems installed the following executables:
        c:/ruby/bin/gem

RubyGems system software updated
</code></pre>
<p>こんな感じで、無事アップデートが終了したようです。<br />
ためしにバージョン確認すると、</p>
<pre><code>
C:\Users\hoge>gem -v
1.3.5
</code></pre>
<p>よい感じです。<br />
続いて、全体的に古いだろうから、一気に全体をアップデート。</p>
<pre><code>
C:\Users\hoge>gem update rails
</code></pre>
<p>ログを見てたときに、何かRMagickがこけたような気がしたけど、ログがあっという間に流れてしまって、調査できず。。とりあえず、あれはまた煮詰まったら対応策を考えることにしましょう。。<br />
ともあれ。バージョン確認してみると、</p>
<pre><code>
C:\Users\hoge>rails -v
Rails 2.3.4
</code></pre>
<p>ということで、無事、2.0.2から2.3.4になったようです。<br />
これはまた、知らないことが多そうです。ま、また、手探りで勉強していきましょう。</p>
<p>Via：</p>
<ul class="favilist">
<li><a href="http://d.hatena.ne.jp/gutch01/20090727/1248621289">gemのインストール中にfcgiでエラーになる &#8211; マオの徒然開発日誌</a></li>
<li><a href="http://rubybizcommons.blogspot.com/2009/01/gem131ni.html">Rubyビジネス・コモンズ: gemを1.3.1にアップデートしないといけないです。</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.katawara.com/2009/update_rails_2_3_4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DreamhostでPassengerを使ってみる</title>
		<link>http://www.katawara.com/2009/passenger/</link>
		<comments>http://www.katawara.com/2009/passenger/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 11:34:50 +0000</pubDate>
		<dc:creator>Shiino</dc:creator>
				<category><![CDATA[Ruby / Rails]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[DreamHost]]></category>
		<category><![CDATA[Passenger]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.katawara.com/2009/03/passenger/</guid>
		<description><![CDATA[以前、RailsアプリをDreamhostで動かす際には、FastCGIを使っていました。（この辺の頃の話） ですが、最近、久しぶりにコントロールパネルいじってたら、Passengerにも対応していたのですね。 会社では]]></description>
			<content:encoded><![CDATA[<p>以前、RailsアプリをDreamhostで動かす際には、FastCGIを使っていました。（<a href="http://www.katawara.com/2007/12/redmine/">この辺</a>の頃の話）</p>
<p>ですが、最近、久しぶりにコントロールパネルいじってたら、<a href="http://www.modrails.com/">Passenger</a>にも対応していたのですね。</p>
<p>会社ではmongrelでやってたので、mongrelでのやり方を模索しようかと思っていましたが、こっちのほうがよさそうということで、こちらを試してみることにしました。</p>
<p><span id="more-120"></span></p>
<h4>アプリ側でやること。</h4>
<p>前回はRedmineを動かす過程をまとめました。なので、今回も同じことをやってみようかと思います。</p>
<p>まずは、例によってRedmineをsvn上からチェックアウトしてきます。</p>
<pre><code>
$svn checkout http://redmine.rubyforge.org/svn/branches/0.8-stable redmine
</code></pre>
<p>次に、config/environment.rbの8行目のRailsのバージョンを2.1.1で指定します。</p>
<pre class="brush: ruby; title: ; notranslate">
# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.1.1' unless defined? RAILS_GEM_VERSION
</pre>
<p>残念ながら、Redmineを落としてきた直後に指定されているRailsのバージョンは、Dreamhostにはないため。<br />
こんな風にやると、すぐ確認できます。</p>
<pre><code>
$ gem list | grep rails
rails (2.2.2, 2.1.1, 2.1.0, 0.14.3)
</code></pre>
<p>あとはもう、儀式のごとく。</p>
<pre><code>
$ cp -ip database.yml.example database.yml
</code></pre>
<p>で、config/database.ymlをコピーして、productionのところを自分の環境用に変更します。</p>
<p>あとは、淡々と</p>
<pre><code>
$ rake db:migrate RAILS_ENV=production
$ rake load_default_data RAILS_ENV=production
</code></pre>
<p>を実行して、粛々と初期データをセットアップしてしまいましょう。</p>
<h4>Dreamhost上でやること。</h4>
<p>まずは、コントロールパネルで適当なドメインを作ったら、これをやります。</p>
<ul>
<li>【Ruby on Rails Passenger (mod_rails)?】の項目にチェック</li>
<li>【Specify your web directory】の項目を&#8221;/home/username/exampledomain.com/public/&#8221;になるように入力</li>
</ul>
<p>この辺はFastCGIのときとは、チェックをつける場所が違うだけですね。</p>
<p>さて。<br />
実はこれだけでもう、アドレスをクリックすればRedmineが立ち上がったりします。</p>
<p>なんというか、前より簡単です。<br />
でも、この状態だと、実はアプリが動くだけで、スタイルシートやらJavascriptやらがうまく読み込まれなかったりします。<br />
なので、もうちょっと、アプリ側でいじることがあります。</p>
<h4>アプリ側でやること。その2。</h4>
<p>よくよく見返せば、前も同じところで詰まってるんですよねｗ<br />
でも、今回はもうちょっと直すところは少ない。</p>
<p>public/.htaccessを、前と同じように直します。</p>
<pre class="brush: plain; title: ; notranslate">
&lt;ifmodule mod_fastcgi.c&gt;
       AddHandler fastcgi-script .fcgi
&lt;/ifmodule&gt;
&lt;ifmodule mod_fcgid.c&gt;
       AddHandler fcgid-script .fcgi
&lt;/ifmodule&gt;
&lt;ifmodule mod_cgi.c&gt;
       AddHandler cgi-script .cgi
&lt;/ifmodule&gt;
Options +FollowSymLinks +ExecCGI
</pre>
<p>2〜11行目のコレを</p>
<pre class="brush: plain; title: ; notranslate">
AddHandler fastcgi-script .fcgi
AddHandler cgi-script .cgi
Options +FollowSymLinks +ExecCGI
</pre>
<p>こんな風にして、</p>
<pre class="brush: plain; title: ; notranslate">
&lt;ifmodule mod_fastcgi.c&gt;
		RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
&lt;/ifmodule&gt;
&lt;ifmodule mod_fcgid.c&gt;
		RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
&lt;/ifmodule&gt;
&lt;ifmodule mod_cgi.c&gt;
		RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
&lt;/ifmodule&gt;
</pre>
<p>36?44行目のコレを</p>
<pre class="brush: plain; title: ; notranslate">
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
</pre>
<p>こうします。</p>
<p>あとはもう、F5を押すだけで、きちんと動きます。<br />
前と違って、dispatch.fcgiもいりません。</p>
<h4>使用感</h4>
<p>何ていうか、前よりセットアップが簡単になりましたｗ<br />
しかも、今回は変更=サイト上で即反映と、htmlをFTPで上げるような気軽な感覚で変更が走ります。</p>
<p>それが嫌なときは、tmpの下にrestart.txtというのを作ってあげて、touchすれば更新反映ということもできるみたいです（試してないので、確証はないですが。。。）。</p>
<p>また、仕組み上、最初の立ち上がりが異常に遅い感じがしますが、一度動いてからは、FastCGIなんて比べ物にしちゃいけないほどサクサク動くので、使用感としては悪くなさげです。<br />
ベンチマーク的なものは、今度やれたらやってみようかなぁ。</p>
<p>Via：</p>
<ul class="favilist">
<li><a href="http://wiki.dreamhost.com/Passenger">Passenger &#8211; DreamHost</a></li>
<li><a href="http://wiki.dreamhost.com/Redmine">Redmine &#8211; DreamHost</a></li>
<li><a href="http://redmine.jp/tech_note/install/">Redmine.JP | Redmineのインストール</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.katawara.com/2009/passenger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grailsをインストールしてみた</title>
		<link>http://www.katawara.com/2009/grails/</link>
		<comments>http://www.katawara.com/2009/grails/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 15:39:57 +0000</pubDate>
		<dc:creator>Shiino</dc:creator>
				<category><![CDATA[Groovy / Grails]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[setup]]></category>

		<guid isPermaLink="false">http://www.katawara.com/2009/03/grails/</guid>
		<description><![CDATA[最近、隣の席の先輩からGrailsを猛プッシュされております。 Railsより使い勝手がいいのかな？　つか、最近新しいものに触れる機会が減ってるし、ちょうどいっか、ということで、ちょっと触ってみようかと思います（AIRは]]></description>
			<content:encoded><![CDATA[<p>最近、隣の席の先輩から<a href="http://docs.codehaus.org/display/GRAILS/Japanese+Home">Grails</a>を猛プッシュされております。<br />
Railsより使い勝手がいいのかな？　つか、最近新しいものに触れる機会が減ってるし、ちょうどいっか、ということで、ちょっと触ってみようかと思います（AIRは途中で放置気味に…orz）。</p>
<p><span id="more-116"></span></p>
<h4>Grailsとは？</h4>
<p>概論的なものは、以下をご参照ください。<br />
要するに、GroovyというJavaベースの言語を使って、HibernateとSpringでRailsっぽく書けるように実現させたフレームワークのようです。<br />
細かい定義やら、Railsとの比較とかやらは、以下のリンク先が詳しそう。</p>
<ul class="favilist">
<li><a href="http://ja.wikipedia.org/wiki/Groovy">Groovy &#8211; Wikipedia</a></li>
<li><a href="http://groovy.codehaus.org/Japanese+Home">Groovy &#8211; Japanese Home</a></li>
<li><a href="http://www.atmarkit.co.jp/fjava/rensai3/devworks05/devworks05_1.html">＠IT：Groovyに触ってみよう</a></li>
<li><a href="http://ja.wikipedia.org/wiki/Grails">Grails &#8211; Wikipedia</a></li>
<li><a href="http://docs.codehaus.org/display/GRAILS/Japanese+Home">Japanese Home &#8211; Grails &#8211; Codehaus</a></li>
<li><a href="http://www.thinkit.co.jp/free/article/0608/12/6/">[ThinkIT] 第6回：RailsとGrailsの比較（前編） (1/3)</a></li>
</ul>
<h4>インストール</h4>
<p>ということで、まずはインストールから。<br />
<a href="http://docs.codehaus.org/display/GRAILS/Japanese+Installation">日本語版本家のインストールのページ</a>によりますと、</p>
<div class="curlycontainer">
<div class="innerdiv">
<ol>
<li>JDKのインストール</li>
<li>Grailsのインストール</li>
</ol>
</div>
</div>
<p>だけでいいそうな。へぇぇ。</p>
<p>気が付けばJDKも入ってなかったので、<a href="http://java.sun.com/javase/ja/6/download.html">ここ</a>からダウンロードしてきて、インストール（今のところ、jdk1.6.0_12が最新みたいですね）。</p>
<p><img src='http://www.katawara.com/wp-content/uploads/2009/03/java_download.jpg' alt='Javaダウンロードページ' /></p>
<p>さらに、Grailsも<a href="http://grails.org/Download">ここ</a>からダウンロードしてきて、解凍、適当な場所（Cドライブ直下とかでいいかと）に置いておきます。今回は「Binary ZIP」のところのものを持ってきました。</p>
<p><img src='http://www.katawara.com/wp-content/uploads/2009/03/grails_download.jpg' alt='Grailsダウンロードページ' /></p>
<p>で、あとはPathの指定。<br />
最近、自宅PCをVistaに移行してしまったので、手順はVista版です。<br />
コンピュータ　→　システムのプロパティ　→　システムの詳細設定　→　ポップアップが出てきて「はい」<br />
で、ようやくXPでよく見た環境変数の設定ができる画面が出てきます。</p>
<p>指定するのは、ユーザー環境変数でもシステム環境変数でもいいと思いますが、今回はシステム環境変数のPathをいじります。</p>
<div class="curlycontainer">
<div class="innerdiv">
&#8230;.;C:\Program Files\Java\jdk1.6.0_12\bin;C:\grails-1.0.4\bin
</div>
</div>
<p>みたいな感じで、JDKとGrailsのバイナリーのディレクトリを指定すればOK。</p>
<p>あと、新規の環境変数として、</p>
<div class="curlycontainer">
<div class="innerdiv">
変数名：JAVA_HOME<br />
変数値：C:\Program Files\Java\jdk1.6.0_12（JDKのインストールディレクトリ）
</div>
</div>
<div class="curlycontainer">
<div class="innerdiv">
変数名：GRAILS_HOME<br />
変数値：C:\grails-1.0.4（Grailsの解凍先ディレクトリ）
</div>
</div>
<p>を追加。</p>
<p>再起動をかけて、コマンドプロンプトから</p>
<pre><code>
grails
</code></pre>
<p>と打ってみます。<br />
こんな感じで出てくれば終了。</p>
<pre><code>
C:\>grails

Welcome to Grails 1.0.4 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: C:\grails-1.0.4

No script name specified. Use 'grails help' for more info or 'grails interactive
' to enter interactive mode
</code></pre>
<p>意外と簡単ですね。<br />
Railsとの差異とか見ながら、学ぶべきところを吸収できたらいいなぁ。</p>
<p>Via：</p>
<ul class="favilist">
<li><a href="http://docs.codehaus.org/display/GRAILS/Japanese+Home">Japanese Home &#8211; Grails &#8211; Codehaus</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.katawara.com/2009/grails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

