Browsed by
Author: YI

QT SDK与C4100编译告警

QT SDK与C4100编译告警

“warning C4100: … unreferenced formal parameter.”

QT SDK (VC2008)在使用qmake生成makefile文件时,缺省会打开C4100的编译告警开关。就我们的开发实践来说,C4100实在是个多余的告警,尤其是在C++程序中,我们经常定义一些虚函数等作为接口类,这些虚函数本身基本是空函数,由派生类重载出具体的实现。一旦放开C4100告警,VC编译器就看这些函数中没有引用的形参非常不爽,频频给出告警,实在是烦人。

我们可以在头文件中要求编译器忽略C4100告警:

#pragma warning( push )

#pragma warning( disable : 4100 )

void fun1(…){}

#pragma warning( pop )

这样做也有不好的一面,我们不得不修改.h文件,包括一些第三方库的头文件。另外,这似乎也破坏了跨平台的特性,和VC编译器绑定过紧(?不清楚其他编译器,例如gcc,是否也支持这种预处理指令)。

我们决定直接关掉C4100告警,修改以下文件(qt安装在d:\qt\4.6.2目录):

D:\Qt\4.6.2\mkspecs\win32-msvc2008\qmake.conf

在这个文件中,找到QMAKE_CXXFLAGS_WARN_ON,将它后面的-w34100删除掉。

然后回到自己的工程,重新用qmake生成makefile,此时再编译,就不会有C4100告警了。

中国软件开发人员的杯具

中国软件开发人员的杯具

在cnbeta上看到一篇报道,心里非常感慨。大学生只需要花149元就可以购买到正版的win7专业版和office2010专业版,居然只有不足20%的人愿意购买(可能大家觉得5块钱的盗版碟更便宜啊)。

149元应该算相当便宜了吧?149元在北京、深圳等地,估计还不够周末请客一顿饭钱。

大学生应该算未来的精英吧?如果这样一个精英团体都持这样的观念,那平常的群众也就可想而知了。

谁还愿意为这个市场开发软件?谁还能说这是个很大的市场?

原文链接:

http://www.cnbeta.com/articles/136238.htm

Amazon EC2/Ubuntu系统下搭建VPN环境

Amazon EC2/Ubuntu系统下搭建VPN环境

以下是基于Amazon EC2/Ubuntu搭建PPTPD服务提供VPN连接的过程记录。至于为什么要搞VPN,大家都懂的。。。而我主要是要访问Python的一些网站以及使用我非常喜欢的Google docs。

PPTP采用TCP 1723端口,因此在Amazon EC2的防火墙配置中,必须打开这个端口,否则client端无法接入。(网上有文章说也需要打开47端口(GRE端口),我在Amazon EC2上试验的结论是不需要特别设置。)

step1: 安装pptpd

很简单的命令:sudo apt-get install pptpd

step2: 修改pptpd的配置

有三个文件需要修改:

(1)修改/etc/pptpd.conf,添加以下内容(原文件中可能已经有这些内容,确认即可)

localip 192.168.0.1

remoteip 192.168.0.100-110

localip是指VPN建立后,client可以用这个地址访问VPN server。

remoteip就是指分配给client的地址。

(2)修改/etc/ppp/pptpd-options文件,增加以下内容:

ms-dns 8.8.8.8

ms-dns 8.8.4.4

这个配置是使用Google的DNS解析。至于原因,你也懂的。。。

(3)修改/etc/ppp/chap-secrets文件,设置客户机登录的帐号和密码:

# client server secret IP addresses

yxh * 1234 *

“client”是用户名,“server”是服务器地址,”secret”是登录密码,”IP addresses”是分配的地址,如果指定*,则由系统自动分配。

step3: 重起PPTPD服务:sudo service pptpd restart

step4:配置IP转发

修改/etc/sysctl.conf文件,打开以下的注释:

net.ipv4.ip_forward=1

step5: 重新加载IP转发配置

sudo sysctl -p

step6: 修改Iptables,设置网络地址翻译

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

