トップ «前の日記(2008-12-10(水)) 最新 次の日記(2008-12-12(金))» 編集

とた日記


2008-12-11(木) 晴のち曇 安静時心拍数 53 [長年日記]

_ ports/129549: [MAINTAINER] www/rubygem-yapra: update to 0.1.2

昨日の昼間の仕事の内職の成果のひとつです。

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