初识Python!

“Python”这个分类已经建立了很长时间了,但之前一直不知道用 Python 究竟可以做什么。

我最开始是被 Python 简洁而漂亮的语法而吸引,她使用强制缩进的语法使得代码看起来相当漂亮,一目了然。但我最初想使用她来开发 Web 程序,但后来感觉用她来开发 Web 真的不如用 PHP 来的顺手,可能是我习惯了 PHP 可以在 HTML中嵌套的方法,再之我一直没有在 Apache 中通过 Module 的方式的正确的运行过 Python,因此一直就没有使用。

但对这个语言有过了解,她功能强大,语法简洁!我便一直都记住了这个语言。

这段时间我发现了她真正的用处,这对我来说是一个好事,使得我有理由去学习这门语言,让这门语言为我来做些事情。

例如,我想要通过程序来处理上万条数据,要通过程序来判断数据中的地址是否可以使用 Google Maps API 获取坐标,因为有的地址可能由于格式问题不能够正确获取坐标。任何程序语言都可以做到这点,但如果用 PHP 的话无法进行多线程处理(可能我还不会),用 Java 的话相比 Python 又需要较多的代码编写,因此 Python 便成了最佳的选择。语法简洁让我有了用 Python 的最大理由。

当然,Python 还可以帮助我做更多的事情。

Python 的安装非常简单,只需要在 www.python.org 下载所对应的安装包进行安装就可以了,基本不需要其他设置,或者需要在环境变量中添加 Python 的执行目录,就可以开始你的 Python 之旅了!

就像上面这样,一个最基本,最简单的 Python 程序就写好了,运行后会输出“Hello, Python!”。当然,这个程序并不能做什么有意义的事情,在以后我会分享更多关于我学习 Python 的事情。

Chrome扩展:谷歌搜索本地化

之前在 Chrome 的应用商店安装过一个这样功能的扩展,但是对于搜索结果中的“网页链接”结构就不起作用了。

在使用 www.google.com.hk 进行搜索时,搜索结果中的 URL 会以“http://www.google.com.hk/url?url=”这样的方式对网站结果进行链接,这种方式直接导致了中国内地用户使用 Google 完全无法搜索,而这个扩展就能解决这个问题,使搜索结果中以最终的 URL 来进行链接。但这个扩展生效的前提是要关闭搜索设置中的“Google 即搜即得”功能(见下图)

这只是一个简单的扩展,运用 JS 将搜索结果中的 a 标签进行了修改。

我之前试着放弃谷歌而转向百度,但发现很多关于技术的问题在百度的搜索结果无法找到满意的答案,尽管谷歌搜索中有些问题会指向百度知道,而且用户体验也很好,但百度搜索结果的体验却不尽人意。

下载谷歌搜索本地化的压缩包,解压后将里面的“Google search localization.crx”文件拖到 Chrome 浏览器中安装即可,如果想要了解扩展如何工作的朋友,可以查看里面的源码。

安装需要打开 Chrome 的“扩展程序”,然后才能拖动到“扩展程序”的页面进行安装。

自豪的使用 WordPress

由于近期备案查的严,原本所在的服务器被墙了,所以要更换新的空间和程序。

我也自豪的加入了 WordPress 的阵营,我还是一个新手。经过一上午的努力,把原先的 ASP 程序导向了 WordPress,对已经意识到的一些 URI 做了重定向。

现在基本保证原程序中的数据大部分可以使用,但不排除一些问题,例如:附件的显示、UBB代码的解析、CODE语法的解析、URL错误,和一些内容不可浏览的问题。

主题的话先使用 WordPress 默认的主题,接下来的时间再慢慢的把未完善的功能完善。另外,感谢 Tan Studio 提供空间。

为你的博客加入“丰富网页摘要”

什么是“丰富网页摘要”?我想可能还有一些站长朋友并不了解,但如果经常使用谷歌搜索引擎(尤其是英文版)的朋友,应该会注意到一些网页在自然搜索结果中会显示非常友好的信息(图1),其中可能会包括作者信息、评论数、评分情况、页面导航等信息。

丰富网页摘要示例
图1

这种显示效果不仅非常友好,而且还可以在自然搜索结果中“脱颖而出”,增加用户的关注度,也可以方便谷歌搜索引擎对网页的内容进行分析。当然,并不是加入丰富网页摘要标记,在搜索结果中就一定会显示,但我认为加入标记有百利而无一害。

谷歌的帮助文档中对“丰富网页摘要”做了很详细的说明,类型包括:

