月度归档:2015年02月

#006 LeanCloud 晨读推荐

晨读推荐

关于「晨读推荐」

由 LeanCloud 的工程师和设计师,以周为单位进行阅读分享,包含每位工程师和设计师想加入自己读到的「有价值、有趣味、有分享意义」的文章以及推荐理由。每周一和周三在微信公众帐号进行推送。

技术向 Geek Must Read

《Improving Facebook on Android》
LeanCloud 导读:
为了检测自家 Android 客户端在发展中国家的性能表现,Facebook 的产品经理、工程师在 2013 年的时候去了一趟非洲, 并对他们的客户端进行了一系列的优化。文章中主要包含了一些性能优化的干货,另外 Facebook 处理事情的方法论,很值得我们去学习。

工具向 The best tools

《使用 JavaScript 实现简单候选项推荐功能(模糊搜索)》
LeanCloud 导读:
本文介绍了 JavaScript 实现的模糊搜索,虽然不算是一个具体的工具,但是介绍了一个很有趣的算法「编辑距离」,并有一个简单的实现。用 JS 来实现还是比较少见的,可以用在前端搜索的事情上,比如通讯录之类的,很有学习价值。

设计向 Design More,Design Better

《The Scientific 7-Minute Workout》
LeanCloud 导读:
推荐的是一个经过非常精细优化的 web app,相信设计师们能通过对他们的学习找到一些新的设计思路和在自己产品上需要注意的细节。

新知向 Ren chou jiu yao duo du shu

《Pickle——基于栈的编程语言》
LeanCloud 导读:
pickle 是 Python 内置的一个对象序列化模块,与 XML 或者 JSON 等序列化方式不同,pickle 协议本身就是一个基于栈的编程语言,因此它可以序列化任意 Python 对象。但是同时也引入了一些安全风险,如果我们直接反序列化非信任数据来源的 pickle 数据,攻击者可以构造一些巧妙的代码来对我们进行攻击。

#005 LeanCloud 晨读推荐

晨读推荐4

关于「晨读推荐」

由 LeanCloud 的工程师和设计师,以周为单位进行阅读分享,包含每位工程师和设计师想加入自己读到的「有价值、有趣味、有分享意义」的文章以及推荐理由。每周一和周三在微信公众帐号进行推送。

技术向 Geek Must Read

《那些好用的 iOS 开发工具》
LeanCloud 导读:
本文是在唐巧的《iOS 开发进阶》一书看到的。介绍了一些 iOS 常用的开发工具和 Xcode 插件。如界面调试工具 Reveal,在运行程序的时候,直接改界面,不用再次编译运行,非常强大。

工具向 The best tools

《SlickGrid Web 表格组件》
LeanCloud 导读:
SlickGrid 是一个简单的、快速、灵活的表格控件。可以隐藏/显示列,调整列宽度,排序,自定义单元格展示格式和编辑器,支持编辑和创建新记录。表格组件非常多,SlickGrid 功能丰富,扩展灵活,性能非常好,而且非常方便做集成,和 Angular 一起使用也没有问题,虽然没有专门的 Angular directive,,利用这个可以完美的绕过 angular 的大数据表格性能问题。

设计向 Design More,Design Better

《Live Font Interpolation on the Web · An A List Apart Article》
LeanCloud 导读:
这是一项令人振奋的新技术,可能将会完全改变「字体」的概念。本文介绍了这款可以在 web 上直接利用字体插值技术实现实时字体的改造,以生成一个全新的字体,目前已经提供相关文档进行阅读和使用。

新知向 Ren chou jiu yao duo du shu

《Unit Testing for Objective-C》
LeanCloud 导读:
长期以来,iOS 项目的单元测试以及自动化测试都是一个很麻烦的事情。本文详细介绍了 OCUnit 框架的使用方法,而且,也介绍了 Jenkins/Travis 等自动化测试的解决方案,值得一读。

单元测试是一个工具,和其他开发工具一样,目的在于让我们能够把事情做得更好,写出更强壮、更可维护的代码。
OCUnit,也就是之前的 SenTestingKit,提供了强大的 UT 组件,文中详细说明了它的用法。

