在iex控制台上,我发现以下错误,我不确定我做错了什么
case %{} do
x when x == %{} -> true
_x -> false
end
导致以下错误:
** (ErlangError) erlang error: :guard_expr
另外,我想解释一下我是如何发现这个的。我试图通过查看elixir的实现并将其更改为处理[],{}和%{}与false和nil相同,来创建自己的|宏。
下面是该实现(它有相同的问题):
去掉或x==%{}可以让事情
标签: Elixir
phoenix-frameworkecto
副食品
我试图编码一些嵌套的外胚层模型,但我遇到了一个问题。我意识到我不能对卸载的模型进行编码,我想有可能只选择一个结构而不加载其余部分,同时有可能选择整个树
我使用了definpl的方法,例如:
defimpl Poison.Encoder, for: Hangman.MasterCat do
def encode(page, _options) do
%{
id: page.id,
name: page.name,
cate
如何将长生不老药指数转换为整数
我想把像1.0e2这样的东西转换成100。
我在谷歌上搜索了一个解决方案,但没有找到。你所说的指数实际上只是一个写在上面的浮点数,有时也称为指数符号。实际指数实际上只是整个过程的一部分。与尾数一起,它允许我们方便地表示非常大和/或非常小的数字:
mantissa * (10 ^ exponent)
因此,在Elixir中,就像在许多其他语言中一样,数字1.23*(10^5)可以写成1.23e5。如果您将示例编号1.0e2键入iex,您将看到它实际上只是浮点数之上
标签: Elixir
phoenix-frameworkecto
所以我有一张属于用户的模型票。每个用户都有很多票。因此,用户id是每个票证的外键。我如何构建一个查询,以获取每个用户的用户名所订购的所有票据?我一直在努力
query = from u in User,
preload: [:tickets]
query_tickets = from t in Ticket,
在Ruby中,您可以执行以下操作:
10.times{put'hello world'}
我在《长生不老药》中能想到的最佳方法是:
Enum.each((0..10),fn(x)->IO.put'hello world'end)
如果在程序中运行,您会收到警告hello\u world.exs:1:warning:variable x未使用
问题:在长生不老药中有更好的方法吗?
背景:我正在做一个需要进行300万次试验的模拟。我不是在重复列表。一个简化的方案是投掷300万枚硬币并记录人头数。要删
我有以下elixir代码片段:
defmodule Rectangle do
def area(a, b) do
a * b
end
def area(a) do
a * a
end
end
然后我将文件加载到iex会话中,如下所示:
iex(1)> import_file "rectangle.exs"
{:module, Rectangle,
<<70, 79, 82, 49, 0, 0, 5, 84
将库依赖项(仅提供函数)列为应用程序的目的是什么
例如,当它只提供简单功能时,项目建议将其作为应用程序包含
def application do
[applications: [:left_pad]]
end
长生不老药包是否应始终作为应用程序提供?新的库开发人员如何使其依赖项作为应用程序可用?这还提供了哪些其他功能?每个运行时依赖项都应添加到应用程序列表中。包是只提供函数还是运行进程是一个实现细节,用户不应该关心
此外,由于Erlang可以动态加载代码,我的理解是,将应用程序添加到依赖项
在继续处理参数之前,如何过滤掉无效的参数,如nil或空列表
下面的案例似乎很常见,但它不是清晰的代码——我非常确定有一种更简单、惯用的方法来实现这一点
def load(token) do
case token do
nil -> nil
[] -> nil
token -> process(token)
end
end
如果函数有多个子句,Elixir将尝试每个子句,直到找到一个匹配的子句。这允许您根据提供的参数进行“筛选”
我试图只在模型存在两个字段的情况下对模型进行一些验证
就像这样:
if Changeset.get_field(changeset, :field_a) or Changeset.get_field(changeset, :field_b) do
changeset
|> a_lot_of_validations
else
changeset
end
问题是:当出现字段a或字段b时,它们返回字符串,因此这里会出现参数错误,因为
"string" or "string"
返回
我已经创建了我的第一个Elixir/Phoenix应用程序,我想记录访客的IP地址
在我的router.ex中,我正在“记录”实际存在的页面的ip地址
def log_ip(conn, _) do
conn.remote_ip
|> Tuple.to_list
|> Enum.join(".")
|> IO.puts
conn
end
...
defmodule Mysite.Router do
use Mysite.Web, :router
p
为了测试这个问题,我创建了一个新的phoenix项目v1.2.1,并简单地做了以下工作:
defmodule Playground.PageController do
use Playground.Web, :controller
def index(conn, _params) do
conn
|> assign(:test, "test works")
|> put_flash(:info, "information")
|> re
为Phoenix/Elixir应用程序获取基本域的惯用方法是什么?不是单个请求,而是应用程序的基本域,这可能取决于其当前环境
所以在本地,它应该是localhost,但在服务器上,它可以是“dev.my_domain.com”、“my_domain.com”或其他我可以在应用程序中使用的东西
当然,我可以在config/dev.exs或config/prod.exs中添加一个特殊的键,但我认为可能已经有这样一个键可以重用。您正在寻找主机。它是存储在Plug.Conn结构中的请求字段
主机-请求的
我正在努力编译。我已经安装了erlang 18,elixir版本是1.3
编译挂起在下一行,不会向前移动:
Downloaded package, caching at /Users/navinnegi/.cache/rebar3/hex/default/packages/pc-1.4.0.tar
若我停止并再次尝试运行deps.compile,它将在第行停止
Compiling parse_trans
但是,如果我删除位于User/username/.cache的rebar3文件夹并运
标签: Elixir
phoenix-frameworkecto
我已经在EXTO中创建了一个带有“timestamps()”的模型。当我插入时:
changeset = Model1.changeset(%Model1{}, model1_params)
其“updated_at”自动插入也等于“inserted_at”或“now()
即使我这样做:
model1_params2 = Map.put(model1_params, "updated_at", nil)
它仍然插入“updated_at”等于“inserted_at”。我怎样才能让它插入“u
我正在Phoenix应用程序中使用Addict实现用户身份验证,请参见
下面是我得到的错误:
[error] #PID<0.549.0> running Myapp.Endpoint terminated
Server: localhost:4000 (http)
Request: GET /register
** (exit) an exception was raised:
** (UndefinedFunctionError) function Myapp.Addict
我有一个正常工作的phoenix应用程序,我正在尝试安装一个名为comeonin的新依赖项
我在mix.exs文件中添加了依赖项,如下所示,位于应用程序列表的末尾
def application do
[mod: {Rumbl, []},
applications: [:phoenix, :phoenix_pubsub, :phoenix_html, :cowboy, :logger, :gettext,
:phoenix_ecto,
我正在尝试使用一个简单的查询,但是执行EXTO查询的函数不会返回任何结果
我添加了一些跟踪来统计数据库中的记录。预计它将始终返回1,但不会返回
解析程序:
def get_cards_for_stage(stage, _args, _ctx) do
IO.puts "Before batch: #{OfferSid.Repo.aggregate(from(p in "pipeline_cards"), :count, :id)}"
batch({__MODULE__, :pipelin
我写了一个我想在两个或更多控制器中使用的插件
对于第一个控制器,在params%%{params:%%{“param1”=>param01,“param2”=>param02}}=conn中有两个变量,而对于第二个控制器,只有一个变量%%{params:%%{“param1”=>param01}=conn
我使用%{params:%{“param1”=>param01,“param2”=>param02}}=conn在插件中进行模式匹配。当请求到达第二个控制器时,它抛出(MatchError)右
我有两个十六进制格式的字节,比如“0c”或“31”。
如何将其映射到某些标志值?我想要一个已设置的所有标志的列表
例如:
"0c" -> 0000 1100 -> [:flag3, :flag2]
"31" -> 0011 0001 -> [:flag5, :flag4, :flag0]
在这里,每个标志都是根据其位置命名的,但稍后我想用更具描述性的名称来命名标志
从十六进制中获取数据很容易,只需字符串。要获取整数(“0c”,16),但之后我迷失在按位的世界中。实际上,
我在我的一个应用程序中进行了以下迁移
use Ecto.Migration
alias SnitchPayments.PaymentMethodCode
@code PaymentMethodCode.hosted_payment() |> to_charlist() # this evaulautes to 'hpm'
def change do
create table("snitch_hosted_payments", comment: "payments m
标签: Elixir
phoenix-frameworkecto
我是Elixir和Phoenix的新手,我想不出在seeds.exs文件中将JSON插入Postgres JSON列时使用的正确语法。下面是一个我试图插入的示例
Repo.insert! %Language{
page: "accounts",
code: "en-us",
mode: "all",
language: { "username_email" : "Username or email address",
"pass
我正在尝试合并变更集错误
我有一个属于用户模式的机构模式。每个字段上都需要一些字段,但错误响应如下所示:
{
"errors": {
"user": {
"password_confirmation": [
"The password confirmation does not match the password."
],
"password": [
标签: Elixir
phoenix-frameworkecto
在我的伞形应用程序中,目前有两个应用程序,每个应用程序都基于自己的DB
我在app2中有一个模式,引用了app1对象的uuid
DB1 :
Table : parent
parent_id: uuid
name: string
DB2 :
Table : child
child_id: uuid
parent_id: uuid
name: string
然后,模式:
schema "child" do
field :name, :str
我试图测试我的端点是否在无效JSON上返回400。如果我这样做:
response = conn
|> put_req_header("content-type", "application/json")
|> post(Routes.convert_path(conn, :convert), "invalid JSON")
我将得到一个Jason.DecodeError,因为它试图对我的字符串进行编码。我怎样才能让它不编码呢?看看这些文件,似乎无法做到:
post(con
在迁移过程中,我们可以添加多个主键,它们都充当复合主键。我在表中有四个字段,其中三个是主键,工作得很好。当我尝试添加新迁移并将第四列作为主键时。博士后给了我这个错误
(Postgrex.Error) ERROR 42P16 (invalid_table_definition) multiple primary keys for table "rooms_units" are not allowed
这是我的新迁移:
alter table(:rooms_units) do
modif
我在Enum.reduce中传递一个由整数组成的列表作为字符串,并对列表的每个值运行一个函数。但问题是在第二次迭代中它返回:好的,由于哪个函数给出错误,我在代码中使用多个IO.puts只是为了跟踪错误
下面是我对_decimal的函数,当我们将11作为参数传递时,它应该返回这个二进制值的十进制表示形式。但它在第二次迭代中停止,我将在下面写出输出-
def to_decimal(string) do
list = String.graphemes(string)
len = len
我有这张地图
map = [
%{id: 2, brand: "TUTU", reference: "1234"},
%{id: 2, brand: "TUTU", reference: "4567"},
%{id: 3, brand: "TOTO", reference: "789456"}
]
我想按ID进行分组,得到如下结果:
[
%{
id:
我希望将cat命令的输出“管道”到Elixir Mix任务中,并将其作为二进制保存在变量中
我已经尝试过使用IO.get/1,但它只读取输出的第一行
cat textfile.txt |混合打印
defmodule Mix.Tasks.Print do
使用Mix.Task
def运行(_argv)do
Task.async(fn->IO.get(“”)end)
|>任务等待(t)
|>IO.puts()#打印第一行
结束
结束
我想在Elixir中的二进制变量中保存整个文件的内容并将其打印
我正在运行一个苦艾酒查询,有三个参数字段,都是整数列表
@desc "Fetches resolutions of Taiga ids"
field :taiga_ids, :taiga_entities do
arg :usIds, list_of(:integer)
arg :taskIds, list_of(:integer)
arg :issueIds, list_of(:integer)
resolve &Resolvers.Bridges.fetch_tai
是否可以从另一个目录导入模块?如果是,我怎么做?我可以从另一个目录重新使用模块的唯一方法是手动将其复制到本地文件夹中,然后通过elixir script.exs
为了添加更多的上下文,我有一个名为Utilities的文件夹和另一个名为Scripts的文件夹。在Utilities文件夹中定义了一个名为ListUtilities.ex的elixir模块,我想在script.exs中引用它。以下是我的目录布局的可视化表示:
Utilities
ListUtilites.ex
Scripts
我正在研究长生不老药RNA转录的一个基本问题。但是,我的解决方案遇到了一些意想不到的行为:
defmodule RnaTranscription do
@doc """
Transcribes a character list representing DNA nucleotides to RNA
## Examples
iex> RnaTranscription.to_rna('ACTG')
'UGAC'
"""
@spec to_rna([char])
我有以下代码。
我想向各位议员说明这一点。
所有成员至少都有第1点。
有些成员有第2点或第3点。这意味着有些成员的第2点或第3点为零
<%= for member <- @members do %>
<%= member.point1 %> <%= member.point2 %> <%= member.point3 %>
<% end %>
应该清楚地区分应该清楚地区分二进制'or'运算符(|)将n
升级到Elixir 1.10.3后,调用HTTPoison.request!()引发了一个HTTPoison.Error和{:options,{:sslv3,{:versions,[:“tlsv1.2”,:“tlsv1.1”,:tlsv1,:sslv3]}的原因。这是什么原因造成的?我在网上看到的所有示例都假设原因是atom。sslv3已从Erlang 23.0中删除,因为它是一个旧的、不安全的协议。您需要将hackney升级到1.16.0或更高版本,以便获得修复该问题的PR:
我相信这与Eli
标签: Elixir
phoenix-frameworkliveview
假设我有数据:
data = [[key: 1, value: "1"], [key: 2, value: "2"] ,[key: 3, value: "3"]]
child_data = %{1: [key: 1, value: "exists"]}
以及html:
<%= select f, :corporation_id, data %>
<%= select f, :company_id,
我正在使用Elixir1.10.1和Horde0.8.3作为移动和web应用程序的后端API。基本上,用户由UserAgent表示,简称UA(用GenServer实现),它在集群中是唯一的,只要客户端应用程序至少有一个实时连接,它就存在。客户可以多次连接(电话、平板电脑、网络、家庭、工作等);每个连接都由一个连接代理表示,简称CA,它是唯一的。只要用户未注销或会话未过期,CA就处于活动状态。基本上,我只有一个唯一的UA,但我可以有几个CA
登录过程分为三个步骤
接收到HTTP登录请求(JSON内
我的结构如下:
订单有许多产品
产品有一个模板
订单有许多模板到产品
我的查询如下:
def with_template(query \\ Product) do
from q in query, preload: :template
end
def with_products(query \\ Order) do
from q in query, preload: :products
end
当我这样做的时候:
OrderQuery.with_products |> Prod
我有一张发票,上面有许多行项目,它们也属于产品。在invoice#show上,我想显示该发票的所有行项目,以及相关产品的名称。来自Rails,我很难将这些点连接起来行\u item.product.name无效。如何在该表中显示产品名称
应用程序
mix phoenix.new my_app
cd my_app
mix ecto.create
mix phoenix.gen.html Invoice invoices number
mix phoenix.gen.html Product pro
在IEx中,puts\t最多打印7个空格
iex(1)> IO.puts "1\t2"
1 2 # same as 1\s\s\s\s\s\s\s2
但是,如果我将相同的代码放在一个文件中,并在bash中运行它,它将为我提供真正的选项卡
$ elixir test.exs
1 2 # same as 1\t2
您可以使用Textmate并启用“不可见字符”以查看差异
我的问题是:
为什么会这样
有没有办法在IEx中将\t变成一个真正的选项卡
注意:这是在Ma
如何将具有github依赖项且运行包所需的包正确发布到hex?您不能
只有十六进制包将作为包的依赖项包括在内,例如Git依赖项将不包括在内
这是为了确保hex.pm上发布的每个包将来都可以构建。Github存储库可以由创建者随时删除,但是在hex.pm上发布的包在发布1小时后无法取消发布。您需要包括您从Github依赖的内容。也就是说,获取源代码和构建,然后删除github依赖项。只需在从github获取的版本上冻结代码。
我想在Maru中定义一个自定义类型,用它来解析JSON post实体,并进一步用它来执行sql语句。但我不知道该怎么做
这是我的自定义类型
defmodule Maru.Types.Volume do
use Maru.Type
@type length :: Float
@type breadth :: Float
@type height :: Float
end
此类型必须在路由器中使用
defmodule My.Router.Box do
use
我正在尝试使用代理作为商店。但是,我遇到的问题是,我存储数据的密钥不存在
这是我的频道:
def join("user_pool:" <> email, %{ "app" => app }, socket) do
Logger.info "PRODUCTION user_pool email: #{email}, app: #{app}"
socket = assign(socket, :email, email)
socket = assign(s
我正在尝试编写一个函数,可以将数字列表转换为连续数字列表
例如,转换数字列表,如下所示:
[1, 2, 3, 4, 10, 11, 12, 20, 21, 30, 32, 42, 43, 44, 45, 48, 49]
[[1, 2, 3, 4], [10, 11, 12], [20, 21], [30], [32], [42, 43, 44, 45], [48, 49]]
进入连续数字列表,例如:
[1, 2, 3, 4, 10, 11, 12, 20, 21, 30, 32, 42, 4
我已经开始用Elixir和Phoenix编写一个应用程序,但是我有点迷路了
基本上,应用程序将收到一个复杂的JSON,我需要验证它并将其保存在数据库中
大概是这样的:
defmodule Foo.Person do
import Ecto.Changeset
def types("person") do
%{id: :integer, name: :string, address: types("address")}
end
def types("address")
我试图避免与竞争条件发生冲突,因为为同一用户打开了两个或多个会话,因此,我考虑为每个用户只打开一个会话,在打开新会话时关闭旧会话。您知道如何以最佳方式实现这一点吗?我个人认为这将是一种可怕的用户体验-我不希望应用程序以这种方式“管理”。我希望对于一个用户id可以有多个会话
第二,您需要考虑应用程序水平缩放的可能性,因此需要多个APP/菲尼克斯服务器。现在,您必须在分布式环境中管理“用户”的唯一性
如果您采用这种策略,那么Phoenix Presence提供了一种管理分布式状态的方法,但是。。。这
标签: Elixir
phoenix-frameworkectophoenix
我知道如何在EXTO查询中使用动态字段和值,例如:
field = :age
value = 20
Ecto.Query.where(App.User, [x], field(x, ^field) < ^value)
但它引发了一个异常:exto.Query.CompileError)为了防止SQL注入攻击,片段(…)不允许字符串…您可以,只需进行一点元编程。支持自定义宏
defMacro自定义_,其中(t、f、v、sign)执行
{sign,[context:Elixir,import
我已经按照中的说明为蒸馏厂版本创建了一个自定义命令,但是我创建的脚本似乎找不到Release\u ctl。我用的是酿酒厂2.1.1
例如,下面的脚本
#!/usr/bin/env sh
release_ctl --mfa "Elixir.IO.puts/1" --argv -- "$@"
…退出时退出代码为1。让事情变得更简单
#!/usr/bin/env sh
which release_ctl
…还退出,退出代码为1
有什么想法吗?这只是个简单的放屁。我找不到eval。我应该用
#!
我需要将属性传递给包含大写字母的输入字段,如data clearllabel=“clear”。因为我用的是bulma分机
我试过这样的方法:
<%= date_input f, :from, "data-clearLabel": gettext("clear"), "data-todayLabel": gettext("today") %>
但它会变成这样的html:
<input data-clearlabel="leeren" data-todaylabel="heu
遇到传递给get的url包含无效端口的情况
iex> HTTPoison.get("http://example.com:650000")
** (FunctionClauseError) no function clause matching in :inet_tcp.do_connect/4
(kernel) inet_tcp.erl:113: :inet_tcp.do_connect({127, 0, 0, 1}, 650000, [{:packet, :raw}, {:ac
对不起,这个愚蠢的问题。但我是一个新手在长生不老药来自戈朗
我真的很喜欢elixir和FP风格,我尝试实现一些基本功能,但在websocket连接上遇到了种族条件问题。例如,在golang中,我使用互斥来解决它,但它不是FP样式
初始问题:
多个WebSocket连接,等待5人组。然后随机洗牌。在这个例子中,我遇到了一些关于“比赛条件”的问题。同一个人分为不同的群体等
用长生不老药解决这个问题的惯用方法是什么
谢谢你的帮助。再一次为一个愚蠢的问题感到抱歉
我将分享我丑陋的代码片段)
例如,两个并
我正在尝试获取与friend_Reference_代码没有关联的用户,或者他们的代码状态为false,并且他们也没有使用任何代码。但是我无法访问预加载的关联朋友推荐代码的字段状态。我是这样做的:
def get_first_free_invite_users() do
users =
list_users()
|> Repo.preload([:friend_referral_code])
|> Enum.filter(
f
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 125 页