给WordPress加上自动链接辨认[Auto-Link]功能

Posted in PHP on April 29th, 2008 by Adam

虽然WordPress已经发展到Version 2.5.1,但是我认为WP仍然缺少一个我们需要的一个十分常用而又简单的功能:自动链接辨认[Auto-Link]。很多朋友喜欢在博客里面添加很多链接,但是烦于不停的给URL路径加上链接,WP里面也暂时没有这方面的设置。我们可以自己手动做个简单修改达到这个功能:
在wp-includes目录里面找到post-template.php这个文件:
打开编辑,找到 function get_the_content()这个函数
在它的最后面作如下修改:
[code lang="php"]return $output;[/code]
增加为
[code lang="php"]$pattern = "/[\s]http:\/\/([^\s\"]+)/ism";
$replacement = " http://$1";
$output=preg_replace($pattern, $replacement, $output);
return $output;[/code]

Tags: ,

YUM介绍

Posted in Linux/Unix on April 25th, 2008 by Adam

一台新服务器上用的是Redhat Enterprise 5.1的操作系统(RHEL5),用up2date却说找不到这个命令,原来它用的是Yum 3.0来自动升级。Yum这东东我第一次接触,看看到到底是何来历。
Yum (Yellow dog Updater Modified) 是一中在LInux下与RPM兼容的软件包管理和自动升级软件,通过命令行来操作。用于Red Hat系统的更新和管理。已经被Fedora, centos和许多其他与RPM兼容的基于Linux发行版所运用,包括黄狗Linux的本身[难怪它叫Yellow dog Updater Modified B-)],用来取代原来的YUP(Yellowdog Updater),所以,可以说Yum是YUP与RPM的孩子。

主要命令如下:
安装: yum install package name
安装RPM: yum install my_package.RPM
组安装:yum groupinstall “MySQL Database”
升级:yum update package name
更新组:yum groupupdate “MySQL Database”
删除:yum remove package name
删除组:yum groupremove “MySQL Database”
搜索:yum list package name
高级搜索:yum search package name
更新系统:yum update
激活每天自动更新: /sbin/chkconfig –level 345 yum on; /sbin/service yum start
软件包名称说明:
例如:tsclient-0.132-6.i386.rpm
*软件包名称:tsclient
*带有版本号和发行版本的软件包名称:tsclient-0.132-6
*带有硬件架构的软件包名称:tsclient.i386

yum 以 名称.架构 的格式来列出软件包。仓库通常也将软件包存储在以架构区分的目录中。每次为软件包指定架构的时候,实际指定的是此软件对机器架构的 最低 要求。
i386 – 适于任何现有的 Intel 兼容计算机
noarch – 适于所有架构
ppc – 适于 PowerPC 系统,例如 Apple Power Macintosh
x86_64 – 适于 64 位 Intel 处理器,例如 Opterons

Tags:

Mysql Error: No database selected

Posted in Mysql on April 22nd, 2008 by Adam

一个网站的mysql数据库(Server version: 4.1.22-standard; MySQL client version: 4.1.22)的负担太重被空间商临时关闭了账号。恢复后出现了一个令人啼笑皆非的错误:Mysql Error: No database selected。检查数据库的用户名和密码以及数据库名称并没有异常。联系空间商,他们也说没有暂停mysql账号。再检查所有文件的完整性,也一切正常。这就奇了怪了哦!根据webdeveloper论坛上的解释:

the database was not selected because the user did not have permission to select it. 应该是mysql账号的权限无法读取数据库。

郁闷的是为什么mysql账号没有权限会出现“No database selected”的错误,给人错误的指引和误导。而不是提示“No permissions for that database”。或者是有什么没有遇见过的特殊情况,继续跟进中。。。

更新:暂时解决办法:放弃旧账号,创建新账号,问题解决。

Tags:

mod_rewrite简单教程

Posted in Linux/Unix on April 22nd, 2008 by Adam

