随笔 - 2015年春节前夕

疯狂的年末又一次来袭,各种需求,赶工,加班,好像春节后要进入世界末日了.所以这几天连更新blog的时间都很紧,当然也是借口,我完全可以不睡觉去写一篇嘛,哈哈...原本打算把cordova 生成android 和 ios webApp写一下,可惜手头的工作打断了.之前的博文大部分是随笔,想到哪写到哪,所以也没有留住固定的读者,至今每日新访客占到90%左右.其实这样并不好,大家就好比匆匆过客,突然尿急,前面隐约看到一个"公厕" ,然后痛痛快快"上"完,当然大部分临走的时候还是"冲"了一下,哈哈.所以.我是不是该把一个系列从"He

webstorm 快键键分享

webstorm window系统下快捷键分享, mac下 ctrl 对应 command 键, alt 对应 option 键Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*…*/ )Shift+F6 重构-重命名Ctrl+X 删除行Ctrl+D 复制行Ctrl+G 查找行Ctrl+Shift+Up/Down 代码向上/下移动。F2 或Shift+F2 高亮错误或警告快速定位写代码,按Tab 生成代码选中文本,按Ctrl+Shift+F7 高亮显示所有该文本,按Esc高亮消失。(因为这个功能我就可以发放心的放弃sublime了)Ctrl+B或Ctrl+鼠标左键单击 快速打开光

moment .js - 不依赖任何三方库的时间日期格式化工具类

