Archives

Archive for June, 2007

Fanfou Logo

这是一个 FanfouWordPress 插件,通过这个插件你可以在 WordPress 的侧边栏中显示最新的 fanfou 消息,每隔一段时间自动更新;同时当 Blog 发布新的文章时,向 fanfou.com 发布消息。

该插件模仿了 Alex King 的 Twitter Tools

Requirements:
这个插件的最早的开发平台为 WordPress 2.2.1 RC2,很多其它的版本限于精力我都没有测试,但能保证在最新的WP开发版上正常运行,如果您在使用中遇到问题,请升级您的WordPress或者联系我均可。

Latest Version: 1.2

Installation:
解压缩后上传到您的 wp-content/plugins/ 目录,并在后台激活该插件。
编辑你正在使用的 WordPress 主题的侧标栏模板,加入如下的代码即可在侧边栏中显示最新的 Fanfou 消息:

<!-- Fanfou Tools -->
<?php fanfou_list_posts();?>

Uninstallation:
这个插件将会创建一个新的数据表 wp_fanfou,并在 wp_options 表中创建多条以 fanfou_ 为前缀的 option 记录,此外如果激活 Notify 功能,那么在发布新文章或者编辑旧文章时,该插件将自动为文章加上名为 fanfou_marker 的 Custom field,并自动通知到 Fanfou(前提是旧文章不存在 fanfou_marker 这个 field,如果已有此标记,那么不会重复通知到 Fanfou)。

如果要卸载此插件,请按照如下步骤即可清理干净:

  1. Deactive Fanfou-tools
  2. 删除 wp-content/plugins/fanfou-tools 目录
  3. 删除数据表 wp_fanfou (这里需要非常小心…)
  4. 清理 wp_options 表
  5. 最后清理 wp_postmeta 表,即 Custom Field 信息
-- 请注意安全,不嫌麻烦的话,最好先备份数据库...
 
-- 清理 wp_options 表
DELETE FROM `wp_options`
    WHERE `option_name` LIKE 'fanfou_%';
 
-- 清理 wp_postmeta 表
DELETE FROM `wp_postmeta`
    WHERE `meta_key` LIKE 'fanfou_marker';

Download:
Fanfou Tools 1.2

SubVersion:

# 下载正在开发中的版本
svn co http://svn.wp-plugins.org/fanfou-tools/trunk
 
# 下载稳定的版本
svn co http://svn.wp-plugins.org/fanfou-tools/tags/1.2
Jun 21st, 2007 | Filed under WordPress

WordPress 2.2.1 RC2

这是 WordPress 2.2.1 第二个 RC 版本,11号的时候发布了 RC1,这个版本仍然是修复了一些 Bug。

Download:
WordPress 2.2.1 RC2

Comments Off
Jun 16th, 2007 | Filed under WordPress
Tags:

其实这不是 PHP 的问题,其它编程语言中都会有类似的问题。

首先看看 PHP 手册上面怎么说的:

Floating point precision

It is quite usual that simple decimal fractions like 0.1 or 0.7 cannot be converted into their internal binary counterparts without a little loss of precision. This can lead to confusing results: for example, floor((0.1+0.7)*10) will usually return 7 instead of the expected 8 as the result of the internal representation really being something like 7.9999999999….

This is related to the fact that it is impossible to exactly express some fractions in decimal notation with a finite number of digits. For instance, 1/3 in decimal form becomes 0.3333333. . ..

So never trust floating number results to the last digit and never compare floating point numbers for equality. If you really need higher precision, you should use the arbitrary precision math functions or gmp functions instead.

简单的说,float 存在精度问题,是不可依赖的,比如 0.1 + 0.7,一年级的小朋友都知道答案是 0.8,但是实际上计算机计算的值为 0.7999999……

所以永远不要拿 float 来做大小比较,比如下面的代码:

$sum = 0.1 + 0.7;
if ($sum == 0.8) {
    /** some code **/
}

上面 if 块中的代码永远不会执行,因为 $sum != 0.8,简单的方法就是把 $sum 转换为 string 类型,PHP 会自动调整精度。

$sum = 0.1 + 0.7;
if ((string) $sum === '0.8') {
    /** some code **/
}

这样就没有问题了:)

Comments Off
Jun 12th, 2007 | Filed under PHP
Tags:

返回引用,在定义和调用的时候 & 都不可以省略。

这是个比较容易混淆的概念,如果不是出于某些特殊的原因,建议还是不要使用。

说他很容易混,是因为 Reference 在 PHP5 中的变化,造成其在 PHP4/PHP5 中表现的行为差异比较大。

举个例子说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
< ?php
 
$color = 'YellowGreen';
 
function &getRef() {
    global $color;
    return $color;
}
 
function getCopy() {
    global $color;
    return $color;
}
 
$colorRef = &getRef();
$colorRef = 'Blue';
 
//$colorCopy = getCopy();
//$colorCopy = 'Black';
 
 
var_dump($color);
var_dump($colorRef);
//var_dump($colorCopy);
 
 
/* vim: set expandtab tabstop=4 shiftwidth=4: */

运行一遍上面的代码,差不多就明白了,使用 &getRef() 将把 $colorRef 绑定到 $color 上面,也就是说 $colorRef 和 $color 两个变量是指向同一个值了。当改变其中一个值时,另一个也会跟着变化。

Read more…

Comments Off
Jun 12th, 2007 | Filed under PHP
Tags:

开始编写文档 Vim for PHP Programmer,主要参考Andrei Zmievski的在Vancouver PHP Conf上发表的同名文档,并添油加醋,追加分享自己的一些Vim经验。:)

目前只是刚开了个头,最近没工作也闲着没事,可以专心来做这个事情了。

