在正式讲设计网站之前,应该对现有网站开发的各种技术有个初步的认知,以免盲目使用各种技术。=

  为什么要使用各种开发技术呢,开发的技术,是用来解决问题的,可不是拿来创造问题的,我就发现很多童鞋喜欢搞什么新技术,追新的技术版本,这个完全是本末倒置了!

 

  网站的开发技术,按照开发者的分工或者开发层次来分,主要分为3种:前端技术,逻辑技术,数据库技术。这个是我根据我的开发经验进行自行定义的。

  其实公司大了,还有很多扩展的技术,最重要的就是分布式技术,是从逻辑技术中细分出来的,但是我们一开始不需要把网站设计的有100万人的访问量,这个以后扩慢慢扩充。

 

   前端技术按照我们的工作来分:界面设计技术,网页布局技术,互交处理技术

  1,界面设计技术,这个往往都是所有的人员都知道的,比如说photoshop 来画好网页 ,对图片进行精细划分,这块我们就略过,艺术方面的东西我懂得可不多。

  2,网页布局技术,常用的,就是通栏,左右两栏,三栏布局什么的,然后用html+css定义好样式,然后按照效果图画出来。这个增长版本就是网站栅格布局,以后再深入。

  3,互交处理技术,就是javascript对网页的各种元素的处理,这个的增强版本就是ajax了,还有各种框架jquery yui之类,也以后再说吧

 

  网站逻辑技术,最技术里面用的最多的,而且最开发的影响最大,按重要性逐渐递减

  1,字符串处理技术,包含了正则处理字符串,验证等 

  2,ORM,对数据库的操作

  3,数组,哈希表,字典,泛型的使用技术

  4,图片处理:压缩,补边 

  5,cookie session技术,对保存的数据进行处理 

  6,缓存:控件缓存,页面级缓存 ,系统级缓存,分布式缓存。

  7,日志:报错,访问记录,访问分析 

  网站扩展的技术,可以不使用

  8,搜索引擎,分词搜索,索引建立

  9,自动处理服务:对系统需要自动处理的东西,比如搜索引擎定时创建索引,就需要加入自动处理服务

  10,多线程技术,用的比较少。

  11,锁技术

  12,IOC技术,类的控制翻转

  13,AOP封装,常用技术的标示

  14,控件:组件技术,控件的封装,重载,对控件添加方法

  数据库技术

  1,建表技术

  2,索引技术

  3,函数,存储过程技术

  4,外键主键

  5,分表,横向拆分,纵向拆分

 

大概常用的就是这些,分为三个章节,仔细讲讲。一会见

