小编I G*_*ICE的帖子

在使用Javascript将其添加到DOM之前清理用户输入

我正在为我在空闲时间工作的聊天应用程序编写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本身.

javascript xss escaping

35
推荐指数
3
解决办法
8万
查看次数

Elixir - Agent中的随机数字

我正在尝试实现一个像骰子一样的代理:

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.

random agent elixir

12
推荐指数
1
解决办法
665
查看次数

与Mnesia保持关系完整性

我最近一直潜入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中代表多对多关系会有什么更好的方式?

database erlang mnesia

10
推荐指数
2
解决办法
2337
查看次数

将操作推送到消息队列以便在需要时进行处理

我的头衔不是很好,因为我发现很难用小片段来解释我想要的东西......所以我会深入尝试!

我正在使用Phoenix Web框架编写Elixir应用程序.

我想要做的是:

  • 调用一个web路由,凤凰处理并传递给控制器
  • 控制器用于启动要切换到消息队列的进程
  • 资源可用时要处理的队列中的最新项(即CPU /内存/等)

该过程不需要返回到Web路由(即其异步)

我知道如何通过使用消息队列(Beanstalk,RabbitMQ,sidekiq)来处理其他语言,并将"作业"交给工作人员,然后编写工作人员来处理队列中的作业.

但是......我知道在Elixir中它默认排队,因为所有内容都被推入"邮箱"(在YouTube视频中看到它:p)

但是我找不到任何合适的代码示例来说明如何让控制器(在phoenix中)产生一个异步进程,该进程将在消息队列中处理.

有没有人知道任何体面的资源,显示我正在寻找什么,或者是否有人有任何代码片段,将给我一个基本的描述如何做到这一点.

谢谢 :)

编辑:

正如评论中所提到的,我已经创建了一个基本教程,介绍如何在Elixir应用程序中启动和运行Poolboy.我希望它对人们有用(并且正确!):)

https://github.com/thestonefox/elixir_poolboy_example

elixir phoenix-framework

8
推荐指数
2
解决办法
2225
查看次数

Elixir有可能发出一个http POST请求将一些数据推送到外部URL吗?

我有一个外部URL(第三方代码),我想发布一些数据,我不必等待响应.

我如何在Elixir中这样做(如果可能的话?)

实际上我想将一些数据转换为外部URL

elixir

7
推荐指数
1
解决办法
4618
查看次数

关于在模块内部调用宏

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)

我该怎么做才能编译第一段代码?

elixir

2
推荐指数
1
解决办法
135
查看次数