2006年04月21日

原文地址: http://www.ljf.cn/ReadArticle.asp?id=172

题起: 近来SEO越来越热,自觉不自觉地听到了一些消息,突然想到google对这方面的行为应该早有准备,于是想查查官方的文档到底是怎么说的,哪知中文版还没有出来,于是找到英文版,遂起了翻译之念,用了半个上午的时间译得一篇,发表以此,以飨同道.

英文来源: http://www.google.com/webmasters/guidelines.html

站长指南 (翻译)

遵循这些指南能帮助google查找、索引和排列你的网站。即使你一点也不想遵循这些建议,我们仍强烈建议你了解一下“质量指南”这一节,它列出了一些会被google视为作弊而导致整个网站不再被google收录的设计行为。一个网站一旦被google视为作弊,它将不再在Google.com以及所在google的合作网站的搜索结果中出现。

设计以及目录指南

1,清析的层次以及文本链接。每一页都应该至少有一个静态链接。
2,为你的用户提供一张网站地图,使用户可以通过地图找到网站的要点。如果地图上的链接太多,你还可以把地图分成多个页面。
3,创建有用的、信息丰富的站点,并使网页清晰准确地表达你的观点。
4,考虑使用者会使用什么关键词来查找你的网页,并确保你的网页上包含相应的内容。
5,尝试使用文本而不是图片来显示重要的标题、内容或者链接,google爬虫目前仍不能识别图片上的文字。
6,确保你的TITLE和ALT标签包含有适当、准确的描述词语。
7,检查死链接并且纠正这些HTML。
8,如果你使用动态页,务必明了搜索爬虫在搜索这些网页时效果不像静态页好。使用较少的参数和短的参数对此有所帮助。
9,同一页面内的链接保持在一个合理的水平(少于100个)。
技术性指南
1,使用像Lynx这样的文本浏览器来检查你的网站,因为绝大多数的搜索爬虫察看你的网站的方式与之非常相似。如果像Javascript,cookies,session IDs,frames,DHTML或者flash这样的特性使你的网站在Lynx文本浏览器中显示不正常的话,那么搜索爬虫在抓取你的网站时也会碰到相同的困难。
2,允许搜索爬虫直接通过链接抓取你的网站而不需要通过session IDs和参数。这些技术对跟踪用户的使用习惯非常有用处,但搜索爬虫访问的方式却是完全不同的。使用这些技术会致使google不能完整地收录你的网站,因为搜索爬虫不能区别指向同一页面,但含有不同参数的URL。
3,确保你的服务器支持If-MOdified-Since HTTP header。这个特性允许你的服务器告诉google你的网站在我们上一次抓取之后是否更新过。
4,确保在你的站点根目录中持有robots.txt文件。这个文件会告诉爬虫哪个目录可以抓取,哪个目录不需要被抓取。确保它出现在你的网站上,以免你一不小心屏蔽了google爬虫。访问http://www.robotstxt.org/wc/faq.html可以学习到如何设计一个robots.txt文件来指导爬虫访问你的网站

5,如果你的公司购买了信息管理系统,确保它可以导出静态的html文件以便搜索爬虫可以抓取它。
6,不要使用“&id=”作为URL的参数,因为我们不会把这样的页面放进索引中。
当你的网站开始运作时:
1,跟你的同类网站作交换链接。
2,把它提交到Google,地址:http://www.google.com/addurl/?continue=/addurl
3,提交网站地图到Google Sitemaps(Beta)项目。Google Sitemaps使你的提交的网站地图来确定你的网站结构,并且以此生成网站的索引。
4,确保你被引用的网页处于可用状态。(原文比较难懂,附于此:Make sure all the sites that should know about your pages are aware your site is online.)
5,提交你的网站到关系目录服务商的网站例如Open Direcotory Project 和 Yahoo!,包括别的专业性行业
索引网站。
品质指南 – 基本原理
1,面向用户而非搜索引擎。不要欺骗:对搜索引擎和使用者显示不同的内容。这种作法被称为加壳:“cloaking”。
2,避免为了提升排名而作弊。一个值得称道的做法是检查你的设计是否让自己使用起来感到舒适,以此使自己跟自己竞赛。另一个办法是这样思考:“这样做能帮助我的用户吗?如果没有搜索引擎的话,我会怎么做?”
3,不要参与提升网站排名或网页排名的策划。特别注意不要链接垃圾网站和网上的坏分子。因为这样做可能起到相反的效果。
4,不要使用未经受权的程序来提交页面或检查排名等等。因为这些程序会大量消耗计算机资源,并且亵渎我们的团队服务。Google不推荐用户使用类似于WebPosition Gold™这样的程序以达到自动发送请求。
品质指南:特别劝告
1,防止使用隐藏文本或隐藏链接。
2,不要使用外壳(cloaking)或作弊转接。
3,不要发送自动请求到Google。
4,不要创建包含病毒、木马或者其它恶意软件的网页。
5,不要创建重复的页面,子域名,或者影子网站。
6,防止创建面对搜索引擎的“门面页”(doorway page),或者别的“信息盗贼”(原文cookie cutter)如盗窃程序等建立毫无原创信息的页面。

