PyQt,真的挺难的……

大概由于PC相关的内容只是私的副业,私在编程方面的学习上属于典型的“东一榔头西一棒子”型。小时候在同学家看到VB的书,看了看,觉得挺神秘;中学的计算机课上又学了点VB,结果连在文本状态下绘制窗体都不会;高中讲Scilab(并且版本相当古老),又研究了一阵子,除了会解决算术问题(注意不是“数学问题”)以外一无能力;之后又开始自学(自玩)Python,标准库怎么用都记不清楚,eval和exec还经常搞混,写十行代码能出两三个错。然而私还是觉得编程这东西挺好玩,还是觉得自己的想法在机器上实现很有成就感。

在学Python之前私是有很严重图形界面癖的(原因大概和很多人恰巧相反,我不知道轻点几下鼠标或轻敲几下键盘能解决的问题为什么要用复杂冗长的命令),当初就因为Java图形化问题比较多(看看OpenOffice在Linux下,尤其是在KDE下的表现就知道了)才放弃了这个现在看来挺有前途的语言。本来打算Python学个大概就去转投图形(大概大多数语言想要语法和图形同时学都是不太现实的),但现在Python确实学了个大概,图形化却还是异常艰难。

大概(我只是说大概)大多数语言的图形化都是差不多的,绘制窗体添加部件写入脚本云云。CS Slayer大神(谜之音:“大神个p!”)建议私用PyQt,于是就用了。道理上果然还是这些,但真正学起来却相当痛苦。引用的库中有很多函数和方法,不写肯定是没法运行的,但照葫芦画瓢写进去了又仍然一知半解,没法把它们的意思真正摸透。教程上讲得很模糊,于是去看参考手册,结果发现还是不明白,即使把每个词都查一遍字典把每个意思代入句子还是没办法理解。后来私也懒得逐个单词去查了,于是每句话都读个一知半解。

句子一知半解其实无所谓,但代码是无论如何都不能不明白。不然的话忘得太快,即使硬记记住了也不知道怎么用。于是只能一遍一遍地看代码,最后还是搞不清楚我从来没有定义过的方法是从哪个库里面继承来的。

接着看吧,大概会有些渐与顿悟之类的东西。会有吗?大概,大概……

虚拟机的一二事

自从开始浅尝Linux之后,和虚拟机打交道就多了。当年由于移除Ubuntu的时候只删了分区,没重写MBR,饱受残留GRUB的摧残,最后分区表搞坏过了N天没有PC的日子……从此之后就变得谨慎多了,东西都要先在虚拟机里试一下。不过虚拟机程序私只用过两个,一个是微软的VirtualPC(现在早就不用了),另一个是甲骨文(其实是升阳)的VirtualBox。

私接触的第一个虚拟机是VirtualPC(之所以不是VMWare是因为VMWare是商业软件,当时正犯洁癖来着……)。VirtualPC功能是非常有限的,后来就转投VirtualBox了。顺带一提,VirtualBox实际属于升阳微电子,也就是Sun Microsystems。其实升阳对开源界的贡献真的很大,MySQL、OpenOffice、OpenSolaris等等,虽说很大一部分都是收购的,但却大大促进了开源界的发展。如今升阳被甲骨文(Oracle)收购,这些东西都有点前途未卜的感觉。真希望甲骨文能留下升阳这个子品牌,让地上人缅怀一下曾经的黄金圣殿……

私之前有一段时间没有摸过虚拟机了。由于新PC运行Linux的时候发热量总是很大,才不得已转到虚拟机来。再加上最近想学学怎么配置Arch,用虚拟机就更频繁了。

用虚拟机硬件分配最忌讳的是什么呢?不是CPU、硬盘甚至是显卡分配失当,而是内存,是内存!不论是Linux还是Windows,CPU留一个核心给主系统它照样能跑得很欢;硬盘空间不足也不足以影响整个主系统(我有一次Ubuntu上硬盘剩余空间只有几十兆,设置都无法保存了,它照样运转得好好的);可是一旦内存分配不足,整个系统的操作都会Lag,还会看到硬盘狂转(估计是和虚拟内存/Swap交换数据),而它的临界点还特别明显,多个两百兆和没有这两百兆那真是判若霄壤,那感觉,真不是一般窝火……

最近私本来是打算在虚拟机里练习,之后实装转投Arch,可不是GRUB无法载入就是pacman升级出错(Transient resolver failure),再加上DSL拨号还要配置网卡, 让人实在没有真机实装的胆子。还是得继续练习啊……

理发店会员卡管理程序 testing 0.3.3版

