盗賊の極意

Feed Rss

在家断网1个多月了,挣扎了几次,现在也渐渐平静下来了。

虽然浪费在网上的时间现在都用到了睡眠上,学习进度还是没有进展,但每天的精神明显好多了,在公司亢奋工作到晚上8点左右都不会疲倦。

嗯,但是学习没有进展这个有点苦恼啊。这样下去不就和高中时代的周末一样了么——虽然没有电脑没有网没有手机没电视,但也没有做事。

这个月重构做得太过火,导致后期加班严重,另外加班其实也不太出活,人少了就开始聊天了。每天到家11、2点,磨蹭磨蹭一两点钟睡觉,睡到9点多也没睡满8小时嘛。

人家柳比歇夫一天睡10小时还是能保持超高的效率,我也觉得问题不在睡眠时间过长上面。

慢慢想吧,想到想通为止,想到能说服自己行动为止。

最近没网,脑子闲下来的时候多了,感觉在家的时候也没那么忙,生活开始变得安静起来了(虽然我在家时都是放音乐的= =)。

网费照付是有点心疼啊。初步预计断网状态会持续到12月初,还有一个多月。为了缓解心疼的症状,我准备把NAS也运到亲戚家里去,和我的WiMax团聚。然后把那个3G卡退了?如果感觉自制力够强了,也可以拿回来用,毕竟不能给家人朋友打skype是有点不舒服的。

NAS和WiMax团聚意味着我可以远程控制NAS重新下载东西和传文件什么的,还有私有云。嗯,要是有时间折腾的话也想设一个git什么的,但是鉴于我的NAS有过1500G硬盘资料全毁的恶劣事迹,而我现在手头又没有双仓NAS可以组raid,代码仓库什么的还是算了吧。我生产的数据和我下载的数据的重要度可是完全不同的,丢了我承受不了。

其实真想玩linux的话,本地可以自己装,远程可以用D-Horse和hacklu的服务器甚至VPS,自己折腾NAS实在是没什么意义。但是,其实,咳咳,我有一个梦想。

I have a DREAM.

事情是这样的。我家长辈的电子设备以前都是由我维护的,现在我不在身边,跟他们的联系变得很不方便。我希望给每家配一个NAS,这样有什么想给他们推荐的电影电视剧什么的不用每次都远程协助,可以直接下进他们的硬盘里了。还有一些家族照片,可以用NAS在关机后慢慢同步,这样再大的数据也可以同步到各家的电脑里。关键是这些都可以由我代劳,这个非常重要。对长辈来说,把照片从SD卡移动到电脑里都是一个没有远程协助就难以完成的艰巨的挑战。我认为,与其现在要长辈们去学习电脑的用法,我宁可全部为他们代劳,他们只要会看就好,可以享受到科技带来的好处就可以了。本来回国那一次我还想教会他们用微信,为此还录了高清操作讲解视频,但是姥姥的听力已经下降,听不清我视频里的话了,我走了以后他们就再没用过微信(我是不是应该去学一下后期制作,给视频再配个字幕??)。

总之,用NAS抹去各家电脑的操作难度就是我的梦想。不过这需要一些自动化的辅助,还有姥爷家的网通网络在NAT后面,要连上NAT后面的NAS,需要一些穿透内网的办法。至少要让我能ssh登陆内网的NAS,最好是能访问NAS的http管理页面。这个我在我订阅的一个叫做“依云”的博客上见到过,当时没仔细看,等有机会尝试的时候试试看,好象是写个脚本就可以了。


午休的日志时间结束,回去上工咯~

月初夹带私货,往公司代码库里写了一堆UI基础类的恶果开始显现出来了——我的开发进度落后了。

不过还好,明天的开发截止日期之前可以完成。开发截至后还有一周的缓冲时间修改bug,嗯嗯,这个月就这样吧(汗)。

我主要想说的是,这个月我的工作量(被我自己)变大了,加班到深夜的次数也增多了,也大概搞清楚了每个人都什么时候回家的了。

是的,以前我是尽量不加班的,19点下班我就象征性加1小时左右到20点就走人,如果能走的话。所以我都不太清楚大家每天加班到什么时候。

这个月看来,除了大家都加班到很晚以外,我也知道了坐我旁边一个年轻人每月的加班时间总量之大——每天22点以前基本不会离开,周末出勤很频繁而且周末也是干到22点多才走。看得我那个惭愧啊……

但是,说实话,他给我的印象并不是很强(失礼了…)。

在我接受过场动画以前,他负责过这个部分。

我“把excel改造成脚本语言”的过度设计固然不好,但确实让过场动画的编辑更加灵活了。

他负责时是使用excel数据表格把每一帧的各种数值写入表格内直接取用,这样要编辑和修改起来代价太大了,而且很难直观地修改一些连续变化的数值,角度之类。

加上每一个过场动画都要重新编写专门的一组函数和变量,所有的过场动画用函数和变量都堆积在一个巨大的gamemain类里(gamemain类:高峰期超过1.7w行,管理着进入游戏战斗画面后所有的switch case分支和各种状态的巨兽类,持有数百个变量,超恐怖…)。

这种场合,直觉上应该是把过场动画的处理独立出去,尽量不要再向巨兽体内堆积代码了才对嘛。

……好吧,程序员普遍会高估自己低估别人,我自己也觉得这么写不太好,不是很对头……

我想说的是,这位同学投入了远超别人的时间在工作上,工作也确实都能按时完成,但我还是觉得这样不太对,对自己手艺的提高效率不特别高。

大家都很努力,但每个人的水平还是有差距,而且这种差距肯定是在今后越来越大的。

希望我自己也能注意,拼工作量之于,也要想一想什么样的工作方法可以拉开和过去的自己的差距。

7个月,我留在原地的时间,有点久了呢。

进公司以前我也算是也过一点程序,也跟人合作写过游戏,但都是我一个人负责全部程序部分,程序的读者和作者都只有我一个人。

我当然知道代码是写给别人看的,但至今为止那个别人也就是几天、几周、几个月、至多几年以后的我自己而已。

一些我想出来的框架被用在我的多个程序中,是对我来说印象很深的东西,这些结构放多久我都不会忘。这样每次都建立在之前的基础上进一步添加功能,让这个框架越来越灵活,越来越合理,同时也越来越复杂。

证据是,这个框架我用着是越来越合手,但越来越不知道应该怎么介绍给别人了。写篇文章讲也许还好,只用注释想解释清楚就有点麻烦了。

在公司工作一段时间,免不了要读要用别人的代码。只用它一两个函数的还好说,要我系统地读整个类的设计思想我就犯懒了。这种时候一个常用的借口是“反正理解了也是只能在这家公司用的东西,也不知道设计的好不好,要看也应该看些开源框架,学习在哪里都用得到的知名框架才对”。现在想想,公司别人看我实现的UI框架的时候,大概也是同样的心情吧。

这个心情我倒不觉得有什么不好,毕竟公司很多程序是赶时间做出来的,大量代码是复制粘贴而来,或者是实现目标就好,完全不考虑复用的一次性类,从它们中学到东西的收获很可能抵不上读它花费的代价。

但是我写的是UI框架啊,别人不读不去理解我提供的虚函数的用法那不全白扯了嘛!

怎么办,怎么办。我想继续增加新功能,设计自己的美术资源异步初始化流程,但流程中子类独有的资源要子类理解初始化流程的基础上小心地控制bool flag才行。嗯……先看看这里能不能简化一下吧。

可是如果子类需要两段、三段异步初始化怎么办?简化掉以后这部分就要强行覆盖框架类的一部分函数才能实现了,这个人家更不敢用了啊。

嗯……总之,午休结束了,下次想到什么以后再写吧

失败一次很正常

10.18.2013, 3 条评论, 未分类, by , 2,769 views.

我有过很多个人项目,但没有一个走到终点= =

流程一般是这样的。

我突然有了一个想法,然后身体里瞬间产生了强烈的实现这个想法的欲望,强烈的欲望,有种体内压强增高,身体紧绷,要向外膨胀的感觉。

我列了一个单子,大概是有哪些技术问题需要克服,有哪些模块需要实现,模块的轻度细分,等等YY的东西

这时,如果我的强欲还没有消退,就可能进入实践步骤,开始编写粗略的框架,然后找一个可以看到的目标,拼命的走到目标实现那一步。我想做的多半是游戏什么的,有界面,所以能“看到”那个东西是一个很清晰的里程碑,这个方向很明确,所以这个步骤的成功率还不错,挺高。

现在,如果我的热情依然有所残存,大概就会系统地计划今后的步骤,还有重构整理之前凭着一股热情快速写成的粗糙原型了吧……好吧,我已经好久没有走到这一步了。


在过程中,如果我的热情消退了,我就认为自己坚持不了一件事,自责一阵,然后把代码搁置,然后,基本上就不会有然后了。

