Web入门者必看的HTML代码编写的30条军规(1)

本文总结了30条html代码编写指南,只要在编写HTML代码的过程中牢记它们,灵活运用,你一定会写出一手漂亮的代码,早日迈入专业开发者的行列。

1. 一定要闭合HTML标签

在以往的页面源代码里,经常看到这样的语句:

<li>Some text here.
<li>Some new text here.
<li>You get the idea. 

也许过去我们可以容忍这样的非闭合HTML标签,但在今天的标准来看,这是非常不可取的,是必须百分百避免的。一定要注意闭合你的HTML标签,否则将无法通过验证,并且容易出现一些难以预见的问题。

最好使用这样的形式:

<ul>
  <li>Some text here. </li>
  <li>Some new text here. </li>
  <li>You get the idea. </li>
</ul> 

2. 声明正确的文档类型( DocType )

笔者早先曾加入过许多CSS论坛,在那里,如果有用户遇到问题,我们会建议他首先做两件事:

1. 验证CSS文件,解决所有可见的错误

2. 加上文档类型 Doctype

DOCTYPE 定义在HTML标签出现之前,它告诉浏览器这个页面包含的是HTML,XHTML,还是两者混合出现,这样浏览器才能正确的解析标记。

通常有四种文档类型可供选择:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

关于该使用什么样的文档类型声明,一直有不同的说法。通常认为使用最严格的声明是最佳选择,但研究表明,大部分浏览器会使用普通的方式解析这种声明,所以很多人选择使用HTML4.01标准。选择声明的底线是,它是不是真的适合你,所以你要综合考虑来选择适合你得项目的声明。

3. 不要使用嵌入式CSS样式

当你在埋头写代码时,可能会经常顺手或偷懒的加上一点嵌入式css代码,就象这样:


<p style="color: red;">帕兰映像</p> 

这样看起来即方便又没有问题,但是它会在你得代码中产生问题。

在你开始写代码时,最好是在内容结构完成之后再开始加入样式代码。

这样的编码方式就像打游击,是一种很山寨的做法。——Chris Coyier

更好的做法是,把这个P的样式定义在样式表文件里:

4. 在页面head标签中引入所有的样式表文件

理论上讲,你可以在任何位置引入CSS样式表,但HTML规范建议在网页的head标记中引入,这样可以加快页面的渲染速度。

在雅虎的开发过程中,我们发现,在head标签中引入样式表,会加快网页加载速度,因为这样可以使页面逐步渲染。 —— ySlow团队


<head> 

<title>My Favorites Kinds of Corn</title> 

<link rel="stylesheet" type="text/css" media="screen" href="path/to/file.css" /> 

<link rel="stylesheet" type="text/css" media="screen" href="path/to/anotherFile.css" /> 

</head> 

5. 在页面底部引入javascript文件

要记住一个原则,就是让页面以最快的速度呈现在用户面前。当加载一个脚本时,页面会暂停加载,直到脚本完全载入。所以会浪费用户更多的时间。

如果你的JS文件只是要实现某些功能,(比如点击按钮事件),那就放心的在body底部引入它,这绝对是最佳的方法。

举例:


<p>And now you know my favorite kinds of corn. </p> 

<script type="text/javascript" src="path/to/file.js"></script> 

<script type="text/javascript" src="path/to/anotherFile.js"></script> 

</body> 

</html> 

6. 不要使用嵌入式JavaScript,这都21世纪了!

许多年以前,还存在一种这样的方式,就是直接将JS代码加入到HTML标签中。尤其是在简单的图片相册中非常常见。本质上讲,一个“onclick”事件是附加在 标签上的,其效果等同于一些JS代码。不需要讨论太多,非常不应该使用这样的方式,应该把代码转移到一个外部JS文件中,然后使用“ addEventListener / attachEvent ”加入时间侦听器。或者使用jquery等框架,之需要使用其“clock”方法。

$('a#moreCornInfoLink').click(function() {
    alert('Want to learn more about corn?');
}); 

7. 开发中随时进行标准验证

很多人并不真正理解标准验证的意义和价值,笔者在一篇博客中详细分析了这个问题。一句话,标准验证是为你服务的,不是给你找麻烦的。

如果你刚开始从事网页制作,那强烈建议你下载这个网页开发工具条 ,并在编码过程中随时使用”HTML标准验证”和“CSS标准验证”。如果你认为CSS是一种非常好学的语言,那么它会把你整的死去活来。你的不严谨的代码会让你的页面漏洞百出,问题不断,一个好的方法就是—— 验证,验证,再验证。

8. 下载Firebug

Firebug是当之无愧的网页开发最佳插件,它不但可以调试JavaScript,还可以直观的让你了解页面标记的属性和位置。不用多说, 下载它!

9. 使用Firebug!

据笔者观察,大部分的使用者仅仅使用了Firebug 20%的功能,那真是太浪费了,你不妨花几个小时的时间来系统学习这个工具,相信会让你事半功倍。

Firebug教程:

Overview of Firebug

Debug Javascript With Firebug – video tutorial

10. 使用小写的标记

理论上讲,你可以像这样随性的书写标记:


<DIV> 

<P>Here's an interesting fact about corn. </P> 

</DIV> 

最好不要这样写,费力气输入大些字母没有任何用处,并且会让代码很难看,这样子就很好:


<div> 

<p>Here's an interesting fact about corn. </p> 

</div> 
发表在 业界资讯及评论 | 留下评论

由12306.cn谈谈网站性能技术

12306.cn网站挂了,被全国人民骂了。我这两天也在思考这个事,我想以这个事来粗略地和大家讨论一下网站性能的问题。因为仓促,而且完全基于本人有限的经验和了解,所以,如果有什么问题还请大家一起讨论和指正。(这又是一篇长文,只讨论性能问题,不讨论那些UI,用户体验,或是是否把支付和购票下单环节分开的功能性的东西)

业务

任何技术都离不开业务需求,所以,要说明性能问题,首先还是想先说说业务问题。

其一,有人可能把这个东西和QQ或是网游相比。但我觉得这两者是不一样的,网游和QQ在线或是登录时访问的更多的是用户自己的数据,而订票系统访问的是中心的票量数据,这是不一样的。不要觉得网游或是QQ能行你就以为这是一样的。网游和QQ 的后端负载相对于电子商务的系统还是简单。

其二,有人说春节期间订火车的这个事好像网站的秒杀活动。的确很相似,但是如果你的思考不在表面的话,你会发现这也有些不一样。火车票这个事,还有很多查询操作,查时间,查座位,查铺位,一个车次不 行,又查另一个车次,其伴随着大量的查询操作,下单的时候需要对数据库操作。而秒杀,直接杀就好了。另外,关于秒杀,完全可以做成只接受前N个用户的请求(完全不操作后端的任何数据, 仅仅只是对用户的下单操作log),这种业务,只要把各个服务器的时间精确同步了就可以了,无需在当时操作任何数据库。可以订单数够后,停止秒杀,然后批量写数据库。火车票这个岂止是秒杀那么简单。能不能买到票得当时告诉用户啊。

其三,有人拿这个系统和奥运会的票务系统比较。我觉得还是不一样。虽然奥运会的票务系统当年也一上线就废了。但是奥运会用的是抽奖的方式,也就是说不存在先来先得的抢的方式,而且,是事后抽奖,事前只需要收信息,事前不需要保证数据一致性,没有锁,很容易水平扩展。

