JIRA&Bibucket 部署策略

JIRA&Bitbucket

加入到新团队后一直着手于建立统一的标准软件流程,现有的项目因为不同BU的影响,不仅流程各不相同,使用的工具也是五花八门,所以从年初制定KPI时,不仅是制定标准的软件流程,软件开发工具的统一也是一项重要内容。经过各种讨论评估,最终决定使用JIRA和Bitbucket,后续还会有Bamboo和Confluence的加入,最终凑齐Atlasssian全家桶, 完成软件开发从需求管理、任务管理、测试管理、代码管理、缺陷管理、持续集成、文档管理的全流程覆盖。

经过漫长的与sourcing和IT部门的扯皮,终于采购了JIRA和Bitbucket。然后由于IT部门的不作为,所有安装、配置、管理、维护都是自己动手,项目开发的任务之外又承担了配置管理员的角色,虽然这个我这个二把刀管理员搞出来的配置非常不专业,但是因为是自己的心血,还是很有必要记录一下的。

Read More

头脑风暴

简介

头脑风暴是经常被使用的词汇,大众或多或少都知道这种讨论解决问题的方法,但是即使是在专业的项目管理者手中,头脑风暴也是经常被误用的一个工具。人们经常认为自己是在进行头脑风暴,但其实他们只是在进行讨论而已,真正的头脑风暴是一个正式的过程。在参加了很多各种各样的、或好或坏的头脑风暴后,觉得有必要做些总结。

头脑风暴(Brainstorming)在维基百科的定义:一种为激发创造力、强化思考力而设计出来的一种方法。此法是美国BBDO(Batten, Bcroton, Durstine and Osborn)广告公司创始人亚历克斯‧奥斯本(Alex F. Osborn)于1938年首创的。

头脑风暴作为一种群体决策工具在PMBOK的多个管理过程中被推荐使用,比如:项目整合管理,范围管理,时间管理,成本管理,质量管理,风险管理等。

头脑风暴主要目标大量收集解决问题的灵感和方案。为了最大限度的激发团队的创造力和思考力,过程中提倡自由发言、畅所欲言、发散思考,鼓励互相启发和激励,禁止评论和批评。

Read More

Shell 截取文件名和后缀

截取文件名和后缀

编写Shell脚本的过程中,经常会和文件名和文件路径打交道。如果用户输入了一个文件的全名(可能包含绝对路径和文件后缀),如何得到文件的路径名,文件名,文件后缀这些信息呢。Shell脚本拥有强大的字符串处理能力,如果把文件名当做字符串,我们不难使用cut或sed这样的工具得到我们想要的结果。

1
2
3
4
5
6
7
$fullfile=/the/path/foo.txt
$fullname=$(basename $fullfile)
$dir=$(dirname $fullfile)
$filename=$(echo $fullname | cut -d . -f1)
$extension=$(echo $fullname | cut -d . -f2)
$ echo $dir , $fullname , $filename , $extension
/the/path , foo.txt , foo , txt

这里使用basename命令可以直接得到包含后缀的文件名,而dirname命令可以得到路径名,然后就能简单的用cut截取文件名和后缀名。

Read More

Vagrant 管理虚拟机

万万没想到,有一天也会沦落到在一台4G内存的Win7笔记本上搞linux编程,还我的16核Z600……好吧,抱怨也是没有用的,和销售人员一样型号的13寸笔记本,标志着我的coding生涯从此全面进入虚拟机和SSH时代。

先不说外接键盘、鼠标、显示器的酸爽,作为开发编译环境的虚拟机就是个问题。放在某个server上,锁在大楼的某处,感觉蛮牢。直到一次急等着release一个feature时怎么也连不上,跑去一看,那台server已经被人大卸八块了……幸好最后装上还能用,着实惊出一身冷汗。这件事提醒我真的需要好好考虑怎么将开发环境管理好,减少重新配置环境的开销和风险,甚至为整个团队构建更高效的开发和测试环境,提高团队效率……

vagrant

解放生产力的共产主义理想先不说,说起虚拟机的设置、部署和迁移,vagrant是鼎鼎大名了。按照官网的描述,vagrant是用于创建和配置轻量级、可复用、跨平台的开发环境的工具。

Read More

Sed - 4:经典用例

Sed - 1: 基本概念
Sed - 2: 常用功能
Sed - 3: 高级功能

Sed常用命令列表如下:

  命令   功能