几天没更新网志,看到网站流量统计直线下降,真是有点不甘啊。最近父上要用网络,私基本是在玩鬼泣4和改程序中度过的,没怎么上网。不过今天还是打算把新版本的程序发上来,虽然我觉得应该没什么人关心。

另外在此感谢一下CS Slayer,居然对这程序给私留言了。私深知大神看到小白胡扯时的感受,足下居然还能不吝指点,实感恩不尽。

//

testing 0.3.3版本下载:

http://cid-d40a6a1ce1a272ac.office.live.com/browse.aspx/程序

这是私发布的第二个版本。由于想加的东西实在太多,程序不完善的地方也很多,所以从0.3.2开始程序的版本号扩展了一位,并且加入了alpha、beta、testing这类声明。关于这个“testing”,按照通常的规范是没这种说法的,私为了把公开测试和自行测试分开才使用了这样一个词,愿编程达人少假借之。

今次代码扩展到了260行,看起来增加了一半,其实很大程度上是因为把初始化脚本集成到主程序里了,并没有太大的革新(详见发行注记)。总体来讲比较有用的改进就是增强了确认提示,减少了误操作的机会;另外也不需要先运行一遍reset了。

未来可能的扩展:

1、可执行文件:鉴于Windows用户的平均计算机应用水平,打算为Windows用户加入可执行文件(exe)包,降低使用门槛。
2、会员卡使用日志:这是母亲大人的建议(不愧是理发店常客)。有这个就能把每次消费、充值情况记录下来,一目了然。
3、自定义消费模式:比如剪发烫发染发之类的,一次设定之后就可以直接调用,减少每次都输入金额带来的潜在误操作几率。不过这是个浩大的工程,得仔细想想算法……
4、图形界面:私就有很深的图形界面癖,所以深知图形界面的吸引力。并且使用按钮和输入数字进入菜单相比可以很大程度减少复杂的容错设计。CS Slayer大神建议私使用PyQt以便实现跨平台(以后要不要有个手机版呢?玩笑而已……),不过那东西私还没用过,得从头学,是个更浩大的工程……

使用说明:

本程序基于Python3.1.2制作,需有Python3.0以上版本的解释器方可运行。由于Python官方下载页面被我天朝和谐(原因未知),请有志者按照下面的方法使用。

1、将压缩包中的文件解压到任意文件夹

Windows用户:

2-1、用浏览器打开http://www.python.org/ftp/python/页面,选择最新版本的Python文件夹(当前为3.1.2)进入。如果您是32位用户,请下载python-3.x.x.msi,如果是64位用户,请下载python-3.x.x.amd64.msi,下载后安装到任意文件夹。

3-1、双击main.py运行主程序(0.3.3之前的版本初次使用时需先运行reset.py,之后版本可直接运行主程序)。

Linux用户:

2-2、若您的发行版没有附带python3.1以上版本,请从您特定发行版的软件管理器中找到最新的python(目前为python3.1.2)安装。

3-2、直接或在终端启动main.py运行主程序(0.3.3之前的版本初次使用时需先运行reset.py,之后版本可直接运行主程序)。

若要回报Bug,请到ukyoi.wordpress.com留言或尝试联系本人。

//

更新:

testing 0.3.3:
初始化脚本与主程序整合
增加初次运行检测、自动初始化

beta 0.3.2:
版本号再次扩展(囧)
增加消费、充值后余额显示
增加余额不足提示
调整部分确认提示

0.3 alpha (0.3.1):
版本号扩展
增加用户遍历功能(查看用户资料——遍历用户)

0.2之前版本:
详见发行注记。

猜想——用Linux温度过高的原因是不是没升BIOS

今天在ubuntu中文论坛上看某人也是Y460的机器,但ubuntu10.04用得好好的,完全没有过热问题。然而私的PC无论装哪个发行版都温度极高,感到甚为奇怪。于是上网搜了搜,发现联想的米国和香港官网是提供Y460的新版BIOS(2010年5月释出)下载的,但大陆(.cn)官网却根本没有BIOS这一项(搞笑的是旁边有一个文章的链接,进去之后里面建议不要升BIOS)。

一会去升一下,如果幸运还能进系统的话就试试Arch吧。已经决定投奔这个连GUI都没有的诡异——啊不是,是另类的系统了。向CS Slayer同志学习!

理发店会员卡管理程序——私首个发布的Python程序

为防止有人唠叨,先贴地址,下载在此(然而我强烈建议您看完全文):

