Perl 和 Amazon 云,第 4 部分:深入探究完整 mod_perl 站点的代码库
2010-02-04 00:00:00 来源:WEB开发网删除照片的操作是由 deleteimageid 参数触发的。编辑照片名称可以通过 name 和 imageid 参数完成。创建新照片可以通过 URL、用户名和照片名完成。照片 bucket 是可选的,并且只有当处理程序调用发生在 S3 上传成功重定向到站点之后才会显示。
回忆一下策略,S3 成功重定向使用用户名作为 URL 参数的一部分。它也包含键和 bucket,因此您只需要从中创建一个照片。
实用函数
让我们看一下各种实用函数。
清单 9. 各种实用函数
sub qlog
{
printf STDERR @_;
print STDERR "\n";
}
sub new_uuid
{
return $uuid->to_string($uuid->create());
}
sub simpledb_image_domain_name
{
return simpledb_domain_name(IMAGE_MODE);
}
sub simpledb_comment_domain_name
{
return simpledb_domain_name(COMMENT_MODE);
}
sub simpledb_domain_name
{
return sprintf "%s.share.lifelogs.com",
(shift == IMAGE_MODE) ? 'share_photos' : 'share_comments';
}
如果不希望每次编写 printf STDERR,那么 qlog 将非常有用。它还为您编写了行结束符。是否要将各种输出写入到 Apache 错误日志,这由您决定。同样:
new_uuid 用于生成新的 UUID。
simpledb_domain_name、simpledb_image_domain_name 和 simpledb_comment_domain_name 使用模式参数(可以是 IMAGE_MODE 或 COMMENT_MODE)来提供一个 SimpleDB 域。
SimpleDB 实用函数
SimpleDB 实用函数几乎和 第 3 部分 中的函数(simple_go.pl)完全相同。可从下面的 下载 小节下载。我将列出其中的不同:
get_comments 是一个新函数,用来获得全部评论,按照片 ID 编排,然后按照父评论 ID 或 noparent 显示。
qlog 替代了 print,而 VERBOSE 常量替代了 $verbose。
使用环境 AWS_KEY 和 AWS_SECRET_KEY 键为每个请求初始化服务。
传递 $mode 模式,而不是用于全局。
对于错误,没有使用 die(),您将尽可能优雅地处理它们。
域名通过 simpledb_domain_name 获得,而不是使用全局变量。
函数被重命名,因为 “get” 和 “put” 在多用途名称空间中不算好名字,就像旧的 simple_go.pl 脚本那样。
再次提醒一下,这段代码只针对每个属性使用一个值。如果任何属性使用了一个字符串数组,那么将只返回其中的一个字符串。在编写完属性后,只会留下一个值,即使之前有一组值。这大大简化了代码,但并不适合用于通用的 SimpleDB。
结束语
通过 本系列 第 2 部分和第 3 部分的介绍,现在您已经从总体上了解了完整的 mod_perl 站点的代码(这两篇文章的下载文件也可以从下面的下载小节获得)。最终生成的站点使用 Template Toolkit、S3 和 SimpleDB 来提供照片上传、主题浏览、添加评论、编辑和删除功能。
在第 5 部分中,我们将研究这个站点的模板。
本文示例源代码或素材下载
- ››Perl 6 发布
- ››部分 WM6.5 手机有望升级到 Windows Phone 7
- ››Perl 和 Amazon 云,第 1 部分:通过构建简单的照...
- ››Perl 和 Amazon 云,第 2 部分:通过 HTML 表单将...
- ››Perl 和 Amazon 云,第 3 部分:上传图像并创建、...
- ››Perl 和 Amazon 云,第 4 部分:深入探究完整 mod...
- ››Perl 和 Amazon 云,第 5 部分:了解完整 mod_per...
- ››部分英特尔芯片不支持Windows 7“XP模式”
- ››Perl的5个常见错误
- ››Perl操作mysql数据库的方法
- ››Perl的经典用法
- ››部分VZPP无法正常访问怎么解决?
更多精彩
赞助商链接