锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美精品久久一区二区,欧美福利在线观看,亚洲永久免费观看http://m.shnenglu.com/tommy/category/16966.htmlIt's hard to tell the world we live in is either a reality or a dreamzh-cnSun, 25 Jan 2015 01:00:14 GMTSun, 25 Jan 2015 01:00:14 GMT60浣跨敤 Poco 瀵?Mixpanel 鍙戝嚭鐨勬暟鎹姤鍛婄▼搴?/title><link>http://m.shnenglu.com/tommy/archive/2015/01/24/209631.html</link><dc:creator>Tommy Liang</dc:creator><author>Tommy Liang</author><pubDate>Sat, 24 Jan 2015 14:48:00 GMT</pubDate><guid>http://m.shnenglu.com/tommy/archive/2015/01/24/209631.html</guid><wfw:comment>http://m.shnenglu.com/tommy/comments/209631.html</wfw:comment><comments>http://m.shnenglu.com/tommy/archive/2015/01/24/209631.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/tommy/comments/commentRss/209631.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/tommy/services/trackbacks/209631.html</trackback:ping><description><![CDATA[StatService.h<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->#pragma once<br /> <br /> <span style="color: #0000FF; ">class</span> StatService {<br /> <span style="color: #0000FF; ">public</span>:<br />     StatService();<br /> <br />     <span style="color: #0000FF; ">void</span> trackPageView(<span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">string</span> &page);<br />     <span style="color: #0000FF; ">void</span> trackEvent(<span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">string</span> &eventName, map<<span style="color: #0000FF; ">string</span>, <span style="color: #0000FF; ">string</span>> &props);    <br /> <br /> <span style="color: #0000FF; ">private</span>:<br />     <span style="color: #0000FF; ">void</span> getUrl(<span style="color: #0000FF; ">string</span> url);<br /> };</div> <br />StatService.cpp<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#include "StatService.h"<br />#include "GlobalConfig.h"<br />#include <Poco/Net/HTTPClientSession.h><br />#include <Poco/Net/NetworkInterface.h><br />#include <Poco/Net/HTTPRequest.h><br />#include <Poco/Net/HTTPResponse.h><br />#include <Poco/StreamCopier.h><br />#include <Poco/Path.h><br />#include <Poco/URI.h><br />#include <Poco/Exception.h> <br />#include <Poco/Base64Encoder.h><br /><br /><span style="color: #0000FF; ">using</span> <span style="color: #0000FF; ">namespace</span> Poco::Net;<br /><span style="color: #0000FF; ">using</span> <span style="color: #0000FF; ">namespace</span> Poco;<br /><span style="color: #0000FF; ">using</span> <span style="color: #0000FF; ">namespace</span> std;<br /><br />StatService::StatService() {<br />}<br /><br /><span style="color: #0000FF; ">string</span> GetIP() {<br />    NetworkInterface::NetworkInterfaceList list = NetworkInterface::list();<br />    <span style="color: #0000FF; ">for</span>(NetworkInterface::NetworkInterfaceList::iterator i = list.begin(); i != list.end(); ++i) {<br />        NetworkInterface nt = *i;<br />        IPAddress addr = nt.address();<br />        <span style="color: #0000FF; ">if</span>(!addr.isLoopback()) { <br />            <span style="color: #0000FF; ">return</span> addr.toString();<br />        }<br />    }<br />    <span style="color: #0000FF; ">return</span> "";<br />}<br /><br /><span style="color: #0000FF; ">void</span> StatService::trackPageView(<span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">string</span> &page) {<br />    <span style="color: #0000FF; ">const</span> GlobalConfig *gConfig = GlobalConfig::GetInstance();<br />    <span style="color: #0000FF; ">string</span> eventName = "VisitPage";<br />    stringstream ss;<br />    ss << "{" <<<br />        "\"<span style="color: #0000FF; ">event</span>\":\"" << eventName << "\"," <<<br />        "\"properties\": {" << <br />        "\"page\":\"" << page << "\"," <<<br />        <span style="color: #008000; ">//</span><span style="color: #008000; "> "distinct_id" and "token" are<br />        </span><span style="color: #008000; ">//</span><span style="color: #008000; "> special properties, described below.</span><span style="color: #008000; "><br /></span>        "\"distinct_id\":" << "\"" << GetIP() << "\"," <<<br />        "\"token\":\"" << gConfig->stat_token() << "\"";<br />    ss << "}}";<br /><br />    <span style="color: #008000; ">//</span><span style="color: #008000; ">encode</span><span style="color: #008000; "><br /></span>    std::ostringstream base64Str;<br />    Base64Encoder encoder(base64Str);<br />    encoder << ss.str();<br />    encoder.close();<br />    <span style="color: #008000; ">//</span><span style="color: #008000; ">cout << base64Str.str() << endl;</span><span style="color: #008000; "><br /></span>    <br />    cout << ss.str() << endl;<br /><br />    ostringstream url;<br />    url << gConfig->stat_endpoint() << "?data=" << base64Str.str();<br />    <span style="color: #0000FF; ">string</span> sUrl = url.str();<br />    <span style="color: #008000; ">//</span><span style="color: #008000; ">cout << sUrl << endl;</span><span style="color: #008000; "><br /></span>    <br />    sUrl.erase(remove_if(sUrl.begin(), sUrl.end(), isspace), sUrl.end());<br />    <span style="color: #008000; ">//</span><span style="color: #008000; ">replaceAll(sUrl, "\n", "$");<br /><br />    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">kick off</span><span style="color: #008000; "><br /></span>    getUrl(sUrl);    <br />}<br /><br /><br /><span style="color: #0000FF; ">void</span> replaceAll(std::<span style="color: #0000FF; ">string</span>& str, <span style="color: #0000FF; ">const</span> std::<span style="color: #0000FF; ">string</span>& from, <span style="color: #0000FF; ">const</span> std::<span style="color: #0000FF; ">string</span>& to) {<br />    <span style="color: #0000FF; ">if</span>(from.empty())<br />        <span style="color: #0000FF; ">return</span>;<br />    size_t start_pos = 0;<br />    <span style="color: #0000FF; ">while</span>((start_pos = str.find(from, start_pos)) != std::<span style="color: #0000FF; ">string</span>::npos) {<br />        str.replace(start_pos, from.length(), to);<br />        start_pos += to.length(); <span style="color: #008000; ">//</span><span style="color: #008000; "> In case 'to' contains 'from', like replacing 'x' with 'yx'</span><span style="color: #008000; "><br /></span>    }<br />}<br /><span style="color: #0000FF; ">void</span> StatService::trackEvent(<span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">string</span> &eventName, map<<span style="color: #0000FF; ">string</span>,<span style="color: #0000FF; ">string</span>> &props) { <br />    <span style="color: #0000FF; ">const</span> GlobalConfig *gConfig = GlobalConfig::GetInstance();<br />    stringstream ss;<br />    ss << "{" <<<br />        "\"<span style="color: #0000FF; ">event</span>\":\"" << eventName << "\"," <<<br />        "\"properties\": {" << <br />        <span style="color: #008000; ">//</span><span style="color: #008000; "> "distinct_id" and "token" are<br />        </span><span style="color: #008000; ">//</span><span style="color: #008000; "> special properties, described below.</span><span style="color: #008000; "><br /></span>        "\"distinct_id\":" << "\"" << GetIP() << "\"," <<<br />        "\"token\":\"" << gConfig->stat_token() << "\"";<br />    <br />    <span style="color: #008000; ">//</span><span style="color: #008000; ">plugin in properties </span><span style="color: #008000; "><br /></span>    <span style="color: #0000FF; ">for</span>(map<<span style="color: #0000FF; ">string</span>,<span style="color: #0000FF; ">string</span>>::const_iterator i = props.cbegin(); i != props.cend(); ++i) { <br />        ss << ",\"" << i->first << "\":\"" << i->second << "\"";<br />    } <br />    ss << "}}";<br /><br />    <span style="color: #008000; ">//</span><span style="color: #008000; ">encode</span><span style="color: #008000; "><br /></span>    std::ostringstream base64Str;<br />    Base64Encoder encoder(base64Str);<br />    encoder << ss.str();<br />    encoder.close();<br />    <span style="color: #008000; ">//</span><span style="color: #008000; ">cout << base64Str.str() << endl;</span><span style="color: #008000; "><br /></span>    <br />    cout << ss.str() << endl;<br /><br />    ostringstream url;<br />    url << gConfig->stat_endpoint() << "?data=" << base64Str.str();<br />    <span style="color: #0000FF; ">string</span> sUrl = url.str();<br />    <span style="color: #008000; ">//</span><span style="color: #008000; ">cout << sUrl << endl;</span><span style="color: #008000; "><br /></span>    <br />    sUrl.erase(remove_if(sUrl.begin(), sUrl.end(), isspace), sUrl.end());<br />    <span style="color: #008000; ">//</span><span style="color: #008000; ">replaceAll(sUrl, "\n", "$");<br /><br />    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">kick off</span><span style="color: #008000; "><br /></span>    getUrl(sUrl);<br />}<br /><span style="color: #0000FF; ">void</span> StatService::getUrl(<span style="color: #0000FF; ">string</span> url) {<br />    URI uri(url);<br />    HTTPClientSession session(uri.getHost(), uri.getPort());<br />    GlobalConfig * gConfig = GlobalConfig::GetInstance();<br />    <span style="color: #0000FF; ">if</span>(gConfig->proxy().size() > 0) {<br />        session.setProxy(gConfig->proxy(), gConfig->proxy_port());<br />    }<br />    std::<span style="color: #0000FF; ">string</span> path(uri.getPathAndQuery());<br />    <span style="color: #0000FF; ">if</span> (path.empty()) path = "/";<br /><br />    cout << "getUrl:path:" << path << endl;<br /><br />    <span style="color: #008000; ">//</span><span style="color: #008000; "> send request</span><span style="color: #008000; "><br /></span>    HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);<br />    session.sendRequest(req);<br /><br />    HTTPResponse res;<br />    cout << res.getStatus() << " " << res.getReason() << endl;<br /><br />    <span style="color: #008000; ">//</span><span style="color: #008000; "> print response</span><span style="color: #008000; "><br /></span>    istream &<span style="color: #0000FF; ">is</span> = session.receiveResponse(res);<br />    StreamCopier::copyStream(<span style="color: #0000FF; ">is</span>, cout);<br />}</div><img src ="http://m.shnenglu.com/tommy/aggbug/209631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/tommy/" target="_blank">Tommy Liang</a> 2015-01-24 22:48 <a href="http://m.shnenglu.com/tommy/archive/2015/01/24/209631.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>about listeners ideahttp://m.shnenglu.com/tommy/archive/2011/05/24/147026.htmlTommy LiangTommy LiangTue, 24 May 2011 05:10:00 GMThttp://m.shnenglu.com/tommy/archive/2011/05/24/147026.htmlhttp://m.shnenglu.com/tommy/comments/147026.htmlhttp://m.shnenglu.com/tommy/archive/2011/05/24/147026.html#Feedback0http://m.shnenglu.com/tommy/comments/commentRss/147026.htmlhttp://m.shnenglu.com/tommy/services/trackbacks/147026.htmlperhaps like this:

