也谈Boost::Serialization的用途和用法

研究生只念一年的坏处就是毕业设计好像变成一年一度的了……这次毕设是和并行计算有关(毕竟念的是「高性能计算硕士」),多线程是不够的,因为一台设备的CPU核心数毕竟有限,所以多进程的并行计算才能发挥计算机集群(HPC cluster)的计算威力。这方面的de facto standard就是MPI了,而在C++项目中可以通过Boost库的MPI包装更方便、「更C++」的来调用。Boost库的质量和重要程度个人感觉仅次于STL了,看看C++11吸收了大量Boost库进入STL就知道Boost有多厉害。

和Serialization的关系?既然用C++,就免不了自定义类吧,想要把一个类的实例通过MPI发送到其他MPI节点上,首先就要把类进行serialize,然后把serialized memory发送出去,接收方再unpack还原成一个实例。就不展开说了,简而言之这一点和MPI的通信原理有关。

Continue reading 也谈Boost::Serialization的用途和用法

Chrome OS必备应用(二)

隔了两年,我也从当年尝鲜Chromium OS到现在买了台Chromebook用上Google牌的Chrome OS了。所以,本文就当作是《Chromium OS必备插件和应用(一)》这一系列的第二篇吧!

不过Chrome OS都是自带了各种插件(Adobe Flash和PDF Viewer等)的,加上最近蓬勃发展的Chrome离线应用,下面就来介绍一下Chrome OS上必备的应用们(大部分在PC的Chrome浏览器上也能用)。

Continue reading Chrome OS必备应用(二)

华硕Chromebook C201上手体验

这款华硕的Chromebook就是上次一起发布的一大堆Chrome设备中的一款,而且是和国内海信、海尔的Chromebook使用相同的SoC(瑞芯微RK3288-C)。不过借助于品牌溢价和更成熟的笔记本制造历史,相同配置的C201比海信和海尔的要贵20美元。我买的这台是4G RAM版本,在美国亚马逊上淘的,199美元。价格很便宜,但是绝对不输那些用Atom的Chromebook,下面开始上手体验。

Continue reading 华硕Chromebook C201上手体验

都柏林大学圣三一学院年度考试感受

今天刚刚参加我在都柏林大学圣三一学院(Trinity College Dublin, The University of Dublin,以下简称TCD)的第一堂年度考试(Annual Examination,就是期末考试,因为上半学年没有期末考试,所以一年只有一个月这样的考试,故名年度考试)。主要考场的纪律和安排比较有意思,和国内差别很大。

Continue reading 都柏林大学圣三一学院年度考试感受

我的第一本书《Qt 5 Blueprints》

从去年九月份开始写初稿,一直到前几天还在修改Prefinal,今天终于收到了邮件告知书已出版了!Qt作为一个负有盛名的C++开发框架,在下也不敢自称专家,拿Qt写过一些小程序,本科毕设时也用了Qt,最近活跃开发的就是Shadowsocks-Qt5了。

刚收到Packt Pub的邮件约稿时,蛮忐忑的,担心自己水平不够,英语又不是母语,再加上自己没有吓死人的Bio,也没有「几十年」的开发经验。不过当时联系我的编辑人挺好的,而且我也知道Packt Pub甚至有在联系一些本科学生写书,而且他们也是第一次写书。所以我也就答应了,毕竟出版商能加特效,书duang很好、很专业。

Continue reading 我的第一本书《Qt 5 Blueprints》

Windows下三分钟搭建Shadowoscks服务器端

之前在V2EX上有人问为啥没人做个在Windows上一键运行Shadowsocks服务器端的程序,我只想说……这是因为没人关注我的libQtShadowsocks项目啊!(脑补暴走漫画表情)

所以本文要来告诉这些想要帮别人的“小白”,轻轻松松只要三分钟,无痛@#@%#*(什么鬼?)让Shadowsocks服务端在你的Windows机器上跑起来!不用自己编译,不用安装什么Python、.Net的。

Continue reading Windows下三分钟搭建Shadowoscks服务器端

调节ODROID-U3的CPU频率(Linux)

先提一下背景:我的ODROID-U3(跑的Linux)在用XBMC播放视频的时候,容易因为CPU一直较高负载而吃掉太多电压,导致USB接口供电不足致使移动硬盘“掉线”。今天试验了一下发现把CPU频率从默认的1.7GHz降到1.2GHz之后,移动硬盘没有再掉链子了,而且XBMC依然能流畅播放1080P视频。

懒得安装那些专门调节CPU的工具了,直接上最原始的办法(最原始但也最有效)。理论上对所有Linux发行版、所有架构都一样。

Continue reading 调节ODROID-U3的CPU频率(Linux)

libQtShadowsocks项目介绍和备忘

shadowsocks应该是继各种VPN和GoAgent之后,目前最受欢迎的代理(工具 or 协议?)了。VPN不灵活,而且能够被防火墙识别特征,能够轻松封锁,GoAgent则面临可用IP越来越少的困境。懒得介绍原项目了,不知道shadowsocks的自己去Google查吧。

libQtShadowsocks就像名字暗示的一样,是一个Library(库),用Qt(C++)写的,实现了shadowsocks的各项功能。

Continue reading libQtShadowsocks项目介绍和备忘

QCA 2.1.0在Windows上用MinGW的编译过程

QCA是Qt Cryptographic Architecture的缩写,简而言之就是安全组件(如OpenSSL)的Qt封装,方便Qt程序调用,而不用写一大串C代码。QCA自然是开源的,而且好像是KDE的一个project(反正代码是在KDE的git服务器上)。

时隔四年,QCA总算发布了新版本,虽然是小版本号的变化(2.0.3 -> 2.1.0),但却是非常重要的更新!!!首先支持使用Qt5了,其次使用CMake而不是qmake来管理了。如果不支持Qt5的话,我也不会关心QCA的…………

但是目前主流Linux发行版的官方仓库还是2.0.3版的QCA,而且这次也没有Windows builds下载,只有源码包,好在编译不太麻烦,下面就记录了本次编译的过程(环境:Windows 8.1 x64 Pro, MinGW64 4.9.1 x64, MSYS, Qt 5.3.2 x64 static, OpenSSL 1.0.1j x64 static, CMake 3.1.0)。这次要编译的就是静态链接的QCA,如果你要编译动态链接的QCA,上面的工具链必须也是动态链接的!

Continue reading QCA 2.1.0在Windows上用MinGW的编译过程