<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2italianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">

<channel>
	<title>System.Exit</title>
	
	<link>http://jugyo.org/blog</link>
	<description>jugyo が書いてます。</description>
	<lastBuildDate>Sat, 06 Feb 2010 23:09:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/coople/blog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="coople/blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><image><link>http://jugyo.org/blog</link><url>http://jugyo.org/images/me_middle.jpg</url><title>System.exit();</title></image><item>
		<title>twitter-auth を使って Rails で簡単 Twitter 認証♪</title>
		<link>http://jugyo.org/blog/3884</link>
		<comments>http://jugyo.org/blog/3884#comments</comments>
		<pubDate>Sat, 06 Feb 2010 14:37:51 +0000</pubDate>
		<dc:creator>jugyo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://jugyo.org/blog/?p=3884</guid>
		<description>twitter-auth という Rails プラグインを使うと簡単に Twitter を使った認証が行えるようになります。
http://github.com/mbleigh/twitter-auth
ですが、普通に使おうとすると request_token を取得するところで 以下のようなエラーが出てしまいました。
OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
...
サーバー証明書がないためにエラーになっているようなのですが、調べてみたところ twitter-auth には証明書を指定する方法が用意されていませんでした。
なので github で fork して証明書を指定できるようにしてこの問題を回避することにしました。
http://github.com/jugyo/twitter-auth
インストール
./script/plugin install git://github.com/jugyo/twitter-auth.git
使い方
generator が用意されていて、以下を実行すると必要なファイルを作ってくれます。
 script/generate twitter_auth 
