梓寒

Haroopad 最好用的markdown编辑器

Haroopad 最好用的markdown编辑器跨平台,代码高亮,Vim 键绑定,多列模式,行号,折叠, Github Flaverd Markdown 等功能.

设计模式原则总结

from:http://blog.prosight.me/blogs/984/名称解释0、单一职责原则(SRP)就一个类而言,应该仅有一个引起它变化的原因。一、”开放-封闭”原则(OCP)在软件设计模式中,这种不能修改,但可以扩展的思想也是最重要的一种设计原则。即软件实体(类、模板、函数等等)应该可以扩展,但是不可修改。【通俗】:设计的时候,时刻考虑,尽量让这个类是足够好,写好了就不要去修改了,如果新需求来,我们增加一些类就完事了,原来的代码能不动则不动。二、里氏代换原则(LSP)1.一个软件实体如果使用的是一个父类的话,那么一定适用于该子类,而且他觉察不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。【一句话】:**子类型必须能够替换掉他们的父类型。**三、依赖倒置原则(DIP)1.高层模块不应该依赖于底层模块。两个都应该依赖抽象。2.抽象不应该依赖于细节,细节依赖于抽象(【白话】:针对接口编程,不要针对实现编程。四、接口隔离原则(ISP)1.使用多个专门的接口比使用单一的总接口总要好。换而言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小接口上的。2.过于臃肿的接口是对接口的污染。不应该强迫客户依赖于它们不用的方法。五、合成/聚合复用原则(CARP)尽量使用合成/聚合,尽量不要使用类继承。【聚合】:表示一种弱的拥有关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。【合成】:一种强的拥有关系,提现了严格的部分和整体的关系,部分和整体的生存周期一致。六、迪米特法则(LoD)最少知识原则强调类之间的松耦合。即:如果两个类不必彼此直接通信,那么着两个类就不应当发送直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

离站提示JS工具:Ouibounce

离站提示JS工具:Ouibounce,当离开网站时给出一个提醒,从jobbole看到的.tip:和bootstrap的model 结合时要在参数的callback中 手动 用$('#share').modal();触发,官网没说,这个要注意.demo如下:[repo owner=”carlsednaoui” name=”ouibounce”]

tabIndent.js让你在Textarea中也能用Tab键

很多程序员都会习惯性的在Textarea中按Tab键进行缩进,结果是——焦点移动到下一个控件去了。tabIndent.js就是一个专门用来解决这个问题的小巧脚本,只需要在页面中引用它,并调用tabIndent.renderAll();即可处理class为tabindent的Textarea。[repo owner=”julianlam” name=”tabIndent.js”]

Web 热图库 Heatmap.js

Heatmap.js用来生成基于用户自定义数据上的web 热图,内嵌html5 画布元素。可根据以下数据来源绘制热图:静态数据鼠标移动鼠标点击支持浏览器:Firefox 3.6+, Chrome 10, Safari 5, Opera 11 and IE 9+.[repo owner=”pa7” name=”heatmap.js”]

以后的IT路还很长(2)

    以后的IT路还很长(2)    想想自己好久没静下来思考下了,等反省好了,再睡吧!毕竟知道自己以后怎么做了,比起一晚上不睡觉,重要的多。    我一直想做个智慧的人,现在发现,自己连聪明也算不上,更是聪明反被聪明误,想想那些事情,我都不想见人了!    想当初,一周前还说着不到南京,一周后,就屁颠屁颠的跑到南京了,之后,就是连续一个多月的加班,之前,哪里这样过啊!来南京两年多了,觉得最能放松下来的是,有次上线升级,我已经抗了几个通宵了,那天晚上,抗不住了,就趴着睡了,老大把我喊起来,让我把所有事情,交给同事帮同事帮我上线,让我回家睡觉,我立马收拾了下,给同事说了几句,回家就睡觉,那次,是我觉得最轻松的时候,现在想起来,都能感觉舒服好多。    现在,让我最怀疑我自己的是,两年前做的傻事了,当时竟然把自己封起来了,和谁也不联系了,目的只想看看自己努力了一年,一年以后的自己是个什么样,事实证明,我还是老样子,除了多知道了几句南京话,也没啥变化了,还有就是失去的东西。是不是做错了,目前看来,是错了,彻头彻尾的错了!    我本来就是不想多说话的人,那次以后,说的话,更少了,而做我们行业的,做是我们的基础,要做好,更多的东西都是说出来的。我知道这样不好,也时常给自己提醒,可自己就这样慢慢,变的少说的多了,在团队里面,我说的是最少的,这也导致我最后在团队里面,属于孤立的地位,在做团队工作时,遇到最大的难题。也影响我个人的生活,已经和别人,不知道怎么沟通了。    我是个很阿Q的人,一直认为着,有问题是好事,不是什么坏事,有问题解决问题,人就是在解决问题中成长起来的,现在有矛盾也是好事,现在的矛盾多一些,以后的矛盾就能少一些,不是什么坏事。    也一直在安慰自己,等实际成熟了,等准备周全了,等什么事情做完了,等这一切都好了,什么都晚了,什么都就没有了。    现在我也慌了,不知道自己要什么,要做些什么,什么也不知道,对什么也没有信心,老是害怕,越害怕,越想逃避,真不想对面对这些烦人的事情。常常给自己说的,有困难,有问题,有矛盾,不是什么坏事,是好事,这样才好玩,太平了,就没意思了。另外一句,烦啊!烦不了了,烦不了,我不玩总行吧!爱咋咋地吧!    最悲剧的是,玩,看不到希望,不玩,又看不到失望,伤不起啊!    慌了,就去钓鱼,钓鱼其实也是种逃避,钓鱼完后,还得面对,是自己的事情,总得去解决,除非,不玩这个游戏了。    现在,事情按照计划去做,问题、矛盾一点点的解决,梦想,一点点的实现,如果没发成功,我也只好归结到天意如此,我也没辙了,我已经尽自己的最大努力了!

