嗨,我在Elixir中寻找转置函数。
例如,我有一个数组a,调用一个函数后,结果应该是b:
a = [[1, 2], [3, 4], [5, 6]]
b = transpose(a)
b => [[1, 3, 5], [2, 4, 6]]
目前Elixir中没有,但您可以使用以下工具创建自己的:
def transpose([]), do: []
def transpose([[]|_]), do: []
def transpose(a) do
[Enum.map(a, &h
我打算制作一个API,其中匿名函数由宏组成,例如
transform [x, y], do: x + y
transform x, do: x
应使用转换头和体[:do]作为匿名函数的头和体。例如,上述宏调用上述示例应收集到:
fn [x, y] -> x + y; x -> x end
使用unquote片段可以轻松创建新的命名函数defs,但不能创建新的匿名函数:
iex> val = 1
iex> fn() -> unquote(val) end
我正在为base64编码器编写一个比特流,但似乎找不到访问原始比特的方法
假设我得到了位字符串:
0100 1101 0110 0001 0110 1110
在长生不老药中表示为:
<<77, 97, 110>> # or the string "Man"
#或字符串“Man”
我需要以6位的块访问位字符串,以便将其编码为base64。一个人怎么可能这样做呢?我没有太多使用原始二进制文件的经验,所以我可能会天真地这样做。您可以任意从二进制文件中获取单个位组:
iex
我开始学习长生不老药,遇到了一个我一直无法轻松解决的挑战
我正在尝试创建一个函数,该函数接受一个Enumerable.t并返回另一个Enumerable.t,其中包含接下来的n个项。它的行为与Enum.chunk(e,n,1,[])稍有不同,因为数字迭代计数始终等于原始可枚举计数。我还需要支持流
@spec lookahead(Enumerable.t, non_neg_integer) :: Enumerable.t
这最好用doctest语法来说明:
iex> lookahead(1
标签: Elixir
csrfphoenix-frameworkcsrf-protection
我正在尝试创建一个指向我的网站的Facebook页面标签。
Facebook向我网站的url发送HTTP POST请求。
这里的问题是服务器有一个内置的CSRF检查,它返回以下错误:
(Plug.CSRFProtection.InvalidCSRFTokenError) invalid CSRF (Cross Site Forgery Protection) token, make sure all requests include a '_csrf_token' param or an 'x
标签: Elixir
phoenix-frameworkecto
我在发布新的客户时遇到以下错误-呈现show操作时抛出错误。在控制器中显示预加载与Repo.preload的关联
Request: POST /api/v1/customers
** (exit) an exception was raised:
** (JaSerializer.AssociationNotLoadedError) The customer_notes relationship returned %Ecto.Association.NotLoaded{}.
Please
标签: Elixir
phoenix-frameworkecto
我希望只有在变更集有效且包含文件时才能触发文件上载
有没有可能/一个好主意来播放一个%的插件
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
|> save_image
end
defp save_image(changeset) do
case changeset do
%Ecto.Chang
标签: Elixir
phoenix-frameworkexrm
在我的版本中,css文件的路径没有改变,也就是说,它仍然指向一些旧的css。我试过解决这个问题的办法,但没用。我一定是做错了什么。您是否按说明更改了config.exs中的路径?你把它改成了什么?@bitwalker,我把prod.exs中的路径改成了“.”。我现在也将在config.exs中更改它。我已将config.exs中的:root更改为“.”,并发布了一个新版本。但是它没有改变css;和早午餐建设——生产;和env MIX_env=prod MIX phoenix.digest;和en
标签: Elixir
phoenix-frameworkecto
我对凤凰城是个新手,外星人生态系统。我试图创建中间表来处理多对多关系。不幸的是,我不知道如何创建包含用户和事件数据的变更集(插入变更集),在可用的源中查找这些信息时遇到了很大的困难。你能帮忙吗?至少我指出了正确的方向
当我使用关系执行另一项任务时,我使用build/2,但它只需要一个assoc参数
我创建了以下结构:
表1,包含事件的数据:
schema "events" do
field :name, :string
field :address, :string
f
给定的示例文档在一个数据库中,如下所示
[{id: "1", tags: ["alpha", "bravo", "charlie"]},
{id: "2", tags: ["delta", "echo", "foxtrot"]}]
我知道我可以使用RejectionDB data explorer轻松筛选标记数组,如下所示:
r.db("mydb").table("mytable").filter(r.row("tags").contains("delta"));
然而,我在尝试使用DB e
我有一个简单的端口应用程序(字面上是来自的示例)和一个控制其使用的GenServer
GenServer可以很好地与C应用程序通信,但它不会收到响应,iex或其主管会收到响应。如果我从iex调用flush,我会看到预期的消息
如果我创建一个单独的模块并从中生成一个接收循环,它仍然不会接收端口响应消息
我有一种感觉,我错误地打开了端口,但无法证明这一点。有什么明显的事情我搞砸了吗
port = Port.open({:spawn, "./extprg"}, [{:packet, 2}, :exit
我的mix应用程序中有一个“虚拟”应用程序,因此,它的第一次迁移被放置在test/dummy/priv/repo/migrations/20160323060044\u create\u user.exs中
我想运行这个迁移,但它返回的11:19:20.647[info]已经启动了,这让我很失望
这是我的测试。exs:
config :ecto_state_machine, Dummy.Repo,
adapter: Ecto.Adapters.Postgres,
username: Sy
做得很好:
在连接中分配新的私钥和值
此存储用于库和框架,以避免将:assigns字段写入用户存储。建议库/框架使用库名称作为键的前缀
我无法理解此代码段的用法:%Conn{private:private}=connI假定您正在询问函数的行为。可能您应该编辑问题以删除开头的@spec行,因为它会混淆您要问的是哪个put_private。%Conn{private:private}=Conn是与Conn的模式匹配,Conn是一个结构,以便在Conn中获取private:key的值。您可以在
@
我已经创建了Elixir应用程序(Slack bot),我想将其部署到运行Ubuntu的朋友的服务器上。不必在机器上构建应用程序的最佳方法是什么
我尝试使用exrm创建要部署的包,但由于我是在Windows上开发的,该包仅适用于Windows计算机(erts-7.2.1/bindir仅包含Windows二进制文件)
我不需要非常高级的部署,所以也许我可以复制已编译的应用程序并在那里运行它。但是我不知道我应该复制什么(beam文件?),从哪里复制,以后如何运行
另一个问题是服务器上没有Erlang
我正在尝试在套接字路由器中侦听消息,将消息发送到内存中的进程,即生成的运行程序模块,然后将结果广播给客户端
在Phoenix之外的独立测试中,此代码有效。对于菲尼克斯,我得到了这个错误
~/chatroom:.mix phoenix.server
Compiling 2 files (.ex)
== Compilation error on file web/models/runner.ex ==
** (CompileError) web/models/runner.ex:8: undefi
以此查询作为EXTO版本的基础:
select folder_id, json_agg(p.*)
from folder_memberships inner join profiles p
on p.id=folder_memberships.profile_id
where folder_id in (1234) group by folder_id;
我有这个密码:
# ids=[1234]
from(p in Profile,
join: link in Fol
标签: Elixir
phoenix-frameworkex-unit
我为phoenix应用程序添加了以下测试:
navigate_to("/")
registration_page_link = find_element(:class, "header__button__register")
registration_page_link |> click()
form = find_element(:class, "form__register")
email_field = find_with
标签: Elixir
phoenix-frameworkecto
我有两种型号:
defmodule TransactionApi.Messages.Event do
use Ecto.Schema
import Ecto.Changeset
alias TransactionApi.Messages.Event
alias TransactionApi.Messages.EventDetail
schema "events" do
field :city, :string
field :email, :string
我编写了一个简单的map函数(用于学习;我了解Enum.map):
我可以在iex中轻松使用它:
MyList.map [1,2,3], &(&1 + 1)
我使用的是一个匿名函数,所以这并不奇怪
如何使用模块本身的函数调用它
iex(1)> MyList.map [1,2,3,4], MyList.add_1
** (UndefinedFunctionError) function MyList.add_1/0 is undefined or private. Did
我对长生不老药/凤凰非常陌生。我有一个这样的函数
defp get_list(old_result, filter) do
MY.Model.search_name(filter)
|> Enum.concat(old_result)
end
现在,为了使其更具可重用性,我想将模型的引用传递给函数,使其类似于:
defp get_list(old_result, filter, AnotherModel) do
MY.AnotherModel.search_name(filt
我已经实现了一个DynamicSupervisor,它可以处理使用进程的工作人员。在/3之后发送\u以发送具有一定时间精度的推送通知
在某些情况下,例如,当我发布一个没有热交换功能的新版本时,我希望保留一个记录,记录在DETS中尚未完成的所有工作进程,以及当DynamicSupervisor开始以保存在DETS中的相同状态再次创建所有这些工作进程时
我知道从一开始就不支持工人,我应该实施start\u child来启动一个新工人,但不知道如何将DynamicSupervisor的启动与同一模块上
我有以下代码:
total_pages = res["payload"]["total pages"]
current_page = res["payload"]["page"]
total_entities = res["payload"]["total entities"]
queryId = res["payload"]["queryId"]
unprocessed_entities = res["payload"]["entities"]
其中
如何使用具有特定间隔的流获取两个日期时间之间的日期时间列表
是我干的
stream = Stream.iterate(starting, &(Calendar.DateTime.add!(&1, 1200)))
1200是我每次要添加到日期的间隔
我这样做的时候效果很好
iex(16)> {:ok, after_seconds, 0, :after} = Calendar.DateTime.diff(ending, starting)
{:ok, 691200, 0, :
在我寻求一个好的解决方案的过程中,我试图解决这个问题:
# This is the data I have.
#
trains = [:red_train, :blue_train]
train_stations = ["Station 1", "Station 2"]
# This stepping stone is calculated by a function.
#
stations_permutations = [
["Sta
我正在学习长生不老药,我从PragProg的书《编程长生不老药》中得到的一个例子是:
太好了,这是预期的结果。现在当我这样写的时候:
iex(27)> (1..10) |> Enum.map(&(&1*&1)) |> Enum.filter(&(&1 > 40))
'1@Qd'
为什么我会得到这种奇怪的1@Qd“string?它在elixir中没有bug,因为方法[]应该像在erlang中一样返回新的
但对于unicode数
我开始学习Elixir,这也是我的第一个动态语言,所以我真的无法使用没有类型声明的函数
我想做的是:
def create_training_data(file_path, indices_path, result_path) do
file_path
|> File.stream!
|> Stream.with_index
|> filter_data_with_indices(indices_path)
|> create_ou
Elixir中似乎有三种类型的文档(v1.1.1是我现在使用的版本)、@doc、@moduledoc和@typedoc
在iex中,@doc和@moduledoc可以通过h/1打印出来,但不能通过@typedoc打印出来。我知道t/1可以打印出类型定义,但我需要文档
为什么h/1只支持@doc和@moduledoc?还不支持。我们应该更新IEx以支持它。我打开了一个问题:非常感谢您的及时回复,何塞!
在console中定义模块会产生一些数字集合,其中包含模块的函数及其所采用的参数数:
defmodule HotelRoom do
def book(%{name: name, age: age}) when age < 25, do: IO.puts "#{name}, you are too young"
def book(%{name: name, age: age}) when age >= 30, do: IO.puts "#{name},you are 30 ye
我试图通过查看使用OTP的项目的好例子来学习OTP。我研究了这段代码。但看起来mix并没有使用太多OTP
对我来说,mix有很多OTP的可能用例。例如,并发编译多个文件、并发下载DEP等
我想知道为什么mix不使用OTP?还是CLI应用程序的OTP过度杀戮?它是否只适用于长时间运行的应用程序
我还注意到mix不能同时运行。这也有原因吗?我想你已经回答了你自己的问题。核心OTP概念可能不适用于短期命令
例如,如果你有许多独立的任务(如服务器连接),并且其中一个任务失败时,你仍然需要保持应用程序运行
标签: Elixir
headless-browserhound
我试图请求一个页面并检查它,但我得到:
** (exit) exited in: GenServer.call(Hound.SessionServer, {:change_session0.100.0>, :default, []}, 60000)
** (EXIT) an exception was raised:
** (MatchError) no match of right hand side value: {:error, :econnrefused}
我正在使用HTTPoison获取《长生不老药指南》网站,然后使用Floki对其进行解析,以构建一个HTML 2 Jupyter笔记本变压器(描述中带有标记)。我得在后面加上记号\u0060用于代码高亮显示,目前为止,该功能仍然有效。我在一些地方使用字符串插值“#{Floki.text(childs_nodes)}”,在其他地方使用Enum.join”“从HTML处理和转换为标记
转换后的结果根据jupyter notebookformat存储在映射中。当我调用Poison.encode note
标签: Elixir
phoenix-frameworkecto
我如何通过在Phoenix/Elixir Exto中预加载的模型进行订购
# model1 has_many model2
data = Repo.get_by!(Model1, var1: "fdsfdsfds")
|> Repo.preload(:model2)
# |> order_by(:model1.model2.var123) # how??????
如何按字段“model1.model2.var123”排序?是否要对加载的关联排序?您是否尝试过使用文档中提到的预加载
我是长生不老药新手,我写电报。我使用此项目作为模板:
这很好,但我有几个问题
如果“命令”太大,如何拆分?我有一个想法,使用App.Commander创建一个新模块NewCommands,并将其添加到Matcher中的handle\u cast中。这样对吗
为什么Matcher作为GenServer运行?我认为它不需要任何状态或smth
请从阅读《长生不老药》和《长生不老药》的区别开始
只要我们想轻松地从其他模块访问函数或宏而不使用完全限定名,我们就使用import
因此,不应该在这里使用use
我正在学习Elixir元编程,我正在玩弄一个宏,它允许我定义REST资源。界面如下所示:
defmodule Router do
use Resources
resource "cars"
resource "animals"
end
我已经使用modulemodule定义了一个模块属性,但我无法实现以下功能:
defmodule Resource do
defmacro __using__(_opts) do
quote do
Module.put_at
当我在我的Phoenix应用程序中运行自定义混合任务时(我认为它甚至与Phoenix无关,但仍然是),它使用了一些外部库(例如
**(退出)无进程:进程未激活或当前没有与给定名称关联的进程,可能是因为其应用程序未启动
:erlang.send(:geocoder\u workers,{:$gen\u cast,{:取消等待,{引用},[:noconnect])
直到我加上
应用程序。确保所有应用程序都已启动(:geocoder)
到混合任务。所以我的问题是为什么我的所有依赖项都不是自动启动的?
使用IEx(Elixir的REPL),我希望能够保存我的命令历史记录
例如:
我可以打开一个新的IEx会话并执行一个命令。执行命令后,我可以按向上箭头并预填充最后一个命令。关闭IEx并重新打开后,我希望能够访问我最后的命令
有办法做到这一点吗?对于Erlang/OTP 20
这是内置的(从)
从Erlang/OTP20,可以通过传递
在VM中启用它的一些标志。这可以根据需要进行
启动IEx的依据:
iex--erl“-内核shell\u历史记录已启用”
如果你愿意
在整个系统上,您可以使用ERL
我一直在尝试将WebStorm设置为与Elixir一起使用,我收到了一条项目SDK未定义的消息
这就是我所拥有的:
$ elixir -v
Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false]
Elixir 1.5.1
我还有用于WebStorm的Elixir插件,版本:5.1.0
我第一次在brew中安装了Elixir,但
标签: Elixir
phoenix-frameworkflash-message
我的put\u flash(conn)和get\u flash(conn)方法行为异常;当我使用重定向时,一切正常,但当我尝试在后面的控制器中添加flash\u msg时,什么也没有显示
消息似乎存储在:phoenix_flash中,而不是:plug_session;你知道那里出了什么问题吗
def index(conn, _params) do
conn
|> put_flash(:info, "Welcome : info")
|> put_flash
我有一个elixir应用程序,当我更新应用程序配置(例如更改端口,然后再次运行我的应用程序)时,我看不到任何差异。似乎该应用程序仍然可以在配置中使用旧版本。我必须修改应用程序代码(例如添加一些无意义的行:IO.put(“foo”)),只有在这之后,应用程序才能使用新版本的配置运行。实现相同结果的真正方法是什么?我无法重现这种行为,可能是由于较新的mix版本。下面是一个盲目的猜测什么可能导致它和如何克服它
Elixir中的.exs文件和.ex文件之间存在显著差异。前者是所谓的“长生不老药脚本”,后
正在尝试生成:
$ mix phx.gen.html MyModel my_models a b c d:integer
和错误:
** (Mix) Expected the schema, "my_models", to be a valid module name
mix phx.gen.html, phx.gen.json and phx.gen.context expect a
context module name, followed by singular and p
每当出现多个失败时,我发现很难滚动详细的输出并找到失败的测试
有没有办法在测试套件运行结束时列出所有失败的测试
实际的
预期
不是默认的。您可以编写一个自定义的ExUnit格式化程序来实现这一点。我很确定我记得以前有人问过这件事,所以也许工作已经完成了?
Finished in 12.9 seconds
2 doctests, 241 tests, 6 failures
Randomized with seed 793406
Finished in 12.9 seconds
2 doctes
这是我的工厂(使用ex_machina软件包):
问题图式
保留模式
以下是我的测试设置:
question = insert(:question, reserved: %{ information: %{player_name: "steve"}})
在本例中,我只想更新保留的地图的玩家名称。但当我使用上述设置时,问题结构如下所示:
%MyApp.Question{
__meta__: #Ecto.Schema.Metadata<:loaded, "questions">,
如何在Elixir中使用模运算符
例如,在Ruby中,您可以执行以下操作:
5 % 2 == 0
它与Ruby的模运算符有何不同?对于整数,请使用:
iex(1)>rem(5,2)
1.
iex(2)>rem(5,2)==0
假的
从文档中:
计算整数除法的余数
rem/2使用截断除法,这意味着结果总是
有红利的符号
如果其中一个参数不是
整数,或当除数为0时
与Ruby相比的主要区别似乎是:
rem仅适用于整数,但%完全根据数据类型更改其行为
Elixir中的负红利符号为负(与Ruby的符
我有以下疑问:
def user_contacts(provider_id, filter) do
query =
from(
u in User,
preload: [:groups],
where: u.provider_id == ^provider_id and u.type != "company"
)
query
|> filter_sector(filter)
|> filter_availabili
我使用,当我运行命令asdf current elixir时,它返回1.9.1(由/Users/my_user/.tool versions设置)
我使用命令mix phx.new my_project--no-exto创建了一个项目,当我打开mix.exs文件时,我的设置是:
def project do
[
app: :pedal,
version: "0.0.1",
elixir: "~> 1.4",
elixirc_paths
标签: Elixir
phoenix-frameworkecto
具有此资源的1.4.11应用程序:
mix phx.gen.html Institutions SchoolType school_types name
问题
我想找到第一个具有给定名称的学校类型。如果那不存在,我想创造它。在ActiveRecord中,我会首先使用或\u create
我有一个有效的代码。但这看起来并不好,也许有更好更干净的方法来解决这个问题
school_type_name = "Example"
if school_type_name != nil do
query
在我的项目中,我可以运行命令mixtest--color,它将一些彩色输出添加到终端。我想全局设置它,这样我就可以运行mix test,它会自动拾取我想要的彩色输出
我试过的
我搜索了关于全局配置和全局混合配置的在线elixir文档
我也尝试了mix help,但看不到有关全局配置的任何信息
我也尝试过mix-help-test,这里我似乎不清楚如何将选项添加到mix.exs文件,或者是否可以在某个地方设置全局选项
我觉得这可能是可能的,但在没有提出我想在这里提出的任何问题之后。我不知道系统范围
我有一个函数,它将输入字符串散列到带有数字的列表中,并将其放置在结构中
def hash_input(input) do
hexList = :crypto.hash(:md5, input)
|> :binary.bin_to_list
%Identicon.Image{hex: hexList}
end
我想编写一个测试,确保hexList中的每个元素都是一个整数,因此我提出了以下方法:
test "Does hashing produce a 16
标签: Elixir
phoenix-frameworkecto
我想将一些随机数据植入我的数据库,我在这里简化了代码:
alias MyApp.Repo
alias MyApp.Datas.Data
for x <- 0..1000 do
n = random_name() #gives back 1 of 20 different names ("Bob", "Rick", "Sean", ...)
v = Enum.random(1..100)
%Data{n
我有一个具有以下功能的函数:
cond do
Enum.all?([10,11,12,13,1], fn x -> x in list end) == true -> { 9, [10,11,12,13,1] }
Enum.all?([23,24,25,26,14], fn x -> x in list end) == true -> { 9, [23,24,25,26,14] }
Enum.all?([36,37,38,39,27], fn x ->
上一页 1 2 ...
47 48 49 50 51 52 53 ...
下一页 最后一页 共 125 页