Learn NodeJS (1)

学习Node.js (一)

最近业余学习一下Node.js,记录一下学习路径。

初学乍练

第一步 Node初学指南(中文版)

跟随指南做练习,其中引用到的文章,从学习效率的角度考虑,说明如下:

Talk about DI again

再谈依赖注入

理解了控制反转和依赖注入的基本概念之后,就可以了解一些实际的应用了。在《Java程序员修炼之道》第三章,作者深入剖析了依赖注入的技术背景和应用实例。

主要内容包括:

  1. 控制反转和依赖注入
  2. 掌握依赖注入技术为什么如此重要
  3. JSR-330如何统一了Java中的DI
  4. 常见的JSR-330的注解,如@Inject
  5. Guice 3简介,JSR-330的参考实现

IoC and DI intro

控制反转与依赖注入导读

早年参加工作的时候,大家普遍说,不一定要掌握那么多语言细节,也不一定要学那么多语言,需要的时候查查书、上上网就行了,重要的是“编程思想”。好高级啊!“编程思想”这个当年流行的词儿似乎代表着“高端大气上档次”,似乎意味着掌握编程思想的人都是码农界的高富帅。呃,编程思想,嘛玩意儿?难道就是一系列系统的想法精粹,就像《毛泽东思想》吗?好像不是。后来捧读了巨著《C++编程思想》和《Java编程思想》,也没窥透所谓的思想。后来才觉着,在编程界,英文里可能就不存在思想的准确对应词吧?Idea?Thought?Thinking?Ideology?都不像。

最近在看《Java程序员修炼之道》(我最近是迷上各种“道”了),其中提到了DIP,又激起我重新厘清编程思想的机会。现在想来,编程,或者说程序设计的思想,应该可以归在设计方法学之下,即有了某种方法,按照这种方法去思考问题、构建软件和设计程序,就是这种方法的思想,比如面向过程的设计思想,或面向对象的设计思想。现在,我们也可以说面向组件的设计思想,或者是面向云的设计思想,甚至是用户体验至上的设计思想。我们不自觉地从“编程”思想演进到“设计”思想了,思想总算正本清源,设计需要思想,而编程只是设计的结果。设计在哪儿?设计无处不在。软件设计从需求获取阶段就已经开始,直到程序员编写每一行代码都贯穿始终,只是体现在设计的不同层面而已。所以,程序员的80%的工作都是在设计(Think&Design),而只有20%的时间是在编程(Programming)。

Java Swing Automation Test Study(2nd part)

Java Swing界面自动化测试初探(下)

本文下半部分主要介绍开源的Java Swing自动化测试工具,评价和注解完全基于个人粗浅理解。

FEST

FEST is a collection of libraries, released under the Apache 2.0 license, whose mission is to simplify software testing. It is composed of various modules, which can be used with TestNG or JUnit.

Our users include: Google, Square, Eclipse Foundation, Oracle, IBM, Guidewire, and many more!

评价:五星
官方网站http://fest.easytesting.org/
代码下载https://code.google.com/p/fest/
主要特点

  • 功能性Swing界面测试(Functional Swing GUI Testing)
  • 流畅的断言(Fluent Assertions)
  • 流畅的反射(Fluent Reflection)
  • mockito 作为模拟框架(Mock framework)
  • 文档丰富,应用广泛
  • 第四届ATI自动化大奖第一名
  • 没有录播(Record-Play)的功能

Java Swing Automation Test Study (1st part)

Java Swing界面自动化测试初探(上)

最近有机会又学习了一下Java自动化测试框架,对于自动化测试有了进一步的了解。自动化测试的效果,业界一直都存在一些争论,不过我理解现在的基本共识是自动化测试(即利用程序实现测试工作)是有用的,至于对不同类型的软件能起到多大的作用就要依情况而定。有的软件项目自动化测试可能可以覆盖大部分场景,有的可能只能覆盖较少部分。前一段时间看Robert C. Martin大叔的《程序员的职业素养》,其中对于测试的重视程度令人印象颇深。Martin大叔花了三章的篇幅来讲述测试,分别是测试驱动开发、验收测试和测试策略。而在测试驱动开发一章中,他谈到自己和Kent Beck的一次会面,看完Kent的展示之后,他说:“这让我目瞪口呆!”。Martin大叔的结论是:“此事已有定论!TDD确实可行。”

当然是否是TDD是开发模式的选择,不一定要强求,但是对于自动化测试的重要性,大家应该是广泛认同的。在Jeff Atwood最新出版的博客文集(中文版译名《高效能程序员的修炼》)中,Jeff引用了J.Timothy King的一篇文章,题为《我同情那些不写单元测试的傻瓜》,并由此而展开了对于测试重要性和方法的探讨,并警示大家,不要因为不喜欢测试驱动就不写测试了,这是非常错误的。自动化测试活动在保障产品质量、提高开发效率和持续交付能起到十分关键的作用。

具体到我们实际的开发工作,Java自动化测试起源较早,敏捷声明的发起人之一、XP方法的倡导者Kent和Erich(《设计模式》作者之一)合作创建了JUnit单元测试框架,在Java世界里享有盛誉并成为事实上的标准。不过,现在还有一个更加流行的选择,TestNG。TestNG不仅在单元测试方面,而且在组件测试方面,甚至在功能和系统测试上都有很大的帮助。当然,本文主要不是讨论测试框架,我们主要讨论Java世界里的界面测试问题。有关自动化测试框架的话题,可参考相关网站。

My first favorites

收藏夹整理(一)

今天有一点时间,整理一下原来收藏的书签(简化版),微博的浅阅读有时会让人感觉浮躁,所以有空还是多看看博客和长文吧,沉淀沉淀。微博的收藏夹也要抽空整理整理,不然5000条收藏也浪费了。今后的一段时间,尽量从“信息收集控”变成有效的知识学习者和管理者,多学习、吸收和应用,把有限的时间用在关键的地方。当然,此次整理书签还有两个作用,一是可以方便自己常常浏览,二是可以做个分享,或许能对大家有些帮助。

数据库类

http://www.ningoo.net/
http://dbanotes.net/
http://www.mysqlsupport.cn/
http://www.mysqlperformanceblog.com/
http://www.xaprb.com/blog/
http://openquery.com.au/blog/

The first blog with Hexo

在Ubuntu 13.10 Linux环境下使用Hexo搭建Github博客系统

Github的Git环境搭建

Github Pages博客搭建

  • 主要参考下文中使用GitHub Pages建立博客的部分:http://beiyuu.com/github-pages/
  • 需要注意的是Github的博客页面不一定能及时反映更新,有时需要等10分钟左右

安装Hexo

1
2
$ hexo init
/usr/bin/env: node: No such file or directory

这个问题已经提交到hexo的Github主页:https://github.com/tommy351/hexo/issues/355
[Update] Zippera回答了这个问题,建议是使用npm安装nodejs,而不是先安装nodejs