上一页 1 2 3 4 5 6 7 8 9 ··· 18 下一页

软件的模块化开发

摘要: 什么是模块化模块化这个词最早出现在研究工程设计中的《Design Rules》,这本探路性质的书中。其后模块化原则还只是作为计算机科学的理论,尚不是工程实践。此时硬件的模块化一直是工程技术的基石之一。如标准螺纹、汽车组件、计算机硬件组件等。软件模块化的原则也是随着软件的复杂性诞生的。从开始的机器码、子程序划分、库、框架、再到分布在成千上万公里的互联网上主机上的程序库。模块化是解决软件复杂性的重要方法之一。模块化以分治法为依据,但是否意味着我们把软件无限制的细分下去。事实上当分割过细,模块总数增多,每个模块的成本确实减少了,但模块接口所需代价随之增加。要确保模块的合理分割则须了解信息隐藏,内聚度 阅读全文
posted @ 2013-07-29 08:28 snandy 阅读(22253) 评论(1) 推荐(7) 编辑

将HTML特殊转义为实体字符的两种实现方式

摘要: 前端开发工作中,经常需要将HTML的左右尖括号等转义成实体形式。我们不能把,&等直接显示在最终看到的网页里。需要将其转义后才能在网页上显示。转义字符(Escape Sequence)也称字符实体(Character Entity)。定义转义字符串的主要原因是“”等符号已经用来表示HTML TAG,因此不能直接当作文本中的符号来使用。但有时需求是在HTML页面上使用这些符号,所以需要定义它的转义字符串。有些字符在ASCII字符集中没有定义(如版权符号“©”)。因此需要使用转义字符(“©”对应的转义字符是“©”)来表示。这里提供两个函数escape和u 阅读全文
posted @ 2013-07-19 15:15 snandy 阅读(25214) 评论(3) 推荐(2) 编辑

去掉点击链接后的虚线框

摘要: 点击一个超链接后默认会有一个虚线框,有时候要求去掉它。firefox及标准浏览器下可以用css属性outline:outline:none;/*0也可以*/IE下如下实现(据说过多使用效率低):a { blr:expression(this.onFocus=this.blur());} 此外还可以使用hidefocus属性。webkit内核浏览器(Safari/Chrome)中点击链接后不会有虚线框,这应该是默认样式的问题。如果想让其和IE/Firefox一样点击后留下虚线框可加入以下:a:visited { outline:1px dotted gray;}最早期,用一种很蛋疼的方法,获.. 阅读全文
posted @ 2013-07-11 11:20 snandy 阅读(2649) 评论(0) 推荐(0) 编辑

IE11的API变化

摘要: IE11已经登录Win8.1,它的API有了很大变更一、User-agent字符串的更改IE10的是Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)IE11则是Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko比较一下会发现IE6-IE10的 “MSIE” 去掉了添加了 “like Gecko”,其它现代浏览器都有添加了特有的 “rv”二、修改,添加了一些APInavigator.appName 属性现在会返回 "Net 阅读全文
posted @ 2013-07-07 09:12 snandy 阅读(3893) 评论(1) 推荐(2) 编辑

JavaScript中点号“.”的多义性

摘要: 点号「.」在JavaScript中有两种语义语义1、表示算术中的小数点(浮点数),如 2.5语义2、取对象属性、方法,如 [].push(2)这几乎没有任何难理解的地方,但下面这个问题则很有趣。// 这行代码会如何执行1.toString();Firebug 中如下这里的点号表达的是上述的语义1,因此点号后面必须跟一个数字,这里跟的是toString,报语法错了。解决方法很简单,如加个小括号(1).toString();还可以这么写,但难理解些1..toString();之所以浏览器中都能运行,是因为各浏览器JS引擎都把“1..toString()”理解成了 “1.0.toString()”。 阅读全文
posted @ 2013-07-03 16:18 snandy 阅读(4563) 评论(5) 推荐(1) 编辑

各代程序设计语言拓扑