这些品质指南基本上覆盖了大部分常见的欺骗或操控手段,但一些可能会引起误解的策略并没有在这儿列出(如使用者拼错了知名网站的域名),Google对这些操作同样会起到消极的排名效应。以为可以使用在此页中没有列出的技俩就可以达到优化排名的目的是相当危险的,Google不赞成这么做。根据上面列出的基本原理的精神,把精力放在改进用户体验站长们将会比那些花尽心思投机取巧想获得排名提升之徒获得更好的排名。
如果你相信某个网站正在践踏Google的品质指南,请到这里http://www.google.com/contact/spamreport.html来揭发它。Google更喜欢使用可升级和自动解决问题的解决方案,因此极少使用人工干涉的办法来对付作弊者。提交上来的报名我们将用来建立可升级的算法以解决
日后出现的同类行为。

2006年04月18日

来源: http://www.ljf.cn/ReadArticle.asp?id=170

目标要求:1,建立通用搜索页面;2,通过另一个页面的Form提交搜索请求但搜索条件简化,并且KeyWord表单名改变;3,通过List列表提交同类搜索请求。

这个目标乍看起来似乎相当复杂,需要改变的东西太多,但总结起来有两方面是不变的:1,都需要提交搜索请法求,不管是使用Form提交,还是使用QueryString提交;2,经过各种判断,最终得出SQL语句对数据库进行查询,并分页显示。本安全的难点在于,如何判断页面来源?

这儿引出了本文的主题——QueryString与Form表单结合。我们提交数据的时候,一会只会采取其中之一,极少会想到两者一起使用。所谓一起使用,是指使用如下面的From目标文件设定:<Form Action="ActionPage?Action=Doit">红色的部分是重点所在。这样设置之后,提交的数据不但包括所有Form的原素,也包括了所有?后面的Query设定。这样,我们只要能过判断?之后的query数据,就可以断判请求页面的来源了。

另一个难点在于分页。分页之后,所有原先提交的数据将不复存在。解决办法是引入session机制,查是这样一来页面来源也即丢失。但是没关系,只要处理好逻辑关系,请求的数据已经被保存起来了——当然,也可以考虑把请求页面的数据一并保存起来。

本例的示例程序参见广州考研网的共享资源搜索程序,是一步一步建立并完善的,出于需求的变更而作。在改变的过程中,逐渐意识到,编程的本质不外乎分析问题的逻辑,明辨数据流向的异同并加已控制而已。道理是明了,要真正运用纯熟,却需要长期的锻炼方可达到。

2006年04月17日

来源: 龙卷风 http://www.ljf.cn/ReadArticle.asp?id=168

如何度过空闲的时间
来源:本站 作者:不见不散 点击数:1   发表时间:2006-4-17 11:56:34

30岁前后的男人总是以金钱为向导的,毕竟,事业才是男人的长青树嘛。因此,我想许许多多的人们,在有空没空的时候,在有意识没有意识之间,总在思考着一条属于自己,可以赚钱的道路。此即所为“成人行动的有目的性”。

人们有99%的人被埋没了,在平凡\默默无闻的生活中度过一生,也许从此就再也不会有人提起过他,在他生活过的这个世界中将不复存在。这当然是谁也不想要的结局,古语云,虎死留皮,人死留名,人之为名,较为利者更为深切。即使只是十几岁的少年,也都已经懂得在风景名胜的树身上该下“某某到此一游“的字迹了。

