与elixir中的其他函数(以及Ecto自己的事务)一样,我希望使用模式匹配来处理Ecto查询中的潜在错误。像这样:
case Repo.get!(User, id) do
{:ok, user} ->
#do something
{:error, message} ->
#pass the error
end
显然,这不起作用,但是我如何模式匹配像exto.NotSingleResult这样的exto错误和像preload错误这样的其他潜在查询问题呢?嘿,
通过一些长生不老药练习,我发现需要快速生成1到n个整数的序列。在Ruby中,我会这样做:
numbers = (1..100)
长生不老药有相似之处吗?长生不老药有一个非常相似的特点:
iex(2)> numbers = 1..10
1..10
iex(3)> Enum.to_list(numbers)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
iex(4)> Enum.map(numbers, fn x -> x * x end)
[1, 4,
我经常使用Elixir编写HTTP程序。
当然,如果我使用mix创建新项目并修改mix.exs作为HTTPoison的依赖项,mix deps.get可以解析依赖项
然而,有时我想尝试使用简短的脚本(.exs)或iex来进行简单的实验,这些实验需要外部模块,而无需创建新项目
是否有任何方法可以解决此需求,如Elixir中的“库搜索路径”?code模块具有实现所有需要的功能。但是,它只适用于机器上的现有文件,您几乎需要“手动”执行所有操作
你应该完成大部分你想要的
另一种方法是在现有项目中使用ie
标签: Elixir
phoenix-frameworkecto
我正在重新实现我最初在凤凰城的Rails中编写的一个应用程序,其中用户可以使用PostgreSQL的JSONB记录类型创建自定义字段。例如,我们有以下(简化表示)模式:
客户
ID(int)
客户端类型ID(int)
名称(字符串)
信息(jsonb)
客户端类型
ID(int)
名称(字符串)
自定义字段定义
ID(int)
客户端类型ID(int)
键(字符串)
标签(字符串)
在Rails中,ActiveRecord神奇地将JSONB转换为散列和散列,这使我可以使用JSONB非
我在模板中编写了以下代码
“alt=”“/>
如下所示
然后,我在地址栏中键入路径localhost:4000/uploads/large_116.jpg.jpg?v=63615301283,得到下面的错误
GET/uploads/large_116.jpg.jpg(edgec.Router)找不到路由
也许,因为上传的图像不是模型,也不是路由控制器
我可以路由上传的图像和渲染吗?自行解决
我发现以下问题
或者,更详细地说,您希望提供服务。我实际上发现修改现有的插件是唯一有效的方法,因此,如果
我正在尝试使用arc实现一个图像库。
我面临以下问题
无法一次上载多个文件(到AWS S3)
可以上传小于mb的文件,如果我尝试大文件会出现超时错误(想知道如何上传大文件)
显示来自AWS S3的图像
上载超过MB的文件时出现的错误是
[error] Task #PID<0.536.0> started from #PID<0.533.0> terminating
** (stop) {:aws_error, {:socket_error, :timeout}}
我想规范化用户通过发布的Unicode(UTF-8)字符串。有没有图书馆可以用长生不老药(或凤凰城或二郎城)来处理这些东西?我习惯于在Python中这样做,但我不知道Elixir有这些库
import unicodedata
import zenhan
import jctconv
def normalize(strings, unistr = 'NFKC')
norm = unicodedata.normalize(unistr, strings)
zenhan = zenh
我有这个功能
def start(data, opts \\ [pages: 17, depth: 3]) do
maxPages = opts[:pages]
maxDepth = opts[:depth]
IO.puts maxPages
IO.puts maxDepth
end
当我执行程序时,启动(“数据”,第8页)然后我希望它打印8和3,但它只打印8,您可以改为:
def start(data, opts
在EXTO迁移中,实现引用自己表的外键的正确方法是什么
e、 g.我想创建一个表,其中任何行都可以引用同一表中的“父”行。(实现分层数据的一种方法;还有许多其他方法。)
但是当我的变更集中有这个时,我在运行mix-exto.migrate时会出现很多错误:
create_if_not_exists table(:perms, prefix: :accts) do
add :title, :string, size: 64, null: false
add :description, :t
标签: Elixir
phoenix-frameworkectoleveldb
我正在开发一个有Phoenix支持的web界面的应用程序,我正在探索当前SQLite(及其EXTO驱动程序)的替代存储方法(是的,我听说过PGSQL,不,我不愿意使用它)
我想使用LevelDB和H2LevelDB,它在上有一个可用的Erlang驱动程序
然而,在编译时,我意识到Phoenix似乎非常依赖于Ecto,甚至在负责呈现eex模板的模块中也是如此。我觉得这有点可怕,有点奇怪,同时也有点烦人。
因此,从预生成的文件中盲目清除对EXTO的所有引用是安全的,还是应该为我的web UI切换到其
我有一个聊天室,当一个用户有一个连接的插座,我们广播到那个。但是当用户未连接时,我想记录用户错过的信息(消息等)
我最初的想法是有一个GenServer,它接受并存储数据,直到用户重新联机
如何让内部进程订阅频道
类似于这样的App.RoomChannel.join(“rooms:1”,u,self())(这不起作用,因为最后一个参数需要是一个套接字)如果您想跟踪一些有关用户信息的元数据,如(设备或用户联机时间,一些消息通知…),您可以使用Phoenix.Presence来跟踪这些信息
如果要
给定Elixir函数add1=fn a->a+1 end,我知道可以用速记法将其表示为add1=&(&1+1)
有没有一种方法可以在多体函数中使用速记符号?例如,下面的函数返回两个数字中较大的一个
max = fn
a, b when a > b -> a
_a, b -> b
end
有没有可能用Elixir的速记法来表达这个匿名函数?这个例子很有效
max = fn
(a, b) when a >= b -> a
(_a, b) -&g
我想在用户点击HTML表单上的“提交”时向请求添加一些查询字符串参数。当前模板文件代码:
<body>
<h2>Create a new email subscription</h2>
<p>This email address will recieve a message when a new order is placed.</p>
<%= form_for @changeset, subscription_p
我有一个ExUnit测试,可以ping一个端点。该端点调用一个函数,该函数通过由环境确定的http客户端进行外部调用
在测试环境中,我使用了HTTPoison的模拟模块
defmodule HTTPoisonMock do
def get(_url), do: raise "You need to define this function for your test"
end
在测试本身中,我试图重新定义这个模块,以便函数返回一个固定的响应
test "/my_endpoint" do
标签: Elixir
phoenix-frameworkecto
我有一个名为content的文本字段,我需要显示它的摘录
最好的方法是什么
比如:
<% post.content.slice(0..50) %>
这就是我的想法;然而,这给了我一个参数错误
显示内容文本字段前50个字符的最佳方式是什么
或者,我可以在创建/保存数据到数据库时创建摘录字段吗
感谢您的帮助。提前谢谢
defmodule MyApp.StringFormatter do
def truncate(text, opts \\ []) do
max_len
elixir中有没有一种方法可以获得与PHP中的array\u key类似的所有映射键?我一直在寻找,但似乎找不到办法
还是有其他方法可以获得唯一值?我正在为地图中值为1的键指定名称,以仅获取不同的值。然后我想得到只检索唯一值的键
我正在使用以下代码创建地图:
names = Enum.reduce lines, %{}, fn line, acc ->
Map.put(acc, line.name, 1)
end
例如,我有两行line.name作为测试。我希望最终结果返回刚才的测
标签: Elixir
phoenix-frameworkotp
我使用OTP管理事件队列:
defmodule ParrotApi.MatchingSupervisor do
use Supervisor
## Callbacks
def start_link() do
Supervisor.start_link(__MODULE__, [])
end
def init(_) do
children = [
worker(ParrotApi.MatchingServer, []), # TODO: Sta
警告:这是一种聪明的尝试。我知道我可能应该让它可读,但这并不意味着我不想知道如何变得聪明
我有这样的例子(人为的例子):
def胶水(%%{“alpha”=>alpha,“beta”=>beta})可以
康多
α和β->
α-β
阿尔法->
IO.puts(“哎呀,你忘了给我alpha!”)
正确->
IO.puts(“哎呀,你忘了给我测试版了!”)
结束
结束
但我想改为:
def glue(%{"alpha" => alpha, "beta" => beta}) do
co
尝试在用户和任务之间设置1对n关系时,编译器抛出一个参数错误:
== Compilation error on file lib/platform/mandate.ex ==
** (ArgumentError) argument error
(ecto) lib/ecto/association.ex:474: Ecto.Association.Has.get_ref/3
(ecto) lib/ecto/association.ex:424: Ecto.Association.
我目前正在尝试将ueberauth和guardian身份验证框架集成到我的应用程序中。我正在看一些例子,特别是github中的这个例子:
有一部分,呈现的网页使用4个参数调用身份验证控制器,但页面使用2个参数调用函数
在auth_controller.ex中,https://github.com/hassox/phoenix_guardian/blob/ueberauth-guardian/web/controllers/auth_controller.ex。
login函数有4个参数,其中2个
我正在尝试合并一个词典列表。列表中的每个字典都是嵌套的,我需要对列表中每个元素的值求和。比如,
samples = [
%{team1: %{a: 5, f: 0, n_games: 1}, team2: %{a: 0, f: 2, n_games: 1}},
%{team1: %{a: 1, f: 2, n_games: 1}, team2: %{a: 4, f: 3, n_games: 1}}
]
他需要回来
%{team1: %{a: 6, f: 2, n_games: 2},
我正在尝试向网站添加一个页面,该页面仅在我的articles\u posts表中名为postType的字段中显示包含video的帖子,但我收到一个错误,说函数未定义
在我的文章上下文中articles.ex
def video_post do
Post |> where(postType: "video")|> Repo.all()
end
视频控制器
defmodule Driverless.Web.VideoController do
use Driverl
我有一个问题,我需要读取一个非常大的文件,然后打印每个块的解析结果。最后没有一个完整的列表
到目前为止,我可以在地图集中获得uniq结果,但无法确定如何按照chunk\u大小写入文件
使用此方法获取唯一的文件名
def new_file_name do
hex = :crypto.hash(:md5, Integer.to_string(:os.system_time(:millisecond)))
|> Base.encode16
end
到目前为止,我得到的最好的结果是
标签: Elixir
web-deploymentphoenix-frameworkcontinuous-deploymentnanoboxio
我正在尝试创建一个凤凰伞项目,在同一端口上使用多个应用程序。使用当前配置,我收到以下错误:
⧕ /m/i/d/p/e/portfolio on master * ⟩mix phoenix.server 13m 20s 412ms
==>
鉴于此体外测试:
test "fails to acquire lock" do
%{rows: [[lock_acquired]]} = Ecto.Adapters.SQL.query!(Repo, "SELECT pg_try_advisory_lock($1)", [1337], [])
assert lock_acquired
%{rows: [[lock_acquired]]} = Ecto.Adapters.SQL.query!(Repo, "SELECT pg_try
标签: Elixir
phoenix-frameworkecto
我有一个这样的模型
Qber.V1.CustomerModel
这将存储在变量queryable中的我的代码中
defp build_select(queryable, opts_select \\ []) do
case opts_select do
nil ->
queryable
IO.inspect opts_select
select when is_list(select) ->
IO.inspect select
标签: Elixir
database-migrationecto
我有一个外迁移,我想修改一些列,但也迁移一些数据。例如:
导入外部查询
defmodule MyApp.Repo.Migrations.AddStatus do
改变表格(:foo)do
添加(:状态,:文本)
结束
foos=from(MyApp.Foo中的f,其中:…)
|>MyApp.Repo.all
枚举每个(foos,fn(foo)->
#这里有一些复杂的逻辑在起作用
#了解如何根据'foo'的其他属性设置状态`
(完)
结束
现在,这里的问题是,通过调用MyApp.Repo.all
我有一个复杂的cond用例,我很好奇这是否是最好的方法
下面的代码基本上尝试将客户与现有记录进行匹配
一旦查询排列返回任何行,我需要代码停止检查
customers = cond do
(c = CustomerRepo.findExactNameAndDob(store_id, firstname, lastname, dob)) |> length > 0 -> c
(c = CustomerRepo.findExactNameAndMobile(store_id,
我想知道如何在3000毫秒后跳到这个函数的末尾,但屏幕上没有任何其他打印消息,也没有调用其他函数或发送更多消息
defmodule ExampleModule do
def main do
Process.send_after(self(), :hello, 2_000)
send self(), :hello_again
next()
end
def next do
receive do
我在Elixir中有一个函数,它在一个列表中生成三个随机RGB元组
defmodule Color do
@doc """
Create three random r,g,b colors as a list of three tuples
## Examples
iex> colors = Color.pick_color()
iex> colors
[{207, 127, 117}, {219, 121, 237}, {1
这很有效:
a1 = Repo.get_by(MyModel, var1: var1)
a2 = Repo.preload(a1, [:aaa, bbb: :ccc]).items
但这引发了一个例外:
Repo.get_by(MyModel, var1: var1) |> Repo.preload([:aaa, bbb: :ccc]).items
# or this
# a2 = Repo.get_by(MyModel, var1: var1) |> Repo.pr
标签: Elixir
phoenix-frameworkphoenix
进行以下基本测试(使用ex_machina):
我在日期上遇到错误:
left: ... "published_at" => "2010-04-17T14:00:00.000000"
right: ... "published_at" => ~N[2010-04-17 14:00:00.000000]
使用“published_at”=>“{item.published_at}”尝试了一个简单的字符串断言
但在以下方面仍然失败:
left: ..."published_at" =&
我正在编写一个自定义的EXTO类型,其行为类似于枚举类型。我有一个原子=>整数的关键字列表
我意识到我可以使用长生不老药模块(其实只是原子)作为我的钥匙,而不是普通的原子。我不确定这是否是糟糕的状态
对我来说,使用模块1)看起来更重要、更明显,因为可接受的值在范围内是有限的,2)提供了一些正确代码建议的机会
因为它们“只是原子”,我不相信这样做会比我不这样做会带来更多的性能损失?同时,通过规则原子对长生不老药来说似乎更自然一些
我不太担心数据库中插入了错误的atom,因为我在cast/dump中
获取实现行为的所有模块列表的最短方法是什么
e、 g
我想以[a,B]的形式获得一个列表。我尝试加载所有模块,然后使用键属性behavior进行过滤,但我认为速度会非常慢。还有其他更好的办法吗?没有,没有更好的办法了。行为不会以任何方式编入索引,因为它们是一种编译时功能,用于检查是否已定义了所有必需的回调函数。所以像这样的东西是最好的:
for {module, _} <- :code.all_loaded(),
X in (module.module_info(:attribut
标签: Elixir
phoenix-frameworkamazon-cloudfront
我在elixir/phoenix项目中使用ex_aws依赖项在我的aws帐户中执行一些操作。现在我需要运行类似这样的操作来使缓存无效:
aws cloudfront create-invalidation --distribution-id 1111111111 --paths '/*'
但是ex_aws依赖项没有cloudfront服务。有什么解决办法吗
Versions:
{:phoenix, "~> 1.4.0"}
...
{:ex_aws, "
将列表的反转版本连接到原始列表的最惯用方法是什么?因此:
Input:[1,2,3],这是my_func()的输出
输出:[1,2,3,3,2,1]
我们可以用一种不太习惯的方式来实现这一点,比如:
n=my_func()#返回例如[1,2,3]
n_reversed=Enum.reverse(n)
n_combined=Enum.concat(n,n_反向)
我在想这样的事情(行不通):
my_func()|>Enum.concat(Enum.reverse(&&1)))
此解决方案确实
我运行了函数内核。make_ref/0,它返回一个不透明类型的值,如下所示:#Reference
这是什么?它的用途是什么?引用几乎是唯一的值,可以比较它们的相等性和模式匹配性。所以它在ErlangVM中有点像uuid。让我们参考以下内容:
引用是具有两个属性的erlang对象:
它们可以由程序创建(使用make_ref/0),并且
他们可以平等地进行比较
我不会把它标记为复制品。这个问题是关于Kernel.make_ref的,它是长生不老药特有的,而且措辞也比标记的问题好。@Aleksei
我有以下清单:
[“AM00”、“CC11”、“CB11”]
我需要在地图中转换此列表,如下所示:
%{“AM”=>“00”、“CC”=>“11”、“CB”=>“11”}
我尝试使用Enum.map,但无效:
[“AM00”、“CC11”、“CB11”]
|>Map.new(&Enum.Map(&1,fn x->x end),%{})
二进制模式匹配可以解析字符串:
data = ["AM00", "CC11", "CB11"]
for <<key::binary-
字符串中有一个字符是换行符。检查字符是什么?字符给我8232
当我手动将该字段用双引号括起来时,效果很好。但是我如何才能使用引号生成CSV呢?您必须使用定义自己的CSV解析器,手动传递要在:选项保留键下转义的代码点列表,如文档中所述
关于是使用默认ISO解析器还是自己的实现,您没有提供任何信息,也没有提供输入示例。此外,目前还不清楚你是想扔掉它们,还是想妥善逃离它们
下面是关于如何处理自定义代码点并转义它们的最全面的典型示例
NimbleCSV.defineParser,
分隔符:,,
逃逸:\
简单的问题,我有这两张地图
[{“非洲”,1},{“美洲”,2},{“欧洲”,3}]
[{“刚果”,1,1},{“法国”,2,3},{“西班牙”,3,3},{“美国”,4,2},{“埃及”,5,1}]
我想使用Enum.map和Enum.filter获得以下结果
[
非洲:[{“刚果”,1},{“埃及”,1}],
美国:[{“美国”,4}],
欧洲:[{“法国”,2},{“西班牙”,3}]
]
我已经尝试了以下组合,但我没有得到预期的结果。你能帮点忙吗
Enum.map(
[{“非洲”,1
我喜欢管道,Elixir喜欢管道,但返回{:好的,实际返回值}似乎也很常见。用管道处理这个问题有一个习惯用法吗
我现在正在学习“编程长生不老药”,下面的练习解决方案可能是可行的,但不完整
File.cwd()
|> IO.puts()
我不是在寻找这个解决方案:
{:ok, ret} = File.cwd()
IO.puts(ret)
如果您想将值打印到stdout,您有几个选项,但这里有两个最接近您的示例
File.cwd()
|> inspect()
|> IO.put
标签: Elixir
bluetooth-lowenergynerves-project
我正在做一个物联网项目,我最近发现。目前,我将node.js与noble一起使用,我想用nervous替换它,用于Raspberry Pi上的网关。我没有发现任何类似的东西,并维持长生不老药
有人知道长生不老药中的BLE库吗?不幸的是,BLE在神经上没有得到很好的支持。您可以在项目存储库中查看当前选项
神经维护者的最终意见:
结束。如果你对蓝牙神经感兴趣,请退房
. 将问题归档或转到
Elixir lang slack的神经蓝牙频道支持
我害怕这个答案:(.我想知道为什么在开源中对BLE的承诺如
我正试图上传图像文件到服务器的凤凰城。
我没有找到任何好的例子
下面的代码是我编写的,但不起作用。
我有以下错误
no function clause matching in FileUploadWeb.PageController.upload/2
控制器
defmodule FileUploadWeb.PageController do
use FileUploadWeb, :controller
def index(conn, _params) do
render(co
在我的表单模板中,我有以下代码段:
<%= label f, :event_banner_image %>
<%= file_input f, :event_banner_image %>
<%= error_tag f, :event_banner_image %>
使用这些图像之一创建一个新事件(从“/events/new”)效果很好,但是当我去编辑事件时,文件输入是空的。在某种程度上,这当然是因为服务器不知道上传文件的本地路径。即便如此
elixir代码是否有可移植的格式?除了明显的焦油
例如,如果我想向另一个团队的客户机或其他开发人员提供一个或多个模块(不使用github)。我该怎么做
其他一些熟悉的语言的答案是:Ruby-gem、Java-jar、Python-egg等。这取决于您想要提供什么
我将在下面讨论三个选项,它们都可以通过我们的构建工具Mix获得
打包源文件。如果您想提供代码供其他开发人员在其项目中使用,Hex是最好的选择,因为它也知道如何获取和解析依赖项。调用mix local.hex安装它,然后调用mix l
我正在为Elixir编写一个linter,它主要通过检查从code.string\u到\u quoted/2返回的AST来工作。当我的应用程序发现被认为是样式冲突的内容时,我会使用节点元数据中的行号进行报告
字符串是引用形式相同的文本之一,因此没有元数据。当我只看字符串,不能从周围的表达式中绘制行号时,如何获取行号
例如,我想要这个字符串
~s(\n"\\"")
在检查时导致第2行出现报告错误,但返回值没有行号
iex(18)> Code.string_to_quoted ~S(\n"\
我正试图了解静态资产在生产环境中是如何工作的,文档似乎有点吓人,但可能就是我
根据,我应该运行MIX\u ENV=prod MIX phoenix.digest,作为部署的一部分。这似乎复制了我的所有资产,将一个字符串连接到名称,如果使用static\u path/2,则会提供该名称,我想这与部署时缓存bust有关。太好了
digest函数还在我的priv文件夹中创建manifest.json,如下所示
{“images/calltoaction.png”:“images/calltoacti
我知道Rails有一个非常可靠的约定,即拥有多个控制器名称,例如CustomersController。似乎长生不老药不会在意,因为路线是不同的。菲尼克斯有没有一种惯用的命名控制器的方法?菲尼克斯的控制器、模型和视图都是单数的。因此,以客户为例,约定是:
客户控制器
客户视图
顾客
支持模型的模式和表是复数的
迁移将使用:
创建表(:客户)
模式将使用:
schema“客户”
将单个和多个版本传递到生成器:
mix phoenix.gen.html客户客户为了避免Rails中因使用单数和复数而产
我正在我的Phoenix web应用程序中编写一些get帮助程序。在rails中,您通常会命名(或缺少方法)助手,如通过电子邮件(email)查找帐户,等等
模式匹配似乎是Elixir/Erlang的核心,我想知道我是否更适合编写以下帮助程序:
def get_account({email: email}) do
# ...
end
Phoenix去掉了一个get\u account(id)方法,所以我觉得在模式匹配中重用名称更为惯用?欢迎使用Stack Overflow
虽然可能被称为“
当我将“G”传递给mapdna时,它应该返回“C”请尝试以下操作:
defmodule My do
def mapdna(dna)
when is_binary(dna) do
%{"G" => "C","C" => "G","T" => "A", "A" => "U"}[dna]
end
end
#IO.puts My.mapdna(:G)
IO.puts My.mapdna("G")
在elixir中,要测试参数是否是字符串,您使用的是\
上一页 1 2 ...
5 6 7 8 9 10 11 ...
下一页 最后一页 共 125 页