Perl 转换数字到人民币金额

2007-02-08

perl中两个urldecode和urlencode的方法

2006-08-02

urlencode / urldecode in Perl

If you are looking for PHP’s urlencode/urldecode equivalent in Perl, you won’t find any. But here’s what you can do:

Encode:

$str =~ s/([^A-Za-z0-9])/sprintf(“%%%02X”, ord($1))/seg;

Decode:

$str =~ s/%([A-Fa-f0-9]{2})/pack(‘C’, hex($1))/seg;

评:“垃圾邮件”该不该一棍子打死

2005-11-27

我对作者的观点持认同态度,但是,并不是宽容垃圾邮件,我觉得应该是规范邮件广告,真正的做到许可邮件营销,许可邮件广告。

作为一个计算机工作者,我每天要处理的邮件很多。同样,我也会收到很多很多的“垃圾邮件”。按照现在一些邮件服务提供商的观点,这些都是垃圾:UBE,UCE。但是其中还是有一些会让我感兴趣,对我而言是有所价值的信息的。这些一般都是内容看起来比较精美,标题鲜明的邮件,有产品推介,也有培训招生的。

但是,对于大多数一看就知道是欺骗的邮件,我就非常非常的反感。比如最常见的就是paypal和amzon的相关欺骗邮件。还有就是开发票等。这些垃圾邮件为了避开反垃圾技术,标题内容都古零精怪,最讨厌的是,群发者拿着买来的邮件地址,直接大量的往外灌输,同样的邮件,我常常一下子收到几次甚至几十次。对于这样的“垃圾”,我是深恶痛绝! 对于“垃圾邮件”,我们当然反对。

但是是不是将所有的商业邮件都归为垃圾邮件呢?如今是一个商业社会,不光互联网上,生活中随处充斥着广告。如果规范了邮件群发,邮件广告不失为一个有效的广告渠道。更何况,现在哪一个邮件服务提供商不在自己的邮箱服务里面添加自己的广告呢?

原文出处:http://www.sznews.com/szsb/20051127/ca2010590.htm

“垃圾邮件”该不该一棍子打死
2005年11月27日 04:52 深圳商报

“垃圾邮件”日益泛滥人所诟病反“垃圾邮件”也成了商机

“垃圾邮件”该不该一棍子打死

“垃圾邮件”是一个颇受争议的“新经济现象”。

最近,记者在朋友中间做了一项调查,平均每人每天收到10余封“垃圾邮件”,最多的一天曾收到200多封“垃圾邮件”。而在两年前,一般人大概也就在四五封“垃圾邮件”。记者这一段时间日收“垃圾邮件”30至40封,最多的一天曾收到55封,其中真正有信息量的邮件仅两三封。即使一些设置了“垃圾邮件”过滤器的邮箱,每天还可收到两三封“垃圾邮件”。垃圾电子邮件日趋泛滥。

不过,在大多数人对“垃圾邮件”说“不”的同时,大量群发的“垃圾邮件”却被一些中小企业视为互联网时代最新的“营销模式”。相应的是,现在市场出现了一批以“邮件营销”为核心的产业群,主要包括邮件群发技术软件研发及“邮件营销”两大类机构。

群发商机还是群发垃圾?

之所以产生大量的“垃圾邮件”,关键在于邮件群发技术,只要你桌上有一台容量较大的电脑及100至200多元一套十万封或数百万封的邮件地址群发软件,再设计好一份企业广告宣传单,在1小时之内可以发送10万封电子邮件。

记者通过百度搜索“邮件群发”四个字节,仅翻了30多个网页或网站,就找到了15个出售邮件群发软件或专门进行邮件营销推广的公司,可以说“邮件群发”已成为一个庞大的“产业群”。

除邮件群发个人邮箱外,现在邮件还可群发到论坛、QQ及商贸网站。

与此同时,邮件营销作为一个新兴的企业营销模式,被一些中小企业及网站纷纷采用。记者对11月20日收到的55个邮件进行统计分类表明,超过七成的邮件为企业或网站推销产品或服务的信息。其中,企业发布的产品或投资合作类的信息18条、培训讲座信息12条、网站信息下载及网站推广10条,占邮件总数70%左右,其余为个人交友、民间社团活动、个人信息发布等。

邮件营销的效果如何?目前,需要群发邮件广告的大多是小企业,几百元发送几百万封的电子邮件广告对于这些小企业来说是很划算的投入,虽然真正回复邮件的人并不多,但是100万封邮件中只要回复几十封,就相当于100元钱拉到了几十个客户。上海比天国际服装展览公司刘志强说,他们通过电子邮件发出的几十万封展览信息,有反馈的仅有万分之一左右,应当说,这样的反馈率还是相当高的,十分合算。

