为四川人民祈祷! www.onefoundation.cn
logo of kjam.org
Archive: 2008-4

Spotlight crash and lxml install on leopard

Leopard在我欢天喜地的更新到了10.5.2以后, SPOTLIGHT Crash whenever I type...

Dam!

在网上找找解决方案, 只有一个家伙和我一样倒霉. 尝试他的方法, 删掉了spotlight的index文件, 重新索引, 无效.

找Crash Dump, 找到了Crash的线程
Thread 3 Crashed:
0   libxml2.2.dylib               	0x02e424fc xmlXPathCacheNewString + 44
1   libxml2.2.dylib               	0x02e4e3f2 xmlXPathCompPathExpr + 2546
2   libxml2.2.dylib               	0x02e4ebb5 xmlXPathCompUnaryExpr + 213
3   libxml2.2.dylib               	0x02e4edbf xmlXPathCompMultiplicativeExpr + 15
4   libxml2.2.dylib               	0x02e4efaf xmlXPathCompAdditiveExpr + 15
5   libxml2.2.dylib               	0x02e4f0ff xmlXPathCompRelationalExpr + 15
6   libxml2.2.dylib               	0x02e4f36b xmlXPathCompEqualityExpr + 203
7   libxml2.2.dylib               	0x02e4f40f xmlXPathCompAndExpr + 15
8   libxml2.2.dylib               	0x02e4f582 xmlXPathCompileExpr + 18
9   libxml2.2.dylib               	0x02e5464a xmlXPathCtxtCompile + 90
10  libxslt.1.dylib               	0x03c5f6e9 xsltXPathCompile + 76
11  libxslt.1.dylib               	0x03c6f939 xsltStylePreCompute + 1530
12  libxslt.1.dylib               	0x03c5b223 xsltParseTemplateContent + 2542
13  libxslt.1.dylib               	0x03c5b51e xsltParseStylesheetProcess + 105
14  libxslt.1.dylib               	0x03c5c78e xsltParseStylesheetImportedDoc + 493
15  libxslt.1.dylib               	0x03c5c7fc xsltParseStylesheetDoc + 26
16  com.apple.DictionaryServices  	0x007d4305 PredefinedXSLTDoc(DCSTransformStyle) + 267
17  com.apple.DictionaryServices  	0x007d4396 CopyTransformedTextFromXML + 110
18  com.apple.DictionaryServices  	0x007d155d DCSRecord::copyData(DCSTransformStyle) + 137
19  com.apple.DictionaryServices  	0x007d3393 DCSCopyTextDefinition + 417
20  com.apple.spotlight           	0x0002b916 0x1000 + 174358
21  com.apple.Foundation          	0x00471b34 -[NSOperation start] + 772
22  com.apple.Foundation          	0x00471822 __runop + 34
23  libSystem.B.dylib             	0x90ecd743 _pthread_wqthread + 331
24  libSystem.B.dylib             	0x90ecd5f6 start_wqthread + 30

难道是自作孽, stupid!

还记得我曾经在blog里面教大家怎么安装python lxml lib吗? 把链接改回来, 也就是libxml2的版本换回2.6.16, spotlight comes back.


但是lxml.etree还是彻底不能用了. 看来不能这样安装, 找一些更加安全的方法. 我可是spotlight的重度依赖者

另外, 还有一条信息, libxslt和libxml2据说要配套的用, 为了安全起见, 在/usr/local/下面安装最新的libxslt

重新安装lxml, 用下面的命令
python setup.py build_ext
    --with-xml2-config=/usr/local/bin/xml2-config
    --with-xslt-config=/usr/local/bin/xslt-config
python setup.py build
python setup.py install

这回应该是完美解决方案了
python
>>> from lxml import etree

终于没有报错, 安装成功

上面的命令可是我读lxml的setupinfo.py源码得出的, 果然源代码面前没有秘密

最后, 清理一下/usr/lib下面无用的文件, 收工!
comments: 0  
by kernel1983

PyDev on Flex Builder OS X

尝试在OS X的Flex Builder 3上安装PyDev

Flex Builder 3是一个构建在eclipse上的工具, 因为是Flex专用所以连JDT都没有带上. 不过本质上它还是一个eclipse.

安装PyDev过程中没有出现什么问题, 倒是配置python interpreter的时候出现了莫名其妙的错误.

