2012

这篇文章应当要早些时间写的,一直拖到现在。

2011年的新年愿望:

1、创业项目有实质性的进展 

2、去厦门一次旅行,带着老婆大人,去看下鼓浪屿 

3、老婆工作可以变得轻松些,因为他目前还是同样性质的工作 

4、CGP项目上线 

5、深入理解Nginx出版上市 

6、关注健康,将体重减少到128斤以内,坚持锻炼,最近这两年消耗的太多,要补回来 

7、多关注下亲人和朋友,多打电话联系

可惜,只完成了第1项和第7项,可是怎么说了,这一年还是我很充实的自我评价很高的一年,来自于家庭和工作,感谢老婆子、岳母、好豆的兄弟姐妹们这一年的付出。^_^

说下2012年的愿望吧,努力一定要实现,感觉年纪大了,动力越来越没之前那么强劲了,这点需要大大改进一下。

1、好豆实现大跨越

2、3月份底前完成《深入理解Nginx》稿件

3、完成房子的装修并住进去

4、关注健康,具体点吧:每周至少跑步一次或羽毛球一次或爬岳麓山一次

5、在6、7、8月份的时候完成一次旅游,目的地:台湾或者香港或者三亚

6、多存点钱

7、努力让老婆的工作变得轻松一点

8、努力实现以上7点

加油吧,2012!

勇气、坚持、耐心、幽默、灵活、机智、决心和对现实的深刻体会,还有在极端恶劣的情况下能保持冷静的能力,送给新年的自己,自勉并加油!

帅哥一枚。:)

一个男人的成就感,来自于困难、坚持,以及面对困难所坚持付出的努力,并改变这一切!

关于李阳家暴

最近喜欢上看柴静的《看见》,不过不是冲着这个节目去看的,而是柴静。

 

关于柴静,目前是我喜欢的为数不多的电视人之一,喜欢她那文静的言辞中透露出的无穷的力量,让你能切身的感受到;也不知从何时开始,我极度讨厌娱乐节目,兴许我真的已经老了。

 

因为《看见》,让我对李阳家暴有了一个更加深入的了解,从kim的哭泣和李阳的疯狂与偏执中,感受着人性的许许多多罪恶;李阳是成功的,但是他的内心又是极度不自信的,当内心的这种不自信被激怒时,人性的罪恶也在此刻彰显无遗,于是李阳实施了家暴,我们也看到的kim在微博上那许多照片。

 

深藏在人性深处的,除了暴力,还有虚荣、贪婪、自私、猜忌等等,而这一切伴随着每一位个体存在,并当内心不自信的力量减弱时,他们就会露出些许棱角,当他们的力量占据了一定高度,幸福也将随之远离。

 

努力吧,还能怎样!

这半年

半年过得很快,在长沙这坐陌生又有些熟悉的城市里。

认识了很多人,做了非常多的事情,还是那么的忙碌,且,还带着些许的累…

在这个曾呆过四年的城市里,许多东西变得让我熟悉又很陌生,包括这里的人,这里的事。

突然间感觉,从上海回到长沙,远离了张江那似乎带着梦幻般的小镇,走进了现实。

 

我很幸福,一如从前那样。

怀抱梦想,并坚持继续,我相信,如多年前的期许一样,终会照进现实。

我,也在成长,Just like our baby.

 


2010,感谢有你

如百年世博之中国,2010年对于我来说,非常重要! 有幸在2010年,在上海,伴随着世博,经历了生命中重要的诸多时刻。


2010年年初,我们领证结婚了。 2010年10月6日,宝宝提前降临,我成了父亲,进入了人生了第二个阶段,为人父。 2010年年末,我们买了房子,成为了房奴。 许多人可能要经过几年才会经历这些事情,而我却在一年间全给经历了,幸好有老婆大人一路的支持,让我的这一年经历得充实而又难忘。^_^


回头看看2010年初写下的Wish List: 

1、CGP项目 

2、去一个地方旅游

 3、老婆工作可以变得轻松些 

4、变得成熟和稳重一些 

说什么好了,CGP项目有一些进展,基本框架已经写好并通过,但项目离完成还有非常大的一段距离;去一个地方旅游的愿望因为三件大事的原因最终泡汤了,中间个人去了一次两次重庆;而老婆因为怀孕和宝宝的原因,都已经不工作了;第四点,该怎么来说了,应当提升了不少,毕竟当老爸了嘛。:)


然后除了这些,在2010年还有太多的事情经历了,让我对这一年充满的感激和怀念。 

1、离开了第九城市,加入了盛大,九城是一家好公司,第九区是我们的每一个项目成员心血的结晶,然伴随着WOW的离开,公司对项目的放弃,而最终选择离开了九城加入了盛大,感谢在九城这两年里兄弟们的支持,怀念在那里经历过的一切,祝愿你们2011年事业有成。 

2、在盛大的半年,快速的完成了几个项目,包括糖果相册、Social Engine等,感谢几位兄弟们一路的加班支持,也祝愿你们2011年一切顺利。 

3、开始了第一本技术书籍的编写,《深入理解Nginx》,不过因为家里三件大事的影响,目前还没有完成,2011年需要加油完成。 

很多事情总是在没有预料的情况下就发生了,就在岁末,做了一个艰难的决定,选择离开上海,带着创业的梦想,全家搬回长沙,开始我的创业之旅,其实也该开始了,俗话说“成家立业”,家也成了,也该立业了吧。


说下2011年的一些愿望吧。 

1、创业项目有实质性的进展 

