抓虾帮你轻松订阅、收藏、分享博客和新闻等。 订阅 关闭
Yskin's Blog 计算机技术,生活
共有265篇 | 以下是第41-50篇 | 只浏览标题 <   1   2   3   4   5   6   7   8   9   10   11  >  
WordPress 2.1发布 查看全文   2007-01-23 10:18:37

WordPress 2.1
WordPress 2.1已于北京时间2007年1月23日早上5点58分正式发布了。唉,前几天听人说是要准备1月22号发布,果然就在22号发布出来了。这个从WordPress 2.0刚发布不久就开始筹划准备的WordPress 2.1,今天终于算是圆满了。WordPress 2.1的代号是Ella,汗,说到Ella就让我想起S.H.E.了。

WordPress 2.1的更新比较大,WordPress 2.1(849,260字节)比WordPress 2.0.7(639,463字节)大了不少,WordPress开发组说有超过550条bug被修复。不过, 在WordPress 2.1里被关闭的ticket列表中有631条。做为一个全新的版本,而不是象WordPress 2.0.7这样的bug fix版本,我们更关注的是它新增的功能,而不是修复的bug。因为已知的bug在WordPress 2.0.x系列的更新中也有被修复。WordPress开发日志上写的有下面几项,我一一做一下翻译和解释:

Autosave自动保存功能,确保您不会再丢失文章。(Autosave makes sure you never lose a post again. )
Autosave自动保存,类似与Gmail的自动保存功能,可以在您写新文章的时候,隔一段时间就自动保存文章内容,避免因浏览器或操作系统崩溃造成文章丢失。这个功能只有在写新文章时被启用,等于是隔一段时间就在后台自动执行一次“保存并继续编辑”的操作。很好的一个功能,怪不得被放到第一条,毕竟,在写了很多字之后,因为浏览器或者操作系统的崩溃,或者发布文章出错,导致那么多文字丢失,是一件很令人沮丧的事情。不过,以后不能随便新建文章了,因为只有新建了文章,隔几分钟,自动保存功能触发,一篇Draft草稿就诞生了。
我们新设计的标签式编辑器,允许您在编辑文章时,在可视化编辑器和普通编辑器之间随意切换。(Our new tabbed editor allows you to switch between WYSIWYG and code editing instantly while writing a post.)
原有的TinyMCE的html代码编辑按钮被取消了。新增了"Visual"和"Code"两个标签,可以在编辑文章时,随时在可视化编辑器和普通编辑器之间切换。TinyMCE也从2.0RC4升级到2.0.8,bug肯定修复了不少。另外,可以直接在可视化编辑器里输入<小于号了,而不用再象以前那样输入html实体了。这好像更傻瓜化了吧,code也可以直接输入了。

Nicky那儿看到,“WordPress 2.1 beta2取消了2.1 Alpha3里可视化编辑器的一些按钮功能”[via]我没怎么关注WordPress 2.1的修改过程,不太清楚这些按钮是什么时候被增加以及去掉的。不过,我拿Firefox的DOM查看器看了一下,好像有一些按钮在那里,只是被"display:none;"了而已。不妨进入您的WordPress 2.1的编辑页面,按下Alt+v,看看有什么效果,嘿嘿。

这次新增高级功能按钮有:文字样式(就是H1,H2那些)、下划线、居中、文字颜色、粘贴为纯文本(Paste as Plain Text)、粘贴为富文本(Paste from Word)、去除格式(可以把选中的部分转换为纯文本)、清理代码(Cleanup messy code,用不大着,很多时候会自动清理的,比如切换到普通编辑器时)、插入特殊符号(这个很有用,很方便)、撤销和重做(Undo, Redo,这两个以前就有了,只是现在被移到高级按钮区了)。另外,拼写检查功能在下面的第4条有介绍。

普通编辑器和html代码编辑还是有所不同的,普通编辑器里所有的<br /><p>都被替换成回车了。另外,以前在TinyMCE的html代码编辑器里,如果想删除一个html标签,只要在标签名称那里随便加个字符,点Update的时候TinyMCE会因为这个标签不是标准的html标签而自动清除掉它。而该标签后面对应的结束标签,也因为没有匹配而被清除掉了。这样真是很方便。另外,如果想清除一个html标签里的属性,比如每次从flickr复制图片代码过来时,都要把外层的那个title属性去掉,也是把属性名加个字符,这样这个属性就会被去掉,而整个标签不受影响。现在,html代码编辑器没了,普通编辑器又没这功能,唉,只好一条一条自己删了。

无损的XML导入导出功能,可以让您很方便地在不同的WordPress Blog之前转移您的Blog内容。(The lossless XML import and export makes it easy for you to move your content between WordPress blogs.)
XML导入导出功能,使用的是WordPress eXtended RSS(WXR)格式。这个东西应该是Matt老大写的,最早用在wordpress.com上,这里有一个人把它写成了插件。现在,WordPress 2.1集成进了这个功能,用户可以很方便地进行导出和导入,实现WordPress to WordPress import功能。

这个WXR格式是基于RSS 2.0格式的,里面不仅输出了基本的WordPress feed的内容,还加上了WordPress自己的一些东西,包括文章的各种信息,比如文章ID、发布时间、分类、状态、缩略名等等,还有属于文章的评论,包括评论的所有状态信息。WordPress 2.1和WPMU都支持导入WXR文件,所以导出来的文件可以在另一个WordPress 2.1架设的Blog或者WPMU架设的BSP上直接导入。另外,如果有其他Blog系统想导入WordPress架设的Blog,也不用费心研究WordPress的数据结构了,直接研究这个WXR格式,用XML文件处理函数把文件中的数据解析出来就可以了。

如果你要从一个WordPress Blog转移所有数据到另一个WordPress Blog上,那么用这个导入导出功能最好不过了,你的所有文章、页面、分类、评论、自定义字段等等都不会丢失。(好像不包括链接耶)当然,这只限于BSP到自己架设、自己架设到BSP、BSP到BSP,如果是自己架设的WordPress Blog转移服务器,还是直接迁移文件和数据库更好一些,这样链接、WordPress的各种设置,以及插件模版等等都会保留。

