postgresql8.3.6にplperlを追加

centos5.2上のpostgresql8.3.6にplperlを追加。
ちと古いが
http://ml.postgresql.jp/pipermail/pgsql-jp/2002-November/011581.html
の記述に沿って作業を進める。
$./configure
$make
#make install

しかし
$createlangが通らない。「$libdir/plperlが存在しない」というようなエラーメッセージだ。
すったもんだやっているうちに「plpgsql」は「createlang」で通ることが分かった。

そこで、plpgsql.soの存在チェックをやったらひっそりと「/usr/lib/pgsql」にも隠れているではないか。
失敗覚悟で「usr/local/pgsql/lib/plperl.so」を上記のディレクトリにコピー。
「createlang plperl template1」で成功しました。
[PR]
# by nora1962 | 2009-02-26 00:31 | PC

かな文字の小文字→大文字変換

tr/ァィゥェォャュョッァィゥェォッャュョヮヵヶぁぃぅぇぉ/アイウエオヤユヨツアイウエオツヤユヨワカケあいうえお/を実行するのにどのようにすれば速いか。(VBAで)

ネットで
http://pxp.seesaa.net/article/7500794.html
を見つけた。文字列サーチして変換する王道だろう。

一方、思いついたのはBASP21を使う手抜き。

Function Z(S)
Dim BOBJ As Object
dim i as long
Set BOBJ = CreateObject("basp21")
I = BOBJ.TRANSLATE("tr/ァィゥェォャュョッァィゥェォッャュョヮヵヶぁぃぅぇぉ/アイウエオヤユヨツアイウエオツヤユヨワカケあいうえお/k", S, Z)
End Function

これで比較したところ面白いことが分かった。
変換する文字列が短いうちは文字列サーチのほうが速い。
しかし、文字列長が長くなっていくと、その差は縮まり、20文字程度で逆転してしまう。
ネイティブコンパイル、中間コードに落とせる環境ならば違った結果が出るのだろうが、VBAではループ、文字列サーチは結構荷が重い処理なのだろう。

しかし、逆転するとはいえ20文字程度の変換ならば百万回のループ処理で15~30秒程度だから、実質上ボトルネックになることはないと思われる。
[PR]
# by nora1962 | 2009-02-25 07:48 | PC

fastcgi

WindowsXPにApache2.2を入れて遊んでいた。
Fastcgiというのに興味を引かれて挑戦してみたけど、これがどっぷりはまってしまいました。

Windows環境でのFastcgi構築はネットで検索しても、どれも中途半端なものが多く、例示通りやってみてもApacheが起動しなくなったり、スクリプトが「Internal Server Error」を起こしてくれるようなもが多く完全に途方にくれてた。
そんな中でのトライアンドエラーでうまくいったのが
http://d.hatena.ne.jp/h4y/20080225/1203946284
を参考にしたやつ。
http://www.fastcgi.com/ から mod_fastcgi-2.4.6-AP22.dll をダウンロードして
名前mod_fastcgi.dllに変更して$Apache/moduesフォルダにコピー。
後はhttpd.confの編集。

LoadModule fastcgi_module modules/mod_fastcgi.so

<Location /fastcgi>
SetHandler fastcgi-script
Options ExecCGI
</location>
あとは適当に
<IfModule fastcgi_module>
FastCGIConfig -autoUpdate -idle-timeout 120 -killInterval 3600 -maxClassProcesses 3 -maxProcesses 15 -startDelay 30
</IfModule>
を指定しておいた。
[PR]
# by nora1962 | 2008-12-24 04:56 | PC

秋の新宿御苑

新宿御苑行ってきました。山茶花、秋バラ、ジュウガツザクラを見てきました。
a0075219_0475394.jpg
[PR]
# by nora1962 | 2008-10-22 00:48

ExcelのODBC接続にバグ?

仕事で頼まれて、数十枚のシートをACCESSのテーブルにinsertするこんなコードを書いたのだが、

Dim db As DAO.Database

Set db = OpenDatabase("scott.mdb")
Dim s As Object
For Each s In Sheets
s.Activate
ActiveWorkbook.Names.Add Name:="data", _
RefersToR1C1:="=" & s.Name & "!R1C1:R2C3"
db.Execute "insert into test select name,address,saraly from " & _
[excel 8.0;database=test.xls].[data]"
Next

「オブジェクト data が見つからない」というエラーメッセージを出してdb.executeで止まって
しまう。
いろいろ試したところでは、シート名の最初の一文字が全角数字だとこのエラーが出る模様。
仕方がないのでとりあえず、strconvで全角数字を半角数字に変換してからinsertすること
にした。全角のかな・カナや英字も変換されてしまうが、今回の場合はExcelのブック自体、
ワークファイルだったのでこれでいいだろうと見切りをつけた。

なお、ACCESS側にクエリを作ってそれを実行することでも回避できそう。
[PR]
# by nora1962 | 2007-12-04 23:58

結局 openrowset 関数

SQLServerからDB2 express-cへリンクサーバーを張って見たのはいいのでけれど、decimal、numericの扱いで問題が発覚。
どうやら、IBMDADB2がテーブル定義の問い合わせに対してはこれらの属性についてadDecimal(=14)を返すのに、実行時にはadNumeric(=131)を返すせいのようだ。

いろいろ調べて見たが、打開策が見つからず。結局openrowset関数で逃げることにして
みたらこれは通るみたいだ。
[PR]
# by nora1962 | 2007-04-21 20:37 | PC

'IBMDADB'でリンクサーバー

DB2 express-cをダウンロードして見た。
OracleやSQLServerと比べると、結構構成が違う。純然たる趣味なのでまあ、ぼちぼちやっていこうと思う。
困った事にWindws XP Proにインストールしたのだが、インストールユーザー以外のユーザーでログインすると何故かWindowsインストーラが立ち上がってしまう。これは仕様なのだろうか?

で、本題SQLServerからDB2 express-cへリンクサーバーを張って見たのだが「インスタンスが作成できません」というエラーが出てしまう。OPENROWSETでも駄目。ネットで検索しても日本語サイトでは「sp_addlinkedserver ibmdadb2」ではヒットしない。
結局、駄目もとで
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Providers
に「IBMDADB2」のキーをつくり「DisallowAdhocAccess」をdword値で「1」に設定したら、通るようになった。
[PR]
# by nora1962 | 2007-04-19 08:49 | PC

柚子餅

道明寺粉を使った柚子餅です
・道明寺粉     250g
・水          400cc
・砂糖        80g
・白餡        400g
・白味噌       大匙2
・柚子        1個(皮のみすりおろして置く)
・黄色の着色料  適宜(少量の水で溶いておく))
・シロップ      砂糖+お湯(適宜)

柚子味噌餡をつくる。鍋で白餡を加熱して温まったら、味噌と柚子の皮のすりおろしを加えてよく混ぜ合わせる。混ざったらバットなどに取り分けて冷ます。
耐熱容器で沸かしてお湯に黄色の着色料を溶かし込む。
道明寺粉を入れて軽くかき混ぜる。火を止めてラップして5分程度蒸らす。
そのままレンジ(500~600W)で5~6分程度加熱してそのまま10分程度蒸らす。
道明寺の生地に砂糖を混ぜ込む。切るように混ぜ込んで徐々に大きく混ぜあわせる。

柚子味噌餡を20gずつとりわけて丸めておく
手にシロップをつけながら道明寺生地を35g程度に取り分け、柚子味噌餡を包み込む
[PR]
# by nora1962 | 2007-03-17 04:16 | 菓子

何ももらわなったけどホワイトデー

職場では義理チョコさえ貰えなかったが、ホワイトデーというわけで、抹茶・小豆の生チョコを作ってみた。
・ホワイト製菓用チョコレート 400g(削っておく)
・生クリーム           200cc
・無塩バター           50g
・抹茶               大匙1
・甘納豆             100g
・まぶしよう抹茶         適宜

生クリームを火にかけ、ふつふつと沸いて来たら、チョコレートを投入し、火を止める。
4~5分そのままにして、よくかき混ぜてチョコレートを溶かす。完全に溶けないときは湯煎にかける
バターを加えて溶かす
甘納豆は熱湯をかけて、周りの砂糖をとかしておき、抹茶と甘納豆を生地に混ぜ込む。
型にラップをしいて、生地を流し込む
荒熱がとれたら、冷蔵庫に入れて一晩寝かせる
固まったら、ラップごと取り出して、ひっくり返してオーブンシートの上に乗せる。
好みの大きさで切り分けて抹茶を全面にまぶす。

・ホワイトチョコレートが甘いと味がくどくなります。できれば甘さ控えめのものを選んでください。
・やわらかいので要冷蔵
[PR]
# by nora1962 | 2007-03-17 03:32 | 菓子

フレッツスクウェアで大はまり

 自宅環境がBフレッツマンションタイプなので、フレッツスクウェアなるものに接続しようなどと考えた。
 使っているルータがBUFFALOのBBR-4MGという機種なのでメニューから選択すれば、簡単に接続できるはずである。実際、ルータの接続画面では通信中になる。ところがWindows XPから接続しようとするとことごとくはじかれる。
 しかたがないのでNTT東日本に電話をしてみると「ルータはうちの機種ではございませんので」
BUFFALOに電話すると「設定は正しいですね。NTTさんに相談なさってください」と見事に逃げの姿勢。
 原因がわからず、数時間ルータを工場出荷段階にもどしてみたり、ルータの経路情報をメンテナンスしてみたりしたが状況は変わらず。
 ところが、ふと「ping www.flets」は通らないが「nslookup www.flets」は結果を返すのに気がついた。そこで思い出したのが自宅環境が固定IPを振っていること。
 このばあいWindows XP側でもプライマリDNSとセカンダリDNSを指定する仕様になっている。そこで環境をDHCPにして(MAC、IPはひも付けして実質固定IPにした)、再起動。
 いやー見事につながりました。
 今回の教訓。
 サポートは役にたたんな。
[PR]
# by nora1962 | 2006-08-27 17:31 | PC