All Stories

近况

忘了从何时起,就不太乐意写blog了,一直在长草。前两天从知乎网友Jim处扒来一个非常简洁明快的Jekyll theme,于是打算写点文字除除草。

使用qterminal替代LXTerminal

发现FreeBSD上的LXterminal很容易在输入长命令时换行错位,于是胡乱覆盖掉前面的内容,就很难好好地输入完一整条长命令。这事在Debian上没遇到过,我也只在Debian上装过LXDE并使用LXTerminal。其他在Linux上用过的Terminal也只有GNOME Terminal和Mate Terminal,感觉吧每种Terminal都是配合自家的DE的,虽然可以混用但心里总是有点疙瘩。

旧版本Protobuf在Serializing方法crash

花了几天时间,把原本基于XML的IPC重要部分都改成用Protobuf了,之前以为会大幅度提高运行效率,结果发现原本用RapidXML库生成消息,比填充Protobuf结构慢不了多少。不过可以肯定的是,消息长度缩短为差不多是原来的1/4了,原本16KB左右,之后4KB多点。

学好数据结构很重要

今天早上csdn的人打电话来催了,让我快点提交应用,我说我已经写了一半了。其实不然,我只能说只搭了个框架,所有核心的内容都没开始动手呢。这次又是被block住了,又是因为不能为这个业务设计一个合适的数据结构而进行不下去了。总的说来简单的数据结构在学校时学过一点,然后就一直啃老到现在,但一直缺少能根据具体业务逻辑而举一反三地设计合理的数据结构的能力。真是忧伤啊!

第一篇

最近在写一个彩票辅助分析程序,觉得研究彩票是个比较有意思的事情,在网上看了很多有根据没根据的文字,想把其中的一部分用程序实现出来,也不知道有没有道理,所以同时想把这些事情记录下来。

Google Reader客户端

  最近有很认真地在写一个Google Reader客户端,仍然是使用的Qt,一切为了跨平台嘛。之前Ninayan用QML写的UI,虽然能做出一些比较炫的效果,但没有一个优秀的美工,再炫的效果最后得到的都是不好的用户体验。于是这次使用了传统Widget来做UI,感觉还不错,中规中矩的,源代码也放在github上了。   到现在为止,Google Reader的客户端功能基本上实现了,可能还有些小细节需要修改。前两天因为工作上的关系,找了点资料在看怎么提高socket的效率,公司那个产品全部是用的select模型,貌似Qt的QNetworkAccessManager类也是用的select,这个东西的好处在于大多数的系统都直接支持,思路也简单,但是对于追求高吞吐率的情况下,就得用各个系统内核各有的一套东西了,比如Windows下得用完成端口,Linux下,2.6以后版本的内核得用epoll/AIO,BSD/Mac下又有kqueue等等,可谓是八仙过海各有神通啊。然后我就又找到了asio,这个库以前用过Boost里的那个版本,没用好,当时的感觉是资料太少了,性能太差了,后来也都是尽量避开自己写socket相关的代码,直到后来用Qt中的QNetworkAccessManager。这两天抑制不住地想把QNetworkAccessManager改成用asio实现,以达到各平台优化的尽量大吞吐率。忍住!   基本功能完成后,我就开始想着把程序改成插件架构,以插件的形式支持从不同的源获取信息,比如Twitter,Facebook,国内的微博等等,也以插件的形式支持把当前内容分享到不同的宿。其实从功能上来说,跟Ninayan是有很大重叠的,毕竟当时写Ninayan也是为了做一个信息获取工具,只不过从UI的设计上限制了操作方式,最终在用户体验上会有很大的差别。

想买iPad Mini和Surface

  iPad Mini和Surface都快要发布了,各种消息满天飞,我最关心的当然是价格了,因为作为当今世界上做软件系统最好的两家公司,他们的产品足够吸引我的注意力!   不过iPad Mini最低配的价格貌似还可以接受,Surface的就远远超出我的预期了。叹气啊!但是很可能过段时间仍然咬咬牙上了,再托阿菲帮忙从美国带吧,估计Surface至少比国内买行货少花费500人民币吧。

