NAE Client用Node.js 编写shell script 郑新林(剪巽)| @literal
NAE (Node App Engine)
NAE (Node App Engine)
NAE (Node App Engine) NAE 在线编辑器 每个应用需要一个 package.json 文件 .naeignore 文件:控制同...
NAE (Node App Engine) NAE 上APP有两种模式 : Dev , Online 在线编辑器操作的代码是dev模式下的代码 dev调试之后,需要通过发布才能到online模式 dev : a...
NAE (Node App Engine)为哈没有shell工具?我不打算在浏览器里写代码XD !我控shell !我是姚明!
NAE Client (design)作为一个client,我要提供哪些功能呢? (压力好大~) 格式 : nae cmd appname cmd: auth start ...
NAE Client (design) 通信:socket 问答式 协议:json head + binary body
NAE Client (design) 大洋葱文件传输 {cmd:file_add,app:xxx,v:’1.1’,length:123} ...
NAE Client (dev) 寻找技术实现方案 命令行运行 shell / npm package 命令行参数获取 npm install optimist 命令行 用户输入 ...
NAE Client (dev , v1) 第一版: shell + node.js #!/bin/sh echo “[Enter Email]:” read email if [ ! –z $email ] ;then fi ..... xx...
NAE Client (dev , v1) 第一版 开试 mocha 被上传了,咋整 ? 需要一个控制同步到机制,.naeignore 出场 !!!
NAE Client (dev, v1 ) 改进大洋葱 .naeignore 制定同步排除列表 node_...
NAE Client (dev, v1 ) Nodeclub , 第一场考验,挂了~ 现象:5000k+的文件,sdown死活跑2000个左右挂掉,为什么? 原因:EMFILE 已达到进程可同时打开的文件数上限 结论:For循环遍历文件,获取文...
NAE Client (dev , v1) 兼容了 linux/unix shell windows git-bash 缺点 安装像原先的 npm install 更新比较麻烦,尤其是windo...
NAE Client (dev , v1)还行吧能用了,只是家里win7,没装虚拟机~呃,什么? 容我想想~
NAE Client node v0.6.* 开始,npm开始强大起来 npm对平台的支持变好; 从 mocha,jake等模块中得到启发; 于是开始收集资料,准备将client升级成 npm模块 程序还没开始,先占坑 : nae
NAE Client (dev , v2) Npm 的使用 $ cd your_module $ npm init # 初始化,按wizard一部一部 { “name” : “nae”,...
NAE Client (dev , v2) 捕获用户输入,替代shell的read $ npm install read var Read = require(‘read’); Read({prompt:”Enter Email”},fu...
NAE Client (dev , v2) 处理OS平台差异 获取用户目录,保存auth信息 // *nix process.env[‘HOME’] // windows process.env[‘HOMEDRIVE’] + proce...
NAE Client (dev , v2) 迁移完毕! 除了异步写起来需要异步一下思路,其他很好 可以和“难写”的shell script 说 byebye了 $ npm publish 呃,忘了改帮助文档了,又不想升版本号,咋办咋办? $...
NAE Client (inaugurate) $ npm install nae 亲,全国包邮
NAE Client (usage) 开始使用NAE Client $ nae auth $ cd workspace $ nae sdown app1 # 下载app1,将会在workspace下建立app1/ $ cd app1 本地开...
NAE Client这个可以有!哈哈哈哈哈 !囧死我了~
NAE Client (TODO) 命令改进 $ nae sdown ## 本地目录名称 必须和 appname 相同 ? $ nae sup ## sup、debug 能否组合? 你的建议?
Node.js : the new shell script process 提供平台、进程的信息,以及进程的控制 child_process 调用 shell 命令 fs 、http、net 提供文件、网络支持 模块...
FAQ
Thank you部分图片来自:http://sinovision.net/news.php?act=details&news_id=82607http://golang.org/doc/
of 28

Nae client(using Node.js to create shell cmd)

nae server client toolwrite by node.jshow to use Node.js to write shell script
Published on: Mar 3, 2016
Source: www.slideshare.net


Transcripts - Nae client(using Node.js to create shell cmd)

  • 1. NAE Client用Node.js 编写shell script 郑新林(剪巽)| @literal
  • 2. NAE (Node App Engine)
  • 3. NAE (Node App Engine)
  • 4. NAE (Node App Engine) NAE 在线编辑器 每个应用需要一个 package.json 文件 .naeignore 文件:控制同步时的排除文件
  • 5. NAE (Node App Engine) NAE 上APP有两种模式 : Dev , Online 在线编辑器操作的代码是dev模式下的代码 dev调试之后,需要通过发布才能到online模式 dev : appname.dev.cnodejs.net online : appname.cnodejs.net
  • 6. NAE (Node App Engine)为哈没有shell工具?我不打算在浏览器里写代码XD !我控shell !我是姚明!
  • 7. NAE Client (design)作为一个client,我要提供哪些功能呢? (压力好大~) 格式 : nae cmd appname cmd: auth start [appname] stop [appname] restart [appname] debug [appname] sdown [appname] sup [appname] pub [appname] update
  • 8. NAE Client (design) 通信:socket 问答式 协议:json head + binary body
  • 9. NAE Client (design) 大洋葱文件传输 {cmd:file_add,app:xxx,v:’1.1’,length:123} 010101011010110101010100101011001 010101010100101010102
  • 10. NAE Client (dev) 寻找技术实现方案 命令行运行 shell / npm package 命令行参数获取 npm install optimist 命令行 用户输入 npm install read socket 连接 require(“net”) 文件操作 require(“fs”)
  • 11. NAE Client (dev , v1) 第一版: shell + node.js #!/bin/sh echo “[Enter Email]:” read email if [ ! –z $email ] ;then fi ..... xxxx/nae.js argv1 argv2 .... #!/usr/bin/env node // javascript // write more , do more! $ ln path/nae /usr/local/bin/nae #!/bin/sh # TODO 安装、更新用的shell脚本
  • 12. NAE Client (dev , v1) 第一版 开试 mocha 被上传了,咋整 ? 需要一个控制同步到机制,.naeignore 出场 !!!
  • 13. NAE Client (dev, v1 ) 改进大洋葱 .naeignore 制定同步排除列表 node_module/mocha/* node_module/xxxx/* config.json 精简diff 列表,引入xfs模块 Mkdir xxx Mkdir xxx/xxx => mkdir xxx/xxx Rmdir xxx/xxx/ Rmdir xxx/ => rmdir xxx
  • 14. NAE Client (dev, v1 ) Nodeclub , 第一场考验,挂了~ 现象:5000k+的文件,sdown死活跑2000个左右挂掉,为什么? 原因:EMFILE 已达到进程可同时打开的文件数上限 结论:For循环遍历文件,获取文件索引,是不安全的, 方案:改成队列! 20个并发 PS 另外一个文件操作坑坑 现象:formidle上传文件,fs.rename(),提示tmp文件不存在,为什么? 原因:fs.rename () 无法跨磁盘移动文件,报错 文件不存在 结论:给node提 issue(增加了EXDEV错误码) 方案:修改tmp目录 | fs.writeStream() 文件错误码说明: http://club.cnodejs.org/topic/4f181d70817ae4105c003b9c
  • 15. NAE Client (dev , v1) 兼容了 linux/unix shell windows git-bash 缺点 安装像原先的 npm install 更新比较麻烦,尤其是windows下
  • 16. NAE Client (dev , v1)还行吧能用了,只是家里win7,没装虚拟机~呃,什么? 容我想想~
  • 17. NAE Client node v0.6.* 开始,npm开始强大起来 npm对平台的支持变好; 从 mocha,jake等模块中得到启发; 于是开始收集资料,准备将client升级成 npm模块 程序还没开始,先占坑 : nae
  • 18. NAE Client (dev , v2) Npm 的使用 $ cd your_module $ npm init # 初始化,按wizard一部一部 { “name” : “nae”, “version” : “0.0.1”, “main” : “index.js”, “bin” : { “nae” : “bin/nae.js” }, “engines” : “>0.6.6”, “author” : “NAE”, “description”: “nae client ,”, “dependencies” : {} } $ npm publish
  • 19. NAE Client (dev , v2) 捕获用户输入,替代shell的read $ npm install read var Read = require(‘read’); Read({prompt:”Enter Email”},function(err, user){ Read({prompt:”Enter Password, silent: true},function(err, user){ console.log(“密码明文,么加密~”) }); });
  • 20. NAE Client (dev , v2) 处理OS平台差异 获取用户目录,保存auth信息 // *nix process.env[‘HOME’] // windows process.env[‘HOMEDRIVE’] + process.env[‘HOMEPATH’] 文件路径 : 和 / filepath.replace(//g , ‘/’);
  • 21. NAE Client (dev , v2) 迁移完毕! 除了异步写起来需要异步一下思路,其他很好 可以和“难写”的shell script 说 byebye了 $ npm publish 呃,忘了改帮助文档了,又不想升版本号,咋办咋办? $ npm unpublish nae@0.0.1 0.0.1版本就这么灰飞烟灭了~
  • 22. NAE Client (inaugurate) $ npm install nae 亲,全国包邮
  • 23. NAE Client (usage) 开始使用NAE Client $ nae auth $ cd workspace $ nae sdown app1 # 下载app1,将会在workspace下建立app1/ $ cd app1 本地开发,编辑代码 (代码有版本库控制,更加) $ nae sup ## 上传修改,有排除的文件,则修改.naeignore 线上调试 $ nae debug ## 连接nae的dev模式,stdout,stderr将被返回, ## app重启,获得调试信息 发布代码上线 $ nae pub
  • 24. NAE Client这个可以有!哈哈哈哈哈 !囧死我了~
  • 25. NAE Client (TODO) 命令改进 $ nae sdown ## 本地目录名称 必须和 appname 相同 ? $ nae sup ## sup、debug 能否组合? 你的建议?
  • 26. Node.js : the new shell script process 提供平台、进程的信息,以及进程的控制 child_process 调用 shell 命令 fs 、http、net 提供文件、网络支持 模块 optimist 提供shell式的参数支持 模块 read 提供输入交互 模块 xfs增强文件操作 模块 log4js 打印漂亮的输出信息
  • 27. FAQ
  • 28. Thank you部分图片来自:http://sinovision.net/news.php?act=details&news_id=82607http://golang.org/doc/

Related Documents