像拍电影一样做软件-资源管理的规划、预算不协调的根本原因 资源管理的规划:1、管理层要充分了解项目类型和所关联到的业务2、构建一个人才储备数据库3、使用人才数据库作为资源分配的参照4、定期对数据库中的人员信息进行维护和更新5、设定人才战略规划,依据项目和业务需要补充适当的人员6、岗位轮换,最大限度地允实企业的知识库 预算不协调的根本原因:1、让非技术人员主导评估2、照镜子(自我反省)恐惧症3、理解设计时间和调试时间4、不恰当或不清晰的需求5、一口
OpenDialog.Execute 成功后再设置OpenDialog.InitialDir无效 OpenDialog.FileName :=''; //需先清空OpenDialog.InitialDir:='c:\';
截窗体、截主屏、截扩展屏 截窗体QPixmap map=this->grab();截主屏QScreen *screen=QGuiApplication::primaryScreen();QPixmap map=screen->grabWindow(0);截扩展屏QRect r2 = QApplication::desktop()->screenGeometry(1);QPixmap map=QPixmap::grabWindow(QApplication::desktop()->...
delphixe Dll 断点设置无效 菜单Project->Options...Delphi Compiler -Comiling -Debugging +Use debug .dcus 设置为True -Linking +Include remote debug symbols设置为True
保存为UTF-8格式的Txt文件 procedure SaveUTF8File(const AFileName: string; AListText: TStringList);var Latin1Encoding: TEncoding;begin Latin1Encoding := TEncoding.GetEncoding(CP_UTF8); try AListText.SaveToFile
RichTextBox 全角引号变成半角解决方法 Private Function ReplaceRtfFullQuotes(ByVal TextRTF As String) As String Dim sText As String sText = Replace(TextRTF, "\ldblquote ", "“") sText = Replace(sText, "\ldblquote", "“") ...
mac os libray not loaded:(加载dylib出错) 用Delphixe10调用一个三方的dylib,在mac上运行报错 libray not loaded:1、修改Project Options中的packages-Runtime Packages-Link with runtime packages设置为True2、修改Project-Deployment-三方dylib的Remote Path,改为Contents\Ma
word转换HTML后 HTML编码是charset=x-cp20936怎么转换成gb2312 有些word转换HTML后编码为x-cp20936,导至android系统中查看出现乱码,改为gd2312正常Private WrdApp As Word.ApplicationPrivate wrdDoc As Word.Document Set wrdDoc = WrdApp.Documents.Open(sPath, , True) wrdDoc.WebOptions
IdHttp.Get 返回字符串中,双引号(")前的汉字返回乱码(�?) ResponseStream := TStringStream.Create('');...ResponseStr := UTF8Decode(ResponseStream.DataString;把解码放到创建时ResponseStream := TStringStream.Create('',TEncoding.UTF8);...ResponseStr := ResponseStre
C#绑定Delphi的Dll多事件出错,ErrorCode=-2147220990 绑定任何一个都可以,但绑定多个就出错ErrorCode=-2147220990,把下面的ckSingle,改为ckMulti,测试通过。 delphi中TMyClass.Initialize的FConnectionPoint:=FConnectionPoints.CreateConnectionPoint(AutoFactory.EventIID, ckSingle, EventConne
遍历窗体控件,设置FontName function HasProperty(const AObject: TObject;const APropName:String):Boolean; var PropInfo:PPropInfo;begin PropInfo:=GetPropInfo(AObject.ClassInfo,APropName); Result:=Assigned(PropInfo);
MyEclipse的Windows下面没有Android sdk and avd manager 打开 Windows==》Customize Perspective==》Command Groups Availability选项卡,左边的Available command groups 下的Android 开头的那几个都打上勾,然后ok就好了。如果找不到 Android 开头的请确认已经安装ADT插件,不光是 DDMS 还有 Android Development Tools 哦。h
判断编绎的平台是32bit还是64bit {$ifdef CPUX64} lblVision.Caption := lblVision.Caption + '(64bit)'// 64 bit compiler used; {$else} lblVision.Caption := lblVision.Caption + '(32bit)'; // 32 bit compiler used; {$endif}
程序员也要养生 http://news.cnblogs.com/n/142382/其实这些问题不仅见于程序员,其他长期经常坐在电脑前的职场人士(比如:网络编辑、站长等),都会有其中的某些健康问题。希望从事这些行业的朋友,对自己的健康问题,予以重视。以下是全文。 我最近在写《Learn Python The Hard Way》的最后几节课,我还要加一课:关于程序员在其职业生涯中普遍的健康问题。我发现诸多代
window.open()打开的窗口第2次进入时不执行page_load protected void Page_Load(object sender, EventArgs e)if (!IsPostBack) { Response.Cache.SetExpires(DateTime.Now); //增加此句 解决 window.open()打开的窗口第2次进入时不执行page_load}
64os “System.BadImageFormatException:”没有为此类型库注册包装程序集。 “System.BadImageFormatException:”没有为此类型库注册包装程序集。在System.Windows.Forms.Design.DocumentDesigner.AxToolboxItem.Create.ComponentsCore(IDesignerHost host)在System.Drawing.Design.ToolboxItem.CreateComp
GridView CommandField 动态添加到最后一列 1、 GridView1.RowEditing += new GridViewEditEventHandler(GridView1_RowEditing); //添加编辑事件 GridView1.RowDeleting += new GridViewDeleteEventHandler(GridView1_RowDeleting); GridVie
RzListView //------------------------------------RzListView选择新行并取消上次选择的痕迹 (显示的虚线框)lvRecord.ItemFocused:=nil; //需加此句,取消上次选择的痕迹lvRecord.ItemIndex:=Index
File -------------------------- 加载含换行符的文件(如QQ聊天记录)//readln 不区分换行符(#10),替换为空字符assignfile(lTextFile,mFile); reset(lTextFile); //以只读方式打开文件 while
从源数组中取不同的随机数 TArrayInt = Array Of Integer; //自定义整数数组 Function GetRandomIntArray(SrcArray: TArrayInt; Var DestArray: TArrayInt; CntDest: integer): Boolean;Var i, j, lRnd, lCntSrc: integer;Begin Try
ocx控件引用 1、导入后面板如没有显示图标,则可在Environmet Options 中 选择Ignore special ColClass Flags when importing中Can Create 2、导入成功但不能使用,如版本升级过(8.1)的可以用没有升级过的4.453版(换台机器装个d7)导入一次,导入后在Program Files/Borland/Delphi7/Imports/找
像拍电影一样做软件-需求开发、可控的开发节奏、时间约束策略的好处 需求开发:1、让目标客户参与需求开发流程2、确立商业目标3、重视需求分析 4、表述形式的标准化5、功能需求源自业务需求6、平衡需求7、引入早期需求测试策略 可控的开发节奏:1、构建恰当的开发进程2、开发一个易于管理的生产任务列表3、与产品拥有者进行沟通4、允分发挥知识型团队的优势 时间约束策略的好处:1、提升重视程序和加强优先级管理2、养成制定可行计划和可靠预算的习惯3、支持有效资
COM 接口得到实现该接口的对象实例 参见http://www.wangchao.net.cn/bbsdetail_47176.html 外部调用Vote1.Base :=Base1.DefaultInterface; Base属性设置为Read|Write|Write byref, Type 为Base*。 procedure TVote.Set_Base(const Value: Base);var e
COM 数组参数 function TAutoCls.SetArray(iMode: Integer; vAry: OleVariant): WideString;var i,j:Integer ; s:string;begin case iMode of 2: //二维 begin for I:=VarArrayLowBound(vAry, 1)
德尔菲估算 Delphi法的步骤是:1 协调人召集估计人员,由作者介绍情况、限制条件、估计单位;2 协调人向估计人员提供估计表格; 3 估计人员匿名填写估计表格;4 协调人整理出一个估计总结,以汇总表的形式返回估计人员;5 协调人召集估计人员,讨论估计结果和差异。由作者对相关的条件和情况进行澄清;6 估计人员在估计表上填写另一次匿名估计结果;重复步骤4-6(控制在2-3次), 得到最终估计结果。
项目管理之路 技术人员通常比较讨厌写文档,但一个高效的技术人员一定要时时把自己学习的东西、做的事情给与总结,一是对自己的思考、付出给出交代,从中发现问题;二是作为知识的传承,提供给将来需要的人。互联网时代,把知识烂在自己的肚子里也不愿传递的人,一定会边缘化的。他距离项目经理会很遥远(项目经理的基本功就是汇报)。有了明确的需求,我们一定竭力做如下几件事情:什么(WHAT):按顺序列出达到目标所需完成的工作;何
原型建立及技巧 原型建立的步骤。 ●确定用户需求。原型的开发取决于用户需求,需求决定了系统必须支持的业务对象。●建立原型。不要花大量时间去写“好”代码,因为在对原型作了评估之后,你很可能丢弃这些代码。 ●评估原型。核实原型是否满足用户需求。 ●确定是否完成。当评估过程中不再有新的需求,或只有少量无关紧要的需求时,原型建立过程就可结束。 原型的不同层次。可以依次开发系统的三种不同类型的原型。手绘
成功的项目管理10-12章 10章 项目经理项目经理的职责 确保全部工作在预算范围内按时优质地完成,从而使客户满意。领导项目的计划、组织和控制工作,领导项目团队完成项目目标。计划:要高度明确项目目标,并就该目标与客户取得一致意见。再与项目团队一起制定实现项目目标的计划。组织:为开展工作如何合理地配置资源。给每个具体人员分配职责,授予权力。控制:需要一套项目管理信息系统,跟踪实际工作进度。积级主动及早发现、解决问题
梦断代码 第9章 方法 第9章 方法汉弗里在IBM执行强制进度纪律的成功基于两条原则1、计划是强制的。2、计划是“从下往上”,由负责按计划执行的程序员的经验和知识而来,而不是“从上往下”,靠管理者拍脑袋或对市场的期望而来。敏捷软件开发个体和交互 胜于 过程和工具可工作的软件 胜于 面面俱到的文档客户协作 胜于 合同谈判响应需求 胜于 遵循计划极限编程忘掉详细规约和代码文档只在确实需要时和实现之,而不是
目标——简单而有效的常识管理 公司是否赚钱的三个重要指标:净利、投资报酬率和现金流量 公司目标--我们要靠提升净利来赚钱,同时也要增加投资报酬率和现金流量。不着眼于局部效益。 效率与赚钱,高效率不一定赚钱,可能只是生产更多的多余存货。 每个人时时刻刻都在工作的工厂,是非常没有效率的工厂。 要根据目标来管理产能 平衡的工厂假如我们没有充足的产能,我们预估的有效产出就是假的。但是假
激励机制 激励对生产率的影响最大、提高开发速度。最重要的5个激励因素1、 成就感(自主权、设定目标、)2、 发展机遇(进修机会、提供培训、自学假期、购买专业书籍、避免进度压力过大)各行业前10%平均为开发人员提供2周、软件经理3周培训时间。3、 工作乐趣(技术多样性、任务完整性、任务重要性、自主性、工作反馈)为能够专注于工作本身创造条件。4、个人生活(有实际计划使开发
高效开发环境、自愿加班 高效开发环境(软件开发需长时间不间断地集中注意力)工作的质量依赖于工作者保持“作业状态”1、 工作空间根据开发人员的个人需要配置2、 商务和社会面谈不应该在开发人员的办公空间内进行3、 防止打断有效“作业状态” 自愿加班(一周4-8小时的额外工作时间能增加10%-20%的产出)1、对开发者采用“拉”而不是“推”的方法2、不要要求加班,它将产生更少的
团队合作、团队结构 团队合作1、共同、可提升的愿景或目标(愿景有清楚的认识、挑战性的工作)2、团队成员的认同感(团队起名、队员精英感)3、结果驱动的结构(最大的产出团队具有角色明确、有效沟通系统、监控个人表现并提供反馈、决策制定以事实为依据)4、胜任的团队成员(特殊的技能、强烈投身工作的愿望、善于与团队成员有效合作)5、对团队的承诺(愿景、挑战和团队认同感结合做出承诺)6、相互信任(诚实
风险管理、小型里程碑 风险管理风险评估(识别、分析、优先级) 发生的概率X损失的大小=风险暴露量(需包含在进度计划时)风险控制(管理计划、化解P78、监控) 小型里程碑(进行项目跟踪和控制的好方法)1、及早启动对危机做出反应2、让开发者建他们自己的小型里程碑3、保持小型特征(一两天内完成的)4、里程碑二分性(完成、未完成)5、制定一系列完整的里程碑6、在短期计划
项目修复(最根本的问题通常是如何完成而非其它) 3种基本方式:缩减项目规模、把注意力放在短期改善上、放弃计划并着手准备危害控制。通过组合以上3种得到第4种:扔掉一些功能,尽量提升生产率,必要时抛弃原进度计划。 修复计划找出所需计划的类型(评估处境、应用W理论分析、作好修复准备、问问开发组需要做什么、变得现实一些。) 人员1、 恢复士气(让他们感到自己的重要性、适合的休假)2、 为开发组创造保健类因素
功能限定 项目早期:功能简化1、规格说明最小化(在可利用的资源里开发一个最合理的软件)2、需求筛选(删除一些功能是缩减进度计划最有效的方法)3、版本开发(另一种删除需求是从当前版本中删除) 项目中期:功能蔓延的控制(最严重的错误是把需求不稳定的情况认为是稳定的)1、变化的根源(迷人程序综合症、不清楚或不可能的目标)2、变更的影响(需求阶段考虑变更比建设或维护阶段考虑能减少5
进度计划 不好的管理方法是当某件事进展缓慢时,加倍速督促。完成期限的压力是软件工程最大的敌人。为保证项目顺利完成需综合考虑进度计划、投资、产品三方面因素。提出双方均有利的方案需灵活变通。1、 与产品有关的(分版本实现、分阶段交付、砍去费时功能、确定必须功能)2、 与项目资源有关的(提高开发的支持、少做官样文章、提高相关人员参与、增加测试人员)3、 与进度计算(在需求分析完
估算 大多项目超过估算的25%(1994),准确的估算是最大可能加快开发速度的基础。软件开发是一个改进的过程,能提前做出的决策越多,估算越精确。创建准确的开发进度:估算产品规模、估算工作量(人月)、估算进度、提供某一范围内随进度改进的估算。估算正确性依赖于软件定义的修正程度。 进度压缩因子=期望进度/初始进度 压缩进度工作量=初始工作量/进度压缩因子 0.83=期望1
快速开发中的核心问题 准时+低质量=低质量 超时+高质量=高质量快速开发的平庸产品很难与高质量的产品相比。好的项目进度,提前、推迟完成可能性各占50%。P93更有可能缩短总体开发时间将大量时间花费在项目前期工作上。P97 时间被用在哪里?35%有效,65%有害或无效的。返工(40%-50%)功能蔓延(需求变化和开发者的镀金可能引起25%的变化)需求定义(10%-30%,在
软件开发的基本原则 管理原则:项目估算和进度安排(精确估算-> 有效规划->有效开发) 计划编制(项目估算、时间进度、参与人员、项目组运作方式、采用的生命模型、管理风险、确定项目策略,如控制特色、是否需购买或外包部分产品。)跟踪(管理、监控、及早发现问题)度量(费用、进度、状态、质量、生成率) 技术原则:
TCP重传机制 平均往返时延RTT=aX旧的RTT+(1-a)X新的往返时延样本 a=7/8超时重传时间RTO=BXRTT B=2新的重传时间=rX旧的重传时间 r=2 重传不采用其住返时延样本,当不再重传时再根据往返时延更新RTT.
矩形填充样式 HatchStyle Private Sub DrawCell(ByVal iIndex As Int16, ByVal eStyle As HatchStyle, ByVal s As String) Const cW = 100 Const cCol = 10 Dim iX As Int16 Dim iY As Int16