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

堕(惰)プログラマ開発記録

タイトル変えようかなとも思ってるけれど,思い浮かばない

Boost.勉強会 #19 東京

適当にメモった事を公開します.発表資料などはBoost.勉強会 #19 東京 - boostjpを. 帰宅したら修正すると思う. 神保町より飯田橋のほうがアクセスが楽で良いんだけど,東西線からの距離がキツいですね.今度からJR中央・総武緩行線つかおうかな Boostライ…

Boost.Spirit.X3のrepeat directiveっぽいの

有るのか無いのかよくわからなかった*1ので,Boost.Spirit.X3用のrepeatをkleeneを参考にしながら書いてみた*2. 一応本家のコードではinclude文がコメントアウトされてるよね.これだとinfみたいな指定もできないよね?みたいな問題もあったりすると思うん…

Boost.Asioばかり触っていた人がcpp-netlibを調べてみた

この記事はC++ Advent Calendar 2012 24日目の記事です.こんな記事ですけど((( 今日はイブらしいですけど,当然予定なんてありません.悔しくなんて無いしっ さて,cpp-netlibというライブラリについて紹介するのですが,似たようなライブラリ(BoostConn…

駆け出しBoost.Spirit.Qi

Boost.SpiritがBoost Advent Calendar 2011 - PARTAKEで取り上げられそうなので,ちょっと予習がてらBoost.Spirit.Qi,弄ってみました. とりあえずHTTPレスポンスのパーサを. #include <map> #include <boost/spirit/include/qi.hpp> #include <boost/fusion/include/std_pair.hpp> #include <boost/foreach.hpp> typedef std::map<std::string,std::string> header_type; …</std::string,std::string></boost/foreach.hpp></boost/fusion/include/std_pair.hpp></boost/spirit/include/qi.hpp></map>

Boost開発環境の構築 @Visual Studio 2010 SP1

構築環境 Windows 7 Ultimate x64 Visual Studio 2010 Professional SP1 この環境に Boost Version 1.46.1 を導入していきます。 準備 Boost DownloadsからBoostの最新版を落としてきます。 サイズは約40MiB〜80MiB。zipは大きすぎるので非推奨です。 これを…

boost::functionとboost::bindとラムダ式

さっきのSHA1ハッシュを計算するクラスの中でこんなの使ってみたんだよね。 boost::functionとboost::bindとラムダ式…奥が深くて面白かった。 unsigned char W[80]; const int i[3] = { 0,5,10}; void foo(const int t,const boost::function<unsigned long(unsigned long,unsigned long,unsigned long)> calculate,cons</unsigned>…

SHA1ハッシュの計算

こんなC++でSHA1を計算できた!*1 ページをいくつか参考にしてやったけど、結構面倒なんだね。 // SHA-1ハッシュの計算 // 参考: http://www14.ocn.ne.jp/~bkclass/doc_sha1.html class sha1{ typedef oauth::string_type::size_type string_size; typedef o…

Boost.Exceptionが簡単過ぎる件

あまりやったことのない「例外処理」に手を出してみました! Boost.Exceptionを使ってみようと色々とググってみたらとても簡単で… class my_error : public boost::exception, public std::exception{}; こんな風にboost::exceptionを継承した例外クラスがあ…

Boost.AsioでSSL非同期通信

ちょこちょこ、boost::asio::streambufで例外が投げられるけど、 一応まともに動くコードになりました。 io_service::workって作ってないとスレッドが落ちちゃうのね… template<boost::asio::ssl::context_base::method SSL_TYPE = boost::asio::ssl::context::sslv23> class async_https{ public: async_https(boost::asio::io_service& io_service</boost::asio::ssl::context_base::method>…

非同期通信の途中終了

io_service::runのあとの非同期通信の途中で別スレッドから ssl-socket_.shutdown()とかtcp-socket_.close()とかすると、通信を強制終了出来るっぽいね。 「ローカルから遮断された」っていうエラーが残るけど、こいつを処理すればいいんじゃ無いかな? 私の…

Boost.Asioによる非同期通信2

昨日の続き。全体を非同期通信にしてみた。 クラスで色々まとめてね。 一応動くんだよね。 以下がコード。 #include <iostream> #include <boost/asio.hpp> #include <boost/bind.hpp> #include <stdexcept> class tcp_client{ public: tcp_client(boost::asio::io_service& io_service) : io_service_(io_service)</stdexcept></boost/bind.hpp></boost/asio.hpp></iostream>…

Boost.Asioによる非同期通信

OAuth関連のコードを最近書いてるはずなのに、 同期通信しか出来ないという俺だったので、 非同期通信について調べながらやってみた。 ゆうと(@yutopp)さんに 「workを作って、io_service::runをスレッドにぶち込めばもうそれだけで非同期」 と教わったので…

Boost 1.45.0をVC10用にビルドしてみる

boost 1.45.0が公開されたのはずいぶんと前だと思うのですが、 適当にビルドしたlibがリンカーエラーを起こすことに気がついたので、 VC10(VC++2010)用にビルドし直すことにしました。 Windows環境ではboost_1_45_0フォルダ直下にある、bootstrap.batを実行…