jugyo.wordpress.com

Yet another jugyo's blog

wordpress.com に引っ越した

with one comment

wordpress.com に引っ越した

https://jugyo.wordpress.com/

Written by jugyo

January 3, 2011 at 23:45

Posted in Uncategorized

読書: 情熱プログラマー – Chad Fowler

leave a comment »

情熱プログラマー」読みました。オーム社の森田さんから献本していただきました。ありがとうございます!いつも思うんですけど、どの本も装丁が奇麗ですね!

さて、この本ですが、まだ自分のなかで内容を消化しきれてないというか、身につまされないといけないはずなんだけどまだ実感がわかないというか、なんかそんな感じです。あいまいな表現で申し訳ありません。読み終わった後に「さて、じゃあ僕は今何をすべきだろうか」と、ちょっと(いや、かなり)考えてしました。で、いまだにあれこれ考えてます。

本書の後半にさしかかってくるとだんだん自分が説教されてるんじゃないかとかいう変な思いにかられてしまったりしました。あと、「ファウラー氏に比べたら、俺しょぼい仕事しかしてねー」とか思ってしまいました。(いや、しょぼい仕事なんて言ってすみません。。仕事があるっていうのはほんとありがたいことです。)

ていうかチャド・ファウラー氏すごすぎなんですよ!なんかこう、追いつきたいという思いを通り越して畏怖してしまうような、そんな感じっす。ていうか日本人って外人を無条件にすごいと思ってしまうところありますよね、ね。

そんな中、僕が面白いと感じたのはファウラー氏の若かりしころの話。読むと「ファウラーさんも人間なんだなぁ」(あたりまえだけど)とか思えます。

すごい人に少しでも近づくには、すごい人が何を考えているのか・どういう考え方をしているのかを知る必要があって、そのためにこういう本があるんじゃないかな、と思いました。あと、「こういう時、チャド・ファウラー氏ならこうするはずだ!」という指針にもなりますね。

僕もサックスが吹けるようになりたいです。

GitHub 誕生のコラムはかなり読んでいて熱いものが込み上げてくる感じがありました。やっぱああいうのにあこがれますねぇ。人生、冒険ですねぇ。

あと興味深かったのは、 Patrick Collison という人の「失敗と模倣」というコラム。とにかく自分の手でいろんなプログラムを作って失敗してみるべき、というようなことを言っていて、すごく共感できました。すごいものを作り上げた人って、実際にはそれ以外にもいろんなものを作っているはずで、それらのほとんどは失敗作だったりするんだと思うんですよね。何度も何度も失敗してたまに良いできのものができる、という感じなんだと思うんです。実際に作ることを通してしか得られないものがあると思うのです

そんなわけで、明日もがんばるぞー。

Written by jugyo

March 18, 2010 at 23:32

Posted in Uncategorized

Tagged with , ,

twitter-auth を使って Rails で簡単 Twitter 認証♪

leave a comment »

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: "/oauth/authenticate"
  api_timeout: 10
  remember_for: 14 # days
  oauth_callback: "http://localhost:3000/oauth_callback"
  ca_file: "証明書ファイルのパス"
...

確認

./script/server でアプリケーションを起動し http://localhost:3000/session/new にアクセスすると、リダイレクトされて以下のようなページが表示されると思います。

twitter_oauth

承認を求めているアプリケーションの名前が正しいことを確認し「Allow」ボタンを押してください。
リダイレクトされて http://localhost:3000/ に帰ってきたら成功です。
おめでとうございます。

Written by jugyo

February 6, 2010 at 23:37

Posted in Uncategorized

Tagged with , , ,

MongoDB 体験記

leave a comment »

環境: 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

簡単な使い方

“foo” というデータベースの “test” というコレクション(テーブルみたいなもの?)に {‘a’ => 10} というような Hash オブジェクトを突っ込む。

# 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 }

たぶん、デフォルトで localhost の MongoDB に接続しにいってるんだろうな。

GridFS

GridFS (MongoDB で動作するファイルシステムみたいなもの?)を使ってみる。

“test.txt” というファイルに “Hello, world!” という文字列を書き込んだあとにファイルの内容を読み込んで画面に出力する。

# 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

画像とかも保存できるんかな。

次回

次はアクセス制御とかのところを調べたい。

Written by jugyo

February 4, 2010 at 22:50

Posted in Uncategorized