直接用浏览器打开这个(不要使用下载工具,若有下载工具的话建议关闭浏览器集成):

http://cid-d40a6a1ce1a272ac.office.live.com/self.aspx/程序/理发店会员卡管理程序.zip

如果上面的方法不行,请进入这里然后选择程序下载:

http://cid-d40a6a1ce1a272ac.office.live.com/browse.aspx/程序

/

使用说明:

本程序基于Python3.1.2制作,需有Python3.0以上版本的解释器方可运行。由于Python官方下载页面被我天朝和谐(原因未知),请有志者按照下面的方法使用。

1、将压缩包中的文件解压到任意文件夹

Windows用户:

2-1、用浏览器打开http://www.python.org/ftp/python/页面,选择最新版本的Python文件夹(当前为3.1.2)进入。如果您是32位用户,请下载python-3.x.x.msi,如果是64位用户,请下载python-3.x.x.amd64.msi,下载后安装到任意文件夹。

3-1、初次运行,建议双击reset.py初始化(通常这一步非必须)。此后可双击main.py运行主程序。

Linux用户:

2-2、若您的发行版没有附带python3.1以上版本,请从您特定发行版的软件管理器中找到最新的python(目前为python3.1.2)安装。一般情况下可直接打开.py文件运行,若出现错误,尝试在终端中输入“python3.1 (要运行的文件地址)”运行程序。

3-2、初次运行,建议先运行reset.py初始化(通常这一步非必须)。此后可启动main.py运行主程序。

若要回报Bug,请到ukyoi.wordpress.com留言或尝试联系本人。

/

样一的话:

这个程序其实原本是给自家附近的一个理发店写的。那个理发店现在还在用笔记本(不是笔记本电脑-_-||)来记录会员卡使用情况。于是私突发奇想,准备学过Python之后先写一个这样的程序,于是就没有理会教材最后的“毕业任务”,毕竟无非是个字典的处理,道理上差不多。当然这个简陋的程序可能不会被采用,不过也无妨,私学编程的初衷并非要造福人类,只是自娱自乐罢了。若日后真的能够投入应用那自然美甚,若只能自娱也是很好的。

这是私学Python之后公开发布的第一个程序(首次公开发布时为0.2版),只有约180行的代码。极为简陋,甚至连图形界面都没有(Python的图形化想跨平台真的很成问题),完全是DOS时代的操作方式。功能非常有限,只能记录卡号、姓名和金额。但是采用了框架和操作分离的写法,可扩展性比较强,日后的版本可以按照需要继续定制和维护。

这个程序是在一天内仓促完工的,没怎么推敲代码,Debug也不到半天(说实话这么点功能要Debug半天已经很长了)。所以问题还比较多(最大的问题是几乎无容错能力,如果误操作可能会报错直接退出),请大家多包涵。如果有Bug可到ukyoi.wordpress.com给私留言,也可以直接尝试联系本人……

扯了这么多,再次重申:其实程序本身烂得很。高级程序员看到程序千万别骂我,毕竟闻道有先后术业有专攻……

更新:

0.2:

调整部分消息停滞时长、增加部分确认提示。

0.1:

修正重大Bug。

记不住……

忘了谁说过记忆力是第一智力,看来私的第一智力还很不够。

豆瓣Python小组上某人说从开始学Python到形成生产力只用了一周时间。虽然私以前没有接触过C血统的语言(甚至可以说没有深入编程)因而也并未奢望能够在一周内形成生产力,但遗忘的程度却很让人有些无法接受……

学的时候由于记不清成堆的标准库用法,只能跳过。打算复习一下之前的文本读取写入和pickle为编写一个程序的菜单做准备,却发现印象已经变得模糊,多次被对语法的思考打算思路;此外,随意练习的时候竟发现自己忘了字典的items方法,于是深切感受到记忆力不足之痛苦……

有道是:

坐对文编[1]几番思

心绪纷乱谁人知

但盼仕佳大神[2]在

过目拾遗不觉失

[1]文编:文本编辑器。据考证作者本人当时使用Vim。

[2]仕嘉大神:私高中时某过目不忘之同学,此后转走,班级遂少巨星一枚。

OpenSUSE11.3

嗯。还是禁不住诱惑安装了。其实OpenSUSE并不是一个很激进的系统,用的软件包也算不上新。不过大概这是稳定性的保证吧。它的宣传口号是“Linux for open mind“。大概意思是要自己去设置吧。

