分类目录归档:技术分享

使用 New Relic 监控云引擎应用的性能

LeanCloud 云引擎为应用开发者省去了服务端系统的部署和维护方面的负担,但代价是一定程度上减弱了线上环境的透明性。不少云引擎的用户希望能对线上代码的错误及性能特征有更多的了解,以便优化自己的程序。New Relic 是全球知名的应用性能监控工具,它可以告诉开发者一个应用的性能瓶颈,比如最耗时和最常用的请求、远程调用等等。

在云引擎项目中集成 New Relic 比较简单,这里以一个 Node 项目为例来说明:

继续阅读

使用 LeanCloud 与 React Native 构建原生应用

reactnative_toptal_coverimage

图片来源:toptal

React Native 是 Facebook 在今年的 F8 大会上发布的移动应用开发方案。它基于 JavaScript 和 React,可以让 Web 应用开发者在保持原有的开发体验和效率的同时,为 Web 应用带来原生应用的体验。

React Native 使用 JavaScript 作为开发语言,其内建的打包系统支持包括 CommonJS 在内的多种模块化标准,因此很多支持浏览器运行环境的 Node Package 也可以运行在 React Native 中。LeanCloud JavaScript SDK 便是其一。

本文将介绍:

  • 如何在 React Native 中使用 Flux 架构来组织应用的数据流,以配合我们的 JavaScript SDK 向 LeanCloud 云端保存数据,重用代码和实现平台差异化。
  • 异步获取当前用户对象
  • 文件上传
  • 向移动端推送消息

继续阅读

「大概可能也许是」目前最好的 JavaScript 异步方案 async/await

构建一个应用程序总是会面对异步调用,不论是在 Web 前端界面,还是 Node.js 服务端都是如此,JavaScript 里面处理异步调用一直是非常恶心的一件事情。以前只能通过回调函数,后来渐渐又演化出来很多方案,最后 Promise 以简单、易用、兼容性好取胜,但是仍然有非常多的问题。其实 JavaScript 一直想在语言层面彻底解决这个问题,在 ES6 中就已经支持原生的 Promise,还引入了 Generator 函数,终于在 ES7 中决定支持 async 和 await。

async_image03

基本语法

async/await 究竟是怎么解决异步调用的写法呢?简单来说,就是将异步操作用同步的写法来写。先来看下最基本的语法(ES7 代码片段):

继续阅读

基于 LeanCloud 云引擎的 Web 全栈方案:LeanEngine-Full-Stack

很多工程师使用 LeanCloud 之后,发现一个人就可以 hold 住一个完整项目,尤其是一个 Web 项目。原因很简单,本来复杂繁琐的数据库操作,通过使用 LeanCloud 的 JavaScript SDK 变得轻而易举,再结合 LeanCloud 提供服务器端容器 —— 云引擎 LeanEngine(支持 Node.js 和 Python 两种环境),就可以很高效地开发出一个 Web 端项目。

QQ20151009-1@2x

背景

开始尝试 LeanCloud 时项目并不大,也不算复杂,大家都是很简单地去写代码,但是随着使用的深入,开发变得越来越顺手,有些工程师开始尝试设计复杂的项目。只要项目复杂了,就会有很多底层的事情需要考虑,比如协作分工、自动化流程、代码组织结构、框架选择、国际化方案等等。LeanCloud 的很多项目就是基于自身所提供的服务,在开发过程中我们遇到过很多问题,也为此纠结过,所以我们将目前使用的 Web 全栈方案整理成一个新的项目,作为一个 Generator 或者 Seed,供大家交流和使用。

简介

项目名为「LeanEngine-Full-Stack」,就放在 LeanCloud 官方的 GitHub 仓库中,地址为 https://github.com/BaaSBeginner/LeanEngine-Full-Stack

继续阅读

比 XcodeGhost 更邪恶的手段 30 年前就出现了

xcodeghost

最近在开发者圈里讨论最多的莫过于 XcodeGhost。其实在 30 年前,更高明的手段就出现了。

1984 年的时候,UNIX 创造者之一 Ken Thompson 获得了 ACM 图灵奖。他的获奖演讲叫做 Reflections on Trusting Trust(反思对信任的信任)。

继续阅读

LeanEngine 中使用 WebSocket

一直以来 HTTP 协议都是使用「请求/响应」的模型,在 Web 应用越来越复杂的今天,这种模型的限制越来越明显。

很多场景下,我们想要服务器主动发送通知给浏览器,甚至我们想在浏览器中实现一个实时对战的网络游戏。这个时候 HTML5 规范中的 WebSocket 可以很好地满足我们的需求。

对于使用 LeanEngine 的用户,我们也可以直接在 LeanEngine 环境中使用 WebSocket,来构建应用了。下面我们以 LeanEngine NodeJS 运行时环境为例,实现一个 WebSocket echo server(echo server 是指返回任何接收到信息的服务)。

继续阅读

LeanCloud 的代码管理指南

代码管理是每个做任何软件开发的团队需要解决的问题。和很多互联网公司一样,LeanCloud 使用 Git 做代码管理系统。这份 代码分支管理指南 是在 LeanCloud 团队内执行了一段时间的流程,现在我们把它发布到 开放资源网站 ,希望对和我们类似的团队有一些参考价值。

ReactNative 中使用 LeanCloud

最近移动应用开发领域,最令人振奋的就是 ReactNative 的发布了吧。ReactNative 有如下几个特点:

  • 使用 Web 开发中常用的技术,比如逻辑使用 JavaScript 来实现,界面描述使用一个 CSS 的子集,使用 flexlayout 进行布局。
  • 整个应用依然是 Native 的,JavaScript 只是跑在一个独立的线程中,利用 React 的 Virtual DOM 机制,将界面渲染成 Native 控件。
  • 可以使用 Chrome 开发者工具进行在线调试,甚至支持 LiveReload。
  • 未来会兼容多个平台(目前仅支持 iOS)。

继续阅读

LeanCloud 离线数据分析的服务架构:异步处理

一般来讲,绝大多数互联网服务都可以划分为 OLTP (On-line Transaction Processing) 与 OLAP (On-line Analytical Processing)。OLTP vs. OLAP 这篇文章对两者之间的差异给出了非常清晰的解释。如果我们只考虑 Query 这个维度,OLTP 最好只处理相当简单、耗时极短的查询或操作,而 OLAP 则处理比较复杂、耗时较长的查询(通常包含数据聚合)。

LeanCloud 提供的 离线数据分析服务 ,大致上可以归类为 OLAP。用户提交 SQL 查询语句,我们的系统为其完成查询并返回相应结果。如果用户提交的 SQL 较为简单,系统处理时间就比较短。反过来,如果用户提交的 SQL 较为复杂(多表 join、数据聚合),那么系统处理时间会更长一些。既然如此,我们就不能像 OLTP 那样在一次请求里面给出查询结果,而是将查询拆分成「创建分析 job」与「获取分析 job 处理结果」。简言之,从 API 层面看,用户的查询是由两个接口来实现的,即 POST /jobsGET /jobs/:jobId。这样的 API 设计意味着所有的数据分析任务都会异步地处理。

继续阅读