Happy Coding, Happy Life

Vagrant Learning - 1 (Basic Concepts)

| Comments

为什么选择Vagrant

  • 能够构建可配置的、轻量级的、便携式的虚拟服务器
  • 安装简单,提供不同平台的安装包
  • 一条命令即可创建出虚拟机环境,而且官方提供各种虚拟机的模板。
  • 能够最大化的帮助个人或者团队快速配置环境。譬如说,如果你是团队中的一员,通过Vagrant创建出一套独立的运行环境后,团队的其他成员能够使用该配置,创建完全一样地工作环境。所以无论你是工作在Linux,Mac OS X或Windows ,所有的团队成员都能在同一环境下运行代码,拥有相同的依赖。告别环境不一致带来的问题。
  • 提供Shell、Chef或者Puppet的支持,能够利用这些工具(Infrastructure As Code的方式)配置环境。
  • 从1.2的版本开始,不但支持VirtualBox,VmWare, 还开始支持Amazon EC2。

Vagrant - Make Dev Environment Easy

| Comments

背景介绍

  • 最近的Java项目是个同海外团队合作的遗留系统,包括数据库服务器、邮件服务器、Web服务器、FAST搜索引擎、JBOSS中间件等等节点。为了便于团队使用,我们在Amazon 的EC2上建立了一套完整的端到端的运行环境。

  • 团队成员在本地搭建了Web环境,数据库环境,便于开发及调试。但由于Mac上安装FAST并不是一件易事,因此在本地跑应用的时候依赖于Amazon EC2的FAST节点。

  • 持续集成、CI在当今的时代已经不是什么新鲜玩意了,越来越多的团队已经了解并运用在实践中。对于我们和海外客户共同开发的这种情况,CI挂了可不是太好,因此在每次提交代码之前,需要确保本地所有的测试都能通过,才能提交代码。

于是乎,问题就来了:

TWU - the Bungalow in Pune of India

| Comments

TWU32届的Trainer陆陆续续的都撤了,于是乎,我们就有了机会搬进他们的House,Pune的人民称之为"Bungalow",实际上我觉得是个2层的别墅。

有趣的事情来了,我们住得bugalow,我之前两次没记住具体的地址,以至于做三轮车的时候都和师傅说不太清楚。某天一个同事给我说,你就这样说bungalow的地址"guo de gao park",oh my god,这下我记住了,“郭德纲 park"。其实原本的拼写是这样的“Koregaon Park”,发音有那么一丁点类似而已 :)

How to Use Octopress to Set Up Blog

| Comments

Setup blog

Install RVM

bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer) rvm install 1.9.2 rvm use 1.9.2 –default

Clone repo

git clone git://github.com/imathis/octopress.git octopress

gem install bundler bundle install bundle update # 不执行,则下一步rake会报版本不匹配 rake install rake setup_github_pages

Publish new article

rake new_post[“My first post”] rake generate # 第一次使用,最好先编辑一下_config.yml

rake preview # 本地查看,地址是http://localhost:4000 rake deploy

Update Source

git commit -m ‘your message’

git push origin source

TWU - the First Week in Pune of India

| Comments

还在墨尔本出差的最后一周,Mark问我愿意去TWU当coach不…….于是乎,我就在8月中旬来了浦那(Pune)。一路上同行的还有JK和邱大师,中午从西安出发,先抵达香港,再转机到班加罗尔时已经是第二天凌晨5点多,又搭乘印度国内的航班,总算在早上10点多下榻酒店。

浦那位于印度西部的城市,位于孟买东南140公里,设有不少学院及大学,素有「东方牛津」的美名。城内有著名的Magapatta City软件园和塔塔汽车公司。

Pune的基础建设比想象中落后些,基本上都是单向双车道,挤满了各类车辆,卡车,私家车,中巴车,这种情况下,当然小巧方便的摩托车和三轮车更胜一筹。钻来钻去,穿梭在大大小小的缝隙中,我想这也是为什么摩托车和三轮车成为主要交通工具的原因之一。道路的两边并没有明显的划分出人行道,大概能走的部分可能不到半米宽。除了在主干道的十字路口见到一组红绿灯,其余的道路基本没有红绿灯,过马路绝对是个不小的挑战。千万记得,是看左边哦 :)

Shalina安排的很周到,抵达的第一天,就给我们发了大礼包(有手机,充电器,耳机,还有印度地图和SIM卡),哈哈,最重要的当然就这张SIM卡了。这里赞一下小米,无缝即插即用,邱大师的IPhone就没这么幸运了,和他找了个地方花了100卢比把卡裁的小点,也能使了。不过赞一下,印度人民的服务真是不错啊,相当仔细嘞。

住了几天Keys Hotel后,公司决定把我们搬到O Hotel, 因为TWU的培训地就在O hotel。O hotel的电梯设计的很别致,很难想象这是电梯的顶部装修吧(有漂亮的小星星哦),而且还有优美的旋律伴奏。

早餐很精致,有水果,煎蛋还有各种干货,哈哈。午饭一般就是米饭和印度传统的鸡肉糊糊,不过汤有时候还是蛮不错的,毕了,还有各种甜点。

TWU的培训地点就在2楼,上午10点半和下午的3点半,提供咖啡、茶、牛奶和甜点。

前面2周主要都是TTT(Train the Trainer),就是我们新来的小样接受以前Trainer的培训。到下午6点,结束了一天的培训,基本上就可以自由活动了。哈,Pune有很多有趣的东西等着我们explore呢……

Understanding Javascript Variable Scope & Hoisting

| Comments

在这篇文章中,我将介绍Javascript中变量的作用域以及变量提升的一些相关知识。

变量作用域

变量作用域是指变量存在的上下文环境,它表明了当定义一个变量后,代码如何能够访问该变量。基本上,Javascript的变量有两种: 局部变量和全局变量(废话,哪门语言没有这两种!)

Understanding Javascript Module Pattern

| Comments

什么是Module Pattern?

Javascript,是面向对象但并不是面向对象编程的一门语言。在Javascript的世界里,你遇到的所有东西都是对象(如Function, Number, String等),但它本身的语法中却不提供类(class)的关键字或者访问符(private, public, protected)等的定义。

不过,通过使用Module Pattern,我们可以有效的筑起一道屏障,让私有状态的变量或者方法只能在module的内部被访问,从而达到面向对象封装的目的。

Understanding *nix Bash Profile

| Comments

工作在*nix环境下的兄弟们,多多少少都应该见过这么几个文件:

/etc/profile
/etc/bashrc
~/.bash_profile
~/.bashrc
~/.bash_login

说实话,我一直没搞清楚这些文件是干什么的,以及他们是什么联系。今天组里正好有人讲这个,就给自己长长见识吧。其实吧,最主要的区别就在于两个词: “Login shell” 和 “Non-login shell"。

Node.js Learning Summary

| Comments

一直以来,我对Javascript都不是怎么感兴趣,主要的原因还是由于JavaScript 和浏览器之间复杂的历史渊源,导致javascript被浏览器严重束缚。 不过,Node.js的出现,让我看到了一种全新的使用JS的方式(启动、调试等可以完全不care浏览器)。经过几天对Node的了解,发现Node确实有一些与众不同的特点。

Effective Tool in My Work

| Comments

Tools

1. The Brain(http://www.thebrain.com/)

现在的新知识越来越多,体系越来越庞大,非常需要the brain这样一个软件,将所学的知识分门别类,形成一个整体的、宏观的脑图。

2. Trello(https://trello.com/)

一个方便的电子卡片墙,帮助你记录想做的事,正在做的事,或者已经完成的事,同时提供了Android和Iphone上的支持。