Вопрос
Я играю с руководством по распределенному программированию из раздела 5.4. документация, и возникли проблемы с именами узлов.
Имя по умолчанию для моего MacBook ( jamess-macbook
) не совсем подходит для схемы именования узлов Erlang из-за тире:
(salt@jamess-macbook)4> {my_process, pepper@jamess-macbook} ! start
** exception error: bad argument in an arithmetic expression
in operator -/2
called as pepper@jamess - macbook
Я уверен, что есть простой способ обойти это, за исключением переименования всех машин, на которых я хочу запустить Erlang, но я не вижу этого в документации.
Есть предложения?
Решение
Вам просто нужно правильно процитировать атом. 'pepper @ jamess-macbook'
(с одинарными кавычками) - это имя узла. Р>
Атом должен быть заключен в один кавычки ('), если он не начинается с строчная буква или если она содержит другие символы, кроме буквенно-цифровых символы подчеркивания (_) или @. - Справочное руководство Erlang
Использование коротких имен узлов ( -sname
) имеет ряд других последствий (ограниченная совместимость с узлами с длинными именами узлов, не загружает информацию dns в inet_db и т. д.).
Другие советы
Запустите интерпретатор Erlang с помощью:
$ erl -sname node_name
где имя_узла
- это имя, которое вы хотите использовать для ссылки на компьютер.
Вы даже можете смоделировать распределенную систему на одном компьютере, запустив несколько экземпляров интерпретатора, каждый из которых имеет свое имя узла.