2、去厦门一次旅行,带着老婆大人,去看下鼓浪屿 

3、老婆工作可以变得轻松些,因为他目前还是同样性质的工作 

4、CGP项目上线 

5、深入理解Nginx出版上市 

6、关注健康,将体重减少到128斤以内,坚持锻炼,最近这两年消耗的太多,要补回来 

7、多关注下亲人和朋友,多打电话联系 

不写了,太多了怕完成不了,相信2011年的愿望都会实现。


也祝愿大家2011年一切顺利,同时感谢我在上海这几年里,给予我帮助的各位兄弟和朋友,提前给各位拜个早年。

关于创业

雷军讲述傅盛的创业经历,20W VS 50W。 

大家都知道,一个人要创业是需要下很大决心的。

一年多前,我第一次见到傅盛,当时他正要准备创业。打工那么多年,他没什么积蓄,而那个时候正是金融危机最严重的时候,整个风险投资业一片萧条。 

我问他:“如果你拿不到投资还会不会创业?” 

他回答:“会。” 

我又问:“你们有多少钱?”

 他说:“我和徐鸣(傅盛的搭档可牛CTO,现任金山网络CTO)能拿出来20万,我们有20万人民币可以做一年。”

 我再问:“你们需要多少人?” 

他回答:“8,9个人就够了。20万人民币,做一年。” 

我想问问,在座的每个人,20万能做一年吗?如果有,这20万我掏了,你现在就创业。和傅盛的这几句对话把我打动了,当年我就是15万人民币做的金山。

我随后又问他:“你怎么干,20万人民币怎么能撑一年? 傅盛说了他的规划。在北京郊区租套房子,三千元一个月,给所有的兄弟们发1000元生活费,他跟徐鸣不拿工资。

我又问:“那吃住怎么办?”

傅盛回答:“我们住在办公室,吃饭,找个阿姨做菜,一个月给她2000元。”

根据成员地址获取结构体变量

其实是对于offsetof函数的灵活应用,关于offsetof函数: #define offsetof(s, m) (size_t)&(((s *)0)->m)
s是一个结构名,它有一个名为m的成员(s和m 是宏offsetof的形参,它实际是返回结构s的成员m的偏移地址. (s *)0 是骗编译器说有一个指向类(或结构)s的指针,其地址值0 &((s *)0)->m 是要取得类s中成员变量m的地址. 因基址为0,这时m的地址当然就是m在s中的偏移 最后转换size_t 型,即unsigned int。
因此,我们可以根据成员地址来获取结构体变量,如下所示: typedef struct mv_s mv_t; struct mv_s { mv_t *t; char *name; int age; }; //something else mv_t *mv, *mvt, *mvtt; mv->t = ....; mv->name = ...; mv->age = ...; mvtt = mv->t; mvt = (mv_t *) ((u_char *) mvtt - offsetof(mv_t, t)) //now, mvt == mv printf("%d\n", mvt->age);

深入理解Nginx之调试优化技巧

在开发过程中,我们经常会碰到段错误等异常,这时我们需要有相应的机制来进行调试,特别是服务提供在线上时,面对大量的日志信息,合理的调试处理机制对于开发来说是一件非常重要的事情,幸好Nginx本身提供了很好的调试机制,主要包括以下几个方面。 1、Core文件 默认情况下,编译Nginx是带上-g选项的,这就意味着我们可以使用gdb进行调试,以跟踪具体的错误原因。使用Nginx自身带有的两个配置选择就可以轻松配置,使它在Crash的时候产生Core文件。 worker_rlimit_core  50M; working_directory   /tmp/; 其中worker_rlimit_core表示单个worker子进程所使用的Core文件大小的最大值。 working_directory表示Core文件存放的目录,这里需要注意的一点是:该目录nginx必须具有写权限,属主最好为Nginx的进程所有者。 当Nginx接收到信号结束处理时,就会产生相应的Core文件,我们就可以使用gdb来跟踪查看具体的错误原因,如下: gdb /usr/local/nginx/sbin/nginx /tmp/core.xxx >>bt 2、调试模式 为了收集运行过程中的更多的信息,我们可以开启调试模式运行Nginx,这在线上环境上收集具体的信息非常有用,我们只需要更新Nginx的配置文件,并重新加载,所有调试都会记录在日志当中。在编译Nginx时加上--with-debug选项,并在配置文件中可以进行相应的配置以查看调用日志。如下,在error_log中带有debug选项,就会将相应的调试日志记录下来: error_log  /usr/local/nginx/logs/error.log  debug; http { server { error_log  /usr/local/nginx/logs/error.log  debug; …. 因为日志占用的空间非常大,为了更加便于收集日志,Nginx还提供了一个配置选项用来设置只记录特定连接的调试信息,这个配置选项为debug_connection。比如我们只对来自192.168.1.1的连接进行调试信息的记录,配置如下: events { debug_connection   192.168.1.1; } 这时我们可以通过tail -f /usr/local/nginx/logs/error.log -n 100|grep debug来进行日志过滤,查看相应的具体调试信息。 3、单进程非守护模式 Nginx有两种进程模型可以选用,为单进程和多进程两种,同时,默认情况下使用的是多进程模型,同时,默认情况下,Nginx以守护进程的方式运行,但为了方便开发和调试,Nginx提供了单进程模型和非守护进程的方式,由两个配置选项来控制: 守护进程: daemon Syntax: daemon on | off Default: on 多进程模型配置: master_process Syntax: master_process on | off Default: on
下一页