和其他的LiveCD相似,一开始是没有中文的,要在YAST的升级中才可以安装中文语言包。之后就可以在语言中选简体中文。另外要想装解码器还需要打开社区源中的Packman。这里有个奇怪的地方,OpenSUSE里的音量调节似乎是对数式的,滑竿中间以前声音几乎不增加,中间以后增强很快。

温度问题还是没解决,就跟跑着个3D游戏一样。其实这也难怪,开源Radeon驱动默认关闭自动节电(因为还不稳定)。更何况私这Mobility HD5650又太新,本来就不在官方支持之列,能比较流畅还是很难得的。CS Slayer大神给私推荐了一些文章,不过私许多都看不懂……

另外有一点很奇怪的是SUSE的sudo和su是无法打开D-bus的,于是乎不能从终端中启动任何图形程序,这点挺麻烦的。私到现在都没想明白怎么开文本编辑器编辑系统文件。

目前测试到现在……最深刻的感受是软件管理很不错,比kubuntu的KPackageKit强得多,貌似也稳定得多了。Novell不愧是KDE的银级赞助啊。

目前就探究到了这些,以后慢慢补充吧。

Python在私PC上之怪现象

最近私在学Python,算是刚刚起步,水平不佳,不好意思写些什么。所以常上CSDN但多半都是潜水,并非犯懒,力不足尔。昨日终于注册了自己的CSDN帐号,可惜那里面“发展方向”里貌似没有单独的Python选项,于是选了个数据库相关。上面的学习笔记怎么办呢?大概可以拿这篇网志凑数。

以上属于胡扯,下面进入正题。Python……按说是跨平台的,用Java的宣传语就是“一次编写,到处运行”(当然原文用的是“编译”,Python有些不同,暂且不提),私也是看到这一点才毅然决定选它的。Unix/Unix-Like是本命平台,自然没问题。但我在Win里却遭遇了点麻烦,到今天简直可以说是抓狂的地步……难道真的也跟Java讽刺者说的似的:“一次编写,到处调试”?

首先是解释运行的问题,这里就有一怪现象(并且不写读取、写入类代码根本看不出来)。如果是双击.py脚本直接运行(这大概是官方想让用户使用的方法),程序就默认在本地编译运行,这也就意味着“当前目录”(即sys.argv的第一个目录)就是脚本所在的目录,此时如果执行没有指定目录的写入或读取命令就会在当前目录写入或从当前目录读取,这是没有问题的。可是如果在终端里键入脚本所在的位置来运行,它的默认目录就会莫名其妙地变为C:user(用户名)。于是乎问题来了,私在第一次运行的时候发现整个程序一点毛病没有,但就是找不到文件跑哪去了。后来在win下搜索才总算把它找到。(说来也怪,我在Win7下往C盘里拷个东西它都提示要我提升权限,在python下竟然神不知鬼不觉直接写进去了,说不定这是个漏洞)

路径不统一。有两个解决方案:

其一是手动指定一个特定路径,私认为此是下下策。首先,除了当前目录以外在任何目录创建文件都是一种不太绿色的行为(所以小朋友们记住,绿坝最不绿色)。其次,虽然Python有一个内建的mkdir函数,可是它只能创建“指定的那个”目录,换句话说如果那个目录的根目录不存在就直接报错。所以如果想创建一个藏匿比较深的目录的话就得逐层检验,存在的跳过,不存在的创建。怎么检验呢?私想到的办法是把每级目录写进一个list里,再写个循环逐个调用这list每个元素。不是不行,但是是个很让人痛苦的活。

方法二是以后干脆就直接运行,不再用终端。可是要是直接运行的话一旦代码执行完毕窗口就自动关闭,所以很多程序运行起来就会看到一个终端一闪而过消失无踪,再运行又一闪而过,再运行……所以私现在甭管啥程序都在最后来一行input()把它卡住好能看到屏幕的显示……

在IDLE(Python的默认IDE)里运行可以解决这两个问题,不过又引入一个更令人无语的悲剧——今天用的时候发现Shell根本打不开,每次按F5执行都程序无响应,只能强制关闭,修复重装都不管事,现在问题依然存在……

今天打开了久违的教材,学用pickle函数。写出来之后挺高兴地运行,结果提示“’module’没有’dump’这个属性”(原话是英文,记不住了)。嗯,没关系,第一次写难免出错,于是检查一遍,似乎没问题。再查一遍,还是没问题。私有点怀疑是更新版本之后函数变了,于是上官网查documentation(相当晦涩的文档),发现用法完全相同。最后一怒之下把教材里的例子直接复制进去,结果PC不依不饶还是这句,私就彻底愤怒了,看到这行字的一瞬间就把鼠标当惊堂木狂拍……

