系统设计

奇怪的开发需求们

这是一篇写于 2015 年 4 月的草稿,现在已经忘了当时想说什么了,又不舍得直接删除,看看发出来自己还能不能看懂当时的只言片语

大需求应该是我们自己做了一套独立系统想开个新业务

一开始面对的就是帐号体系和登陆方式, 在有自己的账号体系下如何自制授权。最后用了一些不算 OAuth 的简化版验证来实现了原型快速可用。因为双方都是自己的系统,所以可以加入一个私有的加密用的 salt,然后在已有账号体系里用账号加时间戳加一个私有字段,通过 salt 做个 MD5 或 SHA1,把用户名,时间戳和加密后内容明文发送,在接收方用明文收到的用户名和时间戳加上没有传输但是两边都加入的私有字段一起,通过私有的 salt 算 Hash,对比结果,以及确认时间戳是最近的

然后是白名单需求,因为是对一个已有系统的部分用户开放测试功能,不希望没选上的用户也进入到测试系统里来。这个似乎没有什么特别要考虑的,做一个白名单放到 DB 里持久化,就是看怎么改这个白名单,是要提供一个 Web 界面,还是裸改代码。印象中这个项目还没从裸改代码进化到 Web 管理,就无疾而终了(手动捂脸

最头疼的还是错误处理,就是文档没说的那些事,怎么做好各种防御式编程,才是工作中的精髓所在

简单粗暴的做,大概一两周后,使用 cloc 统计代码如下(用了 CDN 上的 Bootstrap,当时也不怎么会前端,大部分事情都放到后端做,所以前端代码很少)

$ perl ~/Downloads/cloc-1.62.pl . --exclude-dir=env,.git,.idea,logs
      51 text files.
      50 unique files.
       6 files ignored.

http://cloc.sourceforge.net v 1.62  T=0.33 s (137.7 files/s, 6957.6 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Python                          25            369             52           1078
HTML                            17             43              1            603
CSS                              1              9              0             50
Javascript                       1              9              1             47
Bourne Shell                     1              2              0             10
-------------------------------------------------------------------------------
SUM:                            45            432             54           1788
-------------------------------------------------------------------------------