深入理解计算机系统
星期三, 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
了解一下语言的实现无疑对编码有很大的助益,关注。
ASP.NET2.0的编译部署和VS2003到VS2005的项目迁移.2
星期五, 07月 6th, 2007
接着昨天……
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的编译部署和VS2003到VS2005的项目迁移.1
星期四, 07月 5th, 2007
旧有系统总在不停的维护中,这两天维护一个网上商城的系统,我试图把他迁移到ASP.NET2.0/VS2005环境下。
由于种种关于迁移失败导致崩溃的信息给我带来的恐惧感,我花了一个下午的时间查询相关资料,详细考察了ASP.NET2.0/VS2005的编译部署机制和相关迁移文档,以确保整个过程顺利实施。
网上相关文档
- ASP.NET 2.0 中的代码隐藏和编译
- 非常 ASP.NET: Web 部署项目
- 常见的 ASP.NET 2.0 转换问题和解决方案
- 将博客园程序从Visual Studio 2003迁移到Visual Studio 2005的尝试
- .NET1.x升级到.NET2.x问题小结
首先需要确定迁移到哪种项目模式下。根据文档的描述,在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
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。
不过据我了解,在国外似乎这种情况较少。我思前想后,觉得归根到底,还是市场原因…市场决定一切,需求决定一切…后面就没什么可说了,大家都见多了 呵呵


