一个月时间, 一个约1.8万行代码规模的小项目

这个速度对于专业的开发来讲可能不够理想, 如果是fulltime的话可以压缩到3周或更少. 项目是8月中旬kick off的, 需求在9月底的时候有一次更新, 增加了一些复杂度, 正式的集中开发在9月25日前后开始, 那时候已经马上要过七天长假了.  长假在这个项目上大概花了两天不到10个小时, 其他时候不是我熬夜游戏头痛脑热, 就是小孩感冒发烧, 所以大半也没花在正事上. 平时上班的时候, 白天要开会回邮件, 所以基本上可以使用的开发时间就是18:00以后, 每天大概能有4小时的开发量. 说说这个项目的需求, 这个项目会被用来替换某个名叫MailMan开源项目, 理由是这个东东已经没人维护, 而且, 也找不到人会维护. 这个项目处理的事情其实很简单, 整体就是一个maillist管理工具, 有mail group, 在group上有一些规则, 根据规则为组里的mail list发送newsletter. 但是事情不像想象的那么简单.

首先, 内容源的抓取. 内容源是从美国feed过来的格式为NewsML1.2的xml file, 协议是FTP, feed过来的内容会不断的放到ftp里面. 新的程序将会从同样的ftp上读取内容, 处理内容, 然后删除成功处理的内容, 将不成功的内容, 在一个安全的时间后, 放进回收站待人工处理. 而且这个内容源可能会有多个, 可能还会有RSS, 或者自定义的xml, 甚至HTML. 所以内容源的协议, 内容格式都需要可以配置. 其次, 内容的解析. 内容中会包含很多meta数据, 例如 行业, 专题, 服务代码, 地区, 公司, 股票, 参考网址, 联系人, 语言等, 幸好前任留下了一个可以直接使用的解析方法库, 稍加改进就可以使用在这个项目里. 因为众多的一对多, 多对多关系, 使得表设计特烦琐, 一大堆oo2xx的关联表. 再次, 过滤规则 订阅中定义的过滤规则, 包括行业, 专题, 服务代码, 地区, 语言, 内容源, 各种条件中互为AND或OR关系, 除了组规则外, 还需要个体规则. 解决方案是使用常规的藕式状态机, 加上修改和新增时的有效性验证. 理论是很好的, 但是界面上的实现不行, 我没有时间去琢磨更好的jquery实现, 先就这样吧. 最后, 批量邮件的发送 这个项目中现在的email数量是500+, 按正常增长的速度, 突破1,000也就是半年的事情, 每天会有数十次发送. 这种量的邮件发送, 对于exchange server来讲, 正好是一个比较尴尬的位置, 百来封的发送是分分搞定的, 但是四五百封的发送, 是会堵住整个办公环境的. 所以这个邮件的发送, 必须通过第三方的发送接口. 还好这个我们有. 其实, 整个项目并没有逻辑或技术上无法解决的问题, 更多的时候是在重复的做 配置, dao, entity, bean, service, action这样的工作. 为了实现内闭的dao entity层, 我费老大劲做了session bean service. 上周末这个项目就基本完成了, 在加上ACL后还有一个小插曲, 就是在产品环境下的xfire初始化问题. 在开发环境一直都是很好的, 但是在产品环境下就无端退出, 没有丝毫exception抛出. 最终的解决方法是补了五六个lib, 是包缺失引起的问题. 这个项目比较重要的收益是, 基本实现了一个struts的替代框架, 按struts的形式, 实现了action container, 实现了action, 实现了result. 我不需要看似好用实际散失灵活性的属性绑定, 不需要那一大堆根本不能用的拦截器, 不需要ognl, 对, ognl是我最不喜欢的东西, 虽然可以不用, 但是我彻底的不希望它出现在我的项目里. 唯一的遗憾, 还是spring和它所管理的那一大堆dao, 速度还是够慢, 慢得我不得不在mybatis的缓存上再加一个ehcache缓存. 这个项目的代号是relaybox.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值