0%

traceroute是常用的网络诊断和查询工具,但是通常traceroute只能显示中间路由器和主机的ip地址和主机名,如果能输出机器的地理位置是最好不过了。怎么办?重新写一个traceroute?这是windows的思路。traceroute已经足够好了,为什么要重写呢,我们只要把结果加工一下就可以了。不得不佩服UNIX的设计哲学,无疑这种正交的功能,如果硬要搀和在一起,实在是没什么必要和额外的好处。

Read more »

utf8是目前最好的多字节编码方案,支持世界上的绝多大多数语言,也是我最喜欢的字符集。debian lenny 上的awstats安装完毕后,默认输出iso-8859-1字符集,对中文支持不友好。打开/usr/lib/cgi-bin/awstats.pl
,定位到大约第80、81行将$PageCode变量的内容更改为’UTF-8’,这样awstats就可以吐出utf8编码格式的页面了。修改成utf8字符集还有一个好处,不用加载decodeutfkeys插件就可以正确的显示来自google的中文搜索关键字了。至于百度让它自生自灭去吧!

awstats通过插件qqhostinfo插件和qqwry.pl库使用纯真IP数据库可以显示来访者的地理位置,是一个不错的解决方案。具体的使用方法网上转载很多,可以google之。纯真IP数据库使用的是gbk/gb2312/gb18030系列编码,而我的awstats使用utf8编码,所以显示出来的物理地址全部是乱码。解决方法也很简单,打开qqwry.pl,在文件前面加上一句”use Encode;”,然后找到”return $ipaddr;”这一行,在其前面加上一句”$ipaddr=decode(“gbk”,$ipaddr);” 就ok了,因为perl 5内部使用的就是utf8编码,所以就不用再encode成utf8了。

KWinUI配合ResEdit来开发Dialog Based Application还是比较轻松的。

启动ResEdit添加一个简单的dialog资源,ResEdit为你生成两个文件,一个是资源文件,一个包含资源ID的头文件resource.h。我这里简单的把这两个文件的内容贴出来。

Read more »

在KWinUI发布的文章中有些事情没有说清楚,现在补充一下。

首先是KWinUI的开发和测试环境。在开发KWinUI的最初是用的Visual C++ 2005 Express和windows platform sdk,sdk的版本记不清楚了。对于开发工具,我是有新的不用旧的。后来换到了Visual C++ 2008 Express,sdk更新到了windows sdk 6.0。为什么要用Express版本,自然是因为它是免费的,而且相当的好用,运行速度飞快。VC的编辑器我是不用的,我还是习惯用vim,所以其实主要用到的还是它的Debugger,编译、链接的话用命令行也是一样的方便。KWinUI还特别考虑到了C++ Builder系列的兼容性,因为我早年用过一段时间C++ Builder,相当不错的工具。不过我只在Turbo C++ Explore下面做过测试,除了它生成的程序体积比VC大一些以外,其他都还正常。甚至KWinUI可以与VCL混合编程,我试过。所以使用VC 2005/2008 Express加上最新的windows sdk或者Turbo C++ Explore以上版本的C++ Builder,来使用KWinUI应该都是没有问题的。

其次是关于界面设计。KWinUI是没有可视化界面设计器的,不过对于Dialog Based应用来说,这也不是很大的问题,我习惯用ResEdit来设计界面,也是很方便的,ResEdit是一个很不错的资源编辑器,现在完全支持UNICODE,使用很简单。后面会放出几个这样的samples。后面的samples会尽量带上截图,可以更直观的看到用KWinUI做出来的程序长啥样子:),其实不过就是标准的windows程序界面。KWinUI的程序支持系统的视觉样式也是很简单的,增加个manifest资源就可以了,关于这个网上介绍的不少。我也基于KWinUI做了一个支持程序换肤的库,不过还不太成熟,有机会可以展示一下。

因为要经常在post中贴一些代码出来,为了美观,安装了WP-Syntax插件来高亮代码,但是wordpress的visual编辑器实在是太逊了,经常把整齐的代码搞的一团糟,虽然有语法高亮,但是仍然惨不忍睹。

终于再无法忍受,寻觅其他解决的办法。平时编辑代码都是用vim的,突然想到vim有一个功能可以把编辑的文本转换为HTML格式,这不正是我想要的吗!vim的语法高亮能力可不是一般的强悍,用vim编辑代码那可是相当的舒适。

终于可以抛弃wordpress的visual编辑器了。在vim里面执行:TOhtml就可以把当前编辑的文本转换为HTML页面,转换结果相当的好,也可以用:m,nTOhtml把一个范围内的文本转换为html。

因为我的vim用的自己修改的desert256配色方案,背景是黑色的,所以转换出来的html在白色背景下略显刺眼。

UPDATE:
最新版的vim默认使用CSS来生成html代码,这样嵌入wordpress会有问题,可以在~/.vimrc文件里面设置变量关闭CSS来解决问题

:let g:html_use_css=0

windows平台上的GUI框架已经有很多了,为什么还会有KWinUI?
答案就是轻量,高效,线程安全,并且可以完全掌控。

比较各种GUI Framework的优劣是没有太多意义的,存在的东西都有它存在的合理性和适用的范围。从来没有能满足所有需求的东西,C++亦如是,虽然它是如此的强大。KWinUI来源自开发实践,是做一个项目过程中产生的。对于一个界面并不算复杂的小项目来说,那些重量级的framework太过沉重了,而每次用SDK来写界面,显然又过于繁琐了,所以有了KWinUI。KWinUI使用C++来包装windows SDK,并没有使用太复杂的技术,太复杂的我也不会:),主要使用了thunk技术和C++模板的静多态特性,并且仔细考虑了线程安全,毕竟在这个多核的时代,如果不是线程安全的就显得不那么in。

跨平台不是KWinUI的诉求,现在不是、将来也不是,现在就有很多十分优秀的跨平台GUI开发框架,比如VCF,wxWidget,gtk+,QT等。KWinUI更像是一个自娱自乐的产物,只是觉得它可能对其他一些人也有用处,所有采用lgpl协议将它公布于众,如果能对其他人有些微的帮助,那么开放它的目的就达到了。采用lgpl的好处就是你可以放心的使用KWinUI,就是在商业程序中使用也没有问题。但是如果你对KWinUI做了更好的修改,最好公布一下修改的代码,以便给其他人以帮助。就算KWinUI真的没啥价值,这样发布应该也不会对别人造成什么伤害,权当娱乐一回吧,呵呵。

KWinUI的主要特性如下:
轻量、高效、资源占用少、线程安全、使用简单,差不多就这些了。

KWinUI因为使用了模板技术,所以就是一堆头文件和几个cpp文件,使用起来相当简单,后面我会继续发几个简单的sample来演示如何使用KWinUI。

如果非要有一个版本号的话,那么就定为 0.1.0吧,因为KWinUI实在是挺稚嫩的。

如果有人对KWinUI有兴趣,欢迎对它进行进一步的修改。

KWinUI的全部源程序从此下载,很小的,我保证你瞬间就能下载下来:)

C++内置对布尔类型的支持,其关键字是bool,C语言直到C99标准才增加了对布尔类型的支持,关键字为_Bool,因为bool已经被C++ 用了,所以选了这个十分奇怪的关键字。在这之前C程序员对布尔类型的模拟是相当混乱的。为了在C和C++程序中以统一的方式使用布尔类型,同时提高可移植性,可以采用下面的方式:

Read more »

先罗嗦几句

最近在读linux 2.6 内核,虽然以前已经看了很多相关的知识,<<linux内核完全注释(0.11)>>也看了2,3遍,但读2.6内核仍然感到很吃力。面对2.6如此庞大的内核,信心真的不是很足,而且好像也没有很好的、有帮助的论坛来一起探讨,哎!现在正在边看<<情景分析>>,边看最新的内核,自<<情景分析>>出版以来,内核已经有了很多的变化,好难读啊!如果这样读下去算不算“皓首穷经”呢,不得而知了!

Read more »