Archive

Archive for February, 2010

如果大象能够跳舞,那么蚂蚁就必须离开舞台

February 26th, 2010 No comments

           2005年5月1日,中国电脑大腕联想集团正式对外宣布完成收购IBM全球PC业务。这是皆大欢喜的一幕:新联想一跃成为全球第三大PC制造商,而IBM终于在他们的前任董事长郭士纳指引的IT服务转型的道路上义无反顾地轻装前进。
  
   提到IBM,让人想到著名的thinkpad,深蓝的气质,四海一家的解决之道的广告等等….
  
   IBM是美国的骄傲,或国家的象征。
  
   20世纪20年代初,IBM的创始人老沃森,先是收购了几家小公司,把新公司命名为:国际商务机器公司,简称IBM。IBM的早期业务是由广泛而大多不相关的业务构成,从刻度尺、奶酪切片机、到钟表和打字机。但是重要的是,IBM还是表现出了自己的远见:它是当时最早涉及到计算行业的少数公司。在30年代,美国政府委托IBM作为其“社会安全体系”计划的规划和实施者,这一切都代表着IBM巨大的成功。
  
   IBM真正成为IT业的全球大腕,要归功于小沃森把IBM带入了电脑时代。IBM主机系统的成功研制,奠定了IBM的至高地位。IBM 的s/360是电脑历史上的里程碑。
  
   当然,成也萧何,败也萧何。IBM围绕自己的主机系统,建立了庞大的软件开发、咨询、销售、服务体系。s/360的实施也远非规划那么容易达到。在著名的《人月神话》中,参与s/360开发的作者暗示,s/360的开发就像落在史前焦油坑里的怪物,硕大无比而无法收场。
  
   正当IBM还沉溺于自己的大型主机的帝国梦时,时间已经推进到20世纪90年代。在名正言顺的IT时代,在短短的几年时间里,不可思议的发生了两次大事件。这两件大事件的到来,不仅改变了IBM,也改变了整个IT行业,更改变了世界。
  
   第一个大事件个人电脑时代的兴起。第二个大事件是互联网时代的到来。
  
   IBM推出了世界上第一台IBM PC。然而,IBM却让巨大的历史机遇从手上溜走:他们采用了微软公司的ms-dos操作系统,把一个软件帝国的王者,送上了成功之路。
  
   在20世纪90年代早期,IBM面临的就是这样的困境:大型主机的市场,被用来玩玩得unix低价侵蚀;而个人电脑的标准化,开放性市场的竞争对手的崛起,如compaq等的强大压力。内忧外患,IBM再也不能保有自己崇高的地位:优越的垄断,丰厚的利润,夸张地成长…
  
   所有的迹象表明,当时的IBM正在滑向深渊。媒体和咨询专家都在给IBM出谋划策:似乎为了生存下去,IBM撤分成更小的单位,更适合生存和成长。
  
   正是在这样的背景下,郭士纳临危受命,成为IBM的船长。
  
   郭士纳,哈佛商学院毕业,曾就职于麦肯锡咨询,美国运通公司。在外人看来,郭没有技术背景,但他在美国运通的业务经历,使之对信息技术拥有一种独特的战略眼光。
  
   在郭士纳接手IBM后,他给IBM开出了三剂良药。从后来历史的数据显示,94年开始后,IBM不但结束了自己的亏损噩梦,而且开始了持续10年之久的高速增长。IBM终于起死回生,震惊世界。
  
   郭士纳给IBM开出的苦口良药是:
  
  [止血但保留IBM完整性]
   郭士纳充分意识到在过去的经营中,IBM的品牌是IBM最大的隐形资产。他没有简单的拆分公司,这为公司的战略转型留好了伏笔。
  
   从公司内部为向导,转变为以市场为向导。简化商业的执行策略,坚持按市场竞争机制定价和销售。对非核心资产和不盈利单位,坚决实施“关停并转”
  
   推进新型有效的绩效考核机制,简化组织结构,听取客户或市场建议
  
  [转型为IT服务]
  
   过去封闭的IBM主机体系结构,代表着恶性的产业链结构。这种产业结构,必然树立起众多的强敌。
  
   化敌为友,化竞争关系为合作关系,建立良好的生态环境,发挥自己独特的资产优势,IBM必须退出应用软件开发的领域,专注于特长更多、优势更大、利润最丰厚的IT服务市场。
  
   定位于软件服务,热烈拥抱互联网时代的到来。互联网的大众化的市场细分趋势,使得技术价值向服务价值转移,使得IBM的软件服务资产优势更为明显
  
  [转变IBM文化]
  
   从技术导向,到顾客导向的转变
  
   这意味着,IT服务不是传统意义上的,只是服务于自己的产品体系,而是更多的关注顾客的流程和业务整合。
  
  
   郭士纳这样说IBM:
  
   大,很重要,因为规模就是杠杆。深度和广度可以容纳更大的投资、更大的风险以及更长久的对未来的投入。
  
   这不是大象是否能够战胜蚂蚁的问题,这是一只大象是否能跳舞的问题。如果大象能够跳舞,那么蚂蚁就必须离开舞台。
  
  
   《谁说大象不能跳舞》是郭士纳本人亲笔写就的IBM管理传奇,书中翔实的记录了他从加盟IBM,到引领IBM凤凰涅磐的全部过程。书中展现了一位管理大师的境界、眼光和博大胸怀。
  
   众所周知,现在的IBM已经成功转型为世界上最大的IT服务公司。郭士纳具有的信息技术的战略眼光,对公司治理之道,值得学习和借鉴。

  • Share/Bookmark

