• Еще один дайджест (теперь Go)

      image Привет всем фанатам и интересующимся Go. Это 6-й выпуск дайджеста ссылок и новостей о набирающем популярность языке. Не сочтите за наглую попытку пропиарить ресурс, на котором я регулярно публикую новости все о том же Go. Все последующие выпуски «тулзовин и хреновин» будут публиковаться именно на 4gophers.com. Кроме того, по просьбам трудящихся, теперь есть подписка на рассылку.

      Тема этого выпуска — GopherCon 2014. Это самая большая Go-конференция в этом году. Возможно, кто-то из читателей лично присутствовал и может рассказать о своих впечатлениях. Все найденные в сети доклады и материалы я стараюсь собрать в этом посте.

      Читать дальше →
      • +46
      • 17.6k
      • 6
    • Резервное копирование — виртуальные клоны против неконсистентных кентавров

        Клоны Геракла и кентавр Нессоили простой способ создания консистентныx резервныx копий без остановки сервера с помощью клонирования виртуальных машин

        Идеальный бэкап в вакууме


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

        Грубая реальность вносит коррективы: если при настройке копирования не предусмотреть множество мелочей, то при восстановлении может случиться так, что часть данных в бэкапе окажется повреждена непонятным образом. Легкое восстановление превратится в мучительные поиски кусочков в разных архивах и собирание из них одного целого. Уход в закат откладывается из-за нарушенной консистентности копии.

        Почему возникают неконсистентные копии, что в них плохого и как виртуализация решает проблему
      • Как Agile и Google календарь изменили мою жизнь

          Как менеджер проектов в своё время я попытался интегрировать различные Agile/SCRUM методики в свою повседневную жизнь. Ведь она тоже в каком то смысле является долгосрочным и довольно динамичным проектом.

          Неоднократно пробовал использовать популярные GTD инструменты, но в итоге именно Google календарь ввиду своей наглядности и привязке ко времени — оказался наиболее эффективным. Получается такой вот Self SCRUM Board с итерациями и планерками :)

          image
          Читать дальше →
        • Отказоустойчивый IP-адрес с помощью ucarp

            Задача


            Требуется обеспечить работоспособность определённого IP-адреса (шлюза, важного сервера и т.д.) при пропадании связи с устройством, которому этот адрес первоначально принадлежит, с помощью резервных устройств.

            В статье для этой цели будут использованы Debian Linux, протокол CARP и утилита ucarp.
            Читать дальше →
          • AzaThread — многопоточность для PHP с блэкджеком

              В сети гуляет довольно много решений для эмуляции многопоточности в php. Чаще всего они основываются на форках, но есть и вариации на тему с использованием curl, proc_open и т.п.

              Все встреченные варианты по тем или иным причинам меня не устроили и пришлось написать свое решение.
              Набор требований у меня был следующий:
              • Использование форков;
              • Синхронный режим с сохранением интерфейса при отсутствии необходимых расширений;
              • Многократное использование дочерних процессов;
              • Полноценный обмен данными между процессами. Т.е. запуск с аргументами и получение результата по завершении;
              • Возможность обмена событиями между дочерним процессом-«потоком» и основным процессом во время работы;
              • Работа с пулом потоков с сохранением многократного использования, передачи аргументов и получения результатов;
              • Обработка ошибок выполнения;
              • Таймауты на выполнение работы, ожидание работы потоком, инициализацию;
              • Максимум производительности;

              В результате получилась библиотека AzaThread (старое название — CThread).
              Подробности