今天看逆向小超人阿姆罗的博客,又被励志了一下。你看,人家大牛不也是冲一轮没能到终点嘛,但是人家还有第二轮、第三轮啊。

嗯,今后朝这个方向多想想吧。

午休结束了,写不了太长= =

代码重构是个很好听的名义,基本上是道德制高点、正义之举的级别,所以每次当重构成为选项之一的时候,我都极其倾向于重度重构,甚至推倒重练。

不过现在我参与的工程规模越来越大,重构难度越来越大,不能随便就搞大重构了,但我还是在尽量寻找机会整理眼前的代码,别人的代码,我的守备范围内的各种代码。代码洁癖已经养成,看到复制粘贴的混乱代码就手痒,真希望我未来媳妇整理房间的热情能有我整理代码热情的至少一半吧(笑)。

不过话说回来,重构真的很花时间,对工作进程影响略大。这个月我在做的一个工作就是这样。

这个月我看我们游戏项目的2D界面至今没有一个UI框架,每次都重新写各种基础逻辑,尤其那种点击一下就消失的半透明蒙版啊、四方形按钮什么的,看着它们被一次又一次的重新实现,我整个人都不好了。

把散乱在一个类中各处的UI逻辑整理成可复用的各种UI组件,这看起来是正确无误的判断吧,于是我就跟着感觉重构下去了。结果越做越开心,基本把自己平时写游戏时用的那套简单的UI基础框架都挪到游戏项目里来了。

动作太大影响范围就会大嘛,所以到框架大概成型后的调错过程就很枯燥,很漫长。

其实公司自己有一套和2D显示相关的框架的,但那个是单个显示单位的框架,比如一个图,一个2D动画过程什么的,属于比UI组件小的单位。那个既有框架里功能还挺多的,但我写自己的框架已经来了兴致,跟没没兴趣去了解那个只有公司内的这一个游戏在用的私有框架。结果我大概了解了一下它的创建读取和释放,显示非显示,位置设定和优先级设定之后,就拿着这东西去拼我的UI组建了。

昨天写道23点多,身边仅剩的几个人已经进入聊天状态,我也累了,就上前炫耀了一下我的战果,说原来那个框架功能不足啊你看我给补上了哈哈哈哈。结果原2D负责人现在我直属上司突然情绪亢奋,凑上来问我哪里功能不足,我说了几个部分,他表示这个有稍微曲折一点但是用既有代码也可以做到的解决方案。我想那套既有代码里有他贡献的一部分代码,说老代码的坏话他肯定不高兴的。不过知道我重复实现了一些已有的功能对我还是有很大打击。回家的路上,我开始想,这次为什么做得不对。

重构是大义,应该做的。这次的问题是出在写出了兴致,开始过度设计了。在我把自己的框架移植过来的时候,其实我已经不是为了解决,而是为了写一个漂亮的框架而在写代码。这对自己学习来说也许有点意义,但是在公司做这种事就比较理亏了。

以后注意吧。在工作领域,快速完成工作是第一优先。


不过这样也无法阻止我继续在工作中寻找提升自己技能的机会的!

在公司工作,总怕被分到“体力活”,因为担心对自己没有帮助。

做一些针对公司内部专用格式的资源文件的处理程序时,也力求做到类本身可以复用,可以泛用于任何私有格式。

解决问题之前首先会花大量时间在网上查清楚每一个具体步骤,力求第一次就一步不错走完全场,否则就极其抵触乃至恐惧,最终无法付诸实践。

追女孩时混都还没混熟呢,就开始希望自己是他的最后一个男朋友,想着跟她结婚生活的种种可行性。感觉可能走不到最后,就不愿意放手去追。

自己的代码重构了再重构,越来越漂亮但是始终无法抵达终点,将之完成。

想锻炼自制力于是给自己一些一定要坚持的课题,但最后都以坚持这个不是有意义的事,浪费了时间为由堂堂正正的放弃……

最优,正确,美好,有意义,一次成功…这种在理科学生时代助我披荆斩棘的行为倾向,现在却领我进入了一个永远不能成事的尴尬处境。

“生命不是赛跑而是要看路边风景”什么的,当然是听了不止一次,我也很认同。但是这点鸡汤级别的东西还不足以动摇我这么多年来磨得坚固无比的固执倾向。

其实在披荆斩棘的学生时代,我就已经意识到自己不能完成自己设立的计划的问题了。比较明显的情况就是周一到周五有人逼着学习,所以效率很高,周六周日没有压迫就没有行动力了。

说“压迫”有点饥不择词了,应该是没有……没有什么呢,没有截止日期近在眼前的那种紧迫感吧。