由于PC通常是不会出错的,于是休息过后私打算新建个文件重写一遍,结果居然解释通过。找不到病根,私就又把教材的实例复制进去,又通过了……此时私彻底无奈。

[转]论绿坝的倒掉或即将倒掉

样一的话:本文作者羽戈。今日私无聊上推时看到这篇文章,模仿得很有点意思,分析也很精彩。于是转过来博大家一笑。当然也许会有人看着有点扎眼,觉得似乎不知道哪里被人打了一拳,想要还手却无处发力。无妨,这是很正常的,私在此只引用一个很精辟的词来回应:兼听则明。

/

作者:羽戈 提交日期:2010-7-14 8:39:00

听说,曾经横行一时的绿坝花季护航软件如今遭遇了重大劫难,其北京项目组已经关张大吉,设在河南郑州的另一项目组虽然正常运转,却举步维艰,恐怕命不久矣。听说而已,我没有亲见。但我却见过未倒的绿坝,于一年前,在有关部门的赫赫号令之下,企图强行载入中国网民的所有电脑,为所谓未成年人——若由政府充当教育者,哪怕公民活到八十岁,仍是未成年人——的网络生活保驾护航。至于绿坝的功效,我有幸体验了一些,并不见佳,我以为。
随网络在中国的急剧兴盛,类似于绿坝的名目如过江之鲫,令人目不暇给。我知道最晚的正是这绿坝,稍早还有蓝坝、金坝、黑坝等,也许没有,我不大记得了。我的记性就像时下的民心,越来越坏。不管它有无,绿坝们一直在拦截、审核信息,则是不争的事实。具体怎么个拦截法呢,且打个比方,像凶残的强盗拦路抢劫,要想从此过,留下买路财;或者,像得道的法海禅师捉妖怪,看你脸上有些妖气,便要拿你。其辣手之下,摧折了多少美丽而无辜的白蛇娘娘和小青姊姊。我听那捉妖的新闻联播,总有些恐惧。不过,有时听闻,法海拿了一个妖,剥开皮一看,竟是自己的同僚,出道于某某政府官网,因开了小差,慌不择路,披了妖精的皮囊,这大抵便是误伤友军了罢,大抵。诸如此类,可当笑话,供重压之下的普罗阶级一乐,然后继续悲苦而无望的生活。
悲叹之余,我唯一的希望,就在这绿坝的倒掉。后来我觉悟了,认识到一个绿坝倒下,还可能矗立起千万个绿坝。绿坝不死,生生不息,因绿坝不是种,只是叶,不是因,只是果。它倒不倒,实在关系不大。然而,瞥见绿坝的狰狞面目,甚至一听其似卫生巾一般暧昧的名字,我心里仍然不舒服,仍然希望它倒掉。
现在,它居然倒掉了,纵然只挂了一个角,则普天之下的人民,其欣喜为何如?
这自有事实可证。试到新浪、天涯的论坛博客,探听民意。凡有良知、懂常识、向往自由的网民,除了几个脑髓里头有点贵恙的之外,可有谁不怪绿坝多事,不为绿坝之下的牺牲品抱不平?
某些人要护航,当先护航自家的儿女,防止他们识得自由的滋味。我等上网,阅信息,发言论,只要在宪法和法律所规范的疆域之内,和绿坝有什么相干呢?它偏偏来插足,筑起防火墙,织好过滤网,大概怀有一种恐慌罢——那简直是一定。
听说,绿坝项目的研发,工信部共出资4170万元,但这只是2008到2009年一年的费用,从去年至今,两家公司未得一文,无米下锅,北京项目组不得不关门、解散。我对工信部等相当神秘的有关部门所做的事,腹诽的非常多,独于这一件却很满意。它们并非无钱,却硬是不分你一杯羹。看绿坝自生自灭,竟有些残忍的快意。
世上本无事,庸人自扰之。某些物亦是如此。绿坝这玩意,还不如鸡肋,更像阑尾,本该早早割舍。它的倒掉,足以提醒某些愚妄的治理者,治信息,如治水,不在堵而在疏。堵到最终,只可能连治水者一并冲走。疏通有道,洪流渐渐归于平缓,待转型的航船平安渡过了历史三峡,治水者的人物便告完工。他们的名字未必要写入历史的光荣榜,却配得上他们的良知所承受的苦难。
当初,秦始皇筑长城,法海建雷峰塔,东德政府修柏林墙,竟没有想到它们是终究要倒的么?而今,绿坝已然先倒了一大片。
活该。

供《东方早报》