标签: Elixir
directed-acyclic-graphs
所谓“归纳图”,我指的是一种纯粹的功能性数据结构,如本文所述:web.engr.oregonstate.edu/~erwig/papers/icpivegraphs_JFP01.pdf
更具体地说,我只对以这种方式实现的DAG感兴趣,尽管我认为一般的方法是类似的 对于Elixir,我没有见过类似的东西,但是有一个Erlang实现:。对于Elixir,我没有见过类似的东西,但是有一个Erlang实现:。又一次投票支持有向图!我们也只是使用长生不老药。虽然值得一提的是,有向图使用ETS,它不是纯粹的
我正在尝试编写一个网络爬虫,需要跟踪访问的URL。为了做到这一点,我已经尝试使用哈希集,但我一直无法用新的URL更新它
defmodule Crawl do
@depth 2
@doc """
Starts crawling process
"""
def start(url) do
visit(url, @depth, HashSet.new)
end
defp visit(url, 0, cache) do
end
defp visit(u
标签: Elixir
phoenix-frameworkecto
我有一个带有字符串字段的模型,该字段必须至少有两个字符长:
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
|> validate_length(:name, min: 2)
end
问题在于,正确填写changeset.errors后,返回:
[name: {"should be at least %{count} c
标签: Elixir
phoenix-frameworkecto
我试图使用当前版本的phoenix/elixir/etc来学习本教程:但我发现phoenix\u-eTo的编译错误
版本如下:
[mariano:~/phoenix/realtime_todo]$ git remote -v
origin https://github.com/phoenixframework/phoenix.git (fetch)
origin https://github.com/phoenixframework/phoenix.git (push)
[mariano:
我正在尝试这样呈现原始html->
<%= raw "<noscript>\n <div style=\"width: 302px; height: 422px;\">\n </div>\n </noscript> \n\n\n" %>
这显然不是我想要的。我错过了什么?为什么要转义noscript中的内容?将此字符串呈现为html的正确方法是什么?这不是Phoenix的问题。这就是chrome在编辑为html时的处理方式。你可以看到
假设我有一个模块MyApp.User,它有以下方法:
def update_some_counter(user) do
from(u in MyApp.User , where: u.id == ^user.id)
|> Repo.update_all(inc: [some_counter: 1])
end
有没有办法将上面代码中的MyApp.User更改为检索当前模块的方法 您可以使用特殊形式\uuuuu调用者\uuuuuu来访问调用模块的名称。您可以使用\uuuuu模块\uu
标签: Elixir
phoenix-frameworkecto
假设我有一些表单,它有电子邮件和密码字段以及2个验证:电子邮件必须是唯一的,密码不应少于8个字符
当我使用Repo.Insert或Repo.update或类似的任何其他方法时,我首先会得到与数据库无关的验证错误(少于8个字符的密码),并且只有在密码正确的情况下,它将访问数据库,发现电子邮件已经存在,并再次将其添加到变更集错误中
因此,如果用户发送一个表单,其中包含一封已经存在的电子邮件和一个简短的密码,那么他只会得到关于后者的错误,是否有一种方法可以始终点击数据库,以便同时获得通常的和数据库特定
我想试试凤凰框架,但不能接受
我安装elixirbrew安装elixir,安装之后,我安装Phoenixmix archive.install/path/to/archive
然后尝试混用phoenix.new\u app并获取错误信息:
**(UndefinedFunctionError)未定义函数:crypto.strong\u rand\u bytes/1(模块:crypto不可用)
:加密。强随机字节(64)
lib/phoenix_new.ex:459:Mix.Tasks.phoeni
我的phoenix应用程序中有一个视图模块,其中包含render\u footer/1。我将如何使用测试来测试这个函数
您可以调用Phoenix.View.render\u to\u string。还要记住,您的模板都是作为render/2调用预编译的,所以我只需调用
render LayoutView, "footer.html", assigns
除非您需要为测试做大量准备,否则可以使用render\u footer函数,而不是执行以下操作:
import Phoenix.View
tes
我在应用程序中运行混合测试时收到此错误消息:
**(混合)无法启动应用程序brcpfcnpj:“编码错误”
我知道发生错误的原因是我插入了一些重音字符,但我希望这可以作为默认情况下支持UTF-8的灵丹妙药。这是我的mix.exs文件:
defmodule Brcpfcnpj.Mixfile do
use Mix.Project
def project do
[app: :brcpfcnpj,
version: "0.1.0",
elixir: "~>
Elixir’s解释了如何使用GenServer实现包含代理的注册表服务器
每个代理的PID都保存在一个映射中,其中键是客户端提供的代理名称,值是代理的PID
为了避免保留对已死亡代理的引用,该指南建议使用Process.monitor/1监视新创建的代理,并通过添加名为refs的新映射稍微修改状态,其中包含引用(由Process.monitor/1返回的值)作为键,代理的名称作为值。它还显示了如何使用handle_info/2来更新refs来处理监控消息
Process.monitor/1接收
标签: Elixir
phoenix-frameworkelixir-mix
我有一个Phoenix应用程序,它使用Phoenix.Token对令牌进行签名和验证
这在应用程序本身中运行良好,但在尝试使用混合任务中的Phoenix.Token时,我遇到了一个奇怪的错误
下面是一个简单的例子:
defmodule Mix.Tasks.SignSomething do
use Mix.Task
alias MyApp.Endpoint
@shortdoc "sign something"
def run(_args) do
IO.inspect P
是否有一个库负责将数字转换为单词?
例如:
转换103->103
或
转换5765->伍仟柒佰陆拾伍未发布到Hex.pm,但实现数字转换算法的模块:
iex(2)> NumberToWord.say(123312133123)
"one hundred and twenty three billion, three hundred and twelve million, one hundred and thirty three thousand, one hundred and twent
我正在尝试筛选到我的API的连接
在我的mix.exs中,我添加了:
pipeline :some_validation do
plug VerifyLogicPlug
end
### INSIDE MY SCOPE:
pipe_through [:some_validation, :previous_pipeline]
我的插头如下所示:
defmodule VerifyLogicPlug do
import Plug.Conn
def init(options),
是否可以从URL流式传输文件?亚马逊S3
我试着做:
stream= File.stream!(public_s3_file_path)
我得到了错误,尽管文件在那里并且是公共的:
** (File.Error) could not stream "filepath...": no such file or directory
(elixir) lib/file/stream.ex:78: anonymous fn/2 in Enumerable.File.Stream.reduce/
我有一个将产品添加到数据库的功能(product是一个map):
IO.inspect显示:
price: 52
但我得到了这个错误:
(Ecto.ChangeError) value `24` for `Api.ProductShop.price` in `insert` does not match type :float
因此,price是一个int,但需要是一个浮点值
这是来自IO.inspect(产品)
将价格转换为浮动尝试():
它记录了以下内容:
the product pri
例如,我有一个模块,如
defmodule Foo do
@type bar :: string
end
但是我不想为bar生成文档,因为这意味着要使用内部实现。我相信您可以使用该标志
@doc false
最重要的是你不需要文档。
如文件所示:
函数的类型有@typedoc,但与@doc false不同,@typedoc false似乎不会在文档中隐藏类型。由于这是供内部使用的,我假设您也不想将其导出到模块外,因此您可以使用@typep将其声明为私有,这也会将其从文档中删除:
defm
我需要一个函数,它接受一个小数点(它是money,所以小数点后两位),并四舍五入到最近的四分之一。我试图避免转换为浮点数,而停留在十进制世界中。(我也查看了Money库,没有看到满足我需要的舍入函数
这个函数可以工作,但很糟糕。十进制库本机只支持舍入到整数或一半,我不能将:lt和:gt这样的值滑入Enum.member?因为它们不可枚举,所以我对:lt和:gt使用了单独的条件
def round_up_to_nearest_quarter(preroundedamount) do
a
标签: Elixir
phoenix-frameworkdistilleryedeliver
我正试图发布一个长生不老药,凤凰应用到digital ocean服务器与蒸馏厂和edeliver。每当我执行以下命令时,我都会得到错误
mix edeliver build release --verbose
错误消息
A remote command failed on:
username@server-ip
Output of the command is shown above and the command executed
on that host is printed belo
我想计算数字列表中连续元素的差异,例如,input=[1,2,3,5]应该给出输出[-1,-1,-2]
我想出了两种看起来或多或少复杂的方法。有没有更简单、更惯用的方法
使用zip:
Enum.zip(input, Enum.drop(input,1))
|> Enum.map(fn {x,y} -> x-y end)
Enum.scan(input, [0, 0], fn x, [_delta, prev] -> [prev-x, x] end)
|> Enum.
我试图从命令行使用iex-S mix phx.server运行phoenix server,但我不断收到关于未使用变量的编译警告
编译失败,因为在使用--warnings as errors选项时出现警告
我不关心这些警告,因为我在发展的中间,这些VAR最终会被使用或扔掉。我尝试过传递-h和其他合理的选项,但它们都不起作用,我在文档中找不到任何关于如何让phx.server将选项传递或覆盖到编译器的内容
我看过这些医生,但他们没有帮助
我已经尝试过传递--no compile选项,但这是
标签: Elixir
phoenix-frameworkhostname
我要做的一点小结。我有一个运行在AWS Elastic Beanstalk实例上的Phoenix应用程序,我正在发送包含PDF的REST API请求以进行操作(拆分、合并等)。每个请求都保存在数据库中。这就是我的请求架构的样子:
schema "requests" do
field :body, :string
field :endpoint, :string
field :method, :string
field :request_hos
试图添加用户视图和用户控制器,但我遇到了一个奇怪的编译错误
从外观上看,我怀疑这也与生成的文件有关,但我仍然不知道如何解决它
这是控制器文件夹中的我的用户\u controller.ex:
defmodule ChatterWeb.UserController do
use ChatterWeb, :controller
alias Chatter.User
def index(conn, _params) do
users = Repo.all(User)
ren
有没有一种方法可以将回调附加到提交事务后调用的Ecto事务?我在找类似的东西
我正在处理的用例是在执行操作后引发副作用。例如,在下面的代码中,我想在App.ServiceB.run/0中启动副作用,但由于它是在调用方启动的事务上下文中被调用的,因此我不能保证操作不会回滚
defmodule App.ServiceA do
alias App.Repo
def run() do
App.Repo.transaction(fn ->
with {:ok, _} &
函数hello没有任何冲突&工作正常
defmodule用户操作
defstruct[:名称]
结束
迎宾舱
def hello(%User{}=User)do
“你好#{user.name}”
结束
def你好(姓名)吗
“你好#{name}”
结束
结束
但是如果我在第一个函数中添加可选参数,就会出现冲突错误
。。。
def hello(%User{}=User,opts\\[])do
“你好#{user.name}”
结束
...
错误
def hello/1与hello/2的默认值冲
我在proto/*.proto中有一些协议缓冲区定义。我当前基于Makefile的构建系统将它们编译成一个Erlang模块和头,并编译成一个自描述符(作为.pb文件),然后将描述符作为梁模块嵌入:
foo.proto -> foo_pb.erl, foo_pb.hrl
-> foo.pb -> foo_pb_desc.beam
我已经实现了一个mix\u protobuff任务来完成第一步,以及foo.proto->foo.pb部分步骤
我还获得了将任意文
我想使用postgres转储我的数据库,并将文件写入我的phoenix应用程序的本地文件夹,但我无法使其工作。我试着使用这个选项
以下是我所做的:
System.cmdpg_转储到[myapp_dev]中:backup.sql
:into选项,如中所明确说明的,将结果注入到给定的collectable中,这意味着命令的输出将附加到您传递并返回的字符串中
使用本机选项转储到文件更容易,让shell和pg_转储执行所有工作,并且不来回传递巨大的blob。下面的方法应该有效
System.cmdpg_
我在phoenix上构建restful api(json)。我不需要html的支持
如何在phoenix中覆盖错误?示例错误:
- 500
-404当找不到路由时
和其他。您需要自定义MyApp.ErrorView。Phoenix在web/views/error_view.ex中为您生成此文件。可以找到模板的默认内容
另外请看,虽然它们似乎有点过时,因为它们指示您使用MyApp.ErrorsView(复数),而对于那些可能与我有相同问题的人,它被替换为MyApp.ErrorView,但对于404
Elixir是否支持日期范围?例如,像这样的Ruby代码在Elixir中可能吗
需要“日期”
d1=日期:civil 2015,1,1
d2=日期:civil 2015年1月7日
(d1..d2).每个{d}放置d}
输出:
2015-01-01
2015-01-02
2015-01-03
2015-01-04
2015-01-05
2015-01-06
2015-01-07
2015-01-01
2015-01-02
2015-01-03
2015-01-04
2015-01-05
2015
我有一个简单的网站写的长生不老药/凤凰。
我今天做了一些更改,希望将其部署到生产环境中
我推送了我的回购协议,将其拉到生产服务器上,并构建了一个版本,其中包括:
MIX\u ENV=prod MIX release
但它失败了。。。
因此,我用--verbosity=verbose再次运行它,但失败的原因是:
silent])===> Provider (relup) failed with: {error,
{rlx_prv_relup,
{relup_script_gene
我的伞形应用程序具有以下目录结构:
umbrella_app/
_build/
apps/
client/
config/
lib/
client.ex
test/
server/
...
config/
是否有一种方法可以在伞形应用程序中的某个地方编写代码,无需创建另一个子应用程序即可从我的客户端和服务器访问
例如:
# umbrella_app/a
我不熟悉长生不老药。我使用该库与Redis一起工作。我无法正确执行MGET命令。
此代码适用于:
Like4uElixir.RedixPool.command(["MGET", "a", "b", "c"])
-它从Redis返回3个值。
但是这个代码不起作用:
keys = ["a", "b", "c"]
Like4uElixir.RedixPool.command(["MGET", keys])
但我有所有的钥匙。如何将数组转换为多个函数参数?您的代码示例不一样。您正在创建嵌套列表,而不
我使用标准的scaffold创建了一个user模型,该模型的属性为first\u name和last\u name。我写了一个验证,检查名字或姓氏是否存在。默认验证将检查和。添加测试first\u name或last\u name存在的测试的最佳方法是什么
defmodule Vutuv.UserTest do
使用Vutuv.ModelCase
别名Vutuv.User
@有效的属性%{first_name:“某些内容”,last_name:“某些内容”}
@无效的_attrs%{}
测试“具
我以为字符串concat是,但我无法在下面的代码中使用它。我犯了一个错误
只允许文本二进制文件和字符串,动态值需要在具有^
我已经添加了^,但它仍然不起作用
def delete(conn, %{"id" => id}) do
card = Repo.get!(Card, id)
# Look for any cards that have chosen one as master
# Update name to deleted card + version
我正在从谷歌云存储下载一个文件()
文件的二进制内容在响应体上返回。使用:zlib.uncompress抛出我
** (ErlangError) erlang error: :data_error
我通过将文件保存在磁盘上并手动提取来检查文件的内容
有没有其他方法可以不用unix命令在elixir/erlang中解压文件
编辑:
检查二进制文件后,我同意了
r.body |> inspect(binaries: :as_binaries) |> IO.puts
<<31
我知道让GenServer进程自己调用几乎是不可能的,因为您实际上遇到了死锁。但是,我很好奇,是否有一种更好的方式来做这种事情
假设以下场景:我有一个队列,从中弹出内容。如果队列曾经是空的,我想重新填充它。我可以这样构造它:
def handle_call(:refill_queue, state) do
new_state = put_some_stuff_in_queue(state)
{:reply, new_state}
end
def handle_call(:pop, st
我发现Erlang的~pformat命令在调试时很有用:它可以将数据打印成一种可以往返返回Erlang的格式
在长生不老药,我可以
require Logger
# ...
Logger.debug("foo=#{inspect foo} bar=#{inspect bar}")
并获得我想要的效果,但在任何地方键入“inspect”都是一件痛苦的事情,有时在我的代码库中,我必须内核。inspect。我宁愿它只是做了正确的事情:
require Logger
# ...
Logger.debu
标签: Elixir
phoenix-frameworkecto
我正在尝试删除一个项目及其所有子项:
where(ParentModel, [x], x.user_id == 123)
|> first
|> Repo.delete()
# or
# Repo.delete(where(ParentModel, [x], x.user_id == 123))
两者都会引发异常:
function Ecto.Query.__changeset__/0 is undefined or private
它与验证有什么关系
在父模型中,我有on_d
标签: Elixir
otperlang-supervisor
现在,当我执行以下操作时,我从start_child获得一个错误状态:
{_, pid} = NTree.start_link
{_, cid} = Supervisor.start_child(pid, [])
# {:error, #<PID.0.91.0>}
过程信息(cid)产生:
[当前_函数:{TreeWorker,:loop,0},初始_调用:{:erlang,:apply,2},
状态::正在等待,消息队列长度:0,消息[],链接[],
字典:[],陷阱\u退出:f
如果我用iex启动我的应用程序,我会在控制台上看到我的应用程序的日志语句
如果我启动应用程序时将其分离,然后将remsh放入其中,我如何才能看到相同的输出 默认情况下,从远程shell执行的任何操作都会将其组长设置为shell的组长,因此I/O将按预期工作
对于从主节点启动的进程,已经设置了它们的组长,因此它们的I/O不会重定向到远程shell。您可以使用process.group\u leader/2设置流程的组长,例如:process.group\u leader(pid,process.g
我正在使用elixir库来管理rocksdb中的数据。有一种删除方法定义如下:
delete(db_or_cf, key, write_opts \\ [])
delete(Rox.DB.t | Rox.ColumnFamily.t, key, write_options) ::
:ok |
{:error, any}
我使用以下方法调用此方法:
result = case Rox.delete(db, :erlang.term_to_binary(key)) do
标签: Elixir
phoenix-frameworkfragment-identifier
有没有办法将片段标识符添加到路径帮助器
我尝试从登录页面链接回登录页面中的“关于”部分
<a href="localhost:4000/#about">ABOUT</a>
我尝试将路径合并,但没有成功:
<li><a href="<%= page_path(@conn, :index) <> "#about" %>">ABOUT</a></li>
提前感谢您的帮助 不能嵌套双引号:
<a
标签: Elixir
elixir-mixelixir-poisonabsinthehex-pm
我得到了未选中的环境依赖项对于exto.create和exto.migrate的错误。我有以下mix.exs文件依赖项
defp deps do
[{:phoenix, "~> 1.3"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.3"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.11"},
使用Phoenix Web应用程序,我有一个控制器,可以调用函数来启动一些处理。此处理可能需要大量时间
目前,如果我调用控制器两次,该进程将终止并重新启动(不希望)
如何确保对函数的后续调用不会终止或重新启动进程,而只是被忽略
谷歌似乎建议使用代理,但我一直没能让它发挥作用。虽然我可以设置标志的状态以防止其重新运行,但当第二次调用控制器时,进程仍然会终止
问题演示:
左侧的按钮按预期工作,并使用javascript发布到端点/起点
每次按下右侧的按钮时,都会重新启动该过程
更新:POST请求将
例如,在宏中:
其中:async是使用ingExUnit.Case时的一个布尔选项
defmodule AssertionTest do
use ExUnit.Case, async: true
test "always pass" do
assert true
end
end
它意味着两次否定该语句()。找到有关为什么在中执行此操作的最佳说明:
在代码中使用双重否定会模糊原始参数
价值观
对于false和nil,这将返回false,对于true
别的。起初,这似乎是一个
标签: Elixir
httprequestphoenix-frameworkelixir-mixhttpoison
我在phoenix应用程序(lib/mix/tasks/fetch.btc.ex)上有mix taskmix fetch.btc:
运行mix fetch.btc时出现错误:
** (ArgumentError) argument error
(stdlib) :ets.lookup_element(:hackney_config, :mod_metrics, 2)
PROJ_DIR/deps/hackney/src/hackney_metrics.erl:27: :hackne
如果我理解正确,elixir中的元组用{}表示,而映射用%{key:value}表示为键:值对
在下面的代码中,Stream.filter和Enum.map接受entries作为输入,这是一个map并对其进行迭代
但是它们内部的lambda函数正在{uuu,entry}上进行模式匹配,这是一个元组。这是怎么回事
defmodule TodoList do
defstruct auto_id:1,条目:%{}
def new(),do:%TodoList{}
def添加条目(待办事项列表,条目)d
我一直在寻找一些静态的全局值,比如,如果某个值为nil | null,则将此默认值放入,例如,如果赋值中没有声明,则将默认url放入eex中的链接中
例如:
# Create a link with default return if URL not found
<%=
link "Go back",
to: assigns[:url_back] || Application.get_env(:app_name, :default_values)[:url_
标签: Elixir
phoenix-frameworkphoenix
我正在按照《凤凰城1.4编程》一书开发一个简单的应用程序
在添加创建新用户的逻辑时,出现以下错误:
== Compilation error in file lib/rumbl_web/controllers/user_controller.ex ==
** (CompileError) lib/rumbl_web/controllers/user_controller.ex:19: Rubml.Accounts.User.__struct__/1 is undefined, cannot ex
Elixir Phoenix使用名称空间作为控制器、模型和视图的前缀。在我的例子中,它是CableWeb,我的应用程序称之为Cable
我想删除它,因为我的应用程序很小,没有名称空间更容易使用
我试图删除它,并重写了下面的代码
scope "/", CableWeb do
pipe_through :browser
get "/", PageController, :index
end
...
defmodule CableWeb.PageC
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 125 页