写出测试代码是一回事,让测试代码自动化跑起来则是另一件事。Jenkins+Travis CI 的解决方案可以很好地做到自动化测试,看看 AFNetworking 是怎么来使用它们进行测试的吧。

#004 LeanCloud 晨读推荐

晨读推荐3

关于「晨读推荐」

由 LeanCloud 的工程师和设计师,以周为单位进行阅读分享,包含每位工程师和设计师想加入自己读到的「有价值、有趣味、有分享意义」的文章以及推荐理由。每周一和周三在微信公众帐号进行推送。

技术向 Geek Must Read

《使用 VIPER 构建 iOS 应用》
LeanCloud 导读:
测试永远不是构建 iOS 应用的主要部分。当我们 (Mutual Mobile) 着手改善我们的测试实践时,我们发现给 iOS 应用写测试代码非常困难。因此如果想要设法改变测试的现状,我们首先需要一个更好的方式来架构应用,我们称之为 VIPER。VIPER 是一个创建 iOS 应用简明构架的程序。VIPER 可以是视图 (View),交互器 (Interactor),展示器 (Presenter),实体 (Entity) 以及路由 (Routing) 的首字母缩写。简明架构将一个应用程序的逻辑结构划分为不同的责任层。这使得它更容易隔离依赖项 (如数据库),也更容易测试各层间的边界处的交互。

工具向 The best tools

Emmet — 网页开发者必备工具
LeanCloud 导读:
Emmet (即之前著名的 Zen Coding) 是一个网页开发者工具,可以大大地提高你的 HTML & CSS 开发效率,比如代码行数较多时,Emmet 能快速选出成对的 TAG,标签提示快速书写,看上去有很多快捷方式会比较困惑,具体使用中掌握常用的几个就够了,不要有压力。很多编辑器都有插件支持,比如 Sublime、Eclipse、Textmate 等,还有在线编辑器的应用,如 JSFiddle。

设计向 Design More,Design Better

Picasso by Square
LeanCloud 导读:
Picasso 是 Android 平台上非常强大的图片下载、缓存库。图片是大多数 Android 应用中必不可少的元素, Picasso 提供了非常简单的使用方式:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

Picasso 自动处理了 Android 平台上很多图片下载方面的陷阱:
– ImageView 的资源复用和取消下载;
– 使用最少的内存完成大量图片处理操作;
– 自动的内存、磁盘缓存;

新知向 Ren chou jiu yao duo du shu

《PHP 中使用协程处理多任务》
LeanCloud 导读:
在当下高并发是一个热门话题,目前对此最佳的解决方案是异步 io + 协程。Google 的 go 语言已经将这两项特性在语言层面做了支持,其他很多语言也给出了自己的解决方案。PHP 在 5.5 版本中也可以支持这一特性,以此我们可以实现一个任务调度器来管理多个协同任务,在 PHP 中实现高性能的并发 io 处理,如今的 PHP 早已不是当年的那个 「模板引擎」语言。

2015 年 1 月 LeanCloud 更新汇总

非常抱歉,2015 年的 1 月份我们做了很多事情,但是在博客上跟大家说的太少,这个汇总因为种种原因延迟到现在。
春节即将到来,LeanCloud 提前向开发者们道一声春节快乐,在新的一年,我们将继续努力,为大家提供更优质的功能和服务。
想必大家领了年终奖了,归心似箭,因此我们长话短说,进入 1 月份的更新汇总。

综述

1 月份,我们网站重点是加了协作者的细分权限,每个协作者可以设置存储、消息、设置等权限。其次,增加了 JavaScript 域名白名单设置,提升前端使用 JS SDK 的安全性。
实时通信推出了云代码集成功能,可以在云代码中对接收消息等操作编写自定义逻辑。
云代码增加了支付宝和微信的接入示范,并持续性地改进部署和运行的稳定性。
Android SDK 正式推出官方 Maven 仓库,并支持 Gradle 构建。
更详细的介绍请看下文的各部分更新摘要。

网站服务

  • 加入协作者细分权限,现在您可以给应用的协作者设置更细分的权限:分析、模块、消息、设置等,只有拥有这些权限的协作者才可以访问相应的模块,否则都会收到屏蔽。

Snip20150203_2

协作者细分权限对于团队也同样起作用,设置后还可以修改。原来的协作者都默认为拥有所有权限。

  • 消息推送界面,改进了推送时间指定输入框,加入时间控件。
  • 应用设置的基本信息菜单增加 JavaScript SDK 安全域名 设置,对于在浏览器直接使用我们 javascript sdk 的用户,推荐设置一个域名白名单,只允许该域名下的 JS SDK 调用我们的 API。

Snip20150203_3

  • 完善了云代码统计,增加了函数调用次数、HTTP 状态码等统计。
  • 应用列表上方增加了应用搜索框,方便您快速找到应用。

API、推送、离线数据分析等后端服务

  • 增加对 JavaScript 域名白名单的限制。
  • 支持协作者细分权限功能的 API
  • 七牛域名 qiniudn.com 故障情况下,大部分应用都已经切换到 clouddn.com 域名,如有问题请联系我们。
  • API Bug 修复,包括:
    • 跨应用 include pointer 无效
    • beforeDelete、afterDelete 在数据管理平台没有生效的
  • API 增加了异常告警,根据昨天和 7 天内的 API 调用状况,如果浮动幅度过大,将发送告警邮件给用户。
  • 支持云代码提供的 onLogin Hook,在用户登录前做一些自定义逻辑。
  • 推送启用了新的索引引擎,加快推送速度和提升稳定性。
  • 离线数据分析改进了数据转换和导入备份数据流程,提升效率。关于离线数据分析,可以理解成我们推出的 BigQuery 服务,您可以利用他对应用数据做出分析和汇总,参考 LeanCloud 离线数据分析功能介绍
  • 离线数据分析结果导出和写入数据存储功能正在开发,预计下周可以跟大家见面。

实时通信(聊天)

  • 支持云代码 Hook,可以在收到消息等情况下做一些自定义逻辑,参考 实时通信云代码集成
  • 发布 /1.1/rtm/messages 的 REST API,可以用来给指定 Peer 发送消息,参考 REST API
  • 聊天 JavaScript SDK 也支持对 JavaScript 的域名白名单设置。

云代码

  • 增加云代码接入支付宝的例子:https://github.com/leancloud/cloud-code-alipay
  • 增加接入微信的实例 https://github.com/leancloud/cloud-code-weixin
  • 支持 __local 变量用以标示 avoscloud 命令行工具运行的本地开发环境,并更新相关文档。
  • 云代码统计增加 http status 统计。
  • 云代码开始支持 onLogin ,在用户登录前做一些自定义逻辑。
  • 提升部署稳定性和运行稳定性,内部重构等。
  • 云代码命令行工具 发布 0.6.3 版本,修复 Windows 环境无法创建项目的 Bug、修复可能的 401 错误、修复 CQL 无法执行 count 查询的 Bug 等,推荐升级。
  • 预告下,我们不久将推出云代码对 Python 语言的支持,敬请期待。我们的 Python SDK 已经可以测试使用。
sudo npm install -g avoscloud-code

Android SDK 最新 v2.6.10.4

除了 Bug 修复和功能改进之外,最大的改进在于我们提供了 Maven 仓库—— http://mvn.leancloud.cn/nexus/ ,以及 Gradle 构建 支持,推荐大家使用,具体参考我们的 Android 开发指南

  • 修正了 AVUser.followerQuery(Class clazz) 的当前登录用户验证问题
  • 修正了反馈组件中选择图片的 string 资源引用问题
  • 增加了 AVUser.signUpOrLoginByMobilePhone 接口支持通过短信验证码直接注册或者登录用户功能
  • 在统计信息中间增加 IMEI 信息统计(前提是提供了权限)
  • 改进了 wrong content type 异常的报错信息
  • 改变 AVUser 的 currentUser 的缓存策略,只有登录用户才会进行缓存
  • 支持 Gradle 配置构建,推荐新项目都使用 Gradle 进行构建,我们提供了官方 maven 仓库。
  • 修正 AVFil e 在上传过程中可能遇到的资源泄露问题和取消上传无法成功的问题
  • 修正实时通信模块中可能存在的 Session 状态异常问题
  • 修正在 PushService 重启后,实时通信中可能存在的 NPE 问题

iOS SDK v2.6.10.1

  • 修复 AVFile 缓存多次的问题
  • 修复 IM 内部 float 类型解析不对的问题
  • 修复 w atchPeerIds 可能引起阻塞的问题
  • 添加 AVGroup join 被拒绝的回调
  • AVPush 添加 setPushToWP 接口,定向推送到 WindownsPhone 手机
  • AVPush 添加 setPushToTargetPlatforms 接口,指定平台发送推送消息
  • 聊天 AVSignature 添加 error 属性,签名错误使用此属性
  • AVUser 添 加使用手机号直接注册或者登录接口 “
  • 修复 AVInstallation badge 不能保存的问题
  • 修复 iPhone 6 上用户反馈界面黑块的问题
  • 修复 SNS 登录后没有回调的问题

JavaScript SDK 0.4.7

  • 修复浏览器里页面跳转更新 user 导致 current user 属性丢失的 Bug。
  • 增加 AV.User.updatePassword 方法,根据老密码修改成新密码。
  • AV.Object 增加 getObjectId, getUpdatedAt, getCreatedAt 三个方法。
  • 增加 AV.User#signUpOrlogInWithMobilePhone 手机一键登录。
  • 一些内部改进和重构。

Unity SDK v1.1.8

  • 修复了自定义统计时间的传入的参数格式
  • 自定义统计中自定义参数在网站控制台不显示的问题

#003 LeanCloud 晨读推荐

晨读推荐2

关于「晨读推荐」

由 LeanCloud 的工程师和设计师,以周为单位进行阅读分享,包含每位工程师和设计师想加入自己读到的「有价值、有趣味、有分享意义」的文章以及推荐理由。每周一和周三在微信公众帐号进行推送。

技术向 Geek Must Read

《Bolts — Make developing mobile apps easier》
LeanCloud 导读:
Facebook 团队抽取了一些公共的底层库,并放到了 Github 开源出来。这就是 Bolts,旨在让移动应用开发更加简单。参照 Java Script 的 Promise 模型,设计了 Task 组件,来处理异步操作。目前支持的版本有 Android 、iOS 和 Java。

在上一期「晨读分享」分享中,我们分享了 Android 中异步处理机制的解析。确实在 Android 开发中异步处理是很常见的需求,Android 也提供了 AsyncTask、HandlerThread 等工具方便开发者进行异步操作。但处理复杂的异步操作时(譬如多个异步操作的组合等),并没有很简单的办法。要么嵌套回调,写出层级很丑陋的代码,要么需要通过 Handler 和 message 将事件间的逻辑在代码中维护。Bolts 通过 Promise 的模型,来尝试解决这个问题,实现也很简单。所以推荐大家看看。

工具向 The best tools

《Mac 上小众却常用的 app 推荐》
LeanCloud 导读:作者介绍了一些 Mac 上相对小众(其实不少应用,比如网易音乐、Instagram 客户端之类的也不算小众了),并且附带了功能介绍以及应用的优劣点评,甚至还有相对详细的设置说明及截图赠送。很用心,也很不错的 Mac App 推荐帖子,当然,我要声明,不少应用是要收费,各位自拿自取。

设计向 Design More,Design Better

《The Typography of Speed1》
LeanCloud 导读:BMW 與 Medium 的合作文章:BMW 教你如何設計字型。

新知向 Ren chou jiu yao duo du shu

《Rust Collections Case Study: BTreeMap》
LeanCloud 导读:介绍了 Rust 标准库中 BTreeMap 的原理和实现、二叉搜索树的基本知识,讨论了 B-Tree 的概念和参数 B 的含义和影响。最后介绍了以上内容在目前版本 Rust 语言中的实现。这个系列还有对 HashMap 结构的讨论。