在python中,您可以使用timeit模块为代码的小部分执行时间计时
Elixir中是否有等效工具?最简单的工具是使用Erlang的:timer模块,以及它的tc变体之一。它以微秒为单位返回执行时间,并以元组形式返回函数结果。要对匿名函数计时,可以执行以下操作
{time, res} = :timer.tc fn -> :timer.sleep(1000) end
# {1000575, :ok}
{time, res} = :timer.tc(fn(ms) -> :timer
我想做一些看起来应该很简单的事情,即制作一个脚本,输出问候语,而不是其他。此脚本非常简单,不需要多个文件。以下是我尝试过的:
[ ~/elixir ] cat hello.exs
#!/usr/bin/env iex
IO.puts "Hello world!"
:init.stop
[ ~/elixir ] ./hello.exs
Erlang/OTP 17 [erts-6.3] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [k
我是新长生不老药,真的很喜欢它。我在尝试使用同名函数时遇到了麻烦。这里有一个例子
defmodule ChangeName do
def convert(:captilize, name), do: String.capitalize(name)
def convert(:lower, name), do: String.downcase(name)
end
我正在使用iex和ChangeName.convert.captilize的基本调用,但如何运行这些函数
谢谢您给出的示例没有
假设我有一个像123456789这样的数字,我想把它转换成一个字符串,然后把它表示成123456789或123456789等等。什么是最好的方法呢?我认为没有内置的方法。对于常规格式,您可以使用以下一种方法:
123456789
|> Integer.to_char_list
|> Enum.reverse
|> Enum.chunk_every(3)
|> Enum.join(",")
|> String.reverse
# "12
标签: Elixir
phoenix-frameworkecto
我在施法时得到这个警告
警告:不推荐使用cast/4进行铸造嵌入,请使用
请改为使用/3
我有一个模范组织
defmodule Bonsai.Organization do
use Bonsai.Web, :model
alias Bonsai.OrganizationSettings
schema "organizations" do
field :name, :string
field :currency, :string
field :tenant,
使用Elixir 1.2.4并使用Timex 2.1.4作为依赖项,我运行以下代码:
Timex.compare(Timex.date({2015,12,1}),Timex.date({2016,1,1}))
会因错误而中断:
%ArgumentError{消息:“参数错误”}
然而,如果我跑步:
Timex.compare(Timex.Date.now,Timex.Date.now)
我收到一个期望值(0或“等于”)
当我IO.inspect我的Timex.date/1调用的结果时,我看到的是
假设制作人获得的事件如下所示:
%{somedata: [], analyze: true, test: true}
我有两种不同类型的消费者。如果analyze:true,第一个只关心事件,如果test:true
我可以从文档中找到如何将事件发送到1个分区(生产者),如果事件分析和测试都为真,我可以同时发送到这两个分区吗?或者,如果两者都是假的,则为“无”
其他选择是:向所有人广播,如果类型错误,则跳过消费者中的工作,这听起来不是个好主意——或者让不同的制作人负责不同类型的工作。我知道这已经
将下面这样的api响应解析为所需格式的最佳方法是什么?通常我会使用Enum.reduce,但由于映射中嵌套了列表,我不确定如何构建累加器
api_resonse =
[
%{"meta" => %{"labels" => %{"app" => "api-app"}},
"spec" => %{"container" => [%{"resources = %{}, image" => "gcr"}]},
"stat
我的博客应用程序有一个Post模型,其中有许多评论
schema "post" do
field :title, :string
field :content, :string
belongs_to :owner, MyApp.Accounts.User, foreign_key: :owner_id
has_many :comments, MyApp.Content.Comment, foreign_key: :post_id
timestamps()
end
我也
我声明了一个简单的变量
h = "a"
当我尝试时,我得到
> ** (ArgumentError) argument error
> (stdlib) eval_bits.erl:101: :eval_bits.eval_exp_field1/6
> (stdlib) eval_bits.erl:92: :eval_bits.eval_field/3
> (stdlib) eval_bits.erl:68: :eval_bits.expr_gr
当我需要使用(…)|>from(…)>lock(“for UPDATE”)测试一个方法并确保该行将被其他进程阻止时,我正在尝试为一个案例编写一个测试。我试着写这个测试:
defmodule Chain.BalanceTest do
use Chain.DataCase
describe "concurrent" do
setup do
{:ok, %Chain.Address{id: id}} = Chain.Address.create_address(%{use
我不熟悉长生不老药。我试图寻找一个使用elixir拦截HTTP请求的包,这样我就可以在后端处理它。我之所以需要elixir是为了实现速率限制错误,我发现hammer具有简洁的语法和重要的功能(docs at-)。实现如下-如果是速率限制错误,则会引发速率限制错误,如果不是,则会重定向到实际应用程序(这不是使用elixir完成的)。这里的问题是,check\u rate函数使用bucket ID作为参数,而不是URL。我有没有办法拦截请求并检查速率限制错误?如果您能用示例代码解释,我将不胜感激。如
假设我有一堆代码,如下所示:
def dirs(path, regex_dir \\ ".+") do
path
|> normalize_path
|> do_dirs([], regex_dir)
end
# list of bitstrings
defp normalize_path([path | rest]) when is_bitstring(path) do
[path | normalize_path(rest)]
end
# list of ch
我想写这样的东西:
defmodule JobHunt.Repo.Migrations.CompaniesHaveManyJobs do
use Ecto.Migration
def change do
alter table (:companies) do
add :jobs, :has_many, Job
end
end
end
使用此迁移运行mix-exto.migrate会出现错误,那么正确的方法是什么?您应该将所需的外键添加到作业表中:
de
我很好奇,在定义函数时,什么时候应该使用模式匹配vs-guard子句
例如,模式匹配:
defmodule Exponent do
def power(value, 0), do: 1
def power(value, n), do: value*power(value, n-1)
end
vs保护条款:
defmodule Exponent do
def power(value, n) when n==0, do: 1
def power(value, n), do: val
标签: Elixir
phoenix-frameworkexrm
我试图在elixir项目中使用exrm,但它显示出一种非常神秘的行为。这是我的mix.exs:
defmodule MyApp.Mixfile do
use Mix.Project
def project do
[app: :my_app,
version: "0.0.1",
elixir: ">= 1.0.5",
build_embedded: Mix.env == :prod,
start_permanent: Mix.env
我在Ruby中使用了以下表达式:
env=opts.env| |“staging”
如何用长生不老药书写
编辑:
“长生不老药”中的这个表达不起作用:
case Repo.insert(changeset) do
{:ok, opts} ->
env = opts.env || "staging"
错误:
** (KeyError) key :env not found in: %Myapp.App{__meta__: #Ecto.Schema.Metadata<:lo
根据,我在config/config.exs文件中有以下的EXTO配置:
config :my_app, MyApp.Repo,
adapter: Ecto.Adapters.Postgres,
url: "postgresql://postgres@localhost/myrepo",
size: 20
如果我的理解是正确的,config.exs将在编译时进行计算
有没有办法在运行时执行此配置步骤
这适用于将作为编译二进制文件分发的应用程序(通过exrm)。最终用户应该能够通过标
我一直在学习长生不老药,我有点好奇用不同的方法来做一行if/else
我从
if left_side_wins?(p, c) do
{"Humanity", p, c}
else
{"The Machine", c, p}
end
|> print_winner
。。。为两位获胜者正确地传输元组。但这不
if left_side_wins?(p, c), do: {"Humanity", p, c}, else: {"The Machine", c, p}
|> print
标签: Elixir
phoenix-frameworkecto
我正试图使用exto.migrate在mysql会话上安装表
但是,即使成功创建了exto.create,exto.migrate也会失败,并显示以下错误消息:
15:53:20.563 [error] GenServer #PID<0.319.0> terminating
** (stop) %Mariaex.Error{mariadb: %{code: 1049, message: "Unknown database 'msg_gtw_dev'"}, message: nil}
我应该为使用nginx代理的Elixir/Phoenix应用程序重置代理标头,还是该平台不受影响?Cowboy不使用cgi,因此这不适用
另外,如果您不使用http库来调用底层服务,那么这将不适用。如果您这样做了,并且那些http库没有使用http\u代理environment变量来设置代理,那么您就没事了。Hackney(这是HttPoison的基础)似乎没有做到这一点,您需要通过调用connect\u proxy/5函数来设置代理
医生说
Transport = hackney_tcp_tr
我正在学习长生不老药,并尝试使用宏系统。
我试图使一个变量对一个块可用,该块将由宏与其他代码包装,但我显然做错了什么
这是我的起点宏,它是有效的。我意识到有更多的惯用方法来迭代Elixir,我写它只是为了练习:
defmodule Loops do
defmacro times(n, [do: block]) do
quote do
Enum.each(1..unquote(n), fn(_) -> unquote(block) end)
end
end
标签: Elixir
phoenix-frameworkecto
我正在按照《凤凰城编程》(Programming Phoenix)一书构建给定的Rumbl应用程序。我的问题与我们使用生成器自动创建许多功能的章节有关。使用的命令是:
$ mix phoenix.gen.html Video videos user_id:references:users url:string title:string description:text
现在的问题是,在一些地方,书中给出的代码和我得到的代码之间存在差异。一个很好的例子是web/models/video.ex模块
我想得到一个表示当前时间的exto.DateTime值
我该怎么做呢?现在使用DateTime.utc和castit。
现在使用DateTime.utc_和castit。
虽然DateTime.utc|u now>exto.DateTime.cast有效,但使用exto.DateTime.utc
基本相同,但默认精度不同:
iex(30)> DateTime.utc_now |> Ecto.DateTime.cast
{:ok, #Ecto.DateTime<2016-09-2
try/rescue和try/catch都是Elixir中的错误处理技术。根据介绍指南中的说明
可以使用try/rescue构造来挽救错误
另一方面,
throw和catch保留用于无法检索值的情况,除非使用throw和catch
怀疑
我有一个简单的理解,rescue是针对错误的。而catch用于任何值
但是,
什么时候应该使用Elixir中的错误处理机制
它们在细节上有什么区别
我应该如何选择一个在特定用例中使用
“除非使用throw和catch,否则无法检索值的情况”到底是什么
这是一个
我有以下模式:
@primary_key false
schema "companies" do
field :number, :integer, primary_key: true
field :name, :string
field :street, :string
field :zipcode, :integer
field :location, :string
假设我有这样的结构:
results = %{page: page_numer, period: period, result: [%Entry{}, %Entry{}]}
我想给result.result中的每个%Entry{}添加一些数据,如下所示:
result.result
|> Enum.map(fn entry ->
entry.page = results[:page]
entry.period = results[:period]
end)
有可能
标签: Elixir
phoenix-frameworkecto
我有一个ParentModel,ChildModel1和ChildModel2。ParentModel有许多ChildModel1,ChildModel1有许多ChildModel2
现在,我想显示通过ChildModel1.parent\u model.id进行筛选的ChildModel2列表。下面是一个简化的代码:
def index(conn, %{"parent_model_id" => parent_model_id}) do
child_model2_items = whe
我是长生不老药的新手,现在跟随JoséValim的帖子
当我遇到以下错误时,我很难让主管启动一个孩子:
iex(1)>Portal.shot(:橙色)
{:错误,{:无效的子规范,[:orange]}
非常感谢您的帮助
这是门户模块
defmodule Portal do
use Application
def start(_type, _args) do
import Supervisor.Spec, warn: false
children = [
wor
标签: Elixir
phoenix-frameworkecto
我做了一个简单的前保存转换,并了解到phoenix使用EXTO changest执行此任务
我的阶段模型有一个位置属性,该属性默认为当前最大值+1,因此尝试如下实现:
舞台模型:
def changeset(struct, params \\ %{}) do
struct
|> cast(params, @required_fields, @optional_fields)
|> validate_required([:name])
|> s
如何使用HTTPoison发出HTTP/1.0请求?我不知道它使用的是哪个版本,但我假设默认情况下它不是1.0
我正在与一些名为MoneyWorks的会计软件集成,它们
我在HTTPoison文档中没有看到关于这个的任何内容,所以我去了Hackney文档,因为它是建立在这个基础上的。也没有看到任何内容。在本例中,我将使用它,正如Github文档所述,它支持HTTP 1.0。也许更好的主意是从ibrowse开始,这是建立在ibrowse基础上的
正如您所写的,没有关于支持Hackney这个版本的信
标签: Elixir
phoenix-frameworkecto
我试图在一个预加载的映射中添加一个变更集,以防没有找到预加载,但我不知道如何插入变更集;有什么想法吗
我的变更集已打印出来,但在IO.inspect(项目)中没有任何迹象
我的变更集已打印出来,但在IO.inspect(项目)中没有任何迹象
Map.put(项,:变更集,变更集)不会更改项,它将返回一个新的项
尝试:
def select(conn, %{"list_id" => list_id}) do
list = Repo.get!(List, list_id)
list_i
我想尝试在Supervisor中用一行代码启动代理,用于测试:
iex(1)> {:ok, pid} = Supervisor.start_link([{Agent, [fn -> 42 end, name: :test]}], strategy: :one_for_one)
** (EXIT from #PID<0.115.0>) evaluator process exited with reason: shutdown: failed to start child
在phoenix应用程序中,当用户提交特定表单时,lat和lng根据地址计算
lat和lng可以在未进行更改的情况下保存在changeset.data中,也可以在提交更改的情况下保存在changeset.changes中
我在变更集中对lat和lng执行其他操作,但我需要知道坐标在哪里。我想做的是:
cond do
# Always use new coordinates if possible
%{lat: lat, lng: lng} = changeset.changes -&g
我正在尝试创建一个包含阿根廷所有省份的atom列表。由于其中一些是由多个单词组成的,我需要避开空格
~w[
Buenos\sAires
Capital\sfederal Catamarca Chaco Chubut Corrientes Córdoba
Entre\sRíos Formosa Jujuy La\sPampa La\sRioja Mendoza Misiones Neuquén
Río\sNegro Salta San\sJuan San\ Luis Santa\s
标签: Elixir
phoenix-frameworkecto
Rails’是一种非常方便的获取数据库状态引用的方法。我可以直接访问pg或mysql客户端,描述表以获得相同的信息,但这样做不太方便
Elixir/Ecto是否有类似的功能或方法来生成模式表示?您可以使用:
mix-exto.dump您可以使用:
mix-exto.dump谢谢,如果你不仅仅是一条评论,很乐意将其标记为答案:-)谢谢,如果你不仅仅是一条评论,很乐意将其标记为答案:-)
标签: Elixir
phoenix-frameworkecto
因此,我正在创建一个用于向数据库中的模型添加一个新列的EXTO迁移,我想更改列的顺序,因为这个新列被放在列的末尾,所以我尝试这样做:
def change do
alter table(:users) do
add :password_hash, :string, after: :email
end
end
但它似乎没有效果,也没有抛出错误
PD:我使用的是mariadb。由于您没有编写要使用的数据库,我假设PostgreSQL不支持列重新排序。有一些黑客的解决方法,当然不是在
我试图理解凤凰城1.3的背景
我理解上下文的可分性(在我看来,这是微型应用程序,具有明确定义的API边界),但当我试图弄清楚如何在它们之间建立多对多关系时,我很挣扎
在构建slack克隆的情况下,一个用户可以有多个聊天室,而一个聊天室可以有多个用户
在基于“模型”的方法中,您可以创建一个中间表user\u rooms(带有user\u id、room\u id字段),然后通过进行连接
让我困惑的是:
如果我想让这些表保持真正的孤立,我真的想加入表吗?这没有什么区别
如果我必须保留我的中间表us
我现在需要部署一个OTP应用程序。为了实现这一点,我使用了酿酒厂。我的目标是向PROD机器传递一个自给自足的文件,该文件包含所有内容,不需要提取
通常的路线
大多数使用酿酒厂的人都知道通常的路线:
运行MIX\u ENV=prod MIX release
将build/prod/rel//releases//.tar.gz中的tarball复制到部署服务器
拔跗骨
运行代码
客观的
我的目标是消除步骤3。我不想提取任何东西,我只想复制发行版并运行它,就像sudo可执行文件一样
–可执行文件
根据
我目前正在学习长生不老药凤凰框架。我现在陷入困境,是关于如何使用forward命令
这里写着,现在不需要学习Plug,所以如果我想尝试forward命令,我可以将Plug的实现复制到我的应用程序中。但具体在哪里?我试着去寻找它,试着使用我发现的东西,但我做错了什么
这是我的\lib\hello\u web\router.ex文件中的范围:
scope "/", HelloWeb do
pipe_through :browser # Use the default browser stack
假设我在一个应用程序中创建多个助手模块:
defmodule MyApp.Helpers.Uri do
@moduledoc”“”
字符串帮助程序的集合。
"""
结束
defmodule MyApp.Helpers.Crypto do
@moduledoc”“”
加密助手的集合。
"""
结束
创建一个空的“父”模块是一种好的做法吗
defmodule MyApp.Helpers做什么
@moduledoc”“”
收集所有我的应用程序助手。
"""
结束
我想不会,因为从我阅读的所有代码来
标签: Elixir
dependency-managementnmakeelixir-mix
我正试图将argon2_elixir添加到我的phoenix项目中,但在编译时出现以下错误:
mix compile
==> argon2_elixir
Microsoft (R) Program Maintenance Utility Version 14.00.24210.0
Copyright (C) Microsoft Corporation. All rights reserved.
makefile(34) : fatal error U1000: syntax erro
我有一个查询,我们可以根据名字和姓氏进行搜索。它的工作原理如下:
|> where(
[user],
ilike(user.first_name, ^string) or (user.last_name, ^string)
)
它很好用。现在我想搜索全名,即名+姓。我尝试过博士后的这种方法。如果我在这个查询中同时传递名字和姓氏,它将返回空
|> where(
[user],
ilike(user.first_name, ^string) or ilik
我正在尝试使用cowboy和plug在elixir中构建一个非常简单的Http服务器。如果我运行iex-S mix并且只要打开iex,它就可以正常工作。所以我决定创建一个自定义任务,它启动服务器,但立即结束。我怎样才能使它持久?随此问题附上我的任务、应用程序和端点文件。我将非常感谢任何解决方案
server.ex在lib/mix/tasks/server.ex中
lib/MinimalServer/endpoint.ex中的endpoint.ex
mix minimal_server.serve
我正在使用Elixir Phoenix应用程序中的用户登录、注册和身份验证。它附带了一个:require_authenticated_user插件,用于确定特定路由是否要求用户在访问之前进行身份验证
如果我的router.ex中有一个帖子资源,可以提供所有标准操作:
resources "/posts", PostController
如何最好地组织某些路由以要求用户登录?例如,查看所有帖子或查看单个帖子不需要登录。但是,创建、编辑、更新、删除帖子需要用户登录
有没有一种方
我有一个名为ComponentX的组件,它有一个函数
def handle\u info(:do\u x,state)do
我试着从我的主要场景中这样称呼它:
send(Application.ComponentX,:do\u x)
我也试过了
Process.send(Application.ComponentX,:[])
但在尝试这两个函数时,我最终都出现了**(ArgumentError)argument error。免责声明:我从未使用过Scient,我不确定这是正确的惯用方法
**(
我创建了一个没有html和mysql数据库的phoenix项目
我们在工作中使用的版本是:
Erlang/OTP 21 [erts-10.2] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe]
Elixir 1.8.0 (compiled with Erlang/OTP 20)
我正在做一个项目,它充当状态页面工具(hund.io)和我们自己的API和报告工具之间的代理,因此我需要一个数据库来存储服务名称
标签: Elixir
phoenix-frameworkecto
我已经安装了全新的Phoenix 1.3,并在其中生成了带有两个模式帖子和评论的博客上下文。我的测试项目叫做NewVersion(因为我正在测试Phoenix框架的新版本)
因此,我的模式非常标准,主要由phx.gen.html生成:
邮政编码
defmodule NewVersion.Blog.Post do
use Ecto.Schema
import Ecto.Changeset
alias NewVersion.Blog.Post
schema "blog_posts
我正在学习长生不老药,还有一件事我不明白,在函数中,映射是参数的形式。您看到的最常见的地方是在控制器中,如下所示:
控制器
因此,create/2函数。第二个参数类似于%{“league”=>league_params}。如果我错了,请纠正我,但这是一个映射,那么为什么我们要引用下面的值League.changeset(League\u params),而不是键League.changeset(“League”)
这似乎是一个愚蠢的问题,但我想不出这个问题,也找不到这个问题的文档。感谢您的帮助。
当我命令单击iTerm2中的一个路径时,单击会打开带有相应文件的Atom:)
但是我的应用程序记录器在iterm2控制台中显示了lib/app/helpers/date\u helper.ex:213这样的路径
这些路径未被识别为路径。因此,命令单击不起作用。
如何告诉iTerm2,作为lib/app/users/user.ex:100是一个路径和行号。您需要首先将Atom注册为OSX中.ex文件的默认应用程序(例如,通过双击Finder窗口中的.ex文件)
我对此进行了测试,在注册默认应用程序
上一页 1 2 ...
18 19 20 21 22 23 24 ...
下一页 最后一页 共 125 页