写了个Python的小例子,调用搜狗云输入法获取汉字。感谢xzap在搜狗论坛发布的bash脚本,但觉得bash还是略微晦涩了点,用python说明搜狗云输入法的API更加清晰一点。
#!/usr/bin/python
from urllib import urlopen
from cgi import parse_qs
url = 'http://web.pinyin.sogou.com/web_ime/get_ajax/%s.key'
py = raw_input('input pinyin: ')
res = urlopen(url % py).read()
dic = parse_qs(res)
lst = eval(dic['ime_query_res'][0]).split('\t ')
words = map(lambda x: x.split('\xef\xbc\x9a')[0], lst)
counts = map(lambda x: x.split('\xef\xbc\x9a')[1], lst)
for i in range(len(words)):
print words[i], counts[i]
exit
运行该脚本的输出结果如下,每行前面是候选词/句,后面是该候选词/句消耗的英文单词个数:
$ ./sogou.py
input pinyin: nihaosgysrf
你好搜狗云输入法 11
你好是 6
倪豪士 6
你好 5
拟好 5
倪浩 5
泥蒿 5
倪昊 5
倪皓 5
匿号 5
你 2
拟 2
呢 2
尼 2
泥 2
逆 2
妮 2
腻 2
倪 2
伱 2
Seccomp v1
Seccomp是2005年Andrea Arcangeli在Linux内核加的一个功能,为了给*Grid计算中的应用*提供sandbox模型。运行在Seccomp模式下的进程,只能执行下面几个系统调用:
read(), write(), exit(), sigreturn()
阅读全文…
VC的IDE开发环境很好,但太大了,经常是2005/2008/2010装一大堆,占用几十G的空间。用惯了Linux的命令行方式,觉得小巧精致。于是想把VC的基本命令提取出来,也做一个绿色版本。
保留基本的编译命令,cl、lib、link、ml之类的。编译工程只能用nmake了。vcproj工程文件怎么办?用scons重写一个吧。(其实命令行也有个vcbuild)。
制作绿色版之前,首先要安装一个VC,再把其中用到的文件提取出来。或者直接快进到后面找下载链接。
阅读全文…
简介
stratagus的前身是freecraft。freecraft重写了Blizzard公司的经典游戏Warcraft II的RTS游戏引擎。后因版权问题改名。freecraft改名后分成了几个部分,stratagus项目承接了其游戏引擎的部分,wargus在stratagus引擎上进行二次开发,几乎完美重现了Warcaft II的功能。下面是Wargus/Stratagus的效果:
下载说明
阅读全文…
背景
Windows平台上的编译工程工具很多,Visual C++ 6的dsp文件,2003以后用的vcproj,以及最近2010支持的用msbuild编译的vcxproj,加上古老的nmake,cygwin、msys移植的make,等等很多。
make的问题是扩展性比较差,尤其是在Windows平台上,nmake的功能更弱,导致写一个工程文件很费劲,管理多个工程有大量的重复工作要做。make最大的问题是不能automake那种简洁的工程写法(automake同样存在扩展问题,m4语言不懂).
最新的msbuild 4.0试用了一下,感觉不是很好,很费劲。因为最近迷恋上了命令行,一直不愿意安装完整的Visual Studio 2010 Beta 2,直接把2010的命令行拷贝出来用cl.exe之类的。想只装.Net Framework 4.0就试试msbuild,发现不行,把2010里的msbuild相关资源拷贝出来也不行。而且用XML手写工程文件很麻烦。
猛然想起之前听说过,鼎鼎大名,但之前简单了解后放弃了的scons。再次使用之后,才发现scons的妙处。
阅读全文…
1. 主页 http://www.libpng.org/pub/png/libpng.html
2. 最新稳定版本 1.2.40
源码下载 http://download.sourceforge.net/libpng/lpng1240.zip
3. 编译依赖
依赖zlib。要求名为zlib的目录位于和libpng源码平级的目录下。libpng会自行编译zlib的源码,而zlib 1.2.3版本中的汇编代码在VC 2008下编译存在问题,参见zlib的编译说明。
4. 编译方法
打开源码中的projects\vc71\libpng.sln工程文件。编译DLL ASM Release和LIB ASM Release就可以了。会得到libpng.lib、libpng13.lib、libpng13.dll。
5. 注意
ligpng会编译自己的zlib1.dll和zlib.lib,不知道编译参数和zlib自己的工程文件是否一样,也不知道和zlib工程文件编译出的dll和lib会不会冲突。这个问题留待考察。
什么是Side-by-Side Assembly?
Side-by-Side Assembly(建称SxS)是微软在Visual Studio 2005(Windows 2000?)中引入的技术,用来解决Windows平台上的DLL Hell问题。DLL Hell的介绍可以看Wikipedia的文章。简单的说,DLL Hell窘境包括了Windows应用程序依赖的DLL带来的若干问题,包括同名DLL、DLL升级、DLL载入顺序等等。
Side-by-Side Assembly按照我的理解,是一种特殊的DLL,按照Side-by-Side Assembly的要求开发的,并用XML格式的manifest和policy文件描述的。所有的系统Side-by-Side Assembly都安装在Windows目录下的WinSxS子目录里,有一堆的目录、DLL和XML文件。
Side-by-Side Assembly的使用参见MSDN。但MSDN有把简单问题复杂化的毛病,原理讲的很多,实际例子举的很少,不看也罢。
使用Side-by-Side Assembly包括两个方面,一方面是自己开发的应用程序和DLL如何依赖Side-by-Side Assembly,另一方面是如何开发自己的Side-by-Side Assembly。如果只关心第一个方面,问题要简单的多。不需要关心第二个方面的原因如下。
阅读全文…
1. 项目主页 http://www.lua.org/
2. 当前最新稳定版本 5.1.4,2008年8月发布
源码下载 http://www.lua.org/ftp/lua-5.1.4.tar.gz
3. VC编译方法
解压后,用Visual Studio 2008命令行环境进入lua目录,运行etc\luavs.bat。之后会在src目录下生成lua.exe、luac.exe、lua51.dll
4. 注意
默认的luavs.bat只会生成DLL,如果需要编译静态链接库,可以自行修改luavs.bat,修改两处地方
1. 删除cl.exe的编译选项 /DLUA_BUILD_AS_DLL
2. 生成DLL的命令改成 lib.exe /nologo /out:lua.lib *.obj
记录下Visual C++ 2008编译zlib的过程,以备不时之需。
1. 项目主页 http://www.zlib.net/
2. 当前最新稳定版本 1.2.3,2005年7月发布
源码下载 http://www.zlib.net/zlib123.zip
3. VC编译方法
解压后,打开项目文件projects\visualc6\zlib.dsw,新版本的VC会提示要做工程格式转换。一般只编译其中zlib项目的DLL Release和LIB Release就好了。
4. Bug
如果想编译zlib的DLL ASM Release和LIB ASM Release,会出现下面的错误:
contrib\masmx86\inffas32.asm(647) : error A2070:invalid instruction operands
contrib\masmx86\inffas32.asm(649) : error A2070:invalid instruction operands
contrib\masmx86\inffas32.asm(663) : error A2070:invalid instruction operands
contrib\masmx86\inffas32.asm(720) : error A2070:invalid instruction operands
这是因为VC2008的MASM语法更严格了,导致之前的代码语法检查不过。参照这里的说明,把inffas32.asm改好就OK了。或者下载我改好的
最近在Windows平台上编译SDL,过程记录下来备忘。说是用VC 2008编译,其实和用VC 2005和VC 2010编译过程都是一样的。
1. SDL 主页 http://www.libsdl.org/
2. 当前最新稳定版本 1.2.14
源码 http://www.libsdl.org/release/SDL-1.2.14.zip
3. VC编译方法
SDL-1.2.14.zip解压后,再解压其中的VisualC.zip,然后用VC打开VisualC\SDL.sln。编译SDL和SDLmain两个工程。
4. 编译依赖
DirectX SDK中的dsound.h, dinput.h几个头文件,和dxguid.lib这个库文件。最新的DirectX SDK 2009 Auguest可以从微软(http://is.gd/4Q3Mo)下载。或者只下载其中include目录和lib目录打包(http://is.gd/4Q416)。
5. 注意
这样通过SDL.sln编译出的SDL.dll依赖msvcr90.dll,需要目的端也装了VC 2009的redistributable才行。要么就用外置manifest文件的方法发布,还没搞懂,搞懂再写。
最近评论