moment.js不依赖任何第三方库,支持字符串、Date、时间戳以及数组等格式,可以像PHP的date()函数一样,格式化日期时间,计算相对时间,获取特定时间后的日期时间等等,本文有如下举例。直接见代码:当前时间:moment().format('YYYY-MM-DD HH:mm:ss');2015-01-19 19:11:11今天是星期几:moment().format('d');1Unix时间戳:moment().format('X');1421665871相对时间:moment("20130101", "YY

mac os开发android应用通过usb真机调试

当前开发用的ari,sublime + webstrom 开发node.js还比较流畅,还没有出现被堵被坑的局面.尝试开发android应用时,各种坑,其中一个比较深的坑就是今天要和大家分享的.mac OS如何真机调试android应用.但凡接触过android开发的,都对他的模拟器有挥之不去的阴影,不明真相的童鞋可以玩一把模拟器,包你爽!我在上上一篇博文关于node.js生成android和ios应用里用xcode编译然后模拟器截图,结尾还写到,安卓模拟器的截图以后奉上.因为android的环境,依赖等一切问题已经影响到了我的食欲,直到今天终于调试成功一把,可惜是在真机,android模拟器

node.js 代码实现301跳转

之前专门有一篇博客介绍 nginx 设置不带www域名跳转带www域名上为什么要这要做,可以从上面的博客得知原因.后来还有一篇是介绍关于主域在搜索引擎中权重更高 ,所以博客经过一段时间不带www域名跳转带www域名后,又相反的从带www跳转到不带www域名,只是因为主域权重更高,不想分流而已.再后来还做了一件事,就是伪静态化,所以在我的博客就算翻页你也会看到url 是这样的 http://yijiebuyi.com/2.html 但是会出现一个问题,之前被搜索引擎收录的url跳转过来服务器找不到自然会报错.所以博客的路由做了调整,兼容之前的老路由,同时支持新路由.这样又导致一个问题,就是一篇博

mac环境下node.js和phonegap/cordova创建ios和android应用

引用百度百科的一段描述:PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,WP8,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以调用. 查看更多使用前提:已经安装xcode已经安装python 2.7 (3.0一下版本)已经安装node 0.10.*(本环境是 0.10.28)上面的安装方法你可以在本博客搜索cordova和phonegap是什么关系?PhoneG

Mac OSX 添加环境变量的三种方法

Mac添加环境变量的三种方法,之前有一篇关于mac $path加载环境变量的3种配置文件(一)sudo nano /etc/paths来编辑 paths,将环境变量添加到 paths 中。nano 是一个编辑器,另外还有几个,如:Pico,Emacs。(二)1.创建一个文件:sudo touch /etc/paths.d/mysql2.sudo nano /etc/paths.d/mysql3.编辑该文件,键入路径并保存(关闭该 Terminal 窗口并重新打开一个,就能使用 mysql 命令了)/usr/local/mysql/bin据说,这样可以自己生成新的文件,不用把变量全都放到 pat

/usr 目录结构

/usr 是linux系统核心所在,包含了所有的共享文件。它是 unix 系统中最重要的目录之一,涵盖了二进制文件,各种文档,各种头文件,x,还有各种库文件;还有诸多程序,例如 ftp,telnet 等等。曾经的 /usr 还是用户的家目录,存放着各种用户文件 —— 现在已经被 /home 取代了(例如 /usr/someone 已经改为 /home/someone)。现代的 /usr 只专门存放各种程序和数据,用户目录已经转移。虽然 /usr 名称未改,不过其含义已经从“用户目录”变成了“unix 系统资源”目录。值得注意的是,在一些 unix 系统上,仍然把 /usr/someone 当做

git reset revert 回退回滚取消提交返回上一版本

总有一天你会遇到下面的问题.(1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚.(2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚.这些开发中很常见的问题,所以git的取消提交,回退甚至返回上一版本都是特别重要的.大致分为下面2种情况:1.没有push这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题,准备取消提交,用到下面命令reset gitreset[--soft|--mixed|--hard上面常见三种类型--mixed会保留源码,只是将git commit和index 信息回退到了某个版本.gitreset

Mac OS X 10.10 brew报错 bad interpreter: No such file or directory

今天尝试用brew 安装bzr ,结果悲剧的是直接报错!zhangzhi@moke:~$brewinstallbzr /usr/local/bin/brew:/usr/local/Library/brew.rb:/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby:badinterpreter:Nosuchfileordirectory /usr/local/bin/brew:line26:/usr/local/Library/brew.rb:Undefinederror:0网上找一下,原来是 MAC OSX 1

git 本地仓库和远程仓库及本地分支和远程分支简介

之前一篇关于 git简易使用笔记 点击查看,今天的内容就是作为一个补充,主要说一下git 操作本地仓库/远程仓库及本地分支和远程分支.从远程git仓库签出代码: $ git clone git://aaa.com/git_project.git (远程git服务器项目所在地址)当你需要克隆远程项目到本地时,默认会把项目保存在名为 git_project 文件夹下面.你也可以指定本地的一个空文件夹cccgit clone git://aaa.com/git_project.git ccc$ git remote -v查看远程仓库$ git remote add [远程仓库名] [远程git服务

node.js 下依赖Express 实现post 4种方式提交参数

上面这个图好有意思啊,哈哈, v8威武啊....在2014年的最后一天和大家分享关于node.js 如何提交4种格式的post数据.上上一篇说到了关于http协议里定义的4种常见数据的post方法,详细介绍请点击查看.分别是这四种:www-form-urlencoded,form-data,application/json,text/xmlExpress 依赖 bodyParser 对请求的包体进行解析,默认支持:application/json, application/x-www-form-urlencoded, multipart/form-data.可惜对xml没有支持,需要自己代码来

node.js AES/ECB/PKCS5Padding 与其他语言的加密解密通用

关于什么是AES? 需要自己goole了解一下,今天就是简单和大家分享node.js下使用AES/ECB/PKCS5Padding 如何与其他语言通用加密解密.就像你的接口是node.js提供服务,而第三方平台是其他服务器端语言开发,比如php ,在第三方平台请求你的接口可能需要sign验证,假设我们使用了AES/ECB/PKCS5Padding 加密.AES/ECB/PKCS5Padding 斜线分隔的3部分分别是 算法/模式/填充量AES加密包括不同的模式,已经后面是否有填充量(为什么有填充量,就像我们引用的图片,一个AES块是16个字节,如果不满16的时候要不要填充?)算法/模式/填充

[转]四种常见的 POST 提交数据方式

HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似于下面这样:<method> <request-url> <version><headers><entity-body></entit

node.js里面的全局变量

在node.js开发中,你一定用到过 console 类来打印一些东西或者debug.但是你在使用console类之前一定没有require 相关的包.有的人会说,console 是node.js核心自带模块,不需要require ,错了,这里容易理解错.核心代码库是你安装node.js时已经包含了并编译了此模块.核心模块定义在node源代码的lib/目录下.但是用的时候还是要require 一下.比如上一篇博文提到的node.js里querystring类的使用,这个就是核心代码库自带的,但是你用的时候还是要require('querystring');而我们常常拿来直接就用

node.js querystring类介绍

从名字就可以看出是一个和参数相关的帮助类,node.js原生自带,直接 require('querystring') 即可使用.此类一共包括4个方法:querystring.stringify(obj, [sep], [eq])querystring.parse(str, [sep], [eq], [options])querystring.escape querystring.unescape [内参数]表示可选参数, [sep]指分隔符 默认& , [eq]指分配符 默认=下面一个一个来介绍:一:querystring.stringify(obj,[sep],[e

关于node.js 验证 Oauth1.0 接口

下面的node.js调用Oauth接口并不是针对 腾讯开放平台.....具体不同的服务商可能在 oauth 基础上添砖加瓦,还要考虑具体的业务需求.相比Oauth2.0来说,Oauth1.0真的很繁琐......但是实际应用中碰到这个问题只能去解决,而不可能给对方打电话说,你赶紧把Oauth协议升级到2.0吧,1.0太繁琐,你想想将会发生什么事情 $#(+)&*@!!常常涉及到三方:Service Provider:服务提供者(如 腾讯,只是假设)Consumer:消费⽅,外部第三⽅方平台(如 一介布衣)User:用户 (登录用户)当然我的博客不是多用户博客,只是举例.前提条件:在服务

漫谈javascript 单线程异步io回调的特性

javascript经过浏览器大战的几次更新换代,终于一统江湖,稳坐第一把交椅,经过你会发现javascript语法和实现并不尽人意,但是丝毫不影响它的发展.我们最开始接触javascript应该大部分是从html中的js脚本开始,但是这种看似简单的语言稀里糊涂的用了好几年,也没有搞清楚它的一些原理机制,有没有躺枪!起码javascript在操作dom的时候用了各种事件回调,比如按钮,链接的点击,鼠标经过,获取焦点等等.在这个过程中,我们在dom上绑定一个事件回调函数 比如 onclick="doCheck()" 这个过程就是给dom元素注册了一个click 事件,并且绑定

async和eventproxy在流程控制上哪个更优秀

由于node.js特性异步IO,导致 node.js 开发常常让你头疼的是异步嵌套回调.一层一层的大括号嵌套让你当场就迷失在回调函数中,更不用说隔一段时间自己去维护这段代码的时候,恨不能砸显示器来泄愤.不过这个世界还是美好的,你遇到的问题大家也都遇到了,而且大牛们致力于减轻码农的各种node.js 的痛苦,开发出了高效好用的流程控制包,让你的逻辑变的清晰,维护起来一目了然.常用的有 async ,step ,eventproxystep本人接触很少,一直在用async,也是最近注意到了 eventproxy ,我想看看哪个性能更优,代码更加优雅,所以有了下面一个小demo.这个demo不去比较

友情链接做手脚 - 这里面水还挺深

这个世界总需要一些人来制定规则,然后另外一些人想办法去破坏规则,当然这部分人会受到一定惩罚.比较圆滑的一部分是钻规则的空子.就像出现搜索引擎以后,自然就出现了seo这个职业,人们就在使用各种各样的手段.所以搜索引擎定义了 白帽,黑帽及灰帽 .白帽是按照搜索引擎中规中矩去优化.黑帽是走捷径,seo作弊.灰帽就类似上面转空子的那拨人.这里面的水好深哦.今天就简单说下常常遇到的 友情链接交换.互联网也是一张网,所以我们把搜索引擎去收录页面的自动化程序比作蜘蛛,蜘蛛在网上爬来爬去,从A节点到B节点需要一条蛛丝相连,而互联网之间的相连全靠链接,就是 a 标签.链接在互联网世界中非常重要,搜索引擎的好多算

修改阿里云ssh默认22端口

站长都应该有服务器安全意识,虽然很少有人会盯上我这个小博客,但是害人之心不可有,防人之心不可无.如果遇到个好奇心很重的访客,他会试探你服务器上的端口.而我们常常使用的ssh 默认端口是22,一般站长修改的不多.也难免会有人想去暴力破解下密码.所以为了保护自己,我们可以修改ssh默认端口,提高被攻击的门槛.今天我就是要把阿里云vps默认ssh端口改掉.ssh的配置信息存放在这里 /etc/ssh/sshd_confignano/etc/ssh/sshd_config打开配置文件,你会密密麻麻看到罗列好处好多配置项,现在需要把鼠标移动到10-20行之间,找到 #Port 22这个注释是提示你当前s

request 模拟post提交表单

node.js环境下,利用request 模拟post提交表单 需要 formstream 插件配合使用.npminstallrequestformstreamvarrequest=require('request') ,FormStream=require('formstream') var form = FormStream()   .field('name', '一介布衣')   .file('head_image', '100x100.png') var upload = request.post('http://yijiebuyi.com/page',

我的vps运行4个站点,512M内存1M带宽下博客依然秒开不卡顿的原因是什么? - 站长必看

我从统计后台常看到有人site我的站,一部分是打算做友链的,另外还有一部分观望的站长,他们会发现一个固定IP上竟然绑了4个站,而且我的博客反应还足够快,一页列出40篇图文博客几乎是秒出,无延迟无等待,所以我收到一个站长的Email,大概就是问下我阿里云vps花了多少钱.站点加载速度快大概有下面几个因素:此blog是node.js开发的,异步IO处理还是有优势的.可以查看我的另外一篇博文,node.js和其他语言相比的优点在哪里?2.此blog没有用特别复杂的数据库,而且选择了小众化的google推出的kv型nosql数据库 levelDB.此数据库简约而不简单,它强悍的读写能力可以支撑十亿级别

userAgent判断客户端浏览器来自PC还是移动端

今天在三思悦网站通过微信上分享了一篇关于婴幼儿教育的帖子,等来到公司自己点进去一看,彻底凌乱了,看上去很多余的页头,样式完全错乱了,还有画蛇添足的页脚....移动浏览器可视化范围很小,所以充分利用有限的空间去展示有价值的东西,页头,页脚,侧边栏都是可以弱化,甚至不显示效果更佳.下面进行优化改造,我打算采用js来分辨pc浏览器还是移动端浏览器,pc端浏览器和移动客户端浏览器是通过 userAgent 来分辨,直接上代码:navigator.userAgent.match(/Android/i)//安卓客户端浏览器 navigator.userAgent.indexOf('iPhone&#

[转] Node.js一分为二:开源项目真需要“大管家”吗?

猎云网12月15日报道 (编译:西洲豹)Node.js作为服务器编程语言的后起之秀,常用来构建和运行Web应用,近日却爆出其社区出现分裂。由于对官方运营商Joyent公司在Node.js管理上的长期不满,多位核心开发者另立门户,创建了分支Io.js。从GitHub得知,Io.js的第一个版本(1.0.0 alpha1版)将于2015年1月13日发布。Node.js开源社区组织者Mikeal Rogers也是“另立门户”中的一员,他说:“我们不想被另外一家公司任命的管理人员牵着鼻子走,而是想让Node.js的贡献者拥有更多的控制权,并寻求更多的共识。”Io.js与Node.js的分离,再一次凸显

Express 3.x升级到4.x 优缺点

Express 是Node.js Web应用框架,他集成了一整套完善的api,让您能够快速搭建一套Web应用.安装Expressnpminstall-gexpress创建一个启动文件 index.jsvarexpress=require('express'); varapp=express(); app.listen(8000);nodeindex.js既可以成功运行起来应用创建一个路由app.get('/',function(request,response){ response.send("HelloWorld!"); });Expres

node.js cookie 操作

cookie是保存着http头信息中的.所以最原生的方法就是通过node.js的原生方法setHeader来设置.response.setHeader(name, value)方法接收key,value键值对获取 header 里面设置的值通过另外一个方法:response.getHeader(name)根据name 获取 value如下:设置cookieresponse.setHeader("Cookie", ["type=user", "name=一介布衣"]);获取cookieresponse.getHeader("C

AngularJS双向绑定 - 免费入门教程

angular.js快速开始在这一步你会增加一个让用户控制手机列表显示顺序的特性。动态排序可以这样实现,添加一个新的模型属性,把它和迭代器集成起来,然后让数据绑定完成剩下的事情。请重置工作目录:git checkout -f step-4你应该发现除了搜索框之外,你的应用多了一个下来菜单,它可以允许控制电话排列的顺序。步骤3和步骤4之间最重要的不同在下面列出。你可以在GitHub里看到完整的差别。模板app/index.htmlSearch:<inputng-model="query"> Sortby: <selectng-model="orde

通过url跳转参数实现百度站内搜索

自google退出后,国内主流搜索引擎必须是百度,好多站长也抛google于脑后,一心针对百度优化.今天和大家分享一个百度站内搜索.(一)如果你用了百度的站长工具,左侧其他工具-->站内搜索就可以申请定制自己的站内搜索框.(二)之前三思悦站内搜索用google搜索,但是现在根本打不开的状态,让人很难堪,由于页面UI不想去变动的情况下如何用url跳转实现百度站内搜索呢.之前的google搜索是这样的跳转链接:https://www.google.com.hk/#hl=zh-CN&q=site:sansiyue.com+' + key上面的参数key是通过url编码后的关键词

jquery链式操作,dom操作,事件操作- 基础训练第二篇

jquery选择器之基础训练第一篇链式操作jQuery允许把一系列的操作像链条一项写出来,比如下面的形式$('select').find('[class=city]').find("option:selected").val(); 上面的表达式分步显示是这样的:$('select') 找到所有下拉列表$.find('[class=city]') 过滤class=city的下拉列表$.find('option:selected').val() 找到下拉列表被选中的项的值之所有jquery支持这种极

回到顶部