« 2006年12月 | メイン | 2007年02月 »

2007年01月 アーカイブ

2007年01月04日

rubyでグラフ!(with Sparklines)

[ruby] [rails] [plugin] [graph] [ruby_library]

Sparklinesは、rubyで、グラフを書くライブラリです。

railsで使えるgenelatorが提供されているので試しに使ってみました。

RMagickに依存しているので、先にgem等を使ってインストールしておく必要があります。


sudo gem install RMagick
sudo gem install sparklines

railsのアプリケーションのルートディレクトリに移動し、プラグインをインストールします。
さらに ./script/generate を使って、コントローラーを作成します。


./script/plugin install http://topfunky.net/svn/plugins/sparklines

# Generate the SparklinesController and functional test
./script/generate sparklines

これで、とりあえずrailsから利用可能な状態になります。

続きを読む "rubyでグラフ!(with Sparklines)" »

2007年01月06日

ImageMagickで必要なファイル”n019003l.pfb”

[ImageMagick] [RMagick] [ruby]

RMagickでエラー発生。


Magick::ImageMagickError (unable to read font `/usr/share/fonts/default/Type1/n019003l.pfb'):
    /usr/local/lib/ruby/gems/1.8/gems/gruff-0.2.8/lib/gruff/base.rb:965:in `get_type_metrics'
    /usr/local/lib/ruby/gems/1.8/gems/gruff-0.2.8/lib/gruff/base.rb:965:in `calculate_caps_height'
    /usr/local/lib/ruby/gems/1.8/gems/gruff-0.2.8/lib/gruff/base.rb:470:in `setup_graph_measurements'
    /usr/local/lib/ruby/gems/1.8/gems/gruff-0.2.8/lib/gruff/base.rb:430:in `setup_drawing'
    /usr/local/lib/ruby/gems/1.8/gems/gruff-0.2.8/lib/gruff/base.rb:404:in `draw'
    /usr/local/lib/ruby/gems/1.8/gems/gruff-0.2.8/lib/gruff/pie.rb:20:in `draw'
    /usr/local/lib/ruby/gems/1.8/gems/gruff-0.2.8/lib/gruff/base.rb:391:in `to_blob'

/usr/share/fonts/default/Type1/n019003l.pfb

このファイルが読めないらしい。
見てみるとほんとに存在しないので、インストールしなければ。


sudo yum install ghostscript-fonts

これでOK。

2007年01月07日

rubyでグラフ!(with Gruff)

[ruby] [gruff] [graph] [ruby_library]

rubyでグラフを描こう企画第二段。

今回はGruffを使用。
まずはgemを使ってインストール。
RMagickに依存してるので、それのインストールも忘れずに。


gem install gruff

参考サイト

続きを読む "rubyでグラフ!(with Gruff)" »

rubyでグラフ!(with Gruff)(2)

[ruby] [gruff] [graph] [ruby_library]

rubyでグラフ!(with Gruff)の続き。

色を変えてみよう。と言うことでGruffの中身を見てみる。


    # A color scheme plucked from the colors on the popular usability blog.
    def theme_37signals
      # Colors
      @green = '#339933'
      @purple = '#cc99cc'
      @blue = '#336699'
      @yellow = '#FFF804'
      @red = '#ff0000'
      @orange = '#cf5910'
      @black = 'black'
      @colors = [@yellow, @blue, @green, @red, @purple, @orange, @black]

      self.theme = {
        :colors => @colors,
        :marker_color => 'black',
        :font_color => 'black',
        :background_colors => ['#d1edf5', 'white']
      }
    end

ここんな感じで自由に設定できるみたい。

続きを読む "rubyでグラフ!(with Gruff)(2)" »

2007年01月09日

Flashできれいな円グラフを作る「amCharts」

[graph] [flash]

amCharts
http://www.amcharts.com/pie/

Flashで綺麗な円グラフが描ける。
http://i-am.web777.net/ampie/ampie.html
amCharts.jpg
無料で使うための制限は左上のリンクらしい。ライセンスを購入すれば外れるみたい。

参考ページ
http://gigazine.net/index.php?/news/comments/20061227_amcharts/

2007年01月10日

MovableTypeでGoogleSitemap

[MovableType] [template] [Google]

MovableTypeで作ったブログのサイトマップを生成するテンプレート。
とりあえずこのサイトも登録してみました。


<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc><$MTBlogURL encode_xml="1"$></loc>
<priority>1.0</priority>
</url>
<MTCategories>
<url>
<loc><$MTCategoryArchiveLink encode_xml="1"$></loc>
</url>
</MTCategories>
<MTEntries lastn="9999">
<url>
<loc><$MTEntryPermalink encode_xml="1"$></loc>
<lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
</url>
</MTEntries>
</urlset>

最近はYahoo,MSNもサイトマップの仕様が統一されたようなので、これを作っておけば、YahooのSite Explorerとかにも登録できるようです。

参考URL
Google SitemapsをMovableTypeで自動作成
http://www.total-web.jp/technical/000064.php

検索エンジン共通サイトマップ sitemaps.orgと統一プロトコル
http://e-club3.hyperposition.com/seoblog/searchengine/20061116165118.html

2007年01月11日

Thunderbirdで送信時刻を予約

[Thunderbird] [plugin] [sendtools]

送信時刻を指定できるThunderbirdのプラグイン。

休日や夜にまとめて仕事関連のメールを書いて、相手の営業時間にメールを届けたい場合などに最適。先にやっておけば忘れる事もないし。

Sendtools
http://homepage3.nifty.com/kyoto33/premier/#st

公式サイトにあるものは、1.5に対応していないので上記のURLにあるものを使いましょう。

sendtools.jpg


以下は上記のサイトからの引用。

■Thunderbird のメッセージを日時指定して送信する拡張機能です。

・max version を 1.5.x.x に。ロケールはありません。メニューの一部を日本語にしました。
・pending フォルダとその配下にサブフォルダ scheduled と later が自動的に作成されます。
・メール作成画面で 送信日時: YYYY(年)・MM(月)・DD(日)・HH(時)・MM(分) をクリックで変更して指定。
・「送信」「あとで送信」ボタンをクリックすると scheduled フォルダに作成したメッセージが
 格納されて指定した日時になると自動送信します。(*オンライン状態の場合)
・GUID は変更なし。
・メールの保存先が日本語名を含むフォルダやパスの場合は動作しないようです。

2007年01月12日

フリーのグループウェア Zoho VirtualOffice

[Groupware] [ZohoVirtualOffice]

会社で使うグループウェアで何かいいのがないかを探していると、こんなのを見つけました。

http://www.zoho.com/virtual-office/index.html

残念ながらオープンソースではないのですが、結構いいかも。
直感的に操作できるので初心者でも使いこなせそう。日本語対応もしてるみたい。

インストールもコマンド一発で簡単にできました。
詳しくは、サイトのインストールガイド参照。

試しにしばらく使ってみようかと思います。
レビューはまた気が向いたら。

2007年01月16日

migration における mysql の timestamp型

[rails] [migration]

migration を用いて、mysql の timestamp 型のカラムを含むテーブルを作ろうと下記のようなコードを書きました。


class MigTests < ActiveRecord::Migration
  def self.up
    create_table :migtests do |t|
      t.column :last_update, :timestamp
    end
  end

  def self.down
    drop_table :migtests
  end
end

で、実行してみるがここで問題発生。

作成されるテーブルの last_update カラムがDATETIME型になる。

で、少し調べてみると、
activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb
にある、native_database_types というメソッド内に定義されたHashで、型名をシンボルからデータベースのカラムタイプ名に変換しているようです。

こんな感じ。

{
:timestamp   => { :name => "datetime" },
}

なんであえて timestamp 型を使ってないんだろう・・・
なにか事情があるのだろうか。

続きを読む "migration における mysql の timestamp型" »

2007年01月22日

ActiveRecord 削除フラグで削除するプラグイン

[ruby] [rails] [rails_plugin] [plugin] [ActiveRecord]

acts_as_paranoid

このプラグインを導入すると、削除する際に、実際に行を消すのではなく、その行の deleted_at カラムに、削除の時間が記録されるようになります。

検索時にも、findで生成されるSQLのWHERE節に、以下のような条件が自動的に付加されます。


(users.deleted_at IS NULL OR users.deleted_at > '2007-01-21 12:27:07')

この条件を見ればわかりますが、削除予約といった使い方もできます。
フラグを条件に加えるのって、ついつい忘れてしまいがちなので便利です。

find_with_deleted メソッドで削除されたものも検索対象になります。

続きを読む "ActiveRecord 削除フラグで削除するプラグイン" »

2007年01月23日

rails で apache + fastcgi

[ruby] [rails] [config] [fastcgi]

最近は lighttpd + fastcgi が流行のようですが、やっぱり apache + fastcgi を使わざるを得ない人向け。

fastcgiを導入するとき、毎回同じ事に引っかかってる気がするのでまとめておきます。

1. mod_fastcgiと、The Development Kit のインストール

公式サイトから入手できます。

http://www.fastcgi.com/

2. apache の設定を編集

参考例。バーチャルホストの設定は各自の環境に合わせて行う。

LoadModule fastcgi_module libexec/httpd/mod_fastcgi.so

<IfModule mod_fastcgi.c>
    FastCgiIpcDir /tmp/fcgi_ipc/
    AddHandler fastcgi-script .fcgi
</IfModule>

<VirtualHost *:80>
   ServerName rails
   DocumentRoot /path/to/application/public/
   ErrorLog /path/to/application/log/apache.log

   <Directory /path/to/application/public/>
      Options ExecCGI FollowSymLinks

      # Change this line for the one under
      # AddHandler cgi-script .cgi
      AddHandler fastcgi-script .fcgi

      AllowOverride all
      Order allow,deny
      Allow from all
   </Directory>
</VirtualHost>

続きを読む "rails で apache + fastcgi" »

ruby で amazon WEBサービス

[ruby] [amazon]

amazon-ecs-0.5.0

AmazonのWEBサービスを利用するためのrubyのライブラリ。
gemで提供されているので入れてみる。


gem install amazon-ecs

設定はこんな感じ。とりあえずASINコードで検索してみる。

Amazon::Ecs.options = {:aWS_access_key_id => ["your developer token"], :AssociateTag => "associate_id", :country => :jp}

res = Amazon::Ecs.item_lookup("4088762096")

以下READMEから抜粋。


    # set the default options; options will be camelized and converted to REST request parameters.
    Amazon::Ecs.options = {:aWS_access_key_id => [your developer token]}

    # options provided on method call will merge with the default options
    res = Amazon::Ecs.item_search('ruby', {:response_group => 'Medium', :sort => 'salesrank'})

    # some common response object methods
    res.is_valid_request?     # return true request is valid
    res.has_error?            # return true if there is an error
    res.error                 # return error message if there is any
    res.total_pages           # return total pages
    res.total_results         # return total pages
    res.item_page             # return current page no if :item_page option is provided

    # traverse through each item (Amazon::Element)
    res.items.each do |item|
      # retrieve element text value, following the XML output structure
      item.get('asin')
      item.get('itemattributes/title')

      # or you can also do it this way, to retrieve the title
      atts = item.get('itemattributes')
      atts.get('title')

      # return first author or a string array of authors
      atts.get('author')          # 'Author 1'
      atts.get_array('author')    # ['Author 1', 'Author 2', ...]

      # return an hash of children text values with the element names as the keys
      item.get_hash('smallimage') # {:url => ..., :width => ..., :height => ...}

      # note that '/' returns Hpricot::Elements array object, nil if not found
      reviews = item/'editorialreview'

      # traverse through Hpricot elements
      reviews.each do |review|
        # Getting hash value out of Hpricot element
        Amazon::Element.get_hash(review) # [:source => ..., :content ==> ...]

        # Or can retrieve them seperately
        Amazon::Element.get(review, 'source')
        Amazon::Element.get(review, 'content')
      end
    end


参考URL

続きを読む "ruby で amazon WEBサービス" »

2007年01月25日

rubyでhtmlを解析

[ruby] [ruby_library] [html]

RubyのHTMLを解析するパーサはいろいろありますが、今回は hpricot を使ってみました。

gemでインストールできるので簡単。

サンプル。

require 'rubygems'
require 'hpricot'
doc = Hpricot(%{<a class=l href="hogehoge">bar</a>baz})
doc.search("a").map {|i| [ i['href'], i.inner_html ] }
  #=> [["hogehoge", "bar"], ["foo", "baz"]]

続きを読む "rubyでhtmlを解析" »

2007年01月28日

Capistrano で簡単にメンテナンス画面表示

[rails] [capistrano] [deploy]

システムメンテナンスのため、一時サービスを停止したいとき、Capistranoで簡単にメンテナンス画面を表示させる事ができます。

まずは、.htaccessを編集して、


  RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
  RewriteCond %{SCRIPT_FILENAME} !maintenance.html
  RewriteRule ^.*$ /system/maintenance.html [L]

1 : %{DOCUMENT_ROOT}/system/maintenance.html が存在し、
2 : 且つ、自分自身(実行ファイル自身)が maintenance.html でなければ、
3 : URLを/system/maintenance.html に書き換える。

という設定をします。(※番号は設定ファイルの行に対応)


  rake remote:disable_web \
          UNTIL="14:00 MST" \
          REASON="a database upgrade"

上記のコマンドを実行すると、本番サーバー上の、CAPROOT/current/public/system (CAPROOT/shared/system へのシンボリックリンク) に、maintenance.html というファイルが生成されます。これで完了。

続きを読む "Capistrano で簡単にメンテナンス画面表示" »

Capistrano のタスクをフックする

[capistrano] [rails] [deploy]

Capistrano のタスクはフックできます。

hoge というタスクがあれば、その前後で、before_hoge と after_hoge が呼ばれます。

それを検証されているエントリ。
http://d.hatena.ne.jp/Rommy/20061021/1161440420

続きを読む "Capistrano のタスクをフックする" »

2007年01月31日

Sennaとrubyで全文検索(インストール編)

[ruby] [senna] [mecab] [全文検索]

Sennaをインストールしてみた。

インストールの流れ

  1. MeCab 0.81以降のインストール
  2. Sennaのインストール
  3. ruby バインディングのインストール
MeCabのインストール
http://mecab.sourceforge.net/#download

ここから、mecab本体のソースコードと、辞書をダウンロード。

デフォルトでEUCが使われるので、configureの際に以下のようにオプションを設定する。


./configure --with-charset=utf8

辞書のインストールの際も同様。

続きを読む "Sennaとrubyで全文検索(インストール編)" »