IT Category

DNSPod新版本上线啦

In: IT

新版本从底层到界面完全重写,优化了用户体验,颠覆了传统的dns管理平台,很多功能还在开发中,欢迎大家测试
目前新增加的功能有
1.大量采用了ajax,大量减少用户提交数据时刷新页面的等待时间
2.采用tag方式来展示用户的域名,根据域名的记录条数对域名进行加粗、改变颜色等醒目标记
3.输入一个域名自动判断是新域名需要添加还是旧域名直接进入管理
4.域名输入框采用ajax下拉菜单,用户只需要输入域名某几个字母即可自动填充整个域名。如输入pod自动显示dnspod.com/dnspod.net等带有pod的域名让用户选择
5.支持中文域名
6.支持NS记录
7.支持TXT记录
8.支持域名转出到别的帐号
9.支持域名记录的导出导入,方便批量添加和备份记录(开发中)
10.支持批量修改。如1.1.1.1这台服务器挂了,通过批量修改可以把域名下所有1.1.1.1的记录修改为2.2.2.2
11.支持单条记录的禁用
12.支持域名的自诊断(开发中)
13.还有很多很多新功能等你去发现

有关如何在64bit Mac OS X Leopard下面重新编译PHP并添加自己需要模块的文章请参考Leopard 编译 universal php5
重新编译后会出现一个问题:iconv无法编译进去。按照上文的方法,有些机器可以编译,但我的就死活不行。于是只能把iconv单独编译为so,再到php.ini里面添加。

$ cd php-5.2.5/ext/iconv/
$ phpize
$ ./configure
$ make && make install

然后编辑php.ini,先修改extension_dir为PHP扩展的路径,比如

; Directory in which the loadable extensions (modules) reside.
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"

再把iconv.so添加进去,如

extension=iconv.so

保存后再看一下php -m,iconv已经加载进去了

Sam@Bogon:~$ php -m
[PHP Modules]
apc
ctype
curl
date
dom
filter
gd
hash
http
iconv
json
libxml
mbstring
mysql
pcre
PDO
pdo_mysql
pdo_sqlite
posix
Reflection
session
SimpleXML
SPL
SQLite
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
 
[Zend Modules]
 
Sam@Bogon:~$

40 Tips for optimizing your php Code

In: IT

原文地址:http://reinholdweber.com/?p=3
英文版权归Reinhold Weber所有,中译文作者yangyang(aka davidkoree)。双语版可用于非商业传播,但须注明英文版作者、版权信息,以及中译文作者。翻译水平有限,请广大PHPer指正。
1. If a method can be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。
2. echo is faster than print. echo 比 print 快。
3. Use echo’s multiple parameters instead of string concatenation. 使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。
4. Set the maxvalue for [...]

