In c/c++ server design, event call always the painful part. How to register callback functions:
Use global or static method?
Use event class and vritual method call?
How to handle the memory between caller and callee?
How to pass context, use pointer? use handle?
So many questions need to be taken care, but, maybe under the script world, life will [...]
前段时间转载过程序员的温情管理文化在 这篇文章中提出:
程序员是这样 一群家伙,他们可以把1000行代码写成10行,当然也可以把10行代码写成1000行。他们可以让这1000行代码比那10行容易看懂效率更高,也可以 让那10行比这1000行容易看懂效率更高。
我非常同意这样的看法,一个程序员如果在脑袋糊涂,精神萎靡的情况下写出代码 ,往往是逻辑不清楚,只是想把事情糊弄过去,久而久之,众多的小问题就积累起来,让整个项目陷入泥潭,并进入不得不重构的境地。
一个程序员,如果一天可以集中精力,进行5个小时以上的高效工作,并在这段时间内保持思路清楚,编写出高质量的代码,我觉得他肯定已经是顶级的程序员了,精力过人并且技术扎实。对于我们这样的正常人来说,一天可以维持三到四小时这样的高效工作就已经是很了不起的事情了。对于这段高效高质时间,我们应该加以充分的利用。对于效率偏低的时间,我们应该换一个策略来进行工作,这就是我想要说的,对于程序员的工作安排,应该有Hard word和Soft work的区分。
Hard work是指,列在工作项目上的,必须要做完的东西。这些工作项目都是列在整个开发项目的日程表上,不可或缺的环节。
Soft work是指,并没有列在整个项目的开发日程表上,但是对于技术储备,思路拓展都很有帮助的任务。进行Soft work应该可以让程序员enjoy其中,毕竟如果你对学习新技术没有兴趣,估计程序员的职业也就不适合你了。
对于项目的管理人员,挑战的任务就是如何分派两种任务,如何引导程序员进行Soft work,并控制这两种工作所需消耗的时间,如何帮助程序员了解并提高自己的高效工作时间,并可以让他们在早上打开电脑之后就能很明确的知道:今天的工作是什么,哪些最重要,哪些优先级别最高。
转载自 http://www.cppblog.com/Fox/archive/2007/12/16/38600.html
这篇文章转载自Fox的研究论文的开题报告,写的比较细致,和我目前所做得工作也比较相似。不过行文的水平比我高,把很多我说不明白的事情都表达了出来。很多具体的问题没还有深入,期待后续的文章
Author: Fox(yulefox@126.com)
一个MMORPG(Massively Multiplayer Online Role Playing Game)的架构包含客户端和服务器两部分。客户端主要涉及计算机图形学、物理学、多媒体技术等,服务器主要涉及网络通信技术、数据库技术,而人工智能、操作系统等计算机基础学科知识的应用体现在MMORPG开发过程中的方方面面。
有些时候,UI的一个设计准则就是将程序内部的设计结构暴露出来给用户,比如Mac系统上很流行的一个tap-to-run的程序,Quicksilver,一个基于键盘的程序启动软件,它的基本界面如下:
如上所见,左边是Quicksilver根据我让键入的字符在系统中寻找到的对象,右边就是针对这个对象所做的动作,用户可以使用默认动作或者是使用其他的动作。例如针对一个文本文件就有预览,打开等动作。
没有看过Quicksilver的代码,不过相信要我做一个这样的类似程序,我也一定会做这样的内部设计:
对象 — 动作
将对象和动作分别封装成两种最基础的类型,让他们之间有一定的属性可以互相交互从而形成关联。对于程序设计者来说,这个可能是最基础的想法。Quicksilver也忠实的将这个想法反应到UI上。程序设计师对于软件的理解肯定要比一般的使用者深入,如果我们能将一个好的设计暴露到UI上,往往可以给普通用户带来更好的体验。