一切福田,不離方寸,從心而覓,感無不通。

Jenkins实现测试环境到生产环境一键部署(Windows)

前言: 因为dotnet在发布站点后,然后再上传服务时,会因为各种的网速问题,导致站点瞬间挂掉!那么通过一键部署,先在测试站点测试好的文件,复制到正式站点上的一个缓冲区,进行预热配置,之后再本机进行文件替换,速度是相当的快,最终把影响降到最低。 所用到的插件: 文件复制插件,从master复制到slave:【Copy Data To Workspace Plugin】:https://wiki.jenkins-ci.org/display/JENKINS/Copy+Data+To+Workspace+Plugin 注意:此插件很久没有更新,一次只能是一个目录! 前提: 必须有两台服务器,且已经配置了slave的节点,参考:(Windows)http://www.cnblogs.com/EasonJim/p/6054436.html 实现思路: 1、在测试环境应该模拟和生成环境的配置和编译版本保持是Release状态,且功能已经满足预期发布需求。 2、通过文件复制插件,复制测试环境上的部署文件到生成环境上的jenkins工作空间。 3、通过批处理处理不需要覆盖的文件或者临时要修改的配置等。 4、利用rar备份生成环境上即将要覆盖的文件,注意命名上遵循一定规律:日期-项目-文件夹-{BuildID}.bak.rar。 5、利用批处理进行从生成环境的jenkins工作空间上把文件复制到站点上,常用命令:xcopy。 具体的实现步骤: 1、在jenkins上安装【Copy Data To Workspace Plugin】文件复制插件: 【系统管理】->【管理插件】->点击【可选插件】->搜索框输入【Copy Data To Workspace Plugin】 查看原图 查看原图 2、新建工程,把上面实现思路配置进去: 新建项目,注意:这里要选择【构建一个自由风格的软件】,不然复制文件插件无法复制! 查看原图 如果你出现了“Waiting for next available executor”,那么有可能是你选择成了【构建一个多配置项目】 进入项目详情页面,填写备注等信息,注意页面上的选择 查看原图 关联这个项目这能运行在这个节点上,这里的节点的选择是通过新建节点时输入的标签名称,注意页面上的选择 查看原图 选中复制文件插件,并指定要从master复制的文件夹,注意页面上的选择 查看原图 添加批处理进行slave的文件夹备份,注意页面上的选择 查看原图 填写备份的配处理,这里我用了RAR的压缩命令,所以如果要用RAR的时候,确保机器上已经安装。且,备份后的文件我写的比较有规律: 查看原图 命令:

再增加一个批处理,进行刚在master复制到slave的工作空间的文件用xcopy命令覆盖slave上的站点Admin文件夹 查看原图 这里使用xcopy命令进行复制 查看原图 命令:

最后【Save】,可以测试是否成功了。 注意:如果中途没有截图的选项,一般默认不选择,其实也可能根据需要进行选择。 如果想要在构建完之后,观察是否成功复制等信息,可以点【增加构建后操作步骤】来增加配置邮件的发送等操作。 后话: 有一键部署,那么肯定就有一键回滚,可以参考:http://www.cnblogs.com/EasonJim/p/5945266.html 最后是部署环境拓扑图和流程:http://www.cnblogs.com/EasonJim/p/6007669.html   from:https://blog.csdn.net/orichisonic/article/details/54706712

龙生   21 Jul 2018
View Details

Jenkins 2.x新建节点配置(Windows)