其实很早之前就想写相关的东西了,本想用docbook来写,方便编译成HTML/PDF等格式发布,但自己没有电脑,在网吧里面搭建docbook可不是一件轻松的事情,我这个人最怕麻烦了,实在懒得搞,于是一直拖到现在。

想来这个毛病是时候改改了,想做什么事情,就应该立即动手去做,畏首畏尾的不太像话啊!

Vim for PHP Programmer

Jun 12th, 2007 | Filed under Vim
Tags: ,

WordPress 2.2.1 RC1

WordPress 2.2 发布后的第一个修订版本,现在已经可以下载了,刚刚把自己的博客升级到了这个版本,升级的过程只要复制移动文件就可以了,不需要执行 wp-admin/upgrade.php,值得一提的是在 Upgrade 的过程中发生了一点小意外。复制完文件后,再访问博客时,发现所有的 Custom Pages 都无法访问了,显示为 404,开始以为是 .htaccess 出了问题,不过复制过去以后,问题依旧,登录后台把每个 Page 重新编辑更新后,Pages 就可以访问了。

Jun 11th, 2007 | Filed under WordPress
Tags:

试用了几天 del.icio.usDaily Blog Posting 的功能,对 del.icio.us 利用 XMLRPC 发布过来的 HTML 代码还是不太满意,但 del.icio.us 那边没有什么特别的设置,于是自己动手做了个 WordPress 的小插件来修正一些小问题。

Delicious Tools,我的第一个 WordPress 插件,主要解决这么几个问题:

Features:

  1. 自定义文章标题的格式
  2. 设定文章的 tags (这个功能依赖 Ultimate Tag Warrior
  3. (可选)在新窗口中打开文章链接
  4. (可选)删除针对每篇文章的 Tags: 信息
  5. 同步功能,使用以上设置同步所有 delicious 通过 Daily Blog Posting 功能发布的文章

Download:
Delicious Toos v1.2

Requirements:
这个插件是基于使用 WordPress 2.1 开发的,目前在 2.2 RC1 中也可以正常使用。其它的版本,并未测试。如果您正在使用一个旧版本的 WordPress,我强烈建议您能够升级到最新的版本,您可以从 WordPress的官方网站下载最新的版本。另外这个插件的同步会对文章内容进行检测修改,且速度较慢,如果您第一次使用该插件,建议您在使用之前最好备份数据库以免出现不必要的损失。

Installation:
象其它插件一样,解压缩后上传到您的 wp-content/plugins 目录,打开插件管理页面,激活该插件即可。

LastUpdate:
Saturday Jun 16, 2007 20:39

Comments Off
Jun 11th, 2007 | Filed under WordPress

Verdana

Verdana,一套非常受欢迎无衬线字体(Sans Serif),由于它在小字上仍有结构清晰端整、阅读辨识容易等高品质的表现,因而在1996年推出后即迅速成为许多领域所爱用的标准字型之一。

此字体的设计源起于微软字型设计小组的维吉尼亚·惠烈(Virginia Howlett)希望设计一套具有高办识性、易读性的新字型以供萤幕显示之用,于是她邀请了世界顶级字型设计师之一的马修·卡特(Matthew Carter)操刀,以Frutiger字体及爱德华·约翰斯顿(Edward Johnston)为伦敦地铁所设计的字体为蓝本,并由Monotype公司的字型微调(Hint)专家汤姆·瑞克纳(Tom Rickner)担任手工微调。

“Verdana”一名是由“Verdant”和“Ana”两字所组成的。“Verdant”意为“苍翠”,象征著“翡翠之城”西雅图及有“常青州”之称的华盛顿州,“Ana”则来自于维吉尼亚·惠烈大女儿的名字。

Comments Off
Jun 8th, 2007 | Filed under Journal

该 Tips 已经更新,请见:
Check Syntax or Execute PHP file in Vim

其实网上已经有很多类似的 Tip 了,不过不妨再炒一遍冷饭 ;)

无需切换到 Shell 下面,无需在 Browser 中 F5 刷新,只需要在 Vim 中轻轻按一下 F5,就可以完成 PHP 文件的语法检查,结果会显示到新的 QuickFix 窗口中,QuickFix 有一个比较好的特性,可以配合 errorformat 指令提供的正则表达式直接跳转到错误行,类似 editplus 一样,非常方便,如果没有错误,回车后,QuickFix 栏就会自动关闭,非常的方便。

下面是我的配置文件中的相关部分, 加到 _vimrc 文件中,注意修改 php 的路径:

"""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Check PHP Syntax using makeprg
"""""""""""""""""""""""""""""""""""""""""""""""""""""
 
" Use php syntax check when doing :make
setlocal makeprg=\"D:\php5\php.exe\"\ -l\ -n\ -d\ html_errors=off\ %
 
" Use error format for parsing PHP error output
setlocal errorformat=%m\ in\ %f\ on\ line\ %l
 
" Perform :make command
map <F5> :w<CR>:noh<CR>:make<CR>

上面的 Code 中我为 F5 绑定了一系列的操作,首先是 :w 保存文件,然后 :noh 关闭搜索高亮,最后执行 :make 调用 makeprg 中的程序(php.exe)对当前 Buffer 中的 PHP code 执行语法检查。

当然你也可以绑定其它的快捷键,比如 <C-J> 就表示组合键 Ctrl+J,相关快捷建命令可以查阅 Vim 文档。

如果你够懒,也可以让 Vim 在保存文件时自动检查,代码如下:

autocmd BufWritePost *.php,*.phps :make

这句表示当保存后缀为 .php .phps 的文件时,写入缓冲区后,立即执行 :make 指令。

Jun 7th, 2007 | Filed under Vim
Tags: ,