2015年二月月 发布的文章

ubuntu下wifi硬件开关自动关闭

刚装好ubuntu 14.10 kylin的时候,发现wifi硬件开关未开,fn+f2也没用。各种尝试下,发现按完fn+f2后再按fn+f1睡眠起来之后就好了。
今天打算解决这个问题,找了一会,发现也有遇到相同问题的。有个在知乎问了,说没查到其他的,然后知乎上有回答的。按照他的回答,发现没用。
后来又搜到一个,看来是因为华硕的笔记本的原因。原来只要按fn+f1就够了。要解决问题可以参考这个链接
测试成功,但是貌似还是不能自动连接。

Source: xundaoinfo

whitespace解释器实现

最近学习rust,想到写什么东西练练手。简单的都写过了,web相关的库不成熟,就连std::io都在alpha后变过几次了。只能选取不涉及io的,用到容器的来试试。想到了之前一直没实现的whitespace的解释器。这东西看起来有点复杂,我用php写了个原型,原本想做成lexer和parser的。实际写的时候,发现其命令其实很简单,只是只用了LF,space,Tab,所以需要排列来构造唯一的序列。其实设计还不错,本以为还会有a命令是b命令子串的情况。结果并没有这种情况。lexer还有点用,但是parser基本没用,开始还麻烦构造语法树,后来发现这个其实就是一种低级类似汇编级别的语言,根本不需要语法树,直接翻译就好了。
php实现解释之后,觉得这种翻译成二进制由vm执行也不错。结果用c写了个vm。写着写着发现,如果不是ws的字符有点怪,翻译成pop,push这种,其实就是一种虚拟机上的opcode。于是查了下虚拟机相关内容。用c实现了一个简单的,这次opcode由自己设计。
whitespace实现中,除了开始一些处理和调试外,后来明显没错误了,但是执行结果老是和他官方对不上。后来研究了一个实现,(ws资料和实现都非常少),发现算数操作和比较都需要把堆栈上的top元素pop出来,而我开始没pop。还有要注意的是输入输出的时候,stack存的是heap上的地址。

官网
wiki
项目