深入理解计算机系统

星期三, 03月 4th, 2009

这本书我购于06年8月——惭愧,从上个月到现在,大约花了2~3周时间看完。

嗯,这个看完是应该打引号的。刚开始看,我准备要精读,除了阅读还做题。看完第2章,时间就过去了4天,我不得不意识到,对于毕业已经10年的我来说书中所述内容确实已经太过遥远,要完全精读并透彻理解,困难远比想象的大。最后,我去掉了部分和我目前兴趣方向完全无关的章节——大约占20%,剩下的部分粗粗读来,花了1周多的时间,囫囵吞枣完毕。

即使是这样,我也仍然感觉受益匪浅,对程序运行的机制有了一个观念上的转变,对以前很多不清楚不理解的东西,现在也有了一些认识和感受——虽然比较模糊,呵呵。

推荐所有热爱程序开发工作的同学都必阅读此书,不可错过。

Ruby Hacking Guide中文版

星期日, 02月 1st, 2009

Ruby Hacking Guide (简称RHG),是青木峰郎创作的一本剖析ruby实现的书。Javaeye.com目前有几位在翻译成中文版

http://www.javaeye.com/wiki/Ruby_Hacking_Guide/1262-chinese-version-of-the-ruby-hacking-guide

了解一下语言的实现无疑对编码有很大的助益,关注。

接着昨天……

VS2003到VS2005的项目迁移远没有想象的“可怕”,如果你只是转化为VS2005SP1支持的Web应用程序,那几乎没有什么多余的工作可作,使用VS2005打开SLN项目文件,随着向导一路按下去就可以完成转化工作了。

我的项目中有2个Web项目,转化时会在VSS中签出工程中的所有文件——如果不是VSS那么应该需要事先手动签出,转化会自动识别隐藏代码文件中的控件声明,并转移到一个新建的.aspx.designer.cs文件中,以此来实现兼容。

出现的问题

  • 部分文件无法识别,导致控件声明重复、缺失。这个很简单,可以删除.aspx.designer.cs文件,仍然使用原有的代码隐藏声明模式,或把隐藏代码中的声明删除,迁移到.aspx.designer.cs文件中,都可以很方便的解决。
  • ASP.NET2.0会有一些新的推荐方法替代旧的方法,例如最常用的可能就是读取AppSettings的方法了,虽然旧的方法仍然可用,不过只需要通过简单的“查找/替换”操作就可以在解决方案内替换所有会被编译警告的方法,追求品质嘛。
  • 回发或回调参数无效,这是一个兼容异常,通常是由于页面存在多个form或有js在客户端修改了数据造成,在ASP.NET1.1中会兼容这个异常不会报错,但是2.0中无法运行,需要进行修改。

这些是我在迁移中遇到的异常,更多的可以参考我昨天的文章 http://linnchord.net/archives/10

ok 祝大家顺利迁移,奔向2005 …… 2007就快出来了啊……

旧有系统总在不停的维护中,这两天维护一个网上商城的系统,我试图把他迁移到ASP.NET2.0/VS2005环境下。

由于种种关于迁移失败导致崩溃的信息给我带来的恐惧感,我花了一个下午的时间查询相关资料,详细考察了ASP.NET2.0/VS2005的编译部署机制和相关迁移文档,以确保整个过程顺利实施。

网上相关文档

