2011-01-01から1年間の記事一覧

設定ファイルからの読み込みをもうちょっと C++ っぽくしてみる。

前のエントリ設定ファイルから true か false を読み出す。 - meg_nakagamiの日記ですけど、これは C++ 的にはまだまだ甘いので、みんながある程度 C++ を詳しく知っている、もしくは向上心があって知らないことを学習の機会とみなしてくれる人であるという…

設定ファイルから true か false を読み出す。

例えば何らかの設定ファイルに true か false という値が書いてあって、それを読み出して拡張機能の有無を変更しなければいけないとします。いろいろ状況は違うだろうけど、とりあえず std::wstring GetProperty( const char* pch ) という関数で "EnableExt…

php ロギング機構を作ってみた

はじめに phpでデベロッパ向けアプリケーションログ機構をつくってみたのでその説明をしてみます。一般的にプログラミングにおいてデベロッパ向けロギングというのはコンポーネントを横断する概念です。アプリケーション上ある機能 X があり、別の機能 Y が…

PHP の strval が使いづらい。

PHP の strval 関数のマニュアルPHP: strval - Manualに strval() は配列に対して使うことはできず、 __toString メソッドを実装していないオブジェクトに対しても使うことはできません。 という記述があるけれども、これはドキュメントとしておかしいと思う…

lix::Failable

cpp

lix::Succession が失敗したときにエラーコードを返す、というだけのものであるのに対して、何らかの値を取得し、失敗時はエラーコードを返す、という場合に使用することを想定したクラステンプレートです。 // 何らかの文字列を引数で受けた string に格納…

lix::Succession

cpp

試しに公開してみた https://code.google.com/p/lix-failable/source/browse/ こいつですが、例えばこういう関数を作るとして、 // 普通は失敗しない何かをする。失敗時は false を返す、失敗理由は(Win32の)GetLastError で。 BOOL DoSomething( int x); こ…

Google Code に公開してみるてすと。

ちょっとしたコードの公開にgoogle code など使ってみる。 Google Code Archive - Long-term storage for Google Code Project Hosting. よくわかんない。趣味ライブラリの一部分だけを公開したいんだけど、どうすればいいのか。

スレッドローカル

cpp

こうか? #if __cplusplus > 199711L #define THREAD_LOCAL thread_local #else #if defined( _MSC_VER ) #define THREAD_LOCAL __declspec(thread) #else #define THREAD_LOCAL __thread #endif THREAD_LOCAL int x = 42;

マイクロソフトはインストーラーが何をしないといけないかちゃんと説明すべき

アプリケーションをつくって、誰かに使ってもらおうとするとインストーラーが必要になるわけだけど、世の中にはこれに関する情報が非常に少ない。 だからInstallShieldとかを使うわけだけど、やりたいことはアプリケーションを使ってもらいたいということで…

LocalAppData にアプリケーションをインストールするという選択

GoogleChrome は ProgramFiles ではなく、LocalAppData(C:\Users\[ユーザー名]\AppData\ もしくは C:\Documents And Settings\[ユーザー名]\Local Settings\Application Data\)にインストールされる。 このLocalAppDataは(MSがどう考えるかわからないが)シ…

typesafe な sprintf

cpp

boost::format を使えばいいんだけど、operator%がなんとなく嫌だったり、フォーマット不能な場合にデフォルトで例外投げるのが嫌だったりするので、そのへんを補正してsprintf感覚で使えるようにしたマクロ。引数10個まで行ける。 #include <boost/preprocessor.hpp> #include <boost/format.hpp> #inc</boost/format.hpp></boost/preprocessor.hpp>…