Monday, March 31, 2014

[repost ]UIMA vs GATE

original:http://ift.tt/1fIZQCm Hello! 1) I would like to know advantages and inconvenients of the UIMA and GATE platforms. Could you give me some arguments? 2) On the performance side, which one of UIMA and GATE is better for speed, scalability, etc. ? 3) I have a question concerning UIMA: is there a regular expression over annotations [...]



via WordPress http://ift.tt/1fIZSKv

Labels:

[repost ]Apache Stanbol vs Apache UIMA?

original:http://ift.tt/1mtrwQh Can anyone articulate for me the difference between Apache Stanbol Apache UIMA? They seem to do roughly the same thing from what I can tell , however its also seems theuy can be used together! The main difference are as follows: 1. Apache UIMA doesn’t have any user-interface to manage the chains, but Stanbol [...]



via WordPress http://ift.tt/1mtruYR

Labels:

[repost ]LingPipe API Tutorials

original:http://ift.tt/13y6hGX About the API Tutorials The application program interface (API) turorials are intended to help developers get started with the LingPipe API. Each tutorial is designed to stand alone. Included Data and Precompiled Scripts Most of the tutorials come with sample data, precompiled jars and an example that works out of the box. Tutorials which [...]



via WordPress http://ift.tt/1gWsxBg

Labels:

[repost ]LingPipe’s Competition

original:http://ift.tt/QQDzpx n this page, we break our competition down into academic toolkits and industrial toolkits. We only consider software that is available for linguistic processing, not companies that rely on linguistic processing in an application but do not sell that technology. How does LingPipe compare to the below offerings? A few key points to keep [...]



via WordPress http://ift.tt/1km9dLB

Labels:

Sunday, March 30, 2014

[repost ]What is WebScaleSQL?

original:http://webscalesql.org/ “We’re Gonna Need A Bigger Database” JOIN US ON GITHUB What is WebScaleSQL? WebScaleSQL is a collaboration among engineers from several companies that face similar challenges in running MySQL at scale, and seek greater performance from a database technology tailored for their needs. Our goal in launching WebScaleSQL is to enable the scale-oriented members [...]



via WordPress http://ift.tt/1kb5KPU

Labels:

[repost ]技术总监是干什么的? – 旁观者

original:http://ift.tt/1rSW0PK 庄表伟曾撰文 谈及研发管理 的三个提升,由于研发、质量保障、运维三者连接紧密、不分家,所以下面郑昀将其扩展了一下:要『从一个整体来考虑企业的研发管理,应该注重建立一个良性的循环: 技术能力的提升,主要依靠经验积累,建立企业内部的知识库(如RCA案例库、最佳实践库)与传承体系(促进交流与协作,借助研发活力促进技术能力提升,这个技术能力包括部署、维护、私有云等自动化运维能力); 生产效率(而不仅仅是开发效率)的提升,主要依靠科学的数据分析,建立或引进一系列的工具,建立合理的流程与制度(通过提升研发人员、质量保障人员、运维人员能力,激发他们不断改进效率,也很重要);  研发活力的提升,促进研发人员积极的交流与分享 (给研发人员松绑,让他们有足够的空余时间,也很重要); 』 单就研发部门的技术总监(或研发总监,注意不是研发经理或架构师)而言,郑昀定义这个岗位通常要致力于: 横跨各个开发组织的 技术(通用)方案的积极推广 技术(疑难)问题的定位和解决 学习型技术组织的引导和培养 技术工具的(发现或)制造 而研发部门的架构师,则只需要致力于: 横跨各个开发组织的 技术(通用)方案的积极推广 技术工具的(发现或)制造 即可。 具体工作场景举例:   一,技术(通用)方案的积极推广:   方法: 找到通用性强的技术问题,抽象业务场景; 或制定方案,在某开发组织内落地; 或将A组织的优秀方案复制到B组织; 或将A公司的优秀方案复制到内部落地; 例子: 技术问题举例: 业务降级 由于各种线上运维需求,导致部分业务必须停服。几次之后,我们意识到这必须做成功能,随时能通过一个持久化配置中心的控制台界面让某些业务停服而不影响其他业务。 这就是业务降级解决方案的由来。也因此要求它要扩展为业务降级打包预案,随时可以让一部分业务“批量”降级。   二,技术(疑难)问题的定位和解决   方法: 由上级主管发现各个开发小组中的技术问题,尤其是那些线上问题; 一般来说,开发组组长自己内部解决问题,但上级主管需要判断哪些问题得让研发总监、其他开发组长、架构师等一起商讨解决; 在这个过程中,形成整个技术团队有事儿一起商量一起解决(而不是各自为战)的氛围。   三,学习型技术组织的引导和培养   方法: 部门内有一两个人专门定期组织技术分享讲座 新人入职后做一次技术分享; 老人做完一个项目之后做一次技术总结和分享; 对于部门未来可能遇到的技术难题,提前组织人做课题研究,并做多次技术传道,从浅到深   四,技术工具的(发现或)制造   方法: 找到技术团队的痛点; 找到技术团队的生产效率低的原因; 抽象业务场景; 针对性了解其他公司如何解决的,梳理各种方案; 发现现有开源工具,或组织人员开发工具,制定和验证高可用方案。 例子: 自动化测试自动化部署 持续集成 定时任务调度和管理 可靠的异步推送 [...]



via WordPress http://ift.tt/1oe6KJe

Labels:

Wednesday, March 26, 2014

[repost ]张雷博士谈IBM沃森背后的AI技术

