跳楼

跳楼

哎~开学了这么多天终于上网了

     自从开学到现在终于可以上网了,这几天一直忙着学校里的事,也没有时间来博客写点东西,现在终于可以了呵呵。不过现在计算机中心不能上网,所以可能在一段时间里还要在网吧上网,惨啊~~这一学期,班里因为成绩和各项表现比较好分了个多媒体教室~爽啊~这一切都在掌握中~~

暑假终于结束了—开学了

     暑假终于结束了,明天就要坐车回济南了,心里还是有点激动的,不过看着那么多需要带的东东—头疼!电脑、被子、衣服、还有一些零零碎碎的东西,太麻烦了。不过这个暑假玩的是不错,在家上网、出去去青岛玩(自己,嘿嘿)。不错啊,不过基本上没怎么学习,也没做点作品,太惭愧了
      新的一个学期,就要开始了。。。要做好计划。。。

优化Blog的十个步骤

   看到Jason Lee Miller 写的10 Ways To Optimize Your Blog一文,对于想优化Blog的Blogger很有帮助,对照一下自己,看看有没有可以改进的地方。

   
1) Tag clouds和tag页面,这个不错,是对于栏目归档的补充,也分得更为细。同时可以很好的把Blog内的文章串联起来,丰富内部链接。

    MovableType 4.0 已经内置了Tag系统,而且已经非常强大了。

   
2)添加"Related Entries"的列表,就像本Blog一样,可以把相关的文章罗列在单篇文章的后面。

    在MovableType 4.0 中可以添加一个"TagSupplementals Plugin 0.06"的plugin,就可以做到。

   
3)最热门的10篇文章,DavidYin就是这么做的,定期公布在SEO 网站优化推广Blog上10篇最受欢迎的文章。

   
4)在页面上添加"下一篇"和"上一篇"的按钮,以方便读者。这个已经几乎成为一种规范了。

   
5)适当的添加外部链接。这个部分DavidYin多次谈过,如"如何寻找有效的外部链接","增加高质量的链接,而不是垃圾链接"。

   
6)Title tags优化,就是把文章标题放在Blog名称的前面。

   
7)添加Blog到Technorati并且使用Technorati tags

   
8)利用置顶贴的功能,把具有丰富关键词的介绍放到分类归档页面。

   
9)找到活跃的Blogger,同他们多些互动。Blog就是Weblog,就是社会化的,没有互动如何才能算是Blog呢?

   
10)把自己的Blog放到其他的Blogger的Blogrolls上,不要问我怎么做。

    如果你有一个Blog,有待优化,那么就自己动手DIY一下。

   
对于那些托管在大陆各大BSP的博客,就算了,基本上你没有什么可以改进的余地。

Microsoft.com设计主管谈WEB设计经验

作者:Peter
来源:attachments/200709/9403706793.gifMicrosoft

从头衔上,您可能认为我主要关心的是microsoft.comWeb站点几千个网页的版面设计。的确,这些确实是我所关注的。视觉上的吸引力是重要的,但是这仅仅是工作的一小部分。而最终的目的是确保整个站点运转正常。

我的意思是,人们通常在访问attachments/200709/9403706793.gifmicrosoft.com时,并未将它当作艺术作品来赞赏。而是为了获得有关产品的信息,或者有一些技术问题需要咨询,或是阅读有关开发商的期刊。所以网站的设计应该尽量清楚和有条理,以便他们能够容易地找到所需信息。

在进行Web设计时--在设计过程中--形式应该服从功能。这种方法应用于我们站点的整个设计过程中。当然,我们有最新的Web工具,并且能够将各种可视的小配件上载到网页上。但是我们认为这样做将不利于为访问者提供有效的服务。事实上,我经常发现一些站点未将重点放在功能上。常见的错误包括:

用户界面元素不一致.例如,同一个控件在不同的页面上功能不同,或者同一个功能对应几个用户界面控件。

导航栏位置不一致。决定站点的哪些页和功能需要在站点的任何页上都可被访问到。这就是应该保持一致性的“全局导航栏”。

