Browsed by
Category: 计算机技术

颇有进步的Ubuntu17.10

颇有进步的Ubuntu17.10

自从上次试用了17.04版本后,感觉乏善可陈,以至于对Ubuntu渐渐没有兴趣。最新的17.10版本出来后,一直没有去试用,昨天忽然想起这事,考虑到我们的客户中有些狂热的U粉,不得不安装17.10系统检测我们产品的运行情况,顺带稍稍体验一下17.10。

效果出奇的好!实际上我得说相当意外。

miniSIPServer on Ubuntu 17.10
miniSIPServer on Ubuntu 17.10

C家自Ubuntu14.04这个LTS版本后,桌面产品越做越烂,一代不如一代,即便是16.04这样的LTS版本,也像一个半成品。当年推出MIR和Unity等概念时,也吸引了一些眼球,让人充满期待,可惜最后还只是对macOS的拙劣模仿。

这次17.10据说直接切换到Gnome/Wayland,原以为改动如此巨大(等于跑了几年的车重新回到起点),会有各种不稳定、界面会有各种妖,简单试用下来居然中规中矩,界面和各项操作回归windows风格,这点我比较喜欢,我一直认为windows才是生产力工具。Wayland表现不错,稳定性超出预期,MIR这几年不知道究竟在干什么。

虽然我一直是KDE的粉丝,如果C家和社区能形成合力,集中做好Gnome/Wayland,我觉得未来也会很美好。与其做一堆烂DE(包括KDE),浪费资源,数十年来几无寸进,不如集中精力打磨、升级一个DE。

现在我对18.04版本充满了期待。

Firefox吞噬硬盘

Firefox吞噬硬盘

我承认是个标题党,实际是指Firefox频繁读写对硬盘有一些损害(其他浏览器也有类似的问题,都属于高IO类型软件),来自一篇网络上的文章,原文请点击这里

在这篇文章中也提到了解决方式:在firefox地址栏中输入“about:config”,然后找到参数“browser.sessionstore.interval”,默认值是15000(15秒),修改这个值即可。

从这个参数的含义看,似乎是firefox保存会话(页面)的频率,一般应用而言估计也没太大意义,改大点(例如600000)好了。

 

忙碌的一天

忙碌的一天

今天度过了忙碌的一天,然而其实什么都没有做,至少没做什么有意义的事情。

昨天收到短信,告知了上次交通违规的事(请点击这里了解细节),于是上午就打算去处理这事。先跑蛇口交警大队,据说打印机坏了,不处理,然后跑到南山交警大队去处理(人山人海啊)。结论是罚两百,不扣分,因此其实不用打印,直接在自助终端交罚款就行。在查询的时候咨询了交警同志,也认为这种罚单是有疑问的,想想折腾回江西提出异议的各种可能,还是直接交罚款了事。

一上午就这么过去了。

中午收到了windows系统升级的通知,于是习惯性的点击同意:升级失败回退一次;再次升级,中间异常退出若干次;升级完成后,出现几段鸡汤文字,然后卡死一次;冒险重新启动,然后发现程序异常一次……各种心惊肉跳的感觉。终于升级完成,版本变成”14393 187″,忍不住吐槽:真丑!微软越做越奇葩了,是因为三哥当头了么?

一下午就这么过去了。

晚上看着熊孩子写作业,怒火中烧,怎么就教不会?!

一天就这么过去了。

 

掉坑里了

掉坑里了

Qt无疑是个非常好的framework,我们一直用TA。虽然不敢说已经是行家里手,不过好歹也开发这么久程序了,渐渐地有些自负起来,因此掉坑里了。

坑来自Qt最经典的设计:signal-slot。我以前的理解这是异步的,常用于模块间解耦。在windows平台,这个理解似乎没错,signal-slot底层依赖window的message机制。而在linux平台,其实现方式默认仍然是callback机制。

callback机制在多线程编程里最容易出问题的就是“锁”。这次掉坑里,就是在slot中应用“锁”时不小心,导致了死锁。

这次竟然忘了这点! :-(

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自身也有问题,删除旧版本时显然没删干净,至少旧的驱动程序保留下来了。

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,将自动输入密钥文件的访问密码,不再需要手工操作。

hg小技巧

hg小技巧

比起大名鼎鼎的git,mercurial/hg相对来说默默无闻一些,不过我们一直使用hg,而且感觉还不错,与git相比该有的都有,不该有的都没有。除了clearcase,hg是我非常喜欢的版本管理工具。

hg在branch管理上相比clearcase还是有很大差距,在日常工作中,需要采取一些变通方式。例如以下一些场景:

只显示active的分支

加上参数“-a”即可,完整命令如下:

hg branches -a

如果不想每次都带上参数,默认就只显示active的分支,可以修改hgrc文件,加入以下内容:

[alias]
branches = branches -a

关闭分支

实际上我们希望有“删除分支”的功能。在平时工作中,多半有这样的场景:为了查某个问题需要修改代码,为了不影响开发分支或者主线分支,通常都会创建一个临时分支,加入一些打印、调试、定位代码甚至变更处理逻辑等代码。问题定位后,这些代码不需要merge进主线,分支也没有存在意义,最好就删除了事。遗憾的是hg不提供删除分支的功能,因此我们采用“关闭分支”的处理方式:

hg commit --close-branch -m "finish debug, useless now"
访问onedrive

访问onedrive

一个好端端的网站,被莫名其妙地干掉了。经网友介绍,还好只是DNS污染。网友推荐使用DNSCrypt解决这个污染问题。不过有个更简单点的方法,直接将onedrive的IP地址写入hosts即可。

修改C:\Windows\System32\drivers\etc\hosts文件,增加以下两行记录:

134.170.108.26 onedrive.live.com
134.170.108.152 skyapi.onedrive.live.com

只有在天朝才会明目张胆出现这种不要脸的事吧?

SSLv3漏洞

SSLv3漏洞

这次是Google发现的一个漏洞,而且又是一个很严重的漏洞。现在暂时还没有补丁解决,但是可以关闭apache的SSLv3来屏蔽这个漏洞。修改方法如下(Debian7.x环境):

修改/etc/apache2/mods-enabled/ssl.conf文件, 找到SSLProtocol所在行,去掉SSLv3即可

SSLProtocol all -SSLv2 -SSLv3

最后当然需要重新启动apache。

windows7开始菜单项整理

windows7开始菜单项整理

最近安装和试用了一些软件(例如qq输入法),卸载之后在【开始】菜单中留下了一些垃圾文件夹,看着很不爽。于是打算删之。一试之下才发现与XP系统有很大差异。【开始】菜单实际上分布在两个不同的地方:系统【开始】目录以及用户自己的【开始】目录。

比如我的用户名是yxh,那么如果需要整理开始菜单栏,则可能需要修改以下两个目录:

C:\ProgramData\Microsoft\Windows\Start Menu
C:\Users\yxh\AppData\Roaming\Microsoft\Windows\Start Menu