python中的比较运算

python语言对于各种类型都可以比较。

例如int类型,当进行大小比较时,其实是调用了__cmp__函数,或者可以显式调用cmp(),返回值为{-1, 0, 1},表示小于,等于,大于。

对于str类型,list类型,,class类型等,其实是调用__eq__, ne, gt,ge,lt, __le__等函数,分别对应==, !=, >, >=, <, <=等.

可以根据需要覆盖这些函数达到重载运算符的目的。注意,这里有个坑,就是__eq__, __ne__是两个运算函数,而不像Java里面,只有一个Object.equals()函数。

Read More

计划扑克™ (Planning Poker)

当人们着手估算某项任务时,尽管已有超支完成类似任务的经历,仍然有低估所需工作量的趋势。通过与相似场景的统计数据进行对比,可以改善这种情况。计划扑克™的鼓励不同的参与者独立估算工作量,并以达成一致为目标。
UPerform的计划扑克™(Planning Poker)是一种基于共识的估算方法和讨论工具。每副内有4套序列可供4个人使用。每套序列由说明卡、0、½、1、2、3、5、8、13、20、40、∞、?,共13张牌组成。

计划扑克™玩法:

  1. 游戏参与者每人各持一套序列,包含不同的数字和符号。
  2. 主持人引导大家共同选定 1 个相对简单的任务作为基准。
  3. 接下来,主持人从待估算任务中挑选 1 个,并解释其内容,以供大家讨论。
  4. 每个游戏参与者围绕待估算任务进行讨论,并提出问题。然后每个人按自己的理解,将待估算任务与基准5. 任务进行对比来估计完成这个任务所需的相对工作量,并从自己手中的牌里私下选择 1 张合适的数字。注意,数字是相对值,并无任何单位。
  5. 所有人一起亮牌展示给大家。如果大家亮出的牌比较接近,就以此点数作为估算值。如果相差悬殊较大, 各位参加者需要讨论各自的估算理由。可以从亮出数字最大和最小的参与者开始。
  6. 根据每个游戏参与者的解释,可以重新估算并再次出牌,直到大家达成一致。
  7. 重复步骤3~6。

ps:计划扑克™是优普丰咨询顾问机构(www.uperform.cn)的注册商标。本产品在淘宝由shiningstudio店铺代理。

敏捷中分布式团队的合作策略

敏捷的工作模式强调个体及团队的互动和频密交流,为了及早反馈和频密交付。但这对于分布在不同办公室甚至不同国家的团队成员带来不小的沟通和合作方面的挑战,很多人会觉得沟通的负担超重,或者浪费无谓的等待时间。基于我们的经验,如何应对其实也没有什么大秘密,只要遵循以下一些原则和策略,就能减少分布式的合作之痛,同时确保良好的敏捷交付效果。

Read More

Arduino初探

那天看了极客范DIY系列:便携式树莓派报警装置深受启发,于是从深圳带了个Arduino回来,重温当年的模电数电!不过确实比当年的单片机更容易玩,可以集中精力发挥创造力!另外这有个基于RaspBerryPi的视频,老子教儿子做报警器。http://t.cn/8kkOmnn

是从taobao买的A货,型号标注为Arduino Uno. 从arduino.cc/en/Main/Software 下载官方IDE。用USB线连上MacBook,发现ArduinoIDE无法上传程序到板卡,搜了一下官网,得知Uno本来是免驱动的,但我买的这卡上面带有明显的FTDI芯片一枚,所以又去http://www.ftdichip.com/Drivers/VCP.htm 下载MacOS驱动,然后终于连上了USB串口,做了呼吸灯和光敏灯。

官方函数手册:http://arduino.cc/en/Tutorial/HomePage

Learn Python in 10 minutes

(用了好几年python,发现还是有个别语法没用到,比如 a,b=b,a 比如@classmethod 比如 dict.get(“x”, 1) 比如dict.setdefaults()。本文没有提到yield语法。)

示例代码 learnpython-zh.py

Python 由 Guido Van Rossum 在90年代初创建。 它现在是最流行的语言之一 我喜爱python是因为它有极为清晰的语法,甚至可以说,它就是可以执行的伪代码

很欢迎来自您的反馈,你可以在@louiedinh 和 louiedinh [at] [google’s email service] 这里找到我

注意: 这篇文章针对的版本是Python 2.7,但大多也可使用于其他Python 2的版本 如果是Python 3,请在网络上寻找其他教程

Read More

Git - 简易指南

工作流

你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,指向你最近一次提交后的结果。

Read More

敏捷之旅2012天津站活动组织心得

