2008-12-11(木) 晴のち曇 安静時心拍数 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が画面に表示されていたのでそれを控え、接続パスワードは古いパスワードを尋ねられることなく新しいものに変更できてしまいました。結局、インフォメーションデスクに問い合わせることなく退会手続きを済ませることができました。