玉's profiletanyPhotosBlogListsMore Tools Help

tany

玉 谭

Occupation
Location
Interests
向数据库架构、调优、管理努力备斗
这一段时间一直都处于怀旧状态,没有听多少新歌曲。
by 
by 
好音乐当然要拿出来和大这分享一下啦。我这一段时间听得最多的听音乐,当然其它的还有很多,想要的直接来找我就行了
by 
by 
by 
by 
by 
by 
by 
by 
by 
by 
Photo 1 of 26
打破三点一线的生活,终究要回规吗?
Please wait...
Sorry, the comment you entered is too long. Please shorten it.
You didn't enter anything. Please try again.
Sorry, we can't add your comment right now. Please try again later.
To add a comment, you need permission from your parent. Ask for permission
Your parent has turned off comments.
Sorry, we can't delete your comment right now. Please try again later.
You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
Complete the security check below to finish leaving your comment.
The characters you type in the security check must match the characters in the picture or audio.
玉 谭wrote:
我需要更的冷静加以思考,我的过去、我的将来、我在做什么、我应该怎么做。
Jan. 9
玉 谭wrote:
现在突然想找一个数据库架构、管理的专家,拜他为师,大家身边有的话请帮个忙给我引见一下。
Nov. 2
June 06

破天气

阵雨转多,25~16度天不是一般的烂

上午起得很多晚,因为昨天忘记在门外面挂“请勿打扰”,早上被打扫卫生的服务员给吵醒,那痛苦想必是知道的。

因为周日加班,也就没有回北京,早上却收到一条短信“周日不加班”,最大的反应就是没有任何“表情”。让人无语中……?今天本来是很想回去,破天气就是这样……让人没有想法。

January 08

我的08年终总结

08年的工作不能算是特别精彩的一年,但过得也不平凡。海事非税收入的持续维护、固定资产系统的开发也就是今年的工作重点。技术上也了更多的累积,日常的技术积累也重点放在数据库方面。对sql数据库的数据存储结构、sqls查询优化有了更加深入的理解。日常对IT新闻的关心,使得我对下一代技术方向有更明确的认识和感知。对整体技术方向的把握肯定会是对项目管理、开发顺利完的奠基石。

海事非税的主要工作是维护,在维护的过程中优先级当然是排在固定资产之后。今年的维护工作涉及到的代码动改量主要是上半年,下半年的改动基本很少。原因是上半年是海事非税推广的主要时间段,核算的修改包括增加新的核算方式、报表的制作和错误修改。下半年(也出现在上半年)主要的工作量是数据修改和问题咨询。数据修改也主要是库存、核销单。

固定资产的主要工作是开发、与测试沟通。项目已进行了一年多的开发,整体已全部成型。所有的功能也在最后的测试阶段。07年下半年启动的项目,最开始的工作也就和项目经理参与项目的架构、基础环境系统环境的搭建和功能模块的分析设计。技术平台方面asp.net ajax的指导、系统安全认证、前期的系统界面设计和风格统一。

固定资产工作中开发的主要模块:

1. 工作流设计器:采用javascript脚本控制VML生“XAML”和“规则”到最后的asp.net ajax通信与服务器的交互。主要应用于资产工作流的流程设计以及工作流程的监控。工作流设计器目前不能完全拿来用在其它的项目中,但是为以后的项目打下了很好的基础。由于里面的功能函数已经模块化,可以从现在的成果进行修改进行改进,完成这样的工作从技术难度上来说很容易。

2. 系统码表缓存:设计了三个泛型的数据结构来描术数据对象,采用sqlserver2005里面的broker消息队列通知机制来通知缓存,进行缓存数据的更新。缓存由以前项目中的主动询问的机制演变到现在的数据库更新通知应用程序模式值得以后的学习使用。数据结构也是写的通用算法,不依赖于项目。

3. 资产盘点:盘点是从计划发布到任务的分配、盘点次产、提交任务、完成盘点、盘点计划上报、盘点计划接收这样的一个流程。

4. PDA辅助盘点:PDA是进一步的简化和提高资盘点的效率,最后的资产系统实施会合理的在资产上帖上条形码。PDA直接扫描确认资产的数据可以通Client与Server进数据同步,将PDA扫描盘点的资产同步到资产系统中。对Client PC的要求是需要安装PDA驱动、同步的API Com组件。

5. 低值易耗品:在系统中不是绝对使用的,只提供一个可用来管理的一个方案,各部门可以有自已的低值易耗品仓库。

6. 自定义报表查询:在系统的后期推广维护中依据客房提出的要求做一个查询模板,用户可以跟据自已的需要在已有的模板基础上通过报表向导定义出自已需要的报表。

固定资产项目计划是今年要完成试点工作任务,到现在将计划推迟到09年,从中也有一些问题在里面,团队的协作、人事变动、技术模型架构这些我个人认为是导致项目延期的很重要的原因。Team中的技术混乱和技术参差不齐会导致系统运行的混乱。发生错误的概率也大提高,大大加重了项目后期维护开发人员的工作压力。公司研究开发出统一的技术模型,规范技术的使用,使得技术在项目一开始就统一,有利于人事变动后产生的负面后果。也更有利于项目进度控制和维护。

开发这一块非常需要技术的统一培训,公司的新老员工都需要技术的更新换代。目前的情况是完全靠自已自学。解决这些地问题也就是更进一步解决技术参差不齐的办法。

谭玉

2009-01-08

October 08

开发者应该仔细回想在开发过程中的细节

