RSS Feed

转:V8 Javascript 引擎设计理念

2010/08/30 by lishen 1 Comment »

转自:http://xukejun.babyy.blog.163.com/blog/static/121197584201052361338457/?latestBlog

本文翻译自 Google 的开源 Javascript 引擎 V8 的在线文档。其实我都没有真正翻译过什么东西,本来我的英文就比较一般,中文语言组织也很弱。而且许多文档(比如这篇)基本上如果是对此感兴趣的人,直接阅读英文原文文档肯定都是没有问题的。不过既然突然心血来潮,就试一试吧,能力总是要锻炼才会有的。我自己对 Language VM 比较感兴趣,V8 其实并不是一个 VM ,因为它是直接编译为本地机器码执行的,但是也有不少相通的地方。废话少说,下面是译文。

Netscape Navigator 在 90 在年代中期对 JavaScript 进行了集成,这让网页开发人员对 HTML 页面中诸如 form 、frame 和 image 之类的元素的访问变得非常容易。由此 JavaScript 很快成为了用于定制控件和添加动画的工具,到 90 年代后期的时候,大部分的 JavaScript 脚本仅仅完成像“根据用户的鼠标动作把一幅图换成另一幅图”这样简单的功能。

随着最近 AJAX 技术的兴起,JavaScript 现在已经变成了实现基于 web 的应用程序(例如我们自己的 Gmail)的核心技术。JavaScript 程序从聊聊几行变成数百 KB 的代码。JavaScript 被设计于完成一些特定的任务,虽然 JavaScript 在做这些事情的时候通常都很高效,但是性能已经逐渐成为进一步用 JavaScript 开发复杂的基于 web 的应用程序的瓶颈。

read more…

如果你喜欢,请订阅RSS feed

 

Javascript与多线程

2010/08/29 by lishen 5 Comments »

副标题:Javascript异步通信的实现原理与multi-node
(学习心得,不敢独享,欢迎指正)

两个问题:
1、Node编程中所有通信都是异步执行的,如果某个事件的响应函数需要操作全局变量,则多个回调同时运行时怎么实现同步?
2、群里里面的兄弟“老狗”发现了一个项目:multi-node,即使用可以用其编写多线程的网络服务。 但是node本来就是异步的,为什么还需要多线程?
read more…

 

Seedkit,使用Web标准实现应用程序界面

2010/08/23 by lishen No Comments »

上篇文章说到可以使用HTML作为应用程序界面,伟大的lemonhall同志发现了一个Gnome社区的新项目Seedkit。

根据官方介绍:它可以将Web技术和Gnome完整成熟的底层技术结合起来,使用SeedKit可以使用标准的网络技术实现原生应用程序的用户界面。SeedKit的实现方式是提供一个增强的WebKit视图,在此视图中的JS代码可以同时访问标准Web中的DOM节点、事件以及GObject/DBus的方法、信号。

SeedKit的官方网站:http://live.gnome.org/SeedKit
LinuxToy关于SeedKit有一篇报道:http://linuxtoy.org/archives/gnome-seedkit-01.html
read more…

 

用HTML实现应用程序界面

2010/08/10 by lishen 12 Comments »

前一阵子使用了豌豆夹手机精灵,猛然间发现其安装文件中有webkit的dll。经过查证豌豆夹的确是使用HTML5做的界面,其他语言实现的底层功能。发现这个问题我一下子觉得很兴奋,因为我一直看好这种编程模型。

大二的时候用过一点点MFC,觉得非常难用。传统的编程语言,本质上都不是为开发界面而设计的。这些语言,一般都有一些辅助的模板技术来组织界面。如果没有IDE,无论是Nokia主打的QT、Java还是微软的C#,直接使用手写界面感觉都像是在hack,开发难度很高。但是HTML不同,这是一门天生就为生成界面而发明的语言。HTML足够简单易懂,很多初学计算机的人都都先学习HTML。得益于浏览器强大的解释能力,经过良好设计的Web界面对于缩放和不同分辨率的适应要比传统语言要容易的多。这一点是毋庸置疑的。 如果能够使用HTML开发界面,实用其他语言开发底层功能,也许能够提高开发的效率,并提高程序质量。目前使用HTML作应用程序界面最著名的例子就是鼎鼎大名的Firefox。运行于Mozilla的XULRunner之上,使用特殊的XML和CSS描述界面,用Javascript作为胶合层和底层的引擎通信,整个Firefox的都是由Gecko渲染的。

read more…

 

nodejs主题论坛、QQ群上线,欢迎加入。

2010/08/08 by lishen 1 Comment »

nodejs主题论坛地址:http://forum.grati.org/
nodejs讨论组qq群:53090214

欢迎加入。

第一次架坛,没经验,不知道改怎么划分版块,请大家给提提意见。 非常感谢。

 

nodejs文档协作翻译请愿

2010/08/01 by lishen 16 Comments »

我架了一个Wiki,把nodejs的文档放在上面。wiki是自由开放的,任何人不需要注册都可以编辑。由于个人原因,单靠我的力量维护nodejs的文档比较吃力,我希望能够和大家一起共同翻译维护这个文档,方便更多的人。

文档的访问地址:http://wiki.grati.org/index.php?title=NodeJS%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3 编辑不需要注册,当然为了记录您的贡献,非常欢迎您的注册。

2010-08-01
李莘

 

将node.js程序注册为windows服务

by lishen 1 Comment »

