Phantom.js维护者Slobodin退出,著名自动化测试与智能爬虫框架前景不明 PhantomJS是一个基于WebKit的服务器端JavaScript API,它无需浏览器的支持即可实现对Web的支持,是最早的服务器端Web框架之一。系统占用极小,多用于自动化测试、智能爬虫、网络监控、网站自动截图等。PhantomJS的启动非常简单:
var page = require('webpage').create();
var url = 'http://phantomjs.org/';
page.open(url, function (status) {
//Page is loaded!
phantom.exit();
});
不过随着其他基于Node.JS的Web桌面程序框架
electron、
node-webkit(nw) 的出现,PhantomJS的热度出现下降。最近Phantom.js的主要维护者宣布退出。项目前景不明。
Node.JS用Socket实现FTP Server服务器和Client客户端 FTP协议其实就是主机和服务通过Socket进行固定格式的通信过程,当某客户端连接到FTP 服务器后,客户端发送指令:
<指令> [参数] <命令结束符:"\r\n">
服务会按以下格式返回:
<状态码> [参数或说明] <命令结束符:"\r\n">
例如以下是FileZilla FTP客户端与服务器通信的过程:
响应: 220-FileZilla Server version 0.9.43 beta
响应: 220-written by Tim Kosse (tim.kosse@filezilla-project.org)
响应: 220 Please visit http://sourceforge.net/projects/filezilla/
命令: AUTH TLS
响应: 502 SSL/TLS authentication not allowed
命令: AUTH SSL
响应: 502 SSL/TLS authentication not allowed
命令: USER newghost
响应: 331 Password required for newghost
命令: PASS **************
响应: 230 Logged on
Java已快过时?斯坦福大学将JavaScript作为计算机科学入门课 今年4月初,斯坦福大学开始试推行计算机科学入门课CS 106A的新版本。这个名为CS 106J的新版本用JavaScript来教,而不是用Java来教。
斯坦福大学的官方网站解释:“[CS 106J]采用的教学材料与CS 106A相同,但是使用的教学语言是JavaScript,而不是Java,JavaScript是实现交互式网页的最常见的语言。根本不需要学生之前具有编程经验。”
Docker改名Moby:急于商业化陷入品牌更名乱象 Docker目前是容器级别虚拟化技术的领导者,但一直面临着商业化的难题。从一个普通客户的视角来看,Docker还有一些根本问题没有解决:
1) 客户更希望购买一个完事的操作系统,而不仅仅是一个容器,即使他再便宜。
2) 并且从技术上来讲,Docker进程目前还无法做到与操作系统完全隔离。root管理员可以像上帝一样翻看你的数据,基于容器技术的云服务,无法保障企业的数据隐私。
因此基于Docker的云计算更多的是作为一种DevOps工具来使用。Docker目前一直在探索商业化的途径。此次更名可以看作Docker商业化的一次尝试。
Node.JS更改Windows注册表regedit的几种方法 注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心作用。这些作用包括了软、硬件的相关配置和状态信息,比如注册表中保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据等,联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性,性能记录和其他底层的系统状态信息,以及其他数据等。
这里介绍一些通过node.js操作注册表的几种方法。
Debian下设置Linux Shell脚本开机自动启动Node.JS进程 1) 进入init.d初始化脚本目录
cd /etc/init.d
2) 创建启动Shell脚本,安装nano: apt-get install nano
nano /etc/init.d/footbar
linux用tar文件压缩命令备份系统的方法 然后打开终端,输入以下命令:
1、成为根用户: sudo su
2、转到根目录: cd /
然後,下面就是我用来备份我的系统的完整的命令:
tar -cvpzf /media/sda7/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media /
Node.JS通过原型和类继承EventEmitter,实现收发事件的几种方法 虽然,原型继承经常被视作 JavaScript 的一个弱点,但事实上,原型继承模型比经典的继承模型更强大。举例来说,在原型继承模型的基础之上建立一个经典的继承模型是相当容易的。
JavaScript 对象是动态的属性“包”(指其自己的属性)。JavaScript 对象有一个指向一个原型对象的链。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依此层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。
JavaScript使用ES6的Class面向对象继承时 this is not defined 解决方法 现在ES6提供了一种新的类和构造函数实现方法,不过如果你使用了继承就需要先调用 super() 函数,才能使用this,否则会报错
class Hero extends Character{
constructor(){
super(); // 如果不调用super()则会报错
this._name = name;
}
}
TCP/UDP协议比较:在Node.JS中UDP服务器和客户端通信示例 当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如:DNS交换。把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。TCP丰富的功能有时会导致不可预料的性能低下。