摘要: Wegner根据语言的功能和产生的时间,将一些流行的高级语言进行了分类。第一代 (1954-1958)Fortran IAlgol 58FlowmaticIPL V第二代 (1959-1961)Fortran IIAlgol 60CobolLisp第三代 (1962-1970)PL/1Algol 68PascalSimula代沟 (1970-1980)CFortran 77面向对象 近代 (1980-1990)Smalltalk 80C++Ada83Eiffel框架出现 (1990-)VBJavaPythonJ2EE.NET我们看看各代的拓扑结构,所谓拓扑指的是采用该语言开发后的基本物理构成单 阅读全文
posted @ 2013-06-27 11:56 snandy 阅读(1936) 评论(2) 推荐(2) 编辑

Button未设type属性时在非IE6/7中具有submit特性

摘要: 代码如下 Button在Form中具有submit的特性 BUTTON 光变置入输入域,敲回车键。非IE6、7中会依次弹出 1, 3。说明依次触发了button的click事件,且自动将form提交了。相关:http://www.w3.org/TR/html5/form... 阅读全文
posted @ 2013-06-18 10:04 snandy 阅读(612) 评论(2) 推荐(0) 编辑

Backbone.sync-将模型同步到服务器

摘要: 默认情况下,只要保存模型(Model/Collection的sync方法),Backbone就会Ajax请求把模型持久化到服务器端。有以下几点sync方法把model持久化存储到服务器端,你可以重写该方法的实现方式,它默认使用jQuery或zepto的$.ajax整个Backbone,只有Model和Collection的sync会调用Backbone.sync请求类型由第一个参数method决定,可以是create/update/patch/delete/read。它默认采用RESTful请求请求的数据由第二个参数model决定,URL默认是model的url,数据是model的attrib 阅读全文
posted @ 2013-06-06 18:40 snandy 阅读(4584) 评论(0) 推荐(1) 编辑

Firefox中使用location.hash会自动decodeURI Bug

摘要: 用一中文单词测试,比如“昌平” encodeURI后为“%E6%98%8C%E5%B9%B3”。在各浏览器地址栏输入: http://start.firefoxchina.cn/#%E6%98%8C%E5%B9%B3从控制台获取hash,各浏览器表现如下Firefox21Chrome27/Safari5IE9/10/11可以看见,只有Firefox中把#后的decodeURI了,这在Firefox的地址栏也可以看见。这应该是个bug,如果所有浏览器要保持一致(未decodeURI),使用以下代码function getHash(location) { var match = location. 阅读全文
posted @ 2013-06-04 10:51 snandy 阅读(1908) 评论(1) 推荐(0) 编辑

Backbone事件模块

摘要: 事件模块Backbone.Events是Backbone的核心,Model、Collection、View都依赖它。此外,事件模块的所有方法都挂在了全局的Backbone上,如果你的代码中需要用到自定义事件(实现观察者模式),可以直接使用它。标示符Events是内部的一个引用,为讨论方便,这里也省去了前缀Backbone,这篇文章会从以下几个点分析Events APIEvents的用法Events内部数据结构 (_events/_listeners)特殊事件: “all”Events与Model、Collection、View、Router、History的关系一、Events API1.0之 阅读全文
posted @ 2013-05-28 08:13 snandy 阅读(7158) 评论(0) 推荐(2) 编辑

Backbone的写类方式

摘要: 从两个角度去讨论Backbone的写类方式Backbone内部的写类方式,Backbone自身的类如Model、Collection、View等是如何定义的Backbone外部的写类方式,如何使用Backbone提供的类来定义自己的类一、Backbone内部的写类方式Backbone提供给客户端程序员的类都是通过 构造函数+原型 的方式写的,Backbone.Model的代码大致如下// 定义构造器var Model = Backbone.Model = function(attributes, options) { // ... this.set(attrs, options);... 阅读全文
posted @ 2013-05-27 08:01 snandy 阅读(4599) 评论(3) 推荐(1) 编辑

掺合模式(Mixin)

摘要: Mixin是JavaScript中用的最普遍的模式,几乎所有流行类库都会有Mixin的实现。Mixin是掺合,混合,糅合的意思,即可以就任意一个对象的全部或部分属性拷贝到另一个对象上。从提供的接口来看,有的是对对象的操作,有的是对类的操作。对类的操作又称为掺元类(Mixin classes)一、掺合... 阅读全文
posted @ 2013-05-24 17:41 snandy 阅读(21814) 评论(5) 推荐(7) 编辑

