RESTful简介

RESTful

REST全称是Representational State Transfer,暂且理解为资源表现时的状态转化。它是由Roy Thomas Fielding提出来的一个架构原则。Fielding是个牛人,他是HTTP协议(1.0版和1.1版)的主要设计者,Apache服务器软件的作者之一。 他设计REST的目的是希望在符合架构原理的基础上,通过对以网络为基础的应用软件进行架构设计,得到一个功能强大、性能良好、适合通信的架构。RESTful最终能够拥有这些优点也就很自然了。


RESTful

Read More

分享(#share)

ES6生成器基础

JavaScript ES6中最激动人心的新特性之一,是一种新的函数,被称为生成器。 这个名字有点陌生,但是其行为可能在初次目睹时更为怪异。本文的目的就是解释 生成器的基本运作原理,帮助你理解为什么对于JS的未来而言,它们是如此的强大。

Run-To-Completion

当我们谈到生成器要考察的第一件事,就是在运行到结束方面,它们和普通的函数有何区别。

不管你是否意识到,你经常能够对函数作出一些相当基本的假设:一旦函数开始执行, 它就会一直执行到结束,在此之前其他任何JS代码都不能运行。

看一个小例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
setTimeout(function(){
console.log("Hello World");
},1);
function foo() {
//注意:千万不要像这样搞些疯狂的长时间运行的循环
for (var i=0; i<=1E10; i++) {
console.log(i);
}
}
foo();
// 0..1E10
// "Hello World"

Read More

分享(#share)

【视频】利用数据创新 - Hilary Mason

Hilary Mason是fast-forward实验室的创始人,也是顶尖的数据科学家。她的报告从技术、流程、管理、思想等多个方面探讨了如何利用数据进行创新产品开发,相当值得一看。

Read More

分享(#share)

TensorFlow入门

TensorFlow

TensorFlow是一个用于机器学习的开源软件库,它是google的第二代机器学习系统。机器学习作为当前最火的学习领域之一,来自google的TensorFlow,从发布以来获得了极大地关注。

TensorFlow采用所谓的数据流图(data flow graphs),用于数值计算。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。目前主要用于机器学习和深度神经网络方面的研究,但这个系统由于有很强的通用性所以也可以应用于其他计算领域。

TensorFlow

Read More

分享(#share)

【视频】关于软件架构 Martin Fowler

Martin Fowler的演讲,关于什么是软件架构,以及为什么软件架构重要。

Read More

分享(#share)

【视频】机器学习领域的突破性进展 - Google IO 2016

Google在机器学习方面的最新突破性进展,主要包括三个话题:

  1. 语音识别方面的突破
  2. 基于图论的机器学习
  3. 让机器学习更加透明一些

Read More

分享(#share)

docker

前言

Docker是用Go语言编写的一个开源的应用容器引擎,本质上是一个操作系统级虚拟化方法,可以认为是轻量级的虚拟机。和虚拟机比起来:

  • Docker更快速,启动一般在1秒内,虚拟机要慢好多;
  • 节省资源,一台计算机跑个千百个Docker不是事,虚拟机几个就废了,而且还需要专用的cpu和内存资源来跑操作系统。

为什么会这样?因为Docker复用了主机的操作系统,使用了LXC(Linux Container)技术,linux的一种内核虚拟化技术,而VM的Hypervisor技术需要实现对硬件的虚拟化并搭载独立的操作系统,所以就会产生很大的差异。

Docker使用客户端/服务器 (C/S)架构模式,使用远程API来管理和创建Docker容器。Docker容器通过镜像来创建,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后就可以发布到任何Linux系统上。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker

Read More

分享(#share)

常用开发工具介绍(三)Grunt

前言

Grunt是一个基于任务的JavaScript工程命令行构建工具。对于需要反复重复的任务,例如压缩、编译、单元测试等工作,自动化工具可以将你解放出来,节省你的时间提高你的效率。使用Grunt你只要正确的配置好任务,任务运行器就会自动完成大部分无聊的工作。Grunt生态系统拥有数量庞大的插件可供选择,因此你可以利用Grunt自动完成很多的事。

安装

Grunt和 Grunt插件是通过 Node.js 的包管理器npm安装和管理的。

Grunt0.4.x必须在Node.js0.8.0以上版本使用。

Read More

分享(#share)

常用开发工具介绍(二) Atom

前言

如果说Vim是老程序员的最爱,那么Atom则是目前最火热的编程编辑器了。Atom的老东家是程序员都熟悉的GitHub,目前Atom是免费、开源的,而且是天然就跨平台的。

Atom

Atom由CoffeeScript编写而成,且集成有 Node.js。Atom属于Chromium的一套特殊衍生版本,其设计思路更偏向于文本编辑器而非网络浏览器; Atom当中的每一个窗口在本质上讲都是一个经过渲染的本地网络页面。

Atom的性能表现非常出色——只要它不对自身进行更新。Atom拥有丰富的功能,其中包括模拟搜索、项目内快速搜索及替换、多游标与选定、多窗体显示、片段、代码层叠、导入TextMate语法及主题的等等。

Atom能够安装两套命令行工具,可以通过shell实现编辑器启动并利用Apm管理Atom之下的软件包——类似于Node.js当中的Npm。

Read More

分享(#share)

常用开发工具介绍(一) Vim

前言

通过使用开发工具可以帮助大家更快,更轻松地创建自己的应用,因此我们想做一个常用开发工具的介绍。第一个介绍的工具是Vim。

Vim

Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,深受程序员的欢迎,特别是Unix/Linux下程序员,当然主流的操作系统都有相应的版本可以使用。

Vim很灵活,功能也很强大,经过多年的发展,可以说是最强大的编辑器之一了,所以学习曲线很陡,不过对于程序员们来说,真是个好东西。

Read More

分享(#share)