从输入网址到网页显示过程

October 9th, 2011  |  Published in 未分类

在监测网站前,我们应先了解网络(Web)基本的运作方式。也就是从我们在浏览器中输入网址到浏览器显示页面,这个过程中到底发生了什么事?
一般可分为如下7个步骤:
1、浏览器中输入网址。
2、发送至DNS服务器并获得域名对应的WEB服务器的ip地址。
3、与WEB服务器建立TCP连接。
4、浏览器向WEB服务器的ip地址发送相应的http请求。
5、WEB服务器响应请求并返回指定URL的数据,或错误信息,如果设定重定向,则重定向到新的URL地址。
6、浏览器下载数据后解析HTML源文件,解析的过程中实现对页面的排版,解析完成后在浏览器中显示基础页面。
7、分析页面中的超链接并显示在当前页面,重复以上过程直至无超链接需要发送,完成全部显示。

其中各阶段的用时的概念需要明确:
浏览等待用时:ie只会产生两条并行的网络连接,如果超出则将排队等待直至可以建立连接,该时间记录的就是这个等待用时。
DNS查询用时:通过ie发起的,网站域名和ip地址转换的耗时。
TCP建立连接用时(包括SSL握手用时):客户端机器与要访问的Web服务器建立链路连接的总耗时,包括SSL握手的耗时。
客户端发送请求用时:浏览器向web服务器发出请求的耗时。
服务器响应用时:服务器收到客户请求到做出响应的时间。
重定向用时:服务器端从一个页面自动跳转到另一个页面的耗时。如访问www.google.com会自动跳转到www.google.cn。原始文档下载用时:下载网站的基础文档用时,如,访问www.sohu.com时,特指下载index.htm这一文件,不包括其他图片等元素文件。
原始文档下载完成到全部下载完成用时:下载原始文档中所关联的全部资源文件的用时。

PHP程序员最常犯的11个MySQL错误

June 29th, 2011  |  Published in PHP

对于大多数web应用来说,数据库都是一个十分基础性的部分。如果你在使用PHP,那么你很可能也在使用MySQL—LAMP系列中举足轻重的一份子。

 

对于很多新手们来说,使用PHP可以在短短几个小时之内轻松地写出具有特定功能的代码。但是,构建一个稳定可靠的数据库却需要花上一些时日和相关技能。下面列举了我曾经犯过的最严重的11个MySQL相关的错误(有些同样也反映在其他语言/数据库的使用上)。。。

 

1、使用MyISAM而不是InnoDB

 

MySQL有很多数据库引擎,但是你最可能碰到的就是MyISAM和InnoDB。

 

MySQL 默认使用的是MyISAM。但是,很多情况下这都是一个很糟糕的选择,除非你在创建一个非常简单抑或实验性的数据库。外键约束或者事务处理对于数据完整性 是非常重要的,但MyISAM都不支持这些。另外,当有一条记录在插入或者更新时,整个数据表都被锁定了,当使用量增加的时候这会产生非常差的运行效率。

 

结论很简单:使用InnoDB。

 

2、使用PHP的mysql函数

 

PHP自产生之日就提供了MySQL库函数(or near as makes no difference)。很多应用仍然在使用类似mysql_connect、mysql_query、mysql_fetch_assoc等的函数,尽管PHP手册上说:

 

如果你在使用MySQL v4.1.3或者更新版本,强烈推荐使用您使用mysqli扩展。

 

mysqli(MySQL的加强版扩展)有以下几个优点:

 

可选的面向对象接口

prepared表达式,这有利于阻止SQL注入攻击,还能提高性能

支持更多的表达式和事务处理

另外,如果你想支持多种数据库系统,你还可以考虑PDO。

 

3、没有处理用户输入

 

这或者可以这样说#1:永远不要相信用户的输入。用服务器端的PHP验证每个字符串,不要寄希望与JavaScript。最简单的SQL注入攻击会利用如下的代码:

 

$username = $_POST["name"]; $password = $_POST["password"]; $sql = “SELECT userid FROM usertable WHERE username=’$username’ AND password=’$password’;”; // run query…

 

只要在username字段输入“admin’;–”,这样就会被黑到,相应的SQL语句如下:

 

SELECT userid FROM usertable WHERE username=’admin’;

 

