我正在从genserver中的handle info函数调用elixir genserver,以添加从客户端获取的电话号码。但一旦handle_调用被调用,所有者进程就会崩溃[超时]。请帮忙
全局创建一个ETS,以在调用下面所述的任何函数之前插入值
def handle_info(消息、状态)do
{a,b}=消息
phonenumber=b[:正文]
添加电话号码
{:诺雷普利州}
结束
def添加(电话号码)do
调用(_模块,{:add,phonenumber})
结束
def handl
当通过在某个中间模块上调用use包含多个外部模块时,是否有一种简单的方法来确定在哪个模块中实际定义了给定的方法
例如:
我找到了一个适合我的解决方案,通过使用和捕获函数,然后检查它:
def method_a
IO.inspect &method_b/0
# outputs &ModuleB.method_b
method_b
end
每个模块都定义了一个\uuuu info\uuu函数,您可以使用它查看该模块导出的函数:
IO.inspect ModuleB._
我需要从列表中获取一个中间值
如何使用elixir中的list[0]或list[3..-1]
e、 g:
如何使用Tuple?使用您可以做到:
Enum.slice(list, 2..-1) # [3, 4, 5, 6]
以及:
要获得准确的中间值(如问题标题所示),可以执行以下操作:
# Given a list: li
midPos = (length(li) -1) |> div 2
Enum.at li, midPos
# Or in one line
Enum.at(
简单的长生不老药程序,将奇数和偶数分开,然后打印出来
iex(22)> c("testmap.ex")
testmap.ex:1: warning: redefining module TestModule
[TestModule]
iex(23)> TestModule.test_map_reduce
** (BadArityError) #Function<0.56012634/2 in TestModule.pretty_print/1> with arity
在OS X上使用Elixir V1.1.1时,我在理解Elixir函数定义语法方面遇到了问题
给定函数定义:
def foobar(arg1, arg2), do: <<something>> end
似乎在某些情况下,括号后的逗号是必需的,而在其他情况下则不是。同样,在“do”后面加冒号,在“end”后面加结束符。我敢肯定我把情况复杂化了很多,但对于编程语言来说,这似乎是一种奇怪的设置
在什么情况下这些元素是必需的/可选的?您已经将两种形式的方法定义组合在一起了——较
您是否只在您的应用程序/api启动时才将要运行的代码放入到Villa Phoenix应用程序中?假设我想确保创建一些mnesia表或配置我的记录器后端。另一件事是运行时配置。他们在文档中提到了它,但我不清楚在哪里定义/更改运行时配置
Endpoint.ex似乎是一个完成初始配置的地方,但通过查看文档,我找不到任何回调函数,它允许我在启动时只运行代码一次。将其放入应用程序回调模块。它通常是应用程序的名称:start/2函数中的lib/my\u app/my\u app.ex。模块的第二行应该有使用
这将给出一小时前的时间,然后我可以使用where:x.inserted\u at>=^hour\u ago
是否有一种更简单或更好的方法来计算日期时间和/或按日期查询?我该如何确定日期范围?我认为您可以简单地使用以下内容:
{{year,month,day},{hour,minute,second}} = Ecto.DateTime.utc
|> Ecto.DateTime.to_erl
hour_ago = {{year,month,day},{hour-1,minute,secon
如果全名中的尊称前缀不为空,如何连接名和姓并添加尊称前缀
defmodule MyApp.UserView do
use MyApp.Web, :view
alias MyApp.User
def full_name(%User{first_name: first_name,
last_name: last_name,
honorific_prefix: honorific_prefix})
标签: Elixir
phoenix-frameworkecto
安装的EXTO版本是“2.0.0-rc.5”
从文档中可以看出,在处插入的似乎是自动生成的。我应该手动完成这部分吗
iex(1)> categories = [%{name: "stackoverflow", url: "stackoverflow.com"}]
iex(2)> App.Repo.insert_all App.Category, categories
** (Postgrex.Error) ERROR (not_null_violation): null valu
我使用Phoenix作为基本的JSON api,但在解决如何检查请求者是否传入了正确的参数时遇到了一些问题
假设用户发出post请求,该请求需要以下正文:
{
"user": {
"email": "someone@example.com",
"password": "mangoes"
}
}
我想检查用户是否在用户对象中传入了电子邮件和密码。目前,我正在控制器动作中执行类似操作:
params[user][email] and params[user][passwor
Phoenix docs说“Phoenix模板是预编译的,这使得它们的速度非常快。”
我有几个问题,预编译模板实际上意味着什么,与Rails应用程序之类的东西相比,它在生产中会产生多大的显著差异
预编译模板实际上意味着什么
这里的预编译意味着web/templates中的所有模板实际上都编译为相应视图中render函数的正常函数子句
<pre><%= inspect(@posts) %></pre>
如果您在web/templates/posts/index
标签: Elixir
phoenix-frameworkelixir-poison
我尝试对返回多个项目或单个项目的API调用使用相同的HTTPoison调用。对多个项的响应将它们抛出到“items”属性中,而单个项仅返回作为JSON字符串的项信息
这是我的密码:
def process_url(method, id \\ 0) do
if id > 0 do
"http://api.call.com/#{method}/#{id}?key=API_KEY"
else
"http://api.call.com/#{method}
我希望为布局添加额外的布局参数,如@internal。例如,用于@title的@title,以及用于为单个页面加载javascript的区域
window.onload = function () {
@onload_js
}
这些都是在布局中设置的,所以我不确定在凤凰城处理这些问题的最佳方式。谢谢:D.对于页面标题,您只需从控制器传递一个值:
def edit(conn, params) do
render(conn, "edit.html", page_title: "Edit
我目前正在努力处理混合中的配置值(尤其是在运行测试时)。这是我的设想:
我有一个客户端库,带有一些常见的配置值(key、secret、region)
我想测试没有区域值设置时会发生什么
我在/config
我现在是这样做的(但这不起作用)。
正在测试的模块(简化):
运行mix test时发生的情况是,设置这些值属性的主模块由于找不到有效值而抛出以下错误:
lib/streamex/client.ex:36: invalid literal nil in <<>>
我有以下路线:
get "/@:user_name", UserController, :show
这似乎有效。但是,当我使用URL帮助器时:
user_path( @conn, :show, @current_user.user_name )
输出完全转义:
如果我执行如下路线:
get "/@/:user_name", UserController, :show
然后,@符号输出为非转义:
有没有一种方法可以实现第一个路由而不转义@符号?在URL路径中使用@符号是个坏主意吗?原因是
如何以正确的方式定义结构,请查看以下代码段:
defmodule SapOdataService.Worker do
defstruct uri: "", user: nil, password: nil
我应该将默认值定义为nil还是?您有几个选项
对于空白值,可以使用nil显式列出键值对
defmodule User do
defstruct name: "zero_coding", age: nil
end
您可以传递一个原子列表,该列表将全部默认为零:
defmodule
我想一次迭代两个列表,但不知道如何迭代。for循环允许您将多个列表作为for循环的嵌套,我对Enum不太熟悉,但可能有一个解决方案
Python有zip(list\u 1,list\u 2)和enumerate(list\u 1)来实现这一点
在Tcl中,对我来说更容易:
% foreach var1 [list 1 3] var2 [list 2 4] {
puts "$var1 $var2"
}
1 2
3 4
但我想不出用长生不老药怎么做
我想这样做的原因是因为我有一个这样的
我正在尝试使用将Phoenix应用程序从1.2迁移到1.3,包括将web代码移动到lib/my_app_web
我正在做以下几点
== Compilation error on file lib/my_app_web/gettext.ex ==
** (ArgumentError) unknown application: :MyAppWeb
(elixir) lib/application.ex:428: Application.app_dir/1
(elixir) lib/a
我是Elixir/Phoenix新手,我想创建一个不使用模型ID但最终出现错误的链接:
未为%XX.YY.文章{{uuuu meta_uuuu:#exto.Schema.Metadata实现协议枚举,内容:nil,id:nil,inserted_at:nil,short_title:“lalalalillaa”,slug:457,title:nil,updated_at:nil}。
以下是我尝试创建链接的方式:
def link_to_article(conn, article_map) d
在我的Phoenix应用程序中,我有一个联系人表和一个地址表。联系人模式为:
schema "contacts" do
field :name, :string
field :number, :string
has_one :address, App.Address, on_delete: :nothing
timestamps()
end
地址模式为
schema "addresses" do
field :name, :string
fie
Phoenix有一个有用的请求日志,但我需要删除它生成的换行:
Processing with Example.show_account/2
Parameters: %{}
Pipelines: [:secure_api]
这些新行是在Phoenix.Logger.Phoenix\u controller\u call/4上定义的
我尝试了一个带有字符串的简单自定义日志格式函数。replace/4,但它不起作用,因为该函数接收的是IOList(我第一次看到它),而不是字符串
我有什么办
我有一个要减少的映射列表,因为它通常包含重复的名称,但我不能只使用Enum.uniq,因为我想将count列相加,例如:
list = [%{count: 4, name: "first"}, %{count: 43, name: "second"},
%{count: 11, name: "third"}, %{count: 11, name: "first"},
%{count: 11, name: "second"}, %{count: 28, name: "second"}]
之后的
有人能解释长生不老药中主管和动态主管的区别吗
动态监督员是设计用于监督和管理的监督员
许多孩子都是动态的
这是DynamicSupervisor的主要用途--您可以阅读全文
在高层次上,提案中概述了四个主要目标:
简化两个管理器模块的API和使用。最
“主管”模块中的所有文档都包含
条件:“如果主管类型为:simple\u one\u for\u one,
它将表现为X,其他则表现为Y
缺乏周围环境的行为会让监管者
难以学习、理解和使用
在以下情况下提供开箱即用的主管切分
主管本身可能是一个可
当我跑的时候
defmodule Elixirrest.MixProject do
use Mix.Project
def project do
[
app: :elixirrest,
version: "0.1.0",
elixir: "~> 1.6",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix hel
我对长生不老药相当陌生,我有一个小生意上的问题。我正在尝试将api调用返回的数据本地化到Phoenix中间层。我正在获取用户的浏览器语言,并将其解析为一个列表。语言的顺序是相关的。我想从我支持的语言列表中的浏览器语言列表中找到第一种匹配的语言
我可以用嵌套循环和其他方法来实现这一点,但这似乎是Elixir可以做得更优雅的事情。使用:
user=~w|对它进行加密|
支持=~w| it ru en|
Enum.find(用户'en',fn l->Enum.empty?([l]--支持的)结束)
标签: Elixir
phoenix-frameworkecto
下面是编程Phoenix 1.4的书籍。当我使用手动数据库时,该模块工作正常,但当我试图切换我的accounts.ex文件(就像书中告诉我的那样)时,它坏了:
defmodule Rumbl.Accounts做什么
别名Rumbl.Repo
def get_用户(id)do
Repo.get(用户,id)
结束
def get_用户!(id)做什么
回购,快!(用户,id)
结束
def get_user_by(参数)do
回购获取方式(用户、参数)
结束
def list_用户做什么
全部回购
我创建了许多GenServer,并使用PIDs一次向它们发送一条消息。但是,我希望他们在一个游戏中的一个“回合”上几乎同时行动。我如何才能:(1)向他们广播一条“开始!”消息(2)知道他们都演完了(即,结束了)?实现目标的一种方法是将所有的开始消息抛出,然后异步回复:
defmodule TurnTracker do
use GenServer
def init(pids) do
state = %{
pids: pids,
ongoing_reques
所以基本上,我尝试使用一些嵌套的递归来实现flant函数。问题是我得到了无限循环,当检查实际头部时,它是空的。我刚开始学习长生不老药,所以请不要对我太苛刻
defmoduletestdo
def自定义_展平列表do
自定义展平列表,[]
结束
def自定义|U展平[h | t],累加器do
自定义展平[t],[自定义展平(h)|累加器]
结束
def自定义_展平[],累加器do
IO.puts“调用空列表匹配#{acculator}”
枚举反向累加器
结束
def自定义_展平h,蓄能器do
[h
标签: Elixir
phoenix-frameworkguardian
我正在使用Guardian构建我的第一个Elixir应用程序,我遇到了一个问题,用户可以登录并通过身份验证,但在重定向到下一页时,conn不再存储用户信息,并且Guardian.Plug.is_authenticated?返回false
session\u controller.ex
....
def create(conn, %{"session" => %{"email" => email, "password" => password}}) do
case
我正试图按照自述文件中的指示使用hex进行安装。但是,当我尝试执行示例代码时,我得到一个错误:
9afa01708fef# iex
Erlang/OTP 22 [erts-10.5] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]
Interactive Elixir (1.9.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> {:o
标签: Elixir
phoenix-frameworkphoenix-live-view
在正常路线中:
get/index,MyController,:index
我只需从Plug.Conn的path\u info函数中获取路径即可
但是,如果我有一条活动路径,如何检索当前路径
live/index,IndexLive您可以使用当前uri获取装载后和渲染前调用的uri。您可以给出一个如何在模板中实际使用该回调的示例吗?我想根据路径设置一个活动类。在*Web.*Live模块中,定义def handle_参数(\u unsigned_参数,uri,socket),do:{:norepl
我在一个模块中具有以下功能:
def create_chart(data) do
url = "https://quickchart.io/chart/create"
case HTTPoison.post!(
url,
data,
[
{"Content-Type", "application/json"}
],
hackney: [:i
所以我学习Elixir和Pheonix看起来太多了,无法开始学习,所以我制作了一个带有插件和毒药的简单JSON Rest API,但要看到任何更改,我需要停止服务器并再次运行mix run--no halt。我来自nodeJS,它有nodemon,它只跟踪依赖于根模块的所有文件,并在看到任何更改时重新加载整个服务器。混合药或长生不老药有类似的药吗。我知道您可以使用OTP重新加载代码的特定部分,如果我的服务器在保存时这样做是最好的,但是现在我只想更快地响应我所做的。有人能给我指出正确的方向吗?我从
我一直在尝试使用Elixir Flow(从GenStage构建的Lib)来处理/流式处理来自AWS S3 bucket文件的数据,并写入AWS RDS DB
我已经能够在我的本地机器上成功地做到这一点,但当我将我的应用程序部署到AWS ECS/Fargate或EC2时,它并没有按预期工作。
以下是我的实施:
def load_file(file_name) do
window = Flow.Window.count(100)
file_name
|> HTTPS
我试图从我用过的HTML正文中获取图像。现在尸体在
[
{"div", [{"class", "a-cover-image"}, {"data-state", "not-initialised"}],
[
{"div",
[
{"class", "content"},
{&q
标签: Elixir
phoenixgen-serverplug
我正在尝试使用GenServer实现一个计数器。其思想是每当客户端访问服务器时增加一个计数器,并在控制台中打印它。但是,每次访问后,GenServer状态重置或PID终止。有没有办法保持GenServer状态的持久性
代码如下:
lib/myapp\u web/livecount.ex中的计数器文件
defmodule Counter do
use GenServer
# Client
def start_link(integer \\ 0, opts \\ [])
我有以下代码:
defmodule Foo do
defmacro __using__(options) do
attrs = Keyword.get(options, :attrs, Macro.escape(%{}))
quote do
def show, do: IO.inspect(unquote(attrs))
end
end
end
defmodule MacroBug do
use Foo,
attrs: Macro.esc
在我的Phoenix 0.10.0应用程序中,我运行
mix phoenix.gen.resource Job jobs job_name:string job_url:string company_url:string location:string notes:string
通过添加资源行router.ex并运行mix-exto.migrate进行后续操作
通过这些更改,只要我填写所有字段,从web界面创建新记录就可以了。如果我将其中一个留空,浏览器中会显示一条错误消息,上面写着“哎呀,出
我有长生不老药任务,需要一些时间(10秒)。当应用程序升级时,此任务将被任务终止。尽管处于关闭状态,但Supervisor仍将关闭:30000:
=SUPERVISOR REPORT==== 13-Aug-2015::00:03:09 ===
Supervisor: {local,tasks_sup}
Context: child_terminated
Reason: killed
Offender: [{pid,<0.304.0>},
标签: Elixir
phoenix-frameworkecto
我有这个模式:
schema "editables" do
field :title, :string
field :content, :binary
timestamps
end
我希望在应用程序启动时自动创建并填充几行,比如我想创建6个条目,其中:title字段包含:page1,page2,。。。
我应该这样做吗?我的建议:创建一个脚本文件来填充数据库。我们称之为priv/repo/seeds.exs:
alias MyApp.Repo
Repo.insert! %
函数定义可以有一个after子句,就像try语句一样:
# after.exs
defmodule M do
def f do
IO.puts "hello"
raise "die"
IO.puts "world"
after
IO.puts "bye"
end
end
iex(1)> M.f
hello
bye
** (RuntimeError) die
after.exs:3: M.f/0
(elixir) lib/code
将像[1,2,3,4]这样的列表转换为map%{1=>2,3=>4}的优雅而有效的方法是什么?我写道:
Enum.reduce([1,2,3,4],%{}, fn(item, acc) ->
case Map.get(acc, :last) do
nil ->
Map.put(acc, :last, item)
last ->
acc = Map.put(acc,
需要检查给定IP是否存在于这些多个范围内
Given IP: 49.14.1.2
Ranges: 49.14.0.0 - 49.14.63.255, 106.76.96.0 - 106.76.127.255, and so on
我已尝试将其转换为整数并验证范围。IP本身是否有其他方法可以不转换为整数使用:inet.parse_address/1将地址转换为元组形式,并使用简单的元组比较进行比较
iex(33)> a_ip = :inet.parse_address(a)
{:ok, {
我对长生不老药很陌生,只是想知道最好的方法是用同一个键组合两张地图。更具体地说:
name_map = %{
105 => "Jim",
48 => "Maria",
62 => "Karen",
888 => "Foo"
}
job_map = %{
105 => "Social worker",
48 => "Programmer",
62 => "Teacher",
999 => "Bar"
}
而我正试图
我在phoenix框架中使用exq作为后台处理。是否有一种方法可以使用作业id检查exq作业的状态,以了解它是否已完成或失败,或者是什么?我浏览了文档,但没有太多相关信息。Exq有文档记录。我建议你需要
不幸的是,该文档没有提供到源代码的链接,因此。谢谢@mudasobwa,我在这里找到了它,这是一个完整的示例,供有同样想法的人使用
job_pid = Application.get_env(:exq, :name) |> Exq.Api.Server.server_name
job_id
例如,我有一个二进制,如何将其中的所有字节相加,从而得到15?这只是一个例子。我正在处理的实际二进制文件不是UTF-8编码的,因此字符串。to_charlist/1总是抛出异常。使用理解:
for(do:i)
|>Enum.reduce(0,&Kernel.+/2)
#⇒ 15
也Enum.reduce(0,&Kernel.+/2)=Enum.sum。我甚至不知道这样的语法。我认为我应该更多地关注内核.SpecialForms。通常,它是为
我在尝试运行task mix工作服时遇到此错误
** (exit) an exception was raised:
** (MatchError) no match of right hand side value: :error
cover.erl:1580: :cover.do_compile_beam2/5
cover.erl:1480: :cover.do_compile_beam/3
(stdlib) lists.erl:123
标签: Elixir
microsoft-graph-calendarmicrosoft-graph-teamsoutlook-calendar
我正在尝试将outlook日历集成到elixir应用程序中
我引用了创建日历事件的链接
我无法为日历事件创建会议链接
当他通过日历(GUI)创建时,可以创建团队会议链接,所以我相信一定有办法做到这一点。我想我缺少一个创建会议链接的密钥
我的请求url-
我的请求是
{
"start" => start_time,
"end" => end_time,
"attendees" =>[
%{
标签: Elixir
phoenixphoenix-live-view
我的LiveView应用程序在mount功能中设置一些初始状态(例如,按钮标签)。当模板通过一些消息传递时,它似乎被重新装载
在下面的示例中,按钮标签最初设置为“单击以运行”,单击按钮时,它会成功更改为“正在运行…”,然后更改为“仍在运行”。但是,mount会自动再次运行,标签会返回到“单击以运行”。所需的行为是,标签保持为“仍在进行中”,直到收到另一条消息,指示流程稍后完成
是什么触发了重新安装,我如何才能阻止它
def mount(_params, _session, socket) do
我正在为一个项目编写UPnP适配器,因此需要能够使用设备IP地址响应某些请求。有没有一种简单的单行方式
我的项目正在使用VintageNet和Neurs pack,并且可以通过VintageNet属性获得IP。但是,VintageNet在主机上的开发过程中不起作用,这对于我能够调试UPnP实现非常重要。而且,这使得我的UPnP库在将来独立于神经变得很尴尬
谢谢您的帮助。不太清楚神经,但您可以使用的输出来获取所需的信息
例如,如果您知道需要适配器en1的IPv4地址:
:inet.getifadd
上一页 1 2 ...
6 7 8 9 10 11 12 ...
下一页 最后一页 共 125 页