commander.js node.js下又一个命令交互开源包

上周分享了一篇关于node.js 下命令行框架 yargs 如何实现与程序交互今天又一款强大的命令行框架开源包 commander.jsnode.js 下的commander是从Ruby下同名项目移植过来的.下面我们来简单了解下.github项目地址:https://github.com/tj/commander.js npm 地址:https://www.npmjs.com/package/commander 使用:npminstall--savecommandervarcommander=require('commander'); //定义参数 commander.    

node.js 命令行框架 yargs 和你的程序实现交互

如何让你的node.js 应用程序像shell 脚本一样和你交互?于是就有了今天这一片博文 关于yargs 使用分享.大概有一种情况你需要让你的程序接收一个参数,通过这个参数我们做一系列的定制化功能.常见的做法是 把一些不同环境不同配置的变量写到 config 配置文件中.当你的环境变化的时候,你手动去修改你的config 中的变量来达到不同环境显示定制化的东西.更具象的一个例子:config文件中有一个配置项 langue当你发布国内站点的时候,你需要配置成 langue="zh-cn"当你发布国外站点的时候,你需要配置成 langue="en"现在,

git cherry-pick 把提交到A分支的部分commit 再提交到B分支上

关于git 下操作分支的更多博文请本站搜索 "git"上一篇博文介绍了git删除远程分支或重命名分支这一篇分享一个git 下很有用的指令 cherry-pick应用环境:有一个主分支 master (这个分支只是用来合并其他通过测试的分支,及上线打版本)另一个分支 dev (开发提交的分支)当你通过一番挣扎终于搞定一个bug,顺手提交到 git 服务器,心里一阵暗爽. 这时发现你当前所在的分支是 master !!!这个分支不是开发者用来提交代码的,可惜现在剁手也晚了.怎么办?于是你想到,合并分支.合并分支通常会带来各种各样的冲突,而且当前 dev 分支还在开发中,没有进过

git 删除远程分支 重命名远程分支

上一篇介绍过关于 git 打版本,推送本地版本到远程git服务器这一篇和大家分享下 删除/重命名远程分支.其实关于分支的本地操作,之前就有一篇关于git本地分支和远程分支的操作介绍 ,所以关于本地如何创建/查看分支,推送分支,查看远程分支全部点击这个链接查看.zhangzhi@moke:~/code/demo$gitbranch-a *dev master new remotes/origin/HEAD->origin/master remotes/origin/dev remotes/origin/master remotes/origin/new上面是我们查看远程分支的列表. dev

git 打标签并推送tag到托管服务器

今天和大家分享下用 git 给代码打标签的小功能.关于git 的另外一篇分支管理http://yijiebuyi.com/blog/303e08d3380d663544217111a94d7536.html我们常常在代码封板时,使用git 创建一个tag ,这样一个不可修改的历史代码版本就像被我们封存起来一样,不论是运维发布拉取,或者以后的代码版本管理,都是十分方便的.首先我们了解下 git 的 tag 功能:git 下打标签其实有2种情况(1): 轻量级的它其实是一个独立的分支,或者说是一个不可变的分支.指向特定提交对象的引用.(2):带附注的实际上是存储在仓库中的一个独立对象,它有自身的校

node.js 使用 mssql 开源库操作 sqlServer 数据库

node.js 连接 ms SqlServer ,你没有看错,就是这样.我们抛开一切操作系统的歧视, 当你需要用到的数据源存储在 SqlServer 中,那么就会遇到我们今天要说的情况.一. mssql 下载安装github地址:https://github.com/patriksimek/node-mssql mssql 默认使用Tedious驱动.Tediousby Mike D Pilsbury (pure javascript - windows/osx/linux) 默认支持(windows/osx/linux 等系统)所以你在mac 下用node.js 连接 sqlserver 是

MAC 下 webstrom 使用集成git工具 提交代码

