小编Mic*_*ser的帖子

在NodeJS中使用流进行TDD /测试

我一直试图找到一种合理的方法来测试使用流的代码.有没有人找到合理的方法/框架来帮助测试在nodejs中使用流的代码?

例如:

var fs = require('fs'),
    request = require('request');

module.exports = function (url, path, callback) {
  request(url)
    .pipe(fs.createWriteStream(path))
    .on('finish', function () {
      callback();
    });
};
Run Code Online (Sandbox Code Playgroud)

我目前测试这种类型代码的方法或者包括使用流来简化代码,以至于我可以将它抽象为未经测试的代码块,或者通过编写类似这样的代码:

var rewire = require('rewire'),
    download = rewire('../lib/download'),
    stream = require('stream'),
    util = require('util');

describe('download', function () {
  it('should download a url', function (done) {
    var fakeRequest, fakeFs, FakeStream;

    FakeStream = function () {
      stream.Writable.call(this);
    };

    util.inherits(FakeStream, stream.Writable);

    FakeStream.prototype._write = function (data, encoding, cb) {
      expect(data.toString()).toEqual("hello world")
      cb();
    };

    fakeRequest = function (url) {
      var …
Run Code Online (Sandbox Code Playgroud)

testing tdd stream node.js

35
推荐指数
4
解决办法
1万
查看次数

在普通函数中返回Golang中的'ok'映射

在Go中,以下工作(注意一个地图的使用有一个返回,另一个有两个返回)

package main

import "fmt"

var someMap = map[string]string { "some key": "hello" }

func main() {
    if value, ok := someMap["some key"]; ok {
        fmt.Println(value)
    }

    value := someMap["some key"]
    fmt.Println(value)
}
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何用自己的功能做同样的事情.是否有可能与可选的返回类似的行为map

例如:

package main

import "fmt"

func Hello() (string, bool) {
    return "hello", true
}

func main() {
    if value, ok := Hello(); ok {
        fmt.Println(value)
    }

    value := Hello()
    fmt.Println(value)
}
Run Code Online (Sandbox Code Playgroud)

不会编译(由于错误multiple-value Hello() in single-value context)...有没有办法使这个语法适用于该函数Hello()

return-value go multiple-return-values

17
推荐指数
1
解决办法
5432
查看次数

GitHub的Redis和Resque失败行为?

任何人都可以了解GitHub在使用Resque时如何处理Redis服务器的潜在故障或暂时不可用?

还有其他一些似乎已经将半复杂的解决方案放在一起作为使用zookeeper的redis-cluster的保留(请参阅https://github.com/ryanlecompte/redis_failover解决方案for resque failover redis).其他人似乎有"糟糕的故障转移",在第一次看到连接问题时将奴隶切换到主设备而没有redis客户端之间的协调(但这在临时不可用情况下似乎有问题).

问题:Defunkt曾经谈过GitHub如何处理Redis失败?是否存在不涉及zookeeper的故障转移的最佳实践?

关于resis的原始帖子说明Redis的选择理性的一部分是redis的主从功能,但该帖没有描述GitHub如何利用这一点,因为所有工作者都需要对Redis的读写访问权限(参见https: //github.com/blog/542-introducing-resque).

github resque redis

10
推荐指数
1
解决办法
960
查看次数

使用Ruby + Webrick + Sinatra,'开发'在哪里?方法来自哪里?

使用ruby + webrick + sinatra时,'开发模式'的概念来自哪里?

require 'sinatra'
require 'sinatra/reloader'

get '/test' do
  development?.to_s
end
Run Code Online (Sandbox Code Playgroud)

当我通过'ruby test.rb -p 3000'运行上述应用时,http:// localhost:3000/test返回"true"...但为什么它会返回true?开发模式是ruby,webrick,rack还是sinatra概念?此外,此功能是否记录在任何地方,特别是以非特定于轨道的方式?我发现很多人都参考了开发模式的概念,但我一直惊讶于找到相关信息的难度......也许我只是没有谷歌正确的关键词......

ruby rack sinatra development-mode

4
推荐指数
1
解决办法
1526
查看次数

使用带有RVM的git gems的"bundle install"时,'gem list'找不到宝石

我目前正在尝试运行'bundle install'来使用Gemfile安装基于git的gem,因此使用ruby/other ruby​​命令而不使用最新版本的RVM(1.14.3).

我相信问题的原因是bundler将git gem安装到.rvm/gems/ruby​​-1.9.3-p194 @ something/bundler/gems中,而所有其他gem都安装到.rvm/gems/ruby​​-1.9中. 3-P194 @东西/宝石.因此,'捆绑列表'显示了宝石,但'宝石列表'没有.

这有什么想法?我真的不想使用bundle来执行所有操作.

ruby git gem bundler rvm

4
推荐指数
1
解决办法
2844
查看次数

Golang中的多部分表单上传+内存泄漏?

以下服务器代码:

package main

import (
  "fmt"
  "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
  file, _, err := r.FormFile("file")
  if err != nil {
    fmt.Fprintln(w, err)
    return
  }
  defer file.Close()

  return
}

func main() {
  http.ListenAndServe(":8081", http.HandlerFunc(handler))
}
Run Code Online (Sandbox Code Playgroud)

正在运行然后调用它:

curl -i -F "file=@./large-file" --form hello=world http://localhost:8081/
Run Code Online (Sandbox Code Playgroud)

large-filedarwin/amd64和linux/amd64的Go 1.4.2中,大约80MB似乎有某种形式的内存泄漏.

当我连接时pprof,我看到bytes.makeSlice在调用服务几次后使用96MB内存(最终r.FormFile在上面的代码中调用).

如果我一直打电话curl,这个过程的内存使用量会随着时间的推移而变慢,最终看起来在我的机器上大约300MB.

思考?我认为这不是预料/我做错了什么?

memory-leaks memory-management go

4
推荐指数
1
解决办法
1889
查看次数

AWS ELB IP地址是ELB独有的吗?

有谁知道AWS ELB如何在幕后工作?在我的ELB域名上运行nslookup,我得到4个唯一的IP地址.如果我的ELB启用了SSL,AWS是否可以与其他启用SSL的ELB(不一定归我所有)共享这些相同的IP?

据我了解,Web请求中的主机名是在https请求的加密Web请求中.如果是这种情况,AWS是否必须为每个启用SSL的ELB提供从未与其他任何人的SSL ELB实例共享的唯一IP地址?换句话说,AWS是否为您要求的每个SSL ELB提供4个唯一的IP地址?

ssl amazon-web-services amazon-elb

3
推荐指数
1
解决办法
2595
查看次数