想趁晚上没有人使用网路时用amule下载一些东西,却发现使用at并不能定时执行图形化的程序,而定时执行console程序是没有问题的,man了一下又google了半天没有任何收获,只得用python临时写一个简单的先凑合用着。
#!/usr/bin/python
#coding=UTF-8
import wx
import os
class MyApp(wx.App):
def OnInit(self):
self.frame = wx.Frame(None,-1,'RunAt',size=(290,77))
self.lblCmd = wx.StaticText(self.frame,-1,'命令:')
self.txtCmd = wx.TextCtrl(self.frame,-1,size=(150,-1))
self.btnSelect = wx.Button(self.frame,-1,'选择')
self.btnSelect.Bind(wx.EVT_BUTTON,self.Select)
self.lblTime = wx.StaticText(self.frame,-1,'时间:')
self.txtTime = wx.TextCtrl(self.frame,-1,size=(150,-1))
self.btnSet = wx.Button(self.frame,-1,'设定')
self.btnSet.Bind(wx.EVT_BUTTON,self.Set)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(self.lblCmd,0,wx.LEFT|wx.TOP|wx.ALIGN_CENTER,5)
sizer1.Add(self.txtCmd,0,wx.LEFT|wx.TOP|wx.ALIGN_CENTER,5)
sizer1.Add(self.btnSelect,0,wx.LEFT|wx.TOP|wx.ALIGN_CENTER,5)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(self.lblTime,0,wx.LEFT|wx.TOP|wx.ALIGN_CENTER,5)
sizer2.Add(self.txtTime,0,wx.LEFT|wx.TOP|wx.ALIGN_CENTER,5)
sizer2.Add(self.btnSet,0,wx.LEFT|wx.TOP|wx.ALIGN_CENTER,5)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(sizer1,0)
sizer.Add(sizer2,0)
self.frame.SetSizer(sizer)
self.runTime = None
self.timer = wx.Timer()
self.timer.Bind(wx.EVT_TIMER,self.OnTimer)
self.timer.Start()
self.frame.Bind(wx.EVT_ICONIZE,self.OnMin)
self.frame.Center()
self.frame.Show(True)
self.SetTopWindow(self.frame)
return True
def Select(self,event):
dlg = wx.FileDialog(self.frame)
if dlg.ShowModal() == wx.ID_OK:
self.txtCmd.SetValue(dlg.GetPath())
def OnTimer(self,event):
if self.runTime == None:
pass
t = wx.DateTime.Now()
str = '%02d:%02d' %(t.GetHour(),t.GetMinute())
if str == self.runTime and t.GetSecond() == 0:
os.system('%s&' %self.txtCmd.GetValue())
def Set(self,event):
self.runTime = self.txtTime.GetValue()
def OnMin(self,event):
self.frame.Show(False)
def main():
app = MyApp(0)
app.MainLoop()
if __name__ == '__main__':
main()
(由linuxsir上fundawang的帖子整理)
所谓的等宽字体,应该是指同一种script下,所有字符的宽度都相等。至于中文这个script中,汉字的宽度是否是en这个script里英文宽度的
两倍,取决于制作字体时的考虑,以及pango的字体替换算法。因为在很多情况下,pango会试图使用同一种字体来显示所有的字符,所以你经常会看到
gtk2的应用把英文字符也用中文字体来显示。
如果单就解决这个问题而言,你可以告诉这个软件的作者,在进行算法设计的时候,就把中日韩字符以及标点符号算成两个字符宽就行了。说中文的开发者可以自行设定正确的字体。他如果想要测试的话,可以安装文泉驿的点阵字体,这个字体应该是标准的双倍宽度 :)
注:script是字体这个范畴内的一个术语,大概跟字符集的意思差不多,也可以理解为Unicode范围。总之不是脚本的意思了 :D
(摘自python-chinese邮件列表)
web framework大多数从功能上都大同小异。从功能上分:zope/plone算大型的,而django,turbogears算是轻量级的。从学习曲线上分,zope/plone要长一些,而django,turbogears相对要短一些。对于django,turbogears来说,开发的理念有所不同,但功能是类似的。django所有东西都是自已开发的,象模板系统,url映射机制,ORM等。而turbogears则是许多相对成熟项目的集合,这一点与pylons也很象,如模板系统主要是kid,通过模板适配可以使用其它的模板(强调一下,django是松耦合的,许多组件也可以替换),webserver组件使用cherrypy,ORM使用SQLObject(还可以使用QLAlchemy)等等。关于这两种集成的方式,不同的人有不同的看法。有人认为turbogears是好的,因为没有重新造轮子。但有些人象我认为集中式更易管理和控制。所以关键看你认同哪一种设计理念。
对于ajax也有许多不同的声音。ajax本身可以与后台无关,它主要是在前端通过javascript,DOM来操纵前端数据,与后台交互。从这一点上,任何web framework都可以算是支持ajax。如果说不支持,那是从后台能否自动生成相应的html,javascript代码这一层来说的。turbogears嵌入了mochekit的js库的支持,可以通过python程序生成相应的js代码。django则是有人做过这样的工作,但要么不是成熟的东西,要么还没有成型。为什么会这样也与django的设计理念有关系。象turbogears,它的支持是针对不同的js库生成不同的包装,这样如果js库非常多,自然会有许多的包装,目前已经是这样的。而django在讨论是则不希望是这样,希望有一个中间层或无关层,但的确这一点很难。因此后来可能限定在了dojo,不过还没有相关的代码可以看到。只不过admin功能使用了dojo的一些东西。
还有pylons也很有特色。但对于我上人来说,我认为它太复杂了,不容易理解,所以也没有人研究过。目前国内对于django,turbogears, pylons都有人研究,从人数上看是比例依次递减。对于zope/plone则有专门的czug.org,有许多人在学习和研究。
总之,不同的框架从基本功能上是大同小异,在功能是各有特色的,设计理念上也是各有差异。选择一个框架不仅看它的功能是否满足,可能还有许多的因素,如人气,成熟度,是否有现实的应用,性能,设计理念等等。应用从方面进行考查,而且用着顺心可能更重要。象karrigell作为初学入门,或更轻量级的选择也是不错。
我的dapper 6.06,是用官方的内核时vmware配置不存在任何问题,但是我自己编译的2.6.16内核,其他是用均正常,只有vmware在配置时出了问题,说是找不到内核头文件,错误信息如下:
What is the location of the directory of C header files that match your running
kernel? [/usr/src/linux/include]/usr/src/linux/include/
The kernel defined by this directory of header files does not have the same
address space size as your running kernel.
What is the location of the directory of C header files that match your running
kernel? [/usr/src/linux/include] |
google了一下,发现是vmware自身的问题,在这里下一个vmware的补丁就好了。
这个问题是解决了,但我很不明白是用ubuntu官方的内核就没有问题呢?
我使用dapper 6.06,在nautilus中直接访问是没有问题的,所有的中文显示都很正常,
但是有一个问题是,mplayer似乎并不支持smb协议,这样就没有办法直接看局域网中共
享的电影了,必须mount了以后才可以。
下面是我的解决过程:
我的locale:
代码:
aiyi@osr:~$ locale
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN.UTF-8
LC_CTYPE=zh_CN.UTF-8
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
代码:
sudo mount -t smbfs -o username=guest //192.168.0.38/movie /mnt/smb
这样挂载后中文文件或者目录名会是乱码。
代码:
sudo mount -t smbfs -o username=guest,codepage=utf8 //192.168.0.38/movie mnt/smb/
这样仍然是乱码,但显示的乱码看起来已经不一样了。
代码:
sudo mount -t smbfs -o username=guest,codepage=cp936,iocharset=utf8 //192.168.0.38/movie /mnt/smb/
哈哈,这回显示完全正常了。
mount windows共享老乱码的朋友不妨也试一试。