用 WordPress 建站当初,每每想到要某一功能时首先想到的是有没有相关的插件,而不去思考可通过改哪里的代码来实现。因而造成插件的数量日渐膨胀,直接 40 多个插件同时绽放,还曾引以为豪。
最初的想法是尽量不去修改 WordPress 的代码,用第三方插件,待到以后升级 WordPress 本身时会很方便,不用担心被覆盖的危险。还有就是老觉得配置插件比改代码更易于操作。但是忽略了主题文件也是 WordPress 外围的元件,改改主题文件中的代码又何妨,而且更多时候也只需要改主题中的某个文件。
找第三方插件的结果是,数量多的话肯定要拖累 WordPress,因为不是用 Action 就是用 Filter 来拦截。到现在感觉慢了要整理插件的时候, Read More- 前面有一篇 用 SyntaxHighlighter Evolved 作为自已的代码加亮插件 介绍了 SyntaxHighlighter Evolved 插件。当前所用的版本是 2.3.8, 我现在是用 <pre class='brush:java'>code here</pre> 的形式来加亮代码,所以必须选上后台的 Load All Brushes 选项,用 [ code lang="js]code here[/code] 会动态的加载所需的 shBrushXxx.js 文件。后一种方式会有些问题,因而这里也是针对前一种方式来进行优化的,因为 Load All Brushes 选项一旦选上,页面将会依次:
<script type='text/javascript' src='...shBrushAS3.js?ver=2.1.364b'></script>
<script type='text/javascript' src='...shBrushBash.js?ver=2.1.364b'></script> Read More - 现在一般的 PHP 主机都支持 GD 库和 FreeType/TrueType,普通的画字符串的函数 imagestring 只能指定字体大小,不能指定字体名称。像 imagettftext 这样的函数可以指定字体名称和字符串显示的角度,它的原型是:
array imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )
注意这里的 $fontfile 是个字体文件,不是字体名,我刚开始就搞错了,给它传递的是 "Arial" 或是 "Arial.ttf" 而不能显示出任何东西来。在 Windows 下字体文件一般都在 c:/windows/fonts/ 目录中,所以在 Windows 下用 imagettftext 使用 TrueType 字体时的代码例子如下: Read More - PHP 像 JavaScript 一样,很方便使用回调函数,函数名就像一个普通的变量名一样可作为其他函数的参数,即成为一个让宿主函数调用的回调函数。但回调函数的用法依据回调函数是否是全局函数还是一个类中的函数是有区别的。比如 PHP 的preg_replace_callback — 用回调函数执行正则表达式的搜索和替换函数可以接受一个回调函数,我们来看这种区别。
如果是全局的回调函数,那容易,只要写上函数名作为字符串的形式传入就行的,看:1/**@author Unmi*/ 2function inverse($matches) { 3 return $matches[2].":".$matches[1]; 4} 5 6$text = preg_replace_callback ("/(\d{7}):(.+)/", 'inverse' , '1125535:fantasia@sina.com'); 7echo $text; //Output result: fantasia@sina.com:1125535
而如果 preg_replace_callback 函数是在类成员函数中被调用,同时 inverse 回调函数也是该类的成员函数,写法就不一样了。要是仍然写成下面这种方式的话: Read More - but,在节点之间切换的话,web承载的论坛需要重新登录,SQL需要重新登录,Exchange需要,SMB会不会呢,全无状态信息,咋办?
关于你说的状态信息我不清楚。但从NLB的角度来说的话是需要重新登录的。
1. 你说的SMB,是说访问NLB上的共享文件么?这个也是需要重新登录的。
2. 关于NLB的工作机制,其实NLB所做的,只是把网络流量平均分担到不同的NLB 节点。NLB的算法能保证来自于同一个IP和端口的流量总是由同一个NLB节点来响应。 Read More Putty 基本是我在紧急时候用来登陆 Linux/Unix 终端的不二之选,因其小,开源,界面也非常实用。可是当你要在私有的机器上, 经常性的要登陆很多机器的时候就觉得烦琐了,不光打开一堆的窗口,还要一遍一遍的输入用户名和密码。当然登陆用户名是可以保存的, 我也是最近才注意到这一点的。Putty 不愿去保存密码是出于安全考虑,相信在多数时候确实是非常必要的。
于是我选择了 SecureCRT, 它能保存密码,而且是多 Tab 的,把 Session 改成 VT100 Linux 模式,用着一直很顺溜。然而今天却发现在 SecureCRT 终端中使用 vim 不能高亮显示语法,试过多种设置,在 Putty 中却行的,就这样又重新回到了 Putty 的怀抱。要相处得好, 必须更深层次的挖掘它的潜力,其实它也可让你实现自动登陆、甚至是多 Tab 的方式。 方法有三: Read More
- 不管是防小人也好,还是防君子手误也罢,很多地方都需要用到图片验证码来加强安全性。在 PHP 站点上我选择了 Captcha,用起来很简单的。
Captcha 从 http://www.captcha.ru/en/kcaptcha/ 下站,当前版本是 KCAPTCHA 1.2.6。
下载后,解压后,可以看到它自己带了例子,就是 index.php 用来产生图片,form_example.php 中引入了图片, 只是 <img src="./?<?php echo session_name()?>=<?php echo session_id()?>"> 的写法有点不好理解,要是写成 <img src="index.php/?<?php echo session_name()?>=<?php echo session_id()?>"> 就好看多了,至少知道 index.php 的内容是个图片。 Read More - 在 Java 项目里多用 Ant 来自动构建项目,随着惯性思维,很容易就找到了 .Net 里也有类似的构建工具 NAnt。最该死的是连 Maven 在 .net 中的对应产物 NMaven 也都有了,http://sourceforge.net/projects/nmaven/。从 Ant 到 NAnt 自然会有一种驾轻就熟的感觉。其实 MS 也为我们提供了相应的构建工具,如早先的 nmake 和现在的 MSBuild,它们各自用特定的构建文件,只是纯粹的项目构建工具。
NAnt 能让你完成许多的系统操作,并且是扩展的,它能独立的完成诸如取版本、编译、打包、发布、Email 通知等一系列过程。如果再让 NAnt 结合 MSBuild 便能制作出完全自动化,一劳永逸,简单化的构建方案。比如这里的例子讲述了如何用 NAnt 构建一个 WebSite 项目,并把生成的多个动态库,像:App_Web_j_5i4fnt.dll、App_Code.dll、App_global.asax.dll 用 aspnet_merge.exe 命令合成为一个固定名字的动态库,如 Unmi.Web.dll。这样非常有利于站点的部分更新。 Read More - PHP 本身没有多线程的东西,但可以曲线的办法来造就出同样的效果,比如多进程的方式来达到异步调用,只限于命令模式。还有一种更简单的方式,可用于 Web 程序中,那就是用 fsockopen()、fputs() 来请求一个 URL 而无需等待返回,如果你在那个被请求的页面中做些事情就相当于异步了。
关键代码如下:1$fp=fsockopen('localhost',80,&$errno,&$errstr,5); 2if(!$fp){ 3 echo "$errstr ($errno)<br />\n"; 4} 5fputs($fp,"GET another_page.php?flag=1\r\n"); 6fclose($fp);
上面的代码向页面 another_page.php 发送完请求就不管了,用不着等待请求页面的响应数据,利用这一点就可以在被请求的页面 another_page.php 中异步的做些事情了。 Read More - 本文旨在让像我这样的 Wordpress 初入门的开发者快速体验怎么写出一个最简单能工作的插件。至于插件的工作原理就不太多说,但基本的还是要懂得,插件中会用 add_action() 或 add_filter() 方法去挂住一些事件,如显示标题、显示内容等事件,然后执行一个函数。
add_action() 意味着某件事情发生了,要做什么事情,add_filter() 意味着事情发生,并传来的数据可对数据进行处理。用 add_action() 还是 add_filter() 就看你实际需求了。
虽然刚开始就声明了不太想多讲插件的原理,但前面几句话却表明的差不多了。立即例子入手吧,比如我们来做一个在每篇文章内容后附加一句版权声明的话。 Read More