1 前端框架一般指用于简化网页设计的框架,比如,jquery,extjs,bootstrap等等,这些框架封装了一些功能,比如html文档 *** 作,漂亮的各种控件(按钮,表单等等)。
2使用前段框架可以降低界面开发周期和提高界面的美观性。
3有些框架比较轻量,比如jquery,有些框架比较重量,比如extjs。一般来说重量的框架会封装更多的功能,比如extjs,封装的grid控件有很强的数据展示和 *** 作功能。
1对用户的价值:
大部分产品对用户的核心价值是功能和内容提供的,而不是由表现层和交互。譬如支付、电商、新闻、交友。
后端解决有还是无的问题,开天辟地。
前端解决有了以后好用的问题,锦上添花,在竞争激烈的领域确实至关重要。
2技术广度和难度:
广度上后端工作在服务器领域,能控制的硬件基本没有极限,CPU、存储、网络、集群等等,因此技术领域极广。一个优秀的后端需要掌握或了解大量技术如:并发、业务架构、数据库、几打流行框架、性能调优、分布式计算、集群架构、容灾、安全、运维等等,一层挖透了还有下一层。几十年计算机发展历史中大量的技术沉淀在服务器端。
Web前端一直工作在一个浏览器盒子里,先天不足,能承载的可能性太小,技术广度不足。
深度上,现代计算机领域的难题如大规模负载,海量数据处理,实时计算也是后端的,前端集中在表示层,这一层虽然也很复杂,但能称之为难题的技术几乎没有,也很容易复制。
前端要说深度也不是没有,但这一步需要跨到图形领域(如网页游戏),不是常见场景。
说到底前端代码能控制的硬件确实不如后端,因此在技术上,前端更容易。现在为什么说前端会比后端更值钱呢那是因为前端对硬件的控制能力提升了(html5odejsmobile),而后端分化得比较厉害,有一批后端专门只写业务逻辑,框架是别人写的,系统架构是别人搭的,服务器跑在云里,连机器物理地址都不知道。世人眼里可能觉得这种写MVC代码的人才是后端,这种被限制在一个“虚拟盒子”里的后端确实不怎样难上手。
一般而言网上说的互联网行业的技术含量排名大概是这样:
产品经理<设计师<前端<后端<其他更高级职位,比如算法工程师等等。
在广大中小公司,很多产品经理都是不会代码,不会设计。很多技校学艺术设计的毕业生,当上了美工。这些都是真,所以能力低,干的人多,自然就低。然而,你问Google设计师挣多少了嘛
门槛低不等于技术含量低。
首先打开控制面板,选择“程序”,双击“打开或关闭Windows服务”,在d出的窗口中选择“Internet信息服务”下面所有地选项,点击确定,开始更新服务。打开浏览器,输入“localhost”回车,如果出现IIS7欢迎界面,说明启动成功。
服务器能够响应终端的服务请求,并进行处理。我们在上网的时候是不可能直接将网络接入互联网的,我们都需要通过服务器来连接网络,只有服务器响应你的联网请求,并且进行处理以后才可以联网;存储的功能,服务器的存储空间一般比较充足,可以存储非常多的信息。
服务器部署注意事项
在许多服务器机架,电源分配单元(PDU)的部署仅仅只提供了数量有限的输出口,所以一台已经被大量使用的机架可能没有足够的开放式PDU插座以容纳更多额外的服务器,或无法很方便的为服务器电源线安排可用的插座。
用户可能会需要重新安排一些线缆,而只能通过拔掉服务器的电源了,而这会造成系统的停机,故而这就需要运营团队进行提前安排了。
转载表面上看,是一套基于B/S方式实现的分布式管理系统,但其实背后的架构是基于C/S完成的。你以为他是一只鞋吗?其实他是一个吹风机。作为界面化的系统,浏览器框架是不可或缺的,但更加重要的东西在Socket上面。
一、需要解决中央控制端到各节点服务器之间的通信。
这个其实牵扯到一个通信协议的问题,各语言都有自己的socket,thread的库,直接调用即可。但是这个通信协议就需要自己来完成了。既不能太简单,太简单了,明码传输,如果别人获知了这个接口,就很容易执行一些令人讨厌的 *** 作。也不能太复杂,太复杂了等于是给自己找麻烦,所以简单的数据包编解码的工作或者用token验证的方式是需要的。通信协议起码要两种,一种是传输命令执行的协议,一种是传输文件的协议。
二、跨语言的socket通信
为什么要跨语言,主控端和代理端通信,用什么语言开发其实无所谓。但是为了给自己省事,尽可能使用服务器上已经有了的默认语言,Ambari前期采用phppuppet的方式管理集群,这不是不可以,puppet自己解决了socket通信协议和文件传输的问题,可你需要为了puppet在每台服务器上都安装ruby。我是个有点服务器和代码洁癖的人。光是为了一个puppet就装个ruby,我觉得心里特对不起服务器的资源。所以我自己写了一个python的代理端。python是不管哪个linux系统在安装的时候就都会有了。然后主控端的通信,可以用python实现,也可以用php实现,但是考虑到对于更多的使用者来说,改php可能要比改tornado简单许多,所以就没用python开发。hadoop分支版本众多,发布出去,用户要自己修改成安装适合自己的hadoop发行版,就势必要改源码,会php的明显比会python的多。php里面的model封装了所有的 *** 作,而python只是个 *** 作代理人的角色而已。
所以也延伸出一个问题,什么语言用来做这种分布式管理系统的代理端比较合适,我自己觉得,也就是python比较合适了, *** 作系统自带,原生的package功能基本够用。用java和php也可以写agent,但是你势必在各节点预先就铺设好jre或者php运行环境。这就跟为什么用python和java写mapred的人最多是一样的。没人拦着你用nodejs写mapred,也可以写,就是你得在每个节点都装v8的解释引擎,不嫌麻烦完全可以这样干。原理参看map/rece论文,不解释。perl也是 *** 作系统原生带的,但是perl的可维护性太差了,还是算了吧。
所以这就牵扯到一个跨语言的socket问题,理论上来说,这不存在什么问题。但这是理论上的,实际开发过程中确实存在问题,比如socket长连接,通信数据包在底层的封装方式不同。我没有使用xml-rpc的原因之一就是我听说php的xmlrpc跟其他语言的xmlrpc有不同的地方,需要修改才能用,我就没有用这种办法。最早是自己定义的 *** 作协议,这时就遇到了这些问题,所以后来直接采用了thrift方式。就基本不存在跨语言的socket通信问题了。
三、代理端执行结果的获取
无论命令还是文件是否在代理端执行成功,都需要获取到执行结果返回给中央端。所以这里也涉及一个读取节点上的stdout和stderr的问题。这个总体来说不是很难,都有现成的包。当然这个时候你需要的是阻塞执行,而不能搞异步回调。
还有个问题是,我要尽可能使用python默认就带的包,而尽量不让服务器去访问internet下载第三方的包。
还有代理端最重要的一点,就是python的版本兼容性。centos5用python24,centos6用python26,ubuntu基本默认都是27。所以一定要最大限度的保证语言的跨版本兼容性,要是每个 *** 作系统和每一个版本我都写一个代理,我一个人就累死了。
四、浏览器端的model,view,controller
这里面你要封装好所有的通信协议,以及需要在节点上面执行的脚本。发送文件的 *** 作和数据库 *** 作也要在model里面完成。
如果对tcl/tk很熟,也可以写基于 *** 作系统界面方式的管理,不用浏览器就是了。
view对我来说是最痛苦的事,都是现学的jQuery怎么用,前端的工作太可怕了。关于这方面,没有太多可描述的,html和js带给我的只有痛苦的回忆,万恶的undefined。
五、跨 *** 作系统的安装文件封装。
要适应不同的 *** 作系统也是个很麻烦的事情,需要用agent提前获知 *** 作系统的发行分支,版本号。然后去找到对应的安装文件去执行。你不能保证一个分布式系统的集群中所有的节点都可以访问internet,更多的情况是这些节点都存在在一个安全的内网中。只有个别几个节点是可以访问外网的。所以,我势必要把所有的安装文件以及他们的依赖尽可能集中起来。我不确定安装 *** 作系统的lzo,yum或者apt-get会去下什么鬼东西,甚至无论是yum还是apt-get,里面都没有hadoop-lzo的库文件。所以,最好的办法是自己编译打包rpm和deb包。直接安装就好了,别去找repo下载什么。
这就是第五步工作,把需要的依赖的东西自己编译打包成rpm和deb。
deb包很好解决,但是rpm就没那么好办了,需要学习rpm的编译文件如何编写,这块是挺麻烦的,但是这玩意用好了还是挺不错的。现在我自制的安装包里面就已经包含了自己编译的lzo和snappy两种压缩库,以及hadoop-gpl-packaging的rpm和deb。下一个发布的easyhadoop将直接支持centos5,6,suse,以及ubuntu/debian的系统上安装hadoop。已经自带了lzo和snappy以及lzop和snzip。
六、把这些所有东西,整合到一个系统里面。
关联这些所有事情间的联系,整合到一个浏览器界面里面去。写一个分布式的管理脚本不难,写一个界面也不难,但是也许是我的水平不行,这两件事结合起来让他们协同工作还是有点难度的。对我来说,写界面的工作可能更难一点。
Cloudera可能是十来个人在写Manager的东西,ambari也是放到github和apachesvn上面,apache基金会的各种committer在写。easyhadoop没他们功能那么强大,一年来只有我一个人设计架构,功能,各种语言的编码,测试,发布。Fortheloveofgod,WhathaveIdone(英文部分请站在山顶仰天长啸)T_T。从前台到后台,到hadoop和生态系统以及他们的依赖软件的单独patch、编译打包。(系统yum或者apt-get的包不如自己打的好使。)
从时间上来看,全球第一款开源的hadoop部署管理系统应该还是属于ambari,2011年8月开始写的,2012年9月底进入apache的incubator。我是大概2012年8月开始写的easyhadoop,全球第一没赶上,估计国内第一个开源的hadoop管理系统还是可以排上的。
无论是开发软件还是创建网站,真正困扰我们的往往并非软件的使用问题,而是软件技术之外的一些东西,真正决定一个网站是否成功的要素是设计、定位、推广等非技术手段。
一、整理规划。
网站建设的开始就应该有一个整体的战略目标,即确定站点的目标。
首先要有一个总的目标,这个网站到底是要做什么。有的要显示自己的设计水平,这就要求页面美观;有的是为了求职而设计的求职网站,这就要求提供足够的信息让别人了解你的工作能力;有的是要为用户服务,这就要求网站有较强的互动性,而本站建设之初的主要目的就是为了本人更好的学习网络知识,只是兴趣而已,本站站名“网页教学网”让人一看就知道是有关介绍网页知识的站点。而申请域名也是相当重要的大家都知道web译为网、网页、网络等,j是jiao的第一个字母,x是xue的第一个字母,其实本站的字母的缩写!当然大家申请注册域名时可以申请自己名字的拼音等!在这里不作过多介绍。
确定好目标之后,还要决定网站的目标观众。其中包括以下几种情况:
1目标观众的访问速度。很多在线教育网站采用不同的软件制作在线课件,但是视频无论如何在现在是不适合目前中国浏览者的网络带宽,不过提高我们的网络带宽也是一种发展的趋势。
2目标观众的计算机配置和浏览器版本。计算机硬件技术飞速发展,现在使用的计算机的配置都是比较高的!
所以我们在设计网页时,其实已经不必要考虑计算机配置了。需要注意的是在设计中要在不同的浏览器中浏览自己的网页,看看有没有发生变化。
3插件问题。对于有些软件,比如Flash的插件,现在大部分浏览器都安装有这种插件了,如果网页上播放视频,那么就要考虑浏览器是否需要安装相应的插件,在这时最好在网站中说明并提供插件和播放器的下载。现在好多**站都做的比较好,它们都提供播放器和插件的下载!
二、新建站点
规划好站点之后,就可以用专门的网页开发软件创建站点了。
在创建站点之前,我们应该首先在我们的磁盘上创建一个文件夹,用于存放站点内的所有资源,当然如果你的站点资源比较丰富这是可以建立子文件夹存放站点内相应的资源。例如:站点文件夹为myweb,子文件夹images用于存放站点内用到的,upfiles用于存放上传的文件,admin用于存放站点后台程序等等。创建站点在Dreamweaver软件中 *** 作比较简单,本站也已经提供了相应的视频教程,如果您不熟悉可以去查看下。
刚建立起的站点是空的文件夹,用户首先要设计站点结构。制作专业网站之前要有一个详细的计划,这样虽然会花费一些人力和物力,但总比出现了问题之后再修改要好得多。
在网站规划中一个很重要的问题就是确定站点结构。设计站点结构,就得确定站点子栏目;设计站点结构,就得确定、多媒体文件的存放位置;设计站点结构,就得导航条。专业网站中,必须要有导航条。
三、收集资源
确定好站点目标和结构之后,接下来要做的就是收集有关网站的资源,其中包括以下资源:
1文字资料:文字是网站的主题。无论是什么类型的网站,都要离不开叙述性的文字。离开了文字即使再华丽,浏览者也不知所云。所以要制作一个成功的网站,必须要提供足够的文字资料。
3动画资料:在网页上插入动画可以增添页面的动感效果。现在Flash动画在网页上应用的相当多,所以建议大家应该学会Flash制作动画的一些知识。
4其它资料:例如网站上的应用软件,音乐网站上的音乐文件等等。
四、布局页面
设计站点结构和收集了足够的资源之后,就可以开始布局页面了。在Dreamweaver中,可以通过以下手段进行排版:
1利用表格进行排版:表格主要有三个元素-表格、行和列及单元格,而且表格还可以嵌套,不过在这里建议大家不要把所有的网页都放在一个大表格中,并且嵌套最好不要超过3层,因为如果你那样做了,浏览器解析的时间会增加了,那么当浏览者访问时速度就慢了。
2利用层排版:层很适合形式自由的排版,现在WEB标准建议排版时抛弃表格,不过如果初学者学习利用层排版时还要学习其它好多相关知识,其中最重要的是CSS和Javascript,使用CSS来辅助层可以对网页实现排版,可以解决表格给我们带来的烦恼。如果你对WEB标准感兴趣,那么你就该好好的学习CSS了!
3利用布局视图进行排版:在DreamweaverMX2004中有专门的布局视图,我们初学网页设计时可以使用它进行排版。
4利用框架进行排版:它是一种用浏览器窗口,显示多个网页的形式,前几天记得有人在论坛中求,网页格式的课件,网页格式的课件大部分是用框架做出来的。
五、编辑文档与超级连接
经过上面的几个步骤之后,一切准备工作都已经就绪,现在可以象装箱一样把收集到的资料及制作的组件放到页面布局中为它们指定的位置上了。
插入到网页布局之后,文字都是同一种字号,同一种风格,同一种颜色;有大有小。所以这时就要对各种元素进行编辑了,例如,改变文本字体、字号、颜色、大小等,对进行大小,表格的调整,按钮行为的调整等等!
连接是网页的灵魂。浏览者在浏览网页时,单击网页设置的超级连接可以跳转到相关页面,所以一个好的网页是离不开连接的。
六、发布站点
站点的发布
网站发布就是把网站上传到因特网上,以提供浏览者浏览。上传之前必须检查你的域名和主页空间的申请情况,以及网页和站点的连接情况等。建议大家最好安装IIS,本站内都提供了iis501、iis60、iis50的安装程序。
上传软件一般都使用用FTP,上传到服务器中申请的域名下(具体要看看你申请空间时,人家给你的开通信啊!),上传软件一般有CuteFTP、LeadFTP等
站点的维护
站点发布之后还要经常对站点进行维护。站点维护是指不断优化网站功能和更新网页内容。维护网站的目的是使网站的结构规划合理、内容与形式统一、主题鲜明,经常更新网页内容,让网站与时俱进。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)