Update:今天shurarai发email来问我:怎样从my.donews.com导出数据到自己架设的Blog上。其实my.donews.com也是WPMU架设的,只是把导出菜单隐藏起来了而已。不妨登陆进去后,进入"http://my.donews.com/yskin/wp-admin/export.php"这样的地址,点那个"Download Export File"按钮,然后在自己架设的WordPress 2.1上选择从WordPress导入就可以了。

我们全新设计的可视化编辑器现在还包括拼写检查功能。(Our completely redone visual editor also now includes spell checking.)
拼写检查功能,可以象Word那样对文章内容进行拼写检查。不过只支持英文,不支持中文。如果写的文章里有一些英文,那么用这个拼写检查功能检查一下也不错啊。不过,很多计算机方面的词它都不认识,比如"WordPress",比如"Blog"...
新增搜索引擎保密选项,可以让您的Blog不ping Technorati和FeedBurner等服务器,也不被Google等搜索引擎收录。(New search engine privacy option allows you take you to indicate your blog shouldn’t ping or be indexed by search engines like Google.)
搜索引擎保密功能,允许你设置您的Blog为隐藏状态,可以禁止搜索引擎索引收录您的Blog,这样别人无法搜索到这个Blog,只能通过其他地址链接过来或者直接输入地址访问。这个功能是WordPress通过直接接管对robots.txt文件的访问,输出禁止所有搜索引擎访问的代码,并且在输出页面时输出一个meta标签来实现的。

看起来很不错的功能,不过怕是满足不了某些人的需求。很多人提到过希望整个Blog加密,只有输入密码才能看到Blog内容。不知道为啥会有这样的需求,难道都是一些小女生写的心情日记?记得MSN Space有这样的功能,WordPress里嘛,要么你给每篇文章都加上密码,要么利用.htaccess文件让所有访问都需要密码。最好是直接用一个日记软件得了,放在本地又不会被人访问到,干嘛非要弄Blog呢。

如果WordPress使用者自己弄了robots.txt文件,则WordPress对robots.txt的接管将会失效,因为.htaccess文件里定义的是:当文件不存在时才将请求转给WordPress处理。哈哈,这个功能设计的真巧妙。