其四,订票系统应该和电子商务的订单系统很相似,都是需要对库存进行:1)占住库存,2)支付(可选),3)扣除库存的操作。这个是需要有一致性的检查的,也就是在并发时需要对数据加锁的。B2C的电商基本上都会把这个事干成异步的,也就是说,你下的订单并不是马上处理的,而是延时处理的,只有成功处理了,系统才会给你一封确认邮件说是订单成功。我相信有很多朋友都收到认单不成功的邮件。这就是说,数据一致性在并发下是一个瓶颈。

其五,铁路的票务业务很变态,其采用的是突然放票,而有的票又远远不够大家分,所以,大家才会有抢票这种有中国特色的业务的做法。于是当票放出来的时候,就会有几百万人甚至上千万人杀上去,查询,下单。几十分钟内,一个网站能接受几千万的访问量,这个是很恐怖的事情。据说12306的高峰访问是10亿PV,集中在早8点到10点,每秒PV在高峰时上千万。

多说几句:

库存是B2C的恶梦,库存管理相当的复杂。不信,你可以问问所有传统和电务零售业的企业,看看他们管理库存是多么难的一件事。不然,就不会有那么多人在问凡客的库存问题了。(你还可以看看《乔布斯传》,你就知道为什么Tim会接任Apple的CEO了,因为他搞定了苹果的库存问题)

对于一个网站来说,浏览网页的高负载很容易搞定,查询的负载有一定的难度去处理,不过还是可以通过缓存查询结果来搞定,最难的就是下单的负载。因为要访问库存啊,对于下单,基本上是用异步来搞定的。去年双11节,淘宝的每小时的订单数大约在60万左右,京东一天也才能支持40万(居然比12306还差),亚马逊5年前一小时可支持70万订单量。可见,下订单的操作并没有我们相像的那么性能高。

淘宝要比B2C的网站要简单得多,因为没有仓库,所以,不存在像B2C这样有N个仓库对同一商品库存更新和查询的操作。下单的时候,B2C的 网站要去找一个仓库,又要离用户近,又要有库存,这需要很多计算。试想,你在北京买了一本书,北京的仓库没货了,就要从周边的仓库调,那就要去看看沈阳或 是西安的仓库有没有货,如果没有,又得看看江苏的仓库,等等。淘宝的就没有那么多事了,每个商户有自己的库存,库存分到商户头上了,反而有利于性能。

数据一致性才是真正的性能瓶颈。有 人说nginx可以搞定每秒10万的静态请求,我不怀疑。但这只是静态请求,理论值,只要带宽、I/O够强,服务器计算能力够,并支持的并发连接数顶得住10万TCP链接的建立 的话,那没有问题。但在数据一致性面前,这10万就完完全全成了一个可望不可及的理论值了。

我说那么多,我只是想从业务上告诉大家,我们需要从业务上真正了解春运铁路订票这样业务的变态之处。

前端性能优化技术

要解决性能的问题,有很多种常用的方法,我在下面列举一下,我相信12306这个网站使用下面的这些技术会让其性能有质的飞跃。

一、前端负载均衡

通过DNS的负载均衡器(一般在路由器上根据路由的负载重定向)可以把用户的访问均匀地分散在多个Web服务器上。这样可以减少Web服务器的请求负载。因为http的请求都是短作业,所以,可以通过很简单的负载均衡器来完成这一功能。最好是有CDN网络让用户连接与其最近的服务器(CDN通常伴随着分布式存储)。(关于负载均衡更为详细的说明见“后端的负载均衡”)

二、减少前端链接数

我看了一下12306.cn,打开主页需要建60多个HTTP连接,车票预订页面则有70多个HTTP请求,现在的浏览器都是并发请求的。所以,只要有100万个用户,就会有6000万个链接,太多了。一个登录查询页面就好了。把js打成一个文件,把css也打成一个文件,把图标也打成一个文件,用css分块展示。把链接数减到最低。

三、减少网页大小增加带宽

这个世界不是哪个公司都敢做图片服务的,因为图片太耗带宽了。现在宽带时代很难有人能体会到当拨号时代做个图页都不敢用图片的情形(现在在手机端浏览也是这个情形)。我查看了一下12306首页的需要下载的总文件大小大约在900KB左右,如果你访问过了,浏览器会帮你缓存很多,只需下载10K左右的文件。但是我们可以想像一个极端一点的案例,1百万用户同时访问,且都是第一次访问,每人下载量需要1M,如果需要在120秒内返回,那么就需要,1M * 1M /120 * 8 = 66Gbps的带宽。很惊人吧。所以,我估计在当天,12306的阻塞基本上应该是网络带宽,所以,你可能看到的是没有响应。后面随着浏览器的缓存帮助12306减少很多带宽占用,于是负载一下就到了后端,后端的数据处理瓶颈一下就出来。于是你会看到很多http 500之类的错误。这说明服务器垮了。

四、前端页面静态化

静态化一些不常变的页面和数据,并gzip一下。还有一个并态的方法是把这些静态页面放在/dev/shm下,这个目录就是内存,直接从内存中把文件读出来返回,这样可以减少昂贵的磁盘I/O。

五、优化查询

很多人查询都是在查一样的,完全可以用反向代理合并这些并发的相同的查询。这样的技术主要用查询结果缓存来实现,第一次查询走数据库获得数据,并把数据放到缓存,后面的查询统统直接访问高速缓存。为每个查询做Hash,使用NoSQL的技术可以完成这个优化。(这个技术也可以用做静态页面)

对于火车票量的查询,个人觉得不要显示数字,就显示一个“有”或“无”就好了,这样可以大大简化系统复杂度,并提升性能。

六、缓存的问题

缓存可以用来缓存动态页面,也可以用来缓存查询的数据。缓存通常有那么几个问题:

1)缓存的更新。也叫缓存和数据库的同步。有这么几种方法,一是缓存time out,让缓存失效,重查,二是,由后端通知更新,一量后端发生变化,通知前端更新。前者实现起来比较简单,但实时性不高,后者实现起来比较复杂 ,但实时性高。

2)缓存的换页。内存可能不够,所以,需要把一些不活跃的数据换出内存,这个和操作系统的内存换页和交换内存很相似。FIFO、LRU、LFU都是比较经典的换页算法。相关内容参看Wikipeida的缓存算法

3)缓存的重建和持久化。缓存在内存,系统总要维护,所以,缓存就会丢失,如果缓存没了,就需要重建,如果数据量很大,缓存重建的过程会很慢,这会影响生产环境,所以,缓存的持久化也是需要考虑的。

诸多强大的NoSQL都很好支持了上述三大缓存的问题。

后端性能优化技术

前面讨论了前端性能的优化技术,于是前端可能就不是瓶颈问题了。那么性能问题就会到后端数据上来了。下面说几个后端常见的性能优化技术。

一、数据冗余

关于数据冗余,也就是说,把我们的数据库的数据冗余处理,也就是减少表连接这样的开销比较大的操作,但这样会牺牲数据的一致性。风险比较大。很多人把NoSQL用做数据,快是快了,因为数据冗余了,但这对数据一致性有大的风险。这需要根据不同的业务进行分析和处理。(注意:用关系型数据库很容易移植到NoSQL上,但是反过来从NoSQL到关系型就难了)

二、数据镜像

