soar 发布的所有文章

最近学了不少东西,晒一下

首先因为跨平台界面的需要,不得已简单学了下java+swing写了个工具给公司策划们用。
然后因为特殊的需要又学了actionscript 3跟要为公司游戏的客户端写一些代码。
再然后为了重新实现protobuf的一些功能简化c++输出同时生成doc文件,又学了lemon语法分析器。
最后自己偷偷发起了一个开源项目ThorSE,是一个半即时策略游戏引擎,为此正在学习OpenGL。

顺便聊下近况,公司的工作量比较稳定,熬夜逐渐变少,业余研究也比较多,此外已经开始打算预订psv。

搬家

之前空间到期木有续期,然后就懒得搞,拖了这么久才想到要完成搬家,于是花了15分钟搬到香港这边的服务器上。

顺便聊下近况:
1.正在筹划写一个开源的半即时策略游戏引擎(三国志9,银英传3/4那种),适当的时间会公布开发进度和仓库地址。
2.工作内容相对没有以前那么紧张,主要是新项目开始没多久
3.基本不怎么玩游戏,买了ps3也只玩了几次
4.历史书还断断续续有读,不过总得来说也是支离破碎的时间里

冒个泡,俺不是消失了,只是最近不想写

稍微絮叨两句,最近工作也不能说是很忙,就是很烦,能静下心来开发的时间没有以前多,加上某个变态功能开发一拖再拖,搞得一个月没好好睡觉,现在整个人常年处于半恍惚状态。

技术研究咱就不谈了,自顾犹且不暇……工作中也没什么新东西可学,基本就是写逻辑,改架构,慢慢把现在手里游戏的bug排除干净,简化部分逻辑和架构,优化一些算法,也算是颇为无奈的后期维护阶段,关键是这后期维护何时是个尽头实在是不好说……

在俺的带领下办公室流行了几天Terraria,大家天天挖挖矿搭搭房子也挺有乐趣,不过因为大家都是没啥时间和耐心的人,大房子实在整不动也就慢慢热情淡了。

此外,新买了HTC首款双核Sensation 4G(中国人俗称的G14),除了电池在大屏幕的消耗下实在不耐用外,其它都还OK,工程机可以S-OFF,所以装了不少底层软件,可惜游戏装了一大堆也没啥时间玩。

最后要说的是,新项目不知道什么时候算是可以全力投入搞啊,反正对于当前项目的收尾时间已经不抱啥期望了……

PS: 顺便测试新浪微博是否能同步俺的博文。

从技术宅向发呆宅转变

    最近业余时间还是宅在家为主,但是我发现自己越来越不喜欢在家研究技术,甚至是玩游戏也少了很多,几乎发呆的时间增长到了一半,不知道是因为长时间的高强度工作还是因为年纪大了,亦或是时节关系,反正我深刻地感受到了近期的惫懒。
    近期的研究方向是进程间通信和数据共享,但没什么成果。

作为一门动态语言,flash的崩溃率实在让我崩溃

由于游戏客户端是flash+as写的,所以天天要在浏览器里用着测试。
一般来说,一两天崩溃一次是正常频率,这实在也未免有点太高了些。
老实说,其它动态语言就没怎么碰到过虚拟机崩溃的事情。
就算可能是浏览器的渲染层的问题,那也应该自己进行异常处理。况且在chrome里崩溃的时候,很明显是flash自己crash,渲染层还是正常的(不排除沙盒隔离了内外渲染层)。因此,很可能还是flash自己虚拟机运行as字节码时出的问题。
希望adobe在发展新功能的同时,认真解决崩溃问题,提高虚拟机性能,否则确如乔大爷所说,flash会很快成为昨日黄花。

闲谈

过年没啥感觉就结束了,就记得狂吃狂喝狂睡了。
在那之后迎来新一年的工作,立马就紧张起来了,功能开发和优化工作同时进行,偶尔还要做一些份外的活,真是劳心劳力。
业余研究dnd4e什么的,倒也乐在其中。
情人节和元宵节都在公司吃的晚饭,颇有点悲凉。
这周nook color应该能入手,期待它的做工和android破解系统。
房贷的提前还款已经凑了不少准备还掉一部分,唉,房奴就是杯具。
有点困,语无伦次了一点。最后希望openpandora快发货吧……

一年个人总结

眼看又到年关,结束了一年的忙碌,静下心来回想这一年中在我身上的变化,真是恍如隔世,原来一年之间自己竟然做了那么多事,实现了人生那么多第一次。
年初的时候决定离开新加坡的Garena是我这一年的开端,也是我人生中重要的转折。一方面是在见识了国外的环境后觉得工作上已经很难给自己新鲜的感觉和进步的动力,另一方面是已经和认识半年在上海工作的女友远隔千里实在见面不易,再加上上海发来的适合我而又极具挑战性的工作邀请,我最后还是决心放弃手中稳定而比较悠闲的工作,返回上海再一次加入一个创业团队从新开始,并给自己竖立了更高的目标。
此后就是过年期间离职到入职到熟悉新的工作环境,对于我这种生活上午随遇而安的人来说并不是什么困难的事情,所以我以最快速度融入新的团队并开始人生第一次从头开始的商业项目。与此同时还与女友预定了结婚日期,可说是工作和生活都迎来了全新的前景。
新的工作是做web游戏的服务端。波澜不惊的前两个月过去,我完成了大多数基本架构后随几位大佬一起去广州兄弟公司拜访,学习他们先行的经验,这算是我人生第一次坐国内航班吧,也是第一次去国内杭州以南的地方。
回到上海后,大家开始发力做手里的游戏项目,因为大家看到广州的公司都很拼命,认识到开发周期是重要的成本,必须尽快完成手里的游戏让它上线。
此后的几个月我经历了人生中密度最大的加班期,一直到8月底总算是勉强完成这个游戏的前期开发,内测上线运营之后,才稍有缓解。
可是我个人的繁忙却还没有结束,婚礼的筹备虽然基本怎么参与,但是写请柬,准备仪式什么的,倒也让我有点顾不过来。10月6日的结婚典礼结束了我单身时那只顾学习工作不拘小节的不羁生活,我一直以为要适应二人的生活会影响到工作进度,但事实上是结婚后因为游戏运营的铺开,反而事情更多,我也加班更多了,而且因为家庭的压力和责任感,反而使得工作的时候更加尽心尽责。
11月下旬和老婆去塞舌尔度蜜月,这是第一次到出国旅游,也是第一次到亚洲之外的国家去,风光固然是不错,但是工作上偶尔的几个电话骚扰和被迫度假期间稍微整了下服务器,还是颇有点扫兴。塞舌尔当真是风光如画,长长的纯白色的海岸令人流连忘返,临回上海的时候,老婆说以后一定还要再来。
回到上海之后的整个12月日子,可以用水深火热来形容,时常忙到半夜才离开办公室,新的功能一直出各种bug,联运越来越多,服务器的性能和稳定性要求不断上升,幸好这个项目我很喜欢,所以也就坚持了过来,现在回头看过去,这个月委实是最为关键的一个月,终于使得游戏的运营势头进一步快速攀升,从成绩上已经勉强可算优秀,虽然品质就我自己看来,还算不上上乘,而且细节来说,还远远未够。
记完这一年的流水帐,回头来看自己的收获:在生活上,成家,学会约束自己,为另一半着想,肩负家庭责任感,摆脱了随遇而安不求上进的心态;在工作上,逐渐适应了带领团队的工作,同时自己在工作中学习了很多新的东西,并且做出了效率上让自己比较满意的产品。遗憾也不是没有,一是因为工作的繁忙,婚前各种事,婚后常常晚回晚睡,平时在家做事也不时犯迷糊,可说是没能在新婚年足够顾家,实在是对老婆颇有歉疚;二是回头去看工作,觉得自己在很多时候不够坚持,或者没能多和同事讨论,很多地方走了弯路乃至没能把产品设计到最好,心中未免有点不爽,当然这也是宝贵的财富,明年的工作一定要尽量避免这些问题的再次发生。
最后,还是祝家人和朋友,祝同事和所在的公司,祝所有看我blog的人,当然也要祝自己,在兔年里平平安安,并能实现自己的理想和目标,实现自己的人生价值!

阅读HAProxy代码学习linux下的splice函数用法

    自从linux 2.6.9后linux提供了驱动级的系统函数splice。它的作用是在文件描述符直接转发数据,直接对内核内存块做引用标记而不需要借用用户内存复制数据。这样就大大节省了分配内存,再read和write的性能消耗。
    自己用了一下这个函数发现总是返回EINVAL,于是去阅读HAProxy的源代码,总算弄明白了一些使用条件,理解了这个函数的设计思路。
    可以说splice本来就是用于select/poll/epoll等异步机制或者跨进程的通信,所以要求输入和输出必须至少有一个描述符是管道。于是我们可以看到以下清晰的流程:有数据读取时将来源fd的数据splice到pipe_in,然后异步请求写事件;写事件到来时从pipe_out再splice到目标fd。
    这样的流程处理常见的fd数据复制是够了,但是问题又来了,当处理网络socket描述符的时候,如果并发量很大,难道我们要为每个fd创建一对管道,那对系统是一个巨大的消耗。
    让我们看看HAProxy是怎么处理这个问题的:它用了一个pipe池,每当要做splice的时候就从里面取,不用的时候就放回去,而这个不用的时机很重要,也就是管道里的数据全部复制过去之后,这样管道只会在异步等待写出的短时间里被使用,同时的使用量就没有那么大,系统消耗就大大减小。
    以上就是一点点个人心得,希望对底层开发的程序员们有所帮助。