virtualbox无法启动虚拟机

virtualbox无法启动虚拟机

前几天系统升级到win10,初步体验了一下,感觉不如win7,不过已经升了,也就算了。但是比较闹心的是,virtualbox无法启动虚拟机了!vbox中共创建了两个虚拟机,分别是Debian7(32bit)和Debian7(64bit),都无法启动,一启动就报错:VERR_VM_DRIVER_VERSION_MISMATCH。

在网上查了很久,并重新装了vbox的4.x版本和最新的5.x版本,问题始终存在,一度误解为win10的问题。今天无意中发现vbox安装目录下有driver目录,考虑到出错提示的信息隐约和驱动有关,因此试试安装了其中的驱动,问题居然就好了! 安装文件为以下文件(视vbox具体安装目录而异),右键点击文件,然后点击“安装”即可:

D:\Program Files\Oracle\VirtualBox\drivers\vboxdrv\VBoxDrv.inf

回顾问题,究其原因可能在于win10是升级,而不是全新安装,因此残留了vbox以前的一些配置,而这些信息在两个系统中又是不一致的。vbox自身也有问题,删除旧版本时显然没删干净,至少旧的驱动程序保留下来了。

python的小坑:%u

python的小坑:%u

最近在开发过程中,有一小处代码需要将一个无符号32位整数转成字符串,于是想当然地按照C格式化的方法,采用了类似写法:

print "a=%u"%-1

本来预期是输出内容为:

a=4294967295

实际结果并没有转化为无符号整数,仍然采用了有符号整数方式:

a=-1

作为一名C/C++程序员,对这个结果自然感到惊讶。很显然,python把%u和%d等同起来了。于是搜了一下python的文档,在字符串格式化章节中有这样的描述:

%u Obsolete type – it is identical to 'd'.

根据这文档中的内容,又进一步找到了PEP-0237,其中又强调了这点:

this means that '%u' becomes an alias for '%d'.  It will eventually be removed.

虽然不是很理解为什么采取这种做法,但是很明显,在python代码中不应该再使用%u了,这个格式转换完全等同于%d,而且在后续的版本中有可能会被删除掉。

在空闲之余,又挖了一下python的代码,的确也反应了上述各项说明:

  • PyString_Format 函数中,’iduoxX’都按照 PyInt 处理;
  • 接着在 formatint 函数中,明确进行以下转换:
  • if (x < 0 && type == 'u') { 
        type = 'd'; 
    }
推荐一个MSC小工具:mscgen

推荐一个MSC小工具:mscgen

在通信设计中经常需要使用消息序列图(MSC),目前市面上有很多画MSC图的工具,例如UML工具,例如我们自己的一个小工具等等。这些工具都是图形画的工具,而现在要推荐的是mscgen:一个用文字描述然后产生MSC图的工具,能生成SVG、PNG等多种格式。

从该工具网站提供的描述看,语法很简单,很有意思,精确地抓住了MSC图的本质,朴实而实用,非常值得大家尝试使用。

在日本创业

在日本创业

在网上闲逛看到的一篇blog,很有意思。是繁体中文,作者是一位在日本创业的华侨朋友,有亚马逊、微软等公司的工作经验,创业方向居然是制作小人偶(这似乎是日本的流行文化?)。于我心有戚戚焉的是他的创业历程和感悟,分享链接如下:

华侨朋友在日本创业

新闻里的香港法制

新闻里的香港法制

这个是香港大学学生“暴力包围校委会。。。推倒及造成校务委员受伤,又阻止伤者送院。。。”,结果是:除了“谴责”就别无其他维护法治和秩序的法律行动。新闻链接如下:

http://news.sina.com.cn/c/2015-08-03/060532168658.shtml?cre=sinapc&mod=g&loc=39&r=u&rfunc=5

另外一个是大陆人在机场与工作人员冲突,结果是:6被告被控9项罪名,即时监禁9至11天。新闻链接如下:

http://news.sina.com.cn/c/2015-07-30/023932159223.shtml

结论:香港的所谓法制现在基本只适用于大陆人,在大陆人身上特别容易显示“严格的法治”。而对香港成年人而言,禁锢他人、打伤他人甚至阻止伤者送院,不用承担任何法律责任。

哦,或者还可以给香港法治留点遮羞布:香港的大学生都不是成年人,不在法律管辖范围之内,而其他非学生的香港成年人可能还是能适用香港法律的。

港澳通行证换证

港澳通行证换证

昨天去南山公安局办理了换证,过程非常愉悦。与若干年前在大太阳下排队最后仍然未果的情况相比,简直天上地下的区别。在此先给公安系统点赞!实在是少有的政府部门办实事的典范。

因为是深圳户口,所以很多手续非常简单。与网络或者政策说明相比,实际上有些出入,总体上实际体验更简单。下面简单纪要一下步骤,以备自己或者朋友们参考。

(1)预约

直接在网上就可以预约。登陆深圳市公安局网站操作即可。让人非常欣喜的是:居然周六也可以预约办理!

预约成功后,会有短信通知(时间稍长)。注意:如果没有预约,大厅是不会办理的,早去也没用。

然后去照个像(必须说明是港澳通行证照)。根据朋友的经验,也可以直接在办证大厅内照像,稍贵了5元钱而已。

(2)打印表格和采集指纹

