Web应用开发工具及语言需要具备的功能探索 - partial

1 前言

最近一个多月在做Web项目,用到的技术有(也不算泄漏公司机密吧):

后台:Struts 2(with JSP/FreeMarker)、Spring、Hibernate、MySQL、Web Service(only dubbo interface);

前台:jQuery series;

Web服务器:tomcat。

虽然比较厌恶被别人称为做Java Web的,但没有做过的事情还是有挑战性的,一周内几乎天天加班足可以我的态度。

好像有成就感的计算机硕士应该觉得这些活儿是些"平凡"的凑工分的活儿,"纯"技术活儿怎么的也得是云计算、并行/分布式计算、数据分析/大数据等等高大上的。

惭愧,我以前也是这么觉得的,还大言不惭的提出"I‘m shy to rape your mind with your mind"。

不好意思,这里惭愧是对有3年+ 一线Web开发经验的程序员说的,如果不是,虽然我只有0.2年+开发经验,但我的态度还是I‘m shy to rape your mind with your mind.

为什么又是partial?

原计划是准备第一遍看完Python Django再回过头来写的,但是现在有更重要的事情,而作为结构化拖延症患者,自然就选择了这个不是很费脑细胞和时间的活儿,看能不能写完。

废话流太多了,该入正题了!

2  HTTP

每个Web开发者都应该感谢Fielding等人关于HTTP的工作,喜欢看飞机结构、功能说明书的学究可以去看RFC,想零基础起步学习开飞机的可以看[1]。

简单的Web应用中用的最多的MIME类型是text/html、application/json,暂时还用不到REST。

3 Web应用开发工具需要具备的功能

想跳出Java Web这个小框框,但发现对其他的开发工具没有足够的发言权,还是主要是Java Web开发工具吧。

IDE/编辑器是必需的!有语法高亮错误提示、自动补全?多多益善。

一个足够轻量而有不是太轻量的Web服务器,tomcat够了吧?不!没有热部署功能,改个Action或DAO接口Java类实现,都得重启一遍,想想人家PHP,多开心啊(LAMP不予评价),好像我们也有JSP啊,把业务/数据访问逻辑堆到JSP页面上是石器时代过来的吧。我目前没有看到很好的解决办法,只是尽量让启动的速度稍微快一点,保证等待的时间不超过一根烟的时间。

Web服务器支持静态资源是必须的,动态内容呢?每次重新生成?这应该是开发语言实现本身需要考虑的事情。Web服务器应该提供足够多的配置项,虚拟根路径、应用模块页面路径切分什么的,但也不要太多,毕竟它的职责只是收发HTTP请求/响应,过多的话就越权了啊。

4 Web应用开发语言需要具备的功能

好像应该是语言族,产品经理大多会把Web浏览器当前Web"富"客户端。

还是动态内容!

数据从哪儿来?数据库,甭管内存/进程、集中式/分布式、开源/商业的数据库,该开发语言的Bridge/Connector/Adapter模块/库总得有一套。

根据什么条件生成动态内容?应用逻辑一般很好实现,开发语言应该很方便的接收前台传过来的参数,不就是GET/POST嘛,稍微成熟稳定的框架足可以保证程序员手头很干净,至于multipart传个文件/视频,车到山前自有路嘛。话外,切分请求URL对应应用逻辑处理在当前项目中有使用,玩的真嗨,由衷的击节赞叹。

如果是恶意请求怎么办?诸如DoS攻击就不是语言本身能够解决的事情了,加些过滤器/拦截器切面基本上可以解决权限判断、SQL注入攻击了。

动态内容响应怎么生成?最“省力”的方法是对每个请求在线生成唯一的响应,够快、但不便于应付产品经理鬼魅似的变更。模板!又引入了个DSL语言,这年头不懂个几门编程语言都不好意思叫自己程序员,为了应对随时到来的polyglot language时代,多会门手艺多条出路嘛。模板语言又该有些什么功能?命令式的条件判断、循环是必须的,便利的数据格式转换等也是多多益善的。

