PHP5.3中新增的常量__DIR__
在PHP中有一个常量__FILE__,它主要用来指向当前执行的PHP脚本。但PHP没有直接提供该脚本所在目录的常量。也就是说如果我们要得到当前PHP脚本所在的目录,需要使用dirname()这个函数:
<?php $dir = dirname(__FILE__); ?>
现在在PHP5.3中会增加了一个新的常量__DIR__,你可以通过此常量来取得当前执行的PHP脚本所在的目录。
例如当前执行的PHP文件为 /htdocs/index.php,则__FILE__等于’/htdocs/index.php’,而__DIR__等于’/htdocs’。
不过最大的缺点还是现在有多少空间服务商支持PHP5.3呢?
设置PHP的Magic Quotes
Magic Quotes在原来设计时可能是为了减轻开发人员的开发工作量,不过最后去反而成为了开发人员的一个噩梦,在不同的PHP环境下,由于Magic Quotes设置的不同,造成了相同的代码却产生了完全不同的结果。明明在开发环境中运行正常,但在最终的运行环境中,内容会莫名其妙的多出一些单引号。最终使得PHP设计师们也不得不在PHP6中把此些设定值取消,把最终的控制权重新还给开发人员。
但现在毕竟还是PHP5的时间,还有很多的服务器依然还在运行着PHP4,等待PHP6的完全商业看来还是有一段时间的。那如何让我们来避免这次噩梦呢?
方法1:
如果你使用的是Dedicated Server,那可以修改系统etc下面的php.ini,不过这种方法使用几率应该不大,使用phpinfo()可以查看修改的效果。
方法2:
修改你的Virtual Host里etc/目录中的php.ini,一些比较成熟的服务商基本上可以这样修改,使用Local Value覆盖系统的Master Value,使用phpinfo()可以查看修改的效果。
方法3:
如果方法2都不行时,可以使用此方法,修改.htaccess,在.htaccess文件中设置php_flag magic_quotes_gpc off,这样也能把magic quotes 关闭。不过文件最好放在最上层的目录中,否则未覆盖到目录,可能设置无效,这种方法必须使用ini_get去查看实际修改结果。
Imagemagick中图片大小转换全攻略
Convert的resize子命令应该是在ImageMagick中使用较多的命令,它实现了图片任意大小的缩放,唯一需要掌握的就是如何使用它的一些参数测试设定值:
此说明文件中所用的原始文件(src.jpg),宽度:200,高度:150
命令格式: -resize widthxheight{%} {@} {!} {<} {>} {^}
Eclipse Ganymede 先睹为快
因为Eclipse 3.4版本还不支持PDT,自己也不大作Java的开发,所以新版本也没怎么使用,仍旧使用Zend Studio 6.01 For Eclispe。
今天看见IBM Developerwork上出了一篇文章:Eclipse Ganymede 先睹为快,介绍了Eclipse Ganymede的24个新的功能。其中自己比较感兴趣的是:
- Dynamic Language ToolKit (DLTK),使得Eclipse可以支持更多的脚本语言,如Ruby、Python。

- Rich Ajax Platform (RAP):应该是支持Web 2.0的Ajax的开发。