首先需要确定迁移到哪种项目模式下。根据文档的描述,在VS2005中的ASP.NET网站有下面几种编译部署方式。

  • Web网站项目:VS2005提供的新的Web项目模式,没有项目文件控制,直接把一个物理目录视为项目,目录中的所有文件都是项目文件。
    • 完全编译:通过“网站发布”功能,在发布对话界面上取消所有选项(包括默认选项),可以将网站所有.NET文件(aspx/asmx/ashx/cs…)全部编译为一个DLL程序集,留下的只有非.NET相关的其他图片、样式表、js等文件和aspx占位文件。你可以打开占位文件查看,里面什么内容都没有……呵呵,这真是一种有意思的部署方式,可惜,这绝不适用于大多数一般网站开发项目。
    • 可更新预编译:这是VS2005默认的编译模式,在“网站发布”中选中“允许更新此预编译站点”,这样会保留aspx等非后端隐藏代码的程序文件内容,使你可以方便修改HTML内容并即时生效。这种部署方式最大的问题在于aspx页面会在发布时自动指向程序集,而每次编译的程序集文件名会发生变化,这就导致如果你修改了任何一个程序逻辑并重新编译,就不得不上传所有网站内的程序文件……这在实际网站开发中几乎也是不可接受的,且不论重新上传所有页面的操作代价,这几乎就否定了网站上传后其他人员如设计师直接修改aspx页面的可能,除非将设计师的工作也置于代码控制之下,这是难以实现的。
    • 固定命名和单页程序集编译:这个选项会解决上面的随机程序集命名问题,这个模式下的编译会把每个ASPX文件都编译为一个单程序集,每个程序集后会添加随机数,不过这个随机数是固定的。我试图查找这个随机数的生成依据,不过没有找到,推测应该是根据解决方案中的GUID。把这个选项和前面“可更新预编译”相结合,可以得到较好的编译方案……好吧,我得承认我忽略了生成数十或者以百计的单页面dll的繁琐,不过这是一个优劣并存的方案,因为当你只更新一个页面的逻辑时,可以只上传一个较小的dll,且不影响整个网站的运行,这也是一个不错的优势了。
    • 完全源码部署:这是一个很省心的方案,不做任何编译,直接COPY部署就OK,不过这是另一个极端,估计很少情况会采用——不过可以用来做测试部署,很方便。
  • Web应用程序项目:MS认识到到了“Web网站项目”带来的种种问题,在VS2005SP1中正式提供了这个原有的VS2003的项目模式。这样可以指定目录中的文件为项目文件——必须承认这是一个不可放弃的优势,所以虽然新的“Web网站项目”也有种种优势,但是我还是不得不采用这个“老”方案了。可以想象,如果采用新方案,我就得面对项目运行维护时在项目目录中骤增的数以百计、千计的运行时文件,还不得不接收由此带来的超长时间的编译及发布copy,这会使人崩溃的……

编译部署的方案就是上面这些了,VS2005的网站项目应该说是有很多优势的,不过用一句老话讲,这些改进并不符合中国国情,或者至少不符合一大部分中国网络服务供应商的运行状况。这些改进都是需要在业务相对稳定,有较严格代码控制等情况下才能较好的实施,而中国目前估计除了企业开发外,在一般的网络运营下少有这样的环境。其实从这些改进和现状的冲突,就可以看出国内和国外行业水平的差异,呜呼哀哉……

写太多了,迁移稍后吧……

Url Rewrite 实现

星期二, 05月 22nd, 2007

http://blog.joycode.com/scottgu/archive/2007/03/01/94004.aspx

整个blog实现了url重定向

/blog/{id}.aspx
/blog/tag/{id}.aspx
/blog/archives/{id}.aspx

采用UrlRewriter.NET开源组件实现重写。

Subsonic 2.01 Release

星期一, 05月 21st, 2007

http://www.codeplex.com/actionpack

下面翻译自Subsonic主页

关于Subsonic

Subsonic是一个工具组,能够帮助网站构建自己的数据层。其核心包括

  • 一个不需要你写任何代码就能实现的数据层,它在编译的时候自动构建你需要的全部对象和对象的强类型集合。
  • 一组完整的实用工具,实现类似Rails的scaffolding功能,migrations (DB Versioning)(不太清除这个词的准确翻译,可移植的数据层?),和代码生成工具;
  • 一个动态查询工具,通过它你不需要了解Sql就可以使用SqlServer和微软的企业库;
  • 一个关系对象映射工具,该工具可扩展使用视图和存储过程,更加灵活;

