无废话 Sphinx Server 2.0.1 及 Sphinx Client PHP 模块编译安装

Sphinx 又发新版本了,当前最新版本为 2.0.1。

Sphinx 安装
wget http://sphinxsearch.com/files/sphinx-2.0.1-beta.tar.gz
tar zxf sphinx-2.0.1-beta.tar.gz
cd sphinx-2.0.1-beta
./configure –prefix=/usr/local/sphinx –with-mysql
make && make install

PHP 的模块好久没有更新,只好先使用官方提供的 PHP 接口类(在源代码包的 api/ 目录下)。
实际使用中发现 PHP 模块有存在一些 BUG,建议大家还是使用官方提供的 PHP 接口类,而且在一些情况下,PHP 接口类性能并不比 PHP 模块的差。

— EOF —

防止邮件进入垃圾箱:使用第三方邮件服务提供商(ESP)

之前在用 Postmark 作为网站的邮件发送服务,最近听说有几个更牛 X 的第三方邮件服务提供商,索性搜索一下,把它们全找出来。

连 Amazon 也来凑热门了,比较大的几家服务商罗列如下:

Amazon SES (http://aws.amazon.com/ses/)
PostMark (http://www.postmarkapp.com/)
CritSend (http://www.critsend.com/)
SendGrid (http://sendgrid.com/)
SocketLabs (http://www.socketlabs.com/)
MailChimp (http://www.mailchimp.com/)

因为我用的比较多的还是基本的发信功能,以上所有服务商提供的服务都能满足我的要求,因此正文我只在价格方面做个简单的比较。

基本上他们都提供免费试用的额度。免费试用额度:
Amazon SES:每月赠送 2000 封(仅限 Amazon EC2 客户)
Postmark:总共赠送 1000 封
CritSend:总共赠送 1000 封
SendGrid:每天赠送 200 封
SocketLabs:每个月赠送 500 封
MailChimp:每月 12000 封,只能发送给 2000 个用户

如果免费试用的额度不能满足要求,那就需要购买收费服务,价格如下:
Amazon SES 价格:每 1000 封 $0.10
SendGrid 价格:每 1000 封 $0.10 – $1.00
CritSend 价格:每 1000 封 $0.28 – $0.50
Postmark 价格:每 1000 封 $0.50 – $1.50
SocketLabs 价格:每 1000 封 $0.80 – $3.90
MailChimp 价格:每 1000 封 $5 – $30,或者按用户数包月收费

SendGrid 每天赠送 200 封,很给力呀!收费服务的单价也是最低的!
Foursquareslideshare 用的也是这家的服务,因此稳定性应该还不错。

现在购买这家的收费服务还可以享受 7.5 折的优惠,从以下链接进入:http://sendgrid.tellapal.com/a/clk/4KYr7

补充:
今天实际测试了 SendGrid、CritSend 的速度,都要比 Postmark 的快一些,查了下 SPF 记录,发现他们的邮件服务器确实是比较多。
但是可恶的是 CritSend 的邮件居然进了邮箱,看起来质量不太靠谱!注册需要人工审核,也不能自己指定/修改密码,直接无视掉!
大家还是用 SendGrid 吧,7.5 折!http://sendgrid.tellapal.com/a/clk/4KYr7

— EOF —

PHP 5.3.0 DateTime 类的 BUG

观察以下代码:

setTimezone(new DateTimeZone($tz));

// 输出时间
echo $dt->getTimestamp();
echo “\n”;
echo $dt->format(“Y-m-d H:i:s”);
echo “\n”;

// 时间减7天
$dt->sub(new DateInterval(‘P7D’));

// 输出时间
echo $dt->getTimestamp();
echo “\n”;
echo $dt->format(“Y-m-d H:i:s”);
echo “\n”;

// 再次输出时间
echo $dt->getTimestamp();
echo “\n”;
echo $dt->format(“Y-m-d H:i:s”);
echo “\n”;

正确的输出结果应该是:

1303974000
2011-04-28 00:00:00
1303369200
2011-04-21 00:00:00
1303369200
2011-04-21 00:00:00

可是在 PHP 5.3.0 下测试,输出结果为:

1303974000
2011-04-28 00:00:00
1302764400
2011-04-14 00:00:00
1302159600
2011-04-07 00:00:00

真是不可思议!进一步测试发现每次调用 $dt->getTimestamp() 都会使 $dt 往前再减7天。
有在用 DateTime 类的同学们,赶紧把 PHP 版本升级下吧。
PHP 5.3.3 版本下测试正常。

Google 了一下关键词“php 5.3.0 datetime sub bug”,发现这个确实是一个 BUG。
http://bugs.php.net/49059

— EOF —

Blog 搬迁至 Linode

已经是上个月的事情了,先买了一个月试用了一下,速度可以接受。

Linode:http://www.linode.com/
这家美国的 VPS 服务商确实不错,使用 Xen 构建,保证不会超卖。
大家如果有海外 VPS 需求的话,我推荐大家在 Linode 购买 🙂

我使用的是位于 Freemont 数据中心的 Linode 512 套餐:
内存:512MB
硬盘:16GB
流量:200GB/月
价格:$19.95/月

数据中心测速地址:http://www.linode.com/speedtest/

这个月起准备按月支付了,可以打9折。

大家需要购买的话,欢迎从这里点过去:
http://www.linode.com/?r=0afe8e299a0c99fd54f8736b7e40521d62efe149

在你注册使用满3个月后,我就可以得到一笔推介费用啦~

— EOF —

xdelta: Windows 下大文件比较(diff/patch)工具

Unix/Linux 系统下的 diff 和 patch 工具真的非常好用!
但是在 Windows 下似乎没有很好的替代工具(装 MinGW 方式除外)。

如果只是比较小文件,其实 Windows 下不缺工具,Beyond Compare、DiffMerge、UltraCompare,Tortoise SVN 也带有一个文件比对工具。
但是如果要对比两个 2G 的文件,90% 的工具都要废了,貌似他们都喜欢把要比对的文件完全加载到内存中,然后做可视化的比对。

最后找到的 xdelta 这个工具可以满足我的要求,项目地址:
http://code.google.com/p/xdelta/

命令行使用帮助:

E:\soft>xdelta3.0z.x86-32.exe –help
Xdelta version 3.0z, Copyright (C) 2007, 2008, 2009, 2010, Joshua MacDonald
Xdelta comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; see “COPYING” for details.
usage: xdelta3 [command/options] [input [output]]
make patch:

xdelta3.exe -e -s old_file new_file delta_file

apply patch:

xdelta3.exe -d -s old_file delta_file decoded_new_file

special command names:
config prints xdelta3 configuration
decode decompress the input
encode compress the input
test run the builtin tests
special commands for VCDIFF inputs:
printdelta print information about the entire delta
printhdr print information about the first window
printhdrs print information about all windows
recode encode with new application/secondary settings
merge merge VCDIFF inputs (see below)
merge patches:

xdelta3 merge -m 1.vcdiff -m 2.vcdiff 3.vcdiff merged.vcdiff

standard options:
-0 .. -9 compression level
-c use stdout
-d decompress
-e compress
-f force (overwrite, ignore trailing garbage)
-h show help
-q be quiet
-v be verbose (max 2)
-V show version
memory options:
-B bytes source window size
-W bytes input window size
-P size compression duplicates window
-I size instruction buffer size (0 = unlimited)
compression options:
-s source source file to copy from (if any)
-S [djw|fgk] enable/disable secondary compression
-N disable small string-matching compression
-D disable external decompression (encode/decode)
-R disable external recompression (decode)
-n disable checksum (encode/decode)
-C soft config (encode, undocumented)
-A [apphead] disable/provide application header (encode)
-J disable output (check/compute only)
-T use alternate code table (test)
-m arguments for “merge”
the XDELTA environment variable may contain extra args:
XDELTA=”-s source-x.y.tar.gz” \
tar –use-compress-program=xdelta3 \
-cf target-x.z.tar.gz.vcdiff target-x.y

帮助里写得很详细了,我就不再作解释。

— EOF —