firefly

来源: BlogBus 原始链接: http://firefly06.blogbus.com:80/s47739/ 存档链接: https://web.archive.org/web/20061116111633id_/http://firefly06.blogbus.com:80/s47739/


入门不简单 ---c# 2006-04-05, by yangjinyi (《Beginning C# Objects中文版》译序) 由于工作性质的关系,我常常需要为公司面试程序员。通常,我会首先要求应聘者做两件事:第一,口头说明虚方法、抽象方法、接口之间的异同和使用场景;第二,脱离IDE,手写一个简单的WinForm程序(例如包括布局整齐的两个文本框和三个按钮、点击按钮弹出消息框显示文本框内容),然后在命令行编译运行。第一题是考面向对象中的继承和多态概念,第二题则是考C# GUI类和关于委托等C#独有特性的基础知识,以及编译、调试技巧。很遗憾,有一大半的应聘者会在这两个简单考题面前败下阵来。尤其是第二个考题,甚至难倒了一些写代码有年头的程序员。为什么?因为这些程序员不具备基本的面向对象知识,更加不理解C#的面向对象实现手法。 这不能完全归咎于中国计算机教育。实际上,在美国或其他发达国家,真正懂得面向对象开发的程序员也并非随处可见。这也是Beginning C# Objects(及其Java原版本Beginning Java Objects)一书成为畅销书、并在Amazon上获得读者极高评价的原因。作者写道:“我们常常与一些软件开发者会面——在工作场所、在客户办公室、在专业会议上,或在大学校园里——这些开发者都尝试去掌握一门类似C#的OO编程语言,他们参加C#培训、阅读关于C#的书,或是安装和使用像Visual Studio .NET这样的C#集成开发环境(IDE)。然而,这是舍本逐末的做法:他们缺乏对什么是对象的基础认识,更为严重的是,缺乏利用对象从头开始构建软件应用程序的知识。” 翻开市面上任何一本你能找到的C#入门书,看看第一章讲什么,第一个范例是怎么实现的。闭上眼睛你都能告诉我,第一章多半是讲怎么安装VS.NET,第一个例子多半是拖一个按钮控件到窗体,双击后输入一段调用消息框的代码。我们的技术作者们,就是这样把读者引入歧途的。IDE(集成开发环境)能极大地提升生产力,但开发应用程序所需的高度专业的知识和技能,却非IDE所能代替。的确,任何一个菜鸟也许都能利用可视化组件拼凑出“看起来还不错”的应用程序,但这样的程序却将带来高昂的扩展和维护成本。 面向对象编程,绝非一些可视化组件那么简单,它涉及人类思维(抽象)模式、建模符号体系、面向对象方法学等诸多方面,对开发者有较高的要求。功夫过关的开发者,不止是技术高手,同时也一定会是有深度的思想者。把需求从自然语言翻译为对象模型,再把对象模型翻译为特定语言代码,殊非易事。最基础的,到底什么是对象?如果你曾经好好思考过这个问题,就会得到很多启发。例如,现实世界中的一张纸,如何抽象为计算世界中的对象?这个对象将具有那些特性(属性和行为),例如尺寸、颜色、质地、折叠、裁减,卷筒……?综合来看,面向对象的要素是什么?把事物抽象为对象的过程,是做思维体操的过程,也是极富挑战性和乐趣的过程。如果你还还不了解对象和面向对象的概念,或想与作者一起就该话题做更深入的思考,本书第一部分就是最好的入门手册。 我认识一些优秀的程序员朋友,他们在大学时念的专业是建筑。这些朋友对应用程序架构和/或开发流程,有近乎严苛的要求,因为他们深刻地理解,蓝图、材料、工序……对于建造房屋是多么的重要。对象模型的静态方面(域类、数据结构等)在应用程序中开发相当于建材单元,而动态方面(行为、方法等)则是关于建材之间如何组合的指导书,它们合起来,构成一个应用程序的“蓝图”。越是复杂、大型的应用程序,对蓝图的要求就越高;即便是简单的应用,有蓝图也比较有利于维护、升级和扩展。给你一份需求说明书,你将如何分析它、并且组织出正确的对象模型(蓝图)?如果你对此信心不足,建议好好阅读本书第二部分。 第三部分涉及的范例,在有经验的开发者眼中看来,似乎过于简单。其实不然。整个开发过程当中,没有使用IDE拖放过任何一个控件,或在IDE中编译调试。这样做的目的有二:一、让读者可以掌握.NET Framework和C#本身的特性,而不会被IDE的花哨界面所迷惑、急于求成;二、帮助读者学会用正确的手法和模式(如公认的MVC模式)开发程序。例如委托(delegation),这是.NET Framework中一种特别的语言元素,也不易理解。如果你只懂得往窗体放一个按钮,双击该按钮,输入一行代码,那么你永远不会明白,这个过程体现了利用委托实现事件处理的巧妙手法。但是,如果让你脱离IDE编写事件处理方法,你就很快能明白这个道理,而且也知道怎么用于实践。IDE能提升生产力,不过它却不能凭空创造生产力,本源的生产力还是来自开发者的知识与技能。 面向对象编程已经流行多年,然而还是有无数的入门者在入门阶段就走错路子,抱着错误的观念、用错误的方式开发着意大利面般一团乱麻的程序。入门不简单,对于初学者如此,对于有经验的开发者,更该回头检讨自己在面向对象编程领域的经验是否根本就是错误或细枝末节的经验。本书作者开发和培训经验丰富(一位是NASA开发工程师,一位是大学教师和对象技术专家),理解面向对象程序员可能进入的误区和面对的挑战,他们知识与经验的总结,形成了这么一本用心良苦、循循善诱、深入浅出的C#面向对象开发指南。每一位C#开发者,无论有经验还是没经验,都该读读这本书。入门不简单,你真的入对门了吗? (本书将由电子工业出版社于2006年5月出版) 分类: 转载 | 阅读全文 | 评论(0) | 引用(0) 暴露自己IP地址的危险 2006-02-28, by yangjinyi 暴露自己的IP地址是很危险的,道理很简单,暴露了IP地址,也就等于告诉了黑客要攻击的目标。那么,暴露自己的IP地址究竟有什么危险?我们又该如何减少这些危险?不要着急,听我慢慢道来。 首先谈一下危险。如果你用的是Windows系列操作系统,而又没有打什么补丁的话, 那么暴露了自己的IP地址,你也许就会经常遇到莫名其妙蓝屏的情况,这就可能是被人“炸”了。目前最经常利用的就是IGMP漏洞,而这方面的工具有IPHacker。被炸的症状为网络连接被切断,重新启动后恢复,补救的办法是马上安装相应的补丁。另外,我也遇到过一种叫做ArpTest的小工具, 他可以攻击某个IP地址或某段IP地址,但是只能在局域网中使用。现象是出现对话框,回车后对话框消失。危险在于这个软件可以设定发送次数和时间间隔。设想时间间隔为0,发送次数为999999999次,你会有什么感觉? 如果你在聊天室或IRC聊天时暴露了自己的IP地址,恐怕你不能好好地聊天。大家都用过OICQ,目前针对OICQ的工具实在是太多了,如果你暴露了自己的IP地址,有工具可以查到你这个IP地址所使用的OICQ号码,进一步的又有远程OICQ密码破解工具,看来你的OICQ号码真的不安全! 目前基于Web的论坛到处都是,想必你一定去过,这些Web论坛大量使用Cookie,那么危险来了。恶意攻击者可以诱使你访问他的一个网页,而这个网页中内嵌的脚本就可以很容易地从你机器上的Cookie中提取出你在那个论坛的用户名和密码。另外,如果你是NT的用户,并且上OICQ,那么暴露了自己的IP地址,攻击者就很可能利用目前一抓一大把的NT漏洞来获取你的主机上的任意文件,而破解OICQ的密码应该要比破解SAM密码方便很多。不仅如此,如果你暴露了自己的IP地址,使用工具能查到你系统上的很多信息,扫描器能找出你主机上的很多漏洞,而掌握了你系统漏洞的人,就可以入侵你的主机,进而控制你的机器。这样是不是很恐怖? 下面我说说关于IP地址的安全问题。以前有个号称可以隐藏IP地址的软件,结果证明是假的。另外,据我所知,目前还没有什么好办法完全隐藏自己的IP地址。不过,还是有一些办法减少暴露IP地址的危险的。例如,你可以使用防火墙,那么别人PING你这个IP地址的时候,就会返回超时错误,就有可能让人误以为你这个IP不可用,自然攻击不到你。还有,合理地使用代理服务器也能隐藏你的IP地址,也就减少了被攻击的危险,是不是? 分类: 转载 | 阅读全文 | 评论(0) | 引用(0) 中继器与集线器一、中继器 2006-02-28, by yangjinyi 中继器(RP repeater)是连接网络线路的一种装置,常用于两个网络节点之间物理信号的双向转发工作。中继器是最简单的网络互联设备,主要完成物理层的功能,负责在两个节点的物理层上按位传递信息,完成信号的复制、调整和放大功能,以此来延长网络的长度。它在OSI参考模型中的位置如图1所示。 由于存在损耗,在线路上传输的信号功率会逐渐衰减,衰减到一定程度时将造成信号失真,因此会导致接收错误。中继器就是为解决这一问题而设计的。它完成物理线路的连接,对衰减的信号进行放大,保持与原数据相同。 一般情况下,中继器的两端连接的是相同的媒体,但有的中继器也可以完成不同媒体的转接工作。从理论上讲中继器的使用是无限的,网络也因此可以无限延长。事实上这是不可能的,因为网络标准中都对信号的延迟范围作了具体的规定,中继器只能在此规定范围内进行有效的工作,否则会引起网络故障。以太网络标准中就约定了一个以太网上只允许出现5个网段,最多使用4个中继器,而且其中只有3个网段可以挂接计算机终端。 二、集线器 集线器(Hub)是中继器的一种形式,区别在于集线器能够提供多端口服务,也称为多口中继器。集线器在OSI/RM中的位置如图2所示。 集线器产品发展较快,局域网集线器通常分为五种不同的类型,它将对LAN交换机技术的发展产生直接影响。 1.单中继网段集线器 在硬件平台中,第一类集线器是一种简单中继LAN网段,最好的例子是叠加式以太网集线器或令牌环网多站访问部件(MAU)。某些厂商试图在可管理集线器和不可管理集线器之间划一条界限,以便进行硬件分类。这里忽略了网络硬件本身的核心特性,即它实现什么功能,而不是如何简易地配置它。 2.多网段集线器 多网段集线器是从第一类集线器直接派生而来的,采用集线器背板,这种集线器带有多个中继网段。多网段集线器通常是有多个接口卡槽位的机箱系统。然而,一些非模块化叠加式集线器现在也支持多个中继网段。多网段集线器的主要技术优点是可以将用户分布于多个中继网段上,以减少每个网段的信息流量负载,网段之间的信息流量一般要求独立的网桥或路由器。 3.端口交换式集线器 端口交换式集线器是在多网段集线器基础上将用户端口和多个背板网段之间的连接过程自动化,并通过增加端口交换矩阵(PSM)来实现的。PSM提供一种自动工具,用于将任何外来用户端口连接到集线器背板上的任何中继网段上。这一技术的关键是“矩阵”,一个矩阵交换机是一种电缆交换机,它不能自动操作,要求用户介入。它不能代替网桥或路由器,并不提供不同LAN网段之间的连接性,其主要优点就是实现移动、增加和修改的自动化。 4.网络互联集线器 端口交换式集线器注重端口交换,而网络互联集线器在背板的多个网段之间实际上提供一些类型的集成连接。这可以通过一台综合网桥、路由器或LAN交换机来完成。目前,这类集线器通常都采用机箱形式。 5.交换式集线器 目前,集线器和交换机之间的界限已变得模糊。交换式集线器有一个核心交换式背板,采用一个纯粹的交换系统代替传统的共享介质中继网段。此类产品已经上市,并且混合的(中继/交换)集线器很可能在以后几年控制这一市场。应该指出,集线器和交换机之间的特性几乎没有区别。 分类: 转载 | 阅读全文 | 评论(0) | 引用(0) 网桥,路由器,交换机的功能区别 2006-02-28, by yangjinyi 看看他们的发展历史 网桥---〉交换--->路由 首先在局域网里面,大量主机之间的通信都是通过arp广播来决定目的主机的地址的, 为了减小在共享环境中的介质争用(也就是冲突),网桥产生了,它的作用是将广播域划分为一个一个小的冲突域,这样便增大了可用的带宽,但是广播域还是没有变。从这里可以看出,网桥不涉及逻辑地址,所以它工作在第二层(数据链路层),并且端口很少(注意与后面的交换机区别),最后是网桥常常是基于软件的,因此可以处理上层事务。 看到了网桥的作用,于是人们将其发展为多端口设备,并且整合了集线器的功能,发 明了交换机,交换机也是工作在第二层,由于具有多个端口,所以也叫做多口桥。交换机除了具有桥接(也就是隔绝冲突)和转发数据报之外,还具有其他高级特性:比如说vlan(虚拟局域网),port trunking(连路聚合),spanning tree(生成树),等等特性,高端的交换机还具有路由功能,具体的路由功能将在后面介绍。交换机是一种专用的网络设备,它是基于硬件的,所以具有比基于软件的网桥更高的数据转发能力。 随着网络的进一步发展,在广泛分布的网络之间,选择路径便是一件麻烦的事情,于 是一种专门的网络硬件产生了---路由器。路由器工作在第三层(网络层)之上,其实也涉及第二层以及第一层,但是它的主要用途是选路。路由器的存储器里面存放着路由表,这些表是易失的并且容易改变的。路由表的内容包括到达目的地址的下一跳(next hop)路由地址,不同地址的管理距离,等等等等。这些内容都是路由器启动之后经过学习得到的。路由器启动之后便根据设定的路由协议与其他路由器交换信息,在交换信息的过程中,学习路由。所以一台路由器虽然是基于硬件的专用网络设备,但是路由器支持的路由算法才是最核心的东西。路由算法有两大类:距离矢量算法(如rip , igrp)以及连路状态算法(如ospf),还有一种平衡混合的算法(如eigrp),是前面两种算法的综合。路由器使用距离矢量算法,判断到达目的地址的优先路径的标准只有一个,那就是跳数,认为具有最小跳数的路径是最有路径,而不理会其带宽,可靠性,时延等因素。并且认为跳数大于15跳的目的地址是不可到达的,这边限制了可路断最优路径,这样可路由的区域便增大了,并且能平衡各条链路之间的流量。另外,路由还有一个二层设备不具有的功能,那就是隔绝广播,它可以将广播限制在一个网络之内,进而增大网络之间的带宽。 最后总结一下,网桥是一个二层设备,用于隔绝冲突,但是不能隔绝广播。常常是基 于软件的,现在使用得很少了。交换机是一个多端口的二层设备,又叫做多口桥,功能除了网桥所具有的功能之外,还有其特定的高级功能。路由器是一个三层设备,用于路径选择,并且可以隔绝广播。 分类: 转载 | 阅读全文 | 评论(0) | 引用(0) 网桥 2006-02-28, by yangjinyi 网桥工作在数据链路层,将两个局域网(LAN)连起来,根据MAC地址(物理地址)来转发帧,可以看作一个“低层的路由器”(路由器工作在网络层,根据网络地址如IP地址进行转发)。它可以有效地联接两个LAN,使本地通信限制在本网段内,并转发相应的信号至另一网段,网桥通常用于联接数量不多的、同一类型的网段。 网桥通常有透明网桥和源路由选择网桥两大类。 1、透明网桥 简单的讲,使用这种网桥,不需要改动硬件和软件,无需设置地址开关,无需装入路由表或参数。只须插入电缆就可以,现有LAN的运行完全不受网桥的任何影响。 2、源路由选择网桥 源路由选择的核心思想是假定每个帧的发送者都知道接收者是否在同一局域网(LAN)上。当发送一帧到另外的网段时,源机器将目的地址的高位设置成1作为标记。另外,它还在帧头加进此帧应走的实际路径。 两种网桥的比较: 分类: 转载 | 阅读全文 | 评论(1) | 引用(0) 浅谈Windows XP SP2补丁包的安装及使用[转载] 2006-02-21, by yangjinyi Windows XP Service Pack 2补丁包已经正式发布,先锋里有不少朋友可能对WINDOWS XP的最新系统补丁Service Pack 2(以下简称SP2)有些不熟悉,我就说说自己的安装过程和使用经历。从XP SP2开始研发,MS就出了无数个内测版本,网上放出的都是MS内测版本。从最初的一个内测中文版开始,到后来出的RC1 RC2 RTM2179 RTM2180,我一路升级全部安装使用过,应该说有一点心得,下面就写出来与大家分享一下。 一:Windows XP Service Pack 2为我们带来了什么 Windows XP Service Pack 2 (SP2),为用户的计算机建立了可靠的默认安全性设置,有效地保护计算机不受黑客、病毒及其他安全问题的困扰。同时Windows XP SP2还添加了众多新的功能,能够给用户提供更多彩的计算体验。Windows XP SP2的发布表明微软操作系统的安全性能进入了一个“主动防护”的新阶段。更多详情请点击这里和这里进入MS的官方页面。 二:关于现在网上可下载的版本及版本号的说明 从八月七号开始,网上就有WINDOWS XP SP2 CHS RTM2180{没有数字签名}这个版本下载,据我所知最早放出的是SSITE,先锋和PCHome这3家网站。几乎是同步放出的。该补丁包的下载尺寸达到270MB之巨。不过,等MS正式开放update后,从SP1升级安装{自动升级功能开启}SP2的下载尺寸将会在100MB左右,关于版本号,MS 开发一般是 Mile Stone -> Beta 1-> RC -> RTM。 Beta:测试版 ,这个阶段的版本会一直加入新的功能。 RC(Release Candidate):发行候选版本 和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而使着重于除错,RC1就代表发行侯选第一版。 RTM(Release to Manufacturing): Manufacturing是制造的意思。正式在零售商店上架前,是需要一段时间来压片,包装、配销。所以程序代码必须在正式发行前一段时间就要完成,程序代码开发完成之后,要将母片送到工厂大量压片,这个版本就叫做RTM版。所以说,RTM版的程序码一定和正式版一样。但是和正式版也有不一样的地方:例如正式版中的OEM不能升级安装,升级版要全新安装的话会检查旧版操作系统光盘等,这些就是RTM和正式版不同的地方,但是它们的主要程序代码都是一样的。也就是说现在安装网上下载的WINDOWS XP SP2 CHS RTM2180和即将官方发布的SP2是一样的。功能上没有区别。 三:安装SP2后一些直观上的变化 SP2重写了大量的系统程序代码,用来增加系统的安全性和增加新功能,但很多改变不是我们这种普通用户和菜鸟能体会到的,呵呵,我只说说直观上有什么变化。 1:Windows安全中心,安装SP2重启后就会自动弹出这个安全中心,它提供涵盖所有关键设置和安全工具的统一视图,简化安全资源管理任务。 对防火墙,杀毒软件 自动更新等涉及保护PC安全程序的自动侦测,如你的自动更新没有开启它就会提示你,防火墙未开启也会提示等等。很实用。 2:强劲的Windows防火墙,安装SP2后它默认开启Windows防火墙,SP2自带的Windows防火墙是一款比较优秀的个人防火墙,所以,要是是个人使用,我认为可以不用再装其他防火墙,呵呵 我从SP1起就没用别的防火墙,说实话,WINDOWS XP自带的防火墙不错的,象网上一般的木马 病毒可以拦截的。当然有意要入侵你的PC的XX是拦不住的,自带的防火墙拦不住,别的任何民用防火墙也拦不住,好坏的差别,只是让入侵你PC的XX用的时间上,谁的需要长一点。 3:Internet Explorer控制弹出式窗口 ,这个功能非常实用,以往对付游览网页时自弹出广告窗口可以借助一些屏蔽广告的小软件,这次SP2中集成了这个功能,它提供非常人性化的设置,效果也很不错,近段时间在网上很让人头疼的广告明星{淘宝网}也是杀无赦。 4: IE浏览器插件管理,新的功能允许你方便的卸载一些没用的IE浏览器插件。在工具-IE选项-程序项里多了一个管理加载项按钮,打开后很直观的告诉你IE加载了那些插件,你可以起用,禁用和更新这些ActiveX插件。(并不是所有的都能更新的哦~) 5:自动更新功能,凭借得到改进的对话框和更具效率的下载服务令自动更新功能更加简便易用。在开启自动更新自动更新时,它会在右下角的任务栏出现一个小图标,鼠标悬停在上面会有WINDOWS正在下载可用更新,你可以正常工作等提示文字。在下载更新的过程中打开网页的速度没有明显变化。用大型的制图软件如Photoshop也没有什么异样。没有运行不畅,停滞假死的情况。 6: 附件管理器,有助于抵抗通过Outlook Express、Windows Messenger和Internet Explorer传播的计算机病毒 7: Internet Explorer下载警报,针对可能潜藏危害的下载资源向您报警,并允许您阻断未经请求的程序和代码,如果网站试图在未经您授权的情况下将程序下载到您的计算机,Windows XP SP2 中的 Internet Explorer 会使用信息栏来通知您。为了通知您,信息栏将会显示出来,并随后在您转到另一个网页时消失,如3721 新郎点点通等等IE插件,你要是不想安装,你有三种可选择 1 安装 2 永不安装 3 稍后再问。选2后你再打开这个网页它就不会出来烦你了。 8: 在WINDOWS添加删除上面多了一个小选项,你钩选后可以知道你更新了那些程序,很方便的。 9: 安装好SP2后,XP启动画面变掉了! 原来SP1时,机器开机启动后出现黑色背景,中间出现Microsoft WINDOWS XP Professional标志!装了SP2后,变成了黑色背景,中间只是一个Microsoft Windows XP 标志,PROFESSIONAL字样消失了! 10: 如果是从SP1升级安装,安装好SP2以后,以前在添加/删除里的安全补丁全不见了,sp2包含了之前所有的安全补丁,把那些都去掉,单独留一个SP2。 11: Windows XP SP2 包含最新的Direct X 9.0c,也集成了Windows Media Player9 煤体播放器。 12:升级安装SP2在硬件方面没有什么要求,以前用SP1时能流畅运行系统和软件的,安装SP2后是一样可以运行的很流畅的,在这里说明的是这只是我的个人感觉,并没有用专业软件测试。 四:安装过程中可能出现的错误 1:我喜欢自己修改一些系统文件,第一次安装SP时就遇到过,如出现XX系统核心文件不是…之类的错误对话框,提示sp2不会安装,这时可拷贝别的PC上的这个文件覆盖或还原这个文件。 2:安装有虚拟光驱的,如出现atapi.sys这个文件被占用的的错误对话框,提示sp2不会安装。可进入windows\system32\drivers 目录下,备份后删除atapi.sys这个文件,安装完成后再恢复, 但你要是安装的是Alcohol 120%这个光驱软件,那你还是先卸载,sp2补丁打完了再装上! 3:SP2支持直接从SP1升级安装,但不是必须的。微软每等补丁释出达到一定数量后就会发布一个Serivce Pack ,大家可以到X:\WINDOWS\system32这个文件夹去看看,有些系统文件在你平时的UP中已经升级到SP2了,Service Pack 包括以前所有的升级信息,也可能会增加一些新功能。因此,SP2包括SP1,以及之后发布的所有升级补丁信息。升级到SP2,推荐的方法是直接从原版升到SP2,这样能减少很多垃圾文件。同样地,如果你自己想刻一张集成SP2的安装光盘,推荐的集成办法是原版+SP2。 五:安装后有那些已知的问题 1:安装后网络连接的本地连接显示受限制或无连接!网上邻居无法正常访问,但是上网一切正常! 解决方法:本地连接-TCP/IP-属性-常规选项-给网卡指定一个IP地址。 2:安装后部分网站验证码无法正常显示:解决方法:把下面的文字复制到记事本另存为REG注册表文件双击导入注册表。 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Security] "BlockXBM"=dword:00000000 3:安装后SP2后XP SP2的安全中心不能识别杀毒软件,或造成某些杀软不能正常运行:解决方法:升级杀软程序,现在有“Norton” “Kaspersky” 瑞星 江明等已通过MS的认证,均可在XP SP2下正常安装使用。 4:安装SP2后修改XP主题的美化软件style xp不可用:解决方法:卸载style xp升级到style xp2.13的最新版本。 5:安装SP2后可能会有某些朋友在使用BT下载时,会出现不能打开网页的问题{我没有遇到这样的问题},这是因为SP2限制了TCP最大连接数,网上有这方面的讨论,可以修改WINDOWS XP数据,但我个人认为没有修改的必要。 6:安装SP2后IE中默认的Internet区域安全等级是中级,而且不能降低安全级别,解决方法:把下面的文字复制到记事本另存为REG注册表文件双击导入注册表。{个人认为不改为好} Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3] "MinLevel"=dword:00010000 7: 安装后的稳定性 我用着觉得没什么不稳定的,没有出现什么系统运行不稳定或别的乱七八糟的问题{已知问题除外},好多网友在安装SP2后,往往是自己在系统设置上遇到一些问题,没有搞清楚就迁怒于SP2。 8:或许还有其它在使用当中会产生的别的问题,鉴于我在使用SP2过程中的局限性,我没有发现, 或许别的朋友碰到过这样那样的问题,但有些问题不能算在SP2头上。呵呵。 六:关于如何从2135、2149升级到2180的问题{引自"名云拓海"的文章} 只要将注册表中的以下两个键值删除即可: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion下的:CSDVersion和CurrentBuildNumber 注意不要重启,升级过程中如果提示atapi.sys文件正在使用,只要把它删除或移到别的路径(任意)即可。如果提示该文件删不了,那么就重启后再重复上面的所有步骤就好了,祝你成功,为了保险些,建议备份注册表。 =========================================================== 附件一: WinXP SP2组策略配置说明文档 957K的Word文档,E文文档这里这里下载 附件二: 看看你的xp KEY是否有效, 有两种方法:1。拨打MS的800电话了,接线小姐很温柔的,直接报上你现在使用的KEY,她会告诉你的,呵呵 2,进入MS的官方页面,按照上面的提示操作完成后,如出现Congratulations, it appears that your Windows product key is valid就说明你现在用的KEY是有效的。注意:合法的KEY只能用合法手段得来。不是说你通过MS检验的KEY就合法 附件三: 微软发SP2防火墙设置教程 E文文档 微软已提供了该防火墙设置的英文文档这里下载 附件四: 关于SP2的优化 有兴趣的下载官方的GPO参考:E文文档 这是XP SP2 RC2, 但GPO和RTM基本相同。下载点1 下载点2 PS:WinXP SP2 2180-1简体中文正式版已在8月20日放出,微软中国发布本地化Windows XP SP2,数字签名日期:2004年8月17日 12:51:52,文件版本标记仍为6.00.2900.2180 (xpsp_sp2_rtm.040803-2158)未变。安装包大小微有不同,说明一下,此签名非安装包的数字签名,是 /update/sp2.cat的数字签名。 截至到8月22日,微软已经开始了SP2的下载 分类: 转载 | 阅读全文 | 评论(0) | 引用(0) 网页制作工具【转载】 2006-02-21, by yangjinyi 如今,上网冲浪已经成为一种时尚,构成了现代都市里一道独特而又亮丽的风景线。当你在网上漫游之际,一定会对那些漂亮的网页羡慕不已吧?其实,你也可以制作自己的个人网页,现在网页制作软件不少,但在众多的网页制作软件中,你会选择哪一种呢?现在我们就来介绍几种各有特色的网页制作软件。 入门级软件 如果你是一个网页制作初学者,那么让下面几种软件带你走进那绚丽多彩的网页制作世界吧! Microsoft FrontPage 2000 制作功能强大的网页 如果你曾对Word很熟悉,那么相信你用FrontPage 98进行网页设计一定会非常顺手。使用FrontPage2000制作网页,你能真正体会到“功能强大,简单易用”的含义。页面制作由FrontPage2000中的Editor完成,其工作窗口由3个标签页组成,分别是“所见即所得”的编辑页,HTML代码编辑页和预览页。FrontPage2000带有图形和GIF动画编辑器,支持CGI和CSS。向导和模板都能使初学者在编辑网页时感到更加方便。 FrontPage2000最强大之处是其站点管理功能。在更新服务器上的站点时,不需要创建更改文件的目录。FrontPage2000会为你跟踪文件并拷贝那些新版本文件。FrontPage2000是现有网页制作软件中惟一既能在本地计算机上工作,又能通过Internet直接对远程服务器上的文件进行工作的软件。 下载网址: www.microsoft.com Netscape编辑器 制作简单的网页 Netscape Communicator和Netscape Navigator Gold3.0版本都带有网页编辑器。如果你喜欢用Netscape 浏览器 上网,使用Netscape编辑器真是简单方便!当你用Netscape浏览器显示网页时,单击编辑按钮,Netscape就会把网页存储在 硬盘 中,然后就可以开始编辑了。你也可以像使用Word那样编辑文字、字体、颜色,改变主页作者、标题、背景颜色或图像,定义描点,插入链接,定义文档编码,插入图像,创建表格等,是不是与FrontPage 2000还有些像?但是,Netscape编辑器对复杂的网页设计就显得功能有限了,它连表单创建、多框架创建都不支持。 Netscape编辑器是网页制作初学者很好的入门工具。如果你的网页主要是由文本和图片组成的,Netscape编辑器将是一个轻松的选择。如果你对HTML语言有所了解的话,能够使用Notepad或Ultra Edit等文本编辑器来编写少量的HTML语句,也可以弥补Netscape编辑器的一些不足。 Adobe Pagemill 3.0 制作多框架、表单和Image Map图像的网页 Pagemill功能不算强大,但使用起来很方便,适合初学者制作较为美观、而不是非常复杂的主页。如果你的主页需要很多框架、表单和Image Map图像,那么Adobe Pagemill 3.0的确是你的首选。 Pagemill另一大特色是有一个剪贴板,可以将任意多的文本、图形、表格拖放到里面,需要时再打开,很方便。 下载网址: www.adobe.com Claris Home Page 3.0 快速创建动态的网页 如果使用Claris Home Page软件,你可以在几分钟之内创建一个动态网页。这是因为它有一个很好的创建和编辑Frame(框架)的工具,你不必花费太多的力气就可以增加新的Frame(框架)。而且Claris Home Page 3.0集成了FileMaker数据库,增强的站点管理特性还允许你检测页面的合法连接。不过界面设计过于粗糙,对Image Map图像的处理也不完全。 下载网址: http://www.claris.com/software/highlights/clarispagetrial.html 提高级软件 如果你对网页设计已经有了一定的基础,对HTML语言又有一定的了解,那么你可以选择下面的几种软件来设计你的网页,他们一定会为你的网页添色不少。 DreamWeaver 自制动态HTML动画的网页 DreamWeaver是一个很酷的网页设计软件,它包括可视化编辑、HTML代码编辑的软件包,并支持ActiveX、JavaScript、Java、 Flash 、ShockWave等特性,而且它还能通过拖拽从头到尾制作动态的HTML动画,支持动态HTML(Dynamic HTML)的设计,使得页面没有plug-in也能够在Netscape和 IE 4.0浏览器中正确地显示页面的动画。同时它还提供了自动更新页面信息的功能。 DreamWeaver还采用了Roundtrip HTML技术。这项技术使得网页在DreamWeaver和HTML代码编辑器之间进行自由转换,HTML句法及结构不变。这样,专业设计者可以在不改变原有编辑习惯的同时,充分享受到可视化编辑带来的益处。DreamWeaver最具挑战性和生命力的是它的开放式设计,这项设计使任何人都可以轻易扩展它的功能。 下载网址: www.macromedia.com Fireworks 第一款彻底为Web制作者们设计的软件 Fireworks的来头实在不小,它的出现使Web作图发生了革命性的变化。Fireworks是专为网络图像设计而开发,内建丰富的支持网络出版功能,比如Fireworks能够自动切图、生成鼠标动态感应的 java script。而且Fireworks具有十分强大的动画功能和一个几乎完美的网络图像生成器(Export功能)。它增强了与dreamweaver的联系,可以直接生成dreamweaver的Libaray甚至能够导出为配合CSS式样的网页及图片! 下载网址: www.macromedia.com Flash 让你的网页动起来 Flash是用在 互联网 上动态的、可互动的shockwave。它的优点是体积小,可边下载边播放,这样就避免了用户长时间的等待。#{6 FLASH 6}#可以用其生成动画,还可在网页中加入声音。这样你就能生成多媒体的图形和界面,而使文件的体积却很小。FLASH虽然不可以像一门语言一样进行编程,但用其内置的语句并结合JavaScripe,您也可做出互动性很强的主页来。有人曾经说过:下个世纪的网络设计人不会用FLASH,必将被淘汰出局!我相信这句话没错! 下载网址: www.macromedia.com HotDog Professional 5 制作要加入多种复杂技术的网页 HotDog是较早基于代码的网页设计工具,其最具特色的是提供了许多向导工具,能帮助设计者制作页面中的复杂部分。HotDog的高级HTML支持插入marquee,并能在预览模式中以正常速度观看。这点非常难得,因为即使首创这种标签的Microsoft在FrontPage 98中也未提供这样的功能。HotDog对plug-in的支持也远远超过其他产品,它提供的对话框允许你以手动方式为不同格式的文件选择不同的选项。但对中文的处理不很方便。 HotDog是个功能强大的软件,对于那些希望在网页中加入CSS、Java、RealVideo等复杂技术的高级设计者,是个很好的选择。 下载网址: www.sausage.com HomeSite 4.5 制作可完全控制页面进程的网页 Allaire的HomeSite 3.0是一个小巧而全能的HTML代码编辑器,有丰富的帮助功能,支持CGI和CSS等等,并且可以直接编辑perl程序。HomeSite工作界面繁简由人,根据习惯,可以将其设置成像Notepad那样简单的编辑窗口,也可以在复杂的界面下工作。 HomeSite更适合那些比较复杂和精彩页面的设计。如果你希望能完全控制你制作的页面的进程,HomeSite 3.0是你最佳选择。不过对于生手过于复杂。 下载网址: www.allaire.com 或者 www.homesite-now.com HotMetal Pro 4.0 制作具有强大数据嵌入能力的网页 HotMetal既提供“所见即所得”图形制作方式,又提供代码编辑方式,是个令各层次设计者都不至于失望的软件。但是初学者需要熟知HTML,才能得心应手地使用这个软件。HotMetal具有强大的数据嵌入能力,利用它的数据插入向导,可以把外部的Access、Word、Excel以及其他ODBC数据提出来,放入页面中。而且HotMetal能够把它们自动转换为HTML格式,是不是很棒?此外它还能转换很多老格式的文档(如WordStar等),并能在转换过程中把这些文档里的图片自动转换为GIF格式。 HotMetal为用户提供了“太多”的工具,而且它还可以用网状图或树状图表现整个站点文档的链接状况。 下载网址: www.softquad.com 希望你能从中找到一款适合你制作网页的软件。快点动手试试吧! 分类: 转载 | 阅读全文 | 评论(1) | 引用(0) 如何让IE浏览器窗口始终保持最大化[转载】 2006-02-21, by yangjinyi 在操作系统装好以后,打开 IE 浏览器窗口总是默认显示为常规窗口,不拉动滚动条看不见整个网页,只好按 “ 最大化 ” 按钮。再点击里面的链接,出来的还是常规窗口,在看全网页还需您还得单击按 “ 最大化 ” 按钮。于是拉动边框,将常规窗口拉到整个屏幕,哪知道关闭该窗口后,重新打开 IE 浏览器窗口还是默认的常规窗口。真烦人! 那么,有什么办法能够让 IE 浏览器窗口一打开就是最大化状态,省得多次点击 “ 最 大化 ” 按钮的麻烦呢? 办法当然是有的,看我的:先关闭所有的 IE 浏览器窗口鼠标右键点击快速启动栏的 IE 浏览器图标,在出现的快捷菜单中点击 “ 属性 ” ,系统随即弹出 “ 启动 Internet Explorer 浏览器属性 ” 对话页面,点击 “ 快捷方式 ” 标签,在出现的页面的 “ 运行方式 (R)” 中单击右侧的下拉条,选择 “ 最大化 ” 。之后按 “ 确定 ” 退出。打开 IE 浏览器窗口,点击里面的链接,接着关闭先前打开的 IE 浏览器窗口 , 只留下这个链接页面,拉动边框将其窗口拉到整个屏幕,然后关闭该页面。从此,您打开 IE 浏览器窗口直接就是最大化的页面了。如果这方法不灵,那可得改修改您的计算机的注册表了,方法:打开 “ 注册表编辑器 ” ,找到 [HKEY_ CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Desktop \ Old WorkAreas] ,然后选中窗口右侧的 “OldWorkAreaRects” ,将其删除;在 “ 注册表编辑器 ” 中找到 [HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Main] ,选择窗口右侧的 “Window_Placement” ,将其删除;退出 “ 注册表编辑器 ” ,重启电脑,然后打开 IE ,将其窗口最大化,并单击 “ 向下还原 ” 按钮将窗口还原,接着再次单击 “ 最大化 ” 按钮,最后关闭 IE 窗口。以后重新打开 IE 时,窗口就正常了! 分类: 转载 | 阅读全文 | 评论(1) | 引用(0) IT职业指南:专家认为05年网络职业将受重视[转贴] 2006-02-18, by yangjinyi IT职业指南:专家认为05年网络职业将受重视 如果在整个行业不景气的情况下仍想提高自己的网络知识和互联网技术,那么2005年将是你向最高级别迈进的时候了。 专家指出,网络知识及互联网技术将是顶级人才急需的,尤其是企业对网络协议语音通讯(VolP)技能的兴趣逐渐浓厚起来。 位于费城的教育中心The Training Camp的副主任Dave Minutella说:“VolP是当前最热门的技术和发展动力。越来越多的公司正致力于使用VolP,特别是将它用于降低(网络)成本方面。” 他们需要拥有IP技术等应用经验的IT专家。Minutella指出:“这种需求也创造出更多就业机会。” New Canaan的Foote Parteners公司最近的一份调查报告也显示出当前这种趋势。去年,支付给具网络应用技术员工的薪水增加了6%,原因多是企业对VolP越来越感兴趣。此外,支付给标准信息或组件职位的员工薪水比过去一年上涨了4.5%。 这种发展势头令人惊奇,在对45,000名IT员工和欧美1,860名雇主调查,并根据Foote Partners2005热门技术及认证薪水表中的数据,Foote Partners LLC发现,经过持续几年的下降,2004年掌握程序语言和应用程序开发技能的人员薪水增加了4%。 “在行业衰退期后,一些雇主开始放弃优秀员工,把注意力集中在增加技术雇员的工资上,”Foote主席David Foote这样说到。 网络认证正逐步升温,尤其是含金量较高的Cisco系统硬件方面的认证。Minutella认为,越来越多的公司正努力寻找经验丰富,能很好处理复杂的服务质量问题的网络管理员。 他还说到:“正是这种原因,如果没有专业技能(认证),至少要在服务质量方面具备一定知识。” 费城的一位培训师兼IT顾问John Smiley教授说到,既然公司要选择更具才能的人,那么认证在发展职业上可能更加重要。 “就我看来,在招聘时如果看到对方的简历上注有微软,太阳或思科等认证,那么他将成为首选。”John Smiley教授补充到。 获得思科认证长期以来被认为是发展自己IT职业最确保无失的方法。但是,在面对不同的经济环境时,有些企业被迫压缩其在IT培训上的费用,Foote如是说到。直到最近,“企业们重新开始看重思科认证并愿为其支付费用。倒不是从前没有,而是现在开始意识到这些技能对自身发展的重要性。” 部分经认可的培训公司增加了30%多的思科认证网络互连专家证书,而它是“你可具有的最好证书,”Foote说到。在2004年,思科认证企业管理员证书也增加了10%。 虽然取得一些成绩,对IT职业市场的担忧仍然存在。新泽西的一位独立IT顾问Ron Milan说,上世纪90年代后期,专攻某一平台或一项技术可以获利,然而现在不同了。 “现在情况相反,公司想要全才。仅仅懂得微软是不够的。他们希望你了解更多,如Novell,Cisco,SQL服务器,Microsoft Access,Oracle等。而这在你的职业道路中是非常难达到的,”专攻Windows技术的LAN管理员Milan这样说。 和其他IT专家一样,Milan也面临这种期望的转变。对他这样一名拥有微软技术的网络专家来说,去年他的工作被外包。尽管如此,Milan并不担忧。他相信凭借自己多样的技术背景可以胜任许多顾问工作。 “那么我想看看现在需要而自己又不具备的4-5种技能,”他说。“即使猎头公司对我说,这些是你必须具备的技能。当然,如果还能知道其他4-5种技能,那将使你获得丰厚奖励,”Milan说到。 的确,要成为一名专家往往需要你的知识量能扩展到IT其他领域,Foote说。程序员需要了解更多网络细微差别,尤其是不同网络间配置协力程序的知识。同样,数据库管理员需要和内存管理员及构建中的程序开发者合作。 对高度专一化的要求影响着雇用情况及技术薪水,并使失业的IT人才的情况更复杂,Foote说。“如果你没有工作或者失业一段时间了,想要回来重操旧业是非常困难的。因为现在所需的技术更多,可能还包括商业技能。” 除了对网络专业的青睐,对应用程序开发的关注程度也正在上升。经过几年令人失望的外包经历,Foote指出,更多的企业开始致力于软件开发,尤其是与Web服务和其他协力程序相关的软件。对编码员来说这无疑是2005年里极好的消息。 Foote说,“在经历一定损失后,应用程序开发和极限编程方面价值确有提高。” 通过运用这些协力技术,程序员能更好地创建程序,和客户及终端用户的关系也更紧密。现在的目标是彻底减少开发新软件的周期时间。 存储领域的网络工作如“冬眠的技术”,IT专家得时刻关注,Minutello说。到2006年,他预测会有更多的IT人开始掌握存储技术,正如几年前对信息安全的关注一样。 Milan认为,对IT人士来说,不断补充新知识非常重要,尤其当他们没有工作时。除了能扩充你的技术库,也为你在回答今后面试中意料外的问题准备筹码。 最后,Milan指出:“时刻保持开阔思维,让雇主了解你是乐意掌握新技术的,哪怕在那方面你并不是专家。” 分类: 转载 | 阅读全文 | 评论(0) | 引用(0) IT高手的修炼秘笈[转帖] 2006-02-18, by yangjinyi 要成为武林高手,需要长时间的勤学苦练。要成为软件开发高手,又需要多长时间呢?《Modern C++ Design》的作者Andrei Alexandrescu认为:一个人有可能在20几岁就成为编程高手,但要成为设计高手却需要熬到35岁左右。以23岁大学毕业计算,要经过漫长的12年时间。 以我个人为例(我尚不敢自认是设计高手),22岁大学毕业后,在某研究所用8086汇编语言写一些小规模的程序,颇觉得心应手。凡是能用流程图表示的问题,都似乎不在话下。工作中,与同事共同切磋结构化程序设计,并能有意识地用于实践中。 三年后,承接一个纵向课题:在Windows上开发一个交互式排版系统。用Windows SDK开发。兴奋之余,自然想起用结构化方法进行设计:把整个系统当成一个黑盒子(black box),输出当然是排版。结果,不管是什么格式,输入是???。我卡住了。难道用户操作是输入吗?但用户操作有那么多,怎么表示呢?系统的数据流图该怎么画?数据字典该怎么写?和同事讨论n次后,仍不得其解。懊丧之余,先模仿Quark Express搭个界面吧。然后研究排版算法。程序结构经过至少三次大规模修改,终于能排出一些版式,并在两年后通过了鉴定(鉴定后当然是将其束之高阁)。我从中体会到结构化开发方法不适合开发交互式系统。在开发初期,你不太可能正确地画出数据流图,而结构化设计方法完全依赖数据流图。数据流图发生改变,整个程序结构就要随之改变。 后来,加入一家合资公司,担任开发组长,有五、六个组员。这时我已读过了邵维忠等译的《面向对象的分析》、杨芙清等编译的《面向对象的设计》和《Code Complete》中译本。对面向对象的程序设计虽有所了解但仍是一知半解。 首先,我们用MSVC 1.5开发一个图形编辑软件。我用纸画了20几张对象图,与同事讨论通过后,开始编程。有人负责数据模型,有人负责用户界面,有人负责图形显示。几个月后,老板已可向潜在用户进行展示,反应良好。老板和开发人员都被一种兴奋的心情笼罩着。我们不断地加新功能,老板不时地到展览会上做演示。功能加齐了,开始让潜在用户试用。老板和我们都松了一口气:就剩下改错了,咱们是兵来将挡、水来土屯,没什么可怕的。错误报告来了。我们信心满满地开始查错改错。有些错误很快地被改掉了。但最后我们发现错误源源不断。改了一个错误有可能引起别的错误。软件永远达不到能用的地步。最后,时机被错过。该软件不得不被砍掉。懊丧之余,我们做了反省。大家都认为应尽早改错。同时模模糊糊地觉得数据模型和用户界面的程序一定要严格分开,否则程序极难修改。 回想十几年蹒跚走过的路,好像也略有所悟。试总结出以供参考: 1)要熟练掌握至少一种编程语言。我觉得最好是C++。掌握了C++,学习其它语言如Java或C#等并非难事,因为各种面向对象的程序语言尽管在语法上可能有很大区别,在语义上却大同小异。 2)不要寄希望于一次就把软件设计好。在开发初期,要尽量用最简单的设计实现最基本的功能,以使你的软件尽早地能实际运行,不要过于拘泥于细节。这样你才能尽早得到反馈,才能更直观更全面地理解你所面对的问题。你所关注的重点应依次是Make it work, make it right, make it fast。 3)软件结构要分块分层。低层模块不要依赖于上层模块。一个类、一个接口或一个函数都应只做一件事。没有本质联系的类或接口就不应有耦合关系。举例而言,要用MVC(Model View Controller)Design Pattern切断用户界面与数据模型之间的直接关联。 4)软件设计的主要工作是给类分配责任(responsibilities)。尽量不要把类设计成控制者(controller),而要设计成协调者(coordinator)。控制者凡事自己做,协调者让别人做。控制者的逻辑往往很复杂,难于维护;协调者逻辑简单,易于维护。要站在类的使用者角度设计类的外部行为。要讲究一点软件美学,即简单、清晰、一致、平衡等。 5)了解并运用UML、Design Patterns、Unit Test、Design by Contract等。 6)使用代码管理系统和质量跟踪系统。 7)了解各种软件开发过程控制方法,并找出适合你的方法。 8)阅读经典书籍,研读经典代码,订阅杂志,与同行切磋。 在这行越久越觉得软件开发难。软件开发历史还很短,才50年,还不是一门系统化的学科。有些人甚至认为软件设计与编程是一门艺术。但软件艺术大师还太少,而且我们很难直接欣赏到他们的杰作,除非所有的设计文档和代码都公开。软件更容易藏污纳垢。一个用户界面很漂亮的软件,内部设计和代码却很可能臭不可闻。一个地板倾斜、墙壁裂缝、屋顶漏水的房子没有人会买。一个设计很烂的软件却可能卖得不错。但这样的软件能撑多久呢? 软件设计与编程已经很难,而这仅仅是软件开发的一个方面,软件开发过程控制也很难,也许更难。成为软件开发高手要走一条漫长的路,何日才能仗剑走天涯? 后来,我们又开发一个类似Adobe Acrobat Exchange的PDF文件浏览器兼编辑器(当时Acrobat Exchange还不能显示中、日、韩文)。这时,老板带来一些过期的《C/C++ Users’ Journal》《Dr. Dobbs’ Journal》杂志。从书评中,我被几本书吸引住了。一本是James Rumbough等著的《Object-Oriented Modeling andDesign》,一本是现在大名鼎鼎的《Design Patterns》,还有就是Scott Meyers著的《Effective C++》和《More Effective C++》。我劝说老板买了这几本书,并撺掇他买了一个CASE(计算机辅助软件工程)工具:Select OMT。 仔细研读这几本书后,颇有顿开茅塞之感。最大的收获在于了解到降低类之间耦合度的重要性。一个类的实现细节发生变化,不应该影响使用该类的其它类的内部实现。更妙的是有不少Design Pattern能马上用到我们的软件中。 我用Select OMT软件画了一些高层的类图、状态图和数据流图等,并让同事们审查。同事们都觉得通过这些图对软件的总体设计有了更好的把握。在写程序的过程中,我们不断调整程序结构以尽可能减小类之间的耦合度。老板很早就安排了专职测试人员。发现问题,马上修改。一年后,我们的软件终于通过了用户的试用,卖出去了。当时,我可说是信心满满。 此后,我做了一年半多媒体编程。发现还是对系统开发更感兴趣。于是加入了Quark软件公司,开发一个基于CORBA的文件管理系统。这是我第一次参与异地开发,也是第一次大规模使用STL。我惊叹于STL设计之妙,同时也对自己的信心打了折扣。此后,我阅读了Martin Fowler著的《UML Distilled》、Bertrand Meyer著的《Object Oriented Software Construction》等书籍。并开始使用Rational Rose。Quark公司的技术文档管理、设计复查、代码复查、质量管理以及德国人(Quark公司德国分公司)严谨的工作态度都给我留下了深刻印象。 项目组下分开发组和测试组。开发组中有一个4到5人组成的设计小组负责软件总体设计,其中一个人负责技术文档,确保文档反映最新的设计。定期进行设计复查。复查时,项目组成员全部参加,并可提出问题或建议。得出结论后,马上付诸实施。 开发组下又设若干小组。小组内定期进行代码复查。由组长选出每个组员的源文件,交其他组员复查,尽量挑出所有的毛病。如果代码太次,要打回从新写过。代码复查既能保证软件质量,又是大家学习的一个机会。 一年半后,我离开Quark,加盟Sybase,参与Power Builder的维护和新版本的开发。这是我第一次参与软件维护,令我认识到软件维护的重要性,认识到编写可维护的代码是软件开发的一个重要课题。 Sybase系统化的质量跟踪系统和用户支援系统让我获益匪浅。在此期间,我阅读了《Large-scale Software Development in C++》、Martin Fowler著的《Refactoring》、Andrei Alexandrescu著的《Modern C++ Design》,Herb Sutter著的《Exceptional C++》和《More exceptional C++》,以及Kent Beck著的《Extreme Programming Explained》等书籍。对软件开发与维护有了进一步了解,但同时也更认识到软件开发之难。 最后,还要唐僧一下:要成为一个武林高手,虽然需要长期的锻练,但其更重要的是其的领悟能力。同样要成为编程高手,最重要的是领悟能力的训练。有志不在年高,无志空活百岁。要有明确的目标,有针对的对象才能有的放矢。计算机知识更新换代很快,这要求我们要放出眼光,知道哪些该学,哪些学了也是浪费时间。 分类: 转载 | 阅读全文 | 评论(0) | 引用(0) 关于IT认证的一点思考[转贴] 2006-02-18, by yangjinyi 从开始接触,了解认证,到积极准备软考,再到现在的成绩出炉,沉埃落定,我对IT认证有了一定的理解和认识。 首先,选择考证无可厚非。毕竟,即使你才高八斗,没有凭证,在速度快,时间短的招聘或是主动应聘过程中,你很难让企业让别人信服你的学识,就算你可以表现出你的才华,但比起有证书在手还是“软”了许多。所以,从实际的角度讲,考证无可厚非。但关键在于你考证的目的,你的动机是什么?是真的想通过证书来证明自己的真才实学,还是单纯的为了考证而考证?前些天,某位同学见我学习软考教程,他对软考热略知一二,问我:“考这个认证有什么实在好处?”我说:“没什么实在的好处,就是学习一下基础知识。”听完,我真的大吃一惊,他怎么不问问我这个考试所考的内容是什么?这个东西到底对自身长远发展有什么真正的意义?而上来就问有什么事在的好处?!其实,这代表了很大一部分人的心态,考证对这些人来说真的就是为了一张简单的证书,一个文凭。没有实在的利益可图,即使内容再好也不去考,即使对自身的发展再有长远的好处,如果他看不到近期的利益效果,他也不会去考的。其实,不是说实际点不好,相反,现实社会中实用的才是最好的,我们当然要学习最好的,但问题就在与你的动机,如果是利益所趋,那你的动机就真的有问题。 在我看来,从事IT行业,最重要的是热爱,而不是这个行业可图的利益,一切以利益为先的思想和做法都不会有长远的发展。现在,很多人把证书当成一块敲门砖,而不是一种真才实学的象征。人们脑中充斥的都是现实利益。更可笑的是,在高校教育界的某个角落也有这样的思想存在,老师信誓旦旦的告诉同学们:“XX证一个月就能拿下!”荒唐!一个月!一种技术一个月就能拿证?!不禁要问一下:一个月能学到什么?学到多少?就算你这一个月拼了命学,拿下证书,也只是你短期记忆的结果,你真正会学到什么呢?!这不是自欺欺人吗?短时间内根本不可能使自己的一种计算机技术达到获得证书的水平,如果可以的话,只能说那证书属于小儿科。真正的专家,高手都是经过长期的研究与学习才达到的高水平,而某些人凭借的不是长期的知识积累,只是一个月突击就拿下什么什么证书,它的含金量真的低的可以!格有意思的是,两天培训,一天复习,一天考试,拿下证书。你信吗?不信吧?!但这就是事实!而且还和很知名的大企业挂钩。 IT是一个需要千千万万有志人士为之奋斗的事业,而不是一个像某些人眼中的摇钱树。从事IT行业真的靠的是热情,而不是为了可图的利益。对于IT认证也是一样,我们真的应该认清自己的目的,自己的出发点,在知识水平真的达到要求的时候,水到渠成的把证书考下来,正才是真才实学的表现,也是大将之风度,而只是利益所趋,生搬硬套的考下证书来,那又有什么真正的意义呢?!作为想在IT界大展宏图的我们真的需要冷静,需要踏实,需要耐心,需要有大志! 分类: 转载 | 阅读全文 | 评论(0) | 引用(0) 由C#风潮想起的-给初学编程者的忠告[转贴] 2006-02-18, by yangjinyi 我始终认为,对一个初学者来说,IT界的技术风潮是不可以追赶的,而且也没有能力去追赶。我时常看见自己的DDMM们把课本扔了,去卖些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心。而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里面可以不用指针等等则让我觉得好笑。C#就象当年的ASP一样,“忽如一夜春风来,千树万树梨花开”,结果许多学校的信息学院成了“Web 学院”。96,97级的不少大学生都去做Web 了。当然我没有任何歧视某一行业的意识。我只是觉得如果他们把追赶这些时髦技术的时间多花一点在基础的课程上应该是可以走得更远的。 【几个误区】 初学者对C#风潮的追赶其实也只是学习过程中经常遇到的几个误区之一。我将用一些实际的例子来说明这些现象,你可以按部就班的看看自己是不是属于其中的一种或者几种: 〖认为计算机技术等于编程技术: 〗 有些人即使没有这个想法,在潜意识中也有这样的冲动。让我奇怪的是,许多信息学院的学生也有这样的念头。认为计算机专业就是编程专业,与编程无关的,或者不太相关的课程他统统都不管,极端的学生只要书上没带“编程”两个字他就不看。 其实编程只是计算机技术应用过程中一种复杂性最低的劳动,这就是为什么IT业最底层的人是程序员(CODER)。计算机技术包括了多媒体,计算机网络,人工智能,模式识别,管理信息系统等等这些方面。编程工作只是在这些具体技术在理论研究或者工程实践的过程中表达算法的过程。编程的人不一定对计算机技术的了解就一定很高。而一个有趣的现象是,不少大师级的计算机技术研究者是不懂编程的。网上的炒作和现实中良好的工作待遇把编程这种劳动神秘化了。其实每一个程序员心里都明白,自己这些东西,学的时候并不比其它专业难,所以自然也不会高档到哪里去。 〖咬文嚼字的孔已己作风: 〗 我见过一本女生的《计算机网络原理》教材,这个女生象小学生一样在书上划满了横杠杠,笔记做得满满的,打印出来一定比教材还厚。我不明白的是,象计算机网络原理这样的课程有必要做笔记?我们的应试教育的确害了不少学生,在上《原理》这一类课程的时候许多学生象学《马列原理》一样逐字背诵记忆。这乃是我见过的最愚蠢的行为。所谓《原理》,即是需要掌握它为什么这样做,学习why,而不是how(怎样做)。极端认真的学生背下以太网的网线最大长度,数据帧的长度,每个字段的意义,IP报头的格式等等,但是忘了路由的原则,忘了TCP/IP协议设计的宗旨。总之许多人花了大量的时间把书背得滚瓜烂熟却等于什么也没学。 在学习编程的时候这些学生也是这样,他们确切的记得C++语法的各个细节。看完了C++教程后看《Thinking in C++》(确实是好书),《Inside C++》,《C++ reference》,this C++, that C++……,然后是网上各种各样的关于C++语法的奇闻逸事,然后发现自己又忘了C++的一些语法,最后回头继续恶补…。有个师弟就跟我说:“C++ 太难了,学了这里忘了那里,学了继承忘了模板。”我的回答道:“你不去学就容易了”。我并没有教坏他,只是告诉他,死抠C++的语法就和孔已己炫耀茴香豆的茴字有几种写法一样毫无意义。你根本不需要对的C++语法太关心,动手编程就是了,有不记得的地方一查MSDN就立马搞定。我有个结论就是,实际的开发过程中对程序语法的了解是最微不足道的知识。这是为什么我在为同学用Basic(我以前从没有学过它)写一个小程序的时候,只花了半个小时看了看语法,然后再用半个小时完成了程序,而一个小时后我又完全忘记了Basic 的所有关键字。 〖不顾基础,盲目追赶时髦技术:〗 终于点到题目上来了。大多数的人都希望自己的东西能够马上跑起来,变成钱。这种想法对一个已经进入职业领域的程序员或者项目经理来说是合理的,而且IT技术进步是如此的快,不跟进就是失业。但是对于初学者来说(尤其是时间充裕的大中专在校生),这种想法是另人费解的。一个并未进入到行业竞争中来的初学者最大的资本便是他有足够的时间沉下心来学习基础性的东西,学习why 而不是how。时髦的技术往往容易掌握,而且越来越容易掌握,这是商业利益的驱使,为了最大化的降低软件开发的成本。但在IT领域内的现实就是这样,越容易掌握的东西,学习的人越多,而且淘汰得越快。每一次新的技术出来,都有许多初学者跟进,这些初学者由于缺乏必要的基础而使得自己在跟进的过程中花费大量的时间,而等他学会了,这种技术也快淘汰了。基础的课程,比方数据结构,操作系统原理等等虽然不能让你立马就实现一个linux(这是许多人嘲笑理论课程无用的原因),但它们能够显著的减少你在学习新技术时学习曲线的坡度。而且对于许多关键的技术(比方Win32 SDK 程序的设计,DDK的编程)来说甚至是不可或缺的。 一个活生生的例子是我和我的一个同学,在大一时我还找不到开机按纽,他已经会写些简单的汇编程序了。我把大二的所有时间花在了汇编,计算机体系结构,数据结构,操作系统原理等等这些课程的学习上,而他则开始学习HTML和VB,并追赶ASP的潮流。大三的时候我开始学习Windows 操作系统原理,学习SDK编程,时间是漫长的,这时我才能够用VC开发出象模象样的应用程序。我曾一度因为同学的程序已经能够运行而自己还在学习如何创建对话框而懊恼不已,但临到毕业才发现自己的选择是何等的正确。和我谈判的公司开出的薪水是他的两倍还多。下面有一个不很恰当的比方:假设学习VB编程需要4个月,学习基础课程和VC的程序设计需要1年。那么如果你先学VB,再来学习后者,时间不会减少,还是1年,而反过来,如果先学习后者,再来学VB,也许你只需要1个星期就能学得非常熟练。 如果你是学生,或者如果你有充足的时间。我建议你仔细的掌握下面的知识。我的建议是针对那些希望在IT技术上有所成就的初学者。同时我还列出了一些书目,这些书应该都还可以在书店买到。说实在的,我在读其他人的文章时最大的心愿就是希望作者列出一个书单。 [大学英语]-不要觉得好笑。我极力推荐这门课程是因为没有专业文档的阅读能力是不可想象的。中文的翻译往往在猴年马月才会出来,而现在的许多出版社干脆就直接把E文印刷上去。学习的方法是强迫自己看原版的教材,开始会看不懂,用多了自然熟练。吃得苦下得狠心绝对是任何行业都需要的品质。 [计算机体系结构和汇编语言]-关于体系结构的书遍地都是,而且也大同小异,倒是汇编有一本非常好的书。《80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)。你需要着重学习386后保护模式的程序设计。否则你在学习现代操作系统底层的一些东西的时候会觉得是在看天书。 [计算机操作系统原理]-我们的开发总是在特定的操作系统上进行,如果不是,只有一种可能:你在自己实现一个操作系统。无论如何,操作系统原理是必读的。这就象我们为一个芯片制作外围设备时,芯片基本的工作时序是必需了解的。这一类书也很多,我没有发现哪一本书非常出众。只是觉得在看完了这些书后如果有空就应该看看《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。关于学习它的必要性,ZDNET上的另一篇文章已经有过论述。 [数据结构和算法]-这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时)。很多人喜欢买C++版的,但我觉得没有必要。C++的语法让算法实现过程变得复杂多了,而且许多老师喜欢用模块这一东西让算法变得更复杂。倒是在学完了C版的书以后再来浏览一下C++的版的书是最好的。 [软件工程]-这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》(黄色,清华)。不要花太多的时间去记条条框框,看不懂就跳过去。在每次自己完成了一个软件设计任务(不管是练习还是工作)以后再来回顾回顾,每次都会有收获。 [Windows 程序设计]-《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本《Inside Windows 2000》也最好放到这本书的后面读。在这本书中,没有C++,没有GUI,没有控件。有的就是如何用原始的C语言来完成Windows 程序设计。在学完了它以后,你才会发现VC其实是很容易学的。千万不要在没有看完这本书以前提前学习VC,你最好碰都不要碰。我知道的许多名校甚至都已经用它作为教材进行授课。可见其重要。 上面的几门课程我认为是必学的重要课程(如果你想做Windows 程序员)。 对于其它的课程有这样简单的选择方法:如果你是计算机系的,请学好你所有的专业基础课。如果不是,请参照计算机系的课程表。如果你发现自己看一本书时无法看下去了,请翻到书的最后,看看它的参考文献,找到它们并学习它们,再回头看这本书。如果一本书的书名中带有“原理”两个字,你一定不要去记忆它其中的细节,你应该以一天至少50页的速度掌握其要领。尽可能多的在计算机上实践一种理论或者算法。 你还可以在CSDN上阅读到许多书评。这些书评能够帮助你决定读什么样的书。 〖日三省乎己〗 每天读的书太多,容易让人迷失方向。一定要在每天晚上想想自己学了些什么,还有些什么相关的东西需要掌握,自己对什么最感兴趣,在一本书上花的时间太长还是不够等等。同时也应该多想想未来最有可能出现的应用,这样能够让你不是追赶技术潮流而是引领技术潮流。同时,努力使用现在已经掌握的技术和理论去制作具有一定新意的东西。坚持这样做能够让你真正成为一个软件“研发者”而不仅仅是一个CODER。 〖把最多的时间花在学习上〗 这是对初学者最后的忠告。把每个星期玩SC或者CS的时间压缩到最少,不玩它们是最好的。同时,如果你的ASP技术已经能够来钱,甚至有公司请你兼职的话,这就证明你的天份能够保证你在努力的学习之后取得更好的收益,你应该去做更复杂的东西。眼光放长远一些,这无论是对谁都是适用的。 相信你已经能够决定是否学习C#或者什么时候去学它了。 分类: 转载 | 阅读全文 | 评论(0) | 引用(0) 分页: