2009年8月16日日曜日

Ruby on RailsのDBとしてSQLiteを使う はてなブックマーク

Rails2.0から、デフォルトのデータベースがSQLiteになっています。
本稼動のサイトではMySQLを使うことが多かったので、開発環境でもSQLiteはあまり使っていませんでしたが、手軽に使えて便利だということなので、使ってみることにしました。

ちなみに、RailsでMySQLを使う場合は以下のように明示的にDBを指定します。
rails -d mysql myproject


SQLiteを使うまでのステップは以下のとおり。(Windowsです。)

  1. SQLiteのdllをダウンロード
  2. ダウンロードしたdllをパスの通ったフォルダに配置
  3. sqlite3-rubyというgemをインストール

1.SQLiteのdllをダウンロード


SQLiteのサイトから、Precompiled Binaries For Windowsのところの
sqlitedll-3_X_X.zip(執筆時点はsqlitedll-3_6_17.zip)をダウンロード


2.ダウンロードしたdllをパスの通ったフォルダに配置


1でダウンロードしたファイルを解凍すると、
sqlite3.def
sqlite3.dll
の2つのファイルができますが、sqlite3.dllのみ配置すればOKです。
今回はC:\windowsに配置しました。


3.sqlite3-rubyというgemをインストール


gem install sqlite3-ruby


以上で、RailsからSQLiteが使えるようになっているはずです。
rails myproject

このようにRailsプロジェクトを作成すると、config/database.ymlがSQLiteを見るように作成されます。

ちなみに、mysqlでは
rake db:create

などでデータベースを作成してから、
rake db:migrate

でテーブルを生成しますが、sqliteではrake db:createは不要のようでした。

参考:
RailsでSQLite3を使おう
SQLite DLLのダウンロード

2009年8月11日火曜日

はてなのような自動キーワードリンクをtx-rubyで実装 はてなブックマーク

はてなダイアリーやニコニコ大百科では、本文のキーワードに自動的にリンクが付くようになっていますが、ニコニコ大百科では、sennaとrubyを使って実装しているそうです。

はてなのようなキーワードリンクをRubyで付与する実例


僕もキーワードリンクを実装する機会があったのですが、そのときはtx-rubyを使いました。

tx-ruby

これはtrieというデータ構造を扱うtxというライブラリを、rubyから使うものです。
rubyを介しても十分高速で、以前Wikipediaの見出し語約90万語をキーワードに使って試した際も、非常に高速に動作しました。
大変便利だったので、書いておきます。

tx-rubyのダウンロードはこちらから。
ダウンロードしたファイルを解凍したあと、そのディレクトリに移動して、
ruby setup.rb

とすると、簡単にインストールできます。(Windowsでも使えます。)

それではニコニコ大百科の説明文と同様にできるかどうかやってみます。

autolink_test.rb
ダウンロード

require 'cgi'
require 'tx'

builder = Tx::Builder.new
words = ['ニコニコ大百科', 'ニコニコ動画', '運営', '未来検索ブラジル', 'ニコペ', 'ニコ百', '大百科']
builder.add_all(words)
# キーワードをインデックスファイルに書き込み
builder.build("test.index")

# インデックスファイルを読み込み
index = Tx::Index.open("test.index")

str = "ニコニコ大百科(-だいひゃっか)とは、ニコニコ動画上での各種用語に関する解説や、ニコニコ動画上にアップされている動画についての情報、その他あらゆる言葉についての情報をユーザが自由に記述できるサイトである。運営・管理ともに未来検索ブラジルが行っている。「ニコペ」、「ニコ百」、「百」、「百」などと、略称され、単に「大百科」と呼ぶこともあるやもしれない。"

# キーワードにマッチする部分をリンクに置き換え
ret = index.gsub(str) do |s, i|
"<a href='http://dic.nicovideo.jp/a/#{CGI.escape(s)}' target='_blank'>#{s}</a>"
end

# 結果をファイルに出力
File.open('autolink.txt', 'w') do |f|
f.puts ret
end


出力
autolink.txt

ニコニコ大百科(-だいひゃっか)とは、ニコニコ動画上での各種用語に関する解説や、ニコニコ動画上にアップされている動画についての情報、その他あらゆる言葉についての情報をユーザが自由に記述できるサイトである。運営・管理ともに未来検索ブラジルが行っている。「ニコペ」、「ニコ百」、「百」、「百」などと、略称され、単に「大百科」と呼ぶこともあるやもしれない。


キーワードリンクが成功しました!

参考:
tx-ruby
tx
はてなキーワードを高速に付与
Aho Corasick 法

2009年8月3日月曜日

サイトのトラフィックを調べるブックマークレット2つ はてなブックマーク

サイトの開発や運営にたずさわる人は、AlexaGoogle Ad Plannerで他のサイトのトラフィックをチェックすることが多いと思いますが、そんなときに役立つ、今見ているサイトのトラフィックを参照するブックマークレットを作ってみました。

以下をブックマークツールバーに入れて、気になるサイトでクリックしてみてください。

 Alexa

 AdPlanner

中身はこんな感じです。

Alexa
javascript:window.open('http://www.alexa.com/data/details/traffic_details/'+location.href,'_blank','width=950,height=700,resizable=1,scrollbars=1');undefined;

AdPlanner
javascript:window.open('https://www.google.com/adplanner/planning/site_profile#siteDetails?identifier='+location.href+'&lp=true','_blank','width=950,height=700,resizable=1,scrollbars=1');undefined;