显示标签为“python”的博文。显示所有博文
显示标签为“python”的博文。显示所有博文

2009年6月9日星期二

Windows下编译pychm模块

环境: Windows XP SP2, Python 2.5, Visual C++ Toolkit 2003, Platform SDK (2005.04)

1. 编译chmlib
源代码带了Visual Studio的工程文件,直接编译,可得到静态库libchm.lib
将libchm.lib改名为chm.lib

2. 编译pychm
1) 执行python-build-env.bat (具体说明见上次blog文章),其内容如下@echo off 
set VC_TOOLKIT_DIR=d:\Program Files\Microsoft Visual C++ Toolkit 2003\ 
call "%VC_TOOLKIT_DIR%\vcvars32.bat" 

set DISTUTILS_USE_SDK=1 

set MSSDK=d:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\ 
rem set MSSDK=e:\msys\1.0.11\mingw\ 

set include=%MSSDK%include;%include% 
set lib=%MSSDK%lib;%lib% 

echo "Now you can continue with 'python setup.py build/install'" 

2) 将chmlib的目录加入include和lib环境变量
set include=e:\python\pychm-0.8.4\chmlib\src;%include%  
set lib=e:\python\pychm-0.8.4\chmlib\src\release;%lib% 

2) VC没有inttypes.h和strings.h,我也没有找到其它定义了uint8_t等类型和strcasecmp等函数的头文件,所以修改extra.c的如下两行
#include   
#include  
修改为:

#if !defined(_MSC_VER)
#include
#include
#else
    /* MSVC's C compiler doesn't support `inline' */
#define inline
typedef unsigned char   uint8_t;
typedef unsigned short  uint16_t;
typedef unsigned   uint32_t;
typedef unsigned long long   uint64_t;
#define strcasecmp  stricmp
#define strncasecmp strnicmp
#endif
3) 修改distutils\msvccompiler.py中MSVCCompiler.initialize()函数
 
self.ldflags_shared = ['/DLL''/nologo''/INCREMENTAL:NO']  
改为
self.ldflags_shared = ['/DLL''/nologo''/INCREMENTAL:NO''/NODEFAULTLIB:libc'


否则libc和msvcrt里面的一些函数会打架

4) python setup.py install

搞定

2009年3月3日星期二

python脚本取网络小说

说明:
1. lxml是个很不错的库,除了elementtree风格的XML解析之外,还支持html的解析,尤其是支持按照css选择器来查找节点。详细请参看lxml: an underappreciated web scraping library这篇文章以及lxml.html的文档(可惜文档不是太详细,得自己多试验)
2. 1742, 1709, 1705等章节取不出来(数量占19/196),第19行cssselect返回为空,具体原因还没看出来,明天再查吧


====== 8< ===================================
#!/usr/bin/python

# -*- coding: utf-8 -*-
# vim: set fileencoding=utf-8

from __future__ import with_statement

import sys
import os.path
import urllib2
import lxml.html

def parse_article(url, id):
if os.path.exists("%s.txt" % id):
return
r = urllib2.urlopen(url)
p = lxml.html.parse(r)
root = p.getroot()

content = root.cssselect("div.articleContent")
content = content[0].text_content().encode('utf-8')

print >>sys.stderr, id,

with file("%s.txt" % id, 'w') as f:
f.write(content.replace("\n\n", "\n"))
f.write("========================")
f.close()

booktitle="明朝那些事儿-历史应该可以写得好看"

def main():
for i in range(1,5):
#仅第七部的链接
r = urllib2.urlopen("http://blog.sina.com.cn/s/articlelist_1233526741_4_%i.html" % i)
p = lxml.html.parse(r)
root = p.getroot()

links = root.cssselect("div.articleTitle")

for link in links:
a = link.find('a')
title = a.text.encode('utf-8') #(长篇)明朝那些事儿-历史应该可以写得好看[1752]
url = a.get('href')
if title.find(booktitle)>=0:
id = title[-5:-1] # 1752
try:
parse_article(url, id)
except:
print >>sys.stderr, "%s (Error occurred %s)" % (id, url)

