小编Pee*_*ger的帖子

Emacs:当前缓冲区的编码系统

我已经习惯用pc来开发erlang程序,一个是mac os x 10.6,另一个是mac os x 10.7.

".emacs"两个pc的文件中,它包含以下脚本

;;handle emacs utf-8 input
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
Run Code Online (Sandbox Code Playgroud)

但是当我在一台电脑中输入包含汉字的备注并保存,然后下载到另一台电脑.中文字符无法正确显示.反向操作的相同故事.

我想知道如何检查当前文件的编码类型?有没有命令可以做到这一点?

emacs character-encoding

7
推荐指数
1
解决办法
1864
查看次数

如何在Elixir中调用Erlang函数

在Elixir中调用Erlang函数的格式是什么?

具体来说,我如何调用函数iex以及在哪里可以找到Erlang提供的模块和函数列表.

elixir iex

7
推荐指数
1
解决办法
3501
查看次数

显示完整日志(用"......"缩短)

我写了日志:

Logger.info(payload|>inspect)
Run Code Online (Sandbox Code Playgroud)

有效载荷是二进制格式,可能相当大.

出于调试目的,我需要完全编写它,但是,我得到:

15:04:31.269 [info] <<10, 36, 102, 102, 100, ...>>
Run Code Online (Sandbox Code Playgroud)

像这样,但我缩短了线条以适应(更大).

elixir

7
推荐指数
1
解决办法
901
查看次数

如何在调试时读取/解码Erlang中列表解析的临时函数名称

当调试foo具有列表推导的模块(例如)临时函数名称时,例如

foo:'-loop/4-lc$^2/1-3-'
Run Code Online (Sandbox Code Playgroud)

可以在跟踪输出或错误消息中找到.如果许多列表推导在一个模块中,通常很难找出哪一个正在运行.

如何解释函数名称?

这些函数的调用参数有什么意义?

返回值的含义是什么?

debugging erlang list-comprehension

6
推荐指数
1
解决办法
315
查看次数

为什么程序员"强烈建议不要进行解析转换"?

根据erl_id_trans文档:

强烈建议程序员不要进行解析转换,也不要对遇到的问题提供支持.

为什么强烈建议程序员不要使用parse_transform/2?这将不会得到支持吗?除了parse_transform/2之外,是否有一种机制可以在编译之前注入代码(运行时字节码修改)或修改源代码?

erlang parse-transform

6
推荐指数
1
解决办法
1038
查看次数

将我的erlang库模块myerlib.erl放到elixir树目录中以便从elixir模块调用的位置

我有myerlib/src/myerlib.erl erlang库模块,我需要从Elixir模块调用它的函数.从elixir代码调用myerlib模块函数我可以写:myerlib.function(.....)但是

如果我将myerlib子目录放在deps/elixir目录下并使用mix.exs:

def deps do
  [
    {:myerlib, path: "deps/myerlib"}
    # ...
  ]
end
Run Code Online (Sandbox Code Playgroud)

然后,当我这样做时,iex -S mix我收到此错误:

***(混合):路径选项只能用于混合项目,无效的路径依赖关系:myerlib

elixir

6
推荐指数
1
解决办法
1190
查看次数

如何在Phoenix Channel中使用handle_info()?

我创建了工作者,它从Arduino获取消息:elixir_serial handler,但现在我想在Channel中使用它来广播接收到的数据,我可以将socket注入:elixir_serial handle_info()吗?

defmodule MyApp.Serialport do
  require Logger
  use GenServer

  def start_link() do
    GenServer.start_link(__MODULE__, [])
  end

  def init([]) do
    work()
    {:ok, []}
  end

  defp work do
    {:ok, serial} = Serial.start_link
    Serial.open(serial, "/dev/tty.arduino")
    Serial.set_speed(serial, 9600)
    Serial.connect(serial)
    Logger.debug "pid #{inspect serial}"
  end

  def handle_info({:elixir_serial, serial, data}, state) do
    Logger.debug "received :data #{inspect data}"
    {:noreply, state}
  end
end
Run Code Online (Sandbox Code Playgroud)

您对如何改进工人代码有任何建议吗,例如:Gen_Server是必要的吗?

elixir phoenix-framework

6
推荐指数
1
解决办法
884
查看次数

elixir-lang在列表中查找非重复元素

我试图从列表中找到非重复值,例如

原始清单:

iex> list = [2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8, 8, 9, 9, 10, 10, 10]
[2, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8, 8, 9, 9, 10, 10, 10]

iex> unique = Enum.uniq(list)
[2, 3, 4, 5, 6, 7, 8, 9, 10]

iex> nondupes = unique -- Enum.uniq(list -- unique)
[2, 3, 5, 7]
Run Code Online (Sandbox Code Playgroud)

结果:[2,3,5,7]

我想知道是否有更好的方法来实现elixir/erlang

elixir

6
推荐指数
1
解决办法
990
查看次数

erlang:now()在v18中已弃用,最佳转换是什么

MongoDB驱动程序的包中,我需要一个函数来生成唯一的文档ID.

此函数使用:erlang.now()v18中不推荐使用的函数

我寻求如何迁移的帮助,但没有成功.

我的实际代码(缩短):

defmodule MyModule_v17 do
  use Bitwise, only_operators: true
  def gen_trans_prefix do
    {gs, s, ms} = :erlang.now
    (gs * 1000000000000 + s * 1000000 + ms) &&& 281474976710655
  end
end
Run Code Online (Sandbox Code Playgroud)

最好的我提出来:

defmodule MyModule_v18 do
  use Bitwise, only_operators: true
  Kernel.if Keyword.get(:erlang.module_info, :exports) |> Enum.any?(fn({:system_time, 1}) -> true; (_) -> false end) do
    def gen_trans_prefix do
      :erlang.system_time(:micro_seconds) &&& 281474976710655
    end
  else
    def gen_trans_prefix do
      {gs, s, ms} = :erlang.now
      (gs * 1000000000000 + s * 1000000 …
Run Code Online (Sandbox Code Playgroud)

elixir

6
推荐指数
2
解决办法
2108
查看次数

什么是团队领导

我正在尝试配置,什么是组长以及它与I/O模块的关系,但在互联网上找不到任何有用的东西.有人可以解释一下吗?

我有elixir 1.2书(Dave Thomas)的以下场景:
在此输入图像描述

在第二个窗口,他为什么通过:erlang_group_leader?它有什么好处?

elixir

6
推荐指数
1
解决办法
1085
查看次数