今天在csdn看了一篇文章,颇有感触,讲的都是一些基础上的认识不够所造成的。"原型链和类链对象开发的体系"这也是大家之前都没有很容易怱略的问题,当然醉翁之意不在酒。是想明白对基础的理解和探讨对以后是有多么的重要,可能开始认为基础没有用。不过到后面会发现所有的东西都会是基于一套理论发展而来的。

http://blog.csdn.net/zhang_yafei/archive/2008/09/03/2873552.aspx

September 10

转:鬼兔子的一学期

最近才发现的,所以转了,给大家一起娱乐娱乐。 

引用

鬼兔子的一学期
鬼兔子的一学期
 开学初:   开学一周后:   开学两周后
--------------------------------

期中考试前:  期中考试:  期中考试1天后:
--------------------------------

期末快到了:  得知考试时间:    考前7天:
--------------------------------

考前6天:    考前5天:      考前4天:
--------------------------------

考前3天: 考前2天:       考前1天:
---------------------------------

考前一天晚上:  考前1小时:  考试中:  

---------------------------------

走出考场:       对某老师的想法……  

 

July 27

关于.net导常(Exception)的讨论

今天和大家讨论这个问题的主要原因是现在在公司做的项目里面写了一个自定义常的类(BusinessException),Web和Logic层通信用的是Remoting作为通信机制。异常当然就是从Logic服务中抛出啦,这个时候有一个问题,就是当抛出一个异常(throw new BusinessException)的时候Web端接收到的居然不是自已想要的这个异常,而是给出了一个RemotingException异常,异常消息是“不支持序列化的构造函数。”。针对这个问题去研究了一下异常。

首先异常的讨论之前需和大家讲一下几个需要区分的概念:

    1.bug:它是由程序员一方引起的,程序造成的内存泄漏、系统本来需要登录到指定权限的用户才能操作非法用户通过其它途径进入系统进行操作。

    2.用户错语:这个和bug不同,bug是由软件设计开发人员所造成的,而它是由用户造成的。比如:用户输入了一个非法的字符串格式。往往这种错误都会用非常友好的方式提示用户。

    3.异常:指的是程序运行过程中出现不可预料的非正常情况,比如说Web连接到Logic服务之间的网络断开、Logic连接到数据库的IP地址被改等等。

异常的几个关键字:try,catch,finally,throw

try和catch或finally一起使用的,catch捕获异常、finally当发生异常后还是没有发异常正常运行结束都会运行finally块里面的程序。

异常的几个核心成员:

System.Exception属性

作用

Data 用定义关于异常的更多的信息,IDctionary类型
HelpLink url指向详细错误的帮助文件
InnerException 导致异常的前一个导常(或一组异常)
Message 异常描述
Source 发生异常的程序集
StackTrace 出发异常调用的字符串
TargetSite 描述异常方法的细节(MethodBase类型)

 

异常分为两大类型:System.SystemException(系统级异常)、System.ApplicationException(应用程序级异常)。

自义异常:

第一部分:一般情况下自定义的异常都是从System.ApplicationException继承,也可以从System.Exception继承,为了更好的描述出异常的细节和处理这些异常从System.ApplicationException继承当在是更好的选择,所有的异常类名都就以Exception结束。注:所有的异常全部都是从System.Exception继承。

public class BusinessException : System.ApplicationException{

}

这样一个自定义的简单异常就完成了。大家不要感到非常惊讶,没错异常就是这样简单,其实异常没有什么复杂的,自定义一个异常主要是为了更好的描述一个异常,对异常进行分类处理。

第二部分:上面那个自定义的异常虽然完成了,但要以真正使用还是远远不够的,比如说最起码的一个错误描述,给出错误的原因。

public class BusinessException : System.ApplicationException{

        public BusinessException(){}

        public BusinessException(string message):base(message){}

}

第三部分:一个异常要更佳的严谨以上当然不是够的,对一个简单的程序已经够了,对一个复杂(跨网络、服务器)的系统来说还是不够的。在程序通信跨网络的时候通信数据都是经过序列化之后进行传输的。作为一个严谨的异常来说需要做到几点:

    1.继承自Exception/ApplicationException;

    2.打上[System.Serializable]特性标记;

    3.定义一个默认的构造函数;

    4.定义一个设定继承的Message属性的构造函数;

    5.定义一个处理“内部异常”处理的构造函数;

    6.定义一个处理序列化的构造函数;

[System.Serializable]public class BusinessException : System.ApplicationException{

        public BusinessException(){}

        public BusinessException(string message):base(message){}

        public BusinessException(string message,System.Exception innerException):base(message,innerException){}

        protected BusinessException(System.Runtime.Serialization.SerializationInfo info,System.Runtime.Serialization.StreamingContext context){}

}

一般一个自定义的异常都需按以上的原则进行设计。不要看这个异常非常简单,其实framework中的异常处理都是类似于这样,异常详细处理都在我们继承System.Exception中处理完成了。

异常的处理:

try{

    if(...)throw new OutException(...);

    if(....)throw new BusinessException(....);

    ......

}catch(OutException oEx){

    //处理OutException异常。

}catch(BusinessException bEx){

   //处理BusinessException异常。

}catch(System.Exception ex){

  //处理其它异常。

}finally{

  

}

相信大一看就清楚明白了吧。为什么使用自定义异常,当你自定义异常之后你可以分类对不同的异常进行不同的处理。

当你的一个异常按照以的规则进行设计就不会出现开头像我所说的那样出现“不支持序列化的构造函数”这样的错误了。可能有一些理解不对或者遗漏的请各位大虾提出来。