メイン

技術関連記事 アーカイブ

2006年12月28日

vimcolor プラグイン

[MovableType] [plugin]

Movableタイプで、コードをvimのシンタックスでハイライトしてくれるプラグイン。
antipop2.0 のけんたろさんが公開された vimcolor プラグインをdrryさんが改造されたものです。
http://blog.drry.jp/2005/12/16/1855
ダウンロードして、MovableTypeのpluginsディレクトリに放り込む。

PerlのライブラリText::VimColorに依存しているのでインストール。
http://search.cpan.org/dist/Text-VimColor/

さらに、依存関係にある、Path::Classモジュールをインストール。
http://search.cpan.org/dist/Path-Class/


これでMovableTypeの管理画面で、「システムメニュー→プラグイン」を開いてみると、エラー無く認識された。

続きを読む "vimcolor プラグイン" »

2006年12月29日

MovabelTypeで、「改行を変換する」関連プラグイン

[MovableType] [plugin]

vimcolorプラグインで、ソースコードを貼り付けると、<pre>タグの中の改行コードが、<br />に変換されてしまうという問題が発生。


いろいろ調査していたところ、いくつかプラグインを見つけました。

改良テキストフィルタープラグイン

http://www.h-fj.com/blog/archives/2005/08/28-160725.php


HTMLエンティティへの変換

文章の中に~で囲まれる部分がある場合は、その部分をHTMLエンコードします(「<」を「<」に変換するなど)。

改行をそのまま残す要素

以下の要素では、内部の改行はそのまま出力されるようになります。
pre textarea table ol dl ul menu dir

改行をbrタグに変換する要素

以下の要素では、内部の改行はbrタグに変換されます。
blockquote div p h1 h2 h3 h4 h5 h6 form address

その他の部分

上記以外の部分は、空行ごとに分割され、内部の改行はbrタグに変換されます。
そして、部分の前後はpタグで囲まれます。

要素の入れ子

要素が入れ子になっているときは正しく動作しません。

One Line to Paragraph Plugin

http://www.code-404.net/article/2006/03/12/line2paragraph-plugin
  • 改行区切りで p 要素に変換
  • 空白行は何もしない
  • 行頭がブロックレベルの HTML タグなら変換しない
  • 一切の br 要素を吐かない
  • pre 要素内は何もしない

2006年12月30日

error_message_onを、full_messageにするプラグイン

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

error_message_on メソッドを使ってエラーメッセージを表示する場合に、ちょっとした問題に遭遇。


      def error_message_on(object, method, prepend_text = "", append_text = "", css_class = "formError")
        if errors = instance_variable_get("@#{object}").errors.on(method)
          content_tag("div", "#{prepend_text}#{errors.is_a?(Array) ? errors.first : errors}#{append_text}", :class => css_class)
        end
      end

これだと、毎回、prepend_text、append_textを指定してメッセージを表示しないといけない・・・

これはめんどくさいと言うことで、プラグインを作ってみました。

続きを読む "error_message_onを、full_messageにするプラグイン" »

2006年12月31日

validates_date_timeプラグイン

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

日付のvalidateって標準では実装されてないんですね。何でだろう。


$./script/plugin list

を使って、それっぽいのを探してみる。

2分で発見。やっぱり誰かが先に作ってくれてました。
http://plugins.radrails.org/directory/show/22


$./script/plugin install validates_date_time

としてインストール。

続きを読む "validates_date_timeプラグイン" »

MovableTypeをタグ漬けに

[MovableType] [plugin] [タグ]

MovableTypeにタグを導入してみました。

参考サイト

Tagwire Plugin

エントリーのキーワードをイワユル「タグ」として利用するための機能を提供するプラグイン。 http://as-is.net/blog/archives/001019.html

TagwireとMT-XSearchによる動的タグアーカイブ

http://as-is.net/blog/archives/001020.html

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で全文検索(インストール編)" »

2007年02月01日

MeCabのRubyバインディング

[mecab] [ruby]

MeCabのRubyバインディングを試してみました。

まずは、下記のページを参考に、ダウンロードしてインストール。

続きを読む "MeCabのRubyバインディング" »

2007年02月08日

CentOSでPHP5

[CentOS] [php]

CentOS4.4 で PHP5 を yum でインストールしたい場合は,yumのリポジトリの設定を以下のように変更します。


# vi /etc/yum.repos.d/CentOS-Base.repo


[centosplus]
name=CentOS-$releasever - Plus baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=1  #ここを 1 に変更。
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

2007年02月09日

CentOS にHyper Estraier インストール

[HyperEstraier] [全文検索]

Hyper Estraierのインストールには事前に以下のライブラリが必要です。

http://sns.icns.cc/article.php?story=2006071011225788 より
* libiconv : 文字コード変換。バージョン1.9.1以降。
* zlib : 可逆データ圧縮。バージョン1.2.1以降。
* QDBM : 組み込み用データベース。バージョン1.8.49以降。

うちの以下の二つだけ入れれば無事コンパイルできました。

libiconv
http://ftp.yz.yamagata-u.ac.jp/pub/GNU/libiconv/

