水之真谛

上善若水,润物无声。

刘铁猛ID:FantasiaX
309982次访问,排名164好友58人,关注者256
这个很重要,有时间了仔细写。
FantasiaX的文章
原创 130 篇
翻译 0 篇
转载 3 篇
评论 1225 篇
刘铁猛的公告




给自己招致的损失中,至少有80%是因为自己太拿自己当回事而造成的;
给别人带去的伤害中,至少有80%是因为太不拿别人当回事而造成的。
===========
领导力=a*关注他人的能力*关注他人的手段
===========
这个世界的确是平等的,但前提是你放弃一切对名和利的欲念和追求。举个简单例子:当你不想挣钱了、不要任何颜面了,你就可以去跟你的领导谈“公平”了——但别忘了,你还得活着:p
===========
要想富裕,就必须尽可能多地让别人先富裕起来。然后他们才会乐意把属于或不属于自己的一部分财富分给你。这就叫作“资源的再分配”。

最近评论
ASP_lover:


推荐给Web程序员,

学习网络赚钱 [ www.888RMB.com.cn ] 为中国赚钱网站,

提供赚钱教程、赚钱经验、赚钱 秘籍、赚钱项目、赚钱产品, 为想赚钱的人群提供一个赚钱的网络平台




ASP_lover:


推荐给Web程序员,

学习网络赚钱 [ www.888RMB.com.cn ] 为中国赚钱网站,

提供赚钱教程、赚钱经验、赚钱 秘籍、赚钱项目、赚钱产品, 为想赚钱的人群提供一个赚钱的网络平台




ASP_lover:


推荐给Web程序员,

学习网络赚钱 [ www.888RMB.com.cn ] 为中国赚钱网站,

提供赚钱教程、赚钱经验、赚钱 秘籍、赚钱项目、赚钱产品, 为想赚钱的人群提供一个赚钱的网络平台




