问题标签 [nitrogen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
432 浏览

erlang - 氮气会议

在我所有的氮页面中,我使用以下语义:

当用户登录并进入包含表单的页面时,如果会话超时,他仍然可以进行表单发布,导致我的网站逻辑出现一些问题,因为未登录的用户应该被重定向到登录页面,有什么办法可以吗?无需通过我所有的页面事件函数并查找此案例即可实现此行为?

提前致谢和问候

0 投票
2 回答
408 浏览

erlang - 启动氮气 (erlang)

我需要一些帮助来启动氮气 2.1

该文档 (http://nitroproject.com/doc/index.html) 告诉我运行 ./deps/get_mochiweb.sh - 但 deps 文件夹不包含这样的脚本

ls ../../deps

氮核 nprocreg simple_bridge 同步

另一方面,这些幻灯片:http://nitroproject.com/doc/tutorial.html 告诉我运行

./bin/氮气控制台

打开http://localhost:8000

我似乎更合理,但我不太明白。“./bin/nitrogen 控制台”会打开一个 erlang 控制台,但据我所知,“open http://localhost:8000 ”不是 erlang 语法。如果我跑步,我什么也不会发生。退出后,没有任何内容列在 8000 端口

我不知道从这里做什么

0 投票
2 回答
2171 浏览

erlang - 在 Erlang 中使用电子邮件(POP3、IMAP、SMTP 等)?

如何在 Erlang/OTP 中务实地处理与电子邮件相关的通信?使用 bash、python 或 Perl 脚本,可以发送电子邮件。但是,在 Erlang 中,我还没有找到专门用于代表其他应用程序发送和/或接收电子邮件的应用程序或内置函数。
yaws中,有一个邮件应用程序位于 web 服务器的应用程序路径中。但是,在 yaws 主页上,没有专门针对此应用程序的文档。在Nitrogen Web 框架中,就电子邮件协议而言,我还没有发现任何有用的东西。
如果有人知道我可以实用地发送和/或接收邮件的库,请指导我。也可能有我不知道的非官方实现。提前致谢

0 投票
3 回答
829 浏览

erlang - 如何使用 Nitrogen 作为 Erlang 应用程序的 GUI 前端?

我有一个基本的服务器端 Erlang 应用程序(还没有完全 OTP),我从命令行开始。我想把它变成一个交互式系统,使用浏览器作为带有 Nitrogen 的 GUI(版本 2.0.4)。总体计划是

  • 将当前模块变成 gen_server 作为 MODEL 部分;它分析数据并从中生成事件,这些事件反映了我感兴趣的数据的某些属性。
  • 添加一个 CONTROLLER 模块,它既是 gen_event(获取模型生成的事件)和 gen_server(允许来自 GUI 前端的查询)
  • 使用 Nitrogen 作为 VIEW,通过调用控制器模块(依次查询模型)使用 Ajax 工具更新相关页面

据我所知,我想要一个具有三个孩子的通用应用程序主管:模型、视图和控制器。然后他们将通过映射到 OTP 通信模式的 API 相互交谈。

这就是我卡住的地方:我应该把所有这些都放到 Nitrogen 目录树中吗?我是否应该设置一个新的应用程序目录结构并在其中包含三个组件(包括 Nitrogen)?作为我的应用程序主管的孩子,我究竟需要做什么来启动 Nitrogen 服务器(Nitrogen 启动脚本看起来比我预期的要复杂得多)?我已经开始学习Erlang 和 OTP in Action 了,但还没有完全完成。我需要在后天演示系统;)

我想要的是在命令行中输入“start.sh”,然后使用浏览器通过 Nitrogen 连接到应用程序。

0 投票
1 回答
514 浏览

validation - 使用氮气在 erlang 中进行验证

我正在尝试在二郎中用氮气做一些简单的事情。我已成功在文本字段上设置验证:

其中desk_name 是一个文本框,submit 是页面底部的按钮。

我只想为面板做同样的事情。但是,使用相同的代码似乎不起作用。

有没有办法对文本框以外的字段进行验证?

我真的很感谢你的帮助!谢谢你。

0 投票
1 回答
996 浏览

erlang - 我们如何有效地处理对 mnesia 记录的时间相关限制?

我正在将记录写入 mnesia,这些记录应仅在允许的时间(24 小时)内保存。24 小时后,在用户修改其中的一部分之前,系统应自动删除它们。例如,为用户提供免费通话时间(用于语音通话),他们应该在给定时间内使用这些通话时间。如果他们不使用它,24 小时后,系统应该从用户记录中删除这些资源预留。

现在,这引入了计时器。记录结构的一个示例是:

记录中的计时器对象很重要,因为万一用户在超时(或超时)之前最终使用了保留的资源,系统可以调用timer:cancel/1以解除该对象的计时器服务器。现在的问题是,我有两种方法可以处理这些记录上的计时器:

选项 1:在事务中处理的计时器

关于上述选项。

Mnesia 文档说事务可能会被 tm 管理器重复(由于某种原因)直到它们成功,因此当您放置io:format/2与写入或读取无关的代码或任何其他代码时,它可能会被执行多次。这句话让我在这一点上停顿了一下,想了一种方法来处理它自己的事务之外的计时器,所以我修改了代码如下:

选项 2:在事务之外处理的计时器

处理预订超时的代码:

现在我认为在选项 2 中,通过将计时器处理代码排除在外,我会更安全,即使 mnesia_tm 由于其原因重新执行事务,这段代码也不会运行两次(我避免有多个计时器对象针对同一个记录)。

问题1:这两种实现中哪一种是正确的?和/或错误?告诉我(也)他们俩是否都错了

问题 2:模块定时器,它是否非常适合处理生产中的大量定时器作业?

问题 3:与运行在 mnesia 之上的 Sean Hinde 的timer_mn-1.1相比,timer 模块(可能在 Ets 表之上运行)在生产中的能力(实际上)是否更弱?(我问这个是因为在本身使用 mnesia 的系统上使用 Sean Hinde 的 timer_mn 在架构更改、节点问题等方面似乎是一个问题)

如果有人有另一种方法来处理与 mnesia 相关的计时器问题,请告诉我thanx 伙计们......

0 投票
1 回答
219 浏览

erlang - 对氮气监听 IP 地址感到困惑

我在 Windows 7 Home Premium、HP Pavilion Entertainment PC 笔记本电脑上运行 Nitrogen 2.0.X。氮气以 inets 开头,我未能更改或指定网络服务器的 IP 地址。一旦它启动,它会告诉我去我的浏览器并点击http://localhost:8000下面的 shell 输出:

在几乎所有可用的浏览器中点击链接都表明找不到该页面。当我向模拟器询问端口时,这是它的输出:

我有一个强烈的想法,这inet6_tcp意味着它使用IPv6whileinet_tcp意味着IPv4,对此不太确定。但总而言之,我无法连接到我的氮气。以下是正在运行的应用程序

http://localhost:8000鉴于上述观察,有人可以解释为什么我无法通过浏览器访问我的本地氮框架吗?而且,我怎样才能从我的浏览器连接到它?

0 投票
1 回答
166 浏览

erlang - OTP14B02 配置错误

我尝试在 OpenSolaris 上安装 OTP14B02,但在调用时出现以下错误./configure

什么可能导致这个问题,我该如何克服它?

0 投票
0 回答
1568 浏览

erlang - Mnesia 分片和复制:最终的可用性和可靠性

在解决了我最近提出的有关 mnesia fragmentation的问题之后,我仍然面临许多挑战。考虑以下场景(我要问的问题基于以下内容):

您有一个数据驱动的企业应用程序,它应该
在企业内高度可用。如果内部信息源因任何原因而关闭,企业应用程序必须切换到从异地(远程)恢复中心
获取数据。

您决定将数据库复制到企业内的两个节点上
(称为DB 端 ADB 端 B)。这两者在单独的
硬件上运行,但通过快速以太网或光纤链路连接在一起。从逻辑上讲,您在这两个 Mnesia DB
之间创建了某种隧道或安全通信。
两者(A 和 B)应该具有相同的数据副本并且
始终保持同步。

现在,与此同时,恢复中心也必须拥有相同的数据副本并
始终保持同步,以防本地数据访问因攻击
或硬件故障而中断。因此,必须在 3
个站点(A面、B 面恢复中心)之间复制相同的数据库模式。

现在,在企业内部,应用程序中间件能够在数据库站点之间切换数据请求。如果 A 宕机,那么在应用程序没有意识到的情况下,请求被重新路由到数据库 B,依此类推。中间件层可以配置为进行负载平衡(请求多路复用)或灵活地使用故障转移技术。

进一步分析

现在,在创建表时,您可能希望将您的 mnesia 表分段。因此,您决定以下参数:

然后根据以下安排创建所有表注意:在上面的语法RECORD_NAME_HERE中,实际上不能是变量,因为在 Erlang 编译时必须知道记录。从安装中,您可以看到对于每个表,每个片段,例如table_name_frag2,出现在每个节点的文件系统上。

挑战和出现的问题
按照上面列出的内容进行操作后,您的第一次数据库启动是可以的,因为 mnesia 正在所有节点上运行。随着应用程序的运行,一些挑战开始出现,并列出以下内容:

  1. 假设您决定首先尝试所有写入,DB Side A并且如果此时 A 端不可用,则重新尝试调用DB Side B,以此类推recovery center,如果调用在所有 3 个数据库节点上均未返回,则应用程序网络中间件层报告数据库服务器全部不可用(这个决定可能受到以下事实的影响:如果您让应用程序随机写入您的 mnesia 副本,则很可能会出现不一致的数据库错误,以防您的 mnesia 节点丢失彼此之间建立网络连接,但不同的 Erlang 应用程序正在各自提交写入。如果您决定拥有master_nodes,那么您可能会面临丢失数据的风险)。所以通过行为,你是在强迫DB Side A成为主人。这使得其他数据库节点一直处于空闲状态,只要DB Side A启动并运行,并且与命中方 A 一样多的请求并且它不会关闭,则根本没有请求会到达 B 方和恢复中心。

  2. 通常,Mnesia 在启动时应该看到所有相关节点都在运行(mnesia 必须在所有相关节点上运行),以便它可以进行协商和一致性检查。这意味着如果 mnesia 在所有节点上都出现故障,则必须在所有节点上启动 mnesia,然后才能完全初始化和加载表。如果 Erlang VM 在远程站点上与 Mnesia 一起死掉,那就更糟了。好吧,这里和那里的一些调整和脚本可以帮助重新启动整个 VM 以及如果它出现故障的预期应用程序。

长话短说,让我回答问题。

问题

  1. 如果 mnesia在不希望inconsistent_database, starting to run database behind a partitioned network设置 a 的情况下(因为担心数据丢失)生成 的事件,数据库管理员会怎么做?mnesia master node

  2. mnesia 事件inconsistent_database, starting to run database behind a partitioned network对我的申请有什么影响?如果我不对这个事件做出反应,让事情继续原样发生怎么办?我会丢失数据吗?

  3. 在大型 mnesia 集群中,如果 Mnesia 与远程站点上的 Erlang VM 一起出现故障,该怎么办?是否有任何已知的自动处理这种情况的好方法?

  4. 有时由于网络问题或故障导致一两个节点无法访问,并且幸存节点上的 mnesia 报告给定文件不存在,尤其是在您拥有indexes. 那么在运行时,如果某些副本出现故障,我的应用程序的行为会怎样?你会建议我在 mnesia 集群中有一个主节点吗?

当您回答上述问题时,您还可以突出显示开头描述的布局,它是否能确保可用性。您可以提供有关在生产中使用 mnesia 碎片和复制数据库的个人经验。关于本文开头的链接(引用)问题,请提供可以在创建数据库时提供更高可靠性的替代设置,例如片段数量、操作系统依赖关系、节点池大小、表副本类型, ETC。

0 投票
1 回答
217 浏览

apache - 计算 yaws Web 应用程序上的点击次数

如果我有一个从 yaws Web 服务器运行的 Web 应用程序,我将如何计算用户对我的网站的点击次数?

我尝试使用基本方法来计算在.accessyaws 日志中找到的站点文件中的行数,如下所示:

向我指出一个更好的方法,以找出到目前为止我在偏航运行的网站上收到了多少点击。