QDBM
http://qdbm.sourceforge.net/


えらいはまりました。

「hyperestraierノードサーバーの起動スクリプト」へ

2007年02月10日

hyperestraierノードサーバーの起動スクリプト

[HyperEstraier] [全文検索]

Hyperestraier のセットアップ。

拙いながらスクリプトも書いてみました。

#!/bin/bash

mkdir /var/hyperestraier
useradd -d /var/hyperestraier -s /sbin/nologin estraier
chown estraier:estraier /var/hyperestraier -R
sudo -u estraier estmaster init /var/hyperestraier

こんなのスクリプトにするまでもないね。
まあ作業ログってことで。

続きを読む "hyperestraierノードサーバーの起動スクリプト" »

2007年02月13日

rails でモデルを全文検索

[HyperEstraier] [全文検索] [rails_plugin] [rails] [ruby]

acts_as_searchableプラグイン。
hyperestraierでモデルを全文検索できるようになります。


./script/plugin install svn://poocs.net/plugins/trunk/acts_as_searchable


class User < ActiveRecord::Base
  acts_as_searchable :searchable_fields=>[:name, :introduce]
end

としておけば、name introduce カラムが検索の対象になります。


User.reindex!
User.estraier_connection.status #=> 200

これでHyperEstraierインデックスが変更されます。
失敗してもエラーをはかないらしいので一応 status を確認しておく必要あり。

また、save, destroy等、モデルの変更があった際には、自動的にインデックスが変更されます。


検索方法はこんなかんじ。


User.fulltext_search('検索ワード')

参考サイト

続きを読む "rails でモデルを全文検索" »

2007年02月17日

rails で 画像認証 captcha

[rails_plugin] [rails] [ruby] [captcha] [RMagick]

validates_captchaは、rails で、画像認証 captcha ができるようになるプラグインです。
RMagickに依存していています。

インストール。

script/plugin install http://svn.2750flesk.com/plugins/trunk/validates_captcha

で、次に、設定ファイルと、必要ディレクトリを用意します。以下のコマンドを実行すればOK。


script/generate captcha config
script/generate captcha image_directory
script/generate captcha store_directory

config/captcha.yml で、ディレクトリは変えられますが、その場合は自分で mkdir しましょう。

続きを読む "rails で 画像認証 captcha" »

Capistrano でデプロイ時に依存ライブラリをインストール

[capistrano] [deploy] [rails] [ruby]

複数のサーバーにデプロイする場合など、インストールの手続きを自動化しておけると便利です。

今回は、RMagickのインストールを自動化してみます。

config/deploy.rb に以下のように記述。


desc "Install RMagick"
task :install_rmagick do
  sudo "yum install ImageMagick -y"
  sudo "yum install ImageMagick-devel -y"
  sudo "gem install rmagick --include-dependencies"
end

task :before_migrate do
  install_rmagick
end

これで、migrate タスクが実行される前に、RMagickがインストールされます。
少々めんどくさいですが、一回使用した後はコメントアウトしておけばいいかなと。

まったく新しいサーバーにデプロイすることなんかそう頻繁には起こらないとは思うので、有用性は低いですが、書いておけば、デプロイ時にライブラリの依存関係で悩む事はなくなります。

備忘録としての役割が強いかな。

2007年03月08日

mysql で utf8 を使う

[mysql]

mysql 4.1以降で日本語を使うための設定方法。
UTF8を使います。

/etc/my.cnf に以下のような記述を書き足しておく。


[mysql]
default-character-set=utf8

[mysqld]
default-character-set=utf8
character_set_server=utf8
skip-character-set-client-handshake

skip-character-set-client-handshake は、「サーバーの文字コード設定をクライアントでもそのまま使う」という意味らしい。

で、mysqlを再起動。

続きを読む "mysql で utf8 を使う" »

2007年03月09日

mysqldump で文字化け

[mysql]

mysql で utf8 を使う参照

mysqlの日本語設定をした際に、以前から運用しているDatabaseがある場合、環境変数、character_set_database が、utf8になっていない場合がある。(例えば、latin1になっている。)

この場合、TABLE の CHARSET が、UTF8になっていない可能性が高く、SELECT 結果の表示が文字化けしてしまったり、mysqldump の結果が文字化けしてしまったりといった問題が発生する。

mysqldumpの文字化けは、--default-character-set オプションをつけることで解決できる。

mysqldump -uUser -pPassword --compact --default-character-set=binary hageDb > hage.sql

続きを読む "mysqldump で文字化け" »

2007年03月29日

Rails で mysql の ENUM カラムを使用する

[rails] [rails_plugin] [mysql] [enum]

enum-column というプラグインがあります。
これをインストールすることで、mysqlのenumカラムを使用できるようになります。

まずはインストール

./script/plugin install enum-column

DBのスキーマはこんな感じでを記述します。

  create_table :enumerations, :force => true do |t|
    t.column :severity, :enum, :limit => [:low, :medium, :high, :critical],
       :default => :medium
    t.column :color, :enum, :limit => [:red, :blue, :green, :yellow]
    #...
  end

続きを読む "Rails で mysql の ENUM カラムを使用する" »

