« 2006年01月 | メイン | 2006年03月 »

2006年02月 アーカイブ

2006年02月02日

RSS出力 : RoR

Ruby on Rails勉強中。
エントリを投稿したらRSSを出力するようにしてみた。
果たしてこのやり方がRailsっぽいのかわからないので、かしこい人トラックバックしてください。

1.RSS生成クラスをhelpersに入れてみた。
rss_writer.rb

require 'rss/2.0'
require 'rss/maker'
class RssWriter
  def output(entries)
   rss = RSS::Maker.make('1.0') do |maker|
    maker.channel.about = 'http://localhost:3000/index.rdf';
    maker.channel.title = 'My RSS';
    maker.channel.description = 'My description';
    maker.channel.link = 'http://localhost:3000/blog';
    entries.each do |entry|
     item = maker.items.new_item;
     item.link = 'http://localhost:3000/entry/show/' + entry.id.to_s;
     item.title = entry.title;
     item.description = entry.text;
     item.date = Time.now;
    end
   end
   f = open("public/index.xml", "w")
   f.puts(rss.to_s)
   f.close()
  end
end

2.Entryモデルクラスのafter_saveコールバックを編集
entry.rb

require 'app/helpers/rss_writer'
class Entry < ActiveRecord::Base
 def after_save
  entries = Entry.find(省略)
  writer = RssWriter.new
  writer.output(entries)
 end
end

ActionController

Filters

コントローラ内でCGIのリクエスト・レスポンスに対する前処理・後処理を行うのが Filter 機能です。ユーザ認証、共通の前処理、文字コード変換などの用途に適しています。前処理の場合は before_filter、後処理の場合は after_filter を用い、処理の内容はメソッド・ブロック・クラスの3種類のいずれかで定義します。

例えば、どのページを開こうとしても、必ずログインページにリダイレクトするようなものを書きたい場合に便利みたいです。
ApplicationControllerにFilterの条件を記述し、
class ApplicationController < ActionController::Base
  def authorize
   unless なんらかの条件
    flash[:notice] = "Please log in"
    redirect_to(:controller => "login", :action => "login")
   end
  end
end

とかして、各アクションコントローラに
before_filter :authorize

と追加する。そうすると、各コントローラ内でのCGIリクエスト処理前にApplicationControllerのauthorizeが呼ばれる。そこで、「なんらかの条件」、ログインの場合は、sessionなんかを調べて、なければlogin画面にリダイレクトするようになります。
ただし、loginアクションでもfilterされてしまったら、延々とリダイレクトしてしまうことになるので、:exceptしておく。
before_filter :authorize, :except => :login

2006年02月03日

vi

vi(vim)でUTF-8ファイルを利用する
vi(vim)では、6.x系以上でUTF-8ファイルを利用できます。
利用するには、~/.vimrcの以下の行を編集(追加)

syntax on >--文字の色分けを実施
set nobackup >--バックアップファイル(file~)を作らない指定
set fileencoding=japan >--デフォルトの保存エンコード。[japan]はeuc-jp、UTF-8の場合は[utf-8]
set fileencodings=iso-2022-jp,euc-jp,utf-8,ucs2le,ucs-2,cp932 >--読み込むことのできるエンコードを列挙。

2006年02月04日

京都の28番

今日の柏レイソルとのTMに28番が後半途中に中山に代わって出たらしい。しかも、CKからゴールも決めたそうだ。だれだ?情報求む。

2006年02月08日

イントラネット・ホームページの標準形

このサイトで有名イントラネット10社のホームページを比較し、その共通点を書いている。

* 最上部の横棒部分:背景は有色で、高さ100ピクセル程度。ロゴやグローバルナビゲーション(タブを使っている場合が多い)、検索ボックスなどが置かれるのが一般的である。
* 左側のコラム:背景は有色で、幅200~250ピクセル。下位階層までを含むナビゲーションとイントラネット上のサブサイトを一覧できるリスト、あるいは、そのどちらかが置かれるのが一般的である。
* 中央部分:背景は白で、幅400~600ピクセル。幅いっぱいに(2列に分けている場合もある)、写真やイラスト、見出しの一覧や、イントラネット上にある重要な機能やアプリケーションへと繋がる“ポートレット”などが並べられるのが一般的である。
* 右側のコラム:背景は白で、幅200~250ピクセル。箱をいくつか並べて、時には、色味のあるコンテンツや写真が置かれる場合もある。

