<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <language>ru</language>
    <title>functional</title>
    <link>http://hlabs.org/tags/functional</link>
    <description></description>
    <copyright>Copyright (C) 2001-2013 Dmitry Vasiliev</copyright>
    <webMaster>dima@hlabs.org (Dmitry Vasiliev)</webMaster>
    <lastBuildDate>Mon, 06 Feb 2012 23:16:00 +0300</lastBuildDate>
    <item>
      <title>Спасаем данные из ets таблиц</title>
      <link>http://hlabs.org/news/rescue_ets_data.html</link>
      <description>
        <p>На днях прочитал отличную статью от <a class="reference" href="http://steve.vinoski.net/blog/">Steve Vinoski</a> - <a class="reference" href="http://steve.vinoski.net/blog/2011/03/23/dont-lose-your-ets-tables/">Don’t Lose Your ets Tables</a>. Давно задумывался над этой проблемой - если процесс использует <a class="reference" href="http://www.erlang.org/doc/man/ets.html">ets</a> таблицы для хранения данных и перезапускается супервизором после неожиданного завершения, то все данные в таблицах будут потеряны. Во многих случаях данные могут накапливаться за время жизни процесса и не могут быть просто пересозданы даже перезапуском всех процессов. Steve предлагает воспользоваться возможностью указания <a class="reference" href="http://www.erlang.org/doc/man/ets.html#new-2">наследника (heir)</a> для таблицы и возможностью передавать таблицу другому процессу с помощью функции <a class="reference" href="http://www.erlang.org/doc/man/ets.html#give_away-3">ets:give_away</a>.</p>
<p>Вчера решил более плотно заняться этой проблемой и реализовать <a class="reference" href="http://www.erlang.org/doc/man/gen_server.html">gen_server</a> модуль <tt class="docutils literal"><span class="pre">ets_manager</span></tt>, который делает следующее:</p>
<ul class="simple">
<li>При создании через него таблицы, <tt class="docutils literal"><span class="pre">ets_manager</span></tt> указывает свой рабочий процесс в качестве наследника;</li>
<li>При закрытии процесса работающего с таблицей рабочий процесс <tt class="docutils literal"><span class="pre">ets_manager</span></tt> получает и сохраняет таблицу у себя;</li>
<li>Пересозданный супервизором процесс забирает таблицу с данными у рабочего процесса <tt class="docutils literal"><span class="pre">ets_manager</span></tt>;</li>
</ul>

        <ul>
          <li><a href="http://hlabs.org/news/rescue_ets_data.html">Full text...</a></li>
          <li><a href="http://hlabs.org/news/rescue_ets_data.html#comments">Comments</a></li>
        </ul>
      </description>
      <author>Dmitry Vasiliev</author>
      <comments>http://hlabs.org/news/rescue_ets_data.html#comments</comments>
      <pubDate>Sat, 26 Mar 2011 14:28:00 +0300</pubDate>
      <guid>http://hlabs.org/news/rescue_ets_data.html</guid>
    </item>
    <item>
      <title>erlport 0.6</title>
      <link>http://hlabs.org/news/erlport_0.6.html</link>
      <description>
        <p>Новая версия <a class="reference" href="http://pypi.python.org/pypi/erlport/">erlport</a> - библиотеки для <a class="reference" href="http://python.org/">Python</a> позволяющей упростить взаимодействие с <a class="reference" href="http://erlang.org/">Erlang</a>.</p>
<p>Изменения в версии 0.6:</p>
<ul class="simple">
<li>Добавлено кодирование для <a class="reference" href="http://docs.python.org/library/datetime.html#datetime-objects">datetime</a> (<a class="reference" href="http://github.com/mmikulicic">mmikulicic</a>);</li>
<li>Исправлена ошибка при декодировании &quot;больших&quot; целых (<a class="reference" href="http://github.com/pib">Paul Bonser</a>);</li>
</ul>
<p>Ссылки проекта:</p>
<ul class="simple">
<li><a class="reference" href="http://pypi.python.org/pypi/erlport">http://pypi.python.org/pypi/erlport</a></li>
<li><a class="reference" href="http://github.com/hdima/erlport">http://github.com/hdima/erlport</a></li>
</ul>

        <ul>
          
          <li><a href="http://hlabs.org/news/erlport_0.6.html#comments">Comments</a></li>
        </ul>
      </description>
      <author>Dmitry Vasiliev</author>
      <comments>http://hlabs.org/news/erlport_0.6.html#comments</comments>
      <pubDate>Mon, 26 Apr 2010 17:44:00 +0400</pubDate>
      <guid>http://hlabs.org/news/erlport_0.6.html</guid>
    </item>
    <item>
      <title>Релиз erlport 0.5</title>
      <link>http://hlabs.org/news/erlport_0.5.html</link>
      <description>
        <p>Выпустил новую версию <a class="reference" href="http://pypi.python.org/pypi/erlport/">erlport</a> - библиотеки для <a class="reference" href="http://python.org/">Python</a> позволяющей упростить взаимодействие с <a class="reference" href="http://erlang.org/">Erlang</a>.</p>
<p>Изменения в версии 0.5:</p>
<ul class="simple">
<li>Оптимизировано кодирование/декодирование больших целых (<a class="reference" href="http://bob.pythonmac.org/">Bob Ippolito</a>);</li>
<li>Оптимизации кодирования данных (<a class="reference" href="http://bob.pythonmac.org/">Bob Ippolito</a>);</li>
<li>Добавлена поддержка кодирования/декодирования сжатых данных (<a class="reference" href="http://bob.pythonmac.org/">Bob Ippolito</a>);</li>
<li>Добавлена поддержка кодирования/декодирования <a class="reference" href="http://docs.python.org/reference/datamodel.html#the-standard-type-hierarchy">dict</a> как <a class="reference" href="http://erlang.org/doc/man/proplists.html">proplist</a> (<a class="reference" href="http://bob.pythonmac.org/">Bob Ippolito</a>);</li>
<li>Добавлена поддержка кодирования/декодирования True, False как атомов true, false (<a class="reference" href="http://bob.pythonmac.org/">Bob Ippolito</a>);</li>
<li>Добавлена поддержка кодирования/декодирования None как атома none;</li>
<li>Добавлен пример использования сжатых данных;</li>
</ul>
<p>Ссылки проекта:</p>
<ul class="simple">
<li><a class="reference" href="http://pypi.python.org/pypi/erlport">http://pypi.python.org/pypi/erlport</a></li>
<li><a class="reference" href="http://github.com/hdima/erlport">http://github.com/hdima/erlport</a></li>
</ul>

        <ul>
          
          <li><a href="http://hlabs.org/news/erlport_0.5.html#comments">Comments</a></li>
        </ul>
      </description>
      <author>Dmitry Vasiliev</author>
      <comments>http://hlabs.org/news/erlport_0.5.html#comments</comments>
      <pubDate>Thu, 25 Feb 2010 21:01:00 +0300</pubDate>
      <guid>http://hlabs.org/news/erlport_0.5.html</guid>
    </item>
    <item>
      <title>Как я файлы между узлами Erlang пересылал</title>
      <link>http://hlabs.org/news/erlang_remote_file_copying.html</link>
      <description>
        <p>Не так давно передо мной встала задача программно разархивировать на одном из