不太注意或根本不注意基本的图形设计原则,例如排版式样、色彩和版面的设计。

相关元素和功能的随意分组。注意将元素放置在网页上的位置和目的。这可帮助访问者从其它相邻的选择和位置来推断某个链接的功能。

使网页过于庞大,以至使访问者需要通过典型的调制解调器速度的Internet连接进行长时间的下载。这并不是说不应该使用图形,但是您需要对它们进行精挑细选,然后用适当的压缩和颜色索引优化它们。

现在的Web站点仍然存在很多问题,这并不奇怪。毕竟,Web设计“艺术”相对来说还是个新生事物。在四、五年以前,Web页甚至是普通的。那时,人们好像认为他们的Web站点将会吸引访问者只是因为它们存在--并且,可能在某些情况下这种方法确实有效。但是这些站点一般很难看,并且更重要的是,它们真的难以使用。接下来便进入“看看我们能做些什么”阶段,在网页中加入了大量的动画、声音文件以及其它附加件,导致访问者需要长时间地进行下载,但是并未获得多少实实在在的内容。如今的Web设计师们已经吸取了前人的经验和教训。好的站点倾向于简化和快速,同时在功能上有所提高。这是attachments/200709/9403706793.gif Microsoft 的目标,而且我们最先承认自己所犯的错误(参阅“attachments/200709/9403706793.gif Microsoft的Web简史”看一看以前的主页设计)。

设计错误并不总是显而易见的。有时在设计上对一个小元素的移动或更改将有很少或根本没有影响。但是,在其它情况下,它可能确实会对页面功能有所影响。而且如果说我们从过去几年学到了一些东西,那就是小的改动会使Web页的运行方式有很大的不同。

若要避免类似问题,我们为新服务(例如“搜索”)的创建或关键的Web页(如主页)设计了一个明确的流程。每个项目都是在一定的基础上开始的,即我们有一个受益于我们站点上的页面、部分或用户界面元素的产品或服务。在早期的产品计划阶段(第1阶段),我被要求设计一些初级模型:大致描述页面、部分或功能的草图。然后产品项目组检查产品计划建议,看看此项服务是否可以为microsoft.com的访问者真正带来一些实惠。

如果答案是“可以”,那么此项目会获得批准,我们开始写项目说明书(第2阶段)。我们在第1阶段的草图和概念基础上创建并提出一个更为完整的计划。这时,我们一般还会开始可用性测试(一般会有书面的模型)以了解潜在用户将对计划中的设计做出何种反应。在最后开发阶段(第3阶段),我们创建运行计划服务的Web原型,并且进行全面的可用性测试以及内部复查。然后完成站点的代码,修改程序错误,最后站点通过实际运转的Web站点向客户发布。

正如您所见到的,可用性在整个流程中扮演着重要的角色(参阅“创建有效的Web界面需要认真计划”)。我们可以为用户运行某项任务计时,这样我们就可以在产品以后的版本中对比相同的测试。我们可以使用这种方法进行度量,以确定一个功能的重新设计是否为客户带来任何真正的价值。还有,我们将仔细地观察以了解可用性对象是否可以计算出如何正确使用新功能--我们称为“可发现性”的方法。有时这为我们提供了一些挑战。例如:在我们的站点上,在搜索引擎中键入一个词组或字会产生一列结果。然后我们请用户选择在这些结果中进行搜索,以便进行更细的搜索并且导向某一页或资源。但是即使“在结果范围内搜索”被明显地标记在深色标签上,很少有人熟悉它。一些用户认为他们正开始新的搜索,并且可能毫无结果。我们正在解决这个问题以确保客户可以利用 microsoft.com上所有丰富的功能来提高他们对此站点的认识。

选项“在结果范围内搜索”看上去很直观,但不是非常易发现的。此问题一直是困扰我们的设计的问题之一。

