刚开始做论坛,有一个问题就是如何使服务器上的文件和家里做开发的 pc上的文件同步。做一个功能,要涉及很多文件,这些文件可能分散在多个不同的 folder 里面,用手动是不现实的。
第一个想法就是用代码管理软件。我在家里装了 svn 服务器,把源代码都放进去了。但是去网站的服务器一看,没有 svn。一搜,发现果然不支持。
服务器虽然不支持 svn,但是容许把他们的 folder 设成我家里 pc 上的一个 drive。如此一来,我就可以在 local 用 svn 了。
试了一下,不工作。用给出的错误信息 Google 了半天也没有结果,只好另想办法。
第一,每一次 sync 它都要比较所有的文件。网站的软件一共有一千五百多个文件,它要一个一个地跟服务器上的文件去比较。虽然每一次比较也不花太多时间,但是看它那么笨,每次都忍不住想踢它一脚。为什么不让用户选择只比较 local 文件的 timestamp 呢?
第二,比较完所有的文件以后,它不会自动地去 sync。你需要按另外一个键。这个只能用无脑来解释了。很多次我以为做完了,好一会才发现没有按这个第二个键。
有一天我又忘了按这第二个键,俺终于无法忍受了,决定另想办法。
几年前俺刚上肉脸的时候,写了一个有关找工面试的系列文章,里面有好几篇谈自信。
关于自信,俺的一个观点就是,不自信的人,脑子里有一个电阻。越不自信,这个电阻越大。即使有一定自信的人,这个电阻也是存在的。这个电阻的作用,就是阻止我们自己动脑子,很多时候往往是潜意识的。
PC 和服务器的 file sync,俺一直没有意识到自己能解决。俺花了好几个小时,研究了好几个软件,最后选择的一个仍然不理想,用起来很 frustrating。
等俺被迫自己想办法的时候,发现不光有办法,而且办法很简单。俺在 pc 上做 svn update 的时候,svn 会打出一些 log 信息,说加了什么文件,改了什么文件,等等。俺只要截住这些信息,在里面找到文件名,然后把这些文件拷贝到网站服务器就行了。
不到半个小时,俺就解决问题了。原来要分三步做的事情,现在只要一步。原来要从服务器上查上千个文件,现在一个也不用查。原来要一分钟,现在只要几秒钟。原来会忘记做最后一步,现在没有第二步可做。
#!/bin/zsh # lines=`svn update` for line in $lines do if [ -e $line ]; then dirname=`dirname $line` echo $line $dirname cp $line w:www$dirname fi done
不自信就像电阻,它看不见,摸不着,你根本就不知道它的存在。事情没有做成,俺们总觉得是自己能力不足,其实很多时候是这个电阻在作怪。
有一天老婆回家,说一个数据库的问题很复杂,她和一个同事折腾了一个下午都没有做出来。俺是做 Java 的,数据库的东西不常做,而且每回做的都很简单。 老婆在数据库方面的经验要比俺多的多。
俺的经验虽然比不过老婆,但是在自信方面远胜过她。俺觉得,数据库编程,无非就是一个 join,join 无非就是把表A的每一行接上表B的每一行,然后再做取舍。只要照这个思路想,再复杂的东西都应该能捣鼓出来,虽然方法可能会很笨。
老婆把问题跟俺一说,果不其然,俺不到一个小时就捣鼓出来了。
老婆的经验比俺强,但是她几个小时都做不出来的东西,俺一个小时就做出来了。为什么?因为她下意识地不相信自己能做出来,她脑子里的那个电阻太大了。
几年前刚上肉联,俺写过一个找工面试系列,里面有不少几篇谈到自信。俺的自信篇里,一个主要观点,就是自己动脑子是克服不自信的好办法。
不自信的人总觉得自己不行,总觉得其他人都比自己好。脑子动多了,你就发现事实并非如此,然后你就自然而然地变得自信了。
多动脑子,你就常常会发现两种情况。
第一,大部分事情有许多种不同的做法,别人能做,你也能做,结果没有什么优劣,只是方法不同,角度不同。比如美人办事讲民主,你办事搞独裁,各有千秋。
第二,大部分人都是不动脑子的,你稍微动些脑子,就会有很多机会比其他人做的更好。这个第二点,有一个例子俺觉得很好。
用户界面里经常要用到的一个东西叫 list box。你点击一下 list box,一个窄窄的长长的单子就会掉下来,你在里面选一个。这个单子往往会很长,比如很多网站都有的选择国家的 list box。因为太长,这些 list box 往往需要 scroll bar,有时候要 scroll 好几下才能找到你要的选项。
N 年前俺刚去华尔街打工,俺就觉得这个 list box 很不 user friendly。俺主动跟老板建议把它做成一个NxN的方块,这样所有的选项就能全部展示出来。没有 scroll bar,不光是一目了然,而且选起来动作也小不少。
从那以后,俺每到一个地方,都会把 list box 变成一个 NxN 的方块,就跟无为论坛发贴子选择分坛的那个 drop-down 一样。
list box 换成方块,实现起来并没有难多少,但是这么多年了,从来就没有人想过。你动脑子了,你就能做的比别人好。你做的比别人好,你就会有自信。