このVBAのブログは、自分の備忘録として始めた。
しかし、当初は大したアクセス数もなく、アメブロのコンピュータ・ITのランキングで低迷していたが、ここしばらくは50位以内、つまりカテゴリの1ページ目に表示されるようにもなってきた。

それに伴い、問い合わせなども増えているし、講習会を開いても人が来て下さるようになっている。有り難い話である。
問い合わせにも無料で答えているし、講習会も無料で実施したし、先日募集した仕事依頼も軽いモノばかりだったので出張費も入れて、どこのお客様も無料にした。しかし、ある人から「相手が便益を得るなら、正当な対価を得るべきである」と指摘を受けた

私自身、それで儲けてやろう、という気は全くないのだが、法人とすれば「タダより高いモノはない」という感覚の経営者も多いらしい。中小零細だと特にその傾向が強い、との話も伺った。

当初はお試しで無料にしよう、ということも考えていたが、思惑とは違い、信用を得るために敢えて金額提示した方がいいこともあるのか、と勉強になった。

しかし、問い合わせは必ずしも企業からだけではない。VBAは教育の場でも利用されているため、特に学校教育の場(以前、教育情報化コーディネータ2級という資格を保有している旨を書いていた影響も大きいかも)や、企業内にいる会社員/派遣・契約社員や、学生からの問い合わせもある。
強い希望があれば、時間の調整の付く限り、メールで送付して頂いたものを修正し、そのポイントを付けて送る、場合によっては直接指導する、ということもしてきた。さすがに中学生/高校生と名乗る女性は、接触を避けたが。
資金力がない所には従来通りで行うとしても、実利を上げようとする法人組織ならいくらか頂くのも選択肢に含めても悪くないのかもしれない。

ただ、初期費用で期待はずれなのに旅費の負担が重くなる、ということもあろう。それ対策として「アフェリエイト」と「アメブロネタへの参加」など、そちらの収益を元に無料で提供が可能な余地も残すつもりである。

よって、条件付きで有料化していこうかとも思っている。

いまどき、SQLインジェクションなんて、どこのサイトでも対応しているもの、だと思っていた。
しかし、このトラックバック記事によるとそうではないらしい。

SELECT * FROM HOGE_TBL WHERE USER_ID = '[テキストボックス.ユーザーID]' AND PASS_WD = '[テキストボックス.パスワード]'
などという処理だとSQLインジェクションをしてください、といっているようなものである。

具体例を挙げるとハッキングの幇助になりかねないので避けるが、ユーザーID/パスワードを知らなくても入り込むことは私でも可能である。

この対策、難しいものではない。しかしなぜまだまだ対策がされていないのか?
プログラマ、システムエンジニアというラインから、プロジェクトマネージャーなどのスタッフまで、勉強不足であるからではないか?と思う。
顧客が「SQLインジェクション対策を」と求めてくるケースはそうないだろう。しかし、顧客に言われた事だけが要件ではない。

ただし、そういうことを学べる機会が少ないことも事実だ。
昔、ある女性に「昔の彼氏の話」として聞いたことがあるが、とある庁(省ではない)の役人が、かぎの開け方を学んでいて、その知識を活かしてホテル代要らずだった、とか。セキュリティ技術はその人の心次第、悪用も簡単であるため、なかなか公開されない、ということなのだろう。

セキュリティ技術は資格制/認可制/許可制にして、登録者のみ実務を行えるという特権を与えるなりして知識を多くの人に広げられるようにしなければ、怖くて知人にもセキュリティ技術を教えられない。
会員制サイトでも作ってみるか、などとも考えている。


仕事ではVB.netでADO接続するためのモジュールが必要だったのだが、以前VBAで作ったADO接続ツールを転用して作ってみた。
まだ備忘録レベルであるが・・。

◆まず、ADOを簡単に理解する。
http://www.datadirect.co.jp/technote/ADOvsADODOTNET.asp
http://msdn.microsoft.com/ja-jp/library/cc426812.aspx

ADOは、OLE DB Provider を利用して接続する。一般に各ベンダーのものを使うが、OLE DB Provider for ODBC というものがあり、結局はODBCドライバを使うこともある。

ここでは PostgreSQL用の、OLE DB Provider for PostgreSQL(通常は PgOleDb というらしい)を用いる。

◆PgOleDbをダウンロードする。
http://pgfoundry.org/projects/oledb/

このページのダウンロードをクリックし、今回は PgOleDb-1.0.0.20.zip をダウンロードして展開した。

◆PgOleDbをインストールする。
展開した中に、README というファイルがあるのでテキストエディタで開く。思いっきり英語であるが、難しくはない。簡単に書くと
・PGOLEDB.DLL と LIBPQ.DLL をシステムフォルダにコピーする。私はC:\Windows に入れた。
・コマンドプロンプトで regsvr32 PGOLEDB.DLL を実行すると成功のメッセージが出る。うん、確かに成功が出た。

◆PgOleDbを使う。
先ほどの README にも接続文字はある。しかし、なんだかうまくつながらなかったので以下のサイトを参考にした。
http://homepage1.nifty.com/kojama/works/rdbms/conn/connstr.html

PostgreSQL:OLE DBプロバイダ」に記載されてる接続文字を使えば接続することができた。READMEでは接続できなかった原因を検証していないが、パラメータが小文字か大文字かということも影響するのではないかと思う。

◇ポート番号は?
PgOleDbを使う限りにおいてはポート番号を記載する必要がなかった。デフォルトの5432だからか?そこは未検証である。

◇Data Source に書けるものは?
LAN上の PostgreSQL サーバーのIPアドレス指定は当然のこと、インターネットサイトの PostgreSQL のURIを指定しても接続できた。ただ、ルーター等でポートが開いている必要はある。

簡単であるが。