因此,从平凡的我身上考察所得的结论是:平凡的人并非缺乏思考,而是思考得太多了。由于思考的时候太多,选择太多,而使人无所适从,最终所有的思考努力都成为白费。这也难怪,在这个世界上想要成功的人太多,而成功的机率总要控制成功的难度,于是小部分人成功了,小部分人失败了,大部分人什么也没有做。

近两个月来在努力做着基本属于体力劳动的工作,只为了赚少少钱。这相对于在许多人口中传播的在电脑前轻点鼠标,兴致起时就工作,其它时间想去哪就去哪的逍遥人士的事迹当然望尘没及,但值得安慰的是有所作为,较之什么也没有做的一群人来说,可能算做迈出了一小小步。

所以接下来的日子,仍然甘心抛开天马行空的万千思绪,而安心敲打手中的键写,用以编织自己心目中以为高尚的梦想。我觉得与和尚敲打木鱼的虔诚差不多,不同的时他敲打的木鱼带来回响,我敲打的键盘带来宁静。

2006年04月12日

来源: http://www.ljf.cn/ReadArticle.asp?id=163

经过一个多月的奋战,网站广州考研网基本完工,今起正式交付使用,余几一周时间进入后期纠错找bug阶段。

终于可以舒一口气了,这个网站实现的功能太多,导致了进程缓慢,这归咎于早期的结构设计和功能设定没有进行严谨的工作,结果需要在实际网页设计时不断进行调整,其中包括部分数据表结构的调整,更是浪费宝贵时间的元凶。

相对于上一个网站蜘蛛网来说,这个网站的设计略有几点改进:

1,首次与小胡同学进行远程协作,其中使用了dreamweaver2004的存入取出功能,得益于此一功能,我们的工作才能较为顺利地进行。

2,VBscript方面使用了更多的类,虽然每个类的设计都仍比较幼稚,但相对于复制代码以达到代码重用的目的来说,已经有了相当大的进步,以后的设计将更集中在对类的开发上,以提高开发速度。

3,在此期间还抽空看了看Thomas Powell and Fritz Schneider所著的《Javascript 2.0 complete reference second edition》,使得部分需要用到javascript的工作可以顺利进行,例如图片自动缩放的代码。

总的说来,这一个多月来是一个辛苦的过程,但也算苦乐参半,期间得到网站主人朱代国先生及其合作伙伴的理解和支持,一并表示感谢。

2006年04月11日

来源:龙卷风

习惯了打电话的人,会经常使用免提键(没有说错吧?),因为呼出时总会碰到响很久不接的电话,使用免提键可以避免长时间拿着话筒等待别人应答的情况,且一旦听到对方应答,才拿起话筒接听。

然而我的习惯是,当听到电话响时,以尽可能快的速度接听电话,这样可以避免呼叫者的长时间等待,认为这是一种礼貌。然而总会出现这样的情形:当我提起话筒连说两声“喂,你好”之后,对方总仍处于沉默中。一开始我很纳闷,莫非有人打骚扰电话不成?经过一段时间的实践表明,原来这是免提给双方造成的“时间空隙”。

因为我反应得太及时了,结果呼叫方始料不及,拿起话筒通话时,我已经连续讲了两声“喂,你好”,但呼叫方没有听见;而呼叫方习惯性地继续等待我的回应,我又习惯性地等待对方的回应,结果双方陷入沉默之中。

解决办法:1,双方采取更积极的做法,听不到回应时应该主动多讲几次“喂,你好”,直到听到对方回应为止。2,呼叫方听到听应后尽管讲话,因为接听方已经一早做出了回应;3,接听方不必要以极快的速度接电话及回应问候,而是提机问候,然后稍微等待一下再次问候。第一个做法无疑是最为对方着想的,但是经常对着没有反应的黑洞问候也很让人恼火。

不知道是 donews 的工作人员懒惰还是没有注意到这回事,只是轻易地设置css 的word-break属性即可避免这样尴尬的事情发生,卫生迟迟没有动手那?真是让人费解!

2006年04月07日

来源: http://www.ljf.cn/ReadArticle.asp?id=160

