Ubuntu 上时间同步

突然发现有台 vmware 虚拟机里的时间已经变成了明天!这可不好,会闹出大乱子的。直接用 date 设定现在的时间恐怕也是治标不治本。于是想到时间同步。

按照这里的说明,归纳如下:

sudo apt-get install ntp
sudo echo server 0.pool.ntp.org >> /etc/ntp.conf
sudo echo server 1.pool.ntp.org >> /etc/ntp.conf
sudo echo server 2.pool.ntp.org >> /etc/ntp.conf
sudo /etc/init.d/ntp restart

看看效果:

$ ntpq -pn
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+91.189.94.145   192.36.133.17    2 u   55   64  377  510.562  -177.61  48.495
-208.38.65.35    48.142.90.237    2 u   58   64  377  260.369  -198.92  66.197
*209.132.176.4   .CDMA.           1 u   59   64  377  176.737  -84.811  46.291
+218.21.130.42   76.169.237.141   2 u   56   64  377   45.210  -150.48  71.819

或者用 date 命令看看是否同步了。

貌似这个 ntp 服务起来后和指定的服务器通信,获取准确的时间然后更新。所以以后不用人为干预了。而 [012].pool.ntp.org 提供的服务,每次都会返回不同 ip 的服务器,这样保证不会应为单点服务中断而影响,和 Raid5 有异曲同工之妙。

SQLite 调优点滴

发现在把一堆邮件导入到 SQLite 数据库的过程,异乎寻常地慢, 而同时在另一个程序中读取这个数据库时,等了半天,竟冒出一句:

database is locked(5) at dbdimp.c line 402

显然,出现条件竞争了。这种问题一定有解决办法,于是查阅官方文档关于调优的部分,注意到这样一个事实:每次 SQLite 进行一次 update 操作,都要打开并关闭一次数据库文件。所以像我这样大批量的 update 操作,有 100 次 update 就要打开关闭文件 100 次。所以慢且一直处在锁定状态也不足为奇了。

解决办法是使用事务操作:

BEGIN TRANSACTION;
UPDATE table1 SET col1='1';
UPDATE table1 SET col1='2';
...
INSERT INTO table1(col1) VALUES ('2');
...
COMMIT TRANSACTION;

如此所有事情都在内存里搞定,然后再一次刷到文件中,干净利落。

使用 DBIx::Class 的话,可以把所有的代码都扔到这里面:

eval {$schema->txn_do(sub { ... }) };

Google Ads

初读《时间管理》

昨天百无聊赖地去书城晃了一圈。拿了一本《时间管理-给系统管理员》,薄薄的,26块,O’reilly 出的,台湾翻译的,东南大学出版社出版的。又去顶楼看了看西文书柜,好不便宜,又厚又轻加上精美的印刷,就算读不懂也是很享受的。要是 5 块一本我兴许会拿上一些回家藏起来,偶尔拿出来翻翻。再又去了二楼的文学馆。没什么喜欢的,随便拿了几本推理小说就去结了帐。

回到家先翻看起《时间管理》。买书的时候我一点都没有犹豫,一来对这个话题很感兴趣,二来这是  O’reilly 出的书,三来也不贵。翻译的不算很好,有些地方有错。不过基本上影响不大。看这书首先是因为对所提出的问题的共鸣。以前总习惯和老板说,如果给我整段时间一个人不受干扰地开发,我可以最短在多少时间里怎么样怎么样。不过最终总会食言,老板不怪你,自己久了也就不愿这么说了,说了丢人。于是渐渐的喜欢敏捷。

从我一直以来都很肥胖的事实也说明了我这个人很懒。当然我有时候很勤奋,可以用三天的时间完成平时一周的工作。不过一旦我这么辛苦,接下来便会想着有余地可以缓一下,进入低谷,什么也不想干,过掉一周。这样的结果还不如不勤奋。老实说,那时我不懂时间管理。