大体来讲,站点设计是在发生冲突的需要之间求得平衡的艺术。一方面,我要将站点设计得尽量简单易用。另一方面,我要确保站点中所有强大的工具可为经验丰富的用户所用。与此同时,我还要为内部客户服务-- attachments/200709/9403706793.gifMicrosoft产品项目组--他们对服务有特殊的需要。所以每天我都要解决一些非常困难的问题,经常处于很紧迫的情形中。我发现这种工作是鼓舞人心和有趣的。

这个职业非常需要更熟练的专业人员。我是经过一系列非常不一般的过程--在大学学习图形艺术,然后在多媒体公司设计CD-ROM,最后加入 attachments/200709/9403706793.gif Microsoft并开发应用程序--才获得这个职位的。非常奇怪的是,当我申请(并获得)这份工作时,我以前从来没有设计过Web页。但是我广泛的设计经历已经证明是非常有用的,并且我自认为已经验证了格言“成功的设计就是成功的设计”(不论是什么媒体)。许多设计问题对Web来说是独一无二的,解决这些问题的方法对于任何媒体都是一样的。

对于那些准Web设计师我的建议是,他们也应该尽可能地扩大设计背景。今天应该确保将一些Web工作作为互动设计培训的一部分--大多数好的设计学校已将其加入课程中。但是在排版、色彩理论、版面设计以及生产等方面的扎实的技术将仍然特别有价值。在未来,Web设计师们仍将会继续被要求给页面增加更丰富的多媒体内容,从而为Web站点的可视性和可操作性增加了新一级的复杂性和技术要求。作为CD-ROM/多媒体设计师,要求我必须具有图形设计、视频、音频制作、动画等方面的知识和创作能力。我的预言是,Web设计师也将向这些领域发展。

对于属于attachments/200709/9403706793.gifmicrosoft.com的我们--以及在Internet上的其它地方--那应该是一个非常有趣的未来。

了解您的观众

调查一下究竟哪些人在访问您的站点,以及他们为什么要访问。新手或不定期上网的Web用户与软件开发商相比有非常不同的兴趣和站点需要。使您的站点对访问者来说有所帮助。

为您的观众提供所需的信息

使导航元素保持一致,并且确保对访问率最高的区域进行明显的标记,是它们易于被找到。

使用清楚的消息

确保用户了解此页面的上下文,并且知道需要他们做些什么。如果在注册过程中您要用户输入姓名,那么就直截了当地说。不要让访问者自己计算什么,他们会感到沮丧,于是转到其它更简单的站点(例如您的竞争对手的站点!)。

保持一致性

虽然更改不同Web页的外观并不难,但这并不意味着您应该这么做。将主要功能--例如返回“主页”的链接或者执行一个搜索--放在每页的相同位置。在microsoft.com上,黑色全局导航工具栏的位置在四十多万页上都是一样的。

使站点可用

牢记设计和测试站点的可用性。确保用户可容易地执行任务以获得所需信息。估算任务时间和任务完成率,然后努力进行改善。如果新的设计没有在这些方面获得改善,那么就不要实施它。重新从草图(或最初的计划)开始并尝试其它方法。

保持简洁

说起来容易做起来难。尝试征求反馈意见。有时新人可以很容易找到解决方案。

尝试新的东西

不要害怕打破常规,尝试一些完全不同的东西。如果您不试试,永远不会找到真正的答案。attachments/200709/9403706793.gif

谈PHP生成静态页面

 一 : 引  言
在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权限限制等,但是,对应一些我们经常频频使用的文件,比方说,开发的新闻发布系统,我们不希望很多用户都读取数据库才显示结果,这样一方面消耗了服务器的资源,另一方面占去了浏览者大量可贵的响应时间,所有,有了"静态页面话"的做法,当前很多网站都采用这种技术,一般都是由管理后台控制,或者生成html直接显示,或者xhtml用css控制显示,或者生成xml用xslt显示,这些技术都不是难的,在这里我就浅显的说说生成html的方法.

  二 : 预备知识 
   
      模板技术
      缓存技术:   

