我想创建一个固定大小的数组,其中已经从另一个数组填充了默认数量的元素,所以假设我有这个方法:
def fixed_array(size, other)
array = Array.new(size)
other.each_with_index { |x, i| array[i] = x }
array
end
Run Code Online (Sandbox Code Playgroud)
那么我可以使用如下方法:
fixed_array(5, [1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
我会得到的
[1, 2, 3, nil, nil]
Run Code Online (Sandbox Code Playgroud)
在红宝石中有更简单的方法吗?就像扩展我已经拥有的nil对象的数组的当前大小一样?
我正在尝试构建一个凤凰应用程序,我处理一个POST请求.我想得到请求体,我似乎无法找到任何关于如何做的文档.
做一些逆向工程我得到了以下代码:
defmodule MyApp.Controllers.Pages do
use Phoenix.Controller
def post(conn) do
{_, {_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, body, _, _, _, _, _, _}} = conn.adapter
text conn, "#{inspect body}"
end
end
Run Code Online (Sandbox Code Playgroud)
与路由:
defmodule MyApp.Router do
use Phoenix.Router
post "/test", MyApp.Controllers.Pages, :post
end
Run Code Online (Sandbox Code Playgroud)
必须有更好的方法,不是吗?
预期行为:
curl -XPOST localhost:4000/test -d 'this is a test'
$ "this is a test"
Run Code Online (Sandbox Code Playgroud) 我正在为我的高吞吐量Web服务器选择技术.我使用Phoenix创建了两个天真的实现,一个在Go中,另一个在Elixir中.
我已经在AWS上的一台超大型机器上部署了这些版本,并使用围攻来衡量它们的性能.
设置完成后我设法提高了Go的性能GOMAXPROCS
,但是在完全利用机器的CPU或内存之前,运行Elixir版本似乎达到了最佳性能.
我似乎无法找到任何关于如何在生产环境中微调牛仔行为的文档或解释,因此它将正确利用它运行的机器,并产生每个人都谈论的性能......
我很确定有一个简单的地方(文件或环境变量),我可以调整一两个值来产生更好的结果.
谁能告诉我这个地方可能在哪里?
我不确定我做错了什么,但我创建了一个elixir应用程序,如果我运行它:
iex -S mix
Run Code Online (Sandbox Code Playgroud)
应用程序加载主管,主管加载gen_server连接到rabbitmq并继续监听消息,但是如果我运行应用程序
mix app.start
Run Code Online (Sandbox Code Playgroud)
要么
mix run
Run Code Online (Sandbox Code Playgroud)
主管被加载,工作人员启动并连接到rabbitmq,但它立即结束,没有任何错误,示例代码:
mix.exs
defmodule Sample.Mixfile do
use Mix.Project
def project do
[app: :sample,
version: "0.0.1",
elixir: "~> 1.0",
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
deps: deps]
end
# Configuration for the OTP application
#
# Type `mix help compile.app` for more information
def application do
[applications: [:logger, :rabbit_common, :ssl, :erlcloud, :amqp],
mod: {Sample, []}]
end
# Dependencies can be Hex packages:
#
# {:mydep, "~> 0.3.0"}
#
# Or …
Run Code Online (Sandbox Code Playgroud)