All Stories

netlink需要root权限

这周一直在按计划重构Relay,今天就做到改用netlink监控进程退出事件。发现如果是普通用户的话在bind socket时就会返回权限不够的错误码,尝试用sudo来运行就可以正常bind了,这让我不由郁闷了好一阵子,因为我一直想的是Relay可以用普通用户就可以正常运行的。后来再想想,把Relay当成像nginx之类的服务来设计的话,要求用户以root权限来启动似乎也不是太过分哈。照计划中,估计也只有Linux上用netlink是要用root吧,Windows和BSD系的方法我猜是不需要特别的权限吧。

重构Relay项目

前面提到过,因为了读了一点《Linux多线程服务端编程》,觉得自己对网络编程有了更多的了解,可以对公司里负责开发维护的那个小项目动手重构了。这个小项目从功能上简单说来,就是个流量转发器,也可说成是个中断器,所以项目名称就叫Relay了。几乎每个刚听到这句话的人,都会第一时间发出疑问:这种功能网上开源代码或现成工具应该有很多,比如nginx就有类似的功能,为什么要自己做一个?答案可以从两个方面来回复,一种霸道无理点的说法是,这是公司策略,这个理由足以堵住所有质疑者的嘴巴。另一种理性点的说法是,自己做可控性好,可扩展性也好,比如我们要有实时的流量统计,我们要自定义高效的传输协议,像nginx的http传输性能不能完全满足我们的需求等等。

Reactor和Proactor模式

其实我大概10年前就知道ACE了,并且把国内翻译引入的3本以ACE为蓝本的讲C++网络编程的书都收齐了,之所以说是收齐,是因为自己买了两本《C++网络编程》,而由译者马维达送了一本ACE开发指南。但是三本书入手后并没有认真读过,后来工作上也跟C++网络开发基本不相关,于是一直了解不多。直到现在这份工作,虽说终于转向网络开发了,但实际上要么因为老代码已经把底层封装好了,要么就直接用了Boost.Asio而不求甚解。

薰衣草小熊长虫

妹子生日的时候她表妹送了一个Bridestowe牌的薰衣草小熊给她。当时的多开心的,在电视上看到过某演艺圈的明星就是做这个生意的,在国内受到热捧。前段时间我在淘米的时候偶然发现这才买来没多久的袋装大米里居然有一两只米虫,虽然觉得这种品质的大米里会长米虫很奇怪,但因为小时候自家种自家碾自家吃的米里常常会有大量的米虫出现,多的时候甚至能听到“沙沙”的虫爬的声音,记得那时候爸爸还买来那种杀虫的药粉来撒在上面,所以我也没怎么当回事。前些天妹子突然发现放在床头的薰衣草小熊外面爬了好多米虫,幸亏外面套了个纱袋,才没让虫子大规模分布在整个屋里,但想来已经有一些能飞能爬的跑到外面去了。

新项目计划——密码管理

这两天看论坛,又想到两个对我来说比较有用的东西。其中一个是密码管理。

Bad Day

早上出门打算开车上班,刚起步就听到有奇怪的声音,像是什么东西卡住了,下车绕着车看了一下4个轮胎,似乎是正常的,再起步,声音还是很大,踩刹车的时候声音特别大,于是只好决定不开车了,等周末的时候找家修车的检查一下,真烦躁!

近况

周一去换了驾照,因为本人去深圳实在不现实,在网上看到可以直接转成上海驾照,于是就这么弄了。花了450元钱,就在车管所对面,一座要被拆掉的小楼里面,很山寨的问了一问“你开车的时候戴眼镜么”,这大概就算是体检了,然后在另一个房间里拍了张照,交了钱把身份证、临时居住证以及旧驾照留下就可以走了,隔一天就会用顺丰把这些证件送过来。明明走正规流程非常复杂繁琐的,只要交点钱就能非常便捷,这就是天朝现状,可谓生财有道!

诸事不顺

今天早起送妹子去了火车站,回来休息了一下便出门办事。因为我的驾照快到期了,原本是深圳发的如果要在深圳续期的话非得本人跑去深圳不可,不光是要拍带回执的照片只有深圳的照相馆连得上深圳的相关部门的网络,指定的体检的医院还只有深圳的,所以对我来说成本过于巨大。好在后来网上搜了一下,像我这种情况的人可以直接在上海把驾照转成上海的,只要去指定的地点带上身份证、(临时)居住证和旧驾照,以及几百块钱,当天就可以把拍照和体检等所有手续都办完,顺便续期。因为我的临时居住证早已过期,我今天就打算先去续一下,于是先跑到居委会所在,大门紧闭,一张工作时间贴在门上,只有工作日才开放。怏怏离开,抱着试试看的心理去了镇上的社区服务中心,一问果然还是要居委会开的居住证明。只好下周一请假了!损失真不小啊!

Go语言学习进展

学Go语言已经有一段时间了,其实之前就一直在改Yiili就是用Go语言写的,但毕竟只是在别人已经比较完整的程序上修修补补而已。从周日开始总共花了近3天时间,把公司那个项目的消息转发服务器用Go语言实现了。主要还是不够熟练,很多基本的东西仍然要不停地翻说明文档和在网上查解决方案,所以比较慢,相信熟练起来后这个时间可以大大缩短。这个服务器只是个RESTful API服务器,功能也非常简单,包含了操作数据库和memcached,代码量总共才几百行,真爽快,如果用C++实现肯定不止这么点。