web开发者在发布你的作品前需要考虑的技术细节

这篇文章个人觉得很受用,故仔细翻译了一下,有些地方可能翻译的不好,请见谅! 翻译后发现貌似已经有人翻译过,但是翻译的水平就有点。。。。。那篇文章中不仅忽略了知识点,并且出现了明显的语义和语法错误,有一定的误导作用,所以请务必重新阅读老高的翻译。文章中容易出错的地方老高已经注释(在文章中以【】标出)。 如需转载,请注明出处! web开发者在发布你的作品前需要考虑的技术细节 What technical details should a programmer of a web application consider before making the site public! 原文地址: 来自stackexchange.com quora的回答 界面和用户体验 要意识到浏览器的实现标准不一,请确保你的网站在主流浏览器中的正常展现。至少要针对一个最新的Gecko引擎(火狐)的浏览器、一个基于Webkit引擎(Safari或者其他移动端)的浏览器、Chrome、你想要支持的IE浏览器(可以借助IE应用程序兼容性VPC镜像)和Opera浏览器。同时需要考虑到在不同的操作系统下浏览器是如何渲染你的网站。 需要考虑来自其他浏览器的用户如何使用你的网站:智能手机、屏幕朗读器和搜索引擎,举个例子。–一些易用性信息:网页易读性倡议(WAI)和网站508规范(Section508),移动站开发:移动互联网开发者论坛(MobiForge)。 构架:如果在不影响用户的情况下部署升级。有一个或者多个用来更改架构、代码或者内容更新的可用测试或运行环境,确保他们部署的可控性,以防止造成破坏。有一个自动化部署方案,用来提交更改到生产环境。最优的解决方案是结合使用一个版本控制系统(CVS, Subversion等【译者注:为啥没GIT】)或一个自动构造机制(Ant,NAnt等)。 不要直接给用户展现不友好的错误信息。 不要用纯文本的形式呈现用户的Email,否则他们会被垃圾邮件骚扰。 给用户生成的链接加上rel="nofollow"属性,以避免SEO作弊。 为你的站点建立合理的限制机制,这一条同时属于安全细则。 理解什么是渐进增强(progressive enhancement)【译者注:与之相对的是优雅降级(graceful degradation)】。 如果一个请求提交成功,请重定向至其他地方,防止用户的重复提交。 不要忘了考虑无障碍阅读,这对网站的优化来讲是一个好主意,而且有些情况下他是法律强制必须有的。 无障碍网页应用(WAI-ARIA)和Web内容无障碍指南2(WCAG 2)在这方面可以帮到你! 不要让用户思考该如何操作 安全 OWASP开发入门可能会让你花一些时间掌握,但是他涵盖了网站开发安全的方方面面。 了解注入,尤其是SQL注入,并知道如何防御注入。 永远不要相信用户的输入,还有请求中的所有信息(包括cookie和隐藏域)。 给你的密码加点盐后在使用哈希,并针对不同行使用不同的盐以防止彩虹攻击。使用慢速【短?】散列算法,如bcrypt(经过时间考验)或者scrypt(更强、比较新)(1, 2) ,针对如何保存密码请参考(如何保存你的密码)。美国国家标准与技术研究院表示支持使用PBKDF2 算法来加密,联邦信息处理标准在dotnet开发中也支持PBKDF2(更多信息)。避免直接使用MD5和SHA族算法来保存密码。 不要尝试使用自创的自以为NB的认证系统。因为你很容易在细节和无法测试的地方犯错误,也许被黑了以后你才会后知后觉。 了解信用卡的处理规则。(详见这个问题) 为登陆页面和任何需要输入敏感信息的页面使用SSL/HTTPS(如信用卡信息)。 避免跨站脚本攻击(XSS)。 避免跨站请求伪造(CSRF)。 避免点击劫持。 使你的系统更新到最新的补丁。 确保你的数据库连接信息是安全的。 时刻注意最新的攻击技术和影响你的平台的漏洞。 阅读谷歌浏览器安全手册。 阅读网络产品黑客手册。 考虑权限最小化原则。试着让你的应用服务器以非ROOT权限运行(以tomcat为例)。 性能 必要时使用缓存,理解并使用HTTP缓存技术和HTML5的Manifest技术。 图片优化 - 不要使用一个20KB大小的的图片最为重复背景。 学习如何使用gzip压缩内容。 合并/链接多个样式表或多个脚本文件以减少浏览器的请求数,并且使用gzip压缩文件中重复的内容。 看一看雅虎高性能站点,有很多不错的点子,包括提高前端性能和他们的YSlow工具(需求使用Firefox、Safira、Chrome、或Opera浏览器)。同时,Google page speed(使用浏览器插件)也是一个不错的性能调校工具,他同时也会优化你的图片。 针对小并且相关的图片使用CSS image sprite技术。 访问量大的站点需要考虑将不用内容分至不同的域名下。 静态内容(如图片、css、js脚本还有不需要cookie的普通内容)应该被分配到一个不使用cookie的域名下,因为一个域名下的所有cookie和子域下的cookie将会被包含在所有对应的域名下。一个好的主意是使用CND加速,但是考虑到CND可能会挂,到时候本地的拷贝也会提供服务。 最小化一个浏览器需要渲染一个页面所需要的请求数。 利用工具Google Closure Compiler最小化你的js文件,还有其他的最小化工具。 确保有一个favicon....

