2008年12月24日星期三

2008总结

时间过得真快,一年又快到尽头了,又是一年总结的时候了。今年是我的本命年,原本听说本命年的人的际遇会很极端,要不就是很好,要不就是很差。我也很低调地度过了我生命中的第二个本命年,今年也的确发生了一些蛮大的事情吧。那就顺着说一下,总结一下经验,同时也展望一下明年,希望那个明年做得更好一点。
08年初在原公司第一个独立完成的产品上线,互联网上第一次有了我的作品,小庆贺一下。并且开始打羽毛球,基本每个周末都会去一次,还买了一只100多块的球拍,感觉身体慢慢好了一点,也习惯了这样的生活习惯。接着就是在一次偶然的和一个网友的聊天中被“看上”,接受了另一家公司的电话面试,并且还跑到了广州见了现在的老大一面,并且聊了一些工作上的看法,不过感觉并不太好,而且当时我去广州的目的也并不是面试,而是想尝一次我一直想喝的大加司的奶茶(现在已经不想喝了,听说都是奶精泡的),不过回来后竟然收到了offer,而且待遇给的还不错,于是决定了我生命中的第一次跳槽。
向原公司提出了离职,因为还没满合同期,原本需要交违约金,不过公司做法不太正规,被我搬出劳动仲裁吓到了,于是免了巨额违约金,呵呵。还好,于是还比较顺利地走人了,不过其实还是有点不舍得的,原公司还是一个比较适合做技术的地方,可惜比较吝啬:)还记得搬离深圳的前一天狂风暴雨,而当时住的地方收拾得很乱,一塌糊涂,我们当时窝在屋里点了一个永和大王的牛柳饭,还蛮好吃的:)在广州住的地方离公司当时的地址很近,于是我过了一段很闲适的日子,每天中午都回住的地方吃中午饭,并且打个瞌睡,下午洗把脸再去上班,这是当年上学的时候才有的待遇啊!!!!可惜这种日子不能维持多久,公司就搬到了天河城的写字楼 ,于是每天开始逼地铁,直至今天。
今年比较成功的地方就是实现了工作选择上的一个跳跃,可惜很多东西都是福兮祸所倚,在这里我过得并不算十分开心,也许不太和我自己的性格吧,不过世事往往没有十全十美的,也许这样才能使我有动力去追寻自己的梦想吧。展望2009,最大的希望当然还是事业再上一层楼啦,感情方面,希望继续稳定恩爱,两个人能够磨合得更好,吵架能够再少一点。暂时没什么更具体的想法啦,很多东西要一步步地去走,希望新年更多阳光,少点乌云。

2008年12月8日星期一

dynamic_cast详解

作为四个内部类型转换操作符之一的dynamic_cast和传统的C风格的强制类型转换有着巨大的差别。除了dynamic_cast以外的转换,其行为的都是在编译期就得以确定的,转换是否成功,并不依赖被转换的对象。而dynamic_cast则不然。在这里,不再讨论其他三种转换和C风格的转换。
首先,dynamic_cast依赖于RTTI信息,其次,在转换时,dynamic_cast会检查转换的source对象是否真的可以转换成target类型,这种检查不是语法上的,而是真实情况的检查。
先看RTTI相关部分,通常,许多编译器都是通过vtable找到对象的RTTI信息的,这也就意味着,如果基类没有虚方法,也就无法判断一个基类指针变量所指对象的真实类型, 这时候,dynamic_cast只能用来做安全的转换,例如从派生类指针转换成基类指针.而这种转换其实并不需要dynamic_cast参与.
也就是说,dynamic_cast是根据RTTI记载的信息来判断类型转换是否合法的.

下面看一个例子:
struct B1{
    virtual ~B1(){}
};
struct B2{
    virtual ~B2(){}
};
struct D1 : B1, B2{};
int main()
{
    D1 d;
    B1* pb1 = &d;
    B2* pb2 = dynamic_cast(pb1);//L1
    B2* pb22 = static_cast(pb1);  //L2
    return 0;
}
上述定义中可以看到,B1和B2是不相关的类,从L1可以看到,dynamic_cast允许这种转换:只要B1存在多态方法.
L2将编译失败,static_cast并不允许两个完全不相干的类互相转换.

dynamic_cast的这种特性,在提取一个对象的某个接口的时候,非常有用,它很类似于实现了COM的QueryInterface的功能。

正好在网上看到一个讲解强制转型的文章:
http://www.xker.com/article/articleview/2005-8-23/article_view_2732.htm
文中这样描述:
--
dynamic_cast 主要用于执行“安全的向下转型(safe downcasting)”,也就是说,要确定一个对象是否是一个继承体系中的一个特定类型。
---这个描述是不完整的,dynamic_cast 固然可以实现完全的向下转型,也可以实现更为强大的QueryInterface的功能。

2008年8月20日星期三

vim使用小方法

