使用Jquery调用Asp.net生成的webservice
By 追风逐月 • Aug 8th, 2007 • Category: 技术开发, 网站建设厌倦了very very不爽的ms ajax.net类库,终于决定要使用jquery把它替换掉。
Jquery的好处,就不用说了,简单,方便,人见人爱,车见车载啊… …
厌倦了very very不爽的ms ajax.net类库,终于决定要使用jquery把它替换掉。
Jquery的好处,就不用说了,简单,方便,人见人爱,车见车载啊… …
Py2exe和libxml2真是一个让人又爱又恨的东西。特别和python结合起来,时不时就给你来点问题。
因为要发布到没有安装过python的机器上,所以使用了py2exe来打包应用程序。以前一直都好好的,最近一次打包却出现了
dynamic module does not define init function (initlibxml2)
的错误,想想最近曾经更新过libxml2,于是恢复到旧的版本,还是不行。
Google了一下,找到几个方法,但都是似懂非懂的。
折腾半天,最近总算是弄明白了,原来还是py2exe的问题:
由于程序使用打包的方式,打包运行后和直接运行.py程序的区别是sys.path不同了,原来版本py2exe打包后
len(sys.path)=1,但现在可能是py2exe什么时候升级过,变成了len(sys.path)=2了,也就是说:
PLAIN TEXT
PYTHON:
sys.path=[‘E:\\bot\\src\\dist’,‘E:\\bot\\src\\dist\\bot2.exe’]
这样的话,每次加载libxml2的时候,都会先查找dist,再查找exe本身,而dist目录下正好包含了libxml2.dll,而这是一个非python化的动态库,当然就报错了
知道了原因,解决起来就方便了,在应用程序头上加上
PLAIN TEXT
PYTHON:
if len(sys.path)>1:
sys.path.insert(0,sys.path[-1])
print sys.path
将调用路径换一下就可以了。
一直以来都在项目中使用了UrlRewritingNet模块来实现url重定向的功能,很是方便好用。但有一个问题一直没有解决,就是当用户访问需要登陆的页面是会自动转到login页面,这时其returl参数会将原始的url暴露出来,很是不爽。
今天花了点时间研究了一下,发现
UrlRewriteModule是在BeginRequest事件中进行重写的
Form认证模块(FormsAuthenticationModule)是在AuthenticateRequest中进行权限判断的
AuthenticateRequest事件晚于BeginRequest执行,所以认证过程中产生的returl肯定是取不到原始的rawurl了
为了让returl能够保持为原始的url,需要将UrlRewriteModule的重写改在AuthorizeRequest事件中执行
UrlRewritingNet没有提供这种选项,所幸的是这是个开源的工程,于是将其代码进行了一些修改。增加了一个RewriteOnRequestBegin的配置参数,在其初始化方法中修改代码如下:
PLAIN TEXT
C#:
if (UrlRewriting.Configuration.RewriteOnRequestBegin)
{
context.BeginRequest += new EventHandler(OnBeginRequest);
}
[…]
一直使用py2exe打包python工程,昨天照往常一样打包准备发布,却发现生成的exe文件不能用了。
提示如下:
decompress data; zlib not available
Traceback (most recent call last):
File “bot2.py”, line 8, in ?
zipimport.ZipImportError: can’t decompress data; zlib not available
赶紧google了一番,看来遇到这样问题的不少,但没有很好的解决方法。
根据网上的提示,反复尝试,发现只要去掉setup.py中的”compressed”: 1,就可以正常的生成exe文件。也就是说不能使用文件压缩功能,看了一下,生成的文件比原来大了不少,很是不爽。但确乎是找不到什么好的方法了。
突然想到,最近曾经将py2exe升级为0.66版本,会不会是这个原因呢?于是将其恢复回0.65,发现竟然可以使用原来的setup文件生成压缩的exe文件。
看来,升级要谨慎,版本高未必就是东西好。
刚刚又打包了一个com server的py程序(就是因为这个升的级),发现生成的exe出错了,但使用0.66版本却是正常的。这该如何是好呢。
因为同事工作上需要使用到htmltidy(一个开源的用于规正html代码的工具。用来对html代码进行格式化,效果非常好),但平时使用的是delphi,虽然其主页上提供了delphi的封装包,但是可能是版本比较旧的缘故,无法处理繁体中文和日文。
我看了一下,上面有phthon的封装包,于是试了一下,发现能很好的处理多国语言,于是就想起写一个com server让他调用.
用python实现com非常简单,具体实现可以参考《Python Programming on Win32》,这是一本介绍python window编程,非常经典的书籍。
这里我介绍一下实现步骤:
下载并安装Python wrapper for TidyLib,因为该库依赖于ctypes库,所以您可能还需要安装ctypes库
下载并安装pywin32
实现起来很简单,代码如下:PLAIN TEXT
PYTHON:
#–coding:utf8–
# pytidycom.py
#
# A contrived sample Python server that demonstrates
# wrapping, unwrapping, and passing IDispatch objects.
# Import the utilities for wrapping and unwrapping.
from win32com.server.util import wrap, unwrap
import win32com.client
import tidy
# Although we are able to register our Parent object for debugging,
# […]
最近学习Django,经常需要查看文档。老是到官方网站查询,有时候速度比较慢,也不太方便。于是花了点时间编译了这份文档。
文档结构参考官方网站。
点击这里下载:django96_help.chm
该文档使用rst2chm生成,参考了limodou老兄的《使用rst2chm.py将reStructuredText转化为chm文档》
顺便把limodou的Django Step by Step编译了一份.点击这里下载:django_stepbystep.chm
基于xmpp的聊天服务器有很多,很多还是开源的,这为我们组建自己的聊天服务器提供了方便。
根据jabber官方网站的推荐,选择了jabberd2.0和ejabberd开始搭建平台。
Jabberd2.0是用c语言写的,其windows版本可以在这里下载,因为在搭建完毕后发现当数据量一大的时候,其s2s模块会发生异常,感觉不太稳定,也可能是windows版本的缘故,linux版本没试过,也不想花时间去查看其源代码。这里就不介绍了。
Ejabberd据说是可扩展性最好的一种Jabber/XMPP服务器,支持分布多个服务器,并且具有容错处理,单台服务器失效不影响整个cluster运作。它采用一种大家都没听过的语言Erlang开发。
因为没有接触过Erlang直接下载了其,windows版本的安装包,才6mb多,体积不算很大。
接下来就是安装:
下载windows安装包
开始安装按照提示一路next就可以了,其中要求输入用户名和密码,这个最好记住。安装完毕后,会在桌面上生成两个快捷方式“Start ejabberd“,”Stop ejabberd”“
配置ejabberd.cfg
{acl, admin, {user, “admin”}}. 这个表示使用内联的管理用户,用户名为admin,也就是安装提示中输入的用户名
修改% Host name:
{hosts, [”你的地址”]}.
其他使用默认设置即可
启动ejabberd服务
用jabber客户端,psi或Exodus等,新注册一个用户(这里注意ejabberd系统默认没有用户–包括admin,所以如果要登陆管理网站,必须用客户端注册一个新的jid)
Ejabberd启动时会自动启动一个管理平台,一般地址为http://localhost:5280/admin/,您可以用刚刚申请的admin@xxx来登陆并查看服务器运行情况。
至此,服务器运行正常,你可以使用常用的jabber客户端进行用户的注册发送及时消息。
不过当我使用gtalk试图与其相联的时候却发现了问题,无法通讯,经过网上搜索,发现需要在主机的hosts文件(该文件一般位于system32/driver/etc目录下)中添加 216.239.37.125 gmail.com ,这个可能是ejabberd的dns解析模块的问题,不过这样修改后发现可以和gmail正常相连了,一切ok
很喜欢精致小巧的jquery,Learning Jquery介绍了几种在firefox中集合firebug调试网页的方法,确实很方便.
在此整理一下:
1.为jquery添加bookmarked
这个方法很简单,只要添加一个书签,在地址栏里输入如下代码
PLAIN TEXT
HTML:
javascript:var%20s=document.createElement(’script’);s.setAttribute(’src’,%20′http://jquery.com/src/jquery-1.0.4.js‘);document.getElementsByTagName(’body’)[0].appendChild(s);alert(’thank you for using jquery!’);void(s);
每次需要调试网页的时候,只要点击一下这个链接,就可以在firebug的console中用$(xxx)这样的jquery的方法调用网页中的各种元素,试验你的javascript代码了。
当然,你也可以直接将下面的链接拖到firefox的收藏夹或工具条中,以方便调用。
> jQuerify<
原文:http://www.learningjquery.com/2006/12/jquerify-bookmarklet
2.如果你已经安装了Greasemonkey的话
您可以直接在user script网站,输入jquery查询,就能获得已经有人写好的包含jquery的脚本。将其应用于你需要调试的网站即可,这篇文章可以作为一个参考:http://joanpiedra.com/jquery/greasemonkey/
PLAIN TEXT
JavaScript:
function getFeedUrl()
{
links=document.getElementsByTagName(“link”)
for(i in links){
link=links[i];
if (link.type)
{
if((link.type.toLowerCase()==“application/rss+xml”)||
(link.type.toLowerCase()==“application/atom+xml”))
[…]