三年前的代码

周末帮以前的老板干活儿。钱老板投了一篇paper,但是被拒了。不过老板还是觉得有戏。然我帮忙回一堆的comments。comments回了。老板还希望把程序再run一下,加一些修改。本来挺不情愿的,因为平时也忙。而且一想起来要钻到以前代码里去就觉得是个坑。开始两天心里想答应还是不答应。反复思量,觉得还是答应吧。作为基督徒应该submissive。因为凡事都有神美好的旨意。于是说周末可能有时间。

周末抽空干了一下。也没花太多时间,基本上也做完了。其实还学到一些东西,感谢主。

重新在以前的代码上做事是一件很诡异的事情。特别是在换了工作环境之后。特别是来了g之后。

以前碰到的问题又重新浮现出来。

比如最开始run一个script就报错。//就说是个坑

为啥呢,因为自己以前的代码一般都是螺旋式递进的。经常在旧代码上做一些小改动以适应新代码的需求。但是这些改动往往让老的代码break。以前用hg来管理代码,类似于git,喜欢把一个项目分解成很多小的repo。然后快速迭代。repo之间会有依赖关系。

好吧,问题说白了就是没有continuous integration,这个是来了g以后学到的。虽然很早就这道这些个概念,但是从来没实施过,没有环境,也没有动力。而且matlab代码怎么做continous integration?来了g之后,环境专业了很多。任何代码提交都有严格的审查。在提交之前就会检查是否会break已有的代码。这是个限制,但也是个祝福。这是antifragile。

还有release。之前的paper的结果需要更新。可是怎么知道哪个结果对应哪个程序?哪个参数?哪个数据?程序总是不断的在改动。旧的结果是否可以重现?新的结果在将来如何重现?

如果没有专业的release过程。这些都会对未来造成问题。

以前很少想过这个。即使想过也都没有太大在意。

现在回头看,能发现好多不足的地方。

另外说学到的东西。reviewer的comments本来我都觉得没什么意义的。不过,作为基督徒还是从了吧。就对应写了些代码,试了一下。发现果然有意义。比如pseudo inverse。reviewer说没有regularization么,那个white band是不是相当于regularization?我说不是。不过regularization这个idea值得一试。试了一下,发现竟然真有效,不仅仅是对synthesize出来的lowrank数据,而且对真实数据也有提升。中间实现的时候还碰到一个问题,不过想办法解决了。就是regularization factor不能常数。设置成s1e-5比较好,s是最大的singular value。

感谢主。

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s