在 Elixir 中,您可以iex通过以下命令将 shell 与应用程序的上下文一起使用...
iex -S mix
Run Code Online (Sandbox Code Playgroud)
这个命令非常方便,让我们可以在交互式 shell 中使用应用程序功能。
我想知道是否可以使用参数启动交互式 shell,或者是否可以让您的应用程序在用户与 shell 交互之前调用某些函数。
例如,假设我有一个名为 的应用程序MyApp,并以 启动它iex -S mix。而不必手动在 shell 中输入命令,例如
iex -S mix
Run Code Online (Sandbox Code Playgroud)
有一种方法可以让这一切自动发生。
我在Linux服务器上有一个elixir项目。我创建了一个.service脚本,该脚本将使用以下命令启动和停止应用程序
systemctl start "my_app".service
systemctl stop "my_app".service
Run Code Online (Sandbox Code Playgroud)
该.service文件看起来像这样...
[Unit]
Description="example app_name daemon"
[Service]
Type=simple
User=root
Restart=on-failure
Environment=MIX_ENV=prod "PORT=4000"
WorkingDirectory="the file path to my app"
ExecStart=/usr/local/bin/mix phoenix.server
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
它可以按预期工作,唯一的例外是它不会读取环境变量。我可以像PORT=4000上面一样手动将它们添加到脚本中,从而使应用程序可以访问它们。
我想知道.service文件是否可以访问我在服务器上拥有的环境变量,因此我不必在新服务器上使用此脚本的每次都写它们。提前致谢
如果您想要有关该项目的更多信息,请随时查看该仓库!
我想知道是否有可能创建一个方法,它接受两个整数值作为参数,并返回它们和数组之间的所有数字.
例如,如果我的方法是
function getNumberRange(first, last)
Run Code Online (Sandbox Code Playgroud)
我称之为
getNumberRanger(10, 13)
Run Code Online (Sandbox Code Playgroud)
有没有办法让我将答案作为以下数组值返回
[10, 11, 12, 13]
Run Code Online (Sandbox Code Playgroud)
如果措辞严厉,请提前致谢并表示歉意.
我最近在尝试读取elixir中的文件时出现以下错误.
iex()> File.read("no_existant_file.csv")
{:error, :enoent}
Run Code Online (Sandbox Code Playgroud)
幸运的是,我知道"enoent"意味着什么,并很快意识到这是因为我的文件名中有一个拼写错误.一旦我修复了这一切,一切按预期工作.
但是,这让我想知道是否有办法将此错误消息更改为更可能向最终用户显示的"人性化"消息?
我决定在 Elixir 中构建自己的 CSV 解析器作为练习项目,并成功地让一些东西顺利运行。
\n\n我知道这个问题过去已经被一些“顶级”长生不老药开发者解决过,所以我决定看看他们是如何解决这个问题的。
\n\n我开始查看 elixir 模块NimbleCSV的源代码。它是由该语言的创建者 Jos\xc3\xa9 Valim 编写的,还有一些著名的 Elixir 开发人员的贡献,所以我认为这是一个不错的选择。
\n\n在parse_string函数中,他们使用函数检查字符串长度byte_size(string)。我想我明白这个功能是如何工作的。例如
iex()> byte_size(<<104, 101, 108, 108, 111>>)\n5\niex()> byte_size(<<104, 101, 108, 108, 111::9>>)\n6\nRun Code Online (Sandbox Code Playgroud)\n\n第一个函数是40 bitswhich is 5 bytes(如果没有另外说明,二进制中的每个值默认为 elixir 中的 8 位)
在第二个中,我将其中一个值指定为 ,9 bits因此总数为41 bits。这意味着它是6 bytes(由于四舍五入)
\n\n\n抱歉,如果某些语言不完全正确
\n
这对我来说很有意义。我的问题是,String.length在这种情况下他们为什么会选择这个功能?如果他们只是获取字符串的长度,不会返回相同的结果吗?
elixir ×4
arrays ×1
bash ×1
binary ×1
elixir-iex ×1
erlang ×1
javascript ×1
linux ×1
string ×1
systemd ×1