上述设置在重起后悔丢失,因此需要修改 /etc/rc.local文件, 在exit 0之前添加以下语句:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

step7: 配置DDNS

Amazon EC2每次重起都会变换地址,因此我们需要配置DDNS来获取动态域名解析。在这一步之前,需要在DynDNS上申请一个免费的域名。国内类似的服务商是“花生壳”,我没有进行过测试,不知道“花生壳”是否也适合以下配置。

申请到DynDNS帐号后,下载并安装ddclient:

sudo apt-get install ddclient

安装过程中, 会有简单的界面进行配置, 设置dyndns的相关帐户即可。设置完成后, 配置信息会自动写入/etc/ddclient.conf文件。

完成上述步骤后,就可以在windows客户端拨号建立VPN连接了。

以上资料主要参考一篇国外有人的blog:http://www.dikant.de/2010/10/08/setting-up-a-vpn-server-on-amazon-ec2/

最后说一下Amazon EC2。国内有几篇很不错的翻译可以参考,不过最好的资料还是Amazon本身提供的GettingStarted文档,虽然是英文的,不过非常简单明了:http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide

Kubuntu环境下设置VPN连接

Kubuntu环境下设置VPN连接

昨天在Amazon EC2上搭建了一套PPTP-VPN环境,通过Windows建立VPN连接非常成功,但是在Kubuntu环境中,采用“网络设置”中的VPN连接,始终无法与VPN服务器建立连接。

后来发现原来有些小机关要设置,参考资料是一片英文文档:

http://vpnblog.info/ubuntu-pptp-strongvpn.html

实际上有两个地方要注意,在VPN的“高级”配置中,(1)要去掉MSCHAP认证方式;(2)同时要选择“使用MPPE加密”。

Nokia转向WindowPhone之后

Nokia转向WindowPhone之后

MeeGo的发展固然堪忧,QT的发展也固然受到影响,不过受影响最大的应该就是Intel。如果生产出手机芯片,却没有任何一个厂家支持,确实让人烦恼;不能在手机芯片市场站稳脚根,其他移动设备市场即使占有较大份额,估计对Intel也没有太大的意义。

Intel想去寻找另外一个手机大厂来支持它的芯片和MeeGo系统,估计会比较困难。与其这样,为什么不向联发科学习?提供完整解决方案给中国的山寨厂家。中国手机山寨厂家的能力还是很强的,很有可能会对Nokia/Samsong/Moto造成极大的冲击,是手机世界里另一股不可忽视的力量。

远程重起Ubuntu

远程重起Ubuntu

通过SSH2在远程登陆Ubuntu,可以使用下面的命令关闭或者重起Ubuntu:

sudo shutdown -h now 现在关机

sudo shutdown -r now 现在重起

另外,需要在路由器上放开22端口,才能通过远程访问Ubuntu。

Apache2打开SSL连接功能

Apache2打开SSL连接功能

以下操作基于Ubuntu10.10,参考随机附带的文档:/usr/share/doc/apache2/README.Debian.gz

Ubuntu确实不错,只需要简单的几个命令就可以了。

sudo a2ensite default-ssl
sudo a2enmod ssl
sudo make-ssl-cert generate-default-snakeoil --force-overwrite

执行上述操作后,apache2的配置文件变更为:/etc/apache2/sites-enabled/default-ssl

使用命令 sudo service apache2 restart 后,就可以以https方式访问apache服务器了。

Nokia居然选择了WindowPhone

Nokia居然选择了WindowPhone

这实在是一件让人费解的事情!作为一个老牌的手机开发商,居然放弃了最核心的手机操作系统部分!媒体拿moto作例子,moto不就是果断选择android才能重新崛起么?话是这么说,可是moto毕竟不像Nokia一样,moto手机部门是整个moto的一部分而已,而手机对Nokia来说,基本相当于命脉。积攒了这么多年的开发和人力,居然无法做出一个与iOS和Android竞争的系统,实在让人无语!

Nokia没有全力发展Maemo是一个错误,与Intel联盟发展MeeGo是另一个错误,转而与微软结盟可能是第三个错误。

