shousen_h.tumblr
今朝、自販機で缶コーヒー買ったら
「おはようございます。お仕事頑張ってください!」って言われた。
おまえはハローワークの前に設置されてるって事を自覚しろ!
atm09td:

(6) Tumblr

今知ったのですが、alt+リブログボタンクリックで即リブログ。
マークがくるくるアニメーションして色が変わる。
拡張なしでできるようです。

atm09td:

(6) Tumblr

今知ったのですが、alt+リブログボタンクリックで即リブログ。
マークがくるくるアニメーションして色が変わる。
拡張なしでできるようです。

cleverpunch:

Crouching cat, hidden lizard

cleverpunch:

Crouching cat, hidden lizard

namobani:

まどろみちゃん 第2話
ワコムさんとこでメイキングもやりました
http://www.comic-hiroba.jp/technic/author/namo/

namobani:

まどろみちゃん 第2話

ワコムさんとこでメイキングもやりました

http://www.comic-hiroba.jp/technic/author/namo/

「いいね」ボタンは「いいね」する対象のサイトと無関係な所に貼っても動作する。 「クリックして世界の子供を救おう」とかいう画像の上に透明の「いいね」ボタンを置いて鬼畜系エロサイトに「いいね」させることもできるので、エロサイトに「いいね」しちゃった人をいじめるのはやめようね。
himmelkei:

天板部分が蛇腹のようになっているわけです。400枚の跳ね板を組み合わせて作られたテーブルは、脚を横に広げるか、円を描いて広げるかによって形を変えることができます。丸テーブルにも長方形にも正方形にも半円にもなりますよ。お客さんが来るときはテーブルを広げて、普段はコンパクトにしまっておくことができますね。 (via 賢い! 丸テーブルにも四角テーブルにもなる自由自在な机(動画あり) : ギズモード・ジャパン)

himmelkei:

天板部分が蛇腹のようになっているわけです。400枚の跳ね板を組み合わせて作られたテーブルは、脚を横に広げるか、円を描いて広げるかによって形を変えることができます。丸テーブルにも長方形にも正方形にも半円にもなりますよ。お客さんが来るときはテーブルを広げて、普段はコンパクトにしまっておくことができますね。 (via 賢い! 丸テーブルにも四角テーブルにもなる自由自在な机(動画あり) : ギズモード・ジャパン)

条件変数のタイムアウト付き待機関数を使うときに、落とし穴にはまらないようにラムダ式を使うとよさそう。

boost::asio 同期処理 タイムアウト

ソケット接続にタイムアウト時間を設定する

void connect() {
    boost::asio::io_service io_service;
    boost::asio::steady_timer timer(io_service);
    boost::asio::ip::tcp::socket socket;

    // 非同期で接続を行い、結果として指定された時間内に接続が完了しなければタイムアウトとする
    timer.expires_from_now(boost::chrono::seconds(3));
    boost::system::error_code ec = boost::asio::error::would_block;
    boost::asio::async_connect(
        socket,
        /* resolver::iterator */,
        [&ec](const boost::system::error_code& e, boost::asio::ip::tcp::resolver::iterator) -> void { ec = e; }
    );

    // 成否が出るまで待つ
    do {
        io_service.run_one();
    } while (ec == boost::asio::error::would_block);

    // 接続できたか判断する
    if (ec || !socket.is_open()) {
        // だめでした
    }
}

シリアルポートを使い、デリミタまで読み込む処理にタイムアウト時間を設定する。

void read_until() {
    boost::asio::io_service io_service;
    boost::asio::steady_timer timer(io_service);
    boost::asio::serial_port serial(io_service);

    // タイムアウトを設定し、
    // - 読み込めた場合はタイマーをキャンセルし、読み込めたことを通知する
    // - そうでない場合はタイムアウト時間が経過するまで待ち、async_wait関数のハンドラで読み込み処理をキャンセルする
    timer.expires_from_now(boost::chrono::seconds<span class="synConstant"></span>(3));
    boost::asio::streambuf read_buffer;
    std::size_t readSize;
    boost::asio::async_read_until(
        serial,
        read_buffer,
        "\r\n",
        [&amp;readSize, &amp;timer](const boost::system::error_code&amp; e, std::size_t size) -&gt; void {
            if(e || !size) {
                // 何かしらエラーが起きた
                readSize = 0;
                return;
            }
            // デリミタまで読んだ
            readSize = size;
            timer.cancel(); // async_wait関数のハンドラ内でエラーを起こさせる
        }
    );
    timer.async_wait(
        [&amp;serial](const boost::system::error_code&amp; e) -&gt; void {
            if (e) {
                // timeoutがキャンセルされた
                return;
            }
            // timeout時間が経過した
            serial.cancel();
        }
    );
    // 非同期関数の呼び出しが完了するまで待つ
    io_service.reset();  // *1
    io_service.run();

    // 確認
    if (!readSize) {
        // だめでした
    }
}


 *1 (2012-05-23追記)
This function must be called prior to any second or later set of invocations of the run(),
run_one(), poll() or poll_one() functions when a previous invocation of these functions 
returned due to the io_service being stopped or running out of work.