绿色守护治不了腾讯地图但阻止运行能

安卓手机上,我之前一直在用绿色守护来对付平时使用中不必要的后台程序。在屏幕关闭后几分钟,在绿色守护列表中的程序就会被自动关闭。这样它们就不能一直推送奇奇怪怪的消息给我,以及没有特别深刻体会的据说能够加速手机运行(因为后面跑的服务少了)。

但是在一次批量的程序升级之后,手机出现了奇怪的状况:时不时就振动一下,但是打开发现又没有短信或者通知或者电话。就是振一下、振一下。闹鬼似的。

继续阅读

服务器迁移

其实想要换一台网络状况好一些的服务器已经很久了,这事情想着想着拖着拖着,随着一次又一次给原来的服务器续费而计划终止。这几天突然又想回某不存在的140字符SNS网站上上玩了,正好这会儿服务器续费通知来了,又逢春节放假,会有时间折腾,就订购了一台在美国洛杉矶的KVM VPS。(之前问了客服,客服说在中国连过来比较快的是他们的洛杉矶机房服务器)

因为换了KVM,操作系统比起原来的OpenVZ能选的多了不少。我安装了NetBSD在上面。想玩玩/尝试这个系统挺长时间了。折腾了一晚上,服务器架起来原来博客的文件全部复制过来、数据库导过来,域名解析更新之后马上就能用了。体感上现在这个服务器要快不少。

配置服务器其实不应该要一个晚上的,结果NetBSD系统自带一个HTTPD(不是Apache),给搞混了,编辑了半天Apache的配置文件结果就是没反应(因为启动的是那个HTTPD)。最后发现问题所在的时候倒是很快,编辑即生效,也能看到日志。

博客都一年多没更新了,服务器日志里面还有RSS访问的记录,虽然不知道是谁不过确实给人继续写下去的动力:多多少少还是有人看对吧。虽然是就那么几个……

等原来的服务都弄过来了,下一步计划是搞新的域名,争取能够让谷歌搜索到。现在的域名可能哪里配置有问题,谷歌是访问不了的,抓取不到数据。

最近感觉工作中提升有限,晚上想自己学点什么。之前在玩的手游梅露可物语似乎越来越接近弃坑了,如果真弃坑了,至少每天晚场公会战的半小时是空出来了。不过不幸的是怎么又把灰姑娘捡回来玩了。

在上海工作、住、玩

在大学本科毕业之前,我到过一次上海。那次是第一次,主要还是因为之前根本就没有出过省(我是福建省的),然后毕业设计毕业答辩那边又没有问题了,就是等着拿证。因为之后是读研,所以也不急着工作那边的事情,于是就有了很多的空闲时间,然后就想趁着这个机会出去走走。

那次去了以后呢,感觉这地方好像不错(没见过世面吧,毕竟之前没出过省),然后又因为好多网友都在这里,作为一个平时和日常生活中的人交流不太多的人来说,也算是一个比较有吸引力的方面。所以现在就在上海找了工作,暂时先在这里。

继续阅读

x86逻辑地址转物理地址实验

之前一篇文章关于往NetBSD添加系统调用,是为了做这个实验准备的。

想要研究x86架构下的内存管理,最重要的参考文档应该是英特尔官方关于内存管理方面的解释了。在 Intel? 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide, Part 1 文档的第三个章节,详细解释了整个翻译过程,其中涉及到的寄存器和各种标志位的作用。长是比较长,而且又是英语的,但是说得很清楚。

而实验则是验证自己理解是不是正确的一个很好的方式。理论看了半天,也知道怎么算,套公式好像也能算得出来,但是却不知道有没有算对。有真实的环境,一测试一验证,就知道对不对了。如果自己理解有误,可以及早发现和纠正。

继续阅读

给NetBSD添加系统调用

