タグ

boostに関するcrafのブックマーク (181)

  • このBoostライブラリは、あのBoostライブラリを利用しています - 閑古鳥

    Boostのライブラリは他のBoostのライブラリを利用して実装されていることが多いです。AsioはThreadを利用していますし、MPLはその他の色々なライブラリの実装の助けになっています。そういった関係を抜き出してみました。ただの暇つぶしで特に意味はありません。まあ、生きてるサンプルコードとして使えるかもしれません。 抽出方法 Boostのライブラリはそれぞれディレクトリに分けられているので、ディレクトリ=ライブラリとして、ディレクトリ内のすべてのファイル(.hpp)を走査してincludeしているファイルを元に依存関係を抜き出しました。結構適当です。ソース(.cpp)は見ていません。 ディレクトリ単位で見ているので、Math系のライブラリなど同じディレクトリに実装があるライブラリはひとまとめにされます。 ただし、AnyとかArrayは1ファイルだったので、そういうのは一部特別扱いして

    このBoostライブラリは、あのBoostライブラリを利用しています - 閑古鳥
    craf
    craf 2011/06/03
  • スマートポインタの使い方 その1:unique_ptr - C++Builder好きの秘密基地

    スマートポインタって何? C++において、operator newでメモリ領域(ヒープ領域)を動的に確保した場合、その領域はoperator deleteでプログラマが責任を持って解放してやらなければならない。しかし、deleteを書き忘れたり、例外が発生したときの処理を怠った場合など、それが正しく行われないことはよくある。正しく解放されなかった領域はOSやプロセスが使用可能なメモリ領域を「不正占拠」し、それが積もり積もると、OSやプロセスが停止する場合がある。 #include <memory> class Mess {}; void f(Point p1, Point p2) { Rectangle* r(new Rectangle(p1, p2)); r->rotate(45); // 矩形を45度回転 // ... if (in_a_mess) throw Mess(); // 例

    スマートポインタの使い方 その1:unique_ptr - C++Builder好きの秘密基地
  • boost::progress_display++ - かそくそうち

    Boost.懇親会 #5 名古屋 http://partake.in/events/e9131e9c-0662-4179-bbd4-b0648909f921 でboost::progress_displayの発表をしてきました。 発表資料 http://www12.ocn.ne.jp/~dante98/progress_display.pptx ソースコード http://www12.ocn.ne.jp/~dante98/zip/progress_display.zip 前々からboost::progress_displayが苛められているのを見るたびに、インタフェースでなく実装の問題だと思っていたので、二つの別実装を紹介しました。 以下、実装周りの解説です。 一つ目は、単純なWin32 GUI版です。 boost::progress_displayのインタフェースに合わせるためにはメッセ

    boost::progress_display++ - かそくそうち
    craf
    craf 2011/05/23
  • Boost. 勉強会 #5 に参加してきた。 - 偏見プログラマの語り!

  • Boost.勉強会 #5 名古屋でした - Faith and Brave - C++で遊ぼう

    Boost.勉強会 #5 名古屋 - boostjp 全国ご当地Boost.勉強会の第3弾は名古屋です。 私一人で全国各地で勉強会を開催するのはキャパシティ的に無理なので、名古屋はid:bleis-tiftさんに主催していただきました。 以下、感想です。 春のLock-Free祭り(id:kumagi) STMやActorなどによる並行処理の抽象化が行われる中、それらは「遅い」と言われがちです。Lock-Freeは、ミューテックスによるロックを行わずに共有データへのアクセスを行う高速な手法として徐々に広まりつつあります。 今回のkumagiさんの発表では、まだまだあまり知られてないLock-Freeの概念やコンテナなどに触れられていてとてもよかったですね。 難しくて3割ほどしか理解できませんでしたが・・・。あとで資料読み直します。 Boostで線形代数(再)入門(id:wof_morigu

    Boost.勉強会 #5 名古屋でした - Faith and Brave - C++で遊ぼう
    craf
    craf 2011/05/17
  • boost.勉強会 #5 名古屋 - kouma's lifelog

    初めてC++クラスタに参加してきました。C++コワイヨ boostコワイヨ 名古屋コワイヨ 春のlock free祭り Compare and swapを使ってlock freeなプログラミングをという話。まぁ会社の制約等あるので僕はlock free男子にはなれそうもありません。 Boostで線形代数(再)入門 blusとかLAPACKといった線形代数のライブラリの話(boostにあるよ!)。 Frama-Cによるソースコード検証 CとC++は似てるからFrama-Cで検証できるよね!!(あれ?)って話でした。 C(C++)による左再帰を許すPEG 我らがeldeshによる発表。 wikipediaによるとPEGで左再帰とかできないとか言ってるけどこうすればできるよって話。 Boost.Pythonの有能性 生徒会長によるboost.pythonの話。boost.rubyとかないんですか

    boost.勉強会 #5 名古屋 - kouma's lifelog
    craf
    craf 2011/05/16
  • Boost.勉強会#5 名古屋の雑感 - Cube Lilac

    Boost.勉強会#5 名古屋に行ってきました.Boost.勉強会が「Boost があるかもしれない勉強会になりつつある」と言う噂もちらほら聞きましたが,非常に濃い内容で楽しかったです.発表された方,関係者の方々いつもお疲れ様です. 以下,印象に残ったものをメモ.発表資料ほか関連リンクは,https://sites.google.com/site/boostjp/study_meeting/study5 にあります. 春のLock-Free祭り (@kumagi, id:kumagi) 意義 マルチスレッドプログラミングに置いて古典的な手法は、共有リソースにアクセスするときはロックをかけることである。ミューテックスやセマフォといった排他制御はソースコードのある領域を同時に実行しないようにし、それゆえ、共有メモリの構造を破壊しないようにする。もし、他のスレッドが事前に獲得したロックをあるスレ

    Boost.勉強会#5 名古屋の雑感 - Cube Lilac
    craf
    craf 2011/05/16
  • Destructive Call

  • Boost.Move 解説 (前編) - iorate's blog

    はじめに Boost.Move は、C++0x で導入される move sematics を C++03 でエミュレートするべく、Ion Gaztanaga 氏 (Boost.Interprocess の作者) によって開発されたライブラリです。既に Boost 入りが決定しており、現在 trunk にあります。 この記事は、その使い方と実装を日語で解説するために書かれました。C++0x の move semantics を大まかに理解している人を対象にしています。 参照 の虫: rvalue reference 完全解説 【5日目】Boost.Moveが気になって - Flast?なにそれ、おいしいの? ムーブ可能なクラスを定義する クラスを move semantics に対応させるためには、Boost.Move の作法に則って定義しなければなりません。コピー可能かつムーブ可能なク

    Boost.Move 解説 (前編) - iorate's blog
  • Boost.Chronoで実行時間の簡単な測定 - Faith and Brave - C++で遊ぼう

    Boost 1.47.0で導入予定のBoost.Chronoでの簡単な実行時間の測定です。 #include <boost/chrono/process_times.hpp> #include <cmath> int main() { boost::chrono::run_timer t; for (int i = 0; i < 100000; ++i) std::sqrt(123.456L); // 時間のかかる処理 } real 0.008s, cpu 0.016s (185.1%), user 0.016s, system 0.000s デフォルトではstd::coutに出力されますが、出力先はカスタマイズできます。 以下は、ファイルに出力する例: #include <boost/chrono/process_times.hpp> #include <cmath> #include

    Boost.Chronoで実行時間の簡単な測定 - Faith and Brave - C++で遊ぼう
  • CStringを含むデータ型をBoost.SerializationでシリアライズしてBoost.Asioで送信 - Faith and Brave - C++で遊ぼう

    UTF-16と仮定したCStringWをUTF-8のCStringAに変換してからシリアライズしています。 まずシリアライズ部分。 cstring_serialization.hpp #ifndef MFC_CSTRING_SERIALiZATION_INCLUDE #define MFC_CSTRING_SERIALiZATION_INCLUDE /*============================================================================= Copyright (C) Akira Takahashi 2011 Copyright (c) John Paul Pirau 2008 Distributed under the Boost Software License, Version 1.0. (See accompanyi

    CStringを含むデータ型をBoost.SerializationでシリアライズしてBoost.Asioで送信 - Faith and Brave - C++で遊ぼう
  • Boost.Asioによるワーカースレッドパターン - Faith and Brave - C++で遊ぼう

    これを Boost.Asio を使ってかっこ良くしたいけどどうなんでしょうか。 URL 2011-04-08 15:11:35 via GD Tweet Boost によるデザインパターン - Worker Thread とのことだったので書いてみました。 #include <boost/asio.hpp> #include <boost/thread.hpp> #include <boost/bind.hpp> #include <boost/shared_ptr.hpp> class thread_pool { boost::asio::io_service& io_service_; boost::shared_ptr<boost::asio::io_service::work> work_; boost::thread_group group_; public: thread_po

  • Boost.Asio 非同期処理のタイムアウトを設定する - Faith and Brave - C++で遊ぼう

    タイムアウトには、async系メソッドと別にdeadline_timerを動かし、タイムアウトを設定します。 タイムアウトの前に非同期処理が完了した場合はdeadline_timer::cancel()を呼び、タイムアウト用のタイマーをキャンセルします。 そうすると、タイムアウトのハンドラが呼ばれなくなる・・・のではなく!タイムアウトのハンドラにエラー(boost::asio::error::operation_aborted)が渡されるので、タイムアウトハンドラがエラーじゃなかった場合に実際のタイムアウト処理を行います。 以下、サンプルコード: #include <boost/asio.hpp> #include <boost/bind.hpp> #include <iostream> namespace asio = boost::asio; class Client { asio::

    Boost.Asio 非同期処理のタイムアウトを設定する - Faith and Brave - C++で遊ぼう
  • Boost.勉強会 #4 に行ってきた - 永遠に未完成

    Boost.勉強会 #4に行ってきたよ。 正直に言うと私なんかが参加していいのか怪しいくらいレベル高かった。C++ むずい! その場で内容をきちんと理解するのは難しいと悟って、とりあえず雰囲気だけでも掴もうとがっつり聞いてた。ので、メモはあまり取ってない*1。 とりあえず後で見返せるように自分用に資料のリンクだけでも貼っておく。 「Boost Fusion Library」 - id:faith_and_brave @cpp_akira 発表資料: http://dl.dropbox.com/u/1682460/boost_study_meeting_4/boost_fusion.pdf 発表資料: http://www.slideshare.net/faithandbrave/boost-fusion-library 「C++プログラマの為のセキュリティ入門」 - id:wraith13

    Boost.勉強会 #4 に行ってきた - 永遠に未完成
    craf
    craf 2011/03/27
  • Boost::asioでニコ生のコメントを取得 - ichhiの日記

    行ったこと タイトル通り、Boost::asioでニコ生のコメントを取得してみた。 ソースコード https://gist.github.com/872110 コメント取得手順 ブラウザでニコニコ動画にログイン ブラウザでhttp://watch.live.nicovideo.jp/api/getplayerstatus?v=放送ID を開き放送のステータスを取得 必要なエレメント(addr, port, thread)の取得 コメントサーバにコメント要請 コメントを取得 参考サイト ニコ生のAPIを詳細を知るのに役に立った:http://dic.nicovideo.jp/a/%E3%83%8B%E3%82%B3%E7%94%9F%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%88(%E6%9C%AC%E5%AE%B6)%E3%81%AE%E4%BB%95%E6%A7%

    Boost::asioでニコ生のコメントを取得 - ichhiの日記
  • Boost.Asio リンク集 - Cube Lilac

    id:faith_and_brave さんが最近 Boost.Asio 関連の記事をたくさん投稿してて,どこかにメモっておきたかったのでここにメモ.それ以外のサイトの記事も見つけたら,ここに一緒に追加していこうと思います. 公式 Boost.Asio - Boost C++ Libraries Examples - Boost.Asio - Boost C++ Libraries id:faith_and_brave Boost.Asio 送受信バッファをメンバ変数に持たないためのイディオム - Faith and Brave - C++で遊ぼう Boost.Asioでイベントディスパッチスレッド - Faith and Brave - C++で遊ぼう Boost.Asio - 非同期処理で同期処理を書く - Faith and Brave - C++で遊ぼう Boost.Asioによるワ

    Boost.Asio リンク集 - Cube Lilac
  • Boost.Asio streambufからstd::stringに変換する - Faith and Brave - C++で遊ぼう

    streambuf::data()で、mutable_bufferまたはconst_bufferがとれるので、それに対してbuffer_castを使用する。 void receive(boost::asio::streambuf& buffer) { const std::string result = boost::asio::buffer_cast<const char*>(buffer.data()); } よくある、streambufをstd::istreamを通じてstd::stringに変換するようなサンプルは、ストリームによって必要なスペースが削られたりと、ストリーム固有の問題で嵌ることがあるので、この方法が素直で簡単です。 サンプル #include <iostream> #include <string> #include <boost/asio.hpp> #includ

    Boost.Asio streambufからstd::stringに変換する - Faith and Brave - C++で遊ぼう
  • Boost.Property_treeで暗号化したiniファイルを読んでみる - 名古屋313の日記

    C++, boost | 13:37iniファイルでゲームのデータを管理してみようかしらと無謀な考えが頭をめぐった矢先にiniファイルだと暗号化したものとか読めないからキャラクタのデータとかには使えないねとか言われてました。そこでは独自にiniファイル的サムシングと解析するものを作ったほうがいいですと書かれていたんですが、そこは流石Boost。暗号化したiniファイルも解析できるじゃないですか。早速ソースです。 #include #include #include #include #include #include #include #include #include #include #include #include // 適当に復号フィルターを作る class ango_filter : public boost::iostreams::input_filt

  • boost.GILで組む、ジェネリックな画像処理のアルゴリズム

    "Image dans le néant" by gelinh boost.GILは凄い!開発者の頭の良さがビシビシと伝わってくる! ということで、今回はGILに関しての紹介記事を書こうと思います。 概要 あなたは画像処理のエキスパート。顧客の依頼で、8bitのRGB画像を処理するアルゴリズムを記述していたとします。ところが対象となるデバイスの仕様を調べていた際に、実はRGBA画像にも対応させなければいけないことが分かりました。面倒だと思いながら書いていた矢先、さらにBGRやABGR,さらには16や24bitにも対応したアルゴリズムを記述しなければならないことが判明しました。なんということでしょう…これらの画像すべてに対してアルゴリズムを書くなんて、とてもじゃないですがやってられない。やめてくれ!って感じです。 boostに付いてくるGILを用いることで、画像に対する操作をよりジェネリック

    boost.GILで組む、ジェネリックな画像処理のアルゴリズム
  • function + bindを使ったType Erasure - Faith and Brave - C++で遊ぼう

    型を消すのはfunctionとbindに任せてしまおうという作戦。 #include <boost/function.hpp> #include <boost/bind.hpp> class GameScene { boost::function<void()> update_func_; boost::function<void()> draw_func_; public: GameScene() {} template <class T> GameScene(T& obj) : update_func_(boost::bind(&T::update, obj)), draw_func_(boost::bind(&T::draw, obj)) {} template <class T> GameScene& operator=(T& obj) { update_func_ = boost

    function + bindを使ったType Erasure - Faith and Brave - C++で遊ぼう
    craf
    craf 2011/02/05
    すっきりしてていいですね