posted @ 2010-10-08 16:11 周骏 阅读(41) 评论(0) 编辑

  各位童鞋,现在偶要给大家讲的,是一个网站开发组里面比较有争议,也比较有冲突的问题,那就是作为一个项目的核心,到底是谁呢?

 

  这个就是哈姆雷特问题,每个人都有自己的见解,我也讲解一下我的见解吧。

 

   作为网站开发,需要做的事情很多,先列举一下到底有多少工作等着我们去完成吧

  1,项目设计,对自己要做的项目,有个一个全盘的思考,决定整个开发的内容,这个不是我们教程考虑的东西,就不多说了

  2,需求分析,对项目整体进行划分,大致划分功能,并把功能进行难度评估,理出制作出功能的时间节点。

  3,根据需求分析,对项目进行拆分,理出哪些是一期工程要做的,哪些是后续需要扩展的。

  4,根据项目,在要开发使用的数据库建立表以及字段,化一个类结构草图,然后逐步细化类的功能

  5,调用以前做好的公用类库,如果没有就建立自己的公用类库,然后根据使用公用的ORM组件,或者自己编写一个ORM,生成文件后添加入项目

  注意:这里我强烈建议大家自己写代码生成器,根据表或者视图生成所需要的实体和操作数据库的方法,原因以后再解释

   6,制作网站前端设计,画photoshop效果图,简单点就用firework好了,将所有图画出来后,查看整体效果,并进行归档。

  7,对着效果图,设计html前端代码,然后将html需要使用的css进行细分,量化,归档,还有不可缺少的兼容性测试。

  8,为html添加js效果,也可以使用js框架库,比如说jquery 

  9,设计程序后端代码,按照前端的样式,添加控件,或者组件什么。

  10,程序后端代码的重构。

  11,功能测试,黑盒测试,有时间再白盒测试,然后就是上线。

 

 

  说了这么多玩意儿,到底哪个是核心呢,我认为的核心是 UED (第七项),说专业点,就是用户体验设计,是英文User Experience Design的缩写。这个是个什么玩意呢?

 

  说这个之前,先说说淘宝的发展吧,淘宝2006年,没有开设这个项目组,2007 年3个人,2008年20人,2009年不清楚,不过目前来说,这个组的人数包括了北京的新开发的团队,已经有120号人,而且这个团队还持续在扩大,大家看看淘宝这几年的发展,就明白别人为什么成为中国电子商务的霸主了。各位要组网站的,多访问一下ued.taobao.com吧,受益良多,是不是广告,看疗效。

 

  我为什么说UED是开发的核心呢,用户直接能看到的,就是网站样子,谁去关心你的程序是多么的强大,数据库是多么的健壮,毕竟搞IT专业的人,在所有的访问者中可占不到1%吧,99%的流量都需要不懂技术的人来贡献。

 

   我们又从技术角度来说,前端用html显示,是必然的结果,没有其他的代替品,而后端程序呢,.net php java可有得选,这样不熟悉,可以换一样,总能找到自己会的,擅长的,数据库方面也是一样,什么mysql,sql server多的是。只要按上章说的那样,生成需要的html,返回给用户的浏览器就可以了。

   

 

 

 

  

posted @ 2010-10-07 22:18 周骏 阅读(35) 评论(0) 编辑

  别人是怎么怎么在浏览器里面输入一个域名就能访问到你的网站呢?这个问题看起来很长,初步一看,还觉得很简单,仔细想想后,越来越觉得复杂。

 

  这个访问网站的原理,是我们成为一个网站制作大师必须深刻理解的一个过程,注意,这个很重要,比什么.net java 性能效率 访问量这些东西更加重要。因为这个你所作工作的基础

 

   先说说为什么必须了解这个原理吧:

  1,和你网站功能有很重的关系,程序运行顺序的不同,会导致很多功能做了,但是却不起效果,你还找不出原因

  2,网站的功能效果的实现,是依赖于css  js  和一些交互ajax等等

  3,网站功能维护的基础

  4,网站出错了,从哪儿去解决

 

  好了,其实原因多的很,我也不一一列举,这意义不大,我们还是赶快了解一下到底是怎么完成这个过程的吧

 

  第零步,如果网站有全局设置文件,则在网站服务器上首先执行程序,注意,此过程是优先于你访问网站就执行的

  第一步,别人输入网址,通过网络上的DNS服务器,找到对应的IP地址,也就找到你的服务器

  第二步, 如果服务器上面,有网站服务,并且默认访问端口为80,则根据绑定的域名访问所在的目录

  第三步,根据网站服务器的设置,有默认访问的文件名,例如index.asp  , 则自动访问该文件,否则就报404错误

  第四步,用户的浏览器开始读取你页面文件的,也就是html代码

  第五步,网页浏览器解释器,根据html中的外部引用文件,开始下载外置的css js img文件

   注意:由于浏览器设计的问题,同时下载外置文件的“通道”为2个,其他的文件则排队,下完了前面的,才会下载后面的,如果其中有个多个文件的下载速度比较慢,会影响所有文件的下载!

  如果文件找不到,就会跳过~

   第六步,网页开始从上至下开始解释html 并将 同步进行刷新网页里面的标签的样式定义,js定义等等。

   第七步,浏览器验证js定义是否完整,是否有JS错误等,如果有,就抛出错误

 

   注意:第六步与第七步是交替执行的

 

   也许有经验的童鞋怀疑此过程是否正确,怎么没有框架里面那些方法定义的东西啊,比如说ASP.NET一加载,就会开始使用Page_Load事件呀。还有网页加载完的销毁事件等啊。

   在每个动态语言里面,都有类似于加载前,加载时要执行什么的定义,这些定义的目的,是为了更加细节化以上的流程。在用户真正申请访问,或者叫申请读取html的时候,程序会从已经编译成功的文件中(例如asp.net 就是 bin里面的 dll 动态链接库文件 ,java 就是 jar 包),找到 命名空间 或者叫 相对应 执行的方法,然后执行下去,生成用户需要的html 。

  而我们的浏览器提交的申请,其实是没有去直接调用这些方法的,请注意区别这个细微的差别 ,我们所需要的,其实只是那个结果,就是由程序生成html代码

 

  这个就是做好一个网站的核心,html代码,决定网站的展现。

 

   所以,只要能生成你所需要的、合格的Html代码,用任何语言,任何平台都是可以的。

 

 

