0%

Loopback Framework

尽管我不怎么欣赏它的内部实现,但是不得不说这是Open API开发框架的又一次创新,使得开发API的过程更为简单和易用。
LoopBack 是一个基于Express的开源 Node.js API框架,用于快速构建自己的OpenAPI平台,提供API接口给mobile, web和其他设备。它能够同时连接多种不同的数据源,非常简单的暴露model为标准的RESTful API,用nodejs 开发API,提供JS, iOS 和 Android SDKs.

StrongLoop在2015年被IBM收购了.

Features

  • 快速创建动态 end-to-end REST APIs.
  • 连接设备/浏览器到数据和服务。
  • 使用 Android, iOS, and AngularJS SDKs 轻松创建客户端应用.
  • 提供 push, 文件管理, 第三方登录, 以及 geolocation 的附加组件.
  • 使用 StrongLoop Arc IDE 可视化的编辑,部署和监视 LoopBack API服务.
  • StrongLoop API网关充当API消费者与API提供者之间的中介,进行外部化的安全管理API。
  • 可以部署运行在内部或者云端
阅读全文 »

Promise

Promise是简化异步编程的重要概念。这篇文章介绍得不错:Simplifying Async with Promises.

简单的说,Promise(又名 Future, Delayed value, Deferred value)代表一个尚不可用的值。因为产生这个值的计算过程尚未完成。一个 Promise 是最终的成功结果或失败原因的占位符。

  • promise只有三种状态,未完成,完成(fulfilled)和失败(rejected)。
  • promise的状态可以由未完成转换成完成,或者未完成转换成失败。
  • promise的状态转换只发生一次
  • promise有一个then方法: (promise.then(onFulfilled, onRejected))
    • then方法可以接受2个回调函数作为参数。

      • 对应promise的两种状态fulfilled, rejected的回调函数。回调函数的传递参数分别是resolve(value),reject(value) 函数。
      .then(function(resolve){
              //当promise状态变成fulfilled时,调用此函数
          },function(reject){
              //当promise状态变成rejected时,调用此函数
          });
      
      .then ((resolve)->), ((reject)->))
      

Promise API 标准存在多个提案,目前看来,Promises/A+ 已经正在成为事实上的标准。

阅读全文 »

如何选择一门语言学习计算机编程

实用派的想法:

哪一门或一些语言适合你?取决于你想干什么?

  • 你是想做嵌入式系统开发?
  • 或是想数据挖掘统计分析?
  • 或是想开发web站点?
  • 或是想做原生的iOS系统开发?
  • 或是想做原生的Android系统开发?
  • 或是想做跨移动平台的开发?

不同的选择决定你会去学习使用一些不同的语言。

阅读全文 »

HTC Vive 到手,我也好好体验了一把沉浸式虚拟现实,的确震撼,尽管目前好的内容还不是很多。真的世界变了,不提游戏,很多经验的教学,难以实作的实验,在沉浸式虚拟现实中都将被改写,人类获取另类的知识体系将变容易。体验,免除危险的体验模式,从未来迎面而来。我还是先讲述自己的个人体验感受,最后再说下虚拟现实以及相关技术分析。

虚拟现实

虚拟现实(Virtual Reality),又称虚拟实境,简单来说就是用电脑模拟一个虚拟世界,让人感觉自己完全置身于这个虚拟的世界当中,从而忘掉自己所处的真实世界。目前主要是通过对人的眼睛和耳朵的欺骗,以及附加在头盔上的传感器来实现VR。

尽管离《黑客帝国》描述的场景距离还相当长远,但至少目前已经可以让人产生身在虚拟世界的幻觉了。尽管依然存在这样那样的不足:

  • 纱窗效应,因为屏幕离眼睛的距离近,所以可以看到点阵,但是可以忍受。
    • vive 和 rift 的单眼屏幕分辨率为: 1080 x 1200, 90HZ的刷新率,110度的视场。
    • psvr 的单眼屏幕分辨率为: 960 x 1080, 120hz刷新率。
  • 如果没有近视的人,那么看久了眼睛会难受,毕竟屏幕放得太近了,当然可以调整镜片的距离(牺牲视场)
    • 好处是,如果有轻度近视,那么不需要带眼镜也可以玩,如果一定要带眼镜,那么尽量选择度数浅些的眼镜
  • 线缆一不留意就会缠住自己【Vive的房间模式】
  • 如果在虚拟世界中身体处于运动状态,但是实际身体并没有运动下,会导致眩晕,尤其是在没有任何理由的情况下,出现场景移动或者漂移。