2.0版本以上默认加入了权限插件,所以在进入主界面时是需要登录的。 一、主界面->【系统管理】->【管理节点】->【新建节点】,进行节点的添加: 二、输入节点名称,已经选择【Permanent Agent】,这里和1.x版本的【Dumb slave】一样的效果 三、next,配置如下图: 其中,有如下几点需要注意: 【# of executors】根据CPU的个数来填写数量 【远程工作目录】这个就是用来存放master到slave时,存放的临时目录,如slave的服务软件也会放在此,并且会以每个job名称来区分开 【用法】只需要选择【只允许运行绑定到这台机器的Job】这种模式下,Jenkins只会构建哪些分配到这台机器的Job。这允许一个节点专门保留给某种类型的Job。例如,在Jenkins上连续的执行测试,你可以设置执行者数量为1,那么同一时间就只会有一个构建,一个实行者不会阻止其它构建,其它构建会在另外的节点运行。 【启动方式】只需要选择【Launch agent via Java Web Start】,以服务的方式启动,应用最广且最好配置,其余的都太复杂,不建议使用。注意:2.x版本的默认没有这个选项,需要单独开启,参考:http://www.cnblogs.com/EasonJim/p/5997490.html 其余的基本按照上面默认选择即可。 四、点击【Save】后,master上已经配置好节点,那么接下来就是到节点的服务器上安装slave的服务: 点击右侧列表的节点服务器,此时节点并未连通。 进入详情页面,会提示你如何安装服务: 说明:这个是一个java的服务,节点上必须安装了jdk后才能下载运行此服务,我使用了一个简单的方法,先把整个浏览器的url拷贝下来,然后在节点服务器上输入url进入以上的详情页面,然后点击【Launch】按钮下载服务,最后点击运行。 当在节点点击【Launch】按钮时,可能会出现弹出下载的一直卡住,可以尝试点击【取消】,然后在【Launch】按钮上右键另存为,保存在本地一个位置,然后双击再打开。 当在连接时,会出现如下的界面,没有【File】的选项,成功连接后,才会有【File】选项: 此时点击【Install as a service】按钮安装为服务,一路点yes。 安装成功后,你会发现,【d:\wwwroot\jenkins】文件夹多了一些文件,这个是服务所用到的问题,会实时连接master,实质上我观察的是轮询。注意:可能有些服务器上权限的问题,不会自动创建文件夹,你可以手动创建以上文件夹。 五、此时回到master上查看节点列表,你会发现刚才配置的节点连上了。 from:http://www.cnblogs.com/EasonJim/p/6054436.html

龙生   21 Jul 2018
View Details

做代码审查必须得有工具,推荐15款最佳代码审查工具

1. Gerrit Gerrit是一个基于网络的代码审查系统,便于使用Git的项目进行在线代码审查。Gerrit通过并排显示更改,使评论更容易,并允许任何评论者添加内联评论。Gerrit通过允许任何授权用户将更改提交给主Git存储库来简化基于Git的项目维护,而不是要求所有已批准的更改由项目维护者手动合并。 2 Gerrit 这是Google最好的代码审查工具之一,用户可以在其中讨论代码中的缺陷并查看代码。 3. Crucible 代码评论=高质量代码。查看代码,讨论变更,分享知识,并通过Crucible灵活的审查工作流程识别缺陷。它的代码审查适合于Subversion,CVS,Perforce等代码版本控制系统。 4.Codeplex Codeplex为团队系统代码审查提供了一个完整的解决方案,该工具已经变得非常受程序员的欢迎。该代码审查工具使用团队系统的优点来减少浪费。 5. Barkeep Barkeep是一种快速,有趣的方式来审查代码。工程组织可以利用它来保持高水平。Barkeep是可以托管的独立软件。一旦设置完成您可以使用它来跟踪和编辑审查互联网上可用的任何数量的git repos。它为在Ubuntu上运行进行了专门的设计。 6. Review Assistant Review Assistant是Visual Studio的代码审查插件。可以帮助你创建审阅请求并在不离开Visual Studio的情况下对其进行响应。Review Assistant支持TFS,Subversion,Git,Mercurial和Perforce。能在5分钟内完成基本设置并运行起来。 7.CodeStriker Codestriker是一款支持在线代码审查的开源Web应用程序。支持传统的文档审查,以及查看SCM(源代码管理)系统和普通单向补丁生成的差异。与CVS,Subversion,Clearcase,Perforce,Visual SourceSafe和Bugzilla都能集成。还有一个用于支持其他SCM和发布跟踪系统的插件架构。 8.Code Review Tool Code Review Tool(代码审查工具)允许团队成员以简单有效的方式协调检查代码,从而消除与常规正式代码检查相关的大部分开销。它提供了正式代码检查的所有好处,但与正式的代码检查相比,需要相当少的精力和时间。它支持正式和轻量级的两种代码审查流程。 9.Malevich Malevich是一个基于网络的点击式代码审查系统,专为个人和小团队使用而设计。其目标是将评论的成本尽可能接近零:轻松评论鼓励彻底的代码审查。Malevich的评论很容易。审阅者可以在浏览器中查看文件的原始版本和新版本。要对一行代码进行评论,他或她只需点击该行,然后开始输入。提交评论使其能够向请求代码审查的人员以及所有其他审核人员显示。 10. Code Brag Codebrag是一个追求简单的代码审查工具,可以配置流程使之适合你的团队。 11.Veracode Veracode是世界上最好的自动化,按需,应用安全测试及代码审查的解决方案。由Guardent,Symantec,@stake和VeriSign等安全公司的专家成立,并建立在软件即服务模式的基础上,Veracode解决方案为希望经济高效测试的企业提供应用程序安全和自动化代码审查服务。Veracode帮助开发人员通过扫描编译代码(也称为“二进制”或“字节”代码)而不是源代码来创建安全的软件。 12.Collaborator Collaborator是一个代码审查工具,可帮助开发,测试和管理团队共同合作,开发高质量的代码。它允许团队在透明的协作框架中进行同行评审,用户故事和测试计划 -让整个团队能快速将变化应用到代码中。通过使团队成员共同合作审查其工作,Collaborator可以帮助你在软件上市之前捕获错误。 13.Peer Review Plugin Trac的Peer Review Plugin(同行评审插件)。该插件的目标是消除耗时的代码审查会议,让开发人员能够在自己的时间内在用户友好的基于Web的环境中查看代码。这个程序主要是用Python编写的。该界面与Subversion无缝集成,允许用户浏览可查看文件的存储库。使用了Genshi作为Web端的脚本语言,与Javascript和AJAX一起构建了一个现代化的用户界面。 14.Codifferous Codifferous可以被描述为,繁忙的软件开发人员使用的代码审查工具。一旦代码从BitBucket或Github导入,软件就会立即读取代码。。 15.Phabricator Pfabricator可以定义为开源的软件工程平台,包括各种开源Web应用程序。这些Web应用程序帮助软件公司构建更好的软件。   from:https://blog.csdn.net/snshl9db69ccu1aikl9r/article/details/78467056

龙生   19 Jul 2018
View Details

20款最佳的代码审查工具

摘要:好的代码审查器可以大大地帮助程序员提高代码质量,减少错误几率。虽然现在市场上有许多可用的代码审查工具,但如何挑选也是一个艰巨的任务。在咨询过有关专家的建议和意见之后,我们罗列出了以下20款最佳的代码审查工具。1)CodeStrikerCodeStriker是一个免费&;开源的Web应用程序,可以帮助开发人员基于Web的代码审查。它不但允许开发人员将问题、意见和决定记录在数据库中,还为实际执行代码审查提供了一个舒适的工作区域。官方网站:http://codestrike 好的代码审查器可以大大地帮助程序员提高代码质量,减少错误几率。 虽然现在市场上有许多可用的代码审查工具,但如何挑选也是一个艰巨的任务。在咨询过有关专家的建议和意见之后,我们罗列出了以下20款最佳的代码审查工具。 1)CodeStrikerCodeStriker是一个免费&;开源的Web应用程序,可以帮助开发人员基于Web的代码审查。它不但允许开发人员将问题、意见和决定记录在数据库中,还为实际执行代码审查提供了一个舒适的工作区域。 官方网站: http://codestriker.sourceforge.net/index.html 2)RhodeCodeRhodeCode是另一款非常棒的代码审查工具,能让你发现代码中的bug和问题,并在检查过后删除它们。 官方网站: https://rhodecode.com/ 3)CodebragCodebrag是一款简单轻巧,提高进程作为的代码审查工具。它能帮助我们解决不少问题,如非阻塞代码审查、智能邮件通知、联机注释等等。 官方网站: http://codebrag.com/ 4)PhabricatorPhabricator是一个开源软件和web应用,包括代码审查、托管GIT /Hg/ SVN、寻找bug、浏览和审计源代码等功能。 官方网站: http://phabricator.org/ 5)CodifferousCodifferous是一款免费的代码审查工具,能为我们提供更快的代码审查服务。无论你在何时何地,Codifferous能让你的团队协作审查工作变得更容易。你忘记了一个pull请求?没事。Codifferous允许你检查任意分支上的代码,无论何时你都可以留下注释、获得反馈。 官方网站: https://codifferous.com/ 6)GetbarkeepBarkeep是“非常友好的代码审查系统”——让你用一种快速又有趣的方式来检查代码。你也可以用它翻阅Git存储库的提交,看diff文件,写注释,并且你还可以将这些注释通过电子邮件发送给下一位提交者。 官方网站: http://getbarkeep.org/ 7)CrucibleCrucible是另一款超级受开发人员欢迎的代码审查工具,可以审查代码、讨论修改,通过Crucible灵敏的审阅流程来确定缺陷。Crucible能够使得Subversion、CVS、Perforce等版本控制软件的代码审查变得简单起来。 官方网站: https://www.atlassian.com/software/crucible/overview 8)Code Review ToolCode Review Tool允许团队成员通过一种简单而有效的方式来协作审查代码。它提供了正式代码检查的所有优势,而且相比而言,所需的精力和时间更少。它既支持正式,也支持轻量级的代码审查进程。 官方网站: http://codereviewtool.com/ 9)Malevich用Malevich审查代码真的很简单。审查人员在同一个浏览器中,既可以看文件的原始版本,也可以看它的新版本。如果想要给某一行代码添加注释,只需要点击那一行,直接打字就可以了。提交注释之后,其他代码审查人员都可共享。 官方网站: http://malevich.codeplex.com/ 10)SmartBearSmartBear是一个有助于团队通过共同的开发、测试和管理工作以便能生产出高质量代码的代码审查工具。它允许团队在一个透明、协作的框架下进行同行代码审查、用户故事和测试计划——即时保持整个团队知晓对代码所做的更改。 官方网站: http://smartbear.com/product/collaborator/overview/ 11) Veracode代码审查是对计算机源代码的检查工作。它用于找到并修复在应用开发过程中产生的错误,以便改进程序质量和提升开发人员的技能。代码审查通常通过结对编程、讨论和正式审查等形式进行。 官方网站:http://www.veracode.com/security/code-review 12) GerritGerrit是一个基于 Web 的代码审查系统,适于采用 Git 版本控制系统开发的项目进行在线代码审查。 13)Review AssistantReview Assistant是一款支持Visual Studio的简单又优秀的代码审查工具。 1)在审查级别、特定的源代码块或源代码条上添加你的注释。 2)在预定会议之外启动与团队成员之间就代码的讨论。 3)标记需要修正的注释和缺陷之处。 4)在代码编辑器显示审查注释。 5)在审查注释和代码之间进行即时切换。 官方网站: https://visualstudiogallery.msdn.microsoft.com/9ef817b4-2c6d-4213-8b08-5be48f9d91b9 14)Review BoardReview Board是程序员节约时间、资金和精力的代码审查好工具。语法高亮的代码,可便于更快读取。 15)Peer Review Plugin此款插件通过提供基于Web的友好的审查环境,来节省开发人员在代码审查会议上所需要浪费的时间。 官方网站: http://trac-hacks.org/wiki/PeerReviewPlugin 16)Codereview  官方网站:https://codereview.appspot.com/ 17)Code ReviewerCode Reviewer是一款免费的、简单的又易于部署和使用的代码审查工具,由SmartBear开发——也是Collaborator的发明者,业界第一家推出商用代码审查工具的公司。 官方网站: https://codereviewer.org/ 18)Code Analysis ToolCAST代码分析技术着眼于解决两个基本问题。首先,最现代化的IT系统是由成千上万的组件构成,由多个团队和许多开发人员构建的。其次,测量这些系统的软件质量需要涉及多种技术和代码工具。 官方网站: http://www.castsoftware.com/products/code-analysis-tools 19)jArchitectJArchitect可简化复杂Java代码库的管理。你可以使用JArchitect分析代码结构、指定设计规则、执行高效的代码审查,以及通过比较不同版本的代码掌握作出的改进。 官方网站: http://www.jarchitect.com/ 20)ReviewaleReviewale是市面上新出来的代码审查工具,它的功能包括语法高亮、发现bug/问题、改进代码、干净的用户界面、自定义代码字体等等。 官方网站: https://reviewable.io/ from:https://www.aliyun.com/jiaocheng/181980.html