if __name__=='__main__':
main()


2009年2月8日星期日

Weekly Twitter 2009 #6

  • python in a nutshell 看了一些章节,咋觉得讲语言部分还不错,库就讲得不咋样了,常常只是罗列函数说明
  • (s)mplayer的画面效果似乎比totem(-xine)好得多,但我总觉得进度条有很大问题,尤其是播放有多个章节的DVD的时候...
  • 发现DownThemAll升级后有个bug,得先打开dta主界面,否则直接添加下载任务,就会卡在”加载中...",死翘翘了...
  • 我觉得最强大的笔记软件是TiddlyWiki,不过不适合普通用户,适合geeker和hacker
  • Lenny 要发布了,I am anxious to see ... a bunch of new versions of packages in unstable, so that my system will be more funny than it is....

2009年1月12日星期一

Weekly Twitter 2009 #3

  • 让opera的中文字体好看些: 修改/usr/share/opera/ini/font.ini,将35行改为 family:WenQuanYi Bitmap Song=chinese-s try-first
  • 最近发现Programmers' Notepad基本上能满足我的简单编程场景需求,可惜只能windows下用
  • To install PyPN, simply unzip the files into the PN directory and then run “pn --findexts” which will install the extension.

2008年11月30日星期日

Weekly Twitter 2008 #48

  • 试来试去,最终还是用SciTE来写Python脚本,唯一不爽的是没有代码结构试图(用于列出有哪些类哪些函数),爽的是可以灵活配置外部工具来indent, lint, run & debug...
  • Envice可以直接打开fcitx.pdf.gz文件。我开始不确定什么工具可以,用gnome-open fcitx.pdf.gz试了一下,它用Envice打开了。...
  • 原来是看错了配置项名称,应该是“主窗口隐藏模式”,不是“是否自动隐藏输入条”。另外,Evince在拖选文字时会出现乱码。...

2008年11月16日星期日

Weekly Twitter 2008 #46

  • 搞错了,原来是gtk-1.2.10更新了,我还以为是2.10呢。好在最近发现sourceware.org上直接提供了cygwinports的镜像,所以可以安装那里的新版本gtk2了...
  • cygwin的gtk总算更新了,这下我可以搞新版本的xfce了。现在网站空间又没了,要不去申请一个sourceforge项目
  • comtypes挺好用,比pywin32提供的win32com更让人习惯一点,也不需要安装一大砣东西

2008年7月25日星期五

Windows如何编译python 2.4的pyd模块

今天试图安装envisage,但它提供的最新版本都是为python 2.5提供的,于是我下载了源代码来自己编译,结果enthought.traits这个包里面有个pyd动态库,需要编译。

执 行python setup.py install,它先说找不到gcc,我把gcc-mingw的位置加到PATH中,但编译无法通过,链接是有一大堆的_imp_Pyxxxxx找不到。 看这个前缀,好像是Microsoft Visual C++编译器的习惯,而Windows上的python官方版一向都是用msvc编译的(不知道他们怎么不用gcc)。

总不至于要我安装 一个Visual Studio吧,而且python 2.4是用VS.NET 2003编译的(sys.version里面显示编译器版本为v.1310)。在网上找了半天,找到一个Visual C++ 2003 toolkit(微软已经不再提供下载,各位得仔细找找)。

但还是折腾了半天才搞定,方法如下:
1. 安装Visual C++ 2003 toolkit, 它只包含编译、链接工具,以及基本的C/C++库。
2. 安装Platform SDK (用gcc-mingw的库和头文件也可以)
3. 修改distutils/distutils.cfg,将编译器由mingw改为msvc (好像是上次安装gcc-mingw时它设置的,不过我用gcc-mingw一直没成功编译)
4. 修改distutils/msvccompiler.py,将MacroExpander.load_macros()里面对dotNet Framework的检测代码删掉(有必要检查这个么,奇怪); 然后仿照Python 2.5的做法修改MSVCCompiler.initialize(),改成如下(Python 2.5里面那个对MSSDK环境变量的检查也是没有必要的)