узлов <a class="reference" href="http://hlabs.org/development/erlang">Erlang</a> <tt class="docutils literal"><span class="pre">tar.gz</span></tt> архив, который
находился на другом узле. Ниже приводится подробный ход мыслей в направлении
решения и решение к которому эти мысли привели.</p>
<p>Воспитанный на совсем других языках, изначально я смекнул следующее - <tt class="docutils literal"><span class="pre">Erlang</span></tt> у
нас &quot;из коробки&quot; поддерживает передачу сообщений, соответственно нужно на узле
с архивом открыть его как файл, потихоньку читать и сообщениями каждый кусочек
пересылать на второй узел. На втором узле нужно все это дело потихоньку записывать
в новый файл, который по окончании пересылки остается только разархивировать.</p>

        <ul>
          <li><a href="http://hlabs.org/news/erlang_remote_file_copying.html">Full text...</a></li>
          <li><a href="http://hlabs.org/news/erlang_remote_file_copying.html#comments">Comments</a></li>
        </ul>
      </description>
      <author>Dmitry Vasiliev</author>
      <comments>http://hlabs.org/news/erlang_remote_file_copying.html#comments</comments>
      <pubDate>Tue, 19 Jan 2010 22:43:00 +0300</pubDate>
      <guid>http://hlabs.org/news/erlang_remote_file_copying.html</guid>
    </item>
    <item>
      <title>Статья про использование портов в Erlang и новая версия erlport</title>
      <link>http://hlabs.org/news/erlang_ports_article.html</link>
      <description>
        <p>Написал новую статью про <a class="reference" href="http://hlabs.org/development/erlang/ports.html">использование портов Erlang</a>. Кроме этого выпустил версию 0.4 <a class="reference" href="http://pypi.python.org/pypi/erlport/">erlport</a> - библиотеки для <a class="reference" href="http://hlabs.org/development/python">Python</a> упрощающей взаимодействие между <a class="reference" href="http://hlabs.org/development/erlang">Erlang</a> и Python с использованием <a class="reference" href="http://hlabs.org/development/erlang/ports.html">портов Erlang</a>.</p>

        <ul>
          
          <li><a href="http://hlabs.org/news/erlang_ports_article.html#comments">Comments</a></li>
        </ul>
      </description>
      <author>Dmitry Vasiliev</author>
      <comments>http://hlabs.org/news/erlang_ports_article.html#comments</comments>
      <pubDate>Sun, 10 Jan 2010 20:43:00 +0300</pubDate>
      <guid>http://hlabs.org/news/erlang_ports_article.html</guid>
    </item>
    <item>
      <title>Работа с внешними приложениями через порты Erlang</title>
      <link>http://hlabs.org/development/erlang/ports.html</link>
      <description>
        <p>Один из наиболее простых способов работы с внешними приложениями в <a class="reference" href="/development/erlang">Erlang</a> - это использование портов.
Упрощенно работу порта с внешними приложениями можно рассматривать следующим
образом: внешнее приложение запускается в отдельном процессе операционной
системы, параллельно виртуальной машине Erlang, и общение с ним происходит
через 2 канала (pipes) для ввода и вывода.</p>

        <ul>
          <li><a href="http://hlabs.org/development/erlang/ports.html">Full text...</a></li>
          
        </ul>
      </description>
      <author>Dmitry Vasiliev</author>
      
      <pubDate>Sun, 10 Jan 2010 20:11:00 +0300</pubDate>
      <guid>http://hlabs.org/development/erlang/ports.html</guid>
    </item>
    <item>
      <title>Продолжаем знакомится с Erlang - новая статья</title>
      <link>http://hlabs.org/news/second_erlang_article.html</link>
      <description>
        <p>Добавлена <a class="reference" href="http://hlabs.org/development/erlang/sequential_programming.html">новая статья по Erlang</a>, продолжающая <a class="reference" href="http://hlabs.org/development/erlang/about.html">первую вводную статью</a> и описывающая последовательное программирование. Изначально статья была написана для журнала <a class="reference" href="http://www.samag.ru/">Системный Администратор</a>.</p>

        <ul>
          
          <li><a href="http://hlabs.org/news/second_erlang_article.html#comments">Comments</a></li>
        </ul>
      </description>
      <author>Dmitry Vasiliev</author>
      <comments>http://hlabs.org/news/second_erlang_article.html#comments</comments>
      <pubDate>Wed, 25 Nov 2009 22:34:00 +0300</pubDate>
      <guid>http://hlabs.org/news/second_erlang_article.html</guid>
    </item>
    <item>
      <title>Пишем первые модули на Erlang</title>
      <link>http://hlabs.org/development/erlang/sequential_programming.html</link>
      <description>
        <p><em>Впервые было опубликовано в журнале</em> <a class="reference" href="http://www.samag.ru">&quot;Системный администратор&quot;</a>
#9 за 2009 год</p>
<p><em>Продолжаем изучать язык программирования Erlang.</em></p>
<p>В статье <a class="reference" href="/development/erlang/about.html">&quot;Знакомьтесь, Erlang&quot;</a> были рассмотрены особенности
языка, основные типы данных, переменные и сравнение с шаблонами. В этой статье
мы продолжим изучение Erlang и начнем писать программы, которые выполняются
последовательно.</p>

        <ul>
          <li><a href="http://hlabs.org/development/erlang/sequential_programming.html">Full text...</a></li>
          
        </ul>
      </description>
      <author>Dmitry Vasiliev</author>
      
      <pubDate>Wed, 25 Nov 2009 22:21:00 +0300</pubDate>
      <guid>http://hlabs.org/development/erlang/sequential_programming.html</guid>
    </item>
    <item>
      <title>Первая статья про Erlang</title>
      <link>http://hlabs.org/news/first_erlang_article.html</link>
      <description>
        <p>Последнее время не получается много писать на сайте, больше пишется в <a class="reference" href="http://twitter.com/hdima">Twitter</a>, но буду стараться потихоньку писать и здесь.</p>
<p>Пока добавляю статью, которую я писал для журнала <a class="reference" href="http://www.samag.ru/">Системный Администратор</a> - <a class="reference" href="http://hlabs.org/development/erlang/about.html">Знакомьтесь, Erlang</a>. Статья кратко описывает особенности языка, основные конструкции и является первой статьей из небольшой серии про <a class="reference" href="http://erlang.org/">Erlang</a>.</p>

        <ul>
          
          <li><a href="http://hlabs.org/news/first_erlang_article.html#comments">Comments</a></li>
        </ul>
      </description>
      <author>Dmitry Vasiliev</author>
      <comments>http://hlabs.org/news/first_erlang_article.html#comments</comments>
      <pubDate>Thu, 22 Oct 2009 13:53:00 +0400</pubDate>
      <guid>http://hlabs.org/news/first_erlang_article.html</guid>
    </item>
    <item>
      <title>Знакомьтесь, Erlang</title>
      <link>http://hlabs.org/development/erlang/about.html</link>
      <description>
        <p><em>Впервые было опубликовано в журнале</em> <a class="reference" href="http://www.samag.ru">&quot;Системный администратор&quot;</a>
#8 за 2009 год</p>
<p><em>Язык программирования Erlang, первое знакомство.</em></p>
<p>В 1981 году шведская компания Ericsson запустила исследовательский проект,
целью которого был поиск лучших способов программирования телекоммуникационных
приложений. Основными требованиями была необходимость обеспечить быструю
разработку высоконадежных приложений, работающих в течение долгого времени и
поддерживающих параллельную обработку. В течение последующих 5 лет в рамках
проекта было опробовано достаточно большое количество языков программирования,
но не один не удовлетворял предъявляемым требованиям полностью. Было решено
разрабатывать новый язык и в 1986-ом году была представлена первая версия языка
программирования Erlang. До 1998-го года язык и сопутствующие библиотеки
развивались внутри Ericsson, но в 1998-ом Erlang был выпущен как проект с
открытым исходным кодом.</p>

        <ul>
          <li><a href="http://hlabs.org/development/erlang/about.html">Full text...</a></li>
          
        </ul>
      </description>
      <author>Dmitry Vasiliev</author>
      
      <pubDate>Thu, 22 Oct 2009 12:56:00 +0400</pubDate>
      <guid>http://hlabs.org/development/erlang/about.html</guid>
    </item>
  </channel>
</rss>