我在这里对“评论(hReview)”中的“单条评论”这个类型的标记进行说明。评论分为“单条评论”和“汇总评论”,如果页面中只有单条评论则使用“单条评论”的格式,如果页面中含有多条评论则使用“汇总评论的格式”。如果网页中包含这2种评论格式的标记,Google 会使用汇总评论标记来显示。

“单条评论”的属性有“item(评论项), rating(评分), reviewer(评论者),dtreviewed(评论日期), description(评论正文), summary(评论摘要)”,其中粗体为必需项,注意dtreviewed属性,应该采用 ISO日期格式

这个示例是采用了“微格式”的标记方法,除了这种方法以外还有“微数据”和“RDFa”,这3种方法都可以被 Google 很好的识别。

音乐、产品、人物等这些摘要标记,站长朋友们可以在 Google 推出的“丰富网页摘要标记”专题获取帮助。

PS,谷歌中文网站站长小组和谷歌中文搜索质量团队在12月14日分别举行“在线互动活动”和“网站诊断活动”,欢迎站长朋友们参加。

新的博客主题

前段时间,为了考验一下自己的对 Java 技术的了解,便用 Java EE 写了一个博客程序,其中用的样式就是现在博客使用的样式,这个样式是我从 Matt Cutts 的博客下扒下来的,此乃使用的是“照猫画虎”之术。对于我来说“照猫画虎”甚是简单,但自己做一个不错的主题,比登天还要难。

Java EE 版的博客完成后,发现代码甚是凌乱,虽然在其中用到了一些 MVC 的框架,但感觉与 Model 2 还相差甚远。

想要使用新的博客程序,但考虑到环境的搭建和在使用中可能会出现各种各样未知的问题,毕竟是一个很不成熟的程序,于是便放弃了使用。

又想要使现在的博客换个样子,于是便采用了这套新的主题。之前的 js 代码甚是混乱,所以把 js 的代码也换了。

评论部分也有了小小的改变,采用返回 json 格式信息的方法来判断和显示评论的发表情况。

Akismet(防Spam垃圾留言)的ASP类

今天将原来的日志评论审核机制换成了Akismet识别的方式。

AkismetWordPress中的一个优秀的防止Spam的插件,使用Akismet必须要去申请一个WordPress的Key,这个Key只要注册WordPress官方的用户就可以免费得到。但并不是只可以在WordPress中使用,只要你去阅读Akismet的API,你就可以整合到其他的博客程序中了。我这里提供一个Akismet的ASP类和一些API说明,想在自己的ASP程序中整合的话不妨看一看。

请先下载Akismet(ASP),废话不多说了,先看一段下面的代码:

最后,你可以根据 isSpam 这个变量返回的值来执行相应的操作。

我的这个类中,在类初始化函数中自动获取了用户的IP,你也可以自己来写一个函数,然后在调用类的时候来指定IP地址。类中“submitSpam()”函数是用来向Akismet报道一个Spam,报告后要通过审核,所以并不是会立即生效,所以你也可以在自己的程序中加入相应的屏蔽操作。“submitHam()”函数是来向Akismet说明提交的是一个标记错误的Spam,也要经过相应的审核。

PS,发现做为一个网民,不翻墙不行,所以今天下载了最新的Tor,终于又可以顺利的翻墙了:)

这是一篇用Windows Live Writer发布的日志

