Archive

Posts Tagged ‘DotNET’

我来·我见·我征服

September 22nd, 2008

公元前47年3月,凯撒在小亚细亚击败对手,捷报传回罗马,简短的“VENI·VIDI·VICI——我来·我见·我征服”。显然我并不知道这个故事,所以在看 S03E13的时间就不会为最后一句对白而迷惑了.看美剧的乐趣之一,就是不必为了任务对白发愁,毕竟听不懂的时间可以求救字幕.可惜,这个规则对最后上面这部电视剧的最后一句话不管用.

上网查了一下才清楚,原来是凯撒的名言,不是英文.这就解释了为什么我没听懂.


周末两天耗在了修改上海方面的bug上面了,第一次估计不是最后一次见到这样的代码,太有才了.其实最后发现虽然编码很乱,很烂.但是主要功能都实现了,虽然实现的很不完美,很扯淡.但是毕竟实现了.你有不好发作.问题出现的原因很简单,测试数据完全没有反应真正的客户需求.一个客户id不可能永远是2位数以内的.里面越界的情况太多了.


其次就是,代码最起码应该保持一致的风格,虽然我在这方面做的不是很好.但是,我觉得,一个VB5.0迁移到VB.NET的项目,新系统不应该编码量比旧系统还多.这个,真的有点让人无法接受了.这样的结果就是新系统比旧系统还让人难以理解.特别是你没有按照.NET的方式来编码.这两天郁闷的地方就是这个,上海那边把这个东西当vb5来编码了.修改的时间,很郁闷.


还是说一些轻松的话题把,不愧是FOX收视率第一的节目.虽然house言语相当刻薄,但是还是比较好玩的.毕竟不是所有的人都能够和颜悦色的对待周围的人.人可能在内心里面是倾向于善良的,但是实际上我们可能说一些伤害别人的话.很复杂.

Author: 刘浏 Categories: 胡言乱语 Tags: , ,

Check in

August 28th, 2008

在Coding Horror 上看到了一篇<Check In Early, Check In Often>其中说代码管理重的黄金法则是:

Check In Early, Check In Often

一个项目如果没有一个代码仓库,简直是不可想象的.代码的安全,进度的确认,团队之间的协作.都是靠这代码管理的.文章里面提到了为什么有些人不喜欢经常的check in.大致也就是不想让人看到自己的代码,或者不想让别人责备自己check in了错误的代码.里面一个很有意思的提法是,如果你一天都没有check in的话,那么你这一天等于什么都没有干.的确是这样的,别人无法知道你这一天到底干了什么.
大家都怕check in 错误的代码,其实check in错误的代码也没什么的,反而能够更快的解决问题.大家都会发现你的问题所在,大家都会给你指出应该如何解决你这个问题.因为大家不想因为这个事情而耽误自己的时间…
关于check in我是这样做的.

  • 每天工作开始的时间,从vss上取下最新的代码.
  • 把自己做的模块代码check out,以防止自己忘记这步…
  • 每完成一个机能,check in.如果很重要的点,写上comment.
  • check in之前必须build一次,以确定代码正确.
  • 下班之前check in全部代码.如果是在有些问题搞不定了.注释掉.

其实,对于代码,我们只要Check In Early, Check In Often就足够了…

Author: 刘浏 Categories: DotNET Tags: ,

Mono

April 18th, 2008

Mono是一个跨平台的.net应用.说白了就是把.net一直到诸如Linux,Solaris,Mac OS X,Unix当然了,还有Win平台.你可以利用它在其他平台上开发并部署.net的项目.其实就目前.net的技术来讲,.net已经完全的超越了java,只是由于java本身的一些特性,诸如跨平台,和广泛的支持,丰富的框架.java还是稍微占据了一些优势的.但是随着时间的推移,相信.net会越来越强大的.而Mono就是一个开始.
官方给了这些特性

Features

很吸引人对不,而且最新的Mono 1.9_5甚至支持了Linq这个在.net3.5中才有的特性.一般来讲,在.net中那些不过分依赖于win的类库在这里都可以找到.
更加吸引人的就是在Mono下面也有一个类似Vs的IDE工具,Mono Develop.

最近开始学习这个冬冬,毕竟在mac下面比较熟悉的也就是python和Mono了.

Author: 刘浏 Categories: DotNET Tags: ,

怀念.net

April 11th, 2008

最近做得这个项目是java的,没想到来了之后的第一个项目居然是java的.以前并没有接触过java.这段时间的接触,说实话,给自己了一个很坏很坏的影响.诚然,.net有很多地方都是从java学来得.但是.net用起来方便许多,而且较java而言更具有面向对象的特性.java的框架太多了,也许这可以成为灵活,但是这也带来了太多的问题.我们这个项目的框架简直是一塌糊涂,很多时间很多事情,都是处于一种迷茫的状态.
唉,不管那么多了,不像上一个项目,这个项目自己差不多把该学到的东西都学了.只是希望下次不要碰到这么烂的框架了.

Author: 刘浏 Categories: DotNET Tags:

.NET Framework正式开源

January 17th, 2008

刚看到.NET Framework的类库正式开源了。主要包括以下的部分:

  • .NET Base Class Libraries (including System, System.CodeDom, System.Collections, System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading, etc).
  • ASP.NET (System.Web, System.Web.Extensions)
  • Windows Forms (System.Windows.Forms)
  • Windows Presentation Foundation (System.Windows)
  • ADO.NET and XML (System.Data and System.Xml)

