読者です 読者をやめる 読者になる 読者になる

kkAyatakaのメモ帳。

誰かの役に立つかもしれない備忘録。

C++

OpenSSLを使った暗号化

C++

OpenSSLを使ってAESで暗号化。 暗号化 #include <openssl/evp.h> EVP_CIPHER_CTX ctx = {}; EVP_CIPHER_CTX_init(&ctx); // 暗号化の設定で、EVP_aes_128_ecb等いろいろ const unsigned char iv[16] = {}; EVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key, iv); // </openssl/evp.h>…

C++のラムダがCのコールバックにつかえる

ためしにやったら動いた。さすがC++。 #include <Windows.h> #include <iostream> int main() { HWINSTA sta = GetProcessWindowStation(); EnumDesktops( sta, [](LPTSTR desktop, LPARAM lp)->BOOL { std::cout << desktop << std::endl; return TRUE; }, 0); } Win32は列挙系で</iostream></windows.h>…

Boost.Testの利用で変な風にはまる

Boost.Testを使い始めようと試していたら、次のエラーが出て、詰まっていました。 LINK : fatal error LNK1561: エントリー ポイントを定義しなければなりません。ソースは次のとおりの簡単なもの。 #define BOOST_TEST_MODULE unit_test #include <boost/test/unit_test.hpp> BOOST_AU</boost/test/unit_test.hpp>…

Boost.Logはとりあえずこう使ってみる。

これまでの記事でいろいろ書いてきましたが、全部まとめて、とりあえずこんな設定で使ってみようと思っています。問題が出たらつどつど。 コンソールに出力する Visual Studioに出力する ファイルに出力する ログファイルはローテーションの設定をする 日付…

Boost 1.54.0のLogをMac 10.7 (Xcode 4)でつかう。

10.8、10.9でもXcode 4系なら多分同じ。注意点は2つ clangでビルドする dylibを使う clangでビルド 環境は次の通り 10.7.5 Xcode 4.6.3 clang (Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn) GCC(引数指定無し)でビルドすると、途中で失…

Boost.Logでファイルに出力する

Log出力するならやっぱりファイルに出力したいので、ファイル出力の設定をします。Log用のライブラリを使うなら、ログローテーションを活用しない手は無いですね。出力用のbackendはtext_file_backendになるので、既定どおりbackend -> sink -> loggerに設定…

Boost.Logのtext_ostream_backend

BOOST_LOG_TRIVIALは何の設定も無くログをコンソールに出力できますが、新しいbackend(のためのsink)を設定すると出力されなくなります。これでは少し都合が悪いので、自前でコンソール用のbackend(sink)を用意します。ストリームへの出力なので、次を使いま…

Boost.Logの出力をVisual Studioの出力に表示する

Win APIのOutputDebugStringを使用することで、Visual Studioの出力ウィンドウにログを表示することができます。Boost.Logでは同様の機能を持った、専用のbackendが標準で用意されているので、それを利用することで、Boost.Logの出力をVS上に表示することが…

Boost.Logを使う。

Boost 1.54.0からLogが入ったので使ってみました。ログの取り回しは、とりあえずグローバルに1つあればよいので、Boost.Logのチュートリアルにあるように、TRIVIALを使っていきます。 BOOST_LOG_TRIVIAL チュートリアルほぼまんまですが。レベルでフィルタわ…

BoostのMac用dylibのビルドで、install_nameを変更する

b2の引数等いろいろ調べたり試したりしたけど、ダメで、結局*.jamファイルを変更した。 Mac OS X 10.7.5 boost 1.54.0 Xcode 4.6.3 (Apple LLVM 4.2) Boost.Logを使おうと思ったところ、どうにもMacはstaticライブラリが使えないようで...Macでsharedライブ…

Boost.DateTimeのフォーマット

gregorian::dateやposix_time::ptimeはISO形式での出力になる。日付を「/」区切りや、ファイルパス/名前などに利用したりと、都合よく整形したい場合はそれぞれのfacetを利用する。 date_facet, time_facet 変換は、gregorian::date_facet、posix_time::tim…

Boost.DateTimeでUTCとLocalの変換

posix_time::ptimeのutc local変換。 utc to local 変換方法2種。1つ目はC言語関数ラッパーを使うもの。これはutc -> localのみの変換。通常はこれだけで事足りそう。 #include <boost/date_time/c_local_time_adjustor.hpp> date_time::c_local_adjustor<posix_time::ptime> adj1; posix_time::ptime t1 = adj1.utc_to_loca</posix_time::ptime></boost/date_time/c_local_time_adjustor.hpp>…

CppUnitのautoRegisterRegistry__

C++

CppUnitのテストケースを次のようにヘッダーに直接書いていまして、 #include <cppunit/TestFixture.h> #include <cppunit/extensions/HelperMacros.h> class Test : public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE(Test); CPPUNIT_TEST(test); CPPUNIT_TEST_SUITE_END(); public: void test() { } }; CPPUNIT_TE</cppunit/extensions/helpermacros.h></cppunit/testfixture.h>…