EverET.org

好记性不如烂笔头

碎碎念

| Comments

毕业

一眨眼毕业3个月了,终究还是和那地铁里那熟悉的“下一站,大学城南”别了。

初入工作

上班的第一个月首先是到了南昆山素质拓展,住在一个度假村,虽然环境很优雅,但是有没有时间去周围转转就结束回来了。然后就开始了大半个月的Mini项目,与其他绝大多数部门的人不同的是我们的是一个人独立做一个,虽然缺少了团队合作的锻炼,不过这样也有这样的好处,就是非常锻炼全局思考能力。

素质拓展

上班的第一个月首先是到了南昆山素质拓展,住在一个度假村,虽然环境很优雅,但是有没有时间去周围转转就结束回来了。

拓展最后的爬人墙,墙挺高的,下面还有非常辛苦的人肉底座,踩在底座肩膀上伸手才能勉强够到上面的人的手。

最后底座上来的样子,需要有人在上面倒挂着把他拉上来。

拓展玩了两天半,还是收获挺多东西的。

最大的收获是团队的力量是不可小觑的,以及即便是竞争对手,如果有利益,为何不合作呢?如果合作是双方共赢的,联手起来可以更强大可以应战更强的对手。

mini项目

接下来就开始了大半个月的Mini项目,与其他绝大多数部门的人不同的是我们的是一个人独立做一个,虽然缺少了团队合作的锻炼,不过这样也有这样的好处,就需要对整个系统的全局都有把握。mini项目是用python做一个网站,前端的静态页面已经写好了,除了Python标准库和MySQLdb这个库能用,其他剩下的就是看我们的造化了。所以自己需要实现框架、session等,然后再在上面开发业务代码。

最后是code review,一群导师在会议室围观你的代码,代码一行一行看,挑里面的问题,真心觉得导师们的屌爆了,问题扫一眼代码就看出来了,实在是经验丰富功力深厚啊。

我在review前自己发现了逻辑存在刷钱漏洞,后来补上了。原因是我直接通过页面给不同的页面传递参数,却没有检查参数的签名,导致参数可以篡改。

不过后来review的时候还是出了一个非常2B的重大逻辑错误导致可以让随便让其他用户在不知情的购买东西。

原因呢?完全是我傻逼了,从页面获取当前用户的id而不是从session获取。其他地方都是从session获取当前用户id。

不知道这为什么写成了这样。估计是加班写代码傻逼了。而且后来检查的时候也太直以为是,觉得不会有问题的地方就没细看,结果还是出了问题。

所以一定要坚持到最后一分钟!不要因为厌倦而放弃!

正式工作

过完迷你项目就开始正式工作了,现在做的是在一个08年开始做的一个有4万多行Python代码的业务型项目上面开发。用的还是FastCGI,模板引擎还是自己用C++写的,非常古老。

不过也是第一次接触真实的业务系统,不过还是学到了挺多东西。

sample配置文件

配置文件在版本库里面应该只是保存一个sample文件,就像wordpress里面的配置是wp-config-sample.php,刚刚下载一个wordpress回来需要根据它创建一个wp-config.php文件。

为什么要这么弄我以前一直不明白,不过现在明白了。如果每个人把自己的配置都提交到了版本库,例如我想端口为8080,但是你想端口是9999。如果大家都把自己的配置提交上去的话,那么配置就会冲突了。如果wp-config.php没有纳入版本库,在开发过程大家就可以有不同的配置了。

所以版本库里面的配置文件应该是一个sample文件,大家再根据sample文件创建自己的配置。

区分线上环境和测试环境

一般情况下,都是在分支开发,开发完后会merge到主分支,然后上线主分支。

因为线上环境和测试环境的配置可能会有不同,所以,可以将clone到两个文件夹里面,一个处于主分支,里面的配置是线上的配置;另一个是开发分支,里面的配置是测试配置,改好并测试后合并到主分支里面。然后再去到线上环境的文件夹将修改Pull下来,再将线上环境文件夹deploy到正式环境。这是我的做法,不知其他人是怎么做的。

开发

区分权限

例如数据库连接,至少需要区分两个出来,一个只能读,另一个才能写。一般获取数据的模块就应该只是使用只读的连接。需要更新数据的模块才使用有写权限的连接,这样在一定程度上可以避免在只是获取数据的模块不小心写了数据。

还有就是角色权限管理,虽然像wordpress里面也有很多角色,不同的角色在后台看到不同的页面,操作的权限也是不同的。不过虽然wordpress有这个功能,不过我也没用过,因为就我一个人,还搞什么权限区分。权限区分仅仅在多人使用的环境下才会显现出它的作用。

现在实际项目中,后台的管理人员也不止一个人,所以还需要区分角色,不同的角色看到的后台也是不一样的,每个操作也是有权限限制。现在的权限管理还挺齐全的,可以动态为不同的角色授予不同的操作权限,也可以让操作只能有制定角色使用。

还有像内网的接口,也应该设置ip白名单,仅仅在白名单中的服务器才能使用。

阅读代码

代码非常多,所以我采取的策略是先看核心部分,其他部分用到的时候再慢慢看了。现在出现的问题是,业余没什么心情去阅读没有用到的部分的代码。这样对于整体的认识还是非常不足的。每次要改什么东西,都需要先从页面上找到相应的模块,然后再去找这个页面是哪里的代码,里面的处理逻辑是什么,然后再开始修改。感觉这样非常不好,十足码农。

你是选择做个码农还是架构师?!如果想成为架构师,怎么能不对整个系统有个整体的理解呢?

对于一个那么古老的系统,难道没有什么想改进的吗?

应该要首先提起对工作的兴趣,然后深入它,理解它,改进它!

失误与不足

刚来工作,还是有非常多的失误。

其实很多都是可以避免的,例如提交前你只要非常仔细地看一下diff,就可以避免很多差错。不过毕竟是人,哪有那么多精力每次都非常仔细地看一下修改了什么才commit。

例如这次我在数据库为一个表加了一列,然后忘记在python中的数据层那个表对应的对象里面加上相应的列名。对于这个问题,我觉得数据层应该能够自动从数据库中读取表结构生成表对象的保证,而不是让程序员去改好几个地方。或者只是有一个程序自动读取数据库生成python代码都好过让人去改好几个地方,非常容易遗漏东西。这种繁琐重复的工作应该可以避免的。

bla bla..还有很多,写了几个小时了,好久不写东西写作速度大大降低唉。

今天非常悲剧的把rake isolate后生成的站点deploy上来,结果我的博客只剩下3篇文章,好彩只是过了1个多小时就发现了,就重新generate后deploy上来了。于是决定来写篇憋了很久的文章。

本文链接: http://everet.org/little-thinking.html

您可能也喜欢

Comments