三次元日誌(hugo)

c++でHololens

hololens cpp

SharpDXでHololensが頓挫したので、C++でまいりましょう。

C++でMessagePack-RPCを実装する

cpp msgpack

最近のC++(-std=c++14)でMessagePack-RPCを再実装してみる。

Header-OnlyのMessagePack実装とmsgpack-rpc-asioの更新

cpp msgpack asio

車輪の再発明的だけどmessagepackのc++実装をまた作った。

boostから独立したasio

cpp asio boost

vcpkgを眺めていたらnot boostなasioを発見した。

vc向けのメタビルドツールvcpkgを発見

buildtool cpp uwp

uwp向けのlibpngのビルドのエラーを修正する過程でvcpkgを見つけた。

vc向けのメタビルドツールの予感。

gypでdebugとrelease設定を分ける

buildtool python gyp cpp
gypでdebugとrelease設定を分ける gypでvc2010向けのプロジェクトが生成できたので、 実用に向けて設定のテンプレート的なもの

python製のビルドツールgypを使ってみる

buildtool gyp python cpp
python製のビルドツールgypを使ってみる gyp(Generate Your Projects) は、 pythonで記述されたプロジェクト生成ツールで設定からVC向けプロジェクトや、GC

pythonによるビルドスクリプトwafを使い始めた

buildtool waf python cpp
pythonによるビルドスクリプトwafを使い始めた pythonによるビルドシステムwafを使ってみた。 使ってみた感触ではvcとgcc両方で

wafでdebugとreleaseの設定を記述する(variant)

buildtool waf python cpp
wafでdebugとreleaseの設定を記述する(variant) wafでdebug版とrelease版の出力を分けるにはvariantな

右辺値の理解

cpp
右辺値の理解 そろそろ右辺値を抑えておきたい気がしたのでテストコードを書きながら実験してみた(VC2010 Express Edition)。 http://msdn.microsoft.com/ja-jp/library/vstudio/dd293665.aspx を参考に右辺値

msgpack-rpc-asioの関数登録と実行

cpp msgpack asio

msgpack-rpcのリクエストは、

[type, msgid, method, params]

という形式なのでmethod名をstd::stringとしてparamsをstd::tupleとして得られる。 これをサーバ側で如何に呼び出すかについて。

可変長テンプレート引数

cpp msgpack asio

引き続きmsgpack-rpc-asioを実装しているのだが、可変長テンプレート引数(valiadic template)を使うと関数登録のような場合にうまく書けることがわかった。

lambdaの引数の型を得たい

cpp msgpack asio

msgpack-rpcの関数登録の都合上、lambda関数から引数の型を得たい。 下記のような書き方をしたい。

template<typename R, typename A1, typename A2>
void register_func(const std::stiring &func_name
    , R(*handler)(A1, A2)) 
{
    // 関数登録 
}

int main() { 
    // errorになる 
    register_func("add", [](int a, int b)->int{ return a+b; });

    return 0;
} 

msgpack-rpcのasio版を作成中

cpp msgpack asio

連休から始めていたmsgpack-rpcのバックエンドをasioに置き換えてWindowsでも動くようにする試みがやっと目処が立った。

long型のサイズ

cpp
long型のサイズ x86_64ではlong型のサイズが8byteな事を知った。

Boost.GIL再学習

cpp boost
Boost.GIL再学習 Boost.GILを再学習。 {% include_code boost gil practice lang:cpp gil_practice.cpp %} 前半はオレオレImageクラスの記述で画像の読み書きにboost/gil