使用wallproxy in GAE翻墙成功,在此留念……


wordpress居然整体域名被封,这官逼民反啊……本尊自认为没发什么特别反动的文章啊。

在自己的GAE帐号上搭建了个wallproxy,运行的时候提示了一句AppConfigNotFoundError,不过实验证明还是生效了的。

一天1G的流量,个人觉得完全够用……

Google万岁……

终于还是要面对C++的


不仅是C++,还必须得用Visual C++(而且还必须得用6.0)。看来微软在中国高校中的垄断地位一时半会还真无人能撼动啊,这叫私情何以堪。

其实只是做些初步学习,写一般的程序Vim足够用了,Visual C++的作用大概只是用来Debug而已。Eclipse貌似也挺爽的,就是文件体积有点大,而且没有和Python打包在一起的版本(PyDev那个名字古怪的不算),所以以前就没怎么尝试。以后倒是可以试试,对C来说貌似一站式下载就可以了。

想想也是好事。CS Slayer仁兄说在计算机发展到一定境界之前还是很需要这类可以对硬件进行调度的语言,私也有这样的感觉。见识见识总是很好的,说不定以后私就从Python转投C++和Qt了,Qt最初就是给C++绑定的,资料更多更完善。

话说貌似最近网志更新的都很短呢,没办法,实在是挺忙的啊,诸君少假借之吧。

理发店会员卡管理程序的一些解释和预告


理发店会员卡管理程序的一些解释和预告

这个程序已经好久没有更新了。原因是比较复杂的。其中最主要的是私本打算学PyQt,0.5版以后全面转向图形化。私不记得自己有没有作出承诺(如果有的话就跟Gnome一样悲剧了),不过最初就是这样想的。其实私现在的水平用PyQt还是能做出一个基本的图形界面的,但如果单纯用弹窗的话界面会显得非常臃肿。所以思想基本上是做出一个类似KDE或者SCIM配置程序那样的界面,左边选择分类,右边的面板自动更改。不过凭借私目前的功力写出来还很困难,同时由于PyQt和Python很多地方有不同,基本上想用上图形的话代码也要重写。

还有一个原因是IdeaPad送修,所以原来的PyQt开发环境和源文件暂时都没有了,继续图形的话也比较难。

//

综上……私决定,继续推出文本化的0.5.0版,继续增加功能。其实有一个一直没发布的0.4.7版,增加了启动加载的东西,稍稍改善了运行时的效率(也增加了启动时间)。目前0.5版的一些想法是密码功能,否则的话知道一个卡号随便就用实在是不太安全。

//

未来的版本什么时候会有图形化的东西呢?也许很快(0.6版),也许要很长时间……

伪·(伪·(伪·通向图形之路……))


就是这东西……理发店会员卡管理程序……

悲惨的图形之路

图片里已经基本上显示出所有功能了,数个星期的学习(玩)成果就是这个,啥功能也没有的图形外壳……orz

昨天想检验一些用法记没记住,就写出来了,结果发现菜单的写法还是快忘光了……

外壳是纯用文本写的,啥功能还没有呢就50行代码了。看来还是把图形和运算分开写比较好,不过很多地方都是交织的,根本不知道怎么样才能分得开……

貌似唯一的进步就是50行代码写完之后仅错了一处。

//

千言万语汇成一句话:悲剧啊……

终于知道这个app.exec_()是啥意思了


私早先就说过,私比较习惯自己尝试、研究,是很看不进参考书的。Python的手册看过一部分,后来发现对私相当晦涩,所以后来也直接找教程,不怎么看官方手册了。

PyQt的手册看得更少。不过那倒不是因为私没心思看,而是面对一套新概念、新名词,英语再好也未必真的看明白,于是找到了《The PyQt4 tutorial》。这本书虽然例子都很简洁,但似乎不像是为图形编程的初学者写的,对于某些基本的东西说得非常模糊,比如这段必加内容:

app=QtGui.QApplication()
==若干代码……==
sys.exit(app.exec_())

第一行是说要建立一个“应用程序”,虽然私没搞明白为什么它不会自动创建,不过好歹算是理解了。但最后一行那个对app进行的exec_()方法却怎么也无法理解。手册里倒是解释了sys.exit(),这本来是Python的方法,还会有人看不明白么?真正让人搞不懂的是那个exec_(),而这本指导对此的作用则只字未提。当时私还对PyQt不熟悉,那么多的类那么多的函数与方法,连手册都无从查起,只能照葫芦画瓢写。

后来终于是琢磨明白了。这个app不是什么内置变量,而是代码第一行里面人为定义的一个QApplication的实例,也就是说“app”这个名字是随便起的。那么app.exec_()就该是QApplication的方法,于是乎去查手册。原来这个exec_()方法的作用是“进入程序的主循环直到exit()被调用”,说白了就是让这个程序运行。

