粉笔网招聘开发工程师

粉笔网是个学习社区,网易前高管离职创业。8 月 27 日正式上线。目前的产品形态是微博形式的,推出以后老师和同学普遍反映上手容易,也希望能加入更多方便学习交流的功能。

目前我们的技术开发团队 7 个人,涵盖数据库、Web 开发、Android、iOS 等多个方面,团队整体实力平均,同时希望各个方面都能再有 1-2 个新同学参与。

我在团队中主要负责前端这块,目前我们的前端 JS 框架是 SeaJS + Backbone 这样的组合,CSS 框架则是 Less。同时还应用了 jQuery/underscore/hogan 这些目前比较流行的库做开发。不需要太多考虑 IE6 下的兼容性,如果你喜欢前端这块的新技术,那这里的工作对于你来说会有一种“玩着就把钱挣了”的感觉。

待遇方面,前端研发工程师的待遇和其他研发工程师待遇相同,都是 18w-30w,正规五险一金、转正配一笔性感诱人的期权、餐补报销、免费可乐水果管饱、iMac 双显、帅哥靓妹协助解决单身问题什么都是妥妥的。

公司目前在东三环朝外 SOHO,如果你在五道口这则有同事的顺风车可搭。

我希望未来一起并肩战斗的同学应该是:
  • 有信心扛起一整个网站,而不只是负责一小部分 feature 的开发
  • 解决问题时不仅仅是霰弹枪一把而是愿意研究问题背后的原因
  • Google 资料/上栈爆网/混 Github 毫无压力
  • 有无限的求知欲望和探索欲望,对于不整洁的代码有天然的愤怒感
这样的同学,欢迎你来我们这里:
  • 全职或每周 4 天以上的实习
  • 负责一个超大型网站的 Web 开发
  • 培养起一个小型技术团队
  • Being geek

如果你是这样,或者你希望将来称为这样的工程师,欢迎通过以下方式联系我:

- FIN -

教程:使用 pathogen + git 管理 Vim 插件

Vim 用了很多年,一开始我是把所有插件直接扔到 .vim 目录下。时间长了以后,.vim 下面有好多零碎的文件,分不清哪个属于哪个插件,删除和升级插件都很困难。相信很多 Vimer 也遇到了这个问题。

Pathogen 是一款拯救各个 Vimer 于水火之中的 Vim 插件,它一改原先 Vim 只能把插件全部扔到 .vim 目录下的操作方式,使得各个插件可以以一个独立的文件夹存在于 .vim/bundle 目录中,添加和删除插件都变的非常清爽。再加上 git 强大的子模块管理功能,可以实现方便的插件安装和自动升级。

Pathogen 做了什么

在 Pathogen 之前,安装插件就是把文件都丢到 .vim 目录下,文件都混在一起,非常不好管理:

.vim
  ├── doc
  ├── plugin
  │   ├── vim-scratch.vim
  │   └── vim-surround.vim
  ├── ftplugin
  └── autoload

Pathogen 可以理解成一个插件的加载器,通过 Pathogen,可以将不同的插件放到不同的目录里,比如:

.vim
  └──bundle
      ├── vim-scratch
      │   └── plugin
      │       └── vim-scratch.vim
      └── vim-surround
          ├── doc
          └── plugin
              └──vim-surround.vim

这样,各个插件之间的文件都独立于自己的目录,删除一个插件,只要直接删除这个插件的目录就行了。

Pathogen 的使用非常简单,在此不在赘述,参见文章 更好的管理VIM插件(续) pathogen

Pathogen 做不了什么

Pathogen 相当于一个插件的加载器,只提供最简单的插件加载功能,没有提供任何插件的安装、删除、更新这些管理功能。估计作者也是本着 Unix 哲学(程序应该只关注一个目标,并尽可能把它做好)思想,将来也不会加入任何管理功能。

但是如果要打造一套完善的 Vim 插件方案,一个靠谱的插件自动化管理系统是必不可少的。就像 Chrome 的插件系统一样,插件可以:

  • 自动安装,新拿到一台电脑,可以方便地自动下载插件
  • 自动化升级,不需要繁琐的文件拷贝更新操作

因此就有了 Vundle 这类工具,通过一系列的脚本,来实现这些功能。

Pathogen + Git

我自己比较喜欢的方案是 Git + Pathogen,本质上和 Vundle 没有区别(Git 就是各种牛逼的脚本组合起来的),但是有着很多让我着迷的优点:

  • 只依赖于 Git(Pathogen 通过 Git 下载)
  • Github 上几乎有全部的 vim 插件库
  • 符合 Unix 哲学,Pathogen 做加载,Git 做插件管理,这个组合非常漂亮

准备工作

首先,备份你原先的 .vim 配置,并创建一个新的 .vim 目录,以及放置插件的 bundle 目录:

1
2
3
4
5
$ mv .vim{,.bak}
$ mv .vimrc{,.bak}
$ mkdir -pv .vim/bundle
> .vim
> .vim/bundle