liuxilil:不会吧?
godismejmc:有深度啊
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 深入浅出WPF(1)——什么是WPF收藏

    新一篇: WPF感悟(1) | 旧一篇: 2008-05-12 日志:佛祖诞生,惊天动地

    深入浅出WPF(1)——什么是WPF
     
    小序:
     
    Hi,大家好!几乎两个月没有写技术文章了。这两个月,我在学习WPF。回顾一下两个月的学习历程,有两个感觉——第一,WPF是一项非常实用又简单易学的东西,它将成为未来MS平台上快速开发的主流趋势;第二,WPF的学习比较讲求路径,如果没有一个比较好的路径,学习起来可能比较慢,主要原因是它像是一种ASP.NET与Windows Forms的“杂交品种”,里面有很多内容与前两者似像非像,同时还有很多新内容的引入。
     
    本系列文章的主要目标是:帮助大家学习WPF技术,快速成为这项技术的开路先锋。在此,我借CSDN一块宝地,把这两个月来学习到的东西做一个整理,奉献给大家。希望大家能喜欢。BTW,本系列文章的风格将一改以前长篇累牍的样式,改变为非常短小的篇幅,每篇文章一两个知识点,小步快跑、天天积累。这样,我写着不累,你看着也不累。
     
    在我两个月的学习中,我的同事们——Anstinus、 Mathew、 Allen、 ChengSong、 Edward和Mike——他们像战场上的战友一样给了我无数的帮助。在这里,我向这些同事表示深深的感谢和敬意。还有我的搭档——大美女Yan,和你在一起工作很开心。
     
    正文:
     
    什么是WPF
     
    WPF,Windows Presentation Foundation也,译过来就是“Windows呈现基础”,你看它的目的非常明确,就是用来把数据“显示”给用户看的(说白了就是用来做UI的)。如果只是给用户显示几串文本、两三张图片或者几个表格那WPF就太糗了,幸乎,WPF可不是这等素食动物——大家都见过Flash动画吧,WPF的显示能力丝毫不亚于Flash以及Flash的同门师弟Flex+AIR(某建筑公司产品)。
     
    为什么会有WPF
     
    “微软出点儿什么新东西,我就得跟着跑!”我也曾这样抱怨过。不过,当大量的工作任务压在头上的时候,我终于感觉到——每一次技术(包括理念、架构、语言、工具)的更新都带来了巨大的工作效率提升。的确,我们需要花些时间来搞懂那些看起来乱糟糟的新概念,但搞明白之后——坦白地讲,在有人带的情况下,这并不是什么难事——我们就能用非常少的代码来换取先前技术大量代码才能获得的功能。似乎代码量是开发团队中一切糟糕问题的罪魁祸首,so,明白了?
     
    对于WPF是如何减少代码量的,后面有一个例子。但WPF绝不是一个只能帮我们减少代码量的家伙,更重要的是,它还能帮我们把程序的界面和功能逻辑近乎彻底地剥离——in a nutshell,把你的程序变成一只香蕉或者橘子——“皮”是可以从“瓤”上剥下来的,一旦某天用户说:“这个橘子能不能看起来像是个香蕉?”你就可以为你的橘子瓣儿裹上漂亮的进口香蕉皮再开出一个更漂亮的价码。
     
    WPF是怎样做到的
     
    使用WPF技术开发产品,程序的“皮”,也就是UI,是使用XAML语言来“画”出来的;而程序的“瓤”,也就是功能逻辑,可以由程序员来选择使用C#/VB.NET/C++.NET等托管语言来实现。
     
    对于程序员们来说,C#/VB.NET/C++什么的已经是耳熟能详。XAML是什么呢?简言之,XAML(读音为“zamel”,近似于“咋没有”)是XML语言的一个衍生物,它的语法基本上与XML语言完全一致;它的功能就是专门用来设计和实现程序的UI;它看起来和HTML语言非常像,无论你是程序员还是美工人员,只要你设计过网页,那学习XAML对你来说都是小菜一碟儿。而且,XAML可不像HTML和XHTML那样只能呆在Web开发领域——XAML对于Web开发和桌面开发是“通吃”的,从Web程序改成桌面程序或者反过来,所付出的工作量惊人的小,而且由于UI与逻辑完全分离,逻辑代码几乎不用改动——这意味着两种开发的边界渐渐消失,两类设计人员和程序员将会染指“彼岸”、拿到更多的项目、挣更多的钱。
     
    WPF之前,无论是Win32 API编程、使用MFC编程还是Windows Form编程,美工(设计人员)设计出来的界面都需要由程序员使用Visual Studio来实现。程序员不是美工,VS也干不过PS……越俎代庖永远是高效分工的大敌。如今,为了支持WPF程序设计,微软推出了专门的、使用XAML语言进行UI设计工具——Expression Studio,使用它就像使用PhotoShop和Dreamweaver一样,设计出来的结果保存为XAML文件,程序员可以直接拿来用;当UI有变更时,程序员只消用新版XAML文件替换旧版即可。
     
    XAML小试牛刀
     
    让我们实现这样一个小小的需求,完全使用XAML代码而不需要C#来参与。用户需要一个窗口,里面有一个TextBox和一个Button,并且窗口的背景是蓝色的过渡色。
     
    WPF_1_1
     
     
    我保证:真的一行C#代码都没写!是不是足以让Windows Form程序员艳羡不已?!
     
    一切实现都是使用XAML语言完成的——你可以使用Visual Studio 2008的XAML设计器来完成,也可以使用Expression Studio来更专业地完成设计。下面是它的XAML代码,你现在只需要看个大概,后面的文章里,我会一个词一个词为你解释。
     

    <Window x:Class="WpfApplication1.Window1"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="Window1" Height="300" Width="300">

        <Grid>

            <Grid.Background>

                <LinearGradientBrush>

                    <GradientStop Offset="0" Color="Blue"></GradientStop>

                    <GradientStop Offset="0.5" Color="LightBlue"></GradientStop>

                </LinearGradientBrush>

            </Grid.Background>

            <TextBox Height="23" Margin="10,10,10,0" Name="textBox1" VerticalAlignment="Top" Text="Hello WPF!" />

            <Button Height="23" HorizontalAlignment="Right" Margin="0,40,10,0" Name="button1" VerticalAlignment="Top" Width="75">WPF</Button>

        </Grid>

    </Window>

     

    咱们再来一个例子:这回的需求是这样的——UI上有一个TextBox和一个Slider,要求Slider的滑块滑动时TextBox的文本显示Slider的值;当TextBox里的文本改变时,就让Slider的滑块与之同步。

     
    对于一个有经验的Windows Form开发老手来说,他的思路是这样的:
    1.  在UI上拖放控件
    2.  为Slider的ValueChanged事件添加响应函数(事件处理函数),函数中将Slider的Value属性(double类型)转换成一个string类型的值并赋给TextBox的Text属性。
    3.  为TextBox的TextChanged事件添加响应函数,对TextBox的Text属性进行检验,看看它是否能解析为一个double值(新手常常忘记这一点而导致bug)并且落在Slider的取值范围内,如果一切顺利,就把它赋给Slider的Value属性。
     
    Now,你是一个WPF新手,但你可以做的比一个Windows Form老手还好!请打开Visual Studio 2008,新建一个WPF Application,然后把下面的代码copy到XAML设计器里。
     

    <Window x:Class="WpfApplication1.Window1"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="Window1" Height="300" Width="300">

        <Grid>

            <Grid.Background>

                <LinearGradientBrush>

                    <GradientStop Offset="0" Color="Blue"></GradientStop>

                    <GradientStop Offset="0.5" Color="LightBlue"></GradientStop>

                </LinearGradientBrush>

            </Grid.Background>

            <TextBox Height="23" Margin="10,10,10,0" Name="textBox1" VerticalAlignment="Top" Text="{Binding ElementName=slider1, Path=Value, UpdateSourceTrigger=PropertyChanged}" />

            <Slider Height="21" Margin="10,40,10,0" Name="slider1" VerticalAlignment="Top" Maximum="100" />

        </Grid>

    </Window>

       

    看你,你也可以一句C#代码都不写就完成漂亮的程序!
     
    WPF_1_2
     
    我猜已经有同学开始“晕代码”了。完全没有必要!这些代码80%都是VS自动生成的,而且它们的结构的非常简单——箱子里装着一个口袋,口袋里装着两个核桃。上面这段程序最重要的一句就是:Text="{Binding ElementName=slider1, Path=Value, UpdateSourceTrigger=PropertyChanged}"即可以说它是WPF最精华的部分,也可以说它是与Windows Form开发相比变化最大的地方,它就是——Data Binding(数据关联)。这两个月来,我几乎天天与这个东西打交道。后面的文章中,我们将仔细学习如何使用它。
     
    TO BE CONTINUE...
     
    =================================
       
    四川地震灾情牵动着每个人的心,请大家向我们受灾的兄弟姐妹们伸出援助之手,因为我们都是中国人!

    发表于 @ 2008年05月15日 19:06:00|评论(loading...)|编辑

    新一篇: WPF感悟(1) | 旧一篇: 2008-05-12 日志:佛祖诞生,惊天动地

    评论

    #vironica 发表于2008-05-15 20:21:30  IP: 58.61.58.*
    呵呵,代码糖衣额。
    #FantasiaX 发表于2008-05-15 20:32:45  IP: 221.218.25.*
    是啊~~干巴巴的代码很难引起大多数人的兴趣。
    而兴趣是初学者们最好的老师:)
    #llxx 发表于2008-05-16 11:52:23  IP: 116.77.4.*
    你好,我是一名通信专业的学生,07年毕业后都在做ERP实施,但感觉这个工作不是我想象的,现在已经辞职打算找一个测试相关的工作,可我丝毫的测试经验都没有,对这个领域的认识几乎是空白,请问我现在该怎么办?该从何下手?
    #自己 发表于2008-05-16 14:03:06  IP: 141.202.248.*
    Hi,你好!
    1. 在你离职之前一定要想好自己到底想要什么。海上行船,如果不知道自己的方向,就无法判断所来之风是顺风还是逆风。
    2. 调整心态。我小的时候性格没磨练出来之前也感觉很多事情自己不喜欢、做不来。心态调整不好,做什么很难有耐性,没耐性就没积累,几年之后会后悔的。特别是测试这个行业,需要极大的耐性。
    3. 不知道你是男孩还是女孩,如果是男孩,我建议你做开发。开发转别的工种都好转,测试转别的工种在技术方面稍微吃点亏。你现在这么年轻,再苦再难,你有时间可以挺过来。我大学毕业两年的时候还什么都不会呢:)
    4. 经济环境、国家环境、行业行情、地域差别、公司差别、团队差别、领导风格差别、同事群体差别,这些外界环境都会影响到自己对工作的看法,对待目前的职业和未来的职业,都要仔细思量。
    5. 上面说的是外界环境,让自己快乐起来最重要的还是看你自己。衷心希望你能掌握保持快乐心态的本领、天天开心。
    6. 如果已经决定要做测试,那么:其实我们每个人都有软件测试经验——因为软件测试的本质就是使用软件,我们日常天天在使用软件。日常使用软件的旷目的是使用其功能,软件测试的目的正好相反,是要检测出功能方面的问题。除了功能测试,我们还要对软件的“面皮”也就是UI进行测试;功能正确的情况下还要做性能测试,比如你能“跑”,我要看看你能跑多快、跑多远;还有压力测试,比如我要看看让你扛上50公斤的沙包跑10公里会是什么样子。测试的日常工作最多的就是写用例(Case)、手动或者自动地执行case、收集结果(没跑通的case就是issue,issue中的确是问题的那就是bug)、统计和分析测试结果。
    7. 写case的主要目标是要找到bug,所以写case要周全。这点很锻炼人的思维,也是测试的核心技术。不管老手新手,抓到bug就是好手。有些人天生就能找到很多bug(比较克程序员啊!)希望你就有这样的天赋。同时,可以让你懂得很多开发方面的知识。
    8. 新手一般都是从手动执行case做起,了解软件测试。
    9. 自动化测试是很有意思的工作,用软件控制软件。有时候需要用第三方工具,比较QTP、Silk什么的;有时候需要自己动手写测试工具(测试工具的类库一般称为测试框架)。这种开发的难度不亚于通用开发,很有搞头。微软管这类人叫SDET,你可以努力一下。
    10. 分析结果的过程叫质量保证,也就是QA了。
    11. issue的处理多是与dev们一起进行,很锻炼沟通能力。
    12. bug的处理有自己的一套完整流程:报bug->程序员解bug->发回你手里再测->如果bug解除那就关闭它,如果没有解除要重新开启(或做其它处理)。
    13. 新功能的加入或者旧bug的解除都可能带来(引入)新的bug,如果出现bug的功能以前是正常的,就称为功能退化。
    14. OK,入职培训也差不多就是这些东西了。剩下的事情就是在CSDN和51testing上找些文章读读,买几本书看看。最重要的还是动手练习。告诉你个秘诀:用百度搜一下,QQ的bug,参观一下这些五花八门的bug,再看看他们是如何被找出来的,你会有很大长进。然后,找个软件来,比如《金山词霸》,写些case,看看能不能找些bug出来,如果找到了,尝试用标准方式报几个bug给金山,说不定还有奖品呢。
    15. 祝好!
    #Amy 发表于2008-05-16 14:17:06  IP: 123.122.50.*
    GG:
    好久没来看你了,近来可好?
    我回来了:)
    #llxx 发表于2008-05-16 23:23:45  IP: 116.77.4.*
    非常感谢,我是女孩,你是不是就不建议我做开发了?呵呵!如果买书自学的话,可不可以推荐基本书?
    #FantasiaX 发表于2008-05-16 23:50:53  IP: 221.218.25.*
    可以看的书很多,让我推荐的的话,唯恐有失偏颇。我最喜欢的一本书是《计算机软件测试》(第2版),机械工作出版社的。最喜欢的是书的附录有400多种常见软件缺陷。
    我带的百度外包测试团队人手一本。
    #djbtestingsky 发表于2008-05-26 10:26:13  IP: 61.149.150.*
    经典,谢谢刘大哥!
    刘大哥,好久不见了.
    #superzhang11 发表于2008-05-26 11:57:31  IP: 117.9.217.*
    写的不错,但是有一点不太同意你的看法:所谓的WPF我看就是WS借鉴FLEX的产品,而且WPF的适用范围远远不及FLEX,FLEX可以链接JSP,PHP,java,ASP,.net……几乎所有的WEB开发方式。我没有学过WPF,但是我觉得WS的产品是不会支持SUN的。
    #E 发表于2008-05-30 17:46:24  IP: 222.128.6.*
    又是2b continued ……跟你写的草稿一个毛病 看了一半就没了
    #FantasiaX 发表于2008-05-30 20:26:41  IP: 123.112.31.*
    接受批评,接受批评~~~
    不过,咱后边不是还有续集吗:p
    多谢关注!在下一定努力!!
    #kklaiyou455024780 发表于2008-05-31 09:52:26  IP: 219.134.171.*
    不留下个脚印真是说不过去了,我最近也在写关于wpf/e的毕业论文,然后了解到这个技术,现在在深圳工作,还没有感觉到它现在带来的巨大的经济效益,我想也许是一个进阶吧,但是从WS应用的广泛程度看wpf将会引起一场不小的革命,以前在学校写Win Forms的时候烦死了,难看的界面,老师还整天让我们改得好看点!不过最重要的还是它能展现3D的效果,这还在断断续续的学习中了解到的,(要是搞错了还希望能帮忙矫正呢)。所以我相信它能在以后恰当的时间爆发它应该有的潜力的,在这里学习受益匪浅啊,o(∩_∩)o...哈哈
    #自己 发表于2008-05-31 18:46:26  IP: 61.149.156.*
    不错不错!你说的非常好!而且让我了解到了深圳那边的情况,很有价值呀:D
    目前WPF还是非常新的技术,别说是在国内,国外的公司用的也不算多。不过,正如你所说,这是个“趋势”,等国内的应用火起来之后,你就有收益了。
    非常高兴我的文章能给你带来帮助,有什么写的不好的地方,请多多指教。我也会更加努力!
    #wulin9842 发表于2008-06-06 08:01:17  IP: 124.160.32.*
    这个东西确实很帅 我也得好好学了
    #lateknow 发表于2008-06-23 11:11:33  IP: 220.113.244.*
    呵,偶尔路过,不料颇有所得.留名,关注.
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 刘铁猛