今年2012,是天津软件本地社区的第二次举办敏捷之旅活动。去年的破冰之旅还历历在目,经过一年的时间,天津有更多的朋友开始接触敏捷,实践敏捷,讨论敏捷,并加入软件社区积极参加和回馈,也使得天津软件行业更加繁荣和具有竞争力。

今年共有四位组织者@Eugene_Xerox@King费事  @申导 @柴阿峰 ,大家来自不同公司,但都愿意为组织软件社区活动贡献自己的一份力量,一直在张罗着“天津软件沙龙”线下活动。

9月份开始,大家开始着手研究敏捷之旅活动,经过几轮讨论,先要考虑赞助、场地等硬件问题。一次机会,得知天津软件评测中心要在11月举办一次天津测试大会,于是经过沟通,对方对我们的活动非常支持,愿意提供下午3点以后的时间段给免费活动,还赞助了一些门票供参加上午的活动。这样,拿下了假日酒店的场地,最大的一笔开支消于无形。

接下来是书籍,经过敏捷之旅支持小组的指点,成功联系上清华和图灵,拿到了一部分书籍。(ps:上周参加北京的敏捷之旅,有幸见到清华出版社的文工。文工表示继续支持天津的活动,还希望能有些读书会性质的活动,这点我们也会考虑的。)应该还有禅道软件的赞助。

其余现场需要的文具物品等就不说了。

宣传部分,首先是天津软件沙龙的微群和邮件列表,然后再扩散到各个公司。新浪微博也是重要的宣传阵地。事先申请了新浪大屏幕,另外还准备了现场要摆放的海报。

话题部分,大家突发奇想,为什么一定要演讲题目呢?有没有更加活跃的互动形式。于是我们联系上另一位嘉宾 @卡爾文_Q ,决定以对话形式来进行观点的碰撞,引发台下的讨论。今年敏捷之旅恐怕只有天津用了这个创新的形式。当然对话之前还是准备了两个闪电演讲来引出讨论。

最后,台上嘉宾分为两组,一组代表敏捷派,一组代表传统派,由主持人来引导话题和台下讨论:

  • 15:00-15:30,闪电演讲:《敏捷测试》
  • 15:00-16:30,对话:《敏捷转型让测试人员很受伤?》
  • 16:30-17:00,闪电演讲:《实例化需求》
  • 17:00-18:00,对话:《自动化测试  传统 vs 敏捷》*
    最终战况,假日酒店200人会议厅,上午的天津测试大会基本坐满,下午一部分领导和听众提前退场空出的座位,被来参加社区活动的50多人重新填满,整个会场座无虚席。粗略统计,一线开发测试人员与管理人员大约1:1.

和上午的商业学术气氛相比,敏捷之旅一开场,首先是新浪大屏幕进行微博滚动,现场气氛一下子不同了。

台上的观点碰撞,强烈的引发台下听众的参与的欲望,纷纷提问、发微博互动。台下的一位项目经理提了一个非常尖锐的问题:“我觉得PO、PM不要和团队走的太近,这样团队容易将责任都推给PM”。这个话题很有代表性,于是我们将他请到台上和嘉宾一起互动,全场讨论热情达到一个小高潮。

可以看出,天津还是有很多软件从业人员,而且非常愿意参加此类活动的,只是缺乏组织者的缘故,大家不太能聚集起来。

事先联系的《今晚报》记者也来了,虽然由于担心报道的方向和主旨不清的原因没能见报,但毕竟意味着报社今后还会有机会进行报道的。

晚饭自理,然后的OpenSpace没有预期那么多人。在水游城的costa咖啡,10来个人又继续进行讨论,从7点多一直说到10点多,仍然意犹未尽。

个人一些总结:

其一,有钱好办事,场地、宣传都是砸钱的事情,如果像北京那样管饭,或者从外地请讲师,也都需要费用。期望随着影响的扩大,会有更多人关注,更多人参与,更多公司来赞助。没钱的话,也要善于借力打力

其二,即使今年4位组织者,仍然力不从心,精力、人脉都有限,而且不能持续。今后要吸收更多志愿者进来。

其三,宣传力度,各种渠道的宣传未能形成猛烈攻势。

其四,组织形式可以多样,更多的互动内容和参与者之间的讨论,有时比单纯的演讲来的更实际。

将Sonar引入 Jenkins

Sonar是一个集成的代码质量工具,主要用于Java,但现在也可以通过支持多种其他语言,例如javascript, C#等。

Jenkins是最流行的持续集成工具。

有两种方式在Jenkins Job中建立Sonar步骤: Standalone sonar runner 或 sonar-maven-plugin

(本文假设你已经安装了Jenkins)

Read More