随笔-37  评论-68  文章-0  trackbacks-0
  2010年3月23日
刚下飞机,一股热浪扑面而来,深圳的天不算蓝,和北京很黄很暴力的天也不太一样。

今天是2010年3月23号,星期二。

Treasure your chance 
Study hard 
Be honest to workmates 

posted @ 2010-03-23 19:20 guoadou 阅读(27) 评论(0) 编辑
  2010年2月28日

 

在做事的方法上,不好的总比好的要多,而项目规划也不例外。下表是作者曾经看过的一些不良做法,可作为分辨做法好坏的参考。目的是希望当状况发生时能协助你分辨,以及了解为何这些做法有问题。

 

拙劣做法 实例 为何发生 问题
做上次做过的事 3.0版就像2.0版,只是比较好 通常是因为不想回头对商业、技术和顾客议题做新的研究,或者没有资源 从2.0版以后,世界可能已经改变。没有探讨2.0是否满足其目标,规划就会变成灾难
做上次忘了完成的事 2.0版没做的功能会是3.0版的核心 上次没做完的项目可视为被完善理解,而且已部分完成,因此很容易着手 所做的功能并非重要功能。将新版聚焦在那些功能上,可能错失资源配置的最佳化
做竞争对手做的事 我们的目标是X产品有什么功能,我们就有什么功能 这些最简单的营销策略,可以满足偏执、没安全感以及惰性。不需要做任何分析 竞争对手会这么做,也许是因为很蠢的原因
做最热门、最流行的东西 5.0版以Java来做,支持移动设备,兼容RSS4.0 流行之所以是流行,因为易于追随而且有趣。人们对流行总是会兴奋,对令人厌倦和定义不明的项目而言,可以轻易增添兴奋感 革新是很少有的。科技进展总是短期高估,长期低估。顾客问题应该摆在流行时尚之上
做了,顾客就会自动上门 X项目将是当今最佳的搜索引擎/网站编辑器/窗口小部件/捕鼠器 借由把每个人的焦点转移到构建本身,而非构建的理由,人们有时可能避开真实的规划 这个世界需要更好的捕鼠器吗?人们会上门是因为所做的东西对他们有用,不是因为团队决定要做什么东西

 

 

 

posted @ 2010-02-28 17:37 guoadou 阅读(167) 评论(0) 编辑
 

  项目经理必须认识到每种观点都会有某种独特的贡献,是其他观点所无法替代的(亦即,营销策略的数量无法改善工程熟练度,反之亦然)。为了得到好结果,参与项目规划的每个人都必须对各种观点有基本了解。


【商业观点】
  • • 我们的客户有哪些未满足的需求或渴望?
  • • 我们可以提供哪些功能或服务以满足这些渴望和需求?
  • • 根据什么依据认为客户会购买这项产品或服务?什么会让他们有动机如此做?
  • • 项目成本是多少(人/资源)?要多少时间?
  • • 潜在的收益有多少(或者组织运营成本会减少多少)?要多少时间?要放弃哪些项目,才能做这事?
  • • 这个项目对我们的长期商业策略有贡献吗?或者保护了其他可产生收益的资产吗?(即使是非营利性或IT组织也都有商业策略:总是有账单要付、要有收益或者要支持能产生收益的团体。)
  • • 这个项目如何协助我们赶上、赶过或打败竞争对手?
  • • 这个项目应该锁定哪个营销时段?

【技术观点】
  • • 项目需要做什么?
  • • 怎么运作?每个组件怎么运作?
  • • 要怎么构建?怎么检验它是否按我们所要的方式运作?
  • • 对当前系统或我们能做到的系统而言,能达到多少可靠度、效率、扩充性以及效能?这点和项目所要求的是否有落差?
  • • 我们随时可用的技术或架构有哪些?我们是否要赌一赌,尝试用任何即将可用的新科技?
  • • 团队及项目适用哪些工程流程及手段?
  • • 我们的成员有哪些可用的知识或专业?他们如果不参与这个项目该怎么办?
  • • 我们能填补专业上的漏洞吗?(训练/聘用/学习/忽视,而希望这些漏洞神奇地消失。)
  • • 要花多少时间构建?要做到什么程度的质量?

【客户观点】
  • • 人们实际上都在做什么?(不是我们以为他们在做什么,或者他们说他们在做什么。)
  • • 试着做这些事情时,他们会碰上什么问题?在哪里受阻、感到困惑或感到沮丧?
  • • 他们需要或想要做什么,却完全做不到?
  • • 让事情变得更简单、更安全、更快速或更可靠的特定机会在哪里?
  • • 就改良事情做法而言(从人们实际上都在做什么的角度来看),什么样的设计想法,是最有潜力可以改善客户经验的?
  • • 如何探索这些想法?什么原型、草图或其他做法必须研究,才能协助我们了解项目在这方面的潜力?
  • • 项目应该使用什么核心想法和概念来传达信息给使用者?

  这三种观点总是彼此重叠,每种商业考虑都会牵连到技术和客户(针对其他的排列也是如此)。所以,要获得最佳规划观点,就得把每种观点都放在相同立足点上,查看相似点和差异处何在。投入时间探索这三种观点后,就可能有作出精明策略性决策的机会。借由在这三种观点重叠之处来定义项目,就可能满足每种观点的一些重要问题或目标。这些重叠区域对组织而言有最大的潜在价值,因为一次的努力,就能同时解决商业、科技以及客户目标。

  项目经理在此事上扮演关键角色,他得积极运用他的通才天性,把这三种观点统合为一。做到这一步的方式之一是尽早承认:总是有了不起的技术想法对商业或客户无益,而且也总是有了不起的想法有助于客户,然而对商业而言却不可行,就当前科技而论也不太可能。这样每个人就能看出各种想法的单一性,从而在需要时彼此呼应。此外,也可让各种观点赢得尊重,因为每个人都得了解,他们必须和拥有其他领域知识的人共同合作,才能成功。



posted @ 2010-02-28 16:46 guoadou 阅读(174) 评论(0) 编辑
  2010年2月4日
  If you can keep your head when all about you 
  Are losing theirs and blaming it on you; 
  If you can trust yourself when all men doubt you, 
  But make allowance for their doubting too; 
  If you can wait and not be tired by waiting, 
  Or, being lied about,don’t deal in lies, 
  Or, being hated, don’t give way to hating, 
  And yet don’t look too good, nor talk too wise; 
   
  If you can dream - and not make dreams your master; 
  If you can think - and not make thoughts your aim; 
  If you can meet with triumph and disaster 
  And treat those two impostors just the same; 
  If you can bear to hear the truth you’ve spoken 
  Twiseted by knaves to make a trap for fools, 
  Or watch the things you gave your life to broken, 
  And stoop and build ‘em up with wornout tools; 
   
  If you can make one heap of all your winnings 
  And risk it on one turn of pitch-and-toss, 
  And lose, and start again at your beginnings 
  And never breathe a word about your loss; 
  If you can force your heart and nerve and sinew 
  To serve your turn long after they are gone, 
  And so hold on when there is nothin in you 
  Except the Will which says to them:”Hold on!”; 
   
  If you can talk with crowds and keep your virtue, 
  Or walk with Kings -nor lose the common touch; 
  If neither foes nor loving friends can hurt you; 
  If all men count with you, but none too much; 
  If you can fill the unforgiving minute 
  With sixty second’ worth of distance run - 
  Yours is the Earth and everything that’s in it, 
  And - which is more - you’ll be a Man my son! 
posted @ 2010-02-04 15:20 guoadou 阅读(93) 评论(0) 编辑
  2010年1月15日

《论信息系统的架构设计》

作者:郭云斗(http://guoadou.cnblogs.com/)

【摘要】
  本文讨论多网站集成单点登录(SSO)系统的架构设计。该系统主要实现了对同一企业集团旗下多家互联网站不同用户系统之间的集成,用户只要登录其中一个网站,无需再次注册,即可使用集团旗下其他网站的服务,在改善用户使用便利性的同时,提高了各个网站的用户访问量,更大大降低了新加入网站的推广费用。

  在集成单点登录系统设计架构中,整个系统分为管理中心与 CP 两个部分。管理中心是整个系统的核心,负责保存旗下所有网站用户账号之间的对应关系(Mapping),以及颁发认证 Ticket;CP即是各个网站。在架构设计中,充分考虑了系统的可扩展性、稳定性、安全性、可维护性、灵活性等因素。

  作为集团旗下某社区网站的技术负责人,我参与了本系统的需求分析和架构设计工作,并主持了为接入系统而对本网站的改造工作。

【正文】
  我在一家互联网企业工作,母公司某集团把信息服务当作主要的发展方向之一,互联网业务成为了发展的重心。2009年集团已经拥有包括社区、文化、娱乐、音乐、网络游戏、B2C网上购物、票务、电子地图等行业在内的10个网站。2008年下半年集团投资4000万美元新成立一家B2C网上购物电子商务网站,该网站于2009年4月正式发布,但刚一上线就遇到了推广的问题。目前国内电子商务网站平均推广一个新会员的成本超过30元,广告投放效果不尽如人意,高额的广告支出费用与带来的用户及销售额形成巨大的反差。如果能把其他已经运营多年的兄弟网站的数千万用户成功引导到新成立的电子商务网站,无疑将大大降低广告推广的成本,而且对于已经对一个网站非常信赖的忠实用户来说,也更愿意尝试使用由自己信赖的网站所提供的“新服务”。鉴于此,集团领导决定建设一个能把旗下各个网站无缝结合起来的系统,以达到以下三个目的,第一,原网站中的用户可以非常方便地转化为新网站用户,降低推广的成本;第二,新网站所投放广告带来的流量可以很方便地延展到其他网站,提高推广的效果;第三,系统需要是非常容易扩展的,集团目前正在洽谈收购一家国内领先的娱乐资讯网站,要非常方便地集成未来可能的更多网站,达到滚雪球的效果。这样的话,就能更方便地为用户提供一站式的服务,在激烈的互联网竞争中体现集团规模优势。

    作为集团旗下某社区网站的技术负责人,我有幸参加了该项目的需求分析和架构设计工作,与另外几个公司的技术负责人组成项目小组,经过多次讨论,决定采用单点登录(SSO)的方式来构建本系统,在架构设计中,充分考虑了系统的可扩展性、稳定性、安全性、可维护性、灵活性等因素。

  通过系统分析,我们发现该系统建设中主要需要解决以下问题:

  1)各网站是不同时期由不同团队创建,分属不同的子公司运营,采用的开发语言与技术架构平台不尽相同,有php、java、.Net,还有asp。操作系统有windows、linux、HP Unix等,数据库也是各不相同,分别有mysql、SQL Server、Oracle、Sybase 等等。
    2)各网站业务和用户政策不同,有的网站使用email、手机号作为用户账号,有的使用英文数字字符串,也有用中文的。
    3)各个网站加起来共有近五千万注册用户,每天活跃用户上百万,SSO系统需要能够承载每天数百万次的访问量。
    4)为了SSO 系统今后联动更多网站的可行性,需要确保系统的扩展性和稳定性。
    5)发生SSO 故障时,各系统可以独立运行。
    6)最小化各系统连接时可能发生的用户信息泄露。
    7)各子公司为接入本系统的改造成本不能太高。涉及底层的改造工作,需要抽调多名对自己系统最有经验的技术开发人员,一旦各子公司由于自身项目受到影响,未能全力支持配合,SSO 项目势必延误。

    基于这些问题,我们把整个系统分为分为管理中心 与 CP两个部分。管理中心是专门为SSO服务的一组服务器,CP即是各个网站。

    为了避免单点故障及降低系统改造/维护的难度和成本,并没有把所有网站的账号/密码全部集中到一个地方进行管理,而是由各个CP自己进行验证,管理中心负责保存旗下所有网站用户账号之间的对应关系(Mapping)。CP为管理中心提供验证用户ID/密码的接口,通过管理中心的转发,即可实现跨站点登录。一旦管理中心出现故障时,只是SSO部分的功能不能正常使用,各个网站自己的用户登录/注册并不受影响。

    管理中心和CP之间通过Server to Server 的方式进行通讯,各CP之间通过http cookie来共享信息。CP在用户本地登录成功时,将用户的唯一标识及用户名/昵称发送给管理中心,然后把管理中心返回的 Ticket 信息以http cookie的方式写入需要进行联动的网站根域,这样当用户在来到其他网站的时候,网站根据cookie中的Ticket 信息向管理中心查询得知当前用户的身份,然后自动替用户登录,这样旗下所有其他的网站就成了该用户的“增值服务”。整个系统中所有通讯都是基于标准http协议完成,编码采用UTF-8,与具体开发语言及系统平台无关,各网站只需要和管理中心打交道,不直接与其他网站进行通讯,这就保证了架构的松耦合与扩展性。
   
    为了降低各CP工作量、开发难度及调试时间,由负责管理中心的开发小组开发了client lib 提供给各 CP, client lib 包装了加密/解密以及与管理中心通讯的API接口,CP只需要关心自己网站的业务逻辑,使用管理中心分配的 SiteId/PW 即可与管理中心进行通讯,无需关心底层的具体实现。目前开发了c和java两个版本的client lib,同一套源码在windows和linux/unix下均可正常编译使用,足够满足现有10个网站的需求。

    为了最大限度保护用户信息,防止用户信息的泄露,所有的用户详细信息都是保存在各个CP自己的数据库中,管理中心仅保存唯一标识。管理中心与CP之间的通讯信息以及http cookie内容均进行了加密,每个CP的密钥不同,CP的内部员工也无法解密另一个CP加密的信息。当用户在任意网站进行登出(Logoff)操作的时候,通过调用管理中心的综合Logoff Process ,会同时删除所有关联网站域下的cookie。另外用于跨站点登录的sso cookie的有效期设置为 session 级,这样cookie就只会存在于用户电脑的内存中,而不会被缓存到硬盘上,只要关闭浏览器,cookie就消失了。即使cookie信息被破解,得到的Ticket也只是一串无意义的字符串,超过一定时间期限后,管理中心会把Ticket设为过期。

    管理中心由一台L4交换机做负载均衡,后端是Web服务器集群及数据库服务器。管理中心应用程序采用J2EE架构开发,数据库使用Oracle,在性能、稳定性、技术成熟度及开发人员熟练度方面都有保障。

    该集成架构以松耦合的方式对多个网站进行了整合,复杂度都放到了管理中心端集中进行管理,具有良好的扩展性,新网站通过少量的改造即可加入,并通过各种安全措施最小化用户信息泄露的可能性。在开发途中遇到一个之前未考虑到的问题,其中一个网站采用了http session的方式来进行登录验证,而不是cookie,导致其他网站在进行Logoff的时候无法通过清除cookie的方式来同步退出,造成了安全隐患,目前是通过由该网站提供一个接口特殊处理的方式临时解决,最终还是需要该网站把自己的登录验证机制从session改为cookie方式。

    该项目于2009年5月立项,经过需求分析、设计、开发,管理中心于2009年9月完成测试上线,第一期包括电子商务网站在内计2个网站完成接入改造。经过上线一个多月以来的观察,整个系统响应快速,运行稳定,各网站的用户访问量均有明显提高,通过SSO系统引导到电子商务网站并消费的用户数量与质量远远超过同期广告推广的效果,基本达成了系统的目标。

 

 