def initialize(self):
self.__paths = []
if os.environ.has_key("DISTUTILS_USE_SDK") and self.find_exe("cl.exe"):
# Assume that the SDK set up everything alright; don't try to be
# smarter
self.cc = "cl.exe"
self.linker = "link.exe"
self.lib = "lib.exe"
self.rc = "rc.exe"
self.mc = "mc.exe"
else:
//原来的老代码
6. 启动vc2003 toolkit的Command Prompt,然后按如下方式编译

set MSSDK=Platform SDK或者gcc-mingw的安装目录
set include=%INCLUDE%%MSSDK%include
set lib=%LIB%%MSSDK%lib
python setup.py install

2008年7月23日星期三

Envisage: 采用Python实现的Eclipse?

Eclipse让人不爽的就是体积、速度和插件版本配合。

以前看NewEdit/Ulipad,发现它的可扩展性也挺强的,它的基本思想就是mixin, 而看见Peppy这个继承EMACS思想的编辑器就更引发我想: 有没有采用Python实现的、类似于Eclipse的项目/平台。

然后找到Envisage,一个基于python的应用程序框架,关注不同插件的配合与组合,设计思想上参考了Eclipse。界面采用wxPython,也有workspace, perspective, text editor这些东西。

但Eclipse最大的优势是目前已经深入人心,有相当多各种各样的插件了,这是其它东西暂时(也许永远?)无法比肩的。

2008年3月18日星期二

PyCon 2008总结

PyCon 2008前两天开了, 但国内的Python社区似乎都没有见到什么人关注(至少在CPUG的Planet of Woodpecker.org上没人提到这个, Google了一下也没有多少中文信息, 倒是台湾的Python社区有网友说起,并且参会了)。

Planet Python上看到一篇PyCon 2008 notes, 详细地说明了一下他参加的几个主题的内容,推荐!
  • Using Python To Teach Object-Oriented Programming in CS1
  • MPI Cluster Programming with Python and Amazon EC2
  • Applying Expert System Technology to Code Reuse with Pyke
  • Rich UI Webapps with TurboGears 2 and Dojo
  • State of Django
  • High performance Network IO with Python + Libevent
  • Plenary: Twisted announcement: they have a foundation
  • Plenary: You *can* Fool All of the People All of the Time
  • Plenary Keynote: Intellectual Property and Open Source
  • SQLAlchemy 0.4 and Beyond
  • Managing Complexity (and testing)
  • Using Grok to Walk Like a Duck
  • Case Study of Python Application Development Humanized Enso
  • To RE or not to RE Parsing text in Python
  • Plenary: Making Client-Side Python Suck Less
  • Plenary Keynote: Snake Charming the Dragon: the past, present and future of Python and Mozilla
  • Plenary: OLPC Update
  • Consuming HTML
  • nose: testing for the lazy coder
  • Introducing Agile Testing Techniques to the OLPC Project

2008年2月25日星期一

小看了Lua

虽然我一直对于脚本语言比较偏爱,但也一直没把Lua看上眼,认为它功能太弱了,只能“螺蛳壳里做道场”;而喜欢这个东西的似乎也都是搞C++的那些喜欢研究语言技巧的人。

但今天无意翻了一些wxLua,对这个东西有了兴趣,然后又顺便看了一些Lua本身,发现这个东西以前还真没意识到它的价值。

先拿wxLua来说,wxWidgets有不少脚本语言的binding,从wxPython, wxRuby到wxJS, 其实差别都不是特别大,但wxLua有些不同,至少它在使用模式上很适合于这样一种情况:快速开发一些小的程序(其它方面我还没来得及考虑,暂且不提)。