Tagged with , , ,

notify.gem : クロスプラットフォームなデスクトップ通知ライブラリ

leave a comment »

Picture 1

クロスプラットフォームなデスクトップ通知ライブラリを作りました。
これを使うと統一されたインターフェイスで growl や notify-send を使った通知が行えます。

インストール

gem でインストールできます。

gem install notify

これに加え、以下のライブラリもしくはコマンドのいずれかがインストールされている必要があります。

  • ruby-growl (ライブラリ)
  • notify-send (コマンド)
  • growlnotify (コマンド)

今のところ上記のライブラリおよびコマンドしかサポートしていません。

使い方

ライブラリを読み込んで Notify.notify メソッドを呼び出すだけです。

require 'rubygems'
require 'notify'

Notify.notify("タイトル", "メッセージ")

growl だとこんな感じで通知がでます。

Picture 1

notify-send だとこんな感じ。

Screenshot-1

使用するライブラリを指定したい場合は環境変数 “NOTIFY” にあらかじめ値をセットしておきます。

ENV["NOTIFY"] = 'growlnotify'
require 'rubygems'
require 'notify'

Notify.notify("タイトル", "メッセージ")

ソースコード

http://github.com/jugyo/notify

その他

growl と notify-send の他にも対応して欲しいライブラリがあったりしたら pull request ください〜。

Written by jugyo

January 31, 2010 at 22:48

Posted in Uncategorized

Tagged with , ,

Enjoy Scala! #3 : 配列を扱う

with 3 comments

こんばんは!
正月が待ち遠しい jugyo です!
みなさんは何歳くらいまでお年玉をもらっていましたか?

さて、Enjoy Scala! の第3回目です。
今日は Scala で配列を扱ってみたいと思います。

ではさっそくコードを見てみましょう。

// 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))

この例では、長さが 4 の配列を定義しています。
strings(3) = "D"」のように「()」を使って配列に値をセットしていますね。
こう書いたとき、コンパイラが「strings.update(3, "D")」というふうに update メソッドを呼び出すかたちに変換してくれるらしいです。

次に、配列の 0 〜 2 番目までを出力したいとしましょう。
そういう場合は以下のようにします。

for (i <- 0 to 2)
  println(strings(i))

ちなみに、上記の「0 to 2」という部分は実際には「(0).to(2)」というメソッド呼び出しに変換されるらしいです。
なので、以下のように書きかえることもできます。

for (i <- 0.to(2))
  println(strings(i))

さらに、 foreach メソッドを使って以下のように書きかえることもできます。

0.to(2).foreach(i => println(strings(i)))

で、さっきの「0 to 2」が「(0).to(2)」となる件ですけど、 Scala ではメソッド呼び出しの際、レシーバが明示的に指定されていると「.」と「()」を省略できるらしいです。
なので例えば、「(1).+(1)」というメソッド呼び出しを「1 + 1」というふうに書けるんです!

面白いですね!

http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=jugyo-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4844327453

Written by jugyo

December 21, 2009 at 23:48

Posted in Uncategorized

Tagged with

初めての Scala #2 : foreach と for

leave a comment »

こんばんは!
クリスマスが待ち遠しい jugyo です!
ずいぶん寒くなってきましたね!

さて、今日は Scala の foreachfor についてのお話です。

foeach と for と

scala コマンドでスクリプトを起動した際、 args という変数にプログラムの引数が入ってきます。
配列の foreach メソッドを使って引数のリストを出力してみます。

args.foreach(arg => println(arg))

上記の例では foreach メソッドに arg => println(arg) という関数を渡しています。
arg => println(arg) というのが Scala における関数リテラルみたいです。
引数を一個しかとらない関数リテラルの場合は引数を省略できるらしく、上記の例だと以下のように書くこともできます。

args.foreach(println)

関数リテラルで明示的に型を指定することもできて、その場合は以下のようになります。

args.foreach((arg :String) => println(arg))

Scala では型は基本的に変数等の後ろに書くみたいです。

ちなみに for 文(式?)もあって、それを使うと上記のコードを以下のように書き換えることができます。

for (arg <- args)
  println(arg)

僕は foreach のほうが好きですね。

http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=jugyo-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4844327453

Written by jugyo

December 21, 2009 at 23:03

Posted in Uncategorized

Tagged with

Follow

Get every new post delivered to your Inbox.