All Stories

websocket程序开发

之前提到过在公司的一个项目里用了websocket,client侧用C++开发,选了libwebsockets,使用的过程中遇到一些问题,这一个星期都是在不停地解决各个问题,好在现在终于基本上都搞定了,现在记录下来。

Relay Bugs

Relay在线上时不时报些bug,不但客户和公司的人怨言颇多,我也苦不堪言。每次出现问题的时候,美国的PM都会在邮件里说Relay是个very important的东西,万万不能出问题,可是我怎么没看出公司对Relay有very important的重视和投入呢!整个项目除了web前端页面,其他的几乎是我一个人在开发和维护,而且我全职投入也就不到一年时间,后面就重心放在其他项目了,特性仍然在加,bug仍然要改,投入时间却是越来越少,直到现在每个月都不能保证有一二十个人时在上面。前些天一个QA说Relay的bug最多了,这时另一个开发帮忙说是因为投入时间太少。虽然说的是实话,但仍让我感到很惊讶,总算还有人知道实情。可是那些PM,Director之类的却不知是真不了解情况还是故意视而不见。

对Go不够熟练

虽然使用Go语言写东西已经有一段时间了,但仍然不是很熟练,一些常见的用法仍然要不停地翻官方文档和搜以前写过的代码。前些天用Go的zlib包对数据进行压缩再传输,发现小数据量,比如4MB以下,总是压出结果只有2字节,这是明显有问题,实际上大点的数据量,比如5MB或更多,虽然压出的结果不是2字节了,但现在想来也是有问题的。看了很多网上的代码,发现跟我的几乎没区别。最后偶然才发现,原来是得到一个io.Writer写完后就马上关闭,再去看压缩后的结果,那时就是正确的,而我之前一直是在关闭前就去取结果了。

近况

前些天Google突然宣布中国开发者可以向100多个国家地区发布付费用户,中国开发者注册账号以及收款啥的也都有了极大改进,我本来就一直有想法要在适当的时候注册一个开发者账号的,于是立马冲动地去花了25刀,还把istkani传了上去,不过后来发现一些问题。当初为了买Nexus 5,把这个账号地址设成一个美国地址了,貌似现在这个开发者账号也成了美国的开发者。听说没有办法改成中国的,除非新注册一个账号,囧。发布的app改不了价格,在后台改价格是成功的,但前台看到的价格仍然是老的。不过有一个比Apple App Store方便的地方是,Google Play似乎几乎没审核,发布上传新App的操作也简单得多,之后等几个小时就直接在Google Play里能搜到了。

使用Qt实现iOS push notification

先看一遍Apple的官方文档或者网上随便找个入门介绍文章,知道代码主要要做的是在AppDelegate里开头做点初始化工作,然后实现几个函数。Qt对各个平台底层都做了良好的抽象和封装,好在有人做过些相关的研究,可以自己写个AppDelegate替换掉原来的那个。那块代码抄过来后,要注意的是因为我们替换原有的AppDelegate已经过了didFinishLaunchingWithOptions的时机,所以我们在自己的AppDelegate里写一些初始化的代码在didFinishLaunchingWithOptions里是没用的,我的办法是在替换AppDelegate后再做那些初始化工作。但是另外带来些问题,原来写在didFinishLaunchingWithOptions里的一些代码是可以work的,写到其他地方时可能就直接crash了,比如以下这些代码:

遇到的一个网络编程的bug

之前遇到一个bug,一直想不通为什么会出现。具体现象是程序一直尝试去连接一个没打开的端口,过一段时间,可能是几分钟,也可能是几天,那个端口突然被程序自己打开并连上了,然后读到了一些计划外的东西接着断言失败了。我仔细检查过整个程序的代码,有哪些可能会打开一个新的端口,结果没有发现。后来用gdb挂上跑,在listen,bind之类的函数打断点,也没见hit,但bug仍然出现了。

最近的网络开发工作

之前说过,我把一个项目中的程序线程数都尽量减少了,差不多就是一个程序用一个线程来跑一个event loop来服务所有socket,结果这几天发现似乎性能有点跟不上了。

部署Go程序到搜狐云景PaaS

之前注册了搜狐云景PaaS,被送了100元的券,不过当时看了一下发现不支付Go程序,于是就没玩下去了。前几天连续收到几封邮件,说钱要花完了,也没放在心上,觉得反正玩不了,就随它去吧。今天在v2ex上看到有人说可以免费送3个月的使用配额,于是又上后台看了一下,发现它居然使用限制那么少,可以自己在配置文件中指定要运行的程序路径,这样就可以部署Go程序了,立马把之前在京东云上部署的ifconfig在搜狐云景上也部署了一个,感觉还不错。

近况

有好些天没写blog了,只是一直没想动手而已。