问题标签 [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.
erlang - 氮气会议
在我所有的氮页面中,我使用以下语义:
当用户登录并进入包含表单的页面时,如果会话超时,他仍然可以进行表单发布,导致我的网站逻辑出现一些问题,因为未登录的用户应该被重定向到登录页面,有什么办法可以吗?无需通过我所有的页面事件函数并查找此案例即可实现此行为?
提前致谢和问候
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/氮气控制台
我似乎更合理,但我不太明白。“./bin/nitrogen 控制台”会打开一个 erlang 控制台,但据我所知,“open http://localhost:8000 ”不是 erlang 语法。如果我跑步,我什么也不会发生。退出后,没有任何内容列在 8000 端口
我不知道从这里做什么
erlang - 在 Erlang 中使用电子邮件(POP3、IMAP、SMTP 等)?
如何在 Erlang/OTP 中务实地处理与电子邮件相关的通信?使用 bash、python 或 Perl 脚本,可以发送电子邮件。但是,在 Erlang 中,我还没有找到专门用于代表其他应用程序发送和/或接收电子邮件的应用程序或内置函数。
在yaws中,有一个邮件应用程序位于 web 服务器的应用程序路径中。但是,在 yaws 主页上,没有专门针对此应用程序的文档。在Nitrogen Web 框架中,就电子邮件协议而言,我还没有发现任何有用的东西。
如果有人知道我可以实用地发送和/或接收邮件的库,请指导我。也可能有我不知道的非官方实现。提前致谢
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 连接到应用程序。
validation - 使用氮气在 erlang 中进行验证
我正在尝试在二郎中用氮气做一些简单的事情。我已成功在文本字段上设置验证:
其中desk_name 是一个文本框,submit 是页面底部的按钮。
我只想为面板做同样的事情。但是,使用相同的代码似乎不起作用。
有没有办法对文本框以外的字段进行验证?
我真的很感谢你的帮助!谢谢你。
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 伙计们......
erlang - 对氮气监听 IP 地址感到困惑
我在 Windows 7 Home Premium、HP Pavilion Entertainment PC 笔记本电脑上运行 Nitrogen 2.0.X。氮气以 inets 开头,我未能更改或指定网络服务器的 IP 地址。一旦它启动,它会告诉我去我的浏览器并点击http://localhost:8000
下面的 shell 输出:
在几乎所有可用的浏览器中点击链接都表明找不到该页面。当我向模拟器询问端口时,这是它的输出:
我有一个强烈的想法,这inet6_tcp
意味着它使用IPv6
whileinet_tcp
意味着IPv4
,对此不太确定。但总而言之,我无法连接到我的氮气。以下是正在运行的应用程序
http://localhost:8000
鉴于上述观察,有人可以解释为什么我无法通过浏览器访问我的本地氮框架吗?而且,我怎样才能从我的浏览器连接到它?
erlang - OTP14B02 配置错误
我尝试在 OpenSolaris 上安装 OTP14B02,但在调用时出现以下错误./configure
:
什么可能导致这个问题,我该如何克服它?
erlang - Mnesia 分片和复制:最终的可用性和可靠性
在解决了我最近提出的有关 mnesia fragmentation的问题之后,我仍然面临许多挑战。考虑以下场景(我要问的问题基于以下内容):
您有一个数据驱动的企业应用程序,它应该
在企业内高度可用。如果内部信息源因任何原因而关闭,企业应用程序必须切换到从异地(远程)恢复中心
获取数据。您决定将数据库复制到企业内的两个节点上
(称为DB 端 A和DB 端 B)。这两者在单独的
硬件上运行,但通过快速以太网或光纤链路连接在一起。从逻辑上讲,您在这两个 Mnesia DB
之间创建了某种隧道或安全通信。
两者(A 和 B)应该具有相同的数据副本并且
始终保持同步。现在,与此同时,恢复中心也必须拥有相同的数据副本并
始终保持同步,以防本地数据访问因攻击
或硬件故障而中断。因此,必须在 3
个站点(A面、B 面和恢复中心)之间复制相同的数据库模式。
现在,在企业内部,应用程序中间件能够在数据库站点之间切换数据请求。如果 A 宕机,那么在应用程序没有意识到的情况下,请求被重新路由到数据库 B,依此类推。中间件层可以配置为进行负载平衡(请求多路复用)或灵活地使用故障转移技术。
进一步分析:
现在,在创建表时,您可能希望将您的 mnesia 表分段。因此,您决定以下参数:
RECORD_NAME_HERE
中,实际上不能是变量,因为在 Erlang 编译时必须知道记录。从安装中,您可以看到对于每个表,每个片段,例如table_name_frag2
,出现在每个节点的文件系统上。
挑战和出现的问题:
按照上面列出的内容进行操作后,您的第一次数据库启动是可以的,因为 mnesia 正在所有节点上运行。随着应用程序的运行,一些挑战开始出现,并列出以下内容:
假设您决定首先尝试所有写入,
DB Side A
并且如果此时 A 端不可用,则重新尝试调用DB Side B
,以此类推recovery center
,如果调用在所有 3 个数据库节点上均未返回,则应用程序网络中间件层报告数据库服务器全部不可用(这个决定可能受到以下事实的影响:如果您让应用程序随机写入您的 mnesia 副本,则很可能会出现不一致的数据库错误,以防您的 mnesia 节点丢失彼此之间建立网络连接,但不同的 Erlang 应用程序正在各自提交写入。如果您决定拥有master_nodes
,那么您可能会面临丢失数据的风险)。所以通过行为,你是在强迫DB Side A
成为主人。这使得其他数据库节点一直处于空闲状态,只要DB Side A
启动并运行,并且与命中方 A 一样多的请求并且它不会关闭,则根本没有请求会到达 B 方和恢复中心。通常,Mnesia 在启动时应该看到所有相关节点都在运行(mnesia 必须在所有相关节点上运行),以便它可以进行协商和一致性检查。这意味着如果 mnesia 在所有节点上都出现故障,则必须在所有节点上启动 mnesia,然后才能完全初始化和加载表。如果 Erlang VM 在远程站点上与 Mnesia 一起死掉,那就更糟了。好吧,这里和那里的一些调整和脚本可以帮助重新启动整个 VM 以及如果它出现故障的预期应用程序。
长话短说,让我回答问题。
问题:
如果 mnesia在不希望
inconsistent_database, starting to run database behind a partitioned network
设置 a 的情况下(因为担心数据丢失)生成 的事件,数据库管理员会怎么做?mnesia master node
mnesia 事件
inconsistent_database, starting to run database behind a partitioned network
对我的申请有什么影响?如果我不对这个事件做出反应,让事情继续原样发生怎么办?我会丢失数据吗?在大型 mnesia 集群中,如果 Mnesia 与远程站点上的 Erlang VM 一起出现故障,该怎么办?是否有任何已知的自动处理这种情况的好方法?
有时由于网络问题或故障导致一两个节点无法访问,并且幸存节点上的 mnesia 报告给定文件不存在,尤其是在您拥有
indexes
. 那么在运行时,如果某些副本出现故障,我的应用程序的行为会怎样?你会建议我在 mnesia 集群中有一个主节点吗?
当您回答上述问题时,您还可以突出显示开头描述的布局,它是否能确保可用性。您可以提供有关在生产中使用 mnesia 碎片和复制数据库的个人经验。关于本文开头的链接(引用)问题,请提供可以在创建数据库时提供更高可靠性的替代设置,例如片段数量、操作系统依赖关系、节点池大小、表副本类型, ETC。
apache - 计算 yaws Web 应用程序上的点击次数
如果我有一个从 yaws Web 服务器运行的 Web 应用程序,我将如何计算用户对我的网站的点击次数?
我尝试使用基本方法来计算在.access
yaws 日志中找到的站点文件中的行数,如下所示: