Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
 Elixir_IT技术博客_编程技术问答 - 「Fatal编程技术网」

在Elixir中安装依赖项

有没有一种方法可以使用mix或mix hex直接通过命令行为Elixir项目安装依赖项 我知道可以通过以下方式搜索hex注册表 $ mix hex.search httpoison Package Version URL httpoison 0.11.0 https://hex.pm/packages/httpoison 然而,我正在寻找类似的东西 $ mix hex.install httpoison 它将修改我的mix.exs文件,将依赖项的名称和最新版本添加到deps函

Elixir “外星体”;“从左到右”;使用片段进行查询

我想使用postgres-IN操作符(带EXTO库)查询jsonb字段 此代码使用简单的=运算符: from a in query, where: fragment("?->>'format' = ?", a.properties, "foo") 但我无法进行任何这些尝试: from a in query, where: fragment("?->>'format' IN ?", a.properties, ["foo", "bar"]) from a in query

Elixir 当一个表的主键是一个关联的id时,如何做

我正在为freeradius mysql开发RESTAPI(所以我不管理数据库…) Freeradius有一个奇怪的模式: “组”表: “用户”表: 我的问题是我想做: schema "radusergroup" do belongs_to :user, Rascal.User, foreign_key: :username, references: :username, type: :string, primary_key: true field :priority, :integer

Elixir 如何将函数传递给Enum.each?

我需要使用Enum.each将列表项传递给函数 ex: users= [1, 2, 3, 4, 5] #how to link the handler_user function in Enum.each? users |> Enum.each handler_user def handler_user user_id end 那么,我该如何创建链接呢?您必须使用它来捕获函数: users = [1, 2, 3, 4, 5] Enum.each(users, &handl

Elixir库应用程序脚本路径

我有一个Python脚本,它是作为我正在编写的Elixir库的一部分运行的——也就是说,在启动应用程序时,我在一个start\u link函数中运行System.cmd(“Python”,[path/to/script]) 我将脚本安装在用户的deps/mylibrary/lib文件夹中 路径/to/script是我不知道怎么做的部分-我可以通过计算System.cwd()并查看结果来推断脚本的位置,但这似乎是错误的 我想一定有办法使用Mix来实现这一点。库/包在运行时需要的文件应该存储在pri

Elixir Phoenix生成器Phoenix.gen.json与mix phx.gen.json

我想知道phoenix.gen.json和phx.gen.json有什么区别 我目前正在使用Phoenix 1.3。Ubuntu 16.04LTS。以及以下版本的Erlang/Elixir Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false] Elixir 1.5.1 使用phoenix.gen.json: $> mi

Elixir 无法在Phoenix中创建嵌套资源

我正在尝试创建一个按钮,使给定用户成为管理员。为此,我想为请求post/users/:id/admin创建一个路由。为此,我尝试创建一个嵌套资源,如下所示: resources "/users", UserController, only: [:new, :create, :index] do resources "/admin", UserController, only: [:post] end 但当我运行mix phx.routes | grep用户时,我只会得到这些路由: user

Elixir Phoenix在运行时未加载环境变量

在启动phoenix服务器时,我正在尝试从mac加载一个API密钥作为系统环境。我做错了什么?以下是我的步骤: 在我的mac终端上: export API_NOTIFICATION_KEY=1234 在我的config.exs中 config :app, App.Notifications, notification_api_key: {:system, "API_NOTIFICATION_KEY"} 在我使用它的模块中 @api_notification_key Application

Elixir 相当于时间跨度的长生不老药。从秒(20)

如果我想用C#来指定时间量(例如在计时器中),我会说TimeSpan.FromSeconds(20)。这是明确的…有点冗长,但我指定的时间长度毫无疑问 完成同样的事情的“长生不老药”是什么?我可以说1000*20,但这是隐含的,不是明确的。没有明确的方法来说明。我指的是秒、微秒,甚至是时间。输入时没有秒没有微秒。也就是说,真空中的值不能是“秒”,它只是一个整数 时间分数只有在对时间进行数学运算时才有意义,并且所有相应的函数都有一个参数,允许您显式指定它 考虑函数,它向时间实例添加指定数量的时间分