几乎所有主流的数据库都支持镜像,也就是replication。数据库的镜像带来的好处就是可以做负载均衡。把一台数据库的负载均分到多台上,同时又保证了数据一致性(Oracle的SCN)。最重要的是,这样还可以有高可用性,一台废了,还有另一台在服务。

数据镜像的数据一致性可能是个复杂的问题,所以我们要在单条数据上进行数据分区,也就是说,把一个畅销商品的库存均分到不同的服务器上,如,一个畅销商品有1万的库存,我们可以设置10台服务器,每台服务器上有1000个库存,这就好像B2C的仓库一样。

三、数据分区

数据镜像不能解决的一个问题就是数据表里的记录太多,导致数据库操作太慢。所以,把数据分区。数据分区有很多种做法,一般来说有下面这几种:

1)把数据把某种逻辑来分类。比如火车票的订票系统可以按各铁路局来分,可按各种车型分,可以按始发站分,可以按目的地分……,反正就是把一张表拆成多张有一样的字段但是不同种类的表,这样,这些表就可以存在不同的机器上以达到分担负载的目的。

2)把数据按字段分,也就是竖着分表。比如把一些不经常改的数据放在一个表里,经常改的数据放在另外多个表里。把一张表变成1对1的关系,这样,你可以减少表的字段个数,同样可以提升一定的性能。另外,字段多会造成一条记录的存储会被放到不同的页表里,这对于读写性能都有问题。但这样一来会有很多复杂的控制。

3)平均分表。因为第一种方法是并不一定平均分均,可能某个种类的数据还是很多。所以,也有采用平均分配的方式,通过主键ID的范围来分表。

4)同一数据分区。这个在上面数据镜像提过。也就是把同一商品的库存值分到不同的服务器上,比如有10000个库存,可以分到10台服务器上,一台上有1000个库存。然后负载均衡。

这三种分区都有好有坏。最常用的还是第一种。数据一旦分区,你就需要有一个或是多个调度来让你的前端程序知道去哪里找数据。把火车票的数据分区,并放在各个省市,会对12306这个系统有非常有意义的质的性能的提高。

四、后端系统负载均衡

前面说了数据分区,数据分区可以在一定程度上减轻负载,但是无法减轻热销商品的负载,对于火车票来说,可以认为是大城市的某些主干线上的车票。这就需要使用数据镜像来减轻负载。使用数据镜像,你必然要使用负载均衡,在后端,我们可能很难使用像路由器上的负载均衡器,因为那是均衡流量的,因为流量并不代表服务器的繁忙程度。因此,我们需要一个任务分配系统,其还能监控各个服务器的负载情况。

任务分配服务器有一些难点:

负载情况比较复杂。什么叫忙?是CPU高?还是磁盘I/O高?还是内存使用高?还是并发高?还是内存换页率高?你可能需要全部都要考虑。这些信息要发送给那个任务分配器上,由任务分配器挑选一台负载最轻的服务器来处理。

任务分配服务器上需要对任务队列,不能丢任务啊,所以还需要持久化。并且可以以批量的方式把任务分配给计算服务器。

任务分配服务器死了怎么办?这里需要一些如Live-Standby或是failover等高可用性的技术。我们还需要注意那些持久化了的任务的队列如何转移到别的服务器上的问题。

我看到有很多系统都用静态的方式来分配,有的用hash,有的就简单地轮流分析。这些都不够好,一个是不能完美地负载均衡,另一个静态的方法的致命缺陷是,如果有一台计算服务器死机了,或是我们需要加入新的服务器,对于我们的分配器来说,都需要知道的。

还有一种方法是使用抢占式的方式进行负载均衡,由下游的计算服务器去任务服务器上拿任务。让这些计算服务器自己决定自己是否要任务。这样的好处是可以简化系统的复杂度,而且还可以任意实时地减少或增加计算服务器。但是唯一不好的就是,如果有一些任务只能在某种服务器上处理,这可能会引入一些复杂度。不过总体来说,这种方法可能是比较好的负载均衡。

五、异步、 throttle 和 批量处理

异步、throttle(节流阀) 和批量处理都需要对并发请求数做队列处理的。

异步在业务上一般来说就是收集请求,然后延时处理。在技术上就是可以把各个处理程序做成并行的,也就可以水平扩展了。但是异步的技术问题大概有这些,a)被调用方的结果返回,会涉及进程线程间通信的问题。b)如果程序需要回滚,回滚会有点复杂。c)异步通常都会伴随多线程多进程,并发的控制也相对麻烦一些。d)很多异步系统都用消息机制,消息的丢失和乱序也会是比较复杂的问题。

throttle 技术其实并不提升性能,这个技术主要是防止系统被超过自己不能处理的流量给搞垮了,这其实是个保护机制。使用throttle技术一般来说是对于一些自己无法控制的系统,比如,和你网站对接的银行系统。

批量处理的技术,是把一堆基本相同的请求批量处理。比如,大家同时购买同一个商品,没有必要你买一个我就写一次数据库,完全可以收集到一定数量的请求,一次操作。这个技术可以用作很多方面。比如节省网络带宽,我们都知道网络上的MTU(最大传输单元),以态网是1500字节,光纤可以达到4000多个字节,如果你的一个网络包没有放满这个MTU,那就是在浪费网络带宽,因为网卡的驱动程序只有一块一块地读效率才会高。因此,网络发包时,我们需要收集到足够多的信息后再做网络I/O,这也是一种批量处理的方式。批量处理的敌人是流量低,所以,批量处理的系统一般都会设置上两个阀值,一个是作业量,另一个是timeout,只要有一个条件满足,就会开始提交处理。

所以,只要是异步,一般都会有throttle机制,一般都会有队列来排队,有队列,就会有持久化,而系统一般都会使用批量的方式来处理。

云风同学设计的“排队系统” 就是这个技术。这和电子商务的订单系统很相似,就是说,我的系统收到了你的购票下单请求,但是我还没有真正处理,我的系统会跟据我自己的处理能力来throttle住这些大量的请求,并一点一点地处理。一旦处理完成,我就可以发邮件或短信告诉用户你来可以真正购票了。

在这里,我想通过业务和用户需求方面讨论一下云风同学的这个排队系统,因为其从技术上看似解决了这个问题,但是从业务和用户需求上来说可能还是有一些值得我们去深入思考的地方:

1)队列的DoS攻击。首先,我们思考一下,这个队是个单纯地排队的吗?这样做还不够好,因为这样我们不能杜绝黄牛,而且单纯的ticket_id很容易发生DoS攻击,比如,我发起N个 ticket_id,进入购票流程后,我不买,我就耗你半个小时,很容易我就可以让想买票的人几天都买不到票。有人说,用户应该要用身份证来排队, 这样在购买里就必需要用这个身份证来买,但这也还不能杜绝黄牛排队或是号贩子。因为他们可以注册N个帐号来排队,但就是不买。黄牛这些人这个时候只需要干一个事,把网站搞得正常人不能访问,让用户只能通过他们来买。

2)对列的一致性?对这个队列的操作是不是需要锁?只要有锁,性能一定上不去。试想,100万个人同时要求你来分配位置号,这个队列将会成为性能瓶颈。你一定没有数据库实现得性能好,所以,可能比现在还差

