Please Wait..
Life is like a box of chocolates, you never konw what you're going to get.

还是有点成绩的

14号生日的时候就想写点什么了,但敲了几个字,因为工作工作就草稿了。

对,14号朋友陪着过生日了,我还是第一次吃到人生的中的蛋糕,虽然泥马是粉红色的。以前都是在家吃顿饺子算逑了,要不就直接忘了。长大了,出门在外忙于工作更不在乎了,今年也是还是朋友提醒才想起来。原计划吃顿饭算了,不过最后才发现朋友给买了蛋糕,心里还是小激动了一下。

就在一个小时前,老妈给打电话嘱咐我一些事,我才真正正视到要大大大后天就要过年了。这两天开始我得为回家准备点什么。

之前没到了年底都会总结下一年要做的工作,翻了翻之前写的东西无非就是一年中要看完多数书,赚多少钱,哈哈.. 之后我都要打一般的折扣,今年就不说什么了。埋头做吧。无论赚多少钱,无论看多少书,只要觉得自己每天都在进步就可以了。

嘿..今年其实还是有点成绩的,虽然接手做的项目没有很多,但看了几个开源项目,分析研究了各种内容系统,商城系统,利用业余时间做 SiteasyCMS. 想法是简化自己以后的工作,缩短开发周期。只是做就好了。

发张系统登录后的界面截图,测试地址:http://www.stacms.com/  目前可能还有很多BUG和不足,留存便于回家过年测试现有BUG

asp.net 人性化时间转换函数

如何使用?
HumanizeTime(string date) 函数,传入时间格式的字符串即可。如:HumanizeTime("2010-12-21");
注意: 传入的时间要小于当前的时间。

  1. /// <summary>   
  2. /// 把两个时间差,用人性化时间表示   
  3. /// </summary>   
  4. /// <param name="date">被比较的时间</param>   
  5. /// <param name="currentDateTime">目标时间</param>   
  6. /// <returns></returns>   
  7. public static string ConvertDateTime(string date, DateTime currentDateTime)   
  8. {   
  9.     if (Utils.StrIsNullOrEmpty(date))   
  10.         return "";   
  11.   
  12.     DateTime time;   
  13.     if (!DateTime.TryParse(date, out time))   
  14.         return date;   
  15.   
  16.     string result = "";   
  17.   
  18.     if (DateDiff("year", time, currentDateTime) > 0)   
  19.     {   
  20.         return DateDiff("year", time, currentDateTime) + "年前";   
  21.     }   
  22.     else if (DateDiff("month", time, currentDateTime) < 12 && DateDiff("month", time, currentDateTime) > 0)   
  23.     {   
  24.         return DateDiff("month", time, currentDateTime) + "月前";   
  25.     }   
  26.     else if (DateDiff("day", time, currentDateTime) < 30 && DateDiff("day", time, currentDateTime) > 0)   
  27.     {   
  28.         return DateDiff("day", time, currentDateTime) + "天前";   
  29.     }   
  30.     else if (DateDiff("hour", time, currentDateTime) < 24)   
  31.     {   
  32.         if (DateDiff("hour", time, currentDateTime) > 0)   
  33.             return DateDiff("hour", time, currentDateTime) + "小时前";   
  34.   
  35.         if (DateDiff("minute", time, currentDateTime) > 0)   
  36.             return DateDiff("minute", time, currentDateTime) + "分钟前";   
  37.         else  
  38.             return "刚才";   
  39.     }   
  40.     else  
  41.         result = time.ToString("yyyy-MM-dd HH:mm");   
  42.     return result;   
  43. }   
  44.   
  45. /// <summary>   
  46. /// 两个时间的差值,可以为秒,小时,天,分钟   
  47. /// </summary>   
  48. /// <param name="Interval">需要得到的时差方式</param>   
  49. /// <param name="StartDate">起始时间</param>   
  50. /// <param name="EndDate">结束时间</param>   
  51. /// <returns></returns>   
  52. public static long DateDiff(string Interval, DateTime StartDate, DateTime EndDate)   
  53. {   
  54.   
  55.     long lngDateDiffValue = 0;   
  56.     System.TimeSpan TS = new System.TimeSpan(EndDate.Ticks - StartDate.Ticks);   
  57.     switch (Interval)   
  58.     {   
  59.         case "second":   
  60.             lngDateDiffValue = (long)TS.TotalSeconds;   
  61.             break;   
  62.         case "minute":   
  63.             lngDateDiffValue = (long)TS.TotalMinutes;   
  64.             break;   
  65.         case "hour":   
  66.             lngDateDiffValue = (long)TS.TotalHours;   
  67.             break;   
  68.         case "day":   
  69.             lngDateDiffValue = (long)TS.Days;   
  70.             break;   
  71.         case "week":   
  72.             lngDateDiffValue = (long)(TS.Days / 7);   
  73.             break;   
  74.         case "month":   
  75.             lngDateDiffValue = (long)(TS.Days / 30);   
  76.             break;   
  77.         case "quarter":   
  78.             lngDateDiffValue = (long)((TS.Days / 30) / 3);   
  79.             break;   
  80.         case "year":   
  81.             lngDateDiffValue = (long)(TS.Days / 365);   
  82.             break;   
  83.     }   
  84.     return (lngDateDiffValue);   
  85. }   
  86.   
  87. /// <summary>   
  88. /// 转换时间为人性化时间   
  89. /// </summary>   
  90. /// <param name="strdate">被转换的时间</param>   
  91. /// <returns></returns>   
  92. public static string HumanizeTime(string date)   
  93. {   
  94.     return ConvertDateTime(date, DateTime.Now);   
  95. }  