original:http://ift.tt/1g2A77g 不久前,IBM超级计算机沃森(Watson)在美国电视智力答题节目《危险边缘(Jeopardy!)》中上演了人机大战,并最终击败两位人类冠军,赢得最后的胜利。沃森由IBM全球多个研究院和大学共同研发,历经四年研制而成。IBM中国研究院也参与了该项目的研发。InfoQ中文站有幸采访到来自IBM中国研究院直接参与了沃森项目的张雷博士。张雷博士是IBM中国研究院信息与知识管理部门研究员,在过去的三年中,他和他的研究团队与全球研究团队一起,致力于深度问答项目(DeepQA)的工作,研究并开发了沃森系统。在IBM期间他申请过多项专利并获得过IBM杰出技术成就奖。在学术领域,张雷博士研究兴趣广泛,涉及语义Web、知识表示与推理、信息抽取与检索、问题回答系统以及机器学习等,发表学术论文20余篇。他是WWW、IJCAI、ISWC等重要国际学术会议的程序委员会委员、第九届国际语义网大会(ISWC2010)的本地组织者之一,还是第一届中国语义万维网论坛(CSWS2007)的主要发起人之一。下面有请张博士为我们揭开沃森背后的技术奥秘。 多种AI技术的综合运用和强大的计算能力共同造就了沃森 InfoQ:张博士,您好!我想大家都已经通过《Jeopardy!》节目领教到沃森的威力了。从接受人类语言的提问,到用人类语言给出答案,让机器完成这一过程、还要保证相当的正确率,听上去有些不可思议。能否请您举例介绍一下沃森在答题时背后发生了什么?其技术原理是怎样的? 张雷:徐涵,您好!非常高兴能接受您的的采访。沃森在拿到问题后,会进行一系列的计算,包括语法语义分析、对各个知识库进行搜索、提取备选答案、对备选答案证据的搜寻、对证据强度的计算和综合等等。它综合运用了自然语言处理、知识表示与推理、机器学习等技术。我们知道,从单一的知识源或者少数的算法出发,很难让问题回答系统达到接近人类的水平。所以,沃森的主要技术原理是通过搜寻很多知识源,从多角度运用非常多的小算法,对各种可能的答案进行综合判断和学习。这就使得系统依赖少数知识源或少数算法的脆弱性得到了极大的降低,从而大大提高其性能。 InfoQ:14年前,“深蓝”凭借其大规模计算与枚举能力战胜了国际象棋世界冠军卡斯帕罗夫。如今沃森的成功,有多大程度是依赖于其强大的计算能力,多大程度是依赖人工智能理论本身的发展? 张雷:这两方面应该说都起到了很大的作用。人工智能领域的很多技术都应用在了该系统中,这是很明显的。另一方面,如果没有计算能力的进步,我们在提高计算速度方面可能也会遇到障碍。几年前,沃森在一台不错的服务器上回答一个问题需要2个多小时的时间。通过IBM Power 7强大的并行化计算能力,才把它压缩到了3秒内。另外,强大的计算能力其实也大大加速了开发进程。我们大量使用了Java语言和机器学习,而这些都是需要有较强的计算能力作为支撑的。 InfoQ:沃森与同样致力于问题回答的计算知识引擎Wolfram|Alpha,还有著名的人工智能项目CYC有何相同和不同之处? 张雷:据我所知,Wolfram|Alpha主要依赖于事先由人手工编辑的结构化数据作为知识源,而沃森则以现有的非结构化数据为主,适当辅以一些结构化数据。两者的计算方法也完全不同。我估计Wolfram|Alpha是以基于规则的匹配和计算为主,而沃森则是以统计推理为主。和CYC相比,沃森并不去构造基于形式逻辑的知识库,而是直接使用现有的用人类语言书写的知识,例如各种百科全书。CYC以形式化的逻辑推理作为基本的计算方法,而沃森是以统计推理为主。 InfoQ:沃森看上去像是一种决策系统。作为决策系统,它不仅要给出答案,还要提供相关依据。这在沃森系统中是如何做到的?另外,如被告知回答错误,沃森是否具备自我学习和完善的能力? 张雷:沃森系统的一个关键步骤是评价备选答案的可靠性。这个可靠性是由上百个算法从各种不同的角度评价得出的。例如:关键字匹配程度、时间关系的匹配程度、地理位置匹配的程度、类型匹配程度等等。沃森在每一个角度上都能得到量化的可靠性评价。而且这些评价算法所依赖的知识源也是可追溯的。所以,如果需要,沃森可以为用户提供答案的依据。 在沃森参赛之前,它会从历史数据中进行学习。比如,如果它回答错了一个往期节目上的问题,它会从中学习到一些信息。在参赛之时,它主要依赖以前学习的结果,但也进行一些简单的在线学习。例如,它可以从已经被其它选手回答的同一类型问题中归纳出一些特点,指导其回答这类问题。另外,答错题目也会导致沃森调整其游戏策略。因此可以说,沃森具备了初步的自我学习和完善的能力。 语义网技术在沃森中的应用 InfoQ:在沃森系统中,从各处采集而来的海量知识是如何表达和管理的?知识出现不一致时将如何处理? 张雷:非结构化知识主要就是以其原始的文本来表示的,而结构化知识则使用了诸如RDF这样的表示和管理方法。知识出现不一致时,沃森通过对大量往期题目的学习来发现哪些是在该游戏中更值得依赖的知识,而哪些在该游戏场景中是不可靠的。 InfoQ:据介绍,沃森采用了包括RDF/Linked Data在内的Semantic Web技术。沃森为什么会选中这一技术?RDF及Linking Open Data的思想在沃森系统中是如何发挥作用的? 张雷:Linked Data是非常重要的结构化的知识源。我们在研发沃森的初始阶段就考察了该如何利用这一重要的知识源。我们尝试了使用Linked Data,特别是DBpedia、IMDb等,来直接回答比赛中的问题。我们也利用Linked Data来帮助沃森对答案的类型进行判断。不仅如此,沃森在很多其它场合也借鉴了一些RDF及Linked Data的思想。例如,有些从文本中挖掘得到的知识是使用三元组形式表示的;当一个字符串代表的对象有歧义时,使用URI来代表不同的对象;利用RDF三元组中的谓词作为语义提示等等。 InfoQ:沃森是否还应用了其他Semantic Web技术,如本体(ontology)、逻辑推理等?沃森强大的运算能力是否足以应付时间复杂度很高的推理需求? 张雷:沃森应用了本体来帮助其对答案类型进行判断。例如,判断哈利波特是不是文学作品。DBpedia可能会告诉我们哈利波特是小说,而本体会告诉我们小说是一种文学作品。在沃森系统中,我们应用了简单的基于本体的逻辑推理,例如上下位关系、不相交关系(disjointness)等。这些简单的逻辑推理可以用简单快速的方法实现。 InfoQ:在本体工程实践中,沃森是如何将DBPedia、YAGO、Wordnet等不同的本体结合起来的?涉及到本体映射与转换吗? 张雷:很多本体是分开来单独使用的。因为我们需要沃森能够学习得到这些本体在这个问答环境中的不同的可靠程度。对于YAGO和Wordnet来说,它们有着天然的对应关系。我们也几乎没有使用其它本体映射和转换。 InfoQ:请否请您简单介绍一下严格语义与浅层语义,以及沃森是如何平衡运用这两种技术的? 张雷:我不知道”严格语义”与“浅层语义”是否有精确的定义。我的理解是:“严格语义”是和符号化的、形式化的逻辑系统相关联的,通常是精确无二义的。每个符号的语义都在逻辑系统中由其它符号精确的解释和定义。“浅层语义”则是和自然语言或者常识相关联的,具有一定的模糊性。两者有不同的适用性。沃森通过使用机器学习的方法,来学习得到该在什么场合应用什么方法。 沃森代表自然语言处理和人工智能技术的突破 InfoQ:随着沃森在《Jeopardy!》中击败人类选手,人工智能再次成为热点话题:有人称沃森是人工智能发展的一个里程碑;有人认为人工智能的前途一片光明;还有一些人则对机器越来越聪明表示担心。相对于人工智能历史上的屡次失败,沃森无疑是一次成功的人工智能实践。作为沃森项目的参与者之一,能否请您谈谈沃森在人工智能实践上的成功经验?人工智能前景如何?还有,您认为对人工智能的担忧有必要吗? 张雷:对于人工智能实践来说,沃森的经验表明依靠单一或少数算法是很难成功的。而依靠大量的各种小算法的集成更容易取得进展。这似乎和生物界的多样性有着相似性。另外,沃森也说明,人工智能技术已经取得了相当大的进展,通过大规模的集成这些技术,很多我们看似很难的问题已经从“不可能解决”变为“可能可以解决”。例如,沃森表明,以前人工智能中的知识获取的瓶颈(knowledge acquisition bottleneck)似乎变成了一个可能可以解决的问题。 对人工智能的担忧在现阶段是没有必要的。我们还没有看到机器具有自我意识。所有的功能都是由人控制和提供的。在现阶段,人工智能技术,包括沃森,是用来帮助人的,而不是取代人的。 InfoQ:沃森除了用于《Jeopardy!》,还可以用于哪些领域?针对其他领域,需要做出哪些额外的努力?有没有什么是沃森不能做的? 张雷:沃森代表的是自然语言处理和人工智能技术的突破,可以应用于很多领域,例如医疗、金融、电信、政府服务等。例如,在医疗领域,医疗记录、文本、杂志和研究资料都以自然语言编写——这是一种传统计算机难以理解的语言。一个可以立即从这些文件中找出准确答案的系统能够给医疗行业带来巨大的改变。IBM最近宣布与Nuance通信公司签署协议,在医疗行业探索、开发沃森计算系统的先进分析能力,并实现其商业化。当然,为了让沃森真正服务于这些领域,可能还需要准备相应的专业知识库等额外的努力。沃森不是万能的,对于具有很大主观性或依赖个人生活经验的问题,沃森现在是不擅长回答的。 沃森的未来 InfoQ:沃森未来是否有2.0版本?如果有,下一步会做什么? 张雷:沃森的下一步开发计划主要是将沃森应用在实际生活的各个领域中,例如前面提到的医疗、金融、电信、政府服务等。 InfoQ:像沃森这样的巨型系统,并非一般企业所能拥有,但它提供的服务又是广泛需要的。在这种情况之下,沃森今后会不会考虑提供云服务? 张雷:沃森确实是一个庞大的系统。但具体来说,也就是运行在不到100台的IBM Power7服务器上。因此,它也并不是可望而不可及的。很多企业和机构已经拥有远不止100台服务器。当然,要让沃森服务越来越多数量的问答请求,需要的机器数量会上升。因此,我们也不排除通过云服务的方式来提供沃森。 InfoQ:最后,您能介绍一下IBM中国研究院在沃森项目中的主要工作及成果吗? 张雷:IBM中国研究院在研发沃森系统的过程中,发挥了重要的作用。我们为沃森系统采集、分析和使用各种结构化的知识,利用结构化和高可靠的知识提供问题解答,排除让系统显得“愚蠢”的答案,以及帮助沃森系统提高其学习能力。来自IBM中国研究院的很多技术成果已经融入在沃森系统中,而有的研究成果则为整个科研团队提供借鉴和参考。



via WordPress http://ift.tt/1eSdc29

Labels:

[repost ]IBM竞赛:用Watson开发认知类移动App

original:http://ift.tt/1eSdbLH 世界移动通信大会上,IBM宣布要举办一场开发竞赛,用于推广IBM Watson认知计算平台上的移动客户和业务APP。 比赛的获胜者将获得IBM的设计咨询和支持,并投放市场。 IBM Watson是计算机系统,却能回答自然语言描述的问题。虽说还没能通过图灵测试,但Watson能在电视游戏节目Jeopardy中战胜前冠军Brad Rutter和Ken Jennings。Rutter和Jennings这两名对手不是随便选出来的:Rutter是该节目的记录保持者,而Jennings以74场连胜拥有最高连胜记录。 Watson用到了多种编程语言,包括Java,C++和Prolog。Watson基于Apache Hadoop分布式计算框架、Apache UIMA(非结构化信息管理架构)框架、IBM DeepQA以及SUSE Linux企业服务器11操作系统。按IBM的说法,“用了超过100种技术做自然语言分析,资源辨识,假设探索生成,证据探索评分以及假设合并排序。” Watson的基本工作原理是在解析线索关键词的同时搜寻相关术语作为答案。其主要优势在于,为了寻找正确答案,Watson能同时高效运行上万种被证实语言的分析算法。找到相同答案的算法数量越多,Waston回答正确的可能性就越大。若是只用少量答案可选,Watson会通过核查数据库来确定答案是否有意义。 IBM的愿景中,认知计算可以细分为三种能力,每种能力对应于IBM所提供的一种特定服务: Watson Discovery Advisor意在通过自然语言处理找出数据中的正确答案并提供类人交互。 Watson Analytics允许用户通过视觉化展示探索大数据洞见,而不用进阶分析培训。 Watson Explorer意在通过统一视角帮用户发现并分享数据驱动洞见。 下一步,IBM创立的Watson组群会通过Watson Development Cloud开放Watson技术,从而允许第三方通过RESTful API获取Watson功能,进而设计、开发和部署认知应用。 其他公司也活跃于认知计算领域。MindMeld是一款在口语会话中动态提供话题建议的应用。作为其制作者,Expect Labs近期发布了自己的认知服务平台,该平台有助于构建类似Google Now的应用。Wolfram在2009年发布的计算知识引擎Wolfram Alpha能回答自然语言描述的问题,并生成人类可读的答案。最后,还有Google。近期采访Guardian时,Google技术总监Ray Kurzweil解释了自然语言处理对Google有多重要:“就单张网页而言,IBM的Watson是个相当弱的读者,但它读过Wikipedia的2亿张网页。基本上,我在Google所做的就是超越Watson——在Google的数据规模上做这件事。” 查看英文原文:IBM Launches Contest for Cognitive Mobile Apps using Watson