NetBSD本来官方文档里( http://www.netbsd.org/docs/internals/en/chap-processes.html ,3.2.5节 )就有添加系统调用的相关指导的,但是实际根据那个指导操作的时候,会发现指导文档过期得有点严重,已经无法按照上面说的来达到目的了。然后我在其他地方找到了关于OpenBSD的教学( http://www.onlamp.com/pub/a/bsd/2003/10/09/adding_system_calls.html ),同样可以用在NetBSD上。选用NetBSD是因为它安装包小,内核编译又快,一来减少下载时间,二来减少编译时间。不过如果x86-32和x86-64都想玩过去的话,总下载量也还是会有七百来兆的:两片ISO(每个300多兆)和一个内核代码包(40兆)。

添加系统调用本来的目的是为了做“x86平台内存分页机制”实验的时候来执行一些特权操作的。这里用的系统是NetBSD 6.1.4 i386版本。

继续阅读

在*nix挂载Windows下的文件夹

最初是为了学习Unix程序设计的时候,能够更加方便地使用虚拟机:因为我将NetBSD系统安装在虚拟机中。这样的话虽然能够通过FTP等方式传文件,但总之不是那么方便。如果能直接在Windows下共享这个文件夹,然后虚拟机里面用mount挂载的话,就方便很多,文件啥的全就都在Windows下了,平时日常用的是Windows,所以对我来说是方便。

继续阅读

WDK编译boost(1.34.1)::regex

Windows Driver Kit里面的STL库啊啥的,基本是停留在VC6时代。不过也有一个好处,可以链接到msvcrt.dll、msvcp60.dll,因为这两个文件大家都有,所以可以减小最后生成的可执行文件的体积。然后比起VC6.0,WDK可以直接从微软那边下载来,而VC6直到最后也没像2005、2008、2010、2012、2013那样有个Express的免费版啥的。于是如果想自己弄了简单的小东西如果想要体积小、要链接到msvcrt.dll,感觉WDK是一个挺好的选择……

继续阅读

WindowsDDK里用std::wstring的问题

今天晚上尝试帮某网友制作一个伪春菜的插件,能够检查两次调用过程中剪贴板里面的东西有没有变化(用GetClipboardSequenceNumber函数)和获取剪贴板里的内容(EnumClipboardFormats和GetClipboardData)。这里都不是重点,重点是我用了 这一篇博客 里面提到的CSaori库来编写。这个库里面的字符是wchar_t类型,这很好,也用了std::basic_string<wchar_t>(其实就是std::wstring),这也很好。不好的地方在于,我为了减小最终DLL的体积、用Windows Driver Kit里面的编译器来编译程序使得动态链接到运行库的时候,报错了。

继续阅读

MinGW-GCC不支持通配符,make大法好

之前在公司做某个自动测试工具的时候,考虑到程序的灵活性,用了LUA作流程控制(嗯……结果到最后还被技术总监批评了,说工具本来很简单的被搞得复杂了,开始有各种奇怪的依赖了,有欠考虑)。这就需要编译LUA,但是当时公司的VisualStudio可能是配置不正确或者其他什么原因,VS的命令提示符打不开,我也懒得去修,最后用了GCC。装的是TDM-GCC 64位版。

然后呢就遇上了一个比较麻烦的问题:这个版本的GCC不支持通配符。平时我自己用的都是32位版本,新买的电脑虽然装的是64位系统但是一个是没买多久、一个是还没开发过64位程序,所以没搞过64位编译器。现在要编译出来DLL可能要给64位的C#程序调用,所以需要64位的编译器。然后它不能 gcc -shared -olua.dll *.c:出错信息说找不到叫做*.c的文件。以前一直用的32位编译器,对于这样的命令行都能正常运行的……

继续阅读

数据结构之红黑树

红黑树本来来说应该是本科数据结构教学的内容,我当年领到的教科书上也有。但是因为抓得不严,总之最后是不了了之,连有没有教过都忘记了,自己也没有去学。现在过了这么多年,开始找工作了,发现有些公司似乎挺爱问这个的,关于STL的实现我原先一直以为map是靠AVL树实现的,具体是什么书上看来的我也忘记了。只是现在知道了它其实是红黑树也无济于事,因为完全没有去了解过它,一问三不知。现在就突然想起来,想要补一下这方面的知识。

在搜索引擎上面找了一通以后,发现国内的资料基本就那么几个版本,大家抄来抄去,一上来就跟你讲红黑树的性质,为什么这样、这么来的,只字不提。看着实在也很让人郁闷。把这些性质啥的全部硬记下来,然后写一写再体会也不是说就不是办法,但是个人比较讨厌。于是就想上网去找外国人写的教学。Bing搜索的英语版搜red-black tree tutorial这个关键词,然后就找了 http://eternallyconfuzzled.com/tuts/datastructures/jsw_tut_rbtree.aspx 这个来看。在我搜索的时候,这个是第一个结果。点进去看了也是比较容易理解,就决定用这个来学了。最终学习了它的Bottom-up insertion和Top-down deleteion两种操作。

继续阅读