龙生   19 Jul 2018
View Details

SonarQube的安装、配置与使用

SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装、配置以及使用。 准备工作; 1、jdk(不再介绍) 2、sonarqube:http://www.sonarqube.org/downloads/ 3、SonarQube+Scanner:https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-2.5.zip 4、mysql数据库(不再介绍) 一、安装篇 1.下载好sonarqube后,解压打开bin目录,启动相应OS目录下的StartSonar。如本文演示使用的是win的64位系统,则打开D:\sonar\sonarqube-5.3\sonarqube-5.3\bin\windows-x86-64\StartSonar.bat 2.启动浏览器,访问http://localhost:9000,如出现下图则表示安装成功。 二、配置篇 1.打开mysql,新建一个数据库。 2.打开sonarqube安装目录下的D:\sonar\sonarqube-5.3\sonarqube-5.3\conf\sonar.properties文件 3.在mysql5.X节点下输入以下信息

url是数据库连接地址,username是数据库用户名,jdbc.password是数据库密码,login是sonarqube的登录名,sonar.password是sonarqube的密码 4.重启sonarqube服务,再次访问http://localhost:9000,会稍微有点慢,因为要初始化数据库信息 5.数据库初始化成功后,登录 6.按照下图的点击顺序,进入插件安装页面 7.搜索chinese Pack,安装中文语言包 8.安装成功后,重启sonarqube服务,再次访问http://localhost:9000/,即可看到中文界面 三、使用篇 1.打开D:\sonar\sonar-scanner-2.5\conf\sonar-runner.properties文件 2.mysql节点下输入以下信息

