??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久香蕉视频,www性久久久com,一本色道久久综合亚洲精品 http://m.shnenglu.com/Lenus/category/13648.html成长中的分析员,记录实验人生 zh-cn Mon, 26 Apr 2010 10:57:24 GMT Mon, 26 Apr 2010 10:57:24 GMT 60 你是个Y件架构师吗? http://m.shnenglu.com/Lenus/articles/113619.htmlmargin margin Mon, 26 Apr 2010 10:13:00 GMT http://m.shnenglu.com/Lenus/articles/113619.html http://m.shnenglu.com/Lenus/comments/113619.html http://m.shnenglu.com/Lenus/articles/113619.html#Feedback 0 http://m.shnenglu.com/Lenus/comments/commentRss/113619.html http://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>
理非功能性需求:(x) 软g目l常陷入问用戯求是什么,什么是他们惌的功能,但很问他们需要什么非功能性需求(或系l质量)有时候,q系Z(x)告诉我们Q?#8220;q个pȝ必须很快”Q但是这太主观了。非功能性需求如果要满的话需要明,可度量,可获得以?qing)可试。大多数非功能性需求本质上是技术层面的而且l常对Y件架构有很大的媄响。理解非功能性要求是架构师职责非帔R要的一个部分,但假设这些需求是什么ƈ不一定是对他们的挑战。你见过多少pȝ真正需?4x7的运行呢Q?br>
架构定义Q?/strong>捕捉C非功能性需求后Q下一步是开始思考你打算如何去解军_pMh提出的这些问题ƈ定义它的架构?公^的说每个软gpȝ都有一个架构,但ƈ不是每个软gpȝ都有一个定义好的架构。这正是问题的关键。架构定义过E让你想清楚你打怎么在兼N求和限制的情况下把问题解军_。架构定义是结构,斚wQ原则和领导力引入Y仉目的技术层面。定义架构是作ؓ(f)软g架构师的工作Q但是从头开始设计一个Y件系l和对已存在的系l扩展是相当不同的?br>
技术选型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>
架构评估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>
架构协作Q?/strong>M一个Y仉不是与世隔绝的,需要很多h理解它?包括从需要理解和切入架构的直接开发团队到其他对安全性、数据库、运营、维护、支持等有兴的q系人。要惌一个Y仉目成功,你需要和所有的pȝq系人紧密协作来保证架构和所在的环境很好的集成。不q的是,现状是与开发团队的架构协作很少发生Q更不要说外部干pMh了?br>
软g架构的发?/h2>
对于架构的发布也是同P对于成功的Y仉目参与程度的不同Q也军_了Y件架构职责的不同?/p>
拥有全局的视角:(x) Z把一个架构成功地实现Q我们需要具有全局的视角ƈ把诏IY件开发生命周期的愿景加以宣传与推q,必要的话在整个项目中展开和完善,q对成功发布负责。如果如果你定义了一个架构,参与q保持不断发展的架构才是有意义的Q而不是选择把它传递给一?#8220;执行组”?br>
领导力:(x) 拥有全局的视角是技术领导的一个方面,但是q有其他事情在Y仉目发布阶D需要做?q包括承担责仅R提供技术指对{作出技术决{以?qing)具有权力作些决定。作为架构师Q你需要进行技术领导来保每g事都被考虑刎ͼ而且团队在朝着正确的方向持l前q。Y件架构师职位是需要内在领导力的,虽然q听h很明显,但很多项目团队ƈ没有获得他们所需要的技术领|因ؓ(f)架构师认Z个成功的发布q不一定是他们所x的问题?br>
教练和指|(x) 在大多数软g开发项目中Q教l和指导l常不被重视Q团队成员得不到他们需要的支持?虽然技术领导是引导整个目Q但个h也经帔R要帮助。除此以外,教练和指导提供了一个强化技能的方式Qƈ帮助提升职业生。这应该是Y件架构师份内的事Q而且指导团队架构和设计与帮他们解决代码问题是截然不同的?br>
质量保证Q?/strong>即是世界上最好的架构和领|很糟p的交付也以让一个具备其他成功条件的目p|。质量保证在架构师职责中占很大一部分Q但qƈ不只是简单做代码查?比如Q你需要一个基U来保Q这意味着引入新的标准和工作实c(din)从一个Y件开发的角度来说Q这可能包括代码标准、设计原则和源码分析工具甚至于用持l集?自动化单元测试以?qing)代码覆盖工兗可以说大多数项目质量保证做的ƈ不够Q所以你需要搞清楚什么是重要的ƈl予它够的保证。对于我来说Q一个项目的重要部分包括架构上的重点Q关键、复杂或高度可见的业务。你要关注实效ƈ认识Cq不能保证一切,要知道做L不做好?br>
设计、开发和试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>
你是一个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>
]]>如何判断客户端用了代理服务器及(qing)其匿名?Q?/title> http://m.shnenglu.com/Lenus/articles/113126.htmlmargin margin Wed, 21 Apr 2010 03:33:00 GMT http://m.shnenglu.com/Lenus/articles/113126.html http://m.shnenglu.com/Lenus/comments/113126.html http://m.shnenglu.com/Lenus/articles/113126.html#Feedback 0 http://m.shnenglu.com/Lenus/comments/commentRss/113126.html http://m.shnenglu.com/Lenus/services/trackbacks/113126.html 如何判断客户端用了代理服务?/font> ?qing)其匿名U别 Q要判断客户端是否用代理服务器Q可以从客户端所发送的环境变量信息来判断,具体点就是看HTTP_VIA字段Q如果这个字D设|了Q说明客L(fng)使用了代理服务器?/p>
匿名U别可以参考下表来判断?/p>
l出一个应用例子,可以挂上代理试试效果: http://ip.mixsec.org/
一、没有用代?a title=服务器教E?>服务?/font> 的情?/strong>Q?!--iwms_ad_begin--> REMOTE_ADDR = (zhn)的 IP HTTP_VIA = 没数值或不显C?br> HTTP_X_FORWARDED_FOR = 没数值或不显C?/p>
二、用透明代理服务?/font> 的情况:(x) Transparent Proxies REMOTE_ADDR = 代理服务?/font> IP HTTP_VIA = 代理服务?/font> IP (补充Q这个字D는代理服务器填充,有时?x)填充网关信息?/strong>) HTTP_X_FORWARDED_FOR = (zhn)的真实 IP q类代理服务?/font> q是?zhn)的信息{发给(zhn)的讉K对象Q无法达到隐藏真实n份的目的?/p>
三、用普通匿名代?a title=服务器教E?>服务?/font> 的情况:(x) Anonymous Proxies REMOTE_ADDR = 代理服务?/font> IP HTTP_VIA = 代理服务?/font> IP (补充Q这个字D는代理服务器填充,有时?x)填充网关信息?/strong>) HTTP_X_FORWARDED_FOR = 代理服务?/font> IP 隐藏了?zhn)的真实IPQ但是向讉K对象透露了?zhn)是用代?a title=服务器教E?>服务?/font> 讉K他们的?/p>
四、用欺骗性代?a title=服务器教E?>服务?/font> 的情况:(x) Distorting Proxies REMOTE_ADDR = 代理服务?/font> IP HTTP_VIA = 代理服务?/font> IP (补充Q这个字D는代理服务器填充,有时?x)填充网关信息?/strong>) HTTP_X_FORWARDED_FOR = 随机?nbsp;IP 告诉了访问对象?zhn)使用了代?a title=服务器教E?>服务?/font> Q但~造了一个虚假的随机IP代替(zhn)的真实IPƺ骗它?/p>
五、用高匿名代理服务?/font> 的情况:(x) High Anonymity Proxies REMOTE_ADDR = 代理服务?/font> IP HTTP_VIA = 没数值或不显C?br> HTTP_X_FORWARDED_FOR = 没数值或不显C?br> 完全用代?a title=服务器教E?>服务?/font> 的信息替代了(zhn)的所有信息,p(zhn)就是完全用那C理服务器直接讉K对象?/p>
除此之外Q可以通过proxy judges?l其他一些可供参考的判定信息Q一遍于在实践中加以利用?/p>
最后写一?a title=PHP教程 >PHP 例子,仅供大家参?
if(!empty($_SERVER['HTTP_VIA'])) //使用了代?br>{ if(!isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { //Anonymous Proxies 普通匿名代?a title=服务器教E?>服务?/font>
//代理IP地址?$_SERVER['REMOTE_ADDR']
} else { //Transparent Proxies 透明代理服务?/font> //代理IP地址?$_SERVER['REMOTE_ADDR'] //真实ip地址?$_SERVER['HTTP_X_FORWARDED_FOR'] } } else //没有代理或者是高匿名代?br>{ //真实ip地址?$_SERVER['REMOTE_ADDR'] }
]]>
þۺɫˮ99ž |
鶹AV뾫Ʒþ |
91ƷۺϾþĻþһ |
þþƷһ |
Ʒ99þþþ91gav |
պݺݾþ͵͵ɫۺ0 |
ձ츾þþþþ |
þþþѾƷ |
þþƷAVɫ
|
þۺϾþۺϾɫ |
պŷۺϾþ |
þþþѿӰƬ |
ɫۺϾþþþۺ99 |
ƷһþþƷ |
ҹAVëƬþ |
ձþþþƷĻ |
Ʒ99þþþƷ |
99þþƷۺһ |
þˮav뾫Ʒ鶹
|
99þþƷһëƬ |
þþƷƵһ |
ݺɫۺվþþþþþ |
ݺɫۺþö |
˾þô߽av
|
þ99Ʒþþþþþþþ
|
þ99ƷþþþþҰ
|
þĻƷ |
þĻƵ |
ۿþ |
þþþþþ |
ƷþĻ |
þþƷҹҹҹҹҹþ |
þѾƷav |
þݺҹҹavapp |
aþ |
ƷŮٸAVѾþ |
һþþƷһ |
7777þþùƷ |
ɫþþþþþС˵ |
ݺۺϾþѿ |
ݺɫۺվþþþþþø |