ルマン松井は軽い捻挫

5日のソショー戦で左足首を負傷した松井は軽い捻挫と発表。
日刊スポーツ

FCKEditorをRuby on Railsで使う

FCKEditorというWYSIWYGエディタをRuby on Railsアプリ上で使う方法

1.FCKEditorをダウンロード
http://www.fckeditor.netから最新版のFCKEditorをダウンロードし、展開します。
展開したファイル及びフォルダのうち、下記のものをpublic/javascriptsフォルダにコピーします。

/editor/
fckconfig.js
fckeditor.js
fckstyles.xml
fcktemplates.xml

2.fckeditor.jsの編集
fckeditor.jsファイルを開き、this.BasePathを'/javascripts/'に書き換える

// FCKeditor Class
var FCKeditor = function( instanceName, width, height, toolbarSet, value )
{
// Properties
this.InstanceName = instanceName ;
this.Width = width || '100%' ;
this.Height = height || '200' ;
this.ToolbarSet = toolbarSet || 'Default' ;
this.Value = value || '' ;
this.BasePath = '/javascripts/' ;
this.CheckBrowser = true ;
this.DisplayErrors = true ;

3.fckeditor.jsをインクルードする
headタグ内にjavascript_include_tagを使いfckeditor.jsをインクルードします。

<%= javascript_include_tag "fckeditor" %>

4.テキストエリアを置く
テキストエリアは、今までと同じようにActiveViewのtext_areaで配置します。

<%= text_area("object", "method") %>

5.javascriptでテキストエリアをFCKEditorに置き換える

<script type="text/javascript">
window.onload = function()
{
var oFCKeditor = new FCKeditor( 'MyTextarea' ) ;
oFCKeditor.ReplaceTextarea() ;
}
</script>

というのは、こちらを引用しました。

2006年02月09日

select :multiple : RoR

Ruby on Railsのこねた

<% select(object, method, choices, options = {}, html_options = { :multiple => "" }) %>

の出力は、
<select name="object[method]" multiple="multiple">
<option value="choice_1">choice_1</option>
<option value="choice_2">choice_2</option>
....
<option value="choice_n">choice_n</option>
</select>

となり、複数選択のリストができあがるのだけど、POSTしてみるとArrayで送れない。

仕方がないので、直接HTMLコードを書かないといけないらしい。

<select id="object_method" name="object[method][]" multiple="multiple">
<% for choice in choices %>
<option value="<%= choice %>"><%= choice %></option>
<% end %>
</select>

というのも、こちらに詳しく書かれています。

2006年02月16日

周波数許容偏差 ppm

周波数許容偏差(⊿f / fo)
常温(25℃)における公称周波数との偏差。
1ppmは100万分の1という単位で表現されているため、1ppmは1MHzで1Hzずれることがありえるということになります。
±5ppmの場合、1MHzで±5Hz、1GHzで±5kHzということになります。

2006年02月17日

ActionView layout_for

views/layoutsにlayout用rhtmlファイルを用意し、<%= @content_for_layout %>で埋め込むことができるんだけど、javascriptなどを使っていて、どうしてもheaderに埋め込みたい場合は、<%= @content_for_ %>を使うとよい。
layoutのファイルには

<html>
<head>
<title>タイトル</title>
<%= @content_for_header %>
</head>
<body>
<%= @content_for_layout %>
</body>
</html>
ってしておいて、埋め込みたいviewに
<% content_for(:header) do %>
<%= javascript_include_tag "prototype" %>
<% end %>
ってしておくと、header内に埋め込まれる

About 2006年02月

2006年02月にブログ「SANGA2000」に投稿されたすべてのエントリーです。新しい順に並んでいます。

前のアーカイブは2006年01月です。

次のアーカイブは2006年03月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type