使用tab键来补全代码(加在~/.vimrc里面):
function! CleverTab()
if strpart( getline('.'), 0, col('.')-1 ) =~ '^\s*$'
return "\"
else
return "\"
endfunction
inoremap =CleverTab()

2008年8月18日星期一

关于函数覆盖

前几天接到一个电话,那人是循着我的简历找到本人的。并和他讨论几个技术问题,然后被他一个函数覆盖的问题雷住了,以前根本没碰到过这个名词,等到聊完后,上网搜了搜,发现一篇文章:http://zhidao.baidu.com/question/2196348.html?fr=qrl,但是这篇文章其实也没说到什么很新的东西。其实无论是函数覆盖还是虚函数,都是遵循一个概念:如果不声明虚函数,基类指针是根本不能通过虚函数表访问到继承类的函数的,只有通过虚函数表,才能实现动态连编。有兴趣者可以自己写个小code来看下。

2008年8月5日星期二

刘荻:不锈钢老鼠上网记

我开始上网是在2000年初,起初是在几个大学的BBS混,后来混到了网易社区和其它几个地方。这段时间我只是潜水看贴,从不发言。2000年夏天我接触到了李永刚老师办的“思想的境界”,当时它的论坛设在“西祠胡同”里的“社会与人文”下面,所以我便又混到了西祠,并且发现了那里的“民主论坛”(后改名为“民主和人权”),这就是现在的“民主和自由”论坛的前身。我在西祠上注册了“不锈钢老鼠”这个ID,主要是为了看贴方便,我依然很少发言。随后发生的事情有“思想的境界”被关闭,这件事还颇引起了一些风波。好几个地方出现了“盗版”的思想网,供网友们下载原来思想网上的好文章之用。西祠的“思想的境界”论坛也一直保留了下来,只是再没有往日的红火。最近我在一本正式出版物中读到了作者引用李永刚兄对网络民主的观点,感慨颇多。接下来是2001年春夏之交,离某个重要的纪念日还有一两个月,网络上的不安与躁动已经开始,这时却传来“羊子的思想家园”站长杨子立等四人被捕的消息。“羊子的思想家园”是我常去的网站,在我学会用代理浏览海外的“反动”网站之后,还常常在她那里寻找可用的代理,所以我对杨子立的被捕感到特别震惊。而且随着纪念日的日趋临近,西祠网友的情绪日趋激动,“风声”也日趋紧张。比“民主论坛”激烈得多的“自由主义论坛”中存放了大量关于这个纪念日的文章,直到坛子被西祠站方关掉;几个大胆的网友被封ID;这时关于网特的传言也越来越多。这些促使我做出了一个决定,借用王小波的一句话:吾辈从今天开始说话。如果现在我不说话,以后可能就没人能够说话了。这是我发言的开始。终于进入6月了,西祠站方宣布,6月1日至7日,西祠因技术原因休站7天。 说是技术原因休站,但是网站的服务器一直开着,网友们仍然可以以各种方式“挖地道”进入胡同。到了纪念日当天,网友们都发现自己的嘴巴被封上:无法在论坛发言了。这时又有网友迅速开发出替代程序,解放了的网友纷纷发出感慨:原来嘴巴被封住的滋味是这样的!我的一篇纪念文章也得以发出。西祠的“技术性休站”休了大约有一个月。这期间据说被南京某报(西祠的服务器在南京)批判“名义上服从领导决定休站,实际上留有多个入口供反动分子进入。”这样直到有一天,西祠关闭“民主和人权”等多个时事政治类讨论版,另有一批讨论版被降级为秘密版。民版的老网友们不甘寂寞,另外找服务器做了一个接口跟西祠很像的“烟雨社区”。烟雨的优点是任何人都可以建讨论版,因此我也开了自己的文学类讨论版“发条橘子”。尽管如此,烟雨上新建的“民主与自由”版,却是整个社区当之无愧的“老大”:民版占了烟雨的绝大部分的空间。与此同时,民版网友也不满足于仅仅上网发发帖子了,我们想利用自己的力量做点实事了。烟雨是西祠的简易版,有很多不足之处,比如不能开秘密版,没有聊天室等等。于是我们回到西祠开设了一个秘密版——版的名字很不引人注目,叫做“好朋友一起来玩”,由于版号是71138,于是我们又管它叫71138版——目的是讨论我们能为中国的进步做点什么。我们决定每周五晚上8点在秘密版的聊天室里开会讨论。我不知道最早的网络会议是不是从我们开始。过了很长一段时间,我们的网络会议早已停止以后,一位网友写了一篇《光着身子开会》,意即在网络聊天室里,不必西装革履,甚至可以什么都不穿地开会,回忆这一段日子。大约两年以后,我坐在看守所里,看着电视新闻里新政府要反腐败,改革会议方式,改用网上会议,我也回想起了当时在聊天室里开会的日子。讨论中有些朋友不满足于网络社区组织的虚拟和松散,想要走下网络,成立更加严密的组织。我写了一篇文章对此提出反对意见:我不反对走下网络,但是我反对成立任何形式的严密组织,原因是新青年学会的前车之鉴。我所希望的就是像版名一样“好朋友一起来玩”,大家以网络为平台彼此交流、相互支持,以在异化和疏离的世界中获得归属感。在这个思想的指导下,我和北京的网友们搞了几次聚会:“组织大家去爬山看电影”,这是一位网友的话。一次讨论中,有网友找来了2000年6月被捕的“天网”黄琦的妻子曾丽。大家讨论如何能帮助黄琦,最后的结果是我们捐了一些钱给曾丽,因为她的生活很困难。就是这时候我写了《柿油派网虫集体向D和政府投诚》。这个帖子是一位网友的主意。我们还讨论了其它一些主意,但是都没有结果。烟雨论坛只存活了短短的两个多月就被关闭了,从此“民主与自由”便走上了在三十多个论坛上流浪的道路。而西祠的秘密版却一直存在到今天,只是再没有人气。与此同时,民版的朋友还在西祠上开了另一个秘密版:“人民日报FANS俱乐部”,后来改名叫“人民日报读报小组”。版内经常滑稽模仿“我D”搞一些D内斗争,搞点政治无厘头逗大家笑。我也在一些文章中提到过它。这个版也早已被关闭。2001年十一旅游黄金周期间,民版的网友们决定在南京搞一次跨省的大聚会,参加聚会的网友来自江苏、上海、安徽、广东、辽宁等省市。让我觉得比较遗憾的是没有北京网友参加。出于开玩笑的目的我写了一篇《西祠柿油D第一次全国代表大会在南京召开》的“报导”(其实就是把中共一大的文告拿来改头换面),贴在西祠的秘密版里。这个“报导”没过多长时间便被斑竹删掉。当时我还抱怨斑竹“过敏”,谁知一年多以后当我面对预审的时候,当问到“西祠柿油D”是怎么回事时,我只好努力解释那只是一个玩笑。由此可见他们对“组D”的敏感程度。此后的半年里,秘密版的讨论逐渐冷下去,“民主与自由”关了又开,遇到的压力之大可想而知。在这段时间我写了一些文章,认识了一些网友;除了民版以外,我还在其它一些论坛上发言,如问题与主义(后改名为学而思)、不寐论坛等;“不锈钢老鼠”也从一个名不见经传的小ID变成了“著名网友”,还当了一段时间民版和学而思的斑竹。2002年五一的旅游黄金周又快到了,民版的老朋友们又想组织一次聚会,这次我们可遇到麻烦了!五一之前,多名积极组织聚会的网友、及西祠和民版的著名网友被江苏当地国安传讯,聚会被迫取消。据被传讯过的网友说,我写的一些文章引起了国安的注意,我和几位北方网友是他们询问的重点。现在有人指责当时的一位网友被传讯时“向国安提供了很多关于老鼠的不实之词”,我要郑重声明的是,事情是这样的:这位网友确实对国安说过诸如我年龄有四五十岁或者更大、以前当过右派等等“不实之词”,但他的动机是为了保护我;他此举也许有些不负责任,但是并没有恶意,相反我是应该感谢他的。我认为他不应该因此而受到网友们的指责。听说这件事之后我被吓坏了,有一段时间没有发过帖子。可时间长了,又感到这件事的可笑。我写了“三部曲”的《不锈钢老鼠的自白书》,分别引用话剧、电影和小说作题目,来表达这件事的荒谬和解释我心中的真实想法。我又开始在网上发帖子。直到2002年9月,北师大百年校庆刚过,心理系负责学生工作的老师找我谈话,说我在互联网上发表过一些非常反动的文章,上边几次找到学校,还说我有组D的想法,是一个非法组织的重要成员等等,警告我以后不要再发那些过分的文章。当时我知道“狼”真的来了。从那之后,除了一篇关于减肥的文章以外,我没有在网上发过任何帖子,连跟贴也很少,直到2002年11月7日,我被北京市公安局刑事拘留。

2008年7月11日星期五

I have many many dreams......

there are many dreams I want to complete them.just like I want to join in the best company all over the world.and I want to be more outstanding than the people that I ever met.But at the moment I don't know how to start it.I am doing some not so challenging work.At least I want to go abroad to meet some top coder all over the world.just like some coders/architects who works in MS or google or others.........

2008-07-11,I will do some practice for topcoder

The target : win in the tc srm 410 which at
Beijing
Midnight Sat-Sun
July 19, 2008 at 12:00 Noon New York time
First , I will complete the all of the srm 409 problems and 408,407,406.

My first Englist blog

I will written my life in English here for practicing my written English and oral English.I hope you will like what I written.
I will record my topcoder practice and google code jam and other coding competition。And also I will write some about my current works in the company.I think that will very funny.Hope you all can love me and my blog~~~~~~