原因是这样的, 由于eclipse安装的目录是在/Applications/Adobe Flex Builder 3/目录下的, 目录中有空格. 所以,在配置python interpreter的时候出现失败的提示. 解决方法很简单, 暂时把/Applications/Adobe Flex Builder 3/目录名字改为/Applications/eclipse/或者任何没有空格的名字, 问题就解决了.

配置完成以后, 还可以改回去.
comments: 0  
by kernel1983

Google App Engine 带来的

对于Google App Engine我似乎是后知后觉, 一直都能感觉周围的朋友在谈论它, 自己却从来没有注意

可是当仔细了解以后, 立刻发现Google App Engine绝对是Google有着划时代意义的产品:

以往, 依靠开源技术创建一个web应用, 软件成本已经近乎为零. 但是仍然需要投入硬件成本和人力成本. 硬件成本包括服务器购买或者租用, 人力成本包括开发人员和维护人员的成本.

有了Google App Engine, 我们就可以迅速降低硬件成本和维护人员成本, 不需要掏钱买服务器和请系统/数据库管理员(即使付费, 也是值得的, 至少不用担心数据丢失的风险). 在运营的后期, 由于Google App Engine的可扩展性, 也可以避免代码架构设计上的风险, 保证服务的可用性.

使用python的web开发者应该更加值得注意, 机会来了. Google App Engine的出现将会把python web开发的份额提升到于PHP/ASP同样重要的地位, 很多web应用在开发的初期会选择兼容Google的技术作为基础. 由于python框架在思想上的多元性, 设计上的简单, 开发速度上的优势, python的开发优势会加速体现.

对于python世界中长期以来的多种web框架并存的格局, 也将起到导向性的作用. (当然没有把其他的框架一竿子打死, Google App Engine还是基于WSGI接口的) Django必然成为主流, 其他框架也将在特定的应用方面出现十分出色的产品(论坛方面, 我有写过pforum, 基于Pylons)

在教学方面, 由于将django作为框架开发推荐的首选项, 能降低初学者对于python框架的第一次选择的难度, 大量熟悉django的python人才将出现, 大量网站将使用python/django进行开发. 借用Google自己的影响力, python不管在hosting方面和developer数量方面, 都回有质的提升.

就像ZQ在python邮件列表中预言的一样, 2008果然会是python职位的爆发年. 说的真准, 神了!
comments: 0  
by kernel1983

Protohaus new office

新办公室的照片
comments: 5  
by kernel1983

Lxml install on Leopard

已经决定在Leopard上不用Fink

该手工编译的还是要手工做, 比如wget之类的. 当然也不用那么绝对, OSX SDK还是乖乖的找张光碟自己装上, 毕竟我不是某个linux发行版的作者

开发环境方面, 我不得不承认Leopard真的帮我们作了很多: 从python25到svn. 编辑器我打算放弃TextMate, 没钱给他们. Komodo Edit的表现让我很惊讶.

剩下的事情就是装一堆python lib, 我需要django, pylons... 最后需要lxml真是大费周章了, 最终处理方法如下
下载libxml2
./configure
make
sudo make install
这样等于把libxml2安装到了/usr/local下
Leopard本身就带有libxml2, 在/usr下, 不过好像有点问题.
(我用的是2.6.32)
我现在不打算破坏系统里面的版本,所以安装在/usr/local下

cd
vi .profile
export PATH="/usr/local/bin:/usr/bin:/usr:/usr/sbin:/sbin"
改变PATH的顺序, 先搜索/usr/local/bin, 这样就可以用到我们安装的版本

下载lxml
python setup.py build_ext
python setup.py install
这样就安装成功了


测试
python
>>>import lxml


再仔细一点测试
>>>from lxml import etree
如果发现错误, 那么是因为调用了/usr/lib/linxml2.2.dylib这个旧的东西

现在开始一气呵成
sudo su #pls do use this cmd
cd /usr/lib/
mv libxml2.2.dylib _libxml2.2.dylib
ln -s /usr/local/lib/libxml2.2.dylib libxml2.2.dylib

注意,这一步很危险, 因为sudo/su命令是依赖 libxml2.2.dylib的, 要是搞不好, 就得用osx系统光盘急救了


当然,如果胆子够大, 最简单的方法是把libxml2编译到/usr下面,
./configure --prefix=/usr
make
sudo make install

我没试过, 请勿模仿
comments: 0  
by kernel1983
1