狡猾的黑客可以以admin登录,他们不需要知道密码,因为密码段被注释掉了。

 

4、没有使用UTF-8

 

美国、英国和澳大利亚的我们很少考虑除英语之外的其他语言。我们很得意地完成了自己的“杰作”却发现它们并不能在其他地方正常运行。

 

UTF-8解决了很多国际化问题。虽然在PHP v6.0之前它还不能很好地被支持,但这并不影响你把MySQL字符集设为UTF-8。

 

5、相对于SQL,偏爱PHP

 

如果你接触MySQL不久,那么你会偏向于使用你已经掌握的语言来解决问题,这样会导致写出一些冗余、低效率的代码。比如,你不会使用MySQL自带的AVG()函数,却会先对记录集中的值求和然后用PHP循环来计算平均值。

 

此外,请注意PHP循环中的SQL查询。通常来说,执行一个查询比在结果中迭代更有效率。

 

所以,在分析数据的时候请利用数据库系统的优势,懂一些SQL的知识将大有裨益。

 

6、没有优化数据库查询

 

99%的PHP性能问题都是由数据库引起的,仅仅一个糟糕的SQL查询就能让你的web应用彻底瘫痪。MySQL的EXPLAIN statement、Query Profiler,还有很多其他的工具将会帮助你找出这些万恶的SELECT。

 

7、不能正确使用数据类型

 

MySQL提供了诸如numeric、string和date等的数据类型。如果你想存储一个时间,那么使用DATE或者DATETIME类型。如果这个时候用INTEGER或者STRING类型的话,那么将会使得SQL查询非常复杂,前提是你能使用INTEGER或者STRING来定义那个类型。

 

很多人倾向于擅自自定义一些数据的格式,比如,使用string来存储序列化的PHP对象。这样的话数据库管理起来可能会变得简单些,但会使得MySQL成为一个糟糕的数据存储而且之后很可能会引起故障。

 

8、在查询中使用*

 

永远不要使用*来返回一个数据表所有列的数据。这是懒惰:你应该提取你需要的数据。就算你需要所有字段,你的数据表也不可避免的会产生变化。

 

9、不使用索引或者过度使用索引

 

一般性原则是这样的:select语句中的任何一个where子句表示的字段都应该使用索引。

 

举 个例子,假设我们有一个user表,包括numeric ID(主键)和email address。登录的时候,MySQL必须以一个email为依据查找正确的ID。如果使用了索引的话(这里指email),那么MySQL就能够使用 更快的搜索算法来定位email,甚至可以说是即时实现。否则,MySQL就只能顺序地检查每一条记录直到找到正确的email address。

 

有的人会在每个字段上都添加索引,遗憾的是,执行了INSERT或者UPDATE之后这些索引都需要重新生成,这样就会影响性能。所以,只在需要的时候添加索引。

 

10、忘记备份!

 

虽然比较罕见,但是数据库还是有崩溃的危险。硬盘有可能损坏,服务器有可能崩溃,web主机提供商有可能会破产!丢失MySQL数据将会是灾难性的,所以请确保你已经使用了自动备份或者已经复制到位。

 

11、Bonus mistake-不考虑使用其他数据库

 

对于PHP开发人员来说,MySQL可能是使用最广泛的数据库系统,但并不是唯一的选择。PostgreSQL和Firebird是最强有力的竞争者:这个两者都是开源的,而且都没有被公司收购。微软提供了sql server Express,甲骨文提供了10g Express,这两者都是企业级数据库的免费版本。有时候,对于一个较小的web应用或者嵌入式应用,SQLite也不失为一个可行的替代方案。

 

转自:http://boobooke.com/bbs/thread-102535-1-1.html

电子商务网站的10个技巧

May 1st, 2011  |  Published in 闲谈

1. 清晰和“整洁”的界面;2. 明智选择供货商;3. 速度意味着一切;4. 行动号召;5. 色彩影响情绪;6. 广告促进销售;7. 当前位置导航栏;8. 易于注册;9. 慎重定价;10. 测试”

Web应用安全审计工具 WATOBO

February 27th, 2011  |  Published in 安全审计

