Archive for May, 2005

Cake PHP framework 0.9 dev 发布

昨天 Cake PHP framework 发布了 0.91dev 版。

新版将函数的命名风格从像 input_tag() 这种改到 inputTag() 这种了。汗,不知应该怎么叫啊 :’(

协议换成使用 MIT License

框架程序改动也挺多的,详见 Cake’s release history ,不再赘述。

作者还发布了一个 Cake Framework AJAX Demo ,展示了如何使用 Cake 进行 Ajax 方面的开发。

同时并提供源码下载:Cake Framework AJAX Demo source code

另外从 Sourceforge 上看到了一个叫 xajax 的 PHP 类库 ,刚出炉不久 ,5.26 号发布的第一个版本: 0.1 alpha ,现在是 0.3 alpha 。它提供的一个叫 Graffiti Wall 的东东还比较好玩。

Cake PHP framework

Cake PHP framework 这东东时常在我这个 blog 上订阅的 del.icio.us/tag/php 中出现。

这是一个基于 PHP 的 framework 。它的作者称 Cake PHP framework 的设计思想源自 37signalsRuby on Rails ,一个最近非常的 Ruby 框架。他说:

after playing around with Ruby on Rails you don’t want to develop software the old way. Rails does all the paperwork involved with connecting to the database, setting up the templating, linking code to URLs in a meaningful way, and so on. You write the application business logics and fire it up. Very fast, very efficient programming, saves a lot of unnecessary bother.

Cake aims to provide an easy way to write PHP applications. While designed as a Rails rip-off, it aims to be a framework of it’s own, along with certain functionalities, such as custom, specialized modules, that, if I understand correctly, Rails developer are not particularily fond of.

类似于 Ruby on Rails ,它封装了数据库连接,模板,及生成链接。最大的特点就是数据操作,不用自己再写多少代码。和 Ruby on Rails 类似,它生成一个数据表的操作最少只要一行代码。 Cake PHP framework 还有很大的一个优点就是它是一个轻量级的框架,虽然第一次看来会觉得很神奇,但是仔细看它的代码也很好懂而且也没什么特殊之处,但其开发使用方式确实很独特,实用,高效。如果是作基于数据库的 PHP 系统,这是一个很值得考虑的选择 。

看一下 Cake Tutorial 就能了解用 Cake PHP framework 建立一个 Web Application 是如何的快速方便了。它介绍了如何快速地建立一个 blog 程序的例子,几分钟就能搞定。

越来越发现 PHP 世界的有趣,哈哈。

Digital-NGP

Digital-NGP (Digital Northern Great Plains Project) 是一个在线的遥感图像存储及发布系统,是由美国的 North Dakota 大学 Upper Midwest Aerospace Consortium 开发的一套系统。用它可以查询,下载美国地区各种尺度的各种卫星遥感影像。

Digital-NGP or DNGP is an online GIS database system for archiving and delivering remote sensing images. NGP stands for Northern Great Plains, which defines the region of our interest. DNGP is developed by the Upper Midwest Aerospace Consortium at the University of North Dakota in an aim to better serve our community by providing an integrated web-based Geographic Information System.

提供的影像类型包括:MODIS,ETM,TM,QuickBird,MSS,ASTER,ETM+,SRTM 等,并能查看指定日期的各地区的各种类型的影像。并对于多光谱影像可以选择特定波段,生成RGB图像。然后还可以选择生成特定的图层的内容,如 Boundaries,Transportation,Water,Geology,Raster Layer,Agriculture等分类下的特定图层。同时也可进行 NDVI 等指数的分析。生成的影像均为 png 格式,可以自由打印和下载。

这是今天上午被老师叫去听一个 North Dakota 来的张老师的讲座了解到的。他是该项目的 Team leader 。系统数据库用的是 Oracle spatial ,底层影像的处理主要是依靠开源的 Mapserver 来完成。影像数据通过 GeoTIFF 存储,然后通过 Mapserver 根据用户的请求生成 png 图像。其 web 界面早期用的是java ,后来转而使用了 PHP 。他介绍说当时数据库之所以使用 Oracle 是因为早期只有 Oracle 有对空间数据的支持,不过现在的 MySQL 4.1 也有了对空间数据的支持,以后可以好好研究一下。PostgreSQL 现在也有 Spatial Extension:PostGIS ,相信现在开源的数据库应该也能完成这方面的应用了。

听那老师的讲述,在科研领域使用 java 很多时候都是不合适的,因为太慢的速度,内存占用对于很大数据量的遥感影像处理完全不合适。而且使用 java 容易出现各种问题,一般较适用于有快速开发要求的商业应用,然后还可以因为容易出问题而使开发者可以实现提供长期的升级,修补等服务。呵呵。

PHPMailer:Featured email transfer class for PHP

PHPMailer 是一个很有用的 PHP 发送邮件的类。它支持使用 smtp 服务器发送邮件,同时支持 Sendmail, qmail, Postfix, Imail, Exchange, Mercury, Courier 等邮件服务器。SMTP服务器的话还支持验证,多SMTP发送(不过不太清楚有什么用).邮件发送可以包括多个TO, CC, BCC and REPLY-TO,支持text和HTML两种邮件格式,可以自动换行,支持各种格式的附件及图片,自定义邮件头等基本的邮件功能。

由于 PHP 中只包含了一个 mail 函数,所以 PHPMailer 是对其很大的增强,相信是可以满足很多人的需求的,呵呵。其主要包括两个类文件:用于实现发送邮件功能的 class.phpmailer.php 和 smtp 实现的 class.smtp.php 。然后还有可以实现多种错误输出的文件,以及很详细的文档。软件发布遵循 LGPL 协议。

使用也很简单,看下面的例子就明白了:

  1. require(”class.phpmailer.php”);
  2. $mail = new PHPMailer();
  3. $mail->IsSMTP(); // send via SMTP
  4. $mail->Host = “smtp1.site.com;smtp2.site.com”; // SMTP servers
  5. $mail->SMTPAuth = true; // turn on SMTP authentication
  6. $mail->Username = “jswan”; // SMTP username
  7. $mail->Password = “secret”; // SMTP password
  8. $mail->From = “from@email.com”;
  9. $mail->FromName = “Mailer”;
  10. $mail->AddAddress(”josh@site.com”,”Josh Adams”);
  11. $mail->AddAddress(”ellen@site.com”); // optional name
  12. $mail->AddReplyTo(”info@site.com”,”Information”);
  13. $mail->WordWrap = 50; // set word wrap
  14. $mail->AddAttachment(”/var/tmp/file.tar.gz”); // attachment
  15. $mail->AddAttachment(”/tmp/image.jpg”, “new.jpg”);
  16. $mail->IsHTML(true); // send as HTML
  17. $mail->Subject = “Here is the subject”;
  18. $mail->Body = “This is the <b>HTML body</b>”;
  19. $mail->AltBody = “This is the text-only body”;
  20. if(!$mail->Send())
  21. {
  22. echo “Message was not sent <p>”;
  23. echo “Mailer Error: ” . $mail->ErrorInfo;
  24. exit;
  25. }
  26. echo “Message has been sent”;

详见 PHPMailer 的主页