Elixir 从列表中删除重复的合作伙伴值

我知道,在elixir中,要从列表中删除重复值,需要使用Enum.uniq(my_list) 给定一个[1,1,2,3,3,4,5]列表,我将使用什么作为结果[2,4,5]。有没有不使用嵌套循环的方法?您可以使用它来计算每个元素的数量,然后只获取出现一次的项目: [1,1,2,3,3,4,5] |>枚举频率() |>枚举筛选器(&match?({,1},&1)) |>枚举映射(&elem(&1,0)) 或者,从链接的问题中,您可以使用相当模糊的: list=[1,1,2,3,3,4,5] un

Elixir'defprotocol'中的'Any'实际上包含什么?

我的blank.ex是: 输入iex,输出为: iex(18)> Blank.blank? [] true iex(19)> Blank.blank? [6] false iex(20)> Blank.blank? '12' false iex(22)> Blank.blank? "' " true iex(23)> Blank.blank? "elixi" true iex(24)> Blank.blank? {1} true iex(25)> Bla

如何在Elixir中检查字典类型

我想检查Elixir中给定给函数的参数类型是否是字典。如何做到这一点?首先,您必须知道Elixir支持两种字典类型 Erlangs本机映射类型(用于仅包含有限项的映射) map=%{} Elixirs自己的字典类型(具有潜在大负载的字典) dict=HashDict.new 但是,这两种类型都需要使用Erlangs native:erlang.is\u map进行检查 def some_fun(arg) when :erlang.is_map(arg) do #do your thi

Elixir 什么是长生不老药插头?

作为Elixir和web领域的新手(没有web框架经验),我想知道什么是Plug?据我所知,Cowboy是一个web服务器(虽然是Erlang,而不是Elixir),Phoenix是一个构建web应用程序的框架,但插件从何而来?它是介于两者之间的抽象层,还是与Phoenix位于同一抽象层中的插件系统 它是两者之间的抽象层吗 是的,没错!Plug是用于不同web服务器的通用适配器。目前,我们只支持牛仔,但也有工作支持其他人 插头还定义了不同组件应如何连接在一起。与Ruby中的Rack、Python

Elixir 什么是|&燃气轮机&引用;你是说长生不老药?

我正在阅读github上的一些代码长生不老药代码,我看到|>经常被使用。它不会出现在文档站点的列表中。这是什么意思 i、 e 这是最新的。从链接的文档中: 此运算符将左侧的表达式作为右侧函数调用的第一个参数引入 例子 iex>[1,2,3]|>List.flatte() [1,2,3] 上面的示例与调用List.flant([1[2],3])相同 除了Stefan的出色响应之外,您可能还想阅读本文中名为“管道操作员”的部分,以便更好地理解管道操作员打算在Elixir中解决的用例。重要的想法是:

Elixir 为什么在通过Charlist重新创建字符串时会得到不同的字符串 iex(1)>“heło” [104, 101, 322, 322, 111] iex(2)> “heBBo”

不应该返回“hełło”,因为它使用相同的代码点吗?我现在明白了,当值超过255时,需要告诉位字符串如何对值进行编码。以下内容正确打印字符串 iex(1)> 'hełło' [104, 101, 322, 322, 111] iex(2)> <<104, 101, 322, 322, 111>> "heBBo" #=>“他” Edit1:为了更详细地说明我为什么得到“heBBo”,理解值的截断是如何工作的很重要。一个字节可以存储256的

Elixir 为什么';IO.PUT将繁殖的工作放入枚举中。每个?

我希望第一部分输出1-100到屏幕,但它什么也不做。如果我不使用spawn,只在第二行说IO.puts(I),它工作得很好——因此在每次调用中,IO.puts都工作得很好。HELLO部分工作正常,因此IO.put在一个spawn中工作正常。但这两者的结合不会产生任何效果 这是为什么?注意:如果您将代码保存在.exs文件中,并使用elixit.exs在命令行上运行,则可能会重现此问题 接受它将在另一个进程中执行的函数 派生的进程将执行给定的函数,并在函数完成后退出 在您的情况下,运行代码的父进程