绩效管理

February 11th, 2010 No comments

对于绩效管理,我们需要从新开始思考这个事情怎么做,因为好多公司的绩效管理在执行过一段时间之后都被证明是失败的,因为根本没有调动大部分人的积极性,甚至打击了不少人的积极性。

 1. 首先考虑清楚,绩效管理的目的是什么?是推动整个团队的进步,而不是成为部分领导打击报复个人的工具。当然,对于团队的定义,一定要明细,团队拥有各种类型的人,包括新员工,老员工,一定要考虑对于不同的人都要有不同的推动效果。

2. 绩效管理同时需要考虑公司的年度目标,部门的目标,项目的目标,个人的目标。并把公司的目标分解到部门,部门的目标分解到项目,项目的目标分解到个人。注意,一定要让每个人有表达自己意愿的机会,让他们把自己的个人职业目标提出来,然后在项目实施过程中贯彻进去。

 3. 对于这个目标管理,一定要对每个人都指定一个,需要遵守SMART准则。并且这个目标一定要和个人达成认可,否则,目标无效,要让个人感觉到有这个挑战动力。

4. 项目开始之后,正是贯彻目标之时,每隔2个星期左右,或者1个月左右(取决于项目大小),开始对项目中的各方面,个人的各个目标进行进度跟踪,确保每个人都在正确的轨道上,如果有问题,或者发现有问题的风险,一定要即使提出来,如果必要需要修改目标,保证目标对个人的挑战。

 5. 持续重复第四步,直到项目结束

  • Share/Bookmark
Categories: 企业管理 Tags:

用JIRA、CVS、XPlanner、WIKI来进行项目管理

February 6th, 2010 No comments

从版本管理的角度来考虑,最理想的发布方法就是把CVS中的代码拿下来, 打上一个tag, 编译并且测试一直到发布。这样的管理方式的确是很简单的,但事实上用户可不买帐的。这里讲的Issue就是前面JIRA系统中的一个issue。

JIRA

  一个非常出色的Issue跟踪系统,这里的Issue不单单是指BUG, 很多时候也可以是TASK, IMPROVEMENT, NEW FEATURE, 甚至是一个QUESTION。

  在多年前, 我曾经尝试使用过那个经典的的Bugzilla,但是一个项目作下来,大家都反映那个东西的界面实在是太粗糙,简直无法忍受而且报表功能也是在太弱。最后大家就讨论自己作一个BUG的跟踪系统,就在大家已经完成了设计文档准备编码的时候, 我们发现JIRA原来就是我们要找的东西,而且比我们要的更多。它内置一个可以配置的工作流引擎(osworkflow),一个快捷的全文检索功能(基予Apache Lucene).和一个可以配置的Dashboard(portlet),以及一个和CVS连接的引擎,通过这个连接,在一个Issue中直接可以看到修改的文件名称,如果配置了viewcvs的话,还直接直接定位到行,根据一个问题可以跟踪到代码的行,这正式我们梦寐一求的功能。 也正是这种特性,才使我们能够把一个个Issue当作发布和版本管理的一个单元。