有些信息比方经常不变的,但是还是能变的信息放在缓存中以加快显示速度,这是很有价值的,所谓的缓存,通俗的理解就是一些保存在服务器端的共用信息.它是于服务器同生死的,我们在保存缓存的时候可以指定下次更新的时间的判断,比方要在5分钟更新一次,可以记录上次更新的时间,和当前时间比较,如果大于 5 分钟 ,读取数据库,更新换成,否则直接读取缓存数据,当然,缓存需要客户端用户激活的,只需一次.

ob_start()函数:打开输出缓冲区.
    函数格式 void ob_start(void)
    说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。

Flush:刷新缓冲区的内容,输出。
    函数格式:flush()
    说明:这个函数经常使用,效率很高。

ob_get_contents :返回内部缓冲区的内容。
    函数格式:string ob_get_contents(void)
    说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE.

ob_get_length:返回内部缓冲区的长度。
    函数格式:int ob_get_length(void)
    说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活,则返回 FALSE.

ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
    函数格式:void ob_end_clean(void)
    说明:这个函数不会输出内部缓冲区的内容而是把它删除

 ob_end_flush:发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区
    函数格式:void ob_end_flush(void)
    说明:这个函数发送输出缓冲区的内容(如果有的话)

ob_implicit_flush:打开或关闭绝对刷新
    函数格式:void ob_implicit_flush ([int flag])
    说明:默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush()    

     文件写入:   
int fwrite ( resource handle, string string [, int length] )
fwrite() 把 string 的内容写入 文件指针 handle 处。 如果指定了 length,当写入了 length 个字节或者写完了 string 以后,写入就会停止,视乎先碰到哪种情况。
fwrite() 返回写入的字符数,出现错误时则返回 FALSE 。
相关参考官方网站: 文件参考

  三 : 解决方案

思路: 开启 ob_start缓冲,当已经调出数据的时候获取 ob_get_contents,然后生成静态页,ob_end_clean清除缓冲.ok,就这么来,来看一个例子(php+mysql的结合):
创建数据库:
Create TABLE `bihtml` (
  `id` int(11) NOT NULL auto_increment,
  `szdtitle` varchar(16) NOT NULL,
  `szdcontent` text NOT NULL,
  PRIMARY KEY  (`id`) 
) TYPE=MyISAM;

获取当前的ID,并导入模板:

 

下载: PHP代码
  1. ob_start();
  2.  $id=_POST['id']
  3.  if(!isset($id)&is_integer($id))
  4.  {
  5. @$db=new mysqli('localhost','root','admin','bihtml');
  6.  $result=$db->fetch_one_array("select * from szd_bi where id='$id'");
  7.  if(!empty($result))
  8.  {
  9.  $tmp->assign(array(
  10.  "Szdtitle",htmlspecialchars($result['titles']),
  11.  "Szdcontent",$result['titles']));
  12.  }
  13.  $tpl->display('default_1.tpl');
  14.  $this_my_f= ob_get_contents(); //此处关键
  15.  ob_end_clean();
  16.  $filename = "$id.html";
  17.  if(tohtmlfile_cjjer($filename,$this_my_f))
  18.  echo "生成成功 $filename";
  19.  else
  20.  echo "生成识别";
  21.  }
  22. }
  23.  
  24.  //把生成文件的过程写出函数
  25.  function tohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content)
  26.  {
  27.  if (is_file ($file_cjjer_name)){
  28. @unlink ($file_cjjer_name);
  29.  }
  30.  $cjjer_handle = fopen ($file_cjjer_name,"w");
  31.  if (!is_writable ($file_cjjer_name)){
  32.  return false;
  33.  }
  34.  if (!fwrite ($cjjer_handle,$file_cjjer_content)){
  35.  return false;
  36.  }
  37.  fclose ($cjjer_handle); //关闭指针
  38.  return $file_cjjer_name;
  39.  }

四 : 说明事项

 

 1: 一般建议管理员添加数据的时候就生成静态页面,可以考虑记录生成的文件名次和路径.

 2:php主要是    ob_starts()和 ob_get_contents,生成静态页面的时候很有用,当然也可以考虑调出数据库直接替换模板里面的变量也是可以的.

 3:主要的模板使用smarty,phplib都是可以的,smarty使用比较简易.