这两项是在一个地方办理。进大厅后,咨询相关的位置,扫描一下身份证即可办理。点赞!

(3)复印旧通行证

大厅内就可以复印。免费!又点赞一下!

(4)取号

完成上述步骤后,就可以在大厅前台交表格、照片、复印件取号。然后就等着叫号办理(看大显示屏即可)。大厅环境不错,空调很适度。重要的是:再也没有以前那种熙熙攘攘菜市场的嘈杂感了!再点赞一下!

(5)办理

就审核了一下前面打印的表格、旧照,然后刷卡缴费200元即可(不接受现金)。太简单,以至没啥可说。

从进入大厅开始,全部步骤大约在半个小时就处理完了!

Debian7升级到Debian8

Debian7升级到Debian8

最近Debian发布了Debian8.1版本,可以比较正式地商用了,因此打算将一套生产环境的debian7升级到debian8。

Debian不像Ubuntu,后者使用上确实方便,基本上一键就可以搞定。不过Debian也不麻烦,事实证明也很简单。

step1:关闭已经运行的一些服务器程序,例如apache, mysql, fail2ban等。

step2:更新当前版本,也就是sudo apt-get update以及sudo apt-get upgrade即可。

step3:修改/etc/apt/sources.list文件,将wheezy替换成jessie,例如下面就是目前生产环境上的配置:

deb http://mirrors.aliyun.com/debian/ jessie main non-free contrib
deb http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ jessie main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib

deb http://mirrors.aliyun.com/debian-security/ jessie/updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian-security/ jessie/updates main non-free contrib

deb http://http.us.debian.org/debian/ jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free

需要注意的是以下几点:

(1)尽量配置国内的镜像源。debian官方源在国内大部分区域都比较慢,采用国内源能节省大量时间。

(2)推荐使用阿里镜像源。阿里巴巴虽然是个逗比公司,不过阿里镜像还是做得相当不错,速度快、网络稳定,我们一直都用它。

step4:更新系统。依次执行下述命令即可:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

执行过程中,涉及到一些软件更新后配置文件有改变,默认采用原有配置。

对apache的影响

apache2升级后,配置文件有改动,导致出现“403 forbidden”的情况。问题原因是apache2的部分配置参数取消了,需要用新的参数替代。修改/etc/apache2/sites-enabled/000-default(-ssl)文件:

 Order allow,deny
 allow from all

修改为:

require all granted
一点都不好用的微信

一点都不好用的微信

在网上看到一篇吹捧微信大老板张总的文章,说得各种各样的好。作为一名用户,我觉得微信的交互做得完全不知所云。

以前不知道该怎么设置用户群组,又是百度又是google,后来的版本才发现是要添加“标签”方式。现在想转发朋友圈里一篇图文并茂的文章到另一个朋友群组,死活找不到操作方式:要么只能复制文字重新发帖、要么只能转给某个人或者特定的对话,而且还不能直接转发,非要转到原发帖人的文章页面,找到那篇文章,再点击右上角“三个点”的符号,然后再选择人或者圈等等。

今天本来想转发朋友的一个帖子,寻寻觅觅地操作了N次都失败了,怒!我觉得微信的崛起,主要是用qq的资源强推,以及国内同类竞争对手实在太烂,与所谓的人性化设计毫无关系。

光纤断了?

光纤断了?

支付宝今天出了问题,新闻链接请点这里

阿里真是个奇葩公司!去年天猫数据造假,说是程序员干的,被舆论逼急了,撸下去一个总监(?)。今年HR造假,结果却是处罚了三个程序员。这次没法说是程序员问题,就把责任推给光纤。

太诡异的理由了!

这么重要的一个产品,没有异地灾备?难道说所有支付宝相关机房的光纤都被铲断了?我们能想象弄断一根光纤就把中国银行的银行卡给搞废么?很难相信支付宝居然没有灾备系统,因此这次的故障,极有可能是内部出问题,光纤只是新的背锅侠而已。

阿里缺乏坦率面对问题的勇气,已经习惯了滑溜地找各种借口。

Apache自动输入密钥文件密码

Apache自动输入密钥文件密码

从startSSL申请了证书并成功加载到apache,这些都是通用步骤,具体可以直接参考startSSL的说明文档:http://www.startssl.com/?app=21

然而由于密钥文件是采用访问密码保护,因此重启apache时,读取密钥文件会要求手工输入密码,例如以下提示信息:

Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.
Enter pass phrase:

这样非常不方便,因此需要将密钥的访问密码告诉apache,并自动输入该密码。

以下步骤都是以root身份进行,系统为Debian 7。

创建shell文件:vi /etc/ssl/apache_pass.sh,并输入以下内容,用于输出访问密码:

#!/bin/sh
echo "1234" <-- 这个是密钥文件的访问密码

出于安全的考虑,将这个文件设置为可执行,并且只能由root访问:

chmod 400 apache_pass.sh
chmod +x apache_pass.sh

接下来就是修改/etc/apache2/mods-available/ssl.conf文件,将SSLPassPhraseDialog由默认的builtin修改为以下值(其实就是执行上述shell文件):

SSLPassPhraseDialog exec:/etc/ssl/apache_pass.sh

完成上述步骤后,重启apache2,将自动输入密钥文件的访问密码,不再需要手工操作。