2009年3月28日

有爱的lunatic python

还是在做上篇blog说的某半所见即所得的的ui编辑器,终于快搞定了。有时间可以写写里面用到的一个好玩的库。
lunatic python

用途是让你能在python中调用lua,在lua中调用,在python中调用lua中的python... 恩。大概就是这样...

具体的使用方法见项目主页,用法很简单,有兴趣的还可以看看代码,也非常简单,支持自省,基于C的动态语言互相沟通还真简单。

然则这个项目更新有点慢,在ubuntu的Lua5.1下不能正常编译,要参照 lua-user wiki 上文章做些修改.

最后有个小tips,如果打算在python中调用lua,载入lua的第三方c库,要在python中先执行

import sys, dl
sys.setdlopenflags(dl.RTLD_NOW|dl.RTLD_GLOBAL)
import lua

然后才能lua.require("ooxx"). 因为linux下lua的第三方库都是不指定动态链接liblua.so的,python默认import用的dlopen又是RTLD_LOCAL,不会把lua模块的符号表给后面的库使用,
后面的C库就会找不到lua的C函数的。

2009年3月23日

用gtksourceview实现代码高亮

最近用pygtk在写一个半可视化的ui编辑器. 其中要嵌入一个小编辑器给用户写一小段lua代码。
虽然是个小部件,用个textview糊弄一下就好,但做为一个有爱而又爱折腾的人,加上语法高亮简直是一定的事情。

看了下gtksourceview2的manual,几个模块还是相当清晰的,用起来也很方便,简单的实现lua的语法高亮,只要下面短短几行代码.(还附送其他功能哦)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import gtk
import gtksourceview2

win = gtk.Window()

src_buffer = gtksourceview2.Buffer()
manager = gtksourceview2.LanguageManager()
language = manager.get_language("lua") #使用lua语法
src_buffer.set_language(language)
src_buffer.set_highlight_syntax(True) #打开语法高亮
view = gtksourceview2.View(src_buffer)
view.set_show_line_numbers(True) #显示行号
view.set_auto_indent(True) #自动缩进
view.set_insert_spaces_instead_of_tabs(True) #用空格代替tab
view.set_tab_width(4) #tab宽度4
win.resize(800,400)
win.add(view)

win.connect('destroy',gtk.main_quit)
win.show_all()
gtk.main()
gtksourceview支持的语言有
ada awk boo c c-sharp changelog chdr cpp css d def desktop diff docbook dot dpatch dtd eiffel erlang forth fortran gap gettext-translation gtk-doc gtkrc haddock haskell haskell-literate html idl ini java js latex libtool lua m4 makefile msil nemerle objc objective-caml ocl octave pascal perl php pkgconfig python r rpmspec ruby scheme sh sql tcl texinfo vala vbnet verilog vhdl xml xslt yacc
基本上常用的语言都有 。

下一步干啥?加个智能补全 ^_^

----------------牢骚的分割线-----------
本来蠢蠢欲动想装awesome玩下的,没想最新的awesome要0.30的xcb支持,
ubuntu8.10才是0.20的,编译不了,兴趣大减。
还好下月9.04就出来了,应该有更新。

没想用ubuntu也好些年头了...

2009年3月20日

IE8 灾难

今天M$推出了IE8,拿下来装上,开始感觉还可以, 几个新功能也算不错。(虽然觉得,加速器功能本来应该是插件做的事情,firefox上有类似的东西).



为了测试浏览复杂门户网站的速度,打开了163.com(不要问我为什么选这个._.), 载入速度还是可以的。随手点开一个链接,阿勒,开不了!不管是直接click,ctrl+ click, shift +click都不行。

右键后选在新tab打开,新的tab里url栏有那个网址,但是不加载,要自己手动按一下enter才能正常打开.(囧)


问了下安装IE8的其他同学,有的也有这样的问题,有的没有。大概还是万恶的ActiveX 旧插件和新IE冲突吧,把所有的插件关掉,还是不行, 网上搜索了一下,有人提到,但是没有解决方案.

另外在测试的时候发现,经常会有关闭IE8 窗口后,进程还继续运行的情况出现 。

IE确实应该学习下FireFox在插件上的策略,插件要写上支持的版本号,新版本出现了,自己先把能影响自己行为的插件都屏蔽掉,等插件作者自己测试和新IE兼容后再重新安装.

还好我基本上不用IE上网,用不了就用不了吧,不过现在应该有不少用户在骂娘吧(笑...
用firefox者得永生...

2009年3月9日

要河蟹,不折腾,在Linux设置静态DNS.

从周六开始,google等好几个网站就不能正常进行dns解析了.联想到最近TG在开会,大概不能访问也是正常吧。自己设个dns就好了。

我用的是dhcp动态分配的IP,所以在resolv.conf里设置name server 会被dhclient刷掉 。查了下dhclient的配置文件/etc/dhclient.conf, 看到有一行prepend domain-name-servers, 应该就是用来设置静态dns的吧.

找了两个dns填进去,天下太平...

P.S. 不要填根dns哦,13个root dns我试了4个,都不能用。
最后猥琐的填了两个普通的国外dns才ok.

我用的是 164.124.101.31, 204.16.254.6