CVS

  这个应该大家都知道。在系统开发过程中,一切的源代码和设计文档都应该进入版本管理系统来进行管理, 有的时候可能资源库可能会膨胀的很大, 但这个代价是值得的。

XPlanner

  在整个管理体系中,进度管理一直是一个?比较薄弱的环节,我也曾试过dotproject这样的管理软件,但由于dotproject管理的太过详细,填报起来太复杂,大家渐渐都失去了填报的热情。这个 XPlanner软件可就简单多了。指定了迭代,story,然后就可以填写进度了。由于这个软件也是OpenSource的,所以如果觉得不满意,修改起来也很方便,现在老林就对这个系统作了些改进,可以直接和JIRA系统连接起来,JIRA中建立issue后,可以在XPlaner中反映出来,连填写 story的时间都省去了, 然后在下班之前可以生成一个详细的报告,列出每个人在这一天内在自己负责的Issue在上的处理时间和进度。

WIKI

  在项目管理中,我们一直把它当作文档管理和Portlet系统来使用,它现在已经变成我们的小组的工作台,在WIKI中我们制定了包括系统开发设计规范在内的一切设计文档,以及数十个经常的HOWTO项目,例如如何配额一个标准的开发环境,如何使用CVS客户端,如何使用JIRA,以及自己的 JavaDoc, JSDoc等。 我们也可以通过Wiki来简单的整合系统,在Wiki中我们列出了所有开发环境和开发工具的入口,例如上面就放了进入JIRA,XPlanner以及我们各个Project的连接,甚至到 Apache中常用的Project的JavaDoc的连接,现在再也没有人去记录这些URL了,只要打开Wiki所有的资源都在面前了,并且由于wiki本身的开放性,所以每个团队的成员都是一个维护者,同时也是这个系统的受益者。在很多的团队中经常出现的情况是一个小子对某个技术特别在行,大家遇到这方面的问题都问他,在小的团队中, 面对面的交流通常是最快的交流方式,但是放到大的团队中,这个就不大可行了,那个小子迟早有一天会被问的烦到吐血为至,特别是他自己的工作也无法按时完工的时候。还是抽一个小时写出来,放到 wiki里面吧, 别问我, 自己去查Wiki。

基于ISSUE的发布管理

  从版本管理的角度来考虑,最理想的发布方法就是把CVS中的代码拿下来, 打上一个tag, 编译并且测试一直到发布。 这样的管理方式的确是很简单的,但事实上用户可不买帐的, 用户觉得在新的版本中某个新的功能他还不想要,这可能是他还没有整理好业务初始数据或者在实际的业务流程上或人员上没有做好准备, 上帝说了不要咱就不能把这个新功能发布。在这个情况下,基于Issue的发布管理是一个好的方案。

  这里讲的Issue就是前面JIRA系统中的一个issue。 通常每个Issue的完成都会伴随这一些代码的修改。 基于Issue的发布简单的来说就是把一组Issue变更的文件用patch的形式发布到正式的系统中。

  基于Issue发布的前提就是要在Issue和Source之间建立连接, 使发布人员清楚的知道每个Issue修改的源代码是什么。我们实践下来最简单的办法就是在提交source的时候必须加上JIRA编号, 没有JIRA编号代码是不能提交的。 这样有以下好处:

1)防止一些没有经验的程序员无意义的提交, 比如一个小子今天提交了一个java文件,明天发现这个变量命名有点不爽, 修改后就要提交,在这种情况下, 这个提交是没有意义的,如果测试组已经测试这个Issue, 是否测试组要重新测试? 为一个变量名称化这样的时间和冒险是可嫩的。小伙子还是在第一次提交的时候就把变量名想好了再提交。

2)程序员偷偷的修改代码,一个小伙子发现自己的已经Closed的Issue中有一个Bug, 便偷偷的修改代码。 这个当然也是不可能的,凡是提交到CVS中的代码就不是自己的了,那是大家的, 没有足够的理由想改当然没有那么容易。 先自己建立建立个Issue, 向Team leader报告, 然后再去修改代码.。

  • Share/Bookmark

谁说大象不会跳舞–IBM董事长郭士纳

February 6th, 2010 No comments

“如果有必要,我会从外部引进人才。但是,你们中的每一个人都最先有机会展现你们自己的才能,而且,我也希望你们能给我一些时间来证明我自己的能力。每个人都是站在新的起跑线上,你们过去所取得的成就或遭受的失败都与我无关。”
  我继续概括性地介绍了我的管理哲学和管理实践:
  我按照原则而不是程序实施管理。
  市场决定我们的一切行为。
  我是一个深深地相信质量、强有力的竞争战略与规划、团队合作、绩效工资制和商业道德责任的人。
  我渴求那些能够解决问题和帮助同事解决问题的人;我会开除那些政客式的人。
  我将致力于战略的制定,剩下的执行战略的任务就是你们的事了。只需以非正规的方式让我知道相关的信息。不要隐瞒坏消息—我痛恨意外之事;不要试图在我面前说谎;要从在生产线以外解决问题,不要把问题带到生产线上。
  动作要快。不要怕犯错误,因为即便是犯错误也要由于我们动作太快而不是太慢。
  我很少有等级制度的观念。无论是谁,也无论其职务高低,只要有助于解决问题,大家就要在一起商量解决。要将委员会会议和各种会议减少到最低限度。取消委员会决策制度。让我们更多一些坦率和直截了当的交流。
  我对技术并不精通,我需要学习,但是不要指望我能够成为一名技术专家。分公司的负责人必须能够为我解释各种商业用语。
  然后,我在自己的认识水平的基础上,向他们提出了一些建议。我们一共有5个刚上任90天中的优先性任务,它们分别是:
  暂时冻结流动资金。我们就要面临着流动资金短缺的危险。
  确保我们将在1994年实现赢利,并向全世界—以及IBM各分公司传个口信:公司的经营业已稳定。
  开发和实施1993年-1994年的关键客户战略,这将会使客户相信,我们又回来为他们的利益提供服务了,而不是强迫他们接受我们的“固定产品”(电脑主机)以便减缓我们自己短期的财政压力。
  在第三季度开始的时候要完成精简裁员任务。
  开发一个中期的商业战略。

  • Share/Bookmark

jira实现创建问题的时候将问题自动分配给模块负责人component lead

February 4th, 2010 No comments

我以JIRA 3.12.1来说
1.首先在Project的管理界面,Add相应的Components,添加Components时指定其Component Lead为相应的开发组负责人。
2.添加了Components后,单击Components下方的Select,将Default Assignee指定为Component Lead。
3.在Field Configuration里,显示“模块”/“Components”这个字段,并定义为“必填”/“Required”
4.在该项目创建问题所使用的Screen里(通常是在Screen Scheme里),显示“模块”/“Components”,并告知创建者在创建时要单选,不要多选。因为选择多个模块时,可能会有多个负责人,但一个问题只能被分配给一个人。
5.在该项目创建问题所使用的Screen里(通常是在Screen Scheme里),若显示“开发者”/“Assignee”这个字段,则通知创建者在创建时不用选择开发者,默认为“自动”即可。若隐藏“开发者”这个字段,则系统就会把新创建的问题自动分配给相应的Component Lead.

转载请注明源自www.SCMLife.com,请保留版权. 本贴地址:http://bbs.scmlife.com/viewthread.php?tid=17636

  • Share/Bookmark

jira 试用license授权码

February 3rd, 2010 No comments
JIRA 3.*

