May 22, 2009

近況

最近、自宅ではひたすらプログラミングしてます。
時間さえあればプログラミングしてるのでブログを書く習慣がなくなりつつあります。

そういえば「More Joel on Software」を読みましたけど、相変わらず面白かったです。

ところで最近こんなの作りました。

Gitki

https://github.com/jugyo/gitki/tree

git を使って更新する wiki です。
ブラウザからは更新できません。
デモ: http://gitki.oyguj.org/

ifchanged

https://github.com/jugyo/ifchanged/tree

引数に渡したファイルが更新されたときに「何か」を実行するためのコマンドです。

% ifchanged ./**/*.html --do 'open %'

みたいにして使います。

g

https://github.com/jugyo/g/tree

ruby の組み込み関数の「p」のような動きをするメソッド「g」を提供するライブラリです。
オブジェクトを inspec した結果を growl で表示します。

Picture 13.png

May 1, 2009

Sequel を試す

インストール

sudo gem install sequel

使ってみる

初期化処理を行い、テーブルを作成し、データをいくつか投入してみます。

require 'rubygems'
require 'sequel'

# initialize
DB = Sequel.sqlite('test.db')

# create database
DB.create_table :items do
  primary_key :id
  String :name
  Float :price
end

# insert data
items = DB[:items]
items << {:name => 'foo', :price => 100}
items << {:name => 'bar', :price => 200}

まあ、何やってるかだいたいわかりますよね。

Sequel コンソール

以下のようにしてコンソールを立ち上げることができます。

sequel sqlite://test.db

諸々の初期化処理を行った状態で irb が起動してるんだと思います。
こういうツールが用意されてるっていいですね!

データの取得

上記で作成したデータをいろんなやり方で取得してみます。
Sequel コンソールで実行しました。

# count
> DB[:items].count
=> 2

# select all
> DB[:items].all
=> [{:price=>100.0, :name=>"foo", :id=>1}, {:price=>200.0, :name=>"bar", :id=>2}]

# select first
> DB[:items].first
=> {:price=>100.0, :name=>"foo", :id=>1}

# select id = 2
> DB[:items][:id => 2]
=> {:price=>200.0, :name=>"bar", :id=>2}

# select price = 200
> DB[:items].filter(:price => 200).all
=> [{:price=>200.0, :name=>"bar", :id=>2}]

# select price > 100
> DB[:items].filter{|i| i.price > 100}.all
=> [{:price=>200.0, :name=>"bar", :id=>2}]

# select price < 100
> DB[:items].filter('price < ?', 200).all
=> [{:price=>100.0, :name=>"foo", :id=>1}]

# select by sql
> DB['select * from items'].all
=> [{:price=>100.0, :name=>"foo", :id=>1}, {:price=>200.0, :name=>"bar", :id=>2}]

なんとなくイメージはつかめましたか?

TermColor に機能追加

TermColor にちょっとした機能を追加しました。
機能追加ってほどでもないんだけど。

以下を実行すると、

ruby -rubygems -e 'require "termcolor"; TermColor.test'

以下が出力されます。

http://gyazo.com/729e6cf622e5e4c20344e5ae0b5441f0.png

つまり、カラーコードが確認できます。
便利ですね!

関連エントリ
TermColor – コンソールへの出力を HTML っぽく色付け♪

TermColor
http://github.com/jugyo/termcolor