mod_rewrite是Apache模块中非常有用的一个模块,用于URL的重写与简洁化。
Version 1.2-1.3 来源
RewriteEngine on|off: 激活或者进制重写规则
RewriteBase /subcat 指定重写规则适用的根路径
RewriteCond TestString CondPattern :TestString是规则对象,CondPattern是匹配的具体规则;用于定义重写规则的条件;和RewriteRule一块使用。
常用的TestString包括以下服务器变量:
HTTP headers:HTTP_USER_AGENT, HTTP_REFERER, HTTP_COOKIE, HTTP_HOST, HTTP_ACCEPT
connection & request: REMOTE_ADDR, QUERY_STRING
server internals: DOCUMENT_ROOT, SERVER_PORT, SERVER_PROTOCOL
system stuff: TIME_YEAR, TIME_MON, TIME_DAY
RewriteRule Pattern Substitution: Pattern是规则表达式,Substitution是重写替换的对象。
下面是规则表达式的一些说明:

. 匹配任何单字符
[chars] 匹配字符串:chars
[^chars] 不匹配字符串:chars
text1|text2 可选择的字符串:text1或text2
? 匹配0到1个字符
* 匹配0到多个字符
+ 匹配1到多个字符
^ 字符串开始标志
$ 字符串结束标志
\n 转义符标志

反向引用 $N 用于 RewriteRule 中匹配的变量调用(0 <= N <= 9)
反向引用 %N 用于 RewriteCond 中最后一个匹配的变量调用(1 <= N <= 9)

RewriteCond适用的标志符
‘nocase|NC’ (no case)忽略大小
‘ornext|OR’ (or next condition)逻辑或,可以同时匹配多个RewriteCond条件

RewriteRule适用的标志符
‘redirect|R [=code]‘ (force redirect)强迫重写为基于http开头的外部转向(注意URL的变化) 如:[R=301,L]
‘forbidden|F’ (force URL to be forbidden)重写为禁止访问
‘proxy|P’ (force proxy)重写为通过代理访问的http路径
‘last|L’ (last rule)最后的重写规则标志,如果匹配,不再执行以后的规则
‘next|N’ (next round)循环同一个规则,直到不能满足匹配
‘chain|C’ (chained with next rule)如果匹配该规则,则继续下面的有Chain标志的规则。
‘type|T=MIME-type’ (force MIME type)指定MIME类型
‘nosubreq|NS’ (used only if no internal sub-request)如果是内部子请求则跳过
‘nocase|NC’ (no case)忽略大小
‘qsappend|QSA’ (query string append)附加查询字符串
‘noescape|NE’ (no URI escaping of output)禁止URL中的字符自动转义成%[0-9]+的形式。
‘passthrough|PT’ (pass through to next handler)将重写结果运用于mod_alias
‘skip|S=num’ (skip next rule(s))跳过下面几个规则
‘env|E=VAR:VAL’ (set environment variable)添加环境变量

Version 2.0 来源

注意:
.htaccess或conf文件中需要设置 RewriteEngine On
并且确认所在目录支持 Options FollowSymLinks

例子:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC]
RewriteRule ^.* – [F,L] 这里”-”表示没有替换,浏览器为IE和Opera的访客将被禁止访问。

更多事例可以参考:http://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.html

例子:
RewriteEngine On
RewriteBase /test
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ([^/]+)$ /test/$1.php
#for example: /test/admin => /test/admin.php
RewriteRule ([^/]+)\.html$ /test/$1.php [L]
#for example: /test/admin.html => /test/admin.php

限制目录只能显示图片
< IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^.*\.(gif|jpg|jpeg|png|swf)$
RewriteRule .*$ – [F,L]
< /IfModule>

TAG标签重写
#/tag+me.html => /tag/me/
RewriteRule zhaiduo/tag/([0-9a-zA-Z]+)/$ zhaiduo/tag\+$1.html [L]
#/tag+me_2.html => /tag/me/2/
RewriteRule zhaiduo/tag/([0-9a-zA-Z]+)/([0-9]+)/$ zhaiduo/tag\+$1_$2.html [L]

Tags: ,

Google提供空间和框架你做项目,愿意么?

Posted in Google与Idea, 窄多废话 on April 14th, 2008 by Adam

Google果然不愧是互联网的创意先锋,Google App Engine的推出,让很多有才华但是缺少资金的程序员有了一个开发运行(展示自己才华)的免费平台。和Project Hosting和不同,500M的免费空间,足够的CPU和每月5百万的访问量带宽支持,Python的运行环境以及基于Google自己研发的数据存储技术,足以吸引不少对Google技术的好奇者。
另一方面,Google的这一举动却引起了日渐壮大的PHP社区对Google为什么只推出支持Python环境的App引擎的争论:
phpclasses: Google App Engine needs PHP support
Michael Kimsal: Why not PHP for Google’s App Engine?

大部分PHPer(包括其他非Python的开发人员)都表示了希望Google尽快增加支持其他语言的呼声。我个人的看法,趋于少数人:Google App Engine支持PHP固然好,没有也没什么遗憾的。LAMP的免费环境让PHP开发人员很容易找到空间(自己的电脑)开发自己的技术,各种免费PHP框架社区层出不穷。PHP社区的繁荣已经完全“自给自足”。对我来说,对Google感兴趣的只是基于Google自己开发的那部分技术。另一方面,Google的这一举动虽然慷慨,不过还是有它的精明之处的。如今互联网上最值钱的是什么?那就是创意!:-)

WP里面tag cloud的中文显示问题

Posted in PHP on April 12th, 2008 by Adam

WordPress2推出的tag cloud功能确实不错,不过最热门的tag显示字体大的太过难看。

tag_clouds.jpg

修改办法:编辑PHP源文件:wp-includes/category-template.php

找到function: wp_generate_tag_cloud里面的这么一项:
( $smallest + ( ( $count - $min_count ) * $font_step ) )
修改为:
( $smallest + ( ( $count - $min_count ) * $font_step ) * 0.3 )
其中的0.3是为了缩小最大的TAG尺寸,大家可以根据自己喜好设定比例。

Tags: ,

LAMP与Microsoft和Sun的故事

Posted in 互联网, 轻松一刻 on April 9th, 2008 by Adam

随着LAMP(Linux+Apache+Mysql+PHP)的广泛应用和不断扩大的用户群,开发速度和成本上的优势逐渐明显,互联网上的“大鳄”也开始窥视LAMP这块大蛋糕。于是网上有这样两个传说:B-)
为什么Sun要收购MYSQL?新闻来源

Scott(Scott McNealy, founder and chairman of Sun): “I knew this Java thing was a bad idea in the first place! I see only one solution. We need to buy this Lamp!”
Accountant: “Euh, LAMP is not a company. It’s an acronym. It’s Linux , Apache, MySQL and PHP”
Scott: “Then buy me Linux!”
Accountant: “But we still have this Solaris thing..”
Scott: “Then buy me Apache!”
Accountant: “That’s a foundation. Nothing to buy there.”
Scott: “Then buy me MySQL!”
Accountant: “We don’t do databases.”
Scott: “It’s a database?”
Accountant: “What rock have you been living under?”
Scott: “Sweet. I can own the Lamp AND piss off Oracle at the same time!” (waves fake plastic magic wand) “Make it so!”

为什么Microsoft要收购Yahoo? 新闻来源

Steve(Steve Ballmer, Microsoft CEO): “Hey, you heard about this PHP thing?”
Bill(Bill Gates): “Pee Age Pee? You’re not that old yet, are you?”
Steve: “What? No, wait, it’s a programming language, apparently better than ASP.NET.”
Bill: “Who cares if it’s better. I mean; we made the worst operating systems ever and still rule. (Checked out Leopard yet? It is SO cool.)”
Steve: “I don’t know Bill… remember that internet thing that we didn’t know about years ago? Kind of nearly missed the boat there.”
Bill: “Right. Didn’t we solve that in the same way? Worst browser, highest market share, that sort of thing?”
Steve: “Yes we did, but then we also didn’t know about this ‘mp3′ thing until it was too late.”
Bill: “We did manage to make Zune the worst player, but somehow we’re not market leader. Guess we got sloppy?”
Steve: “Maybe it’s just different times. Maybe we should have a different strategy.”
Bill: “Ok, so let’s just buy PHP then.”
Steve: “It’s not a company. But Encarta says it’s written by a Rasmus Lerdorf.”
Bill: “So let’s hire him.”
Steve: “Tried that. Didn’t want to join. Can’t blame him, works at Yahoo.”
Bill: “Then I guess we’ll have to buy Yahoo.”

RSS Feed