mNmmqDVQBQhkfqNncKTPLJBnpQRcUDRtwwbxTfdpXcLIcnA
mj2Kc8Zd4E2ELX32<8VdKDWX2L0GZETIelTbYbnsu5uM8G0
ooOtWOnpoPnpRmqRpNXVqmomOopqmpRnrwtuWusTTrTTxSu
tTUSxxTNWWqQNWUsmopvUUnorooqrsmmmmmUUnorooqrsmm
mmmUU8rXtbfWKbZeklildfbpW3lkiWCqak

JIRA 4.0

AAABKg0ODAoPeNptkFFrgzAUhd/zKwJ7naJCS1sIdGhgDmeLtd3LXrL0tmaLiSTRrf9+ViuUscdwc
853znl4gyPOdYejGY7C1Wy+igIc70ocBcESJWC5EY0TWpGXtHjCeyVFLVyv2Vsw9n2FE+hA6gYMz
gQHZQHFBthVkTAH5GrjhaEXzVGslWPc5awGcvpiarlYVy37BuFzXaNPYZh/s6BHMSBpXtJiW6Q7O
onpKxPyHzXtmGwHKjkx2Ye4tysvDQzUhB5ottnSYjz3fqID4kwLSI5fD32pq0mEepByoJjiQH8aY
S63OmHg9Y2CBdqYM1PCjtDnIQougVdKS30WYHGs/UecuaM/0vK2/gCzOQ3DES9Et3RpQrI0mV53r
HbaGm1bwytm4e+iv+MEluowLAIUbzOeTFmaflIz8gM7mOA1Zpw3gRUCFBGxxZcn1PX4xvSirQH5a
G14C7pEX02eu

JIRA 注册码程序

这个程序算出来的license在JIRA 3.13.5版本中是有效的,这个版本是目前最新的release版本,没有在4.0beta中试过。

