eRuby+PostgreSQLでシステム構築

よくある構成。かなり簡単に動くレベルのものを作れる。驚いた。
でもpostgresモジュールのマニュアル(http://www.postgresql.jp/interfaces/ruby/reference-ja.html)が簡単すぎて、QUERY結果の取り出し方がよくわからんかった。

sqlstr = "SELECT ID,NAME,COMMENT FROM companion_master WHERE DELETE_DATE IS NUL
L ORDER BY regist_date ASC;"
res = conn.exec(sqlstr)

# データの出力
id_fid = res.fieldnum("id")
name_fid = res.fieldnum("name")
comment_fid = res.fieldnum("comment")
data_num = res.num_tuples
for i in 0...res.num_tuples do
  print "<hr>\n"
  print "名前  : ", res.getvalue(i,name_fid), " "
  print "<a href=\"companion_del.rhtml?id=", res.getvalue(i,id_fid), "\">[削除]
</a><br>\n"
  print "コメント : <br><p>", res.getvalue(i,comment_fid), "</p>\n"
end

とりあえずこれで動いた。Arrayはどうも使いにくいし、変更に弱いような気がする。

ついでにグラフ出力にチャレンジ。

データはファイルに出力して、gnuplotを起動してみる。

# データファイル名の定義
$dfn1 = 'data1.txt'
$dfn2 = 'data2.txt'
$outfile = "out.png"

# データの作成
df1 = File.new( $dfn1, "w" );
df2 = File.new( $dfn2, "w" );

df1 << <<DATA1
3
14
5
2
8
12
23
9
4
3
14
17
DATA1

df2 << <<DATA2
4
11
8
1
8
13
20
2
15
10
19
9
DATA2

df1.close
df2.close

# gnuplotを起動して、グラフをpngで保存する
f = open( "|gnuplot", "w" )

begin
f.print <<EOF
set terminal png medium color
set output "#{$outfile}"
set title "テスト (2003年)"
set time
set xlabel "年月"
set ylabel "件数"
set xtics ("1月" 0,"2月" 1,"3月" 2,"4月" 3,"5月" 4,"6月" 5,"7月" 6,"8月" 7,"9月" 8,"10月" 9,"11月" 10,"12月" 11)
set yrange [0:]
plot "#{$dfn1}" title "一個目" with linespoints, "#{$dfn2}" title "二つ目" with linespoints
quit
EOF

ensure
	f.close
end

これでいいのか?

今回はgnuplotを起動するやり方でやってみたけど、GDを使った方がキレイなグラフが書けそうだ。でもRubyのGD関連モジュールって、いくつもあるのか?RAA http://raa.ruby-lang.org/ で調べるとけっこう出てくるけど...

ADSL速度出ず

引越ししたらNTT西日本から、モアにできますよ、と言ってきた。前の家では1.5Mしかダメだったけど、今度の家は状況が良いそうだ。で、モアに変更してみた。

そしたら前の家より遅いでやんの。平均で600kしか出てない。アホか。

NTTに電話してみると、「ADSLは状況によって違うんですよ〜」とか言い垂れやがる。知っとるわ。オレは改善策があるかないかを聞いとるんだ。

そしたら有料で調整作業ができます。だとか。

担当部署から連絡させます。と言うので電話は切ったが、まだ連絡なし。

さっさと連絡寄越せと言ったのに、まだ連絡なし。

電話で応対したおっさんが「素人に説明すんのはダリィのぉ」って感じ満タンだったので、かなり今むかついてます。