其中比较感兴趣的就是ADO.NET部分了,:)这个可以说是.net的精华所在了。等这个项目结束之后要装个VS2008了!^_^还有一周就Okay了!

.NET Framework Library Source Code now available

Author: 刘浏 Categories: DotNET Tags:

.net的4个基本概念

January 5th, 2008

基本的东西永远是最重要的。

1、虚拟对象系统—VOS

它既支持过程性语言也支持面向对象的语言,同时提供一个类型丰富的系统来容纳它所支持的各种语言的特性。对于过程性语言,它描述了值的类型并指定了类型的所有值必须遵守的规则;在面向对象的语言方面,它统一了不同编程语言的对象模型。每一个对象在VOS中都被唯一标识以与其他对象相区别。

2、元数据

元数据是对VOS中类型描述代码的一种称呼。在编译程序将源代码转换成为中间代码时,它将自动生成,并与编译后的源代码共同包含在二进制代码文件中。元数据携带了源代码中类型信息的描述,这在一定程度上解决了版本问题;程序使用的类型描述与其自身绑定在一起。在CLR定位与装载类型时,系统通过读取并解析元数据来获得应用程序中的类型信息,JIT编译器获得加载的类型信息后,将中间语言代码翻译成为本地代码,在此基础上根据程序或用户要求建立类型的实例。由于整个过程中,CLR始终根据元数据建立并管理对应特定应用程序的类型,从而保证了类型的安全性。

此外,元数据在解决方法的调用,建立运行期上下文界限等方面都有着自己的作用。而关于元数据的一切都由.net在后台完成。

3、公共语言规范—-CLS

CLS是CLR定义的语言特性集合,主要用来解决互操作问题。如果一个类库遵守CLS,那么同样遵守CLS规范的其他变成语言将能够使用它的外部可见项。所有支持CLS并仅使用CLS中的语言特征的组件被称为CLS组件。

在CLS中是用System.CLSCompliantAttribute类来标识一个集合或者类是否是符合CLS规范的;在System.CLSCompliantAttriute的构造器中有一个Boolean型的返回值,代表了与之相关联的项是否符合CLS规范。

4、虚拟执行系统—-VES

VES是VOS的实现,它用来驱动运行环境。元数据的生成与使用、公用语言规范的满足性检查以及

应用程序执行过程中的内存管理均由它来完成。具体来说,VES主要完成以下功能:

(1)装入中间代码。
(2)使用JIT将中间代码转换为本地码。
(3)装入元数据。
(4)代码管理服务—包括垃圾收集器和异常处理。
(5)定制与调试服务。
(6)线程和环境管理。

Author: 刘浏 Categories: DotNET Tags:

HashTable 序列化

December 28th, 2007

C#中的HashTable是无序的,ArrayList是有序的。很多时间我们想要二者的统一。毕竟HashTable比较方便的,Key-Vaule的模式是相当的方便。去某个值的时间不需要去遍历。

HashTable的序列化,可以借助ArrayList来完成的。

ArrayList list = new ArrayList(htOld.Keys);
list.Sort();
foreach (string str in list{
    htOld[str];
    //其他操作
}

合理的使用HashTable可以让很多复杂的操作简单许多的。:)

Author: 刘浏 Categories: DotNET Tags:

ADO.NET让数据库操作更加简便

October 18th, 2007

ADO.Net是.NET平台里面最吸引人的地方了。最近参加了一个项目,由于客户要求新增一块。类似的模块已经有了,数据验证和导入。但是看过代码之后发现真的很慢,很多地方是用生成SQL语句来完成的。这样效率很低。所以自己决定用ADO.NET来完成这一任务。

我以前对ADO.NET的理解是:通过这个你可以很方便的处理大量的数据,而不用去和数据库大太多的交道,它可以避免经常的对数据库操作。她是把数据库中的数据先放入服务器中,不直接对数据库操作。另外一点就是效率很高。但是如何去实施,自己真的很不了解。

下面是自己经过三天项目后,自己通过MSDN等资料,收获的一些东西

从数据库中利用ADO.NET读取数据放入DataTable以后,最好给DataTable设置一个主键,这样在以后的调用中就可以使用列名来取某一列了。

            foreach (DataRow dr in Tables["sample"].Rows)
            {
                dr.Columns[0]="";
            }
这样操作一定很不爽,用数字来标识列会让人陷入迷茫中的。特别是列数多的时间。
但是如果给DataTable设置主键了以后,你就可以使用dr.Columns["id"]来访问数据了。
这样会方便许多,而且后期的维护也会简单很多。
ds.Tables["test"].PrimaryKey = new DataColumn[] { ds.Tables["test"].Columns[0] };
这样之后你就可以随心所欲了。
另外就是DataTable中每列的数据类型,在填充数据以后就不可以更改的。所以这点上应该小心一些。
利用DataSet来更新数据库的时间也是很简单的,
SqlCommand cmd = new SqlCommand(SQLStr, conn);
SqlDataAdapter da = new SqlDataAdapter();
da.UpdateCommand = cmd;
da.Update(ds, "old");

一般这样就可以解决问题了,当然了,数据类型一定要一直。至于不一致的时间可以使用cmd.Parameters.Add()来指定。建议最好不管什么操作,都给相应的Command指定一个SqlCommand,以防万一。

还有很多收获,ADO.NET还是个很好的东西的。最近在看IBatIs.net可以说是ADO.net的一个扩充。英文资料太费脑子了。郁闷!

Author: 刘浏 Categories: DotNET Tags: , ,