应lemonhall要求,写一篇在windows中部署nodejs程序的文章,并提供了how to node上 “deploying-node-with-spark(如何使用spark部署node)“文章的链接(非常感谢lemonhall),今天有空正好说一下。

nodejs编写的应用大都是网络服务,所以还是十分有必要使其能够按照deamon的方式执行的。我对“以deamon方式执行”有两点理解:1:能够给实现开机自动执行,且无需用户登录。2:deamon程序的有效用户ID和组ID(决定deamon权限)一般不是计算机的常用操作账户。  要想使应用程序在windows中以deamon方式执行,只需将其注册为系统服务即可。在WindowsNT资源工具包中提供了两个小工具Instrsrv.exe和Srvany.exe,按照微软官方的说法这两个小程序支持WinNT和Win2K,不过经过网上搜到的结果来看,他们同样可以运行在XP上(至于WinServer2008能不能用,有条件的帮忙试一下)。 具体部署的方法,我转载一篇Slyar的文章win下开机不登陆系统自动运行程序,就不再重新写了。

最后说一点我的观点,在windows中,nodejs是通过cygwin的中间层运行的,所以性能和稳定性应该都不能和类Unix平台的原生程序相比。在Windows中使用nodejs应该只是调试目的,在生产环境稳定和性能第一,方便行就可以稍微牺牲一点。所以在生产环境还是部署在LinuxServer上比较好一点。

PPS:在说一点我对nodejs编程方法的理解:nodejs程序没有好用的调试器,习惯vs的朋友可能会觉得非常别扭,其实把单元测试细化,每实现一个功能甚至每写一个函数都可以测试一下,看看函数有没有按照期待的方式工作。还有,一定要把日志输出清楚。这样,编写程序就可以完全不用调试器,而且代码质量还能够提高,最后算算,开发速度不见得会变慢。

read more…

 

win32(cygwin)下nodejs编译方法

2010/07/08 by lishen 10 Comments »

应lemonhall的要求写一篇nodejs在cygwin下的编译过程。其实非常简单,装好几个必备的软件包装好之后,就像在Linux中编译一样。具体步骤如下:
1、使用cygwin的setup.exe安装如下几个软件包:bash,gcc-c++,make,automake,autoconf,python。
2、下载最新版的nodejs源代码并解压缩。
3、然后使用cygwin建立的桌面快捷方式进入cygwin环境(主要是进入bash环境,否则autoconfig脚本无法执行),并切换到nodejs的源代码目录。(注意,windows的c:、d:等盘被映射到/cygdrive下。)
4、输入./configure,完成之后执行make就好了。

之后把源代码目录下build/default/node.exe拷贝出来就可以了。不过这个node.exe还依赖cygwin的cygwin1.dll。

看很多人都需要这个东西啊,我考虑一下在我的博客上专门开一个windows版nodejs下载页面。Linux我很熟,有什么问题如果我会都可以帮大家解决。

 

windonws版nodejs(win32)二进制文件下载

2010/07/03 by lishen 8 Comments »

nodejs从0.1.98开始通过cygwin支持windows平台。 我使用最新版的nodejs编译成win32下可直接执行的二进制文件,方便想要尝试nodejs,又不想安装linux的同志们。使用方法非常简单,通unix平台一样使用”node XXX.js”命令即可执行xxx.js。(不清楚什么是nodejs的同学,请参看我的博客的其他文章。)

nodejs was port to windows(cygwin) since 0.1.98. I use the newest nodejs to compile a win32 version of node which can execute directly in win32 platform. Using the win32 version of node is just like using unix versioin, command “node XXX.js” will run the server side javascript file XXX.js in node.

win32版nodejs下载页面

 

学习服务器端的JavaScript_Node.js

2010/07/01 by lishen 2 Comments »

翻译自:http://net.tutsplus.com/tutorials/javascript-ajax/learning-serverside-javascript-with-node-js/ 转载请声明原文链接http://www.grati.org/?p=181

Node.js是一个热门框架,使用它可以非常容易的创建高性能,实时网络应用程序。Node使JavaScript可以编写服务器端应用。本教程将引导你安装node并编写第一个“Hello World”程序,之后并扩展为一个实时的Twitter服务器。

什么是Node.js?

传统意义上JavaScript只运行在Web浏览器中,但是由于CommonJS 项目,人们对于将其运行在服务器端产生了浓厚的兴趣。其他服务器端JavaScript环境还包括JaxerNarwhal。 然而,Node.js和这些解决方案不同的地方是,它基于事件模型,而不是线程模 型。例如,支持PHP和其它CGI脚本的web服务器Apache就是基于线程的,它为每一个传入的请求启动一个系统线程。虽然对于许多应用来说这没有问 题,但是许多需要长连接请求的应用,如FriendfeedGoogle Wave,线程模型并没有很好的扩展性。

Node.js使用事件循环而非线程,这样他能够扩展到数百万的并发连接。它克服如下缺陷,服务器花费其大部分时间用于等待I/O操作,如从硬盘 读取一个文件,访问一个外部Web服务或等待一个文件上传完毕,因为这些操作对比内存操作来说是非常慢的。每个I/O操作在Node.js都是异步的,也 就是说,在I/O操作正在进行的同时,服务器可以继续处理传入的请求。JavaScript非常适合基于事件的编程,因为它的匿名函数和闭包特性使内联回 调函数的编写变得异常简单,并且JavaScript开发人员早已熟悉这样的技巧。此事件为基础的模式,使得Node.js速度非凡。并能轻松满足实时应 用程序的需求。


read more…