三月有话说

有时候,想写点东西了,却又觉得廖廖几句,不够凑成一篇像样的blog。如果把每天的一点小想法就用blog记下来,那就是在唠叨了。唠叨的话,还不如用buzz。

三月份发生的事情,我也想用韩峰局长的文体来记叙下,按时间顺序,具体日期记不得了。

  1. 3月x号,下午在淘宝上看中了moto的milestone,在支付宝上付了款,下班后叫上y.bw一起去百脑汇拿手机去了。晚上在5楼随便吃了点东西,然后我就回家了。研究手机到12点后才睡觉。
  2. 3月x号,用了一段时间的android系统后,发现M8在J.W的修补下确实符合国人的使用,一些常用的小功能都整合进系统了。可是M8一直没法出手,没法收回现金流,很郁闷。
  3. 3月x号,晚上下班回到家时,看到手机里有未接来电,打过去才知道是老家的一个姑父来电。他是给我介绍女朋友的,大学生,还没毕业,并且还把手机号发给了我。女大学生的学校离我太远了,敷衍一阵,然后挂断。
  4. 3月x号,以前只在电脑上用Google Latitude,并且还是IP定位,玩着玩着就没兴趣了,现在手机上也有,并且支持GPS定位,还可以看到好友的位置,挺有意思的。
  5. 3月x号,早上正在上班,群里一个MM问我能不能帮她一个忙,我问是什么事情,她说他伯伯的女儿现在还没有男朋友,想让她帮忙介绍一个,MM问我能不能帮她这个忙,并且还把照片发给我了。MM的伯伯的女儿还不错,可是不是我喜欢的类型,直言无法帮忙。三月桃花运真旺。
  6. 3月x号,今天要搬家,昨天晚上把东西都收拾了一下,好多灰,今天早上睡醒后,感觉肺都重了许多。
  7. 3月x号,一直以来,都为wordpress的垃圾留言烦恼,用了官方的Akismet,还是不管用,每天总能有上百条。今天换了WP-SpanFree后,立马清爽了。(27号:一直到今天,也没有一条垃圾评论出现)
  8. 3月x号,今天把ubuntu从9.10升级到了10.04的beta版,变化挺大的,变好看了,再也不是以前的S黄色了。
  9. 3月x号,早上一进办公室,就听说g.cn退出中国了。失望,上网看新闻才知道,g.cn退到g.com.hk了,并且g.com.hk的”go to english”链接一直不起作用。(27号:今天又有一条新闻说,链接不起作用是bug,囧)
  10. 3月x号,这几天在抽空学习erlang, 这门函数式编程语言和以前学的语言太不一样了,感觉很新鲜。看到并发编程后,很是感慨,C++中那么复杂的进程间通讯,在erlang中仅20行不到的代码便能实现了。erlang我猜应该是ericsson language的组合。
  11. 3月27号,晚上下班回住处,路过小摊,忍不住买了一支玉米。老板都烤糊了一片,还说这是正常的。吃了几口发现是糯玉米,不甜,又放了很多孜然粉,扔了,浪费3块钱。

C/C++之简易Logger

用C++写Logger,常见的有这几种方法:

  1. 写一个Logger类,封装诸如Info(format, …)、Warn(format, …)之类的方法,然后用个实例化一个全局对象,处处皆可输出log,不仅到屏幕,而且可以到文件甚至是网络。
  2. 在c99之前,宏定义中的可变参数…是不能直接在宏中展开的,必须在函数中使用va_list这样的方式来处理,所以如果不使用c99标准,简易的Logger可以使用
  3. #define LOG_INFO(msg)   printf msg

    这样的方式来定义一个宏,然后用以下方式来使用

    LOG_INFO((“hello, %s!\n”, “world”));

    不过,这种方法的弊端在于,LOG_INFO宏在代码中的表现看起来不太符合常理,它应该像个函数,参数周围只用一对括号才好。为什么要用两对括号呢?因为只用一对括号,每个用’,’分隔的参数都会被传进对应的宏,而宏本身并不支持多态,所以只用一对括号,在c99以前的标准下,根本没法做到。并且如果我希望在每条log前都输出标识”[INFO] “的话,只能在每个使用了LOG_INFO的format参数中增加”[INFO] “,目的虽然能达到,但是灵活性不够,一旦需要修改,处处都得改。

  4. 在c99标准及以后,已经支持可变参数在宏定义中直接展开了,所以LOG_INFO可以这样来定义:
  5. #define LOG_INFO(…)   fprintf(stderr, “[INFO] “__VA_ARGS__)

    这样,我既可以选择将log输出到stdout,或是stderr, 或是某个文件指针(暂不讨论输出到文件,因为我暂时没这需求)。并且还可以随意地在format字串里加上前缀,甚至是文件(__FILE__)或函数(__FUNC__)信息,并且使用时就像正常的函数一样使用:

    LOG_INFO(“hello, %d!”, “world”);

    如果使用gcc 4.0以上的版本,总是会有警告”warning: anonymous variadic macros were introduced in C99”出现,编译时加上参数”-Wno-variadic-macros”就清静了。

你是我心里的一首歌

小时候很喜欢看的一部动画片,可是电视不如人愿,总是只能看到其中若干集,让人巨不爽。后来在大学其间,有刻意在网上寻找过,但搜出来的都是电影版狮子王的相关资料,与动画片版相关的完全没有。那个时候,youtube都还没出来,更别说是国内的跟风者了,所以无功而返。

今天突然兴起,在tudou上随意一搜,网络果然是个好东西,年代那么久远的动画片,居然还有人买了光盘,并放到了网上。时刻这么多年,能重新看到这部片子,真的是浮想联翩。

其实,我找这部动画片的主要目的是:我小时候觉得这首片尾曲很好听,很活泼的节奏。现在再重听这首歌,别有一番风味。下面,请听曾在CCTV-1/7播放过的意大利版《狮子王》片尾曲——《从林之王》: 继续阅读“你是我心里的一首歌”

手机变迁史

华为A318

我最早用的移动通信设备是华为的一款小灵通A318,这部小灵通伴随了我1年多,既当闹钟,又能发短信,时不时的还可以玩玩贪吃蛇。当年天冷时,就窝在被子里玩贪吃蛇,一直玩到没电为止。打电话时,我就跑到宿舍楼顶,反正我坐顶楼,比较近。那时候,一句话可以形容我打电话时的样子:“手持小灵通,站在风雨中,昂首又挺胸,就是打不通”。

就这样,伴我渡过了大学中碌碌无为的一段时光。可惜最后被我在一滑旱冰时不慎一屁股给到了。话说,我的PP还真厉害,一下就把屏幕给压碎了,然后A318同志就因此重症不治身亡。

继续阅读“手机变迁史”