深圳一家邮件群发软件开发公司的负责人则称,据客户反映,使用邮件群发之后,网站每天点击率可提高1000到2000人次,QQ好友增加30至40个,电话一天可增加10多个。

“垃圾邮件”人所诟病

事实上,“垃圾邮件”一直为人们所诟病,中外互联网界反对“垃圾邮件”的态度十分明确。

从整个互联网的资源利用来看,“垃圾邮件”里的信息几乎没有什么价值,每次发送上百万甚至上亿封,占用了大量的网络资源,严重时甚至拥塞整个网络。其次,从个人用户来看,“垃圾邮件”浪费了人们的大量时间。一般人们需要至少10秒钟时间来判断是否为“垃圾邮件”,如果每天收到几十封“垃圾邮件”,就得花大约十分钟的时间来处理它们。今年8月份,国际电信联盟专家会议发表的一份公报表明,目前约80%的电子邮件是“垃圾邮件”,“垃圾邮件”每年给世界经济造成的损失高达250亿美元,不仅阻碍了信息业的发展,而且损害了人们对于网络交流的信心。

反“垃圾邮件”成了商机

与此同时,反对“垃圾邮件”也成为互联网时代的又一个商机,派生出一个反“垃圾邮件”软件产业群。

据市场研究公司RadicatiGroup称,随着企业与“垃圾邮件”作斗争的升级,反“垃圾邮件”软件产品的销售将会强劲增长。2004年反“垃圾邮件”解决方案市场预计将突破9.79亿美元,与2003年相比增幅超过50%,而2008年预计将超过17.4亿美元。

目前,国内的263、搜狐、新浪、雅虎等提供电子邮箱服务的企业都推出了反垃圾邮件的服务,并为研发该服务的相关技术投入了大量资金。

专家观点

深圳市社科院院长助理、研究员吴奕新:

发送“垃圾邮件”如同私闯民宅

现在许多个人邮箱都是付费的,在某种程度讲,个人电子邮箱是私人财产。是否可以让大量的“垃圾邮件”进入个人信箱?这是公民个人的权利,没有允许直接进入,这与私闯民宅有什么两样?

如何解决“垃圾邮件”泛滥成灾的问题?“垃圾邮件”是一个社会问题,涉及到互联网站、发送单位以及邮件所有人三者之间的经济关系,我主张还是用法律手段去解决,加快制定反“垃圾邮件”的立法步伐,加大滥发邮件的经济成本及违法成本,规范电子邮件的发送行为。广东诚公律师事务所律师黄康:

免费邮箱应宽容“垃圾邮件”

就感情而言,大家十分讨厌“垃圾邮件”,这是可以理解的。而从理性角度去分析,互联网日益倍增的邮件还是有许多积极的社会意义,传播大量的社会信息,比如说一些驴友召集的野外活动、知识讲座等,给大家生活带来一些便利,为企业广告宣传降低成本。

我认为,对一些收费性邮箱,互联网站可以对“垃圾邮件”实施限制性措施。而对大量的免费邮箱,政府及社会持宽容的态度,不要对“垃圾邮件”问题过多地干预,这毕竟是市场化的事情,不能简单采取禁止的办法。

至于如何协调公众与“垃圾邮件”发送者之间的利益关系?我认为,主要还要用经济办法协调,电讯部门应当从电信频道资源上进行控制,限制电子邮件流量,提高发送成本。

记者点评

在邮件群发技术普及推广之后,你会发现这样一个事实,邮件营销尽管可能让网民讨厌,而众多的中小企业却倍加喜欢,花一两百元就可以发送数十万甚至千万封邮件广告,营销成本降低,增加了企业的竞争力。

不可否认,“垃圾邮件”确实有泛滥成灾之势,几乎到了“无孔不入”的地步。但这是否意味着,我们就可以一棍子将群发邮件置于死地?

我们必须正视的事实是,在这几年激烈的市场争斗中,群发邮件与反“垃圾邮件”两大阵营的力量都没有削弱,逐渐形成为相应的两大产业群。

作者:记者张兴衍

Google什么都来啊:) 超强的访问统计分析

2005-11-17

https://www.google.com/analytics

郁闷啊,自动分拣退信的功能失败了

2005-09-05

倒腾 postfix,想将退信自动分拣到不同的目录,结果失败。查找恁久的manual,就是找不到原因。后来日志里面提到了:

warning: regexp map /etc/postfix/maps/map_virtual_mailbox_maps, line 1: regular expression substitution is not allowed: skipping this rule

再去 google,居然找到了,可是奇怪的是google 出来的 virtual(8) 跟我看到在postfix官方网站上看到的 virtual(8) 居然不一样。

我郁闷啊

