2007/05/31

rails の link_to で https リンクを作る方法

link_to, start_form_tag, url_for などで https:// から始まるリンクを作成する方法。

protocol というオプションがあるが、これを設定するだけでは何も起こらない。
実際には、

<%= link_to { :action => :hoge, :only_path => false, :protocol => 'https://', }%>

のようにする必要がある。つまり、only_path というオプションをさらに設定しなければいけない。

only_path というのは相対パスのみ出力する、というオプション。これに false を設定すれば絶対パスが返る。

2007/05/29

trac の db (sqlite3) を直接触ってみる

trac は便利なプロジェクト管理ツールだけれども、
プロジェクトをまたがった todo 管理などが弱い。

そこをまとめたいと思い、まずは trac で使われている
DB の構造などを調査することにした。

データは sqlite3 で、ファイルは db/trac.db だ。
これをコンソールから直接いじくってみよう。

壊すといけないのでホームにコピー。

$ sqlite3 trac.db
SQLite version 3.3.6
Enter ".help" for instructions
sqlite>

でsqlite3 クライアントが起動する。

システムコマンドは . から始まる。例えば .tables でテーブル一覧、.output でクエリ結果の出力先変更、.schema でテーブルのスキーマ表示、など。コマンド一覧は .help で確認できる。


sqlite> .tables
attachment node_change session_attribute version
auth_cookie permission system wiki
component report ticket
enum revision ticket_change
milestone session ticket_custom

以上のテーブルが存在する。



















attachment添付ファイル名一覧。
auth_cookieIPとクッキーの対応表。
componentチケットの「component」項目の選択肢。
enumチケットのその他の項目の選択しがまとめて入ってる
milestonチケットの「mileston」項目の選択肢。
node_changesvn の各バージョンごとにどういう変更があったか?
permissionユーザごとのパーミッション
reportレポートを表示するための sql。
revisionsvn revision とコミットログ
sessionweb 画面の session
session_attributeセッションの中身
systemtrac を動作させる上で持ちいるいくつかの変数。svn の現在のバージョンなど。
ticketチケット情報
ticket_changeチケットの更新ログ
ticket_custom各チケットのカスタム項目の値
versionチケットの「version」項目の値。
wikiwiki の本文。


トラックの情報をプロジェクト横断的に集めるのが今回の目的なので、
今回は ticket テーブルだけ見ていればいい。

SELECT * FROM ticket WHERE owner = 'omae' AND status != 'closed'

ruby で書くと次のような感じで取得できる。

#!/usr/local/bin/ruby -Ku
require "sqlite3"

db = SQLite3::Database.new("trac.db")
db.type_translation = true

sql = "SELECT * FROM ticket WHERE owner = 'omae' AND status != 'closed'"

result = db.execute( sql )


result.each do |row|
  p row
end


sqlite3 コマンドはどうも複数データベースを同時には開けないようなので、
一つ一つデータベースを開いてセレクトしてくる必要がある。

2007/05/26

javascript で幅に合わせて文字列を切りつめる

長い文章を途中でカットして末尾に「・・・」をつける、
というのはよくある作業。

http://d.hatena.ne.jp/Psychs/20070525/1180077269

ではこれを javascript で行う方法が紹介されているけれど、
他の方法に比べてよい点は、実際の表示幅でカットできること。

[ruby] グラフ描画ライブラリ Gruff

ruby で書かれたグラフ描画ライブラリ Gruff。

インストールには ImageMagick と RMagick が必要。
gruff 自体は gem で一発。

sudo gem install gruff

以下、サンプルコード

require 'rubygems'
gem 'gruff'
require "gruff"

g = Gruff::Line.new 1000
g.data "Test0", [1, 2, 3, 2, 5, 1]
g.data("Test2", [4, 8, 7, 9, 8, 9])
g.write "test.png"


見出しには日本語は使えない。


javascript グラフ描画ライブラリ

DoJo
http://www.dojotoolkit.org/
http://phpspot.org/blog/archives/2006/11/javascriptdojo.html

Plotr
http://www.solutoire.com/plotr
http://phpspot.org/blog/archives/2007/02/prototypejsjava_1.html

Open-jACOB Draw2D

WebFX Chart

Flash Player 9 の ガベージコレクション

http://weblogs.macromedia.com/akamijo/archives/2007/05/flash_player_9_7.cfm