2008-12-11 (Thursday) 晴のち曇 安静時心拍数 53 [長年日記]
◆ Microsoft Update on Windows 2000
- Windows 2000 用セキュリティ更新プログラム (KB954600)
- Windows 2000 用セキュリティ更新プログラム (KB956802)
- Windows 2000 用セキュリティ更新プログラム (KB952069)
- Internet Explorer 6 Service Pack 1 用の累積的なセキュリティ更新プログラム (KB958215)
- Windows 悪意のあるソフトウェアの削除ツール - 2008 年 12 月 (KB890830)
◆ PostgreSQL 8.3.5 でパフォーマンス調査(2)仕様確認
昨日の仕事の続きをやりました。
まず、最大カラム数の調査です。PostgreSQL に関する FAQに答えが載っているのですが、念のためやってみました。testdbを作っておいて
#!/usr/local/bin/ruby
require "postgres"
def ct
ct = <<-EOS
CREATE TABLE testtable (
key INTEGER
);
EOS
end
def at(n)
at = <<-EOS
ALTER TABLE testtable ADD COLUMN hoge#{n} INTEGER;
EOS
end
def dt
dt = <<-EOS
DROP TABLE testtable;
EOS
end
conn = PGconn.connect("localhost", 5432, "", "", "testdb")
res = conn.exec(ct)
i = 1
while i <= 1610
res = conn.exec(at(i))
i += 1
end
res = conn.exec(dt)
な感じのスクリプトを実行してみました。すると、
./maxcolumn.rb:33:in `exec': ERROR: tables can have at most 1600 columns (PGError)
from ./maxcolumn.rb:33
となり、FAQにあるとおりでした。次に、VIEWを作ったときの最大カラムはいくつになるかを調べるために
#!/usr/local/bin/ruby
require "postgres"
class Table
attr_reader :name
def initialize(name='hoge')
@name = name
end
def ct
ct = <<-EOS
CREATE TABLE #{@name} (
key INTEGER
);
EOS
end
def at(n)
at = <<-EOS
ALTER TABLE #{@name} ADD COLUMN #{@name}#{n} INTEGER;
EOS
end
def dt
dt = <<-EOS
DROP TABLE #{@name};
EOS
end
end
class View
def initialize(name='foo')
@name = name
end
def cv(*tb)
s = tb.join(",")
cv = <<-EOS
CREATE VIEW #{@name} AS
SELECT * FROM #{s};
EOS
end
end
hoge = Table.new('hoge')
fuga = Table.new('fuga')
conn = PGconn.connect("localhost", 5432, "", "", "testdb")
res = conn.exec(hoge.ct)
res = conn.exec(fuga.ct)
i = 1
while i <= 1499
res = conn.exec(hoge.at(i))
res = conn.exec(fuga.at(i))
i += 1
end
view = View.new('view')
res = conn.exec(view.cv(hoge.name, fuga.name))
こんな感じのやっつけスクリプトを実行してみました。
./view.rb:64:in `exec': ERROR: target lists can have at most 1664 entries (PGError)
from ./view.rb:64
1つのテーブルで最大カラム数が1600で、結合しても最大が1664ということですね。まぁ、そもそも1つのテーブルでカラム数が20以上になる時点で設計が怪しいと素人の私でも気付くのですが。そして、念のためJOINではどうか調べることに。
#!/usr/local/bin/ruby
require "postgres"
class Table
attr_reader :name
def initialize(name='hoge')
@name = name
end
def ct
ct = <<-EOS
CREATE TABLE #{@name} (
key INTEGER
);
EOS
end
def at(n)
at = <<-EOS
ALTER TABLE #{@name} ADD COLUMN #{@name}#{n} INTEGER;
EOS
end
def dt
dt = <<-EOS
DROP TABLE #{@name};
EOS
end
end
class Join
def initialize(name='foo')
@name = name
end
def fullouterjoin(a, b)
# beta-gaki
cv = <<-EOS
SELECT * FROM #{a} FULL OUTER JOIN #{b} USING(key);
EOS
end
end
hoge = Table.new('hoge')
fuga = Table.new('fuga')
conn = PGconn.connect("localhost", 5432, "", "", "testdb")
res = conn.exec(hoge.ct)
res = conn.exec(fuga.ct)
i = 1
while i <= 1499
res = conn.exec(hoge.at(i))
res = conn.exec(fuga.at(i))
i += 1
end
join = Join.new('join')
res = conn.exec(join.fullouterjoin(hoge.name, fuga.name))
結果は
./join.rb:63:in `exec': ERROR: target lists can have at most 1664 entries (PGError)
from ./join.rb:63
でした。くっつけても最大で1664っていうことでOK?
パフォーマンスは調べる必要がなくなりました。こんなことを調べる動機を作ったDBを設計した人だれよ?
◆ Microsoft Update on Windows XP
- Windows XP Windows XP 用の更新プログラム (KB955839)
- Windows XP Windows XP 用 Internet Explorer 7 の累積的なセキュリティ更新プログラム (KB958215)
- Windows XP Windows 悪意のあるソフトウェアの削除ツール - 2008 年 12 月 (KB890830)
- Windows XP Windows XP Service Pack 3 用セキュリティ更新プログラム (KB952069)
- Windows XP Windows XP 用セキュリティ更新プログラム (KB954600)
- Windows XP Windows XP 用セキュリティ更新プログラム (KB956802)
◆ 住民票の写しの取得
宇都宮市役所で住民票の写しを取って来ました。印鑑登録をしたときにうつのみや市民カード・印鑑登録証を受け取っている筈ですが、探しても見当たらなかったのであきらめて窓口で手続きしました。うつのみや市民カードがあれば自動交付機でできるので、態々市役所まで行く必要もなく手数料も200円で済んだのですが、まあいいか。
◆ hi-ho 退会手続完了
昨日インフォメーションデスクにつながらなかった件で再度手続きを試みました。MyサポートではメールアドレスとPOP3のパスワードがあればログインできるので、.fetchmailrcでPOP3のパスワードを確認してログインできました。そうしたところ、接続IDが画面に表示されていたのでそれを控え、接続パスワードは古いパスワードを尋ねられることなく新しいものに変更できてしまいました。結局、インフォメーションデスクに問い合わせることなく退会手続きを済ませることができました。


新衰退国・ニッポンを生き抜く マネーの鉄則(岡崎 良介)
FX&日経225先物 システムトレード勝利の方程式(今井 雅人/システムトレード研究チーム)
あなたがあなたであるために―自分らしく生きるためのアスペルガー症候群ガイド(吉田 友子/ローナ ウィング)
「のび太」が教えてくれたこと(横山泰行)
2011年の衝撃!~3.11後の世界経済から資産を守る方法・増やす方法~(菅下清廣)
図解 クラウド 仕事で使える基本の知識 (知りたい!テクノロジー)(杉山 貴章)
ETF 世界を舞台にした金融商品 (現代の錬金術師シリーズ)(浅川夏樹)
ゾーン — 相場心理学入門(マーク・ダグラス/Mark Douglas/世良 敬明)
ずっと受けたかったソフトウェアエンジニアリングの授業2 増補改訂版(鶴保 征城/駒谷 昇一)
なぜ日本人は落合博満が嫌いか? (角川oneテーマ21)(テリー 伊藤)
Googleの脳みそ―変革者たちの思考回路(三宅 伸吾)
ノート型ホワイトボード NUboard (A4変型)
ずっと受けたかったソフトウェアエンジニアリングの新人研修(大森 久美子/岡崎 義勝/西原 琢夫/宇治 則孝)