//somewhere in A.hpp ...
Grid A("guid_a");
//somewhere else in B.hpp
Grid B("guid_b");
//somewhere else in C.hpp
Form c("guid_c");

A.AddListener("guid_b");      //why use string but not directly object pointer? because perhaps listeners is not yet valid at this runtime, this is just a registeration work
A.AddListener("guid_c");

//cope with the code when A select a row:
GridListenerHandler handler(A);
handler.HandleListeners();

//how to handle? like follow:
Context context = ...;
BOOST_FOREACH(shared_ptr<IListener> listener, InnerGetListeners())
{
       listener->Execute(context);
}

Tommy Liang 2011-05-24 13:10 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲第一精品夜夜躁人人爽| 亚洲精品日本| 午夜影院日韩| 亚洲女同性videos| 午夜视频一区| 久久久久中文| 欧美国产日韩一区二区| 欧美激情1区2区3区| 欧美精品在线观看播放| 国产精品成人观看视频国产奇米| 亚洲人成在线影院| 亚洲精品一区二区三区樱花| 一区二区三区日韩欧美| 欧美在线国产精品| 欧美激情欧美激情在线五月| 国产精品社区| 91久久午夜| 欧美亚洲视频| 欧美成人午夜免费视在线看片| 亚洲日本va午夜在线影院| 亚洲午夜高清视频| 美女精品在线| 国产日韩精品一区二区三区在线| 亚洲国产精品视频一区| 亚洲午夜精品| 免费成人av在线| 99综合精品| 乱码第一页成人| 国产精品一区2区| 一区二区欧美精品| 免费成人网www| 亚洲视频免费观看| 欧美成人嫩草网站| 精品动漫3d一区二区三区| 亚洲欧美成人网| 91久久精品国产| 久久人人看视频| 国产嫩草影院久久久久| 亚洲美女免费视频| 免费亚洲一区二区| 久久国产黑丝| 国产欧美精品xxxx另类| 中国成人亚色综合网站| 欧美高清在线观看| 亚洲裸体视频| 在线观看欧美亚洲| 欧美在线欧美在线| 亚洲香蕉成视频在线观看| 欧美激情四色| 亚洲欧洲一区二区三区在线观看| 久久亚洲捆绑美女| 亚洲专区在线视频| 欧美色图麻豆| 夜夜夜久久久| 亚洲精品自在久久| 欧美精品电影| 99在线精品观看| 亚洲美女av黄| 欧美视频官网| 亚洲一区二区成人| 亚洲视频网在线直播| 国产精品国产a级| 亚洲欧美日韩第一区| 亚洲视频在线一区| 国产精品视频自拍| 性欧美video另类hd性玩具| 亚洲视频一区二区| 国产欧美日韩高清| 久久亚洲风情| 麻豆精品国产91久久久久久| 亚洲国产日韩美| 亚洲人人精品| 国产精品一区2区| 久久久免费观看视频| 久久久女女女女999久久| 亚洲国产精品激情在线观看| 亚洲国产成人精品女人久久久 | 亚洲欧洲在线看| 欧美日韩国产成人在线| 亚洲香蕉网站| 欧美伊人影院| 亚洲日本成人网| av不卡在线观看| 欧美大片网址| 欧美天堂亚洲电影院在线播放 | 亚洲精品视频免费| 99精品热视频| 国产在线欧美日韩| 亚洲第一狼人社区| 国产精品国产三级国产普通话蜜臀| 亚洲欧美三级伦理| 久久久中精品2020中文| 一区二区三区日韩欧美精品| 亚洲欧美精品| 亚洲三级视频| 亚洲尤物精选| 亚洲高清免费视频| 亚洲视频在线视频| 亚洲福利视频在线| 亚洲视屏一区| 免费看成人av| 国产精品地址| 久久综合久久综合久久综合| 女主播福利一区| 欧美在线免费看| 欧美裸体一区二区三区| 久久精品欧美| 欧美日韩一级大片网址| 久久精品国产v日韩v亚洲| 欧美精品免费在线观看| 久久色在线播放| 国产精品日本一区二区| 欧美黄色小视频| 国内成人精品2018免费看| 日韩视频精品在线| 亚洲激情成人| 久久久久9999亚洲精品| 欧美一区二区三区在线视频| 欧美精品久久99| 欧美激情片在线观看| 国内精品免费午夜毛片| 亚洲欧美激情四射在线日 | 久久久噜噜噜久久久| 国产精品黄视频| 亚洲日本成人| 亚洲精品影院| 欧美大片在线观看| 欧美xart系列高清| 尤妮丝一区二区裸体视频| 亚洲欧美日本另类| 午夜精品99久久免费| 欧美色另类天堂2015| 亚洲精选在线观看| 日韩亚洲精品在线| 欧美巨乳在线| 亚洲大片免费看| 欧美一区亚洲| 久久资源在线| 一区在线视频观看| 久久久精品动漫| 欧美电影美腿模特1979在线看| 国产一级揄自揄精品视频| 新67194成人永久网站| 欧美制服丝袜第一页| 国产日韩欧美成人| 久久精品人人爽| 亚洲成色777777女色窝| 亚洲乱码日产精品bd| 欧美日韩伦理在线| 亚洲宅男天堂在线观看无病毒| 校园春色国产精品| 国模大胆一区二区三区| 老司机久久99久久精品播放免费 | 久久久久综合一区二区三区| 老司机免费视频一区二区三区| 国内外成人免费激情在线视频网站 | 国产精品欧美久久久久无广告| 亚洲视频精选在线| 久久九九免费| 亚洲欧洲精品天堂一级| 欧美日韩免费高清一区色橹橹| 欧美日韩一区二区视频在线| 久久久久久久网站| 久久久噜噜噜久久人人看| 亚洲国产精品第一区二区三区| 欧美成人亚洲成人| 一区二区三区四区国产| 久久久99爱| 日韩亚洲国产欧美| 国产亚洲福利| 欧美大色视频| 亚洲欧美日韩国产一区二区| 欧美不卡一区| 午夜精品av| 亚洲欧洲另类国产综合| 国产精品视频免费观看www| 久久久一区二区三区| 亚洲图片在区色| 亚洲成人资源| 久久青青草综合| 国产精品99久久久久久白浆小说| 国产亚洲福利社区一区| 欧美精品18+| 久久精品一区蜜桃臀影院 | 欧美日韩大陆在线| 欧美一区高清| 99精品久久免费看蜜臀剧情介绍| 久久精品91久久久久久再现| 亚洲精品欧美极品| 精品999成人| 国产精品一区在线播放| 欧美成人福利视频| 久久九九精品99国产精品| 一区二区精品在线| 亚洲国产精品一区| 久久久精品日韩欧美| 亚洲欧美日产图| 亚洲视频日本| 一本久久综合亚洲鲁鲁五月天| 一区二区自拍|