为四川人民祈祷! www.onefoundation.cn
logo of kjam.org

UI现状

一直不屑一顾那些使用ActiveState Python的人,至少他们对Python不够热爱.

一直想找一个能调试的编辑器免费编辑器,本来Komodo是很有希望的,可惜免费版本去掉了调试功能. UilPad还在发展之中...

为了学习COM之类的东西,安装pywin32,才知道了ActiveState Python中的pythonwin编辑器是源于此.

同样是调用scintilla,用了pywin32的方法,没有wx.

调试功能让我十分惊喜.

仍然对使用ActiveState Python的人不屑一顾...不过对于pywin32喜爱有佳,pythonwin也爱屋及乌.


wxCocoa is a work in progress with no timeframe for completion.
没有时间表.

想完全依靠wx来完成高质量的ui依然需要想象力, wx == 偷懒? yes, sometimes.

pywin32/pygtk/pyqt/pyobjc 在到达彼岸之前, 我们可以依靠?
comments: 8  
by kernel1983

LinuxLinux之后的Linux

这两天在研究一些小size的linux启动光盘,看看里面有些什么样的内容

slackware变成了最近我比较关注的版本,或许是因为slax的原因。曾经以为debian是geek们的完美世界,或许我还是太年轻了

slackware和gentoo,具有一些特别的气质。如果我不是有经验的系统管理员,我想我不会选择gentoo,不过我想在不久的将来,我有机会玩转这个有着BSD血统的高贵版本⋯⋯

在那之前,gentoo是我的陪练。我非常惊讶的发现,仅仅在50M的minial启动光盘中,已经装备了python binary。不过让我失望的是,gcc无法在光盘上直接运行。

假想在某一个时候,人类失去了所有的binary,只剩下source,然后一个先知降临了。开启人类智慧的就是一张能够启动电脑的光碟,之后先知进入了一个主机,里面有GNU和Linux的所有代码——最后,一件非常沮丧的事情发生了,我们没有一个能用的 gcc binary,我的天!

编译GCC让我们回到了鸡和蛋的问题,因为人们用ASM写成了C Compiler ,然后用C写成了GCC,并且用C Compiler编译出了GCC,从此开始,人们就用GCC来编译GCC

我仍然幻想着从0开始做这一切,不过我们至少还需要一些binary: 一个启动器,一个内核,一套编译器,还有文本编辑器,vi或者,nano⋯⋯

大概,我需要从stage1开始,继续我的gentoo之旅
comments: 12 | tags: gentoo   
by kernel1983

Guido van Rossum in Beijing

comments: 0  
by kernel1983

替换掉django的auth

单用户系统理论上是不需要username的,非常人性化的思考,既然id只有一个,那么为什么还需要输入呢!

django的auth模块似乎不是为此准备的。它是一个很规范的用户管理系统,有用户名,有密码,有last_login⋯⋯其实我很不喜欢,所谓杀鸡用牛刀~~~

写一个,simple_auth,却引出了session问题

WEB本无状态,后来有了动态技术,才有了session。喜欢PHP的人很少用session,能用cookie就用,不能用就另外想办法。但是django希望彻底解决问题,在你的cookie中放一个GUID,其余的session信息就放到数据库中了

但是对于一个简单的系统来说,使用数据库又是一个‘牛刀’的问题了,虽然sqlite和使用文件已经没有什么区别了,但是我依然想坚持风格,干脆把django的session系统也黑了,彻底脱离数据库依赖

我们许要一套代替auth的模块,于是我建立了simple_auth模块,user.py目录中的两个类可以让密码不存储在数据库中,而是直接存储在文本文件中。
class SingleUserManager:
    
    def authenticate(self, username=None, password=None):
        '''authenticate'''
        user = SingleUser()
        if user.check_password(password):
            return user
        else:
            return None

def get_user(self, user_id = None): '''get_user''' return SingleUser()
class SingleUser:
def __init__(self): self.id = None self.backend = "%s.%s" % (SingleUserManager.__module__, 'SingleUserManager') self.password_changed = False def check_password(self,raw_password): '''check password''' import md5 f = open('passwd','r') self.password = f.read() f.close() if self.password == md5.new(raw_password).hexdigest(): self.id = 0 self.username = 'no need' return True return False def is_anonymous(self): return False def save(self): pass
虽然没有完美的模拟User对象,但是这里足够用了

按照django本来推荐的使用方法,验证一个用户是
user = authenticate(username=username, password=password)
if user is not None:
    login(request, user)

现在替换成
users = SingleUserManager()
if users.authenticate(None,request.POST['password']):
    auth.login(request, users.get_user())


接下来要做的是精简MiddleWare,让settings.py的INSTALLED_APPS参数只保留一个session,这样可以在manage.py syncdb建立数据库的时候,只许要建立session的数据表。因为auth的依赖的数据库表已经被我们干掉了,所以现在只有session还在使用数据库。
另外,MIDDLEWARE_CLASSES也修改成下面的样子
MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    #'django.middleware.doc.XViewMiddleware',
)
这样,网站基本上还能跑起来,auth模块是不能访问了

现在,在只有session的表使用数据库了。接下来我们会写一个session替代的MiddleWare,彻底摒弃数据库⋯⋯
comments: 12 | tags: django   
by kernel1983

透透气

Dreamhost果然牛
什么招呼都没打,就给服务器换了IP。
开始还以为服务器问题,昨天晚上才发现IP地址已经无效了。不知道这里有多久没能访问……

疯狂的写了一天的django,在上次直接基于WSGI的尝试失败以后。虽然很想在某些应用中尝试Pylons,但是整天关心framework而不是去面对实际问题,绝对是一种病态的思想

Django不愧为 Guido van Rossum 老大钦点的框架,开发效率的确很高

和Rails相比,最讨厌generator。开始学的时候,根本不知道这个脚本里面都做了哪些事情。当你想要给目录rename的时候,你也必须考虑这样做的后果,或许刚刚的工作要从头开始?

django也有manage.py startapp,但是我们可以完全不用它。startproject建立起来的目录结构也很清晰,实在是太棒了!

现在Jampad从PHP port2 Python(Django)的工作已经完成。

或许接下来两天,Jampad的新版本就要重新开张了……这个好用的个人wiki已经在我的site上面消失了好久,连我自己都急切的盼望它Reload的那一天。

接下来的目标是很实际的,我一直为不能在这个BLOG上贴图感到不爽。我不想简单的添加一个文件上传按钮,我需要一个基于WEB的文件管理器。没错,下一个目标!已经开始了


TIOBE上面的语言排名,Python已经干掉C#上升到第七了,在它前面的是Perl,是个大家伙。我认为Python超过Perl是指日可待但是又非常重要的一天,因为Perl是被很多计算机高手中使用的语言,毕竟老了……

看着后面穷追猛打的ruby,我很高兴的看到很多Java用户在选择了Ruby之后有机会看到Python的优点,并且最终加入到Python阵营中来。Ruby的发展给动态语言打了一个完美的广告,也充分起到了猎头公司的作用。问题是,只有一个Rails框架的Ruby世界,吸引眼球固然简单,应用中要经得起考验才行!多元化的世界,存在是不需要理由的。

好多天都不写BLOG了,充分显示了Pythoner只做事不说话的原则!不过,难得出来透透气
comments: 1  
by kernel1983
1...23242526272829