Java代码 复制代码
  • package com.justin.workaround;   
  •   
  • import java.io.IOException;   
  • import java.security.KeyFactory;   
  • import java.security.Signature;   
  • import java.security.spec.PKCS8EncodedKeySpec;   
  •   
  • import com.atlassian.license.LicensePair;   
  •   
  • public class JiraLicenseGenerator   
  • {   
  •     static byte EncodedPrvKey[] = { 48, -126, 1, 75, 2, 1, 0, 48, -126, 1, 44, 6, 7, 42, -122, 72, -50, 56, 4, 1, 48,   
  •                     -126, 1, 31, 2, -127, -127, 0, -3, 127, 83, -127, 29, 117, 18, 41, 82, -33, 74, -100, 46, -20, -28,   
  •                     -25, -10, 17, -73, 82, 60, -17, 68, 0, -61, 30, 63, -128, -74, 81, 38, 105, 69, 93, 64, 34, 81, -5,   
  •                     89, 61, -115, 88, -6, -65, -59, -11, -70, 48, -10, -53, -101, 85, 108, -41, -127, 59, -128, 29, 52,   
  •                     111, -14, 102, 96, -73, 107, -103, 80, -91, -92, -97, -97, -24, 4, 123, 16, 34, -62, 79, -69, -87,   
  •                     -41, -2, -73, -58, 27, -8, 59, 87, -25, -58, -88, -90, 21, 15, 4, -5, -125, -10, -45, -59, 30, -61,   
  •                     2, 53, 84, 19, 90, 22, -111, 50, -10, 117, -13, -82, 43, 97, -41, 42, -17, -14, 34, 3, 25, -99,   
  •                     -47, 72, 1, -57, 2, 21, 0, -105, 96, 80, -113, 21, 35, 11, -52, -78, -110, -71, -126, -94, -21,   
  •                     -124, 11, -16, 88, 28, -11, 2, -127, -127, 0, -9, -31, -96, -123, -42, -101, 61, -34, -53, -68,   
  •                     -85, 92, 54, -72, 87, -71, 121, -108, -81, -69, -6, 58, -22, -126, -7, 87, 76, 11, 61, 7, -126,   
  •                     103, 81, 89, 87, -114, -70, -44, 89, 79, -26, 113, 7, 16, -127, -128, -76, 73, 22, 113, 35, -24,   
  •                     76, 40, 22, 19, -73, -49, 9, 50, -116, -56, -90, -31, 60, 22, 122, -117, 84, 124, -115, 40, -32,   
  •                     -93, -82, 30, 43, -77, -90, 117, -111, 110, -93, 127, 11, -6, 33, 53, 98, -15, -5, 98, 122, 1, 36,   
  •                     59, -52, -92, -15, -66, -88, 81, -112, -119, -88, -125, -33, -31, 90, -27, -97, 6, -110, -117, 102,   
  •                     94, -128, 123, 85, 37, 100, 1, 76, 59, -2, -49, 73, 42, 4, 22, 2, 20, 42, 50, -88, 30, 125, -37,   
  •                     118, -50, 20, -82, -63, 0, 8, -36, 106, -9, -110, 124, 107, 68 };   
  •   
  •     public static void main(String args[]) throws IOException   
  •     {   
  •         try  
  •         {   
  •             long l = 267L;   
  •             long l1 = System.currentTimeMillis();   
  •             long l2 = System.currentTimeMillis();   
  •             String s = ”";   
  •             System.out.println(“Keygen for JIRA Enterprise Edition.”);   
  •             System.out.print(“created by mydaj[ROR].”);   
  •             do  
  •             {   
  •                 System.out.print(“\nEnter your organization name: ”);   
  •                 for (int i = System.in.read(); i != 10 && i != 13; i = System.in.read())   
  •                     s = s + (char) i;   
  •   
  •             }   
  •             while (s == ”");   
  •             try  
  •             {   
  •                 PKCS8EncodedKeySpec pkcs8encodedkeyspec = new PKCS8EncodedKeySpec(EncodedPrvKey);   
  •                 KeyFactory keyfactory = KeyFactory.getInstance(“DSA”, ”SUN”);   
  •                 java.security.PrivateKey privatekey = keyfactory.generatePrivate(pkcs8encodedkeyspec);   
  •                 String s1 = Long.toString(l, 10);   
  •                 s1 = s1 + ”^^”;   
  •                 s1 = s1 + Long.toString(l1, 10);   
  •                 s1 = s1 + ”^^”;   
  •                 s1 = s1 + Long.toString(l2, 10);   
  •                 s1 = s1 + ”^^”;   
  •                 s1 = s1 + s;   
  •                 byte abyte0[] = s1.getBytes();   
  •                 Signature signature = Signature.getInstance(“SHA1withDSA”);   
  •                 signature.initSign(privatekey);   
  •                 signature.update(abyte0);   
  •                 byte abyte1[] = signature.sign();   
  •                 LicensePair licensepair = null;   
  •                 try  
  •                 {   
  •                     licensepair = new LicensePair(abyte0, abyte1);   
  •                 }   
  •                 catch (Exception exception1)   
  •                 {   
  •                     exception1.printStackTrace();   
  •                 }   
  •                 System.out.println(s1);   
  •                 System.out.println(“Your license key is: ”);   
  •                 System.out.println(licensepair.toString());   
  •             }   
  •             catch (Exception exception)   
  •             {   
  •                 exception.printStackTrace();   
  •             }   
  •         }   
  •         catch (IOException ioexception)   
  •         {   
  •         }   
  •     }   
  • }  
  • package com.justin.workaround;
    
    import java.io.IOException;
    import java.security.KeyFactory;
    import java.security.Signature;
    import java.security.spec.PKCS8EncodedKeySpec;
    
    import com.atlassian.license.LicensePair;
    
    public class JiraLicenseGenerator
    {
    	static byte EncodedPrvKey[] = { 48, -126, 1, 75, 2, 1, 0, 48, -126, 1, 44, 6, 7, 42, -122, 72, -50, 56, 4, 1, 48,
    					-126, 1, 31, 2, -127, -127, 0, -3, 127, 83, -127, 29, 117, 18, 41, 82, -33, 74, -100, 46, -20, -28,
    					-25, -10, 17, -73, 82, 60, -17, 68, 0, -61, 30, 63, -128, -74, 81, 38, 105, 69, 93, 64, 34, 81, -5,
    					89, 61, -115, 88, -6, -65, -59, -11, -70, 48, -10, -53, -101, 85, 108, -41, -127, 59, -128, 29, 52,
    					111, -14, 102, 96, -73, 107, -103, 80, -91, -92, -97, -97, -24, 4, 123, 16, 34, -62, 79, -69, -87,
    					-41, -2, -73, -58, 27, -8, 59, 87, -25, -58, -88, -90, 21, 15, 4, -5, -125, -10, -45, -59, 30, -61,
    					2, 53, 84, 19, 90, 22, -111, 50, -10, 117, -13, -82, 43, 97, -41, 42, -17, -14, 34, 3, 25, -99,
    					-47, 72, 1, -57, 2, 21, 0, -105, 96, 80, -113, 21, 35, 11, -52, -78, -110, -71, -126, -94, -21,
    					-124, 11, -16, 88, 28, -11, 2, -127, -127, 0, -9, -31, -96, -123, -42, -101, 61, -34, -53, -68,
    					-85, 92, 54, -72, 87, -71, 121, -108, -81, -69, -6, 58, -22, -126, -7, 87, 76, 11, 61, 7, -126,
    					103, 81, 89, 87, -114, -70, -44, 89, 79, -26, 113, 7, 16, -127, -128, -76, 73, 22, 113, 35, -24,
    					76, 40, 22, 19, -73, -49, 9, 50, -116, -56, -90, -31, 60, 22, 122, -117, 84, 124, -115, 40, -32,
    					-93, -82, 30, 43, -77, -90, 117, -111, 110, -93, 127, 11, -6, 33, 53, 98, -15, -5, 98, 122, 1, 36,
    					59, -52, -92, -15, -66, -88, 81, -112, -119, -88, -125, -33, -31, 90, -27, -97, 6, -110, -117, 102,
    					94, -128, 123, 85, 37, 100, 1, 76, 59, -2, -49, 73, 42, 4, 22, 2, 20, 42, 50, -88, 30, 125, -37,
    					118, -50, 20, -82, -63, 0, 8, -36, 106, -9, -110, 124, 107, 68 };
    
    	public static void main(String args[]) throws IOException
    	{
    		try
    		{
    			long l = 267L;
    			long l1 = System.currentTimeMillis();
    			long l2 = System.currentTimeMillis();
    			String s = "";
    			System.out.println("Keygen for JIRA Enterprise Edition.");
    			System.out.print("created by mydaj[ROR].");
    			do
    			{
    				System.out.print("\nEnter your organization name: ");
    				for (int i = System.in.read(); i != 10 && i != 13; i = System.in.read())
    					s = s + (char) i;
    
    			}
    			while (s == "");
    			try
    			{
    				PKCS8EncodedKeySpec pkcs8encodedkeyspec = new PKCS8EncodedKeySpec(EncodedPrvKey);
    				KeyFactory keyfactory = KeyFactory.getInstance("DSA", "SUN");
    				java.security.PrivateKey privatekey = keyfactory.generatePrivate(pkcs8encodedkeyspec);
    				String s1 = Long.toString(l, 10);
    				s1 = s1 + "^^";
    				s1 = s1 + Long.toString(l1, 10);
    				s1 = s1 + "^^";
    				s1 = s1 + Long.toString(l2, 10);
    				s1 = s1 + "^^";
    				s1 = s1 + s;
    				byte abyte0[] = s1.getBytes();
    				Signature signature = Signature.getInstance("SHA1withDSA");
    				signature.initSign(privatekey);
    				signature.update(abyte0);
    				byte abyte1[] = signature.sign();
    				LicensePair licensepair = null;
    				try
    				{
    					licensepair = new LicensePair(abyte0, abyte1);
    				}
    				catch (Exception exception1)
    				{
    					exception1.printStackTrace();
    				}
    				System.out.println(s1);
    				System.out.println("Your license key is: ");
    				System.out.println(licensepair.toString());
    			}
    			catch (Exception exception)
    			{
    				exception.printStackTrace();
    			}
    		}
    		catch (IOException ioexception)
    		{
    		}
    	}
    }

    运行后需要你填写你在安装JIRA过程中填写的公司的名字,如下:

    Enter your organization name:

    填写后回车即可生成license,然后再用管理员登录JIRA,更新license即可。

    • Share/Bookmark