3)队列的等待时间。购票时间半小时够不够?多不多?要是那时用户正好不能上网呢?如果时间短了,用户不够时间操作也会抱怨,如果时间长了,后面在排队的那些人也会抱怨。这个方法可能在实际操作上会有很多问题。另外,半个小时太长了,这完全不现实,我们用15分钟来举例:有1千万用户,每一个时刻只能放进去1万个,这1万个用户需要15分钟完成所有操作,那么,这1千万用户全部处理完,需要1000*15m = 250小时,10天半,火车早开了。(我并非乱说,根据铁道部专家的说明:这几天,平均一天下单100万,所以,处理1000万的用户需要十天。这个计算可能有点简单了,我只是想说,在这样低负载的系统下用排队可能都不能解决问题)

4)队列的分布式。这个排队系统只有一个队列好吗?还不足够好。因为,如果你放进去的可以购票的人如果在买同一个车次的同样的类型的票(比如某动车卧铺),还是等于在抢票,也就是说系统的负载还是会有可能集中到其中某台服务器上。因此,最好的方法是根据用户的需求——提供出发地和目的地,来对用户进行排队。而这样一来,队列也就可以是多个,只要是多个队列,就可以水平扩展了。

我觉得完全可以向网上购物学习。在排队(下单)的时候,收集好用户的信息和想要买的票,并允许用户设置购票的优先级,比如,A车次卧铺买 不到就买 B车次的卧铺,如果还买不到就买硬座等等,然后用户把所需的钱先充值好,接下来就是系统完全自动地异步处理订单。成功不成功都发短信或邮件通知用户。这样,系统不仅可以省去那半个小时的用户交互时间,自动化加快处理,还可以合并相同购票请求的人,进行批处理(减少数据库的操作次数)。这种方法最妙的事是可以知道这些排队用户的需求,不但可以优化用户的队列,把用户分布到不同的队列,还可以像亚马逊的心愿单一样,让铁道部做车次统筹安排和调整(最后,排队系统(下单系统)还是要保存在数据库里的或做持久化,不能只放在内存中,不然机器一down,就等着被骂吧)。

小结

写了那么多,我小结一下:

0)无论你怎么设计,你的系统一定要能容易地水平扩展。也就是说,你的整个数据流中,所有的环节都要能够水平扩展。这样,当你的系统有性能问题时,“加3倍的服务器”才不会被人讥笑。

1)上述的技术不是一朝一夕能搞定的,没有长期的积累,基本无望。我们可以看到,无论你用哪种都会引发一些复杂性。

2)集中式的卖票很难搞定,使用上述的技术可以让订票系统能有几佰倍的性能提升。而在各个省市建分站,分开卖票,是能让现有系统性能有质的提升的最好方法。

3)春运前夕抢票且票量供远小于求这种业务模式是相当变态的,让几千万甚至上亿的人在某个早晨的8点钟同时登录同时抢票的这种业务模式是变态中的变态。业务形态的变态决定了无论他们怎么办干一定会被骂。

4)为了那么一两个星期而搞那么大的系统,而其它时间都在闲着,有些可惜了,这也就是铁路才干得出来这样的事了。

作者:陈皓

原文地址:CoolShell.cn

发表在 网站策划与运营 | 留下评论

定格2011 专家眼中的网站设计

“2011年,在网站设计界最令你难忘的是什么?”我曾对业界精英们提出过这样的疑问。其中出现了一个极其高频的词(猜猜?),而每个人都有许多话要说。当然,在看完以下的这些言论,我们非常欢迎你大声的说出在2011年中令你印象深刻的转变。

由衷的感谢各位能抽出时间,回答这个问题。我们收集了来自世界各地的作者、设计师、程序开发员、UI&UX 设计师、演讲人及来自各个专业社区的学者专家。(以下排名不分先后)

“网页的设计形式不再受宽度的局限。响应性设计更好的帮助我们理解网站。”

Steve Fisher——在Yellow Pencil工作室担任用户体验总监。国际知名交互设计师,演讲人以及开源传道者。同时任加拿大平面设计师协会网站副总裁。
对于我来说2011年最明显的特点是互联网行业慢慢走向成熟 。网页的设计形式不再受宽度的局限。响应性设计(Responsive design)不仅有助于提升我们对于网站的理解,同时也能加强客户对其的认识。抽象我们所要表达的内容,使之成为简洁易懂的信息,同时从视觉效果来看网站的设计,这些都很好的告知了我们设计的决定因素。今年的一系列变化,让我感到前所未有的振奋。

twitter: @hellofisher dribbble: hellofisher

“我希望在2012年‘响应性设计’并不只是一个热门关键词,而是成为作为设计人员所需具备的基础能力。”

Sarah Parmenter——创立“You Know Who”设计工作室,专注于网站用户界面设计及iPhone和iPad应用程序开发。
响应性设计和内容策略的崛起,在2011年中最令我难忘,可以说它们是今年两大宝贵的财产。我希望在2012年“响应性设计”并不只是一个热门关键词,而是成为作为设计人员所需具备的基础能力,让更多的人认识到我们网站内容的重要性,并且停止采用“Lorem Ipsum”这种文字排版设计方式。

twitter: @sazzy dribbble: sarah

“核心设计实际上意味着:沟通与问题解决,个人觉得如今我们在这一层面上做的越来越好。”

Vitaly Friedman——Smashingmagazine.com网站联合创始人兼首席主编,在线杂志设计师。
今年,最令我印象深刻的是对于响应性设计的接受程度大幅上升。随着时代的变迁,在2012年我们开始重新思考,细细斟酌我们的网页设计道路,在以各式各样移动设备为王道的今天,对于即将面临的新挑战,我们该如何找到解决方案。

核心设计实际上意味着:沟通与问题解决,而个人觉得如今我们在这一层面上已做的越来越好。我们见证了响应性模式在网页设计各部分中的建立——无论是音频/视频,还是导航、表单、广告等,点滴的进步都那么令人振奋。我坚信,2012年会给我们带来更多新兴技术,而这对于改善web用户体验无疑又是一次浓墨重彩。我非常期待这个时刻的到来!

twitter: @smashingmag google+: vitaly

“2011年打破了常规工具使用的方式。”

Paul Irish——前段开发人员,Google Chrome开发联系员,jQuery开发团队成员,Modernizr、CSS3 Please和HTML5 Boilerplate首席开发人员。
从博客到网页端应用程序,对于如何将我们的最佳成果成功的运用于我们的工作并提高其效率还存有很大的发展空间。对于浏览器的内部运行需要形成一个清晰的概念,这样有助于最佳技术的识别,从而创造出最佳的用户体验。与此同时,诸如:Sass & Compass, CodeKit, LiveReload 和ImageOptim这样的工具还能帮助我们解决网页浏览器支持问题。我对2012年的到来已经迫不及待了,我们将创造出何种更加理想的用户体验。

twitter: @paul_irish google +: paulirish.com/+

“纯CSS logo(yak!)”

Harry Roberts——网页开发者、作家、设计师,Smashing Magazine专家小组成员。
大多数人认为2011年对于网页设计来说,是以适应性网页设计、CSS测试、纯CSS logo(yak!)以及滚动视差为代表的一年。而我认为,2011年的CSS充满活力,兼具实效性与前端高性能。或许有人觉得它以一个沉闷无聊的结尾结束了这一年。但我却看到了web开发中一个更具挑战性,更有趣,同时也更有用的一面。随着用户界面变得更加复杂,我们需要找到一条始终保持简单代码的途径;同时,随着移动设备的多元化发展,我们需要找到一条能让代码始终保持高性能的途径。虽然大部分人仍沉溺于媒体查询(Media Query)和CSS3中,而我却准备从头开始,重新投入到CSS布局模块化、增强其可扩展性以及前端开发中。