WATOBO是一个Web应用程序工具箱,它是一个旨在帮助专业安全人员执行高效率的(半自动)Web应用程序安全审计的工具。它类似于一个本地代理,在运行中分析网络通信寻找有用的信息和漏洞。它还具备自动扫描功能。能扫描SQL注入,跨站脚本和更多安全问题。

下载地址:http://sourceforge.net/projects/watobo/files/

Tags:

电子商务的本质

February 14th, 2011  |  Published in 未分类

引用自http://www.javaeye.com/topic/890922

电子商务的本质:销售渠道
在电子商务领域,一般分为B2B、B2C和C2C,而在传统销售领域,一般分为批发和零售。B2B一般是做批发,而B2C和C2C是做零售,前者如阿里巴巴,后两者如淘宝商城和淘宝网。
销售渠道,也就是一个将商品分流到客户的管道。在这个管道中,有两个核心属性:1、能够让客户容易找到你,2、找到你后,能够快速将商品送到客户手中。其实,本质上就是一个属性:便利。
不过,很多电子商务网站,特别是大宗商品,如家具、旅游网站,更多是一个营销渠道,因为它们主要通过网站来宣传产品,然后通过电话(呼叫中心)来受理订单,来门市签约、付款。
渠道的本质:便利+低价
比如在成都,我家附近,有家乐福、红旗连锁、WoWo超市,还有小区门口的小卖部,在有我购买的商品前提下,我只有一个选择标准:便利,其次才是低价。至于购物体验和服务态度,几乎可以忽视。
其实,对于大多数去超市的人,选择的标准一般有五个方面:商品品类、便利、价格、购物体验(环境)、服务。对于有经济能力的,会更偏重于购物体验而不是低价;对于便利,可能更看重是否方便停车。
对于虚拟的商城,各属性如下:
便利:用户快速找到你,也就是各电子商务最烧钱的知名度打造
购物体验:网站打开快、找货方便、界面漂亮、预订迅速
服务:送货速度快、售后有保证。网上商城,和实体店的一个最大的服务差别:实体店可以直接取货,而网上商城一般必须等待1-3天。
对于电子商务网站,如果用户找到你和另外一家,也就是说商品品类和便利都没有差别的情况下,如当当和京东,差别就只有价格和服务,而购物体验是一个次要需求,并且它们的服务都已经做得很优秀了。剩下的,就只有比价。
比价有两种,非会员价和会员价(积分)。如果非会员价都一样,那么就在拼谁是会员了。
也就是说,同质化电子商务网站(用户群相同),最后竞争的就是价格。如果再深入一点,价格的竞争就是网站知名度的竞争+物流的竞争。因为更多的用户,会拿到更低的供应商价格;更高效的物流,会更节省企业成本、提供更快捷的送货服务。
用户对一个品牌会有忠诚度,但对一个渠道商,大概只有满意度的差别。没有人会对百脑汇有忠诚度,除非全城只有它在卖电脑。
你可能很留意坐在你对面的那位用的是iPhone4还是天宇手机,但你根本不会关心他的手机是在哪儿买的;其实对于玩手机的那位,他也是这么想的。
电子商务的基础:信任度+诚信
电子商务,可以分解为电子+商务,也就是虚拟+交易。在现实的交易中,我们关注的第一个购买要素是:商品的质量和真假,所以我们经常会选择一些知名的渠道零售商,如买衣服到太平洋、王府井或百盛。
在虚拟的世界里,我们会优先选择一些知名的品牌店,如京东、当当,或者是淘宝上的皇冠本地商户。这意味着,对于电子商务,我们第一关注的是信任度,这是所有交易的前提和基础。
电子商务网站的信任度,最核心是品牌建设。品牌是一种社会形象,决定了社会认可度。对于尚未形成品牌的产品、网站或企业,尤其应该打造网站的信任度。信任度建设的具体方面,请参考我的这篇文章:《电子商务网站之信任度》。不过,打造电子商务网站的信任度,往往被人忽视。为什么山寨一个京东,同样1000人访问,它的转化率高,而你的不高,原因就在此。
刚才谈到虚拟,现在谈谈交易。信任度发生在交易前,也就是说,用户不相信你,压根儿就不会下单。如果说信任是虚拟交易的前提,那么诚信是实际交易的基础。不信任,客户会走,但不诚信,客户就会投诉。
如何打造诚信?最核心的,就是打消用户购买后的忧虑,如验货、退货保证,这就是所有知名电子商务网站底部的通用帮助栏。比如在淘宝网,有诚信体系,如商家级别、产品下的满意度评分、惩罚制度、支付宝担保交易。可以说,没有诚信体系,就没有淘宝网。
电子商务的品牌打造
因为电子商务本质是销售渠道,而销售渠道的本质是便利,那么,在打造知名度和品牌等营销方面,我们的重点应该放在便利上,在打造便利的同时,隐形打造信任度,而不是去打造产品的特性。也可以这么说,电子商务网站的品牌打造,不会五花八门,不需要太多的创意。
比如,对于一个销售九寨沟旅游线路的网站,我们应该关注网站的信任度、价格的优势、产品介绍的详细、预订和旅游过程中的服务体贴入微。至于网站的风格,并不需要九寨沟墨绿色,甚至用橙色都可以,只要是赏心悦目,因为我们不是九寨沟官方网站。
再比如,一个销售iPhone4的网站,你可以突出更低价,货到付款、上门收款等解除用户忧虑的因素,而不用将苹果官网的介绍全部搬过来,因为这些都不是用户访问你网站的核心需求。
产品的品牌,一般都不是通过销售渠道打造出来的。比如魅族手机,除了官方通过媒体大力宣传,更多是产品本身的质量、用户口碑来宣传的,渠道只是将产品便利地流通到顾客手中。当然,渠道可以打造产品知名度:比如有段时间,很多柜台都在卖三星i908E。
对于产品营销,我们提倡的是差异化,寻找特定用户群的诉求点,比如iPhone的简约时尚,对应那些年轻一族;而黑莓手机的安全、沉稳,对应那些商务人士。而对于一个买3C产品的网上商城(柜台),它们是没有差别的。
当然,在营销渠道上,也需要人群定位。比如冬天到了卖羊绒被,你可以强调它的轻盈保暖,而快到春节了,你可以强调它的送礼特性:要回家了,孝顺的你,也让父母拥有一个温暖的冬夜吧?不过,这样的广告,可能还是产品厂商设计出来,然后渠道商去宣传。
对于渠道的品牌打造,更多是知名度的打造,因为它是一个功能性需求:便利,而没有带入更多的个性和社会性,如LG手机(性感女人)、宝马7(高贵,暴发户?)。
电子商务网站的建设
对于电子商务网站,开发就是装修,产品录入就是商品上架,推广就是选址。
为什么说推广就是选址?因为选址本质上就是确定用户入口,我们在google上买关键字,本质上就是提供一个用户购买入口。一个店铺的租金,决定于店铺的位置,而推广的成本也决定于推广的位置,如新浪首页、google热门关键字,都是非常昂贵的。
任何电子商务网站,都可以分解成四个方面:产品、价格、促销及渠道,也就是营销上的4P:
产品(Product):品类多、介绍详细
价格(Price):足够有同行竞争力
促销(Promotion):价格要有吸引力,它体现了网站的活力
渠道(Place):渠道的渠道,也就是带给你(渠道)用户的那个网站(渠道),如google、新浪侧栏广告。
我们可以围绕这四个方面来建设和运营电子商务网站,以后我会专门探讨这个问题。
因为电子商务的渠道本质,未来,比如10年后,那些上初中的学生都进入社会,因为线上交易的普及,可能就没有电子商务的概念。线上交易和线下交易一样,只是用户购买商品的两种方式,仅此而已。大家没有说自家是用电饭煲煮饭吧?不过在农村很多地方,还是用柴火煮饭的,用电饭煲是一件可以炫耀的事情。大家也没有再听说过PDA吧?因为所有智能手机都有PDA功能。

 