Elixir 如何使用mix运行测试

更新:对于从谷歌得到这个问题的任何人,您可以通过运行混合测试来运行给定长生不老药项目的测试 根据,Elixir脚本文件(扩展名为.exs)在运行之前不需要编译 以下是《长生不老药》文档的准确引用: 测试文件是一个Elixir脚本文件(.exs)。 这很方便 因为我们不需要在运行测试文件之前编译它们 因此,我向faker库添加了一个模块文件和测试文件 我已经通过在项目根目录中运行mixcompile编译了项目 当我尝试使用mix test运行新测试文件之外的所有测试文件时,就会出现问题。我收到以

Elixir Phoenix框架:在JSON响应中发送呈现模板

我在top_navigation.html中有一个应用程序顶部导航的模板,其中包含“登录”、“注册”以及登录时的“注销”链接 还有Javascript: $(".js-login").on("click", e => { e.preventDefault() $(".js-login-alert").hide() }) $("#login").on("submit", e => { e.preventDefault() let form = $("#login")

Elixir 菲尼克斯长生不老药的变化是什么

我在理解模型中的变更集时遇到问题。它是干什么的?一个模型中可以有多个变更集吗?e、 g.一个用于创建,另一个用于更新 有没有人可以用一种简单的方式来阐述,这样可以帮助其他来凤凰城的人 来自: 变更集允许在操作模型时过滤、强制转换、验证和定义约束 在EXTO模块的介绍性文档中有一个使用变更集的示例。函数change/2和cast/4是创建变更集的常用入口点,而其余的函数用于操作变更集 变更集用于创建和修改模型。变更集实际上是一个存储一组变更(以及验证规则)的结构。您可以将变更集传递给您的Ecto

如何访问Elixir中的父模块?

我有一个通用加载程序,用于从数据库中获取记录: defmodule Loader do defmacro __using__(opts) do quote location: :keep, bind_quoted: [schema: opts[:schema]] do def one(id), do: unquote(schema) |> Repo.get(id) def all, do: unquote(schema) |> Repo.

Elixir 如何在地图中获取值的键?

例如: map = %{a: 'apple', o: 'orange'} 给定上面的映射,我想得到值'orange'的键 要获取映射中特定值的键,可以执行以下操作: map |> Enum.find(fn {key, val} -> val == 'orange' end) |> elem(0) 上面返回:o。请注意,在标准库中没有为我们执行此操作的函数。这可能是因为我们不打算根据映射中的值获取密钥。基于键获取值总是更有效。也许你可以重新考虑如何使用地图,并找到一种方法使成

Elixir 如何排除外毒素编码中的嵌套模型

我有一个简单的模型(简短版本): 我希望@derivate在尝试编码模型时排除:company关联,但它似乎没有。使用Guardian序列化程序时会发生这种情况: defmodule MyApp.GuardianSerializer do @behaviour Guardian.Serializer alias MyApp.Repo alias MyApp.User def for_token(user = %User{}), do: { :ok, "User:#{user.

Elixir 模式匹配和默认参数

我不熟悉长生不老药。我有以下代码: defmodule DefaultParams do def func(p1, p2 \\ 2, p3 \\ 3, p4) do IO.inspect [p1, p2, p3, p4] end end 使用此代码,我可以: DefaultParams.func("a", "b") #=> ("a", 2, 3, "b") 我理解为什么它是这样工作的:因为模式匹配。Elixir尝试将提供的参数与函数定义中定义的参数相匹配 但是,我不明白

继承Phoenix/Elixir中的布局

我需要为我的Phoenix/Elixir应用程序创建一个简单的布局层次结构,并从不同的布局继承我的模板。我知道如何对单个布局和多个模板执行此操作。但是,如何从一个布局继承另一个布局呢 比如说,层次结构是layout1->layout2->layout3和template2(layout2)、template3(layout3) 文件中没有提到这一点 更新: 基本布局是基本布局——类似于OOP中的基类,它不知道它的子布局——有多少布局,如果有的话。因此,从基本布局调用“render childre

Elixir 如何在Phoenix中测量页面加载时间

以前,我一直使用表记录系统中的使用情况和页面视图。我现在正在凤凰城写一个系统,试图找出如何最好地跟踪使用情况 目前我正在使用一个插件来插入日志。但是,我无法跟踪页面生成时间,因为插件在页面生成过程开始时被调用,而我不知道如何在最后调用它 有没有办法做到这一点,或者更好的办法,我在谷歌上找不到 但是,我无法跟踪页面生成时间,因为插件在页面生成过程开始时被调用,而我不知道如何在最后调用它 您可以使用在生成页面之后和发送响应之前执行fnPlug.Logger显示响应请求所用的时间 def call(c

Elixir 使用phoenix处理传入的post json

我想用application/jsoncontent类型来处理传入的帖子。我只是尝试返回发布的JSON作为对测试的响应,如下所示: WebhookController控制器 pipeline :api do plug :accepts, ["json"] end def handle(conn, params) do {:ok, body, conn} = Plug.Conn.read_body(conn) json(conn, %{body: body}) end 路由

Elixir/Phoenix:如何实现会话超时/过期

我正在开发一个香草Elixir/Phoenix应用程序,并按照书中的一般步骤实现了一个基本的登录和注销系统(请参见下面的代码片段)。但是,我在书中或网上没有看到关于如何设置基于cookie的插件会话在一定时间后过期的建议。Phoenix应用程序中的会话超时有哪些方法 以下是我的裸体身份验证系统的一些相关片段: 在endpoint.ex中,应用程序配置为使用基于cookie的只读会话: plug Plug.Session, store: :cookie, key: "_zb_key",

如果条件失败,Elixir/Phoenix查询返回空

我试图通过连接查询中的另一个表来返回值,但如果从辅助表中找到非值,是否仍可以在最终结果中包含元素 我的问题是: Repo.all(from p in Subjectclass, where: p.user_id == ^user.id, join: f in Subject, on: p.subject_id == f.id,

Elixir 如果我';我从IEx装货?

我有大量的quantum作业在我的iex中生成日志垃圾。从我的phoenix应用程序: # config/dev.exs config :quantum, MyApp, cron: [ # Tons of jobs here ] 因此,我希望这个部分只包含在phoenix.server的configs中,而不包含在IEx中。我该怎么做?您可以使用iex.started?/0检查iex是否正在运行。如果将其放入除非并将配置调用包装在其中,则仅当iex未运行时才会添加配置: # c

Elixir 如何用长生不老药凤凰制作两个实体关系的脚手架

我设计了类似“TeamRepo”的数据库。预加载(:Team)可以像RoR一样工作 成员_controller.ex plug :load_teams when action in [:new, :edit] defp load_teams(conn, _ ) do query = from(t in Team, select: {t.team_name, t.id}) teams = Repo.all(query) conn |> assign(:teams, tea

Elixir 有没有一种方法可以在不使用宏的情况下动态构建atom名称?

我想动态构建一个原子列表,可以没有原子,也可以有不同的后缀,比如: fields = [:title#{suffix}, :body#{suffix}] 是否有sigil(或其他简单方法)? 或者这里的宏足够简单吗?您可以通过在字符串之前放置一个:来实现这一点,并且字符串中可以包含插值: iex(1)> suffix = "_foo" "_foo" iex(2)> fields = [:"title#{suffix}", :"body#{suffix}"] [:title_foo,

Elixir 使用tuple时停止reduce_

当我的函数得到{:error,reason}而不是false时,我想停止reduce_ 我的代码是: Enum.reduce_while( [1,2,3,4], 0, fn filename, _foo -> if carica() do IO.puts "OK" {:cont, carica()} else IO.puts "KO" {:ha

Elixir:如何对只导入一堆函数的模块进行别名

我想将我的帐户上下文函数放入它们自己的文件中,然后将它们导入到上下文中,这样我就可以在控制器中为App.Accounts添加别名,并使用导入到上下文中的函数 请参阅下面的粗略设置,我是后 defmodule App.Accounts.UserAPI do alias App.Accounts.User def get_user!(id), do: User.get!(User, id) end defmacro __using__(_) do import App.Acc

Elixir 长生不老药:一个接一个地运行函数

我对Elixir还是一个新手,在存储库中查看一些代码,想知道是否有办法减少以下代码片段: def find(client) do Common.find(client, @resource) |> ResponseHandler.handle_response(@model_module) end def find(client, identifier) do Common.find(client, @resource, identifier)

Access behavior elixir中get_的可选默认值

是否有在中添加默认回退值的选项 情景: merge_maps = get_in( payload, ["msg", "clicks"] ) ++ get_in( payload, ["msg", "opens"] ) 如果在嵌套的“msg”映射中找不到键“clicks”或“opens”,get_in/2将返回nil,然后抛出错误: ** (ArgumentError) argument error :erlang.++(nil, nil) (stdlib) erl_ev

Elixir 如何按查询筛选预加载的记录

我列出了一个记录列表(包) 这些包通过多对多关系链接到项目: 包里有很多包 这件商品有许多包装 物品有多个:包装,通过:[:包装,包装] 包装有许多:物品,通过:[:包装,:物品] 当我列出这些包时,我想预加载它们的活动项目 def list_packs(params) do packs = Pack |> preload_active_items() |> Repo.all() |> Repo.preload([:classroom, [pac

elixir中匹配运算符(=)的用途是什么?

我正在读《长生不老药》,我对=操作符作为匹配操作符有点困惑 网站上说 Elixir,=运算符实际上称为匹配运算符 它给出了一个例子: iex> x = 1 1 iex> x 1 iex> 1 = x 1 iex> 2 = x ** (MatchError) no match of right hand side value: 1 出于某种原因,我仍然不明白1=x在做什么。如果我将刚刚分配的变量的值放在=的左侧,它将返回1,如果值不相同,它将抛出错误。我真的看不出这有什么

Elixir guardian的问题-如何在登录中生成访问和刷新令牌

为了使JWTs无效,人们使用两种方法之一 黑名单/白名单(带guardian_db) 一个刷新令牌(允许重新生成访问令牌)和一个短的过期访问令牌 我不想在我的项目中使用guardian\u db。那么,如何在登录端点中生成访问令牌和刷新令牌? 我的代码是: 文件mix.ex # Authentication library {:guardian, "~> 1.0"} 文件config.exs # Guardian configuration

Elixir handle\u info或handle\u调用期间Genserver状态更改

假设我有一个简单的genserver,它包含一个简单的:队列作为它的状态。不断添加带有手柄的物品。每隔5秒,我使用process.send\u处理队列。通过回拨处理当前状态下的_信息来处理该调用。处理并清空队列,然后应用一个新的空队列作为genserver的当前状态 我的问题是: 在处理队列时,当调用进入genserver时会发生什么情况?因为我返回了一个新的空队列来处理{u info{:noreply,:queue.new},所以它会覆盖在我处理队列时添加的项目吗?或者genserver强制转

Elixir 如何处理;“地位”;Phoenix模板中的变量

我正在尝试在我的eex模板中执行以下操作: <% current_production_date = nil %> <%= for widget <- @widgets do %> <%= if (current_production_date != widget.production_date) do %> <!-- ... output a new date header and re-assign current producti

Elixir 监督树中的名称解析

我正在尝试解析由应用程序管理的GenServer,该应用程序使用elixir 1.9中的注册名称。下面是一些示例代码: defmodule Experiment do use Application def start(_type, _args) do child_specs = [ config_spec() ] Supervisor.start_link(child_specs, name: Experiment, strategy: :one

使用supervisor为每个节点启动elixir子进程

我试图输入节点的数量,并为每个节点启动genserver进程;即每个GenServer.start\u link(n)(其中n是节点号)为每个进程启动一个单独的进程(PID) pids=Enum.map(1..totalnodes,fn-> {:ok,unit}=GenSerModule.start_link(n) 单元 (完) PID从此行返回(,等等) 现在我想在一个主管下启动节点。也就是说,我必须通过每个节点的Supervisor的init函数启动genserver进程,并获得PID。类

Elixir 是否可以在EXTO查询中进行预加载选择?

我需要从Postschema中选择包含10多个字段的特定字段。 我还需要选择预加载的:comments。我该怎么做 query = from p in Post, preload: [:comments], select: map(p, [:comments, :title]) Repo.all(query) 实现这一点的方法有多种,具体取决于您希望作为输出接收的数据结构类型。如果希望%Post{}结构只包含注释和标题字段,请使用以下查询: query = from p in Post, pr

Elixir 对pin(^)运算符使用的混淆

我在看一些长生不老药代码,看起来像这样: @to_preload [ :last_modified_by, change_request: [application: [:app_definition]], comments: [:user] ] def preload(query) do preload(query, ^@to_preload) end 我相信调用preload(query,^@to_preload)实际上是对宏的调用,因为文

Elixir 如何同时插入两个对象,但相差1秒?

在某些情况下,我需要通过EXTO将同一结构的两个对象插入到数据库中,因此的inserted\u在或updated\u在的 我依次插入两个struct对象,一个接一个,它们在处插入的和在处更新的结果是相同的。而我希望第二个对象在处插入_,在处更新_,时间比第一个对象长1秒,这样以后当我从数据库检索它们并在页面上显示时,数据将更有意义 向第二个对象的changeset结构提供inserted\u at或updated\u at+1秒的changeset\u没有帮助,因为它们被EXTO忽略,并且两个对

Elixir 如何生成具有不同组合的连续整数列表?

我想生成从1到6(1,2,3,4,5,6)的所有可能的整数列表(长度为5),其中按顺序至少有4个整数 例如: [6,1,2,3,4] -> 1,2,3,4 are in sequential order [1,3,4,5,6] -> 3,4,5,6 are in sequential order [2,3,4,5,1] -> 2,3,4,5 are in sequential order [1,2,3,4,5] -> 1,2,3,4 and 2,3,4,5 ar

Elixir Phoenix Framwork LiveView将替换所有内容

我正在尝试用Phoenix LiveView构建一个实时股票视图。 我得到了新的数据,它也在我的数据库中得到了更新。 问题是,当有10只股票,其中一只得到更新时,只会显示更新后的股票。下面是相关的代码片段。我正在使用PubSub系统发送/接收事件 @impl true def mount(_params, _session, socket) do if connected?(socket), do: Stockview.subscribe() {:ok, assign(so

Elixir 仙丹世界中循环的替代方式是什么?

我对长生不老药还是新手。我正在尝试创建一个方法,该方法接受请求列表并处理每个请求。如果全部通过,则返回{:确定,“成功”};如果失败,则返回{:错误,错误原因} 在其他语言中,我可以这样做。假设流程函数返回{:ok,“success”}或{:error,error\u reason} def func(请求): 对于请求中的请求: 如果{:error,error\u reason}我将使用递归: def func([head | tail])do 案例处理(head)do {:错误,原因}->{

为什么我的Elixir函数返回列表列表?

我有一个由函数make_struct返回的结构,如下所示: %Example.Struct{example: 1, example_again: 2} i、 e.不是像:[%Example…]这样的括号,至少我认为它会像上面那样返回,但函数在GenServer模块中,有时我会注意到我的函数会返回列表中的值,原因我不明白 我想返回这些结构的列表: def foo(data_as_a_list) do my_list = [] for entry <- data_as_a_lis

上一页 1 2 ...  39   40   41   42    43   44   45  ... 下一页 最后一页 共 125 页