一 方面,适合这种情况的东西很少: 虽然可以用wxPython快速开发,但对于做一个程序来说,发布起来比较麻烦(py2exe还是有些够折腾的);Visual Basic和Delphi这类工具,可以快速开发,发布程序也方便(抛开VB程序采用的ActiveX库不谈),但它们是商业软件,同时又是庞然大物。所 以我看见一些同事用Excel的VBA来开发一些简单程序,也有比较geek的人学习AutoIt

另 一方面,wxLua自己也做得很适合这个。从规模上而言,wxJS比wxLua大不了多少,但wxLua将脚本解释器、wxWidgets对象全都做到了 一个可执行程序中,不需要任何动态库;它还提供了一个wxLuaFreeze工具,可以将Lua脚本跟这个解释器绑定到一个文件,用法相当简单,并且还可 以采用UPX这类工具对最终程序进行“透明”压缩。

这样来看,lua算是一个非常好的胶水语言(glue language), 在表现上可以嵌入在程序中完全隐形,同时带给程序的累赘也少(至少我们的产品目前采用Active Scripting就必须得将可脚本化的对象包装成COM对象,这个工作量可大了去了)。

不过,“五行拳”(Programming in Lua中文翻译版中引用了一段金庸《碧血剑》里的文字,意在比喻“极寻常的拳术",只要练习得好了,”每一招均是含劲不吐,意在拳先,举手抬足之间隐含极浑厚的内力”)也有一点点不爽,比如我现在想在wxLua的脚本代码中操纵COM对象,就得仔细琢磨怎么将LuaCOM的代码合进来才行,回头要另外一个功能又要合代码,这种情况可能还不如py2exe方便了(不过还没琢磨过Lua的代码,不知道何如这些特性简单不)——但“需要什么才加什么”这种方式也挺不错的。

2007年12月28日星期五

对字符集和编码的一些错误认识

字符集和编码一直很头疼的一块,最近为了搞培训,研究了一下,发现以前确实有很多不明白甚至是错误的认识:
  • ISO-8859-1 .. ISO-8859-16 这些都是西欧各国用的字符集,主要的差别在与128-255之间各自代表的字符不同;
  • 仍然不明白为啥GB2312, Big5这些就算MBCS,而同样采用多字节编码的Unicode却不算
  • GBK应该是GB2312的超集,向下兼容GB2312的,记得以前谁跟我说不是,我迷惑了好一阵;
  • 很 多编辑器说可以支持"Unicode编码",并且一些软件说"Unicode"就是两字节编码,这都是基于Unicode 4.0之前的认识。在那之前,Unicode跟GB2312这样的名称一样,即是字符集(charset)名称又是编码(encoding)名称, Unicode字符均是两个字节。但从Unicode 4.0开始,它已经不只65536个字符了,Unicode只是一个字符集名称,而UCS-2, UCS-4,UTF-8, UTF-16, UTF-32这些才是编码名称(当然,历史包袱总是存在的);
  • UCS-2与UTF-16是不一样的,UCS-2固定采用两个字节,它不能表达Unicode 4.0之后增补的字符(当然,那些字符很生僻),而UTF-16里面每个字符可能是2或4个字符组成;
  • UTF-8
    • 从新的理论上而言,UTF-8应该是1-6个字符不等,但目前应该是1-3个字符就可以表达已有的字符了;
    • UTF-8的优点
      • 如果原有数据大都采用ASCII表达,那么这些数据不用转换
      • 如果系统采用ASCII可以表达大多数数据,那么相对UCS-2,UTF-16这些节省空间;
      • 编码中字符边界很容易找到:以0开头的字节肯定是ASCII字符,最高位以11开头的字节肯定是字符的开头字节,以10开头的字节肯定是字符的后续字节;
      • 容错性强一些,偶尔一两个错误不会影响后面,原因同上(想咱们都碰到过GB2312/Big5的半个汉字问题带来的乱码问题吧)
      • 按字节流读取,不用考虑大端(big endian)/小端(little endian)问题
      • 字符串中不会出现0x00这样的字节(而UCS-2这些会),这样char *这样的方式表达缓冲区时不太容易导致错误
    • UTF-8的缺点
      • 对于非ASCII字符,相对以前存储空间增加了,比如非英语的西欧字符集现在都需要两个字节了,而中文等很多都需要三个字节了;
      • 计算字符串长度比较麻烦,只能逐个统计;
    • 综上,现在很多系统内部处理采用UCS-2,只在存储和数据交换中采用UTF-8
  • Java以前内部全部采用Unicode(其实是UCS-2)来处理字符串,但Unicode 4.0以上的那些字符它不能处理。在Java 5.0中加入了一些奇怪的机制来解决这个问题
  • Python也不能同时支持UCS-2和UCS-4,只是可以在编译时挑选(--enable-unicode=ucs2和--enable-unicode=ucs4),看sys.maxunicode是否大于65535就知道是否是UCS-4了。我看Windows上的预编译版本是UCS-2(python2.5)的,而Linux上是UCS-4(Debian testing, python 2.4)。注意这两种版本在二进制上是不兼容的。
参考文档

2007年12月20日星期四

找不到python24_d.lib怎么办(VC上编译wxPython)

编译一个wxWidgets内嵌wxPython的示例工程时,编译器说需要python24_d.lib,因为懒得自己重新编译一遍python,在网上找到一个办法: 修改Python\include里面的python.h,把静态库都改成同一个(即将python24_d.lib改成python24.lib),其它.h文件也搜索Py_DEBUG,将两种模式下的处理搞成一致(比如不采用不同的引用计数函数),然后就OK了。

---------------------------------------
(下面是详细说明——我现在是越来越罗嗦了)
这几日在琢磨能不能直接采用wxPython搭建我们的下一版本的界面,各方面看都是我们要找的东西,除了一条: 如何将旧系统兼容进去(旧系统采用MFC+COM+Active Scripting技术搭建)。

于是我想先看看用MFC写的程序能不能集成wxPython,但google了半天没有任何信息,只好退而求其次查找wxWidgets上嵌入wxPython,倒是找到一个例子:
http://svn.wxwidgets.org/viewvc/wx/wxPython/trunk/samples/embedded/

它本来的Makefile是编译debug版的,这就需要python, wxWidgets和wxPython的debug版本动态库,好像网上对于Windows上都没有提供(不象Linux上还有python2.4-dbg, libwxgtk2.6-dbg可供安装),这就意味着必须完全自己来编译,编译时还有unicode,universal一大堆的选项,编译完了还有安装/配置的问题。

我烦了,就编译release版本吧,自己修改Makefile.vc,去掉了调试选项,编译出来了。但将embeded.exe放到wxPython的目录运行,它跟我报怨说版本不匹配,wxPython的是"debug,unicode,Visual C++....",而embeded.exe是"no debug,unicode,Visual C++..."。奇怪,怎么预编译的wxPython居然还是debug版本?

没办法,又回头来编译debug版本,但折腾了半天,最后碰到一个python24_d.lib过不去。看来非得自己编译python不可了。我不死心,又在网上搜了一阵,找到一个办法: 修改Python\include里面的python.h,把静态库都改成同一个,其它.h文件也搜索Py_DEBUG,将两种模式下的处理搞成一致(比如不采用不同的引用计数函数),然后就OK了。

2007年3月27日星期二

我的学习方法,呵呵

16:24:43 (F)深南大道走到黑 ~ .. says: 又在跑牛么
16:25:00 菠萝油王子 says: 跑牛?
16:25:31 (F)深南大道走到黑 ~ .. says: 你稍微想想难道还不懂么
16:25:53 菠萝油王子 says: 没有,在翻以前泡妞的消息日志
16:26:04 (F)深南大道走到黑 ~ .. says: ....
16:26:20 菠萝油王子 says: 是MSN的 xml格式
16:26:34 菠萝油王子 says: 打算写个小脚本转换成html格式
16:26:46 (F)深南大道走到黑 ~ .. says: 你打算给我看么
16:27:04 菠萝油王子 says: 然后学习了一下python的xml.dom.minidom库的用法
16:27:34 (F)深南大道走到黑 ~ .. says: 你别逗我笑了
16:27:53 菠萝油王子 says: 发现整个库用起来相当麻烦,又到python网站上看哪些xml库比较有名/好用
16:28:11 菠萝油王子 says: 初步选定了elementtree/lxml

2006年2月11日星期六

GUI程序的RAD和脚本化: 答案就是boa-constuctor?

刚发现有Boa-constuctor这样的好东西,这应该才是我一直想要的。看来我真要学习wx了?

boa-constructor

User Comments
还不太稳定
铁石 | 12 二月, 2006 14:21
才开发到0.4版本,我以前试用过一下,常挂!但wx感觉还是挺不错的!

pythonwin debugger menu

我很不习惯pythonwin将运行和调试菜单项目放在"File"菜单下,觉得放在主菜单上比较合适一点,而且可以少点一级。

于是拿出reshacker, 打开win32gui.pyd,将菜单资源修改了一下。

11128 MENU

POPUP "&Run"
{
MENUITEM "&Run...\tCtrl+R", 36864
}

11130 MENU

POPUP "&Run"
{
MENUITEM "Chec&k\tCtrl+Shift+C", 36881
MENUITEM "&Run...\tCtrl+R", 36864
MENUITEM "&Import..\tCtrl+I", 36867
MENUITEM SEPARATOR
MENUITEM "&Go\tF5", 15022
MENUITEM "Step &in\tF11", 16013
MENUITEM "Step &out\tF10", 15020
MENUITEM "&Stop\tShift+F5", 16010
MENUITEM "Toggle Breakpoint\tF9", 16004
MENUITEM "Stop Debugging", 16010
MENUITEM SEPARATOR
MENUITEM "Watch List", 40002
MENUITEM "Stack View", 36888
MENUITEM "Breakpoint List", 36889
}


2006年1月31日星期二

GUI程序的RAD和脚本化?

在我赖之混饭吃的那个项目上,这个大版本碰到一个比较棘手的问题, 那就是: 业务功能太多,虽然都不是很复杂,但总工作量却相当之多,加上项目组有2/3是新入职不到一年的同事,所以我们一直想把核心功能和业务功能分开来,后者用脚本来写。

但UI怎么办呢? 当然是要求有一些常用控件的,而且有事件响应能力,脚本中也要求能够操纵这些UI元素。基于俺个人多年的爱好,最好是能够同时编辑UI和事件处理代码(我认为没有这个功能就不能叫RAD:-)。


比较理想的是像Excel/Word那样用VBA(该项目是在Windows上用MFC开发的),但似乎这方面的例子和文档都比较少,也拿不到VBA的试用版来评估一下。

从目前看到的一些东西来看,Windows下比较接近我们的需求的是Script Builder, 它是基于Delphi的,可以直接使用ActiveX或者Delphi编写的package,支持ActiveScript(也就是说可以使用 VBScript, JScript, Python和Perl了)和DelphiScript。如果我们自己的项目是用Delphi开发的,把这个集成进去应该是件很酷的事情。(这个东西实际 是基于以前见过的Dream Scripter,只是UI表现上做得更加接近了我们“用脚本写程序”的想法而已。)

再看一些其他的GUI toolkit吧:

  • gtk有一个glade来编辑界面,然后我们可以在pygtk/python-glade或者gtk-perl/glade-perl来写响应代码,没法直接编辑界面代码(毕竟glade不是针对具体哪种语言的) P.S 刚刚在Planet Debian TW上看见yungyuc介绍一个新东东Gazpacho,说是"看起來是 Python+GTK 的 IDE",我还高兴了一阵,拉下来试试却发现只是一个改为完全用python写的一个glade而已。当然,我们可以以此为基础再来扩展。
  • wxWidgets有个wxGlade, 是模仿Glade的,不用多说。
  • Qt有Qt-Designer来编辑UI, 但这个东西也是跟glade差不多;同时它还有个Qt Script for Application,使得可以通过Qt Script(基于JavaScript)来操纵UI,不知道这两个东西是否可以接合,不过这已经很不错了。
  • SpecTcl是一个tk的界面设计器,不过它可以直接生成脚本(tcl甚至perl, python, ruby)
  • Java方面我用过JBuilder, 对于Borland的这种方式,用最近最红火的郭德纲的话说:“ 这个杭子,我做兴!”,简直" 要了亲命了"。只是因为java的烦琐,一个用JBuilder编写的略微复杂的界面,其创建UI部分的代码,基本上是不可手工维护的。至于Eclipse上UI设计器,还没玩过,不瞎说了。

说了这么些,有朋友会问,到底你们用的哪种?呵呵,记住我们的程序是用MFC写的,也没有买Qt这样的界面套件。最后我们用了用友华表的 Cell控件做模板来模拟UI,上面也可以放些按钮、下拉框什么的,虽然显得很不专业,但总算能对付过去。

想 想也知道为什么这种东西没有基于MFC的: 要在脚本中操纵UI控件(当然是说比较自然的方式,比如MainForm.Statubar1.SimpleText = "hello, world", 不是我见一些高手在tcl里面用c代码封装SendMessage来操纵的那种),这显然要求界面库有良好的RTTI,以便宿主程序能够很方便地将界面控 件对象加到脚本解释器当中去,否则脚本中怎么操纵它们。MFC有这些个嘛? ──除非完全自己手工来折腾。

补充:

1. 忘了gambas了,这个接近于Visual Basic,UI是用Qt写的。

2. mozilla的XUL应该是一个很不错的选择,而且传言很快将加入python支持,只是比较耗内存(似乎也没界面编辑器)。

2005年11月8日星期二

Python and XUL

Daily Python-URL上看见的:

Sidnei da Silva: Python and XUL: The Screenshot [«Mark Hammond just shown me a screenshot of Python and XUL. That's right, Python used as scripting language on our most beloved browser to create XUL interfaces.»]

比较完整的说明在这里。上面说估计在Mozilla 1.9上可以看到这个东西。

本来我对XUL还是有兴趣的(近来的工作也存在一个如何快速制作业务界面(数量多但大都比较简单)的问题),只是一直懒得去学javascript了。

2005年10月25日星期二

gnochm: show me the icons

去年我把Inside the X网站上提供的所有The X Files的对白都弄了下来,然后打包成了一个CHM文件

最近在重看《X档案》的主线部分,就是有关黑油、外星殖民、超级战士的,在Inside the X主页上有星号标记的。为了方便,当初我做CHM时也将目录树中的节点用了特殊的图标。

现在的问题是我在Debian上一边看碟,一边用gnochm看剧本,gnochm的目录树没有图标,从目录里面却根本看不出来哪些是阴谋论部分的。

毛主席说:自己动手,丰衣足食。于是又来改gnochm。本以为要加个图标会比较麻烦,没想到非常简单。效果如下,补丁已经提交给upstream.

2005年8月30日星期二

XML module for Jython 2.2

When writing a simple program to test the SOAP interface of our product, I found that the xml modules provided in Jython 2.1 was too buggy.

Although I know that after Jim Hugunin left, the development of jython became very stagnant, I still checked Jython's homepage and found that Jython 2.2alpha1 were out quietly in last month.

But after upgrading, I found that the XML modules now even totally removed in this release!

Fortunately enough on the jython-user mailing list , someone had just asked the same question, and David Hume said that he had written an implementation of the xml.dom API which acts as a thin wrapper for the Java libraries, which could be downloaded from here. It works very, even with Chinese characters (even CPython < 2.4 doesn't handle this well).