twitter: @csswizardry dribbble: csswizardry

“我们都开始在思考一些共同的问题,比如:1024像素宽的桌面。”

Jonathan Snook——知名Web开发与设计师,从事 Web 前端设计,后台开发以及 Adobe AIR 桌面应用的开发。
这一年中,最令我难忘的无疑是我们对于如何建立网站这一问题的思维观念的转变和革新。我们都开始在思考一些共同的问题,比如:1024像素宽的桌面。移动和平板设备的大肆喷井,迫使我们去思索今后的设计之路,以及该以何种更好的方式服务于我们所呈现的内容。

twitter: @snookca flickr: jonathansnooka

“行业中出现的不同发展方向,令我兴奋不已。”

Janna Hagan——从事网页设计与开发。获得2011年.net年度青年设计师称号。
在2011年中最令我难忘的是HTML5与CSS3响应性设计的崛起。行业中出现的不同发展方向以及在这一年中科技的迅速发展带来的一系列变化,都令我们兴奋不已。变化与发展是不可避免的,我们必须用创意性的姿态去拥抱它。

twitter: @_jannalynn dribbble: jannalynn

“2011是移动之年。”

Paul Boag ——网站设计公司Headscape创始人之一。从1994年起就迈入网站制作行当。经常于.net magazine,smashing magazine和web designer depot上发表观点文章。
回顾2011年,在移动互联网的热潮冲击下,响应式网页设计的出现解决了由此带来的诸多挑战。现在不用额外付费就能在各种移动终端上访问各类网页了。最棒的是,新建的网页几乎可以兼容所有移动终端(无论是旧版或者升级版),其成本运比原先的方法低。就个人而言,这可是一大进步。

twitter: @boagworld podcast: boagworld.com/podcast

“2011颠覆了我一贯的网页设计思路。”

Veerle Pieters ——比利时平面及网页设计师。Duoh! n.v.的创始者之一。
某种程度上而言,2011年由于移动网络的兴起,颠覆了我一贯的网页设计思路。当我在设计的时候,我会尽可能的考虑到移动这个概念。根据每个网站或者项目的类型以及其他元素,是可以做出完整的响应式网页的。当然这就对我的思维定势带来的一定的挑战,我要打破常规贵,把那些条条框框的禁忌抛到脑后,创新就应该是这样,成功的作品就是这样炼出来的。

当然在创作过程中,还是要谨记一些基本标准,会遇到像CSS代码这样的小障碍。这就促使我在编码时,要更大胆创新,我拒绝墨守成规。要设计出一个完全响应式网页,我必须尽可能地丢弃那些禁忌要点,这才是我的作风。其中的挑战就是,需要在基本标准与个性发挥间保持平衡。我们可以在设计中加入动画效果,这就是一种新思路。

twitter: @vpieters dribbble: veerlepieters

“···你不可避免···”

Aaron Weyenberg ——网页设计师、移动应用程序开发者。现作为TED大会演讲人之一。
2011年网页设计里让我印象深刻的是,响应式设计逐步火起来了。过去几年,相比其他主题,有关响应式网页设计的工具、插件、资源、教学课程、研讨会个人觉得是最多的。虽然我现在无法确认这项技术的长期实效性会如何,但是它就是必需的——作为设计师就更加需要它了,你必须学会且精通这项技术,这样当接到项目时才能快速反应是不是适合用这个技术。

twitter: @aweyenberg dribbble: aaronweyenberg

“越来越多的网页设计师选择了滑动式布局而摒弃了固定排版式布局。”

Eivind Uggedal ——wasitup.commediaqueri.es网站的创建者。
去年1月当我创建的mediaqueri.es网站上线时,我还没想过响应式网页设计会在2011年如此大热。不仅仅是我建议的一些网站都使用了这项技术,越来越多的网页设计师选择了滑动式布局而摒弃了固定排版式布局。我们也发现了像The Botson Globe和Barack Obama这样高端的网站都改成了响应式或自适应式版本重新上线了。

twitter: @uggedal github: uggedal

“如果你是网页创建团队的一分子,你不可能不为这些大事件欣喜若狂。”

Peter Gasston ——从事于Top 10网站的开发。出版《The Book of CSS3: A Developer’s Guide to the Future of Web Design》一书。经常于.Net杂志、CSS3.info网站上发表文章。
我想说微软发布IE10是2011年一桩大事件,不仅因为它随着IE9接踵而来,更是因为IE10预览版在测试阶段就已经显现出快速、标准规格的性能了。而且,IE10是配备了Windows 8 tablet OS 操作系统——这标志着微软对开放网页技术的信心,同时也是在向外界表明微软不服输。我坚信对于开放标准的强烈竞争,最大的受益者是用户,因此2011年我个人觉得印象最深刻的就是这件事。

2011年,对我们这个行业而言应该是很值得纪念:未来的应用软件从桌面到浏览器的网页迁移,HTML5正在向世人证明它是跨平台应用开发的最佳选择,重整旗鼓的微软又发布了好的浏览器等等。如果你是网页创建团队的一分子,你不可能不为这些大事件欣喜若狂。我有挖掘新浏览器特征的爱好,通过很多运用尖端及试验性的CSS,HTML和JavaScript的演示,绝对可以满足我们的好奇心。

失望还是有的,比如互联网相关行业的爆发,致使浏览器语言出现越来越多新的规范和特征, 使得一些人变得越发浮躁,缺乏耐心,喜欢走捷径:他们表示不再支持旧的浏览器,或者对不支持相关性能的浏览器不再做过多的演示和范例(当这些浏览器不能执行相关特征时也不会保修)。所以还是期待2012年网站创建的会更好吧。

twitter: @stopsatgreen book: The Book of CSS3

“2011年是设计年。”

Aarron Walter ——《Designing for Emotion》一书作者,MailChimp首席用户体验设计师。
谷歌重新设计了Gmail,阅读器Reader, 谷歌地图Maps, 谷歌搜索Search及其他门户网站,也是第一次看上去是谷歌的设计师而不是工程师影响着这些网站界面的发展。Facebook喜获很多设计人才,在F8研讨会上预先展示了他们以故事为基础的新页面。随着他们收购地理位置共享服务商Gowalla,新的一年Facebook的设计方向无疑会发生潜移默化的改变。去年10月乔布斯的离世对整个设计界影响颇大,让设计师这一角色重新回归世人的视线,重燃了设计师们的创作热情。2011我们铭记设计,2012我们必将大展身手。

twitter: @aarron book: Designing for Emotion

“甚至,还能更好。”

Lea Verou
 ——网页前端技术开发人员,热衷于JavaScript、CSS3技术的开发。同时创立了Fresset公司。
2011年,业界发展不错。响应式网页设计从一个新鲜的酷炫玩意发展到每个网站的必需,CSS大热,CSS和JavaScript预处理变成了主流,新的页面技术最终得以可行,新的应用程序界面使很多不可能成为了可能,过去需要插件或者端代码,现在都不需要了。

然而,令我印象最深刻的还不是个别的技术,而是整个行业的发展蓝图。我们总会开发出新的工具,让我们工作的更好,我认为过去几年特别是2011年,应该是历史上第一次浏览器的激烈竞争吸引了网页开发者的注意,很欣慰的是我们发现竞争的目标不是互相厮杀,而是都在支持开放网页标准。

