MongoDB ドキュメント - Shardingの続き

28th Jan, 2010 | mongodb

以下の二つを追加しました。

Shardingやっぱり楽しそう。早く実機で遊びたい!



MongoDB 翻訳 - Sharding(の一部)

26th Jan, 2010 | mongodb

MongoDBでなかなかよさそうなのがSharding。今回はそのアーキテクチャ部分を訳してみた。面白い。 実際にまだ試してないので、使用感がどんなものかがわからないので、それは週末にでもできたらいいな。


MongoDBの翻訳全般については、 こちら参照。



resque-scheduler使ってブログの新着情報をTwitterへ投稿

25th Jan, 2010 | ruby resque twitter

前々回前回に引き続き、もうちょっとResqueの練習。試しに、このブログの更新情報をTwitterに流す仕組を作ってみた。twitterfeed的なことをする感じで、ブログに投稿したら、Twitterにリンクをポスト、またN時間後にポスト、という感じで。うざそうなので実際には使わないかも。

追記: resque-schdulerのcron的な使い方について別のエントリで書いた。

このN時間後に投稿の部分にresque-schedulerを使ってみた。

Twitterへ投稿するライブラリは、grackleを使ってみた。特に深い理由はない。単純にポストするだけだから何でもいいかな、という感じで、簡単そうに使えそうなのを選んだ。

とりあえずインストール。

gem install grackle
gem install resque
gem install resque-scheduler

Twitterにポストするためのクラスを作成する。このクラスは、 performメソッドを実装する。その中でtwitterに投稿するコードを書く。performの引数としてPostしたい文字列を渡すことにする。

class MyTwitter
  @queue = :normal

  def self.perform(status)
    options = Sinatra::Application.options
    client = Grackle::Client.new(:auth=>
                                 {:type=>:basic,
                                   :username=>options.twitter_username,
                                   :password=>options.twitter_password})
    client.statuses.update! :status=>status
  end
end

Rakefileにschedulerのタスクを追加:

require 'resque/tasks'
require 'resque_scheduler/tasks'

これで、準備完了。

scheulderを起動する。

rake resque:scheduler

後はTwitterに投稿したいところで、

# すぐに投稿したい場合 (resque標準)
Resque.enqueue(MyTwitter, "post post post")

# 10時間後に (resuque-scheduler)
Resque.enqueue_in(10.hours, MyTwitter, "post post post")

# 投稿したい日付が決まっている (resuque-scheduler)
Resque.enqueue_at(Time.local(2010, 1, 31, 10, 30), MyTwitter, "post post post")

と言った感じ。とても簡単。

正確には、実行される時間ではなくて、Queueに入る時間なので実際には少し後に実行される。



MongoDB 翻訳 - バックアップ

24th Jan, 2010 | mongodb

このブログのバックアップ取らないとなー、と思って、バックアップのところを読みながら訳した。

いくつか方法はあるようだが、とりあえずmongodumpで自分は問題なさそうだ。

こんなスクリプト作ってcronに入れた。1週間ローテーションなので、壊れたまま一週間経つと全部消えるけど、ここならその程度で十分。

#!/bin/sh
dir_dump=${HOME}/backup/dump_`date +%u`
rm -rf ${dir_dump}
/usr/local/bin/mongodump -o ${dir_dump} 

MongoDBの翻訳については、 こちら参照。



Gentoo のパッケージ管理ツールをMac OS Xで使う (Gentoo Prefix)

24th Jan, 2010 | mac gentoo

むかーしむかし、Gentoo Linuxの開発者だったので、かなりの贔屓目はあるが、Mac OS X上でもPortageが最高だと思っている。MacPortsとかも使ってみたけど、やっぱりPortageとGentooのパッケージ群とその周辺ツールは素晴らしい。

Gentoo Linuxのパッケージ管理システムPortageを他のOSでも動くようにしているプロジェクトがある。Mac OS X版もそのプロジェクトによってメンテされている。

何がいいか、

  • 好きな場所にインストールできる。root権限がいらない
  • Gentoo Linux本体のすばらしいパッケージ群が使える
  • Gentoo Linux本体のすばらしい管理コマンドが使える

任意の場所にインストールできるので、当然MacPortsとかとの併用もできる。

インストールが若干かっこ悪いのがあれだけど、  Gentoo Prefix Bootstrap Process for Mac OS X 参照。特に読まなくてもコマンドのところだけ追っていけばだいたいいけるはず。

もし、途中でやめたくなっても、  export EPREFIX="$HOME/Gentoo" で指定したディレクトリを削除すれば、すべてきれいさっぱりなくなるのでご安心を。これもまたGentoo Prefixのすぐれているところ。

Portage自体についての説明は、  http://www.gentoo.org/doc/ja/handbook/handbook-x86.xml?part=2 とか参照。

おまけ:

これを書こうと思ったのは、 このエントリを見たから。 Gentoo Prefixで入れたrubyなら、eselect というコマンドでRubyのバージョンを簡単に切り替えられるのになー、と。Mac OS X上のGentoo Preixならroot権限もいらずにお手軽。