在Elixir中跨协议实现共享功能

我正在阅读戴夫·托马斯的书,目前正在探索长生不老药的治疗方案。我知道我可以使用@fallback\u返回到任何true的通用协议实现。例如: defprotocol Caesar do @fallback_to_any true def encrypt(string, shift) def rot13(string) end defimpl Caesar, for: BitString do def encrypt(string, shift) do # impleme

Elixir 你如何在长生不老药中获得NTP时间?

有人能给我举个例子,说明如何使用Elixir从NTP服务器获取NTP统计数据吗?这里有一个Erlang中的例子,应该很容易移植到Elixir。它显示了如何分解NTP数据包,但是没有实现实际的NTP算法。github.com/mnp/erlang-ntp

Elixir 使用IO.ANSI输出表格数据

我想使用ANSI转义序列来控制格式,将二维列表呈现为一个漂亮的表格输出 因此,根据这些数据: data = [ [ 100, 20, 30 ], [ 20, 10, 20 ], [ 50, 400, 20 ] ] 我想输出如下内容: 100 20 30 20 10 20 50 400 20 Table.format(data, padding: 2) |> IO.puts 非常感谢如果每个项目的长度小于7个字符,则可以使用制表符实现间距: iex>

Elixir 在Phoenix框架中,如何获得通道推送以在服务器上接收消息

我目前正在学习Phoenix框架,在通道推送中获得方法匹配中的句柄时遇到了一些问题 我的javascript(技术上是typescript)如下所示: let channel = this.socket.chan('rooms:lobby', {}); channel.join().receive('ok', channel => { console.log(`Joined the channel`); }); // channel.on("feed", payload =>

Elixir 如何配置插件以将另一个目录设置为priv/static/以外的公共目录?

我目前正在使用aurelia作为我的phoenix应用程序的前端框架。我想将项目根目录中的jspm_packages文件夹指定为priv/static文件夹之外的静态目录。有没有办法配置plug来实现这一点?简单的回答是:您不应该这样做 答案很长:在生产中,Elixir应用程序关心两个目录:1。ebin(这是您放置编译代码的地方)和2。priv(在生产中运行软件所需的辅助文件,如静态文件)。如果您依赖的文件不在这些目录中,则在生产或构建版本中运行时,可能会出现问题。所以我建议你把aurelia的

如何在phoenix elixir中添加插件路由器

我为users资源创建了身份验证,它工作正常,但现在我想使用user_controller.ex到project_controller.ex的authenticate函数 若我将authenticate private函数从user_controller复制到project_controller,那个么身份验证在projects资源上有效,但我不想在每个控制器中复制此authenticate函数。我需要知道什么是最好的方法来干燥这段代码。我认为路由器是添加身份验证插件的好地方,但我需要知道应该在

Elixir 这两个模块定义之间的区别是什么?

关于Phoenix框架:我只是想知道写作和 defmodule MyApp.User do # some code end 而且 defmodule User do # some code end 稍后,编写User.function要比编写MyApp.User.function容易得多。这是为模块设置名称空间,以避免冲突。想象一下这样一个场景:您调用模块User,然后使用一个名为User的库,该库还定义了一个User模块。你会遇到碰撞 您可以在使用用户模块的模块中执行以下操作: d

Elixir 我怎样才能用长生不老药处理一根断了的输液管?

这个长生不老药脚本输出一些数字 # output_numbers.exs (1..1_000) |> Enum.each(fn (i) -> IO.puts i end) 如果我运行elixir output_numbers.exs | head-10,我会得到一个错误: ** (ErlangError) erlang error: :terminated 我认为这是因为head-10一旦有10行代码,就会关闭它的STDIN管道 在这种情况下,我如何才能优雅地终止?Rescu

Elixir 从插头内部调用插头

我有几个插头,我每次都打。我想创建一个插件,为我调用所有这些插件。我该怎么做呢 这就是我目前尝试做的: defmodule MyApp.SpecialPlug do import Plug.Conn def init(default), do: default def call(conn, default) do plug SimplePlug1 plug SimplePlug2, args: :something end end 但是它抛出了一个编译器错误

Elixir Windows IEx:何时使用--werl标志

尝试使用IEx.pry调试项目时,我发现需要使用--werl标志。我想请任何有可能解决本次讨论的人: 我当前的项目有多个模块,并使用Plug.Router。我意识到,在这种情况下,窥探可能不是最好的调试技术。还是 我很想学习如何使用pry进行调试,所以我测试了一个与pry非常类似的简单案例。简而言之,从流程环境中窥探变量需要IEx外壳在编译时运行。这适用于单个模块,如上面链接的示例中所示;但是,我当前的项目要求我混合项目目录。请更正,也许有一种详细的方法可以在erlang控制台中编译和运行项目