注意:如果测试项目与服务器不在同一台机子,则需要添加服务器的IP:

3.配置环境变量 a.新建变量,name=SONAR_RUNNER_HOME。value=D:\sonar\sonar-scanner-2.5 b.打开path,输入%SONAR_RUNNER_HOME%\bin; c.sonar-runner -version,出现以下信息,则表示环境变量设置成功 4.打开要进行代码分析的项目根目录,新建sonar-project.properties文件 5.输入以下信息

其中:projectName是项目名字,sources是源文件所在的目录 6.设置成功后,启动sonarqube服务,并启动cmd 7.在cmd进入项目所在的根目录,输入命令:sonar-runner,分析成功后会出现下图 8.打开http://localhost:9000/,我们会看到主页出现了分析项目的概要图 9.我们点击项目,选择问题链接,会看到分析代码的bug,哇,好多 10.选择一个最严重的bug,看看 原来是这个地方会出现空指针异常,原因是我没有进行初始化就使用这个变量了。Over 预知更多使用,请登录官网自行学习。 http://www.sonarqube.org/ http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Scanner   from:https://www.cnblogs.com/qiaoyeye/p/5249786.html

龙生   16 Jul 2018
View Details

ReSharper 配置及用法

1:安装后,Resharper会用他自己的英文智能提示,替换掉 vs2010的智能提示,所以我们要换回到vs2010的智能提示 2:快捷键。是使用vs2010的快捷键还是使用 Resharper的快捷键呢?我是使用re的快捷键 3: Resharper安装后,会做几件事情,这几件事情对于除此使用者,比较麻烦,因此归纳总结一下,以资参考。 (1)、会将选项——文本编辑器——C#——常规——自动列出成员 这个选择框的勾选去掉。这样当你使用某个方法的时候,便不会提示参数,是一个很郁闷的事情。 可以手动勾上。 (2)、会将选项——文本编辑器——C#——高级——显示实时语义错误、在编辑中用下划线标识错误这两个选项去掉。这个本来没有什么,但是如果卸载了Resharper, vs编辑器变不会实时提示错误。因此卸载Resharper后,需要把这两个选项重新勾选上。 4: use  var use implicitly typed local variable declaration 5:按 alt+enter 能解决很多问题。下面是快捷键大全。         6:   Alt+F7将你光标所在位置的变量的所有使用以列表的方式显示出来,显示结果的窗体可以像其他窗体那样停靠。 它的优点包括: 可以从所有使用中挑选只显示read usage或者write usage,有时我们只是想知道某个变量在哪里被改变了。找到的位置前的图标也告诉你这点。 可以在下方预览,即使我们列出所有使用,也不想跳转到每个使用它的地方,这时预览可以帮你大忙。 当你在代码编辑器中改动了某些使用时,比如删除了某行,那么在查找结果的窗体中,会用删除线表示出来。 默认的是寻找解决方案中所有的使用,并且按照命名空间来组织,非常便于选择。 我现在已经记不起来在没有Alt+F7之前我是怎么查找的。反正现在我几乎不怎么样Ctrl+F了,除非我忘记了某个变量的名字。如果是这样,多半这个名字需要refactor,那也是Resharper的另一大块功能所在。也许有人对这个功能嗤之以鼻,但是用过CAB的人都知道,订阅和发布某个事件的签名,完全是字符串,如果你不用搜索来找到它的话,你都不知道这个控件的鼠标点下去,到底有多少个处理程序在背后开始工作了。用了Alt+F7来搜索这个字符串,等于在查找背后所有的调用者。 不过提示你,当光标停留在一个类型上时,要慎用Alt+F7,假设是一个string,你应该能想象到得找到多少个使用   7:威力无比的Alt+Enter回车 万能的Alt+Enter能够帮你完成很多编写代码过程中的dirty work,总结起来大概是这么些: 帮你实现某个接口或抽象基类的方法; 提供你处理当前警告的一些建议; 为你提供处理当前错误的一些建议(不一定是真的错误); 为你简化当前的臃肿代码;   8:  Ctrl + F11   当我们看别人的代码,或者是看自己的代码的时候,总是觉得代码太多,于是我们就用 region来把代码进行了封装注释,可是这样之后别人看代码就很郁闷,Resharper的  File Structure 功能,就可以把region和你的方法都展示出来。 说了这么多,其实就是把对象浏览器和region的长处结合起来,既可以清晰的分类,又能一目了然的找到需要的方法。Resharper这时帮上你的大忙了。用Ctrl+F11,就弹出一个像右边这样的窗口来。 这里面,按照你的region来显示,这样读你的代码的人也受益了。每个方法的参数,返回值都如UML一样列出来。 如果需要浏览到某个方法,直接双击它的名字; 如果要把某几个方法装进一个新的region,则可以选中方法,点工具栏上的像框的那个图标;点叉则会删除这个region并把相应的方法移到外面来。 如果要调整某个方法的位置,比如把它移到别的region里面去,只需要在这里拖动这个方法即可。 更可喜的是,你想要的从这里浏览、找到所有使用和重构的功能也在这里提供了,在某个方法上右键你就能开始操作。   9:重构才是王道(上) 重构是一种精神,证明你在致力于提供高效的、精炼的、健壮的代码,而不是凌乱的、晦涩的、漏洞百出的代码。 在Visual Studio 2005中,微软第一次提供了重构工具。但是不够,远远不够。我们需要的重构是非常广义的,我们想要对代码进行快速的调整,快到我在想什么我的工具就能做什么。这才是追求重构的境界。所以在这个意义上,几乎Resharper为你提供了巨大的生产力。 Visual Studio 2005提供的重构包括了如下: 封装字段 提取方法 提取接口 提升局部变量 移除参数 重命名 重新排列参数 这些方法在Resharper中全部都支持(但Resharper的重构远不止这些),它们对应的变成了: 封装字段 —— Introduce Field 提取方法 —— Extract Method 提取接口 —— Extract […]