整理文章整理出来的,很早时候caoz写的,翻出来备份
这里是一篇技术测试的文章,希望所有那些自称的和被人吹捧的技术高手来看一看,做做我们的几个测试,看看你属于那种层次的高手?
以下测试是针对oltp开发而言的,对于做算法和桌面程序的,不是我这里要讨论的对象。
好了,第一个考题:你能否做一个统计系统,功能上和易数差不多,能够通过页面嵌入方式记录一个网站的显示次数,来访分析,时段分析,日期分析等等。怎么,这就被难住了,那你算哪门子高手?啊哈,这位说了,这些都easy,手到擒来,很好,很好,看来在实现功能上,你具有了高手的基本能力,不过且慢,如果你认为可以实现这些功能就能自称做个易数统计出来,未免也太小瞧了技术这碗饭的分量,实现这些功能,就中国而言,至少有6位数的程序员可以作到,而设计这么一套系统(仅从功能考虑),也至少有5位数的程序员可以作到,明白吗?你不过是这里面平平常常的一个而已了,要高兴还早呢。
第二个考题:呵呵,其实还是做这些功能,不过加个条件,我只给你一台PC Server(单/双PIII 733+512M Ecc内存+18G SCSI硬盘),你要支撑300万/天的请求调用。琢磨琢磨吧。
简简单单的一个cgi+数据库,那是肯定死翘翘了,怎么办?
第一,你要建立三层体系模型,后台数据库必须通过中间应用层和前台CGI分开。
第二,合理分配使用共享内存空间,并合理通过IPC信号量防止内存区的读写冲突和死锁。
第三,必要时改写web server原代码以获得效率最优化,比如改写apache server的http_log.c程序并重新编译。
如果你对建立这么一套系统的整体架构非常清楚,那么恭喜,你可以在一个比较不错的网络公司做一个CTO了,中国能够清晰搭建这样系统的人,不过4位数而已(当然,能够在这样系统里进行编码工作的,肯定还是有5位数以上的,毕竟左右都是c语言而已)。
知道为什么层出不穷那么多统计系统,虽然功能花哨,但是最后都撑不过易数,基本功不扎实,光靠功能花哨,那是没前途的。
在这个领域做的比较好的,好耶,网易,adsunion,腾讯,太极链等几家而已。
那些所谓广告交换没什么技术瓶颈的人,自己做一套大并访系统出来再说话。
第三个考题,还是这些功能,(我够贫的是吧)我要你一天能记录下3000万次浏览日志,不但要统计,还要完整记录,以供随时查验,当然主机环境提升一下,处理数据的主机用集群,但是核心数据库还是用一台电脑的,这次用sun的小型机,比如RS6000什么的;还有这次再加个条件,数据损失不能超过 0.01%。
这个已经不再象建立一个网站了,到象是大型电信的计费中心。你能胜任吗?
这时候要求对整体操作系统,对C语言,对数据库核心都必须有深入骨髓的理解,甚至于,对于数据的导入导出和一些日志的数据库记录,你已经不能再用sql去写了!要利用数据库产品的核心接口按照其数据存储格式直接进行文件或设备块的读写操作!对于一些负载非常大而性能要求又非常高的系统,甚至你需要建立一套独立的数据库体系和数据结构体系。这不是玩笑,因为我领教过这样的系统。
在中国,能搭建这样平台的高手,最多3位数而已。主要集中在电信计费领域,如亚信这样的企业。
第四个考题,这次每天的请求不是3000万了,而是3万万,我没说胡话,3万万!不过你的工作变了,我不要你再做后面的数据处理,我只让你做一个前端报文转发处理,这次我很苛刻,给你一台PII的PC服务器,256M Ecc内存,而数据损失要求则绝对不能超过0.0001%,你的工作很简单,对来往的请求进行简单识别并转发到合适的应用服务器处理。
你用web server转发?别开玩笑了!这时候,你已经别无选择,用汇编自己写一套报文处理程序,作为看守进程驻入内存并挂在接收报文的端口上,你对效率的理解,应当已经超出了对操作系统的认识,对编程语言的认识,而直接达到对CPU指令集的认识程度上,是的,你必须清楚自己的每一条汇编指令是不是已经达到最小的 CPU指令占用。必须能计算出分解和处理一条报文的流程需要多少CPU指令循环,是不是已经针对CPU的指令集达到了最大优化,当然,你还必须很熟悉 TCP/IP协议对每一种报文的格式定义和规范,不过这和汇编指令的效率优化而言,到不显得有多高深了。
我们经常说CISCO是硬件产品服务商,错了!他们的利润主要就来自于这样的算法!!中国联想、华为等等都想强占这块肥肉的市场,但是在高端领域(其实并不是硬件高端,而是算法高端!),我们还是彻底的空白。
庆幸的是,我知道国内有人在做这样的事情了,当宽带不可避免的成为主流的时候,这种算法的强度和要求,会成为攫取利润的最好途径。
中国在这方面能达到标准的,又有几个人呢?
出了这四个考题,没别的意思,我刚大学毕业的时候,也是自视甚高,因为当时的感觉是,和专业课的计算机作业相比(我是力学专业的,动不动要求编程解一个偏微分方程的收敛解,来分析什么旋流场的速度、温度等的分布),做wewebb开发简直毫无算法可言。再加上当时国内做web数据库的也少,动辄以为自己已经是满高手了,结果幸好跑到给电信做计费的企业混了一年,接触了国内最大的电信集中计费中心的解决方案(一直在运营,还不错),才知道敢情OLTP应用里面学问大的很,自己这点皮毛拿出来吹嘘简直是不知天高地厚。现在看看外面一堆和我当初一样的小毛孩子整天做两个烂程序就自诩高手,只好出来说几句。
其实对于OLTP应用而言,功能的实现一般都非常容易,和那些从事力学、数学、物理等行业的数值计算相比简直毫无算法可言,而OLTP的技术难点主要在于性能,也就是你做一个桌面程序或算法程序,都不会面临并访过高的处理问题,但是做一个OLTP应用,无论如何你都必须直视一下子很多访问冲上来的情况,如果这个问题解决不了,无论多好的创意,多好的功能,都不会得到持续和长远的发展。
由于很多创业者和投资者对技术不通或半通,他们往往拿一个性能指标有很大缺陷的东东当个宝贝,因为一般而言,开发出新东东大家都只是忙着测试功能,很少有对性能进行完整测评的,只有持续运营到一定阶段,并访达到一定程度,性能缺陷开始暴露,才临急抱佛脚,这时候造成的损失就很不核算,甚至是压根解决不了,只好放弃某种功能,从而使品牌信誉整体下降。
加强算法基础,加强技术基础,少卖弄一些花里胡哨的东西,是走向技术高手的真正路线,那些今天学会了什么语言,明天又学会了什么语言的主儿,别吹嘘了,从70年代到现在,最值钱的程序员一直是写汇编和写标准C的,不为什么,因为这是真功夫。
—————————————————–
搜出来这个帖子,呵呵,稍微回复一下。
caoz早期也做过asp,中国最早的asp中文教程,是caoz翻译的,那是1998年的事情。但是后来(99年)换了php,不是因为asp不好,而是因为安全性,安全性的问题,根源在microsoft,这个和程序员没关系,但是程序员规避风险的话,还是linux下塌实一些,顺便说一下,caoz 在安全公司混过一年半的程序员。
asp和php相比,在某些应用的效率上,甚至更胜一筹,这个原因也不是语言的问题,而是本身系统的进程模式,Asp是线程模式,线程间的数据通信是非常简单的,写过asp的都知道,可以用application变量做,非常简单。而php在apache下只能是进程模式就麻烦很多,虽然也有共享内存支持,但是调用时候需要做信号量锁定,很麻烦,否则就有内存索引崩溃的危险。就进程间通信而言,asp不是略胜一筹的问题,而是拥有无可比拟的优势。
所以一个统计系统效率还还是不好,语言并不是决定因素,但是阿江有一点说的过了,一台服务器千万次的静态调用就达到极限?
caoz告诉你,在apache 下,caoz所能达到的数字是4000万次,而且是普通的服务器。
阿飞做过极限测试,单服务器最高的一天,统计量达到了3670万次(真实网络流量,不是测试机的模拟流量),单p4的机器,配置很一般的那种。当然这种极限测试不代表真正的应用环境,毕竟单用户和多用户对统计系统负载开销是不同的,但是单服务器在应用环境下每日支撑千万次以上的统计,却并非难事。关键不是看语言,而是看设计。cnzz可以做到,50bang也可以做到。
技术无止境,对比千兆的网络数据包分析工具(如千兆路由器,千兆IDS,千兆黑洞等),那种每秒解析上百万数据包变态应用,的现在的站点统计系统,日千万次处理简直是小儿科的东西。
不过说实话,国内统计系统技术依然有很大的提升空间,阿江的,caoz的,不外如此,处理效率上去只是一方面,分析能力提高也是很考验技术实力的。就这一点,caoz坦承,Google Analytics的数据挖掘能力,无可比拟,完全超越了caoz的技术理解力。当然,这是另一个话题了。
—————————————————
阿江的回帖
看了那个顶上了的贴,接受里面的一些批评,
我自己的观点也在实践中变化,我仔细的看过CNZZ的统计报告并对其统计方式进行了推断。
我的结论是,影响效率差异的主要因素并不在操作系统和WEB服务软件上,
而是在数据结构和程序结构上。
对于一次访问,51LA立即更新统计报告,保存统计报告,
而CNZZ则很傲能是追加访问记录,而在显示统计报告时检索汇总,或者每天还会把前一天的数据汇总后保存。
所以差异出现在这里:向数据库里追加行少数次 VS 更新数据库中指定的行多次
后者的效率明显要低的多。
虽然51LA在统计程序效率上有差距,
但是这种设计思路可以实现统计报告的完整、快速显示、翻页、排序、筛选,
这对很多站长是非常有用的,也是很多人喜欢51LA的原因。
这也正是我迟迟不肯使用承受力更强的新思路重写统计的原因。
另外,MSSQL数据库是一个库一个文件,而MYSQL是一个表一个文件,
这使MSSQL在磁盘操作上稍逊一筹,因为要处理的是大文件。
加上直接更新统计报告的统计方式增加了数据库操作次数,效率大打折扣。

玩《征途》感受,这么多年白玩游戏了

In: IT

马云的新诡计

In: IT

马云对手下高管做调整,心腹全部下课。
外界所谓的分析师说马云正在”杯酒释兵权”。
但是
1.马云不是傻子
2.心腹做事,马云放心
3.已经成型的业务,交由职业经理人去做就好
4.马云又要做新东西了

如何识别真实的搜索引擎蜘蛛

In: IT

<?php
$ua = $_SERVER[’HTTP_USER_AGENT’];
if (stristr($ua, ‘msnbot’) || stristr($ua, ‘googlebot’)) {
//it’s pretending to be MSN’s bot or Google’s bot
$ip = $_SERVER[’REMOTE_ADDR’];
$hostname = gethostbyaddr($ip);
if(!preg_match("/\.googlebot\.com$/", $hostname) && !preg_match("/search\.live\.com$/", $hostname)){
//the hostname does not belong to either live.com or googlebot.com.
//Remember the UA already said it is either MSNBot or Googlebot.
//So it’s a spammer.
echo "Please leave";
} else {
//Now we have a hit [...]

51挂挂

In: IT

  • Comments Off
  • Tags:

统计项目的代码行数

In: IT

wc -l `find trunk|grep .php|grep -v .svn`

  • Comments Off
  • Tags:

获取同一网段下所有机器MAC地址的办法

In: IT

机房有机器中毒,发arp包,通过arpspoof虽然可以解决,也可以找到中毒机器的mac地址,但在机房设备不足的情况下,很难查到mac地址对应的IP。
然后我们可以通过一个循环,使用arping来对整个子网下面的机器发一个包,这样就可以在arp下面查看到相应的mac缓存,进而得到对应的IP地址。

#!/bin/sh
for ((i = 1; i < 254; i++))
do
arping -I eth0 192.168.1.$i -c 1
done
arp -a > mac_table

脚本跑完后,查看当前目录生成的mac_table。