virtual_mailbox_maps
Recipients are looked up in these maps to determine the path to
their mailbox or maildir. If the returned path ends in a slash
(“/”), maildir-style delivery is carried out, otherwise the path
is assumed to specify a UNIX-style mailbox file.

While searching a lookup table, an address extension
(user+foo@domain.tld) is ignored.

In a lookup table, specify a left-hand side of @domain.tld to
match any user in the specified domain that does not have a spe-
cific user@domain.tld entry.

Note that virtual_mailbox_base is unconditionally prepended to
this path.

For security reasons, regular expression maps are allowed but
regular expression substitution of $1 etc. is disallowed,
because that would open a security hole.

For security reasons, proxied table lookup is not allowed,
because that would open a security hole.

限制单个IP并发TCP连接的iptables方法

2005-08-24

出处: http://www.fengnet.com/showart.asp?art_id=342&cat_id=9

限制单个IP并发TCP连接的方法适应于保护Linux上的各种TCP服务,使用iptables
中patch-o-matic中iplimit补丁来实现,对各种TCP服务比较通用。
做法:
配置Linux核心,使用2.4.20,并使用www.netfilter.org中patch-o-matic中的
base补丁中的iplimit。编译配置安装新核心。
使用www.netfilter.org的 iptables 1.2.8,安装到系统中。

示例:
1 限制连往本机的telnet单个IP并发连接为2个,超过的连接被拒绝:
iptables -I INPUT -p tcp –dport 23 -m iplimit –iplimit-above 2 -j REJECT

2 限制连往本机的web服务,1个C段的IP的并发连接不超过100个,超过的被拒绝:
iptables -I INPUT -p tcp –dport 80 -m iplimit –iplimit-above 100
–iplimit-mask 24 -j REJECT

在任意字符集下正常显示网页的方法(续)

2005-08-21

出处:http://www.coolcode.cn/?p=7

前几天写了一篇在任意字符集下正常显示网页的方法,里面介绍的很简单,就是把前128个字符以外的字符集都用NCR来表示,但是具体怎么转化我没有介绍,因为当时我觉得太简单了。但是后来发现有人问这个问题,这里就详细说明一下。

首先第一步是要把源字符集的字符串转化为UTF-16字符集,做这一步是因为UTF-16字符集中的每个字符都是两个字节,后面处理起来很容易,而如果在源字符集上直接做处理则很复杂。源字符集可以从原网页中的meta标签中获得,也可以单独指定,我的程序是让用户在表单中指定源字符集,因为我不能保证用户提交的文件就一定是HTML文件(其他文件也是可以的,比如这个WordPress的汉化包源文件是个po文件,它里面的内容也可以这样处理),而且即使是HTML文件,里面也不一定就有用于指定字符集的meta标签,所以通过表单单独指定字符集比较保险。你可能会觉得将一种字符集转化为另一种字符集很复杂,确实如此,如果自己来实现的话,确实非常麻烦,但是用PHP来做却很容易,因为它里面已经包含这样的函数了,你可以通过iconv函数很容易的来实现各种字符集之间的转化,如果你的机器上没有安装iconv扩展,你也可以使用mb_convert_encoding函数,如果Multibyte String扩展也没有安装,那就没办法了,因为你要自己实现那么多种编码的转化基本上是不可能的,除非你是顶级大牛!推荐使用iconv,因为这个效率高,支持的字符集也更多。

做完上面那一步之后,接下来是以每两个字节为单位对字符串进行处理。这两个字节直接转化为数字就是&#xxxxx;中的xxxxx,如果这个数字小于128就直接使用这个字符(注意这里就变成单字节了),否则就使用&#xxxxx;的形式。这里有一点要注意,就是当这个数字是65279(16进制的0xFEFF)时,请把它忽略掉,因为这个是Unicode编码中的传输控制字符,而我们现在的字符串已经只有iso-8859-1编码中的前128个字符了,所以我们不需要它了。

好了,基本思路就是这样,下面是实现的程序:

函数的参数中,$encode是源字符集,$str是需要进行转化的字符串。返回结果是转化以后字符串。

在任意字符集下正常显示网页的方法

2005-08-21

出处:http://www.coolcode.cn/?p=5

通常情况下,我们的网页要指定一个编码字符集,如 GB2312、UTF-8、ISO-8859-1 等,这样我们就可以在网页上显示我们指定编码的文字了。但是我们很可能会遇到这种情况,那就是我们可能希望在 ISO-8859-1 编码的网页上显示汉字,或者在 GB2312 编码的网页上显示韩文等。当然一种解决办法就是我们不用 ISO-8859-1 或者 GB2312 编码,而统统都采用 UTF-8 编码,这样我们只要在这种编码下,就可以混合显示各国文字了,这是现在很多网站采用的方法。

