首页 文章
  • 611 votes
     answers
     views

    与Project Euler进行速度比较:C vs Python vs Erlang vs Haskell

    我从Project Euler获取Problem #12作为编程练习,并比较我在C,Python,Erlang和Haskell中的(当然不是最优的)实现 . 为了获得更高的执行时间,我搜索了第一个三角形数字,其中有超过1000个除数而不是原始问题中所述的500 . 结果如下: C: lorenzo@enzo:~/erlang$ gcc -lm -o euler12.bin euler12.c lo...
  • 53 votes
     answers
     views

    Erlang进程与Java线程

    我正在读"Elixir in Action" book by Saša Jurić, and in the first chapter它说: Erlang进程完全相互隔离 . 它们不共享内存,一个进程崩溃不会导致其他进程崩溃 . Java线程也不是这样吗?我的意思是当Java线程崩溃时,它也不会崩溃其他线程 - 特别是,如果我们正在查看请求处理线程(让我们从这个讨论中排除 ...
  • 19 votes
     answers
     views

    从网络分区恢复在线mnesia [关闭]

    是否可以从mnesia集群中的网络分区恢复而无需重新启动任何涉及的节点?如果是这样,那怎么办呢? 我特别感兴趣的是: 如何使用标准OTP mnesia(v4.4.7)完成此操作 如果需要编写任何自定义代码以实现此目的(例如,订阅mnesia running_paritioned_network事件,确定新的master,将记录从非master合并到master,从新master强制加载表,...
  • 5 votes
     answers
     views

    最终与erlang一致的mnesia数据库 . 最好的做法是谁?

    我在erlang写了一个bittorrent跟踪器 . 鉴于服务的性质,我不需要绝对的一致性(即客户可以完全满意稍微过时的同行列表或torrent状态) . 到目前为止,我的策略是在RAM中创建mnesia表并启用disc_copies,这样当日志大小超过一定大小时,mnesia会自动将内存转储到磁盘 . 如果服务器崩溃,某些信息将丢失 . 没有大碍 . 另一种方法是实例化两个表(仅一个ram和一...
  • 13 votes
     answers
     views

    gen_server与dict vs mnesia table vs ets

    我正在构建一个erlang服务器 . 用户向服务器发送http请求以更新其状态 . 服务器上的http请求进程将用户状态消息保存在内存中 . 服务器每隔一分钟将所有消息发送到远程服务器并清除内存 . 如果用户在一分钟内多次更新其状态,则最后一条消息将覆盖前一条消息 . 重要的是,在读取所有消息并清除它们之间,其他任何进程都无法写入状态消息 . 实施它的最佳方法是什么? 带有字典的 gen_ser...
  • 153 votes
     answers
     views

    从技术上讲,为什么Erlang中的进程比OS线程更有效?

    Erlang的特点 来自Erlang Programming(2009): Erlang并发性快速且可扩展 . 它的进程是轻量级的,因为Erlang虚拟机不会为每个创建的进程创建一个OS线程 . 它们在VM中创建,调度和处理,与底层操作系统无关 . 结果,进程创建时间大约为微秒,并且与并发存在的进程的数量无关 . 将其与Java和C#进行比较,其中为每个进程创建一个底层OS线程:您将获得一些非常...
  • 5 votes
     answers
     views

    具有大状态的erlang gen_server

    我有一个trie(用元组和列表实现)有几千个条目,我想支持并发读取 . 数据的内存占用量在10-20 MB范围内 . trie只构建一次,之后才能读取 . What is the recommended way to maintain the state and give clients concurrent access? 这是我尝试过的: 1)创建一个以trie为状态的gen_server ...
  • 0 votes
     answers
     views

    链接处理websocket连接的牛仔进程(牛仔,erlang)

    我正在开发一个使用牛仔和sockjs的erlang应用程序,我想知道是否可以链接处理websocket连接的牛仔进程? 现在具有gen_server行为的进程与每个websocet连接相关联 . 这样的进程在init中存储Conn实例,当客户端关闭连接时,此进程从websocket处理程序终止,如果gen_server进程终止,则从gen_server的terminate()调用Conn:clos...
  • 0 votes
     answers
     views

    Erlang主管流程

    我一直在深入学习Erlang,在完成Joe Armstrong的“编程Erlang”之后,有一件事我不断回归 . 在我看来,Supervisor会为每个子处理程序生成一个进程 . 因此,每个声明的gen_server类型处理程序将作为单独的进程运行 . 如果您正在构建一个小型Web服务器,并且您希望每个请求都是自己的进程,会发生什么 . 你是否仍然遵循OTP原则并以某种方式使用gen_server...
  • 0 votes
     answers
     views

    如何将崩溃的erlang mnesia节点重新连接到集群?

    我正在学习erlang和mnesia . 我有一个问题:如何将“崩溃的”erlang mnesia节点再次重新集中到群集中? Erlang / OTP 17 [erts-6.2] 我做了什么: 两个mnesia节点:m11 @ deb83-11和m12 @ deb83-12 . 他们很好地相互联系 . (m11@deb83-11)4> mnesia:system_info(running...
  • 0 votes
     answers
     views

    Erlang,提取标签

    我试图从使用twiter api时检索到的列表中提取一个#标签 . 我用它来提取标签: case extract(<<"entities">>, L) of {found, {TE}} -> {found, Hashtags} = extract(<<"hashtags">>, TE...
  • 17 votes
     answers
     views

    用一种语言编写GUI,用另一种语言编写主应用

    假设我在Haskell或Erlang中编写了一个应用程序(或其他任何内容,无关紧要),我希望它能用更友好的语言(我的观点)与我的gui一起工作 . 让我们说Python . 如何粘这两个?您将如何在这两个应用程序之间进行通信?制作某种服务器或什么?这种解决方案很受欢迎吗?我见过像SMplayer这样的东西,它是mplayer的gui,它的效果非常好 . 您对这种设计有何看法?
  • 2 votes
     answers
     views

    如何告诉rebar在下载之前检查另一个目录中的deps?

    我的Erlang项目有两个用于应用程序的文件夹, lib (带有我自己的应用程序)和 deps (用于从git获取的rebar.config中定义的那些) . 其中一个deps(让's call it A) has itself a dep (let'称之为B) . 但我有自己的,修改后的B版本,位于 lib . 当我运行get-deps时,钢筋下载A(应该如此),然后递归查找它的deps,下载...
  • 2 votes
     answers
     views

    如何在Erlang中安装应用程序?

    在我的项目中,我想使用mysql,所以我结帐这个https://github.com/dizzyd/erlang-mysql-driver . 我想知道如何安装应用程序,以便我的项目可以与之交互
  • 15 votes
     answers
     views

    Erlang / OTP 生产环境 应用程序部署简介

    我想在VPS上开发和部署Erlang / OTP应用程序 . 我非常熟悉在本地机器上开发Erlang代码,我的问题是关于部署 . 基本上,我想知道我应该采取哪些步骤将Erlang代码从本地机器移动到 生产环境 服务器并使其运行,即可供用户使用 . 注意:我已经阅读了一些关于Erlang and command line,Erlang code模块,Erlang releases的文档,但我仍然不确...
  • 0 votes
     answers
     views

    使用rebar,dev环境的erlang OTP应用程序

    我正在处理或学习erlang OTP和rebar,我已经使用几个依赖项组合了一个小示例应用程序:牛仔和啤酒 . 我发了 rebar get-deps rebar compile 事情进展顺利 . 现在我想启动我的控制台来测试周围的事情但是对我来说如何启动依赖应用程序并不明显 . 我试过发一个 rebar generate 为了获得启动应用程序的所有编排,即使它对于开发测试来说太过分了,但是我很...
  • 3 votes
     answers
     views

    如何创建一个不是Erlang OTP应用程序的钢筋模块?

    是否可以使用rebar创建一个基于OTP应用程序 not 的简单项目模块框架?总的来说,我想使用该项目结构成为其他钢筋生成的应用程序的库 . 结构应如下: /myprojectlib /src /ebin /deps 我的想法是在 rebar.config 文件的 deps 部分使用它: { deps, [myprojectlib] }. 目前,由于myproj...
  • 0 votes
     answers
     views

    Erlang App不做项目

    有一个Erlang语言的项目,如果我想用Rebar提升它,Rebar就是get-deps rebar compile我得到这样的错误: Uncaught error in rebar_core: {'EXIT', {badarg, [{io,format, ...
  • 1 votes
     answers
     views

    如何使用雅司作为螺纹钢OTP发布的一部分?

    我已经密切关注了关于dependencies management和release handling的钢筋文档,并试图创建一个类似于accepted answer中描述的版本的一个版本 . 但是,我不能将yaws作为OTP应用程序包含在由rebar生成的OTP Release中 . 这是我做的: 根据官方钢筋文件创建一个版本(完成后,可以使用/ rel / myapp / bin / myap...
  • 0 votes
     answers
     views

    如何使用emacs编译erlang项目

    我查过了erlang-mode的文档 . 它似乎是C-c C-k,(erlang-compile) - 在当前缓冲区中编译Erlang模块 . 只编译一个当前缓冲区的文件 . 我想在emacs上用rebar commond编译一个项目 . 例如 . ./rebar编译 它可以显示结果,如执行“erl -sname -pa ebin -pa deps / * / ebin” . 如何在emacs上...
  • 3 votes
     answers
     views

    使用lager_transform的ejabberd和Erlang安装未定义

    我是Erlang的新手,我一直在尝试在EC2 ubuntu机器上安装Erlang和ejabberd,一切顺利,直到我开始在ejabberd中编译一些外部模块 . 它开始抛出错误“未定义的解析变换'lager_transform'” . 我尝试了以下所有内容: rebar得到了deps,干净,做了deps,make install . 在此之后,我能够看到lager_transform.beam...
  • 2 votes
     answers
     views

    二郎神; OTP应用程序“app.config”

    我有一个OTP应用程序 . 到目前为止,我有两个配置文件: rebar.config 和 config/vm.args ,后者在前者引用: {vm_args, "config/vm.args"} . 在更大的文档中:https://github.com/erlang-lager/lager提到了另一个配置文件: app.config . 这个文件在哪里,我如何从我的reba...
  • 1 votes
     answers
     views

    如何在Erlang中获取UDP的短暂端口?

    我正试图找到一种方法来打开一个短暂的端口(https://en.wikipedia.org/wiki/Ephemeral_port基本端口,而不必提供特定的端口号,并从短暂的端口范围) . 这是通过UDP协议的客户端请求 . 我知道如何通过以下方式打开UDP通信的特定端口: {ok,Socket} = gen_udp:open(8000). 但是,不要提前知道可用的端口号,只要系统提供一个,如果...
  • 237 votes
     answers
     views

    为什么Elixir有两种功能?

    我正在学习Elixir,并想知道为什么它有两种类型的函数定义: 在 def 模块中定义的函数,使用 myfunction(param1, param2) 调用用 fn 定义的 匿名函数,使用 myfn.(param1, param2) 调用 只有第二种函数似乎是第一类对象,可以作为参数传递给其他函数 . 模块中定义的函数需要包装在 fn 中 . 有一些语法糖看起来像 otherfunction...
  • 3 votes
     answers
     views

    SSL响应分为两个回调

    我正在开发一个客户端 - 服务器应用程序,并负责添加对websockets运行的支持 . 我在服务器端使用Cowboy,并且一直在使用Erlang websocket客户端进行测试 . 事情应该是这样的: 客户端打开套接字连接并启动http握手 服务器完成http握手 客户端向服务器发送消息,服务器发送回复 客户端处理回复 重复3和4 客户端模块实现 handle_info...
  • 1 votes
     answers
     views

    tcp服务器和客户端交互

    我有一个接受连接的tcp服务器(echo服务器) . 我有一个客户端,当给定参数N时,创建那些试图与tcp监听器连接的进程 . 我能够连接到那些套接字,但我可以看到许多套接字被关闭,这很明显,因为我使用的是echo服务器,我没有收到我发送的消息 . 这是服务器代码(关键部分) init(State = #state{port = Port}) -> ets:new(csockets, [o...
  • 95 votes
     answers
     views

    Elixir / erlang在哪里适合微服务方法? [关闭]

    最近我一直在用docker compose进行一些实验,以便部署多个协作微服务 . 我可以看到微服务提供的许多好处,现在有一个很好的工具集来管理它们,我认为跳进微服务车并不是很难 . 但是,我也一直在尝试Elixir,我非常喜欢它本身提供的好处 . 鉴于它鼓励将代码打包到多个解耦的应用程序中,并支持热代码升级,您如何将docker与elixir(或erlang)混合使用? 例如,如果我想使用doc...
  • 0 votes
     answers
     views

    尝试运行escript但只获得“NRPE:无法读取输出”

    我正在使用Nagios来监控我的服务器,我想通过NRPE在服务器上运行一个escript文件 . 所以我必须使用CHECK_NRPE方法来调用escript,这是一个Erlang脚本文件 . 这是我的escript文件: #!/usr/bin/env escript main(_) -> io:format("test\n"), halt(1). 当...
  • 2 votes
     answers
     views

    在Erlang中查找路由接口

    我有一台具有多个网络接口的机器,每个接口连接到不同的网络 . 我想从Erlang应用程序中找到将用于连接到给定主机的接口 . 例如,我有一台带有接口eth0和eth1的机器 . eth0位于10.x.x.x网络上,eth1位于192.168.0.x网络上 . 我想要一个给ip地址10.0.1.2的函数告诉我eth0并给出ip地址192.168.0.74会告诉我eth1 .
  • 62 votes
     answers
     views

    构建基于Actor的系统的设计模式/最佳实践

    我正在努力寻找任何适当的链接来设计模式,最佳实践或良好的基本架构原则,这些原则应该用于构建基于Actor的应用程序 . 我知道的那几个是: 博客文章,文章,WIKI,指南 OTP Design Principles User's Guide Patterns and Best Practices for Enterprise Integration(一般情况下,可以应用于任何消息驱动架构)...

热门问题