用WLW好像给我的感觉更加专业:(,作为主流的博客功能,我的博客当然不能少了这么优秀的功能!

通过对XML-RPC协议的查看和对WP的XML-RPC API的研究,在自己的博客中也写了一个相应的WLW接口。WP的API功能算是比较全的了,可以设置关键字、摘要、自定义静态日志名、分类、发布日期等,所以我就选用这个API。

总体来说还算比较简单,现在只支持发布日志,其它功能也用不着,所以也不打算增加功能了。发布还存在小小的一点问题,发布成功后返回的应答请求错误的,在WLW总是显示“从日志服务器接收的对 metaWeblog.newPost 方法的响应无效”,暂时还没有找到什么原因。

WLW是非常不错,但相比我强大的后台发布还是有些逊色,当然这是从SEO的角度说的。

这只是一篇用来测试WLW的日志。

博客中的Ping分析

在博客中发表文章时,利用XML-RPC将博客中的更新信息通过Ping的方式通知各Feed服务商、搜索引擎,以便在最短的时间内让Feed更新和搜索引擎收录。但国内的有些Ping API却无法正常运行,下面是对国内一些常用的Ping API的测试结果。

http://blogsearch.google.com/ping/RPC2

这是谷歌“博客搜索”的Ping API地址,响应速度非常快 ,而且也很稳定。Ping发送后新发表的文章在10分钟内就被收录!

http://api.my.yahoo.com/RPC2

网上的Ping列表中都包括雅虎的这个API,但测试时一直提示响应解析失败,直接访问也无法访问,可能地址已经更改。

http://www.feedsky.com/api/RPC2

这是飞递(FeedSky)的Ping Server API地址。返回结果正确,但是不太稳定。

http://blog.youdao.com/ping/RPC2

这是有道的Ping地址,返回正确,但要注意360000毫秒内只能提交一次,还要注意,有道Ping的调用方法名是:weblogUpdates.extendedPing,写成weblogUpdates.Ping会出错,还有一点要注意,发送的数据的URL参数中必需包含4个参数,即:1.网站名称;2.网站地址;3.文章地址;4.feed地址,否则就会出错。

http://www.xianguo.com/xmlrpc/ping.php

这是鲜果的Ping地址,返回正确!

http://blog.iask.com/RPC2

这是新浪的Ping地址,当请求多个分类标签时返回错误:sorry,failing,但如果提交的的参数中,网址的参数只有一个时,返回正确。

从上面的测试结果可以看出,可用的Ping地址有:

http://blogsearch.google.com/ping/RPC2
http://www.feedsky.com/api/RPC2
http://blog.youdao.com/ping/RPC2
http://www.xianguo.com/xmlrpc/ping.php

http://blog.iask.com/RPC2

其中FeedSky返回的信息不明确 ,所以不知道可不可用。而新浪可接收的Ping数据中的网址不可以超过1个,有道接收的Ping信息不可以少于3个网址,并且调用方法名必须是:weblogUpdates.extendedPing(除FeedSky以外都可以用这个调用方法名),所以在提交Ping数据的时候要根据不同的情况做不同的判断,这样才能保证发送的Ping都可以正常运行!

今天发现百度也可以通过Ping服务来通知博客更新了,具体的参数及方法可以在百度搜索的帮助文档中查找。

评论列表中增加Gravatar头像展示

今天去 Evance 的博客逛的时候,发现自己的头像可以显示了,突然“心血来潮”,想要在博客的评论列表中加入Gravatar(个人全球统一标识)的头像展示功能,于是便把博客程序的博客功能和评论列表布局都大改了一遍。

增加 Gravatar 还算简单,它是以 Email 地址作为唯一标识符来识别头像的。

基本格式:http://www.gravatar.com/avatar/32位MD5加密后的Email地址?d=默认图片地址(必须经过URL转码)&s=头像大小(单位:px)&r=头像等级(G 普通级、PG 辅导级、R 和 X 为限制级,一般为G)

把上面的地址经过处理后作为图片地址加入到<img>标签内就可以了,这样基于自己的博客程序的 Gravatar 头像展示功能就做好了。

除止之外,评论列表的布局也进行了改动:取消了原来使用<ol><li></li></ol>这样的有序列表标签进行布局,而是使用<div>标签来进行布局。因为用有序列表标签的话,我实在没办法控制好CSS样式。

提交评论后的显示方式也进行了改动,之前是使用JS的方式实现不刷新页面显示提交后的评论数据,但由于JS回显对有HTML格式的内容支持的不是很好,所以便改为了使用AJAX调用回显的方法来实现这个功能。

改动的时候还发现了几个小问题,原来JS保存Cookie的代码一直没有使用。这次改动还算顺利,虽然用了中午的时间,但改动后的效果还算不错。

ASP判断搜索引擎(bot,Spider,机器人,爬虫)的函数

最近用 PHP 做了一个 WAP 的站点,因为只想做个专注于 无线应用协议 的网站,所以没有做电脑客户端浏览的页面。但是为了让使用IE浏览器浏览网站的用户也可以浏览网站,所以就用了一个WAP模拟器的功能,以便使用IE浏览器的朋友也可以浏览到 WAP 站点中的内容。

我分别用了两个域名来指向两个不同的空间,IE浏览的站点其实是使用了一个模拟器模拟手机上网的方式来浏览WAP站点的,所以在输出时使用的JS。但我想让搜索引擎的机器人在浏览IE可以浏览的网页时也显示WAP站点的内容,因此,这个 is_bot 函数便产生了。

这样,当搜索引擎在索引供IE用户浏览的网址时,程序则会根据判断来进行301永久重定向。