之前一直在寻找一个能省资源(服务器)又能提高效率的方法。方法还是很多的,不过我想自己去实现。
我的概念是这样的。让一些比较固定的资料在某一次被呼叫时创建自己的缓存文件并保存在硬盘上一段时间,之后的呼叫优先访问缓存文件(如果缓存文件的有效期已经失效,那就再问数据库请求数据并生成新的有效缓存文件)。我一直在挣扎的是:读取文件的速度没有读取数据库快(但是差不多),缓存会降低数据的时效性。不过在我们这样的大型多人项目中这是不可少的一环。
于是我用了2天做好了场景缓冲,缓存访问的相应时间要比访问数据库少了20ms 这虽然不是很大的数字但是证明了cache确实起作用了。如果在10分钟的缓存有效期内有50人访问(每人切换1次场景),那我就节约了总计1s的访问延时和49次数据库访问。
我们所节约出的每一秒都是为了给用户体验加码!
★终于开始写宠物的核心逻辑了,宠物系统是我们项目最后一个大的系统。今天一开始有点摸不着头脑,经过一天的思考,现在已经稍微清晰了一点。明天准备先把宠物跟随实现了,幸亏之前人物走动的核心逻辑我已经写过了,把那个模型直接拿过来就可以模拟真实情况了,哈哈。
昨天睡觉前看德鲁克先生的管理书籍, 读的还是那个章节“企业必须以客户为出发点及唯一出发点”,德鲁克先生总是能用最浅显的话讲出最重要的道理,不深奥、不做作、不故弄玄虚,所以我喜欢他。
落实到Qoolu,落实到海底世界,就是要完全地、彻底地做好用户体验工作,满足用户的需求。对于小朋友而言,他们不会去管我们的产品是用什么技术实现的,后台用什么,开发了什么系统等等,他们Care的是不是和新奇,是不是很容易玩,是不是很好玩,是不是cool,是不是ing……
我一直感觉到自己对客户体验研究不够,还没有深刻地理解一个小朋友,我们应该满足他的什么动机及什么需求,如何让我们产品最人性化的去实现这个目的,这个方面还要做的工作有许多。写这个帖子已经晚上10点半,一想到史玉柱这个时候还在辛勤地玩网络游戏,与玩家聊天,辛勤地在论坛看玩家的帖子,并责令开发团队以玩家要求改正,就流汗不止…..这么深入研究用户需求的人,怎能不成功呢?
今天和摩尔庄园的Founder聊天,很有收获,他们提到了一个观点,就是现在互联网产品都主要是靠口碑传播的,这就话出自把QQ宠物做起来的专业人士之口,令我尊敬,在不缺流量的腾讯公司,还有人如此尊重客户。摩尔庄园的Founder们是我见到的互联网行业非常不错的创业队伍,我为这样的团队能和我们一同开拓青少年市场而感到高兴。
……多化时间研究用户,多化时间做好产品。
凌晨3点40分。
发现自己无论如何都睡不着了。虽然脑子里很清醒的明白,一直无谓的去臆想当丢丢长大后我可以给她些什么;或是让她为我自豪些什么等等,在现在看来是多么的可笑。但我仍旧会在唯一可以休息的时间里那么不由自主的去联想。
从根本而言,创业者的首要任务就是找投资者募集资金,但在我们寻求外部资金的时候就意味着不得不向别人汇报。于是别人对我们的期望值就迅速而急迫的提升——有对竞争对手的不确定,更多的,则是对未来的恐惧。
唯一可以肯定的是,我们已经在道路上开始行走。
我们的手头上有多少钱,就开始做起多少事。对于我来说,我一直认为的是,当所有能够利用的外部资源都已经短缺甚至断绝的时候,是最能激发一个人想象力与行动力的时候。
但我不得不承认,仅仅只有一个,或几个人是如此行为,是根本不够的。
我们之所以能够称之为团队,不仅仅是因为我们有着暂时的相同高度的目标,更重要的是所有人彼此承认,彼此携手。在一个人无法逾越的位置,能够同时出现两个、三个,甚至更多的人手。
在对这些事件的品尝中,我更设身处地的领会到了执行力的概念。执行力对任何个人来说都是“我可以把这件事做好”,而对于团队来讲,则是“我们正在做一件好的事情。”
当把执行力团队化的时候,其对项目本身的效率和质量就远远高于个人拥有执行力所能创造的几何级价值。所以我认为,之前的我是失败的。不仅仅是包括在这十个月之内,而是十年甚至更长的一段时间。
虽然很长时间没有写一些我喜欢的东西,但是这些日子以来,我已经学到了很多,可惜的是目前我还没有办法归纳出什么看起来很“成功人士”的文字。
下面是我刚看到的,一段我觉得很有价值的说话。
*********************************
做一个执行者
当我听说有人对自己的点子很具保护性时觉得很可笑。(那些在告诉我一些简单的概念之前希望我签定保密协定的人。)对我而言,如果不去执行的话点子是一无用处的。它们只是倍数。执行才是价值万金的。
理由:
糟糕的点子 = -1
脆弱的点子 = 1
普通的点子 = 5
好点子 = 10
伟大的点子 = 15
超闪亮的点子 = 20
没有执行 = $1
柔弱的执行 = $1000
普通的执行 = $10,000
好的执行 = $100,000
伟大的执行 = $1,000,000
超强的执行 = $10,000,000
如果要成就一番事业,你必须将二者相乘。
最闪亮的点子,如果没有执行,最多值$20。如果它乘以优秀的执行,那么就值$20,000,000。那就是为什么我不爱听他人的点子。只有当看到它被确实执行下去了我才有兴趣。
—Derek Sivers, 总裁,程序员, CD Baby公司 and HostBaby公司
*********************************
看过之后,我想,我们的团队,现在价值多少呢?或者是,在陆续的有同伴看过此文之后,你们认为我们的价值又有多少呢?
至少有一点是肯定的,有些人会看或是想到看,而有些人则不会。
我想,这大概就是让团队价值×零或×10的关键。
这是我历时10多小时写的第一个as3程序
我叫它 7mini
是个基本的mp3播放器,功能很简陋。
A.音乐的回放
B.波形显示
对于这个东东,我还有很多想做的,不过限于技术问题我得慢慢来。
http://www.humen1.com/2008/05/as3-7mini.html
之前的小黑屋效率问题一直困扰着我们,昨天一个朋友给出了他的解决方案,perfect :)
之前采用的是动态遮罩加FLASH自带滤镜实现模糊遮罩,但发现CPU一直占用在50%以上,很是头疼……即使背景是位图也无
济于事……现在的方案改为背景位图+PNG图片半透明模糊遮罩,效率一下提高了N多,CPU只占用了10%以下。
★现在系统架构和AS架构都基本定型,应该没什么大问题,技术难点也早就都突破了。目前摆在面前最严重的事实是,AS程序量太大,程序员却只有我和hellay两个人,就算我们能一天高效写8个小时代码,时间还是不够用!而一般的程序员,一天能高效写代码的时间,估计也就3、4个小时吧,其它时间只能写一些很普通甚至是垃圾的代码了!万一写错了,或者写的不合理,回头可能还要全部改掉,更浪费时间,所以程序肯定不是拼时间就能拼出来的!有实际开发经验的人应该都知道,一套大型程序从功能实现到达到商业运营水准,中间要做的事情十分繁多而且琐碎!大公司可能会把这些琐碎的事情分散到很多“代码工人”去做,但我们现在不得不全部自己做,甚至包括UI界面的调整,我都要自己调!因为我去教美术调的时间可能比我自己做还长!而且很多都是一次性的,没什么规律性,这就更没必要教他们了!——hellay来之前,这些要全部我一个人完成,现在想想太假了!呵呵:)
★现在离预定开发结束时间只有两个月了,进度要快一些了!还是先实现功能,DEBUG的时候,再完善吧!
★自从上次把我写的UI和组件加到halley写的框架里出现一些合作上的麻烦之后,我们两个意识到这个问题的严重性,于是专门花了两天把我们的合作模式重新制定了一下。
★以前都是我这边写的UI自己独立在FLASH9环境下发布测试,自己写自己的测试代码,等到准备加到halley的框架里时,由于我们和他的FLEX配置不一样,我每次都要先把一些项目和代码发布为SWC,然后再手动拖到指定的文件夹,而且有时候命名空间也不得不修改,搞的我头都大了。再加上我是在我自己的FLASH编译环境下测试,而他都是在FLEX编译环境下测试,加上我们的测试层次也不一样,我是直接在UI的层次上测试,而他则是把我的UI加到框架里测试,这样就出现在我这边正常,加入到他的框架里时,却出现各种奇怪问题,这时候又要重新在我这边调整,重新发布SWC和SWF,重新把SWC和SWF拖到指定的共享文件夹,虽然有个CVS帮忙共享和协作,但依旧麻烦的要死!
★最后觉得这样实在不行,halley不得不把外层加载和测试框架先写了出来,而我则一狠心把自己的项目结构改的和halley完全一样!这样做有两个最大的好处:1,我们再也不需要把自己的文件拖来拖去,只需要发布共享就可以了;2,我可以直接在框架下测试,测试到自己觉得没问题,再提交到CVS上,而他那边直接从CVS上下载并加入到框架里就OK了!这样我们的合作模式就得到了明确而且清晰的确定,以后的合作效率也会大大提高!
★其实如果我们不考虑代码重复编译的话,完全没必要搞的这么复杂,重复编译的代码最多可能也就那么几十K,美术上稍微节省一点可能就省出来了,但halley喜欢追求代码上的精简,而我也支持他这么做,这样我们可能就为美术节省出那么几十K的体积好让他们发挥设计才能了:)
★经过近一个星期的研究,最终决定对直接拖拽到舞台上的UI使用代理类,使用代理的几个好处是:
1,可以动态关联类,也就是说,类本身只是功能类,而作为UI的MC是作为参数传递给这个功能类的。
2,使用代理类可以很好的解决某些直接拖拽出来的嵌套可视元素无法正常操作的情况,比如无法对一个MC里的嵌套文本框赋值等等。
3,可以很好的解决“自动声明舞台实例”的问题,因为代理类就要求必须对MC内的所有元素重新声明,降低美术和程序命名的偶合性,一举两得!
★虽然一个星期时间有点长,不过还是值得的,因为一旦一个正确的模式得到确定,实际开发就只是量的问题了,相信组件和UI部分我会做的越来越得心应手的。
来自实习生Happy:
在公司一眨眼两周过去了,在这短短的两周里让我学到了在学校所不能学到的很多东西。
在公司并不是在学校在这里让我深深的体会到在公司的公司的制度,更重要的是服从,比如早九晚五的作息时间,刚开始的几天感觉并不是很好,但是我现在已经完全适应了公司的生活,在这里公司也给了我充足的时间让我学习,工作之余的时间里我也可以学我自己想学的东西,感觉很好。
虽然每天的工作就是那几样,但从中我也学到了很多的东西,比如与人的沟通等。这里的工作气氛也是那么的活跃,工作的时候都做着各自的工作,你做你的我做我的,各负其责这样的气氛能让我学到更多的东西。
×××××××××××××××××××××××××××××××
来自实习生Aimi:
一个星期过去了,在这里我学到了很多东西,虽然刚刚上手还不是很熟悉,但是我会认真学习,把工作做到更好。
比如发贴,第一次的时候是把所有的贴发到一个论坛版块里,因为我没有注意观察,造成这种错误,所以在以后做什么事情都要先注意观察一番。
还有打电话,因为是第一次给客户打电话,经验不足,所以要先把电话的流程记录下来,这样就不会出现,忘说,漏说,或说错的现象,所以做任何事情都要先好事先准备,比如要说什么,做什么,要先列个表格出来,以确保这件事情做到最好做到位。
公司的工作气氛比较轻松的,在心理上就不会有很大的压力,总之我很喜欢这里,希望我可以通过考验在这里工作。
×××××××××××××××××××××××××××××××
虽然是如此雷同的开头,但似乎实习生们都逐渐开始学到了各自想要的不同的东西。新人们一般对待工作都有着火一般的热情——在熊熊燃烧一段,或一长段日子后,自然会减弱或熄灭,倘若可以持之以恒,那才是我们期望得到的同伴。
从个人的角度来说,我是不太愿意同实习生打交道的,原因个中自知。不过既然暂时接手了这个工作,那就要尽力做好——从我第一天工作开始,我就是这样给自己定下的底线,职业道德的基础。
与之前的几个实习生相比,现在的两个是好多了,不过不知道这激情的火焰会燃烧多久。对于我来说,能够通过我们这里严酷工作的压力存活下来的,想必也不会很弱。只是希望在此之前,两位能够像海绵一样把我教给他们的东西吸收消化起来,因为现在肯学习的年轻人,也已经不多了罢。
★AS3相对与AS2一个让人兴奋的功能就是能读二进制流,今天做loading组件的时候我就利用了这一特性。
★本来我用的是最普通的Loader直接加载文件,但记得雨同学前段时间让我看过一篇文章,是有关Loader和URLLoader对比的。文章显示,用URLLoader加载二进制流,再用Loader读取二进制数据的做法能比直接load文件大大节省网速和内存。另外URLLoader还有一个优势就是,它的close方法可以直接终止流的加载,而Loader却不能。所以今天我就尝试了一下URLLoader,发现了一些问题。最让我头痛的莫过于URLLoader竟然无法像Loader一样用FLASH自带的模拟下载功能,害我还以为URLLoader无法获得加载进度,一度几乎放弃URLLoader。最后还是在两个AS高手群里得到了一些朋友的启示,最终发现了问题所在。
★最后还有一点不解的是:既然ProgressEvent事件对象本身就能直接获得已加载字节数(bytesLoaded)和总字节数(bytesTotal),那为什么URLLoader自己又多出两个属性bytesLoaded和bytesTotal,而且我的测试结果显示两种做法获得的数据都一样?URLLoader自己的两个属性是不是有点多余了?还是另有其他更高级的用途?