使用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:

增加消费充值记录

之前版本:

详见发行注记

PyQt,真的挺难的……

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

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

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

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

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

理发店会员卡管理程序 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之前版本:
详见发行注记。

理发店会员卡管理程序——私首个发布的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。