冗余换性能-从Backbone的triggerEvents说开了去

摘要: Backbone是一个优秀的前端MVC库,它的代码质量必定可靠。阅读过程中发现了函数triggerEvents有点意思,初看会以为一些代码是多余的。var triggerEvents = function(events, args) { var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2]; switch (args.length) { case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return... 阅读全文
posted @ 2013-05-23 13:32 snandy 阅读(2778) 评论(1) 推荐(3) 编辑

Sublime Text3 中安装 Emmet

摘要: 如果你从事前端开发或者web开发的话,一定听说过Zen coding - 一种快速编写HTML/CSS代码的方法。它使用仿CSS选择器的语法来快速开发HTML和CSS - 由Sergey Chikuyonok开发。现在它改名为了Emmet,并且搭建了一个新的网站:docs.emmet.io下面记录下... 阅读全文
posted @ 2013-05-22 18:36 snandy 阅读(8501) 评论(0) 推荐(1) 编辑

使用GruntJS构建Web程序 (3)

摘要: 前一篇讲述了如何使用concat和uglify命令实现JavaScript资源的合并,压缩。这篇讲述下css资源的合并和压缩。有如下步骤:新建项目Bejs新建文件package.json新建文件Gruntfile.js命令行执行grunt任务一、新建项目Bejs源码放在src下,该目录有两个子目录asset和js。js下放selector.js和ajax.js,这在上一篇已经讲了如何合并压缩它们。这篇只关注asset目录,asset目录下放了一些图片和css文件。一会会把两个css资源reset.css和style.css合并,压缩到dest/asset目录。一个合并版本all.css,一个压 阅读全文
posted @ 2013-05-20 15:30 snandy 阅读(3495) 评论(6) 推荐(2) 编辑

Mac OS X 访问 Windows 共享文件夹

摘要: mac没有网络邻居,但可以使用finder访问局域网中windows共享的文件1、点击 Finder 前往菜单中的「前往服务器」(或快捷键 command+k)2、在连接服务器对话框中输入「smb://Windows主机的IP地址」,其中 smb 是访问 Windows 共享文件夹所使用的协议名称,SMB:服务器信息块协议(Server Message Block protocol)。 也可以使用计算机名3、连接Windows主机后会显示该主机的所有共享文件夹,选择想要访问的一个即可好了,现在可以直接对共享目录进行修改,删除,复制。这取决于共享时的权限设置。 阅读全文
posted @ 2013-05-19 09:16 snandy 阅读(53556) 评论(0) 推荐(1) 编辑

SpaceSniffer — 找出侵占磁盘空间的罪魁祸首

摘要: SpaceSniffer是一个运行于 Windows 下的磁盘空间占用查看工具。打开后,各种超大的文件全部浮出水面,而且 SpaceSniffer 支持直接选中之后的 Windows 右键菜单,这样就可以直接删除了(当然,不按住 Shift 的话最后还得清空回收站)。可以看到pagefile.sys和hiberfil.sys占用的比较多,以前提到过。官网有时被强,这里有一个备份下载。 阅读全文
posted @ 2013-05-11 10:20 snandy 阅读(2220) 评论(0) 推荐(0) 编辑

windows下安装dig

摘要: Dig是linux中的域名解析工具,功能比nslookup强很多,使用也很方便,不用象nslookup总是set不停。Dig是domain information groper的缩写,知道了来源想必大家也就容易记住这条命令了。Dig现在已经有人移植到了window上,可以在这里下载。这里以win7系统演示一,下载后直接解压到C盘二、下载 CmdHereAsAdmin.inf 文件,保存到本地,右键选择安装三、到目录C:\dig,右键点击dig文件夹,选择Cmd Prompt Here As Administrator四、复制resolv.conf文件到 %systemroot%\system3 阅读全文
posted @ 2013-05-10 15:48 snandy 阅读(11418) 评论(1) 推荐(0) 编辑

Finder增强插件XtraFinder

摘要: 一、安装下载后双击点击XtraFinder.pkg文件点“继续”点“安装”安装完成。二、使用如果你觉得 Mac 上的 Finder 很多时候用着并不方便,又不想花钱购买我们之前介绍过的 TotalFinder 的话,那么小编今天向你强烈推荐免费的 XtraFinder。从功能上来说,XtraFinder 可以完全替代售价18美金的 TotalFinder,且功能更加强大,更新也非常频繁。其中包括很多用户都非常喜欢的功能。标签功能 – 你可能会经常打开一大堆 Finder 窗口,不仅占用桌面空间,而且关闭起来也非常麻烦。XtraFinder 能够让你像使用浏览器一样,将多个独立的窗口以标签页的形 阅读全文
posted @ 2013-05-09 23:16 snandy 阅读(5312) 评论(0) 推荐(0) 编辑

Sublime Text 2/3 Windows/Mac 破解补丁/注册机/序列号

摘要: Windows: 下载地址:http://pan.baidu.com/share/link?shareid=562379&uk=151954025 Mac: 下载地址:http://pan.baidu.com/share/link?shareid=562382&uk=151954025 使用方法: 阅读全文
posted @ 2013-05-08 23:26 snandy 阅读(12767) 评论(1) 推荐(3) 编辑

Sublime text jQuery插件

摘要: 一、插件下载。如果访问不了,可以去这里下载。二、解压三、打开Sublime, 选择 Prefreences > Browse Packgaes,将解压后的文件夹复制到Packages目录,然后改名jQuery四、重启Sublime Text2,按Ctrl+Shift+p,选择set Syntax:jQuery,回车五、输入j,可以看到有许多jQuery的API提示了相关:JS格式化插件API自动补全插件 阅读全文
posted @ 2013-05-02 09:55 snandy 阅读(17521) 评论(0) 推荐(3) 编辑

快捷键汇集

摘要: 1 vi里回到编辑的页首(gg),页底(shift+g) vi 编辑模式 按 i,退回按esc vi 编辑好保存退出 esc,然后 :wq vi 不保存退出 esc,然后 :q!Mac里对比两个文件,可以使用终端自带的vimdiff 命令,如 vimdiff index.js index2.js2 ... 阅读全文
posted @ 2013-04-25 16:28 snandy 阅读(473) 评论(0) 推荐(0) 编辑

动态创建script在IE中缓存js文件时导致编码不正确bug

摘要: 先看下重现代码1,gb2312.html 该文件编码为gb2312 测试 2,utf8.js 该文件编码是utf-8var p = document.createElement('p');p.innerHTML = 'IE缓存导致乱码';document.body.appendChild(p);loadJS函数动态创建一个script,设置src,charset后添加到head中。这里每次点击按钮会将utf8.js引入到该页面中,utf.js内代码会创建一个p元素设置一段文本,然后添加到body上。第一次点击按钮,文字显示正常。第二次后,文字编码不正确了。如图如 阅读全文
posted @ 2013-04-11 14:09 snandy 阅读(2688) 评论(7) 推荐(1) 编辑

使用hotnode自动更新脚本(热发布)

摘要: 使用node开发服务器端程序时,一个典型的问题就是每次修改js文件后都要重新发布一次。如下是server.jsvar http = require('http');var server = http.createServer(function(request, response) { var repsHeader = { "Content-Type": "text/html" }; response.writeHead(200, repsHeader); response.end('Hello,World.');});se 阅读全文
posted @ 2013-04-06 11:41 snandy 阅读(4082) 评论(2) 推荐(1) 编辑

不小心使用内置标示符status后带来的悲剧

摘要: 代码大概是这样的var status = true;function changeSel() { if (status == false) { // do something } else { // do other thing }}有一个函数会将status设置为false,但后来每次调用changeSel都只进到else里的代码。后发现status是window的一个属性,即全局变量。它用来设置状态栏的文本提示,字符串类型。多数浏览器都默认没有开启改功能。Firefox里可以手动开启,1,地址栏输入 about:config2,找到dom.disable_window_status_c.. 阅读全文
posted @ 2013-03-29 17:50 snandy 阅读(1610) 评论(0) 推荐(1) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 18 下一页