C/C++

boost::gregorian::dateの月(数値)の取得

boost::gregorian::dateでdateObj.month()すると、NovとかDecとかが返ってくる。dateObj.month().as_number()がデフォルトのほうが僕はいいと思う。月を取得して文字列が返るのは直感的では内容に思うのですが。いや、ハマったから言うのじゃありません... 

それにしても、boost::gregorianは重いですね。Regexなんかと併用するとプリコンパイルのメモリが足りないとか言って(VS2008)きて/zmするハメになります。こうなると大抵Intellisenseが壊れるのでまあ、今回のようにヘッダを読む羽目になるわけです。windowsアプリの場合、無理して使わないようにしようかと思います。

strncpy_s()への修正で考えさせられた件

vs2005からCRTセキュリティ強化ということで*_s()系の関数が導入されています。でもこれ、よく考えないで修正すると痛い目にあいそう。僕の場合、既存の次のようなコードで躓きました。

typedef struct _dest { char x[3]; char y[5]; char z[5] } dest;

ような構造体にデータを読み込み、x,y,zのそれぞれを整数に変換する下記のような処理があったのですが、

ようやくVisualStudio2005

in

ずっと稟議をだしていてようやく通ったVisualStudio 2005。いいぇ、2005ですとも。ここまで引っ張られたらいっそのこと2008でもヨカッタかと...早速、アプリの移行を開始したのですがいろいろあります。まず、セキュリティ強化なんたらで文句言われちゃって、警告の山。最初は律儀にセキュリティ強化版の関数XXX_s()に置き換えたんだけれど、なんか馬鹿馬鹿しくなってヤメ。

DB2 ODBC経由で接続してみる

in

またDB2ネタ(このところ、毎日触ってるもので...)。C/C++でプログラミングする場合、前回書いたようなSQL埋め込み型だとコードが冗長になるのでODBC経由での実装するにはどうしたらいいかと思って、あれこれサンプルを漁っていたら、昨日インストールしたruby用DB2ドライバ(ibm_db2.c)がまさにソレでした。ソースをチェックしてみたらconnect時にSQLSetEnvAttr()という関数でSQL_ATTR_ODBC_VERSION,SQL_OV_ODBC3を指定していました。

コンテンツの配信