天生我才必有用

PHP5.3中新增的常量__DIR__

Posted in PHP    作者:Ray    2008年七月22日

在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

Posted in PHP,随笔    作者:Ray    2008年七月17日

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中图片大小转换全攻略

Posted in 网站设计    作者:Ray    2008年七月16日

Convert的resize子命令应该是在ImageMagick中使用较多的命令,它实现了图片任意大小的缩放,唯一需要掌握的就是如何使用它的一些参数测试设定值:

此说明文件中所用的原始文件(src.jpg),宽度:200,高度:150

命令格式: -resize widthxheight{%} {@} {!} {<} {>} {^}

(更多…)

标签: ,

Eclipse Ganymede 先睹为快

Posted in 技术    作者:Ray    2008年七月7日

因为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的升级

Posted in 技术,网站设计    作者:Ray    2008年七月4日

由于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关联

Posted in PHP    作者:Ray    2008年七月3日
$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) 发布

Posted in Java,PHP    作者:Ray    2008年六月26日

近期一直在使用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 数据库的备份 (命令行方式)

Posted in 数据库    作者:Ray    2008年六月25日

对于一个成功的网站来说,可能程序的可用性是一个比较重要的环节,但网站更核心的内容和灵魂还是隐藏在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

Posted in PHP    作者:Ray    2008年六月17日

今天把我的Zend Studio 进行了升级,从原来的6.0版本升级到了6.01版。简单的从UI上看和原来版本没啥区别,想升级主要因为此版本集成了Zend Framework 1.52,这样自己就不用手动集成1.5版。其实那时也挺纳闷的,当6.0版发布时,Zend Framework 1.5也已经发布了,为何那是不一步到位,还得折腾我的硬盘。

具体更新功能如下:

  1. Updated Zend Framework support including Zend Framework 1.5.2
  2. Improved Code formatter
  3. Improved Debugger performance
  4. New GUI translations for German, French and Italian
  5. Improved Code folding
  6. 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的选择

Posted in Javascript    作者:Ray    2008年六月16日

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变量中。

整个算法还是挺紧凑简单的。

标签: