深入Node.js的模块机制

这几天研究nodejs,对模块的机制不了解找到一篇不错的文章转来做备忘。转自InfoQ的: 深入浅出Node.js(三):深入Node.js的模块机制

Node.js模块的实现

之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都着墨不多。在后续介绍模块的使用之前,我认为有必要深入一下Node.js的模块机制。

CommonJS规范

早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物。无奈那时服务端JavaScript走的路均是参考众多服务器端语言来实现的,在这样的背景之下,一没有特色,二没有实用价值。但是随着JavaScript在前端的应用越来越广泛,以及服务端JavaScript的推动,JavaScript现有的规范十分薄弱,不利于JavaScript大规模的应用。那些以JavaScript为宿主语言的环境中,只有本身的基础原生对象和类型,更多的对象和API都取决于宿主的提供,所以,我们可以看到JavaScript缺少这些功能:

  • JavaScript没有模块系统。没有原生的支持密闭作用域或依赖管理。
  • JavaScript没有标准库。除了一些核心库外,没有文件系统的API,没有IO流API等。
  • JavaScript没有标准接口。没有如Web Server或者数据库的统一接口。
  • JavaScript没有包管理系统。不能自动加载和安装依赖。

于是便有了CommonJS(http://www.commonjs.org)规范的出现,其目标是为了构建JavaScript在包括Web服务器,桌面,命令行工具,及浏览器方面的生态系统。

继续阅读

愤怒的消费者

2008年的中国奶业三聚氰胺大“地震”,蒙牛未能幸免,损失巨大,当年度蒙牛乳业出现自2004年上市以来的首次年度亏损。2009年初,国家质检总局向内蒙古质监局发函,要求责令蒙牛停止在特仑苏牛奶中添加OMP物质,当时全国超市主动对特仑苏牛奶下架。2011年4月26日下午,陕西榆林市食品安全委员会就当地251名学生饮用蒙牛牛奶“中毒”事件通报官方检测报告,称牛奶未检出致病病菌,学生“中毒”是因为心理原因(学名“癔症”)。应当承认,在经历数次危机后,蒙牛已积累了丰富的道歉经验和危机公关经验 在证据不明时,矢口否认;在证据确凿时,则不仅要道歉,而且连夜道歉。这次蒙牛道歉如此迅速,正是由于这份抽检结果是由国家质监总局发布的,而且是由福州质检机构到蒙牛公司的四川眉山工厂里检测出来的,属于交叉检测,不容抵赖,总不能推说这是质监部门的“癔症”导致“牛奶黄曲霉毒素超标”了吧。

摘自 —— 《 蒙牛强致癌  公关能解决?

作为一个消费者,为什么总是要给无良企业机会?这样的企业,犯错一次就可以倒闭了。听过很多国外的案例,食品企业因为一次错误,倒闭的都有,为什么国内却没有?消费者太心软了,还是消费者太麻木了?

其实,这种事情上,我们需要的是愤怒的消费者。

 

初试Node.js

其实这也不算什么初试了,最初Node.js火起来的的时候,曾经最websocket的时候接触过一次,但是这次的接触却更加全面一些,同时也了解了更多node.js的东西。NodeJS把客户端的语言成功的转移到服务端,让一个大家都熟悉的语言变得更加通用。

首先Nodejs使用的是javascript,这是一门很神奇的语言,很多人从接触web就用它,却不精通它,它一直很火,却不是被人重视的语言。使用nodejs最大的优势莫过于服务端和客户端都可以使用js了!我们可以重用一些代码,比如用户验证!这会给我们带来可重用的代码,还有更多好用的js库。

然后是Nodejs的非阻塞特性,这应该是使用javascript的原因,因为它是基于时间的。但这并不意味着你的代码就一定是非阻塞,如果你的代码是顺序执行的话。非阻塞特性也并非是新概念,但是有些时候的确是很有价值的。之前了解过tornado,这是一款基于python的非阻塞web框架(服务器),所以非阻塞不是nodejs的独家特性,但却是重要的特性。

最后是nodejs的扩展,我们可以通过npm来获取你希望得到的包,比如socket.io、express之类,很方便。

总体来说,nodejs还是很不错的,入门简单,使用方便。目前只是不知道效率如何了。

Web开发中需要了解的东西

在酷壳上看到了不错的文章,留这里备份一下。

原地址:http://coolshell.cn/articles/6043.html/comment-page-1

在StackExchange上有人问了这样一个问题:What should every programmer know about web development?(关于Web开发,什么是所有程序员需要知道的?)里面给出的答案非常不错,所以,我翻译转载过来。 顺便说一下,StackExchange真是非常好,大家可以对同一个答案做贡献和修订,看看这个问题的修订过程你就知道了——专业的问答网站应该怎么去做。这就是我在这篇文章中也说过真正的用户体验是什么样的

好了,下面是正文(我对原文做了一些批注,也许不对或有误导,请大家指正)

下面的这些东西可能对于大多数人并不陌生,但是可能会有些东西你以前并没有看过,或是没有完全搞懂,甚至都没有听说过。(陈皓注:我相信当你看完这个列表后,你会觉得对于我国的Web开发有点弱了,还是那句话,表面上的东西永远是肤浅的)

继续阅读

博客升级到wordpress3.3

博客升级到了wordpress3.3,目前来看是没有任何问题的,从改进上讲,还是比较不错的。

3.3的改进主要是后台的易用性,首页改名为仪表盘,上面的控制菜单也简化了很多。新增了气泡提示框,总体来说还是比较人性化的修改。功能上新增的tumblr导入工具,上传或插入图片、视频、音乐的地方改为一个按钮上传,智能判断类型。开发上来讲jquery升级到了1.7.1,添加了很多有意思的API。

下面是引用wordpress3..3的关于wordpress3.3的文字——感谢升级到最新版本!使用 WordPress 3.3 不仅可以让男生更帅,女生更美、改良人格,还可以大幅提升您在网上发布的体验。诶,开玩笑的,其实她只能提升您的使用体验,但是光这一点就很不错了 :)

的确,光这一点就不错了。

 

随便写写

每次的工作间隙,总会来博客转转,想写点什么,却总也写不出。

工作也就是如此,各式的需求,各类的人。北京也就是如此,如此真实,又如此的虚幻。这里的人,活的现实,活的真实。

每天见到同样的人,男人女人都在谈钱、房子、车子、工作、衣服、鞋子,很少有生活。2011年就这样默默的走着,走到末尾,没人在意,上班族们只是知道,要过年了、回家了,或者是末日要来了。

2012,这个词在网络上常露面——并不代表某个年费,而是代表一个终结,这也许是人类的终结,希望的终结。

末日论似乎一直伴随着人类的历史,缓缓的陪同着它走过。奴隶社会的时候末日是神灵的愤怒、人们的恐惧、统治者的工具、反叛者的托辞,中世纪的末日是上帝的审判,现在的末日,是人心的末日、内在的反叛。就这样,末日说一直说着,日子照样过着,大家一直期盼着,希望人类灭绝,自己也随着人类历史消逝掉,成为一粒沙,或者成为幸存后新世界的统治者或是英雄。这应该是一种内心的逃离愿望,就是这样,让生灵们陪葬。

肉体的消逝不可怕,怕的是内心的枯竭。即使时间永恒,又怎么样呢?看不到善意微笑的人,只看到狰狞的面孔和挣扎的形态,那是地域。

Linux shell脚本编写基础

在进行linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入

./smartzip就能运行脚本了。。

每行命令开头处不用就空格也行。。

第1部分. Linux 脚本编写基础

1.1 语法基本介绍

1.1.1 开头

程序必须以下面的行开始(必须方在文件的第一行):

#!/bin/sh

符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。

当编辑好脚本时,如果要执行该脚本,还必须使其可执行。

要使脚本可执行:

编译 chmod +x filename 这样才能用./filename 来运行
继续阅读

OSX lion下编译安装php5.3.8的一些问题

换了个mbp,毕竟还是属于*unix阵营,使用起来还是比较习惯的。只是没有了apt或者是yum有些不习惯。有些朋友可能希望一键安装,可以试试brew或者fink之类的软件。但是不知道为什么我不是很喜欢在mac下这么干,所以编译安装。

我使用的是lion,其实里面是自带php的,只是我需要的是php-fpm,所以如果用apache的朋友可以不用再编译的。

首先遇到的问题是Undefined symbols问题,就好像下面的这些错误:

继续阅读