最近公司项目准备更换图片上传的插件,原来的是一个Flash控件,其实用起来还是不错的,还有进度条,浏览器支持情况也不错。不过因为某些页面的图片上传涉及到了跨域的问题,Flash似乎解决不了了,所以准备索性换成HTML5的,高端大气上档赤。然后这个HTML5上传图片功能自然落到了我的手上了。
一般来说图片上传无非就是文件操作的问题,本来这是服务器对文件流的一个操作问题,前端应该是管不上的,不过HTML5再次赋予了我们前端神圣而伟大的权利,有了HTML5部分后端失业了lol。
其实以前写过一个上传图片的插件,不过那时还活在IE6年代,只能用iframe搞定,虽然还挺好使的,不过在HTML5面前就是一个战斗力负5的渣渣,不仅需要后端返
继续阅读 »
单元测试Unit Test
很早就知道单元测试这样一个概念,但直到几个月前,我真正开始接触和使用它。究竟什么是单元测试?我想也许很多使用了很久的人也不一定能描述的十分清楚,所以写了这篇文章来尝试描述它的特征和原则,以帮助更多人。
什么是单元测试?
先来看看单元测试的定义,在维基百科英文版中可以找到Kolawa Adam在 Automated Defect Prevention: Best Practices in Software Management 一书中对单元测试的定义:
In computer programming, unit testing is a method by which individual unit
继续阅读 »
keyup和keydown事件以及keyCode和which属性
我想关于键盘事件最常见的实例就是回车提交表单了,恐怕每个前端都有一段烂熟于胸的代码用来实现这个功能。以前我也只是做了这样一个功能,也许它的代码是这样的:
function enter (p_event) {
var _keyCode = p_event.which ? p_event.which : p_event.keyCode;
var _ENTER_CODE = 13;
if (_ENTER_CODE === _keyCode) {
//enter code...
}
}
如果需要兼容ie8及以下,那还需要这几
继续阅读 »
上周介绍了几种配色工具,这次要介绍的是一些图片和图标的生成工具。
就算你熟练掌握Photoshop之类的图片处理工具,要制作一个小小的图标还是挺费时费力的。可是网上下载的话,颜色尺寸又不一定能适合,所以制作图片的工具将是非常必要的。
Online Generator
Online Generator包括好几个很棒的工具,首先是Preloaders,它用于制作loading图片,它的图片种类很齐全,还有大量的3D图片,最重要的是它可以任意改变尺寸,当然也包括颜色,动画。动画可以选择方向频率等等,功能十分强大,基本上只要你能找到喜欢的图案,它就一定能制作出你想要的loading图片。
继续阅读 »
《编程珠玑》这本书读完感觉很诡异,在读的过程中感觉很有收获,但是却说不清从书中获得了什么,好像什么也没读懂。说实话,很难对这本书归类,有时它告诉你的是实际操作的性能问题,有时又在讲算法或者数据结构。不过确切的说,它告诉我们的是一种无招胜有招的境界。无论是实际操作、算法还是数据结构都是在为项目服务的,我们的目的只有一个,那就是完成项目。
一个项目与一个科研课题的区别就是它需要被实践,需要一种行之有效的解决方案。在一个系统被部署到实际环境中时,有时可能需要它无比精准,有时是快速运行,有时是超低成本,或者也有可能是兼而有之的权衡。此时工程师就需要调整一切可以调整的东西去满足这些需求,这些东西自然就是硬件环境、算法、数据结构了。作者Jon
继续阅读 »
作为一名前端工程师,或多或少都会接触到设计,虽然我很讨厌有人把前端和美工等同,但是我仍然很喜欢设计,这是一个Web必不可少的环节。
不过毕竟不是专业的设计师,不可能什么都靠自己,我相信工具的帮助将会让前端做起一般的设计来游刃有余。
首先介绍简单而常用的工具,颜色选择工具。
Kuler
Kuler是adobe的一款在线配色方案分享服务,上面有海量的设计师们的配色方案,最多有5种颜色,有详细的颜色代码,HSV,RGB,CMKY,LAB,HEX。每一个配色方案都可以收藏,只有你有adobe的帐户,还可以随意修改。
继续阅读 »
以前上学的时候其实大概读过这本书,但是那时没有什么项目经验,对于重构还很难理解其意义,最近因为又读了一遍这本书,发现确实是很棒的一本书,虽然现在写javascript,而这本书是以java为基础的,但仍然有很多值得参考的地方,尤其是一些常见的重构手法,让人看的时就会觉得对对对,确实经常这么干,比如Extract method还有Replace array with object等等都可以应用到其他环境中。
阅读这本书最重要的首先是需要理解的是什么是重构,以前也自诩会定期重构代码,但现在想想,其实真正算作重构的时候并不多,大部分时候我们其实只是在重写,只是因为项目规模较小,所以许多问题并没有暴露出来罢了。
先看看重构的定义:“对软
继续阅读 »
创建
使用Github创建博客,项目名必须是username.github.io,然后直接使用主分支master即可。github使用的jekyll会自动根据相关文件生成一个_site文件夹,包括整个blog的静态文件用于访问。
_layouts文件夹为模板文件夹,可以创建一个default(自定)的html文件作为模板,并使用{{content}}作为模板接受的内容变量,另外还有{{page.title}}之类的变量。
_posts文件夹为博客文章文件夹,发布文章的格式为yyyy-mm-dd-blogname,也就说文章的日期是自定的。格式可以使用html、md、textile。当然更易于管理的方式是建立Year>Month>
继续阅读 »
所谓的mouselook其实就是第一人称视角,而pointerlock技术(其实和第一人称没什么关系,只是说这个技术可以用来实现第一人称)其核心就是让鼠标隐藏并且无论怎么拖动鼠标,鼠标指针都不会跑出目标区域。
继续阅读 »
今天在segmentfault上和某人探讨了一下这个https的握手流程,其实我一开始也不是很清楚,也没有好好去思考过,通过回答这个问题,对https有了更深的认识。
首先我搜索到的流程正规说法是:
more
1. 用户浏览器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送到服务器。
继续阅读 »