Nagios插件check_openmanage3.6.2

November 26th, 2010  |  Published in Linux

更新日志: 现在SNMP支持IPv6 和 TCP;提高了健壮性;内存模块一些小的Bug修复和性能提高。内存模块的enumeration (IDs)的一些变化。

check_openmanage 是一个 Nagios 的插件,用来检测安装有 OpenManage Server Administrator (OMSA) 的戴尔服务器的运行状态,包括存储系统、电源、温度等信息.
参考文档:

http://folk.uio.no/trondham/software/check_openmanage.html#download

Tags: ,

Zenoss Architecture

July 23rd, 2010  |  Published in 未分类

让数据更靠近CPU

June 13th, 2010  |  Published in 未分类

缓存黄金原则:让数据更靠近CPU。
CPU–>CPU 一级缓存–>二级缓存–>内存–>硬盘–>LAN–>WAN

免费开源dns

May 30th, 2010  |  Published in 未分类

OpenDNS:208.67.222.222,208.67.220.220

GoogleDNS:8.8.8.8,8.8.4.4

NortonDNS:198.153.192.1,198.153.194.1

Tags:

(转)浅谈:国内软件公司为何无法做大做强?

May 5th, 2010  |  Published in 闲谈

纵览,国内比较大的软件公司(以下统一简称”国软”),清一色都是做政府项目的(他们能做大的原因我就不用说了吧),真正能做大的 国软又有几家呢?更何况 开源企业,这是为什么呢?
今天风吹就给大家简单分析下:

1.”作坊”式管理

“作坊”往往是效率最高的, 国软几乎都是从作坊走过来的,但把作坊式的管理模式套用到一个不断壮大的公司中显然是不行的.组织架构到达一定程度后就必然要进行分工的细化,依靠作坊式 的”暴力开发”是行不通的.

2.”法制社会”

上班必须打卡,迟到要扣钱,还一次比一次多,加班没有加班费,反正算下来就是,只有扣钱的项目,没有加钱的项目.比起外企,人家上班不打卡,迟到不扣钱, 加班有加班费,这样宽松点的环境不好吗?

3. 自身自灭

国软一般没有师徒制,有的话也只是形式上的,公司基本没人管你,你也不用去管别人,新进的员工,不管会不会,先丢个东西给你做,自己研究,不懂的 google去.这也是为什么国软喜欢招有经验的人,因为没经验的人熬不住,跑了几个以后,国软就不招了.

4. 销售-开发-维护脱节

这点是非常严重的,会直接导致项目流产的.国软的典型的做法是,销售为了业绩,在没有调研的情况下就签了合同 (这里主要是指项目型的,产品型的一般可以控制),而且合同的范围也非常模糊,可大可小,接下来就是调研人员上场,调研后发现,10w块钱的合同,调研出 来了100w的需求,接下来就是和客户扯皮,最后直接导致项目流产,甚至打上官司.项目或产品上线后,维护人员对系统不了解(一方面是没有文档,另外一方 面维护人员一般没有参与到开发中),接下来往往就会发生两种情况:

a.维护人员在不了解系统的情况下擅自修改,结果导致系统越改问题 越多.

b.维护人员一不做二不休,所有客户反馈的问题全部打回给开发人员,于是开发人员就生不如死,在做别的项目的同时还要维护以前的项目,结果就是导致几个项 目都失败.

5.缺乏规划

今天要用这个,明天想用那个(笔者就经历了公司在半年的时间内对框架进行了两次大的变动,导致开发人员都必须重新学习框架)产品也接,项目也接,大的也 接,小的也接.今天领导说往左走,明天说往右走,也不能怪领导,他也没经验,我们就是他的DEMO.公司没有一个明确的目标,要做成什么样,只是一味的提 出做大做强,但是没有规划出如何做大做强.(和我的标题一样哦)

6.三无-无需求,无设计,无测试.

a.没有文档是国软的通病,曾几何时,产品经理丢过来的那一句话:” 喂,**,给我做一个**模块来”,然后开发人员就开始埋头苦写了.

b.当然如果你天资聪慧,可以轻易理解出产品经理的意思,那有没有设计都无所谓了,但是,当有一天别人要维护你的程序的时候问题就出现了,没有文档,代码 又那么天马行空,怎么维护?改了这个地方,又影响了那个地方…

c.其实程序员都懂得测试的意义,可以工时安排的那么紧,哪来的时间测试?测试又没有算工时.所以几乎所有的程序员的做法就是,直接丢给用户测试