posted @ 2010-10-07 19:18 周骏 阅读(33) 评论(0) 编辑

  说到网站的构成,不管是静态网站,还是动态网站,其实都是由html和css 和脚本构成的,其中css 和脚本是不必要的。其实很多的标签,比如<html> <body>这些标签,都是可以去掉的,网页只是一个文本的形式,后缀名改成htm了而已,目的是为了让各种网站服务器比如说IIS的解析器能够知道这个是网页,能够让用户的浏览器有权限读取这种格式的文件而已,这个后缀名可以改成任何格式的东西,只需要在解析器里面去配置就可以了,至于怎么去配置,可以百度一下。

 

  转回正题,一个网站,必定有各级目录,目录下面有存放的各种文件,图片文件,样式文件,脚本文件,还有就是我们的主角,网页文件,这四者,是构成一个“完整”的基本元素。

 

  网页文件,按正营分成了后缀名为 asp php aspx 这些 ,而这些文件里面的内容,也大同小异。主要的区别就是添加这个页面需要用什么解析器来解析,比如说微软阵营的,都是<%%>,php阵营都是<?php ?>,这里就不一一赘述了

 

  网站的构成,里面最重要的一点,就是涉及到页面的生命周期的问题,这个问题听起来很专业,每个平台,每个框架的答案都不一样,但实际的的问题,只是在问你“当用户访问网站是,你的网站是怎么返回html给用户的,我需要知道具体的内容!”。

 

  多数开发经验不超过3年的童鞋,在学习的时候,都回避免这个问题,也不会去思考这个问题,会觉得“.net平台都帮我做好了,我不太需要理解其中详情,以后有时间再说吧”,最开始的时候,我也是这么理解的,甚至分不清楚服务器端,和客户端之间的关系。

 

  为什么这个问题这么重要呢,因为它是决定你网站是否能够让用户浏览到正确内容的决定性条件,虽然平台帮你做了很多工作,但是你却不知道它在帮你做什么,这就是你的失职了,如果你出现了你不知道的问题,你却不知道问题出在哪一步上面,连找错误从哪儿开始找都不知道,那就变成茶几上面的一个个杯具了。

 

  下一章,我们来仔细思考一下你到底怎么访问网站的。

posted @ 2010-10-06 23:11 周骏 阅读(30) 评论(0) 编辑

  做一个网站,定下的需求,其实和平台的选择,以及框架设计方案有不少的关系。

  现有阵营用的最多的,莫过于asp ,不过这个方案并不是我推荐的,就算选微软的解决方案,也选.net呀,至于原因,大家可以在网上查查为什么03年的.net要比90年代的asp好。还有很多学习java 的,说句心里话,我认为.net的童鞋在学习能力方面的理解力方面,可能真的不如java阵营的童鞋,大家也不要开骂,我也是.net出生的,后面好奇才去学习java的,再后面就学习了一下php,也是因为好奇嘛。

 

  一个好的网站,选择的架构,最有可能的,其实是php的,看看现在全的确最NB的网站,有几个不是PHP开发的,原因其实是因为PHP比.net和java都简单,就这么一个原因,就让很多人投入的PHP阵营。

 

  这里所谓的简单,包含了3个方面:

  1,网站配置简单,跨平台,免费,数据库搭配的mysql免费,扩展各种分布式组件免费的很多。

  2,方法简单统一,学习成本低廉,比如说数据,只有var 和 数组 ,不比去考虑太多的string bool什么的,只需要考虑好操作数据和数组就可以了

  3,因为PHP只开发网站,学习成本低,整体开发成本低廉。

 

  在IDE开发易用性和环境配置上,只有.net能略胜一筹,但是由于.net本身的复杂性过盛,导致在网站开发这一块方面,是敌不过PHP的

 

  不过作为java 和 .net  的童鞋,也不必灰心,条条大路通罗马,虽然不能达到开发的极致,但是只是要做为一个练习的学习项目,开发的思路是相通的,用哪种平台问题都不大,以后项目做成熟了,网站肯定是需要重构很多次的。到时候转向PHP不久成了。不必要在现在就加大成本去学习PHP,反正我们还有的是时间嘛。

 

  