你可以将一个page设置为Blog的首页,而把本该在Blog首页显示的最新文章内容放在一个page里。这样你可以很容易就把WordPress变成一个CMS系统了。(You can set any “page” to be the front page of your site, and put the latest posts somewhere else, making it much easier to use WordPress as a content management system.)
也就是说,你可以新建一个page,起名叫"frontpage",然后到后台->选项->输出里设定"Front page"为"frontpage",则frontpage页面里的内容就会显示在首页,甚至frontpage的地址也是首页的地址。因为WordPress的page有一个功能叫页面模版,你可以专为这个首页page建立一个页面模版,从而很方便地控制首页的显示内容。再新建一个page,起名叫"posts",然后设定"Posts page"为"posts",则本该在首页显示的最新十篇文章的内容就会显示在"http://abc.com/posts/"这个page里。这样,WordPress就不再只是一个Blog系统,而更像一个CMS内容管理系统了。
对数据库进行操作的SQL语句变得更高效,更快速了。来自MySQL ABDomas Mituzas将WordPress对数据库进行的所有SQL语句进行了一次细致的梳理。(Much more efficient database code, faster than previous versions. Domas Mituzas from MySQL went over all our queries with a fine-toothed comb.)
这一条讲的应该是整个WordPress源代码中所有的SQL操作语句被梳理了一遍,以提高SQL执行效率。wp-db.php文件好像没有什么改动,对比WordPress 2.0.7的wp-db.php文件,好像只是增加了很多注释,以及增加了对PHP 5.2的支持,以及修正了程序需要连接多个数据库时的bug。
链接分类现在开始支持子分类了,并且可以在添加链接时动态添加分类了。(Links in your blogroll now support sub-categories and you can add categories on the fly.)
链接分类现在支持子分类,因为链接分类已经和文章分类合并了。现在在添加链接的时候可以动态添加分类,就像编辑文章时一样,只要在填入分类名后点"Add",WordPress就会使用AJAX在后台添加这个分类。(又学到一个新词:on the fly,意思是dynamic, on the run。)
重新设计的登录页面,来自Shuttle项目。(Redesigned login screen from the Shuttle project.)
新的登录页面,好看的很。不过我N久没见过登录页面了,打开Firefox就直接进管理后台了。什么时候能把Shuttle项目的其他设计也整合进后台,那后台就漂亮的多啦。
AJAX技术被用于自定义字段、评论审核及删除,使得这些操作变得更加快捷。我(Matt)最中意的是评论页面,现在批准和不批准评论都是通过AJAX实现的,不用再刷新页面了。(More AJAX to make custom fields, moderation, deletions, and more all faster. My favorite is the comments page, which new lets you approve or unapprove things instantly.)
将AJAX技术用于更多的地方,这样很多操作就可以变得更快捷方便了。
page现在也可以象post一样成为草稿或者私人的了。(Pages can now be drafts, or private.)
私人page,不知道有啥用捏?
后台管理页面进行了更新,现在载入更快了,而且视觉效果也更加一致了。(Our admin has been refreshed to load faster and be more visually consistent.)
JavaScript脚本更多了,应该是载入更慢了才是,哈哈。
现在Dashboard会立即显示出来,然后再在后台慢慢载入各个feed。(The dashboard now instantly and brings RSS feeds asynchronously in the background.)
现在Dashboard不再是先读取feed,等3个feed读取完了再一起输出到浏览器,而是先输出到浏览器,然后在后台慢慢载入3个feed,载入完成后再显示出来。这样就不会再有国内的服务器因为不能访问Technorati而导致Dashboard载入很慢的问题了。
评论feed现在将包含所有的评论,而不再只是最新的十条评论了。(Comment feeds now include all the comments, not just the last 10.)
我汗,feed里要放那么多条评论干嘛?看了一下源代码,Blog主feed(http://yskin.net/comments/feed/)还是象原来那样只显示最新的十条评论,而文章和页面的评论feed则包含所有评论。呼,还好。
更好的i18n支持,并支持RTL语言。(Better internationalization and support for right-to-left languages.)
right-to-left language,就是从右到左写的语言,中文不是,日文不是,韩文不是,好像阿拉伯文是从右到左写的吧。更好的i18n支持,等我做WordPress 2.1中文包的时候就能感受到了。
新的上传文件管理页面,可以很方便地管理所有上传的图片,视频及音频。(The upload manager lets you easily manage all your uploads pictures, video, and audio.)
这次新增的上传文件管理页面还算不错,不用象以前那样总是要到文章编辑页面才能管理上传文件了。不过我不用这个功能,上传文件我都是通过ftp上传的。
包含了最新的Akismet 2.0插件。(A new version of the Akismet plugin is bundled.)
新版Akismet。这个插件国外的服务器用用还不错,国内的服务器用起来就不见得好咯。

另外官方还说WordPress里有复活节彩蛋。OMG,开源的程序也会有彩蛋,那不是很容易找么?呃,不知道"http://abc.com/wp-admin/options.php"这样的页面算不算彩蛋?

对于WordPress插件和模版的作者们,这次WordPress 2.1也提供了很多新功能。主要有:

Psuedo-cron伪定时功能,允许你定时执行一些操作,就像真的定时功能一样。(Psuedo-cron functionality let’s you schedule events much like cron.)
这里提供的是伪定时功能。不要看到一个“伪”字就望而却步,我们每天编程用着伪随机函数不也照样用的很好?以前有一个wp-cron插件 wp-cron插件,用于定时功能,不过只是个40多行的小程序。现在,WordPress 2.1自带了定时功能,而且比WP-cron插件好得多。

WP-cron插件也是伪定时功能,因为它靠的是每次有来访者访问Blog页面时检查当前时间,如果当前时间记录在数据库中的时间了,则执行预设好的操作,并修改数据库中的时间。假如你的Blog的访问者很少,比如定在上午8点执行操作,而直到10点才有访问者访问Blog,则预设好的操作要到10点才能执行。因此,这种定时功能只能算“伪”定时功能。

WordPress 2.1提供的定时功能更强大一些。WP-cron插件有一些毛病,比如,一个访问者在凌晨12点访问了Blog,正好触发了定时器,WP-cron会先修改数据库中保存的时间,并在"shutdown"添加hook。当页面输出结束后,数据库备份数据库自动备份程序开始被执行。数据库备份是需要一点时间的,所以如果这个访问者在这段时间内关闭了浏览器,那么浏览器会发送reset信号切断与服务器TCP链接。Apache收到信号后,会要求PHP解析器停止执行脚本。于是,数据库备份程序就被终止运行了。结果就是,这一天你没收到数据库备份文件。WordPress 2.1自带的定时功能则好很多,把定时程序的执行放在了wp-cron.php文件里,并使用了ignore_user_abort(true)这样的代码来防止PHP程序因客户端断开连接而被终止运行。不过,因为用了 fsockopen()函数,不知道会不会在某些服务器上不能使用啊。

用户管理页面现在可以很方便地处理成千上万的用户。(Users admin can now comfortably handle hundreds of thousands of users.)
但是我没感觉到用户管理页面有什么变化呀。或许是因为我只有一个用户吧,嘿嘿。
使用新的WP_Error类来进行错误报告和错误管理。(The new WP_Error class cleans up how we do error reporting and handling.)
这样可以用于同时报告多个错误。而且,wp_die()函数的大量运用,方便了中文用户。
JavaScript载入器可以让插件能更容易地包含更为强大的功能。(The javascript loader makes it easier for plugins to include rich functionality.)
WP_Scripts可以让WordPress本身和插件都能更方便地管理JavaScript脚本。
大量新hook和API。(Tons of new hooks and APIs.)
我最喜欢hook了,嘿嘿。今天在WordPress论坛看到有人把这句翻译成“成吨的...”,晕倒。
我们开始在代码里填入内置文档。(We’ve started to fill out our code inline documentation.)
以后就可以弄一个类似JavaDoc的工具来直接从WordPress源代码生成WordPress文档?
图像和缩略图处理函数现在允许多媒体插件调用。(Image and thumbnail API allows for richer media plugins.)
自定义页首、颜色选择器、图片剪裁功能。(Custom header, color picker, and image cropping framework.)
自定义页首(Custom header),提供一些API以便模版很方便地建立一个自定义页首选项页。Color picker就是当使用默认模版时,进入后台->模版->Header Image and Color,点击Font Color出现的那个选择颜色的框框。Image cropping frameword就是在自定义页首功能里可以裁减上传的页首图片的功能。貌似这些功能以前也有啊。

WordPress 2.0系列取得了空前的成功(空前而不绝后),下载量超过180万次。感谢Mark Jaquith的工作。我们委托他继续维护WordPress 2.0系列,进行稳定修正、安全修正和bug修复,一直到2010年。(Mark错关过两个bug报告,被我揪了出来。Terrible ticket closer)

另外,基于过去3年来在开发WordPress过程中所学到的东西,我们决定增加版本发布的频率,象Ubuntu那样,每天发布几个重大更新版本。因此,WordPress史上第一次定下下一个版本的发布日期:2007年4月23日。( Mark说,WordPress开发组将先疯狂的编写代码两个月,然后再拿一个月时间修复bug,对代码进行整理和优化。然后将发布一个新版本,并进行一个月的公开测试。不过,这些只是plan而已,呵呵。)

另外,WordPress开发组将首先考虑用户们投票选出来的功能。欢迎来我们的Idea board,说说您希望WordPress 2.2新增的功能,以及对已经提出的要求投票。(去瞅了一眼,很多人提了很多新功能要求,比如,WordPress自动升级、插件和模版自动升级、插件新版本通知、后台一键自动下载安装模版和插件、在后台关闭整个Blog、Tag支持、悬停菜单、自定义菜单、访问统计、文章阅读次数、相关文章功能、文章/页面版本管理、评论预览、发表评论时订阅评论更新、Thread comment、当请求URL和永久链接不同时自动重定向、ATOM 1.0支持、Blogroll链接点击数记录;还有一些功能增强要求,比如,"Make it faster"、禁用所有插件功能、可定制的Dashboard、增强Draft草稿功能、自定义TinyMCE工具栏、登录页面使用SSL连接、页面分类、文章模版、分类模版、修改管理员名称、删除子分类后将其中的文章转移到父分类中;还有其他一些建立WordPress官方插件库、模版库、语言包库等等。我也该去提点建议,让WordPress开发组重视一下中文的问题。)

OK,以上是WordPress开发组给我们描绘的一片歌舞升平的景象,WordPress 2.1不好的方面都只字未提,下面我补充一下。

WordPress 2.1里,MySQL最低版本要求从MySQL 3.23.23升到了MySQL 4.0,而PHP最低版本要求维持在PHP 4.2不变。[via]插件的兼容性在WordPress 2.1的测试版时很突出,但是WordPress 2.1发布之前,WordPress开发组加入了一个/wp-includes/deprecated.php文件,并把将要被移出核心的函数和变量放入这个文件里。所以,在WordPress 2.1正式版里,这些函数还都能用,比如table*变量和get_settings()函数。到WordPress 2.2时,WordPress开发组就会把这个文件从源代码中移除,所以,WordPress 2.2发布之日才是大限,现在插件的兼容性应该没太大的问题。中文WordPress工具箱也没问题。

WordPress Database Backup插件被移出核心了。而插件作者Scott Merill已经退出WordPress的开发,转向Habari了。[via]但是,WordPress Database Backup未死。有人接替了Skippy继续开发WordPress Database Backup ,并已经推出了适用于WordPress 2.1的WordPress Database Backup 2.0 WordPress Database Backup 2.0。这个是Scott Merill 授权的,修正了一些bug,并同时支持WP-cron插件和WordPress 2.1的定时功能。

功能增加很多,改动也很多,等我再仔细研究一下再写。

这次升级还是比较大的,我还要观望,看看我用的模版和插件是否和WordPress 2.1有冲突。所以,很可耻是,这篇关于WordPress 2.1的文章是在WordPress 2.0.7里写的。K2模版最近做了很多升级,大多都是针对WordPress 2.1提供支持的。现在K2的最新版本是r279。最近听很多人说,他们在使用“最新版的K2 0.9.1”,OMG,K2 0.9.1是去年8月底的事了,为啥就不去K2 Nightlies下载新一点的版本呢?插件也要看一下,现在WP 2.1已经正式发布了,一些插件作者应该开始着手进行升级了。WordPress文档里有一个插件与WordPress 2.1兼容性列表,不兼容的插件也就几个,我只认得 BLC插件的兼容大多出在使用了$table*变量,在WordPress 2.1里要换成$wpdb->*,象中文WordPress工具箱就是这样,桑椹在1月18日说,“大概得等 2.1 出来了以后,我才会有动力修改吧”[via]

在我的Blog上放一个下载:WordPress 2.1 下载(MD5: 749D46D7A6D82E6B4DB03962D7AB0FDE,文件大小:849,260字节),现在http://wordpress.org/download/上下载好慢,估计WordPress的服务器快被疯狂下载的人群挤爆了吧。还好我早上就下了,早起的鸟儿有虫吃,啦啦啦。

升级的步骤嘛,虽然我还没升级,不过恐怕还是直接上传覆盖就完了。当然,这些怕是要检查一下插件,看看有没有不兼容的情况。而且,升级完文件后,进入后台肯定会弹出要求升级数据库的提示,直接点进链接升级下数据库就完了。

中文包嘛,最近几天在修改WordPress 2.0.7的中文包,全部1388条字符串,一个一个地找出源文件中的对应位置和后台显示出来的位置,有些名词要仔细地找最合适的中文翻译,有的要做搜索引擎选举,还要,弄了好几天才弄了50%。WordPress 2.1还有将近400条字符串要翻译,唉。我还是要把WP 2.0.x的中文包弄好再开始弄2.1的,不然仓促弄出来太对不起观众了。

Kirin LinWordPress 2.1繁体中文包点点游 WordPress 2.1中文版都已经发布了,他们从很早就关注WordPress 2.1,并且制作了多个WP 2.1 alpha和beta版本的中文包,所以现在做WP 2.1正式版的中文包很快。还有,今天偶然发现Wady自己制作了一个WordPress 2.1中文包。WordPress 2.1中文包,1364条字符串,全部翻下来很不容易啊。而且Wady还认真研究了__ngettext()函数,最后在Kirin Lin的中文包里找到了答案。这个函数老早就在WordPress里了,但是一直没有被调用过,所以WordPress 2.0.x系列的语言包里就不需要加这个关键词。从WordPress 2.1开始,这个函数开始被大量使用。我在WordPress 2.0.6发布的那天研究了下这个函数,并在网上找了一圈资料,也参考了Drupal中文包制作者们的一些说明,最终才知道该怎么处理。唉,我太笨了,象Wady一样参考一下Kirin Lin的中文包不就行了?点点游一直在用WordPress官方的pot文件。记得以前WP 2.1 beta版的时候,WordPress官方的pot文件并没有加这个关键词,直到2006年12月24日点点游的 WordPress 2.1 Alpha3 r4662里都还没加上。不过,从点点游的 WordPress 2.1 beta2开始,pot文件就已经增加了这个关键词,看来WordPress开发组注意到了这个问题,又或者有WordPress语言包作者提出了这个问题,所以,现在已经没问题了。不过我还是保持着从WordPress源文件更新po文件的习惯,我更相信我的POEdit,嘿嘿。

等我过几天做WordPress 2.1中文包的时候,我就有3个中文包可供参考,多么幸福啊,哇咔咔咔。

 折叠
发给朋友   转到小组   (打标签) 收藏   推荐  

在Windows XP里,找一个位于NTFS格式磁盘里的文件夹,在上面点右键->属性->自定义->更改图标,输入"%SystemRoot%\system32\moricons.dll",回车。把滚动条往右拖一拖,找到WordPress的那个图标,单击选中,一路点确定退出来。好了,现在这个文件夹就有了WordPress的图标了。
WordPress icon in Windows

这个moricons.dll文件是Windows XP自带的,看文件名,应该是"more icons"的意思吧。好吧,我承认,这个wp应该是Wordpad写字板的意思。这个dll文件里放的都是一些早期的图标,比如右下角的那只小狐狸,可不是Firefox哦,应该是微软收购Foxbase/FoxPro后用的图标吧。

 折叠
发给朋友   转到小组   (打标签) 收藏   推荐  
WordPress 2.0.7发布 查看全文   2007-01-16 09:23:16

呼,14号才RC2的WordPress 2.0.7,今天早上5点41分就release了。上次WordPress 2.0.6是2007年1月5日发布的,这才十天时间,2.0.7就出来了。

正如WordPress官方Blog所说,这次这么着急的发布是因为有两个重要的bug需要修复:一个是FeedBurner读取feed的问题,一个是旧版PHP的bug。这次从WordPress 2.0.6升级到2.0.7只修改了下面七个文件,所以只要上传覆盖这七个文件就可以完成升级了。

  • wp-admin\inline-uploading.php
  • wp-admin\post.php
  • wp-content\plugins\akismet\akismet.php
  • wp-includes\classes.php
  • wp-includes\functions.php
  • wp-includes\version.php
  • wp-settings.php

这次的更新有如下几项:

  1. 现在删除page后,页面将会自动跳转到“管理->页面”页。[4692]
    另外,WordPress官方Blog上所说的“删除page的时候不再提示"Are You Sure?"”,乱讲!
  2. 修正在IE浏览器里向页面发送原始尺寸的图片时,"height"属性不正确的问题。[4706]
    这个bug只出现在IE浏览器里,而不影响Firefox浏览器。因为,Firefox在返回一个对象的innerHTML属性时,已经将这段html整理过,给每个标签的每个属性加上双引号。汗,Firefox真是强悍。[via]
  3. 修正某些情况下不能正确返回HTTP 304的bug。[4715]
    这个bug出现在某些PHP版本中,当magic_quotes_gpc打开时,$_SERVER数组里的某些项会被两次 addslashes()。我的服务器正好有这个问题,前几天trac.wordpress.org上在讨论FeedBurner的那个bug的时候我就发现,我的feed根本不返回304 Not Modified。其他的一些资源文件,比如CSS文件,返回304是由Apache控制的,这些304都能正确返回。而Blog页面和feed等,都是由WordPress控制是否返回304的,显然问题出现在WordPress上。今天在2.0.6里做了个小hack试了一下,确实是一个双引号 "前面被加了三个反斜线。不过,我自己写的PHP程序却没有这种现象发生,$_SERVER只被 addslashes()了一次,奇怪奇怪。这个修正再加上下面的第五个修正,我的feed现在可以正确返回HTTP 304了。记得以前听人说,好像是车东说的,FeedBurner抓取feed时,都是先发一个HEAD命令过来,看看feed是否更新,然后再决定是否抓取,感情这么多年来,我的feed从未返回过304呀,可真是辛苦了FeedBurner了。
    另外,这个bug:#2597在2006年4月初就在WordPress 2.1里修复了,现在Mark终于想起我们2.0.x系列的用户了,555~~
  4. 针对PHP 4.4.3之前以及5.1.4之前的版本的 zend_hash_del_key_or_index bug进行了修改,防止,运行在这些版本PHP之上,并且Apache的register_globals被打开的WordPress被攻击。
    这是个大bug,攻击者可以进行SQL注入,通过查询数据库获取管理员密码,然后直接登陆WordPress后台。[4717]
    详细的情况在我的这篇文章里有说明,还是推荐大家尽快更新WordPress到2.0.7。
  5. 修正所谓“FeedBurner问题”。[4684], [4724]
    在WordPress 2.0.6里,为了兼容新推出的PHP 5.2而做了一些修改,在PHP运行在非cgi方式下时,只设置了Status头,而不设置HTTP Header里第一行的"HTTP/1.1 200"。这样,当FeedBurner的服务器读取feed时,发现开头写着"HTTP/1.1 200 OK",然后后面却写着"Status: 304 Not Modified"时,FeedBurner就蒙了。然后,FeedBurner烧录过的feed就变成了一个空白页面。我想,FeedBurner是采信了前面的HTTP 200,认为这是一个正常的返回,而WordPress认为已经标记这个返回为304,所以返回的内容是空的,于是,FeedBurner就把这个空字符串写入数据库,我们就有了一个空feed。当然,这也不怪FeedBurner,据trac.wordpress.org上大家所说,Firefox 2.0也是这样处理的,除非你用Ctrl+F5刷新,这时Firefox不会发送If-Modified-Since和If-None-Match两个HTTP头,这样WP就不会返回304了。#3435
    另外,有人推荐使用header()函数的http_response_code参数,来强制PHP更新HTTP相应代码。[via #3528]这个参数是在PHP 4.3.0版被加上的,所以有了[4724]这个更新。我测试了一下,在我的服务器上加不加都无所谓。不过加上也没什么不好,以防万一嘛。
  6. Akismet从1.2.1升级到1.8.1,汗。

OK,快升级吧。

 折叠
发给朋友   转到小组   (打标签) 收藏   推荐  
被nonozone点名 查看全文   2007-01-10 11:27:57

被nonozone点名了,这是我第一次参加这种游戏。下面回答他提出的5个问题。

  1. 如果你的MM不说话,你要怎么哄她?
    道歉,不说话总是有原因的嘛,道歉并改正错误,让她满意不就行了嘛。
  2. 你早上起床的时候是先穿上衣还是裤子?我说的是内衣,嘿嘿。
    深圳一年有¾的时间是穿短袖的,不用穿内衣。现在1月份还算有点冷,气温都降到10度以下了。早上起床嘛,就拿今天来说,上面的贴身羊毛衫昨晚没脱(因为我的被子薄),起床后先穿内裤,然后是裤子,然后是外套。
  3. 如果有一天地球上只剩下你,你要怎么找乐子?
    如果地球上只剩下我,而根据常识,人类是不能无性繁殖的,所以,我要哀悼人类的毁灭,然后游览地球上的名山大川,最后要写下人类毁灭的原因,然后用Google翻译翻成多种语言,以告知后人(或者后面的什么动物)。
  4. 你觉得生活美好吗?
    美好,只要互联网还在互联着,只要我能方便地接入互联网。2006年12月26日晚上8点半的台湾地震让我们,尤其是依靠MSN进行联络办公的人,如此的不知所措。还好我找了个澳大利亚代理用着,访问WordPress网站速度很不错。还有我这里一直上不了flickr,今天想了个好办法,改了cookie,终于上去了,bingo。
  5. 你觉得nono是一个非常有魅力的人吗?
    不知道,不熟。不过凭以往的一点接触,还有他的Blog页面最下方的那串PHP错误信息来看,技术菜鸟是无疑地,嘻嘻。

呃,问题回答完了,还要想5个新问题传给另外5个人。物以类聚,人以群分,我和nono都在小明的WordPress群这个小圈子里,我认识的几个都被nono点完了,让我上哪去另找5个人啊。而且,记得以前听人说,好像是听嘿熊说的,cc协议和GPL协议最让人讨厌的,就是它要求使用者也要继承这个协议。比如一个程序里使用了一个GPL协议发布的函数,它也只能以GPL协议发布。这个游戏和GPL一样,也要求接的人再点5个人的名,可是我实在点不出来啊,唉,放弃。

P.S. 今天看《猫和老鼠》(TOM and JERRY),看到了一个眼熟的词,AJAX。赶紧打开KMPlayer,截下一个全屏截图。
AJAX in TOM and JERRY

 折叠
发给朋友   转到小组   (打标签) 收藏   推荐  

一直都在想,如果有一个Firefox扩展,可以在工具栏增加一个按钮,点击一下就可以把当前页面的URL中的数字加1,自动打开下一个页面,那该是多好呀。不过,一直忙,没有抽空去找这样的Firefox扩展。

今天突发奇想,觉得可以用JavaScript做这件事情。没研究过JavaScript,靠着一点C++的底子写了一小段JavaScript代码。这段js可以放进Firefox的书签或者IE的收藏夹,点击它一下就可以打开当前URL的下一个地址。(也就是把URL中的数字加一)比如,当前页面的地址是"http://yskin.net/1.html",则点击页面后自动打开"http://yskin.net/2.html"。哈哈,我也会写JavaScript啦,bingo

所有WordPress架设的Blog,不论是否使用了永久链接,都可以通过"http://yskin.net/?p=1"这样的方式进行访问。另外,如果想一页一页的看,可以使用"http://yskin.net/?paged=1"这样的地址,依次加下去,就可以10篇10篇地看完所有文章了。所以,如果想遍历一个Blog的所有文件,用这个JavaScript最合适了。

随手打开抓虾,找了里面添加链接的代码,弄了下面这个东西,很方便吧。

如果你的浏览器是IE,右键点击下面的按钮,选择“添加到收藏夹”,忽略弹出的安全提示,接着选择存到“链接”目录,点击确定。
如果你的浏览器是FireFox(握手握手),把这个按钮拖到浏览器的工具栏中即可。
Next

Firefox 1.5.0.6和IE6 SP2下测试通过。

Update:升级,1.1,现在可以正确处理数字前面包含"0"的URL。

Update2:希望各位使用者到网站来右键添加链接,而不要直接在feed里添加。我倒不是为了访问量,只是刚刚发现在Bloglines里这篇文章的JavaScript代码都给过滤掉了。

 折叠
发给朋友   转到小组   (打标签) 收藏   推荐  
有趣的Unicode的BOM 查看全文   2007-01-08 19:32:49

《有趣的Unicode的BOM》,这个文章标题抄自周曙光的网络日志这篇同名文章。抄标题的原因,详见文章末尾。呃,看到这里,你的手动了没?动了就是好奇心很强的人。如果是用鼠标拖动滚动条,电脑白痴;按PageDown键或者End键,电脑菜鸟;按Space键或者滚动鼠标滚轮,电脑高手。因为,“不知道IE工具栏第一个按钮的功能的,是普通用户;知道的,是高端用户。”

今天偶然看到那篇文章。(没有订feed看的习惯,555~~)Unicode这玩意很简单,又很复杂,值得好好研究。BOM这东西,有人说它是好东西,有人说它是罪魁祸首,反正说什么的都有。

文章提到3个问题,前两个是我所熟知的,最后一个我是第一次听说,而且在Google搜索一下,只有两个网站提到,自然,一个是我看的这篇文章,一个就是该问题的 出处咯。

用Windows记事本写txt文件,在文件开头加入".LOG"字样,那么在每次打开文件时,记事本会自动在文件最后加上当前日期。这个是N久以前的,在Windows 98的时代就有的一个特性。我还记得当时Windows 98发布时,报纸上经常提到这个技巧,说是Windows 98的新功能。另外,微软网站的文档《How to Use Notepad to Create a Log File》里也介绍了这一技巧。(当年Windows 98发布时,我是多么的激动啊,现在的Vista已经没感觉了,唉,年轻不再)这个小技巧好像直到现在还是经常被提起,比如在各大电脑杂志上。而且,经常有人说这是复活节彩蛋。拜托,按下Ctrl+R,输入winrar,回车,点帮助,关于,点一下上面的图片和左边的图标,那个叫复活节彩蛋。隐藏在你身边,在某个值得纪念的日子,比如复活节,被开发商公布看到的办法,或者是你偶然发现,得到的一个惊喜,那个才叫复活节彩蛋。

联通的问题。“联通”二字的编码是"C1AACDA8",当记事本读取的时候会出现判断错误,认为这是一个UTF-8编码文件,以UTF-8编码方式打开,所以出现错误。虽然显示出来的是一个黑块,不过可并不是只有一个字符哦。C1AA的二进制是1100000110101010,按照UTF-8两字节来拆开,Unicode编码是1101010,也就是6A,而两字节的UTF-8要在80以上才能使用,所以这个UTF-8编码是不存在的,所以记事本不显示。而CDA8,二进制1100110110101000,拆开的Unicode编码是1101101000,也就是368。在宋体字符里查了一下,查不到,不知道是那个国家的编码,反正是显示不出来就是了,只能显示一个黑块。所以,文章最后给出的答案,“第一种情况是将联通的Unicode编码54801A90当成ASCII编码解析,所以出现一些方块乱码”,乱讲。还有xfocus论坛2004年1月的 这个帖子,说4个字节中,前3个字节被当作BOM,只有第四个字节显示出来,乱讲 too. 不过,能知道UTF-8的BOM是3个字节,已经很高手了。

第三个问题,在记事本中输入"this sentences are notreadable",保存后再打开时变成中文乱码。这个事也是编码判断错误。其实想看记事本把它错误判断成什么编码是很简单的,在打开文件后,点文件->另存为,下面的编码一项就是记事本所认为的文本的编码方式。另外,在文件->打开里,选中一个文本文件,记事本也会立即进行识别,并把认为的编码方式显示在对话框下面的编码项中。(起码在我的Windows XP SP2里是这样的)这个字符写入文件后会被记事本认为是所谓的"Unicode"编码,也就是UTF-16编码。这也是记事本对编码判断的错误。xfocus论坛的 那个帖子,说是什么Unicode头,乱讲 too.

联通的问题和第三个问题,都是记事本编码判断错误的问题。这显然不是复活节菜单,也算不上bug。你不告诉软件所打开的文件的编码方式,他当然只能猜咯。猜总是会猜错的嘛。比如行尾符的问题,假如你的文件里就没有换行符,软件又怎么能给你判断呢?不止记事本,就是UEStudio,在打开有“联通”那两个字的文件时,也是认为是UTF-8编码,而且它还把C1AA这个编码给解析出来了,6A对应的字符的小写字母"j",它给显示出来了。不过,经常在网上或者电脑杂志看到这个火星贴被翻出来,还大都加上什么“已经打了最新的SP2”补丁之类的。唉,就知道SP2,SP2出来很久了,那么多Hotfix打了没啊?

最后,该点题了。“有趣的Unicode的BOM”,其实是最可怜的BOM。上述三个问题,和BOM一点关系都没有,可是后两个所谓的“Windows的bug”却被硬赖在BOM身上。我们的BOM,我们的Byte Order Mark,是多么的可怜啊。其实记事本在UTF-8和UTF-16编码的文件开头写入BOM并没有错,因为下次再用记事本打开的时候它就好识别了呀。那么多电脑菜鸟,有谁会在发现乱码之后,在打开对话框里调一下,选择一个正确的编码啊?只会脱口而出:“Windows的bug,Windows真难用。”

P.S. 后两个问题可以作为测试题。当别人回答你“不知道”的时候,电脑白痴;回来“是编码的问题”,电脑菜鸟;提到"Unicode",电脑高手;要是提到BOM,这个人你一定要抓住啊,他就是所谓的牛人啊。在这个知道IE工具栏第一个按钮的功能就是高手的年代,能吐出"BOM"三个字,那是多么牛的人啊,虽然,虽然BOM和这两个问题一点关系都没有。

PS2 找到新浪的一篇报道《微软记事本“闹鬼” 常用汉字输入变黑点》,2003年的,或许联通的问题就是2003年才出现的吧。还有这篇《关于“微软/联通”记事本问题的解释》,介绍的也很详细。“当文档中所有字符都在C0≤AA≤DF,80≤BB≤BF这个范围的时候,notepad都无法确认文档的格式,没有自动按照UTF-8格式来"Display"。”这话好像说反了,如果所有字符都在(C0-DF, 80-BF)这个范围内,文件就会被以UTF-8编码解析。至于原因嘛,嘿嘿,这个范围正好是UTF-8两字节编码的范围:110xxxxx 10xxxxxx (c0-df)(80-bf)。而我觉得,事实上Windows记事本所采用的判断编码的策略,其实就是以UTF-8编码方式解码,如果解码过程没有出现错误,也就是说这个文件按UTF-8编码方式解码没有问题,没有不符合UTF-8编码的字节,那么,记事本就认为他就是一个UTF-8文件。这也是没办法,对于没有BOM的文件来说,只有这个办法。而且,在PHP里判断编码方式也是用的这种办法,我写的程序也是用的这种办法,想要更好的办法?更好的办法就涉及到解析字符串,分析出里面句子的意思,判断是否是符合逻辑的句子了。

 折叠
发给朋友   转到小组   (打标签) 收藏   推荐  

今天在写插件时,需要在一段字符的title属性里加入一大段文字。字符串本身用UNIX行尾符LF换行。我直接输出字符串,发现在IE和Firefox下都可以显示出断行。

<div title="123
456">text</div>

不过,Firefox的Html Validator扩展报了错。在网上搜了一圈,这里提到:

The (X)HTML DTDs define the contents of the title attribute as CDATA for which the W3C states:
User agents should interpret attribute values as follows:

  • Replace character entities with characters,
  • Ignore line feeds,
  • Replace each carriage return or tab with a single space.

大概的意思是,XHTML DTD定义title属性为一个CDATA,而根据SGML里CDATA的定义,浏览器应该:替换所有html实体;忽略LF字符;替换所有CR字符和tab字符为一个空格。

按照W3C的说法,执行这3步后,所有的CR和LF字符已经他们的html实体都已消失或变成空格了。看起来在title里换行变成不可能的事了。不过,Firefox好像并没有转换CR字符为空格,而是把CR给忽略了。而LF字符倒是没有被处理,直接换行了。上面的代码,不用UNIX行尾符LF,而是用Mac行尾符CR,在IE下还能换行,但是在Firefox下,CR字符直接被忽略了。我还是很想通过W3C的验证,所以做了一下测试,使用LF字符或者LF的html实体 & #10;都是可以的。网上流传说可以用CR的html实体& #13;,其实只是IE中可以,Firefox下一样不行。如果不追求符合W3C,那还不如直接把字符串转成UNIX行尾符输出呢。

<div title="123& #10;456">text</div>

还有,title里有小于号和单引号好像并不要紧,但是有双引号就不行了。这么说来,把字符串里的换行和双引号给替换一下输出就行了?唉,复杂复杂,晕了。这里有一个介绍这方面问题的页面,不过没太看懂。

发现CR的全称是Carriage Return,Carriage是字车的意思,Carriage Return意思是字车复位。LF的全称是Line Feed,喂进一行,就是新起一行的意思。这起源于打字机时代,每打到一行的末尾,打字员要手工把字车推回第一列,字车复位后,纸会上升一行。所以就有了ASCII码值为13的CR和ASCII码值为10的LF两个字符。而DOS和Windows下文本文件的新行用CR和LF两个字符表示,UNIX下用LF,Mac下用CR。呼,这些资料大概在上个世纪我就知道了,不过一直记不住两个字符的ASCII码是多少,现在复习一遍,这下我应该能记住了。[via]

P.S. 好像C++里"\n"在Windows下输出CRLF,在UNIX下输出LF,而"\r"输出CR。PHP里是"\n"输出的是LF,"\r"输出的是CR。[ via]

 折叠
发给朋友   转到小组   (打标签) 收藏   推荐  
WordPress 2.0.6 发布 查看全文   2007-01-06 08:58:42

昨晚还在想,WordPress 2.0.6应该快发布了,要准备一下,没想到今天早上一上网,看WordPress的changeset时发现/wp-includes/version.php文件已经被修改了,WordPress 2.0.6已于昨晚9点24分正式发布了。哈,从RC2到release还真是快啊。

这个版本更新不大,具体更新有下列几项:

  1. 在wp_redirect()函数后使用exit命令以结束脚本的运行。[4470]
    只不过有的地方用exit;,有的地方用exit();,呵呵。
  2. 使用$wp=& new WP();这样的代码,添加了&符号。[4487]
    开始觉得这样是为了提高执行速度,后来看了#3267,里面提到$wp = new WP();会"get destroyed before the shutdown hook is called"(在shutdown hook被调用之前销毁),而$wp =& new WP();,"This extends the life of these objects to _after_ the shutdown hook is called."(这将使这些对象的生命期延续到shutdown hook被调用之后。)
    复杂复杂,牵涉到PHP自动销毁对象的问题。
  3. 修正WordPress 2.0.5遗留的,当PHP运行在FastCGI模式时,WP使用wp_redirect()函数进行302转向时出现500错误的bug。[ via] [4514]
  4. 解决当MySQL运行在strict mode时在上传文件时出现"WordPress database error: [Field 'post_content_filtered' doesn't have a default value]"错误的问题。[4530]
    现在不用再做那个数据库hack了。
  5. sidebar的按月存档(Archives)列表中的日期格式现在被i18n化了。(所有调用wp_get_archives()函数实现显示按月存档的,无论模版还是Widgets还是SBM,都将被影响)以前要把按月存档(Archives)列表改为中文日期格式需要修改WordPress源代码,点点游做的WordPress中文版就是这么做的。现在WordPress语言包已经可以控制日期格式了。
    这个事情还真是麻烦,最早是2005年7月28日有人报了bug #1540,要求把按月存档的日期格式i18n化。后来我又报了一个#3307。再后来,Ryan终于在[4545]里做了修改。不过,Ryan犯了两个错误,写错了__()函数的名称和错改了两个不该被i18n化的字符串。然后,nbachiyski报了bug #3438,要求把那两个错改的字符串改回来,结果被Mark无情地驳回。我又在#3438里对这个问题做了更详细的说明,最终Mark表示认同。Ryan在[4636][4641]里把两个错误都改正了。唉,一点点小事,费了这么大周折。
  6. gettext中,array_shift()函数的参数要求是一个变量,而非函数的返回值。[via] [4555]
  7. 修正了处理MD5字符串的正则表达式的错误。[4581]
    这儿可能引起攻击,不过我没想出攻击的办法。
  8. 在删除文章时,修改属于该文章的附件的post_parent值。[4602]
  9. 一个新过滤器"query",允许插件截获SQL语句,并进行处理。需要注意的是,有些SQL语句是在插件被载入之前被发送的,如果要对这部分SQL语句进行处理,则需要插件放一个特殊的文件做hack,并且需要使用WP 2.1才行。[4620]
  10. Quicktags(就是不使用可视化编辑器时编辑框上面的一排小按钮)现在可以在Safari浏览器中使用了。[4640]
  11. 新的anti-XSS function(防XSS跨站脚本攻击的函数)——attribute_escape()。[4656]
    其实里面就一行代码:return wp_specialchars($text, true);
  12. 添加了"js_escape"和"attribute_escape"两个过滤器。[4661]
  13. 修正了某些恶意评论破坏Blog页面的问题。#2714 [4662]
  14. 在clean_url()函数里对协议名称进行检查。[4672]
    报的bug在#3515,里面给出的代码我尝试了一下,就是下面的第一个评论。点一下评论作者名称,就会弹出一个对话框显示cookie。
  15. 接收Trackback并进行处理时的一些调整。[4677]
    这个修改有点麻烦,stripslashes()函数是不可以乱用的。[via]
  16. Blogger导入工具现在写明只能导入旧的blogger.com帐号,不能支持Google新推出的Blogger。这是因为Google在2006年12月底已经把以前的Blogger beta正式发布了。[4680]
  17. Akismet做了点小修改,把整理wp_comments表的概率从1/1000提高到1/5。

参考: 在WordPress 2.0.6里被解决的bug列表WordPress 2.0.6 Content Summar。从后一个地址得到一个消息:

The WordPress 2.0 series is now officially on its way to becoming part of the Debian Stable product and as a result, and as discussed in October, patches will continue to be released in 2.0 series for the next 3-5 years.

WordPress 2.0.6的升级方法嘛,上传文件,覆盖,完了。有需要修改的文件,比如/wp-includes/wp-db.php文件,记得修改下。

另外,WordPress 中文包已更新,没啥变化,除了Blogger导入工具有所修改,以及“按月存档”列表日期格式的i18n化。

P.S. WordPress 2.0.7已经在筹备中,WordPress 2.1已经beta 1了,期待ing。

 折叠
发给朋友