如果要向网页设计师描述过去二十几年我们的生活,他们应该很难相信。那就让我们停止抱怨,让他们知道我们已经走在了很前端,我们已经做的很好了。甚至,还能更好。请系好安全带,跟着我们一起,因为进步的列车马上就要开动了。

twitter: @leaverou github: LeaVeroue

来源:webdesign
翻译:Viking Wong & Antonia Huang@DamnDigital

发表在 网站创意和运用 | 标签为 , , | 留下评论

text-indent小总结

最近在看文本相关的属性,觉得text-indent挺有意思的,就小小的总结了一下(这里不讨论用text-indent来隐藏文字)。

我将会从下面几个方面来进行说明:

1.text-indent应用于块级元素

2.text-indent应用于行内元素

3.text-indent应用于替换元素

4.text-indent应用于inline-block元素

5.继承

6.总结

一、text-indent应用于块级元素

text-indent常用于段落首行2字符的缩进。我们先来看一下demo1(所有demo文章最后会提供下载地址)。

各浏览器都可以正常的显示。如图:

我们也可以通过负的text-indent来制作一些效果,各浏览器表现相同(demo2):

二、text-indent应用于行内元素

这里分两部分来说,一是text-indent应用于块级元素,块级元素里面有inline元素(通过继承或者指定text-indent),直接上demo3。

可见行内元素,虽然继承了text-indent的值(或者指定),却没有任何作用。

二是inline元素直接指定text-indent的值,或者块级元素不指定text-indent,而里面的inline元素指定。请看demo4。

chrome14、firefox7、opera10.6、safari5、ie8、ie9表现如下:

ie6/7表现如下:

比较一下,chrome14、firefox7、opera10.6、safari5、ie8没有作用于inline元素,但ie6/7却作用于inline元素,而且用于inline元素上,不同的条件表现也不同。

直接用于inline元素上:前面有32px的空白

块级元素不设置text-indent,而inline元素设置(inline前有文字):text-indent不会作用于inline元素。

块级元素不设置text-indent,而inline元素设置(inline前木有文字):text-indent会作用于inline元素,且与demo中设置的相同2em(24px,文字大小为12px)。

三、text-indent应用于替换元素

这里以应用到image与input元素为例进行说明,请看demo5。

chrome14、firefox7、opera10.6、safari5中的表现:没有作用于image,但却作用于了input,且中英文没有区别。

ie6/7中的表现:作用于image,且在input中,当为中文与英文时有不同的表现,从这点真不得不佩服ie6/7。还有更加有趣的,当你在全英文的输入框中改它的值时,又会有新的表现。

改变英文输入框的值后:

ie8、ie9中,没有作用于image,但却作用于了input,而且与ie6/7一样,英文与中文有上述的小bug。

改变英文的输入框的值后:

四、text-indent应用于inline-block元素

直接看demo6吧,结果说明一切(chrome14、firefox7、opera10.6、safari5、ie8、ie9中的表现)。

text-indent作用于inline元素

ie6/7的表现(作用于inline-block元素,而且前面多了32px):

五、继承

text-indent这个属性是可以继承的,引用权威指南上的一句话“在css2.1之前,text-indent总是继承计算值,而不是声明值。”。请看demo7。

非ie系列浏览器继承的均是计算值。

ie系列继承的却是声明值。

如果将父元素中的text-indent:2em;改成text-indent:28px,就不会有这个问题。

六、总结

看到这么多的不同点,您是不是感觉到很乱?如果你觉得不乱,那好,你是一牛人。不管你乱不乱,反正我是乱了。

所以,我给自己总结了一下:

1.text-indent只用于div,p这样的元素上,像image、input、inline-block、inline元素绝对不用。

2.text-indent的值如果子元素也要用到父元素的值,用px单位,而绝不用em。

最后,还是要说一下,本人水平有限,如有什么不当之处还请多指正。

最后附上所有demo下载地址:text-indent

本文作者:火柴

文章来源:携程UED

发表在 业界资讯及评论 | 标签为 , | 留下评论

web性能测试工具推荐

WEB性能测试工具主要分为三种,一种是测试页面资源加载速度的,一种是测试页面加载完毕后页面呈现、JS操作速度的,还有一种是总体上对页面进行评价分析,下面分别对这些工具进行介绍,如果谁有更好的工具也请一起分享下。

Firebug:

Firebug 是firefox中最为经典的开发工具,可以监控请求头,响应头,显示资源加载瀑布图:

HttpWatch :

httpwatch 功能类似firebug,可以监控请求头,响应头,显示资源加载瀑布图。但是httpwatch还能显示GZIP压缩信息,DNS查询,TCP链接信息,个人在监控http请求比较喜欢使用httpwatch,httpwatch包含IE和firefox插件。不过httpwatch专业版本是收费的,免费版本有些功能限制。

DynaTrace‘s Ajax Edition:

dynaTrace 是本人常使用的1个免费工具,该工具不但可以检测资源加载瀑布图,而且还能监控页面呈现时间,CPU花销,JS分析和执行时间,CSS解析时间的等。

Speed Tracer:

speed trace 是google chrome的1个插件,speed trace的优势点是用于监控JS的解析执行时间,还可以监控页面的重绘、回流,这个还是很强的(dynaTrace也能有这个功能)。 注:安装这个插件,需要安装 Google Chrome Developer Channel 版本,但是这个链接的地址在国内好像打不开,如果打不开,请大家直接到这个地址去下载:

http://www.google.com/chrome/eula.html?extra=devchannel

Page Speed :

Page speed 是基于firebug的1个工具,主要可以对页面进行评分,总分100分,而且会显示对各项的改进意见,Page Speed也能检测到JS的解析时间。

yslow :

yslow跟pge speed一样是基于 firefox\firebug的插件,功能与page speed类似,对各种影响网站性能的因素进行评分,yslow是yahoo的工具,本人也一直在使用,推荐一下。

webpagetest :

webpagetest 是1个在线进行性能测试的网站,在该网站输入你的url,就会生成1个url加载的时间瀑布图,对所有加载的资源(css,js,image等等)列出优化的清单,也是非常好用的工具。

文章来源:www.blogjava.net/bearrui/

发表在 业界资讯及评论 | 标签为 , , | 留下评论

PHP中$_SERVER的详细参数与说明

php编程中经常需要用到一些服务器的一些资料,特把$_SERVER的详细参数整理下,方便以后用到,以后搜索方便。

$_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关。

$_SERVER['argv'] #传递给该脚本的参数。

$_SERVER['argc'] #包含传递给程序的命令行参数的个数(如果运行在命令行模式)。

$_SERVER['GATEWAY_INTERFACE'] #服务器使用的 CGI 规范的版本。例如,”CGI/1.1″。

$_SERVER['SERVER_NAME'] #当前运行脚本所在服务器主机的名称。

$_SERVER['SERVER_SOFTWARE'] #服务器标识的字串,在响应请求时的头部中给出。

$_SERVER['SERVER_PROTOCOL'] #请求页面时通信协议的名称和版本。例如,”HTTP/1.0″。

$_SERVER['REQUEST_METHOD'] #访问页面时的请求方法。例如:”GET”、”HEAD”,”POST”,”PUT”。

$_SERVER['QUERY_STRING'] #查询(query)的字符串。