webstrom 是工人的非常智能的前端开发IDE ,注意它是一个IDE,并非传统编辑器.它的功能足够多,集成的工具也非常丰富.关于 mac 下webstrom 常用的快键键 ,点击查看这篇博文.今天要和大家分享的是mac 下使用 webstrom 集成git工具提交代码.第一步:配置webstrom 的 git 环境WebStrom -> PreferencesVersion Control 配置项里配置 git 环境.如果你的系统安装了git ,这里默认已经自动识别.path to Git executable : 填写系统 git 执行文件路径 ,点击 Test 测试git可执行目

ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(四)

前面分3篇博文介绍了 Ecmascript 5.1 数组扩展方法ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(一)ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(二)ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(三)今天和大家分享数组中关于归并的2个扩展方法 reduce , reduceRight我们逐一简绍reduce 此扩展函数相比其他方法略繁琐一点.reduce(callbak(previous, current, index, array, [initialValue])[in

ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(三)

前面分2篇博文介绍了 Ecmascript 5.1 数组扩展方法中的迭代方法:ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(一)ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(二)今天和大家分享数组中关于索引的2个扩展方法indexOflastIndexOf依次看下:1. indexOfindexOf(searchItem,[fromIndex])第一参数 searchItem 是查询的目标元素第二参数 fromIndex 是查询的起始位置 (可选参数,为空表示从索引0处开始查找)数组查询按照从左到右的顺序,从 fromIn

ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(二)

接着上一篇的ECMAScript 6 数组扩展方法数组元素迭代方法还剩下 filter , some , every3. filter过滤数组,将数组元素迭代,依次调用回调函数array.filter(callback);实例:我们遍历迭代a数组,然后每个元素对2整除,符合条件的返回.vara=[1,2,3]; varb=a.filter(function(item,index,a){ returnitem%2==0; }); console.log(b);filter 第一个参数是回调函数function(item,index,a)item 是当前迭代元素index 当前迭代元素所在索引a

ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(一)

2011年发布了 ECMAScript 5.1 ,到现在普及程度也不高.如今马上要 ECMAScript 6 马上要发布标准了,何年何月才能普及到.从2013年 各大浏览器开始支持 ECMAScript 5.1包括:Chrome 24,Firefox 19,IE 10.0,Opera 12,Safari 6 等浏览器及更高版本得到支持.今天介绍ECMAScript 5.1 中数组新增的方法:先推荐一位朋友的博客 IT笔录 ,涉及到开发,系统,运维方方面面,各位攻城狮可以去赏脸拜读一下!操作数组元素的迭代方法:forEach() , map(), filter(), every(), some(

闭包形成环境,使用方法及传递局部作用域时到底是值拷贝还是堆引用

javascript中闭包的作用我们之前专门聊过一次,点击查看闭包的形成环境先从javascript的简史说起:javascript 这门充满缺陷和坑的语言,在各大浏览器厂商的支持下,web大势所趋的形势下发展成一家独大的浏览器宿主语言,非常不容易,有兴趣的可以查阅下它的发展背景,当初创建javascript的作者Brendan Eich 在网景公司高层压力下,10天内写成的这门语言的第一个初版,他自己感觉非常不满意,用他自己的话说是这样的:"与其说我爱Javascript,不如说我恨它。它是C语言和Self语言一夜情的产物。十八世纪英国文学家约翰逊博士说得好:‘它的优秀之处并非原创

修改 mac /etc/sudoers 文件后 - sudo 命令不能用 报错syntax error near line

sudo 命令(substitute user do) 可以授权特定用户或用户组作为 root 或其他用户执行某些命令例如普通用户不能在/usr/local/bin/ 下创建目录,这是我们就可以在 mkdir 命令前加 sudo 来执行,他可以授权给我们root的权限执行此命令.sudo 命令的运行依靠它的配置文件 /etc/sudoers 今天干了一件尴尬的事,就是我把 /etc/sudoers 配置文件修改了下,然后保存,结果发现修改出了错误,导致 sudo 命令无法运行,接着想改回来可就没有那么容易了....因为此配置文件修改需要root权限,而我们的sudo 运行出错.所以尴尬的一幕上

PostgreSQL 函数的使用 - 让数据层帮你解决一部分业务逻辑

快一周没有更新了.今天老聂(他的博客 http://niefengjun.cn/) 终于忍不住了,QQ上提醒了我,上周回了趟老家,耽误了几天.PostgreSQL只有函数,是的,没有我们传说中的存储过程,其实PG里的函数已经包括了它,或者说可以利用函数实现它.前面有2篇关于 PostgreSQL 的文章:mac 下初始 PostgreSQL 数据库PostgreSQL 使用 node-postgres 在 node.js 中的应用函数的组成: 函数头 函数体 所使用语言函数头用来定义函数及变量,函数体主要是函数的实现,函数的语言是指该函数实现的方式,目前内置的有c,plpgsql,sql和in

PostgreSQL 使用 node-postgres 在 node.js 中的应用

之前有一篇介绍PostgreSQL在MAC环境下的初体验 ,今天要和大家分享的是 node.js 应用 + PostgreSQL 做数据存储的demo.node.js 环境使用 PostgreSQL 需要下载编译node-postgresgithub地址:https://github.com/brianc/node-postgres 使用:zhangzhi@moke:npminstall--savepgREADME.md 关于如何使用的api 也比较简单:varpg=require('pg'); varconString="postgres://username:pa

locate 在linux下快速定位文档

linux 下可以使用 locate 和 find 来查找文件,但是 locate 在定位时要比 find 快.他们的区别:locate并不是穿梭于档案文件中查找,而是在数据库查找文件.find 正好相反,他的查找要穿梭于档案文件中.这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.所以 locate 要查询实时数据,需要更新数据库.locate--u使用格式:zhangzhi@moke:~$locate[-ir]keyword-i 不区分大小写-r 后面可以接收正则表达式使用方法:全局查找一个zhangz

PostgreSQL mac 环境下初识篇

PostgreSQL 是以加州大学伯克利分校计算机系开发的 POSTGRES 版本 4.2 为基础的对象关系型数据库管理系统(ORDBMS),简称pgsql,是一个自由的对象-关系数据库服务器,由社区驱动的的对象-关系型 数据库系统,它支持大部分 SQL 标准并且提供了许多其他现代特性,它在灵活的 BSD-风格许可证下发行.越来越多的人用它来取代mysql .已成为开发首选的开源关系型数据库.在mac 环境下,可以使用 brew 来安装, 也可以直接下载app 安装.官网下载地址:http://www.postgresql.org/download/ 选择 mac OS X 版本下载,安装即可

macbook 下 webstorm 高效快键键

webstorm 是一款非常好用的javascript 开发 IDE ,当然使用它是需要商业付费的,可以使用30天.IDE是开发的高效工具,但并不是所有web开发都使用它,萝卜青菜,各有所爱!有的人为了高逼格甚至还在专研Emacs ,还有的在为自己的vim安装插件,这些都阻挡不了webstorm 的发展,去看看这家公司你会发现多少优秀的IDE出自他们手上,这是工匠精神吗?你想提高编程效率,除了有一款高效的IDE ,还要知道如何使用它,或者是如何快键便利的使用它.记住,能用快键键的时候,千万不要用鼠标上去划拉,所以今天整理出一部分,能记住最好,记不住,强迫自己记住!下面的快键键只是针对macbo

README.md 如何规范 - 开源项目中必不可少的文件

我们在项目中常常看到README.md 当然扩展名可能是txt ,rb,md ,甚至 me 都有可能.其实这个小小的静态文件还是有些重要信息可以传递的.这就是你在github上创建一个项目的是,总会提示你要不要生成一个README.md 文件.README 应该是介绍code source 的一个概览.其实这个静态文件是有约定成俗的规范.你的项目介绍你的代码实现了什么功能?该如何使用? (系统环境参数,部署要素)代码组织架构是什么样的?版本更新重要摘要如果你的README包括上面的内容,那么当使用者拿到代码,打开README后,基本就知道该如何下手了.如下 README.md :DEMO ##

pandoc markdown 生成pdf文档

今天和大家分享一个工具 pandocgithub地址:https://github.com/jgm/pandoc 它被称作是一款神器为什么这样说:标记语言经过一路发展,貌似从最初的复杂架构中渐渐的又回归到了简洁.不得不提的是 2004年发展起来的 markdown 语法,简洁清爽,非常受人欢迎,尤其是不会操作word的用户,不会书写html的用户,简直就是福音.但是问题来了, markdown 语法就算非常简洁,我潇潇洒洒写了5万字的小说,最后这个 md 文件如何变成 word文档(或许是受markdown 限制,打印问题,或者出版社要求) 或者如何变成一个pdf文档.......(关于mar

lodash 超越 underscor 全兼容并且性能更突出

underscore 以14000多的star ,对于 7000多 star 的 lodash虽然是压倒性优势,但是你不得不承认 lodash 的增长速度以及他的性能优化.为什么要把这2个牵扯在一起,因为他们有着千丝万缕的关系.lodash 原本是 underscore 的一个fork ,对于underscore 的每一个api的增加,移除,修改等.lodash 都会迅速做出反应,所以理论上我们可以0成本直接用 lodash 来替换 underscore.因为lodash 的内部对api做了惰性求值?(具体含义还是似懂非懂,有待进一步学习)所以他的api性能高出 underscore 一大截,

when 让你跳出异步回调噩梦 node.js下promise/A规范的使用

其实关于promise 的博客,前端时间专门写了一篇关于 promise 规范的文章,promise规范 让 javascript 中的异步调用更加人性化.简单回忆下:promise/A规范定义的“Deferred/Promise”模型其实是实现了“发布/订阅”模型.通过Deferred对象发布事件,包括下面2种事件完成 --> resolve事件,失败 --> reject事件,通过Promise对象进行对应完成或失败的订阅类似于任务状态转变时事件被触发.将会对应的执行事件绑定函数.每个Promise任务都有三种状态:默认(pending)、完成(fulfilled)、失败(re

node-config 模块根据 ENV 环境变量不同加载响应的配置文件

上一篇博文和大家分享了ENV定制开发,测试,发布环境变量.定制了以后如何来用,今天这篇就是要介绍如何使用自定义的不同环境变量.大概有些同学会有疑问.为什么各种环境不直接配成一致的.如果可以这么做的话,再好不过的.什么时候可能需要不同的配置.如果你想在开发环境下打印出log ,但是在正式运行环境不想打印log.你想在开发环境加载原 javascript 文件, 在正式运行环境下压缩javascript 文件.或者你想在开发环境加载一套 config 配置,在正式运行环境加载另外一套 config 配置.等等......一切你需要定制化的时候. 3. 我需要一个普通的json配置文件即可,为何要用

ENV定制开发,测试,发布环境变量

env 命令可以显示Linux系统当前用户环境变量,当然mac下也是可以的.注意是当前用户的环境变量.查看ENV环境变量:zhangzhi@moke:~$ENV TERM_PROGRAM=iTerm.app ANDROID_HOME=/Users/zhangzhi/Library/Android/sdk SHELL=/bin/bash TERM=xterm-256color CLICOLOR=1 TMPDIR=/var/folders/b9/x5dylknd4x735wwy54f3g41h0000gn/T/ GRADLE_HOME=/usr/local/gradle-2.2.1 Apple_P

避免uncaughtException错误引起node.js进程崩溃

uncaughtException 未捕获的异常, 当node.js 遇到这个错误,整个进程直接崩溃.或许这俩个人上辈子一定是一对冤家.或许这俩个人经历了前世500次的回眸才换来了今生的相遇,只可惜在错误的时间,错误的地点,做了错误的事!什么是uncaughtExceptionuncaughtException 是一种未捕获的异常,它是node.js 进程上的一个事件,直接挂在 process 上.什么时候会遇到uncaughtException1.当你的程序出错了2.这个错误还没有被 try ... catch 住以上2个条件同时发生时, 说明当前的一个异常会一直冒泡到事件循环为止.然后打印

node-cache 模块 node.js 轻量级缓存管理使用及源码分析

随着前端越来越重,已经不是当年的一个页面配几个第三方js库实现一些花俏的效果,而是出现了各种各样的框架解决方案.当我们项目实现前后端分离时,甚至一些逻辑处理也会放到前端来处理.所以随随便便打开一个页面上百k应该也是正常,甚至更大的页面在考验的前端.但是伴随成长的后端,尤其数存储方面貌似发展缓慢,总有跟不上的赶脚!想当年我们使用关系型数据库,当达到一个瓶颈时,解决起来是不计后果的,读写分离,拆表拆库,做service中间件,然后给中间件负载均衡等等来减轻前端并发造成的后端数据压力.如今的mongodb 做一个分布式貌似轻轻松松, redis 做一层缓存让你有飞一样的感觉.我们终于谈到了缓存.缓存

angular.js 国际化模块 angular-translate 简单方便快捷翻译中英文等多语言环境

很多web服务面对的不仅仅是当地用户,多语言环境不仅能提升逼格,更重要是一种用户体验.angular.js 作为前后端拆分的解决方案之一,当然离不开前端框架处理国际化的问题,angular.js 官方出了一个模块 angular-translate 来解决多语言国际化问题.我们前端采用 bower 包管理工具来管理依赖,点击链接查看bower 使用方法,这里不再详细说明.上面列出的3个模块我们都要用到,一会详细说明:今天和大家分享的内容目录:使用angular-translate 模块的前期准备工作创建过滤器做html页面内容的国际化创建服务做javascript 脚本里的内容国际化使用 an

forever node.js web应用中不可或缺的伟大模块

javascript 一统江湖的势头越来越猛,越来越重的前端,不得不实施前后端分离,angular.js 成功把前端javascript抽象成了一个复杂的MVC框架,注意,它是一个框架,可不是普普通通的插件,或者工具包.另一位兄弟则是跳出浏览器宿主的限制,活跃在了服务器端,大名鼎鼎的 node.js还有一位齐头并进的好哥们 mongodb ,它不仅让你使用熟悉的javascript范围数据库,而且还自己实现了javascript引擎.可能创建 javascript 语言的大牛,看到今天js的发展事态,想必脊梁骨也是阵阵发凉.我们好像扯远了,开题先痛痛快快意淫一把怎能善罢甘休,O(∩_∩)O~由

前端包管理器bower的使用

随着前端项目越来越复杂,随便引入几个第三方javascript脚本库貌似已经习以为常,但是随着越来越多的包被引入,开发人员维护起来也是一件相当头疼的事,比如第三方库的版本更新,安装,卸载等.twitter推出了一个前端包管理器 bower 帮我们解决了这些头疼的事情.bower 完全借鉴了npm构思和实现原理,所以后面你会看到它的使用几乎和npm是一模一样.当然,bower 是运行在node.js 基础上,所以你的当前环境确保已经安装 node.js .bower 的基础功能是什么?1.注册模块每个包需要确定一个唯一的 ID 使得搜索和下载的时候能够正确匹配2.文件存储把文件存储在一个有效的网

angular.js 中的作用域 数据模型 控制器 之 基础篇

一些零散的点,如果读的时候自己能串起来就更好了.1.angular.js 作为后起之秀的前端mvc框架,他于传统的前端框架都不同,我们再也不需要在html中嵌入脚本来操作对象了.它抽象出了数据模型,控制器及视图.成功解耦了应用逻辑,数据模型,视图.2.它的视图也不是后台统一替换后渲染页面,而是视图被动态实时替换.视图上可以通过指定的 angular.js 指令来绑定模型数据.模型数据的变化又会直接影响视图的变化.3.控制器就像一座桥梁,负责连接模型和视图, 模型里包括数据和与数据进行交互的方法.视图只负责把模型数据的映射显示给用户.4.angular.js 会记录数据模型中的数据在任意时间点的

回到顶部