我正在为我在空闲时间工作的聊天应用程序编写JS,我需要根据用户提交的数据更改HTML标识符.这通常是概念上不稳定的东西,我甚至都不会尝试它,但这次我不认为自己有很多选择.我需要做的是转义HTML id以确保它不允许XSS或破坏HTML.
这是代码:
var user_id = escape(id)
var txt = '<div class="chut">'+
'<div class="log" id="chut_'+user_id+'"></div>'+
'<textarea id="chut_'+user_id+'_msg"></textarea>'+
'<label for="chut_'+user_id+'_to">To:</label>'+
'<input type="text" id="chut_'+user_id+'_to" value='+user_id+' readonly="readonly" />'+
'<input type="submit" id="chut_'+user_id+'_send" value="Message"/>'+
'</div>';
Run Code Online (Sandbox Code Playgroud)
逃避id避免上述任何问题的最佳方法是什么?正如你所看到的,现在我正在使用内置escape()函数,但我不确定它与其他替代品相比有多好.我主要习惯在输入文本节点之前清理输入,而不是id本身.
我正在尝试实现一个像骰子一样的代理:
defmodule Dice do
@on_load :seed_generator
def start_link(opts \\ []) do
Agent.start_link(fn -> [] end, name: __MODULE__)
end
def roll(n, val) do
Agent.cast(__MODULE__, fn(_) ->
Stream.repeatedly(fn -> :random.uniform(val) end)
|> Enum.take(n)
end)
end
def seed_generator do
:random.seed(:erlang.now)
:ok
end
end
Run Code Online (Sandbox Code Playgroud)
但是,每次重新启动iex时生成的数字都是相同的.我究竟做错了什么 ?种子不工作,因为 :random.uniform呼叫在代理内部?或者与may相关的东西Stream.
我最近一直潜入Erlang,我决定使用Mnesia来完成我的数据库工作,因为它可以存储任何类型的Erlang数据结构而没有问题,可以轻松扩展,与列表推导一起使用等.
来自标准SQL数据库,大多数行可以并且应该由主键标识,通常是自动递增整数.默认情况下,Mnesia将行的第一个字段视为其键.据我所知,它也没有办法让自动递增的整数键.
鉴于我有这些虚构的记录代表我的表:
-record(user, {name, salt, pass_hash, email}).
-record(entry, {title, body, slug}).
-record(user_entry, {user_name, entry_title}).
Run Code Online (Sandbox Code Playgroud)
我认为使用用户名可能已经足够用于某些目的,就像条目标题一样,为了识别资源,但我该如何保持完整性?
假设用户更改了其名称,或者在编辑后更改了条目的标题.如何确保我的数据仍然正确相关?无论如何使用用户名更改每个表,听起来都是一个糟糕的主意.
在Mnesia实施某种主键系统的最佳方法是什么?
另外,如果第一个字段通常是密钥,那么像'user_entry'这样的中间表会如何呢?否则,在Mnesia中代表多对多关系会有什么更好的方式?
我的头衔不是很好,因为我发现很难用小片段来解释我想要的东西......所以我会深入尝试!
我正在使用Phoenix Web框架编写Elixir应用程序.
我想要做的是:
该过程不需要返回到Web路由(即其异步)
我知道如何通过使用消息队列(Beanstalk,RabbitMQ,sidekiq)来处理其他语言,并将"作业"交给工作人员,然后编写工作人员来处理队列中的作业.
但是......我知道在Elixir中它默认排队,因为所有内容都被推入"邮箱"(在YouTube视频中看到它:p)
但是我找不到任何合适的代码示例来说明如何让控制器(在phoenix中)产生一个异步进程,该进程将在消息队列中处理.
有没有人知道任何体面的资源,显示我正在寻找什么,或者是否有人有任何代码片段,将给我一个基本的描述如何做到这一点.
谢谢 :)
编辑:
正如评论中所提到的,我已经创建了一个基本教程,介绍如何在Elixir应用程序中启动和运行Poolboy.我希望它对人们有用(并且正确!):)
我有一个外部URL(第三方代码),我想发布一些数据,我不必等待响应.
我如何在Elixir中这样做(如果可能的话?)
实际上我想将一些数据转换为外部URL
defmodule DemoMacro do
defmacro i_am_macro do
quote do
# ……
end
end
i_am_macro # (CompileError) example.exs:10: undefined function i_am_macro/0
end
Run Code Online (Sandbox Code Playgroud)
但是从其他模块导入,可以成功调用:
defmodule SecondModule do
require DemoMacro
DemoMacro.i_am_macro
end
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能编译第一段代码?