我正在从事一个涉及大量字节级操作的项目。我希望库能够接受二进制文件作为输入,但使用Enum上的函数通常很方便。我最终得到了很多函数,它们有两个受保护的定义,一个用于when is_binary,另一个用于when is_list:
@doc”“”
将二进制或字节列表转换为十六进制字符串表示形式,
##例子
iex>Bytes.to_hex
“010203fdfeff”
iex>Bytes.to_hex[1,2,3255]
“010203fdfeff”
"""
def到_十六进制(字节)何时是_二
我遵循这个教程
当我要将列表更改为Struct时,我不太确定我在做什么,这对我来说真的很陌生。它不起作用了,继续
协议枚举未实现
我的控制器
defmodule Blog.PageController do
use Blog.Web, :controller
def index(conn, _params) do
media_dir = "./priv/static/media/"
filetype = [".mp4", ".png"]
标签: Elixir
spacemacselixir-iex
刚开始和炼金术士一起使用太空计算机。我目前正在处理一个文件名为times.exs的长生不老药文件(来自编程长生不老药手册)。该模块名为Times
当我在《炼金术士》上使用Iex时,我发现我无法在Iex开头键入大写字母“T”。似乎它的绑定邪恶找到字符向后,我如何改变它的绑定
谢谢。我投票赞成“结束:不清楚你在问什么”,因为我既不能分析问题,也不能分析问题发生的情况。请考虑在一个好的措辞中投入更多的时间。这是通过向DVS创建一个拉请求来解决的。
标签: Elixir
elixir-mixphoenix-framework
在我涉及Elixir的项目中,我经常有一些东西要添加到我的mix.exs文件中,例如添加我自己的ENV等。添加这些项目并将它们添加到我的.gitignore通常是一件痛苦的事情。我的问题是,是否可以有类似于custom_mix.exs的东西,我可以从mix调用它,在那里我可以输入所有自定义设置,这些设置将覆盖mix.exs中定义的设置?custom\u mix.exs文件不会放在git下,可以永久放在下。gitignore和mix.exs如果没有找到custom\u mix.exs,则不会出错
标签: Elixir
phoenix-frameworkecto
我有一个users表和tasks表,我想为task表创建一个模式,它有from_id和to_id
belongs_to(:user, TaskTracker2.Accounts.User, foreign_key: :from_id)
belongs_to(:user, TaskTracker2.Accounts.User, foreign_key: :to_id)
但是它会引起一个论点错误,如何正确地进行呢?
谢谢。第一个参数中需要一个唯一的值。差不多
belongs_to(:user_fr
标签: Elixir
phoenix-frameworkecto
我在变更集管道中有加密令牌的函数
def changeset(user, params \\ %{}) do
user
|> cast(params, [:id, :token]
|> encrypt(:token)
end
因为这个函数是新的,所以旧数据仍然没有加密,我需要手动进行加密。然后我遇到了问题
如果我将原始的标记传递给变更集,它会将该值视为没有更改。管道中的加密无效,且值未更新
如果我加密了令牌并将其传递给变更集,它将标记为变更,并应用加密函数。但是,它加密
如果我更改/修改它调用的库,Elixir库文件是否会自动重新加载?否。有些库喜欢在编译后重新加载文件。像这样的项目有自己的机制
我已经开始阅读关于Elixir编程语言的书籍
我明白:
它是功能性的
它是动态的,但支持@spec
它基于ErlangVM
我的问题是:它有一种GC吗?是的,Erlang有GC,因为Elixir是在Erlang上构建的,所以它也有GC。请参阅这篇关于Erlang GC和一的老文章。Elixir现场指GC,如下所示:
由于其重量轻的特点,拥有数百个
在同一台计算机上同时运行的数千个进程的集合。
隔离允许独立地对进程进行垃圾收集,
减少系统范围内的暂停,并尽可能使用所有机器资源
尽可能高效(垂直缩放
有人能告诉我如何在Elixir中的SQL语句中添加一个反斜杠吗
iex(1)>sql=“从用户限制1中选择*
“从用户限制1 G中选择*”
iex(2)>sql=“从用户限制1\\G中选择*
“从用户限制1\\G中选择*”
我只需要在sql语句中使用“\G”
$elixir-v
Elixir 1.1.0-dev
事实上,我想使用mariaex库,但我仍然无法让它工作
defmodule Customer do
def main(args) do
sql = "
有人能提供一个建议,如何迭代一个列表,但每次使用一批x吗
例如:
如果功能存在:
["1","2","3","4","5","6","7","8","9","10"].step(5)|> IO.puts
将在两次迭代中产生:
12345
678910
我相信Stream.iterate/2是一个解决方案,但我在给定数组的情况下这样做的尝试证明是无利可图的。(or)会将列表分解为x元素的子列表:
iex> [1,2,3,4,5,6,7,8,9,10] |> Enum.chunk
我正在开发一个价格格式函数,它接受一个浮动,并正确地表示它
例190.5,应为190,50
这就是我想到的
def format_price(price) do
price
|> to_string
|> String.replace ".", ","
|> String.replace ~r/,(\d)$/, ",\\1 0"
|> String.replace " ", ""
end
如果我运行以下命令
format_
我有一些客户端静态jQuery代码,我想用服务器动态代码替换它们,这些代码用于我网站的每个页面,并且取决于我所在的页面(请求的路径)。
我现有的jQuery代码(在模板html.eex文件中)是:
因此,我想将“.page1”、“.page2”、…“.pageN”替换为一个变量,该变量使用放置在模板中,并在我的布局视图中定义,以便可以在与该布局相关的每个页面上访问它。所以我试了一下:
defmodule myApp.LayoutView do
use myApp.Web, :view
我有一个值在[0-65535]之间的整数列表。
我需要将它们作为16位整数写入文件
我用长生不老药怎么做
我已经搜索过了,但是我对int和二进制文件以及如何对16位值执行转换感到困惑
我发现了如何转换为16位二进制:
<<12345 :: size(16)>>
以下是我是如何做到的:
{:ok, file} = File.open(filename, [:write])
[1, 2, 3] |> Enum.each(fn(x) -> IO.binwrit
我知道我可以做一些简单的事情,比如System.cmd(“echo”,[“hello”]),但是假设我想做一些事情,比如运行Ruby进程
通常在shell中,我可以这样做:ruby-e'放置“helloworld”
我尝试了一些类似的变化:
System.cmd(“ruby”、[“-e”、“-put\'hello world\'”)运气不好
我可以调用Erlangos模块,但这似乎并不理想,因为我需要显式地将字符串拆分为字符,并对其进行重铸,以及找出除了结果之外如何捕获退出代码
System.c
我试图编写一个EXTO查询,它将同时从两个表中选择数据。像从table1t1,table2t2中选择t1.*,t2.*,其中t1.id=1和t2.id=2我找不到解决方案,找到了编写原始SQL的唯一方法,看起来不太好
类似于variant-使用预加载,但它需要生成额外的查询
comments_query = from c in Comment, order_by: c.published_at
Repo.all from p in Post, preload: [comments: ^comme
我正在修补ExIrc以制作一个简单的机器人,但我无法让它工作
我得到了这个错误:
** (Mix) Could not start application streamingutils: TwitchSniper.start(:normal,
[]) returned an error: shutdown: failed to start child: TwitchSniper.Bot
** (EXIT) an exception was raised:
** (Arg
我的控制器中有以下异常处理程序
def call(conn, opts) do
try do
super(conn, opts)
rescue
e in Ecto.CastError -> conn
|> put_status(:not_found)
|> render(ErrorView, "404.html")
e in ArgumentError -> conn
|>
我很难理解为什么会这样:
1..1000 |> Stream.map(&(3 * &1)) |> Enum.sum
但这并不意味着:
1..1000 |> Stream.map (&(3 * &1)) |> Enum.sum
唯一的区别是.map
据我所知,长生不老药在这种情况下不应该关心空白
在iex中运行上述代码会产生以下错误:
warning: you are piping into a function call without
我有一个带有变更集的Ecto模型,该变更集将更改模型中的状态属性:
def next_state_changeset(model, params) do
model
|> cast(params, ~w(state))
|> validate_required(:state)
end
但是,如果提交的状态与模型中的状态相同(状态没有变化),我希望拒绝变更集
但是如果没有提交状态,这段代码仍然会返回一个有效的变更集,因为如果变更集中不存在该变更集,那么它在模型中仍然
有人能为defdelegate提供一个简单的例子吗。我找不到,这让我很难理解
defmodule Dummy do
def hello, do: "hello from dummy"
end
对于以下内容,我得到未定义函数世界/0:
defmodule Other do
defdelegate hello, to: Dummy, as: world
end
我想将Other.world委托给Dummy.hello两件事:
你的名字和的名称:错了as:应包含目标模块中函数的名称,第一个
我有一个地图(错误为exto.Changeset),如下所示:
%{
field_a: ["error 1", "error 2"],
field_b: ["something here"]
}
我希望它是一个
[
"field_a error 1",
"field_a error 2",
"field_b something here"
]
我试着用
Enum.map(map, fn({ key, errors }) ->
# another anonymou
长生不老药的文献状态
drop_while(enumerable, fun)
Drops items at the beginning of the enumerable while fun returns a truthy value
但我对下面的输出感到困惑。这是否意味着一旦它得到!truthy其他一切都被视为虚假
iex> Enum.drop_while([0,1,2,3,4,5], fn(x) -> rem(x,2) == 0 end)
[1,2,3,4,5]
我希
我正在构建一个简单的搜索功能,我想在字符串字段中查找所有包含字符串的记录
以下是我所尝试的
term = "Moby"
MyApp.Book
|> where([p], String.contains?(p, term))
|> order_by(desc: :inserted_at)
这将返回以下书籍:
白鲸
桑迪奇·莫比·莱恩
我的Mobyand例子
但我得到:
`String.contains?(p, term)` is not a valid query expressio
我相信我在某个地方读到过,当涉及到热重新加载时,使用spawn/1和spawn/3是有区别的,但我找不到关于这个主题的任何完整信息。所以我想知道是否真的有区别,如果有,那是什么?举个例子就好了。谢谢。两者的区别在于spawn/1进行本地函数调用,而spawn/3进行“完全限定”函数调用
当您加载模块的新版本时,旧版本仍然保留,并且在旧版本中执行的任何进程都会继续这样做。例外情况是,如果进程执行“完全限定”的函数调用,包括模块名称:在这种情况下,始终使用最新版本的代码
例如,使用此模块:
defm
假设我们有类似于地图的:
%{"a": %{"b": 2, "c":5}, "d": 1}
在elixr中是否有类似于(js对同一问题的回答)的东西
最终结果应该是:
%{"a.b": 4, "a.c":5, "d": 1}
我不知道内置函数,但当然有一些方法可以执行该转换:
defmodule MyMaps do
def flatten(map) when is_map(map) do
map
|> to_list_of_tuples
|> Enum
因此,如果我用Elixir在RAM内存中打开一个文件(见下面的代码2),我如何在RAM中写入该文件,然后在写入完成后检索其内容?模式匹配返回“#端口”,这与文件句柄PID不同,显然与IO.write#端口不同,“hello”返回错误,例如:
代码1
** (CaseClauseError) no case clause matching: {#Port<0.11114>}
(elixir) lib/io.ex:495: IO.write/2
**(CaseClauseErr
我与一个显式连接模式有一个多对多的关联,该模式在两端引用相同的模型(有点像经典的Follower(是用户)Followee(是用户)东西)
如果我查询某个用户的追随者,我希望包括该用户跟随该用户的时间。这些数据显然位于连接模式上(我们称之为订阅)
如果我只是想要追随者,我会这样做:
followers = User
|> Repo.get!(user_id)
|> assoc(:followers)
|> Repo.all()
要使其正常工作,我应该在用户上定义:
many_
我是Elixir的新手,坦率地说,我不明白当我们有多个带有默认值的子句时为什么需要函数头。从官方文件:
如果具有默认值的函数具有多个子句,则该子句是必需的
创建用于声明的函数头(无实际主体)
默认值:
defmodule Concat do
def join(a, b \\ nil, sep \\ " ")
def join(a, b, _sep) when is_nil(b) do
a
end
def join(a, b, sep) do
a <>
我正在尝试构建以下管道:
[A]->[B]->[C]
A从数据库中获取时间戳早于一天的条目
B使用外部节点执行一些繁重的任务
C将计算结果存储回数据库
每个B节点可以并发执行多个任务,我们可以在节点spawn上设置并发级别
我想要的是根据DB中等待的任务数量,根据需要生成尽可能多的B节点
GenStage是否适合该任务,或者更好地使用队列和一堆相互通信的Genserver构建一些东西?如何处理?自定义调度程序,它不仅分发任务,而且生成B节点
我希望根据DB中等待的任务数量,根据需要生成尽可能多的
标签: Elixir
phoenix-frameworkectophoenix-channelselixir-poison
如何在通道测试中自动将EXTO结构序列化为json响应?正如我在中所看到的,事件的消息必须是一个可序列化的映射,我在中发现,当我在模型中使用毒药时,编码器,那么任何通过传输(据我所知)层传递的消息都应该被编码
示例模型:
use PhoenixTrello.Web, :model
# ...
@derive {Poison.Encoder, only: [:id, :first_name, :last_name, :email]}
# ...
end
从一个频道功能进行广播:
标签: Elixir
phoenix-frameworkelixir-poison
我正在尝试运行mix-release任务来创建生产phoenix服务器
我对毒药有问题,因此添加了来自的解决方法。但是,现在当我运行发布任务时,出现以下错误:
Errors generating release
Duplicated modules:
'Elixir.Poison.Encoder.Any' specified in poison and myappname
我尝试根据中的说明在lib/myappname.ex中添加以下行。但没有任何效果
defmodul
标签: Elixir
phoenix-frameworkecto
我试图在Elixir上用Phoenix web框架实现用户身份验证,但被这个错误难住了
如果在iex中运行changeset=Blog.User.changeset(%Blog.User{})
** (ArgumentError) unknown field "email" for changeset on
%Blog.User{__meta__: #Ecto.Schema.Metadata<:built, "users">, email:
nil, id: nil, inser
标签: Elixir
phoenix-frameworkgatling
我在我的VPS上使用下面的命令来部署我最近组装的一个应用程序
sudo -E mix gatling.deploy kegcopr_api
但是,在尝试将应用程序作为服务启动时,部署会出错
$ mix release --warnings-as-errors --env=prod (/home/deploy/kegcopr_api)
==> Assembling release..
==> Building release kegcopr_api:0.0.1 using envir
标签: Elixir
phoenix-frameworkelixir-mix
我试图在我的Phoenix项目中使用Erlang包(这个:),所以我只是想从我的mix文件中获取它:
defp deps do
[{:phoenix, "~> 1.3.0-rc"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.2"},
{:postgrex, ">= 0.0.0"},
{:gettext, "~> 0.11"},
{:cowboy
《长生不老药》中的不变性真的让我大吃一惊,让语言使用起来如此混乱。我需要迭代一个嵌套映射,并根据迭代简单地更新一些计数,但是Enum.reduce只会让我感到困难。假设我有:
defmodule Predictor do
def past_matches() do
[
team1: %{team2: %{f: 0, a: 1}, team3: %{f: 1, a: 3}},
team2: %{team1: %{f: 3, a: 0}, team3: %{
试图理解Elixir中的代码重用机制以及它们何时适用。例如,我们在Ruby中有继承、混合和元编程(有助于减少样板文件) Elixir宏允许您在编译时生成代码
use关键字调用给定模块中的\uuuuuuuuuu-using宏
例如,use GenServer为将实现genu服务器行为的模块定义所有必需的回调
宏通常仅在构建框架时才需要。常规应用程序代码通常可以由模块和函数组成。这涵盖了很多内容。您可能想在本书中阅读,也可以使用import语句从其他Mudule导入函数。
我在浏览elixir文档时发现了以下代码:
List.foldl([1, 2, 3, 4], 0, fn(x, acc) -> x - acc end) # 2
我尝试了一段时间来理解它在做什么,但就我而言,我不明白为什么它会返回2?如果有人能抽出时间向我解释这一点,我将不胜感激
我完全理解第二个arg是一个累加器。设置为0时,该值不应该返回10吗?累加器的初始值是0,您正在为列表中的每个x执行x-acc。评估如下:
x - acc = new_acc
-----------------
标签: Elixir
phoenix-frameworkecto
在创建数据库之后,即在exto.create之后,是否有在exto中运行的回调
我正在使用Cassandra和Exto,我需要更改一些键空间选项。最好的地方是创建后再创建
虽然可以在迁移中执行,最好是在第一次迁移中,但是在创建后使用回调会使意图更加明确 在迁移中完成它有什么问题?没有回调可以做到这一点。问题在于意图。假设我想在创建数据库之后做一些事情,这对整个数据库是至关重要的。可以使用迁移,但它会让事情变得不那么明显。既然我们已经有了连接后的回调,我想这也应该存在。甚至可能是在_drop之后。
菲尼克斯有一台发电机:
mix phx.gen.html Accounts User users name:string age:integer
我不想为我的模型使用上下文,也不想提供它的名称。如何禁用它?我相信您希望使用--无上下文标志
您仍然可以像1.2及更早版本一样使用旧的生成器
mix phoenix.gen.html User users name:string age:integer
注意:使用phoenix.gen.html而不是phx.gen.html。更多信息请访问
1
标签: Elixir
phoenix-frameworkecto
给定代码
def getbno() do
query = from u in GodowentryForAcceptance,
select: max(u.bno)
Repo.one(query)
end
我想判断返回条件,例如
case GodownentryForAcceptanceService.getbno() do
empty-> do something
notempty -> dosomething
end
什么是空/不空?根据文档,如果没有
我有一个简单的基于GenServer的应用程序,可以解析网页并播放从中获得的数据。代码大致如下所示:
def start_link do
GenServer.start_link(__MODULE__, %{})
end
def init(state) do
schedule_work(1)
{:ok, state}
end
def handle_info(:work, state) do
// Request webpage using HTTPoisson
// Pa
我正在为phoenix应用程序使用蒸馏器进行热代码升级。我使用它来创建应用程序的版本
def project do
{result, _exit_code} = System.cmd("git", ["rev-parse", "HEAD"])
git_sha = String.slice(result, 0, 7)
[app: :evercam_media,
version: "1.0.1-a#{git_sha}",
elixir: "~>
我在phoenix框架中使用scrivener_-Exto和scrivener_html。
我有一个联系人名单,里面有300个联系人。
当我在第6页中单击“删除联系人”时,在提交删除后,我重定向到联系人列表的第一页。
删除后,我想留在当前页面(如第6页)。我该怎么做
我试图从删除控制器获取参数信息,但它没有我尝试的页面信息(查询参数)
但它返回“”
这里是person\u controller.ex中的删除操作
def action(conn, _) do
user = conn.a
我正在用一堆可选字段对变更集进行加密,但在尝试加密之前,我正在使用大量If语句查看变更集是否包含字段
我感觉有一个Enum函数(比如reduce)可以用一种惯用的更为灵丹妙药的方式来实现这一点,但我所想到的没有一个比大量丑陋的If语句更有效
def encrypt(changeset) do
if changeset.changes["address"] do
{:ok, encrypted_address} = EncryptedField.dump(changeset.
我目前有两个表有很多关系:
customers [hasMany] items
在项目中有一些关系:
providers [belongsTo] items
statuses [belongsTo] items
types [belongsTo] items
我的目标是使用一个EXTO查询,返回至少有一个项目记录且状态id为2的客户的列表,以及该客户的任何其他项目
我还需要预加载项目,提供者,状态和类型
我在SQL中复制了以下内容:
SELECT
distinct on (c0.id)
默认情况下,不能使用子文件夹在Elixir Phoenix framework中呈现部分模板,但可以在web_应用程序模块视图定义中进行更改。这是我在开始新的凤凰城项目时经常做的改变之一
def view do
quote do
use Phoenix.View,
root: "lib/demo_web/templates",
namespace: DemoWeb,
# for template su
当我运行混合测试时,我会将所有结果返回到shell中。
如何将结果发送到更多位置,如slack、文件等?要将混合测试的结果写入文件,可以执行以下操作:
mix test > results.txt
要在Slack上发布它们,您可以使用它们的web API,您可以在这里找到:我在中找到了我的问题的答案。
要为ExUnit结果配置您自己的配置,我需要实现我自己的格式化程序(例如,请参见;这是默认格式化程序),并配置ExUnit以使用它:
ExUnit.start(格式化程序:[YourFor
我有一张地图,我需要把它转换成下面的地图
Input = %{DateFrom: "2020-08-05", DateTo: "2020-08-08", TransactionId: "1"}
Output = [ {"DateFrom", "2020-08-05"}, {"DateTo", "2020-08-08"}, {"Transaction
最近我偶然发现了这个代码
defmodule MyAppWeb.PageLive do
use MyAppWeb, :live_view
这是Phoenix Live View生成的默认应用程序的一部分(mix phx.new--Live)。
这是我第一次看到使用构造并将函数名作为第二个参数。
我试着在网上搜索一些关于它的文档,但是找不到一个合适的名字
你能帮我理解执行时会发生什么吗
它不使用宏调用\uuuuu,而是调用函数,我不确定是否可以在那里传递一些选项,或者我需要使用“正常”方式(
我在很多地方读过,在Elixir中查找元组的大小非常快,因为元组存储在连续的内存单元中。但是,for列表的开销更大,因为需要遍历整个列表才能知道列表的长度
我不明白,在连续的内存单元中,如何更快地找出元组的大小。你不需要检查每个单元格吗?存储元组大小。列表的长度不是
元组也是一个装箱值,因此它由一个指向ARITYVAL头(1个单词)的装箱指针(1个单词)组成,该指针后面显示元组的元素。
ARITYVAL头的arity部分是一个26位(在32位系统上)整数值,包含元组中的元素数
— https:/
上一页 1 2 ...
40 41 42 43 44 45 46 ...
下一页 最后一页 共 125 页