距离上一次写blog又隔了好久,这次又回来更新了。最近一直在忙着吸收新知识,当然 是对于自己不了解的知识。
自从上次用vim代替aptana之后,对linux的文件操作,现在是一点问题没有了,配置插件和设置环境变量【当然都是ubuntu下】都一路顺畅,发现linux系统真的是开发利器,装什么都方便的不行,最最要紧的一点是,通过使用ubuntu进行代码开发,强迫我又去理解和查找了很多linux的常用操作命令和了解它的文件系统。总之,下面来做个总结吧。
常用命令就不说了,google一下,日常的文件夹文件操作,改名mv,移动mv,复制cp,删除rm,递归-r,查看树形tree,查找find,都木的问题。
简单的shell命令比如管道,I/O通道等,工具比如curl,grep,wget,ftp,scp等的使用。
vim与系统的数据交互,vim中多个文件同事编辑,diff,互相读取和粘贴,自定义map映射还有自定义调插件与命令行工具进行便利开发,所有这些,我都让我觉得,我爱上vim这玩意了,或者说,linux下的工作方式。
再然后,linux下git的使用,多个虚拟机(单位服务器,vps服务器,自己家ubuntu,单位虚拟机ubuntu的代码同步全靠他了,合并处理分支一系列的工作)
由于vps的不稳定,我也看了一些相关linux下备份系统的东东,由于linux根目录下的东西在不结束进程的情况下就可以自由备份,所以现在一个tar就可以搞定全部的工作,再配合shell的定时处理和ftp,每天将最新的系统备份到了其他的远程主机,比如公司服务器或者我gd的服务器。
丫真心的很是方便……
再然后就是在linux下安装SpiderMonkey,进行js代码的实时运行,lint工作。安装各种开发套件,比如apache,nginx,node,java,php等。现在来看,我得感谢我的vps太干净了,连zip这种工具都要自己装,所以上面这些全部都是手动编译安装到系统的。又顺带了解到了许多之前不理解的文件夹结构,还有编译前的一些文件配置。【找资料当时找的头疼啊……】
当这些都搞定,我才开始在linux下学习开发以nodejs为基础的web应用~。
说到这里,我想解释一下,node火成现在这个样子,虽然我早在09年出了0.2版本左右的时候就知道有这么个东西了。。就是直到1周前才开始认真去学。
就不说学习的曲折路线了,官方和cnnode社区都给了完整的文档,新手指南和入门教程。源码和安装方法也是windows和linux都有,比较简单,一路走下来没有什么困难。主要下面说一些改变我认知的东西……
当安装完nodejs,跑起来一个http服务的时候。我没任何感觉。。但是当我关掉apache之后,发现这个服务依然存在的时候,我才感觉到这玩意有点意思……。
在cnnode的群里人指导,下开始对node的服务进行apache的配置,其实nginx也是一个道理,把虚拟主机的配置和域名解析,反向代理都弄明白,基本的web开发知识也就是这个样子了,剩下就是配置了,不多说。
当架设好一个反向代理到node server的虚拟主机的时候,我成就感真的很大……当然那时候就只是一个hello world而已。但对于我这种菜鸟来说,你们懂的。
那么,下面开始进行开发了。读完整个node的官方文档和新手入门教程以后,知道了什么模块干什么的,模块的加载机制和如何编写自己的模块,基本就差不多了。语法和js一样,没的解释,写起来很流畅,web程序开发的过程一上来我就选择自己建立自己的mvc编码方式。
简单说一下,node的mvc,超级简单……我现在db层还没有写,但是v和c已经基本完成了。node的路由代码,应该所有网站都有介绍,配合mustache,我根本没有用到express……就把控制器和templates搞定了。虽然我的代码没express那么简洁,但是我觉得如果一上来就用各种框架,很难理解到node的精髓,就像你学js直接用jq开发一样,没意思。。
再然后db层,花了一下午的时候去看mongodb的资料,安装配置,以及简单的4个操作,增删改查……【对于我这种纯前端来说,也就是这个了】。mongodb为什么说和node配合最方便呢,node可以操作别的数据库,npm上应该各种模块都有,但是mongodb的shell居然就是用js的语法写的……包括各种sql。。好吧,那不用它还用啥?而且nosql和bson的方式也是第一次听说,详细看一下,我包你世界观又有改变。。,我在想如果再配合操作Memcache,又会如何呢,之后我会尝试。。
嗯,在写完几个简单的控制器和模板之后,我没有往m层走,而是转向去完成一个node版本的静态服务器,通过朴灵同学的这篇文章可以简单了解实现技术,我就不多说了。。最开始我实现的和他差不多,看过他的之后觉得他的那种方法更好。貌似是从老外的书上翻译来的……?看看你就知道了。http://cnodejs.org/blog/?p=3904
在这个的基础上,【其实我最开始没在他的基础上】我直接就开始搞combo了,写过php版本combo的人都知道,无非就是解析url,抓文件拼合,缓存,返回请求,都不复杂。
期间我自己被自己纠结到了:
就是I/O读取硬盘文件,然后装载到响应体的过程,我开始是要做内存缓存的,后来问了几个人,发现其他语言,都是木有做过cache的,我自己就琢磨要cache。。但是朴灵说:内存永远大不过硬盘。我立刻醒悟了……
那就每次都直接去读吧。确实什么都装进内存,不太好,也不现实。
关于node的异步操作,很多没写过js的人可能不理解,这里我就可以跳来了,对与异步的理解个人觉得我还行。打算写一个自己简化版本的eventproxy实现。。
总之,在实现这个combo的时候,我了解大量以前前端根本不需要了解的知识点……包括对node的进程概念,server概念也是从无到有,逐渐建立起来了,很开心,又学到了。。【node的combo和其他语言不太一样,io是异步的,所以顺序很重要,之前写过一个前端的js加载器,所以这里实现起来很easy~,具体可以看我项目中的lithe v2的loader部分,无非就是异步操作同时发出,依赖关系列队处理,每次回调check列队,全部ok执行callback】
唔。好吧,先说这么多。由于好多东西很杂,我突然想记录一下自己的思绪,所以就这么写了,代码实现可以看github上的2个项目,一个node-board一个node-combo,当然都根本没有写完。。。 – -||
但是总算架子搭起来了。
好,期待下周,能够搞定,由于都是业余时间在弄,进度不保准了……:)
写的很匆忙,睡觉了……有问题欢迎交流,我爱上node这货了。。
Read More
Comments