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

Sizzle

/*!
 * Sizzle CSS Selector Engine - v0.9.3
 *  Copyright 2009, The Dojo Foundation
 *  Released under the MIT, BSD, and GPL Licenses.
 *  More information: http://sizzlejs.com/
 */

在jQurey 1.3.x 代码中找到的注释, 一个更加轻量级的js框架 Sizzle. 如果有时候你觉得 jQurey 还是太大了, 就用这个吧!

OK, 说说这次我为什么又跑去看 jQuery 代码, 主要是为了搞清楚一个问题:
首先, 如果html里面有一个div和一个span指定了相同的id怎么办? getElementById 毫不客气, 只认第一个.

在 jQurey 中, 如果你要选择后面那个元素, 那么$('span.id_name')或许是我们的另外一个选择, 这时我们享受了框架给我们提供的便利.
仔细想想, 框架一定不是简单的包装了 getElementById 这个常用函数, 它一定做了很多额外工作.

在jQuery 1.3.x 中 CSS Selector Engine 这样的工作被交给了 Sizzle 来完成, 查看 1.2.x 的代码则发现是 jQuery 自己做了这部分功能.
这也是为什么 1.3.x 宣称自己有着更好性能的原因.
comments: 3  
by kernel1983

MOD_WSGI 与 no such table

使用mod_wsgi的时候遇到了错误 OperationalError: no such table: django_session
开始还怪罪于mod_wsgi可能有未知bug

终于在google group里找到了问题所在
http://groups.google.com/group/django-users/browse_thread/thread/2d9f25383a97bc6e?pli=1

翻译一下:
出现这种问题最大的的可能是在设置DATABASE_NAME的时候没有使用绝对的路径,
如果sqlite3找不到数据库文件, 它会自己尝试创建一个空的数据库文件.

OK, 把settings.py中的数据库文件名换成绝对路径就OK了.
错怪了mod_wsgi, 现在看来mod_wsgi在hosting python项目的时候还是相当值得信赖的,
已经可以完全取代古老的fastcgi和mod_python技术, 成为apache的新一代贴身伴侣.

对于性能需求高的大型站点, 或许scgi仍然是不二选择, 服务器方面也轻装上阵, 忘掉apache选择lighttpd吧.



补充一点, 除了 sqlite 数据库以外, settings.py 中用到的路径在 mod_wsgi 下最好都不要使用相对路径, 比如 TEMPLATE_DIRS
comments: 1  
by kernel1983

Bye Bye 浪点

有朋友在Facebook跟我说, 站点不能访问. 很纳闷, 因为自己站点的代码最近可没有什么改动.

上去一看出错信息, 服务器上的django代码不全, sqlite3 backend 中的base.py文件找不到. 第一时间通过QQ向浪点的客服人员反应, --! 没理我.
大约半个小时后, 得到的回答是, 请加技术人员QQ. 我靠, 你还以为自己是政府机构呀!
加技术人员的QQ, 技术人员不在线.
当天晚上没有收到任何回复.

第二天中午想继续沟通. 令人惊奇的是, 当我再一次查看apache日志, 发现mod_python已经找不到python语言解释器了.
于是开始打电话, 经历过几次忙音以后, 电话终于接通.
工作人员跟我解释从昨晚他们就一直在加班, 服务器出现了比较严重的故障(当然是软件方面的).

于是我提出要和技术人员沟通, 他说请加技术人员QQ, 我要技术人员分机号码, 对方拒绝.
我说能不能给出一个修复的具体时间, 他们说没有时间表 ... 这下我可急了, 我说为什么不能让我联系技术人员, 我只是想帮助他们尽快解决问题, 这时, 客服人员沉默了, 我请他说话, 他把电话挂了.

不再相信浪点了

网站搬家到 ZoomType
comments: 33  
by kernel1983

Google Account Authentication API

半年前研究过 Google Account Authentication API, 现在回头再来看, 发现又有更新.
Google Account 现在已经阵容强大, 由单一的 AuthSub 发展到 OAuth Federated Hybird 一共四种

AuthSub: 提供单独的 google service access, 比如gmail contact. 如果你要一次使用多个 google service, 比如同时需要读取 picasaweb 和 youtube 的数据, 那么用 authsub 就不那么合适了, 应为你需要让用户傻傻的登录google两次.
OAuth: 和 authsub 相比, 提供了 sign-on, 一次登录可以取得的 authtoken 可以 access 好几个 google services.
Federated: 本质上是 openid, 他是唯一可以让你在使用google account登录自己网站的同事, 拿到用户电子邮件的的方法.
Hybird: 集成了oauth 和 openid, 可以让你的网站可以同时拿到 google service 访问权限, 以及用户的电子邮件.

AuthSub 即将过时, 现在的好处是, 使用 authsub 不需要在 google 注册自己的网站.

建议Google 的 OAuth 能够对开发人员更加友好,比如可以在本地调试。
comments: 0  
by kernel1983

Xdebug on OS X

想要调试 PHP, 才发现原来 PHP 不像其他的语言, 只要有 IDE 就可以去调试自己的程序.
首先, 需要给自己的PHP加上一个插件 Xdebug. OS X 上下载源码, 编译安装, 都没有问题. 最后运行 phpinfo() 却看不到 xdebug 的信息.
在网上找到一篇 在 Mac OS X Leopard 上启用 Xdebug 的译文, 原文在 Enabling Xdebug under Mac OS X Leopard, 看过之后才知道原来 PHP 还有 zend_extension 这么隐晦的东西.
phpize
./configure
make
sudo make install

之后我没有按照文章中的配置方法做, 直接修改了/etc/php.ini, 添加了一行
zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so

网页中运行 phpinfo() 中仍然看不到 xdebug 的影子, 但是 CLI 状态下可以看到不少和 xdebug 有关的信息.
[xdebug]
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

添加完上面几行, Netbeans 中可以调试了.
相信适当的配置以后 eclipse 的 PDT 也会开始工作.
comments: 0  
by kernel1983
1234567...27