随笔分类 -  编程开发

摘要:包管理器是神马东西?让我们看看wikipedia上的介绍。 In software, a package management system, also called package manager, is a collection of software tools to automate the process of installing, upgrading, configuring, and removing software packages for a computer’s operating system in a consistent manner. 简单的来说,包管理器就是一个提供对一系列软件包的安装、卸载、升级的自动化工具。 包管理器大体分为两种,一种是管理预编译好的软件(Binary installation/Precomplied 阅读全文
posted @ 2013-07-01 16:25 黄博文 阅读(3024) 评论(1) 推荐(1) 编辑
摘要:使用场景: 如果你有很多工作目录,需要每天在这些目录中跳来跳去。那么你就应该试试goShell. 一个使用简单、功能恰到好处的terminal下的小工具。 gtShell支持将常用的一些目录保存为bookmark,提供快速跳转功能。这样你就不需要在使用cd后面跟随一长串的目录名称。 它也支持自动完成,你只需要输入开头的几个字母,然后按tab键就可以自动匹配。 目前源码被我host在github上。 阅读全文
posted @ 2013-05-31 10:26 黄博文 阅读(1867) 评论(2) 推荐(3) 编辑
摘要:自从接触并践行了敏捷的一些实践之后,便深深的喜欢上了敏捷。尤其是测试自动化和持续集成这两个实践,可以显著的提高软件的质量和集成效率,实时检测项目健康度,使团队成员对项目保持充足的信心。 但是对于个人项目而言,虽然测试自动化好实现,但是要实现持续集成还是稍有难度。因为持续集成需要搭建一个集成服务器,并建立某种反馈机制。而大多数人来说并没有自己的独立服务器,并且配置也极为繁琐。 阅读全文
posted @ 2013-05-30 15:48 黄博文 阅读(8632) 评论(1) 推荐(0) 编辑
摘要:在我工作的项目中有这样一个需求。当通过自动部署脚本将当前一个CI构建的WAR包部署到指定服务器后,需要验证该WAR包是否被部署成功。 在这个项目中,持续集成服务器使用的是Jenkins,构建脚本使用的是maven,向服务器的部署使用的是Groovy写的部署脚本,调用了Tableuax API。 在Jenkins上有两个job,一个CI job,一个dev job。 每次提交代码都会在Jenkins上trigger CI ob,这个job会执行配置的maven命 阅读全文
posted @ 2013-04-18 13:14 黄博文 阅读(1799) 评论(0) 推荐(0) 编辑
摘要:即使用octopress写博客又需要同步到其他站点的同学们有福了。本人写了一个octopress下的插件,用于将octopress中的最新的一篇博客同步到支持MetaWeblog API的博客站点中去。(wordpress、博客园、CSDN、51CTO、新浪、网易……) 这款插件源码被host在github上,地址是https://github.com/huangbowen521/octopress-syncPost。 阅读全文
posted @ 2013-04-14 22:53 黄博文 阅读(1629) 评论(4) 推荐(1) 编辑
摘要:Karma是一款运行JavaScript测试的工具。它支持大部分的JavaScript测试框架,并支持多浏览器跑测试、自动监听文件运行测试等功能,实在是JavaScript开发的必备测试利器。有了它,基本不用再一遍遍手动刷新页面来trigger测试了。它的原名是testacular,也不知道作者咋想的,突然之间把项目名称改了。 而WebStorm则号称是世界上最聪明的JavaScript的IDE。(事实证明,确实如此)。JavaScript code自动提示、浏览器实时同步更新、支持HTML5, node.js, TypeScript, CoffeeScript, ECMAScript Harmony, LESS…秉承了JetBrains这个牛逼公司的一贯传统。 阅读全文
posted @ 2013-04-09 12:17 黄博文 阅读(2290) 评论(1) 推荐(4) 编辑
摘要:前段时间曾经写过一篇文章,《优秀程序员无他-善假于物也》。其中谈到一点是优秀的程序员必须要能灵活的掌握常用软件的快捷键。对于程序员来说,每天使用时间最长的软件恐怕就是IDE(Integrated Development Environment)了。如果你是C#的程序员,那么就基本非Visual Studio莫属了。而如果你是Java的程序员,那么eclipse,myeclipse或者Intellij都有人用之。如果你是Ruby等动态语言的程序员,那么Vim、Emacs、RubyMIne…有太多的选择可以成为你的IDE。 阅读全文
posted @ 2013-04-06 17:16 黄博文 阅读(2557) 评论(4) 推荐(1) 编辑
摘要:List在函数式语言中是一个重要的抽象,很多事情离了它就很难做到。函数式语言的鼻祖Lisp名称就来自List processing。 Haskell本身也给List操作提供了一系列的操作符以及库函数。 阅读全文
posted @ 2013-04-05 12:52 黄博文 阅读(2872) 评论(0) 推荐(0) 编辑
摘要:重构越来越成为项目中必需品,而不是奢侈品。推动这个的一个原因之一就是IDE对重构的支持越来越强。不仅要了解重构手法,还要熟练使用IDE的提供的各种快捷键,并且要灵活的使用这些快捷键。 阅读全文
posted @ 2013-04-03 00:54 黄博文 阅读(1623) 评论(3) 推荐(1) 编辑
摘要:将敏捷手段应用到博客管理中,会产生什么样的效果那? 阅读全文
posted @ 2013-04-01 14:02 黄博文 阅读(1491) 评论(10) 推荐(3) 编辑
摘要:Annotation翻译为中文即为注解,意思就是提供除了程序本身逻辑外的额外的数据信息。Annotation对于标注的代码没有直接的影响,它不可以直接与标注的代码产生交互,但其他组件可以使用这些信息。 Annotation在Java语言中无处不在,深入了解annotation对于语言驾驭能力的提升是大有裨益。 阅读全文
posted @ 2013-03-28 11:14 黄博文 阅读(2545) 评论(2) 推荐(4) 编辑
摘要:第一次接触Selenium 的WebDriver,是在一个Web项目中。该项目使用它来进行功能性测试。当我看到Firefox中的页面内容被一个个自动填充并且自动跳转的时候,感觉真的很神奇。通过这段时间的学习觉得可以将我学的关于WebDriver的知识进行一个总结。 什么是Selenium 和WebDriver? Selenium是一个浏览器自动化操作框架。Selenium主要由三种工具组成。第一个工具SeleniumIDE,是Firefox的扩展插件,支持用户录制和回访测试。录制/回访模式存在局限性,对许多用户来说并不适合,因此第二个工具——Selenium WebDriver提供了各种语言环境的API来支持更多控制权和编写符合标准软件开发实践的应用程序。最后一个工具——SeleniumGrid帮助工程师使用Selenium API控制分布在一系列机器上的浏览器实例,支持并发运行更多测试。在项目内部,它们分别被称为“IDE”、“WebDriver”和“Grid”。 阅读全文
posted @ 2013-03-27 21:16 黄博文 阅读(2055) 评论(0) 推荐(1) 编辑
摘要:Enum是在Java中用来定义枚举类型的关键字。Enum一般用来表示一组相同类型的常量,如性别、日期 、颜色等. 阅读全文
posted @ 2013-03-27 14:23 黄博文 阅读(810) 评论(0) 推荐(0) 编辑
摘要:当我们在定义类,接口和方法时,可以接收一个类型作为参数,这就叫做泛型。 函数可以传入普通的参数,也可以传入一个类型参数。不同之处是普通的参数就是值而已,但是类型参数却是个类型。 使用泛型的好处: 强类型检查。在编译时就可以得到类型错误信息。 避免显式强制转换。 方便实现通用算法。 阅读全文
posted @ 2013-03-24 20:43 黄博文 阅读(1238) 评论(2) 推荐(2) 编辑
摘要:函数式编程的定义是: In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids stateand mutable data. 即:函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了引入状态及可变数据。 它更强调函数的应用,而不像命令式编程更强调状态的改变。 无副作用(side effect) 命令式函数可能会改变程序的状态,这就会对其产生副作用。在命令式编程中,在执行程序不同的状态下同一个函数的返回结果会发生改变。 阅读全文
posted @ 2013-03-24 14:25 黄博文 阅读(1728) 评论(3) 推荐(0) 编辑
摘要:在Haskell的世界中,没有变量赋值,流程跳转,如果要实现一些简单的功能,比如求一个数组中的最大值,都需要借助递归实现。 递归函数的定义: A function may be partly defined in terms of itself. 即如果一个函数的定义中使用了其自身,这个函数就叫做递归函数。 阅读全文
posted @ 2013-03-23 20:42 黄博文 阅读(2244) 评论(0) 推荐(1) 编辑
摘要:如果你是使用面向对像语言进行编程的程序员,那么你应该去了解掌握一门动态语言。而动态语言的魔力之一就是函数式编程。而要学习了解函数式编程,那么haskell是一个不错的选择。 Haskell是是一门纯函数式编程语言(purely functional programming language)。在其世界中函数是第一等对象。并且在haskell中没有赋值,例如你指派a的值为5,然后你无法再给a分配其它的值。所以你不能像命令式语言那样命令电脑“要做什么”,而是通过函数来描述出问题“是什么”。 作为一个纯的函数式编程语言,它支持惰性求值、模式匹配、列表解析、类型类、类型多态…… 别着急,让我们慢慢来解开函数式编程的面纱。 阅读全文
posted @ 2013-03-23 10:59 黄博文 阅读(776) 评论(0) 推荐(0) 编辑