На днях прочитал отличную статью от Steve Vinoski - Don’t Lose Your ets Tables. Давно задумывался над этой проблемой - если процесс использует ets таблицы для хранения данных и перезапускается супервизором после неожиданного завершения, то все данные в таблицах будут потеряны. Во многих случаях данные могут накапливаться за время жизни процесса и не могут быть просто пересозданы даже перезапуском всех процессов. Steve предлагает воспользоваться возможностью указания наследника (heir) для таблицы и возможностью передавать таблицу другому процессу с помощью функции ets:give_away.
Вчера решил более плотно заняться этой проблемой и реализовать gen_server модуль ets_manager, который делает следующее:
- При создании через него таблицы, ets_manager указывает свой рабочий процесс в качестве наследника;
- При закрытии процесса работающего с таблицей рабочий процесс ets_manager получает и сохраняет таблицу у себя;
- Пересозданный супервизором процесс забирает таблицу с данными у рабочего процесса ets_manager;
Новая версия подсветки Python 3.0 для Vim версии 3.0.6. Внимание: Только для Python 3.0! Изменения:
- Исправлена подсветка для микро-формата str.format() (патч от Anton Butanaev);
Скачать можно здесь:
- http://hlabs.org/vim/highlighting.html#python - скрипты подсветки синтаксиса на HIGH Labs;
- http://www.vim.org/scripts/script.php?script_id=790 - все версии python.vim на Vim.org;
Новая версия подсветки Python 3.0 для Vim версии 3.0.5. Внимание: Только для Python 3.0! Изменения:
- Исправлена подсветка символов экранирования для байт-строк (патч от Anton Butanaev);
- Исправлена подсветка для ошибочных символов в числах;
Скачать можно здесь:
- http://hlabs.org/vim/highlighting.html#python - скрипты подсветки синтаксиса на HIGH Labs;
- http://www.vim.org/scripts/script.php?script_id=790 - все версии python.vim на Vim.org;
Новая версия подсветки Python 3.0 для Vim версии 3.0.4. Внимание: Только для Python 3.0! Изменения:
- Приложен патч от Anton Butanaev исправляющий подсветку для raw bytes литералов;
Скачать можно здесь:
- http://hlabs.org/vim/highlighting.html#python - скрипты подсветки синтаксиса на HIGH Labs;
- http://www.vim.org/scripts/script.php?script_id=790 - все версии python.vim на Vim.org;
Новая версия erlport - библиотеки для Python позволяющей упростить взаимодействие с Erlang.
Изменения в версии 0.6:
- Добавлено кодирование для datetime (mmikulicic);
- Исправлена ошибка при декодировании "больших" целых (Paul Bonser);
Ссылки проекта:
Обновил плагины для Mozilla Firefox:
- VideoSniffer до версии 0.5;
- LinkExtractor до версии 0.20;
Изменения одинаковые:
- Добавлена поддержка Firefox 3.6;
- Добавлена Русская локализация;
Новые версии подсветки Python для Vim - версии 2.6.6 и 3.0.3. Изменения:
- Приложен патч от Andrea Riciputi с двумя новыми опциями конфигурации "python_highlight_builtin_objs" и "python_highlight_builtin_funcs";
Скачать можно здесь:
- http://hlabs.org/vim/highlighting.html#python - скрипты подсветки синтаксиса на HIGH Labs;
- http://www.vim.org/scripts/script.php?script_id=790 - все версии python.vim на Vim.org;
Выпустил новую версию erlport - библиотеки для Python позволяющей упростить взаимодействие с Erlang.
Изменения в версии 0.5:
- Оптимизировано кодирование/декодирование больших целых (Bob Ippolito);
- Оптимизации кодирования данных (Bob Ippolito);
- Добавлена поддержка кодирования/декодирования сжатых данных (Bob Ippolito);
- Добавлена поддержка кодирования/декодирования dict как proplist (Bob Ippolito);
- Добавлена поддержка кодирования/декодирования True, False как атомов true, false (Bob Ippolito);
- Добавлена поддержка кодирования/декодирования None как атома none;
- Добавлен пример использования сжатых данных;
Ссылки проекта:
Не так давно передо мной встала задача программно разархивировать на одном из узлов Erlang tar.gz архив, который находился на другом узле. Ниже приводится подробный ход мыслей в направлении решения и решение к которому эти мысли привели.
Воспитанный на совсем других языках, изначально я смекнул следующее - Erlang у нас "из коробки" поддерживает передачу сообщений, соответственно нужно на узле с архивом открыть его как файл, потихоньку читать и сообщениями каждый кусочек пересылать на второй узел. На втором узле нужно все это дело потихоньку записывать в новый файл, который по окончании пересылки остается только разархивировать.
Написал новую статью про использование портов Erlang. Кроме этого выпустил версию 0.4 erlport - библиотеки для Python упрощающей взаимодействие между Erlang и Python с использованием портов Erlang.