- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关闭。这个问题需要更多 focused .它目前不接受答案。
想改进这个问题?更新问题,使其仅关注一个问题 editing this post .
5年前关闭。
Improve this question
我正在为 Erlang 寻找 future 版本的分布式软实时托管的基于 Web 的电话应用程序(即,Erlang 看起来绝对是此类应用程序的完美选择)。我来自 .NET 背景,这个应用程序的当前版本使用 C#、WCF 和 JQuery 的组合来提供服务。我现在需要 Erlang 来让我的正常运行时间增加额外的 9,并让我获得更多的服务器成本。
以前我在这里设置了一个开发过程,结合了 VS.NET、GIT、TeamCity 和 MSI 文件的自动部署到我们维护的各种环境。它并不完美,但我们现在都对它很满意。我想知道像我们这样的流程是否适合这种完全不同的技术堆栈(LYME)?
我相信我们以前使用 .NET 解决的所有编程挑战都可以用更少的代码用 Erlang 更好地解决,所以我完全相信语言选择。通过阅读有关 Erlang 的 Pragmatic 和 O'Reilly 书籍,我还不明白我应该如何调整我的软件工程和应用程序生命周期管理 (ALM) 流程以适应新平台。我看到就地代码更新可以使我(以及我的测试和运营团队)的生活更轻松(与尝试在 Windows 网络上部署 MSI 文件的可怕痛苦相比),但我不确定事情应该如何改变当我使用 Erlang 时。
你会怎么做:
最佳答案
哇,好长的帖子。首先,您应该知道,99.9% 和更好的 kool-aid 在失明时饮用有点危险。是的,您可以获得一些惊人的稳定性数据,但是您需要以一种促进这一点的方式编写程序。它不是免费的。它也不是靠魔法发生的。您的应用程序的设计方式必须使其他子系统能够恢复。 OTP 将帮助您很多 - 但仍然需要时间来学习。
持续集成:轻松完成。如果您可以调用rebar
或 make
通过您的构建机器人,您可能已经设置在这里。查看 eunit、cover 和 Erlang QuickCheck(迷你变体对初学者是免费的)——所有这些都可以从 rebar 运行。
QA Cycle:我在这里没有遇到任何问题。同样,如果使用 rebar
您可以构建最小化 erlang vm 的嵌入式版本,您可以在任何地方复制并运行(它们是独立的)。您甚至可以通过稍微更改代码路径轻松地将修复程序热部署到这样的系统,这样您就可以覆盖较新的修复程序。您的选择很多。 Git 已经在这里帮助了你很多。
环保:轻松搞定。
日志集中化:查看 SASL 和 error_logger。你可以在这里做任何你想做的事情。
警报:可以根据您的需要对系统进行探测(Erlang 中的自省(introspection)功能很强)。但是您可能需要编写一些代码才能将其连接到您选择的系统。
错误配置:配置文件是 Erlang 术语。如果它可以计算,它可以完成。
安全性:限制谁可以访问。在我看来,这是一个人的问题,而不是技术问题。
分析:cprof、cover、eprof、fprof、instrument + 几个分布式系统来做同样的事情。随机抽样也很容易(Erlang 中的自省(introspection)能力很强)。
Windows 交互:不知道。 (偏见:我最后一次专业使用 Windows 是在 1998 年左右)。
一些个人观察:
你最大的问题可能最终是你试图将 Erlang 塞进你现有的进程中,它可能会抵制。这是一个新的环境,因此在某些地方需要新的方法,并且您应该期望适应并解决您在此过程中发现的限制。普遍的共识是它可以工作(它适用于几个大网站)。
看起来您有一个完善且严格的流程。为了让位于一种新的思维方式,该过程允许牺牲多少?
你的程序员愿意扔掉他们几乎所有的 OO 知识吗?如果不是这样,你将以社会问题而不是技术问题告终。但是,如果他们像我一样,他们会欢呼,鼓掌,并通过使用有趣的语言以新的方式解决有趣的问题来获得持续的兴奋。
你有多少有 Erlang 经验的程序员?如果你很少,那么最好先在一些较小的子系统上切齿,然后朝着更大的目标努力。获得系统的全部好处需要几个月甚至几年的时间。不过,可以在几周内获得部分 yield 。
关于erlang - 考虑将应用程序从 .NET 移植到 Erlang - 需要建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262118/
我想实现一个 Erlang 解释器,最近我在阅读 Erlang 的标准库源代码。我在 erlang.erl 中找到 erlang:display/1 的源代码是: %% display/1 -spec
我即将用 Erlang 构建一个系统(我的问题可以用多个 CPU 更好地解决),我已经浏览了: 向你学习一些 Erlang; Erlang/OTP 在行动 编程 Erlang(阿姆斯壮); Erlan
我真的很难理解 Erlang 中的尾递归。 我有以下 eunit 测试: db_write_many_test() -> Db = db:new(), Db1 = db:write(f
我不确定或者我不知道 erlang 定位不在默认目录中的模块的传统方式。我知道它会查看已编译的文件夹和 erlang 的系统文件夹或 - lists:foreach(fun (E) -> io:fwr
对 Erlang 完全陌生。我正在尝试为函数组合定义一些函数,例如 compose , juxt和 pipe但是遇到这样一个事实,即 Erlang 没有(据我所知)可变参数,因此很难只编写适用于所有输
在 Erlang 中存储和管理高性能可变对象的最佳方法是什么?假设我想编写具有实时游戏玩法的非常简单的在线游戏服务器。不知何故,我需要在 Erlang 内存中表示玩家的状态。例如,它可能只是一个简单的
警告:前面的 erlang n00b。 我正在尝试掌握 erlang,只是尝试与牛仔一起使用基本的 hello world 应用程序。我正在模拟一个错误,基本上是在我的代码中的某处返回一个无效值,并试
当你向 shell 进程发送消息时,你可以通过调用: c:flush(). 来清除所有消息。 C:\Windows\System32>erl Eshell V5.9(使用 ^G 中止) 1> 自我()
这应该是一个简单的问题,但我不太了解文档,无法找到答案。 如果 OTP 管理器在崩溃后重新启动 gen_server,新子进程是否继承了崩溃进程的消息队列,或者消息是否在崩溃之前发送但尚未由旧子进程处
我将 net_ticktime 值设置为 600 秒。 net_kernel:set_net_ticktime(600) 在 net_ticktime = TickTime 的 Erlang 文档中:
我正在监视一个 Erlang 应用程序,我目前正在尝试确定特定 PID 已经运行了多长时间。绝对时间戳或持续时间对我有用,但我在 process_info 或通过 sys 模块看不到这些数据位中的任何
我想重新定义查找特定单词的元组的顺序 例如,我有一个像这样的元组列表: [{"a",["r001"]}, {"bi",["bidder"]}, {"bo",["an"]}] 但有时元组的顺序可能会
以下几行出现在 http://aosabook.org/en/riak.html 中,在该部分的第二段: 15.1. Erlang 简介 : "Calling the function with a
我认为 Erlang 节点之间的消息不应该很大。如果我想构建一个流服务器,通常每个连接都需要很大的带宽,Erlang 能做好吗?如果是,是否有任何开源代码可供我学习?我了解到 Erlang 很适合处理
下一个代码在结果中给了我 5.999999999999998,但正确答案是 6。 Alpha = math:acos((4*4 + 5*5 - 3*3) / (2*4*5)) Area = 1/2 *
注意:这是我的 previous question 的进化延续。关于类似的话题。 一段时间以来,我一直在寻找有关部署和更新 Erlang/OTP 版本(一组应用程序)的“最佳实践”,但我找不到任何直接
我试图在头文件中指定一个函数。 像这样: -spec update(pid(), tuple(tuple(), integer(), atom()), tuple(atom(), atom())) -
所以我在过去的八个小时里一直在使用 Erlang,我花了两个时间用我的头敲击键盘试图找出我的控制台不断返回的异常错误。 我正在编写一个骰子程序来学习erlang。我希望它能够通过 erlang 解释器
当我编译以下模块时: -module(x). -export([inp/0]). f(X) -> g(X). g(X) -> error(X). inp() -> f(123)
我目前正在开发一个实时媒体服务器,它将允许普通消费者向我们发送实时视频。在我们当前的环境中,我们已经看到发送给我们的广播持续了几天,因此能够在不断开用户连接的情况下修复错误(或添加功能)的想法非常引人
我是一名优秀的程序员,十分优秀!