经过一年多来的网页设计,开始明白了一件事情:网站设计不等同于网页设计.它们之间的区别不仅仅是在"量"上(网页是一个页面,网站是整个网站),至关重要的,在于"质"上,对象已经不同,需要考虑的事情也截然不同.

在明白两者之间的区别之前,网站的制作应该确切地表达为"网页的制作",做这件事的人应该是网页设计师或者网页程序员.网页设计,名符其实,只要在页面上(可能需要多个页面)实现既定的功能即可,当然,效果要求表现为(美观,易用,执行效率快).

而网站设计这个主题所要考虑的事情并非网页本身,而是网站所要完成的事情.这是真正能够帮助网站营者提供信息产品的关键.做这件事情的人,应该是网站设计师,或者企业解决方案设计师,他所要做的事情是决定网站提供什么样的信息,网站的结构如何,包含哪几部分的功能,功能之间的横向逻辑关系等.他不关于具体某一个功能是如何实现的,他只关心功能有没有用,应该如何用,用在什么地方,提供给谁使用.

如何快速\高效地组建一个网站是我一直思考着的一个问题,从美工到程序,到整体效果,都只是其中的一部分,但不是关健所在.真正的关键正如上面所说的一样,是网站的整体逻辑结构设计.这才是名符其实的网站设计.要做好这一点,需要:1,对客户要求做相当全面的了解,知道客户需要哪方面的功能,很多时候需要把客户直观的功能,运用设计者的专业知识,翻译成可以在网站上提供的计算机程序功能.2.有良好的程序设计基础,比较全面地了解当前技术能够提供的功能模块.例如能够使用email完成的功能,但设计者不晓得,那么要找出相当的代替品将是相当困难的.这在设计上也造成相当的缺陷.当然,这一点需要不断地自我升级以及跟负责功能设计的同事进行效流.

就过去几年来的观察而言,目前市场上的网络公司往往把网站设计这个角色异化了.把它的职能一部分赋给了网页设计师,一部分赋给了业务员,还有一部分赋给了客户自己(有相当多的客户会干涉网站结构本身,而大部分网络公司都采取屈从的态度).如果上面的分析是事实,这就可以解释为什么现在国内的企业网站往往"只可远观,毫不实用,建站意义不大"的原因了.

2006年04月05日

关于存回/取出系统

如果您在协作环境中工作,则可以在本地和 中存回和取出文件。

取出文件等同于声明"我正在处理这个文件,请不要动它!"文件被取出后,Dreamweaver 会在"文件"面板中显示取出这个文件的人的姓名,并在文件图标的旁边显示一个红色选中标记(如果取出文件的是小组成员)或一个绿色选中标记(如果取出文件的是您)。

存回文件使文件可供其他小组成员取出和编辑。当您在编辑文件后将其存回时,本地版本将变为只读,一个锁形符号出现在"文件"面板上该文件的旁边,以防止您更改该文件。

Dreamweaver 不会使远端服务器上的取出文件成为只读。如果您使用 Dreamweaver 之外的应用程序传输文件,则可能会覆盖取出文件。但是,在 Dreamweaver 之外的应用程序中,LCK 文件显示在该文件所在的目录结构中取出文件的旁边,以防止出现这种意外。

有关 LCK 文件和"存回/取出"系统如何工作的更多信息,请参见 Macromedia Web 站点上的 TechNote 15447(网址为 www.macromedia.com/go/15447)。

相关主题



本文来源: http://livedocs.macromedia.com/dreamweaver/8_cn/using/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=05_site3.htm

2006年04月04日

来源: http://www.ljf.cn/ReadArticle.asp?id=158

<script type="text/javascript">
var imgObj = new Image();
imgObj.src=document.getElementById("img1").src;

if(imgObj.width>500)
{var rw=imgObj.width;
document.all("img1").width=500;
document.all("img1").height=500/rw*document.all("img1").height;
}
</script>

2006年03月30日

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
Session.Timeout = 60
 ’Response.Write( IP )

Dim Action
 Action = Request.Form("Action")

‘User Login
If Action = "UserLogin" Then
 Call UserLogin()
 Response.Redirect("WashingRoom.asp")
End If

Response.Write( "Welcome You, " & Session("UserName") & "<br>" )

‘Name Action
Sub UserLogin()
 Dim UserIP
 UserIP = Request.ServerVariables("REMOTE_ADDR")

 Dim UserName
 UserName = Request.Form("UserName")
 
 If UserName = Empty Then
  UserName = "No Named User"
 End If
 
 Session("UserName") = UserName
 Session("UserIP") = UserIP
End Sub

Dim arrQueue

If Application("Queue") = Empty Then
 reDim arrQueue(0)
Else
 arrQueue = Split( Application("Queue"), "/" )
End If

Sub JoinInQueue()
 If Application("Queue") <> Empty Then
  If Instr( Application("Queue"), Session("UserName") ) > 0 Then
  Else
  Application("Queue") = Application("Queue") + Session("UserName") + "/"
  End If
 Else
  Application("Queue") = Session("UserName") + "/"
 End If
End Sub

Sub ExitFromQueue()
 If Instr(Application("Queue"), Session("UserName")) > 0 Then
  Application("Queue") = Replace( Application("Queue"), Session("UserName") + "/", "")
 End If
End Sub
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>WashingRoom Queue System 1.0</title>
</head>

<body>
<%
 
Sub ShowQueue()
Dim iterator, counter
 iterator = 0
 counter = 0

 Response.Write( "<ol>" )
 For iterator = 0 To Ubound( arrQueue ) – 1
  If arrQueue(i) <> Empty Then
   If counter = 0 Then
    Response.Write( "<li><font color=’red’>" & arrQueue(iterator) & "</font></li>" )
   Else
    Response.Write( "<li>" & arrQueue(iterator) & "</li>" )
   End If
   counter = counter + 1
  End If
 Next
 Response.Write( "</ol>" )
 
 If counter = 0 Then
  Response.Write( "The WashingRoom is Empty Now" )
 End If
End Sub


If Session("UserName") = Empty Then
 Response.Write( "<h1> Enter Your Name to Continue </h1>" )
 Response.Write( "<form method = ‘post’ action = ‘washingRoom.asp’>" )
 Response.Write( "Input Your Name Please : <input type=’text’ size = ‘20′ name = ‘UserName’>" )
 Response.Write( "<input type=’hidden’ name=’action’ value=’UserLogin’>" )
 Response.Write( "<input type=’submit’ name = ’submit’ value = ‘Go on’>" )
 Response.Write( "</form>" )
Else
 If Application("Queue") <> Empty Then
  ShowQueue
  If Request.Form("submit") = "Join-In-The-Queue" Then
   JoinInQueue
   Response.Redirect("WashingRoom.asp")
  ElseIf Request.Form("submit") = "Have-Finished-Washing" Then
   ExitFromQueue
   Response.Redirect("WashingRoom.asp")
  ElseIf Request.Form("submit") = "I-am-Busy" Then
   ExitFromQueue
   JoinInQueue
   Response.Redirect("WashingRoom.asp")
  End If
 Else
  Response.Write( "No one in the washingRoom now!" )
  If Request.Form("submit") = "Join-In-The-Queue" Then
   JoinInQueue
   Response.Redirect("WashingRoom.asp")
  ElseIf Request.Form("submit") = "Have-Finished-Washing" Then
   ExitFromQueue
   Response.Redirect("WashingRoom.asp")
  ElseIf Request.Form("submit") = "I-am-Busy" Then
   ExitFromQueue
   JoinInQueue
   Response.Redirect("WashingRoom.asp")
  End If
 End If
 Response.Write( "<form method=’post’ action=’WashingRoom.asp’>" )
 Response.Write( "<input type=’submit’ name=’submit’ value=’Join-In-The-Queue’>")
 Response.Write( "<input type=’submit’ name=’submit’ value=’Have-Finished-Washing’>")
 Response.Write( "<input type=’submit’ name=’submit’ value=’I-am-Busy’>")
 Response.Write( "</form>" )
End If

‘Response.Write( Application("Queue") )
%>
<hr />
<font color="#0000FF">Notice</font>
<ol>
<li>If you want to use washing room, please press "Join-In-The-Queue" button.</li>
<li>If you have finished washing your hand, please press "Have-Finished-Washing" button.</li>
<li>If it’s your turn and you are busy at the moment, you can press "I-am-Busy" button in order to re queue and let other body use the washing room first.</li>
</ol>
</body>
</html>