Subsonic可以帮你做什么:

  • 缩短你的开发周期。不仅仅是因为在开发初期帮你自动生成了代码,并且在你需要迁移数据库时也不需要重写数据层。
  • 你可以选择完全采用ORM(关系对象映射),也可以使用存储过程和视图。我们没有企图告诉你怎么做,因为你已经知道怎么做最好。我们只是想给你一些帮助。
  • 帮助你的应用自动构建。通过我们的代码生成器(类,脚手架,批处理类[batch-class]),在很短的时间内你的站点就可以实现自动构建。然后脚手架控件(scaffolding)会帮助你很快实现数据处理。
  • 一个可扩展的坚实的基础。我们的新手站点已经集成了多种特性,包括ASP.NET membership,AHAX,3列弹性XHTML布局主题,和用户管理页面。这些至少需要一个星期的工作,现在已经完成了!
  • 在很短的时间内把你的项目从设想实现为原型。这就是这个工具的强大所在——使用新手站点你可以快速实现敏捷的原型(后面难以翻译附原文 using our starter kit you can have a sharp prototype up and running in the merest fraction of what it used to take.)

Webcasts

UML2.0学习指南

星期五, 05月 18th, 2007

2-3天时间详细读了前面2章,昨天在地铁坐了1个小时等callaly,浏览了后面部分,然后在豆瓣写了如下评论。

关于书:翻译存在一定问题,不过基本不影响阅读。

关于UML:
1. 复杂度太高,当然这是由目前软件复杂度越来越高决定的;
2. 学习成本高,直接导致交流障碍,大大削弱了表达;
3. 维护成本高,感觉只适用于大型的开发周期长的复杂系统;

我的兴趣是web网站开发的,面向最终用户,UML除了可以借鉴一些思路表达,画画草图外,其他基本不适合……

书还是好书,需要学习UML的可以看看。

my first ruby code

星期五, 02月 16th, 2007

快放假了,工作终于少了下来,一口气看了几篇ruby文档,凑了一个小程序玩玩。

funny ruby code in intype

.Net Framework On ROR – ASP.NET ActionPack

星期四, 08月 24th, 2006

偶尔看到了这个东东,惊艳的感觉!Commerce Starter Kit 作者Rob Connery在微软的开源网站上http://www.codeplex.com推出的.net框架,基于.net2.0,依据ROR的思想构建,目前已经具备ActiveRecord和基本的scaffolding功能。

先看个视频
http://www.wekeroad.com/actionpackintro.html
提醒一下,这个视频很精彩,但是演示屏幕较大,时间较长,估计制作上有些问题,导致会占用很高的内存,看到后期大概有600-700M占用。

网站
http://www.codeplex.com/Wiki/View.aspx?ProjectName=actionpack

实在是很强大的功能,虽然目前可能还不完善,scaffolding部分还很简陋,不过ActiveRecord已经可用,相信看了视频演示后就会了解,会给工作带来很大便利,强烈推荐!

下载了源代码看,代码量出乎意料的小,大量的泛型应用,看来这个语言特性确实非常强大。

因为简单,所以困难。

星期三, 08月 9th, 2006

在网上回复了一个帖子,讨论为什么asp.net开发的网站应用经常表现出不稳定和性能低下,我是这么认为的。

asp.net的页面模型,其实是业界公认非常优秀的开发模型,这种模型简化了原来页面逻辑的烦琐流程,并且有机的和常规的系统模型和面向对象思想结合起来,提高了整个系统的抽象层次,降低了底层开发上手的难度,有利于从更高的层次上组织构架系统,提高开发效率。

但是也正是由于屏蔽了服务的底层,开发上手快、效率高,所以很多人没有或者不能深入理解其机制,只知道简单拖拉然后调用使用控件,只图方便,也不知道什么 地方该用什么地方不该用。现在很多asp.net新入门的人,不知道根本的页面交互模型,不知道http基本机制,甚至不知道HTML,拿着控件到处放, 反正功能出来就ok,这样的东西是什么结果可想而知。

这是目前国内asp.net做网站非常典型的情况,我了解过好几个公司网站都是.net做出来千疮百孔,没办法维护,最后干脆推倒,全部改了java或者php。

不过据我了解,在国外似乎这种情况较少。我思前想后,觉得归根到底,还是市场原因…市场决定一切,需求决定一切…后面就没什么可说了,大家都见多了 呵呵

3 of 612345...last »