via WordPress http://ift.tt/1g2A1wh

Labels:

Thursday, March 20, 2014

[repost ]What’s New in JDK 8

original:http://ift.tt/1iA4syW Java Platform, Standard Edition 8 is a major feature release. This document summarizes features and enhancements in Java SE 8 and in JDK 8, Oracle’s implementation of Java SE 8. Click the component name for a more detailed description of the enhancements for that component. Java Programming Language Lambda Expressions, a new language feature, [...]



via WordPress http://ift.tt/1lSRLzz

Labels:

Wednesday, March 19, 2014

[repost ]绝对应当收藏的10个实用HTML5代码片段

original:http://ift.tt/1fHyyLK HTML5绝对是一个流行元素,受到如此多的公司组织的追捧,作为极客来说,岂能错过呢?在今天这篇文章中,我们将分享一些超实用的HTML5的代码片段,相信大家一定会喜欢! 正确的嵌入flash 如果你经常需要在网页中插入flash的话,这段代码你应该用的上: <object type="application/x-shockwave-flash" data="your-flash-file.swf" width="0" height="0"> <param name="movie" value="your-flash-file.swf" /> <param name="quality" value="high"/> </object> HTML5视频和fallback——并且支持flash 实用HTML5的一个好处就是简化了视频和音频的嵌入代码量,不过呢,如何兼容老版本的浏览器绝对是一个令人头疼的问题,特别是在天朝,老版本的浏览器绝对处于优势地位,下面代码或者能够帮你忙: <video width="640" height="360" controls> <source src="__VIDEO__.MP4" type="video/mp4" /> <source src="__VIDEO__.OGV" type="video/ogg" /> <object width="640" height="360" type="application/x-shockwave-flash" data="__FLASH__.SWF"> <param name="movie" value="__FLASH__.SWF" /> <param name="flashvars" value="controlbar=over&amp;image=__POSTER__.JPG&amp;file=__VIDEO__.MP4" /> <img src="__VIDEO__.JPG" width="640" height="360" alt="__TITLE__" title="No video playback capabilities, please download [...]



via WordPress http://ift.tt/1elwE7e

Labels:

[repost ]jQuery制作瀑布流(转)

original:http://ift.tt/1elwGfn “瀑布流布局”随着pinterest网的流行而出名,现在国内使用这种风格布局的网站也越来越多,比如说Mark之,蘑菇街,点点网,哇哦等等。我第一次听到这个布局名称是来自于“乔花写的《瀑布流布局浅析一文”,之后在群里也时不时有同学会问有关于这种布局的使用方法。今天我老话重谈,主要向大家介绍一些相关的制作插件,以及成功的案例,希望能给大家今后的工作有所帮助。 制作瀑布流布局的优秀插件 首先简单的向大家推荐几款制作瀑布流的jQuery插件,这些插件能帮助大家轻松的实现类似于pinterest的布局效果: 1.Masonry Masonry是一个动态的网格布局插件。每个元素水平方向都采用全float布局,但在垂直方向使用绝对定位来控制元素的位置,犹如彻墙一样,能做到见缝插针。 2.Isotope Isotope是一款实现动态布局的精致jQuery插件,是单独的CSS无法实现的,而且他可以通过jQuery选择器来控制元素的显示与隐藏等。 3.Blockslt BlocksIt.js是一个创建动态的网格布局的jQuery插件。它将HTML元素转换为“块”,它们的位置布局类似于网格布局的Pinterest一样。 4.Wookmark Wookmark是一款简单的动态网格布局的jQuery插件。 5.Pinterest Clone Layout 这是一个客隆了Pinterest网站布局的jQuery,方便你快速创建一个类似于pinterest布局效果的站点 6.Flex Flex是一个流体不对称的动画网格布局插件。它还有一个鼠标悬停时放大的功能。 上面六款都是jQuery插件,主要功能就是可以使用他们来制作大家所说的瀑布流布局,当然你要是认为他们不好,你可以自己动手写一个这样的插件,这点我相信您行的,但有很多不懂js的同学,还是可以用一用,顶个急。下面我们一起来看看哪些方网站在使用瀑布流布局。 谁在使用瀑布流布局? 下面展示的都是瀑布流布局的网站,看起来都很经典,然而看起来很熟悉,因为它们都是从Pinterest克隆出来的。否则,他们中的许多人只是简单的创造性使用动态的网格来展示他们的作品和内容。 1.Pinspire 一个经典的瀑布流布局案例,常常被人拿来客隆。 2.WoXiHuan 3.Huaban 4.Mishang 5.Trippy 6.Chill 7.Sworly 8.Veerle 9.All Womens Talk 10.GentleMint 除了这些案例之外,当然还有更优秀的,只不过我没有发现,如果大家手上还有更好的插件和案例,希望能与我们分享。谢谢大家。 2012年10月19日更新 7、Grid—A—Licious 2012年12月19日更新 8、jQuery.Shapeshift 这是一个jQuery插件,可以让你的每个项目列表进行瀑布流布局,这是一个瀑布流网格系统,还具有Responsive设计特性、具有随时拖曳、同时支持手机端的Touch事件。 2013年04月25日更新 9、Packery Packery是一个布局方面的jQuery插件,可以实现瀑布流,拖放布局等功能。 转载:http://ift.tt/1fHyyvj



via WordPress http://ift.tt/1elwGfp

Labels:

Monday, March 17, 2014

[repost ]复杂产品的响应式设计【知识篇】

original:http://ift.tt/1fRPBQ3 文/乐乘 【导读】 收到后台若干听众反馈,能否有一些设计或交互相关的资料分享。面对此类听众的需求,结合内容编排顺序。技术嘉年华特别准备了一个交互设计&前端的系列文章,预计发文7篇左右,本文是第一篇。如有反馈,请直接回复即可。 许多设计师已经理解并认可响应式设计理念,拖动窗口大小欣赏那些实现响应式设计的网站时心中默念:喔,效果真棒。 可是第一次启动一个响应式设计项目时心里开始打鼓:这该怎么开始?要学习哪些知识?究其原因,传统做法设计与技术界限相对分明,设计师出设计稿前端和开发负责实现彼此相安无事。 响应式设计是设计与技术紧密融合的新做法,对传统设计方法形成不小的冲击。 现在就来看下设计师第一次做响应式设计之前,需要了解哪些最重要的响应式设计知识。 原理:网页是如何变成响应式的? ETHAN MARCOTTE在第一次正式提出响应式设计概念的经典文章(http://ift.tt/1fRPBQ9 传统网页就像一盒巧克力,固定大小的巧克力(内容)装在固定尺寸的盒子(栅格)里,这样的页面无法随着外界环境来调整。 响应式网页就像一袋米,可流动的米(弹性内容)装在形状灵活可变的布袋(流体栅格)里,这袋米可以被压成不同形状。流体栅格是按照百分比来设定内容容器宽度,容器宽度会随着浏览器宽度变化而变化。光容器变成流动容器里面的内容不流动也是不行的,弹性内容就是把内容宽度也用百分比来设定。网页上文字天然是弹性的,图片、视频、控件、组件等内容用新的方法也可以设定为弹性的。 “流体栅格+弹性内容”让网页具备了响应能力,媒介查询起的作用是定义响应规则。就像各种不同的外部容器,把一袋米摆在盘子、杯子、筐子里将呈现出不同形状。 媒介查询探测浏览器宽度,并在指定宽度范围内加载不同的样式,写成代码时候一般长成下面这样。翻译成设计师语言就是:当屏幕宽度小于480px时加载…样式,当宽度在480px-600px之间时加载…样式。 栅格:响应式网页尺寸怎么计算? 传统网页只需考虑一种固定尺寸,设计师一直不用为尺寸纠结。当宽度从像素变成百分比时,对设计习惯形成了巨大挑战。下面介绍一种我们项目中使用的响应式栅格制定方法。 Step1.选择栅格列数 栅格是一种让网页布局变得有秩序的设计工具,常用的栅格系统有8列、10列、12列、16列、24列等。我们选择的是12列系统,因为12这个数字可以被2、3、4、6整除,12列的栅格可以被3等分、4等分、甚至6等分,这个是8列、10列、16列栅格做不到的。当然24列栅格跟12列栅格优势一样,而且比12列栅格更精密,只是24列栅格计算稍显复杂。12列栅格已经可以满足大部分项目的需要。 Step2.选定临界点,绘制基础栅格 临界点(breakpoint)是指响应式网页发生布局变化的关键点,也就是前文提到的“当屏幕宽度小于480px时加载…样式,当宽度在480px-600px之间时加载…样式”。响应式网页理论上有无数种尺寸,我们不可能也没有必要为每个尺寸都去做设计,需要做的是选定几个临界点做设计,在两个临界点之间是延续上一个临界点的布局。 12列栅格的页面宽度(d)是由12个列宽(c)加上11个列间距(g),所以临界点计算公式是:d=12*c+11*g。 参考主流设备的尺寸(比如宽屏PC1280px,窄屏PC和平板横屏1024px,平板竖屏768px,手机480px或320px), 选择符合项目需要的c和g的值,就可以确定相应的临界点,画出基础的栅格系统。 举个例子,当c=70px,g=30px,临界点就是12*70+11*30=1170px。此时设计师面对的是页面宽度为1170px的12列栅格,回到熟悉的环境,设计起来又游刃有余了。 c和g的值有那么多选择,应该依据什么原则来定呢?最重要的原则是根据内容需要来定。比如一个以文字内容为主的社区型产品,1170px页面宽度下30px的列间距是一个非常合适的尺寸,当页面宽度缩小到1000px或750px时15px的列间距已经足够。 Step3.把模块放到栅格里,计算模块百分比宽度 接下来看看如何在布局时候应用响应式栅格。假设我们在栅格里面画一个模块,模块宽度(b)占据栅格3个列,它在1170px这个临界点时候宽度就是b=70*3+30*2=270px,那么这个模块的百分比宽度就是270/1170=23.07692307%。当页面宽度缩小到1000px时,这个模块宽度b=65*3+15*2=225px,它的百分比宽度变成225/1000=22.5%。 对比一下两个临界点下这个模块宽度的变化,宽度从270px变成225px,百分比宽度也从23.07692307%变成22.5%。设计师按照270px和225px两个尺寸来设计,前端开发在CSS里用23.07692307%和22.5%两个数字来设定模块宽度。 了解了响应式设计基本原理和流体栅格这两个最基础也最重要的知识,你可以开始动手尝试进行第一个响应式设计了。除此之外还有图片、视频、控件、导航等常用的设计元素在响应式设计里面都有新的处理方式,这些知识随着项目推进你逐步深入了解后,相信你对响应式设计会建立起系统的认识。如果想快速全面了解这些知识,《Responsive web design》《响应式设计实践》这两本书籍是不错的选择,ResponsiveCN响应式设计中文主题站上也有很多有价值的内容。 最重要的是,赶紧动手开始你的第一个响应式设计项目。 【嘉年华推荐】