这时候有人肯定要问:那项目经理呢?他不是可以测试吗?请记住这是国软,刚才写代码的那个人就是项目经理,还是售前,还是设计人员,还是维护,还是… 归结还是成本问题,在外资软件公司中,做文档的工时是比做开发的工时更多的,国软为了节省成本,这块当然要 CUT掉了.不必去追去文档有多么详细多么美观,需要做的就是找到一个平衡点,一份适合自己的文档.

7.员工都是”十项全能”

在国软里面的员工各个都是十项全能(笔者就是一个鲜明的例子,从系统调研分析设计,到进度管理,开发,测试,验收,实施,维护,甚至拉给客户拉网线都需要 我去.)直接导致的结果就是这些员工每过多久就直接出来自己开公司了…嘿嘿又一家作坊诞生了…这样做对员工个人其实是有好处的,但是对于企业本上 来说是没有好处的,并不是说员工成立了作坊,成为了你的竞争对手,而是让员工各个都是十项全能的结果就是

a.员工都是”十项全不 能”.

b.员工一旦离职,他手头的项目必定流产.

c.对公司的发展是不利的(细化分工).

8.莫不关心

老板并不知道员工在做什么,员工也不知道老板在做什么.上级很少去关心下级的工作,更别说去关心下级的生活,一个东西丢给你,一个月后交差,中间不管你任 何事情,交不了差就唯你是问.下级也不知道能为上级分担什么,只有等着上级分配任务.甚至还有些老板都不不知道员工的名字,在这样的国软的,每个人都是孤 立的,又怎么能做大做强呢?

9.企业文化

所谓十年树木,百年树人.国软的企业文化表面功夫算是做的很好的了,什么”为客户创造价值”,”做最好的行业解决方案”,”软件公司的最大资源就是人才” 等等,要多华丽有多华丽,重复体现了”口号文化”.真正做到企业文化又有多少呢?有多少仅仅是为了做给客户看的呢?

10.盲目跟风

很多国软看到人家外企软件公司最近在搞什么推进活动,就跟风,效仿外企做,可是无法领悟精髓,纯粹只是在模仿.(外企集体笑:”一直被模仿,从未被超 越”)做完了也不知道这么做的意义,劳民伤财.

11.缺乏”执行力”

国软的通病,就是”执行力”,国软的学习劲头很足,今天提出要完善测试标准,明天提出要每周写工作报告,可是又有哪些东西能真正的去执行呢?

导致这个问题的主要原因有两个:

a.提出来的东西到底有没必要做,还是只是应付领导走个过场.

b.谁来跟踪这些东西?员工写了工作报告,领导没有去查看,去反馈,员 工觉得写的也没意义,自然不会继续执行下去.

12.管理混乱

没有划分清楚员工的归属组织,员工并不明确他的上级领导是谁,导致有的员工处于游离状态,有的是员工又是多个领导,不懂要听谁的,有些人忙的要死,有些人 又闲的要命,最后搞的最痛苦的就是员工,导致员工离职.

13.缺乏团队精神

为什么会缺乏团队精神呢?并不是国软没有这方面的概念,国软也很希望培养员工的团队观念 和精神,

无奈因为国软,一般都是一个人负责一个或者多个项目,连团队都没有,何来的团队精神?

14.无法做到补 足

一个项目一旦中途有人辞职,这个项目就会流产.一个员工一旦辞职,会有N个项目没人维护.A组的员工无法胜任B组的工作,归根结底就是组织上根本没有考虑 过组织变动对项目的影响,没有提前培养人员.

15.一成不变和随心所欲

有两类人一种是把前辈的东西COPY过来,不作任何修改,因为他深信,前辈的一定是对的,还有一类是不管前人怎么做的,一律不要,全凭自己的”经验”,随 心所欲,天马行空的进行自主研发,造成的结果就是错的还是错的,乱的更乱了.

16.人才育成

成本,还是成本,培养一个人要多少成 本?这就是国软做不大的原因,永远只能停留在”作坊”的原因.

17.向心力.

老板做的是事业,员工做的是事情, 这是国软员工的一致观点.

18.恶性循环

a.人员力量不足 -> 接不了项目 -> 收入少 -> 人员流失.

b.人员力量不足 -> 强行接项目 -> 亏本 -> 破产.

最后 我想说一句的是:成也国软,败也国软.

说的不对的地方请大家指出,或者补充下没说到的地方.

来源:风吹的博客