一点实习总结+发一个游戏

在金山西山居呆了40天吧,对于第一次出外省的我,没有什么不适应的情况,所以,那里的环境是很不错的。

去的时候就和新员工一起培训。。。其间完成了一些小的编程任务,然后最后2星期分成4人一组,每组负责做一个游戏出来。嗯,我是我们那组的项目负责人~:)。不得不提的是负责培训的老师非常非常牛B,非常非常低调,他是国内最早的一批程序员,也是金山的核心元老。嗯,总之他所达到的境界算是让我大开眼界了。

也不知是个什么情况,就这样在那呆了40天,白吃白喝白拿工资还白培训。。。然后总结了2点关于金山的印象。

环境:

  • 珠海人比较少,靠海,空气好,每天都是蓝天白云。富人多,名车随处可见。
  • 公司一日三餐都提供免费自助餐,伙食一流。员工氛围融洽,美女多。

技术:

  • 牛人多,技术氛围浓厚。食堂,电梯里随处可听到对技术滔滔不绝的讨论。
  • 技术一流。这是外界对金山的一致评价吧,个人就觉得剑网3真的是国内很牛B的著作了。但是貌似管理与营销不行,人才流失也严重,听说每年都被其他公司挖走很多。当然这些就是我的一点道听途说了。

以上就是我自己对金山的印象了,然后由于第一次体会工作生活,自己也零散的总结了一些观点

  • 工作后的coding是很枯燥的,老板给你安排任务后,很多时候你都不知道自己为什么要写这些代码。写完后还要不断进行提炼,重构。软件工程大概就是这样体现的吧,流程与规范是你的首要任务。如果还像在学校那样随便写,那你是肯定混不下去的。
  • 工作后的重点就不是卧薪尝胆,励精图治了,相反,最重要的是要学会面对现实的生活,先适应它才能改变它。
  • 工作后总会怀念大学的生活。
  • 工作后就意味着你在一个团体里干活,团队合作能力就显得尤其重要,其中涉及各种沟通能力,表达能力,领导能力。。这些真的很重要。
  • 工作后,目标不能少,你可以选择工作几年后创业,或者往管理层次发展,或者出国发展。总之必须有一个目标,否则你会体会到从未有过的寂寞。
  • 问问自己想做什么?确定想做程序员?你得知道。。有时加班加得你看见电脑就想吐。当然,如果选择了这条道,那就不要有犹豫了。

========总结分割线===========

下面就隆重介绍下我们组完成的一个ARPG游戏咯,作为小组长,2个星期能做成这样,还是挺满意的。它几乎涵盖了一个完整的ARPG的各个方面:包含剧情,NPC,主角技能,物品,怪物,BOSS等。整个游戏是由Lua脚本带动的,唯一的不足是,剧情太短,游戏5分钟就可以通关了。

另外,发出来前还得声明三点:

  1. 没有用任何DX技术,老大要求用GDI开发,所以贴图不是那么好看,CPU占用也比较高。
  2. 剧情比较猥琐,这不能怪我们。因为题目就很猥琐。。
  3. 由于不是我一个人的劳动成果,所以不能随意开源,以后自己做一个更好的RPG时再开源吧。

一些游戏截图:

1 2

3

4

很粗糙的剧情哈,5分钟就可以通关了,无聊的可以玩下:)

下载地址:

http://netway.googlecode.com/files/nightmare.rar

 

游戏控制:上下左右控制移动,空格攻击,1建技能,左或右+空格能突破重围~

囧,暂时关闭评论。

好久没来了,突然发现700+条垃圾评论。。

果断关闭评论。。

另,这段时间以来,都在用业余时间做一个开源的RPG游戏项目,本来打算做完后继续写博客的。

但是最近要去广东实习,只能延迟了,预计10月发布。

博客又开通了。。

网络浩瀚奔涌,脚步只有在这里能停留。

 

嗯,想念自己这块自游地了。

Libevent2.0.3(新版)VS2005整合版下载

Libevent2.0系列有很大的改进,具体可见项目包里的what’s new.txt,然后今天逛官方主页,发现3月1号更新了一个比较官方的manual,http://www.wangafu.net/~nickm/libevent-book/,感觉很有帮助:)

我觉得2.0最大的改进就是支持IOCP与多线程了吧,很强大,evbuffer也改进效率了,改成复杂的链表机制了,类似复杂的内存管理算法。

下载了一个2.0.3版,还是老样子,只支持VC6,而且regress测试没有集成进去,我改了下,重新整合成了VS2005版,相信对大家有帮助,因为肯定有很多人和我一样希望研究它的源码,那么VS2005是个很好的工具,*.nix大牛除外:(

另外还需注意,test项目里需要自己设定命令行参数,具体参考下图开头部分,而且。。。测试真的很多,它还集成了一个tiny test suit项目来管理所有测试,我运行测试后,密密麻麻的再console输出一堆东西,也没仔细看。。

123

好了,最后是下载地址:)http://download.csdn.net/source/2143982

各种小巧的Hello World

在Reddit看到这篇文章:Hello from a libc-free world!,觉得挺有趣,然后又想起以前看过的各种相关资料,在此做一个整理。注意所有实验环境都为Linux。

版本一:

实际上是用汇编重写_start入口,具体说明请看文章开头提供的连接,汇编代码如下,命名为stubstart.S

_start:
	call main
	movl $1, %eax
	xorl %ebx, %ebx
	int $0x80