via WordPress http://ift.tt/1oi7g5o

Labels:

[repost ]复杂产品的响应式设计【流程篇】

original:http://ift.tt/1evCwHE 都说2013年将是响应式设计爆发的一年。一淘设计团队在去年一淘首页改版时初步尝试了响应式,最近在一淘“玩客”项目中有了更加深入地应用,第一次在复杂产品中实现了全站响应式。中间积累了一些经验也踩了不少坑,于是就有了这个响应式设计三部曲,此系列文章包含理念篇、知识篇和流程篇。 响应式网页不像传统网页只需考虑一种状态,不是交付一套设计稿就完事儿了,它给设计、前端和开发团队之间的协作模式带来新的挑战。在一个复杂产品全面响应式的项目里,交互每个阶段该产出什么?交互与视觉如何协作?前端何时介入?哪些事情让后端开发来做更合理?经历“玩客”第一版后,我们得到了一些答案。 响应式设计之所以叫响应式“设计”而不叫响应式“技术”,是因为它是一项设计先行的工作。需要设计先明确好响应方式再实现出来,不能出一套设计稿后等着前端看情况把它变成响应式网页。所以整个流程最初从交互阶段开始,分成6个主要步骤,视觉、前端、开发等角色根据情况尽早介入。 d86bbb8cdc879cb6d31f23e424a3ea8d Step1:信息架构,确定内容策略。 根据产品定位和用户分析,交互设计师确定站点信息架构。(信息架构呈现方式有很多种,这不是本文重点,不详述)。 这时候可以明确这个产品有多少页面,每个页面包含多少内容,内容优先级是什么。很多产品包含N多页面,每个页面一一考虑响应式设计容易造成混乱且成本巨大。所以下一步重要工作是分析页面类型把页面归类。以玩客为例,可以把10多个页面分成三类:列表类页面、详情类页面、操作类页面。 11df100cb3cb20c3fa7fa477f7459896 Step2:移动框架 先说下为什么第二步要先设计移动框架。移动优先是移动互联网浪潮下应运而生的理念,由Luke Wroblewski最早提出。移动优先并不是指移动更重要,响应式设计理念里设备是同等重要的。它是指优先设计手机端的体验,有三个原因: 手机让设计专注,强迫你想清楚什么信息是最重要的。因为手机屏幕小,每屏呈现的内容少;触屏手机使用手指操作而非鼠标这样的精密设备来操作,对操作有更高要求;手机使用场景更加丰富,很多场景用户是缺乏耐心的,比如当你排队看电影正在找手机上的电子票,马上排到你了翻半天却迟迟找不到那张票这是多么令人崩溃的事情。 手机许多特性让设计更强大。手机上的语音输入、地理位置定位、丰富的手势操作、越来越多传感器,手机交互比PC拥有更多可能性。从手机开始设计,让你更早地思考如何发挥这些特性。 手机正在迅猛增长。手机即将超越PC,成为最主流的上网方式,这个趋势是不可逆的。 从移动开始做设计对习惯了PC环境的设计师可能是一种挑战,思考方式工作习惯都被迫做出改变。但这种改变必须去适应,因为用户习惯在改变。 回正题,上一步已经把页面归类并确定每个页面内容优先级,现在接着分析每种类型页面的导航、主体内容等框架结构,最终得出一份框架结构表。从玩客框架结构看出,全局导航是所有页面公共的,局部导航只有列表类页面才有,详情类页面都有一个“页面主人”信息,而关联导航不是每个页面都有。 2f31a65f4178a6ab2980bf02df547925 接着开始设计手机端“超细长页面”的框架(因为手机上一般是单列布局,所以页面又细又长)。这一步开始把信息结构设计成最粗放的框架,可以在白板或纸面上完成。要实现的关键目标是:把这个页面最需要呈现给用户的内容放在最重要的位置,要符合手机上的阅读和操作习惯,尽量利用手机设备的特性。 bc7ee617fa4bd386158f4d86a8f52383 Step3:响应式框架 根据手机端的框架拓展出平板和PC端框架。这是复杂产品实现响应式设计的关键步骤,它是让众多页面有条理地响应起来的基础。第一件事情是确定响应式模式,即从手机到平板到PC,导航怎么变化,页面布局用哪种响应方式,根据内容优先级如何调整模块顺序,等等。玩客在PC端以三栏布局为主,左边栏作为局部导航或者主人信息区,中间栏始终是页面主体信息,当页面需要关联导航时统一放在右边栏。 413c5c413e40b7d04561dd1eef7d1504 到现在这个阶段所有页面的响应式开始有规则可循,下一步工作就是继续细化规则,把框架精确到具体尺寸。具体说来就是制定流体栅格系统。流体栅格系统是基于百分比的栅格布局工具,具体的制定方法会在另外一个篇章【知识篇】中详细介绍。 e7ffa47d451a98083642a7f256607cfe 响应式是一种设计理念与前端技术紧密结合的新兴形态,鼓励尽早进行跨职能沟通协作。交互确定响应式框架和栅格系统后,其他角色就可以同步开展工作了。前端开始介入完成栅格和框架搭建,产出页面基础框架。视觉同步开始探索和定义视觉风格探索,制定视觉框架,产出风格关键词、产品配色方案。整个过程需要几个角色不断讨论确定。 Step4:模块设计 按照移动优先的原则应该先进行移动端的模块细节设计,不过我们选择了从PC端开始设计细节。因为PC端开发能够充分暴露业务复杂度,项目团队的设计、开发、测试在PC环境下拥有成熟的工具和流程,从PC开始让开发过程更顺畅。所以个人认为移动优先是确定内容策略时应该遵循的理念,细节设计和开发过程是否要移动优先,取决于产品定位和项目团队情况。 响应式框架确定了页面结构和响应模式,模块设计这个过程开始完善所有信息排版和交互形式,这是交互设计师最熟练也是最耗时的工作。这个过程与传统流程没太大区别,只是心里要不断提醒自己,这个模块不是只为这个设备设计,它在其它设备下会出问题吗? a10fcbba6499a2c8e3799e49ed0eaf20 交互确定页面模块细节后可以抽取出产品用到的控件、组件和公共模块,现在视觉和前端开始做一件有别于传统流程的事情。视觉根据前期定义的风格设计控组件和公共模块的视觉效果,把它们拼成一个模拟的页面,我们称之为风格拼贴稿。前端再把风格拼贴稿里的控组件和公共模块实现出来,统一维护一套组件规范代码。 传统的做法往往是页面视觉定稿后设计师开始整理视觉规范标注给前端。风格拼贴稿是将这个工作尽可能提前,并变成一个设计协作利器。它的好处是: 1、一个页面的视觉效果实际上是由一堆控组件和公共模块组成,用真实的控组件和公共模块拼贴的模拟页面已经可以呈现出产品的视觉风格。把一个产品10多个页面的视觉稿全部完成定稿是非常费时费力的事情,产出一份风格拼贴稿则轻松得多。所以它是一个高效的设计工具。 2、复杂产品总是涉及多个设计师和前端并行工作,尽早地把控组件和公共模块抽取出来统一管理,是保证视觉风格一致性的有效方法。避免不同设计师同时设计同一个控组件或公共模块,减少重复开发造成的浪费。也大大降低后期更新和维护页面的成本,比如当需要修改“关注”按钮时只需改一个就能全站生效。 3a996c462a604fbc4c5a5cae69913807 Step5:响应式模块设计 PC端页面模块细节和风格拼贴稿完成后,剩下工作是拓展出平板和手机端的完整设计稿,前端产出全部响应式页面代码。进行响应式模块设计时最需要关注的仍然是让操作符合设备习惯,充分利用设备特性。 至此,一个全站响应式产品的页面就陆续出来了。很多人认为响应式设计维护成本高的理由是一个页面要同时设计多套设计稿。玩客这次经验告诉我们,确定一套设计稿和栅格系统后再拓展出其它设备下的设计方案,工作量远比想象中的低。 f260658e847a7844d0483e9ef60a372c Step6:测试&讨论&优化,提交开发 离大功告成还差最后一步,在真实设备下测试页面效果,项目团队讨论并持续优化。 在提交开发之前需要尽早明确服务端响应(RESS)的策略。服务端与客户端结合是目前解决响应式页面性能问题的最合理方案。哪些大图片在移动设备下只需输出小尺寸图片?哪些内容在什么设备下是不需要开发输出的?哪些可以减少输出的数据数量?与开发团队协作的响应式可以有效控制页面文件大小,避免页面成为移动设备上烧用户流量的罪魁祸首。 测试通过后提交页面进入开发环节。我们从可用性和可访问性两方面总结了一份响应式页面测试checklist,测试要点包括但不限于以下内容。欢迎补充。 0ae973bc9416a0326da7b5b0b49fa7dc 结语 以上流程是我们团队做完一个全站响应式项目后集体总结得出,不管你是对响应式感兴趣、正在做响应式,还是即将开始做响应式,希望对你有所帮助。 我在#IxDC2013中国交互设计体验周#将会主持一个《跨PC和移动的交互设计》工作坊,有大量关于响应式设计的内容和实战,还会探讨多设备联动交互的设计。 时间:06月23日 09:00- 12:00, 期待在杭州与你交流。 跨PC和移动的体验设计



