??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久香蕉视频,www性久久久com,一本色道久久综合亚洲精品http://m.shnenglu.com/Lenus/category/13648.html成长中的分析员,记录实验人生zh-cnMon, 26 Apr 2010 10:57:24 GMTMon, 26 Apr 2010 10:57:24 GMT60你是个Y件架构师吗?http://m.shnenglu.com/Lenus/articles/113619.htmlmarginmarginMon, 26 Apr 2010 10:13:00 GMThttp://m.shnenglu.com/Lenus/articles/113619.htmlhttp://m.shnenglu.com/Lenus/comments/113619.htmlhttp://m.shnenglu.com/Lenus/articles/113619.html#Feedback0http://m.shnenglu.com/Lenus/comments/commentRss/113619.htmlhttp://m.shnenglu.com/Lenus/services/trackbacks/113619.html英文原脓(chung):

Are You a Software Architect?

http://www.infoq.com/articles/brown-are-you-a-software-architect;jsessionid=D5393C0C41BB6F3D63AC893C18D3480F

-----------------
http://www.infoq.com/cn/articles/brown-are-you-a-software-architect;jsessionid=A4A3B3D552F9DB2FAF7FC2D991FC74F0

开发和架构的界限难以捉摸。有些h告诉你它Ҏ(gu)不存在,架构只是开发者们所做的设计q程的简单扩展?另外一些h认ؓ(f)q是一个`沟,它只能由那些做到高度抽象Q而且不会(x)陷入实现l节的开发者才能跨。通常Q在q两个极端的观点中间某处有个可操作的q点;不论如何Q怎么从开发{换ؓ(f)架构师都是个有趣的问题?/p>

l常被用来区分Y件架构和软g设计开发的关键几点包括 伸羃性和抽象E度的增加以?qing)作出正设计决{意义的增强。Y件架构是通过一个全局的观点,宏观的视角来理解软gpȝ作ؓ(f)一个整体如何工作?/p>

即ɘq能够帮助区分Y件开发和架构Q它q不能帮助理解某人如何从开发提升到架构?q且Q它也不能帮助识别谁能够成ؓ(f)一个好的Y件架构师Q如果你想雇人的话你如何d找他们以?qing)你是否是一个Y件架构师?/p>

l验可以判定但你需要更深入C?/h2>

要成Z个Y件架构师q不是一夜之间或者一个职位的提升p单达到的?q是个职责,而不是头衔。这是个q化的过E,你将?x)逐步得到担当q个职责所需的经验和信心?/p>

当你L架构师时Q需要考虑各方面的素质Q他们过ȝl验往往是他们有能力担当q个职责很好的判断。由于Y件架构师的职责是多种多样的,所以你需要再深入了解他们在不同领域的参与度,影响力,领导力和责Q感。一般来_(d)在大多数目中Y件架构可分ؓ(f)两个阶段Q架构的定义Q然后是它的交付?/p>

软g架构的定?/h2>

架构的定义过E看h非常单明了?你需要做的是理解需求ƈ设计一个系l来满需求?但实际上q没有那么简单,Ҏ(gu)你不同的做法QY件架构的职责之间差距很大Q以?qing)如何认真看待自q职责而定。如下图所C,q个职责的架构定义部分,可以q一步细分成不同的元素?/p>

The role of a hands-on software architect from a definition perspective

  1. 理非功能性需求:(x)软g目l常陷入问用戯求是什么,什么是他们惌的功能,但很问他们需要什么非功能性需求(或系l质量)有时候,q系Z(x)告诉我们Q?#8220;q个pȝ必须很快”Q但是这太主观了。非功能性需求如果要满的话需要明,可度量,可获得以?qing)可试。大多数非功能性需求本质上是技术层面的而且l常对Y件架构有很大的媄响。理解非功能性要求是架构师职责非帔R要的一个部分,但假设这些需求是什么ƈ不一定是对他们的挑战。你见过多少pȝ真正需?4x7的运行呢Q?br>
    Management of non-functional requirements
  2. 架构定义Q?/strong>捕捉C非功能性需求后Q下一步是开始思考你打算如何去解军_pMh提出的这些问题ƈ定义它的架构?公^的说每个软gpȝ都有一个架构,但ƈ不是每个软gpȝ都有一个定义好的架构。这正是问题的关键。架构定义过E让你想清楚你打怎么在兼N求和限制的情况下把问题解军_。架构定义是结构,斚wQ原则和领导力引入Y仉目的技术层面。定义架构是作ؓ(f)软g架构师的工作Q但是从头开始设计一个Y件系l和对已存在的系l扩展是相当不同的?br>
    Architecture definition
  3. 技术选型Q?/strong>技术选型通常是一个有的l习(fn)Q但它也有公q的挑战,因ؓ(f)你需要综合考虑成本、许可、供应商关系、技术策略、兼Ҏ(gu)、协作性、支持、部|Ӏ升U的政策以及(qing)最l用L(fng)境等各方面。综合这些因素,通常?x)导致简单选择cM富客L(fng)技术而进入了完全的噩梦。接下来的问题就是这些技术是否能真正有用。技术选型是彻头彻风险理Q复杂性或不确定性太高的时候要减轻风险Q当有机?x)或利益的时候要引入风险。技术决{需要考虑多种因素Q而且所有的技术决{需要被查和评估。这包含软g目的主要组成部分乃臛_发中引入的类库和框架。如果定义一个架构,你还需要有信心认ؓ(f)选择q项技术是正确的。同样在技术评C也还是存在开发新pȝ和向现有的系l增加新技术的不同炏V?br>
    Technology selection
  4. 架构评估Q?/strong>如果你设计YӞ你需要问问自׃的架构是否有用?Ҏ(gu)来说Q一个架构是成功的,如果它满非功能性需求,而且为其他部分的代码提供必要的基Qƈ军_存在的业务问题提供够的q_。Y件的一个最大的问题是它复杂而抽象,D很难从UML图或代码本n去设惛_q行时的Ҏ(gu)。在软g开发周期中我们q行了很多不同类型的试Q这h们能够有信心我们发布的系l在推出时能够正常运行。我们ؓ(f)什么不Ҏ(gu)构也q样做呢Q?如果能够试你的架构Q那你就可以证明它是有效的。如果你能尽早做到这一点,你就能减项目失败的风险Q而不是简单地希望一切都好?br>
    Architecture evaluation
  5. 架构协作Q?/strong>M一个Y仉不是与世隔绝的,需要很多h理解它?包括从需要理解和切入架构的直接开发团队到其他对安全性、数据库、运营、维护、支持等有兴的q系人。要惌一个Y仉目成功,你需要和所有的pȝq系人紧密协作来保证架构和所在的环境很好的集成。不q的是,现状是与开发团队的架构协作很少发生Q更不要说外部干pMh了?br>
    Architecture collaboration

软g架构的发?/h2>

对于架构的发布也是同P对于成功的Y仉目参与程度的不同Q也军_了Y件架构职责的不同?/p>

The role of a hands-on software architect from a delivery perspective

  1. 拥有全局的视角:(x)Z把一个架构成功地实现Q我们需要具有全局的视角ƈ把诏IY件开发生命周期的愿景加以宣传与推q,必要的话在整个项目中展开和完善,q对成功发布负责。如果如果你定义了一个架构,参与q保持不断发展的架构才是有意义的Q而不是选择把它传递给一?#8220;执行组”?br>
    Ownership of the bigger picture
  2. 领导力:(x)拥有全局的视角是技术领导的一个方面,但是q有其他事情在Y仉目发布阶D需要做?q包括承担责仅R提供技术指对{作出技术决{以?qing)具有权力作些决定。作为架构师Q你需要进行技术领导来保每g事都被考虑刎ͼ而且团队在朝着正确的方向持l前q。Y件架构师职位是需要内在领导力的,虽然q听h很明显,但很多项目团队ƈ没有获得他们所需要的技术领|因ؓ(f)架构师认Z个成功的发布q不一定是他们所x的问题?br>
    Leadership
  3. 教练和指|(x)在大多数软g开发项目中Q教l和指导l常不被重视Q团队成员得不到他们需要的支持?虽然技术领导是引导整个目Q但个h也经帔R要帮助。除此以外,教练和指导提供了一个强化技能的方式Qƈ帮助提升职业生。这应该是Y件架构师份内的事Q而且指导团队架构和设计与帮他们解决代码问题是截然不同的?br>
    Architecture delivery
  4. 质量保证Q?/strong>即是世界上最好的架构和领|很糟p的交付也以让一个具备其他成功条件的目p|。质量保证在架构师职责中占很大一部分Q但qƈ不只是简单做代码查?比如Q你需要一个基U来保Q这意味着引入新的标准和工作实c(din)从一个Y件开发的角度来说Q这可能包括代码标准、设计原则和源码分析工具甚至于用持l集?自动化单元测试以?qing)代码覆盖工兗可以说大多数项目质量保证做的ƈ不够Q所以你需要搞清楚什么是重要的ƈl予它够的保证。对于我来说Q一个项目的重要部分包括架构上的重点Q关键、复杂或高度可见的业务。你要关注实效ƈ认识Cq不能保证一切,要知道做L不做好?br>
    Quality assurance
  5. 设计、开发和试Q?/strong>软g架构师的职责范围的最后一件事是设计、开发和试。作Z个实际动手的架构师ƈ不是需要你每天都要写代码,但是它的意味着你一直在参与目Q而且U极帮助打造和交付它。说了这么多Qؓ(f)什么每天写代码不应该成Z个架构师职责的一部分呢?大多数架构师都有写代码的l验Q因此让q些技能保鲜是有意义的。而且Q架构师能体?x)到团队里其他h的痛苦和感受Q这栯让他们更好地理解他们的架构从开发角度看是什么样的。很多公司有政策L软g架构师从事写代码Q因为架构师“d那些廉h(hun)的工作太贵了” Q这昄是个错误的态度...如果架构师已l花了那么多旉_֊为项目做架构Q何必从政策上不允许他们多走一步来帮助目辑ֈ最l的成功呢?当然Q有些情况下卷入代码U别q不现实。比如,一个大的项目通常意味有一个更大的“全局?#8221; 来考虑它,而且可能有时候你是没有旉。但一般来_(d)一个写代码的架构师比只在旁边观望要更高效和快乐?br>
    Design, development and testing

你是一个Y件架构师吗?

不管你认Y件开发和架构之间的界限只是一个觉还是个巨大的`沟,以上了h们对整个软g架构中的l验水^往往有很大的差别Q而这取决于他们怎么样工作以?qing)他们如何认真地看待他们的职责。大多数开发h员不是在某一个星期一的早晨醒来就宣布自己成ؓ(f)一个Y件架构师的。我当然也不是,我成Y件架构师的\U是一个渐q的q程。话虽如此,但很可能同样那些开发者已l做了一部分架构的工作,不论他们的职位名U是什么?/p>

Y件系l的架构作出贡献和自p责定义它有很大的区别Q拥有持l的、跨不同领域的技能、知识和l验构成了Y件架构的职责。跨Y件开发者和架构师的界限取决于你自己Q但是首先你要明白你的经验水qI才能开始架构师之旅的第一站?/p>

关于作?/h3>

你可以认为Simon Brown是一个写代码的Y件架构师或者理解架构的软g开发者。当他没有用.NET或Java开发Y件的时候,Simon通常在做咨询Q指导或者培训?Simonq写q关于Java的书Q在行业zd做过演讲Qƈ且整合了一个叫Software Architecture for Developers的培训课E, 该课E基于他?a >Coding the Architecture?q的软g架构。你可以通过e-mail ?Twitter 扑ֈ他?/p>

margin 2010-04-26 18:13 发表评论
]]>如何判断客户端用了代理服务器及(qing)其匿名?Q?/title><link>http://m.shnenglu.com/Lenus/articles/113126.html</link><dc:creator>margin</dc:creator><author>margin</author><pubDate>Wed, 21 Apr 2010 03:33:00 GMT</pubDate><guid>http://m.shnenglu.com/Lenus/articles/113126.html</guid><wfw:comment>http://m.shnenglu.com/Lenus/comments/113126.html</wfw:comment><comments>http://m.shnenglu.com/Lenus/articles/113126.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/Lenus/comments/commentRss/113126.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/Lenus/services/trackbacks/113126.html</trackback:ping><description><![CDATA[<p>如何判断客户端用了代理<a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a>?qing)其匿名U别 Q要判断客户端是否用代理服务器Q可以从客户端所发送的环境变量信息来判断,具体点就是看HTTP_VIA字段Q如果这个字D设|了Q说明客L(fng)使用了代理服务器?/p> <p>匿名U别可以参考下表来判断?/p> <p>l出一个应用例子,可以挂上代理试试效果: http://ip.mixsec.org/</p> <p><strong>一、没有用代?a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a>的情?/strong>Q?!--iwms_ad_begin--> <script src="../../bkad/incnt.js" type=text/javascript></script><!--iwms_ad_end--><br>     REMOTE_ADDR = (zhn)的 IP<br>     HTTP_VIA = 没数值或不显C?br>     HTTP_X_FORWARDED_FOR = 没数值或不显C?/p> <p><br><strong>二、用透明代理<a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a>的情况:(x)</strong>Transparent Proxies<br><br>    REMOTE_ADDR = 代理<a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a> IP <br>    HTTP_VIA = 代理<a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a> IP (<strong>补充Q这个字D는代理服务器填充,有时?x)填充网关信息?/strong>)<br>    HTTP_X_FORWARDED_FOR = (zhn)的真实 IP<br>    q类代理<a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a>q是?zhn)的信息{发给(zhn)的讉K对象Q无法达到隐藏真实n份的目的?/p> <p> </p> <p><strong>三、用普通匿名代?a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a>的情况:(x)</strong>Anonymous Proxies<br>    REMOTE_ADDR = 代理<a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a> IP <br>    HTTP_VIA = 代理<a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a> IP (<strong>补充Q这个字D는代理服务器填充,有时?x)填充网关信息?/strong>)<br>    HTTP_X_FORWARDED_FOR = 代理<a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a> IP<br>    隐藏了?zhn)的真实IPQ但是向讉K对象透露了?zhn)是用代?a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a>讉K他们的?/p> <p> </p> <p><strong>四、用欺骗性代?a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a>的情况:(x)</strong>Distorting Proxies<br>    REMOTE_ADDR = 代理<a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a> IP<br>    HTTP_VIA = 代理<a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a> IP  (<strong>补充Q这个字D는代理服务器填充,有时?x)填充网关信息?/strong>)<br>    HTTP_X_FORWARDED_FOR = 随机?nbsp;IP<br>    告诉了访问对象?zhn)使用了代?a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a>Q但~造了一个虚假的随机IP代替(zhn)的真实IPƺ骗它?/p> <p> </p> <p><strong>五、用高匿名代理<a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a>的情况:(x)</strong>High Anonymity Proxies<br>   REMOTE_ADDR = 代理<a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a> IP<br>   HTTP_VIA = 没数值或不显C?br>   HTTP_X_FORWARDED_FOR = 没数值或不显C?br>   完全用代?a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a>的信息替代了(zhn)的所有信息,p(zhn)就是完全用那C理服务器直接讉K对象?/p> <p><br>   除此之外Q可以通过proxy judges?l其他一些可供参考的判定信息Q一遍于在实践中加以利用?/p> <p> </p> <p><strong>最后写一?a title=PHP教程 ><u><font color=#0000ff>PHP</font></u></a>例子,仅供大家参?</strong></p> <p>if(!empty($_SERVER['HTTP_VIA']))    //使用了代?br>{<br>    if(!isset($_SERVER['HTTP_X_FORWARDED_FOR']))<br>    {<br>        //Anonymous Proxies    普通匿名代?a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a></p> <p>        //代理IP地址?$_SERVER['REMOTE_ADDR']</p> <p>   }<br>   else<br>   {<br>        //Transparent Proxies 透明代理<a title=服务器教E?><u><font color=#0000ff>服务?/font></u></a><br>        //代理IP地址?$_SERVER['REMOTE_ADDR']<br>        //真实ip地址?$_SERVER['HTTP_X_FORWARDED_FOR']<br>   }<br>}<br>else    //没有代理或者是高匿名代?br>{<br>    //真实ip地址?$_SERVER['REMOTE_ADDR']<br>}</p> <img src ="http://m.shnenglu.com/Lenus/aggbug/113126.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/Lenus/" target="_blank">margin</a> 2010-04-21 11:33 <a href="http://m.shnenglu.com/Lenus/articles/113126.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.m20008.cn" target="_blank">þۺɫˮ99ž</a>| <a href="http://www.5icsw.cn" target="_blank">鶹AV뾫Ʒþ</a>| <a href="http://www.opsdc8.cn" target="_blank">91ƷۺϾþĻþһ</a>| <a href="http://www.iyuhu.cn" target="_blank">þþƷһ</a>| <a href="http://www.igdl.cn" target="_blank">Ʒ99þþþ91gav</a>| <a href="http://www.qt32.cn" target="_blank">պݺݾþ͵͵ɫۺ0</a>| <a href="http://www.axrf.cn" target="_blank">ձ޷츾þþþþ</a>| <a href="http://www.wc78.cn" target="_blank">þþþѾƷ</a>| <a href="http://www.tbssyc.cn" target="_blank">þþƷAVɫ </a>| <a href="http://www.88815755.cn" target="_blank">þۺϾþۺϾɫ</a>| <a href="http://www.zjhgkjjt.com.cn" target="_blank">޹պŷۺϾþ</a>| <a href="http://www.zwdl.com.cn" target="_blank">þþþѿӰƬ</a>| <a href="http://www.bisibbs.cn" target="_blank">ɫۺϾþþþۺ99</a>| <a href="http://www.longfee.cn" target="_blank">ƷһþþƷ</a>| <a href="http://www.danongyao.cn" target="_blank">ҹAVëƬþ</a>| <a href="http://www.zs021.cn" target="_blank">ձþþþƷĻ</a>| <a href="http://www.qeckf.cn" target="_blank">Ʒ99þþþƷ</a>| <a href="http://www.ojl4q.cn" target="_blank">99þþƷۺһ</a>| <a href="http://www.smxsj.cn" target="_blank">þˮav뾫Ʒ鶹 </a>| <a href="http://www.sifubaimeng.cn" target="_blank">99þþƷһëƬ</a>| <a href="http://www.mir818.cn" target="_blank">þþƷƵһ</a>| <a href="http://www.gb9948-2013.cn" target="_blank">ݺɫۺվþþþþþ</a>| <a href="http://www.cjbyt.cn" target="_blank">ݺɫۺþö</a>| <a href="http://www.rereyy.cn" target="_blank">˾þô߽av </a>| <a href="http://www.yiyaosheji.cn" target="_blank">þ99Ʒþþþþþþþ </a>| <a href="http://www.ic-led.cn" target="_blank">þ99ƷþþþþҰ </a>| <a href="http://www.68gz.cn" target="_blank">þĻƷ</a>| <a href="http://www.ersunle.cn" target="_blank">þĻƵ</a>| <a href="http://www.cuinfo.cn" target="_blank">ۿþ</a>| <a href="http://www.gzxwlt.cn" target="_blank">޹þþþþþ</a>| <a href="http://www.17714.com.cn" target="_blank">ƷþĻ</a>| <a href="http://www.zhtdkh.cn" target="_blank">þþƷҹҹҹҹҹþ</a>| <a href="http://www.054q.cn" target="_blank">þѾƷav</a>| <a href="http://www.pxep.cn" target="_blank">þݺҹҹavapp</a>| <a href="http://www.023job.com.cn" target="_blank">aþ</a>| <a href="http://www.bisibbs.cn" target="_blank">ƷŮٸAVѾþ</a>| <a href="http://www.cqdmn.com.cn" target="_blank">һþþƷһ</a>| <a href="http://www.dashi1.cn" target="_blank">7777þþùƷ</a>| <a href="http://www.eobt.cn" target="_blank">ɫþþþþþС˵</a>| <a href="http://www.vxe49.cn" target="_blank">޺ݺۺϾþѿ</a>| <a href="http://www.oftr.cn" target="_blank">ݺɫۺվþþþþþø</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>