August 17, 2014 · 1 min · Me

centos下安装python-MySQLdb

源码安装: 点击这里下载源码 解压前线装一下必要的包 yum install python-devel mysql-devel zlib-devel openssl-devel 解压 tar xf MySQL-python-1.2.3.tar.gz cd MySQL-python-1.2.3 修改mysite.cfg,指定mysql-config的路径 使用whereis mysql-config找路径 vi mysite.cfg #找到mysql_config = XXX 改为你的路径 继续安装 python setup.py build python setup.py install 工具安装: sudo easy_install mysql-python sudo pip install mysql-python 出现错误的解决办法 --- ```bash vi ~/.bash_profile # add export DYLD_LIBRARY_PATH='/usr/local/mysql/lib'; PATH="$PATH:/usr/local/mysql/bin" enjoy~ Win下请直接下载编译好的安装包: 请输入链接描述

August 15, 2014 · 1 min · Me

php不使用中间变量交换两个变量的值

方法一: $a = $a^$b; $b = $b^$a; $a = $a^$b; 这就是位运算带给我们的奇妙之处!(这种方法只适合于int型和string型,而且位数不能超过8位) 方法二: list($var1, $var2) = array($var2, $var1);

August 13, 2014 · 1 min · Me

centos国内源总结

有时候centos使用yum命令的时候软件下载速度会很慢,还好国内有很多镜像站供大家选择,在此博主为大家总结了一些centos国内镜像站,如果你需要下载centos的iso文件或者相关软件,可以到以下网站下载,速度相当快! 当然,如果你想直接替换掉centos系统内置的yum源地址,可以参考这篇文章Centos源设置,将你的源设为比较快的地址! 地区 HTTP Alibaba Cloud Computing http://mirrors.aliyun.com/centos/ Beijing Institute of Technology http://mirror.bit.edu.cn/centos/ Beijing Teletron Telecom Engineering http://mirrors.btte.net/centos/ BitComm Ltd. http://mirrors.pubyun.com/centos/ CDS China http://mirrors.yun-idc.com/centos/ China University of Geosciences http://mirrors.cug.edu.cn/centos/ Dalian Neusoft University of Information http://mirrors.neusoft.edu.cn/centos/ Grand Cloud http://mirrors.grandcloud.cn/centos/ Huazhong University of Science and Technology http://mirrors.hust.edu.cn/centos/ NetEase http://mirrors....

August 11, 2014 · 1 min · Me

软件版本总结

软件版本总结 版本号 V(Version):即版本,通常用数字表示版本号。(如:EVEREST Ultimate v4.20.1188 Beta ) Build:用数字或日期标示版本号的一种方式。(如:VeryCD eMule v0.48a Build 071112) SP:Service Pack,升级包。(如:Windows XP SP 2/Vista SP 1) ...

