閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

programming

MSDN2

MSDN2 を眺めていると随分と以前のバージョンから変わっているんですね。手元の VS2003 の MSDN は見ない方がいいかな。でも MSDN2 は所々翻訳されていないようで、英語版ではページがあっても日本語版ではまだなかったりするものもある模様。なるべく英語版…

boost::shared_ptr が素敵な件 (2)

こうか。 #include <iostream> #include <algorithm> #include <vector> #include <boost/shared_ptr.hpp> #include <boost/bind.hpp> using namespace std; struct base { virtual void print() = 0; }; struct hoge : public base { virtual void print() { cout << "hoge" << endl; } }; struct hige : public base { virtua…</boost/bind.hpp></boost/shared_ptr.hpp></vector></algorithm></iostream>

配列中に最も小さな値が複数存在する時の min_element の挙動

規格では最初に見つかった反復子 (Iterator) が返るようになっているため、下記のようなコードには悲しい結果が待っている。 #include #include int main(int, char*) { double data = { 5, 4, 3, 2, 1, 1 }; double* last = data + sizeof(data) / sizeof(d…

DLL にベースアドレスを設定してみた

ソフト起動時に読み込む DLL の数が増えてきて、起動に時間がかかるようになっていたので、この間知ったベースアドレスをそれぞれの DLL に設定してみたところ、結構ロードが早くなった模様。起動→ DLL ロード→スプラッシュ画面表示、とった流れで起動するの…

変数名は適切に

とあるクラスに Exit なんて付いている bool 型のメンバ変数があって、何かが終了していることを示すのかと一瞬思ったのですが、どうもそれ (どれ) が存在しているかどうかを表しているらしい。たぶん Exist と書きたかったのだろうと思う。コメントが無い以…

もうむり

