在Elixir中启动操作系统进程的最佳方式是什么
我希望能够在启动时向它传递不同的参数,
捕获其PID,然后杀死它。您可以使用端口来实现这一点:
defmodule Shell do
def exec(exe, args) when is_list(args) do
port = Port.open({:spawn_executable, exe}, [{:args, args}, :stream, :binary, :exit_status, :hide, :use_stdio,
如何提高性能,例如,mergesort。在mergesort的合并步骤中,大小为n/2的两个较小列表合并为大小为n的列表。因为这是递归发生的,所以调用下一个tiem merge来合并2个数组,这些列表的大小为n,而新列表的大小为2n。在Elixir中,列表是不可变的,我无法修改初始列表的值,即我尝试排序的列表。相反,它会在合并的每一步创建新列表。我该如何改进这一点?人们会使用ets吗?Elixir已经解决了很多这样的性能问题。以mergesort中的合并问题为例,我们有:list.merge,它
标签: Elixir
phoenix-frameworkectoelixir-mix
在Rails应用程序上,我们可以通过如下命令打印数据库表的记录计数:
rails r "puts User.count"
据我所知,如果我们想在Phoenix/Exto环境中实现同样的功能,我们应该运行以下命令:
mix run -e "IO.puts SampleApp.Repo.aggregate(SampleApp.User, :count, :id)"
这没关系,但对于日常使用来说太长了。还有更短的路吗?开箱即用,没有。
但是,您可以在SampleApp模块中定义一个函数,使其更短。
我被告知这段代码片段作者没有测试过
|>(fn l->[?[,枚举映射(l,&([inspect(limit::infinity),?\n]),?]]end.()
作为流水线命令序列的一部分,该命令使用库将数据从CSV文件转换为结构,并将结果输出为常规的长生不老药列表,以输入长生不老药源-即添加周围的括号,并用逗号分隔列表中的元素
这就是序列的意思:
File.stream!('tmp.csv') \
|> DataMorph.structs_from_csv("open-registe
使用docusign API创建一个信封,其中包含签名字段和初始字段,这些字段转换为选项卡
我想为每个签名添加“date signed”选项卡,但dateSignedTab没有任何效果。我们使用的表单有多个datesigned字段,名称为:date\u signed\u 1docsigndatesigned
我没有发现任何有用的文档或日期签名选项卡的示例。任何帮助都将不胜感激
%{compositeTemplates: [%{document: %{documentBase64: "Base.e
标签: Elixir
phoenix-frameworkbackground-process
我有一个系统,可以创建一个问题并将这个问题插入数据库,我可以通过单击我设置的链接来完成。这是很简单的事情。创建控制器操作设置其链接,然后单击按钮启动该操作
这项措施目前有效。但是下一个阶段是让系统创建一个问题,而不需要用户界面的任何干预。所以,这就把我带到了一个有长生不老药/凤凰的新地方。我的新问题是:我需要在一天的x时间自动运行这个函数
问题:
在Elixir/Phoenix中实现后台任务最惯用的方式是什么?我对Genserver或Supervisors知之甚少,但我想我已经准备好开始学习这些
我正在学习Elixir中的doctest,我正在尝试编写Elixir doctest来验证一个结构是否包含两个空映射集
defstruct [:coordinates, :hit_coordinates]
@doc """
Creates a new Island structure
## Examples
iex> IslandsEngine.Island.new()
%IslandsEngine.Island { coordinates: #MapSet&
当用户试图点击不存在的API路由时,Phoenix遇到问题。Phoenix似乎希望在默认情况下呈现“404.html”,这会导致调用一个catch-all呈现函数(返回一个映射),这会导致一个错误,因为Phoenix试图将JSON呈现为html
** (UndefinedFunctionError) function Phoenix.HTML.Safe.to_iodata/1 is undefined (module Phoenix.HTML.Safe is not available)
我试图以这种方式在where=1=1之后创建一个查询的where子句
Enum.reduce(params, "WHERE 1=1 ", fn param, condition = _acc ->
{name, value} = param
cond do
name == "camera_name" && value != "" -> condition <> "AND
问题:是否有可能创建一个Elixir流,它在内部保持某种状态,并随着每次调用而改变?代码看起来会是什么样子呢
我很高兴看到Elixir0.10.2除了正常的Enum模块外,还有Streams。虽然有关于如何使用Streams的文档,但几乎没有描述如何创建它们的文档或可全局搜索的文档。阅读流模块的源代码不是很有启发性。我也研究了它的答案,虽然很有趣,但它也没有涉及到状态的变化
考虑生成需要记住前两个值的斐波那契数。或者想想
首先,我在理解这是否可能时遇到的问题是:
记录的可枚举元素仅通过一些示例设
我试图理解Elixir中列表和元组之间的区别。从《长生不老药指南》一节中,我了解到:
列表存储为链接项
更新列表很快(仅在预结束时)
获取列表项的速度很慢
获取列表信息(大小/长度)速度较慢
元组元素存储在一起
获取元组信息很快
获取元组元素很快
修改元组是昂贵的
好的,那很好,但是我仍然不确定当时使用什么。我看到大多数方法都返回元组,但其他地方都使用列表,许多方法接受列表作为输入,而不是元组。如上所述,元组不应该用于传递数据,因为从用户给定值的元组读取数据会很快吗
我还注意到元组不是可枚
我正在使用Phoenix框架运行以下连接。它在过去起过作用,但不确定是什么导致了这起案件的发生。停止并重新启动iex似乎无法修复它。长生不老药1.0.5,凤凰城0.14.0,二郎OTP 18
iex(2)> "https://api.twitch.tv/kraken/videos/top" |>
...(2)> HTTPoison.get!()
** (exit) exited in: :gen_server.call(:hackney_manager, {:new_requ
Ecto可以验证格式、包含性、唯一性等,但我看不出如何验证存在性?如果字段为空,是否有向字段添加错误的方法?如验证RoR中是否存在?我可以手动创建,这不是问题,但我想知道是否已经存在类似于validate\u presence\3之类的方法?只需在模型中使用必填字段注释器即可
@required_fields ~w(name email)
对于总共有4个字段和2个必填字段的客户模型,如下所示:
defmodule HelloPhoenix.Customer do
use HelloPhoe
我现在正在用长生不老药写一个小测试。我想使用模式匹配来评估文件是否为spec格式(以“\u spec.exs”结尾)。关于如何在字符串开头进行模式匹配,有很多教程,但不知何故,这些教程对字符串结尾不起作用:
defp filter_spec(file <> "_spec.exs") do
run_spec(file)
end
defp run_spec(file) do
...
end
有什么解决办法吗?看看《长生不老药入门指南》中的这一点,这似乎是不可能的。有关章节指出
关于理解elixir中的以下语法,我需要帮助,?,和。
这些语法在长生不老药的功能中扮演什么角色?例如Repo.get
我不确定它们是函数名还是角色。虽然我知道是用来调用匿名函数的。和\uu用于任何或可变的?-故障时引发异常的函数的约定
?-返回布尔值的函数的约定
。-用于忽略参数或模式匹配表达式的一部分
-如您所述,它用于调用匿名函数,但也用于访问模块函数,例如Mod.a(arg)首先和?
它们是命名约定,通常应用于函数名的末尾,不是任何特殊语法
-如果函数遇到错误,将引发异常
一个很好的例子
我需要在Phoenix中设置一个后台工作程序,并通过Elixir发送/接收从一个通道与它通信
在Phoenix dir结构中工作的模块应该放在哪里(libmaybe?)
如何从通道加载/引用模块
我认为这取决于这些模块的数量。如果只有一个,可以直接将其放入lib。如果有许多workers模块,我更愿意将它们放在lib/workers甚至workers中。在后一种情况下,您应该在elixirc_路径函数中列出workers文件夹mix.exs
没什么特别的。放置在elixirc_路径中提到的文件夹
任务是通过服务对服务认证机制查询一个Google服务,该机制假设每60分钟获得一个新的访问令牌。因此,它需要主动刷新或在请求失败时刷新
最新的似乎是一种防御技术,不符合长生不老药的哲学。此外,无法确定请求是否因访问令牌过期或提供的凭据(电子邮件和密钥)通常无效而失败-它将是相同的文本和相同的401代码
也许有人可以就实施策略提供建议?这将是主机应用程序要使用的库,假设在令牌刷新期间(可能是90毫秒?)将创建新请求,通常情况下,最好等待新令牌,而不是使用即将过时的令牌。一般来说,在Elixir/E
我正在看Sasa Juric的《长生不老药》,我发现了一些我觉得有点困惑的东西。我正在浏览他在140页左右给出的例子,我看到了:
iex(2)> send(self, {:message, 1}) # Line 1
{:message, 1}
iex(3)> receive_result = receive do
...(3)> {:message, x} -> x + 2
...(3)> end
3
iex(4)> IO.inspect recei
我有一个很大的种子文件,我正试图在我的廉价服务器上运行。这是hs关税代码的完整列表,4000多个项目,带有大文本字段。种子文件为1.1mb
我将关税映射保存到关税变量,然后执行以下操作:
tariffs
|> Enum.each(fn(tariff)->
hs_tariff = struct(Myapp.Tariff, tariff)
Myapp.Repo.insert!(hs_tariff)
end)
在我的8gb ram dev计算机上插入所有行可以很好
标签: Elixir
phoenix-frameworkecto
我有一个地址的EXTO模型(简化)模式:
我想将zip标记为所需,而不是可选,但前提是国家/地区在白名单中,但我无法找到一种干净的方法来编写验证。如何添加该约束?没有明确的函数要求在cast之外添加字段。您可以使用该函数并覆盖“:message”选项
validate_length(changeset, :zip, min: 1, message: "is required when country is US")
您也可以简单地定义多个强制转换:
def changeset(model, p
我不熟悉长生不老药。在本地文件夹中,我试图运行mix local.hex,但它抛出以下错误:
** (ArgumentError) incorrect padding
(elixir) lib/base.ex:676: Base.do_decode64/2
(mix) lib/mix/local.ex:91: Mix.Local.find_matching_versions_from_signed_csv!/2
(mix) lib/mix/tasks/local.hex.
标签: Elixir
phoenix-frameworkecto
我正在使用编程Phoenix,在我的应用程序中添加一个新的用户功能:
我得到以下错误:
deps/ecto/lib/ecto/repo/queryable.ex:188: value `"new"` in `where` cannot be cast to type :id in query:
from u in Microflow.User,
where: u.id == ^"new"
Error when casting value to `Microflow.User.id`
dep
如何在EXTO中的两列上创建一个唯一的索引,这将与以下内容相对应:
CREATE TABLE someTable (
col1 int NOT NULL,
col2 int NOT NULL,
primary key (col1, col2)
)
?您可以使用
create unique_index(:some_table, [:col1, :col2])
我想如果您想拥有复合键,您需要使用手动运行SQL。不过,我不确定复合键与EXTO的配合效果如何,我通常只使用每个
标签: Elixir
phoenix-frameworkecto
我有一个phoenix应用程序,其中帖子属于用户
当我试图删除一个有帖子的用户时,会出现以下错误:
Ecto.ConstraintError at DELETE /users/2
constraint error when attempting to delete model:
* foreign_key: posts_user_id_fkey
我假设这个错误意味着它不会删除该用户,因为存在属于该用户的现有帖子
如果/当用户被删除时,如何删除用户帖子?我已经做了更多的搜索,我想我找到
我在我的项目中使用Timex.DateTime处理datetimes&到目前为止,它完成了这项工作
但是,我尝试为Phoenix.HTML.Form创建一个自定义生成器,用于编辑datetimepublish\u date以下内容:
%>
时间:::
日期://
我从输出中了解到,我使用不同的类型,但我不知道如何转换它们,我仍在学习Phoenix,因此,如果您有更好的方法解决此问题,也会很有用
堆栈跟踪:
Request: HEAD /news/12/edit
** (
我正在查看文档,以下是我的代码:
defmodule Math do
def reverse(list), do: Enum.reverse(list)
end
我运行它:
IO.write(数学反转([1,2,3,4,5,6,7,8]))
但是,一些奇怪的事情正在发生。我收到一声“嘟嘟”的声音,还有
我对Elixir相当陌生,但我不确定从哪里开始调试过程。我哪里出错了?谢谢 此问题与Enum.reverse/1功能没有直接关系。只需将一个整数列表传递给IO.write/1,就可以复制完
标签: Elixir
otperlang-supervisorgen-server
在GenServer.start\u link/3中,我可以使用atom在本地注册一个名称,用于如下过程:
defmodule Worker do
use GenServer
def start_link do
GenServer.start_link(__MODULE__, nil, name: :worker)
end
end
defmodule Worker do
use GenServer
def start_link(id) do
GenSer
我有一个上游的phoenix应用程序,如下所示:
upstream my_app {
server localhost:3001;
}
server {
root /var/www/my_app/priv/static;
listen 80;
location / {
proxy_pass http://my_app;
}
}
我想跟踪真实的IP地址,但我不知道如何通过标准的phoenixconn.remote\u IP实现,因为它总
似乎test.secret.exs不会在test环境中自动加载
Application.get_env(:my_app,:my_settings)返回nil,即使mytest.secret.exs包含以下内容:
use Mix.Config
config :my_app, :my_settings,
setting1: "blah",
setting2: "bleh"
我正在运行Elixir 1.4.0。prod.secret.exs由prod.exs显式加载,在
标签: Elixir
phoenix-frameworkecto
我正在开发一个Phoenix应用程序,它是Evernote的个人版本。我有一本书模型,有很多笔记记录
这是我的图书模型:
defmodule Notebook.Book do
use Notebook.Web, :model
schema "books" do
field :name, :string, default: ""
has_many :notes, Notebook.Note
belongs_to :user, Notebook.User
t
我有一个项目a,它也依赖于我创建的依赖项B
当我想用一个简单的混合测试在A上启动测试时,它将获取依赖项B,编译它并在:prod环境中启动它
这意味着A在:test环境中,B在:prod环境中
我想让测试在:dev环境(或除:prod以外的任何其他环境)中启动依赖项,有没有办法做到这一点?也许您的混合环境是产品,而混合测试不会将其更改为测试。
请明确尝试:
MIX_ENV=test mix test
and for dev
MIX_ENV=dev mix test
实际上,问题不在这里,我没
我想将Timex DateTime字段的格式更改为单个文本输入。当我让Phoenix负责格式化时,它看起来是这样的:
<%= form_for @changeset, @action, fn f -> %>
<%= if @changeset.action do %>
<div class="alert alert-danger">
<p>Oops, something went wrong! Please check
我知道在Elixir中,您可以通过进入mix.exs并手动键入来添加十六进制软件包。我想知道是否有一个类似于Node js的npm install name of package-s命令的命令。换句话说,是否有一种只使用命令行添加单个包的方法。否,没有从命令行添加包的功能。然而,你不是第一个有这个想法的人。请参见《灵丹妙药》一书。为什么会被否决?请说明原因或提出改进建议,而不仅仅是否决问题。
各国:
除了上面定义的元组,还有五个Elixir文本,
引用时,返回它们自己(而不是元组)。它们是:
:sum #=> Atoms
1.0 #=> Numbers
[1, 2] #=> Lists
"strings" #=> Strings
{key, value} #=> Tuples with two elements
使用iex证实了这一点:
iex(1)> quote do: {}
{:{}, []
试着用很少的测试来申请,但不起作用
以下是我的实现:
defmodule MySupervisor do
use Supervisor
def start_link do
Supervisor.start_link(__MODULE__, [])
end
def init([]) do
children= [
worker(Basic, [])
]
supervise(c
标签: Elixir
phoenix-frameworkecto
我在同一个表中的字段上创建了两个唯一的索引,并希望使用unique_constraint/3对它们进行验证,但是,前端上的错误消息仅显示其中一个字段,如果它们不唯一,则不会同时显示这两个字段。如果两个字段都不唯一,如何显示这两个错误?您可以使用查找所有唯一的验证错误并向用户报告唯一_约束还必须用于在插入新记录之前处理数据更改的潜在竞争条件
changeset
|> unsafe_validate_unique([:email], MyApp.Repo, message: "email is
在@spec中,有时我会看到这样的定义
@spec a_函数(整数、映射、列表):{:好的,映射}
有时@spec a_函数(整数、映射、列表):{:好的,映射}
哪一个是正确的方法?
我找不到任何具体的答案
谢谢即使你把垃圾放在那里,一切都会被编译好的@spec仅由透析器使用,编译器在定义术语(例如原子)时安全地忽略它们,并且@spec的算术符合定义的函数之一。这将起作用:
@spec call(Foo, Bar, Baz, Boo) :: BLAH
def call(p1, p2, p3,
我的代码在elixir1.5.2上运行良好,然后我升级到elixir1.6.1。它给了我Mix.Shell.cmd/2未定义或私有错误。这是密码
def run(args) do
file = List.first(args) || "priv/static/apiv1docs.json"
Mix.Shell.cmd("rm -rf " <> file, &IO.puts(&1))
IO.puts("Removed " <&g
标签: Elixir
phoenix-frameworkecto
有这个模式
many_to_many :customers, User,
join_through: Customer, on_replace: :delete
我想添加一个on_delete子句:
on_delete: :delete_all
所以我用
many_to_many :customers, User,
join_through: Customer, on_replace: :delete,
on_delete: :delete_all
创建了一个迁移,但由于它是多
在Elixir中,我想创建一个数量可变的列表,这些列表的开头相同。我想以编程的方式命名,例如
列表1=1,2,3
列表2=1,2,3等
我正在尝试的编码方法如下。这可以用长生不老药来做,还是用verboten来做
n = IO.gets("Enter number of lists: ") |> String.trim_trailing
n = String.to_integer(n)
generatelistnames(n,1)
def generatelistnames(0,0),
我有一张这样的地图:
%{
"conferences" => [
%{
"alias" => "EASTERN",
"divisions" => [
%{
"alias" => "SOUTHEAST",
"id" => "54dc7348-c1d2-40d8-88b3-c4c0138e085d",
"name" => "Southeast",
我创建了一个混合任务,它生成了一个进程。
它使用流,从流中读取数据并写入使用者中定义的文件
在一天结束时,它只会产生一些进程
如果我通过iex运行它
但是如果我以混合任务的形式从命令行启动它,那么什么也不会发生,您如何让流程保持打开状态
use Flow
def run([stream]) do
specs = [{{ProdCon,[]},[]}]
consumer = [{{Consumer,[]},[]}]
stream
|> Flow.f
标签: Elixir
phoenix-frameworkdistillery
我正在构建一个生产docker映像,但当我运行它时,我得到:
2018-10-06 14:14:20.950098 Error in process ~p with exit value:~n~p~n
<0.670.0>
{function_clause,[{filename,join,[[]],[{file,"filename.erl"},{line,432}]},{code_server,insert_dir,2,[{file,"code_server.erl"}
我正在尝试从我的router.ex重定向
我有点像:
import Phoenix.Controller, only: [redirect: 2]
scope("/", MyApp) do
forward "/test", :redirect, to: "/new-url"
end
我当前遇到的错误是:
== Compilation error in file lib/myapp_web/router.ex ==
** (ArgumentError) expected an Elixir
这段代码对我很有用:
GCloudex.CloudStorage.Client.put_object_content("my-bucket", "my_file_name", "heloo")
我现在尝试使用swagger库,这也是我尝试的:
@spec upload_file(bucket_id, file_path, name) :: {:ok, media_link} | {:error, error_message}
def upload_file(bucket_id, fil
假设我有一张这样的地图
组织有一个属性数组,属性有一个“访问令牌”数组
现在我有了这个映射,对于一个特定的访问令牌,这个的id与第二个属性的一个访问令牌匹配:
access_token = %{id: "at-3", name: "new name"}
迭代以使用新的访问令牌更新organization%{}map的最佳方式是什么?我要做的是找到基于id匹配的访问令牌,并将其替换为具有新名称的新令牌
我有一些大概的方法可以做到这一点,但在Elixir中,什么是干净的方法呢。您不需要迭代,只需使
标签: Elixir
phoenix-frameworktimex
我使用Timex库获取当前时间。例如:
iex(9)> time = Timex.now
~U[2019-11-29 14:05:39.759000Z]
当我记录下这一分钟时,我得到了以下信息
iex(10)> time.minute
5
如果当前分钟数达到10,那么我得到一个没有前导零的值,与小时和秒的值相同。
我可以得到结果值的长度,如果它小于2,则在开始处添加一个零,但我认为这不是最佳解决方案
time.minute |>Integer.to_string |>string
我有两张由地图组成的列表
products =
[
%{id: 7, name: "A", count: 1},
%{id: 8, name: "B", count: 1},
%{id: 9, name: "C", count: 0}
]
price=
[
%{price: "$14.95", p_id: 8},
%{price: "$10.00", p_id: 7},
%{price: "$29.95", p_id: 10},
%{price: "$1.00",
标签: Elixir
brunchphoenix-framework
当Phoenix web服务器不在伞形应用程序中时,Brunch会在“deps/Phoenix/web/static/js/socket”和“deps/Phoenix\u html/web/static/js/Phoenix\u html”中找到模块,因为Phoenix依赖项会安装到相对于Brunch配置文件的位置
在伞式应用程序中,依赖项将安装在伞式应用程序本身中,而不是web服务器应用程序中。因此,它们位于“../../deps/phoenix/web/static/js/”
我尝试将“./
我试图在流动管道中加入一个GenStage。但是,这会导致引发异常。如果我理解正确,Flow.through_specs/3将产生许多阶段,并相应地对传入项目进行分区。我错过什么了吗?我使用流量v0.14.2
例外情况:
{:down, {%ArgumentError{message: "the :partition option is required when subscribing to a producer with partition dispatcher"}, [{GenStage.
上一页 1 2 ...
60 61 62 63 64 65 66 ...
下一页 最后一页 共 125 页