2010年03月的日志

你在项目中用了很多技术么?软件开发中7种反模式

From “make good software"

软件开发中一个经常发生的常见错误是太关注于技术、架构、中间件或者其他技术细节。我们忘记了任务是产生一个出色的应用程序,而不是我们用了最强劲的工具。

下面是我列出的一些反模式。

反模式1:基于知道的技术数量来选择人

在选择人才方面一个最常见的情况是我们让技术来驱动我们的决策,这是非常不保靠的。我们不能只关心候选者知道多少技术,而不去他们有什么好的编码设计技能,其实后者是更重要的。

反模式2:选择技术不是基于有用与否

我们都准备差不多了,项目就要开始,我们做的第一件事是罗列出觉得适用于这个项目的技术、框架。这就像是列一个要去超级市场时用的购物单子。我认为一开始越简单越好,只在必要的时候,确定新技术能够增加生产力的情况下,再加入新的技术、框架。

反模式3:过度使用新技术(炫技)

”你拿着锤子,什么东西看上去都像是钉子”。设想一下决定使用“Spring”作为依赖注入架构。接下来你会想,Spring可以创建应用中所有的对象,然后配置文件相应的就增加了上千行代码。

反模式4:用技术细节掩盖设计上的瑕疵

当我们讨论这个反模式,性能问题立刻浮现出来。当应用程序性能非常糟糕的时候抱怨或者关注于相应的技术细节是很常见的,但是我的经验是,性能问题常常产生于设计层面。

反模式5:一直倾向使用新技术而不是平常方法

一些开发人员一旦发现他们能够用到某种新技术,立刻就对简单常用的方式弃如敝履,通常情况下这不是什么好现象。值得记住的是技术、架构、中间件都可能是项目中的负担,它们需要维护、学习、支持、配置等等。

反模式6:即使没必要也拔高扩展性的优先级

我听到的一个很常见的使用酷炫的新技术的理由是他们有良好的扩展性以及其他平常方法做不到的可配置能力。听上去很酷是不是,其实大多数情况下对于项目来说这都不是必须的,使用它们只能增加项目工程完成的风险。

反模式7:MDT-领导层驱动技术

这个反模式常常是这样的:你的领导读了一篇杂志或文章,谈论到某个高超的技术,他感到很兴奋。隔天到了公司以后他决定说:“我发现了针对我们所有问题的解决方案,从现在起我们都要开始使用xxx!”

image

1)我需要管理一个很“性感”的项目来提升我的职业经验。

2)它要听上去不错,而且在我得到提拔之前不能失败。

3)“反恐纳米干细胞”,这个怎么样?O-O-OKAY.

Tags :

[Translate] 七天学习七门编程语言IOLanguage第一天

http://oscardelben.com/seven-languages-io-day-1

我刚买了Seven languages in seven weeks这本书的Beta版,真是一本好书。

继续阅读 »

Tags :

微软DotNet introduction介绍

公司内部学习使用,转载请注明。

DotNet introduction release DotNet introduction release pdf file

howto upgrade IronRuby1.0RC4 gem to 1.3.6

1) rename ir.exe ir.exe.config to iruby.exe iruby.exe.config

2) change ir.exe in igem.bat to iruby.exe

set IR_CMD="%~dp0iruby.exe"

3) igem update –system

4) change the name back.

5) done.

Tags :

IronRuby一些小技巧

操作excel

 1: require "Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" 

 2:  

 3: include Microsoft::Office::Interop::Excel

 4: excel = ApplicationClass.new

 5: excel.Visible = true

 6: workbook = excel.Workbooks.Add()

 7: worksheet = workbook.Worksheets.Add()

 8: worksheet.Name = "aaaaa" 

 9:  

 10: cell1 = worksheet.Cells(1,1)

 11: cell1.Value = 42

如何获得assembly的strong name?

 1: load_assembly 'Microsoft.Office.Interop.Excel'

 2:  

 3: System::AppDomain.current_domain.get_assemblies.each{|x| puts x};

RPC 解决方案(http://www.ruby-forum.com/topic/206314

Very CLR centric:

You can create a proxy to your webservice using visual studio, compile to a dll and use the proxy from your ruby code.

CLR centric:

You can use System.Net.HttpWebRequest to make the request and System.Xml.XmlDocument to parse the response

Very Ruby centric:

Use Net::HTTP to perform the request and REXML to parse the response

Tags :

IronRuby试玩

IronRuby下载最新版本解压,然后把目录加入系统Path。

IronRuby使用Sinatra

1)igem install sinatra –no-rdoc –no-ri

2) 应该提示rack和sinatra都安装完毕

3)写代码如下:

 1: require 'rubygems'

 2: require 'sinatra' 

 3: get '/' do

 4: "My machine name is #{System::Environment::machine_name}"

 5: end

保存为mysinatra1.rb

4) 运行 ir mysinatra1.rb,应该提示类似pid=xxxx port=4567,打开浏览器,输入http://localhost:4567/ 就可以看到期望的信息了。

注意,在我测试过程中,最新版本下,不需要对sinatra做任何patch,跟ironruby官网提到的不一样。

IronRuby使用Rails,参考http://www.ironruby.net/Documentation/Real_Ruby_Applications/Rails

1)安装 "igem install rake rails activerecord-adonet-sqlserver –no-rdoc –no-ri"

2)如果自己测试,可使用sqlite3-ironruby,"igem install sqlite3-ironruby –no-ri –no-rdoc”

3)建立一个IronRuby rail程序, "ir -S rails IronFirst"

4)修改config/environment.rb,可以看到有类似的代码,改成 config.gem "sqlite3-ironruby", :lib => "sqlite3" ,使用sqlserver有另外的修改方式,大家自己看网页吧。

5)ir script\generate scaffold post title:string body:text published:boolean

    ir -S rake db:migrate

6)ir script\server

这时候可以看到http://localhost:3000 是rails的默认界面,进入http://localhost:3000/posts 可以进行添删改操作。不过我测试,默认下不支持中文,应该是要修改一些参数才行。

all done.

Tags : , ,