阅读全文 »

要理解移动互联网首先要理解互联网,要搞清楚互联网思维是啥,首先也要理解互联网的本质,而要理解互联网的本质则首先要从互联谈起,何谓互联,互,彼此也;联,沟通也。互联网就是搭建的P2P的彼此沟通的网络。那么何谓移动,移动我的理解是设备,尤其是随身设备的上网能力。那么移动互联网和互联网有什么不同之处么?我觉得没有根本的不同,唯一不同的是时间和地点,从间断固定到随时随地。对于家居设备的上网,目前炒作的物联网(IoT),也只不过是将一个个的设备作为“网上服务”放到了家庭,使得我们可以在家以外也能控制而已。因此这里说道的移动互联网思维其实主要还是在探索互联网思维。

互联网的本质

无论移动互联网还是互联网,我们如果思考下它的本质,想想它的本质是什么?那么不难发现,它的本质无疑是最终用户(Peer)的互联互通。那么互联互通的本质又是什么?而当互联网最终用户膨胀到足够规模的时候,我们发现,它正在改变世界。Why? 它是如何做到的呢?

互联网的本质是对等(互联),因为要对等互联,所以才有了开放和标准。因为完全开放和标准化,才有足够多组织细胞接入,从而形成群体。群体在互联网上产生信息和消费信息,从而导致信息爆炸大数据。

开放与标准

阅读全文 »

随着近两年来nodejs的迅速走红(这个npm的功不可灭),nodejs实际上成为js服务端和工具桌面端开发事实上的标准。似乎用javascript开发桌面应用时代正在来临。各种开发桌面应用的js框架工具陈出不穷,下面主要介绍的是一些开源项目js框架工具 for Desktop Application。

Electron

Github开源的,用JavaScript编写桌面应用的框架。Electron为用纯JavaScript创建桌面应用提供了运行时。原理是,Electron调用你在package.json中定义的main文件并执行它。main文件(通常被命名为main.js)会创建一个内含渲染完的web页面的应用窗口,并添加与你操作系统的原生GUI(图形界面)交互的功能。

下载需要翻墙:

阅读全文 »

什么是无后端构建开发

无后端构建是希望通过云服务将后端从前端开发中彻底解耦。和云存储不同之处在于它不仅仅是数据存储,它还是一套解决方案,它通过将后端任务从前端代码中剥离出来的一套SDK,让前端开发者把全部注意力放在前端交互用户体验。而让后端开发者聚焦后端任务的解耦,统一后端数据,并使得后端更具有灵活性和伸缩性。

这个趋势意味着互联网数据正在由人读(human-readable)时代向机读(computer-readable)过渡。虽然语义网的w3c已经提出好久(1999),相关标准(RDF/OWL/RIF)也是许久前就制定了,但是在互联网上的实际应用中,总是雷声大,雨点小,普及率最高的RSS和FOAF(Friend Of A Friend)也只是这小众。这归结于丑陋的XML格式,虽说是机读,但是实际上描述定义这些机读格式的也是人啊,如果格式的可读性差,操作复杂,那么自然愿意使用的开发者就少。

而API则不然,这是程序开发中与外部系统交流理所当然的接口,是每个开发者都在用的,一看就懂的。当然API也有好坏之分,编写制定好的API接口比开发应用更难。这需要你具备更强的架构设计能力,从具体中提炼出通用的操作能力,以及要求可读性更强的命名能力。

自从互联网上分布式 Restful 体系架构提出后,web上的 OpenAPI 也在日益增多,但是大部分OpenAPI还是在各行其是。认证这块,虽然有统一的标准OAuth, 但是对普通开发者来说,还需要去了解OAuth的内部原理,使用上还是难用,而且各个站点对OAuth的具体实现上,又略有差异,这更增加开发者的负担。所以目前出现具体针对各大站点的OAuth认证的二次封装的开发库,降低普通开发者的使用难度。现在这些基础通用操作再次被“无后端”构建模式统一封装和组织,使得普通开发者更加容易的使用。再次降低了开发者的门槛,开发者可以完全不管后端的架构设计和组织了。那么遵循这样的普及,互联网上会有越来越多的各式各样的云服务API平台,未来的互联网架构也将从独立的web站点,变成了彼此分享协作的WebApp。

阅读全文 »

iDB NoSQL数据库是结构化的面向列(Structured-Column Oriented),并基于目录(Directory-Based)的层级式(Hierarchy)NoSQL开源数据存储系统(项目主页:https://github.com/snowyu/iDB),iDB有别于传统数据库基于文件的存储形式。我们可以把它视作新一代数据库系统(A new way to database engine)的核心。

几个概念:

  • 面向列:所谓面向列(Column Oriented)是和面向行(Row Oriented)相对而言的,绝大多数的关系型数据库就是面向行存储的,而iDB则是面向列基于Key/Value的存储系统。
  • 结构化:所谓结构化(Structured)是指值(Value)可以是带结构数据的复杂类型,而层级则是指Key可以有不同的层级关系,基于目录树的形式。
  • 基于目录:基于目录(Directory-Based)也是相对于基于文件(File-Based)而言,对于传统的数据库系统几乎都是通过创建少量的随机文件,然后把大量的数据存放在里面,而iDB则完全不同,也可以说是恰恰相反,它是创建大量的目录和文件,把数据分散在目录中,你可以认为这是一种创新。

Background (设计背景)

iDB NoSQL数据库引擎的设计初衷是希望能更为合理的设计组织数据库引擎的层次架构,以及看到现代文件系统设计发展的变化有感而发,两者融合就促使我萌发设计iDB的念头。

阅读全文 »

Nokia 还有未来么?

现状

2012年6月30日,作为最新裁员计划的一部分,诺基亚的三位高管黯然离职。7月1日调整后的新管理层开始生效,诺基亚的管理结构将更加简化。在接下来的一年多时间里,还会有1万名员工跟这三位高管一样,不得不离开诺基亚,以达到在2013年底之前节省30亿欧元开支的目标。

这家昔日硬件巨头股价下滑60%,手机销量骤降,现金储备急剧减少,而且失去了手机霸主位置。

现今,诺基亚孤注一掷正全身心投入WP智能机的研发中,期望这一平台能帮助该公司摆脱颓势。但是今年一季度,Windows Phone仅占智能机出货量的2.2%。即使今秋推出的WP 8系统能够大获成功,也不能保证诺基亚能够收复失地。而HTC和三星这两家Android硬件巨头,也正在计划推出WP设备。更糟糕的是,微软今秋推出的WP 8系统让诺基亚有苦难言。为了将桌面操作系统的优势沿用到移动操作系统上,WP8采用了与Windows 8相同的内核。这样一来,微软上一代移动操作系统WP7.5因为与WP8内核不同,无法升级到WP8。诺基亚寄予厚望刚上市的高端智能手机Lumia900无疑成了最大牺牲品。

阅读全文 »

ZFS 介绍

首先ZFS是"Zettabyte File System"的首字母缩写。ZFS 源自于Sun Microsystems为Solaris操作系统开发的文件系统。
ZFS是一个具有高存储容量、文件系统与卷管理概念整合、崭新的磁盘逻辑结构的轻量级文件系统,同时也是一个便捷的存储池管理系统。ZFS使用CDDL开源协议条款授权。后来被移植到FreeBSD和NetBSD系统上。

ZFS是一个128位的文件系统,这意味着它能存储1800亿亿(18.4 × 10^18)倍于当前64位文件系统的数据。窃以为目前ZFS文件系统是云存储以及NoSQL数据库的最佳首选。

特性

  • Data integrity 数据完整性
阅读全文 »