摘要: 想到一种从两个维度对编程语言进行分类的方法。横向的维度是从语言设计的角度,考虑设计思想、语法语义、实现方式,按照语言特性的先进程度分为原始、过渡、现代三类。纵向的维度则从抽象层次和问题领域的角度分类。阅读全文
posted @ 2014-08-21 13:40 刘俊峰 阅读(401) 评论(0) 编辑
摘要: 2013年11月,Dart语言1.0稳定版SDK发布,普天同庆。从此,网页编程不再纠结了。在我看来,Dart语法简直就是C#的升级版,太像了。之所以喜欢Ruby的一个重要理由是支持mixin功能,而Dart也引入了mixin特性。最棒的是Google提供了集成开发环境——Dart Editor和Dartium,有非常强大的编辑和调试功能,既能编写网页程序,也能编写服务器端程序。把网站上的主要文档看完一遍后,再把SDK下载解压,就能用Dart编程了。第一个程序写什么呢?做了一个黑白棋游戏。直接上代码: Reversi 黑白棋 2 2...阅读全文
posted @ 2014-01-20 23:06 刘俊峰 阅读(320) 评论(0) 编辑
摘要: 1998年,上大学之后开始学习计算机和编程,课堂上零零碎碎地学了一些Basic、Fortran、Matlab。喜欢上编程之后,决定做一个严肃的程序员,又自学了C和C++。2001年,上网有一段时间之后,对做网页产生了兴趣,学了下HTML。做了一些静态页面,内容主要是在我的梦想中未来会出现什么样的科学技术,其中有一项预测十到二十年之内会发展出如今的智能手机,即集看书、看图、听音乐、看视频、看网页、打电话、拍照、录音、录像、大屏幕于一体的掌上电脑,结果没用十年iPhone和Android手机就问世了,其他一些基因工程和人工智能方面的预言短期内很难实现。然后放到了某个免费的个人空间里(记不清是哪个了阅读全文
posted @ 2013-07-30 21:07 刘俊峰 阅读(3770) 评论(66) 编辑
摘要: 本图片使用yEd软件制作界面、功能、结构是软件的三个构成要素,因此软件开发的过程围绕这三个要素进行。需求明确后,功能与界面的设计可以并行进行,设计完成后再次确认是否符合需求;结构设计确定后,功能与界面的实现可以并行进行,然后集成测试,完善功能和界面,交付使用。使用之后,提出新的需求,进行下一轮迭代。每一轮迭代的范围可大可小,一般来说,先把最核心的需求实现出来,再进一步改进易用性,扩充功能等。阅读全文
posted @ 2013-04-14 23:16 刘俊峰 阅读(94) 评论(0) 编辑
摘要: 思维导图是一种树状的图,用来拓展思维,记录和传递思想。但用思维导图来描述知识就常常是力不从心了。经过长期的思考,我发现需要使用一种新的工具来表达和描述知识,并称之为知识图。知识图的定义知识图表示一个概念体系,概念用结点表示,概念之间的关联用箭头表示;箭头有四种:无向、单向、双向、分叉;结点的内容可以是文字、图形、嵌套的知识图及其组合,箭头上面也可以用文字或图形标志关联的名称或内容。结点和箭头的图形可以选用适当的大小、形状、背景等,使整个知识图更加的生动形象。知识图不限定图的结构为树,也可以是网,所以更具普遍性,能够表达思维导图、组织结构图、流程图、示意图等已经常用的一些图型。下面用一幅知识图来阅读全文
posted @ 2013-03-24 21:46 刘俊峰 阅读(1015) 评论(2) 编辑
摘要: 上次发了《一个人六个月做了个网站,还要不要继续做呢?》一文后,得到了众多网友的回应,我仔细地阅读了每一条评论,然后做了一个决定:再做一段时间,并观察发展情况。同时网站的访问量也迎来了到目前为止的一个最高峰,在此非常感谢各位网友的支持。有网友提供了一些具体的帮助和建议,之后的三个月里改进了产品链接的网址形式,做了搜索引擎优化,产品列表及筛选搜索结果可以按照最新上市和最高销量排序,销售列表也做了分页和排序,增加了平板电脑和电子书产品,进一步美化界面等,并且每隔一两个星期就把一些新发布的产品数据更新进去。总体而言这个网站跟同类型网站有一定的实用性和差异性,但总觉得还没有优异到可以去大肆地去做广告宣传阅读全文
posted @ 2013-03-17 15:14 刘俊峰 阅读(1407) 评论(5) 编辑
摘要: 前言从Win8RC、Win8RP一直用到RTM企业试用版,原以为到期后会停止自动更新、停止打补丁,结果90天试用结束后居然是每开机用一个小时就自动强制关机,而且事先没有任何提示会变成这样。一直对Linux世界有种好奇,不妨乘此机会测验一下转到Linux之后能不能同等地满足使用需求和高效地完成工作。从安装系统到配置成可日常使用整整花了两三天的时间,有必要把中间不断Google和百度搜到的方法,验证可行的记录下来。一、选择版本众多Linux发行版里,Ubuntu和Fedora名气最大,Ubuntu安装更容易一些,Fedora以后再试吧。新机器选64位,老机器选32位,注重稳定性选12.04LTS,阅读全文
posted @ 2012-12-31 17:22 刘俊峰 阅读(1047) 评论(3) 编辑
摘要: 首先说一下做这个软件的动机和用途。平时喜欢在cnBeta网站看新闻,但是有时候太忙了,不可能每天都去看,一般两三天或者四五天去一次,快速扫一下重要的新闻,遇到特别好的文章就收藏起来。唯一不爽的就是超过一天的新闻评论不显示了,所以一边学Ruby一边做了这个软件。上一篇博客中使用的方法是在在浏览器中使用远程的代理服务器,然后就可以看到过期的评论。但是网页打开速度比较慢,图片加载慢,视频看不了。现在又用了一个新的方法,而且效果不错,代理服务器还是在本机运行,网页文本从远程服务器获取,其他的图片、视频等则不经过远程代理,从而达到了一个较好的使用体验。代理服务器做成了比较通用的结构,可以挂载对多个网站的阅读全文
posted @ 2012-11-04 15:30 刘俊峰 阅读(1562) 评论(1) 编辑
摘要: 安装完Ruby之后,doc目录里自带了一本书《THE BOOK OF RUBY》,粗看还可以,细看就一般了,而且是基于ruby 1.8的。Ruby 1.9改了很多地方,跟1.8不完全兼容了,改掉了一些缺点,很不错。最近在上一篇博客的基础上又做了以下改进:1.个别网页中有编码错误的字符,不能正确解析,用下面的代码加以修正。1if not text.valid_encoding?2 puts "warnig: text contains invalid chars"3 text.encode!("utf-8", :invalid => :replace阅读全文
posted @ 2012-10-26 11:19 刘俊峰 阅读(1235) 评论(0) 编辑
摘要: 10月12日突然对Ruby产生兴趣了,于是就找了本书《Programming Ruby 1.9》来看,结果被它迷上了。长期以来我一直认为我知道的各种编程语言都不够好,一直想自己设计一门语言。看了Ruby之后,发现的它的语法和语义正是我想要的,尤其是它的Mix in机制,是我寻找了好久的一个功能,Ruby有了,而且实现的很好,这一点很令人兴奋。唯一不同的是我想设计的是静态类型的语言,而Ruby是动态类型的,一旦引入类型的声明,语法就会很复杂,比如Scala,各有优劣,Scala也是个不错的语言。上次学Lua的时候,两天学会,然后两天做了一个练习《绘制任意二元不等式的图像表示》。Ruyb比Lua复阅读全文
posted @ 2012-10-21 21:11 刘俊峰 阅读(1399) 评论(5) 编辑
摘要: 今年3月份从公司辞职后在家一边带小孩,一边做网站。最开始的想法是做一个商品知识库,类似于维基百科的形式,可以让卖家和买家都去更新各种商品的信息,参见另一篇文章。但是这需要网站有一定的知名度和访问量,否则很少有人愿意去发布和编辑里面的信息,所以决定先自己搜集一些商品资料,吸引用户去访问。商品的种类实在是太多了,所以先把范围缩小到自己比较感兴趣的数码和家电产品。从做网站的角度去考虑,不可能一下子就把各种数码和家电产品都做出来,所以决定先从比较热门的,更新换代比较快的手机做起。于是最初的商品知识库网站演变成了现在的手机参数控网站。确定了网站的内容后,开发技术选了ASP.Net MVC 4和Mongo阅读全文
posted @ 2012-09-27 22:00 刘俊峰 阅读(7815) 评论(113) 编辑
摘要: 生命体大部分生命体都是由细胞构成,基因(DNA)存在于细胞核中的多个染色体上。细胞根据基因生成对应的蛋白质,通过各种蛋白质(各种酶)指导生命体工作。病毒本身没有细胞,其组成就是RNA(或DNA)链,必须侵入其他的细胞才能繁殖。基因对于细胞来说就是以四进制为基础编就的一段程序,人类和其它生命只不过是运行着程序的机器罢了。染色体上并不全是有效基因,有很多是无意义的字符,并且基因因为不同的原因在染色体上不断的重复。有时候会发现有意义的基因经常被其它信息所打断。科学家发现在人体基因里竟然有病毒的基因代码,不过它们都被甲基化了(仅头几个字符被甲基化),不能再被激活了。在《基因组:人种自传23章》中把基因阅读全文
posted @ 2012-07-22 11:03 刘俊峰 阅读(106) 评论(1) 编辑
摘要: 帮我弟弟配了一台电脑,网购零件,自己组装:不包括音箱、鼠标和键盘,总价4518元,秒杀市面一切一体机电脑的配置。CPU有点浪费,可是集成HD4000的就只有这款。60G的固态盘搭配了一个旧笔记本电脑上拆下来的80G的机械盘,一个做系统盘,一个放资料。第一次用固态盘,果然很好用。主板支持的新技术和功能比较多:UEFI,SATA3,USB3.0,HDMI,WIFI等。优点:既可以家用也可以放办公室用。缺点:显示器没有自带音箱,用了DVI连接线,接口比HDMI的大很多,主板自带的WIFI天线不够精干,看上去比较啰嗦。阅读全文
posted @ 2012-06-27 11:53 刘俊峰 阅读(157) 评论(0) 编辑
摘要: 购物的第一步不是比价格,而是比参数。先挑型号,再挑商家。商品知识库要做的就是: 尽可能多地收录各种商品的信息,要求参数准确详实。 提供易用的根据参数筛选商品和给定商品比较参数的功能。 信息的组织以商品为中心,而不是以店铺为中心。以百科词条的方式收录商品: 每一款商品只对应一个条目,不断编辑,不断完善。 每个商品条目包括商品的描述、参数、图片、评论、销售信息等。 建立科学的商品分类体系和商品资料库。对于买家而言: 首先找到的是商品,然后才是所有卖这件商品的人。 同一种商品,可以在不同型号、款式之间比较。 同一款商品,可以在不同的卖家之间挑选。对于卖家而言: 同一款商品的所有卖家都列在同一个页面,阅读全文
posted @ 2012-05-02 15:37 刘俊峰 阅读(611) 评论(1) 编辑
摘要: Unobtrusive Javascript有三层含义:一是在HTML代码中不会随意的插入Javsscript代码,只在标签中加一些额外的属性值,然后被引用的脚本文件识别和处理;二是通过脚本文件所增加的功能是一种渐进式的增强,当客户端不支持或禁用了Javsscript时网页所提供的功能仍然能够实现,只是用户体验会降低;三是能够兼容不同的浏览器。启用Unobtrusive Javascript的步骤:1.在web.config文件中加入<configuration> <appSettings> <add key="ClientValidationEnabl阅读全文
posted @ 2012-03-31 12:10 刘俊峰 阅读(3382) 评论(1) 编辑
摘要: 花了两个多星期的时间,从头到尾看了一遍,看此书如沐甘霖,绝对是一本好书。第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 刘俊峰 阅读(1664) 评论(11) 编辑
摘要: 上周五从公司离职了,开始做自己的事情,同时在家看小孩子。新买了桌椅和显示器。电脑桌是定制的,样式是我设计的。显示器是21.5英寸LED背光IPS宽屏。电脑主机是去年元旦组装的,CPU是Core i5 760, 显卡是HD6870, 4GB内存, 1TB硬盘。本人比较感兴趣的有以下几个领域:编译器游戏引擎操作系统眼下先打算做一个网站,使用ASP.NET MVC + MongoDB开发,网站的内容下次再说。阅读全文
posted @ 2012-03-12 09:15 刘俊峰 阅读(386) 评论(2) 编辑
摘要: 软件开发的七个步骤:功能设计 结构设计 代码编写 功能测试 性能测试 部署维护 用户体验。关于软件开发流程,英语中对应的单词比较多,叫法不统一。我感觉在中文中采用这个七个词更合适一些。箭头首尾相接,组成一个循环,表示这七个步骤不是一次性完成的,而是多次进行的。先设计核心的和主要的功能,然后就实现和测试,给用户使用,收集反馈意见,然后再增加和完善一些功能,重复整个流程。循环多次后,整个软件的质量以螺旋上升的方式得到改进。在功能设计阶段,做需求分析和用户界面的设计,确定软件功能的范围和程度。在结构设计阶段,考虑所使用的软硬件平台和开发工具,功能模块的划分,接口层次的划分;再详细一点的话可以包括定义阅读全文
posted @ 2012-02-29 16:36 刘俊峰 阅读(173) 评论(0) 编辑
摘要: 先来回顾一下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 刘俊峰 阅读(1533) 评论(1) 编辑
摘要: 潘正恺 (Kenneth Pan)是System Center Configuration Manager的掌舵人,负责整个产品团队的发展方向,领导整个产品团队进行产品研发,并协助产品的销售和售后支持工作。圣诞前夕,他来到上海,与上海的SCCM研发团队共同工作,抓住这个难得的机会,我们对他进行了一次专访,从访谈过程中,潘正恺为我们展现了SCCM产品十几年来风风雨雨的历史:问:请问您是何时加入微软的?能不能简要介绍一下您在微软的经历?潘正恺:1992夏天,我还在University of Washington的时候,就以实习生的身份加入微软,当时我的第一个任务就是为当时的SMS 1.0写代码。那阅读全文
posted @ 2011-11-18 16:38 刘俊峰 阅读(117) 评论(0) 编辑