龙生   15 Jul 2018
View Details

Resharper团队协作之TODO

TODO 需求 首先我想跟大家分享一下我们团队的代码检查流程。 1. 项目经理随时会检查成员的代码,如果发现有不符合规范的代码,会在注释里面加todo。比如,假设leo的代码不符合规范,那么项目经理就会加注释: //todoleo: refactor below code to match the standard of defining a class in JS 2. 每个成员随时会检查属于自己的todo项,然后修改代码。比如,leo会把项目里所有todoleo的项列出来,然后一个一个检查。检查完了之后,将todo改成review。 3. 项目经理会检查所有的review。如果代码没有问题了,就会删除这个review(曾经的todo);如果代码仍然有问题,那么会再次改成todo。 开启TODO 1. 下载、安装、resharper。下载地址:http://www.jetbrains.com/resharper/。下载之后直接安装,安装后购买或者自行搜索keygen 2. 为每一个团队成员指定唯一的名字,通常为成员名字或者姓的拼音,只要简单易记就可以了。比如todoleo, tododaniel, todoben. 再将这些名字告诉每一个成员。 打开TODO窗口 3. 打开VS, 在菜单栏找到Resharper,然后打开RESHARPER/Windows/todo items。(此时你必须要打开一个项目才看得见) 4. 点击settings(如下图),这是会打开resharper对于todo item的设置。当然,你也可以通过菜单栏resharper-options-tools-todo items打开该设置。   定制TODO 5. 你可以选中一个小伙伴(pattern)或自带的Todo,再点击复制(duplicate),然后后再点击 Edit 修改。你也可以基于下图的设置来修改,注意红框框标记的地方。   TODO预览 6. 设置好了之后点击Save保存,退出设置。此时再打开todo-items,你可以看到filter下方有你自定义的过滤条件了。这些pattern会像resharper自带的todo,bug一样,在注释中加粗显示,特别醒目。 好了,上面就是全部的操作,非常简单吧。 我们团队已经使用这一代码检查流程有几个月了,在实践中发现这一流程非常有用,让每一个成员的工作变得独立,同时又能得到项目经理对代码质量的控制。   from:http://www.cnblogs.com/zhaoqingqing/p/3945107.html

