momo zone

调核人的blog

Monthly Archives: 七月 2013

败一个802.11AC的wifi路由器

netgear的R6300v2 升级到了800Mhz的双核A9 ,以及usb3.0 和256MB ram,还有128MB的flash。应该算是目前的顶配。拿到手上感觉做工真的和asus-66u和cisco的EA6700没法比,敢问netgear你能不能把网线接口换成金属的,你就这么差钱。 装上去后发现我的intel 6350AGN终于在linux下能跑到450Mb了,之前的netgear G300N 配合这张卡连150Mb都不到,而且极不稳定,几乎不可用。没想到原来的G300N竟然和linux的iwl驱动有兼容性问题。怎么intel的内核开发者没人注意到呢。

刚发现了一个bug,应该是netgear固件的问题:
当intel 5350以5G信道连上去后,显示链路带宽是450Mbit,iperf 20pair 实测达到最大值是30MB每秒,相当不错的速度,但我把机器休眠,路由器闲置一段时间后启动,发现最大的链路带宽只有150Mb了,iperf速度也上不去了。我然后把iwlwifi模块卸载重新初始化后仍然是150Mb,再重启kernel还是一样,除非路由器重起。估计是固件的问题。

IMG_0647
update:
更新macbook air 2013款AC网卡的测试结果:
MACAIR_2013_80211ACTEST

这速度…….相当凶狠,都超越千兆铜线了。

update:

最后证明R6300是个坑爹货,自动掉速不说,最后刷了国际版固件直接就是速度上不去了,严重的设计问题。和linksys的EA6900根本没法比

贴一个路由器评测网站自己看

http://www.trustedreviews.com/linksys-ea6900-ac1900-802-11ac-router_Peripheral_review#tr-review-summary

http://uk.hardware.info/reviews/2869/10/netgear-r6300-80211ac-router-review-gigabit-via-wi-fi-performance-80211ac

打扫了一下卫生清静了不少

程序员是一种很懒散的动物,但这并不是说程序员不注重细节和追求相对完美
最近接到了一些脏活,给平台产品的所有组件打一个包,虽然意义不够大,但对于前端人员应该会感到比较爽,rpm包是广大“人民群众”喜闻乐见的,因为它方便部署。不过就在我接到这个任务后yum的作者,某位大神因车祸去世……

打包整理看似很简单,但实际因为涉及gnu make, bash, python, perl,rpm spec实际上要想最后打得漂亮相当困难。team里有几个古怪的程序员搞了perl发布程序,我还不能去给他做外科手术,无从下手。还有些程序员喜欢用bash做一切事情,导致这些bash又臭又长,晦涩难懂。花了两个星期,当我把最后一个提交发出后顿时感到周围清静不少,当然还要前端买帐才行。

记录一下这趟活里面值得记录的东西,之前自己很少折腾Makefile和rpm SPEC万一那天再干这种脏活,有些细节还是记不得了
1. 一定要把make的缺省规则放在第一条,在写嵌套make时总是缺省的generate target, 也就是直接调用下层make,如果下层缺省的generate target是个install target就惨了,比如在rpmbuild的时候会被install两次。

2. rpm spec中的一些shell转义字符会被rpm首先换掉 比如date ‘+%y%m%d-%H%M%S’ 出来的就是130405-070809OURCE,莫名其妙,原因是%S先被替换成了%SOURCE然后才是%S替换成秒。正确的写法是data ‘+%y%m%d-%H%M%%S’。

3. 和2类似的情况,如果想在SPEC中把某个宏注释掉,比如%configure, #%configure这样的写法是不对的,因为rpm首先是对%configure进行替换,正确的写法是#%%configure。

4. shell脚本要写得严谨些,比如下面的就不行:

[ -f /etc/a ] && .........

下面才是正确的

if [ -f /etc/a ]; then .......... ;fi

5.如果要在规则中将某个shell的执行结果作为shell变量内容要用$$:

branch=$$(git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/' -e 's/-/_/g')

或者

branch=$(shell git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/' -e 's/-/_/g')

6.在Makefile规则中的shell好像无法更改Makefile变量
7. 如果Makefile里的target 需要shell脚本,那么直接写上去的情况下,在执行make时,这些脚本的内容会输出到标准输出。想要隐藏的话就要用$(shell ……) 这种写法。另外遇到一个很棘手的问题:我在target中需要对一个命令的执行结果做判断,也就是判断$?的值,但是结果是莫名其妙,因为$?被make先解释了。所以要判断的命令还是尽量放在target之外先去执行吧。

8. rpm spec中的%files宏最后不要忘记记录需要安装的文件