- 博客(44)
- 资源 (15)
- 收藏
- 关注
原创 软件开发总结--一些关于需求的感想
一些比较细碎的感想用户/客户是谁,我们用什么打动用户/客户?我们用价值打动用户/客户,如果我们不了解用户/客户, 不去关心他们真正需要的是什么,则不知道什么对用户/客户有价值。如果我们不清楚用户/客户是谁,不知道价值是什么,很可能我们会将力气用偏。【开发人员都是完美主义者,用户不一定需要这样的完美主义者, 用户怕不能给他们提供价值,不能尽快给他们提供价值】紧盯用户和价值...
2020-03-26 10:08:34 337
原创 软件开发总结--需求与开发
需求不是越多越好,也不是越详细越好。一个好的需求属于一系列关联需求的一部分。 这一系列需求关联一个要发布的版本,这个版本要有自己希望达到的目标,这个目标的一个主要表现就是为一个或多个用户提供实用,重要或紧迫的价值。 这个需求要有验收条件,达到这些验收条件,该需求也就完成了。 该需求应该有允许讨论(妥协)和不允许讨论(妥协)的两部分。用户价值是不允许讨论(妥协)的,具体实现方案是允许讨论...
2020-03-23 13:38:46 841
原创 对用户故事的理解及其他
概述这几年一直在思考敏捷开发中的用户故事,并尝试在工作中使用用户故事。 发现不论敏捷开发还是瀑布式开发,很多东西都是相通的(或者说一样的)。在本文的后半部分我根据对用户故事的实践和理解列出一些内容。 你会发现,这些内容与《系统分析与设计方法 第7版 》第7章 使用用例建模系统需求 P179 中的表格几乎一模一样。理解或原则下笔前,先列明几个理解或原则:1: 在开发一个...
2020-02-10 16:32:02 459
原创 根据对MVVM中ViewModel的理解写的一个前端脚本
这几天对MVVM模式做了简单的理解. MVVM中的MV是MVC中的MV, 而VM是在View之前添加了一层前端的逻辑层ViewModel. 该Model中的对象针对前端显示提供数据和接口. VM中有一部分功能是实现ViewModel和前端控件的自动绑定,包括读取和写入,我根据这个理解写了个简单的脚本,并进行了一次重构,写在这儿,权当整理.1: 展示对象展示对象很简单,本例中是一个用户信息...
2019-04-24 14:40:52 232
原创 我想写一个Linux下的C++程序库--记我的C++库设计历程:设计一个TCP服务程序
我想写一个Linux下的C++程序库,实现一些常用的功能。我首先想到的就是实现一个TCP监听程序。该程序应该具有哪些功能呢?1: 启动/停止监听2: 有客户端连接时,通知调用者3: 与客户端断开时,通知调用者4: 有消息到达时,通知调用者5: 尽量避免程序退出时有没有close的socket。该程序的大体接口及结构主要用一个类表示,内容如下:#pragma
2015-02-17 20:22:04 1142
原创 自定义快捷命令程序(VC++加批处理)
这是一个能提高用户工作效率的工具,以往需要用鼠标点击n次才能完成的操作,用它只需要敲击几下键盘就完成了。我的程序叫XBAT,在开机时自动运行。XBAT的界面为一个可见的文本框,位于左面的右上角,占据很小的位置。使用场景:1: 用户想用浏览器打开百度网站时,同时按下“Win + Z”键,XBAT文本框获得焦点2: 用户输入“bd”,按下Enter键。3: 浏览器打开百度站点。现在这个程序我自己用起来得心应手,没有这个程序,我感觉很不方便。我现在常用的是用它来打开iis,打开“服务”,打开“DE
2014-08-22 11:19:23 1552
原创 学习实践:使用模式,原则实现一个C++自动化测试程序
个人编程中比较喜欢重构,重构能够提高自己的代码质量,使代码阅读起来也更清晰。但是重构有一个问题,就是如何保证重构后带代码实现的功能与重构前的一致,如果每次重构完成后,对此不闻不问,则会有极大的风险,如果每次重构后,都进行一边测试,则工作量会很巨大,最终可能是即使代码有重构的欲望,也会尽量克制住,不去重构。除非代码能够进行自动化测试。实际上进行测试的是接口,而不是所有代码,只要能够保持接口不变,自动化测试的工作量也没有想象中的巨大。其实我们在单元测试的时候,会测试各种异常情况,只不过,没有将这些测试写成测试代
2014-08-20 17:23:05 4121
原创 学习实践:使用模式,原则实现一个C++数据库访问类
一、概述在我参与的多个项目中,大家使用libMySQL操作MySQL数据库,而且是源码即复用,在多个项目中有多套相同或相似的源码,这样的复用方式给开发带来了不变,而且libMySQL的使用比较麻烦,要应对很多的细节,很容易出错。我要写一个动态链接库,将对libMySQL的操作封装起来,以二进制复用代替源码级复用;要提供线程安全的接口,用户无需关系是否加锁这样细节性的问题,减少出错及
2014-08-18 17:18:57 3593
原创 从头开始学习JAVA 6--引入JQuery
5 JQuery:在Index.jsp中,使用到JQuery。1)添加taglib在页面头部添加如下代码:Taglib类似于自定义控件。2)添加Jquery scripttype="text/javascript"src="c:urlvalue="/resources/jquery-1.7.2.min.js"/>">script>sc
2013-03-10 07:53:50 2763
原创 从头开始学习JAVA 5--Spring MVC
4 Spring MVC1)引入Jar在IVSMDemo中,引入如下jar包: 注意引入Java EE 5 Library2)配置Web.xmlxmlversion="1.0"encoding="UTF-8"?>web-appversion="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
2013-03-10 07:42:42 5127
原创 从头开始学习JAVA 4--创建Web程序
创建Web程序1)创建项目2)运行选择“Tomcat 6.x”:“Console”中,显示Tomcat启动情况:3)访问Web页面在IE中,输入“http://localhost:8080/IVSMWebDemo/”路径,打开Web页面。4)Web程序的配置文件welcome-file-list/ welcome-fi
2013-03-09 23:10:39 1136
原创 从头开始学习JAVA 3--MyEclipse
2 MyEclipse1)安装MyEclipse略2)配置MyElipse3)如何使MyEclipse更快取消自动校验取消build取消自动构建4)配置Web服务打开MyEclipse,在“windows/preferences”下选择“/MyEclipse Enterprise Workbench/Server/Tomcat/ Tomc
2013-03-09 23:05:10 953
原创 从头开始学习JAVA 2--Tomcat
首先关注tomcat。1 Tomcat1)前提已经下载Tomcat压缩文件。已经安装JAVA JDK。已经设置JAVA_JOME环境变量。2)启动点击“bin”文件夹下的“startup.bat”批处理文件可以启动tomcat。在IE中,输入“http://localhost:8080”会打开Tamcat首页,如果首页显示,说明tomcat启动成功。
2013-03-09 23:00:54 1053
原创 从头开始学习JAVA
0前言1)概述本人有10年使用ASP.NET的经验,在2007年时,有三个月的Java使用经验,主要是做Swing的东西,当时感觉MyEclipse真不好用,Java和C#的语法差不多,但是Java对通用编程比C#好多了。由于需要,今年(2013)2月份开始,重拾Java,主要用来做Web程序。目标:尽快掌握Java Web开发的相关知识及各项技能2)学习策略l
2013-03-09 22:55:48 1785
原创 应用GeoServer(一)
1 下载并安装GeoServer1.1. 下载从http://geoserver.org/display/GEOS/Welcome网站中下载GeoServer安装文件。当前下载的是geoserver-1.7.0-RC3。 1.1. 安装:安装geoserver-1.7.0-RC3.exe文件,当遇到下图所示的弹出窗口时,点击“确定”即可。
2008-11-28 17:16:00 1408 2
原创 对软件需求的点滴认识
做需求,首先需要了解用户需要的功能,在知道用户需要的(部分)功能后,根据这些推导出用户功能背后的业务逻辑,然后对业务逻辑做进一步的分析,根据分析结构与用户再做进一步的沟通。需求有三个特点:完整性,必须性,正确性,这三个特点是在对业务逻辑的分析后得出的 很多时候说用原型来调查需求,我想这个原型不是一段程序,而是一个完整的业务逻辑流程。 如果想创新,必须建立在对行业的理
2008-09-17 13:46:00 576
原创 ASP.NET中控件应用的思考
页面其实就做两件事情,第一件事情就是显示数据,第二件事情就是收集需要处理的数据。现在,假设有一个容器,能给页面提供显示所需要的数据,也可以收集页面的数据,则整个页面只需要与该容器打交到就可以了。后台页面甚至不需要一行代码。这只是理想状态,这种理想状态可以实现吗?别的不说,就说显示数据,至少需要this.txtName.Text="abc";这样的代码吧,总不成在页面上用吧?有这样合适的容器吗?当提
2008-08-22 17:25:00 551
原创 扩展TextBox控件
在做B/S开发中,大家经常用到TextBox控件,而且经常需要对输入其中的数据进行合法性检查。这种检查可以通过多种方式来实现。我喜欢用Javascript来检查。但是,每一个控件都要用一段Javascript代码来检查,太麻烦,可以不可以来一下抽象呢?我希望通过扩展TextBox来实现该控件数据合法性JavaSript的抽象。思路:1:扩展TextBox控件: public class Text
2008-08-04 09:21:00 1487 2
原创 扩展DataGrid
在ASP.NET编程中,经常会用到DataGrid(或GridView)。其实,用的时候,这个DataGrid与那个DataGrid,很多功能都几乎是相同的。例如,分页,排序。例如:一般情况下,Int列应该居中显示,字符串列应该靠左排序,double等应该靠右排序,且应该取到小数点后两位,时间格式应该居中,且应该按一定格式显示,例如“YYYY-MM-DD”;如果某列允许排序,则该列的排序字段一般与
2008-08-02 10:06:00 986
原创 咀嚼代码--图学Community Server2.0--Form控件类图
咀嚼代码--图学Community Server2.0--Form控件类图
2008-07-18 14:02:00 760
原创 咀嚼代码--图学Community Server2.0--Action控件类图
最近在看CommunityServer,下面是Action控件的类图:
2008-07-18 13:33:00 819
原创 站在人的角度写代码
今天在写一个程序,其中有几个类是原来的项目中已经存在的,为了图方便我就把这几个类一个一个的拷贝过来了。每当我拷贝一个的时候我都编译一遍。当拷贝第一个类的时候,编译时出现错误,提示找不到A类,把A类再拷贝过来,编译后又说找不到B类,找到B类又说找不到C类,如此拷贝了半天才把所需要的东西拷贝过来,编译成功。觉得: 这样A类调用B类,B类调用C类,...他们之间的这
2008-07-04 10:27:00 766
原创 CommunityServer中的代码页面分离
第一步:找一个页面。首先找到一个页面:CS2008_4.0.30417.1769.sdk/source/Web/Themes/calypso/Common/login.aspx 第二步:找一个处理逻辑的控件发现该页面中有个控件:CSControl:LoginForm。代码如下:
2008-06-21 11:20:00 582
原创 用C++实现单件模式【包含两个char*变量】
用C++实现单件模式,有很多地方需要注意的。 简单的单件模式程序:下面是我写的一个实现单件 : class SystemConfig {private: static SystemConfig *s_Config; // 存储对象的静态变量public: static SystemConfig *Ge
2008-04-08 10:31:00 859
原创 打算写一个C++程序(2)
打算写一个C++程序 其实我是想用MFC静态库实现一个通过TXT配置文件在程序中动态创建界面的程序。主要思路是:1:提供一个基类CSearchBaseDialog,在基类中,程序从配置文件中读取界面控件的信息,然后根据配置文件中的信息在界面上创建相应的控件。配置文件的格式:IDC_BTN_MAIN_MENU=10;80;10;40;102;button;菜单 解释:ID
2008-04-07 10:31:00 816
原创 打算写一个C++程序(1)
打算实现一个自己的C++程序,具体思路是:不应用MFC提供的框架;一个界面对应一个配置文件;将界面中的所有控件信息写在配置文件中,通过读取配置文件即可知道界面中所有控件的信息,这样的好处是可以动态的修改界面而不需要修改程序;配置文件的信息:位置信息,控件类型,控件文本,控件ID,控件主键;提供界面基类,界面的基类完成创建界面控件。 我现在还不会用C++读取配置文
2008-04-03 09:42:00 1065
原创 编程语言中的文言文
这两天在看钱能老师的《C++程序设计教程》 。其中有一段讲int a = 3, b = 5, c;c = a*b + ++b;count 在BC中运行得到的结果是24,而VC中得到的是21.原因是“在不同的编译器求值顺序不同”。 在一本C++中的书上讲到这些是可以的,因为怕以后遇到这样的问题不知道怎么回事。但是,如果某个程序员写出这样的程序,却是该打。我觉得像++b
2008-03-20 08:29:00 3274 1
原创 C#中的修饰符
C#中的修饰符有很多,可以分类:类修饰符,存取修饰符,成员修饰符。 (一) 类及其类的存取修饰符有:public,inner,friend,abastruct,sealed1. public:public class ClassPublic{}如果一个类声明为public,则该类的应用不受限制。具体含义可与inner参考对比。2.
2008-03-18 16:43:00 916
原创 C#中的命名空间
最近在看C++ Primer Plus。打算把自己看得记下来。算是倒粪。先复习一下C#中的命名空间。C#中有命名空间,Java中有包。命名空间我觉得就像是装类的一个箱子,知道这个箱子再找某个类就方便了。在C#中,用法如下:文件:Xumingxsh.csnamespace Xumingxsh{public class XumingxshSpace{}public
2008-03-17 14:35:00 7976 3
原创 我的读书生涯
从小就热爱看书,“余幼好书,家贫难至,有蒋氏者藏书甚富,往借不予,归而形诸梦”。我也有和袁枚一样的情形,上高中的时候经常梦到自己有很多书,每到这时就特别激动。不过那时候更喜欢的是武侠书。工作也后,看的书就转到技术书籍上了。记得我刚参加工作的时候,什么也不会,记得有人问我ASP是写前台程序的还是写后台程序的?我回答说前台。其实,那时候什么是ASP根本不知道。还有人问我数据库是什么?不知道。
2008-03-15 11:29:00 939 1
原创 对重构的理解
重构,我的理解就是整理代码。记得以前有人跟我说“做软件,一定要对自己的东西尽量最求完美”。我想他这句话应该和重构有点关系吧。记得我刚开始写程序的时候,什么都不会,有点乱写的意思。想到哪儿就写到哪儿,经常是写了一周的代码,自己都不知道自己写些什么。运行中出现问题,自己都头疼去看源代码。那时候,对oop不熟悉,也懒得去修改,这大概是造成这种局面的原因了。 后来有时间了,看看书,知道了什么是
2008-03-13 17:22:00 854
原创 Socket实例代码
最近在用Socket,不是很明白,但是总算是实现了socket传信息。现在把代码贴在这里:这是一段MFC中的代码:服务器端接受数据的代码:static DWORD WINAPI RunSocket(LPVOID lpvoid);int CSocketAppView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::On
2008-03-12 16:25:00 2883 1
原创 对数据仓库的认识
什么是数据仓库,以下是我对数据仓库的认识: 假设你有很多很多的衣服。有些是经常穿的,有些是不经常穿的。都放在柜子里。经常穿的,你可能隔三五天就取出来穿,穿完后再放回去。不经常穿的,可能搁在那儿,八辈子也不会动,有点像鸡肋,放着占地方,丢掉又很可惜,而且,说不定什么时候还会穿上一把呢? 把这两种衣服放在一个柜子里,是不是会觉得很乱,不方便啊? 这时候,就应该把常穿的
2008-03-11 10:45:00 1122
原创 C#中的委托与事件
delegate及event在C#中叫委托与事件。他们的作用就是在类外执行其他对象的一个函数的操作。最近看C++的相关文章才知道,原来我们定义一个委托,其实就是定义一个函数格式,它可以告诉编译器,当代码中调用到该委托的时候,它的格式是什么样子的【返回值,参数数量,参数类型】事件就是一个函数指针,它告诉程序,你把合适的地址及参数传给我,我就能给你做你希望我做的事情。事件在未绑定的时候是空
2008-03-10 16:56:00 645
原创 在mfc中动态创建按钮
第一步:在Resource.h中,添加按钮ID:ID_BTN_TEMP = 1001第二步:在View类【CView的子类】中添加一个变量,判断按钮是否已经创建:bool m_bIsCreatButton;第三步:创建一个按钮数组:CBitmapButton *m_bitList[11]第四步:在View类【CView的子类】的构造函数中,初始化bIsCreatButton:m_bIsCreatB
2008-01-23 15:34:00 4857
原创 以较少代码实现DataGrid的排序,翻页,删除等功能【2】
关于上一篇,《以较少代码实现DataGrid的排序,翻页,删除等功能》具体实现的其他辅助代码在这儿,本篇的代码全是多个页面公用代码。页面代码中,添加,删除,编辑这些按钮,以及DataGrid中的属性设置等HTML代码都去哪儿了呢?DataGrid控件属性,提交按钮属性,删除按钮属性放到主题中去了。下面是主题文件:Default.skin -- 页面中,通过styleSheetTheme="De
2008-01-23 15:12:00 619
原创 以较少代码实现DataGrid的排序,翻页,删除等功能 【1】
通过ASP.Net2.0中的母版、主题以及面向对象中的继承、多态等技术可以节省很大的代码量。以下是我实现的DataGrid的排序,翻页,删除等功能。首先看一下运行后的效果图:在这个页面中,实现了排序,分页,删除,编辑等功能,用户选择记录,点击“删除”按钮后,可删除记录。用户点击添加,编辑,删除,查看,查询等按钮,会调用相应的脚本,这里就不再描述脚本代码了。下面是实现代码:页面代码:@ Page
2008-01-23 15:08:00 631
原创 应用自定义控件实现页面输入数据自动判断
1:在页面中需要一个输入日期的TextBOX。2:扩展TextBOX,使其具有属性:1)控件名称--例如【生日】,数据类型【例如:DateTime】,是否允许为空,最大长度,最小长度:3:根据属性生成alt属性字符串:ColumnTextBox表示控件类型为TextBox字符串:生日;ColumnTextBox;DateTime;1;255;8;的含义:控件对应的项:生日【生日】控
2008-01-23 15:07:00 1164
自定义快捷命令程序(VC++加批处理)--Release
2014-08-22
自定义快捷命令程序(VC++加批处理)
2014-08-22
我的C++自动化测试程序
2014-08-20
我的自动化测试程序
2014-08-20
我的数据库访问类源代码
2014-08-18
.net2.0版代码生成器
2008-08-26
公交换乘的实现
2008-07-23
C++程序案例MFCFrmX
2008-07-10
MFCFrm.rar
2008-04-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人