现在自己摸出点门道了,于是解决问题的策略也和《时间管理》有了些共鸣。书才看了头,非常有意思,很多策略和思想都挺独到的,也很务实。回头再整理些心得。

修改 ubuntu 下默认使用的文本编辑器

当 crontab -e 的时候总会出来 nano 的编辑器,不习惯,就会手忙脚乱,或者诚惶诚恐。一直没记住怎么修改这个设置,刚巧看到,顺便记下。

$ rm -f /etc/alternatives/editor
$ ln -s /usr/bin/vi /etc/alternatives/editor

另外还可以使用交互式的管理工具选择设定(Thanks Jayden Suen):

update-alternatives --config editor

难得感冒

是的,偶感冒了。前天晚上去游泳,从小区门口的游泳馆到家门口的十分钟的路上,突然暴雨如注。基于游好泳从来不擦干就套衣服所以身体本来就是湿的这个事实,我没有加快脚步,也没有毫无出息地躲到一边去,我只是继续漫步。那是多么难得呀,当时我这么想。很久没有这么大的雨了,也没有其他人需要顾忌,就是自己一个人,湿了就是湿了,不可能比湿了更湿了,迷蒙的眼睛需要不断甩头或者用手掳去那层雨水才能大致看得清前面的路。透凉的雨水从四面八方冲到我衣服里面来,伴着一阵又一阵的疾风的拍打,我仿佛到了一种无以名状的高潮。痛快呀真是痛快。上次这样还是初中的时候,骑着老坦克在松江的老街上。那条老街早就没了,变成了毫无沉淀又没有一点新意的拓宽了的水泥马路。不过那种痛快一点都没有变。

按照我的经验,无论是洗冷水澡,还是泡雨,只要咬紧牙关,守住丹田的一股气,不要让寒气从背脊浸入,就一定不会着凉感冒。洗完澡还要尽快擦干,这样身体虽然是冰冷的,不过里面是热的,用不了多久就会浑身舒适的发起微热来。

那天可能是失意了,没顾上守丹田,回到家又冷水冲了把便光着膀子开始看电影起来。加上台风来临的那一夜打开前后阳台的门窗通畅地吹风,终于第二天早上,发现喉咙发毛了。这就是说,感冒确确凿凿地来了。好多年没有感冒了,其实也没什么大不了,就是总流清鼻涕很讨厌,口水也总像咽不干净似的。

今天已经有好转的迹象了,估计再过一两天就会好全。每次生病,免疫系统就会升级一次,所以这是好事。

Perforce 点滴

我恨 Perforce。虽然它更快更强大,不过着实是为机器考虑,人用起来不直观,也麻烦。

如果要添加一个目录,Subversion 只需要:

$ svn add directory_name
$ svn ci -m 'adding ...'

Perforce 根本不对目录进行版本管理,所以没有类似的添加命令。Perforce 永远只对文件进行版本跟踪。添加一个文件之后,那么这个文件的路径决定了所在的那些目录也同时被“添加”到仓库中。由此引来一个问题,删除文件后留下的空目录就要手工删掉。虽然这些空目录不影响仓库,不过这样多少体现了仓库和工作目录的不一致性,比较容易让人 confusing。所以 Perforce 里面添加目录就只有一种方法,依次添加所有其中的文件。这是一件苦差事,所幸还有条捷径:

$ cd directory_need_add
$ find . -type f -print | p4 -x - add
$ p4 submit

类似的删除目录的操作也是如是,把 add 换成 delete。

此外最讨厌的是不知道本地修改了什么文件(如果事先没有 p4 edit file 作声明的话),以及哪些文件还没有纳入版本控制。Subversion 简单,只需要 svn status 就可以从首字母看到状态。Perforce 没有从人的角度考虑这些问题,所以只能多走几步:

$ find . ! -type d | xargs p4 have 2>&1 > /dev/null

麻烦呀麻烦。

