小编sfi*_*nie的帖子

OTP - 同步和异步消息传递

免责声明:erlang新手.

最初吸引我到erlang的一件事是演员模型; 不同进程同时运行并通过异步消息进行交互的想法.

我刚刚开始考虑OTP,特别是看gen_server.我见过的所有示例 - 并且授予它们是教程类型示例 - 使用handle_call()而不是handle_cast()实现模块行为.

我觉得有点混乱.据我所知,handle_call是一个同步操作:调用者被阻塞,直到被调用者完成并返回.这似乎与异步消息传递哲学背道而驰.

我即将开始一个新的OTP应用程序.这似乎是一个基本的架构决策,所以我想在开始之前确定我理解.

具体来说,我的问题是:

  1. 在实际操作中,人们倾向于使用handle_call而不是handle_cast吗?
  2. 如果是这样,当多个客户端可以调用相同的进程/模块时,可扩展性的影响是什么?

谢谢.

erlang

16
推荐指数
2
解决办法
6273
查看次数

通过示例提出规范的工具建议,其中分析人员(而非开发人员)编写测试?

我们正在寻求一种bdd风格的方法,以Gojko Adzic的规范为例启发。实现是在Java中进行的,开发人员已经在编写junit测试。

关键要求是规范(验收测试)可由非开发人员编写,阅读和维护。该项目将以敏捷团队的身份运行-因此,如果开发人员必须遵守规范,那就很好。但是,我不希望开发人员,测试人员或领域专家必须阅读或编写类似于代码的内容。

到目前为止,我已经研究了FitNesseConcordion和其他各种工具(例如Spock)。我拒绝使用Spock和类似工具,因为它们将开发人员作为主要受众。FitNesse似乎可以满足大多数要求。

不过,Concordion可能是当前的最爱:规格看起来更简洁。

所以我的问题(实际上是三个):

  1. 对我应该查看的其他工具有什么建议吗?
  2. 有没有人以这种方式成功使用手风琴(或其他工具)?
  3. 是否仍在积极开发/支持手风琴?很难从网站上说出来,而且大多数相关的SO问题都已经有好几年了。

谢谢。

bdd specifications acceptance-testing concordion

5
推荐指数
1
解决办法
1500
查看次数

在R中流处理大型csv文件

我需要对一个非常大的csv文件(c.8.5GB)进行几个相对简单的更改。我最初尝试使用各种读取器功能:read.csv,readr :: read.csv,data.table :: fread。但是:它们全部用尽了内存。

我在想我需要使用流处理方法。读取,更新,写入,重复。我找到了正确的答案。但是我不怎么终止循环(我是R的新手)。

所以我有两个问题:

  1. 使while循环起作用的正确方法是什么?
  2. 有没有更好的方法(用于“更好”的定义)?例如,有什么方法可以使用dplyr和管道吗?

当前代码如下:

src_fname <- "testdata/model_input.csv"
tgt_fname <- "testdata/model_output.csv"

#Changes needed in file: rebase identifiers, set another col to constant value
rebase_data <- function(data, offset) {
  data$'Unique Member ID' <- data$'Unique Member ID' - offset
  data$'Client Name' <- "TestClient2"
  return(data)
}

CHUNK_SIZE <- 1000
src_conn = file(src_fname, "r")
data <- read.csv(src_conn, nrows = CHUNK_SIZE, check.names=FALSE)
cols <- colnames(data)
offset <- data$'Unique Member ID'[1] - 1

data <- rebase_data(data, offset)
#1st time …
Run Code Online (Sandbox Code Playgroud)

csv r chunks

5
推荐指数
1
解决办法
1285
查看次数

在erlang中打印回车(不是换行)?

想知道是否可以在erlang中打印没有换行符的回车?即相当于printf("this will be replaced next time \r");C.

看了一下io:format()文档并没有看到任何内容.它似乎只支持~n,相当于回车+换行对(C中的'\n').

谢谢.

erlang

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

由Tycho构建的更新站点在重新构建后仍然包含错误的依赖性

我已经使用Tycho构建了一个Eclipse更新站点,但是当尝试从其中安装一个功能到目标IDE失败时.

更新站点建立良好; 我可以从目标Eclipse安装中看到它并选择要安装的功能.但是,依赖性检查在安装开始时失败,因为它无法找到声明的依赖项(org.eclipselabs.xtext.utils.unittesting).这应该不是依赖:它错误地包含在MANIFEST.MF中,用于我的一个eclipse插件项目.

我从清单中删除了依赖项并mvn clean install再次运行.构建报告成功,但是当我尝试使用新构建的更新站点时,它仍然抱怨对org.eclipselabs.xtext.utils.unittesting(a)的依赖性存在并且(b)不能满足.

所以问题是:我还需要做些什么才能从生成的更新站点中删除依赖项?

谢谢你的任何指示.

PS:我知道我可以在目标eclipse安装中添加oexuunittesting的站点,以便它可以满足依赖性.但是我不想这样做; 该功能不需要它,我不希望其他用户必须添加不必要的依赖项.

xtext tycho maven

2
推荐指数
1
解决办法
1225
查看次数

标签 统计

erlang ×2

acceptance-testing ×1

bdd ×1

chunks ×1

concordion ×1

csv ×1

maven ×1

r ×1

specifications ×1

tycho ×1

xtext ×1