龙生   15 Jul 2018
View Details

sonarqube 启动不了,异常提示:远程主机强迫关闭了一个现有的连接。

启动sonarqube 6.7.1 报下面的错误: 2018.01.24 10:10:56 WARN  app[][o.e.t.n.Netty4Transport] exception caught on transport layer [[id: 0x146de8cb, L:/127.0.0.1:57099 – R:/127.0.0.1:9001]], closing connection java.io.IOException: 远程主机强迫关闭了一个现有的连接。 at sun.nio.ch.SocketDispatcher.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(Unknown Source) at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source) at sun.nio.ch.IOUtil.read(Unknown Source) at sun.nio.ch.SocketChannelImpl.read(Unknown Source) at io.netty.buffer.UnpooledUnsafeDirectByteBuf.setBytes(UnpooledUnsafeDirectByteBuf.java:433) at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1100) at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:372) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:123) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:644) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:579) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:496) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:458) at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) at java.lang.Thread.run(Unknown Source) 根据sonar.properties里面的注释,mysql版本不能低于5.6, 而我装的mysql版本5.5,升级mysql到5.7版本,问题解决。 另外如果联接数据库的帐号密码错误,也会报这个错。   from:https://blog.csdn.net/xjj1314/article/details/79150329

龙生   14 Jul 2018
View Details

Eclipse中集成Tomcat

问题: 很多时候在Eclipse中启动Tmocat后,不能访问本机的localhost:8080主页,并且其他项目也不能访问。 原因: 打开Tomcat下的webapp后也找补到项目目录,这是因为Eclipse将发布路径重定向了,没有放到tomcat下的webapp中。 解决: 在Eclipse中集成Tomcat,在Eclipse中启动后能够访问localhost:8080和项目网站。 1.新建一个server File->New->Other->Server->Server->Next   我的tomcat是7.0.35,选择Apache下的Tomcat v6.0 Server,自己起一个Server Name点击Next   弹出对话框中配置Server,配置Tomcat安装路径和选择相应的Jre后,点Finsh。(Next会让你选择要运行的项目,先不必选) OK,一个Server创建完毕。 2.配置部署路径 在Eclipse的Server窗口双击刚建好的Tomcat v7.0,出现配置界面, 可以看到上图中选择的是 Use workspace metadata(does not modify Tomcat installion) 如果该tomcat中部署了项目的话,这红圈中的选项会灰掉不能修改,要修改必须得先把tomcat中的部署的服务都移除。 (修改方法是Server窗口中右键新建的Tomcat v7.0选择Add and Remove)   选择Use tomcat installation(Task control of Tomcat installation) 即选择tomcat的安装目录来作为项目的发布目录,选择该项后,Server path会变成tomcat的安装目录, 接下来,有个Deploy path部署目录,默认是wtpwebapps,改成tomcat的发布目录webapps 改完配置后保存关闭,在Eclipse中启动新建的tomcat v7.0后,就可以正常访问localhost:8080了。   from:https://blog.csdn.net/zheng__jun/article/details/52471304