然后把 .vim 目录变成一个 Git 仓库。做这一步非常简单,切换到 .vim 目录下,执行git init命令,git 会创建一个 .git 目录:

1
2
3
4
5
6
7
8
$ cd .vim && git init
> Initialized empty Git repository in /Users/pw/.vim/.git/
$ ls -al
> total 0
> drwxr-xr-x   4 pw  staff  136 Feb  4 14:01 .
> drwxr-xr-x   4 pw  staff  136 Feb  4 14:01 ..
> drwxr-xr-x  10 pw  staff  340 Feb  4 14:01 .git
> drwxr-xr-x   2 pw  staff   68 Feb  4 14:01 bundle

至此,准备工作就完成。以下的命令如果没有特别说明,都是在 .vim 这个目录中敲入的。

安装 Pathogen

安装插件的命令是:

1
$ git submodule add 插件的Git仓库地址 bundle/插件名字

Pathogen 将会是我们通过 Git 安装的第一个插件:

1
2
3
4
5
6
7
$ git submodule add git://github.com/tpope/vim-pathogen.git bundle/vim-pathogen
> Cloning into bundle/pathogen...
> remote: Counting objects: 218, done.
> remote: Compressing objects: 100% (117/117), done.
> remote: Total 218 (delta 59), reused 202 (delta 45)
> Receiving objects: 100% (218/218), 26.40 KiB | 23 KiB/s, done.
> Resolving deltas: 100% (59/59), done.

通常来讲,一个插件下载完之后就已经可以使用了,但是对于 Pathogen 这个”插件中的插件“来说,还要多一,创建一个非常简单的 .vimrc 文件,加载 pathogen

1
2
$ echo -e "runtime bundle/vim-pathogen/autoload/pathogen.vim\ncall pathogen#infect()\nHelptags" >> .vimrc
$ ln -sf `pwd`/.vimrc $HOME/

安装其他插件

方法跟安装 Pathogen 是一样的,在 .vim 目录下执行:

1
$ git submodule add 插件的Git仓库地址 bundle/插件名字

以 NERDTree 为例,仓库地址是git://github.com/scrooloose/nerdtree.git

1
$ git submodule add git://github.com/scrooloose/nerdtree.git bundle/nerdtree

升级插件

单独升级插件,只要先进入插件目录,然后执行:

1
git checkout master; git pull

通过git submodule foreach来可以一次性升级全部插件:

1
$ git submodule foreach 'git checkout master && git pull'

删除插件

删除一个插件稍微繁琐了一点(相比较添加和升级),需要两条命令:

1
2
$ rm -rf bundle/插件名
$ git rm -r bundle/插件名

把整个 .vim 目录发布到 Github 上去

如果你是一直按照我的教程做到这里,这时你可以通过git status查看一下 .vim 这个 Git 仓库的状态:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ git status
> # On branch master
> #
> # Initial commit
> #
> # Changes to be committed:
> #   (use "git rm --cached <file>..." to unstage)
> #
> #   new file:   .gitmodules
> #   new file:   bundle/nerdtree
> #   new file:   bundle/pathogen
> #
> # Untracked files:
> #   (use "git add <file>..." to include in what will be committed)
> #
> #   .vimrc

可以看到 Git 的暂存区中还没有加入 .vimrc(如果你不懂什么是 Git 暂存区,没关系,按照教程继续往下走,不过最好去看一下 Pro Git 这本书),将 .vimrc 加入暂存,并提交:

1
2
3
4
5
6
7
8
$ git add .vimrc
$ git commit -m 'ADD: pathogen & nerdtree'
> master (root-commit) ba3afbd] ADD: pathogen & nerdtree
> 4 files changed, 11 insertions(+), 0 deletions(-)
>  create mode 100644 .gitmodules
>  create mode 100644 .vimrc
>  create mode 160000 bundle/nerdtree
>  create mode 160000 bundle/pathogen

在做下一步之前,你需要在 github 上开一个远程仓库(这一步就不给出具体教程了,非常简单,在 Github 上操作)。然后把本地 Git 仓库推送到 Github 上。例如,我的 vim 仓库地址是git@github.com:perfectworks/vim.git

1
2
$ git remote add origin git@github.com:perfectworks/vim.git
$ git push origin master

然后去 Github 上看看,可以发现,所有通过 Git 加入的 Vim 插件都是以一个链接直接链到插件的 Github 仓库,看起来非常整齐漂亮。

- FIN -

Git 零基础介绍

Git 是一个由 Linus 为了更好地管理 Linux 内核而创立的分布式版本控制软件。其设计思想与实现原理都与传统的版本控制工具如 svn 等有较大差异。分布式的模型带来了更快的操作速度,更好的开发模式。

这是一次公司内分享的 slide,从 Git 的八卦历史开始讲起,介绍了 Git 的基本原理和命令。

- FIN -