我不喜欢完不成事的人是没有“压力”这种说法。研究生时代我被每周跟老师见面汇报进展的事情压得满地打滚痛哭流涕,每天给家人打电话吐苦水解压,最后已经发展到每周都需要心理咨询的程度。

但即使压力大到这种地步,我还是不肯在平日看哪怕一眼的论文,写哪怕一行的代码。

当时的我,已经完全陷入了逃避模式。我每天生活的目标,就是等待毕业论文截止日期的临近,近到让我开始着手去写论文。

能给我这种大到让我真正心理崩溃了的压力,一定是因为那个教授是个非常不通情面地刻薄批评学生的严厉的人的关系吧?

完全不是。正好相反,她是一位温和到让的我世界观不得不重做调成的好教授。我跟人介绍我教授的时候常常说,她对我好到我将来如果结婚了,一定要邀请她作为贵宾参加的程度。

面对我空洞的进展报告,甚至当我连空洞的进展报告都提不出来的时候,她还是笑着跟我讨论怎么能做出进展,一次都没有生气。事实上研究室的博士生们也表示从没见过教授生气的样子。

人不生气还不算太难,她要是对谁的事都不上心不动气那也就不会生气了,可这位教授真的很替我考虑。虽说作为学生的教授她有保证学生能毕业的责任压力,不过那种替你担心的感觉和催你不要给她添麻烦的感觉我还是分得出的。

有点跑题了。我想说的是,那种天塌了一般的巨大压力是我自己给自己的。

正因为我的教授太好了,我非常迫切的希望做出伟大的研究成果,成为一个值得她骄傲的学生。不过依我的经验来说,这种要做出“伟大的”、“了不起的”东西的完美主义心情一旦出现,事情多半就会朝着很糟糕的方向发展。

能贯彻自己的完美主义的话问题就不大,不过追求完美但又控制不到自己,那接下来就会进入恐怖的“拖延地狱”。

拖延最大的杀伤力来自于自责。偏偏我有时候就是超喜欢在自己身上找原因,极其容易过度自责的人。

自责了嘛,对自己的自信心就会下降,然后完成任务的自信也跟着下降,然后就放弃了。通常大概就是这么一个套路。

我想中断这个毁灭世界的连锁反应,所以琢磨了一下哪一环最容易突破。

1. 不再自责

2. 自责但不让自信心下降

3. 对自己自信心下降,但不让自己做成事的信心下降

4. 没信心也不放弃

改变说起来容易,做起来很难的。尤其是没有这种基因,体验不到这种心情的人,只会轻松地说一句“想做就能做到”什么的,就好像高个子跟矮个子的人说“想长高就会长高,你可以的”。

心理改变也不是完全不会发生。那我就希望自己能在第0步的地方——不再许过于完美的愿望,做庶民级别的地味计划——开始,尝试改变吧。

还是赶紧把内存追踪流水帐贴出来,赶紧完结掉,好开始写之后的日志吧。

经过了百无聊赖的8月,9月初公司终于给了我一个新任务——找出现在正在开发的游戏中的内存峰值的出现位置,然后想办法解决一下。

上司的意思是,这是个体力活,你在源代码各处看看都哪里在读取2D3D资源文件,数数看大概用了多少内存,可我当时听到这个任务的时候心里想的是“这个活儿NB啊,我要做内存分布追踪工具!”

不是我好高骛远,这里确实是这个道理。你看,我们副部长搞那个精简分散内存开支的活儿已经不是一天两天了,他都搞不定,我们下面的小喽罗想凭运气找出这个内存瓶颈就更困难了,何况我还不了解各处是以什么习惯在申请和释放内存(比如说,每次用之前申请用完释放,还是进入界面前一口气都申请了,之后就不管了)。

反正就是这么回事。开工吧。

先在网上搜了一圈,大概看了一下内存用量追踪的做法,然后锁定了这篇文章 《Monitoring Your PC's Memory Usage For Game Development》。不仅是内存使用量侦测,而且正好是应用于游戏开发,内容难易度也在我可以理解和实现的范畴之内,开心~

 

『当初我庆幸自己一下就找到了实用教程的时候,还没有想到之后的路会这么的难走……』

拖延的成因之一是难以抗拒诱惑。对我来说就是很难无视脑内一闪而出的想法。漫画翻译到一半,想下点东西,就打开浏览器,然后,几个小时就出去了。想稍微看一下视频就开始写程序,结果看完一场退出来看到旁边的相关推荐,就点下去,然后,一晚上就没有了。