12月

我觉得以后我还是时常写点什么记录自己的生活,后半年到现在,大多数时间都宅在家里工作,就算是前天仅有的一次下雪天也错过了。一直感觉天气还是格外的好,近些日子工作出去跑了几次,才发现天气已经变的这么冷了,之后出门得“全副武装”了。

这两个月周末在五道口学习项目管理课程,把自己之前关注但没正式机会学习的东西系统的开始学习。管理需求方面进步不少,feel good。

前天和朋友聊天,想起自己学生日期,把饭钱很多都用在买财富、创业杂志上,整天想着像杂志里的成功者一样立马去创业,摆地摊。当时的信心全来自自己狭窄的视野。进入社会几年,我想除了失忆,我是不太容易回到学生时代的心里状态了,也并不是说承认自己现在没自信,不去尝试了。只是不再是学生,有了更多责任,做任何事都要实际,理智行动,像个成年人做事思考。

生活大多数时候很平淡,但你要想让自己快乐起来,就要不断的从生活的每件小事去发现它有趣的部分找乐子。这段时间我的快乐就是不那么忙的时候可以在厨房研究研究,每天可以冲个热水澡,然后舒服的躺在大大的双人床上睡觉。

今年春节比去年提前了22天,北京这几年也就是眨几下眼的功夫,自己也要23了,虽然当初的目标还没实现,过得也并不平坦,但幸好还有爱我的父母,亲如兄弟的朋友,让我觉得自己不是一个人。

关于在线考试填空题的设计想法

后台录入如:
我们的国土面积是(item[10,1])万平方公里,我们的人口是(item[32,2])亿。
如(item[10,1])表示一个填空项,其中10表示空项的style,width宽度,1表示这个填空项所给的分值。数据库保存或修改这道题的时候要把每个项的分值汇总,以便汇总试卷总分值
系统保存的正确答案就是: 960^split^14 (每个空项用自定义特殊分隔符分开)
然后前台展示:
我们的国土面积是___万平方公里,我们的人口是__________亿(3分)

最后把接受的用户输入和正确答案相应的一一做比较,给出相应的分值

[转]UML:对象图和类图的区别

对象图(Object Diagram)描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看作是类图在某一时刻的实例。

在UML中,对象图使用的是与类图相同的符号和关系,因为对象就是类的实例。下图显示了对象图的模型。其中节点可以是对象也可以是类,连线表示对象之间的关系:

 

二、类图和对象图的区别

 类图

 对象图

 类具有3个分栏:名称、属性和操作  对象只有两个分栏:名称和属性
 在类的名称分栏中只有类名  对象的名称形式为“对象名:类名”,匿名对象的名称形式为“:类名”
 类的属性分栏定义了所有属性的特征  对象则只定义了属性的当前值,以便用于测试用例或例子中
 类中列出了操作  对象图中不包括操作,因为对于同属于同一个类的对象而言,其操作是相同的
 类使用关联连接,关联使用名称、角色、多重性以及约束等特征定义。类代表的是对对象的分类所以必须说明可以参与关联的对象的数目  对象使用链连接、链拥有名称、角色,但是没有多重性。对象代表的是单独的实体,所有的链都是一对一的,因此不涉及到多重性。

对象图建模技术

一、对对象结构建模

对系统的设计视图建模时,可以使用一组类图完整地描述抽象的语义以及它们之间的关系。但是使用对象图不能完整地描述系统的对象结构。对于一个个体 类,可能存在多个实例,对于相互之间存在关系的一组类,对象间可有的配置可能是相当多的。所以,在使用对象图时,只能在一定意义上显示感兴趣的具体或原型 对象集。这就是对对象结构建模,即一个对象图显示了某一时刻相互联系的一组对象。

对对象结构建模,要遵循以下策略:

(1)、识别将要使用的建模机制。该机制描述了一些正在建模的部分系统的功能和行为,它们由类、接口和其他元素的交互而产生。

(2)、对于各种机制,识别参与协作的类、接口和其他元素,同时也要识别这些事物之间的关系。

(3)、考虑贯穿这个机制的脚本。冻结某一时刻的脚本,并且汇报每个参与这个机制的对象。

(4)、按照需要显示出每个对象的状态和属性值,以便理解脚本。

(5)、显示出对象之间的链,以描述对象之间关联的实例。

[转]UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别

这是一堂关于UML基础知识的补习课;现在我们做项目时间都太紧了,基本上都没有做过真 正的class级别的详细设计,更别提使用UML来实现规范建模了;本篇主要就以前自己一直感觉很迷糊的几种class之间的关系进行整理,让我们在真正 用UML进行比如类图设计时能够更加清晰明了;以下就分别介绍这几种关系:

继承

指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;

实现

指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性;

依赖

可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用;

关联

他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性 的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联 类A引用了一个类型为被关联类B的全局变量;

聚合

聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期, 部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来 区分;

组合

组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此 时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区 分;

对于继承、实现这两种关系没多少疑问,他们体现的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则体现的是类与类、或者类与接口间的引 用、横向关系,是比较难区分的,有很多事物间的关系要想准备定位是很难的,前面也提到,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关 系;但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖;

原文地址:http://blog.csdn.net/sfdev/archive/2009/02/18/3906243.aspx

移除本地tortoiseSvn文件夹

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]

@="Delete SVN Folders"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]

@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""


复制上面的代码粘贴到记事本,保存为.reg后缀名的文件。然后右击打开,导入注册表。你会发现鼠标放svn项目文件夹右键菜单会有多出个"删除svn文件"的选项。