All Stories

想学一下Rust

Rust总用来跟C++,尤其是Go来对比。我也差不多学了并用了近一年的Go,基本上可以用来独自做些并不复杂的程序,最近特别想去学一下Rust,想看看到底和Go各有什么优缺点。

TabPuTTY

之前很长一段时间都是用ConEmu来实现Tab化的PuTTY,后来由于发现PuTTY的屏幕刷新不如SecureCRT的快,最近用了一段时间的SecureCRT,不过又发现SecureCRT有两个很让我受不了的问题:

2014回顾,2015计划

2014年这么快过完了,真是有点不知所措,很多计划中的事情依然没有完成,甚至没有开始。

最近的想法

最近又在胡思乱想。

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了,比如以下这些代码: