Pull to refresh
14
úlfurinn@ulfurinn

User

2
Subscribers
Send message
Любое общение между процессами осуществляется через очередь сообщений. handle_call/cast/info — просто очень высокая надстройка над обыкновенным оператором "!", они все точно так же последовательно выхватываются из очереди. «Сразу два» просто-напросто не бывает :)
Другое дело, если проверка и изменение разнесены на два отдельных обращения к процессу. Тогда, конечно, кто-нибудь может вклиниться; но для этого надо соответствующим образом планировать интерфейс модуля.
Эти принципы прекрасно соблюдаются. Все модули, работающие со сложными структурами типа словарей и деревьев, не изменяют структуру, которую им дают на входе, а разбирают ее на куски и строят и возвращают совершенно новую.
Огг-контейнер для флака опционален.
Это та же подписка.
If you are an existing subscriber then your subscription will continue to be valid and nothing will change.
Когда-то читал про интересную систему — по периметру комнаты расставляется множество колонок, на которые подаются такие сигналы, которые в одних точках комнаты в сумме дают тот звук, который там нужен, а в других дают ноль. Все в выигрыше — и у каждого своя музыка, и никому не надо в наушниках сидеть.
Тогда между угловыми скобками были бы всякие страшные числа, как в примере в статье. Сравните с fun(F, L) -> lists:map(F, L) end.
Обычные функции можно тоже получить в виде хранимого значения, не только анонимные:

> F = fun lists:map/2.
#Fun<lists.map.2>
Как мне сейчас представляется, да.
Взгляните на Nemerle, порадуетесь.
Стек, да. Так лучше? :)

let fact n =
  let rec fact_helper n a =
    if n = 1 then a
    else fact_helper (n-1) (a*n)
  in fact_helper n 1 ;;
Не, ну кто спорит-то.

У меня сейчас только одна хоть сколько-нибудь жизнеспособная гипотеза — что кто-то по ошибке или незнанию прибил процесс. Случаи самопроизвольной смерти epmd, когда никто ничего не трогает, насколько я могу судить, еще не были зафиксированы.

(Мы сами к той системе, кстати, имеем только достаточно ограниченный удаленный доступ и знаем только то, что нам говорят и что видно по логам. Тут с расследованием не особо развернешься.)
Можно, но не нужно. SequoiaView старая и заброшенная, WinDirStat заменяет ее чуть более, чем полностью.
А горячее обновление версий вы у себя делали? Чтобы по всем правилам OTP :)
Придерживаюсь терминологии Эрланга: там они называются нодами.

Вот прямо так по-русски и называются нодами? ;)
Слово «node» вообще-то именно как «узел» и переводится.
Может, таки перенести цикл в блог Ruby?
Кстати, я сейчас тоже готовлю серию статей по Erlang'у, впринципе можно будет скооперироваться

Ну-ка, ну-ка :)
Еще по синтаксису исключений.
Если нужно обернуть весь метод целиком, begin можно отбросить — получаем
def f
...
rescue
...
end


То же самое относится и к классам: если нужно ловить исключения, например, из этой вашей метапрограммерской магии, можно написать
class C
...
rescue
...
end


Еще есть вот такой полезный список тонкостей работы raise/rescue/ensure/else: www.davidflanagan.com/2007/03/ruby-exceptionhandling-quiz.html
Можно воспользоваться тем, что каждая тройка RDF сама по себе может быть представлена как объект rdf:Statement со свойствами rdf:subject, rdf:object и rdf:predicate; но тогда, при наивном хранении, в три раза возрастает объем представления одной и той же информации, т.к. каждую тройку надо держать в расписанном виде. Если движок дает возможность хранить мета-факты в более компактном виде (ссылкой на ID тройки в таблице или еще как-нибудь), то вполне даже вариант.

Information

Rating
Does not participate
Location
Vällingby, Stockholms Län, Швеция
Date of birth
Registered
Activity