posted @ 2010-10-06 23:03 周骏 阅读(28) 评论(0) 编辑

  欢迎回到本系列课程,今天讲讲“最初的思路”

  我觉得本课是一切的基础,因为这个最初的思路,也是决定你网站成就的东东。

 

  有很多童鞋有设计网站的经验,也有开发网站的经验了,每个人的思路都有自己的风格,搞JAVA开发的童鞋,一听要开发网站,马上就是配置环境,加入jar包,什么ssh用的忒熟练。.net的童鞋就开始打开VS,开始建解决方案,加项目,建页面什么的。有经验点的童鞋,就开始在脑海里面构建一个“完整”的项目构架,什么IOC,AOP,MVC什么的框架都等着拿出来安装到网站框架里面呢。

 

  其实我说的开发思路,不是将如何建立网站项目这个的,.net 和 java 都略懂一点,java 和 .net 阵营的思路的不太一样的,PHP稍微接近JAVA一点。

  我所说的思路,是如何完成目标,不同的想法,会导致在开发过程中出现的各种问题与矛盾的解决方案的不一样。如果采用不妥善的方式来盲目解决问题,到最后问题是解决了,而离目标却南辕北辙。

 

  我的最初的思路,说通俗点就一句话“系统的一切程序皆是为前端html代码服务”。

 

  为什么是这个思路呢,因为我们看网站,只要程序生成的html与预想的html代码是正确的,一致的,那么网页体现出来的效果就绝对不会出错,这个也是“检验真理的唯一标准”。

 

  我们不管怎么做程序,其实不是要实现什么功能,存取什么数据,其真正目的,只是要生成一堆HTML代码,然后能够让客户端能够获得这些字符串而言。

  这个是我们程序的本质,也是最简单的思路,去除表面华丽的外壳,其实所有的页面,都是字符串。

 

  根据这个“思路”,所有的平台,所有的框架,所有的类库,都是为了完成生成html而做出的努力,只要我们能“高效”的生成用户需要得到的html代码并返回给客户端就可以了。说高端点,这个思路也是一个“跨平台”的解决思路。

 

  