$_SERVER['DOCUMENT_ROOT'] #当前运行脚本所在的文档根目录。在服务器配置文件中定义。

$_SERVER['HTTP_ACCEPT'] #当前请求的 Accept: 头部的内容。

$_SERVER['HTTP_ACCEPT_CHARSET'] #当前请求的 Accept-Charset: 头部的内容。例如:”iso-8859-1,*,utf-8″。

$_SERVER['HTTP_ACCEPT_ENCODING'] #当前请求的 Accept-Encoding: 头部的内容。例如:”gzip”。

$_SERVER['HTTP_ACCEPT_LANGUAGE']#当前请求的 Accept-Language: 头部的内容。例如:”en”。

$_SERVER['HTTP_CONNECTION'] #当前请求的 Connection: 头部的内容。例如:”Keep-Alive”。

$_SERVER['HTTP_HOST'] #当前请求的 Host: 头部的内容。

$_SERVER['HTTP_REFERER'] #链接到当前页面的前一页面的 URL 地址。

$_SERVER['HTTP_USER_AGENT'] #当前请求的 User_Agent: 头部的内容。

$_SERVER['HTTPS'] ― 如果通过https访问,则被设为一个非空的值(on),否则返回off

$_SERVER['REMOTE_ADDR'] #正在浏览当前页面用户的 IP 地址。

$_SERVER['REMOTE_HOST'] #正在浏览当前页面用户的主机名。

$_SERVER['REMOTE_PORT'] #用户连接到服务器时所使用的端口。

$_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名。

$_SERVER['SERVER_ADMIN'] #管理员信息

$_SERVER['SERVER_PORT'] #服务器所使用的端口

$_SERVER['SERVER_SIGNATURE'] #包含服务器版本和虚拟主机名的字符串。

$_SERVER['PATH_TRANSLATED'] #当前脚本所在文件系统(不是文档根目录)的基本路径。

$_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用。

$_SERVER['REQUEST_URI'] #访问此页面所需的 URI。例如,”/index.html”。

