タグ

ブックマーク / tam.qmix.org (8)

  • ConsistentHashingRuby – pylori*style – Trac

    Consistent Hasing を Ruby で試す Consistent Hashing は、複数のコンピュータ(ノード)にレコードを分散するのに使われるアルゴリズムです。 Consistent Hashing を試すではプログラムサンプルが Perl で書かれていますが、それを Ruby に書き直してみました。それだけではなんなので、二分探索を用いてキーの検索の高速化も試みています。 プログラムの説明については、Consistent Hashing を試すも併せて参照してください。 サーバー台数で割った余り (mod) を使用する 省略 Consistent Hashing Perl版と同じアルゴリズムで、キーとノードのハッシュ値を計算し、キーのハッシュ値に近い値を持つノードを選択します。このプログラムを ch1.rb とします。 require 'digest/md5' def

    yuiseki
    yuiseki 2010/09/08
  • LinodeSetupMemo – pylori*style

    申し込み Linode のトップページにある Sign Up というリンクから申し込む。クレジットカードが必須。12ヶ月または24ヶ月まとめて払うと少し安くなる。 フォームを埋めて Continue を押すと、以下のような確認画面が出てくるので、Complete Order をクリックすると order が完了する。 ログイン Linode のトップページの右上にある Log in からログインする。 ユーザ名、パスワードを入れてログインすると Linode Manager という画面になる。自分が利用している Linode の一覧が出てくるので Linode の名前をクリックすると、その Linode の Dashboard 画面になり、ここから仮想マシンについていろいろ管理を行う。 仮想マシンの作成、起動 Linode Manager の Dashboard から、Deploy a L

    yuiseki
    yuiseki 2010/04/22
  • pylori*style: ActiveRecordでSQLiteのbusy_timeoutをひきのばす

    ActiveRecordでSQLiteアダプタを使っているとき、ひとつのデータベースファイルに複数のプロセスやスレッドからアクセスしていると、 SQLite3::BusyException: database is locked というエラーが出ることがあります。SQLiteではアクセスを試みてエラーを返すまでにロックを待つ時間がデフォルトでは0らしく、ロック状態だった場合は即座にエラーが発生します。 SQLite ver.3の対話型プログラム sqlite3では、ロック時の待ち時間を設定する .timeout というコマンドがあります。 .timeout 1000 のようにして使います(単位はミリ秒)。これを使えばロックされている場合にエラーではなく、ロック解除まで待ち状態にさせることができます。 ActiveRecordから timeout 値をセットするには、やや強引ですがとりあ

    yuiseki
    yuiseki 2008/08/23
  • pylori*style: Ruby スクリプト: Amazon ECS で BrowseNode の検索

    ふと思い立って、Amazon ECS(Web サービス) を使って、アマゾンの BrowseNodeId を検索するプログラムを作ってみました。 アマゾンのBrowseNodeIdを検索 アマゾンの膨大な商品群は、BrowseNode と呼ばれるものでジャンル分けされています。それぞれのBrowseNode には BrowseNodeId と呼ばれる番号がついていて、それを検索するのがこのプログラムです。 この手のプログラムは既にあちこちで作られていますが、勉強のために Ruby で一から作ってみました。 browsenode-cgi.gz このプログラムを動作させるには、いくつか注意事項があります。 Amazon Webサービス のデベロッパートークン(ID)とAmazonアソシエイトのIDを持っていることが前提です このプログラムはRuby 1.8.2以降で動作します。特に、NKFはU

    yuiseki
    yuiseki 2008/07/26
  • pylori*style wiki - HTMLパーサ Hpricot

    Hpricotは Ruby用の HTML パーサです。スキャン部分は C 言語で書かれていて高速に動作します。 HTMLの解析や書き換えに威力を発揮する便利なライブラリです。 rubygemsを使うのが簡単です。 # gem install hpricot すると以下のようにプラットフォームを聞いてきます。Unix系OSであれば 1 を、mswin32 であれば 2 を選びます。 Select which gem to install for your platform (i386-freebsd6) 1. hpricot 0.4 (ruby) 2. hpricot 0.4 (mswin32) 3. Cancel installation コンパイルが始まり、インストールが行われます。 Building native extensions. This could take a while.

  • pylori*style wiki - GruffをRailsで使う

    Gruff は Ruby 用のグラフ描画ライブラリです(参考: Gruffでグラフ)。 今回は、Gruff を Rails から使う方法を説明します。 Sparklines というグラフライブラリは、Rails 用の generator も用意されて いますが、Gruff にはまだないようです。 なので、手作業で Rails に組み込むことになりますが、手順は簡単です。 準備 Gruffでグラフ等を参照して Gruff をインストールします。 サンプルデータの作成 ここでは、説明のため、以下のデータ(携帯電話/PHSの契約数)を用意するも のとします。 sqlite3用スキーマ create table cellphones ( id integer primary key, name varchar(255) not null, subscriber integer ); データの内容(

    yuiseki
    yuiseki 2008/05/14
  • pylori*style wiki - Gruffでグラフ

    Gruffとは? Gruff は、Ruby用のグラフ作成ライブラリです。 http://nubyonrails.topfunky.com/pages/gruff インストール Gruff を使うには、以下のものが必要です。 ImageMagick または GraphicsMagick RMagick (ImageMagick/GraphicsMagickのRubyインタフェース) FreeBSD の場合は RMagick の ports (graphics/ruby-rmagick)が用意されて いるのでそれをインストールすれば OK です。 Gruff は rubygems を使って以下のようにインストールします。 # gem install gruff サンプルコード require 'rubygems' require_gem 'gruff' g = Gruff::Line.new

    yuiseki
    yuiseki 2008/05/14
  • pylori*style wiki - MigrationによるDB管理

    Migrationとは Migration とは、Railsで使うデータベースの管理機能で、テーブル作成・カラ ムの追加/変更などの作業を一元管理できます。SQL でスキーマを書くのでは なく、Rails独自の記法(Rubyの文法の範囲内)を使ってDB管理を行います。以 下のようなメリットがあります。 スキーマのバージョン管理ができる rake コマンドでスキーマのバージョンアップ/ロールバックが可能 データベースに依存しない書き方ができるので、他のデータベースに切り替えるのが容易 対応しているデータベース 現在、対応しているデータベースは MySQL, PostgreSQL, SQLite, SQL Server, Oracle です。 今後、対応DBは増えていくと思います。最新情報は、 http://api.rubyonrails.org/classes/ActiveRecord/Mi

  • 1