团队Scrum实践规则

团队组建

并不需要个个都是技术超一流的,相反,下面几个特性在组建团队时更应该得到重视:

  1. 社交敏感度
  2. 同理心

重新定义领导力
领导力就是有能力去创造一种环境,让其中的每个人都能集思广益
创造一种环境:
在技术上
在研发过程上,能够自驱动自组织

不需要过多干涉运行,只需要保证团队的正常运作,倾听团队的意见并确保他们遵守原则。

Scrum 规则:

  • 规则迭代:在每个sprint结束后,在retrospective会议上进行调整,统一后在下个sprint 内严格遵守
  • 惩罚规则:Daily Scrum Meeting,定好时间后,未按规定时间到会,每迟到一分钟10元红包…不超过50元。或者选择唱歌、真心话大冒险
  • 需求变更控制:所有有关需求的事项(如需求不明确/需求变更),均需要在worktile 的话题模块进行讨论,并让所有人进行关注,避免结论被忽视,禁止进行单独对接和群内讨论;有了结论后,需要Scrum master 根据结论调整“todo” 栏目,并且邮件通知
    调整说明:项目组成员内部能解决的由测试进行记录到worktile;需要与外部沟通的由Scrum master记录;所有重大需求变更由Scrum master发邮件通知。
  • DoD 完成标准(Definition of Done):在每个sprint 启动时,由团队一起制定,sprint内的任务完成 评判以此为标准

Java Thread Life Cycle and Thread States

Java Thread Life Cycle and Thread States

一个java 线程 在它的生命周期来,可以处于下图的任何一个状态,可以是 New,Runnable,Blocked,Waiting,Timed Waiting 或 Terminated。同业也称为生命周期内的事件。

Java Thread Life Cycle Status

Java-Thraed-Life-Cycle-States


Key Elements of the Sprint Retrospective

Key Elements of the Sprint Retrospective

Sprint Retrospective 是一个由ScrumMaster在sprint刚结尾时推进的一个总结会议,为了让团队探讨和弄清楚有哪些可以改变可以促使团队在下一个sprint周期内更高效;Sprint Review 是看团队的工作成果,而retrospective 会议看的是如何来实现

retrospective 包含如下三个主要问题的讨论:

  1. 在sprint 周期内时,有哪些我们做得不错
  2. 在sprint 周期内时,有哪些我们做得不好
  3. 我们可以做些什么来改进

Sprint Retrospective 是一个非常重要的途径来帮助团队持续进化和提高


JumperServer 免密登录

JumperServer 免密登录

用了JumperServer后,每次要连远程服务器,需要选一次私钥文件,输入两次密码,输入一次ip,非常麻烦,能不能一个简短的指令就搞定呢?答案是可以的

简化步骤:

  1. 将jumperServer 私钥转换为 无密码私钥
  2. ssh-add 将私钥添加到 Keychain
  3. 设置命令 alias,简化命令

java 并发工具类CountDownLatch & CyclicBarrier

java 并发工具类CountDownLatch & CyclicBarrier

CountDownLatch

CountDownLatch 概念

CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier、Semaphore、ConcurrentHashMap和BlockingQueue,它们都存在于java.util.concurrent包下。CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。

CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。


python & bs4 基础

python & bs4

如果基于正则表达式来爬取网页,真的是太麻烦,而且正则要学得好,还真不容易。通过 bs4 select 或者 find 返回soup对象,可以很方便地提取出HTML或XML标签中的内容,简直不能更方便

举例:

1
2
3
4
5
req = urllib2.Request(target_url, headers = _headers)
myPage = urllib2.urlopen(req).read().decode(self.encoding)
soup = BeautifulSoup(myPage,'lxml')

dom_tag_a = soup.select('div[class*="right_wrap"] > div[class*="content"] > div[class*="phref"] > a')

Git入门与实践-读书笔记

GitHub 入门与实践 记录

《GitHub 入门与实践》 读书笔记

了解GitHub

Git 和 GitHub 的区别

在Git中,开发者将源代码存入名为“Git仓库”的资料库中,并加以使用。而GitHub则是在网络上提供Git仓库的一项服务。这也就是说Github上公开的软件源代码都是有Git进行管理。

社会化编程

SOCIAL CODING.随着GitHub的出现,让所有人都平等的拥有了更改源代码的权利,软件开发者们才真正意义上拥有了源代码.


CORS_跨来源资源共享_Ajax跨域资源共享

CORS 跨域资源共享相关技术分享

本篇包括以下内容:

  • CORS 定义
  • CORS 对比 JSONP
  • CORS,BROWSER支持情况
  • 主要用途
  • Ajax请求跨域资源的异常
  • CORS 思路
  • 安全说明
  • CORS 几种解决方案
    • 自定义CORSFilter
    • Nginx 配置支持Ajax跨域
    • 支持多域名配置的CORS Filter

keyword:cors,跨域,ajax,403,filter,RESTful,origin,http,nginx,jsonp


netty 粘包问题处理

netty 粘包问题处理

一般TCP粘包/拆包解决办法

  1. 定长消息,例如每个报文长度固定,不够补空格
  2. 使用回车换行符分割,在包尾加上分割符,例如Ftp协议
  3. 消息分割,头为长度(消息总长度或消息体长度),通常头用一个int32表示
  4. 复杂的应用层协议

netty的几种解决方案

特殊分隔符解码器:DelimiterBasedFrameDecoder

客户端发送消息


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×