• 搜索:html

Linux下强大的curl 命令行工具

curl curl是linux系统中一个利用URL规则在命令行下工作的文件传输工具. 语法 curl [option] [url] 参数 -A/--user-agent <string> 设置用户代理发送给服务器 -b/--cookie <name=string/file> cookie字符串或文件读取位置 -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中 -C/--continue-at <offset> 断

sequelize 5.0中文文档 定义模型define model和验证 (二) - node.js语言最好用的orm

前言 在使用sequelize ORM框架时一定要先创建模型对象. 对象模型对应的就是数据库中表,字段及字段类型等的定义. 我们一般的做法是先在nodejs中将对象创建出来,然后调用Sequelize的同步方法,将数据库自动创建出来. 这样就避免了既要写代码建表,又要手工创建数据库中的表的操作. 只需要单独考虑代码中的对象类型等属性就好了. 如果数据库中已经建好了表,并且不能删除,这个时候就不能自动创建了,因为创建的时候会删除掉旧的数据 定义模型 名称类型说明 modelNameString模型名,在sequelize.models属性中会使用这个名称; 如果没有在options中指定

vue项目打包发布线上环境

说明 发现一些朋友在群里询问如何线上发布vue项目. 从而暴露出来很多有意思的问题. 所以这篇博文简单介绍一下vue项目线上发布的情况. 本地环境 mac os node 10.16 vue 2.6 vue-cli 4.0 线上环境 centOS6 node 10.16 nginx vue是最近很火的前端框架, 所以它依赖的是浏览器,及我们可以从浏览器定位到你服务器nginx,然后nginx把指定的静态资源转发出来,最后我们在浏览器渲染看到 不管你的服务器是iis,apache还是nginx 只要http可以定位到服务器的静态资源即可. 很多人会有问号? 那为什么我在开发的时候用node命令

推荐一个极简社会化分享插件basicShare

basicShare 推荐一款极简的分享插件 之前用过百度分享,后来博客切换https服务后, 百度分享插件加载报错, 再加上目前主流的社会化分享目的地也就是 微信,微博, 或许是80后的我真的out了, 这个插件基本满足我的需要 极致简洁 UI效果 截图展示效果有点大.... 看看实际效果: 分享 站点没有下载icon,所以前面的分享icon变成了方框□ css .basicShareBtn { cursor: pointer; background-color: #dff0d8; border-color: #d6e9c6; color: green; font-size: 1

免费申请SSL证书 - 站点从http升级到https

前言 现在https协议以及成为站点标配, 前面写过一篇关 http跳转https服务的博客, 有些人询问如何申请SSL证书. https优点 提升搜索排名 实现网站HTTPS化,加密用户与网站间的交互访问,强化网站用户侧可信展示程度,防劫持、防篡改、防监听. 采用Https加密的网站在搜索引擎显示结果中的排名将会更高,有利于提升网站的搜索靠前及站点可信度. 申请SSL证书 一般的云服务器厂商都支持购买证书, 我们今天说的是在阿里云免费申请SSL证书. 阿里云SSL证书品牌有 GeoTrust Symantec (赛门铁克) GMO GlobalSign CFCA 我们选择个人免费类型

vscode 高效率插件koroFileHeader注释辅助和GitLens代码追踪

前言 vscode优势强劲,让各种技术栈同学爱不释手,不仅仅是IDE足够优秀,而且他的生态也非常丰富,各种各样的插件让你武装到牙齿. 今天推荐的2款插件本人都在用. koroFileHeader 文件头部加注释 光标处添加函数注释 文件头部加注释 文件头部注释在你创建文件自动添加, 如果是老文件,保存时自动添加更新记录. /* * @Author: zhangzhi * @Date: 2019-07-11 13:40:28 * @LastEditTime: 07-11 17:15:57 * @LastEditors: zhangzhi * @Description: In User Set

position Fixed on Scroll 相对定位时内容超出范围出现滚动条

之前写过一篇 关于css相对定位不跟随滚动条移动点击查看. 正如我的博客内容页右侧目录的效果. 垂直滚动内容时,右侧目录始终定位在右上角不跟随滚动条. 但是, 当我的目录足够长,因为它不跟随滚动条垂直移动, 导致超出屏幕的部分无法看到. 右侧目录相对定位 'position': 'fixed', 'top': 25px, 'width': 400px top 25px 是因为我的博客顶部菜单高度25px,所以为了不让菜单遮挡右侧目录,所以距离顶部25px 但是页面初始化后,我们并不想直接让目录相对定位到右上角, 因为右上角还有需要展示的模块, 我们更希望是滚动条滚动到目录模块时,这个模块始

使用Electron打造跨平台桌面应用

前言 早期桌面应用的开发主要借助原生 C/C++ API 进行,由于需要反复经历编译过程,且无法分离界面 UI 与业务代码,开发调试极为不便。后期出现的 QT 和 WPF 在一定程度上解决了界面代码分离和跨平台的问题,却依然无法避免较长时间的编译过程。近几年伴随互联网行业的迅猛发展,尤其是 NodeJS、Chromium 这类基于 W3C 标准开源应用的不断涌现,原生代码与 Web 浏览器开发逐步走向融合,Electron 正是在这种背景下诞生的。 electron Electron 是由 Github 开发,通过将Chromium和NodeJS整合为一个运行时环境,实现使用 HTML、CS

什么是electron - javascript,html和CSS 构建跨平台桌面应用

开源地址 https://github.com/electron/electron 关于Electron Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库。 Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Mac,Windows和Linux系统下的应用来实现这一目的。 核心团队和贡献者 Electron由Github上的一支团队和一群活跃的贡献者维护。 有些贡献者是独立开发者,有些则在用Electron构建应用的大型公司里工作。 版本 Electron的版本发布很频繁。 每当Chro

vscode markdownlint插件让你的markdown更加规范 -- Rules规则提示信息

前言 我们在书写代码的时候, 经常会用到eslint来约束代码规范, 这样团队开发或者后期维护都省了很多烦恼. markdown书写时一样有这样的问题, 那么我们如何来约束markdown的书写规范呢. 今天介绍一款 vscode 的插件 markdownlint https://github.com/DavidAnson/markdownlint vscode 直接搜索安装插件 markdownlint 当你在vscode中书写markdown文本时,不符合规范的内容就会有黄色波浪线来提示及时修正. 语法规范提示内容 MD001 - Heading levels should only i

brew install时一直卡在Updating怎么办

前言 当你通过brew安装软件的时候, 发现一只卡在Updating Updating Homebrew... 这个时候有俩种办法来应对 找国内的源Updating Homebrew brew install 时不要 update 切换国内的源 //替换brew源 cd "$(brew --repo)" git remote set-url origin https://mirrors.ustc.edu.cn/brew.git //替换homebrew-core.git cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core" gi

陌生域名解析到服务器ip - 这种异常流量对你的站点不一定是好事

前言 当你在百度统计/google统计平台发偶然发现一些关键词来源的站点和自己站点一点不相关时. 这时你要注意了,可能你的内容正在养着别人的域名. 如果你点击这些异常站点,打开的原来是你自己的站. 偶尔你也会收到云服务器平台发来的通知邮件: 大概是说解析到你服务器上的 xxx.com 域名, 违反了国家有关法规,请您尽快处理! 处理方式: 1.停止域名解析 ,完成域名备案后可重新恢复解析; 停止网站服务, 完成备案后可重新开启业务; 为什么有人要怎么做 陌生人把自己的域名解析到你的 IP ,就相当于原样复制了一个内容丰富的站点,这个域名被搜索引擎收录后,就能够短时间内得到和你的站点相同

node.js Express 框架下支持跨域服务

前言 由于现在的项目都流行前后端分离, 导致后端部署服务和前端一定不会解析到一个服务上, 这样面临的就是跨域请求. 什么情况下会出现跨域请求点击查看这篇博文介绍. 解决跨域的方法 nginx设置跨域请求头点击查看 服务端代码解决跨域 今天我们介绍后者,服务器端如何解决跨域. Express框架下设置跨域请求 cors安装包 自己定义中间件 cors安装包 npm install cors --save 使用 const cors = require('cors'); server.use(cors()); 自定义中间件 项目 middlewares 文件夹下创建 cors.js m

nginx代理node.js服务器http路由强制跳转https

nginx反向代理node.js服务器 我们服务器上node.js部署的服务通常会用 pm2 或者 forever 等工具接管, 然后nginx反向代理对应node.js服务所绑定的端口. server { listen 80; server_name yijiebuyi.com; access_log **这里是log日志目录** main; client_max_body_size 50m; location / { root html; exp

remarkable搭配markdown-toc自动生成博文目录

前段时间写过一篇关于showdown和showdown-toc插件自动生成目录的博客 ⬅️点击查看 为什么要改进 showdown-toc作为专门为showdown开发的 toc 插件,搭配使用都非常方便 安装showdown ,showdown-toc toc插件集成到showdown代码中 const Showdown = require('showdown'); const showdownToc = require('showdown-toc'); const showdownHighlight = require("showdown-highlight"); const to

markdown编辑器如何自动生成目录 showdown toc插件的使用

markdown如何转化成html markdown 文本转化成 html 成熟的工具有不少, node 开源库中有 markdown-it showdown markdown-to-html marked markdown 上面的工具各有优势,自行google开源地址,找到一款最适合自己的. 本人博客一直是markdown编辑器撰写, 然后,一直再琢磨如何通过标题来自动生成内容目录, 造轮子的事情还是留给大牛们, 我们能把轮子使用好也是对大牛们的敬仰和支持. markdown-it 介绍 开源地址: https://github.com/markdown-it/markdown-it

Cannot load from mysql.proc.The table is probably corrupted

上次推荐了数据库管理工具 DataGrip 今天在连接线上一个数据库的时候,直接报错. "Cannot load from mysql.proc.The table is probably corrupted" 之前在使用 Navicat 连接数据库时并没有发现此问题. 此问题产生的原因: LINUX下将mysql从5.1升级至5.5后,存储过程不能用了. mysql.proc升级时有个字段没有升级成功. 在5.1中mysql.proc表的comment字段是varchar(64): 但在5.5中应该是text: comment text CHARACTER SET

javascript 跨域的几种情况

JavaScript 中的跨域问题 http://yijiebuyi.com/A.js http://yijiebuyi.com/B.js 上面情况在同一域名下,不同资源文件 [允许跨域] http://yijiebuyi.com/blog/A.js http://yijiebuyi.com/jobs/B.js 上面情况在同一域名下,不同资源目录下的文件 [允许跨域] http://yijiebuyi.com/A.js http://yijiebuyi.com:1234/B.js 上面情况在同一域名下,不同端口 [不允许跨域] http://yijiebuyi.co

[投稿] 北京 海淀区 招聘 高级 node.js 开发工程师

联系站长免费投稿发布招聘信息 职责 负责公司两大平台智课网(smartstudy.com)和极智批改网(smartpigai.com)功能开发、 BUG修复及日常维护,依据公司产品设计完成产品功能模块的编程开发。 职位 node.js 高级开发工程师 学历 本科及以上 坐标 北京 - 海淀区 - 交通大学 - 上园村3号北交大知行大厦2层 要求 1、计算机相关专业,本科及以上学历; 2、熟悉nodejs相关开发框架,理解异步编程模式; 3、熟悉css, html5; 4、熟悉linux/mac系统; 5、熟练掌握MySQL数据库,配置管理等操作; 6、熟悉常用的数据结构和算法,

sails modules 模型自带的方法介绍

前面一系列介绍 Sails 框架学习 今天和大家分享 Sails 框架下模型自带的方法 1 . create(), update(), destroy(), find(), findOne(), destroy(), findOrCreate() count(), create() 创建记录 TestUser.create({name:'yijiebuy', email:'admin@yijiebuyi.com', gender:'male', age: '30'}, function(err, model){ }); 创建一条新纪录后,回调函数

node.js 下 sails orm框架 WaterLine 生命周期介绍

上一篇是关于 sails 定义模型models 属性字段定义类型 这一篇和大家分享关于 sails 的 orm框架 WaterLine 在与数据库操作过程中的生命周期控制. 生命周期 WaterLine 在执行过程中的生命周期可以简单的理解为: 调用前干什么 调用中..... 调用后干什么 具体有哪些操作会执行上面的生命周期 创建 create 创建记录时生命周期依次执行下面几个步骤: 验证模型数据之前.. 验证模型数据之后.. 创建记录之前.. 创建记录之后.. beforeValidate: fn(values, callback) afterValidate: fn(values

sails 框架下 Waterline ORM 常用查询方法

之前有一篇简单介绍了 Sails下orm框架 waterline Waterline 常用的查询方法 find 条件查询 事例: models.user.find().exec(function(err, models) { if(err) return res.json({ err: err }, 500); }); 上面事例的 find 方法无参数,相当于全表查询,最后执行 exec 方法拿到数据. 现在我们来看下 find 方法可以接受哪些参数呢. find 方法可以接收 3类参数: 过滤条件 where 查询条数限制 skip 和 limit 排序条件 so

sails 框架下的 orm 实现 - Waterline

上一篇介绍了 使用sails框架快速搭建项目 今天和大家分享 sails 另外一个重要的功能模块: sails的ORM实现 什么是ORM Java 中的 Hibernate 框架的一个重要功能便是将数据库中的数据与 Java 中的对象进行映射,被称为 ORM (Object Relational Mapping), Node.js 里常用的 Mongoose ,便是将 MongoDB 的文档,映射为 JavaScript 的对象, 而 Waterline 可以看做是一个支持多种数据库的 Mongoose ,使得可以用一样的代码来实现对多种数据库的操作,无论是关系数据库还是文档数据库,都可

微信第三方活动 关注微信公众号才能参与

#产品要求:必须先关注公众号才能参与活动 ###上面需求涉及到的几个点: 1.access_token中继服务 2.第三方页面授权 3.获取微信用户信息 前面有一篇 node.js定时获取access_token 那么根据此博文我们可以解决 access_token 中继服务的创建 第三方页面授权 前提:必须微信服务号 且 第三方站点域名设置为微信管理后台安全域 获取微信用户信息 前提:微信管理后台开通开发者模式,且微信回调接口调试无误. 如何在页面授权时判断用户是否关注 首先拉取当前公众号下所有关注用户 (存储用户 openid ) 然后根据存储的所有用户openid 去获取

node.js 微信开发 提交菜单

前面连续分享2篇关于微信开发的文章. node.js 定时获取 access_token 使用 wechat 开发微信回调接口 今天分享 node.js 开发微信菜单 前提: 1.首先是切换到了开发者模式 2.微信管理后台已经授权自定义菜单,如下图例是没办法提交菜单的 当你的微信从编辑模式切换到开发者模式时, 之前你手动定义的关键词回复, 手动创建的菜单全部失效. 微信自定义菜单 说白了非常简单. 微信自定义菜单就是一次 POST 请求. 请求接口: https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TO

node.js 下使用 wechat 开发微信接口

node.js 开发微信系列二 wechat 开发微信回调接口 上一篇我们介绍了 node.js下定时获取access_token 这里可能有个疑问,node.js 开发微信回调接口和定时获取 access_token 有关系吗? 其实没有必然的关系,通过微信回调接口我们可以方便的获取到交互者的 openid 但是,如果你想根据 openid 获取当前交互者的用户信息时,就必须要 access_token 了. 今天我们只谈 wechat 如何使用,获取用户详情在以后的博文中介绍. wechat 微信公共平台消息接口服务中间件 github地址: https://github.com/

node.js 微信开发 定时获取access_token

什么是access_token access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效 [来自微信文档] 当你的多个微信开发相关服务并存时,多个服务各自去获取 access_token ,最后导致其中一些服务会不能正常访问. 所以这种情况下,应该设置一个获取 access_token 的中控服务器. 因为 access_token 的有效期为 2个小时,

App质量管理优化方案 - 团队协作,流程控制

2016年5月27日,有幸被邀请参与云测主办的App质量管理优化方案 今天准备临时整理一下,分享出来 针对App开发过程中质量管理优化,一介布衣是以一个开发者的视角去看待整个流程,力求在需求开发,评审,研发,测试,发版等各个环节去控制自己的节奏,尽量避免在各团队衔接或者流程控制上影响app质量. #团队目标 如何在规定时间内开发出符合质量要求的产品 代码质量把关 代码review 作为一种纯手工创造性劳动,每个工程师去 review 一下自己的代码,并不是"秀",起码对方可以知道对方在干什么,而且还可以用自己的思维模式去判断对方的代码实现是不是最优,有没有改进的

mongodb 创建用户 mongoose 指定用户连接数据库

说实话,之前玩 mongodb 都是裸奔,都不需要用户名和密码直接连接 mongodb. 但是,正在在使用 mongodb 来开发的时候,还是要设置一个专属的账号,密码来连接数据库. 如何在mongodb 中创建一个用户 Mac下使用 brew 安装mongodb 请点击左侧链接打开. shell 下连接 mongodb ➜ /Users/zhangzhi >mongo MongoDB shell version: 3.2.0 connecting to: test 默认连接到 test 数据库. 切换数据库到 admin > show databases admi

centOS 下搭建 phpmyAdmin 服务

很久没来了,最近太忙(当然是借口~~) 今天和大家分享如何安装使用 phpMyAdmin 服务来管理mysql数据库. 首先你需要安装mysql (废话) yum -y install mysql 下载 phpMyAdmin 比如 我们下载了 phpMyAdmin-4.0.4.1-all-languages.zip [root@mail ~]# unzip phpMyAdmin-4.0.4.1-all-languages.zip [root@mail ~]# mv phpMyAdmin-4.0.4.1-all-languages /var/www/html/ [root@mail ~

markdown基本语法介绍

Markdown是一种轻量级标记语言,创始人为約翰·格魯伯(英語:John Gruber)。 它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。 这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。[维基百科] markdown可以让你专心写作而摆脱排版的困扰. 一些常用语法要花几分钟时间来记住. 标题 一个#表示一级标题, 几个#号对应表示几级标题, 最多支持六级标题. 注:标准语法一般在#后跟个空格再写文字 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 效果: 一级标题

sed 按日期过滤 nginx log 日志

针对 Linux 系统下 nginx 访问日志查询. 我们常常会直接上服务器使用 cat ,head , tail 等命令来查看. 但是面对几个G ,甚至几十个G 的log日志文件时,你想定位到多少行到多少行,谈何容易! 所以,今天和大家分享一个按日期提取 log 日志的方法. sed 命令简介 sed全名叫stream editor,流编辑器,用程序的方式来编辑文本,基本上就是玩正则模式匹配,相当的hacker. sed 参数简介 -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过

JavaScript 代码规范与约束

在开发过程中,团队代码风格统一,会让我妈避免不必要的错误和低级 Bug、控制代码质量,这样我们最好会预定一套编码规范. 检验JavaScript编码规范的工具有哪些? jslint jshint ESLint 下面简单看下这3个检验工具之间的差别: jslint jslint 的作者是 Douglas Crockford(《JavaScript: The Good Parts》的作者)。 Douglas Crockford 制订了一套 JavaScript 编码规则, JSLint 通过检查和分析 JavaScript 代码, 将任何违反规则的代码警告给开发者, 且无法通过配置关闭一

npm 不加sudo 执行失败

随笔记录一个小问题, npm 安装开源包的时候,你可能碰到这样的情况,无写入权限. ***必须加上 sudo *** 才能执行成功. 无 sudo ➜ /Users/zhangzhi >npm install -g jslint npm ERR! tar.unpack untar error /Users/zhangzhi/.npm/jslint/0.9.6/package.tgz npm ERR! Darwin 15.3.0 npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "jsli

gitlab 如何验证安装服务是否正确启动运行

gitlab 安装完以后,总是会多多少少报出一些小问题. 之前有一篇关于 如何安装 gitlab 的文章 linux 上通过gitlab 搭建自己的git服务器 今天简要和大家分享下安装 gitlab 后,如何查看服务是否正常启动运行. #如何排查 如果是 Gitlab 3.1 以后的版本 sudo -u gitlab -H bundle exec rake gitlab:app:status RAILS_ENV=production 运行上面指令查看各项指标,服务是否正常启动,文件读写权限等. 如果是 Gitlab 4.0 以后的版本 sudo -u gitlab -H bu

node.js Sails 学习文档 model 篇

sails安装 npm install -g sails sails创建新项目 sails new test sails目录结构 test api controllers(控制器相关,业务逻辑) models(模块开发) policies(用于路由过滤) responses(定制所需的响应:如404 res.notFound()) services(定制一些常用的工具类–全局的) assets(静态资源文件) images js styles templates favicon.ico config(整个

centOS6.5 快速安装部署 gitLab

在程序开发过程中 git 已经成为最受欢迎的代码托管工具,从此工具上衍生出来了大名鼎鼎的开源平台 github . 它给我们代码管理带来方便快捷,但是在 github 上,只有开源的公开项目才可以免费试用,如果公司的私有项目,必须付费购买,而且价格还不低.所以今天这篇文章和大家分享下在 centOS 6.5 环境下,傻瓜式,简洁快速部署安装 gitlab 服务. 什么是gitlab GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注

Node.js 中实现的ES6 新特性

ES6 的发布,给 JavaScript 开发带来了很多实实在在的特性,那么对于 node.js 的开发者而言,V8对于ES6新特性的支持有哪些? 如何查看node 的新特性 process.versions ➜ /Users/zhangzhi >node process.versions { http_parser: '2.5.0', node: '4.2.4', v8: '4.5.103.35', uv: '1.7.5', zlib: '1.2.8', ares: '1.10.1-DEV', icu: '56.1', modules: '4

通过 pm2 部署 node.js 项目

我们如何用 pm2 把 node.js项目 部署到服务器 安装 pm2 全局安装 ➜ /Users/zhangzhi >sudo npm install -g pm2 初始化 pm2 配置文件 ➜ /Users/zhangzhi >pm2 ecosystem ------------- Looking for a complete monitoring and management tool for PM2? Check out: _

ES6 新增了哪些新特性 (二)

关于 ES6规范及新特性 对象字面量申明增强 ES6 之前,申明对象字面量方式其实就是直接定义一个json对象.存在的仅仅是对象的属性和值. ES6 之后,对象字面量被扩展支持直接设置原型, 简洁属性赋值和方法, 超类调用, 这也让对象字面量和类声明的关系更密切,并让基于对象的设计更便利 ES6之前: var obj = { __proto__: theProtoObj, // 下面的写法不会设置内部原型 '__proto__': theProtoObj, // 方法 toString() { // 调用父对象的方法 return "d "

angular.js 中 父级和 子集 controller 之间的通讯

在同个 angular.js 应用的控制器之间进行通信可以有很多种不同的方式,本文主要讲两种: 基于scope继承的方式 基于event传播的方式 基于scope继承的方式 最简单的让控制器之间进行通信的方法是通过scope的继承。假设有两个控制器Parent、Child,Child 在 Parent 内,那Child 可以称为子控制器,它将继承父控制器Parent的scope。这样,Child就可以访问到Parent的scope中的所有函数和变量了。 需要注意的是,由于scope的继承也是基于Js的原型继承,如果变量是基本类型的,那在Child中的修改(写),有可能会导致Parent中的

HTML5 video 元素及获取视频播放事件

Html5 的扩展极大的方便了web开发. 比如视频播放,在Html5 之前,全部依赖 flash / 银光 这样的插件. video 元素 Html5 的 video 元素扩展出来非常多的方法,属性,事件 等. 我们可以直接在此控件上播放,暂停 等操作. 现在,Safari 3以上、Firefox 4以上、Opera 10以上,以及Chrome 3.0以上的浏览器都实现了对video元素和audio元素的支持 表现形式: <video widht="500" height="300" src="http://wwww.devdo.net/demo/test.mp4>

node.js 单元测试 Unit Test 及 程序持续集成 CI 工具

JavaScript 单元测试、更因其执行环境复杂无比、自动化门槛超高. 目前 JavaScript 越来越复杂庞大,其实更需要单元测试来确保品质. 但是由于 PhantomJS、Travis CI 等工具… 写 JavaScript 单元测试变得轻松许多. 今天来聊一下关于 javascript 单元测试 Unit Test 及 CI 持续集成工具. Unit Test 单元测试 我们常写一些工具类的 JavaScript Function、甚至包装成组件、以方便未来重复使用. 单元测试 (Unit Test) 是另外一份代码、用来检查这些代码的正确性. 例如过去我们得替自己撰写 t

如何把别人项目代码修改后 提交到github

首先你需要了解基本的 git相关知识 如果你从 github 上clone了别人的代码,本地做了一些修改后,直接提交可能会遇到一些问题,首先需要你输入用户名,接着输入密码,最后返回错误提示信息. 试想一下,如果你可以把 clone 下来的代码随意修改完后,还能随意提交到github服务器,那整个开源生态可能要彻底乱为一团. 所以不让你提交就对了. 那如何把 clone 后修改的代码提交到 github 呢? github上 不是有个fork么, 好,那么给别人的项目提交代码的方式就有了,先fork下别人的代码,于是你的github上就出现了同名的项目,这个项目就属于你自己了

[转] github上 fork + Pull Request 开发模式

4.1. Fork + Pull模式 参与GitHub中的项目开发,最常用和推荐的首选方式是“Fork + Pull”模式。在“Fork + Pull”模式下,项目参与者不必向项目创建者申请提交权限,而是在自己的托管空间下建立项目的派生(Fork)。 如果一个开源项目派生出另外的项目,通常意味着项目的分裂和开发团队的削弱,而GitHub中的项目派生则不会,而且正好相反,GitHub中的项目派生是项目壮大的体现。所有的派生项目都会有链接指向原始项目,派生项目没有独立的缺陷追踪系统(ISSUE),而是必须利用创建者本人的项目中的缺陷追踪系统。至于在派生项目中创建的提交,可以非常方便地利用GitH

用Gitlab 在linux 上搭建自己的 git 服务器

如何在 linux 上使用 gitlab 搭建自己的 git 服务器 gitlab 虽然 GitWeb 相当简单。 但如果你正在寻找一个更现代,功能更全的 Git 服务器,这里有几个开源的解决方案可供你选择安装。 因为 GitLab 是其中最出名的一个,我们将它作为示例并讨论它的安装和使用。 这比 GitWeb 要复杂的多并且需要更多的维护,但它的确是一个功能更全的选择。 安装 GitLab 是一个数据库支持的 web 应用,所以相比于其他 git 服务器,它的安装过程涉及到更多的东西。 幸运的是,这个过程有非常详细的文档说明和支持。 这里有一些可参考的方法帮你安装 GitLab 。 为

React 学习 JSX语法与原生HTML

JSX 可以看作JavaScript的拓展,看起来有点像XML。 使用React,可以进行JSX语法到JavaScript的转换。 为什么使用JSX 使用React,不一定非要使用JSX语法,可以使用原生的JS进行开发。但是React作者强烈建议我们使用JSX,因为JSX在定义类似HTML这种树形结构时,十分的简单明了。简明的代码结构更利于开发和维护。 XML有着开闭标签,在构建复杂的树形结构时,比函数调用和对象字面量更易读。看个直接的对比: //使用JSX React.render( <div> <div>

[随笔] http-server 快速创建node.js 静态服务器

说到node.js 创建服务器,首先想到 express 之前和大家分享过 关于http-server快速创建node服务 http-server 首先需要 全局安装 http-server npm install -g http-server http-server 启动 http-server -a 127.0.0.1 -p 7070 上面的一句命令启动了一个node.js 的静态服务器. 监听本地 7070 端口. 静态目录就是当前运行 命令所在的目录 如果你的当前项目中存在 public 文件夹,那么默认静态目录会指定到 public 如果没有 public

m3u8 跨平台 全兼容 移动 web在线视频 播放器

什么是m3u m3u是一个纯文本文件,虽然我们平时看到播放器首先加载了此文件,但是它并不是一个音频文件。 播放器并不是播放它,而是根据它的记录找到网络地址进行在线播放 什么是m3u8 m3u8 是在 m3u 格式下扩展出来的, 可以播流或者点播形式,目的是实现时实性及保密性它会不让你获取它的视频所在地址 浏览器使用的是 m3u8 文件。 m3u8 跟音频列表格式 m3u 很像,可以简单的认为 m3u8 就是包含多个 ts 文件的播放列表。 播放器按顺序逐个播放,全部放完再请求一下 m3u8 文件,获得包含最新 ts 文件的播放列表继续播,周而复始。 整个直播过程就是依靠一个不断更新

NPM如何发布node模块到社区

如何把自己写的 node.js 模块发布到 npm 开源社区 有下面几个前提条件: 你需要是 npm 社区注册的会员 如果你还没有,点击下面的链接注册 https://www.npmjs.com/ 你的开发环境需要 安装node.js 和 npm 创建repository 接下来我们需要创建module所需的repository,默认你拥有一个github账号(如果没有自行解决),这个repository用来托管我们module的代码,并方便用户报告bug,最重要的是可以让其他开发者向module贡献代码,这也是乐趣所在。 初始化package.json 接下来我们创建pa

pormise Q 使用文档简单描述

关于 promise 介绍和使用方法 请点击浏览其他博客. 今天分享的是针对 Q 开源包 api 的简单白话版本. promise.then(onFulfilled, onRejected, onProgress) then 回调接收 3个参数 ,分别是 成功时,失败时,持续读取状态时 前两个函数对应Promise的两种状态的回调函数fulfiled 和 rejected,第三个函数用于处理进度信息 promise.catch(onRejected) promise 遇到异常时执行 promise.then(undefined, onRejected) 当catc

promise Q.all 方法使用 及 spread 分散返回结果

promise 规范 点击查看此博文了解 promise规范让你解脱callback回调噩梦 promise 规范 开源包 Q 使用 点击查看博文 node.js下如何使用q 当promise 遇到 forEach 当你的一个业务需要执行多个异步方法时,最后统一返回 计数器法 顾名思义,用一个计数器来统计遍历/调用函数的次数,最后一次统一返回结果 假设我们有一个 实现 promise 规范的函数 test var test=function(a){ var defer=Q.defer(); defer.resolve(a+1); return defer.p

webpack 前端加载工具 让 浏览器端 javascript 执行 CommonJS规范

#为什么用webpack 如果我们 前端 javascript 能像 node.js 一样 require 去引用一个依赖包,那么前端的世界就不会像现在这么乱 现在为什么乱? 假设: a.js 依赖 b.js b.js 依赖 c.js c.js 依赖 d.js 如果在我们前端去引用这些依赖的时候,往往是这样的: <script src='a.js'></script> <script src='b.js'></script> <script src='c.js'></script> <scri

levelDB 数据操作接口 实现 promise 规范

什么是levelDB google 公司开发的一款 高性能KV型nosql数据库 ,你可以点击链接查看以前的介绍. node.js 下使用leveldb 请移步到这里. 但是之前的所有leveldb 操作接口都是基于 callback 回调.所以今天这篇就是分享下leveldb 数据接口实现promise 规范. 什么是promise promise 规范让javascript拜托callback回调 请移步到上面的博文查看 levelup levelup 是 leveldb 在node.js 上的实现开源包. github地址: https://github.com/L

javascript 动态加载按顺序加载运行 js

javascript 在浏览器中的加载是如何的? 如何你的 script 上没有任何 异步,阻塞 等标注: 浏览器会异步加载 javascript 文件,但是会按照引用文件中的书写顺序从上到下执行解析 javascript Defer属性标记 defer是html4.0中定义的,该属性使得浏览器能延迟脚本的执行,等文档完成解析完成后会按照他们在文档出现顺序再去下载解析。 也就是说defer属性的 script 就类似于将 script 放在body中的加载 效果一致. 但是defer属性在各个浏览器中支持程度有点不同,就是说,有的浏览器不完全支持. Async属性标注 as

react 组件生命周期 相关事件 方法

一般来说, React 组件是一个组件类由 extends Component 创建,并且提供一个 render 方法以及其他可选的生命周期函数、组件相关的事件或方法来定义。 一个简单的例子: import React, { Component } from 'react'; import { render } from 'react-dom'; class LikeButton extends Component { getInitialState() { return { liked: false }; } handleClick(e) { this.

React Native 学习 如何使用 style 样式

关于 React Native 学习 系列之如何定义css 样式 样式 React Native 不实现 CSS,而是依赖于 JavaScript 来为你的应用程序设置样式。这是一个有争议的决定,你可以阅读那些幻灯片,了解背后的基本原理。 声明样式 在 React Native 中声明样式的方法如下: var styles = StyleSheet.create({ base: { width: 38, height: 38, }, background: { backgroundColor: '#222222', }, active:

JSX 语法使用

利用 JSX 编写 DOM 结构,可以用原生的 HTML 标签,也可以直接像普通标签一样引用 React 组件。这两者约定通过大小写来区分,小写的字符串是 HTML 标签,大写开头的变量是 React 组件。 使用 HTML 标签: import React from 'react'; import { render } from 'react-dom'; var myDivElement = <div className="foo" />; render(myDivElement, document.getElementById('mountNode')); HTML 里

JSX 语法了解,我们为什么要学习它

传统的 MVC 是将模板放在其他地方,比如 script 标签或者模板文件,再在 JS 中通过某种手段引用模板。按照这种思路,想想多少次我们面对四处分散的模板片段不知所措?纠结模板引擎,纠结模板存放位置,纠结如何引用模板……下面是一段 React 官方的看法: We strongly believe that components are the right way to separate concerns rather than "templates" and "display logic." We think that markup and

MP4Box 借用HTML5 file api 本地读取 mp4 头信息

上一篇博文介绍了 html5 file api html5 提供了一套可以操作本地文件的 api ,但是有一定的局限性 必须由用户发起一个事件,所以你不要妄想着用户浏览器加载某个站点时,主动去读取他本地硬盘的资料....不可能的. 你的浏览器必须支持 html5 的 file api ,所以你也不要妄想去兼容IE6 用户发起行为比如: file upload 操作, 文件拖拽 等. 最近遇到一个需求 1.本地上传视频要保存到七牛服务器 2.提交切割视频任务 (大文件切割成多份) 3.返回视频截图 (按视频长短截取图片,供管理员审核视频内容) 七牛这边提供的有 j

HTML5读取 本地文件 File Api 使用

javascript 访问本地文件,已经成为可能. HTML5 file api 该规范主要定义了以下数据结构: File FileList Blob HTML5 访问文件和大部分语言是一致的,先获取文件句柄,然后调用文件访问接口,打开文件句柄,读取文件! 选择文件 首先检测一下当前浏览器是否支持File Api: function isSupportFileApi() { if(window.File && window.FileList && window.FileReader && window.Blob

node.js 下 promise 开源包 q 使用

promise 规范 可以让你从繁杂的 callback 中解脱出来. 如果我们在传统的 callback 中执行 5个 步骤,应该是下面这样的: setp1(function(res)){ setp2(function(res)){ setp3(function(res){ setp4(function(res){ setp5(function(res){ //终于执行完了 }); }); }); });

安装 nrm 自由切换 npm 源 国内镜像提升下载速度

之前写了一篇博文,关于如何把 npm 换到国内镜像员的博文,如下: 给电脑换 npm 国内镜像员 cnpm 为什么要换,你懂的! 今天给大家推荐一个 npm 开源包 nrm 基于 npm ,全局安装以后,你开源无缝快速切换几个源,提高下载速度,拒绝 loading ! 安装 npm install -g nrm 开源地址 https://github.com/Pana/nrm 使用 查看帮助 ➜ /Users/zhangzhi/code >nrm -h Usage: nrm [options] [command] Commands: l

[投稿] 深圳 南山区 高薪招聘 web 开发 攻城狮

坐标: 深圳 , 南山区 职位: web 开发工程师 岗位职责: 1、负责后台相关业务系统的设计和研发; 2、负责平台开放接口的设计和研发; 3、优化性能、维护现有系统的功能模块、扩展的基础框架; 任职要求: 1、本科学历以上,计算机或相关专业,2年以上工作项目经验;对javascript语言本身有较为深刻的理解。 2、 了解NodeJS及其相关框架 ,要求至少有1年以上的服务器端研发经验; 3、对数据结构和算法设计有一定的理解; 4、熟悉MongoDB或MySQL ,有较强的SQL编程、优化能力; 5、熟悉Linux,熟悉常用的Shell命令; 6、熟练使用Git代码管理工具及

node.js webkit 项目 开启node.js 桌面应用

为什么是 node.js 桌面应用 准确的说,这只是一个浏览器, node-webkit 项目是 chromium 和 node.js 搭建起来的本地运行时环境. 我们知道node.js 是javascript 在服务器端通过强大的 V8 引擎实现的. chromium 内置了 V8 引擎 所以 node-webkit 就这样结合起来了. 回到刚才的问题,为什么说是桌面应用 Node支持的与操作系统交互的功能,文件系统,网络 , 操作系统资源等, 以及Node之上的第三方库都可以在node-webkit中进行使用 所以他很像是一个桌面级应用,但是又有区别 和传统桌面应用不

node-webkit 项目中的 package.json 格式

node.js 既然是依靠google V8引擎驱动的,而chrome浏览器内置了V8,所以就诞生了 node-webkit 这样的项目. 它的执行宿主也是 浏览器,但是由于 node.js 的支持,我们可以轻松访问当前执行环境的OS ,这不就是PC 客户端程序的功能吗. 可见 node-webkit 项目利用了web UI 的优势,node.js 访问本地OS 的优势,从而用 javascript 实现了一个本地 客户端程序. 今天我们首先来看下一个简单的 node-webkit 项目中 package.json 中,各项所代表的意义. 实例: { "name": "Ser

mac 系统下 如何 彻底 删除 node.js

mac 系统下,如何彻底删除 node.js 网上找到一段脚本,可以彻底从你的mac上卸载掉node.js #!/bin/bash lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom \ | while read i; do sudo rm /usr/local/${i} done sudo rm -rf /usr/local/lib/node \ /usr/local/lib/node_modules \ /var/db/receipts/org.nodejs.* 首先创建一个 shell 文件 nano

JSX语法及学习

JSX 是 Javascript 代码里直接写XML的语法 JSX (Javascript XML syntax transform) 是使用XML语法编写Javascript的一套解析工具; X代表XML;也可以理解为扩展(eXtension),因为实现JSX功能本身就是使用Javascript; React建议使用JSX(但非必要) 实质上这只是一个语法糖,每一个XML标签都会被JSX转换工具转换成纯Javascript代码 React 官方推荐使用JSX, 当然你想直接使用纯Javascript代码写也是可以的,只是使用JSX,组件的结构和组件之间的关系看上去更加清晰

spawn exec方法 在 node.js child_process模块中的应用及区别 解决 Error: maxBuffer exceeded

node.js 的child_process模块中有两个方法spawn和exec,这两个方法都可以被用来开启一个子进程来执行其他的程序 既然两个方法的功能一样,那么究竟应该选择哪个方法。在本文中,我们将一起来探索spawn和我exec方法的不同之处,以便你在将来能够选择正确的方法 spawn child_process.spaen会返回一个带有stdout和stderr流的对象。你可以通过stdout流来读取子进程返回给Node.js的数据。stdout拥有’data’,’end’以及一般流所具有的事件。当你想要子进程返回大量数据给Node时,比如说图像处理,读取二进制数据等等,你

lodash underscore 对象数组排序 sortBy 小记

关于 lodash 和 underscore 的对比看这篇帖子 今天分享一个关于 lodash 的排序小方法 _.sortBy([1, 2, 3], function(n) { return Math.sin(n); }); 上面是官方示例 默认排序方式是正序排列 如果你的数组是一个对象组合 var arr= [ {"key":"key1","value":"value1","createTime":"124573216"}, {"key":"key2","value":"value2","createTime":"124593216"}, {"key":"key3","va

使用 rhc 工具连接 openshift 服务器

上一篇分享了, 如何使用 gem 在mac 环境下安装 rhc工具 这一篇是关于 如何使用 rhc 工具连接 openshift 服务器 如何使用 rhc 首先运行 rhc setup ➜ /Users/zhangzhi >rhc setup OpenShift Client Tools (RHC) Setup Wizard This wizard will help you upload your SSH keys, set your application namespace, and check that other programs like Git are pr

gem install rhc mac环境安装 openshift 连接工具 rhc

什么是 openShift openshift免费空间是Red Hat的平台即服务的云计算平台(PaaS) 支持Java,PHP,Python,Perl,Ruby以及MySQL Database,phpMyAdmin,MongoDB NoSQL Database,Cron 1.4等应用 OpenShift服务器采用的是AmazonEC2数据中心,月流量不限制,且支持绑定顶级域名 目前Red Hat的OpenShift 上可以免费创建三个app,提供512MB内存和1G 存储空间,OpenShift免费空间的稳定性是有目共睹的 该空间在2012年十大优秀免费空间中排名榜首,虽然

angular.js 官方应用 angular-phonecat 下载 运行 学习

angular-phonecat 是什么 它是google 官方开发的一个 angular.js入门学习web应用程序. 此web应用程序是介绍 android 手机的一个站点 从哪里下载 angular-phonecat git 直接下载克隆项目 git clone --depth=20 https://github.com/angular/angular-phonecat.git 可以学习什么? angular.js 框架的构建,测试,学习 后端 node.js 的搭配使用 如何让它运行起来 首先安装 node.js 运行的依赖包 npm install 其中有几个

redis 如何处理客户端连接

redis如何处理客户端连接 redis 连接建立 Redis Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。 然后为这个socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法 然后创建一个 readable 的文件事件用于监听这个客户端 socket 的数据发送 当客户端连接被初始化后, 会查看目前的连接数,然后对比配置好的 maxclients

http-server Angular.js 后端node服务首选 轻量级替换 Express 解决方案

http-server 是轻量级web服务 你可以轻松使用 http-server 替换 Express http-server 轻量级到什么地步 无需任何设置 也需不要你引用 轻松把当前所在目录架构成一个web服务 应用场景 angular.js 应用. 因为 angular.js本身作为一个单页面应用,首先需要加载这个单页面. 而这页面,一般是我们静态目录下的 index.hlmt 然后这个静态页面加载了 angular.js 前端框架 这时真正的路由控制已经掌握到了 angular.js 的手里 所以,你不需要像 Express 这样大的包来支持后端web服务

mac 下的 tree 命令 终端展示你的目录树结构

在 linux 下你可以很方便的使用 tree 命令来查看当前目录下的目录树机构. 但是在 mac 下,至少你需要安装一个工具. 开始,我从网上找到了一个shell 命令打印 tree 结构的方法. find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' 你可以在你的终端下,直接输入上面的shell 命令来查看当前目录的结构树 如何把它变成一个 命令,直接使用呢 我们想到了 alias 指定别名的方法 alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;___

chrome 浏览器 console 加入 jquery 测试调试

让你的浏览器 console 加入 query 方便测试调试. 这样我们去操作 dom 就像 javascript 文件中书写代码一样方便. 而且查找结果实时输出到 console 中 你可以很轻松的发现 jquery 选择器是不是有误 操作的结果是不是你想要的 如何实现 你需要在你的 console 中引入一段 jquery var jquery = document.createElement(‘script’); jquery.src = “http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js”; docu

angular.js 中的如何实现了双向绑定,$watch $digest $apply 帮我们同步视图和模型数据

Angular.js 中的特性,双向绑定. 多么神奇的功能,让视图的改变直接反应到数据中,数据的改变又实时的通知到视图,如何做到的? 这要归功于 scope 下面3个重要的方法: $watch $digest $apply 他们的区别是什么,我们来介绍下: $watch 这是一个监听 scope 上数据的监听器 方法说明: $scope.$watch('参数',function(newValue,oldValue){ //逻辑处理 }) 上面我们就是创建了一个监听器. '参数' 就是$scope对象下的一个对象(或者一个对象的属性),注意,这里是字符串形式. 假如你

git 如何获取指定 tag 代码

查看 关于git tag 操作方法 分享一个小知识点: git 如何获取指定 tag 代码 如果你本地有代码仓库 git tag //查看本地tag git checkout tag_name 如果你本地没有代码仓库 git clone git@xxx.xxx.xxx:/project_name.git git tag //查看本地tag 注意上面的git服务器地址,项目所在目录要替换 然后执行 checkout git checkout tag_name 如图: 你会看到提示: 当前处于一个“detached HEAD" 状态 ,每一个 tag 就是代

手机上 移动端浏览器如何不显示 pc 端的广告

前一段时间写了一篇博文, 关于微信内置浏览器不显示联盟广告 根据 window.navigator.userAgent 来判断当前浏览器是否是微信内置浏览器 window.navigator.userAgent=='micromessenger' 今天要分享的内容差不多,因为之前只考虑了微信浏览器的适配,回头在移动端浏览器打开站点,发现适配问题. 有的联盟会自动屏蔽移动端,但是有的联盟就不能屏蔽,所以只能手动去判断. 根据浏览器 userAgent 判断来源 安卓设备的的 userAgent 判断 navigator.userAgent.match(/Android/i) ip

nginx 命令行参数 启动 重启 重载 停止

今天和大家分享关于 nginx 的一些参数使用 首先,你应该安装了nginx CentOS 安装 nginx 这是很早之前的一篇博客,可以参考. 之前,我们如何去操作 nginx ##简单粗暴法 pkill -9 nginx kill -TERM 主进程号 kill -QUIT 主进程号 现在我们是不是要从容优雅的去面对这些操作了 nginx -s 参数 -s 参数包括下列功能: nginx -s stop – 快速的停止Nginx nginx -s quit – 优雅的停止Nginx nginx -s reload – 重载配置文件 nginx -s

css fixed 定位 让局部UI固定 不跟随滚动条移动

在国庆长假马上结束时,分享一篇关于 css定位的博文,收回你的玩心,开始工作了. css 中的定位是一个重点,也是难点,之前有一篇专门探讨 css中position定位的问题 达到的效果 如果你够细心的话,你会发现我的博客列表也和博文详情页右侧侧边栏有变化 之前侧边栏是跟随滚动条移动的,当右侧内容不足时,会看到一片空白,体验不好 所以我希望,当滚到到右侧无内容填补时,指点的模块能做一个固定定位,漂浮在顶部右侧,不再跟随滚动条移动 简单说,当右侧侧边栏有内容时,跟随滚动条上下移动 当滚动到右侧无内容时,最小边的模块一直漂浮在右上角,如下图 入群讨论 和 订阅公众号 模块始终

打造个性化 域名邮箱 推荐国内个人站长免费好用的的企业邮箱

不管网络发展到什么地步,Email 永远有它的一席之地,再强大的IM 也无法替代,作为 站长 你需要一个与众不同的域名邮箱. 当然前提是你需要有一个域名 其实大网络公司都是支持域名邮箱的 微软 google 网易 腾讯 阿里巴巴 新浪 搜狐 今天和大家分享国内2家比较好用的免费域名邮箱 腾讯 QQ邮箱看似很娱乐化,貌似确实也是这样的,但是不得不承认,在微信之前,QQ邮箱算是腾讯数一数二的优秀产品. 统一也是出自 张小龙 之手. 结合腾讯IM ,QQ 邮箱达到实时通讯功能,而且拦截,过滤做的也很不错 唯一的缺点: 邮件内容是过滤的,你懂的..... 腾讯企业邮箱也顺理成章的继

node.js 使用 UglifyJS2 高效率压缩 javascript 文件

UglifyJS2 这个工具使用很长时间了,但之前都是在 gulp 自动构建 时用到了 UglifyJS 算法进行压缩. 最近玩了一下 UglifyJS2 ,做了一个 在线压缩javascript工具 欢迎点击玩耍. 为什么要压缩 javascript 因为每个人开发者的书写习惯,定义参数习惯,已经使用习惯都不一样. 所以相同的功能出自不同开发者代码各异.这里牵扯到一个代码所占空间. 以前端为例来说明 大家通常都会认为,现在在网络时代,动不动就是10M光纤,拨号上网让人感觉是上个世纪的方式..... 说法是没有问题,但是,我们今天讨论的并不是终端下载速度. 而是前端压缩对服务器有何利

brew mac osx 上软件包管理工具

今天推荐 Mac OSX 下,方便高效的包管理工具 brew brew 的全名叫做 Homebrew 它的功能类似于 ubuntu 下同下 apt-get ,或者 Cent OS 下的 yum 等包管理工具. 我们可以很方便的 安装,更新,卸载软件 brew 的官网 http://brew.sh/index_zh-cn.html brew 安装 打开你的 mac 终端命令行工具,输入下面的脚本 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 因

博客新功能 在线工具 逐步上线,完善中

工欲善其事,必先利其器 所以逐渐 开发上线一些好玩的小工具 工具可以帮助我们完成很多事情,尤其是在线工具,不需要环境支持,不需要包的依赖,纯绿色,无公害 到今天为止,2个小工具上线,同时还专为为工具打造了一个聚合页 目前博客首页无入口,你可以点击下面链接进入 http://yijiebuyi.com/tools.html 在线生成二维码工具 支持二维码大小,前景色,背景色,长链接,多文字....等等 点击这里 在线生成二维码 欢迎玩耍,有想法,意见等可以进群讨论 --> 看右侧进群方式 回头还会专门开一篇博文讲述关于二维码生成 在线压缩 javascript 如果你的项目中

关于使用 Connect-Busboy 实现文件上传 优化说明

这篇博文完全上关于上一篇的优化 先看上一篇 node.js 在 Express4.0 框架使用 Connect-Busboy 实现文件上传 因为从上次博客改用 connect-busboy 来上传文件后,发现了明显的一个bug bug 说明 文件显示上传 100% ,然后预览的时候,偶尔会发现图片只能显示一部分 这种情况在 png 格式 图片尤其严重 昨天重新 review 代码,发现一个bug ,当然和 connect-busboy 一点关系都没有,而是涉及到流的处理过程. 这里把上一篇 blog 里贴出的上传代码在放上来分析一下 function upload(req, res

node.js 版本控制 nvm 和 n 使用 及 nvm 重启终端失效的解决方法

今天的话题包括2个部分 node.js 下使用 nvm 或者 n 来进行版本控制 nvm 安装node.js 版本后,重启终端 node , npm 环境变量失效 第一部分 用什么来管理 node.js 版本 首先应该欢呼庆祝一下 node.js 终于发布了有历史意义的正式版 1.0 ,虽然我们看到的是V4.0,其实他就是node.js 真正意义的 1.0, io.js 不负众望,完成了它的使命. 回头看这几年node.js 以及 io.js 的发展速度,各种版本的迭代发布,我们很有必要用一个 node.js 的版本管理工具来控制当前系统的 node.js 版本. 为什么

mac 窗口状态下 激活 tab 键

tab 选择让我们的操作更快捷,有些简单的界面选择,其实你不需要鼠标 但是你会发现 Mac 系统 下这个功能默认是不开启的 注意:这里说的是在系统 windos 窗口界面使用 tab ,并不是页面或者编辑文本环境 比如下面的这个使用场景 mac 默认方式我们只能用 鼠标,触摸板去选择. 其实你可以选择用 tab 键来操作,当然需要设置一下 系统 -> 偏好设置 -> 键盘 然后我们把左小角的 "所有控制" 选中即可 当你启用 tab 键的时候,默认的确认键就不是回车了,而是 空格确认 上图弹出选择框,默认 focu 到 关机 按钮 当你

CSS3 响应式布局 Media Queries 媒体查询学习

css3 响应式布局学习 响应式:就是根据不同设备,或者设备不同分辨率,动态给出对应的样式变化 响应不同的设备 涉及到 css 中的 Media Queries ,这个词组被译为 "媒体查询" Media Queries 用法如下: <link href="css/main.css" rel="stylesheet" type="text/css" media="screen" /> 或者另外一种引入css 文件的方法 <style type="text/css" media="screen"> @import url("css/sty

整理一些css 中关于 中文 英文 折行 省略 不折单词 等问题

记录规整一些 关于CSS 处理中文 /英文 折行/不折行 省略 等问题. 这些问题涉及到了几个css 属性,简单记录一下,以备以后碰到 涉及到控制上面提到的问题,必须注意一点,你的容器设定了固定的宽度 英文字母换行,只对英文字母起作用,如果是单词,可能一个单词被拦腰折断 word-break:break-all; word-break语法: word-break: normal(默认) | break-all | keep-all Firefox、Opera不能识别 normal: 依照亚洲语言和非亚洲语言的文本规则,允许在字内换行。 break-all: 该行为与亚洲语言的

node.js 下定制你的 config 配置文件

在任何一个项目中都缺少不了配置文件 具有下面的特点: 数据量不大,信息需要长期保存,容易维护 当然你也可以在数据库中建一张表,去存放这些信息,一点错都没有,但是,是不是有点牛刀杀鸡的感觉 今天和大家分享的是配置文件的定制,根据你的运行环境不同动态配置一张灵活的 config 配置文件. 之前的一篇博文 根据 ENV 环境变量不同加载不同的配置文件 这一篇可以说是上一篇的子章节,上一篇说的太笼统, 这一次针对一个点,然后铺开说一个功能 我的博客全部用绝对路径 为什么? 因为总有些人直接过来 copy 我的文章,然后不加出处,不署名,这是别人辛辛苦苦的劳动果实,作为一个I

二维码的容错率起到了什么作用!

前几天和大家分享了一篇 javascript生成二维码,实现微信跳转 里面提到了一个二维码的容错率,知道今天发现了一个bug ,又重新找了找关于javascript 生成二维码的资料.回头我会整理一下,提供微信端跳出内置浏览器的最佳方案 什么是容错率 顾名思义,就是容许犯错的概率 二维码的容错率 是指生成的二维码允许犯错吗? 不是! 二维码的容错率,是指你生成的二维码就算被遮挡了一部分,或者有一部分没有完全显示出来,当时用户通过各种各样品牌的手机都能扫描成功,这个被遮挡部分在全部的比值,就相当于一个容错率 所以二维码的容错率,跟贴切的叫法是,二维码的冗余度有多大. 什么是冗余度

node.js 利用 sitemap 为你的站点生成站点地图

node.js 下利用 sitemap 生成站点地图. 大致的工作就是,我们生成一份提供给搜索引擎的 Sitemap 之前你获取在网络上找过各种在线生成 sitemap 工具或者服务,使用起来却都不尽人意.有的收费,有的最大抓取2层url ,还有的最大链接数限制在500个. 所以今天和大家分享的是如何用 node.js 来为站点生成 sitemap 什么是sitemap 借用百科的一段话 Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的

javascript 中的 new Array() 和 var arr=[] 有何区别

javascript 中 new Array() 和 var arr=[ ] 创建数组到底有何不同? 今天就探讨一个 JavaScript 中很常见的问题. var arr=[] 这是一种字面量定义数组的方法 var arr=new Array() 这是调用数组构造函数生成的数组 上面的2种定义数组的方法到底一样不一样 目前我们大致的认同是下面这样的 用new 关键字去内存开辟一个存储地址比较耗资源,耗内存. 而字面量方式直接在内存开辟一个存储字段相对简单,不耗资源. 我们首先不去否定上面的结论对不对. 首先从功能上来说 var =arr=[] 和 var arr= new

javascript 关于Date 时间类型 处理方法

上一篇博客中和大家分享了关于 字符串转时间类型 这一篇顺便整理下 javascript 中 Date 类型的一些方法 var time = new Date(); var year=time.getYear(); //获取当前年份(2位) var year1=time.getFullYear(); //获取完整的年份(4位,2015-????) var moonth=time.getMonth(); //获取当前月份(0-11,0代表1月) time.getDate(); //获取当前日(

javascript 中的 Date 类型字符串如何转化为时间类型

javascript 中对于时间类型的处理 如何把日期字符串如“2015-09-19 09:48:46”转换为Date对象 第一种方法: 我们可以按下面的方法来拆分上面的时间字符串 var str="2015-09-19 09:48:46"; var strArray=str.split(" "); var strDate=strArray[0].split("-"); var strTime=strArray[1].split(":"); var time=new Date(strDate[0],(strDate[1]-parseInt(1)),strDate[2],strTime[0]

Redis 配置文件 redis.conf 项目详解

Redis.conf 配置文件详解 # [Redis](http://yijiebuyi.com/category/redis.html) 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # # 内存

如何预防 XSS 攻击

XSS攻击是什么 XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie、破坏页面结构、重定向到其它网站等。 XSS 攻击分为2种 非持久性的攻击 持久性攻击 非持久性攻击 顾名思义 只影响当前展示页面 大概类似下面这种情况 ========= 比如右侧你可以看到博客的搜索框, 搜索的关键词最后会在页面上方显示

关于 html4 和 html5 定义上的一些区别

关于Html5 的一些定义 及旧的Html 规定有何区别 html 头的定义 html4 及 以下版本 <!DOCTYPE HTML PUBLIC "-W3CDTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> html5 '` DOCTYPE 这个定义在Html 页面头部的参数告诉浏览器,你当前的内容是什么类型,需要如何渲染解析 那如果你把 html4 解析的页面定义成了 html5 个规范,会发生什么情况呢? 答案是 什么情况都没有 W3C标准已经像地球所有人

node.js 在 Express4.0 框架使用 Connect-Busboy 实现文件上传

node.js下四种post提交数据的方式 今天说分享的是其中一种,就是上传文件. Express 4.0 以后,将功能原子化,高内聚,低耦合,独立出了很多中间件 今天主要分享文件上传 对于connect-multiparty ,他是专门处理此类post数据相关的依赖包,也是博客之前使用的方式 github 官方地址: https://github.com/andrewrk/connect-multiparty 安装 npm install connect-multiparty 使用 var multipart = require('connect-multiparty')

透明遮罩层 垂直居中的div 内容不透明

因为没有新增 css 类别,所以关于css 的东西暂时归类到了 Html5 今天干活遇到的几个问题,下班前和大家分享 透明遮罩层 居中内容不透明 居中div显示内容 因为我的html5页面只在手机端展示,所以不考虑万恶的IE低版本浏览器 并且我把单独的css内容直接定义在html 标签里,这样你们看起来更加直观 透明遮罩层 <div id="nav_img_ios" style="display:none;height:100%; width:100%; position:fixed; _position:absolute; top:0; z-index:10

一介布衣博客今天开始支持 markdown 编辑

博客经过几次改版,但是阅读性一直不太好,让人读起来比较累,分不清主次. 所以周末尝试把之前的百度编辑器换成了 markdown 编辑器,希望在阅读性方面有提升. 博客的几处改动 因为之前的博客是html格式,现在是 markdown 格式,所以在首页提取缩略内容的功能去掉了. 首页标题字号调小了 列表页标题下方增加了博客分类 内容页的渲染为了兼容以前的老博客,既可以渲染 html 博文,也可以渲染 markdown 博客. 代码视图变动 function(){ console.log('欢迎光临一介布衣博客'); } 单行代码视图 alert('一介布衣'); 关于mar

javascript 生成二维码实现链接从微信内跳出

现在的二维码相当火,借着移动互联网的风口也快飞起来了.现在各种语言的各种开源包,基本都有对应的生成二维码的源码.但是今天我们分享的不是服务器生成二维码,而是前端页面如果用 javascript 来生成一个二维码.这种动态生成二维码的需求越来越多.如果都要依靠服务器端赖生成,第一:面临资源紧缺的状况,如果在大的并发环境,这种cpu密集型计算必定导致一个问题,就是请求排队,那就不用谈了.用户不会一直在傻傻的等你.第二:就算你顺利生成了二维码,还面临一个网络传输带宽的压力,虽然它很小很小,但是当在一个并发压力大的环境下,依然面临带宽被占的问题.这样说来,如果能在客户端生成二维码,貌似是最好的解决方案

incr.zsh 补全插件 让你在zsh 模式下全自动补全指令或目录

前面有几篇介绍了如何开启zsh终极装逼模式,如果你已经开启,请好好的装下去.今天这个插件会助你一臂之力,加油,骚年!今天说的这个东东看上去确实有尿性,不管我如何修饰都抵不过它的一张效果图.想要你的shell有这样的效果,首先满足下面的条件:1 你用 oh-my-zsh 来协助你完成 zsh 的配置2 你开启了 zsh3 你下载了这个 插件4 你把插件执行shell 写到了你的 .zshrc 配置文件中上面说到的 1,2 在之前的博文里面早,最上面其实我贴出来如何开启 zsh 的链接.(如果你没有鼠标的话,肯定点不开)今天就是分享下 3,4 提到的内容:如何下载这个插件:官网:http://mi

gulp 传参数 实现定制化执行任务

如果你想自动化构建一些东东,请使用 gulp ,还不明白什么是 gulp ,那么请用 google 百度一下 "什么是gulp"如果你不知道如何翻墙使用 google ,那么请离自动化构建远一点(最好披星戴月地赶快逃离IT圈)因为之前专门有一篇介绍了gulp ,是什么,能帮我们做什么,如何去做,请点击此博文查看:angular 系列三 gulp 代码构建工具简介所以上面博文提到的东西这里都不会再重复说明.今天和大家分享的是 如何使用 gulp 传输参数.我今天碰到一个应用场景:老项目A还在线上维护,新项目B已经着手在开发.这2套项目后端调用是一致的,唯独不同的地方是前端UI

[转]几个css 相关的黑科技

我就要当一次标题党了。这里的黑科技其实就是一些CSS中不怎么为人所知但在解决某些问题的时候很溜的属性。border-radius很多开发者估计都没有正确认识这个border-radius,因为基本上很多人都是这么用的:.box{border-radius:4px;}稍微高端一点的是这样的:.box{border-radius:4px6px6px4px;}然而,终极黑科技是这样用的:.box{border-radius:5px5px3px2px/5px5px1px3px;}对,它可以赋8个值,没见过?不着急,具体的解释是这样的:斜线前面的影响的是水平方向,斜线后面影响的是垂直方向,各个数字就分别

HTML5页面滑动到最底部触发内容加载 javascript实现

最近在做一个html5的小项目,虽然很小,但是考虑到用户网络制式,流量,甚至海外访问的速度优先保证.所以对于一些功能的实现不再考虑依赖任何第三方的包.今天和大家分享的是 html5 页面下拉到最底部时实现自动刷新加载新数据.当然,也不一定是html5下适用,web页面都适用.首先要清楚3个定义:文档高度这是整个页面的高度可视窗口高度这是你看到的浏览器可视屏幕高度滚动条滚动高度滚动条下滑过的高度所以, 当 文档高度 = 可视窗口高度 + 滚动条高度 时,滚动条正好到底.那我们就来定义三个不同的方法,分别获取上面3个高度值//文档高度 functiongetDocumentTop(){ varsc

javascript 实现html5 页面下拉刷新

使用html5 开发一个手机端页面如何能像app一样实现下拉刷新,或者上推刷新.我们试图用html5+css+javascript 来实现一下,没有用到任何第三方插件或者开源js包.先看下效果:这是微信内置浏览器打开后的效果,再看下从顶部按住下拉刷新的效果首先有一个目标div这个 div 用来监听 touchstart ,touchmove ,touchend 三个事件.这3个 事件分别表示 手指触摸屏幕开始, 手指在屏幕移动 , 手指触摸结束那么这个 目标div 一旦被监听后,你的手指放在此div内,就会触发上面的事件. 2. 当触发某个事件时,我们希望看到上面一个下拉的拉伸效果,并且提示

移动H5前端性能优化指南-[转]

移动H5前端性能优化指南概述1. PC优化手段在Mobile侧同样适用2. 在Mobile侧我们提出三秒种渲染完成首屏指标3. 基于第二点,首屏加载3秒完成或使用Loading4. 基于联通3G网络平均338KB/s(2.71Mb/s),所以首屏资源不应超过1014KB5. Mobile侧因手机配置原因,除加载外渲染速度也是优化重点6. 基于第五点,要合理处理代码减少渲染损耗7. 基于第二、第五点,所有影响首屏加载和渲染的代码应在处理逻辑中后置8. 加载完成后用户交互使用时也需注意性能优化指南[加载优化]加载过程是最为耗时的过程,可能会占到总耗时的80%时间,因此是优化的重点· 减少HTTP请

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

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

pandoc markdown 生成pdf文档

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

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

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

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

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

node.js 和 nginx 配合实现 gzip 压缩,让网站浏览更顺畅

node.js 开发的站点,如果你也是用了nginx实现反向代理.那么在服务端可以轻松实现 gzip 压缩,让站点浏览更顺畅.前提条件: node.js + nginx 反向代理node.js 需要做的工作:express 4.0以下版本:app.use(express.compress());//主要是这句 app.use(express.json()); app.use(express.urlencoded()); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookie

关于一介布衣博客适配pc端,移动端浏览器的一些细节分享

目前还处于人口红利期的移动互联网发展的大红大紫,不断侵蚀传统pc份额,所以做一个全终端自动适配的站点已经成了主流.我的博客也是因为之前对于移动浏览器兼容太差,有些朋友提意见说UI体验也不太好,百度m站的UI亮瞎双眼......所以决定换换UI,因为页面结构大变,已经做好了被搜索引擎惩罚的准备.但是移动端考虑到网络环境,抛开wifi不谈,4G普及率不高,3G应该目前移动端网名主流实用的网络制式,2.5G和2G的用户就悲剧了,站点再优化貌似对这部分人来说加载几十K,几百K甚至上几M都是 wait , wait , wait ,loading....所以3G用户在浏览加载过程中,能节省几百K,加载速

博客准备换套UI

过了一个清明节也没有闲下来,今天新的敏捷开发周期已经迭代开始了,今天晚上想换下博客的UI,明天开始更新博客,赶紧干活去了,祝各位好心情.UI 线下已经搞定,还在细化局部.2015.4.9 中午12点更新!此套UI将自动适应大部分设备,当然我没有全部测试,手机上体验还是不错的.到目前为止,一共换过4套UI每次换UI其实是有一定风险的,对于seo来说,最好一直用一套UI ,所以这段时间我要留意一下所有引擎收录数量及索引量.如果有一天搜索引擎里搜不到我的博客,也许就是被"拔毛了"但是按理说我只是html结构变化,一直都是勤勤恳恳的写内容,应该不会被搜索引擎拔毛.不过影响肯定是有的

node.js 如何继承 events 自定义事件及触发函数

events 是node.js的核心api ,几乎大部分node.js 的api都继承 events 类(javascript中没有类,也不存在继承,确切说是模拟类和继承,点击查看)比如我们常见的 http , stream ,fs .....等等.因为node.js的实现就是异步非阻塞io,通过事件轮询触发异步回调的机制,在单线程运行模式下,合理应用服务器资源才是制胜法宝,正是因为事件轮询才使得异步IO在高并发处理下游刃有余,所以大部分的包去继承 events 似乎合情合理.下面我们可以看一个常见的事件处理,但是我们用的时候似乎并没有当回事:varreq=http.request(param

angular 系列十 使用 bootstrap 快速创建博客模板

angular.js 系列不会断,但是中间会乱七八糟的插入一些知识点,距离上次的系列九已经太遥远.上次把路由映射模板,模板指定控制器简单演示了一下.今天我们其实就是把模板用bootstrap页面套一下,让它华丽转身.源码就不贴了,回头会吧 github的开源地址贴上.控制台 gulp 启动 ,自动装载blog/list 模板.blog/list 路由首先装载了 母版页 blog_layout.html (你看到的页头和页面右侧部分)最左侧对应一个ui-view="container" 装载 blog_list.html 模板 (你看到的左下侧部分)

node.js 一个路由2次 request

node.js 和其他服务器端编程语言有很大区别,语言上的特性优点已经在前面分享过,这里就不说了.与其他语言相比,还有一个区别,node.js 自身实现了一个服务器,而其他服务器端语言大部分要依赖Apach ,nginx ,IIS 等.node.js 可以用几句代码轻松实现:varhttp=require('http'); var webServer = function (req, res){  res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});  res.write('<html>&l

node.js 调试工具 node-inspector 简要说明

我们在接触客户端javascript的时候,调试利器就是firebug ,也是当年为何喜欢用上firefox 浏览器的主要动力,当然,后来 chrome 插件里也出现了firebug的身影.....但是服务器端开发语言node.js 一直以来调试不是特别方便,可能是之前被 virtual studio惯坏了,这种用 console.log() 去打印变量甚至回调数据实在是太蹩脚.当然,有一款很强大的IDE ,webstrom对node.js提供了最全面的支持,也可以轻松配置来实现调试,下回有必要和大家分享一次.今天要分享的是关于node-inspector 下调试node.js程序.第一步:n

angular.js 下如何动态插入删除dom节点

angular.js 是新一代web开发框架,它轻松在web前端实现了MVC模式,相比 jquery 模式,这种新玩意竟然不需要开发者直接去操作dom .作为前端开发而不去操作dom ,这简直是一个玩笑! 没错,确实是这样的.关于 angular.js 的详细说明及事例请在博客搜索 angular.js既然上面提到 angular.js 下无需用户直接操作dom ,而是在编译间断 dom 与 控制层model 实现了双向绑定,一方做出改变,另一方就会立即改变,那问题来了,我想插入一个文本框和按钮,并且文本框里数据要和控制层一个属性绑定,按钮要实现 ng-click 事件,如何做?传统实现方法,

angular 系列九 ui-router适配模板,模板指定controller控制器

前几篇博文简单说了下angular的视图,模型,控制器,ui-router等,但是一直没有串起来.查找目录所以今天这篇就是在以前的基础上,把客户端angular.js 负责的部分整体串起来演示一下.我们按照angular执行顺序来做前提准备:(1)Client 根目录下 index.html 首先加载angular.js 和 ui-router.js 文件<scriptsrc="http://cdn.bootcss.com/angular.js/1.3.8/angular.min.js"></script> <scriptsrc=".

angular 系列八 ui-router详细介绍及ngRoute工具区别

我们了解 angular.js 是一种富客户端单页面应用,所以要在一个页面呈现不同的视图,路由起到了至关重要的作用.angular.js 为我们封装好了一个路由工具ngRoute ,它是一种靠url改变去驱动视图.angularUI 也为我们封装了一个独立的路由模块 ui-router ,它是一种靠状态 state 来驱动视图.后者有什么优势:一个页面可以嵌套多个视图,多个视图去控制某一个视图等.ngRoute使用时需要ui中用ng-view指令指定 如:<div ng-view></div>url改变此区域会被刷新.首先要配置注册 ngRoutevar app = a

angular 系列七 ui-router路由控制器介绍

angularUI 在不断发展过程中已经被划分成了几个模块,你可以选择你需要的模块载入,我们今天要了解一下路由控制器 ui-router ,它就是angularUI划分出出来的一个独立模块.此模块只关注状态,在整个用户界面导航中,一个状态对应一个视图,开发者可以根据URL状态来组织控制界面UI渲染.这里和后端开发有一点点区别需要注意:后端: 以node.js使用express框架的web开发为例,当我们定位一个路由,对应的会去服务端请求相应资源,服务器端接收请求,解析路由,然后做一系列逻辑处理,最后指定一个视图返回客户端.url —> 路由 —> 逻辑处理 —> 替换视图 —

angular 系列六 Module类的介绍及模块化依赖

上一篇博客我们已经简单的在index.html 实现了一个控制器代码.后面的学习我们会遵循一个控制器管理一个视图,一个路由对应一个视图的单一原则,所以再不会将controller控制器代码直接写到 index.html 中.我们会应用到angular.js中强大的模块来开发,比如路由,服务,过滤器,指令等模块.所以这一篇博客很有必要把各个模块之间的依赖关系,定义,使用等问题陈述一下.那么angular.js 到底是如何加载启动起来的呢.<!DOCTYPEhtml> <htmlng-app="YIJIEBUYI"> <head> <s

angular 系列五 控制器controller的作用

我们在上一篇angular.js输出hello world .我们在view中给模型的一个参数name赋值 “hello world” .这是一种简单的赋值,我们可以在视图中通过 ng 指令(以ng-开头的指令)实现了简单的赋值,如果遇到复杂的逻辑运算操作,那么视图里是无法执行复杂操作的,这时控制器就派上用场了.简单讲:控制器 controller 就是实现视图和模型之间数据传递,方法调用,改变模型等一系列操作,他是javascript函数(也可以看做类或者类型)控制器有几点需要注意的地方:1.一个控制器最好只包含一个视图的业务逻辑.以后你会看到我们的目录结构Client/scripts/co

angular 系列四 初识angular.js hello world!

上一篇我们搭建了一个前端 angular.js 后端 node.js服务器的单页面应用,虽然目前服务端只有一个启动文件,但是后面的系列涉及到服务器端交互的时候会逐渐补充.我们整个系列的学习会去写一个简单blog雏形,如果有精力再完善美化.但是这篇还是要从HelloWorld开始学习.angular.js 文件加载我们选用 bootstrap中文网提供的一个cdn服务.http://www.bootcdn.cn/我们找到 1.3.8的angular.js cdn地址,引用到页面 index.html中http://cdn.bootcss.com/angular.js/1.3.8/angular.

angular 系列三 gulp 代码构建工具简介

为什么要把 gulp 的学习文章安装到这里,因为我们上一篇说到了创建一个angular.js项目框架,其中用 gulp 来构建代码.什么是 gulp ,我之前的博客介绍过 yoman项目构建工具 ,gulp 也是类似这样的工具,而且感觉比 yoman和 grunt等工具使用更加简单方便.我们在项目中使用 gulp 做什么?我们会用 gulp 定制几个任务,其中一个就是把controller中的控制器代码抽取出来,然后生成一个新的 app.js .这样的好处是不言而喻的,比如一个团队每个人负责几个控制器,如果我们不用项目管理工具来自动合并引用到文件的话,我们只能手动每个人去修改 index.ht

angular 系列二 搭框架-node.js后端,angular.js前端

angular.js学习系列为后续的学习,我们需要搭一个 angular.js 学习环境.服务器端 api 使用 node.js 提供客户端由 angular.js 来负责.然后整个框架中使用 glup 代码构建工具来处理一些任务,关于 glup 的使用会单独开一篇博客.参考上图,下面有文档描述说明,几个* 表示几级目录*Client 文件夹下都是前端部分. **index.html — 站点启动页面,如果你把angular.js理解成一个单页面应用,它就是那个单独的页面 **images — 放置图片**styles—放置样式**templates —放置视图模板**vender—放置

angular 系列一 简单介绍及准备工作

目录:angular.js 系列一之准备工作angular 系列二 搭框架-node.js后端,angular.js前端angular 系列三 gulp 代码构建工具简介angular 系列四 初识angular.js hello world!angular 系列五 控制器controller的作用angular 系列六 Module类的介绍及模块化依赖angular 系列七 ui-router路由控制器介绍angular 系列八 ui-router详细介绍及ngRoute工具区别angular 系列九 ui-router适配模板,模板指定controller控制器angular 系列十 使用

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

[转]四种常见的 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

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

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

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

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

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

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

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

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

高性能kv数据库levelDB

LevelDB是google公司开发出来的一款超高性能kv存储引擎,以其惊人的读性能和更加惊人的写性能在轻量级nosql数据库中鹤立鸡群,下面简单说下这个文件存储引擎。次存储引擎是google公司2位大神级工程师开发而成.Jeff Dean其人:http://research.google.com/people/jeff/index.html,Google大规模分布式平台Bigtable和MapReduce主要设计和实现者。Sanjay Ghemawat其人:http://research.google.com/people/sanjay/index.html,Google大规模分布式平台GF

jquery 常用小功能收集

在新窗口打开链接$(document).ready(function(){ //全部链接新页面打开 $('a[href^="http://"]').attr("target","_blank"); //部分链接新页面打开,比如class='menu'的链接 $('a[class='menu']').click(function(){ this.target="_blank"; }); });<a href="http://www.op

angular基础入门学习 迭代器

我们的应用现在有了一个搜索框。注意到页面上的手机列表随着用户在搜索框中的输入而变化。步骤2和步骤3之间最重要的不同在下面列出。你可以在GitHub里看到完整的差别。控制器我们对控制器不做任何修改。模板app/index.html<divclass="container-fluid"> <divclass="row-fluid"> <divclass="span2"> <!--Sidebarcontent-->       Search: <input ng-model="

linux内核 rename 命令批量修改名称

开头:Linux的 rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,早期的Linux发行版基本上使用的是C语言版本的,现在已经很难见到C语言版本的了,由于历史原因,在Perl语言大红大紫的时候,Linux的工具开发者们信仰Perl能取代C,所以大部分工具原来是C版本的都被Perl改写了,因为Perl版本的支持正则处理,所以功能更加强大,已经不再需要C语言版本的了。如何区分系统里的rename命令是哪个版本的?输入 man rename 看到第一行是RENAME(1) Linux Programmer’s Manual RENAME(1)那么 这个就是C语言版本的。而

ejs母版页让你的node.js应用开发更快更有效- 一介布衣

引子:母版页之方便之处相信做过web开发的都不用说太多,可以重复利用资源,维护方便,开发起来你只需关注当前页变动的东西,固定不变的全部放到母版页,可以理解为前人栽树后人乘凉,省时,省力,省心.下面围绕2点简单说下.一.node.js开发,基于ejs引擎的母版页二.前提环境 ,如何使用及示例介绍就像上面的这个图,如果你的业务说覆盖的页面只有中间是变化的,那么其他部分完全可以放到母版页中呈现.node.js 下的web应用开发有2种模板引擎 ejs 和 jade ,当然你可能直接用jquery 的前端模板后端ajax请求数据等等....(也算一种吧)ejs 下如何使用母版页?ejs的母版页功能支持

seo优化基础站点伪静态及去掉keyword - 一介布衣

之前博客从来没有注意过SEO的问题,这个博客当时完全是为了练手玩一玩,自己用node.js 和 levelup数据库 搭建起来的,由于levelup 是完完全全的nosql数据库,除了key-value意外再没有其他东西,以至于一个索引都要自己维护,所以博客功能比较简陋,之前有留言板,当时后来被阿里云的客服提醒让关闭留言功能,为了让博客好好的活下去,我就暂时不开放留言版功能了,你懂得!1.页面模板是仿造zanblog的模板套上去的,当时套的并不完善,我修改的一些东西貌似ui都比较丑陋,勉强看吧,不会UI的程序员不是好产品经理.所以今天的第一件是就是把之前不完整的dom结构补齐,以前没有 foo

漫谈淘宝集市 - 中小卖家如何生存

其实和淘宝结缘已久,04年开始淘,那是大学的同学大都沉浸的网游的乐趣中,但我天生对游戏不太感冒,所以对网站制作,网购起了很大的兴趣,我记得每逢周五舍里兄弟们去网吧包宿的时候,我尽然能琢磨一晚如何建站,那时就是去找免费的空间,边学边写html,那怕是一个小小的页面效果都能兴奋半天.....(也许是老了,竟然开始怀旧了)为了带小孩,媳妇在家做起来全职太太,所以就把我之前的一个淘宝店经营起来了,打磨时间说不定还能赚点小孩的零花钱(现在发现,这也许还是个妄想)中小卖家在水深火热的淘宝集市活的实属不易,就我媳妇经营这个小店我下班后也会或多或少的参与进去,现在的淘宝完全和06年时候的不一样了(那时我开店卖

AngularJS快速开始

Angular学习之旅,从Hello World开始开始学习AngularJS的一个好方法是创建经典应用程序“Hello World!”:使用您喜爱的文本编辑器,创建一个HTML文件,例如:helloworld.html。将下面的源代码复制到您的HTML文件。在web浏览器中打开这个HTML文件。源代码<!doctype html><html ng-app> <head> <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script&g

Angular 基础学习教程

我们现在开始准备编写AngularJS应用——phonecat。这一步骤(步骤0),您将会熟悉重要的源代码文件,学习启动包含AngularJS种子项目的开发环境,并在浏览器端运行应用。进入angular-phonecat目录,运行如下命令:gitcheckout-fstep-0该命令将重置phonecat项目的工作目录,建议您在每一学习步骤运行此命令,将命令中的数字改成您学习步骤对应的数字,该命令将清除您在工作目录内做的任何更改。运行以下命令:nodescripts/web-server.js来启动服务器,启动后命令行终端将会提示Http Server running at http://lo

【随笔】javascript 超越 ruby 稳坐 github 第一把交椅

Github 托管这各式各样的开源项目,编程语言多种多样,当长久以来Ruby语言开发的项目居首.原因是因为Github 本身就是由Ruby 社区诞生出来的,所以长久以来它是Ruby的大本营.逐渐其他语言开发的开源项目也托管过来,久而久之语言种类越来越多,但是从未撼动过Ruby 的地位.但是到目前为止,javascript已经在github上稳坐第一把交椅,我个人认为是这几点因素:(1)如今前端javascript以垄断形式抢占web浏览器,可见前端javascript 工程师一抓一大把.(2)2009年发布至今的node.js 运行在服务器后端环境的javascript,以前得天独厚的web开

yeoman 安装和使用 - 快速构建web应用 (下)

之前有一篇讲了yeoman 工具安装和简易使用,你可以从这里点击查看 伟大的传送带这一片分享下生成的这个后端web框架什么时候使用?结构包括什么?各部分如何工作?什么时候使用这个框架:当你是个前端,当你专注与某个富客户端应用时,当你需要后端服务器提供数据而你不会或者懒得编写服务器端程序时...本人是在学习angular.js 时,也就是做一个富客户端应用时,后端可能只是根据api获取数据,所以方便快捷的使用了 yeoman 来生成一个web架构.这个架构包括了哪些东西?app 目录是框架的主要目录,包含了静态资源(fonts,images,styles) angular.js 需要提供的视图(

NodeJS - Express 3.0下ejs模板使用 partial展现 片段视图

如果你也在看Node.js开发指南,如果你也在一步一步实现 microBlog 项目!也许你会遇到本文提到的问题,如果你用的是Express 3.0本书实例背景是 Express 2.0 而如今升级到 3.0后去掉了一些老的方法也更新了一些新的,所以变化还是蛮大的.首先上一篇博客提到的一个问题:如何用Express 3.0 生成一个 ejs 模板项目前提是你已经下载了ejs包,如何下载,运行cmd 输入 npm install ejs -g2.0 下的语法是:express -t ejs microblog3.0下的语法是:express -e ejs microblog (-t已经失效,取而

linux 下 wget命令使用帮助

Linux wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器。这样既浪费时间又浪费精力,那不没办法的事。而到了Linux VPS,它则可以直接下载到服务器而不用经过上传这一步。wget工具体积小但功能完善,它支持断点下载功能,同时支持FTP和HTTP下载方式,支持代理服务器和设置起来方便简单。下面我们以实例的形式说明怎么使用wget。1、使用wget下载单个文件以下的例子是从网络下

利用window.name 实现iframe 跨域传值

原理:浏览器跨域ifram禁止互相调用/传值.但是调用iframe时 window.name 却不变,正是利用这个特性来互相传值,当然跨域下是不容许读取ifram的window.name值.所以这里我们还要准备一个和主页面http://www.a.com/main.html 相同域下的代理页面http://www.a.com/other.html ,iframe调用子页面 http://www.b.com/iframe.aspx执行流程:浏览器执行主页面 http://www.a.com/main.html 时创建iframe 加载子页面 http://www.b.com/iframe.asp

采用P3P实现浏览器跨域 iframe读写 cookies

网站采用iframe框架形式嵌套了B网站的一个页面C,直接打开页面C会在本地保留一个cookie文件,而当采用A网站iframe框架形式嵌套后就无法成功生成cookie文件,该问题仅在IE浏览器环境下出现,firefox、chrome、Safari浏览器下没有问题。造成该问题的原因:一个所谓的隐私首选项(简称为P3P)的W3C标准。只有在每一页上设置一个cookie发送头,才能允许Internet Explorer接受第三方Cookie。换言之,只有在页面C上设置一个cookie发送头,那么A网站iframe框架形式嵌套后就可以在IE下成功获得页面C的cookie。PHP:header(‘P3

回到顶部