因为最近要在couchdb中使用Proxy Authentication

于是参照文档,修改local.ini配置为:

authentication_handlers = {couch_httpd_auth, cookie_authentication_handler}, {couch_httpd_auth, proxy_authentication_handler}, {couch_httpd_auth, default_authentication_handler}  

但是参照文档中修改配置之后,启动服务,会出现如下错误:

{
    error: "unknown

大家都知道在node中Readable Stream有两种模式: flowing modenon-flowing mode

对于flowing modeReadable Stream, 我们是没法控制它何时去读数据读多少的,它会去尽快的去消耗data,并emit出来。

// in lib/_stream_readable.js
if (state.flowing && state.length === 0 &&!state.sync) {  
        stream

在stackoverflow上看到一个关于Why does IntelliJ IDEA compile Scala so slowly?的问题,顿时感到scala在语法层面做的许多杰出的设计,但是为了和java兼容,最终在一定程度上限制了自己的发展。

scala可能是为了快速的在各个公司里面推动,选择了完全和java现有代码兼容,而不是只在二进制层面上保持一致。

scala的sdk和类型系统都建立在java的类型系统之上的,而目标是工业使用的scala语言需要提供大量的内置工具,而一个建立在java类型系统之上的更复杂的类型系统则不得不付出在编译时的开销。

scala的类型检测对于大型项目非常重要,但是是否能够有选项使得能够某些时候能用来最快速开发,而不做类型检测? 不过scala一开始就不是瞄准着脚本语言去做的,而脚本语言则更容易构建原型系统或执行轻量级的任务。

没有过大型项目使用scala的经验。所以基本是随便扯扯。

其实对于大型项目来说,一定是有多个部分(可能是一个人开发,更多的情况是由不同的团队开发)组成的,而组件之间的沟通与协作则是很容易出问题的地方。静态类型语言在大型项目开发上更有优势的地方是程序代替人对代码做了严格检测,以丧失灵活性为代价。这样可以避免一些错误

Heroku团队根据heroku platform api和他们自己内部系统的实践经验总结了一些http api设计的准则,发布到了github上。
地址:

https://github.com/interagent/http-api-design

鉴于见到太多公司的http接口没有按照标准规范来实施,推荐做服务接口设计和前端的同学都看看。

其中很重要的几条抽出来:

  • 返回正确的状态代码

不要始终使用200! 201,202对应不同的METHOD是很有意义的。 出现错误是应该返回正确的状态码,是请求参数错误请返回400,是服务器内部出错请返回500,服务器压力过大需要kill连接请返回503,对于行为错误而不是权限问题不要使用401而要用403。这些状态代码本身都有意义,不需要去而外的创建代码或者用额外的属性。

  • 以ISO8601格式来使用UTC时间

记得使用UTC,同时格式统一,真的需要在每个项目里面去引用moment.js来处理时间?时区和格式足够头痛了,moment.js也不是万能的

从octopress迁移到ghost,有后台可以live review的平台还是比裸写markdown的感觉更好。

ghost要导入之前的博客需要进入 'host/ghost/debug' 来导入json文件,做了个小工具去扫 _posts 下面的 *.md*.mardown文件, 最终生成 exports.json 可以导入ghost.

npmjs.org/oghost

npm install oghost -g  
cd _posts  
oghost > exports.json  

导入的时候发现ghost的tag和post对应关系生成不了,报了

Unique

CommonJS和AMD的争论已经有很多,而两者也在项目进化和融合。

个人看来CommonJS更面向于开发者,对于开发者来说,需要的是清晰的版本和管理,更少的代码和干扰,更少的配置。而AMD在代码中允许匿名模块,模块名称和变量之间关系的不清晰,非就近依赖,冗余依赖定义都不是开发者友好。

require2commonjs 提供了命令行和node模块来将在requirejs中使用的AMD转化为CommonJS格式,方便其他使用CMD或者 node cortex 等外部系统来使用。

目前的官方AMD提供一下几种方式去定义一个模块:

1) Dependency-free module, simple object

define({  
    add: function(a, b) { return a + b; }
});

没有任何依赖,直接定义模块的exports。这种情况下要将AMD转话为CommonJS模块,只需要变为

Regexp.toString在不同浏览器下修辞符顺序不一致。

Chrome, firefox

var re = /abc/gim;  
re.toString(); // return '/abc/gim'  

IE 9.0

var re = /abc/gim;  
re.toString(); // return '/abc/igm'  

在处理Cookie的时候发现不能处理servlet request中不能获取cookie中的带":"字符的值.

Cookie[] cookies = request.getCookies();  
if (cookies != null) {  
    for (Cookie cookie : cookies) {
        if (StringUtils.equalsIgnoreCase(cookie.getName(), name)) {
            value = cookie.getValue(); // if the value in cookie is 'http://example.com' then here it

Iscroll是在移动端开发不可缺少的组件,至少在实现原生的overflow:scroll之前。其中碰到有两个问题。

  1. Function.prototype.bind iscroll5在indicator中使用了bind, 但是这个bind在2.x的android浏览器上和webview中都没法使用,导致脚本出错。
this.fadeTimeout = setTimeout((function (val) {  
    this.wrapperStyle.opacity = val;
    this.visible = +val;
}).bind(this, val), delay);

去掉bind, 改成closure解决问题

var selft = this;  
self.fadetimeout = setTimeout