2017年8月

Qt5.8 Patch: Missing "qtmultimediadefs.h"

详情请见:
https://bugreports.qt.io/browse/QTBUG-58432
这是被列在Qt5.8的等级为P1的Bug report,原因是在某次merge中移除了这个qtmultimediadefs.h这个文件,很多头文件的声明被更名到qtmultimediaglobal.h,并进行了一些其他的修改,但是在打包成安装包的过程中出现了一些问题,加粗部分的变动并没有打进安装包,导致所有引用了qtmultimedia功能的程序均无法编译。

在Linux中可以利用包管理器解决
这是Debian的软件包信息
https://packages.debian.org/stretch/qtmultimedia5-dev

在Windows中就要麻烦一点了
首先需要找到include的目录
我的目录在E:\Qt\Qt5.8.0\5.8\mingw53_32\include\QtMultimedia中,找到qtmultimediadefs.h文件。

https://codereview.qt-project.org/#/c/184100/2/src/multimedia/qtmultimediadefs.h
中的信息复制到qtmultimediadefs.h

或者
升级到Qt5.9,在5.9中已经修复了此Bug

Debian利用Squid3搭建Pac代理,端口25

虽然平时都是用shadowsocks,但是偶尔在没有条件的时候也会用到Pac来救急(通常是在我的chromebook上),在网上找PAC不是个办法(也不安全),于是就萌生了搭建个PAC的想法。
顺着代码来,一行行复制
Debian

sudo apt install squid3
curl www.cutinlove.com/squid.conf > /etc/squid3/squid.conf
mkdir -p /var/cache/squid
chmod -R 777 /var/cache/squid
service squid3 stop
squid3 -z
service squid3 restart

这样squid3的服务就搭建完了,接下来只需要配置上pac就好了
可以直接下载到本地,将第一行的地址填上服务器的IP
https://raw.githubusercontent.com/rptec/squid-PAC/master/1.pac

也可以在服务端的网站可访问的目录配置好PAC,直接填上网站路径的PAC就可以了

如果不能正常工作,请在防火墙将25端口放行,或者检查VPS提供商是否封杀了25端口(25端口是电子邮件端口,部分VPS商为了防止垃圾邮件封杀了)

C++的string和char*并不隐式转换

string转const char*


   string s = "abc";

   const char* c_s = s.c_str();

const char*转string


   const char* c_s = "abc";

   string s(c_s);

在libcurl的设置POST中遇见了诡异的Bug,本来是好端端的url,post过去结果怎么都不对劲。后来查了API才注意到
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata);
其POST的参数内容类型为char*,而我的URL的类型为std::string。这也是脚本语言写多了,对类型不敏感导致的错误