IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Jwc2ical小记

    ditsing (ditsing@gmail.com)发表于 2012-03-26 01:24:00
    love 0

    谋划了一个学期的jwc2ical项目终于结束了,结果还算不错,有可用的产品,并且成功进行了推广。

    jwc2ical是我的第一个有意义的“项目”。做完了收获还是很多的,在这里做个总结。

    • 面对未知的时候,不要想“计划好了再行动”,尽快开始才是王道。例如moodle-local_jwci2cal里需要用到PHP,但是我从来没用过。寒假里找资料、教程找了很久,也比不上3月份fork一个本地插件一边写一边问雄哥。
    • 输出调试信息要输出key。所谓key,就是能帮助我们第一时间确定出错的位置、错误的种类以及引起错误的参数的信息。 例如,当从数据库里读出来的数据引起问题时,除了输出引起问题的域,最好再加上Primary Key部分。
    • 永远都不要依赖于全局变量。用函数返回值、持久化存储、常量等方法代替。全局变量在一个地方写、在另外一个地方读,这总能让我想起CPU设计实验里控制时钟周期以免发生读写冲突的例子。这是很讨厌的一件事情。
    • 在需要长时间运行的程序里,尽一切可能避免程序崩溃。
      • 在一切有可能出问题的地方——函数调用,数据库操作,来自用户的输入——判断数据合法性。
      • 把单个工作的崩溃log下来,继续其他的工作。留下的信息要足够恢复。
    • 要么做到永远不崩溃,要么崩溃了以最快的速度恢复。为什么要有后半段?因为前半段并不总是可能的。
    • 考虑在崩溃的情况下整个程序能在多大程度上继续运行。哪些功能即使程序已经崩溃了也是可以依赖的?最好每个功能都是。
    • 做每一个假设的时候都要想,如果这个假设不成立怎么办?
      1. 假设不成立就要换一种方法来处理了。是不是抽象有问题?
      2. 假设不成立就会麻烦很多。提前做好面对麻烦的准备吧。
    • Quick and dirty的方法有时候很有效。适当引入能事半功倍。这是个权衡的问题。
    • 尽量把做事的函数和说话的函数分开。能分多开分多开。

    先写这么多吧。

    moodle-loca_jwc2ical项目历时18天,大小bug不断。中途根据实际情况做了很多调整,最后的代码无比混乱,当然我是说PHP部分。Sunner老师给了我很多指导和帮助,没有他我写完这个项目一定会死的。项目前期缺乏有效的测试数据,这是麻烦的根源,甚至部署之后还出现了一次崩溃。还好Sunner老师不厌其烦的一遍一遍的部署测试,最终项目才能成功上线。感谢Sunner老师~我还得继续维护这个项目,没有人会愿意接手的。

    最令我骄傲的是项目的Perl部分,也就是分析网页的脚本。除了两个已经预料到的错误假设之外,我没有对这个脚本做任何改动。它完美的实现了与JWC的交互,处理了大部分的错误和特殊情况,提供了一个很好的封装。这得益于范神@ronaflx,卢大神@luyi0619和雄哥@bearzx在前期给力的测试,感谢三位勇敢地成为脚本的第一批用户。

    无论如何,这一个项目已经接近尾声了。下一步就要把精力集中到GRE和xfsd上去。开学已经一个月了这两项还没有多大进展,很惭愧。就这样吧。

    本来想写一个文艺的结尾的,可是我真的不文艺。

    PS:Facebook你敢不敢回个消息过来!要不要投过去简历就石沉大海啊!!!!!



沪ICP备19023445号-2号
友情链接