这个地方漂亮啊!

这个地方漂亮啊!

人人网的开源框架paoding-rose(2)

人人网的开源框架paoding-rose(2) 上次写过rose,说到文档不全,其实不是文档不全,而是我没有细细看,文档还是写的很详细的,而且源码注释很规范,加上源码注释和文档,rose框架还是很容易的掌握的。 在安全性设计上面打算采用spring security来实现的,把spring security集成到系统用了几天的时间,这样系统就是spring + spring security + rose的设计了。 其中的遇到的问题是spring security 需要配置自己的过滤器,而在rose的系统中只需要配置一个过滤器,配置两个过滤器就出抛出已经有过滤器的异常,我把spring security的过滤器去掉了,只配置了一个rose的过滤器,再按照配置spring security的方式配置好了。在配置过程中,就是一个不断尝试,试着配出来的。 配置好了,就是项目启动不再出现异常情况,运行也不报错了。可预期的结果并不是我要的结果。我过滤的方式是通过url来控制权限的,spring security对正常的url是可以进行控制的,对pathinfo格式的url就不能做控制。这个问题纠结了好久,我还询问过开发rose框架的作者,他给我的解释是rose本身就是一个独立的context,它的parent是root context,这样说来,rose就和spring security是属于两个context了,当然不能控制了。 根据日志记录,这样的解释说不过去,从日志记录中,spring security对url都是做过滤的,首先是rose对url进行过滤,接着是spring security进行过滤。在看rose源码的时候,有这样的一段注释。“如果一个请求在Rose中没有找到合适的类来为他服务,Rose将把该请求移交给web容器的其他组件来处理。”  这样才能解释通道理,也可以和日志记录对应起来。rose先做了处理,无法处理的时候才交给其他容器做处理的。 我想尝试先让spring security先来处理,这样处理之后,spring security却不会请求交给rose来处理,这块尝试了好久,没有找到解决的办法,最终只跟踪到spring security中的一个异常对象,在rose处理了,就不会把异常抛出,这个也是spring security不能处理rose请求的原因的。结果是我解决不了,引入spring security就放弃了。 引入spring security我是想偷工的,没有偷成。反过来也想想,引入了新框架进来,就会增加系统的负担,我还是希望系统轻巧一点。 可安全性总是要做的,了解spring security的原理,同理写一个了。spring security是按照面向切面的思路,通过过滤器来实现的。rose的过滤器很好用,不仅可以设置过滤器,还可以设置局部和全局的过滤器,还可以设置过滤器的权重,满足什么时候,什么场景,采用什么过滤器。 我写的基本可以用起来,满足了我的基本要求了。现在也仅仅是满足需求,对一些漏洞还需要继续的修补。

vmware, failed to lock the file 的解决

vmware, failed to lock the file 的解决出现了“failed to lock the file”的错误。google一下,通过删除镜像文件的loc文件夹就解决了。

Multi-Touch iTable

最新的触屏技术,以后就不会键盘、鼠标了.[youtube=http://www.youtube.com/watch?v=xg8yuSKN5aM]