migration も作られるので必要に応じてスキーマを編集して rake db:migrate してください。
証明書ファイルの取得
以下のページを参考に、 Twitter の CA 証明書ファイルを取得し、適当な場所に保存します。
http://d.hatena.ne.jp/vividcode/20091031/1256967931
コンシューマーキーとシークレットキーの取得
以下のページからアプリケーションを登録し、コンシューマーキーとシークレットキーを取得してください。
https://twitter.com/apps
設定
config/twitter_auth.yml を編集します。
development:
  strategy: oauth
  oauth_consumer_key: "コンシューマーキー"
  oauth_consumer_secret: "シークレットキー"
  base_url: "https://twitter.com"
  authorize_path: [...]</description>
			<content:encoded><![CDATA[<p>twitter-auth という Rails プラグインを使うと簡単に Twitter を使った認証が行えるようになります。</p>
<p><a href="http://github.com/mbleigh/twitter-auth">http://github.com/mbleigh/twitter-auth</a></p>
<p>ですが、普通に使おうとすると request_token を取得するところで 以下のようなエラーが出てしまいました。</p>
<pre class="prettyprint">OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
...</pre>
<p>サーバー証明書がないためにエラーになっているようなのですが、調べてみたところ twitter-auth には証明書を指定する方法が用意されていませんでした。<br />
なので github で fork して証明書を指定できるようにしてこの問題を回避することにしました。</p>
<p><a href="http://github.com/jugyo/twitter-auth">http://github.com/jugyo/twitter-auth</a></p>
<h3>インストール</h3>
<pre class="prettyprint">./script/plugin install git://github.com/jugyo/twitter-auth.git</pre>
<h3>使い方</h3>
<p>generator が用意されていて、以下を実行すると必要なファイルを作ってくれます。</p>
<pre class="prettyprint"> script/generate twitter_auth </pre>
<p>migration も作られるので必要に応じてスキーマを編集して rake db:migrate してください。</p>
<h3>証明書ファイルの取得</h3>
<p>以下のページを参考に、 Twitter の CA 証明書ファイルを取得し、適当な場所に保存します。</p>
<p><a href="http://d.hatena.ne.jp/vividcode/20091031/1256967931">http://d.hatena.ne.jp/vividcode/20091031/1256967931</a></p>
<h3>コンシューマーキーとシークレットキーの取得</h3>
<p>以下のページからアプリケーションを登録し、コンシューマーキーとシークレットキーを取得してください。</p>
<p><a href="https://twitter.com/apps">https://twitter.com/apps</a></p>
<h3>設定</h3>
<p>config/twitter_auth.yml を編集します。</p>
<pre class="prettyprint">development:
  strategy: oauth
  oauth_consumer_key: "コンシューマーキー"
  oauth_consumer_secret: "シークレットキー"
  base_url: "https://twitter.com"
  authorize_path: "/oauth/authenticate"
  api_timeout: 10
  remember_for: 14 # days
  oauth_callback: "http://localhost:3000/oauth_callback"
  ca_file: "証明書ファイルのパス"
...</pre>
<h3>確認</h3>
<p>./script/server でアプリケーションを起動し http://localhost:3000/session/new にアクセスすると、リダイレクトされて以下のようなページが表示されると思います。</p>
<p><img src="http://jugyo.org/blog/wp-content/uploads/2010/02/twitter_oauth1-500x245.png" alt="twitter_oauth" title="twitter_oauth" width="500" height="245" class="alignnone size-medium wp-image-3899" /></p>
<p>承認を求めているアプリケーションの名前が正しいことを確認し「Allow」ボタンを押してください。<br />
リダイレクトされて http://localhost:3000/ に帰ってきたら成功です。<br />
おめでとうございます。</p>
]]></content:encoded>
			<wfw:commentRss>http://jugyo.org/blog/3884/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB 体験記</title>
		<link>http://jugyo.org/blog/3873</link>
		<comments>http://jugyo.org/blog/3873#comments</comments>
		<pubDate>Thu, 04 Feb 2010 13:50:01 +0000</pubDate>
		<dc:creator>jugyo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[DB]]></category>
		<category><![CDATA[KVS]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://jugyo.org/blog/?p=3873</guid>
		<description>環境: Mac OSX 10.5.8
インストール 〜 起動
wget で tgz を取ってきて解凍して DB 用の適当なディレクトリ作って bin/mongod コマンドを叩けばすぐに起動できる。
wget http://downloads.mongodb.org/osx/mongodb-osx-i386-1.2.2.tgz
tar xvzf mongodb-osx-i386-1.2.2.tgz
cd mongodb-osx-i386-1.2.2
mkdir ~/tmp/db
bin/mongod --dbpath ~/tmp/db

Ruby から使う
ライブラリのインストール
gem install mongo_ext
簡単な使い方
&amp;#8220;foo&amp;#8221; というデータベースの &amp;#8220;test&amp;#8221; というコレクション（テーブルみたいなもの？）に {&amp;#8217;a&amp;#8217; =&gt; 10} というような Hash オブジェクトを突っ込む。
# mongodb example
require 'rubygems'
require 'mongo'

db = Mongo::Connection.new.db('foo')
coll = db.collection('test')

coll.remove

coll.insert({'a' =&gt; 10})
coll.insert({'b' =&gt; 20})
coll.insert({'c' =&gt; 30})

coll.find().each { &amp;#124;doc&amp;#124; puts doc.inspect }
たぶん、デフォルトで localhost の MongoDB に接続しにいってるんだろうな。
GridFS
GridFS [...]</description>
			<content:encoded><![CDATA[<p>環境: Mac OSX 10.5.8</p>
<h3>インストール 〜 起動</h3>
<p>wget で tgz を取ってきて解凍して DB 用の適当なディレクトリ作って bin/mongod コマンドを叩けばすぐに起動できる。</p>
<pre class="prettyprint">wget http://downloads.mongodb.org/osx/mongodb-osx-i386-1.2.2.tgz
tar xvzf mongodb-osx-i386-1.2.2.tgz
cd mongodb-osx-i386-1.2.2
mkdir ~/tmp/db
bin/mongod --dbpath ~/tmp/db
</pre>
<h3>Ruby から使う</h3>
<h4>ライブラリのインストール</h4>
<pre class="prettyprint">gem install mongo_ext</pre>
<h4>簡単な使い方</h4>
<p>&#8220;foo&#8221; というデータベースの &#8220;test&#8221; というコレクション（テーブルみたいなもの？）に {&#8217;a&#8217; => 10} というような Hash オブジェクトを突っ込む。</p>
<pre class="prettyprint"># mongodb example
require 'rubygems'
require 'mongo'

db = Mongo::Connection.new.db('foo')
coll = db.collection('test')

coll.remove

coll.insert({'a' => 10})
coll.insert({'b' => 20})
coll.insert({'c' => 30})

coll.find().each { |doc| puts doc.inspect }</pre>
<p>たぶん、デフォルトで localhost の MongoDB に接続しにいってるんだろうな。</p>
<h4>GridFS</h4>
<p>GridFS （MongoDB で動作するファイルシステムみたいなもの？）を使ってみる。</p>
<p>&#8220;test.txt&#8221; というファイルに &#8220;Hello, world!&#8221; という文字列を書き込んだあとにファイルの内容を読み込んで画面に出力する。</p>
<pre class="prettyprint"># mongodb GridFS example
require 'rubygems'
require 'mongo'
require 'mongo/gridfs'

include GridFS

db = Mongo::Connection.new.db('grid')

GridStore.open(db, 'test.txt', 'w') do |f|
  f.puts "Hello, world!"
end

GridStore.open(db, 'test.txt', 'r') do |f|
  puts f.read
end</pre>
<p>画像とかも保存できるんかな。</p>
<h3>次回</h3>
<p>次はアクセス制御とかのところを調べたい。</p>
]]></content:encoded>
			<wfw:commentRss>http://jugyo.org/blog/3873/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>notify.gem : クロスプラットフォームなデスクトップ通知ライブラリ</title>
		<link>http://jugyo.org/blog/3850</link>
		<comments>http://jugyo.org/blog/3850#comments</comments>
		<pubDate>Sun, 31 Jan 2010 13:48:34 +0000</pubDate>
		<dc:creator>jugyo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Growl]]></category>
		<category><![CDATA[notify-send]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://jugyo.org/blog/?p=3850</guid>
		<description>クロスプラットフォームなデスクトップ通知ライブラリを作りました。
これを使うと統一されたインターフェイスで growl や notify-send を使った通知が行えます。
インストール
gem でインストールできます。
gem install notify
これに加え、以下のライブラリもしくはコマンドのいずれかがインストールされている必要があります。

ruby-growl (ライブラリ)
notify-send (コマンド)
growlnotify (コマンド)

今のところ上記のライブラリおよびコマンドしかサポートしていません。
使い方
ライブラリを読み込んで Notify.notify メソッドを呼び出すだけです。
require 'rubygems'
require 'notify'

Notify.notify("タイトル", "メッセージ")
growl だとこんな感じで通知がでます。

notify-send だとこんな感じ。

使用するライブラリを指定したい場合は環境変数 &amp;#8220;NOTIFY&amp;#8221; にあらかじめ値をセットしておきます。
ENV["NOTIFY"] = 'growlnotify'
require 'rubygems'
require 'notify'

Notify.notify("タイトル", "メッセージ")
ソースコード
http://github.com/jugyo/notify
その他
growl と notify-send の他にも対応して欲しいライブラリがあったりしたら pull request ください〜。</description>
			<content:encoded><![CDATA[<p><img src="http://jugyo.org/blog/wp-content/uploads/2010/01/Picture-11.png" alt="Picture 1" title="Picture 1" width="420" height="154" class="alignnone size-full wp-image-3866" /></p>
<p>クロスプラットフォームなデスクトップ通知ライブラリを作りました。<br />
これを使うと統一されたインターフェイスで growl や notify-send を使った通知が行えます。</p>
<h3>インストール</h3>
<p>gem でインストールできます。</p>
<pre class="prettyprint">gem install notify</pre>
<p>これに加え、以下のライブラリもしくはコマンドのいずれかがインストールされている必要があります。</p>
<ul>
<li>ruby-growl (ライブラリ)</li>
<li>notify-send (コマンド)</li>
<li>growlnotify (コマンド)</li>
</ul>
<p>今のところ上記のライブラリおよびコマンドしかサポートしていません。</p>
<h3>使い方</h3>
<p>ライブラリを読み込んで Notify.notify メソッドを呼び出すだけです。</p>
<pre class="prettyprint">require 'rubygems'
require 'notify'

Notify.notify("タイトル", "メッセージ")</pre>
<p>growl だとこんな感じで通知がでます。</p>
<p><img src="http://jugyo.org/blog/wp-content/uploads/2010/01/Picture-1.png" alt="Picture 1" title="Picture 1" width="395" height="131" class="alignnone size-full wp-image-3855" /></p>
<p>notify-send だとこんな感じ。</p>
<p><img src="http://jugyo.org/blog/wp-content/uploads/2010/01/Screenshot-1-500x193.png" alt="Screenshot-1" title="Screenshot-1" width="500" height="193" class="alignnone size-medium wp-image-3863" /></p>
<p>使用するライブラリを指定したい場合は環境変数 &#8220;NOTIFY&#8221; にあらかじめ値をセットしておきます。</p>
<pre class="prettyprint">ENV["NOTIFY"] = 'growlnotify'
require 'rubygems'
require 'notify'

Notify.notify("タイトル", "メッセージ")</pre>
<h3>ソースコード</h3>
<p><a href="http://github.com/jugyo/notify">http://github.com/jugyo/notify</a></p>
<h3>その他</h3>
<p>growl と notify-send の他にも対応して欲しいライブラリがあったりしたら pull request ください〜。</p>
]]></content:encoded>
			<wfw:commentRss>http://jugyo.org/blog/3850/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enjoy Scala! #3 : 配列を扱う</title>
		<link>http://jugyo.org/blog/3829</link>
		<comments>http://jugyo.org/blog/3829#comments</comments>
		<pubDate>Mon, 21 Dec 2009 14:48:10 +0000</pubDate>
		<dc:creator>jugyo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://jugyo.org/blog/?p=3829</guid>
		<description>こんばんは！
正月が待ち遠しい jugyo です！
みなさんは何歳くらいまでお年玉をもらっていましたか？
さて、Enjoy Scala! の第３回目です。
今日は Scala で配列を扱ってみたいと思います。
ではさっそくコードを見てみましょう。
// Array を new
val strings = new Array[String](4)
// 配列に値をセット
strings(0) = "A"
strings(1) = "B"
strings(2) = "C"
strings(3) = "D"
// 出力
strings.foreach(i =&gt; println(i))
この例では、長さが 4 の配列を定義しています。
「strings(3) = "D"」のように「()」を使って配列に値をセットしていますね。
こう書いたとき、コンパイラが「strings.update(3, "D")」というふうに update メソッドを呼び出すかたちに変換してくれるらしいです。
次に、配列の 0 〜 2 番目までを出力したいとしましょう。
そういう場合は以下のようにします。
for (i</description>
			<content:encoded><![CDATA[<p>こんばんは！<br />
正月が待ち遠しい jugyo です！<br />
みなさんは何歳くらいまでお年玉をもらっていましたか？</p>
<p>さて、Enjoy Scala! の第３回目です。<br />
今日は Scala で配列を扱ってみたいと思います。</p>
<p>ではさっそくコードを見てみましょう。</p>
<pre class="prettyprint">// Array を new
val strings = new Array[String](4)
// 配列に値をセット
strings(0) = "A"
strings(1) = "B"
strings(2) = "C"
strings(3) = "D"
// 出力
strings.foreach(i => println(i))</pre>
<p>この例では、長さが 4 の配列を定義しています。<br />
「<code>strings(3) = "D"</code>」のように「()」を使って配列に値をセットしていますね。<br />
こう書いたとき、コンパイラが「<code>strings.update(3, "D")</code>」というふうに update メソッドを呼び出すかたちに変換してくれるらしいです。</p>
<p>次に、配列の 0 〜 2 番目までを出力したいとしましょう。<br />
そういう場合は以下のようにします。</p>
<pre class="prettyprint">for (i <- 0 to 2)
  println(strings(i))</pre>
<p>ちなみに、上記の「<code>0 to 2</code>」という部分は実際には「<code>(0).to(2)</code>」というメソッド呼び出しに変換されるらしいです。<br />
なので、以下のように書きかえることもできます。</p>
<pre class="prettyprint">for (i <- 0.to(2))
  println(strings(i))</pre>
<p>さらに、 foreach メソッドを使って以下のように書きかえることもできます。</p>
<pre class="prettyprint">0.to(2).foreach(i => println(strings(i)))</pre>
<p>で、さっきの「<code>0 to 2</code>」が「<code>(0).to(2)</code>」となる件ですけど、 Scala ではメソッド呼び出しの際、レシーバが明示的に指定されていると「.」と「()」を省略できるらしいです。<br />
なので例えば、「<code>(1).+(1)</code>」というメソッド呼び出しを「<code>1 + 1</code>」というふうに書けるんです！</p>
<p>面白いですね！</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=jugyo-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4844327453" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://jugyo.org/blog/3829/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>初めての Scala #2 : foreach と for</title>
		<link>http://jugyo.org/blog/3806</link>
		<comments>http://jugyo.org/blog/3806#comments</comments>
		<pubDate>Mon, 21 Dec 2009 14:03:10 +0000</pubDate>
		<dc:creator>jugyo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://jugyo.org/blog/?p=3806</guid>
		<description>こんばんは！
クリスマスが待ち遠しい jugyo です！
ずいぶん寒くなってきましたね！
さて、今日は Scala の foreach と for についてのお話です。
foeach と for と
scala コマンドでスクリプトを起動した際、 args という変数にプログラムの引数が入ってきます。
配列の foreach メソッドを使って引数のリストを出力してみます。
args.foreach(arg =&gt; println(arg))
上記の例では foreach メソッドに arg =&amp;#62; println(arg) という関数を渡しています。
arg =&amp;#62; println(arg) というのが Scala における関数リテラルみたいです。
引数を一個しかとらない関数リテラルの場合は引数を省略できるらしく、上記の例だと以下のように書くこともできます。
args.foreach(println)
関数リテラルで明示的に型を指定することもできて、その場合は以下のようになります。
args.foreach((arg :String) =&gt; println(arg))
Scala では型は基本的に変数等の後ろに書くみたいです。
ちなみに for 文（式？）もあって、それを使うと上記のコードを以下のように書き換えることができます。
for (arg</description>
			<content:encoded><![CDATA[<p>こんばんは！<br />
クリスマスが待ち遠しい jugyo です！<br />
ずいぶん寒くなってきましたね！</p>
<p>さて、今日は Scala の <strong>foreach</strong> と <strong>for</strong> についてのお話です。</p>
<h3>foeach と for と</h3>
<p><strong>scala</strong> コマンドでスクリプトを起動した際、 <strong>args</strong> という変数にプログラムの引数が入ってきます。<br />
配列の <strong>foreach</strong> メソッドを使って引数のリストを出力してみます。</p>
<pre class="prettyprint">args.foreach(arg => println(arg))</pre>
<p>上記の例では <strong>foreach</strong> メソッドに <strong>arg =&gt; println(arg)</strong> という関数を渡しています。<br />
<strong>arg =&gt; println(arg)</strong> というのが Scala における関数リテラルみたいです。<br />
引数を一個しかとらない関数リテラルの場合は引数を省略できるらしく、上記の例だと以下のように書くこともできます。</p>
<pre class="prettyprint">args.foreach(println)</pre>
<p>関数リテラルで明示的に型を指定することもできて、その場合は以下のようになります。</p>
<pre class="prettyprint">args.foreach((arg :String) => println(arg))</pre>
<p>Scala では型は基本的に変数等の後ろに書くみたいです。</p>
<p>ちなみに <strong>for</strong> 文（式？）もあって、それを使うと上記のコードを以下のように書き換えることができます。</p>
<pre class="prettyprint">for (arg <- args)
  println(arg)</pre>
<p>僕は <strong>foreach</strong> のほうが好きですね。</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=jugyo-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4844327453" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://jugyo.org/blog/3806/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scala はじめました</title>
		<link>http://jugyo.org/blog/3788</link>
		<comments>http://jugyo.org/blog/3788#comments</comments>
		<pubDate>Sat, 19 Dec 2009 07:02:04 +0000</pubDate>
		<dc:creator>jugyo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://jugyo.org/blog/?p=3788</guid>
		<description>Scala にとても興味が湧いてきたので本を買って勉強を始めました。
そのうち勉強会とかやりたいです。
とりあえず今日は Scala をインストールしてインタープリターを少しだけ使ってみました。
Mac での Scala のインストール
MacPorts を使えば簡単にインストールできる。
sudo port install scala
Scala インタープリターの起動
scala とだけ入力して実行すると Scala インタープリターが起動する。
僕の環境だと以下のような感じになる。
% scala
Welcome to Scala version 2.7.5.final (Java HotSpot(TM) Client VM, Java 1.5.0_22).
Type in expressions to have them evaluated.
Type :help for more information.

scala&amp;#62; 
インタープリター中で日本語を使いたい場合は -Xnojline オプションを付ける。
Hello World!
とりあえず「Hello World!」を出力してみる。
scala&amp;#62; println(&amp;#34;Hello World!&amp;#34;)
Hello World!
変数の定義
Scala には var と val の二種類の変数がある。
var は Ruby にもあるようないわゆる普通の変数。
val は Java の [...]</description>
			<content:encoded><![CDATA[<p><img src="http://jugyo.org/blog/wp-content/uploads/2009/12/Home-500x71.png" alt="Home" title="Home" width="500" height="71" class="alignnone size-medium wp-image-3803" /></p>
<p>Scala にとても興味が湧いてきたので本を買って勉強を始めました。<br />
そのうち勉強会とかやりたいです。</p>
<p>とりあえず今日は Scala をインストールしてインタープリターを少しだけ使ってみました。</p>
<h3>Mac での Scala のインストール</h3>
<p>MacPorts を使えば簡単にインストールできる。</p>
<pre>sudo port install scala</pre>
<h3>Scala インタープリターの起動</h3>
<p>scala とだけ入力して実行すると Scala インタープリターが起動する。<br />
僕の環境だと以下のような感じになる。</p>
<pre>% scala
Welcome to Scala version 2.7.5.final (Java HotSpot(TM) Client VM, Java 1.5.0_22).
Type in expressions to have them evaluated.
Type :help for more information.

scala&gt; </pre>
<p>インタープリター中で日本語を使いたい場合は -Xnojline オプションを付ける。</p>
<h3>Hello World!</h3>
<p>とりあえず「Hello World!」を出力してみる。</p>
<pre>scala&gt; println(&quot;Hello World!&quot;)
Hello World!</pre>
<h3>変数の定義</h3>
<p>Scala には var と val の二種類の変数がある。<br />
var は Ruby にもあるようないわゆる普通の変数。<br />
val は Java の final に似ていて、初期化後に別の値を代入することができない。</p>
<p><strong>var</strong> の場合:</p>
<pre>scala&gt; var foo = &quot;foo&quot;
foo: java.lang.String = foo

scala&gt; foo = &quot;FOO&quot;
foo: java.lang.String = FOO</pre>
<p><strong>val</strong> の場合:</p>
<pre>scala&gt; val foo = &quot;foo&quot;
foo: java.lang.String = foo

scala&gt; foo = &quot;FOO&quot;
&lt;console&gt;:5: error: reassignment to val
       foo = &quot;FOO&quot;
           ^</pre>
<p>val に値を再代入しようとすると怒られる。</p>
<h3>参考</h3>
<p>今この本を読んでいます。<br />
わかりやすくかつおもしろいです。</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=jugyo-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4844327453" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://jugyo.org/blog/3788/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GAE で Sinatra を使って “foo” を表示する最速の方法</title>
		<link>http://jugyo.org/blog/3760</link>
		<comments>http://jugyo.org/blog/3760#comments</comments>
		<pubDate>Fri, 18 Dec 2009 14:54:50 +0000</pubDate>
		<dc:creator>jugyo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Sinatra]]></category>

		<guid isPermaLink="false">http://jugyo.org/blog/?p=3760</guid>
		<description>あなたは急に、 Google App Engine で Sinatra を使って &amp;#8220;foo&amp;#8221; を表示したくなりました。
以下は、現時点で僕が知ってるその最速の方法です。
参考にしてください。
ちなみに環境は Mac OSX です。
google-appengine というライブラリを gem でインストールします。
% gem install google-appengine
プロジェクトのディレクトリを作成します。
% mkdir foo
% cd foo
config.ru というファイルを作成します。
以下を記述します。
require 'appengine-rack'
AppEngine::Rack.configure_app(
  :application =&gt; "application_id",
  :version =&gt; 1
)
require 'foo.rb'
run Sinatra::Application
Gemfile というファイルを作成します。
# Critical default settings:
disable_system_gems
disable_rubygems
bundle_path ".gems/bundler_gems"
# List gems to bundle here:
gem "appengine-rack"
gem "sinatra"
foo.rb というファイルを作成します。
require 'sinatra'

get '/' do
  'foo'
end
試しにローカルで起動してみます。
% dev_appserver.rb .
（僕の環境だと一回目はなぜか起動に失敗します）
そしていよいよデプロイです。
% appcfg.rb [...]</description>
			<content:encoded><![CDATA[<p><img src="http://jugyo.org/blog/wp-content/uploads/2009/12/appengine_lowres.gif" alt="appengine_lowres" title="appengine_lowres" width="142" height="109" class="alignnone size-full wp-image-3781" /></p>
<p>あなたは急に、 Google App Engine で Sinatra を使って &#8220;foo&#8221; を表示したくなりました。</p>
<p>以下は、現時点で僕が知ってるその最速の方法です。<br />
参考にしてください。<br />
ちなみに環境は Mac OSX です。</p>
<p>google-appengine というライブラリを gem でインストールします。</p>
<pre class="prettyprint">% gem install google-appengine</pre>
<p>プロジェクトのディレクトリを作成します。</p>
<pre class="prettyprint">% mkdir foo
% cd foo</pre>
<p>config.ru というファイルを作成します。<br />
以下を記述します。</p>
<pre class="prettyprint">require 'appengine-rack'
AppEngine::Rack.configure_app(
  :application => "application_id",
  :version => 1
)
require 'foo.rb'
run Sinatra::Application</pre>
<p>Gemfile というファイルを作成します。</p>
<pre class="prettyprint"># Critical default settings:
disable_system_gems
disable_rubygems
bundle_path ".gems/bundler_gems"
# List gems to bundle here:
gem "appengine-rack"
gem "sinatra"</pre>
<p>foo.rb というファイルを作成します。</p>
<pre class="prettyprint">require 'sinatra'

get '/' do
  'foo'
end</pre>
<p>試しにローカルで起動してみます。</p>
<pre class="prettyprint">% dev_appserver.rb .</pre>
<p>（僕の環境だと一回目はなぜか起動に失敗します）</p>
<p>そしていよいよデプロイです。</p>
<pre class="prettyprint">% appcfg.rb update .</pre>
<p>デプロイが完了したら http://&lt;application_id&gt;.appspot.com/ にアクセスしてみましょう。<br />
立ち上がりはお世辞にも早いとは言えませんが、そのうち foo が表示されるはずです。</p>
<p><img src="http://jugyo.org/blog/wp-content/uploads/2009/12/Picture-13.png" alt="Picture 13" title="Picture 13" width="229" height="167" class="alignnone size-full wp-image-3784" /></p>
<p>enjoy foo!</p>
<p>See also: <a href="http://code.google.com/p/appengine-jruby/">http://code.google.com/p/appengine-jruby/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jugyo.org/blog/3760/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sinatra_debug_console</title>
		<link>http://jugyo.org/blog/3754</link>
		<comments>http://jugyo.org/blog/3754#comments</comments>
		<pubDate>Tue, 15 Dec 2009 13:49:27 +0000</pubDate>
		<dc:creator>jugyo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Sinatra]]></category>

		<guid isPermaLink="false">http://jugyo.org/blog/?p=3754</guid>
		<description>Description
http://github.com/jugyo/sinatra_debug_console
Debug console for sinatra

Installation
gem install sinatra_debug_console
Usage
require 'sinatra_debug_console'
Sinatra::DebugConsole.config(USERNAME, PASSWORD)
Example
# % ruby app.rb
# see http://localhost:4567/debug_console

require 'sinatra'
require 'sinatra_debug_console'
Sinatra::DebugConsole.config('admin', 'password')</description>
			<content:encoded><![CDATA[<h3>Description</h3>
<p><a href="http://github.com/jugyo/sinatra_debug_console">http://github.com/jugyo/sinatra_debug_console</a></p>
<p>Debug console for sinatra</p>
<p><a href="http://www.flickr.com/photos/22883452@N04/4187659132/" title="Debug console for sinatra by jugyo, on Flickr"><img src="http://farm3.static.flickr.com/2659/4187659132_7c3cde58aa_o.png" width="553" height="421" alt="Debug console for sinatra" /></a></p>
<h3>Installation</h3>
<pre class="prettyprint">gem install sinatra_debug_console</pre>
<h3>Usage</h3>
<pre class="prettyprint">require 'sinatra_debug_console'
Sinatra::DebugConsole.config(USERNAME, PASSWORD)</pre>
<h3>Example</h3>
<pre class="prettyprint"># % ruby app.rb
# see http://localhost:4567/debug_console

require 'sinatra'
require 'sinatra_debug_console'
Sinatra::DebugConsole.config('admin', 'password')</pre>
]]></content:encoded>
			<wfw:commentRss>http://jugyo.org/blog/3754/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Growl で開発の効率をUP!</title>
		<link>http://jugyo.org/blog/3685</link>
		<comments>http://jugyo.org/blog/3685#comments</comments>
		<pubDate>Sat, 05 Dec 2009 13:02:30 +0000</pubDate>
		<dc:creator>jugyo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Advent Calendar]]></category>
		<category><![CDATA[Growl]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://jugyo.org/blog/?p=3685</guid>
		<description>（この記事は Ruby Advent Calendar jp: 2009 : ATND の5日目です。前日は authorNari さんでした）
こんばんは！
g こと jugyo です！
今日は Growl を使って開発の効率をUP!させる方法について紹介したいと思います。
しばしお付き合いください。
Mac ユーザーでない方もしばしお付き合いください。
Growl については以下のページが参考になるかと思います。
Growl &amp;#124; Macの手書き説明書
g
まず g について。
g はデバッグ用のツールで、 p で出力されるような文字列を Growl を使って表示します。
標準出力に出すよりも目立っていい感じです。

インストール方法:
gem install g
 Growl の設定で以下の項目にチェックが着いていることを確認してください。

使い方:
require 'g'
g "Ruby Advent Calendar jp: 2009!"
簡単ですね♪
growl-logger
次は growl-logger について紹介したいと思います。
みなさんは Logger って使ったことありますよね？
logger.debug("foo bar") とかやるアレです。
growl-logger はそんな Logger の一種で、 Growl を使ってログを出力します。
Growl 側の設定を変えることで、以下のようにログレベルに応じて色を変えることが可能となっています。

これを思いついたときは「すごい発明だ！」と思ったのですが、現状あまり使われていないようです。
私も使っていません。
インストール方法:
gem install growl-logger
growl_sql
最後に growl_sql の紹介をしたいと思います。
growl_sql は Rails [...]</description>
			<content:encoded><![CDATA[<p><img src="http://jugyo.org/blog/wp-content/uploads/2009/12/Picture-4.png" alt="Picture 4" title="Picture 4" width="428" height="137" class="alignnone size-full wp-image-3715" /></p>
<p>（この記事は <a href="http://atnd.org/events/2351">Ruby Advent Calendar jp: 2009 : ATND</a> の5日目です。前日は <a href="http://d.hatena.ne.jp/authorNari/20091204/1259927618">authorNari</a> さんでした）</p>
<p>こんばんは！<br />
g こと jugyo です！<br />
今日は <a href="http://growl.info/">Growl</a> を使って開発の効率をUP!させる方法について紹介したいと思います。<br />
しばしお付き合いください。<br />
Mac ユーザーでない方もしばしお付き合いください。<br />
Growl については以下のページが参考になるかと思います。<br />
<a href="http://veadardiary.blog29.fc2.com/blog-entry-317.html">Growl | Macの手書き説明書</a></p>
<h3>g</h3>
<p>まず <a href="http://github.com/jugyo/g">g</a> について。<br />
g はデバッグ用のツールで、 <a href="http://www.ruby-lang.org/ja/man/html/_C1C8A4DFB9FEA4DFB4D8BFF4.html#p">p</a> で出力されるような文字列を Growl を使って表示します。<br />
標準出力に出すよりも目立っていい感じです。</p>
<p><img src="http://jugyo.org/blog/wp-content/uploads/2009/12/g-500x229.png" alt="g" title="g" width="500" height="229" class="alignnone size-medium wp-image-3686" /></p>
<p>インストール方法:</p>
<pre class="prettyprint">gem install g</pre>
<p> Growl の設定で以下の項目にチェックが着いていることを確認してください。</p>
<p><img src="http://jugyo.org/blog/wp-content/uploads/2009/12/growl_config-500x254.png" alt="growl_config" title="growl_config" width="500" height="254" class="alignnone size-medium wp-image-3689" /></p>
<p>使い方:</p>
<pre class="prettyprint">require 'g'
g "Ruby Advent Calendar jp: 2009!"</pre>
<p>簡単ですね♪</p>
<h3>growl-logger</h3>
<p>次は <a href="http://github.com/jugyo/growl-logger">growl-logger</a> について紹介したいと思います。<br />
みなさんは Logger って使ったことありますよね？<br />
<code>logger.debug("foo bar")</code> とかやるアレです。<br />
growl-logger はそんな Logger の一種で、 Growl を使ってログを出力します。<br />
Growl 側の設定を変えることで、以下のようにログレベルに応じて色を変えることが可能となっています。</p>
<p><img src="http://jugyo.org/blog/wp-content/uploads/2009/12/3384656890_446c1cd6e2_o.png" alt="3384656890_446c1cd6e2_o" title="3384656890_446c1cd6e2_o" width="436" height="399" class="alignnone size-full wp-image-3698" /></p>
<p>これを思いついたときは「すごい発明だ！」と思ったのですが、現状あまり使われていないようです。<br />
私も使っていません。</p>
<p>インストール方法:</p>
<pre class="prettyprint">gem install growl-logger</pre>
<h3>growl_sql</h3>
<p>最後に <a href="http://github.com/jugyo/growl_sql">growl_sql</a> の紹介をしたいと思います。<br />
growl_sql は Rails のプラグインです。<br />
Rails アプリが発行する SQL を Growl を使って画面に表示します。</p>
<p>使用例:</p>
<p>以下のようなフォームをポストすると&#8230;</p>
<p><img src="http://jugyo.org/blog/wp-content/uploads/2009/12/Picture-5.png" alt="Picture 5" title="Picture 5" width="455" height="354" class="alignnone size-full wp-image-3720" /></p>
<p>実行された SQL 文が表示される！</p>
<p><img src="http://jugyo.org/blog/wp-content/uploads/2009/12/Picture-8-500x377.png" alt="Picture 8" title="Picture 8" width="500" height="377" class="alignnone size-medium wp-image-3750" /></p>
<p>growl_sql が出力する SQL 文は INSERT と UPDATE と DELETE の3種類です。</p>
<p>はじめ、 SELECT 文を含むすべての SQL を出力するようにしていたら画面が SQL で埋め尽くされて大変なことになりました。<br />
Growl の使いすぎに気をつけましょう。</p>
<p>インストール方法:</p>
<pre class="prettyprint">./script/plugin install git://github.com/jugyo/growl_sql.git</pre>
<h3>結論</h3>
<p>Growl って楽しいですね！</p>
<p>（明日、6日目は <a href="http://twitter.com/takkanm">takkanm</a> さんです！お楽しみに！（そういえば takkanm さんにはお会いしたことないなぁ））</p>
]]></content:encoded>
			<wfw:commentRss>http://jugyo.org/blog/3685/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RubyConf に行ってきました！</title>
		<link>http://jugyo.org/blog/3668</link>
		<comments>http://jugyo.org/blog/3668#comments</comments>
		<pubDate>Fri, 27 Nov 2009 16:45:02 +0000</pubDate>
		<dc:creator>jugyo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[g]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[RubyConf]]></category>

		<guid isPermaLink="false">http://jugyo.org/blog/?p=3668</guid>
		<description>サンフランシスコで行われた RubyConf に参加してきました！
めちゃくちゃ楽しかったです！
 
ライトニングトークで &amp;#8220;g&amp;#8221; についてしゃべりました。
死ぬかと思うくらい緊張しましたがなんとかなりました。
資料とストーリーさえちゃんと作っておけばなんとかなるもんですね。
それに信じられないくらい好評でした！
知らない外人さんからもたくさん褒めてもらってとてもとても嬉しかったです。
アメリカに住みたいっす！
&amp;#8220;g&amp;#8221; のプレゼン資料です。
&amp;#34;g&amp;#34; is very useful
View more presentations from jugyo kohno.

Termtter ユーザーも増えました！</description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/22883452@N04/4118855525/" title="SDIM1214 by jugyo, on Flickr"><img src="http://farm3.static.flickr.com/2601/4118855525_f8b427a47e.jpg" width="500" height="333" alt="SDIM1214" /></a></p>
<p>サンフランシスコで行われた RubyConf に参加してきました！<br />
めちゃくちゃ楽しかったです！</p>
<p><a class="tt-flickr" href="http://www.flickr.com/photos/22883452@N04/4123751723"><img class="tt-flickr" src="http://farm3.static.flickr.com/2485/4123751723_31fefe94d4.jpg" width="500" height="333" alt="SDIM1268" /></a> </p>
<p>ライトニングトークで <a href="http://github.com/jugyo/g">&#8220;g&#8221;</a> についてしゃべりました。<br />
死ぬかと思うくらい緊張しましたがなんとかなりました。<br />
資料とストーリーさえちゃんと作っておけばなんとかなるもんですね。<br />
それに信じられないくらい好評でした！<br />
知らない外人さんからもたくさん褒めてもらってとてもとても嬉しかったです。<br />
アメリカに住みたいっす！</p>
<p><a href="http://github.com/jugyo/g">&#8220;g&#8221;</a> のプレゼン資料です。</p>
<div style="width:425px;text-align:left" id="__ss_2543116"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/jugyo/g-is-very-useful" title="&quot;g&quot; is very useful">&quot;g&quot; is very useful</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=rubyconfltg-091120032645-phpapp02&#038;stripped_title=g-is-very-useful" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=rubyconfltg-091120032645-phpapp02&#038;stripped_title=g-is-very-useful" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/jugyo">jugyo kohno</a>.</div>
</div>
<p><a href="http://github.com/jugyo/termtter">Termtter</a> ユーザーも増えました！</p>
<p><a href="http://www.flickr.com/photos/22883452@N04/4122811163/" title="termtter user by jugyo, on Flickr"><img src="http://farm3.static.flickr.com/2655/4122811163_6d4a458be8.jpg" width="500" height="333" alt="termtter user" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://jugyo.org/blog/3668/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
