пятница, 29 февраля 2008 г.

Erlang networking

После удачной установки и настройки системы (в прочем оно само :), пробежался по всем примерам в Getting Started With Erlang и все отрабатывало как часы. До тех пор пока не попытался выполнить первый сетевой туторал под номером tut18. Сразу ничего не заработало, но после некоторого разбирательства всплыли сразу же две неприятных проблемы:

1. сетевая адресация работает через dns и\или netbios и если ни одна из них не дает правильных результатов можете забыть по короткую схему имен (short names).

когда же это вопрос разрешился появилась другая:

2. оказывается исходный код erlang не передает по сети и необходимо самостоятельно поддерживать свежие версии исходного кода на всех машинах.

Обе эти не доработки мне кажутся вполне исправимыми и заслуживающими внимания.

Во-первых сетевая адресация совершенно не должна зависеть от сервисов представляемых хостами. К примеру я использовал три машины Windows Vista/Fedora 8/OS X Leopard и само собой никто из них не захотел говорить на уровне NetBios сообща. К тому-же мой ADSL модем, который занимается динамической выдачей адресов и предоставлением интернета, ни в какую не хочет предоставлять нормальный DNS сервер с динамическими именами, потому все мои домашние машины знают себя по DHCP кешу, адреса которых исправно пролонгируют. В результате моя сеть лишена службы имен, а erlang даже не пытается ее реализовать в примитивном исполнении на broadcast пакетах.

Во-вторых само по себе это не является серьезной проблемой, однако. Если обратится к документации то там много сказано про сетевую модель исполняемой среды. И можно прочитать даже про то, как синтаксис языка влияет на механизм обработки исполняемых файлов и исходных файлов. Если быть более точно то используя модуль:имя функции нотацию, можно получить на запуск последнюю версию кода, в противном случае работать со старой версией исполняемого файла на памяти, который может отличаться от исходного. Кроме того в документации так же сказано про сетевую прозрачность и свободный запуск приложений из одного нода на другом ноде. Исходя из этих утверждений можно сделать вывод что среда гибкая и прозрачная, в том числе и для сети. В таком случае почему запуская последнюю версию модуля на одном хосте я не могу получить исполнение того же модуля последней версии на другом используя штатные средства среды?

0 коммент.:

Отправить комментарий