台风来了就该停课

一夜风雨大作。小区里汽车警报不绝于耳。明显这次台风比上回要猛烈得多,却不见电视台通知中小学停课。只要停课了,我想我就该可以在家工作。于是天还没亮,出去赶班车。工地上搭建的临时围墙所用的钢片在疾风的鼓动下睈睈作响,甚至于有一两片竟然飞了起来,直冲我面前。谨慎地躲过之后,我暗想,我可真是冒着生命危险去上班的啊。

悠长假期

十一长假行将结束。两个字很累。

很多上班的时候不能做的事情都放到假期来做了,于是那个忙啊,转战南北,早出晚归。唯一令人愉悦的是不用惦记明天还要去上班这件事情,笃笃定定地想要磨蹭到多晚就多晚。

又恢复到 84.5 KG 了。我和老婆说这是因为 AD-36 腺病毒,我还说你现在这么胖估计也是从我这里得到了 AD-36,老婆连连点头。

剪了个头,把原来额头楼梯阶子般的发际清理成了标准的凸字形,看着镜子陌生了好几天。还冒出了怎么可以这样,这不是我的人生的想法。

三十而立

再过几天我就要三十岁了。想来好可怕。就算我能活 90 岁,那也是三分之一过掉了,更何况后面的 30 年身体不行,生活质量一定不高。所以我只有三十年可以享受人生了。可我真的享受么?似乎总是在不如意和烦躁以及劳累中度过的,伴随着希冀未来的美好。当然偶尔也会开心那么一阵子,却总如昙花一现,还没来得及尝出味道就已经消逝得无影无踪。然后猜想,哦,可能刚才的就是我人生中最快乐的顶峰吧。这么揣测多少有点鲁莽,不负责任,可我却总爱这么想。

好了,本来我可以说 2008 年才三十岁的,可大家非要把我在妈妈肚子里的那十个月也算作一年,所以凭空提前了一年到三十岁,这不太公平。都说三十而立,我还没有开始立。一直都不想长大,像个孩子般的,多单纯,多快乐啊。可身边的人都在推你,结婚都结得差不多了,娃娃都可以排一条长龙了,买车的也不在少数,还有人开了公司赚了大钱风光风流。而我呢,一直和可爱的老婆生活在童话世界里不愿出来。这个莫名的三十岁生日没有带给我多少快乐,倒是很多紧迫感。

眼看着父母也渐渐老去,陪在身边的时间也越来越少,甚至说起话来有时候都觉得好客气,无形之中有些距离感,悲哀。想要做些什么,即便做了却也总觉远远不够。父亲的脾气不好,摆在以前,我可能还会因为过节心里不平,放到现在,我就坦然笑笑,毫无要对仗的想法,他是我父亲呀,为我付出了那么多,为了赚 4000 块钱给我上大学付学费,一个人三个月给人家装修房子。父亲的脾气再坏,过不了多久也会缓和下来,和我拉拉家常,举家和睦。

过去的几年间,见了很多的生和死。一直在思考生是为了什么。三十而立,该要思考做些什么了。

PSP – 我的第一台游戏机

psp2000pink

我终于有了自己的 PSP 还是二代的,这是老婆给我买的生日礼物(谢谢老婆)。虽然我不是什么游戏狂人,对游戏也不怎么感冒,不过我还是蛮喜欢它的,以后在上下班的路上就可以有的消遣了。

机器是粉色的,老婆喜欢这个颜色,虽然是我的生日礼物。机器 1500,4G 高速卡 350,然后贴膜刷卡什么的总共 1900 元。发现最好玩的就是 Locoroco 了,可爱极了,一个同事的手机铃声也是这个里面的音乐,也很耐玩,适合我这种游戏细胞不是很发达的人玩。其他的游戏还在慢慢探索中,就是现在没什么概念,乱试,等待发现合胃口的。

貌似老婆比我还起劲。