2010-01-01から1年間の記事一覧
今回はプログラミングとは関係ない記事。 良いものが焼き上がったので。 右手は顔面把手付深鉢。いわゆる女神像土器。元は縄文中期の傑作。 妊婦かわいいよ妊婦。 岡山の粘土は鉄分の含有量が多いためか、良い赤が出る。 一番下の写真が、たぶん肉眼で見た色…
Boost.Serialization はシリアライズ機能を提供するライブラリだが、 同時に strong-typedef や static-warning など非常に便利な小道具を用意している。 その中で boost::serialization::singleton クラステンプレートは、 有名な(悪名も)シングルトンパ…
Twitter API でBasic認証が廃止になり、OAuth 必須になるらしい。 OAuth がどんなものか知らないので調べてみたが、どうやら HMAC の計算が必要とのこと。 ということで、拙作の吉里吉里用ライブラリ KTL を使って、HMAC計算を実装してみた。 KTL の実践的な…
(続き) boost::property_tree::basic_ptree を安定ソートするにはどうすればよいか。 メンバ関数 basic_ptree::sort() や STL アルゴリズムなど、 ふつう考えられる方法ではおよそ難しいというのが、前回の話だった。 ようは同じキーの要素同士の比較にお…
#include <boost/property_tree/ptree.hpp> boost::property_tree::ptree ptree; ptree.sort(); 残念ながら、このコードはコンパイルできなかった(Boost 1.43 + VC9)。 というのも basic_ptree::sort() は、要素を実際に保持する multi_index_container::sort() を呼び出しているが、これが</boost/property_tree/ptree.hpp>…
example/HTTPダウンロード http://www.boleros.x0.com/doc/ktlwiki/index.php?example%2FHTTP%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9 こいつにURLエンコードを実装しようかと思ったが、果たして文字コードは何で扱うべきか? ちょいと調べた限りでは、UTF-8が…
bom_test.tjs var str = "\xFEFF吉里吉里"; Debug.message(str); // Console:吉里吉里 Debug.message(str.length); // Console:5 Debug.message(#str); // Console:65279 (== 0xFEFF) TJSからIStreamを使ってファイルに文字列を流し込むとき、BOMをどうすれ…
公開しました。 http://www.boleros.x0.com/ 案の定「どれが何の機能かわかんねーよ!」という声があったので、 よく使われそうなものから細々とドキュメント書いていきます。 HTML書くのが面倒なのでPukiWikiで書くことにしました。
ループバックアドレス使って一人チャットしてみた。 さしあたっての目標は、TJS(吉里吉里)から使える ネットワーク送受信プラグインの作成。 ネットワークプログラミングどころか、 マルチスレッドを実戦で扱うこと自体初めてなので 勉強あるのみ。
Boost.PropertyTree にはINIパーサがある。 foo { a aaa b bbb } bar { c ccc } このような木構造を書出すと、 [foo] a=aaa b=bbb [bar] c=cccのように出力される。 もちろん、読込はこの逆になる。 foo { a aaa b bbb bar { c ccc } } このような木構造は、…
boost::mpl::string は、現状 char にしか対応していない。 typedef boost::mpl::string<L'f', L'o', L'o', L'あ', L'あ', L'あ'>::type foo; sprig::cout_section_line("foo", boost::mpl::c_str<foo>::value); // <foo>foo0B0B0B</foo>どうやらワイド文字リテラルは、multi-character literal('foo'←こういうの)</foo></l'f',>…
TJSとは >W.Deeさんが開発したスクリプト言語。オブジェクト指向。 >ゲームエンジン「吉里吉里」で使用されているが、ライセンスを満たせば組み込み可能。公式ページは以下。 http://kikyou.info/tvp/TJS2 リファレンスは以下。 http://devdoc.kikyou.info…
そういえば吉里吉里とTJSについて何も書いていなかった。 1/31まで忙しいので、それが過ぎたらちょこちょこと書いていこう。
ふと思い立ったので書いてみた。 ネストされたMPLのシーケンスを、 一つのシーケンスに直線化(?)するメタ関数。 linearize.hpp #ifndef SPRIG_TMP_LINEARIZE_HPP #define SPRIG_TMP_LINEARIZE_HPP #include <sprig/config/config.hpp> #ifdef SPRIG_USING_PRAGMA_ONCE # pragma onc</sprig/config/config.hpp>…
ベンチをとってみた。Visual C++ 2008 Express SP1 構成:Release (最適化=実行速度(/O2)) Windows XP SP3 3.00GHz、3.25GB RAM CallTraitsTest.cpp #pragma warning(disable : 4819) #include <cstdio> #include <iostream> #include <boost/array.hpp> #include <boost/foreach.hpp> #include <boost/format.hpp> #include </boost/format.hpp></boost/foreach.hpp></boost/array.hpp></iostream></cstdio>
boost::call_traits::param_typeは、Tが(constな)引数にとられるとき const参照渡しにすべきか、値渡しにすべきか決定してくれます。 以下のように使う。 #include <boost/call_traits.hpp> template<typename T> class foo { public: typedef typename boost::call_traits<T>::param_type param_</t></typename></boost/call_traits.hpp>…
↓は2chのBoostスレでの自分の書き込みです。 http://pc12.2ch.net/test/read.cgi/tech/1251446016/373 のBOOST_STATIC_WARNINGは、 クラステンプレートの中で働かなかったりとか、いろいろあります。 そういった条件もいまいちわからない。 まあ、もともとテ…
Boost.MPLにはhas_xxxという、クラスが特定のメンバ型を持つか 判定するメタ関数(を定義するマクロ)があります。 使い方や実装テクニックは、↓で詳しく解説されています。 http://cpplover.blogspot.com/2008/10/hasxxx.html 上記ブログでは、型だけでなく…
C++大好きです。Boost大好きです。趣味グラマです。 アプリケーションよりライブラリつくっているのが楽しいです。 俺ライブラリはなる名前でまとめています。 hello_world.cpp #include <sprig/cindent.hpp> int main(int argc, char* argv[]) { // Hello, world! sprig::csect</sprig/cindent.hpp>…