小编Sam*_*mpa的帖子

如何运行Elixir或Erlang编译的梁文件?

我安装了Erlang/OTP和Elixir,并使用以下命令将HelloWorld程序编译成BEAM:

elixirc test.ex
Run Code Online (Sandbox Code Playgroud)

其中生成了一个名为Elixir.Hello.beam的文件

我该如何运行这个文件?

erlang elixir

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

推荐的PyUnit教程?

有关PyUnit入门的最佳教程是什么?

(在Google上,我倾向于发现大多数支离破碎的提示和技巧,并且在指南方面并不多)

python testing unit-testing python-unittest

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

adler32校验和的可靠性如何?

我想知道adler32校验和与md5校验和相比有多可靠?在维基百科上告诉我,adler32"比md5"更"可靠",所以我想知道它有多少,以及以哪种方式?

更具体地说,我想知道它是否足够可靠作为长期存档大小为20GB +的(tar)文件的一致性检查?

checksum md5 data-consistency adler32

19
推荐指数
2
解决办法
2万
查看次数

Rust是否适合Erlang风格的分布式软件?

我非常喜欢Golang,可以轻松地编写并发软件,以便在一台机器上使用更多的CPU内核.我有点担心得知Go并不是真正的分布式(如多节点并发)语言 - 甚至Rob Pike也承认(在GopherCon 2014上)它从一开始就不是为分布式计算而设计的,尽管有尝试帮助的GoCircuit等软件包.

因此,我最近对Erlang和Elixir感兴趣,因为经过实战的Erlang VM已被用于跨节点分发应用程序数十年.

但后来我了解到Rust从Erlang(消息传递,模式匹配)中获取大部分并发功能,同时仍然是静态类型和编译语言(因此可能更快),我想知道Rust是否可能是一个不错的选择(除此之外) Erlang/Elixir)用于编写分布式多节点软件?

以下是一些针对所寻求信息的具体问题:

  • Rust如何处理部分故障的稳健性(类似于Erlang的"让它崩溃"的理念,通过进程隔离)?
  • Rust是否在标准库或生产就绪包中提供易于使用的远程通道,消息传递或其他东西,以协助机器之间的通信?
  • Erlang/Exlixir的哪些功能可能适用于分布式软件,但在Rust中不可用?

distributed programming-languages distributed-computing rust

17
推荐指数
0
解决办法
3886
查看次数

使用子进程模块在Python中执行管道命令的任何方法,而不使用shell = True?

我想从Python运行一个管道命令行linux/bash命令,它首先记录文件,然后拆分tar文件.命令在bash中看起来像这样:

> tar -cvf - path_to_archive/* | split -b 20m -d -a 5 - "archive.tar.split"
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用子进程执行它,通过设置shell = True,并将整个命令作为字符串提交,如下所示:

import subprocess    

subprocess.call("tar -cvf - path_to_archive/* | split -b 20m -d -a 5 - 'archive.tar.split'", shell=True)
Run Code Online (Sandbox Code Playgroud)

...但出于安全原因,我想找到一种方法来跳过"shell = True"部分(它采用字符串列表而不是完整的命令行字符串,并且无法正确处理管道char).在Python中有没有解决方案?即,是否有可能以某种方式设置链接管道,或其他一些解决方案?

python bash

12
推荐指数
2
解决办法
9416
查看次数

如何保存在IPython会话中编写的代码?

可能重复:
如何保存Python交互式会话?

是否可能,如果可能,如何保存我在IPython会话中编写的代码?

最好我只输出运行没有错误的代码,但是我想,导出所​​有代码也会有很长的路要走.

python ipython

12
推荐指数
1
解决办法
9841
查看次数

Can Go可以生成并与外部进程通信,而无需为每个外部进程启动一个OS线程吗?

精简版:

是否有可能在Golang产卵一些外部程序(shell命令)的并行,使得它不会启动一个操作系统线程每外部流程...并仍然能够接收它的输出,当它完成?

更长的版本:

在Elixir中,如果使用端口,则可以生成数千个外部进程,而不会真正增加Erlang虚拟机中的线程数.

例如,下面的代码片段(启动2500个外部sleep进程)仅由Erlang VM下的20个操作系统线程管理:

defmodule Exmultiproc do
  for _ <- 1..2500 do
    cmd = "sleep 3600"
    IO.puts "Starting another process ..."
    Port.open({:spawn, cmd}, [:exit_status, :stderr_to_stdout])
  end
  System.cmd("sleep", ["3600"])
end
Run Code Online (Sandbox Code Playgroud)

(如果设置ulimit -n为高数字,例如10000)

另一方面,Go中的以下代码(它应该执行相同的操作 - 启动2500个外部sleep进程)也会启动2500个操作系统线程.所以它显然会启动一个操作系统线程 per(阻塞?)系统调用(以便不阻塞整个CPU,或类似,如果我理解正确):

package main

import (
    "fmt"
    "os/exec"
    "sync"
)

func main() {
    wg := new(sync.WaitGroup)
    for i := 0; i < 2500; i++ {
        wg.Add(1)
        go func(i int) { …
Run Code Online (Sandbox Code Playgroud)

unix concurrency multithreading elixir go

9
推荐指数
1
解决办法
1345
查看次数

如何在D中进行系统调用并读取标准输出?

我想尝试将D用于一些需要高性能的系统管理脚本(用于比较性能与python/perl等).

我在目前为止看过的教程(dsource.org等)中找不到一个例子,说明如何进行系统调用(即调用另一个软件)并从stdout接收它的输出?

如果我错过了,有人可以指向正确的文档/教程,或者立即提供答案吗?

d system-calls

7
推荐指数
1
解决办法
570
查看次数

在writefln()外部连接D串的最短方法?

我重申需要连接格式字符串,并且想知道在D中写入flfln()函数之外连接字符串的最短(或最容易阅读)的方法是什么?

也就是说,我喜欢writefln的行为,例如你可以做的事情:

// Some code to init y="2013", m="01", d="02" ...
writefln("%s-%s-%s", y, m, d);
Run Code Online (Sandbox Code Playgroud)

...但我想这样做而不在stdout上写出来.有同样简单的方法吗?

我发现的唯一想法是std.string中的format函数,但是这需要你提供预定义长度的字符串缓冲区作为第一个参数,这在大多数时候都很不方便.

我发现的另一个选择是(通过在std.array中使用"join"):

// Some code to init y="2013", m="01", d="02" ...
datestr = [y, m, d].join("-");
Run Code Online (Sandbox Code Playgroud)

...这非常方便,但只有当你使用相同的"分隔符"时才有效.

更常见的方法是,这比上面的示例短,并且不需要提供预定义长度的缓冲区字符串?

d phobos

7
推荐指数
1
解决办法
3522
查看次数

流程推理/ prolog中的反应式编程?

我想知道你是否知道使用prolog进行流处理的任何方法,即某种反应式编程,或者至少让查询在不断更新的知识库上运行(实际上是一个流),并且连续输出推理的输出?

流行的"prologs"中实现了什么,比如SWI-prolog?

stream prolog swi-prolog reactive-programming

6
推荐指数
1
解决办法
647
查看次数