posted @ 2010-01-15 23:36 guoadou 阅读(410) 评论(6) 编辑
  2009年7月3日
摘要: 系统架构设计师考试大纲 一、考试说明: 1.考试目标 考试合格人员应能够根据系统需求规格说明书,结合应用领域和技术发展的实际情况,考虑有关约束条件,设计正确、合理的软件架构,确保系统架构具有良好的特性;能够对项目睥系统架构进行描述、分析、设计与评估;能够按照相关标准编写相应的设计文档;能够与系统分析师、项目管理师相互协作、配合工作;具有高级工程师的实际工作能力和业务水平。 2.考试要求 (1...阅读全文
posted @ 2009-07-03 01:24 guoadou 阅读(384) 评论(0) 编辑
  2009年6月26日
摘要: 之前用Apache的时候,只需要设置ErrorDocument 404 /404.php就可以在 404.php 中根据不同的 REQUEST_URI 跳转到不同的页面去,让从搜索引擎过来的失效URL可以跳转到新的地址去升级到 nginx 后的设置error_page 404 /404.php;结果发现确实执行了 404.php ,但自己设置的HTTP header无效,无论header怎么设置,...阅读全文
posted @ 2009-06-26 13:57 guoadou 阅读(1683) 评论(1) 编辑
  2008年12月23日
摘要: The Elements of Programming StyleBrian Kernighan, P. J. PlaugerIntroduction Write clearly - don't be too clever.Expression Say what you mean, simply and directly. Use library functions. Avoid temporar...阅读全文
posted @ 2008-12-23 13:50 guoadou 阅读(166) 评论(0) 编辑
  2008年12月8日
摘要: SQLYog 每次只能导出一个DB的结构,一台服务器上DB太多,操作起来麻烦,花一小时写了这个脚本。[代码]阅读全文
posted @ 2008-12-08 12:00 guoadou 阅读(161) 评论(0) 编辑
  2007年12月25日
摘要: 译者注:本文作者Joel Spolsky 是纽约市一家软件公司Fog Creek Software的创始人。他毕业于耶鲁大学,曾分别在美国微软、Viacom、Juno等公司任软件设计师、经理职位。本文来自于《祖儿谈软件》,文章原名为《轻松面试找到理想员工——非官方的面试技术指南》,作者最初本意是针对微软公司所写,后来修改了几次,现在为Fog Creek Software公司的面试手册。原文地址可参...阅读全文
posted @ 2007-12-25 23:15 guoadou 阅读(322) 评论(0) 编辑
仅列出标题  下一页