人気ブログランキング | 話題のタグを見る

PostgreSQL 11 on Windows   

2019年 03月 16日

遅ればせながら PostgreSQL 11 をWindows 10にインストール。

目玉としてレプリケーション機能が取り上げられているように思ってたが、ウインドウ関数のオフセットにRANGE指定できるとのこと。

これは試してみたい。

一方でPostgreSQL 10で動いていたplpython3uが動作しない模様。
文字列操作などでPythonが便利だったので、ちょっと惜しい。
ここは少し様子見。

# by nora1962jp | 2019-03-16 00:41 | DB

紅葉狩り(2011/11)   

2018年 10月 17日

紅葉狩り(2011/11)_d0016459_04413790.jpg
昨日国分寺の殿ケ谷庭園と駒込の六義園に行ってきました。
さすがに12月紅葉狩りには遅く、散りかけでした。色づきも今年の秋は温かったせいもあり今ひとつ。ただ六義園のハゼの木はいい色でした。

# by nora1962jp | 2018-10-17 04:41 | 写真

MySQLでグループごとのランキング(最大値からN件取得)   

2018年 10月 17日

create table xxx
(
nen int,
gaku int
);

insert into xxx values ( 2011,600 );;
insert into xxx values ( 2011,500 );
insert into xxx values ( 2011,450 );
insert into xxx values ( 2011,750 );
insert into xxx values ( 2010,450 );
insert into xxx values ( 2010,540 );
insert into xxx values ( 2010,350 );
insert into xxx values ( 2010,800 );
insert into xxx values ( 2010,700 );

select t.nen, t.gaku
from ( select
@rnk:=if(@prevnen <=> x.nen, if( @prevaku <=> x.gaku, @rnk, @rnk+1), 1 ) as rnk,
@prevnen := x.nen nen,
@prevgaku := x.gaku gaku
from ( select * from xxx order by nen, gaku desc ) as x
cross join ( select @prevnen:=0, @prevgaku:=0, @rnk:=0 ) as dummy ) t
where t.rnk <= 3;

これが結構速い。
ユーザー変数はMySQLの独自機能だし、項目値にnullがある場合はもう一捻りしなければいけないが。
注意点はユーザ変数への代入順序。
今回の場合は@rnkを最初に持ってこないと@prevnen、@pervgakuが上書きされてしまう。

# by nora1962jp | 2018-10-17 04:38 | DB

CDOにバグ?(2009/12)   

2018年 10月 17日

http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_080.html
にあるようにwindows2000以降のwindowsには「CDO」という機能があります。
(環境がないので、VISTA,office2007で検証していません)

ところがwindows2000、office2000の環境でこの機能使うと起動元のプログラム(EXCEL、ACCESS)
のプロセスが残ってしまった。
いろいろためしたが、残念ながら解決しない。

「basp21」使えばこんな苦労しなくてもいいんだけど

# by nora1962jp | 2018-10-17 04:36 | PC

thunderbirdで出力したLDIFファイルをwindowsメールでインポート(   

2018年 10月 17日

Thunderbirdで出力したLDIFファイルはそのままではVISTAのwindowsメールではインポートできません。windowsメールがBASE64でエンコードされたUTF-8コードを読み込めない。「dn::」レコードを「dn:」にしてSHIFT-JISに展開すればインポートできるようだ。以下は変換用のRubyスクリプト。あんまりスマートじゃないけど。require 'nkf'require 'base64'$KCONV="SJIS"while line = ARGF.gets  line = line.chomp  if /([^:]+:): (.*)/ =~ line      $a = $1      $b = $2      buf = NKF.nkf("-Ws", Base64.decode64($b) )      buf = buf.gsub( '"', "" )      buf = $a + " " + buf  else      line = line.gsub( '"', "" )      buf = line      /([^:]+:)/ =~ buf      $a = $1      if $a == "dn:"          if /cn=/ !~ buf              /mail=(.*)/ =~ buf              buf = "dn: cn=" + $1 + ",mail=" + $1              cn = $1              $flg = 1          end      else          if /mail:/ =~ line and $flg == 1              print "cn: " + cn,"\n"              $flg = 0          end          buf = line      end  end  print buf,"\n"end

# by nora1962jp | 2018-10-17 04:35