而我这里所说的并非上面这种方法,因为上面这种方法必须要指定字符集为 UTF-8 才可以,一旦用户手工指定为其他字符集,或者可能因为某些原因,那个字符集设置没起作用,而浏览器又没有正确自动识别的话,我们看到的网页还是乱码,尤其是在某些用框架作的网页中,某个框架中的页面如果字符集设置没起作用,在 firefox 中显示乱码而且还没法改变(我是说在不装RightEncode插件的情况下)。

而我这里介绍的方法即使是把网页指定为 ISO-8859-1 字符集,也能够正确显示汉字、日文等。原理很简单,就是把除了 ISO-8859-1 编码中前128个字符以外的所有其他的编码都用 NCR(Numeric character reference) 来表示。比如“汉字”这两个字,如果我们写成“汉字”这种形式,那么它在任意字符集下都可以正确显示。根据这个原理,我写了下面这个程序,它可以把现有的网页转化为在任意字符集下都能显示的网页。你只需要指定源网页的字符集和源网页,点提交按钮,就可以得到目标网页了。你也可以只转化某些文字,只需要把文字填写到文本框中,并指定这些文字原来的字符集,点提交按钮,就会在页面上面显示编码后的文字了。另外我还编写了 WordPress 的插件,现在我的 Blog 已经可以在任意字符集下都能正确显示了。

转化程序地址:http://test.coolcode.cn/nochaoscode/

在Linux环境下架设DNS服务器

2005-07-17

DNS的配置

我的需求是架设本地DNS服务器,使用chroot模式架设,增强DNS的安全性。

我的环境是 Redhat Enterprise Linux AS3 update 5。

首先需要如下几个rpm包
bind-9.2.4-7_EL3.i386.rpm
caching-nameserver-7.3-3_EL3.noarch.rpm
bind-chroot-9.2.4-7_EL3.i386.rpm

检查系统是否已经安装:
# rpm -qa | grep bind
# rpm -qa | grep caching-nameserver
如果都有了,那么直接安装bind-chroot就可以了。

在安装系统的时候,如果选上dns服务,那么默认就会安装bind和caching-nameserver这两个了,如果没有,请先安装这两个。
caching-nameserver是一系列的zone文件和named.conf,是已经配置好的。如果不安装这个,在做nameserver的时候还需要自己搞定这些东西,确实很烦的。
安装完这两个东西,其实一个 cache-only 的DNS服务器已经OK了。redhat确实比较省事的。

如果系统的named已经处于运行状态,都不需要去管他的,在安装的过程中系统会自动停掉原来的服务,进行适当的配置修改(主要是讲原来的一些zone文件和conf文件放到chroot目录下面),然后再启动named的。

本着 KISS(Keep it simple and stupid) 原则和“不造轮子”的原则,还有我偷懒的原则,我的 name server 就这样被搞定了。

用softraid做raid1的时候的启动问题

2005-07-12

呵呵,自己随便写写,有点乱,但愿大家能够看明白。

我用的是redhat as 3.5的系统,用两个scsi做系统。

安装的时候使用了softraid,对整个系统做了镜像。希望的效果是任何一个硬盘出问题,系统都可以正常启动工作。虽然现在的softraid做的系统可以对 /boot 分区也做镜像并且可以启动,但实际上启动的时候,redhat仍然是从第一个scsi盘引导的。如果是第二个硬盘宕掉,那么系统是可以启动的,但是如果是第一个硬盘挂掉,系统就没有办法引导了,虽然第二个硬盘里面的数据都还在。

于是我就找了很多相关资料,终于找到一个通过修改grub实现的方法了。

系统做了raid之后,虽然整个系统都是mirror了的,但是实际上grub的引导仍然是从第一硬盘,也就是sda开始的。因为软raid设备 /dev/md0 是在系统起来之后才出现的。为了让系统可以从raid1的两个盘中的任意一个引导,就要修改grub的设置,让他可以随便找一个OK的盘,从它里面的引导分区,也就是 /boot 分区中找到引导信息。

首先编辑 grub.conf

# vi /boot/grub/grub.conf
default=0
timeout=10
#splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Red Hat Enterprise Linux AS (2.4.21-32.EL)
# root (hd0,0)
kernel /boot/vmlinuz-2.4.21-32.EL ro root=/dev/md0 hdc=ide-scsi
initrd /boot/initrd-2.4.21-32.EL.img

这个文件里面的 hd0 就是我的第一个scsi硬盘。可以查看/boot/grub/device.map 知道详细。
# cat /boot/grub/device.map
# this device map was generated by anaconda
(fd0) /dev/fd0
(hd0) /dev/sda