posted @ 2010-10-06 22:41 周骏 阅读(26) 评论(0) 编辑

  各位童鞋,晚上好,今天这个主题,是讲讲什么是好网站

  好的网站,在我看来分为以下几点:

  1,让人不会反感的界面设计

  2,良好的用户交互体验

  3,访问速度

  4,程序功能强大

  5,数据稳定安全

  6,经常添加一些新的功能,让别人觉得这个网站很有潜力

 

  以上几条,构成了“用户粘度”这个让网站赚钱的东东,也许还有童鞋补充其他的重点,不过还是简单点,我们能做到以上几条就很不错了

 

  看这个帖子的童鞋们,不管是初学网站的,还是有几年开发经验的,都会遇到一个问题,怎么才能做好一个网站。

 

  这个问题,要从如何分辨一个网站的好坏开始,如果标准都无法确定,怎么能知道自己的目标呢。可能各位看客有做前端的,有做程序的,也有主力写数据库的,按阵营来分,又分为asp php .net java 等等的,都能列举出来自己阵营里面不少“好”的网站。也会有些童鞋争论,好的网站,是赚钱的网站,技术不一定要多高之类的。这里我就不深入经营这个方面的问题了,这方面是仁者见仁、智者见智的。

 

  我说好的网站只是从技术上看起来比较“漂亮,强壮”的网站,我也不用那些什么“低耦合,高内聚”的专业术语来忽悠各位小正太了。

  “简单点,比什么都好”,这是我开发的核心思想,不要把做一个简单的系统,按园子里各位“砖家叫兽”忽悠的,要分成3层,要MVC,要AOP,IOC这些。光是去学习这些东西,却不知道为什么要用这些东西,胡乱的把这些技术用到自己系统里面,到最后还是自己“自讨苦吃”,去把那些不理解的东西给剔除,又费事又费力。

  好的网站对于普通的用户其实就是“前端容易操作,程序健壮不出错,速度快”。我们做开发的,要满足这些“基本”条件,其实是不容易的事情,因为我们还需要面对“软件功能维护修改,数据安全稳定,系统需要扩展”等隐性的要求,而这些要求,又加大满足用户“基本”要求的开发难度,越到后面,控制力越不足,越觉得这个程序是个泥沼。

 

  而现在有不少网站,都能做到一个“好”网站要求,但在天朝这个环境里,我们要访问那些好网站,不得不“爬墙”出去看看,这对很多没有这个方面经验的童鞋来说,又加大负担,我就不举例国外网站,就拿我们天朝最大的C2C来做教程材料吧

 

  好,本课就到这里,一会继续下一课。

posted @ 2010-10-06 22:07 周骏 阅读(23) 评论(0) 编辑

先介绍一下自己,周骏,3年前端,3年程序,4年架构经验。略懂c#,java,php~~

先初步写一下 教程思路,也是对自己几年工作经验的一个总结,以后再重构文章结构和内容

目录:1,什么叫好网站,特点是什么?

   2,最初的思路,怎么着手开始

   3,开始设计方案。

posted @ 2010-10-06 21:25 周骏 阅读(20) 评论(0) 编辑

只讲重点,不说废话。

1,只有html的代码、css样式、js效果才是会给用户看到的东西,用什么语言生成的无所谓,所以,重要的东西,是html、css、js。

2,理解网站访问的断线访问,能够明确的知道post与get的区别, 知道每次get post 发送数据,发送出去的到底是什么东西。

3,知道 java .net php asp语言只是遵循html协议  进行发送和接受get post数据的“工具”,它们发送出去的东西,其实是一样的。

4,知道语言之间并没有本质差别,真正的差别,是每种语言定义的函数功能不一样,熟悉一种语言,实际是出了编码方式规则,最重要的就是函数的作用。

5, html常用的标签,才是“有用”的,css必须精通,js懂得大部分操作dom的语法,并熟悉一种js框架,我在这里推荐yui而不是jquery

 

程序方面

 最有用的是数组,对数组的操作,比如说查询,插入,删除,添加等,我们需要根据语言的不同,编写自己的方法或引用外部库来操作数组,语言自带的类库功能都不太强。

请将数组序列化,可以序列化为xml用于不同语言的平台的传输,也可以序列化为json,方便用于网站前台js调用对象,或者初入数据库的字段中,分布式缓存中。

正则表达式很重要,虽然初学者看起来很“天书“,只有用正则表达式才操作 文本中想要的一段字符串才是最可行的。理解贪婪匹配等重要高级功能,熟悉本语言的正则库方法。

封装,继承,多态是面向对象三大概念。但是在实际中真正提高生产效率的、最常用的是封装,继承与多态请不要看那么重,那是在网站重构后期才做的工作。

缓存很重要,不过不要过度缓存。请在网站建立的前期,将这个工作放下来。

能够把程序中常用的方法,进行整理,总结成一个Common类,方便经常使用。

不要用网上那些”成熟的orm“,写一个属于自己的ORM代码生成器,直接用原生的sql就好,里面包括增删改,批量增删改,增删改sql语句返回字符(用于事务批量处理),分页查询方法。

如上所述,简单最重要,不要将简单的程序复杂化,理论化。其实不就是发送post和get数据而已。

 

数据库方面

 拿一个表,专门保存流水号生成。