用空试用一下这两个功能。
Trac 0.11b2的升级
由于Trac 0.11的正式版本已经发布,所以就对自己的Trac 0.11 Beta2进行了升级,可能是第一次升级,所以这个升级过程还不是特别顺利。
在升级前参照Trac的官方说明,下载了Trac-0.11.win32.exe,不知是何原因,安装完成后,运行c:\Python25\Scripts\trac-admin.exe “d:\trac\project” upgrade 命令,就是报错”pkg_resources.DistributionNotFound: Trac==0.11″,看错误信息的意思是说此0.11的版本没有找到。
在Internet上查了一下,有人说再升级前必须关闭apache服务器,否则由于程序还在运行,新程序包就应该不会覆盖旧版本。但尝试了一下发现还是不行,察看c:\python2.5\lib\site-packages\下发现有一个资料夹Trac-0.11-py2.3.egg,我的python明明是2.5版本,怎么生成的信息就说是2.3,猜想可能是安装程序包的问题吧。
既然直接安装不行,那何不试试setup_tools的手动安装。运行c:\python2.5\scripts\easy_install –help,只有输入–upgrade参数,就可以升级了。所以就在命令行输入”c:\python2.5\scripts\easy_install –upgrade trac“,果真升级就自动开始了。安装完后check了一下c:\python2.5\lib\site-packages\,现在版本信息正确了。接着运行c:\Python25\Scripts\trac-admin.exe “d:\trac\project” upgrade也成功了。
运行apache后, 察看屏幕坐下角,果真从Powered by Trac 0.11b2更新成了Powered by Trac 0.11。看来版本更新是成功了。相信以后升级就有经验了,应该遇到的障碍就少了。
Zend Framework中如何让View和Controller关联
$view = new Zend_View();
$view->setEncoding('utf-8');
$view->doctype('XHTML1_STRICT');
$view->headTitle('title');
$view->headScript()
->appendFile('/scripts/jquery/jquery-min.js')
->appendFile('/scripts/thickbox/thickbox.js');
$view->headStyle()->appendStyle('/styles/main.css')
->appendStyle('/styles/default.css')
->appendStyle('/styles/thickbox.css')
->appendStyle('/styles/ie6.css');
$view->addHelperPath('../application/default/views/helpers');
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
Zend Framework的官方文档说明还是比较详尽的,不过关于如何整合MVC的例子还是少了些。以上的代码实现了Zend Framework中的View和Cotroller的关联。慢慢再介绍在View或者View Helper中如何获取Controller的实例。
Eclipse 3.4 (Ganymede) 发布
近期一直在使用Zend Studio for Eclipse 做开发,对Eclipse 这个新版本的关注热情少了点。
由于自己用Eclipse主要做PHP的开发,不清楚和新版本对应的PDT功能增强了那些功能。一直觉得Zend Studio对系统的要求高了些,有时保存文件校验时还会莫名其妙的卡在那里(进度条一直不变)。不过Zend Studio对代码校验做了比PDT强,如使用未赋值的变量等功能,所以让我一直还舍不得舍弃它。但这次看来PDT和上次3.3(Europa)发布时不同,并没有同时提供新的版本,最新的版本是6/3日的1.0.3版本。
在下载页面看到一个新的下载包Eclipse IDE for Java EE Developers (163 MB),看来这次Eclipse还是干回来了老本行,对Java开发的支持进行了加强,主要为SOA的开发提供解决方案。
我先下载一个试用一下,看看到底增强些什么功能,再来对它头评头论足。
有兴趣可到此地址下载:http://www.eclipse.org/downloads/
MySQL 数据库的备份 (命令行方式)
对于一个成功的网站来说,可能程序的可用性是一个比较重要的环节,但网站更核心的内容和灵魂还是隐藏在UI后面的数据。
现在大多数网站都采用LAMP(Linux + Apache + MySQL + PHP),原因就是它在使用成本上的价廉物美,所以今天我们来介绍一下如何对MySQL数据进行备份.
方法非常的简单,使用mysqldump命令即可:
mysqldump --default-character-set=utf8 -uusername -ppassword -hhostname db_name > db_name-$(date +%F).sql
为了支持多国语言(当然包括中文),现在越来越多的数据库使用utf8作为它的默认编码,所以在例子中使用utf8作为数据默认编码,否则不指定会造成汇出的数据乱码。
同时请替换红字表示的一些设定值:
- username : 数据库的用户名。
- password: 数据库的秘密。
- hostname: 如果数据库和代码不是同一台服务器时。(这种情况非常常见,特别是大型网站和一些虚拟空间)
- db_name: 数据库的名称。
- $(date +%F): 使用shell变量来为备份的文件加上日期,这样就避免了每天备份时,覆盖了昨天的备份数据。
最后把此命令保存为shell脚本,加入到crontab中,让系统可以按你的要求备份数据。
Zend Studio for Eclipse 6.01
今天把我的Zend Studio 进行了升级,从原来的6.0版本升级到了6.01版。简单的从UI上看和原来版本没啥区别,想升级主要因为此版本集成了Zend Framework 1.52,这样自己就不用手动集成1.5版。其实那时也挺纳闷的,当6.0版发布时,Zend Framework 1.5也已经发布了,为何那是不一步到位,还得折腾我的硬盘。
具体更新功能如下:
- Updated Zend Framework support including Zend Framework 1.5.2
- Improved Code formatter
- Improved Debugger performance
- New GUI translations for German, French and Italian
- Improved Code folding
- Updated Added PHP extensions for PHP binary on Windows
新增功能6其实也非常诱人,如果Zend Studio中不支持扩展,真的挺难想象PHPUnit还能测试些啥。不过折腾了半天,我的PHPUnit测试还是报“You cannot serialize or unserialize PDO instances”,在命令行运行时完全正常。看来还是继续命令行测试吧。
如有兴趣下载测试,点击这个地址。http://downloads.zend.com/studio-eclipse/6.0.1/ZendStudioForEclipse-6_0_1.exe
jQuery获得Radio Button的选择
JQuery 真的非常的强大,个人觉得主要功能还必须归结到它的Selector的设计上,非常的灵活,完完全全可以访问页面的任何内容。
今天又再次小试牛刀,看看如何使用简单的JS语句来获得Radio Button的选择情况。
HTML 代码如下:
<inputtype=“radio” name=“type_choose” value=“1″ > Type1
<input type=“radio” name=“type_choose” value=“2″ checked=checked> Type 2
jQuery 代码如下:
var type = 0;
$("input[name='type_choose]").each(function (index){
if (this.checked){
type = this.value;
}
});
我把radio button 的名称定义成了type_choose,jQuery的先定位到所有input标签,然后过滤只留下name等于type_choose的标签,其实也可以使用$(“input[type='radio']“)来找到radio button,不过这种缺点就是页面上只有一个radio button group,所以可能还是使用name更好些。
最后使用each函数来遍历找到的所有radio button,函数中的this就是radio button,如何他的checked属性为真,则表示用户选择了这个radio button,把这个radio button的值保存在type变量中。
整个算法还是挺紧凑简单的。