又败了个Kindle DXG

  之前买了个二手的Kindle4,体验太好了,无论是E-ink屏,还是推送功能,都很舒服,唯一的不足是看扫描版PDF即使切了白边仍然字体过小,如果横屏来看又觉得操作不是很顺手,于是纠结了一阵后,看到有比较便宜的卖全新的DXG的,就趁刚发工资咬牙买了。   昨天早上在taobao拍的,今天下午收到货,然后迫不及待地开箱。没有WIFI就不能免费推送,这是一大遗憾。官方皮套看起来很厚实,装了几本扫描版PDF进去,仍然感觉小了点。官方系统默认不支持中文,书名中带中文的在目录中也不能正确显示,这是点小瑕疵。   忧郁啊,赚的钱远远不够花。这两天遇到瓶颈了,写程序写啥啥不会。想给Ninayan加上链接保存到Readability和发送到Kindle的功能,想想多简单的特性啊,居然遇到很大阻碍。

装了Mint

  买硬盘有一段时间了,当时的想法是可能要做Linux平台的开发,所有自己家里的机器上也得正儿八经地装个Linux某个发行版,于是纠结了很久,终于在京东上花了总共780块大洋买了个WD的绿盘2T。结果把硬盘装入机器后,只是分了十几个分区,就再也没动静了。   后来过了大概2、3周吧,实在对自己鄙视得受不了了,翻出两个8G的U盘来,一个是花了20块大洋从淘宝买的,谁料想过了没多久公司(已经是前公司了)又因为十周年纪念每人发了一个8G的U盘。于是从网上找资料看了一下,在Windows系统下用一个叫Win32Image Writer的程序把Linux发行版的ISO镜像写到U盘里,就可以从U盘启动安装了。   先是装了个Debian 6,用的GNOME,装好后发现屏幕闪得厉害,估摸着是显卡驱动的问题,据说ATI的显卡Linux就是支持不怎么好,我的是Radeon HD 4540,从网上找了一圈各种解决方案,试了各种配置和开源闭源驱动,都没效果,很失落。本来对Debian的印象很好的,就是一种运行速度快,而且稳定的发行版,因为曾经在公司用VirtualBox装了LinuxMint和Debian同时编译clang,发现在Debian下要快不少。可是现在的闪屏问题使得这个系统处于基本不可用的状态。后来我还试了换GNOME为KDE,果然没用。于是知彻底绝望了。   因为Debian的闪屏问题搞不定,于是只好试着装装Ubuntu12.04这种小白发行版,它果然一装上就所有驱动都搞定了,不光是我那块显卡,连在10.04时需要自己找相同芯片其他牌子无线网卡的驱动源代码来自己编译安装才能使用的Fast无线网卡都直接驱动了。真是让人感叹果然是个适合我等小白使用的发行版。本以为问题就这样搞定了,于是下载了qt呀,qt creator呀,clang呀之类的源代码,都编译了使用。可是好景不长,不到两个星期,就出现各种问题。比如启动特别慢,在红黑屏要停留很久,一开始都以为是启动不了了,后来才发现是因为需要时间很长。再后来,各种已有的分区不能自动挂载了。虽然可以自己敲命令挂载,但终归让人心里极其不爽。到现在,居然不能关机了,一直停在关机logo界面里了。失望透顶,Ubuntu是从7.x以来,各个版本都装过的,窃以为最不稳定的Linux发行版,没有之一。   今天实在对Debian和Ubuntu失望之极,打算再换个发行版试试。之前在VirtualBox中用过不短时间的Arch,Fedora,openSUSE和Mandriva,对于Arch和Gentoo,我就担心显卡问题搞不定。对于后三者,不是很喜欢它们的包管理机制。于是最后打算看看Mint吧。以前在VirtualBox中也装过Mint,现在公司里还装着用呢,它默认不使用GNOME或KDE,而是使用Mate或Cinnamon,感觉挺精致的。在装Mint还是LMDE之间犹豫了一会儿,后来看LMDE用的是Debian的testing源,在我看来相当于放弃了Debian的稳定性这一大优势,所以还是用Mint吧。安装过程仍然一样,写入U盘可以当Live盘启动,然后安装,很快很傻瓜。而且我之前装Debian和Ubuntu把它们的/home都放到同一个分区,而且两个系统中都用相同的用户名,在Mint中也这样做,就可以直接使用以前做好的一些把配置写到/home目录的软件的配置了。   Mint用了近一天了,感觉不错,就看它能用多久吧。