ios上libevent在dns解析时崩溃的解决 在window和mac,甚至模拟器里都一切正常,就是在iPad机器上崩溃了。 libevent版本:2.0.11-stable 1. 在DNS解析时需要使用ARC4RANDOM算法生成transaction id,而ios自带的算法库有问题,会导致崩溃。还好,libevents提供了另一套替代的算法库,使用该算法库可以不崩溃。Evutil_ra...
如何让网页上的Flash视频在弹出窗口中播放 很多浏览器都有这个功能,当你把鼠标移动到网页视频上,就可以看到顶部有一个按钮出现,弹出独立播放器。当你点击按钮,视频就弹出在新窗口播放了,这时候视频窗口的大小可以自由调整不再受页面的限制。这是如何做到的呢?首先想到的是,浏览器缩放缩放了页面的大小,正好可以显示视频窗口的大小。好像火狐有一个魔镜功能,可以实现网页简报既截取网页任意部分。 要做到这点,浏览器的外框程序必须是自己写的(...
IE Security Zone与Proxy的关系 有很多软件是通过修改IE的代理设置来实现下载加速,或者翻墙的,比如土豆视频加速器和Chrome的翻墙插件Proxy Switchy。但是,这个简单的修改会带来一些意想不到的问题。比如,如果网页中有IFrame,涉及到一些跨域的访问,就可能会有问题。 IE会根据Proxy的设置来识别一个网站到底是Intranet还是Internet。The Local Intranet ...
对象的强引用和弱引用 如何保证一个对象在释放后不会再被访问? 最简单的是使用带引用计数的智能指针,但是强引用会导致对象不会被释放。那么弱引用如何?弱引用允许对象被释放,弱引用必须先转成强引用才能对对象进行操作,如果转换失败,则表示对象已经被删除。正好看到一篇文章“当析构函数遇到多线程──C++ 中线程安全的对象回调”,其大意是使用shared_ptr和weak_ptr来完成。对象必须使用sha
对象的强引用和弱引用 如何保证一个对象在释放后不会再被访问? 最简单的是使用带引用计数的智能指针,但是强引用会导致对象不会被释放。那么弱引用如何?弱引用允许对象被释放,弱引用必须先转成强引用才能对对象进行操作,如果转换失败,则表示对象已经被删除。正好看到一篇文章“当析构函数遇到多线程──C++ 中线程安全的对象回调”,其大意是使用shared_ptr和weak_ptr来完成。对象必须使用shared...
Chromium的Sandbox机制 Chromium允许渲染进程运行在Sandbox里,这样即便代码存在漏洞被网页利用了,也不会对系统造成威胁。Chromium的Sandbox机制主要依赖于操作系统的安全机制,包括Restricted Token,Job Object,Windows Desktop,还有Integrity Level(Vista开始)。 Restricted TokenRestricte
Chromium的Sandbox机制 Chromium允许渲染进程运行在Sandbox里,这样即便代码存在漏洞被网页利用了,也不会对系统造成威胁。Chromium的Sandbox机制主要依赖于操作系统的安全机制,包括Restricted Token,Job Object,Windows Desktop,还有Integrity Level(Vista开始)。 Restricted TokenRestric...
Chrome CancelableRequest类分析 在前面介绍的Chrome Task类,可以让代码在指定线程上运行。 另一种常见的场景就是发出一个异步请求,并想知道请求处理的结果。这时请求的处理过程虽然是在另一个线程上的,但是请求的结果却从(调用者)请求发起的线程上回来,并且请求是可以取消的。 这是很有用的,比如我们经常从界面上(UI线程)发起一个动作,该动作会在Worker线程执行,结束后会通过回调函数回来。这时的回调函数是运行在Wor...
Chrome MessageLoop类分析 Windows程序是基于消息的,不管其封装形式如何,最后都要包含如下代码MSG msg;while(GetMesssage(&msg)){TranslateMessage(&msg);DispatchMessage(&msg); } 大部分的工作都是在这个while循环里完成。 GetMessage获得一条消息,然后调用DispatchMes...
Chrome CancelableRequest类分析 在前面介绍的Chrome Task类,可以让代码在指定线程上运行。 另一种常见的场景就是发出一个异步请求,并想知道请求处理的结果。这时请求的处理过程虽然是在另一个线程上的,但是请求的结果却从(调用者)请求发起的线程上回来,并且请求是可以取消的。 这是很有用的,比如我们经常从界面上(UI线程)发起一个动作,该动作会在Worker线程执行,结束后会通过回调函数回来。这时的回调函数是运行在Wor
Chrome Task类分析 在上一篇《Chrome线程模型》之后,我们来实际看一看代码。 多线程编程完全基于消息传递会比较麻烦,因为消息的封装和解析是比较麻烦的。不仅如此,被多个线程调用的其实是同一个对象的不同方法。比如class Work{ public: void Start() { //CreateThrea...
Chrome Task类分析 在上一篇《Chrome线程模型》之后,我们来实际看一看代码。多线程编程完全基于消息传递会比较麻烦,因为消息的封装和解析是比较麻烦的。不仅如此,被多个线程调用的其实是同一个对象的不同方法。比如class Work{ public: void Start() {
Chrome线程模型(编译) 多线程编程是非常复杂的,Chrome的多线程处理有很多值得借鉴的地方。这篇文章是Chromium项目中Threading的设计和说明文档,简单翻译和注释了一下,以帮助理解。 简单总结就是,不要启动太多线程而应该使用专用的公共线程,代码一定要搞清楚运行在哪个线程上,要有一个简单的方式在线程之间进行通讯。 原文地址 http://dev.chromium.org/develope...
Chrome线程模型(编译) 多线程编程是非常复杂的,Chrome的多线程处理有很多值得借鉴的地方。这篇文章是Chromium项目中Threading的设计和说明文档,简单翻译和注释了一下,以帮助理解。 简单总结就是,不要启动太多线程而应该使用专用的公共线程,代码一定要搞清楚运行在哪个线程上,要有一个简单的方式在线程之间进行通讯。原文地址 http://dev.chromium.org/develope
像绘画那样写代码 很久不写代码,发现写代码的习惯有点变化了。以前基本都是把一个类(或者功能)写好了,并测试通过了,再去写另一个类。至于两者如何交互的,事先要考虑清楚,也就是要做设计,画UML图等。至少是先写的功能,要充分考虑未来调用者的各种使用场景。就像在一张白纸上作画,第一笔总是很难的,所以往往也是最苦闷的时候,写代码的进度也很慢。现在不一样了,根本不等把细节考虑,就开始写代码。先是大概把代码框架写了,想到什么就
使用XmlLite+WinHttp下载RSS 我在CSDN的第一篇Blog是关于XML,介绍使用MSXML的DOM API来处理XML。当时曾经说后续介绍另一种处理模式SAX,结果一晃过了很多年也没有写。实在是因为SAX模型太过麻烦,也没实际用过。SAX是够麻烦的,连.NET Framework都没有提供类似的API,而改为提供XmlReader/Writer。在非托管环境下,XmlLite提供了类似的XmlReader/Writer接口。
Flex,Flash和AIR的关系? 一开始我也被这几个概念给搞糊涂了,特别是在前面写了两篇文章《Silverlight与Flash的一点不同》之后,收到了一些人的疑问。其中就有一条,Silverlight应该跟Flex比较,而不是Flash。 直到我看了Adobe的官方介绍之后,这才明白过来。 原来Flex只是一个开源的类库,简单的可以认为是通用组件库。Flex编译出来的结果即SWF文件(类似二进制可执行文件),可以运行在Flas
Silverlight与Flash的一点不同 续 前些日子随手写的《Silverlight与Flash的一点不同》一文,有读者提出了赞同和反对意见,意料之中的事情,呵呵,继续讨论如下。WPF是以XAML为基础的,而XAML并不是为Streaming而设计的,至少我没有看到对此的说明。理论上,XAML也是可以像XML Stream的方式来处理,但是Code Behide对应的DLL呢?至少,你总得把整个Dll下载完成后才能加载吧,我不知道微软已
也谈IOCP 在这个言必称支持百万级用户的时代,似乎只要掌握IOCP就拿到了Windows平台下开发高性能服务端程序的入场券。网上的相关文章很多,写得都很经典。这里,我只想谈谈我的理解。 我是很早以前在研究Microsoft Soap Toolkit 1.0源码的时候第一次见识IOCP的,里面是把它当做一个任务分发队列来使用的。创建一个IO Complete Port,创建多个工作线程,每个线程试图从Po