<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[optman的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/optman</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; optman]]></copyright><item><title><![CDATA[ios上libevent在dns解析时崩溃的解决]]></title><link>https://blog.youkuaiyun.com/optman/article/details/83943963</link><guid>https://blog.youkuaiyun.com/optman/article/details/83943963</guid><author>optman</author><pubDate>Fri, 10 Jun 2011 17:51:16 +0800</pubDate><description><![CDATA[


 
在window和mac，甚至模拟器里都一切正常，就是在iPad机器上崩溃了。
 
libevent版本：2.0.11-stable
 
 
1.       在DNS解析时需要使用ARC4RANDOM算法生成transaction id，而ios自带的算法库有问题，会导致崩溃。还好，libevents提供了另一套替代的算法库，使用该算法库可以不崩溃。
Evutil_ra...]]></description><category></category></item><item><title><![CDATA[如何让网页上的Flash视频在弹出窗口中播放]]></title><link>https://blog.youkuaiyun.com/optman/article/details/83649142</link><guid>https://blog.youkuaiyun.com/optman/article/details/83649142</guid><author>optman</author><pubDate>Tue, 29 Jun 2010 10:47:00 +0800</pubDate><description><![CDATA[

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