这种行为倾向我一直称为自制力,但是看书上管这叫“冲动”,我觉得也有道理。我开始去做计划外事情的那个瞬间,就是一时冲动导致的决定性瞬间,之后几个小时不过是惯性而已。作出判断的零点几秒决定了之后五六个小时的行为。

反正这方面有待加强。

今天又是遇到了一件让我痛感自己急需提升克制冲动的情绪肌肉的事情。

事情的背景是,我在公司做游戏过场动画编辑(用代码和脚本)。这个事情没有专用编辑器很麻烦,公司最初是主要用C++控制过场动画的镜头移动,镜头位置数值从外部文件中读取。每添加一个过场动画都要从头写一套代码,代码运行逻辑各不相同,不方便做细微调节,于是公司叫我写一套泛用型过场动画制作工具代码,加速过场动画编辑。

任务内容是工具设计实现外加两个过场动画。

公司给了我3周时间。

我看时间这么充裕,就把从unreal editor那儿看来的游戏运行中拖拽操作摄影机坐标、角色坐标、特效播放坐标什么的给实现了,摄影机运动轨迹是用的多关键帧的埃尔米特曲线,可以实时调节关键帧位置和tangent。流程方面也仔细设计了一番,代码方面和脚本方面都弄得挺漂亮的,说实在的让我很有成就感=v=。

不过操作界面还是比较受局限,我只能用一些debug绘图命令画点球啊线啊什么的,没地方输入数字有点不方便,而且键盘上的快捷键已经被其他功能占用光了,新功能加进来很难用。

加上一点“想练新技术”的私心,我就花了一天时间把wxwidgets这个GUI库试验性地加入了现在的游戏项目中。

不过写GUI程序对我来说还是挺慢的一件事的,而且为了不和公司的代码库冲突,每次提交代码之前我都必须去掉所有GUI库相关设置,删除文件,调整代码。效率低下不说,还容易出错。一直瞒着公司搞这个编辑器难度比较大。

本来我是想等这个GUI编辑器已经可以实用了以后再拿出来给上级看,这样批准的可能性更高一些。但是想想未来每次commite都需要做的无用且精密的剔除和添加回来的操作,我就觉得很疲惫。结果,我在仅仅是确认了GUI程序和游戏程序之间正常相互调用的可能性之后,就跟上级提出了希望写一个GUI编辑器的想法。上级说你这个能做出来肯定是非常非常好的,但是,写这个要花多少时间是个问题,考虑到工资发出去要有产出,所以还是不要写那个GUI,直接在游戏里凑活着编辑吧。

呃,好吧。

当时我就觉得,是我冲动了。

其实这个GUI的理想形态是在游戏代码之外另有一个编辑器的项目,让这个编辑器可以很方便的集成到各种不同的游戏项目中去,然后游戏根据自身需要,设置编辑器内的布局什么的。因为与公司那部分代码无关,所以这些我都可以作为个人项目在私人时间里做,等灵活好用了,在简单的添加进游戏里,如果效果不错,而且真的方便易用,那应该更容易获得上级的批准的,因为上班时间里我只需要做少量代码编辑工作就可以使用这个编辑器了。

于是我回到家建立了自己的第一个github代码仓库(fork来的不算)。

独立的GUI编辑器,还有在学校里做游戏时积累的lua相关功能等等,游戏编程相关的东西以后都整理好以后放进去。

嗯,以后。

草稿箱里卡了半年多的漫画总结,从《1月漫画总结》,变成《年度漫画总结》(日本的一个年度是从4月到来年3月这么算的),又变成了《半年漫画总结》。几经辗转,终于,遗失了草稿

我安的这个百度文本编辑器和WordPress合作时是会出现这种问题,我早该知道的,这就是天意。

老天叫我不要再为了憋大长篇而荒废自己的博客了。谢谢,您的这条信息,我收到了。

这个博客的现状很好的反映了博主的病情。当一个平凡的人陷入完美主义时,就会并发拖延症。关于这个话题,越说越丧气,只有不提。各位看官看我安心做事就好,拖延什么的,莫再提,莫再讲。

简单总结一下kira这半年的生活,就是网络发言重心转移至新浪微博,研究生安全毕业,进了家游戏外包公司,3D编程入了个门,家里来宽带以后回家学习的战斗力减至三成兼睡眠时间缩短。

以后再被写博客这事儿卡住的时候就去看看这里 http://szamuro.blogbus.com/

这才是真正的每天一点点,进步看得见!励志!