然后与普通hello.c连接(hello.c)的代码我就不用写出来了吧。。命令如下:
gcc -nostdlib stubstart.S -o hello hello.c
OK,一个不需要libc的helloworld程序就完成了。只是简单的跳过了_start的各种初始化

高性能服务器:减少data copy与new&delete

为什么要减少这2个操作呢?因为他们使用很频繁,而且很耗CPU。传统的解决方案是,利用缓冲区与内存池。

对于缓冲区,比如java,可以用自带的NIO包的Buffer,对于C/C++也可以用现成libevent的evbuffer。

对于内存池,很多书籍都有介绍,《STL源码剖析》,《Python源码剖析》里的都说得很详细,也比较经典。

然后是如何使用它们,自己琢磨了下,还没实践。因为服务器要维护很多连接,而每个连接都是收到零散的数据,最后要把这些数据组合成消息包,memcpy肯定是免不了的,唯一能做的就是尽量减少它,这就得看服务器的设计策略了。然后是内存池,理论上只要有malloc的地方都可以用它代替,如果是对象,甚至可以重写new函数,但是这样的话,何时使用内存池,还有它的参数设置,这些都是该考虑的地方。我参考一些资料,写了个跨平台内存池,因为关联性比较大,就暂时不开源了,以后一起开。

嗯,这又是篇水文,鉴定完毕。

记一道C笔试题,各种猥琐流。

声明:此文的各种猥琐解法转自电子科大内网论坛,对,就是最近因”许愿门“而上各大新闻网站的学校。原帖:http://bbs.stuhome.net/read.php?tid=530821(外网进不去哈)

题目描述如下:

#include "stdio.h"
void print()
{
     *
}

void main()
{
}
要求在*号处添加语句,程序输出hello,world!

A big project: NetWay is under way~

以前发过一个半成品NetWay网络编程引擎,想法确实不错,但是要把它做好,真的很难。关注网络服务器设计有一段时间了,就开源方面来说,能找到的大多都是HTTP高性能服务器,比如Apache。但是网游方面的呢,开源的很少,而且大多都是python,java之类写的,比如棒子的Openkore。抛开性能不说,封装也不是很好,因为这些引擎都是针对特定网游开发的。经kasicass GG推荐,唯一得知一个沾边的,RakNet,我粗略看了下,设计不错,但是它只是提供了很多逻辑层的插件,所以看上去很强大,而它的网络核心层,居然是直接在一个线程用的select,而且没有封装。

所以,我越来越觉得写一个开源的网络编程引擎是很并不错的选择:),封装客户端与服务端的常用操作以及各种逻辑,用C++编写,逻辑层可由python编写。并提供高性能,可靠性,可扩展性,跨平台性。。哈哈,是不是有点夸张,不过我心里有数,希望毕业前能利用业余时间搞定吧:)现在只完成了最底层的一些跨平台库,剩下就是design and code了~

下面是我自己规划的一个分层结构:

应用层:App(网游,HTTP,P2P,etc)

逻辑层:NWLogicProcessor(插件形式,可由Python或者动态库连接)

消息层:NWPeerInterface(客户端与服务器的一个接口,由它传送与发送消息)

数据层:ClientPeer&ServerPeer(实现了NWPeerInterface接口,用于数据包的封装与解析)

网络层:ClientNetwaorkCore&ServerNetworkCore(底层网络接收与传输)

跨平台层:Thread,Socket,Libevent,etc(网络层使用libevent,只要设计好,事半功倍)

=============================================================================

好了,只是初步的一个分层规划,设计方面以后再慢慢琢磨吧,如果精力有限,我还想自己设计一个P2P逻辑层呢,还想集成BT,Emule等协议呢,貌似更夸张了。。。只是展望一下。。。

And, btw, 最近貌似比较闲。空余时间都在看操作系统,linux内核书籍,感觉也没啥好记的,也不想写啥蛋疼的文章了,比如最近科大某个“门”。所以博客更新可能会比较缓慢了。。-_-。

Hachiko: A Dog’s Story

本来不准备写了的。。但是这个周末看了太多的好电影。。昨天看了500 days of summer,有一种让人耳目一新的感觉,独一无二的爱情片,但是正如开始的旁白一样:it’s not a love story, it’s a story of love。对于那些缠绵悱恻的套路来说,它完全就是非主流了。典型的 American style。很真实,也很有哲理性。

但是,我刚才又看了《Hachiko: A Dog’s Story》,我对宠物类电影的免疫力本身就为负,而且又是改编自真实的故事,听说日本原版已经赚干了眼泪,评价又是美国版比原版拍得好,我的感情堤坝被这只秋田犬彻底击垮,电影最后那段我感动得一塌糊涂。所以,最终还是决定再写一篇电影类日志。

Everybody’s fine.

I've just saw this movie, which deeply impressed me and touched my feelings. Then I think a lot. Mmmm..Yes, Well, all about my father, Just the similar as the leading actor.

Remembered my childhood, definitely not a good boy:(. Just like other monkey-boys, I had done many many bad things, but for my pravicy, I won’t list them all, except for one: I was not good at math and I hated it.

My father told me I was very clever.

“Who would ever had believed such a thing? you can’t pass the elementary school’s math exam! ”. he once said.

I cheered up, and since then, for a long time, he taught me everyday, in order to increase my intrest in math, he even help me do some Olympic Mathmatics problems on occasionally.

not surprised, I got a 100 grade and the NO.1 in the next year’s mid-term exam.