摘要: Unobtrusive Javascript有三层含义:一是在HTML代码中不会随意的插入Javsscript代码,只在标签中加一些额外的属性值,然后被引用的脚本文件识别和处理;二是通过脚本文件所增加的功能是一种渐进式的增强,当客户端不支持或禁用了Javsscript时网页所提供的功能仍然能够实现,只是用户体验会降低;三是能够兼容不同的浏览器。启用Unobtrusive Javascript的步骤:1.在web.config文件中加入<configuration> <appSettings> <add key="ClientValidationEnabl 阅读全文
posted @ 2012-03-31 12:10 刘俊峰 阅读(16153) 评论(1) 推荐(6) 编辑
摘要: 花了两个多星期的时间,从头到尾看了一遍,看此书如沐甘霖,绝对是一本好书。第4章讲的非常精辟,先介绍了架构模式的演化历史,从Smart UI, Model-View, Three-Tier到MVC;并比较了与Model-View-Presenter和Model-View-View Model的区别。然后介绍了领域驱动(Domain-Driven Development)、依赖注入(Dependency Injection)和单元测试(Unit Testing),再后面的章节中贯彻了这三种思想并用在了实例中。第6章介绍的Nject和Moq工具以前也没用过,再不用的话就会感觉很落后。第11至20章是本书的核心内容,详细讲解了ASP.NET MVC 3 Framework,尤其是15至19章能学到很多新知识。 阅读全文
posted @ 2012-03-17 12:35 刘俊峰 阅读(2216) 评论(10) 推荐(3) 编辑
摘要: 上周五从公司离职了,开始做自己的事情,同时在家看小孩子。新买了桌椅和显示器。电脑桌是定制的,样式是我设计的。显示器是21.5英寸LED背光IPS宽屏。电脑主机是去年元旦组装的,CPU是Core i5 760, 显卡是HD6870, 4GB内存, 1TB硬盘。本人比较感兴趣的有以下几个领域:编译器游戏引擎操作系统眼下先打算做一个网站,使用ASP.NET MVC + MongoDB开发,网站的内容下次再说。 阅读全文
posted @ 2012-03-12 09:15 刘俊峰 阅读(708) 评论(2) 推荐(0) 编辑
摘要: 软件开发的七个步骤:功能设计 结构设计 代码编写 功能测试 性能测试 部署维护 用户体验。关于软件开发流程,英语中对应的单词比较多,叫法不统一。我感觉在中文中采用这个七个词更合适一些。箭头首尾相接,组成一个循环,表示这七个步骤不是一次性完成的,而是多次进行的。先设计核心的和主要的功能,然后就实现和测试,给用户使用,收集反馈意见,然后再增加和完善一些功能,重复整个流程。循环多次后,整个软件的质量以螺旋上升的方式得到改进。在功能设计阶段,做需求分析和用户界面的设计,确定软件功能的范围和程度。在结构设计阶段,考虑所使用的软硬件平台和开发工具,功能模块的划分,接口层次的划分;再详细一点的话可以包括定义 阅读全文
posted @ 2012-02-29 16:36 刘俊峰 阅读(5347) 评论(0) 推荐(1) 编辑
摘要: 先来回顾一下2011年:2011年1月20日Intel推出Sandy Bridge架构的Core-i3和i5。2011年6月29日AMD推出两款四核的台式机版Fusion芯片,A6-3650和A8-3850。2011年2月3日谷歌发布了专用于平板电脑的Android 3.0 Honeycomb系统。2011年10月19日,谷歌和三星联合发布了基于Android 4.0的Galaxy Nexus。2011年3月21日,微软在中国发布IE9的正式版本。苹果iPhone 4S于2011年10月4日发布及10月14日上市。小米手机意外杀出,8月发布10月上市,优点是性价比高,缺点是与三星、苹果、魅族的 阅读全文
posted @ 2012-01-02 22:15 刘俊峰 阅读(1727) 评论(1) 推荐(1) 编辑
摘要: 潘正恺 (Kenneth Pan)是System Center Configuration Manager的掌舵人,负责整个产品团队的发展方向,领导整个产品团队进行产品研发,并协助产品的销售和售后支持工作。圣诞前夕,他来到上海,与上海的SCCM研发团队共同工作,抓住这个难得的机会,我们对他进行了一次专访,从访谈过程中,潘正恺为我们展现了SCCM产品十几年来风风雨雨的历史:问:请问您是何时加入微软的?能不能简要介绍一下您在微软的经历?潘正恺:1992夏天,我还在University of Washington的时候,就以实习生的身份加入微软,当时我的第一个任务就是为当时的SMS 1.0写代码。那 阅读全文
posted @ 2011-11-18 16:38 刘俊峰 阅读(605) 评论(0) 推荐(0) 编辑
摘要: 根据自己多年的学习和思考,画了一个编译器的结构框架图,转载请注明出处。目标代码是机器语言或汇编语言,汇编语言可以通过汇编器生成机器码。汇编语言的定义取决于CPU的体系架构,目前主要有三种:x86/x64, ARM, MIPS。中间代码是虚拟机的机器语言,虚拟机目前主要有四种:CLR, JVM, Parrot, LLVM。CLR用于.Net平台,JVM用于Java语言,这两个是基于栈的虚拟机。Parrot用于脚本语言,比如Perl,Python,Ruby等;LLVM用于C、C++等语言,这两个是基于寄存器的虚拟机。在性能上比较而言,基于寄存器的虚拟机优于基于栈的虚拟机。现在做编译器主要是做前端. 阅读全文
posted @ 2011-09-02 19:28 刘俊峰 阅读(4065) 评论(7) 推荐(5) 编辑
摘要: 想出三进制数的对称表示法是从一道数学题开始的: “最少需要多少个砝码可以在一台天平上称出从1千克到40千克之间的任何整数千克的重量?” 阅读全文
posted @ 2011-08-26 14:18 刘俊峰 阅读(6180) 评论(3) 推荐(3) 编辑
摘要: 最近用C#做了一个Lua的解释器,发到了CodeProject上面,有源代码,并且在CodeProject这周的Newsletter中排在Most popular new articles第一个。Lua的简单主要是因为动态类型,不需要声明和定义类型;Lua的强大主要是因为支持函数式的编程;高效则是因为语法简单,解释器的实现非常小巧。运行高效,各种解释型语言中Lua的性能最高;编程高效,用很短的代码就能表达相对较多的语义。所以Lua非常适合作为第一门编程语言来学习,建议所有的中学生学习Lua编程语言,最好是学校有这样的课程。Lua和C语言是协同工作的,基础的功能用C来实现,然后在Lua中调用,用 阅读全文
posted @ 2011-07-27 15:33 刘俊峰 阅读(698) 评论(3) 推荐(0) 编辑
摘要: 上次介绍了用Lua做的个绘制二元等式或不等式的图像的软件,今天增加了输出图片的功能,下载地址还是原来的。下面介绍几个使用技巧,这也正是这个软件的有趣之处。1. 求余和周期函数利用求余可以将一个图形变为一系列的图形,举几个例子:对直线的截距求余,y=x+d → (y-x)%d=0,例如:(y-x)%20 == 0对直线的倾角求余,y=tgθx → atan(y/x)%θ=0,例如:abs(atan(y/x)%0.2)<0.005对圆的半径求余,sqrt(x^2+y^2)=r → sqrt(x^2+y^2)%r=0, 例如:abs(sqrt(x^2+y^2)%10)<0.1求余是一个周 阅读全文
posted @ 2011-07-17 14:19 刘俊峰 阅读(2153) 评论(0) 推荐(1) 编辑
摘要: 一直在等汉王的E920,彩色电子纸+触摸屏,可惜啊就是不上市,只好买黑白的了。看PDF和漫画一定要9.7寸的屏幕,6寸屏是不能代替纸质书的,9.7寸则可以,于是买了欣博阅G10.功能挺多,主要用到的也就是看书,大部分格式都支持,就是反应速度稍有点慢。 阅读全文
posted @ 2011-07-02 11:30 刘俊峰 阅读(514) 评论(4) 推荐(0) 编辑
摘要: 输入任意的包含x和y两个变量的Lua表达式就可以绘制出对应的图像。Lua支持的运算符如下:算术+ - * / % ^比较== ~= < > <= >=逻辑and or not其中%是求余,^是乘方;需要注意的是相等用==,写=则报语法错误。Lua预定义的数学函数参见Reference Manual的mathlib。软件界面如下:绘图的算法很简单,遍历每一个像素点,如果对应的坐标区域满足表达式给出的条件就给这个像素着色。需要特别说明的是Pixel Split的含义,每个像素点并不是对应一对坐标值,而是对应一个矩形区域,因此对于某些函数需要做细分才能画准确一点。比如输入8表 阅读全文
posted @ 2011-06-28 00:04 刘俊峰 阅读(10194) 评论(14) 推荐(4) 编辑
摘要: 关于内存的使用,栈(stack)和堆(heap)是非常重要的两个概念,网上讲解的资料也比较多,大家也应该知道栈和堆分别的用途是什么,接下来说一下我对栈与堆的本质区别的理解。每个程序在运行时系统都会分配一块叫做栈的连续的内存区域,大小一般为1M或2M,是编译程序时指定的常数。堆则是系统中所有空闲的内存区域,因此是不连续的,而且有可能是虚拟内存。函数的调用和返回是通过栈来实现的,不细说了。程序中用到的变量(对象)所占据的内存空间既可以从栈上分配,也可以从堆中分配,区别如下:1. 内存指针的性质不同栈上面只能分配长度较小、大小固定的数据,变量的内存地址相对于栈指针的偏移量在编译时就可以确定,因而可. 阅读全文
posted @ 2011-06-07 19:33 刘俊峰 阅读(689) 评论(2) 推荐(0) 编辑
摘要: 应老婆的要求,用javascript做了一个鼠标滑上去后图片放大浮出的效果,大家指正一下。1<script>23functionGetAbsPosition(obj)4{5varcurleft=0,curtop=0;6do{7curleft+=obj.offsetLeft;8curtop+=obj.offsetTop;9}while(obj=obj.offsetParent);10return[curleft,curtop];11}1213functionShowFloatingImage(image,width,height)14{15varid="trailimage 阅读全文
posted @ 2011-05-27 23:59 刘俊峰 阅读(6408) 评论(6) 推荐(0) 编辑
摘要: 编程中常用的动词 FIRST 原则:专注(Focused,单一职责)、独立(Independent)、可复用(Reusable)、简洁(Small)和可测试(Testable)。 Write it the right way first time, and make sure you only mo 阅读全文
posted @ 2011-05-24 15:38 刘俊峰 阅读(852) 评论(1) 推荐(2) 编辑
摘要: 收集整理了一下敏捷开发的12条准则。 阅读全文
posted @ 2011-01-27 17:14 刘俊峰 阅读(1320) 评论(0) 推荐(0) 编辑
摘要: IE9正式版发布,HTML5开始普及。Android 3.0发布,大量厂商推出的平板电脑上市。CPU集成的显卡取代主板集成显卡,推动桌面电脑进一步小型化。苹果iPhone 4G发布及上市。魅族M9 II发布及上市。TD-LTE在一线城市商用。星际2中文版、魔兽新资料片在中国上线。神舟八号发射。京沪高速铁路建成通车。 阅读全文
posted @ 2011-01-13 13:47 刘俊峰 阅读(1758) 评论(17) 推荐(1) 编辑
摘要: 编程行业“满足我们内心深处的创造渴望和愉悦所有人的共有情感”,提供了五种乐趣:创建事物的快乐 开发对其他人有用的东西的乐趣 将可以活动、相互啮合的零部件组装成类似迷宫的东西,这个过程所体现出令人神魂颠倒的魅力 面对不重复的任务,不间断学习的乐趣 工作在如此易于驾驭的介质上的乐趣——纯粹的思维活动,其存在、移动和运转方式完全不同于实际物体同样,这个行业... 阅读全文
posted @ 2010-11-26 16:15 刘俊峰 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 先看一个例子,然后再提出这个问题。[代码]hashSet的节点和要判断的节点指向的是同一个实例,Contains方法会一直返回True吗?运行这段代码就会发现在节点的Name变了之后,hashSet里就不再包含这个节点了,这看上去有点奇怪。原因是向HashSet里加入元素时会先计算一下哈希值,并保存起来,判断是否包含时先看哈希值是否相等,若想等再调用Equals方法判断。所以问题就是既希望哈希值是... 阅读全文
posted @ 2010-11-19 16:01 刘俊峰 阅读(498) 评论(1) 推荐(0) 编辑
摘要: 大概有5年没有做网站了,最近帮朋友做一个小网站,正好体验一下ASP.NET MVC2。 花了两个周末整整4天时间编写了整个网站的网页框架和后台代码,美工设计和产品内容的填充是别人做的。接下来说一下这次做网站的几点心得:1)5年前对于小网站来说只要IE6中排版没问题就行了,现在则不同了,要考虑IE8、Firefox、Chrome等。第一个问题就是在IE6/IE7里CSS的text-align属性不仅... 阅读全文
posted @ 2010-06-27 16:03 刘俊峰 阅读(4971) 评论(9) 推荐(2) 编辑