a\ 在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“\”续行
c\ 用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用”\”续行
i\ 在当前行之前插入文本。多行时除最后一行外,每行末尾需用”\”续行
d 删除行
h 把模式空间里的内容复制到暂存缓冲区
H 把模式空间里的内容追加到暂存缓冲区
g 把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容
G 把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面
l 列出非打印字符
p 打印行
n 读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理
q 结束或退出sed
r 从文件中读取输入行
! 对所选行以外的所有行应用命令
s 用一个字符串替换另一个
g 在行内进行全局替换
w 将所选的行写入文件
x 交换暂存缓冲区与模式空间的内容
y 将字符替换为另一字符(不能对正则表达式使用y命令)

Read More

Sed - 3:高级功能

GNU sed独有的替换字符串标记

  • \l : sed将\l标记之后的单个字符输出为小写
  • \L : sed将\L标记之后所有的字符串作输出为小写
  • \u : 对应\l标记,sed将\u之后的单个字符输出为大写
  • \U : 对应\L标记,sed将\U标记之后所有的字符串作输出为大写

这些字符串标记一般配合正则表达式分组使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ cat employee.txt
101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager
# 将第1和第2分组交换位置,将第2分组内容改为大写,第3分组内容改为小写
$ sed 's/\([^,]*\),\([^,]*\),\(.*\).*/\U\2\E,\1,\L\3/g' employee.txt
JOHN DOE,101,ceo
JASON SMITH,102,it manager
RAJ REDDY,103,sysadmin
ANAND RAM,104,developer
JANE MILLER,105,sales manage

Read More

Linux下使用dd命令备份硬盘

Clone Disk

我们最近做的项目是和多方合作,系统依赖的很多程序和设置都来自第三方,系统的运行环境全都做在了一块硬盘里。从我们拿到这块硬盘起系统的运行就没有正常过。经过多日的调试,可以判断出是依赖的一些库和配置文件有错误,导致软件运行异常。多次协调对方也不愿意提供更多关于修复安装和配置的信息(当然可能他们也不知道)。项目开始时没有人留意,出了事故才发现,整个项目的开发过程中,能运行系统的环境竟然在唯一的一块硬盘上。简直是这辈子最苦逼的开发体验,所有人都很重视,所有领导都每天询问,各种高级工程师秒回你的邮件。但是…但是所有的细节都是秘密,所有问实现,问原理,求指导的问题都不正面回答,要求一个纯净的可用的硬盘也没人答复,所有人都等着你探索黑盒子里的秘密……

当然我是幸运的,最后通过其他途径找到一台还能运行的旧版设备,使用硬盘对拷的办法,在一块新的硬盘上克隆了全部运行环境,基于这个环境才搭起了系统。

Read More

同步sublime设置

因为经常要在windows、Linux和mac下切换工作环境,而Vim在不同平台下很难保持一致的使用体验,设置很困难,最近使用sublime的场景越来越多。Sublime有相对方便的package安装管理方法,结合Git的版本管理,可以很简单的在不同平台下同步设置。

package文件夹位置

Sublime Text 3 中默认的package文件夹位置如下:

1
2
3
OS X: ~/Library/Application Support/Sublime Text 3/Packages/
Windows: %APPDATA%/Roaming/Sublime Text 3/Packages/
Linux: ~/.config/sublime-text-3/Packages/

可以通过点击工具栏Preferences|Browse Packages选项找到文件夹位置。这里面我们感兴趣的是User文件夹。

Read More

Sed - 2:常用功能

文本替换

1
[address]s/pattern/replacement/flags

4种常用替换标记:

  • n数字 : 表明仅替换前n个被pattern匹配的内容
  • g : 表明替换所有匹配的地方。如果flags为空,则默认替换第一次匹配。
  • p : 仅当行被pattern匹配时,打印模式空间的内容
  • w file : 将替换的结果写入到文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ cat data
This is a test of the test script.
This is the second test of the test script.
$
$ sed 's/test/trail/' data #默认替换每一行的第1次匹配
This is a trail of the test script.
This is the second trail of the test script.
$
$ sed 's/test/trial/2' data #只替换每一行的第2次匹配
This is a test of the trial script.
This is the second test of the trial script.
$
$ sed 's/test/trial/g' data #替换所有的匹配
This is a trial of the trial script.
This is the second trial of the trial script.

Read More

Snippets 代码片段

Snippet(片段)在编程中是指一段可复用的代码或文本,在绝大部分编辑器和IDE中都有Code Snippet功能。Code Snippet代码片段自动生成据说是textMate首创的,现在主流的编辑器和IDE都有类似的功能,可以让用户针对不同的场景定制、管理和插入代码片段。在Vim中自从我用了ultisnips,傍观者的智商再也跟不上我码代码的速度,谈笑风生,弹指间满屏代码,可谓居家旅行必备装X神奇。

ultisnips演示

Read More