void f(int* ptr) { ptr = new int[3]; } int main(int, char*[]) { int* ptr = 0; f(ptr); std::cout .....orz

もうだめぽ...

if(::strncmp(hoge, "hoge?", 5)) { //... } みたいなコード書いて「あれー、動かないなー?」とかやってた。死にたい。帰るべきですか、もう……。

WinSock2 プログラミング のサンプルが怪しげ

WinSock2 のお勉強。以前購入した WinSock2プログラミング―Windows Sockets APIによるネットワークプログラミングのすべて (会社に持ってきた) が役に立ってくれています。で、この本のサンプルプログラムは http://www.winsock2.org/ で配布されているので…

コーディング規約

本当にクラス名のプリフィクスにイニシャルを付けるんだろうか……。プリフィクスだけで 5 文字って、一般的なの? 無駄じゃね? そもそも同じイニシャルの人がいたらどうなるの? イニシャルの前に機能名を表した文字も 1 文字付けるっていうけれど、その文字が…

#include で楽をしよう

こないだ (id:wata_d:20051222) の 実装を別ファイルに書いておいて、必要な箇所で include というのをやってた。 DLL のエクスポートする関数で、実装がまったく同じものを別ファイルに切り出して、それぞれの DLL の適当なところで include 。だいぶすっき…

MSXML4 は VC6 では動かない?

msxml4.dll を import してほげほげしていたら、 IXMLDOMNodePtr.nodeType を使うところでコンパイルに失敗してしまう。自動生成される msxml4.tli の中身でこけているので、 VC がいけないのかなとも思いつつ、少し調べても解決方法が解らなかったのでとり…

コーディングスタイルの統一

ソース管理ツールでソースをチェックインする時に、ツールの方でプロジェクトで定められているコーディングスタイルにフォーマットしてからチェックインして、チェックアウトする時には個々のユーザの好きなスタイルでフォーマットされたものが手元に落ちて…

BCB で MSXML

使うことは使えるようなのだけれど、でも使えない。 char* を BSTR に変換する際に ConvertStringToBSTR 関数を使うのですが、この関数のある comsupp.lib が BCB にはないっぽいのでリンクができない。comdef.h を見たら以下のような分岐が。 #ifndef __BOR…

今日の日付を取得する (2)

関数を使ってみる。あと、日付の整形を formatCalendarTime 関数に置換。 module Main where import Time import Locale today :: IO CalendarTime today = getClockTime >>= toCalendarTime main = do tm だいぶすっきり。

今日の日付を取得

標準ライブラリの Time モジュールを使用すると日時の操作ができる。 module Main where import Time import Ix main = do c >= toCalendarTime) putStrLn $ show (ctYear c) ++ "-" ++ show ( (index(January, December) (ctMonth c)) + 1) ++ "-" ++ show …

Haskell で Hello World

Haskell やりたいと言い出してからずいぶん経ちますが、やっとコンパイラをインストールしました。で、とりあえず、 Hello World 。 main = let a = "Hello World" in putStrLn a let の意味は解ったけれど、 in の方がまだ解っていません (書いてみたらコン…

BOOST_ASSERT

BOOST_ENABLE_ASSERT_HANDLER マクロを定義して boost::assertion_failed の中で DebugBreak API 関数を呼ぶようにすると、そこそこ便利、かも。 boost::shared_ptr の中で落ちたときなどは abort されてしまうと原因突き止めるのが面倒なこともあるし。

UnhandledExceptionFilter

SetUnhandledExceptionFilter とか素で知りませんでした。勉強になるなあ。 Excel 使っていたら、クラッシュした直後に速攻で再起動してそれまで開いていたファイルを復元したのを見てすげぇと思いつつどうやっているのか今度調べてみよう……と思っているとこ…

初めてまともにマクロを使った

C++ でマクロを使う機会なんてそうそうないので、これまで自分でマクロを定義して使うことは無かったのですが、今日初めて使ってみました。一部が違うだけの、ほとんど内容は同じような関数が山のようにあって、それを定義するために。本当はそういう関数の…

#include

#include は指定したファイルの内容を全てその行に取り込むというだけで、取り込むファイルには制限はありません。だから cpp ファイルを include することもできるし、例えば STLport では実際にそれを行っている。 _vector.h が _vector.c を include して…

shlobj.h に IsUserAnAdmin がない

MS のサイトには shlobj.h を include すれば IsUserAnAdmin 関数が使えるとありましたが、手元の環境では使えませんでした。関数宣言が存在していないようです。ヘッダが古いのか……。仕方が無いので Shell32.dll を動的ロードして使うことにしました。……な…

MSDN に載っていない API

最近必要に駆られて調べたものの MSDN には見つからず、自力で実装しなくてはならないのか……と思い始めた頃に Google 経由で見つけたもの。 ShellExecuteEx IsUserAnAdmin そのほか→http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnapi…

非 POD な構造体に fread やら memcpy はしないようにしよう……?

メンバ関数を持った構造体のシリアライズ *1 は有りか無しかと職場で先輩に聞かれたので、とりあえず無理、とだけ答えたのですが、微妙に自信が無くなってきたので調べてみました。 ">The fread function reads up to count elements from stream into the m…

UDP を使ったソケット通信

先日会社でうまくいかなかったもの。家でクライアントもサーバも 403 Forbidden にあったサンプルソースを使って試してみたところ、普通に送受信できました。やっぱり、できますよねえ。先日もこのソースを見てサーバ作ったのですが、なぜか受信状態のまま、…

log4cpp に TelnetAppender できないかなあ

RemoteSyslogAppender がログをソケットで送信してくれるようなので挑戦しているのですが、これはどうもサーバを用意しないといけないようで面倒くさい。というか、わざわざサーバ自分で書いて試しているのですが、なぜかデータが受信できずにいます。原因も…

Boland C++ Builder (Compiler) で log4cpp を使ってみる

以前導入した *1 log4cpp をずっと放ったらかしにしていましたが、いい加減触ってみようということでとりあえずサンプルプログラムを動かしてみました。コンパイルして実行……すると、プログラム終了時にエラーが出て落っこちてしまいました。デバッグモード…

IDE はどこまでお節介をやくべきか

なんとなしに、警告を「全て表示」する設定にしてプログラムをコンパイルしてみたとこころ、 3400 もの警告が吐き出されてしまいました。えーと……。一年と半年前、ここに常駐し始めた当時はただ単にコンパイルしただけで 1000 を超える警告が吐き出され、げ…

Win32API

売り出し中のアプリケーションを、バージョンアップして Web 対応させたい、なんて無茶なことを言われてしまった。まあ以前から言われていたことなのだけれど、もしかしたら本当にやることになるかもしれない。しかし、単なる Windows アプリをブラウザから…

Monostate パターン

アプリケーションの色々な箇所で使用する設定を構造体なりクラスなりにまとめて保持させたときに、設定は常にひとつだけにして、どこかでとある設定に変更が加えられたら別のところで参照している設定にもその変更を反映させたい、とする。こういった時には…

REXML はだめだった……

REXML は遅い、というのは目にしていたのですが、予想以上に遅かった。これはちょっと、使えないな。ということで ruby-bloglines に逆戻り。