想做一个高质量的Web应用,前前后后要做的事情非常多。国外开发者 Ata Sasmaz 为 Web 开发者制作分享了一份检查清单,包括应用开发、性能、安全、分析、可用性、可靠性、转换策略、竞争策略这些方面需要注意的事项。清单内容可能不全面,欢迎大家在评论中补充。 开发
JavaScript 允许捕获异常。这些异常需要通过Ajax请求提交到日志服务,否则很难截获Web环境中的错误。
数据层可分离,也可以与另一个遵从规范的数据层互换。
部署过程应自动化。生产环境所用的项目文件应由部署服务器生成,并在无人工干预的情况下自动完成。
版本控制系统保存代码更改的历史,防止现有代码的丢失。同时,它还有助于协同开发。GitHub是这项服务最流行的提供商。除此以外,还有BitBucket。微软也有提供了额外协作特性的Team Foundation。
人总会有写错代码的时候,而代码审阅系统能保证开发者的高质量产出。同时,该系统还能让不止一位开发者熟悉代码。在某段代码的作者不在的时候,其他开发者可以顺利地做出修改。GitHub和Team Foundation都提供了相应的代码审阅功能。
每个应用都需要设计实现权限和角色系统。设立系统管理员,用户管理员等角色需要一个灵活的全局角色系统。
所有错误应当记录下来,并用于未来的全面检查。也就是所有错误都应当提交给全局错误记录机制。
每次部署前,测试服务器应当运行所有测试。代码测试通过时部署应用,没能通过时报告给系统管理员。
业务层中的代码必须通用。即使代码本身面向Web环境,它也应当能在不要求改变代码的情况下使用于桌面环境,服务器环境,移动设备环境的不同用户界面,不同数据层上。
一份规定明确的编码规范在未来项目开发的过程中起到重要作用。方法前需要写上注释吗?命名规范是什么?示例代码应放置何处?
开发时最耗时的问题是不同的开发者之间的开发环境不同。需要让人们知道的是,他们应当安装什么软件,使用的是什么版本,同时需要安装什么组件,以及怎样安装这些组件。 性能
Content Delivery Networks(内容分发网络)通过离访客最近的服务器,为你的服务提供图片,JS和CSS等静态文件来提高访问速度,同时削减了带宽的用量。CloudFlare是CDN服务的绝佳示例。
JS和CSS文件应当使用YUI compressor这样的压缩器来减少文件体积,并且使用gzip传输。把JS代码的引用放到最后也是不错的做法。
Web应用程序应当响应迅速。分析页面加载的系统有责任识别加载较慢的页面。运行迅速的页面可能会遇到一些用户读取特定数据时加载时间过长的问题。
NoSQL数据库(文档型数据库)在接收数据和存储数据时的速度很快,并且可以大规模扩展。由于这类数据库不能确保关系的完整性,所以应当为关键数据使用关系型数据库。在诸如用户通知和聊天记录等场合,NoSQL可以节约成本,安全地使用。
数据中心的位址应当靠近绝大多数用户。处在与用户同一个国家的数据中心对页面访问速度大有影响。有必要的情况下,还可以建立多个数据中心。
存储数据的成倍增加,带来的是应用程序性能降低。程序架构应做好处理多来源的大规模数据的准备。 安全
数据库用户在访问关键信息时应受到限制,比如取得哪怕是已经Hash过了的密码和所有用户的Email地址等信息。应当使用存储过程和视图作验证,或者作自定义数据。
应用程序包含了对安全性较差代码的依赖时,会使攻击者在远程执行相应的攻击代码。
认证用户发起的洪水攻击和垃圾邮件攻击都是可能的。要注意随时跟踪他们最后发起的不明操作,避免制造大量请求。
所有密码都应当使用salt值散列处理,并且每个用户的salt值都是唯一的。人们容易在不同的服务上使用相同的密码,应用程序有责任保护用户的密码。
XSS攻击的全称是Cross Site Scripting跨站脚本攻击,是让用户执行远程恶意脚本的Web漏洞。
SQL注入是常见的漏洞。攻击者通过构造字符串,可以执行有害的SQL命令。使用ORM是一种防范的好方法。
Cross-Site Request Forgery跨站请求伪造是一种常见的Web漏洞,攻击者在他们的网站上放置一个iframe框架,该框架从程序中请求页面,而用户并不处于应用程序中。对GET请求不会强制性的作出修改,防止从应用程序域名之外发出的POST请求可以受到保护,而更好的做法,则是在每个表单里提供接收请求后验证的token。
即使用户信息在电脑上有所记录,甚至用户几分钟前成功登录了系统,在访问或者修改如密码,Email或者数据备份等关键信息时总是需要验证密码。
如果用HTTPS传输数据,就应该只使用HTTPS传输。否则中间人很可能有作为HTTPS到HTTP传输的转换者,让用户使用HTTP发出请求以分析数据。
HTTPS是世界范围的加密标准,在第一次连接握手之后没有额外的开销。所有的页面和资源都应当使用HTTPS传输。使用HTTPS的时候,推荐的信息来源也要是HTTPS。否则浏览器就会以安全原因不予显示。
会话和Cookies都可以被劫持。浏览器报头信息和用户最后的IP地址的位置信息都可以和原来的用户会话对比。一个积极防范的办法是将会话与用户IP绑定,但是可能会在动态地址和移动设备的情况下造成问题。 分析
每项数据、每条请求、每个事件都应当记录在“大数据”的存储中。这些数据将来会很有用处,数据挖掘技术将会呈现出有用的分析报告。
对于未来计划而言,找出用户使用应用程序与否背后的原因十分重要。
现如今数据分析非常关键。分析报告揭示了未来业务的走向何方。优秀的应用程序不仅能便利用户,而且能让用户按需生成报表。 可靠性
应用服务器直接接受连接,不如在内部搭建一个分发请求的反向代理服务器。这样在有部分服务器当机的情况下也能由仍然运转的服务器提供服务。
数据应当至少每天备份,而更多的备份任务应当取决于特定存储和应用服务器,必要时还需要做好数据中心的灾备方案。
测试应当覆盖业务层和数据层的所有代码。搅乱用户数据,计算出错误的结果,提供错误数据,以及存储发生错误将会造成用户流失和金钱损失。
目前有许多检测服务器在线时长的第三方服务。他们同时也提供按指定时间间隔,检查服务器状态的定制服务。 可用性
与Ajax技术相比,刷新页面更慢,同时也在页面跳转时使用户流失。单页应用(类似Gmail)用户体验良好,同时也更难开发,更容易出bug。资源(人力)足够,则可以选择开发单页应用,否则更应该采用Ajax技术。
详细的错误提示页面输出了与错误有关的任何信息,是每位开发者都需要的。生产环境中的应用程序仍然能够记录这些信息日志,那么就有必要隐藏这些信息。
“学习使用程序”的时代已经过去。在用户熟悉之前,程序要足够简单。在用户熟悉之后,高级操作就会显现出来。复杂的界面会使用户望而却步。
使用搜索的倾向已在近年来逐渐上升。Google、Facebook、Twitter都有搜索功能。所有的软件巨头都会提供能对搜索结果筛选的全局搜索系统。要让用户们在你的应用上也能有一致的功能。
发生错误或者输入密码之后,需要向用户指明他们的来向和去向,请记住这一点。
UI设计的通常做法是首先考虑桌面端,然后适配移动端设备。这种做法在适配时开销巨大。UI应当首先考虑移动设备,再适配桌面端。
开发者和测试者不能预测问题的状况时有发生。最好的解决办法就是每个页面上都设置能让用户访问到的反馈机制。
用户有可能使用着Windows、Mac、Linux、移动设备或者某个不知名的设备。而在这些环境中,UI的行为必须一致。实现这一点的方法就是遵循标准,并且不使用不标准的组件。同时,使用Bootstrap或者Foundation这样的框架也有帮助。
虽然Web应用并不是针对有组织的访客(来自搜索引擎),人们在Email或者IM中分享地址的时候总是想要了解到点击以后出现的内容。人们通常对此解释较少,所以分享的时候URL本身至少能提供相关的信息。 转化策略
邀请注册是获得新用户最古老也是最有效的转化策略。成功的邀请系统不仅奖励邀请人,被邀请人也会受益。
用户总会有问题,而每个应用都需要支持系统。缺少支持系统会让用户望而却步。这里是一些外部方案:ZenDesk、Desk、Freshdesk、Zoho Support……
让用户回头使用软件很重要。用户常常不记得软件,遗忘了便不再回来。定时发送带有消息通知的Email能留住用户。不要忘了保留这类选项的开关,不然那将会成为垃圾邮件。
不论拥有多少用户,哪怕1个,甚至成千上万,总是要做得更好。这么做将会掩盖每个软件都会有的瑕疵。
访客,哪怕是付费用户,都很难有机会在社交网络上分享你的应用。应该为此设立相应的激励机制。这要求使用Facebook、Twitter等社交网络API散播相关信息。
让用户保持更新十分重要。用户使用软件时,他们会很高兴地得知你会为此做出支持,并做到更好。创建邮件列表,让用户知道每月的改进是负责任的态度。
不要指望用户自然而来,你得为之奋斗。虽然有很多优质的广告方案,更好的做法是在互联网上花少量钱甚至免费提供相应的价值,然后将其引导到相应的产品上来。
知道用户离开的原因十分重要。好的系统会在用户离开的时候发出一封邮件,提供优惠折扣,并且征求反馈。 竞争策略
软件产品的需求从来就不是凭空产生的。需求分析让开发者与产品经理有据可依。尝试着通过分析用户最常使用的部分来理解客户的真实需求。
没有产品是生来完美的。一家公司开发,其他公司改进;最初的那一家因而得到进步。这是每个行业都会有的开发流程。每项产品都会有其竞争对手。 |
- 浏览: 266372 次
- 性别:
- 来自: 上海
最新评论
-
chenzheng8975:
总结很到位 ,没有两三年经验是总结不出来的。。。
27种迹象显示你应该辞掉程序员的工作 -
java_stream:
种种迹象显示,该文章要上首页
27种迹象显示你应该辞掉程序员的工作 -
tenght:
16跟27重复了
27种迹象显示你应该辞掉程序员的工作 -
flex_莫冲:
上述27种都不存在。除了上级不写代码,任何一种都无法忍受。虽然 ...
27种迹象显示你应该辞掉程序员的工作 -
mvp_huang:
好像这种情况都有吧,我们的领导现在基本都不写代码了~~~~~
27种迹象显示你应该辞掉程序员的工作
相关推荐
标题 "Web开发人员清单:改善Web的一站式服务" 暗示了这是一份针对Web开发者提升网站性能和用户体验的资源指南。这份清单可能涵盖了Web开发中的各个方面,旨在帮助开发者构建更高效、更易用的网站。让我们逐一探讨...
【WebChecklist::spider_web:网络清单】是一款专门针对网站、渐进式网络应用(PWA)和JavaScript开发的检查列表工具。它旨在帮助开发者和网站管理员确保他们的在线资源符合最佳实践,优化性能,提高用户体验,并且...
总而言之,Web开发者要提升能力,不仅需要深入学习编程技术,更需要对团队合作、项目设计、工具使用和产品理解等多方面进行综合提升。掌握DevOps、持续集成和持续部署等现代开发流程,以及深入理解市场和用户需求,...
综上所述,“开发人员备忘清单”是一个全面的资源库,涵盖了从基础语法到高级特性的各种知识,为开发者提供了一个快速查找和学习的平台。通过持续更新和完善,这份清单将不断适应技术的发展,为开发人员提供及时、...
4. **安全性**:应用程序只在其所需的权限范围内运行,提高了系统的安全性。 5. **独立性**:每个用户都有独立的应用程序实例,不会互相干扰。 **图解发布过程** ClickOnce的发布过程通常包括以下步骤: 1. 创建...
3. **自动更新**:开发者可以轻松发布新版本,用户会在下次启动应用时自动检查并安装更新,确保始终使用最新版本。 4. **离线访问**:一旦应用程序成功安装,即使在没有网络连接的情况下也能正常使用。 5. **权限...
点击一次(ClickOnce)是 .NET Framework 中的一种应用程序部署技术,它允许开发者将应用程序部署到客户端计算机上,并且可以自动更新应用程序。下面是 ClickOnce 应用程序部署的相关知识点: 一、ClickOnce 部署...
Java程序发布是一个重要的过程,它涉及将开发完成的Java应用程序打包、配置和部署,以便用户可以在不同的环境中运行。以下是对这个主题的详细说明: ...理解并熟练掌握这些流程是每个Java开发者必备的技能。
这些知识点都是Java Web开发者必备的基础,掌握它们对于理解和开发基于J2EE的应用至关重要。通过解决此类试题,可以提升对Servlet、Struts以及MVC模式的理解,有助于在实际项目中更好地应用这些技术。
这些题目覆盖了.NET框架的基础知识,包括运行时安全、数据库访问、程序结构、异常处理、属性、事件处理、程序集管理等多个方面,是C#开发者必备的技能。通过这些模拟题的训练,开发者可以更好地掌握C#语言和.NET ...
本篇文章整理了一份超全面的免费Web开发工具和资源清单,旨在帮助开发者更高效地进行工作。 首先,JavaScript库是Web开发中的重要组成部分,它们提供了预先封装的功能,简化了开发过程。例如Vue.js是一个轻量级的...
这种功能通常涉及数组操作和比较算法,这些都是JavaScript开发者必备的技能。 考虑到"dotaks-main"这个文件名,这很可能是项目的主目录或者源代码库。在这个目录中,我们可以预期找到应用的源码文件,如HTML、CSS和...
9. **教育与培训**:了解SQL注入的基本原理和防护方法是每个Web开发者和系统管理员的必备知识,定期的培训可以增强团队的安全意识。 10. **安全更新**:及时修补已知的SQL注入漏洞,保持软件和框架的最新版本,有助...
在本项目"shopping-list-modules-day-elias:带模块的购物清单应用"中,我们主要探讨的...同时,它还强调了实际项目中的一些常见编程实践,如文件操作、用户交互和错误处理,这些都是成为一名专业前端开发者必备的技能。
- **Apache Tomcat 6.0.14**:作为应用服务器部署Web应用。 - **Eclipse 3.3**:集成开发环境,内置Web工具平台(WTP)和Spring IDE插件。 **3. 应用程序构建** - **构建基础**:首先设置好项目的基本目录结构和所...
- **必备理由**:在许多Web应用中,都需要支持文件上传功能,此jar包为Struts2提供了处理文件上传的必要支持。 ##### 4. **commons-io-2.0.1.jar** - **功能说明**:Commons IO是Apache Commons项目下的一个子项目...
《Java编程语言框架、库与软件清单:awesome-java探索》 在编程领域,Java作为一种广泛使用的面向对象的编程语言,其强大的生态系统为开发者提供了丰富的工具和资源。"awesome-java"项目便是这一生态系统的精华集锦...
5. **Java EE**:对于Web开发者,《Java EE 8开发指南》提供了全面的Java企业级应用开发教程。 6. **测试与调试**:《JUnit实战》和《Effective Testing with JUnit 5》讲解了如何编写高质量的测试代码,而...
**必备软件清单:** - ADT-0.8.0.zip 或以上版本 - android-sdk-windows-1.0_r2.zip 或以上版本 - eclipse-jee-ganymede-SR1-win32.zip 或3.3版 - wtp-wst-R-3.0.4-20090213193639.zip 或以上版本 - jdk-6u11-...