Elixir-如何在Iex上格式化列表的输出

我正在用EXTO做一个小的Cli程序,当我查询一些结果时,我会得到一个列表,在我学习Elixir的过程中,我在终端中做不到的事情是格式化返回列表的函数的输出 当我运行Repo.all(从条目中的u开始,选择:u.title)时,我得到如下列表: [“测试标题”、“第二标题”]我想将输出格式化为: ***** test title ***** second title 列表中的每个项目都有一个分区,但我不知道如何准确地进行分区,也不知道如何有效地进行分区。我试过列表理解,但是。。。它返回一个列表

Elixir 凤凰频道接受base64 png原始

我想将Base64 PNG图像流(通过捕获网络摄像头生成)发送到凤凰频道 据我所知,通道中方法中的handle_只接收json字符串,所以我目前所做的是使用以下方式发送它: channel.push(“流:视频”,JSON.stringify(数据)) 就像下面的片段: var delay = 100 if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) { delay = 40 console.info

Elixir 我怎样才能得到“我的”呢;“基本url”;菲尼克斯的应用程序?

当我在本地运行Phoenix应用程序时,所有请求的基本URL类似于http://localhost:4000。在生产中,它类似于https://example.com/ 我想把这个基本URL传递给我的JavaScript。我怎样才能得到它 注: 我不想检查conn;这是我想在编译或引导时设置的,而不是在请求时设置 我知道我可以检查Application.get_env(:myapp,myapp.Endpoint)[:url][:host]],但这不包括方案(http或https)或端口。如果我

Elixir 如何在苦艾酒中使用时间戳?(凤凰城1.3)

我对菲尼克斯1.3+苦艾酒有问题 我尝试以下代码: schema "urls" do field :path, :string timestamps() end object :url do field :id, :id field :path, :string field :inserted_at, :datetime end 它使用id和path工作,但在插入时失败,原因是: Inserted_at :datetime is not defined in your

Elixir GenStage:返回值错误

我正在尝试实现一个非常简单的GenStage,目的是确保我理解它,并且在开始介绍我的特定应用程序逻辑之前能够让它工作。我从制作人那里得到一个返回数据错误。我认为数据是正确的。我已经读到,返回的元组中的第二个值必须是一个列表,它看起来是一个 以下是我的GenStage实现: defmodule CoachActivity.Event.Producer do use GenStage def start_link(page) do GenStage.start_link(Coach

Elixir Poison.EncodeError无法对值进行编码:{“已采取”,[]}

我试图返回无效的变更集 当做 conn |> put_status(422) |> put_view(Elemental.Auth.ErrorView) |> render("422.json-api", %{data: changeset}) 或 使用JaSerializer 我越来越 (Poison.EncodeError) unable to encode value: {"has already been taken", []} 这是出乎意料的。它早就开始工作了。

等价于Elixir中Ruby的Array.pack

ruby上有一个应用程序可用于压缩阵列: 2.3.1 :001 > [3340546, 3340547].pack("L*") => "\x02\xF92\x00\x03\xF92\x00" 2.3.1 :002 > "\x02\xF92\x00\x03\xF92\x00".unpack("L*") => [3340546, 3340547] 有没有为Elixir上的阵列制作包的选项?有!在Elixir中,我们使用二进制模式匹配来实现这一点。Ruby的pack/u

Elixir 我可以将管道和更新语法与结构一起使用吗?

我发现我想经常更新一个结构,然后通过管道将结果传递给另一个函数。更新我的结构的需要不断破坏我的管道 我发现自己经常这样做: my_struct = %{my_struct | my_field_in_struct: a_new_value} |> my_funct1 my_struct = %{my_struct | my_field_in_struct: a_new_value} |> my_funct2 my_struct = %{my_struct | my_field_in

如何通过Elixir中的Enum.max_返回函数值和返回的元素

如何在Elixir中从Enum.max_by/3返回函数值和返回的元素 我有这个案子: def fuzzy_match(x, items) do m = Enum.max_by(items, fn i -> TheFuzz.compare(:jaro_winkler, x.desc, i.desc) end) IO.puts("fuzzy: #{inspect(m)}") m end 仅仅知道最佳匹配项是不够的,我还需要知道匹配阈值保持和消除0.7以下的不良匹配

Elixir 长生不老药&x27;在外部.ex文件中编写的匿名函数可以';t使用交互式shell运行

我可以直接在交互式shell中编写匿名函数,如下所示 iex> total_bottles_milk = fn total -> total * 2 end iex> total_bottles_milk.(2) 但是,如果我在外部文件中写入并在交互式shell中运行,则会显示编译错误 我的文件名和目录路径是lib/expense.ex 下面是我的代码 defmodule Expense do total_bread_slices = fn total ->

Elixir 验证多种语言的长度

我正在开发一个多语言应用程序,它允许用户输入多种语言(例如,英语、汉语和韩语) 对于注册用户,我有validate_length函数来验证用户名和姓氏的长度 然而,我的问题是,我不希望计算英文字母和中文字母的结果相同。例如,如果我计算“David”和“David”的长度器防雷器防". 尽管汉字占用更多的空间,但它们都返回5 目前,Ecto支持通过码点和字集计算长度,但这两种方法都可以满足我的需要 我如何做到这一点?甚至可以计算字母的数量并通过需要多少“字节”进行验证吗?您可以做的一件事是使用正则

Elixir 正确测试发电机服务器和监控器

我对在Elixir中实现Genserver相当陌生。我有一个案例,我试图管理一些状态,Genserver在这个案例中工作得很好。但是,在测试Genserver时,我遇到了一些复杂问题 我有两个测试似乎是相互碰撞的。我有一个针对Genserver的单元级测试,还有一个更高级别的测试,其中我调用的函数使用Genserver和模块。以下是我的两个测试用例: 第一: 如果我单独运行它,它每次都会通过。但如果我运行此测试,它将定期中断: 第二: 在我的distribute/1函数中,实际使用的是Gense

Elixir 我可以使用ExUnit和Mix将助手模块拆分为不同的文件吗?

几次失败的尝试和文档使我相信,我必须在mix项目中的test/test\u helper.exs或嵌套在模块下的另一个test/*.exs文件(使用ExUnit.Case)中定义helper模块。有没有一种方法可以在它们自己的文件中定义这些模块,以便测试可以使用它们,而不会使test/test\u helper.exs混乱,或者将它们放在lib/下?在您的mix.exs文件中,您可以在项目声明中为不同的环境定义不同的路径(内部Mix.Project.Project/0回调,键elixirc\u路

Elixir 按虚拟计算字段排序

给定以下模式,我想计算:games\u won/:games\u played,将其填充到:percentage\u won并按:percentage\u won排序。如果我使用选择_merge并省去“AS?”,我设法计算了该值,但如何在order_by中引用该计算列 schema "players" do field :name, :string field :games_played, :integer field :games_won, :integer field :p

Elixir 如何在Phoenix上将字符串参数一次性转换为整数

我有以下错误,当我从表单中获取参数,然后使用Multi.insert(:insert,game) 我有这样的情妇。然后将团队id放在游戏地图上 game = %Game{team_id: attrs["team_id"], ....} Multi.new() |> Multi.insert(:insert, game) |> Repo.transaction() 当然,我认为类型error team_id应该是整数,但不是字符串。 我的问题是,如果有很多字符串,我应该将每个

Elixir 如何为包含特殊字符的函数编写规范?

我有一些宏定义具有特殊字符的函数。特别是“:”和“.”。可以为包含这些字符的函数编写规范定义吗 defmodule UniqueCharacters do defmacro make_wild_function_name do 函数名=字符串到原子(“baz:foo.bar”) 引述 def unquote(函数名)(),do::确定 结束 结束 结束 defmoduletestspecdo 导入唯一字符 #下一行不行 @spec baz:foo.bar()::好的 make_wild_func

检查elixir中字符串的第一个和最后一个字符之间的字符

我想替换/检查elixir中用户名的字符。因此,在易趣的竞买人列表中,最终应该是这样的: elixir中有字符串替换函数,但我是regex的新手,不知道elixir regex支持什么。那么我如何才能做到这一点呢 iex> String.replace("username1234", someregex, "***") "u***4" 当然,您可以使用正则表达式“替换除第一个和最后一个符号以外的所有符号”来完成此任务 Stri

Elixir 哪些情况需要投药/接药?

于是,我和一些朋友围绕这本长生不老药文档中的一段话展开了一场对话 在Elixir中,可以抛出一个值,然后捕获它。抛接球 保留用于无法检索的情况 值,除非使用抛出和捕获 这些情况在实践中非常罕见,除非 与未提供适当API的库接口 哪些情况需要使用try/throw/catchvs.try/rescue?这是为了与一些现有的Erlang库接口吗?页面上的示例显示了Elixir代码,这让我觉得有点困惑 我应该寻找的“合适的API”是什么?我的意思是,这是一个协议吗? < P>我认为Actudio/Ex

Elixir 如何为Phoenix应用程序传递自定义erl选项?

我的Phoenix应用程序正在达到Erlang VM的最大进程限制,为特定Phoenix应用程序(或者更好,仅为MIX_ENV=PROD)指定erl(如+p)自定义选项的最佳方式是什么?有没有办法通过应用程序的配置文件来实现这一点?或者如果没有,可能在我运行“mix phoenix.server”时您可以使用elixir运行带有--erl标志的应用程序: elixir --erl "+P 10000000" -S mix phoenix.server 如果您想要一个shell,可以使用iex:

Elixir 长生不老药猎犬等待页面加载

我正在提交一个登录表单,并尝试在之后使用elixir/hound捕获HTML。提交后,我运行page\u source,什么也得不到。如果我等待一秒钟(等待页面完成加载),那么我将返回html 有没有办法让hound等到页面加载完毕 我目前正在做::timer.sleep(2000),作为一种解决方法,希望找到更好的方法://这就是我所做的: 创建一个函数,每100ms重复检查一次测试条件,在本例中,我使用 您使用什么代码来导航/发布表单?我正在导航到我的登录页面,添加用户名/密码,然后运行单

Elixir 我如何通过管道传输单个数字来获取列表?

我有一个单独的元素/编号,我正在将其输送到枚举([])中,但Elixir抛出**(Protocol.UndefinedError)协议枚举未为90实现 90 |> Enum.into([]) v = 65 v |> Enum.into([]) Enumerable not implemented for 65 第一个参数应为可枚举,因此出现错误 要将单个元素导入列表,请使用 也许您正在寻找List.wrap/1,而不是|>Enum.into([])? 65 |> List.

Elixir 如何使用';在';用一个数组的元组?

我想像这样使用“in”操作符: array=[{1,“Jean”},{2,“Marc”}] 从(x)到人, 其中:^数组中的片段(“(?,?)”,x.id,x.first_name) |>回购协议` 但当我这样做时,我会得到以下错误: ** (FunctionClauseError) no function clause matching in :lists.zip/2 以下是代码为的回购协议: 您可以运行mixetest/models/people\u test.exs查看错误。添加了一个

在Elixir/Ecto中带有Timex.持续时间的WHERE子句

关于长生不老药和凤凰,我还是个新手。我正在通过创建API学习长生不老药和凤凰。但是当我使用Timex库时,我在模型查询方面遇到了一个问题。我想补充一点 def find_users_randomly(query, user_id, count \\ 10) do from a in query, where: a.id != ^user_id, where: is_nil(a.last_time_get_msg_at), or_where: 45 < Timex

什么是elixir phoenix html生成器中的上下文

我想看看phoenix1.3-dev。我从中克隆了phoenix,并按照phoenix/installer/README.md构建归档文件 phoenix/installer/README.md(供参考) 我通过mix phx.new blog创建了一个新的phoenix应用程序,但当我试图通过mix phx.gen.html Post posts title body:text创建一个简单的html框架时,我收到了以下错误消息: ** (Mix) Expected the schema arg

Elixir Ecto build_assoc/3与定义的外键不匹配?

我有以下两种型号,User和Post。我正在尝试创建一个与用户有外键关系的帖子 我的模式: @primary_key {:id, :binary_id, autogenerate: true} schema "accounts_users" do field :username, :string field :email, :string field :password_hash, :string field :password, :string, virtual: true

Elixir 与/*路径匹配的路由未按预期工作

我有以下路由器。例如: scope "/api", MyAppWeb do get "/activate", SubscriptionController, :create, as: :activate_account end scope "/", MyAppWeb do get "/*path", AppController, :index end SubscriptionController.create/2: def create(conn, %{"token" => t

Elixir 将数据从一种形式转换为另一种形式

我有以下清单: l = [ %{id: 1, name: "aash", possess: "car"}, %{id: 1, name: "aash", possess: "bike"}, %{id: 2, name: "rahul", possess: "scooter"} ] 我想将其转换为以下格式: ans = [ %{id: 1, name: "aash", possess: ["car", "bike"]},

Elixir 从API获取数据并使用毒药解码时获取参数错误

我刚接触Elixir/Phoenix,尝试通过构建一个小应用程序来学习 我正在从第三方API获取数据,并不断出现以下错误 (ArgumentError) argument error :erlang.iolist_to_binary([%{"24h_volume" => "1000", "name" => "some_name"},{...}]) 我的控制器中有: HTTPoison.start %HTTPoison.Response{body: body} = HTTPoiso

Elixir 长生不老药罐';t在定义结构的同一文件中创建结构

在这篇文章的开头,我要说我是长生不老药领域(以及一般的函数式编程)的新手。我目前正在学习字典类型,遇到了structs。根据我的书中的说明,我定义了这个: defmodule Subscriber do defstruct name: "", paid: false, over_18: true end 在那之后,这本书在本章的其余部分都在iex中运行,但我希望我的书在一个文件中。我尝试创建此结构的实例(所有值都设置为默认值),如下所示: 这个游戏让我成为一个编译错误: CompileEr

Elixir 将映射转换为字节

我有地图: %{ HEADER: "000000000 000000000000 00000000 ", AM01: %{"C4" => "11111111", "C5" => "1"}, AM04: %{"C2" => "22222222", "C6" => "2"} } 如何将此映射转换为如下所示的字节: "\x02\x1e000000000 000000000000 00000000 \x1e\x1cAM01\x1cC411111111\x1cC

Elixir 我喜欢多个关键词吗?

所以现在我用的是: dynamic( [u], ilike( u.name, ^"%#{String.replace(term, "%", "\\%")}%" ) ) 这个词是一个简单的字符串,就像charlie。我如何将其与一系列术语结合使用,比如:[查理,丹尼斯,弗兰克]-甚至没有片段也可能吗?好吧,这在某种程度上是可能的,只需要一点元编程。幸运的是,允许您在查询中使用自己的宏,因此我们只需要构建自己的宏,将几个iLike与OR粘合在一起 这里有几个陷阱。首先,我们应

Elixir 包药模块

例如,如果您有一个模块 defmodule Foo do # lots of "unknown" functions end 如何为该Foo创建包装器模块,如: defmodule Bar do # wrap all functions in Foo end 但是在Bar中,我想公开Foo中的所有函数,但另外我想在每个函数中添加一些代码,特别是我想尝试/捕获一个可以在任何Foo.error异常中显示的特定错误。。。我不想为Foo中的每个函数添加一个函数,因为这样做会重复 我可

Elixir Phoenix controller操作后如何获取conn结构

在我的项目的所有控制器操作之后,我想向Elasticsearch发送一些conn信息,例如:控制器操作响应、请求参数和端点 如果在操作解决后需要使用控制器返回的conn结构,我们可以做什么?我在应用程序中创建了一个插件: defmodule MyAppWeb.Plugs.RequestLogger do @moduledoc false alias Plug.Conn def init(opts), do: opts def call(conn, _opts) do

Elixir 什么时候使用多到vs多到EXTO多?

所以读这本书看起来像: 和都有多个:一些模式名称,通过:[……]和多个到多个由一个单独的联接表支持 两者之间的唯一区别是,您可以向“第三个联接表”添加额外的列,这是使用多对多联接表无法做到的 在使用习惯用法和数据库建模/支持数据的方式方面是否还有其他差异?如果您想在联接表上灵活添加列(或元数据),似乎总是更喜欢使用has\u-many-through关系。has\u-many是一对多,many\u-many是多对多。我认为您是正确的-在Ruby on Rails中也是如此,我经常喜欢通过使用,这

Elixir 如何在嵌套的多个贴图中放置值(phoenix参数)

纯长生不老药问题:如何在嵌套在主地图中的地图中添加值? 嵌套贴图的数量不是固定的 在Phoenix上下文中,问题是如何在参数和嵌套参数中添加值 如何做到这一点: %{ "fname" => "", "lname" => "", "addresses" => %{ "0" => %{ "address" => "" } }, "phone_numbers" => %{ "0" => %{"number

Elixir Don';t在控制台中截断查询结果

我提出这个问题: query = from i in MyApp.Image, where: i.deleted_at >= ^Timex.beginning_of_day(date), where: i.deleted_at <= ^Timex.end_of_day(date), select: i.path, order_by: [asc: i.deleted_at] 我得到62个结果,但它将在前50个结果之后将它们截断为…,用于其余记录: 50个结果中的最后一个 "image

如何在elixir中将一个函数传递到同一模块中的另一个函数?

在python中,我们可以将一个函数传递给另一个函数,如下面的示例代码 def digits(n): return list(map(int, str(n))) def digit_cube(n): return list(map(lambda x: x ** 3, digits(n))) 长生不老药也能做到吗?如果是,如何传递匿名函数 f=fn e->e*2结束 枚举映射([1,2,3],f) 或者使用 defmdo模块 def dbl(e),do:e*2 def map

上一页 1 2 ...  56   57   58   59    60   61   62  ... 下一页 最后一页 共 125 页