via WordPress http://ift.tt/1guuiQ1

Labels:

[repost ]玩转 Java Web 应用开发:Play 框架

original:http://ift.tt/1lI8xkM 使用 Play 框架快速开发 Web 应用 虽然目前有很多种 Java Web 应用开发框架,但 Play 框架是一种新兴的框架,可以帮助开发人员高效的构建 Web 应用。本文详细介绍了 Play 框架的使用,包括模型层、控制层、视图层和 HTTP 路由等内容。通过本文的介绍,开发人员可以了解到如何用 Play 框架来快速开发 Web 应用。 概述 Play 框架是一个完整的 Web 应用开发框架,覆盖了 Web 应用开发的各个方面。Play 框架在设计的时候借鉴了流行的 Ruby on Rails 和 Grails 等框架,又有自己独有的优势。使用 Play 框架可以方便和高效的开发出 Java Web 应用。通过 Play 框架提供的命令行工具,可以快速的创建出一个 Web 应用的基本骨架。它的 Java 代码动态编译机制,使得修改代码之后,不需要重启服务器就可以直接看到修改之后的结果,调试起来非常方便。它使用 JPA 规范来完成领域对象的持久化,可以很方便的使用不同的关系数据库作为后台存储。使用 Play 框架可以很容易的构建使用 REST 架构风格的应用。它使用 Groovy 作为视图层模板使用的表达式语言。模板之间的继承机制也可以避免代码的重复。总的来说,Play [...]



via WordPress http://ift.tt/1lI8xkQ

Labels:

[repost ] Remove results below a certain score threshold in Solr/Lucene?

original:http://ift.tt/PIdzDL s there a built-in functionalities in solr/lucene to filter the results if they fall below a certain score threshold? Let’s say if I provide a score threshold of .2, then all documents with score less than .2 will be removed from my results. My intuition is that this is possible by updating/customizing solr or [...]



via WordPress http://ift.tt/PIdzDP

Labels:

Sunday, March 16, 2014

[repost ]浅谈性能优化方法和技巧

original:http://ift.tt/1cN0zH0



via WordPress http://ift.tt/NkgMaD

Labels:

[repost ]data mining and statistics :what’s the connection

original:http://ift.tt/1nuRDuD



via WordPress http://ift.tt/1gqpYB8

Labels:

Wednesday, March 12, 2014

[repost ]puppet和capistrano 简要的对比

original:http://ift.tt/1erNC0u capistrano和puppet都能够做到部署的功能。那他们有什么区别呢?capistrano是在执行action,puppet是在维护state。本文将介绍两者之间的不同。并剖析其最初面对的问题和设计目标如何造成了这种不同。同学们,不能一刀切哦。 原文地址 我们现在不仅使用capistrano部署Ruby on Rails的应用,也用来安装和管理我们的物理服务器和虚拟(基于Xen)服务器。我们编写capistrano的recipe用来添加用户,安装apache和mysql,配置Xen虚拟机等等。邂逅了puppet,我开始惊讶他们之间本质的不同。puppet宣称能够让用户自动化管理服务器,扩展集群,这个目标我们已经通过实现定制的capistrano recipe实现了。那么,他们之间的不同是什么呢? 设计目标 首先,我尝试理解这两个工具的设计目标。capistrano开发出来是为了部署rails应用。当然,他非常易于扩展而像我们一样用来管理服务器,像deprec这样的recipe汇集网站已经为capistrano提供了这些功能,但是,capistrano最基本的功能仍是部署。 puppet不同于capistrano,他一开始作为生命周期管理工具问世。他提供了定义服务间依赖和服务预期状态的能力,例如,一个配置文件描述apache应处于运行中,其运行需要依赖一些包。然后puppet自动化的达到你所设定的这个状态。这个不同的设计目的,使我们使用两个工具的方式是如此的不同。 使用方法 capistrano的recipe使用命令式的方法描述如何做。capistrano的recipe展现了系统上“动态”的视图。你能看到配置是如何一步步变化的。capistrano的recipe解答了“我想做什么”的问题。 puppet用声明的方法描述系统预期的状态。puppet的manifest解答了“他看起来应该是怎样的”的问题。puppet从这份配置中生成步骤,并自动的应用系统上。 特性对比 我发现了他们之间一些有趣的特性,整理成一个列表,目前还不完整,希望起到一个概览的作用。 特性 puppet capistrano 配置语言 “元”语言(自己写的DSL) Ruby dry-run模拟执行 有 有(2.5+) 幂等 是 否 对事务的支持 支持 支持 回滚 不支持 支持 随机监控服务器 不支持 支持 操作模式 daemon进程拉取配置 用户推 定义依赖 service,packages,files复杂依赖 dir,writablity,command,gem,regex的单向依赖 解决依赖 自动 手工 结论 puppet 和 capistrano 处于不同的层,puppet更多的处理依赖的管理而不是脚本任务。在通常场景下,puppet 负责保证特定的系统配置,capistrano负责动态的步骤,像部署应用的新版本或者随机监控服务器(ad-hoc server monitoring)。但从我的经验和deprec上展示的脚本,capistrano能对配置系统起到很大的帮助。



via WordPress http://ift.tt/1lVZ6Bg

Labels:

[repost ]Bootstrap 3 Less Workflow Tutorial

original:http://ift.tt/1cjm5Qr Bootstrap 3 is still new, and you may not be totally familiar with how it uses Less, and how you can use it too. This is a tutorial on a Less workflow that can get you up and running and using Less right away. It can be confusing to set up a workflow your [...]



via WordPress http://ift.tt/O1906f

Labels:

[repost ]Less介绍及其与Sass的差异

original:http://ift.tt/XATFqs 自从一个月前偶然发现Less之后我就开始坚定的使用它了。就CSS本身而言,对于我来说从来就不是问题,但是我很好奇的相法,使用变量来沿着一个调色板为我的网站或者模板创建一些东西。拥有一个提供固定数量给我选择的调色板,可以让我避免颜色太过跳跃,以致于从一个已定的风格中脱离。 Less英文官网需要开启VPN才能正常访问,如果你无法打开Less官网,建议您移步到Alexis Sellier领导的团队所译的中文官网Less中文。 ——大漠 事实证明,Less——以及Sass对于这个功能,远不止这些。LESS和Sass在语法上有些共性,比如下面的这些: 混合(Mixins):class中的class; 参数混合(Parametric):可以像函数一样传递参数的class; 嵌套规则(Nested Rules):class中嵌套class,从而减少重复的代码; 运算(Operations):css中的数学计算; 颜色功能(Color function):可以编辑你的颜色; 命名空间(Namespaces):样式分组,从而方便被调用; 作用域(Scope):局部修改样式; JavaScript表达式(Javascript evaluation):在CSS样式中使用Javascript表达式赋值。 上面八条在LESS和Sass中是一个很重要的概念,只有把上面的概念理解清楚了,才能更好的学习LESS和Sass,在这里我借花献佛,从各处摘抄了一下,对这几个概念的简单的介绍: 1、Mixins,此处我译成了混合,也有很多同行朋友将其译成混入,不管是混合也好,还是混入也罢。其主要意思是将一个定义好的class A引入到另一个class B中,从而简单实现class B继承了class A的所有属性。 2、Parametric,带参数混合,像函数一样在class A中定义一个参数的默认值、或者参数属性集合,还可以是@arguments蛮量,然后将定义好的class A引入class B中 3、Nested Rules译成嵌套规则,指的是在一个选择器中嵌套另一个选择器来实现继承。从而减少了代码量,并且增加了代码的可读性。 4、Operations运算,在CSS中使用加、减、乘、除进行数学运算,主要运用于属性值和颜色的运算,可以轻松实现属性值之间的复杂关系。 5、Color function颜色功能,颜色的函数运算,颜色会先被转化成HSL色彩空间,然后在通道级别操作。 6、Namespaces命名空间,将一些变量或者混合模块打包封装,更好的组织CSS和属性集的重复使用; 7、Scope作用域,先从本地查找变量或者混合模块,如果没有找到的话就会去父级作用域中查找,直到找到为止,这一点和其他程序语言的作域非常的相似; 8、Javascript evaluation,javascript的表达式,在Less或sass文件中可以使用js的表达式,用来赋值。 ——大漠 LESS和Sass之间的主要区别是他们的实现方式不同,LESS是基于JavaScript运行,所以LESS是在客户端处理。 另一方面,Sass是基于Ruby的,是在服务器端处理的。很多开发者不选择LESS是因为LESS输出修改过的CSS到浏览器需要依赖于Javascript引擎,而Javascript引擎需要额外的时间来处理代码。关于这个有很多种方式,我选择的是只在开发环节使用LESS。一旦开发完成,我就复制粘贴LESS输出的到一个压缩器,然后到一个单独的CSS文件来替代LESS文件。另一种方式是使用LESS APP来编译和压缩你的LESS文件。两种方式都将是最小化你的样式输出,从而避免由于用户的浏览器不支持Javascript而可能引起的任何问题。尽管这不大可能,但终归是有可能的。 LESS转译工具除了LESS APP之外,现在目前流行的主要有:SimpLess、WinLess、CodeKit.app、LESS编译辅助脚本-LESS2CSS。 ——大漠 更新:在Twitter的评论上,LESS和Sass对比讨论也是相当的热烈。也请考虑Adam Stacoviak回复。现实情况,Sass确实需要在Ruby上运行,然而他不需要在服务器上编译CSS。它也可以在本地编译(正如前面提到的LESS),编译后的CSS可以运用到你的项目上,Wordpress主题中.引擎模板,或者任何服务器就像你的CSS文件。正如Smashiing Magazine读者和其他读者存在很大的差异,我猜想有很大一部分读者正在使用Mac阅读这评论一样。Mac也默认提供了对Sass的安装和支持,只需要一行命令就可以(sudo gem install sass)。 如果你安装了Sass,你在本地就可以将Sass转译成CSS,并将转译的代码用到你的项目中。如果你还不知道如何安装Sass(或者Compass),我们也写了一份详细的指南Getting Started with Sass and Compass,可以很好的帮你清除这个障碍。 [...]



