心随所至,梦想为开。Follow the Dreams & Heart.
技术讨论
技术随想,更专业的技术问题在http://www.ucosoft.com
利用Squid在Windows下开设代理服务器
Jul 1st
在“突破公司网络封锁,畅游无限网络”一文提到解决方案中,是利用ccproxy来建立proxy server。ccproxy是图形界面程序,使用比较简单,但是存在着两个问题:首先ccproxy不是免费软件,未注册版本只能提供3个连接;另外一个就是从性能还是稳定性上都不是特别让人满意。
后来发现自己的确孤陋寡闻,Unix/Linux下大名鼎鼎的开源免费代理软件Squid(www.squid-cache.org)是有Windows的Native版本SquidNT。既然如此,Squid一出,谁与争锋?
Squid在Windows下的安装配置同样简单,包括一下几步:
1. 下载Squid
可以下载源码自己编译,当然更方便的就是直接下载二进制文件了。下载列表在这里:http://www.acmeconsulting.it/SquidNT/,或者直接从下面链接:
2.安装与配置
安装配置过程很简单。
安装:直接解压缩前面下载到的zip文件到C:\squid
配置:
到C:\squid\etc目录下,复制squid.conf.default为squid.conf,mime.conf.default为mime.conf,cachemgr.conf.default为cachemgr.conf。如果有特殊的配置要求,可以修改squid.conf,squid的默认端口是3128,我们这里需要修改一下这一行:
http_port 3128 改为 http_port 25
服务安装与初始化:到c:\squid\sbin目录,执行以下命令:
安装服务:squid –i
初始化缓存目录结构:squid -z
好了,大功告成,是不是比ccproxy的配置还要简单啊,重启机器或者命令行执行“ net start squid”启动服务,然后通过代理访问 Q宝的旅行日记 – http://qqbot.net ,是不是很方便快捷啊?
Subversion 1.5 发布
Jun 20th
Subversion-1.5终于发布了,这次版本更新相对于1.4来说增加了许多激动人心的特征:
* 合并跟踪(基础) * 稀疏检出(通过新的–depth选项) * 交互式的冲突解决 * 变更列表支持 * svn:externals的相对URL和peg修订版本 * 对于ra_svn和svnserve的Cyrus SASL支持 * 通过sharding对于FSFS的大规模开发的支持 * FSFS优化,通过不变的文件隔离 * WebDAV的透明通过代理写 * copy 和move的改进 * 速度改进,取消响应改进 * 更简单的使用试验ra_serf DAV访问模块 * API改变、改进以及语言绑定 * 超过150的bug修正,改进
具体的更新说明文档:http://subversion.tigris.org/svn_1.5_releasenotes.html
相应的,TortoiseSvn也更新到了1.5版本,更新说明:http://tortoisesvn.tigris.org/tsvn_1.5_releasenotes.html。
注意:使用TSVN1.5后,会自动的把本地的working copy升级到1.5格式。服务器更新Subversion-1.5之后,版本库不会自动升级为1.5,如果升级,需要执行svnadmin -upgrade命令。
Window Live Writer技术预览版试用
Jun 6th
Window Live Writer可以说是现在最好用的离线blog编辑器,在经过了一段时间的酝酿之后,现在Window Live Writer团队终于再次更新,推出了技术预览版供试用。
这次更新有许多特性值得关注,主要有:
1. 图片和视频的插入增强
备忘:向量的点乘与叉乘公式
May 21st
向量:u=(u1,u2,u3) v=(v1,v2,v3)
叉积公式:u x v = { u2v3-v2u3 , u3v1-v3u1 , u1v2-u2v1 }
点积公式:u * v = u1v1+u2v2+u3v3
使用f2c将fortan77程序转换为C程序
May 21st
有一段接近1000行的Fortran77程序,需要在一个新程序中重用,而且非常不想编译新程序的时候还需要fortran编译器,而且为了日后维护方便,也不想把它弄成静态lib。于是决定把它转换成C程序。
以往都是手动转或者看懂后重写,不过这段计算复杂,而且有不少隐含变量,还有equivalence语句,于是找到了f2c这个工具,使用效果非常好。转换后的结果可以直接编译,而且通过简单的处理也可以去掉对f2c.h的依赖。
f2c的主页在:http://www.netlib.org/f2c/,提供源代码和二进制文件下载。
f2c的mswin平台命令行(131KB)
其实f2c的使用方法非常简单:
f2c [ option ... ] file ...
一般option取默认即可,如 f2c romform.f 。
需要注意的是,fortran的文件后缀必须是.f或者.F,.for是不认的,而且严格执行72列的限制。
SWIG
Apr 9th
http://www.swig.org/index.html
SWIG(Simplified Wrapper and Interface Generator)给现有程序增加其他语言(脚本语言)的支持接口,似乎是很好很强大。给PolyDef和XGraph加Lua接口可能就没那么麻烦了。
现在SWIG的最新版本是1.3.35,2008/04/07发布。
在WordPress2.5中启用GZip
Apr 7th
WordPress 2.5有很多不错的特性,前两天也把Hamo’s World 手动升级到WordPress2.5,不过发现WordPress中的GZip选项已经被取消了。调查后得知,现在WordPress已经不再采用php的zlib来进行压缩,而是把这项工作完全交由服务器来控制。如果服务器支持DEFLATE,则直接启用gzip,而且比PHP的压缩的效率要高。
但是和以前版本一样,对于css等静态页面,需要手动在.htaccess中设置。
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-httpd-php application/x-javascript
</ifmodule>
如果服务器是Apache1.x,则需要采用以前WordPress中采用ob_gzhandler的方法或者使用GZIP Pages等插件。
查看页面是否已经启用gzip压缩,可以在GIDZipTest检测。
VC中Unicode的项目设置
Apr 1st
单纯的增加UNICODE,_UNICODE宏,很容易出现链接错误,故笔记如下:
- 修改C++\Preprocessor :添加_UNICODE和UNICODE
- Link\Output: Entry-Point Symbol 填入指定入口
UNICODE Windows : wWinMainCRTStartup
UNICODE Console : wmainCRTStartup
(如果转换会MBCS,若编译错误,则指定入口)
非 UNICODE Windows: WinMainCRTStartup
非 UNICODE Console: mainCRTStartup
如果原先程序为main函数,则需要修改为_tmian。另外如果原先程序中存在__FILE__宏,则出现编译错误,因为__FILE__ 是ANSI字符串,可以如下定义 __WFILE__ :
#define WT2(x) L ## x
#define WT(x) WT2(x)
#define __WFILE__ WT(__FILE__)