$_SERVER['PHP_AUTH_USER'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。

$_SERVER['PHP_AUTH_PW'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。

$_SERVER['AUTH_TYPE'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。

发表在 业界资讯及评论 | 标签为 , | 留下评论

Chrome大战Firefox,开源的胜利

看今天的IT新闻,比较引人关注的是Chrome市场份额首超Firefox的消息,说实话,我有点吃惊。可能是自己近年来忙于和技术不沾边的事情,对Chrome还停留在精简,快速但功能还不完善的小软件的印象上。Firefox仍然是我使用的主力,看到消息后,专门安装Chrome试了一下,可以说士别三日当刮目相看,Google出品没说的。

微软靠绑定Windows,IE仍然以40.68%的份额居首位,Chrome 25.48%,Firefox 25.26%。当然,前面说到的是全球范围的份额,中国大陆区不值一提,完全是畸型的一边倒向IE。不知道是因为Windows D版的普及,还是我们的互联网环境有问题???

排在后面的浏览器是Apple的Safari和老牌Opera,前者得益于Mac机的普及,以及iPhone、iPad的流行,Opera从90年代一直存活到现在,可以说是个奇迹。

Chrome大战Firefox,开源的胜利

Chrome和Firefox,都是开源的浏览器,Chrome是Google自己开发的,Firefox的背后也有Google资本的影子。这两款浏览器,全球份额加起来有50%+,完全超过了IE,这完全是开源的胜利。高效的内核,小巧的软件,稳定而快速,大量的应用扩展,这些是Chrome和Firefox共有的基因,这就是开源的力量。对于臃肿的IE,如果不是Windows绑定无法卸载,还有国内大多数网银等白痴一样一边倒的只支持IE,我早就弃之如敝履了。

Google确实是个伟大的公司,搜索这块,国内用起来是不如百度,但这里的原因你懂的,如果没技术就出国用用Google吧。Google出的很多产品,如Google earth,都会做到极致,Android在业界怀疑的眼光中,和Apple不仅差不多干掉了Nokia symbian,使微软WM也变成了过去时。Chrome虽然只是一个小小的浏览器,但它承载了Google用互联网占领桌面的使命,这在云计算大行其道的今天,硬件和网络环境开始能支撑其构想的时候,Chrome OS开始利用嵌入式进入智能家电,从Android安卓系统的今天,基本可以预见Chrome OS的明天。

扯远了,从浏览器之争可以看出,将来是开源的天下,微软帝国很可能有被拆分的一天。从智能终端操作系统的习惯,很容易向PC端,TV端等渗透,IT业界一枝独大不是好事,百花争艳才是发展之道。

作者:冯强

文章来源:老冯的博客

发表在 业界资讯及评论 | 留下评论

我眼中的新闻发布会

参加过无数企业的新闻发布会,传统、IT、都有,但大多数的企业新闻发布会都存在诸多不如意的地方,在此留下我的一些想法。

1、先解决新闻发布会是干什么的?

发布会的基础作用是为企业进行宣传,产品、战略、发展、代理等等,但要表现主题,不能太散,就象打仗,要把所有的力气集在拳头上,不能分心。有些企业的会,想传递的东西太多,可能他们认为花了大笔钱租了这么一个会议室,传递出来的信息越多越好,但他们不知道,当传递的信息越来越多时,信息的强度就会弱化。

你又想卖产品,又想树企业品牌形象,又想拉代理入伙……已远远超过一场新闻发布会所能传递的范围了。

2、想好了再说,说现实点的吧

现在同志们搞新闻发布会都很有心得了,PPT、投影仪,无奇不用,用这些现代科技产品的作用是强化会议的形象,让大家有很深刻的印象。但很多企业在进行PPT演示时,都显得那么枯燥,相信大多数参加新闻发布会的人都不会等到最后一刻,原因之一就是听着没兴趣,坐着想睡觉。

究其原因就是因为上面的演讲者讲的东西是大家不感兴趣的,或者是一些表面上的,不能引起共鸣的内容。

以我参加的一些网络公司新闻发布会为例,如果是做电子商务的,在PPT里肯定要大谈中国,世界的电子商务美好前景,如果是做网络产品的,肯定要大谈自己产品的优越性。这样讲无可厚非,但这些不能吸引听众的注意力。

但问题是,世界的电子商务发展再美好,跟你的关系大吗?跟听众的关系大吗?就算很美好,你又准备怎么把这种美好的前景结合现实为大家谋福利?

对谁讲?怎么讲?里面的东西很多,跟普通听众讲,就要讲产品的性价比,少谈些行业前景,那么我们没兴趣;跟渠道讲,就要讲返点,讲优惠政策,少谈些全球行业竞争环境,太虚了,大家会反感。

3、学会讲故事

新闻发布会都有一个主持人,主持人的目的是串场,承上启下,主持人的另一个作用,就是活动现场气氛,但在IT这个专业相对较高的领域,主持人很难一施娱乐节目那番拳脚,所以就需要主持人做足准备工作,对IT企业的发展及其创始人有一定的了解,上台才有“故事”可说。

而故事也是最容易吸引听众的点睛之笔。

作者:丁然

文章来源:丁然的IT江湖

发表在 业界资讯及评论 | 留下评论

邝金华:五个一定 助新手更好的学习SEO

这几年,SEO界风生水起,越来越多的站长和新人朋友加入这个行业,开始学习SEO技术,由于这个行业的特殊性,使得非常多的新手朋友可以看到非常多的SEO技术文章、资料、视频和教程,但是每每都有非常多的新手朋友在学习SEO的过程中碰上种种困难和问题。

其中最典型的现象就是文章、资料、教程甚至视频看得越来越多,原本应该是掌握得越来越多才对,其实不然,刚刚相反,看得越多,心里越迷糊,感觉自己根本不知道如何去做,你问任何一个理论或什么知识点,似乎都知道,但就是在实际操作时要么就一头雾水不知从何下手,要么就是将所有的什么知识、理论全部用上结果导致被惩罚。在这里金华写下自己的一点经验,希望能帮助到新手朋友理清学习的思路。

学习一定要有目标

之所以说学习一定要有目标,是因为没有目标,我们就没有方向。我们得先搞清楚自己为什么要学习SEO,是为了优化公司的网站还是为了学会后能接优化业务?又或者是草根站长为了自己的网站而优化?除此之外,我们还要自问一下,我期望达到一个什么样的程度?我能不能为了这个目标而坚持不懈的努力?别一开始就想当专家,认清楚自我,这就是我们学习的目标,也是我们的定位。

学习一定要有思路

有了目标和定位,那么接下来就是思路。思路是一个很悬的东西,只可意会,不可言传。我们可以通俗的理解为将学习到学会的整个流程拆分,每个阶段我应该干什么,需要达到什么样的效果,什么时间达到。尽管现在你可能什么都不会,但你非常有必要了解清楚这个流程,知道了流程才能知道如何去拆分,而拆分的过程就是一种思路。

学习一定要去实践

无论学习什么技术,实践永远是最关键的一步。纸上谈兵、理论、书籍教不会你什么,必须要实战,实战才能让你知道你会做什么,你欠缺什么。通过实战可以达到缺什么而补什么的目的,学习起来自然事半功倍。实践所获得的经验才是最最宝贵的,将自己实践过程中的数据、心得记录下来,也是实践时非常有必要做的。没有实践,你永远无法领悟其中的精髓,如果你还在啃理论,请把书本扔到一边,赶紧动手实践吧。

学习一定要找方法

学习SEO,方法也是非常重要的,好的方法学起来不仅让你看到成效,更重要的是会坚定你的信心。学习方法因人而异,而我们就是要找到适合我们自己的一种,通常会多问自己几个为什么,然后弄明白这些为什么,你会发现你明白了许多。除此这外还可以走捷径,参加SEO实战培训,如果有幸碰上萧涵这样具有非常丰富实战经验的老师实时指导,学习起来自然会少走弯路。一旦掌握了高效的学习方法,你也许能像他的学员一样上线三天就有排名,一个月内关键词到第二名甚至是收录、流量涨辐过万,所以学习一定要找方法,找对方法,这点非常重要。

学习一定要看全局

学习到一定程度,会到达一个阶段,我们俗称:瓶颈期。你自己以为自己掌握了整个网站优化的所有操作了,每个网站你都会细致的将这些操作优化到位,然后就坐等排名,久而久之,思维和习惯都会固化,这样下去有百害而无一利。到了这个时候最关键的是心态和思维,金华也建议大家,这个时候不要再去想SEO了,站在整个网站的角度去看待整个网站,你将网站看成一个立体的,它的组织结构你都非常清楚,你知道什么是重要的,什么是不重要的,你知道网站建立的目的是什么,等等,从全局的角度出发,把握住整个网站的方方面面,你不再单纯的为了排名而排名,而更多的考虑网站的目标、流量、转化率等网站的综合情况,从而你从更高的一个高度来解决这其中的问题,你才会有一个质的飞跃,否则,你号称做了多年的SEO,结果一直还是在为了SEO而SEO。

学习SEO,仅仅只是万里长征的第一步,但如果你连第一步都无法走好,那就意味着你无法再深入,你只能掌握这些皮毛,你无法站在网络营销的角度上将SEO、SEM视为一种非常常见的手段,你无法站在网站运营的角度将营销看作是网站赢利必用的技能。如果你是新手,还在盲目,不妨开始为自己设定目标、整理好思路,然后就去实践,再吸取良师益友的经验最终寻找到属于自己的方法,记住:当你完全能独立优化站点之后,不妨向上看看,还有营销、运营等高峰等着我们去攀登,加油!

作者: 邝金华

文章来源:kuangjinhua.com

发表在 搜索引擎优化 | 留下评论

利用百度知道 借用原创文章

废话,咱就不多说了,这篇文章的确是告诉大家如何来做ip,希望大家能够认认真真的看完。谢谢!

因为图片、电影、音乐等类型网站,我没服务器做的话也是盗链,没有太大的意思。所以,我一向主打文章类型的网站。下面介绍我的方法。

我提倡的方法是:利用百度知道,借用原创文章。

我首先是会选择一个COM的域名,据说权重比较高,但高不高这个需要大家自己去证实的。我在15天前做了一个教育类型的网站,相信大家都知道原创文章是百度最喜欢的,但是我们都是个人站长,如何做到每天更新几十篇原创文章呢?就拿我自己的教育网站来说,作文,相信大家并不陌生,我的教育网本来没有把作文这个栏目规划在内的,但是,我首先就加了一个作文的栏目,大家肯定会问我,我的教育网站既然没有把作文规划在网站内,为什么又要加入作文这个栏目呢?因为现在基本所有学校都有了自己的网站,当然作文是肯定少不了的,里面的作文,大家随便去百度一下,全是原创作品,因为学校的网站不太注重百度收录和流量这方面,所以有的原创文章甚至没有收录。我就把他给复制过来,贴在自己的网站上,然后在更新其他栏目。这样以来作文就是原创了。然后我又去百度知道搜索关于教育网相关的问题,然后进行回答。在百度回答也是有技巧的。在回答问题的时候,你只选择内容的 前3段文字,然后打上……号,在参考答案那里写上这个内容页的地址,如果你把内容全贴上来了,人家直接在百度知道看过了,还去你的网站干吗?在百度回答也要有个度。不要一直在那里回答,否则百度不会收录你。(PS:百度贴吧,碰都不要碰,不然后果不堪设想……)

以上2点做的差不多了,可以适当的去买一些外连,首先,你是做百度的买pr高的外链没有什么用,并且价格还比较贵,你找一些百度快照当天更新的网站就可以了。每天以5个外链的数量增加,买够30个外链就差不多了,新站不宜买多。

坚持照上面的方法每天更新30篇文章左右,记主原创文章的数量和复制过来的数量最好是相同的,不要加1篇原创加10篇复制的,那样就体现不出来效果了。当你原创文章多了,更新的快了,百度给你网站的权重是不可估量的……(PS:当然,作文有版权的,当你网站在百度收录稳定后,直接把作文删除就可以了。因为你网站权重,收录已经起来了,作文已经对你没有作用了,作文并不是让你弄来做流量的,只是辅助作用)

在15天前,我的教育网站,日ip是0,百度收录是0,现在日ip是3800到4000,百度收录是338页(PS:并不是百度收录多了流量来的就好)。大家可以看下我的来路,再看一下百度知道来的流量,不要忽视了可以利用的资源。但肯定大家不是都做教育网的,肯定还有做其他类型的,并不是只有作文原创的作品多,大家可以多去找一些关于和你网站类型相关的的原创作品,相关就可以,并不是非要和你网站一个类型。

下面贴一些实例的图片:

发表在 搜索引擎优化 | 留下评论