Home

新加坡的新年活动

过年肯定是不能回国了。只能跟同事在这边一边盯报警一边跨年了,因为疫情限制了聚会人数,所以也不能超过8个人。牛车水去逛了下人还是有点年味的,就是人多的地方也有点慌。金沙的灯光秀依然开到很晚,晚上跑步过去的时候灯还没关。鱼尾狮的灯光秀也在调试了,元旦跨年的时候Marina Bay全是人,估计春节也是。再就是这边春节是放初一初二,还都在周末,走一步退一步等于没走.. 夜色下的佛牙寺特别好看。

Read more

clubhouse体验

最近试用了一下clubhouse,算是凑个热闹。 体验clubhouse之前觉得似乎就是个聊天室的翻版,相当于村头无所事事老大爷谈天的地方,但加了几个讨论感觉确实是一个给背景不同的人提供了不错的交流途径,尤其是加了几个政治局,听了之后你才会觉得其实他们是这样想的哦。疫情实际上给用户普及了在线会议的使用,而音频更大的拉近了沟通的距离,clubhouse这种聊天室也降低了参与的门槛,避免了单向的你说我听。让我想起多年前T大梁博的西瓜大会。 当然仔细想一下其实有很多现象值得玩味。clubhouse也不是一个很新颖的东西,何况国内也有一款app递爪非常类似,而一直不瘟不火。所以到底是什么催生了clubhouse的现象级火热呢?一致的好评是因为clubhouse确实促进了沟通提供了革命性的交...

Read more

c++11的不定参数

不定参数之前其实用的比较少,一个项目里面能用到的大概只有log函数什么的。C++11支持了新的不定参数定义,之前也看过,但是毕竟使用的场景少,也没怎么研究。最近看了一下,感觉还是挺有意思的,至少比C++11之前方便了非常多,可以灵活的应用到很多场景里面,特别是模板。 之前C++ 或者C语言里面经常会看到这种写法: #define log(...) \ printf(__VA_ARGS__); // tuple example template<typename ... T> void f(T ... args) { cout << sizeof...(args) << endl; //打印变参的个数 l...

Read more

总结下最近的生活

房子终于落定了,经历了北京这魔幻的一年,该上车还是上车了。2016-2017发生了太多事情,感觉很多时候是被现实推到了这个状态,很多时候没有什么选择。晚上听高晓松和郁可唯的《一叶知秋》,突然想起大学的那些日夜。时间的流逝,生活的匆忙,偶尔想想曾经的那些简单美好的日子,觉得怅然若失。小时候盼着长大,上学的时候盼着工作,真的工作了,买房了买车了,又感念之前那些一无所有的日子。骑自行车穿梭在校园的时候,从来没想过以后会怎样,自习室老旧的座椅,后花园参天的大树,静谧的日子里,翘课看阳光投过树叶的缝隙落到校园的青石路上。曾经觉得平淡的东西,现在回想起来,似乎再也找不回来了,回想起来仿佛上天的恩赐,封存在记忆的深处,再也不会打开了。 之前很喜欢收藏这些记忆的东西,老照片,曾经的笔记本,以至上学时...

Read more

gcc的格式化字符串检查

之前很好奇为什么printf参数类型跟格式化字符串不匹配的时候为啥有时候可以报错,有时候不能报错。printf的时候如果不匹配经常会看到这种错误: format ‘%s’ expects type ‘char *’, but argument 12 has type ‘struct S3ListHead * const’ 很多core是因为这种问题导致的,所以能放到编译期检查的话,确实有助于提高代码质量。后来白哥指点gcc有单独的attribute来指定检查匹配。作为一个编译器,真是良心啊。 format (archetype, string-index, first-to-check) The format attribute specifies that a f...

Read more

用timecat来定位日志

介绍一个日志grep的神器。 做系统开发的人都有从海量日志里面定位bug的经历,大家一般用如下几种方法: head -n xxx tail -n 1,大概定位位置 直接grep日志来找到对应的行号并用sed cut一段出来。 把日志灌倒hive等ETL工具里面。 但是如上几种方式要么太慢,要么太复杂。最近突然想到有没有二分·grep的工具,搜到如下一个工具timcat: 安装: pip install timecat 使用: timecat -d ‘2016-01-02’ -s ‘20:13:14’ -e ‘20...

Read more

python是一门蛋疼的语言

最近在分析一个问题,用python写的测试脚本里面跟store节点通信的时候加了一个starttime和超时,store判断了startime跟当前时间之间是否已经达到超时时间,如果到达就拒绝掉。这个脚本在测试case数少的时候没啥问题,数量大了之后就有超时的问题。开始直接调大了timeout让测试先过去了,最近加了多重timeout判断,不能直接为了测试改参数了,分析一下怀疑timeout只生成了一次,封包代码如下: def pack_packet(ver, pcode, channel, sess, data): fields = (i8(ver), u16(pcode), u16(channel), u64(sess), i64(len(data)), i64(tim...

Read more

ccache和cgo并存的问题

ccache是加快编译的神器,有了ccache,忘了distcc。但是发现go和c混编的项目里面如果用了cgo的话,go编译的时候ccache会报错。主要是传给ccache的某些参数ccache不认识。错误如下: /usr/bin/ccache: invalid option – ‘d’ Usage: ccache [options] ccache compiler [compiler options] compiler [compiler options] (via symbolic link) Options: -c, --cleanup delete old files and recalculate size counters ...

Read more