- 博客(97)
- 资源 (19)
- 收藏
- 关注
原创 将Python脚本打包成可执行文件
Python是一个脚本语言,被解释器解释执行。它的发布方式:.py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的).pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安
2015-08-24 21:40:28
2763
原创 编码之道:取个好名字很重要
代码就是程序员的孩子,给“孩子”取个好听的名字很重要!我们在项目开发中,接触到的变量、函数、类多数都是项目自己定义的,往往都是为了解决一些特定的领域的问题,引入了各种各样的概念,代码里面的名字就对应着问题领域或方案领域的这些概念,所以,对于一个命名良好,代码规范,设计简洁的系统,要想非常快的理解一个系统,最直接的方式就是RTFC(Read The Fucking Code)。对于一个不断演进的系统
2015-03-27 13:39:26
2074
原创 编码之道:是谁制造了混乱
项目随着时间的推移,开发人员换过了一波又一波,项目的代码被一些代码风格“狂野”的新同学们“强奸”了一遍又一遍。我们游戏服务器代码从09年时的50W行激增到现在的200W行,不得不赞叹:“还真是能写啊!”。代码混乱的程度,简直不忍直视:风格迥异的命名方式、得以米计算长度的函数、各种MagicNumber,让人摸不着头脑、缺少封装导致的大量重复代码、各种奇葩的缩进方式、拥挤在一堆,就不知道敲个空格或空行
2015-03-27 13:36:56
1242
原创 cocos2d-iphone源码分析(2):Director
简介CCDirector负责创建和处理主窗口,和管理场景的的执行。同时负责:初始化OpenGL ES的context设置OpenGL像素格式(默认是RGB565)设置OpenGL缓冲深度(默认是0-bit)设置投影模式(默认是3D)CCDirector一般作为单件使用,标准用法是:[[CCDirector sharedDirector] methodName]。IOS下[C
2013-02-01 17:10:24
1471
原创 cocos2d-iphone源码分析(1):场景
cocos2d-iphone是一个基于Objective-C的2D游戏引擎。还有一个跨平台版的叫cocos2d-x,这个现在貌似挺火的。用cocos2d开发应用之前,必须要先了解下面几个概念:Scenes:场景Director:导向器Layers:层Sprites:精灵1.场景的概念场景(CCScene对象)在app的工作流中,是一个比较独立的元素。你也可以把他称作“屏
2013-02-01 17:08:37
1477
原创 每周一荐:远程控制软件TeamViewer
TeamViewer是一款通过Internet进行远程访问和远程支持的软件。也可以用于远程会议,同时还可以进行演示,互相交换文件。如果用于个人用途,是免费的。商业用途需要购买序列号。支持多个平台:windows、mac、iphone、ipad及其它。只要你在连接在Internet上的电脑上启动课Teamviewer,就可以在任何地方访问用各种操作系统来远程访问和控制该电脑。甚至拿起你的iphone
2013-02-01 17:05:38
2079
原创 每周一荐:iOS应用iThoughts
作 者:david++发布时间:2012/12/27 15:00思维导图软件之前也推荐过,但都是基于PC的应用(Windows、Mac、Linux版),如FreeMind、Docear、XMind都是很不错的。最近发现一个不错的iOS应用iThoughts,它有iPhone和iPad版。可以导入FreeMind和XMind编辑的思维导图文件。可以导出为多种格式,如:pdf、p
2012-12-27 15:10:23
2692
原创 每周一荐:时间日志应用aTimeLogger2
之前在李笑来《与时间做朋友》那本书里面知道了:要养成记录时间日志的习惯。通过过往的时间日志,发现自己的高效时间和工作、学习重心,同时也可以明确自己的时间流向,最重要的是为确定下一步行动做计划和决策提供了参考。故坚持使用Google Calendar做时间日志也有大半年时间了,做完一件事情的时候或者在每天工作结束的时候,就会在Calendar上记录在某一个时间段内做了些什么事情。Calend
2012-12-20 18:37:21
2001
原创 每周一荐:差异利器Beyond Compare
作 者:david++发布时间:2012/11/01 14:51前一段时间,介绍过用Total Commander来完成文件夹同步的时候,一位朋友留言推荐了Beyond Compare——一个强大的超越了文件差异比较的工具。Beyond Compare对于提升工作效率,绝对是一个利器。单独的文件差异工具不胜枚举,如:WinMerge、WinDiff、Diffuse等,还有Unix
2012-11-01 14:52:25
3625
原创 关于程序员面试的一点想法
作 者:david++发布时间:2012/10/12 18:58从去年到现在,算算也面试过不少人了。对于如何通过面试找到合适的人才这个问题,也想了很多。面试往往都是,聊一聊技术和工作经验,调侃一下游戏程序员“悲惨的命运”,感觉技术不错,有激情,扛得住“无底线”的加班,基本上都OK。下周要去西安进行校招面试,抽空整理了一下思路。关于如何有效地进行面试,有了点想法,希望大家多多提建议。
2012-10-12 20:13:32
3256
原创 每周一荐:支持latex的思维导图软件docear
作 者:david++发布时间:2012/08/23 21:50 提起思维导图软件,能想到很多,开源的、商业的、简洁的、复杂的,不胜枚举!如:Xmind、MindManager、FreeMind、inspiration、Axon等。想要知道更多,请google之。去年看了托尼·巴赞关于思维导图的几本书之后,无论做笔记还是思考一些问题的时候,都会用笔随便画一画,思路理清楚了之后
2012-08-23 21:53:01
10539
原创 每周一荐:Objective-C的开源开发环境GNUstep
作 者:david++发布时间:2012/08/16 22:45Objective-C近几年变得越来流行,TIOBE世界编程语言排行榜中Objective-C的排名不断上升,同时也反应出Apple平台的开发受到越来越多的人关注。Objective-C语言作为Apple世界的官方语言,无论是MAC开发还是iOS开发,甚至系统层的编写它都能够胜任。融合了C和Smalltalk的面
2012-08-16 22:44:57
1984
原创 每周一荐:Python Web开发框架Django
作 者:david++发布时间:2012/08/09 22:40花了两周时间,利用工作间隙时间,开发了一个基于Django的项目任务管理Web应用。项目计划的实时动态,可以方便地被项目成员查看(^_^又重复发明轮子了)。从前台到后台,好好折腾了一把,用到:HTML、CSS、JavaScript、Apache、Python、mod_wsgi、Django。好久不用CSS和JavaS
2012-08-09 22:39:40
3285
原创 每周一荐:TotalCommand的文件夹同步功能
作 者:david++发布时间:2012/07/05 21:30有空的时候就喜欢拍一些照片,虽然技术不怎么样,但往往辛苦得来的照片,不忍心丢失,所以会隔一段时间将照片备份到NAS(网络存储)。电脑上的照片,闲暇的候翻看的时候,也可能会修改一些照片(PS、裁剪等)。备份的时候,直接把照片目录(Photos)直接复制过去,久而久之,照片的数量越来越多,甚至一个电脑的硬盘都装不下了,复制的
2012-07-05 21:34:10
3463
1
原创 每周一荐:学习ACE一定要看的书
作 者:david++发布时间:2012/06/08 09:02近两个月都在学习ACE,一个超级强大,也超级复杂的网络框架库。对ACE的大名早有听说,同时也听说过它的复杂性,所以一直不敢去碰它。ACE对程序员的要求是比较高的了,需要对C++、设计模式、POSA、网络、并发等有一定的了解后,才能去碰它。不然真的是一头扎进茫茫大海,越看越复杂,直到消磨完所有对ACE的热情。经
2012-06-08 09:04:33
3846
原创 每周一荐:Google的序列化框架Protobuf
作 者:david++发布时间:2012/05/31 21:00转载地址:http://game-lab.org/?p=3131. 简介Protocol Buffers是Google的一个序列化框架,可以非常方便地把程序中用到的结构化数据转换成二进制字节块,并且它对于结构化数据的编码也是比较特殊的,一个字节最高位(MSB)代表下一个字节是否和当前这个字节构成一个数据。因此
2012-05-31 21:17:16
1938
原创 每周一荐:用gnuplot绘制函数曲线
喜欢数学的人,都说数学公式是世界上最简洁而深刻的诗,数学曲线是世界上最美的图画。本周给大家推荐一个开源的函数曲线绘制工具:gnuplot。别小看这个工具,年龄和我一般大,gnuplot 是在 1986 年由 Colin Kelley 和 Thomas Williams 最初开发的。许多参与者都在为不同的“终端”创建变种方面做出了贡献。在 1989 和 1990 年,这些变种被合并到 gnuplot
2012-05-17 21:31:18
2168
原创 每周一荐:代码编辑器sublime
无意中发现了一个外观酷酷的代码编辑器:sublime,起初还以为就是一“花瓶”。网上随便搜了下,sublime原来还是比较强力的(据说想要干掉Mac下面的TextMate)。MacOS、Linux、Windows平台下都可以使用,支持各种插件。做为一个文本编辑软件,sublime给我的感觉是,它有许多非常有创意的操作,并且感觉很流畅,用着很舒服,界面也很简洁、美观。如:快捷的命令面板(Ctrl+S
2012-05-10 21:17:02
1895
原创 临时变量管理器
问题有些变量,它们在特定的情况下才有意义。有些功能需要多步才能完成,结果就需要一些中间变量保存过程的状态,过程结束后变量就失去存在的价值。缺点:浪费存储空间,虽然内存很廉价,但还是能省则省中间变量变多的时候,所在类越来越大,越来越难以理解解决方案封装一个中间变量管理器:支持创建、删除、取值、设值这几个操作就行。临时变量定义:class
2012-05-08 20:46:50
1490
原创 每周一荐:文本处理工具AWK
上周给大家推荐了流编辑器sed,用sed其实已经可以干很多事情了。批量替换文件,批量查找指定的模式,支持单行和多行模式。但通过”sed单行脚本快速参考“可以看出,sed写出来的脚本可读性很差,有些甚至非常难以理解,特别是对于那些对sed的用法不是很熟悉的人来说,看起来简直像一堆毫无意义的字符乱码。脚本写出来不是给自己看的,也要考虑到后续的维护。有没有更好的方式来做同样的事情,甚至比sed能
2012-04-27 12:25:23
1903
原创 解析XML文件
动机网游服务器端开发过程中,很多控制游戏的参数都不应该直接硬编码的。需要各种各样的配置和脚本文件,好处:可以由策划或数值去随意修改,而不用动程序代码配置可以动态加载,可以动态改变服务器运行中的参数,对已经发布的功能进行调整一般,可采用:ini配置,一般用于window下的软件,游戏客户端有时会用到。比较简单,功能有限。Excel表格,数值策划特别喜欢用这个,可以做很多运
2012-04-24 21:25:42
2344
原创 代码的坏味道
代码坏味道:是指在代码之中潜在问题的警示信号。并非所有的坏味道所指示的确实是问题,但是对于大多数坏味道,均很有必要加以查看,并作出相应的修改。1. 重复的代码如果你在一个以上的地点看到相同的程序结构,那么当可肯定:设法将它们合而为一,程序会变得更好。同一个class内的两个函数中含有重复的代码段两个兄弟class的成员函数中含有重复的代码段两个毫不相关的cl
2012-04-24 01:22:20
2535
3
原创 每周一荐:流编辑器sed
做网络游戏服务器端,最烦人的就是查后台日志。外面的玩家报BUG或者其他异常的时候,客服搞不定的时候,就需要服务器的程序去查日志。分析日志需要一些比较好的文本分析工具,grep和sed都是不错的文本分析工具,还有awk,再过复杂的日志分析估计就要写脚本了,推荐使用Python。(其实我一直在纳闷,数据分析这些事情,怎么老是需要服务器程序去查,有专门的数据中心、运维和客服部门,人家才是专业的,
2012-04-20 23:49:22
1901
原创 每周一荐:《生命之树》、《水上音乐》
电影:《生命之树》《生命之树》由泰伦斯·马力克导演。故事开始于一个1950年代,生活在美国中西部的家庭的杰克在童年时收到双亲两种矛盾的教育。成年后的杰克渐渐迷失了自己,发现他在现代社会失去了灵魂,他寻觅生命的原初以及意义的答案,拷问信仰的存在,最终明白了生命的真谛。故事讲述生长在美国中西部的11岁少年杰克的成长变迁。他的家庭由父母和三兄弟组成。在一个孩子眼中,起初一切都
2012-04-13 07:55:53
1350
原创 POSA2:Wrapper Facade模式
意图用更加简洁、健壮、可移植、可维护和内聚的面向对象接口,封装已存在的非面向对象API的函数和相关数据。背景使用已存在的非面向对象的API提供的服务或机制,开发可维护和进化的应用。问题简洁的代码比复杂的代码更加健壮,因为它易于理解和维护可移植的软件可以容易的在不同的操作系统、编译器和硬件平台之间移植提高软件可维护性,会降低开发生命周期的开销
2012-04-11 09:56:17
1720
原创 MediaWiki编辑工具
vim+wikimedia.vim简介:使用vim的wikimedia.vim插件,可以高亮wiki语法关键字,自动补齐等功能。对于喜欢用vim编辑器的人来说,用此方式编辑wiki再好不过了。可以自动识别的文件类型为*.wiki,或者set filetype=mediawiki。安装:下载VIM插件:http://www.vim.org/scripts/scri
2012-04-07 03:29:52
3049
原创 每周一荐:分布式计算的模式语言
书籍:《面向模式的软件架构IV:分布式计算的模式语言》简介迄今为止,人们提出的软件开发模式有不少是关于分布式计算的,但人们始终无法以完整的视角了解分布式计算中各种模式是如何协同工作、取长补短的。构建复杂的分布式系统似乎成为了永远也无法精通的一门手艺。本书的出版改变了这一切。本书是经典的POSA系列的第4卷,介绍了一种模式设计语言,将分布式系统开发中的114个模式联系
2012-04-06 08:25:14
1643
原创 每周一荐:重构三板斧
来自:http://game-lab.org/?p=207书籍:《重构:改善既有代码的设计》简介Martin Fowler和《重构:改善既有代码的设计》(中文版)另几位作者清楚揭示了重构过程,他们为面向对象软件开发所做的贡献,难以衡量。《重构:改善既有代码的设计》(中文版)解释重构的原理(principles)和最佳实践方式(best practices),
2012-03-30 08:05:14
1357
原创 每周一荐:设计模式
来自:http://game-lab.org/?p=200书籍:《设计模式——改善既有代码的设计》【简介】这本书结合设计实作例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。书中分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下特别有用。【笔记】23个设计最基础的设
2012-03-30 08:03:48
2730
原创 每周一荐:程序设计语言原理、英国组曲
来自:http://game-lab.org/?p=181书籍:《程序设计语言原理》豆瓣:http://book.douban.com/subject/3119946/【简介】本书从为什么学习程序设计语言入手,深入细致地讲解了命令式语言的主要结构及其设计与实现,内容涉及变量、数据类型、表达式和赋值语句、控制语句、子程序、数据抽象机制、支持面向对象程序设计(继
2012-03-30 08:02:04
1132
原创 版本制作自动化方案
(文章来源于GAME-LAB 欢迎大家来GAME-LAB!地址:http://game-lab.org/?p=96)最近工作比较忙,游戏功能相关的代码就敲个不停,根本无暇去思考一些东西。趁着周末,整理下上周关于版本制作流程的优化的一些想法,有时间就立马去实现,希望能提
2011-08-21 13:20:13
1051
原创 关于代码学习的一些看法
原文地址:http://game-lab.org/?p=83代码的三中类型Product:产品代码,一个可用的产品代码。比如一些开源软件,还有当前工作整天面对的代码。lib:库代码,对某一种功能封装的模块,一个工具库。framework:框架代码,某种业务常用逻辑的封装,就形成改
2011-07-08 22:08:19
1128
1
原创 每周一荐: Google Dictionary,The Polar Express
Google Dictionary,The Polar Express《极地快车》及其主题曲《When Chrismas Come to Town》
2010-12-24 22:28:00
1047
原创 每周一荐:foobar2000, 奇幻人生, 一个Flash小游戏
每周一荐:音乐播放器foobar2000, 电影《奇幻人生》, 一个Flash小游戏
2010-12-12 01:44:00
1133
原创 linux命令-top
top命令和ps命令的基本作用是相同的,显示系统当前的进程和其它状况;但是top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确的说,top命令提供 了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用。内存使用和执行时间对任务进行排序;而且该命令的 很多特性都可以通过交互式命令或者在个人定制文件中进行设定。在后面的介绍中将把命令参数和交互命令分开讲述
2010-09-17 01:34:00
629
转载 linux命令 - time
【命令】time — 执行命令并计时 【格式】time [-p] command [arguments...] 【说明】 执行命令行"command [arguments...]",命令行执行结束时在标准输出中打印执行该命令行的时间统计结果,其统计结果包含以下数据: 1)实际时间(real time): 从command命令行开始执行到运行终止的消逝时间; 2)用户CPU时间(
2009-11-12 20:16:00
612
原创 Prototype模式去掉Clone方法
Prototype模式去掉Clone方法 意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 结构图: Prototype的主要缺陷是每一个Prototype的子类都必须实现Clone操作,这很烦。一般都这样实现: Prototype* Co
2009-10-12 22:02:00
665
学习OS用到的BIOS知识及其中断详细文档
2008-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人