龙生   13 Jul 2018
View Details

Service Fabric —— Stateful Service 概念

上节中我们谈到了Service Fabric最底层的两个概念,一个是针对硬件层面而言的Node Type和Node。另一个是Application。   Node Type是Node的集合,Node是对部署机器的概念抽象。对Service Fabric而言,Node可以是物理机,虚拟机,甚至现在最主流的Container。   在Node Type上运行的是Application。它是针对系统软件层面的抽象理解。一个Application中包含了多个Micro Service。甚至Service Fabric的所有基础服务,例如FailoverManager Service,Naming Service,也都是Micro Service。   Service Fabric所有分布式特性都对应于Micro Service展开。我们可以动态调整一个Micro Service需要在多少个Node上运行多少个实例来分摊负载压力,或者进行容灾备份。每一个实例都会监听不同的端口,由负载均衡层将请求分布至不同实例上。     实际场景 Stateful Service是其中的一种Micro Service。 在开始介绍Stateful Service之前,让我们来考虑下面这种很常见的业务场景。   你正在考虑实现网站里面的购物车功能。用户登录后会放置一些商品在自己的购物车中。 用户下次登录,前台页面会调用购物车服务,并需要从这个服务重新读取已经保存的购物车数据并用以显示。 如果是你会怎么实现? 如果在用户量不是特别大的一般情况下,我们会在数据库中添加一张购物车表,和用户表进行关联。该购物车表中会有一个用户ID字段,并且记录大量的用户购物车数据。     那么这样就会带来一些后续问题。 如果用户量持续增加,数据库表的性能会持续下降。 数据库表数据需要定期备份,以防数据丢失 如果数据库性能出现问题,需要将表进行拆表处理,甚至需要将表进行分区 购物车系统自身也需要针对数据库的任何调整进行处理,甚至它自身可能也需要做负载均衡 这种问题的根源在于,首先系统本身的设计不是面向可扩展的。另外数据库是一个性能潜在的瓶颈和威胁。   Stateful Service 让我们考虑这样一种全新的架构。 从一开始,购物车系统就由36个子服务来处理所有的请求(36个是因为用户ID的首字母是 0-9 a-z,一共36种)。 用户的请求,会根据用户ID首字母hash至某个特定的子服务来处理。 子服务把购物车数据通过轻量级数据库方式保存在自己内部,并且持久化到自己所在的存储设备上。 每个子服务还有3个备份,这些备份在不停同步保存的数据,同时这些备份永远运行在不同的Node上。 同时只有一个备份作为激活状态来负责处理请求,当激活备份出现问题,另外两个备份根据调度算法激活一个。 容灾子系统再创建一个新的备份,永远保证该子服务有3个健康的备份。   Stateful Service就是这样的一种解决方案。 回到上面的场景,购物车系统就是一个Stateful Service。 36个子系统就是这个Stateful Service的36个实例,我们叫Partition。 每个子系统下的备份就是Replica,一个partition有3个Replica。 当前激活的备份就是Active Replica,两个未激活的待命备份就是Secondary Replica。 同一个Partiion的每个Replica都一定运行在不同的Node上面。 Stateful Service代码通过IReliableCollection<T>,IReliableDictionary<T1, T2>等接口来进行数据保存和内部同步。   此外,Stateful Service还可以实现以下特性。 以上所有的数字都可以重新设置,你可以让购物车系统有几百个partition来负载更大的压力。你甚至可以让每个partition有5个甚至更多Replica来保证更多的健壮性。 外部系统不关心Stateful Service有多少个partition,它们通过partition key来进行调用。Partition Key和具体的对应Partition之间由Service Fabric的底层Micro Service进行解析。例如在你的业务中,你可能有几百万用户,但是只设置5个partition。当调用购物车Stateful Service时,外部系统只需要告知:用户ID(partition key),保存的数据。这个请求会自动根据用户ID及hash算法固定映射到5个partition中的一个。 Stateful Service的数据操作支持事务(Transaction)。因此你可以在失败时回滚(Rollback)   希望以上的介绍可以帮助大家更好的理解Stateful Service。 我们会在后面的章节中介绍Stateful Service的代码示例。   […]

龙生   13 Jul 2018
View Details