不要依赖于外键、主键、存储过程 这些数据库的操作方式。将数据操作放到程序中。

可以有冗余,尽量不冗余。

懂得分表,按id序数拆,按日期拆。

 

posted @ 2010-08-06 16:50 周骏 阅读(247) 评论(3) 编辑


http://sourceforge.net/projects/ming/

http://www.ibm.com/developerworks/cn/opensource/os-php-flash/index.html?S_TACT=105AGX52&S_CMP=techcsdn#author

=========================================================
http://www.roading.net/blog/post_205.html
找来资料

以前开发项目中也为如何可以用户可以自定义生成出SWF而头大

ming(http://ming.sourceforge.net/) 和swftools(http://www.swftools.org/) 都是开源的项目,都是用c编写的.都可以用来生成swf文件,包括在swf文件内增加图片,声音,视频等素材,也可以在文件内增加代码,使用滤镜.
区别是:
ming:使用起来更方便,资料更多(我所看到的),as支持更好,就是更新太慢.
swftools:工具更齐全(有十多种工具,见下文).但是资料不多.

ming(可以使用php,perl,python生成swf文件,php5安装的时候自带,php5帮助里面用完整的函数说明):
sf: http://ming.sourceforge.net/
更新信息:
http://www.libming.net/moin.cgi/%e6%9c%80%e6%96%b0%e6%94%b9%e5%8a%a8
最近版0.4beta4:
http://sourceforge.net/project/showfiles.php?group_id=18365&package_id=187304
最新版本信息:
http://www.libming.net/moin.cgi/Releases
使用ming开发的站点列表:
http://www.libming.net/moin.cgi/Websites_using_Ming
大量的ming的php实例和源码(看了这些代码你就知道生成一个swf是多么简单,但是你最好明白每句代码的含义):
http://www.gazbming.com/



swftools:
最近版本0.8.1:http://www.swftools.org/download.html
文档(内容太少了):http://www.swftools.org/documentation.html
工具和介绍:
* PDF2SWF A PDF to SWF Converter. Generates one frame per page. Enables you to have fully formatted text, including tables, formulas etc. inside your Flash Movie. It's based on the xpdf PDF parser from Derek B. Noonburg.
* SWFCombine A tool for inserting SWFs into Wrapper SWFs. (Templates) E.g. for including the pdf2swf SWFs in some sort of Browsing-SWF.
* SWFStrings Scans SWFs for text data.
* SWFDump Prints out various informations about SWFs.
* JPEG2SWF Takes one or more JPEG pictures and generates a SWF slideshow.
* PNG2SWF Like JPEG2SWF, only for PNGs.
* GIF2SWF Converts GIFs to SWF. Also able to handle animated gifs.
* WAV2SWF Converts WAV audio files to SWFs, using the L.A.M.E. MP3 encoder library.
* AVI2SWF Converts AVI animation files to SWF. It supports Flash MX H.263 compression. Some examples can be found at examples.html.
* Font2SWF Converts font files (TTF, Type1) to SWF.
* SWFBBox Allows to readjust SWF bounding boxes.
* SWFC A tool for creating SWF files from simple script files.
* SWFExtract Allows to extract Movieclips, Sounds, Images etc. from SWF files.
* RFXSWF Library A fully featured library which can be used for standalone SWF generation. Includes support for Bitmaps, Buttons, Shapes, Text, Fonts, Sound etc. It also has support for ActionScript using the Ming ActionCompiler.

在PHP/JSP中用MTASC编译AS在线生成SWF的方法与介绍

这个方法说老实话我不喜欢,因为要用SHELL.
MTASC是一种用将.as源文件编译成.swf文件的命令行编译器.
在PHP允许SHELL的情况下可以调用。
http://hossy.net/sssc/
这就是作者的地址。
其实没什么难度,因为工作都是MTASC完成的。不能让PHP独立完成。
除了PHP搭建MTASC外壳还有用JAVA搭建MTASC外壳的
http://www.scotthyndman.ca/?p=73
现在有没有不用MTASC做??

posted @ 2010-06-25 10:45 周骏 阅读(87) 评论(1) 编辑