当然,这些都是不明真相群众的围观看戏而已。让人忧虑的是QT未来的发展。

毫无疑问,Nokia这次的决定让QT处于非常尴尬的位置。坦率地说,这两年QT在Nokia的支持下发展非常好,4.x版本给人留下了非常好的印象。而现在Nokia据说只会给QT最小限度的支持,QT开发组裁员估计是不可避免的。现在国外各QT/KDE论坛都在热烈讨论是否有必要fork一个版本出来(感谢Nokia在4.x是发布了QT的LGPL版本),可见这个消息给QT开发社区造成了相当大的冲击。

作为商业开发,选择一个开发工具或者开发套件是一件非常慎重的事情。负责任的开发公司对已有的工具都进行了大量的投资(包括人力培训、产品积累、产品管理等),不可能像普通开发人员的个人兴趣那样随时转换工具,这期间涉及大量的版本迁移、客户支持、开发演进等各方面的重大变更。

而我们也恰恰选择了QT作为基础开发套件之一,并在QT上花费了巨大的人力、物力和财力!

即时最终QT社区fork出一个新的QT,在技术支持、开发质量等方面是否能保持目前的水准,也是个很大的问题。面对QT未来发展的不确定性,实在不得不深深地忧虑。

修改apache2的监听端口

修改apache2的监听端口

昨天搭建了apache2和subversion的环境,在内网访问时完全没有问题,但是如果从外网访问时,发现总是无法找到server打开网页。

查了很久,排除了各方面的原因后,判断是电信封掉了adsl上网的上行80端口,导致外部浏览器无法访问apache。

解决方法就是将apache的监听端口从80修改到8080即可。网络上的一些资料是基于旧的apache进行配置或者是windows环境下的apache,与ubuntu环境下的apache2的配置有些不同。下面的配置基于Ubuntu10.10以及apache2:

step1:sudo gedit /etc/apache2/ports.conf 修改监听端口以及主机端口为8080

NameVirtualHost *:8080
Listen 8080

step2:  sudo gedit /etc/apache2/sites-available/default 只要修改virtualHost的端口即可:

<VirtualHost *:8080>

step3:重启apache2

sudo service apache2 stop

sudo service apache2 start

在Ubuntu中搭建Apache2+Subversion环境

在Ubuntu中搭建Apache2+Subversion环境

以下各项操作基于Ubuntu10.10 desktop版本,其他版本估计也是类似,差别不大。

1、安装软件
安装apache2: sudo apt-get install apache2
(Ubuntu安装完上述软件后,会自动启动web服务,我们可以通过浏览器访问http://localhost。如果一切正常的话,应该能看到一个非常简陋的html页面)
安装subversion: sudo apt-get install subversion
安装apache的svn模块: sudo apt-get install libapache2-svn

2、创建subversion库

创建目录 sudo mkdir -p /var/local/svn/repos

创建subversion库 sudo svnadmin create /var/local/svn/repos

将所有权授予Apache(www-data) sudo chown -R www-data:www-data /var/local/svn/repos

3、配置Apache2(使用基本的用户名和密码验证方式)

修改/etc/apache2/mods-available/dav_svn.conf,完成后的文件如下:

<Location /mss_svn>

DAV svn

SVNPath /var/local/svn/repos

AuthType Basic

AuthName “Subversion Repository”

AuthUserFile /etc/subversion/passwd

Require valid-user

</Location>

创建用户及密码: sudo htpasswd -c /etc/subversion/passwd yxh

此时系统会提示输入用户yxh的密码。用户名和密码保存在上述passwd文件中。

4、启动Apache2,使上述配置生效

sudo service apache2 stop

sudo service apache2 start

5、打开浏览器访问:http://localhost/mss_svn,输入用户名和密码就可以浏览svn库了。

平时使用TortoiseSVN时,也是使用http://localhost/mss_svn就可以对库进行操作了,当然,也需要输入用户名和密码。

(上述localhost也可以换成ip地址或者其他能访问的域名)