在这方面PyQt和Python有个很大的不同。虽然Python的一切也需要调用才能生效,但是一旦被调用就会立即有反应。PyQt则是类和对象的层层嵌套,需要你逐层调用。私以前一直以为读过“show()”这个方法之后就会有窗口显示在屏幕上,其实真正让窗口显示出来的并不是这一句,这一句其实是个界定窗口在何时弹出的“声明”,解释器读取到这里,Application还没有启动,只是确定了一旦启动,应该在“这个时候”弹出这个窗口。真正让整个程序运转的是“sys.exit(app.exec_())”里面嵌套的这个“app.exec_()”,而正是因为这个嵌套,让私一直误以为这个app.exec_()是一个跟退出“直接相关”(当然它们确实也相关)的方法,以至于百思不得其解。

说到底还是自己学艺不精。看来以后还是要多看手册,光凭教程和自己的一点理解是远远不够的。

Linux用户我对不起您们啊……


注:该问题已于公历2010年7月29日上午11时正解决。

以下是原文:

//

我那个理发店会员卡管理程序……以前都是在Windows下调试的(因为没搞明白主客机共享问题),当初在Win下已经发现“当前目录”的问题了,不过我一直以为那是Python在Windows下的Bug。今天一时兴起把程序弄进了虚拟机里的OpenSUSE执行了一下。真是不跑不知道,一跑吓一跳。0.4.5发布的时候我还说要做到“任何操作都不报错退出”,可今天跑程序的时候还没操作呢就退出了,丢人啊……

原因就是那个万恶的“当前目录”。这个“当前目录”和Python程序的存放目录毫无关系,是由您的终端所打开的目录所决定的。在Windows下双击.py脚本运行,“当前目录”就是脚本存放的目录,而Linux下运行脚本是要在终端中调出来的,这个目录在Linux的默认状态下通常是您的家目录(即“/home/您的用户名”),然而程序中一切文件的读取写入都是在“当前目录”(家目录)下进行,于是就会出现“找不到某某文件”的提示并且直接退出程序。

当前的解决方法……就是您在运行脚本之前先打开程序存放的目录(“cd 程序目录”),然后直接“python3.1 main.py”即可。

其实这个问题很容易修正,就是在打开、关闭文件的代码之中加入“sys.path[0]+os.sep+”就可以了。不日我将放出修正后的版本,有经验的仁兄也可以对照源代码自行修正。

另外在Linux下没有cls这个命令(但是有clear),因此Linux清屏也不好使。不过这只是小问题,未来的更新将会把这问题一并解决掉。

又及:话说这么大Bug咋没人跟我提过?是根本没人跑过这程序还是大家都知道怎么解决了?(我估计是前者,唉……)

[7月29日更新]理发店会员卡管理程序v0.4.6——延伸


由于0.4.5版(及其之前版本有重大Bug),今一并上传0.4.6版紧急修正。

下载地址依然是惯例:

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

样一的话:

0.4.6版:

以前一直没有发现的大Bug得到修正了。Linux用户我对不起您们啊……

另外,话说clear这个命令是不是所有的Unix终端都能用啊?

0.4.5版:

代码翻番达成!哦呵呵……不过目前代码也就只有370行左右,不用怎么考虑优化问题(这程序也没什么可优化的,大概)……

这个程序的一个目标是做到用户进行除退出程序外的任何操作(特别是错误的操作)都不会报错退出,私在0.4.5版中加入了一些意外处理的代码,有心者可以进到任何一个地方,随便敲些什么,如果有程序报错的情况,务必将问题回报给私,不胜受恩感激。

最近在研究PyQt,更新这小程序的频率有所降低。不过相比0.3版,0.4版才称得上真正意义上的“扩展”。最主要的革新是增加了“消费充值记录”功能(按帐号和名字保存在文件夹里),每笔消费(和充值)都会被记录以便日后翻找。另外还加入了一个彩蛋,虽然当初完全是为了好玩,还在考虑是不是要把它删掉,不过后来发现还是相当有用的,并且很可能是整个程序里面最有技术含量的一段代码(汗……),所以最后还是决定保留了。至于怎么进入彩蛋……看看源代码就知道了。

//

使用说明:

本程序基于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运行主程序。

Linux用户:

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

3-2、0.4.6(不含)之前版本需在终端中打开程序所在目录再执行“python3.1 main.py”运行主程序,之后版本从终端可直接运行。

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

//

更新:

testing 0.4.6:

修正因本地目录不同引发的Bug

修正Linux清屏错误

testing 0.4.5:

增强程序容错能力,减少误操作导致崩溃的可能

修改部分提示

beta 0.4.4:

增加返回主菜单清屏设计(这是CS Slayer大神的建议)

增加一个彩蛋(纯属无聊)

alpha 0.4.3:

修正二级菜单返回错误

调整部分消息停滞时长

alpha 0.4.2:

部分菜单项目修改

增加“按姓名搜索”功能(查找用户资料——按姓名搜索)

alpha 0.4.1:

增加消费充值记录

之前版本:

详见发行注记