2007年06月15日

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

[rails] [capistrano] [deploy]

http://i-am.web777.net/2007/01/capistrano.html

上記エントリーの続き

メンテナンス画面は、カレントディレクトリに maintenance.rhtml がある場合はこちらがテンプレートとして使用される。

単純に RAILS_ROOT に maintenance.rhtml を設置してもよいが、あまり綺麗じゃないので、少し disable_web タスクを少し変更してみる。

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

2007年10月21日

ActiveRecordでデフォルトの並び順を指定

[rails] [plugin]

model を検索する際に、デフォルトの順序を指定したい場合に使うプラグインを発見

http://blog.gwikzone.org/pages/ruby_on_rails_default_order_plugin


class Contact < ActiveRecord::Base
  order_by :fields => ['last_name', 'first_name'], :mode => :desc
end

こんな感じで使うみたい。

続きを読む "ActiveRecordでデフォルトの並び順を指定" »

2007年11月01日

acts_as_paranoid でエラー

[rails] [plugin]

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

rails 1.2.5 で、acts_as_paranoid を使うとエラー発生


NoMethodError (undefined method `construct_count_options_from_args' for User:Class):

などと怒られる。rails のバージョンアップが影響しているみたい。


          def count_with_deleted(*args)
            #calculate_with_deleted(:count, *construct_count_options_from_args(*args))
            calculate_with_deleted(:count, *construct_count_options_from_legacy_args(*args))
          end

上記のように修正すると動きます。

2007年11月21日

rails で model の変更を監視するプラグイン

[rails] [plugin]

acts_as_modified

モデルの変更を監視して、各 attribute が変更されたかどうかを確認することができます。
「あるカラムに変更があった際にだけ、なにかしらの処理を行う」などという場合に便利。


インストールは普通にすればOK


./script/plugin install acts_as_modified

続きを読む "rails で model の変更を監視するプラグイン" »

2007年11月22日

rails で Capistrano2.1 入門

[capistrano] [rails]

http://www.capify.org/

バージョンが2.1にあがって初めて使ったのでまとめておきます。

まずはインストール。

gem install -y capistrano

続きを読む "rails で Capistrano2.1 入門" »

2007年11月27日

rails で Capistrano2.1 入門(2) ~ タスクを作る

[rails] [capistrano]

前回の続きです
rails で Capistrano2.1 入門

今回は Capistrano で実行するタスクを作ってみようと思います。


config/deproy.rb に以下を追記。
Httpdを再起動するためのタスクです。


namespace :deploy do

  task :restart_web_server, :roles => :web do
    sudo "/etc/init.d/httpd restart", :as => "root"
  end

end

続きを読む "rails で Capistrano2.1 入門(2) ~ タスクを作る" »

2008年04月09日

Array をシャッフルする

Arrayをシャッフルしようと下記のようなコードを書いてみました。


class Array

  def shuffle!
    size.downto(1) { |n| push delete_at(rand(n)) }
    self
  end

end

続きを読む "Array をシャッフルする" »

2008年04月11日

rails でテンプレートのディレクトリを切り替える

[rails]

例えば、携帯からのリクエストの時だけ、app/mobile_views の下のテンプレートを使用するようにしたいような場合は、ActionController::Base の クラスメソッド view_paths=(*attr) を使う。

昔の template_root=(root) が変わって、ビューを検索するディレクトリーを複数選択できるようになってる。

例えばこんな感じでテンプレートパスを書き換えられそう。


  before_filter :select_view_paths

  protected
  def select_view_paths
     if mobile?
        self.view_paths = "#{RAILS_ROOT}/app/mobile_views/"
     else
        self.view_paths = "#{RAILS_ROOT}/app/views/"
     end        
  end

参考URL

2008年04月13日

Lost connection to MySQL server エラー

Mysql::Error: Lost connection to MySQL server during query: SHOW TABLES

とかいうエラーが頻繁に発生するようになった。

mysql の Packet too large エラー が原因という記事を見つけたので my.cnf を編集する。


max_allowed_packet = 16M

一応、エラーは発生しなくなった・・・ので、一応これでよかったみたい。

これで解決しない方は、他にもいろいろと対処法記事があるので、そういうのも試してみるといいかもしれません。

参考サイト

2008年04月18日

「ProjectPier」 の iCal が GoogleCalendar で文字化け

[GoogleCalendar] [iCal] [ProjectPier]
ProjectPierはactiveCollabから派生したソフトウェアで、その特徴としてデザインがしっかりしており使い勝手が良いということが挙げられる。これはWeb2.0風に奇麗という訳ではない。シンプルでわかりやすいという事だ。

MOONGIFT様のブログにこんな記事を発見。
http://www.moongift.jp/2007/09/projectpier/

早速使ってみると、なるほど、これは簡単で使いやすい。おススメです。

プロジェクトを作る
→ タスクリストを作る
→ マイルストーンを切ってタスクリストを割り当てる

というごく単純な仕組みですがわかりやすいし導入には非常にいいなという印象を持ちました。

続きを読む "「ProjectPier」 の iCal が GoogleCalendar で文字化け" »