我想创建一个日期列表,其值从startdate到enddate
这与长生不老药相似
由于列表可能是巨大的,也可能是无限的(例如,没有结束日期),我还想知道如何创建一个日期流
start_date = Calendar.Date.from_erl!({2014,12,27})
date_stream = Stream.iterate(start_date, &(Calendar.Date.next_day!(&1)))
Enum.take(date_stream, 10)
我尝试学习宏,并有以下代码片段:
defmodule ControlFlow do
defmacro unless(expression, do: block) do
quote do
if !unquote(expression), do: unquote(block)
end
end
end
它的工作原理与预期一致:
iex(16)> ControlFlow.unless 2 == 5, do: "block entered"
"block e
我研究菲尼克斯的框架。
是将存储在云存储中的图像的模型。创建图像时,我计算文件的哈希值,并将其作为:name。我制作了一个模型、控制器和视图。但我不明白为什么我会收到一个错误:
== Compilation error on file web/models/image.ex ==
** (CompileError) web/models/image.ex:26: undefined function changeset/3
(stdlib) lists.erl:1338: :lists.
我有一张表格
如果我只使用英语,它会非常好用。但中文,或任何其他返回错误
** (ArgumentError) argument error
:erlang.binary_to_atom("刺繡等等我", :utf8)
(elixir) src/elixir_parser.yrl:512: :elixir_parser.yeccpars2_93/7
我相信这与编码有关。如何将字符串转换为可接受的格式
提前谢谢 自当前版本的Erlang(19)起,Atoms不能包含255以上的代码点
二元到二
保持不同elixir应用程序之间可以共享的常量的最佳方法是什么
就我而言,我有系统中不同类型付款的速记。
e、 g
等等。我想让这些值在应用程序之间共享。Erlang提供了两个神奇的功能,和
构建您自己的映射(不要对键使用大写符号,虽然它们确实是原子,但它们是为模块名称保留的。它们无论如何都不是常量。)
并将其存储到顶级目录中的某个文件中:
File.write!("path/to/file", :erlang.term_to_binary(shared_constants))
~/elixi
长生不老药新手。这个问题将简短而甜蜜
我正在通过在线编程练习学习长生不老药,并就最近提交的内容获得以下建议:
通常,如果需要,最好使用Dict.foo而不是HashDict.foo
可能的Dict函数适用于所有类型的词典,因此
您的代码发生了更改,您需要更新的位置将减少
这让我意识到我不知道什么时候应该使用HashDict而不是Dict。一个人有什么特别的优点?我能想到的唯一用例是性能优化。Dict函数需要在运行时解析目标模块,然后将调用转发给该模块。直接调用HashDict可以克服这一步
我确
我正在SnapCI上运行Elixir项目的CI,并缓存我的deps文件夹,这样它就不必在每次尝试运行我的测试时都安装我的deps。我该怎么做
我注意到,DEPS_DIR有一个env设置,但这似乎是一个钢筋问题,或者是相同的?无论如何,我在一个简单的项目上尝试过,但它似乎不起作用,mix仍然在我当前的文件夹中安装我的DEP
2015年3月4日更新
以下是我的snap ci完整脚本:
curl -O https://raw.githubusercontent.com/spawngrid/kerl/m
标签: Elixir
phoenix-frameworkecto
我照着做了,我的简单测试总是因为这个错误而失败
1) test /index returns a list of contacts (WorldNote.ChatsControllerTest)
test/controllers/chats_controller_test.exs:16
刚从戴夫·托马斯的长生不老药书开始
它涉及两个概念:
关键字列表
[ name: "Dave", city: "Dallas", likes: "Programming" ]
states = %{ "AL" => "Alabama", "WI" => "Wisconsin" }
地图
[ name: "Dave", city: "Dallas", likes: "Programming" ]
states = %{ "AL" => "Alabama", "WI" =&g
我目前对学习长生不老药非常感兴趣,我学习一门新语言的典型方法是用它来构建简单的程序
因此,我决定编写一个(非常简单的)类似grep的程序(或模块),如下所示:
defmodule LineMatch do
def file(s, path) do
case File.open(path, [:read]) do
{:ok, fd} -> match s, fd
{_, error} -> IO.puts "#{:file.format_error
在Python中:
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
它基本上接受一个iterable,并将每个项的索引添加到项本身
《长生不老药》有没有类似的版本?因此,长生不老药IRC频道的一位热心人士(OliverMT)为我
标签: Elixir
phoenix-frameworkecto
我想从现有的Ecto模型中删除一个字段:
field :age, :integer
阅读文档后,我不确定什么是最好的/简单的方法(删除(列))?…你能举例说明吗?
我试过:
def change do
create table(:users) do
remove :age
end
end
而且它不工作。您想使用table而不是create table
def change do
alter table(:users) do
remove :age
如何转换Geo.Point坐标属性包含%Geo.Point{coordinates:{49.44,17.87},srid:nil}后Geo.JSON.encode:%{“coordinates”=>[49.44,17.87],“type”=>“Point”
根据以下公式:
%{latitude: latitude, longitude: longitude}
这是我目前的方法,如何一步到位
%{"coordinates" => [latitude,longitude] } = Geo.J
在我的控制器的update(conn,params)操作中,如何获取PUT请求传入的JSON主体
我将这些值视为params中的映射,但其中插入了一个“id”。如果我传递一个“id”,它就会被覆盖。原始主体可能在康涅狄格州的某个地方,但我不知道如何找到它。您可以在结构上使用body\u参数
e、 g
参数[“id”]将为“1”
body_参数[“id”]将为7
希望这对你有用
因为您只能访问一次,所以访问请求主体要复杂一些。您需要绕过端点中的Plug.parser,手动读取正文
从插件文档:
我想做的是根据数据库中特定模型可用的段塞动态路由顶级路径,就像GitHub对用户/组织名称(如https://github.com/elixir-lang和https://github.com/phoenixframework,但在Phoenix的框架中我似乎无法理解它
到目前为止,在我的路线中,我尝试的是:
Enum.each(MyApp.Repo.all(MyApp.User), fn section ->
get "/#{user.username}", UserControll
我有一个带有textarea的简单表单,用户将在其中键入(或复制粘贴)json字符串。表单将被发送到我的控制器操作,我将验证json字符串,如果可以,我将创建一些记录,一切正常
为了将表单发送到我的控制器操作,我目前使用“带连接数据”,因此我没有模型/变更集
<%= form_for @conn, @action, [as: :match], fn f -> %>
<%= textarea f, :json, rows: 20 %>
<%#= erro
使用有很多问题,而且属于,我有以下两种模式:
@primary_key {:guid, :integer, []}
schema "characters" do
field :name, :string
field :race, :integer
field :class, :integer
field :gender, :integer
field :level, :integer
field :xp, :integer
fiel
我有一个使用mix的长生不老药项目。我已经使用了一些内置的erlang模块,但现在我需要使用在Github上找到的第三方模块
如何从Elixir导入、构建和调用第三方Erlang模块
编辑:我现在感兴趣的模块位于,edmonds_karp模块。添加第三方erlang包在elixir中非常容易。如果包不在Hex.pm上,那么您可以使用github url。例如,在mix.exs中:
defp deps do
[
{:erlang_algorithms, github: 'aggelgi
我是Elixir的新手,在阅读了下划线变量/函数之后,我对它们的实际用例有点困惑。为什么要费心定义一个永远不会使用的变量或函数
我很熟悉在模式匹配中使用uu,当您想忽略匹配的某些部分时,它们可能是密切相关的,但我正在努力解决这个问题。以这种方式声明的函数将被排除在导入之外,但可以在内部使用
函数参数(也是变量)必须设置,因为arity是固定的,下划线使它们的使用更加透明:我知道我的回调得到3个参数,但我只需要第二个
我不知道是否有以这种方式声明的正常变量。以这种方式声明的函数将从导入中排除,但可
对于Elixir来说,我刚刚开始编写一个简单的游戏,它将有一个readFrom/1函数来读取输入并相应地玩游戏,然后是一个print/1函数来打印该游戏
由于它们将通过iex一个接一个地调用,如何使print/1函数打印readFrom/1的结果?在任何其他语言中,我只需将需要的值保存在变量中,然后使用print/1函数获取它们
由于需求,我不得不这样做,但我找不到任何能帮助我解决这个问题的方法
谢谢 您可以使用管道:
iex> args |> readFrom() |> pr
我正在尝试用Elixir建立一个非常简单、基本的HTTP API。我认为使用Phoenix做这样的事情完全是过火了,所以我想简单地使用Plug。我可以这样设置一个基本路由器:
defmodule Example.Router do
use Plug.Router
plug Plug.Logger
plug :match
plug :dispatch
get "/" do
data = do_something_with_conn(conn)
se
我有两张地图。找出一个映射中存在哪些键,而另一个映射中不存在哪些键的方法是什么?使用with是最简单的方法:
#假设您的两个地图是:
map_a=%{a:1,b:2,c:3,d:4}
map_b=%{c:3,d:4,e:5,f:6}
#获取map_a中存在但map_b中不存在的密钥
a_b_diff=Map.keys(Map_a)--Map.keys(Map#b)#=>[:a,:b]
#获取map_b中存在但map_a中不存在的密钥
b_a_diff=Map.keys(Map_b)——Map.k
有时,在我的模板中,我想为一些CSS属性定义默认值,但这些值在渲染函数中没有作为参数传递,如下所示:
height: <%= if @height do %><%=@height%><% else %>"50px";<%end%>
高度:“50px”;
我想知道是否有更好(不太冗长)的方法来做这件事。你可以利用以下事实
@变量也可以通过名为赋值的映射访问
使用括号语法访问映射中不存在的键将返回nil,而不是引发异常
|如果左侧值为nil,则返回
除了退出(如按CTRL+c两次或中止等)并再次启动之外,还有什么方法可以重新启动mix phoenix.server
这样做的背景是:我使用foreman启动phoenix服务器加上test runner等。如果我必须退出服务器,一切都会被终止,我必须完全重新启动foreman。如果我可以触发phoenix.server作业的重新启动,其他所有操作都可以保持运行
由于我使用tmux并在不同的窗格中运行foreman命令,这将非常有帮助。通过命令行触发的命令也可以。您可以在iex的会话中启动服务器
我一直在使用Enum.reduce
Enum.reduce(email_array, {[], [], []}, fn email, {shares, share_requests, changes} = _acc ->
end)
我将在每个减速器上传递一个方法,如下所示
CameraActivity.log_activity(caller, camera, "shared", %{with: email, ip: requester_ip}, done_at)
在done_at中,
标签: Elixir
phoenix-frameworkecto
我必须根据模型中的时间戳查询日期范围。
到目前为止,我所尝试的是
str="2017-12-18"
{:ok, ed}=Ecto.Date.cast(str)
ed= ed |> Ecto.Date.from_erl |> NaiveDate.from_erl!
Repo.all(from l in Log, where: l.inserted_at == ^ed)
然而,postgres中的日期以日期时间的形式出现,例如2017-12-18 19:58:01.414
但我只想查
标签: Elixir
phoenix-frameworkectorepo
返回{:ok,struct},但struct没有预加载的关联。
我是否被迫选择查询以预加载其关联?或者我可以避免一个无用的查询吗?你必须自己调用Repo.preload/3Repo.insert |>Repo.preload(:posts)像这样?是的,像那样。但是,您刚刚插入录制的,很可能没有要预加载的内容。:)因此,如果您愿意,也可以显式地将字段设置为空列表。如果您使用Repo.insert,是的。如果只使用Repo.insert,则必须首先打开元组@JoséValim,它可能属于另一条记录
在每个测试之前调用setup回调,在任何测试运行之前,每个模块只调用一次setup\u all回调
在这种情况下,我需要在整个测试套件运行之前准备一些东西。只有一次。我使用的是一个非标准的数据库,设置包含所有索引的模式需要一点时间。因此,我希望通过不经常这样做来加速测试
有办法处理这个问题吗?您可以将初始化代码放入test/test\u helper.exs中。该文件中的任何代码都将在测试运行之前执行,并且只执行一次。正如@mudasobwa指出的,不管代码是在ExUnit.start()之前还
标签: Elixir
phoenix-frameworkecto
所以我有我的\u perfect\u random函数,它返回字符串的值
schema "something_greate" do
field :my_amazing_field, :string, default: my_perfect_random
timestamps()
end
错误是
undefined my_perfect_random/0
该函数写在同一个模块中。我尝试使用MyModule.my_perfect_random,但得到了相同的错误
请帮助我修复它您不能将函
我有一套机场机票的数据:
%{
class: "economy",
legs: [
%{date: "2018-08-01", from: ["FRA"], to: ["LON"]},
%{date: "2018-08-10", from: ["LON"], to: ["FRA"]}
],
passengers: %{adults: 1, children: 0, infants: 0}
}
我正在使用cast\u assoc进行腿部训练:
...
|>
的文档中说,:async选项默认为false,并且“仅当测试未更改任何全局状态时才应启用”。在我正在进行的一个项目中,可以从源代码中看到,async属性会消失
可能pull请求的执行方式类似于:
- async = !!unquote(opts)[:async]
+ async = Keyword.get(
+ unquote(opts),
+ :async,
+ Application.get_env(:ex_unit, :async_all, false)
+ )
谢谢我通常会
以下是型号规格:
iex(1)> h Ecto.Repo.delete
No documentation for function Ecto.Repo.delete was found, but there is a callback with the same name.
You can view callback documentations with the b/1 helper.
iex(2)> b Ecto.Repo.delete
@callback delete(
标签: Elixir
phoenix-frameworkuuidhas-manybelongs-to
我试图将两个模型(用户和国家)关联起来,其中:
·一个国家有很多用户
·用户属于一个国家/地区
另外,我使用UUID作为这两个模型的主键,因此我没有:id类型来关联它们,只有字符串来关联它们。
国家是静态的,但我会创建很多用户
我应该如何将这两个模型联系起来,以及我应该在模式中的两个函数中写入哪些参数(has_many&归属)?我应该调用哪个函数来关联它们:cast\u assoc、build\u assoc或put\u assoc
谢谢
@primary_key {:uuid, :stri
标签: Elixir
tokenphoenix-frameworkguardian
我正在使用{:guardian,“~>1.0”}为我的项目生成一个令牌,但它给了我一个错误
这是我的监护人档案的密码
defmodule Dailyploy.Guardian do
use Guardian, otp_app: :dailyploy
def subject_for_token(user, _claims) do
sub = to_string(user.id)
{:ok, sub}
end
def subject_for_token(_, _)
我想验证一个给定的资源在另一个表中是否有相应的资源
有了归属关系,我可以使用exto.Changeset.assoc\u constraint/3函数来实现这个目标
当我尝试将它与many\u-to\u-many关系一起使用时,会出现以下错误:
** (ArgumentError) assoc_constraint can only be added to belongs to associations, got:
%Ecto.Association.ManyToMany{cardinalit
我通过mix Hex.docs offline PACKAGE\u NAME保存Hex包文档的脱机副本。这将在~/.hex/docs/hexpm/PACKAGE\u NAME/中创建一个HTML目录
我想做同样的事情,但是输出为EPUB而不是HTML,理想情况下,一步完成
如何下载离线EPUBs以获取Hex.pm上托管的包的文档?从2019年12月开始,是的,但似乎有。从2019年12月开始,是的,但似乎有
我正在读《小长生不老药和OTP指南》来学习长生不老药,书中有一章作者从头开始建立了一个导师。有一部分,作者实现了一个函数来终止主管进程,而主管进程又在终止自身之前终止所有链接到它的子进程
据我所知,如果您有链接到特定进程的进程,并且如果其中一个进程被终止,那么所有进程都将被终止,对吗?那么,为什么我们需要在杀死主管之前杀死所有的子进程,这只是一种最佳实践吗
顺便说一句,这本书是这么说的
在您终止
主管进程,您需要终止它链接到的所有子进程,这由terminate_children/1私有函数处理
标签: Elixir
phoenix-frameworkphoenixphoenix-live-view
因此,我正在尝试制作一个phoenix live view应用程序,当我试图将它实现到我已经存在的项目中时,遇到了一个问题。我使用phoenix.html提供的表单_制作了一个表单,它在我的live套接字上向服务器发出post请求。这不应该发生,我不认为,因为我成功地做了演示,它允许我张贴到现场查看。以下是错误:
[debug] ** (Phoenix.Router.NoRouteError) no route found for POST /test_live/1 (OkayfivePhxWe
标签: Elixir
phoenix-frameworkecto
我有以下两张桌子。一个是成员表。另一个是订单表。
订单表中有4个引用include由更新为MEMBER.id。所有id都与Member.id关联
------
MEMBER
------
id
name
------
ORDER
------
id
order_member_id
delivery_member_id
signed_member_id
update_by
我写了order.ex,就像下面这样。但是,它不起作用
defmodule Sample.Store.Ord
我正试图想出一种干净的方法来覆盖for二进制文件,这将允许我从二进制文件中提取uuid。以下是我在理论上想做的:
定义Jason.Encoder,用于:位字符串do
def encode(二进制,opts)何时为二进制(二进制)do
使用false而不是尝试全局覆盖位字符串的协议,您可以将UUID包装在自己的结构中,并为该结构实现Jason.Encoder协议:
defmodule jsonuid do
defstruct[:uuid]
定义Jason.do
def encode(%jsonui
使用下一个元素和累加器调用Enum.reduce中的函数。我想要这个,但不是下一个元素,reducer应该接受到目前为止迭代过的列表的子集。累加器可能是任意的,因此可以收集已经访问过的元素。有点像下面应该工作(未经测试)
[1,2,3]
|>Enum.reduce({[],0},fn e,{head,acc}->
head=head++[e]
acc=acc+枚举和(头)
{行政协调会主席}
(完)
|>要素(1)
#⇒ 10
结果应该是10,因为我们加起来1三次,2两次,3一次
起初,我选择使用put\u session来存储用户id,因为会话哈希不能被篡改。但是,会话cookie似乎只在浏览器会话期间存在。当用户重新打开浏览器时,浏览器将消失,用户必须再次登录
我了解到另一种选择可能是为每个用户生成一个安全的随机令牌,并将其存储在数据库中,然后将其放入具有高过期日期的常规cookie中。但是,如果这个cookie不具有篡改保护(但我可能是错误的),并且连接并不总是HTTPS,那么我猜想任何人在用户和服务器中间监听HTTP都能够劫持用户会话。
因此,问题是如何以安全的方
管道操作员是一件很好的事情。
例如,我希望在Enum.reduce中使用enumerable,或者其他什么:
foo |> bar(...) |> Enum.reduce([], fn x, acc -> acc ++ [Enum.at(<enumerable>, x)] end)
当在匿名函数中使用管道运算符以及&1时,第一个参数可能存在语法糖?最好只移动整个枚举。将减少到它自己的函数,该函数接受一个参数并命名,这样每个人都能理解它在做什么重新排列不是最具描述性
我在控制器中得到了一个列表:
data = ["one", "two"]
我希望在eex模板中呈现为:
<script>
var data = ["one", "two"]
</script>
风险值数据=[“一”、“二”]
我怎么能做到呢,我尝试了var data=,只得到了var data=[1,2]从中得到了答案
这是我在最后一次比赛中的表现:
<%= raw(Poison.encode!(@data)) %>
看看这个问答:@OnorioCa
我有credits列需要检查(如果值>0),同时减去1(多个进程/连接将同时轰炸db,因此需要以原子方式完成)
仅仅启动事务并从中获取+更新行就足够了吗?比如:
Repo.transaction(fn ->
user = Repo.get(User, user_id)
if user.credits >= 1 do
MyRepo.update!(%{user | credits: user.credits - 1})
# ... If above works,
在我的模板中,我尝试动态定义其中的路径帮助器:
<%= link "Edit", to: @options[:resource]_path(@options[:conn], :edit, @options[:resource]) %>
因此,我想使用@options[:resource]预先添加资源名称并创建正确的路径帮助器,如:post\u path(@conn,:edit,post)
因为这是一个函数名而不是字符串,所以我尝试过的所有方法({},++)都不起作用。因为您想动
假设我有一个字符串,代码如下:
"[1, 2, 3, 4, 5]"
考虑到我已经知道它是字符串中的一个列表,计算它并将其转换为实际的长生不老药列表的简单方法是什么
你在找什么
计算字符串给定的内容
示例:
{result, _} = Code.eval_string("[1, 2, 3, 4, 5]")
你比我快了27秒@是的,对不起:)你的答案更完整,但我已经用了第一个答案!这是eval_string/3,不是吗?它的eval_string/2技术上都是正确的。当使用默认参数时,将使用多
我正在用长生不老药写一个游戏引擎。(是的,我知道这不是一种天生适合这种情况的语言——重点是看看非典型语言的使用如何影响结果的结构。)
因此,我有几个主管在游戏开始时运行——但他们应该具体负责什么取决于游戏。我的想法是让用户在config.exs文件中列出必要的子元素,加上参数和选项,作为元组列表,然后主管自己只需从应用程序环境中提取这些元组,并将其内容用作worker\2(或worker\3,视情况而定)
但是,我找不到任何与Python的元组解包等效的长生不老药。我可以自己使用一个简单的函数来
标签: Elixir
phoenix-frameworkelixir-poison
我有一个凤凰应用程序,基本上是API。我有以下看法:
defmodule TattooBackend.Web.API.V1.AccountView do
use TattooBackend.Web, :view
alias TattooBackend.Repo
def render("my_account.json", %{account: account}) do
account = account |> Repo.preload(:studio)
stu
我有这个管道
events
|> Task.async_stream(&expensive_func/1)
|> Enum.to_list
将返回以下数据:
[ok: {item}, ok: {item} ... ]
因此,为了得到一个项目数组,[item,item]我对它进行了如下后处理:
events
|> Task.async_stream(&expensive_func/1)
|> Enum.to_list
|> Enum.
上一页 1 2 ...
77 78 79 80 81 82 83 ...
下一页 最后一页 共 125 页