July 31, 2014 · 1 min · Me

vim入门

vim常用命令 VIM虽说不长用,然是还是很需要掌握的,VIM功能强大的没话说,就是命令太多不好记! 老高就来慢慢总结一下VIM的常用命令和技巧吧! 命令 选择,删除,复制,粘贴 快捷键 作用 v 从光标当前行开始,光标经过的行都会被选中,再按一下v结束 V 从光标当前行开始,光标经过的行都会被选中,再按一下V结束 Ctrl + v 从光标当前位置开始,选中光标起点和终点所构成的矩形区域,再按一下Ctrl + v结束。 gg``VG 选中全部的文本,其中gg为跳到行首,V选中整行,G末尾 y 复制 (默认是复制到"寄存器 p 粘贴 (默认从"寄存器取出内容粘贴) "+y 复制到系统剪贴板(也就是vim的+寄存器) 删除 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ d 删除 x 删除字符 dd 删除一行 J 删除换行符,两行合并为一行 重做 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ u 撤销 CTRL + R 反转撤消 U 一次撤消对一行的全部操作 第二次使用该命令则会撤消前一个U的操作 追加 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ i 在当前光标之前插入文本。 a 在当前光标之后插入文本。 o 在当前行的下面另起一行,并使当前模式转为Insert模式。 O 将在当前行的上面另起一行。 使用命令计数 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ kkkkkkkkk 或 9k 要向上移动9行 a!...

July 31, 2014 · 1 min · Me

安装Scarpy踩过的坑

#安装Scarpy踩过的坑 Scrapy是python下一个著名的爬虫,目前最新版为0.24。 这是他的帮助文档->Scrapy 0.24 文档 其中**选择器篇**需要好好研究! 帮助文档里的安装指南写得很宽泛,所以安装出错是在正常不过的事了。(再者说,安装出错确实不是Scrapy的错嘛) So here is the doc to help you with installing Scrapy. First of all, before installing, please make sure U have already installed these libs or apps below: python version >= 2.7 python-devel package libs: xml2-dev xslt-dev ffi-dev openssl-dev If not, commands below may help: on Redhat/Centos: yum install python-devel libxml2-devel libxslt-devel libffi-devel openssl-devel bzip2-devel on Debian/Ubuntu:...

July 31, 2014 · 2 min · Me

升级python2.7和安装pip,easy_install和setuptool

升级python和安装pip,easy_install和setuptool 新机子装环境什么的最麻烦了,在此记录一下python的升级和包(模块)管理软件 ...

July 30, 2014 · 2 min · Me

使用dropbox同步备份网站和数据库

自从用了Shadowsocks,整个人都精神多了! 今天开整Dropbox,话说这货也被Q了。 废话不多说 以下内容需要翻{防屏蔽}墙使用,如果没有,可以参考老高的这篇文章搭建一个稳定又极速的翻{防屏蔽}墙环境 下载 在官网找到linux专用脚本,执行一下对应系统的脚本 32位系统 cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86" | tar xzf - 64位系统 cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf - ...

July 29, 2014 · 3 min · Me

python交互模式下方向键乱码的正确解决方法

python交互模式下方向键乱码的正确解决方法 今天升级了python后,发现在交互模式中上下左右变成了乱码 ^[[A ^[[D ^[[B ^[[C ^[[D ^[[D ^[[D ^[[D ^[[D ^[[D ^[[D ^[[D 搜索了一下,普遍的解决方法是 因为方向键被转义了 原因主要是由于缺少readline Module问题导致的。而CentOS默认只有readline模块而没有readline-devel模块。 解决方法 yum -y install readline-devl 然后重新编译安装python就ok了 再仔细一看,这些问题都是N年前了,yum中的包名早都换了。。。怪不得总是报错,说找不到readline-devl,貌似现在开发版后面都变成devel了 ...

July 29, 2014 · 1 min · Me