知识共享许可协议

在 JavaScript 中实现私有成员的语法特性

前言

在面向对象的编程范式中,封装都是必不可少的一个概念,而在诸如 Java,C++等传统的面向对象的语言中, 私有成员是实现封装的一个重要途径。但在 JavaScript 中,确没有在语法特性上对私有成员提供支持, 这也使得开发人员使出了各种奇技淫巧去实现 JS 中的私有成员,以下将介绍下目前实现 JS 私有成员特性的几个方案以及它们之间的优缺点对比。

阅读全部

设计易用的RESTFul API

早期互联网很大一部分是静态文件的堆积。因此,我们上网访问的其实都是一个个静态的资源。通过 URL 的定义,可以很方便地找到资源。

随着互联网应用规模的扩大,以及应用复杂度的提高,之前的静态资源已经不能满足需求,网站返回给访问者的内容需要通过动态的方式生成(例如通过获取数据库的内容),同时还支持由访问者控制希望看到的内容。 传统的用于定位资源位置的 URL 的定义变得复杂起来。

本篇内容偏向于 Web API 设计中,有关 URL 部分的讨论。

阅读全部

LineUp:多属性排序的可视分析

译自:LineUp: Visual Analysis of Multi-Attribute Rankings

前言

在我们的日常生活中经常会遇到各种各样的排序列表,排序是将无序的数据项集合重组的普遍方式,它基于数据项的单个或多个属性值为数据项计算一个排名。多属性排序是普遍存在的,在多属性排序中,我们无法直观理解单个属性对排序所作得贡献以及单个或多个属性的变动是如何影响排序的。

具体来说多属性排序可视化工具需要解决的问题为:

  1. 当诠释一组排序时,我们想知道为什么一个数据项的排名比其他项要低(高),是因为它的所有属性值都低(高)还是因为它的某个属性值较低(高)。
  2. 如何使得不同类型的属性之间具有可比性,并且组合在一起产生一个排名。
  3. 如何比较同一个数据项的不同排名,如修改一个数据项的属性,它的排名会相应变化,我们希望比较这些变化的排名。
  4. 如果可以修改排序中单个或多个数据项的属性,我们希望探究属性值改变所产生的效果。

在这篇文章中将介绍对多属性排序可视化的需求所作的全面分析,以及全新的多属性组合排序可视分析技术LineUp的设计与实现。

阅读全部

全息机器人项目的技术方案选型过程

前段时间上线了全息机器人项目,线上访问可直接在手机百度 APP 中语音搜索 百度神灯 即可(请在wifi环境下访问)。项目部分截图如下:

通过部分截图可以看出,这个项目主要是两部分,一部分正常的动画引导页面(前四个截图所示),另外一部分是全息播放页面(最后一个截图所示)。其中动画引导页面共有十一个,全息播放页面有四个,进入每个全息页面前都会一些动画引导的页面。

这篇文章主要从 方案制定遇到的问题以及应对方法 等方面来对项目中这两部分做一个介绍。

正常动画部分

方案制定

在没有老旧 IE 的情况下,做动画的选择是比较多的,SVGCSS3CANVAS 等等。最开始拿到这个项目的时候,结合这三种各自的特点,最终选择了主要动画由 CANVAS 来实现,具体原因如下:

阅读全部

基于百度网盘构建的Android SDK镜像

因为某些奇怪的原因,国内访问 Android 镜像的时候总是会失败,导致更新 Android SDK 的时候非常困难,虽然国内有一个 http://www.androiddevtools.cn/ 收集了很多 Android 开发相关的资源。

但是对于我本人而言,使用这里面提供的代理服务器的时候,速度还是慢的跟蜗牛一样。另外我使用的是中国电信的宽带,虽然购买了 VPN 但是速度还是很不理想,可能也跟 如何看待上海电信访问国外网站困难,并推出国际精品网、国际氮气瓶业务? 有些关系。

知乎上面也有一个相关的话题讨论 谷歌不能访问了 怎么构建安卓开发环境?

因此我开始考虑是否可以自己弄一个代理服务器,借助于百度网盘的CDN网络,提供更快的下载速度。

阅读全部

CSS 代码静态质量检查

关于代码静态质量检查,在大佛的上一篇文章 《JavaScript 代码静态质量检查》中已经说得很明白了,虽然主要讲的是 JavaScript 方面,但代码静态质量检查的本质是不变的,今天我们来介绍一下 CSS 方面的静态质量检查。

CSS 中也有一些 Lint 工具,例如 CSSLintPrettyCSSrecessCKStylestylelint,当然还有百度 EFE 出品的 CSS 代码风格检查工具 CSSHint。本文将从功能、性能、适用范围、规则实现、个性化几个方面对这几个 Lint 工具进行对比。

阅读全部