数据流是怎么处理的?在哪里接收请求参数?业务处理前端还是响应页面上,不考虑性能的话随便。又怎么把响应数据堆到或传给响应页面上呢?推/拉随便啦。

至于富页面,糟糕的JavaScript规范、军阀混战式的浏览器实现,有人认为这是机遇,我认为是遭遇。还好项目组里用的是jQuery(core, UI, Widget)、有专业的前端工程师,他每次用CSS都让我一愣一愣的,还是让专业的人做专业的事情吧。至于ajax请求,每次面对产品经理不合理的页面逻辑,我很乐得用。

5 高级特性

这部分内容不是工具和语言本身能够处理的问题,需要融合包括业务逻辑、用户行为等作出决策,没有提供解决方法(所以是partial嘛)。

我十分愿意相信业务主管总是唱着这首歌在指派任务的:Harder Better Faster Stronger.

缓存

响应越来越慢了!慢的令人发齿啊!

局部性原理用的好,你好,我也好。

再听听缓存的声音:凭什么大家活得时间一样长啊,我明显比你用的多啊;为什么只能存这么多,还有大部分屁股露在外面呢?

rps/tps

程序员的那句“这个功能实现不了”被列为跟“您的菜马上好”、“钱我先帮你存着”、“往里走,里边还有空位”等一样的真实的谎言时,我很震惊。

需求很简单:页面从这里跳到这里、这里要显示这些,再跳到这里、要显示这些。你知道浏览器跟Web服务器交互了几次、Web服务器又跟数据库交互了多少次啊,把这个很炫的功能拿掉我能少写很多代码啊。

至于页面脚本放置位置等页面端优化可以参考成熟的团队总结出来的经验。

关键的还是得有个profile,数据足够说明你的怀疑是否正确。

用户行为跟踪、分析、个性化

恩,高级话题。还用不着扯上NoSQL,能保证每个页面被访问次数一样吗?哪些页面流会被用户经常的连续性访问?

还个性化,个性化什么?消息提醒啊?推啊拉啊!推荐内容?我的职位是什么来着。

参考资料

[1]Gourley D., Totty B., Sayer M. et al.HTTP权威指南[M]. 北京: 人民邮电出版社. 2012.

时间: 2024-10-24 09:33:08

Web应用开发工具及语言需要具备的功能探索 - partial的相关文章

Twixl Publisher下载 移动应用开发工具【MacOS】

Twixl Publisher Mac版是一款移动应用开发工具,Twixl Publisher Mac版可以让你轻松地创建iPad和iPhone/或Android应用程序,基于Adobe公司的InDesign内容. Twixl Publisher下载:https://www.macdown.com/mac/4819.html twixl publisher for mac功能介绍 1.创建>演示>构建>分发 对于内容创建,Twixl Publisher提供两种方法; 使用InDesign

WebKit Web Inspector增加覆盖率分析和类型推断功能

WebKit中的Web Inspector(Web检查器)主要用于查看页面源代码.实时DOM层次结构.脚本调试.数据收集等,日前增加了两个十分有用的新功能:覆盖率分析和类型推断.覆盖率分析工具能够可视化地精确显示JavaScript程序执行的部分.类型推断工具则可以直观地给重要变量加上类型信息的注释.这两项功能使得在Web Inspector中理解和调试JavaScript程序变得更加简便,编程体验得到了极大的提升. 覆盖率分析功能理解程序如何工作是一件复杂而繁琐的过程,需要知道在特定的输入情况

美容美发管理软件要具备哪些功能

作者:客多多会员管理系统软件 官方网站http://www.keduoduo.cn/ 全国服务热线:4000-3000-43 美容美发管理软件想要被众多美容美发店面认可,首先得在功能上达标.设计人员并不能平空难设计软件,也不能将各个行业的软件设置的完全一样.那么到底美容美发行业所用软件需要达到什么标准,需要具备什么功能呢? 相关人员表示美容美发店面管理系统就是解决店面的:员工管理.客户维护.商品控制三大个核心;有专业人员曾经调查过不少的美容美发店老板,这些老板纷纷表示员工管理以及客户维护的重要性

我需要在Web上完成一个图片上传的功能

我需要在Web上完成一个图片上传的功能. 这个页面需要能从手机中选择图片上传. 首先,这个页面是从微信上面触发的,所以修改了微信的的入口地址,增加了身份识别号作为传参. 跳转到页面的时候,页面先检查身份识别号是否已参与过本次活动,参与过本次活动的,可以跳转到变更图片功能.如果未参与过图片上传,则需要传入图片. 看上去是很简单的逻辑. 马上行动.

转:用C语言扩展Python的功能

转自:http://www.ibm.com/developerworks/cn/linux/l-pythc/ 一.简介 Python是一门功能强大的高级脚本语言,它的强大不仅表现在其自身的功能上,而且还表现在其良好的可扩展性上,正因如此,Python已经开始受到越来越多人的青睐,并且被屡屡成功地应用于各类大型软件系统的开发过程中. 与其它普通脚本语言有所不同,Python程序员可以借助Python语言提供的API,使用C或者C++来对Python进行功能性扩展,从而即可以利用Python方便灵活

一个合格的H5响应式网站需要具备哪些功能

CV随着经济全球化和电子商务经济的到来,企业建站和开展电子商务是一个不可回避的现实,否则当你的竞争对手正在通过INTERNET共享信息,通过电子商务降低成本,拓展销售渠道时,你却只能坐失良机.此时更应该考虑的是如何制作一个高效益的网站,那么一个好的H5响应式网站需要具备哪些功能呢? 1.品牌形象 网站的形象代表着企业的网上品牌形象,人们在网上了解一个企业的主要方式就是访问该公司的网站,网站建设的专业与否直接影响企业的网络品牌形象,同时也对网站的其他功能产生直接影响. 2. 产品/服务展示 顾客访

gocode+auto-complete搭建emacs的go语言自动补全功能

上篇随笔记录了在emacs中使用go-mode和goflymake搭建了go语言的简单编程环境(推送门),今天来记录一下使用gocode+auto-complete配置emacs中go语言的自动补全功能.先看一下效果图??,我的emacs配置可以参考myemacs-conf. 关于gocode gocode是nsf写的各种编辑器提供go语言自动补全功能的工具.参考github中的README.md对gocode进行一下安装. $ go get -u github.com/nsf/gocode 安

【转】用C语言扩展Python的功能

原作者:肖文鹏 ([email protected]),原文地址:http://www.ibm.com/developerworks/cn/linux/l-pythc/ Pyton和C分别有着各自的优缺点,用Python开发程序速度快,可靠性高,并且有许多现成模块可供使用,但执行速度相对较慢:C语言则正好相反,其执行速度快,但开发效率低.为了充分利用两种语言各自的优点,比较好的做法是用Python开发整个软件框架,而用C语言实现其关键模块.本文介绍如何利用C语言来扩展Python的功能,并辅以具

线上教育app开发应该具备哪些功能

线上教育app开发应该具备哪些功能 互联网+教育对传统教育产生了相应的冲击,尤其现在移动互联网迅猛发展.越来越多的企业将目标转向线上教育APP,都希望通过在线教育APP占领一块市场.分得一杯羹.那么开发在线教育APP,一时间成为热门问题,但是很多传统企业没有互联网经验,在开发教育APP中就显得很被动,今天我们就教育APP的一个切入点来进行分析,看看教育APP应该具备什么功能. 教育app开发的必要功能主要有: 1.课程展示:课程展示可以说是个窗口,可以展示每一个学习的课程,也可以通过分类搜索,上