概述
Partial Application?不要被字面意思误解,这里要说的并不是 Application,而是 JavaScript 中的 function。可以这样来描述 Partial Application,一个接受多个参数的函数,预先给该函数绑定一些参数,并返回一个新的函数来接受剩下未绑定的参数。貌似有点像柯里化(currying)函数,但不尽然。
典型的柯里化函数定义如下:
js
Function.prototype.curry = function() {
var fn = this, args = Array.prototype.slice.call(arguments);
return fun
继续阅读 »
概述
代码发布打包的时候,有很多种方式,其中一种方式在打包的时候可以将整个项目中所用到的依赖包全部一起打包。一般叫做Standalone Application.j即可独立运行的应用。
这种打包方式的优点是显而易见的,即打包之后一个Jar即可运行。迁移快,成本低。相反的,其缺点是如果依赖包升级,则需要重新发布打包。所以这种方式适用于小项目,依赖包少的项目。
继续阅读 »
Currying and partial application are two ways of transforming a function into another function with a generally smaller arity.
继续阅读 »
Installation
npm install express
Usage
```javascript
var express = require('express');
var app = express();
继续阅读 »
1. 从我在Erlang and OTP in Action中第六章中的错误说起
前两天看EOIA这本书,觉得终于可以用Erlang来搞点东西玩了,于是决定按照书中流程来实践一下所谓的缓存系统。
谨慎起见,我还是半抄半写把simple_cache的源码写好了,当前目录结构如下:
chenshan@mac007 6-EOIA$tree
.
├── ebin
│ ├── prim_consult.beam
│ ├── sc_app.beam
│ ├── sc_element.beam
│ ├── sc_store.beam
│ ├── sc_sup.beam
│ ├── simple_cache.ap
继续阅读 »
如何自己写一个 gradle 插件
看谷歌的插件:com.android.application 和 com.android.databinding:
gradle
apply plugin: 'com.android.application'
apply plugin: 'com.android.databinding'
他们都是一个 groovy 项目,那么接下来让我们来看看如何自己手动写一个插件:
创建一个普通的 groovy 工程(java 工程也没有关系),创建 src/main/groovy 目录,编写下面的代码:
```java
package com.example.wecar.plugin
import
继续阅读 »
随着APP的不断开发,启动时(Application类的onCreate函数中)需要做的事情越来越多,这将导致APP冷启动(杀死进程后的第一次启动)变慢,有分析表明,APP冷启动时间大于2s时,大部分用户将失去耐心。
提升APP启动速度
其实并不是所有的事情都需要在Application类的onCreate函数中执行,例如一些第三方库的初始化,可以专门增加一个SplashActivity来初始化这些第三方库,但是同样的道理,如果这些初始化工作放到SplashActivity的onCreate函数中执行,APP的冷启动依然很慢,进一步的尝试是把这些初始化工作异步化。
继续阅读 »
服务的增删改查
在Nova中提供对Service资源的操作API,包括服务的查询、删除、更新。
查询操作使用如下(假设你已经拿到了keystone的token):
URL: http://{ip}:8774/v2/{tenant-id}/os-services(后面可以加过滤条件?binary=nova-compute或者?host=ubuntu)
Accept: application/json
Content-Type: application/json
X-Auth-Token: {token}
在看返回消息体之前,先熟悉一下Service的数据库模型:
id = Column(Integer, pri
继续阅读 »
本文的前身是一篇笔记,比较零碎,发布出来是为了让后续的文章可以有一个基本的参考,本文会持续更新。
NDK 的高性能最常见的场景:多媒体,游戏。此外,利用 NDK 还能练习 C/C++,一举两得。
基本概念
shared library, .so
static library, .a
JNI: Java Native Interface
Application Binary Interface, ABI:我们将符号修饰标准、变量内存布局、函数调用方式等跟可执行代码二进制兼容性相关的内容称为程序的 ABI(摘自《程序员的自我修养》);
Application Programming Interface, API:API 是源码层面
继续阅读 »
目录结构
一个合理的目录结构首先应该是清晰的,让人一眼看上去就能大概了解目录的职责,且容易应对新的变化。
常规的两种结构:
主目录按照业务分类,内目录按照模块分类(主目录按照MVC架构分类,内部根据项目模块分类)
优点:相对比较快定位对应的业务。
缺点:模块相关类太过分散,需要来回切换寻找文件,不方便开发。
├── Application
├── Categories
├── Controllers
│ ├── Blog
│ ├── Comment
│ ├── Login
│ ├── News
| ...
├── Models
│
继续阅读 »