via WordPress http://ift.tt/1erDMvw

Labels:

[repost ]Redis计数在新浪微博的应用

original:http://ift.tt/1lVN5vF 微博业务的迅速发展,对基础架构层面的要求也越来越高。新浪作为国内最早使用redis,并且是国内最大的redis使用者,在redis的使用上,也在逐步优化和提高。 作为微博中一项重要的数据,计数类业务在微博业务中占的比重和重要性逐步提高。计数结果的准确度直接影响用户体验,并且很容易引起用户的投诉。在计数业务上,在不断的优化和改进中,我们主要经历了以下三个阶段: 初级阶段 从2010年开始,使用redis-2.0版本。在最初业务数据比较少的时候,表现相当不错。但随着数据量和请求量的不断增加,一些问题逐渐暴露出来。 主从同步问题 首先遇到的是主从的同步问题。它的原理是当master接收到slave的同步请求后,把内存的数据fork出一个子进程dump出来,形成rdb文件,然后传到slave,slave再把这个文件加载到内存,之后的增量更新由master在执行完每条修改命令后立即同步给slave。 在网络出现问题时,比如瞬断,会导致slave里的数据全部重传。对单个端口来说,如果数据量小,那么这个影响不大,而如果数据量比较大的话,就会导致网络流量暴增,同时slave在加载rdb时无法响应任何请求。 持久化问题 计数业务中多数使用redis作为存储,因此都开启了aof,并配置为每秒做一次fsync操作将写操作刷新到磁盘。随着aof的增长,需要定期rewrite。Rewrite的机制和生成rdb的过程类似,都是fork出一个子进程来完成的,子进程对于磁盘的持续写入会导致父进程的fsync操作阻塞,造成大量请求超时。 版本升级问题 由于redis在使用初期bug较多,版本迭代频繁,而版本升级需要关闭redis进程并重新加载aof。对于大量使用redis的微博业务来讲,这样的升级成本也越来越难以承受。 内存使用问题 2.0版本的redis,在内存使用上相对比较粗放,对于计数这样一个简单的key-value,占用的内存达到100字节以上,存在比较多的优化空间。 进阶阶段 针对redis使用初期存在的问题,我们逐个进行了改进。主从复制参考mysql的同步方式,使用rdb+aof结合的方式,解决了网络瞬断引起的重传问题,同时限制子进程做后台dump时对磁盘的写入,期间暂停主进程的fsync操作,解决了慢请求的问题。 针对计数业务,我们开发了专用的版本redisscounter,单个key-value占用的内存key的长度加4个字节的value,将内存的使用量降低到原来的1/4以下。通过预先分配内存数组和double hash技术,消除了redis中hash表的大量指针开销。 对于版本升级的问题,我们将redis的核心处理逻辑封装到动态库,内存中的数据保存在全局变量里,通过外部程序来调用动态库里的相应函数来读写数据。版本升级时只需要替换成新的动态库文件即可,无须重新载入数据。通过这样的方式,版本升级只需执行一条指令,即可在毫秒级别完成代码的升级,同时对客户端请求无任何影响。 有了上面的改进后,新版本开始大量应用,多数业务都可以作为完整的存储替代以前的mysql+memcached组合。对于微博的评论数和转发数,由于微博条目不断增加,无法保存全量数据,因此采用mysql+redisscounter组合的方式,mysql保存全量数据,使用两组redisscounter保存最近几个月的热数据,通过定期滚动两组redisscounter里的数据来清理冷数据。 高级阶段 随着微博的发展,针对单条微博的计数也不断增加,从原来的评论数、转发数,又增加了表态数,2013年还上线了阅读数。Redisscounter不能很好的解决这类扩展问题,同时上面的mysql+redisscounter的滚动方式也过于复杂,定期的滚动操作很容易出现问题。针对这类问题,我们再度做出改进,将key由原先的字符串改成微博id,同时对于每条微博的评论转发等计数,我们统计发现,绝大多数微博的计数都可以用10~15个bit来保存,因此可以将多个计数保存到一个4字节的value里,过大的计数值在内存中另外开辟一块空间来保存。这样通过一条get命令即可获取该微博的所有计数。同时针对微博业务的特点,越老的微博被访问的次数就会越少,在内存使用多个数组保存不同范围的微博,内存不足时将最老的一组微博dump到ssd上,内部自动实现的滚动可以保证热微博全部在内存里。对于落到ssd上的老数据的访问,通过异步的io线程来读写,经过这样的改进后,去掉了原先的mysql存储,降低了业务开发成本和运维成本。 从redis在计数业务上的发展经历可以看出,技术的进步是由业务的需求推动的。随着业务的发展,还会遇到更多新的挑战。希望我们走过的这些改进之路对于读者在使用redis的过程中能有所帮助。 感谢张龙对本文的审校。



via WordPress http://ift.tt/1lVN0rB

Labels:

[repost ]Apache Solr 4.7 vs ElasticSearch 1.0

original:http://ift.tt/SVABC2



via WordPress http://ift.tt/1hbty4v

Labels:

Monday, March 10, 2014

[repost ]知道创宇研发技能表 V2.2

original:http://ift.tt/1k9WVqD 说明 通用技能 公司与个人 沟通、反馈、责任 任务四象限 新事物的敏感性 成长 牛人姿态 完成的定义 比如写个POC 熟练的定义 比如熟练SQL注入 好书推荐 推荐理由 鸡汤类 黑客与画家 浪潮之巅 洁癖类 敏捷类 产品类 神书 … 专业技能 原则 基础必备 HTTP抓包与调试 什么是跳转 服务端跳转 客户端跳转 Python编码规范 编码规范 入门书 Office能力 熟练Vim 算法 正则表达式 研发能力 瀑布模型 需求分析能力 调试能力 敏捷思想 翻墙 Web安全 Web服务组件 安全维度 Web安全标准 实战环境 XSS SQL 500多个WSL靶场 渗透虚拟机/BT5/Kali 书 Papers 研发清单 [...]



via WordPress http://ift.tt/1g0j1Xe

Labels:

[repost ]WHAT IS A HACK DAY?

original:http://ift.tt/1lnzgCX Now and then, developers like to get together, get creative and build cool stuff. We call this a Hack Day, because developers are hacking stuff around, experimenting, improvising, creating and playing. This kind of hacking has nothing to do with trying to access high security computers in Moscow or Langley, because this is about [...]



via WordPress http://ift.tt/1cpiVxF

Labels:

[repost ]The Hack Day Manifesto

original:http://ift.tt/HZLwXi o you’re organising a hack day or hackathon? Here are some basic requirements to make your event a success, and avoid the common pitfalls that could otherwise ruin it. If you cannot provide any of the following, make it clear to guests before registration. Attendees are generally forgiving when clear communication is given. These [...]



via WordPress http://ift.tt/1ejqelD

Labels:

[repost ]Mission Statements and Vision Statements

original:http://ift.tt/NdYAs8 Vision Statements and Mission Statements are the inspiring words chosen by successful leaders to clearly and concisely convey the direction of the organization. By crafting a clear mission statement and vision statement, you can powerfully communicate your intentions and motivate your team or organization to realize an attractive and inspiring common vision of the [...]



via WordPress http://ift.tt/PiD6mF

Labels:

Saturday, March 08, 2014

[repost ]Web Data Commons – RDFa, Microdata, and Microformat Data Sets

original:http://ift.tt/1k358N7 Extracting Structured Data from the Common Web Crawl More and more websites have started to embed structured data describing products, people, organizations, places, events into their HTML pages using markup standards such as RDFa, Microdata and Microformats. The Web Data Commons project extracts this data from several billion web pages. The project provides the [...]



via WordPress http://ift.tt/1faHYUH

Labels:

Friday, March 07, 2014

[repost ]Durandal快速入门

original:http://ift.tt/1jZ7Z9U Durandal是一个轻量级的JavaScript框架,其目标是单页面应用(SPAs)的开发变得简单而优雅。它支持MVC、MVP和MVVM等模式,因此不论你采用哪种类型的前端架构,Durandal都能胜任。 Durandal以RequireJS为基础,加上一个轻量级的惯例层,带来了令人惊叹的生产效率,并且帮助你维持稳健的编码实践。配上开箱即用的富界面组件、模态对话框、事件/消息、组件、过渡效果、导航等等,使你可以轻松开发出任何你能想象的应用。 尽管Durandal才发布大约一年时间,但其社区正以飞快的速度成长。 因此,我们推出了一个Kickstarter来帮助我们在2014年完成一些神奇的事情,希望你能关注。但现在,我将向你展示如何开发一个简单的Durandal程序。 要开始使用Durandal,可以有多种方式,这取决于你的平台。因为Durandal是一个纯JavaScript库,独立于任何服务端平台,我们尝试用多种方式来打包,以满足各类Web开发人员。在本教程中,我们将直接使用HTML Starter Kit。你可以在官方网站上直接下载。 下载完HTML Starter Kit后,解压缩,你就可以直接在Firefox各版本中打开index.html页面,运行其示例程序了。或者你也可以将其部署到Web服务器中,浏览其index页面。 Starter Kit演示了一个基本的导航架构,包括导航、页面历史、数据绑定、模态对话框等等。当然,我们不只是看看而已,我们要从头开始写一个小程序。首先打开app文件夹,删除里面的所有内容,然后删除index.html。这样我们就有了一个空项目,并且预配置了所有必须的scripts和css。 *注:IE, Chrome和Safari可能无法从文件系统中直接打开这类文件。如果你仍希望使用这些浏览器,可以将其部署到你喜欢的Web服务器中。 Index.html 我们开始编写index.html文件,内容如下: <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="lib/bootstrap/css/bootstrap.css" /> <link rel="stylesheet" href="lib/font-awesome/css/font-awesome.css" /> <link rel="stylesheet" href="lib/durandal/css/durandal.css" /> <link rel="stylesheet" href="css/starterkit.css" /> </head> <body> <div id="applicationHost"></div> <script src="lib/require/require.js" data-main="app/main"></script> </body> </html> 我们看到,文件中只有一些css样式文件,一个id为applicationHost的简单的div, ,一个script标签。我们加上了Bootstrap和FontAwesome,使界面看起来美观一些,但它们并不是Durandal所必须的。我们要关注的关键代码是script标签。 Durandal采用RequireJS作为其核心构件之一,鼓励模块化的编程方式。在Durandal应用中,所有的JS代码都写在模块中。上文index.html中的script标签就是用于加载RequireJS来完成框架的模块策略。当模块加载器完成初始化后,它通过data-main属性的值来启动应用。就像C语言中的main函数一样,data-main属性指向的是主模块,是整个应用的入口。让我们进行下一步,创建这个模块。首先创建一个名为main.js的文件,把它放到app文件夹下。其代码如下: main.js requirejs.config({ paths: { 'text': '../lib/require/text', [...]



via WordPress http://ift.tt/1jZ7Z9Y

Labels:

[repost ]Durandal document

original:http://ift.tt/1f5XJMA Table of Contents Starting Out Introduction Durandal’s Edge Get Started Set Up Options Grunt Mimosa NuGet The Visual Studio MVC Project Template Bower Manual Setup The Samples A Brief Explanation See The Samples In Action API Documentation Common Tasks Creating a Module Creating a View Using Composition Adding a Splash Screen Debugging Creating a [...]



via WordPress http://ift.tt/O1efmh

Labels:

Tuesday, March 04, 2014

[repost ]Measuring Complexity Correctly

original:http://ift.tt/1f22SQX Code complexity is an excellent predictor of defect probability. However, because the measure is poorly understood and badly applied, it does not deliver its most significant benefits. Code complexity is an important and valid metric. Its most common unit of measure is derived via cyclomatic complexity and is frequently referred to as the cyclomatic [...]



via WordPress http://ift.tt/1f22UbA

Labels:

[repost ]Measuring Code Complexity

original:http://ift.tt/1fEJzTR Lately, development managers have put a lot of interest in measuring code quality. Therefore, things like code reviews and analysis tools have become very popular at identifying “Technical Debt” early. Several tools exist for Java: Sonar, JavaNCSS, Eclipse plugins; as well as other languages: Visual Studio Code Analysis, PHPDepend, among others. What is Technical [...]



via WordPress http://ift.tt/1fEJzTS

Labels:

[repost ]Metrics categories for Java™ Software Metrics analysis

original:http://ift.tt/NrQYtN Metrics categories for Java™ Software Metrics analysis Most of the software metrics described in this topic can be associated with threshold values. When these values are not respected, it is generally recommended that the software component be refactored, often simplified. Category Description Basic Metrics Analyze basic software metrics. These metrics can be indicative of [...]



via WordPress http://ift.tt/1kUgD9z

Labels:

[project ]Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard.

original:http://ift.tt/ITUVUj Overview Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code to spare humans of this boring (but important) task. This makes it ideal for projects that want to enforce a coding standard. Checkstyle is highly configurable and can [...]



via WordPress http://ift.tt/1kUaKt5

Labels:

[repost ]七个垂手可得的敏捷开发工具

original:http://ift.tt/OWGVhd 摘要:虽然说敏捷开发是一种以人为核心,以迭代、循序渐进相辅的开发方法,但是少了顺手的工具就犹如骑士没了骏马一样。这里就给你介绍七款用于敏捷开发的炙手可热的工具。包括:Jira、Axosoft OnTime Scrum、LeanKit等。 软件开发的项目经理通常需要权衡使用什么样的高效工具、如何制定项目进程计划表等等的关键因素。敏捷工具的合适选用对开发项目起到推波助澜、事半功倍的效用! 1. Jira/Jira Agile JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。 环保服务公司Comanco的项目经理Astrid Byro说Jira是公司分布式技术团队的天赐之物,因为这个技术团队分布在卡塔尔、德国和英国,使用Jira Agile可以让项目经理随时随地的看到项目开发的代码、配置和文档,以及测试和审查的即时结果。 2. Axosoft OnTime Scrum Axosoft OnTime Scrum能够帮助开发团队管理待办事项、产品发布和模拟项目冲刺。这款基于HTML5特性的工具提供创建图表和管理仪表板的功能,随着工作时间的走动,它可以追踪代码特性并修复bug。除此之外,HTML5也是Axosoft OnTime Scrum平台的一部分,兼具一些其它有用的协作工具,例如Wiki和bug追踪器。 负责咨询和图形设计的软件公司Envoc在两周的迭代周期就是使用的Axosoft OnTime平台。Envoc CEO Calvin Fabre说:“我们很高兴也很愿意成为OnTime的倡导者。” 3. LeanKit LeanKit使用一个基于云基础的whiteboard来称述组织流程。每一个图卡代表工作项目,并且提供状态更新选项。团队使用LeanKit就可以看到工作负载分布,也能导出历史数据。 电邮营销公司Emma在跟踪各种团队工作程序的时候遇到了困难,于是开始启用全公司的LeanKit帐户,Emma操作分析师Kat Amano说道:每个人都可以登录LeanKit,只需要看一眼就能看到正在发生的一切。 4. Microsoft Visual Studio Team Foundation Server TFS(Team Foundation Server)是 Microsoft应用程序生命周期管理(ALM) 解决方案的核心协作平台。不论在本地还是在云中,TFS均可支持灵活的开发实践、 多个IDE和平台,并为您提供有效管理整个IT生命周期的软件开发项目所需的工具。 Columbia Sportswear公司的技术服务总监Brian Summers说:“我所有的团队成员都在使用TFS来协调日常工作和开发项目之间的事情。” 5. Telerik TeamPulse Telerik TeamPulse旨在帮助团队管理各种各样的需求和bug,和Microsoft的TFS共同提供双向同步服务。 软件开发经理Damien Coyle说:“公司员工根据自身不同的角色来使用Telerik TeamPulse:客户通过反馈门户与TeamPulse进行互动;产品经理通过访问待办事项来优先处理事项;项目经理计划迭代次数(冲刺)和跟踪分配的工作;开发人员查看任务板、完成工作;这一切都离不开Visual [...]



via WordPress http://ift.tt/1n6R1Yp

Labels:

[repost ]七种敏捷开发的方法

original:http://ift.tt/1on7OVR 文章转自:http://ift.tt/1eQSYGo 敏捷开发包括一系列的方法,主流的有如下七种: XP XP(极限编程)的思想源自 Kent Beck和Ward Cunningham在软件项目中的合作经历。XP注重的核心是沟通、简明、反馈和勇气。因为知道计划永远赶不上变化,XP无需开发人员在软件开始初期做 出很多的文档。XP提倡测试先行,为了将以后出现bug的几率降到最低。 SCRUM SCRUM是一种迭代的增量化过程,用于产品开发或工作管理。它是一种可以集合各种开发实践的经验化过程框架。SCRUM中发布产品的重要性高于一切。 该方法由Ken Schwaber和 Jeff Sutherland 提出,旨在寻求充分发挥面向对象和构件技术的开发方法,是对迭代式面向对象方法的改进。 Crystal Methods Crystal Methods(水晶方法族)由Alistair Cockburn在20实际90年代末提出。之所以是个系列,是因为他相信不同类型的项目需要不同的方法。虽然水晶系列不如XP那样的产出效率,但会有更多的人能够接受并遵循它。 FDD FDD (Feature-Driven Development,特性驱动开发)由Peter Coad、Jeff de Luca 、Eric Lefebvre共同开发,是一套针对中小型软件开发项目的开发模式。此外,FDD是一个模型驱动的快速迭代开发过程,它强调的是简化、实用、 易于被开发团队接受,适用于需求经常变动的项目。 ASD ASD(Adaptive Software Development,自适应软件开发)由Jim Highsmith在1999年正式提出。ASD强调开发方法的适应性(Adaptive),这一思想来源于复杂系统的混沌理论。ASD不象其他方法那样 有很多具体的实践做法,它更侧重为ASD的重要性提供最根本的基础,并从更高的组织和管理层次来阐述开发方法为什么要具备适应性。 DSDM DSDM(动态系统开发方法)是众多敏捷开发方法中的一种,它倡导以业务为核心,快速而有效地进行系统开发。实践证明DSDM是成功的敏捷开发方法之一。在英国,由于其在各种规模的软件组织中的成功,它已成为应用最为广泛的快速应用开发方法。 DSDM不但遵循了敏捷方法的原理,而且也适合那些成熟的传统开发方法有坚实基础的软件组织。 轻量型RUP RUP其实是个过程的框架,它可以包容许多不同类型的过程, Craig Larman 极力主张以敏捷型方式来使用RUP。他的观点是:目前如此众多的努力以推进敏捷型方法,只不过是在接受能被视为RUP 的主流OO开发方法而已。



via WordPress http://ift.tt/1eQSVKG

Labels:

[repost ]软件生命周期、RUP(统一软件过程管理)和 敏捷开发

original:http://ift.tt/Nrlh3G 没有真正意义上学过开发,作为作业,还是放下心态,学习一下哈。这里只是抛砖引玉哈。 老师把软件生命周期、RUP(统一软件过程管理)和 敏捷开发 归纳到:软件开发过程方法论。 这三者应该不是并列关系吧,疑问中。。。。。 1.软件生命周期 典型的几种生命周期模型包括瀑布模型、快速原型模型、迭代模型。瀑布模型(Waterfall Model)首先由温斯顿·罗伊斯(Winston Royce)提出。该模型由于酷似瀑布闻名。在该模型中,首先确定需求,并接受客户和软件质量保证(SQA)小组的验证。然后拟定规格说明,同样通过验证后,进入计划阶段…可以看出,瀑布模型中至关重要的一点是只有当一个阶段的文档已经编制好并获得软件质量保证小组的认可才可以进入下一个阶段。这样,瀑布模型通过强制性的要求提供规约文档来确保每个阶段都能很好的完成任务。但是实际上往往难以办到,因为整个的模型几乎都是以文档驱动的,这对于非专业的用户来说是难以阅读和理解的。想象一下,你去买衣服的时候,售货员给你出示的是一本厚厚的服装规格说明,你会有什么样的感触。虽然瀑布模型有很多很好的思想可以借鉴,但是在过程能力上有天生的缺陷。 迭代式模型是RUP(Rational Unified Process,统一软件开发过程,统一软件过程)推荐的周期模型。在RUP中,迭代被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。所以,在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:(至少包括)需求工作流程、分析设计工作流程、实施工作流程和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段(需求及其它)都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。迭代的思想如下图所示。 迭代和瀑布的最大的差别就在于风险的暴露时间上。“任何项目都会涉及到一定的风险。如果能在生命周期中尽早确保避免了风险,那么您的计划自然会更趋精确。有许多风险直到已准备集成系统时才被发现。不管开发团队经验如何,都绝不可能预知所有的风险。”(RUP)二者的区别如下图所示: 由于瀑布模型的特点(文档是主体),很多的问题在最后才会暴露出来,为了解决这些问题的风险是巨大的。“在迭代式生命周期中,您需要根据主要风险列表选择要在迭代中开发的新的增量内容。每次迭代完成时都会生成一个经过测试的可执行文件,这样就可以核实是否已经降低了目标风险。” 快速原型(Rapid Prototype)模型在功能上等价于产品的一个子集。注意,这里说的是功能上。瀑布模型的缺点就在于不够直观,快速原型法就解决了这个问题。一般来说,根据客户的需要在很短的时间内解决用户最迫切需要,完成一个可以演示的产品。这个产品只是实现部分的功能(最重要的)。它最重要的目的是为了确定用户的真正需求。在我的经验中,这种方法非常的有效,原先对计算机没有丝毫概念的用户在你的原型面前往往口若悬河,有些观点让你都觉得非常的吃惊。在得到用户的需求之后,原型将被抛弃。因为原型开发的速度很快,设计方面是几乎没有考虑的,如果保留原型的话,在随后的开发中会为此付出极大的代价。至于保留原型方面,也是有一种叫做增量模型是这么做的,但这种模型并不为大家所接受。 事实上,其实现在的软件组织中很少说标准的采用那一种模型的。模型和实用还是有很大的区别。 软件生命周期模型的发展实际上是体现了软件工程理论的发展。在最早的时候,软件的生命周期处于无序、混乱的情况。一些人为了能够控制软件的开发过程,就把软件开发严格的区分为多个不同的阶段,并在阶段间加上严格的审查。这就是瀑布模型产生的起因。瀑布模型体现了人们对软件过程的一个希望:严格控制、确保质量。可惜的是,现实往往是残酷的。瀑布模型根本达不到这个过高的要求,因为软件的过程往往难于预测。反而导致了其它的负面影响,例如大量的文档、繁琐的审批。因此人们就开始尝试着用其它的方法来改进或替代瀑布方法。例如把过程细分来增加过程的可预测性。 http://ift.tt/LcSGhk http://ift.tt/Nrlh3I 2.RUP(统一软件过程管理) RUP可以用二维坐标来描述。横轴通过时间组织,是过程展开的生命周期特征,体现开发过程的动态结构,用来描述它的术语主要包括周期(Cycle)、阶段(Phase)、迭代(Iteration)和里程碑(Milestone);纵轴以内容来组织为自然的逻辑活动,体现开发过程的静态结构,用来描述它的术语主要包括活动(Activity)、产物(Artifact)、工作者(Worker)和工作流(Workflow)。 <ignore_js_op> http://ift.tt/1on5Tk7 3.敏捷开发,快速迭代 下面的链接描述地更好 http://ift.tt/NrlhAJ



via WordPress http://ift.tt/1fExd8n

Labels:

[repost ]RUP 迭代开发计划的两种方法

original:http://ift.tt/1i37Znq 随着软件技术的发展、客户需求的变化越来越快、对应用软件项目的交付的要求也越来越要跟上市场的变化,RUP 非常适合这样的开发场景,在应用软件开发中已经成为最常用的开发模式。从项目管理的角度来看,RUP 的开发中对于迭代计划的开发和管理是保证成功交付项目的关键。好的迭代开发计划可以有效降低项目的风险,提高团队的协作,提高项目开发效率。笔者结合在以往项目中应用 RUP 迭代开发的实践,总结了两种开发迭代计划的方法,并对比两者的适用情况,以期对应用 RUP 的项目管理人员提供借鉴。 前言 随着技术的快速发展和市场的快速变化,应用软件项目的交付越来越面临着需求不明确、交付进度紧、项目风险大、项目规模变大、项目团队协作困难、客户参与度高等问题。在这种情况下,RUP 的迭代开发的方法已经成为应用软件开发项目的主流的开发模式,并能够有效解决这些问题。但是本文不会完整讨论整个软件开发过程中 RUP 的贡献和如何应用 RUP。只是从项目管理和项目计划的角度探讨如何应用 RUP 的迭代方法开发项目计划。 笔者在多个项目中应用 RUP 进行软件项目的开发和管理,在本文中将结合实践阐述 RUP 迭代计划的两种开发方法,对于指导项目经理裁剪和应用 RUP 有实际的参考意义。本文还将与读者分享在实际项目中应用 RUP 如何开发迭代目标、如何开发迭代计划以及介绍了两种不同的迭代计划的模板参考示例。 回页首 迭代计划的特点 迭代开发是 RUP 的核心思想,但是大家在刚开始使用 RUP 时你会发现这么多的并行工作流对项目管理同时也带来很大挑战和难度。因此使用 RUP 来完成项目,开发迭代计划是实施的主要难点之一。 迭代计划的特点: 一个迭代是总体项目计划的一个阶段 需要明确的交付目标(或可以运行的系统) 多个比较明确的角色的参与 可以串行也可以并行 体现了 RUP 架构驱动、关注风险的特点 实现快速交付,缩短大项目的交付周期 提高客户参与度和项目的可视化 迭代计划的开发考虑的因素: 总体项目计划 项目规模大小、周期 需求明确程度和技术风险 团队成熟度和规模 项目所处的阶段,在同一个项目的不同的阶段可以采用不同的迭代计划方法 回页首 迭代目标的设置 上面提到迭代计划是实施 RUP 的难点之一,那么设置迭代目标就是解决这个难点的重点。 [...]



via WordPress http://ift.tt/1kTncck

Labels: