Прощай GitLab

Год назад я решил попробовать в работе GitLab под Ubuntu, на первый взгляд идея показалась весьма здравой, ведь «всё из коробки». Но после года использования я понял, что GitLab слишком дорогое решение.

Читать далее

Аттракцион материал дизайна

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

Я собрал и мельком посмотрел список фреймворков, позволяющих построить интерфейс моего нового веб приложения.

Читать далее

Flask: Кеширование страниц

Во многих веб-приложениях с большим количеством данных главная  страница может является предметом большой нагрузки на базу дданных. Например, если это новостной сайт, где в SQL могут совершаться группировки в запросе или JOIN’ы.

Для того, чтобы не загружать сервер постоянными запросами к БД и ускорить загрузку на сторону клиента стоит использовать средства кеширования, для Flask я использую Flask-Cache.

Читать далее

Hadoop: Ресурсы для изучения

Книги по компонентам инфраструктуры Hadoop:

  • Hadoop: The Definitive Guide (Hadoop. Подробное руководство). Tom White. O’Reilly Media; 4rd Edition
  • MapReduce Design Patterns. Donald Miner, Adam Shook. O’Reilly Media
  • HBase: The Definitive Guide. Lars George. O’Reilly Media; 1 edition
  • Data-Intensive Text Processing with MapReduce. Jimmy Lin and Chris Dyer (April, 2010)
  • Programming Pig. Alan Gates. O’Reilly Media; 1st Edition
  • Programming Hive. Edward Capriolo, Dean Wampler, Jason Rutherglen. O’Reilly Media; 1 edition

Flask Multistatic

Процесс развёртывания проектов происходит только из пакетов из приватного сервера pypi. Практика развёртывания проекта из git-репозитория для меня не очень приемлема, т.к в это привносит в работу с кодом элементы сюрприза.

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

Читать далее

SWOT всему голова

Часто, при обсуждении с разработчиками или системными администраторами вопроса применения тех или иных технологий или библиотек можно услышать такие аргументации выбора, например, «это использует Google/Facebook/Amazon» или «у нас на прошлой работе так делали». Ещё есть третий частый аргумент связанный с количеством вакансий на HH, но данная заметка не про это.

Отталкиваясь от того, что определённый продукт использует крупная корпорация, разработчик упускает тот факт, что у корпорации потребности другие, объёмы всего не сравнимо высоки. И если Google за вложенные средства в продукт сократят выполнение задачи на серверах на одну секунду, то у этой компании получается очень большая цифра, если учесть тот факт, что у этой компании давным давно уже более одного миллиона серверов. В общем, это напоминает Карго-культ.

Так же, как и аргумент с крупной корпорацией, аргумент с использованием решения в прошлом проекте так же может быть не релевантен в текущем проекте.

В каждом новом проекте стоит «сверять часы».

Привет SWOT!

SWOT-анализ

SWOT-анализ — метод стратегического планирования, заключающийся в выявлении факторов внутренней и внешней среды организации и разделении их на четыре категории:

  • Strengths (сильные стороны),
  • Weaknesses (слабые стороны),
  • Opportunities (возможности),
  • Threats (угрозы).

Внедряя в коммерческий проект что-либо стороннее список из «Плюсы» и «Минусы» уже не будет актуален, как минимум появляются «Угрозы»:

  • Нестабильное сообщество
  • Лицензии
  • Нехватка кадров

Рассматривая решения таким способом, необходимо в первую очередь выработать собственные требования или описать текущее техническое окружение, собрать как можно подробную картину о рассматриваемых решениях, не только то, что заявлено, но и то какие рассматриваемый продукт имеет недостатки при эксплуатации и как они могут повлиять после внедрения.

Итого

Основная идея данного анализа заключается в том, чтобы как можно больше узнать о существующих решениях и как можно больше узнать об этих решениях и систематизировать собранные данные. Это позволит избежать принятие неправильных решений в проекте и поможет в разработке стратегии развития проекта.

Ссылки по теме

 

Обновление сервиса CloudNS.ru

Потихоньку, не спеша обновил DNS-хостинг, главным задачами выпуска были исправление ошибок и реализация запросов трудящихся.

Таким образом:

  • Для master зон добавлено указание slave серверов
  • Master может быть добавлен с геотаргетингом
  • Возможность добавления в качестве Slave зоны
  • Немного обновлено API
  • DNS сервера разделены на два типа:
    • обычный (ns1.cloudns.ru, ns2.cloudns.ru) — для master и slave зон
    • с геотаргетингом (gns1.cloudns.ru, gns2.cloudns.ru) — только для master зон с гео таргетингом
screenshot-from-2016-12-04-09-09-17
Форма добаления новой зоны DNS

Читать далее

Использование JWT при реализации API

JSON Web Token (JWT) — если в краце, это способ передачи данных между участниками. Сам токен состоит из трёх частей и разделён точками. Например:

eyJhbGIkpXVCJ9.eyJzdWIiV9.TJVA95oYZgeFONFh7HgQ

В первой и второй части методом base64 зашифрованы тип шифрования {«alg»: «HS256», «typ»: «JWT»} и полезные данные {«sub»: «1234567890», «name»: «John Doe», «admin»: true}

Третья часть содержит зашифрованную версию данных, что позволяет произвести валидацию при передаче.

Подробное описание стандарта JWT можно прочитать в RFC7519 — https://tools.ietf.org/html/rfc7519

JWT Читать далее

Ошибка в VMBuilder при создании KVM машины

При создании KVM сервера следующей командой:

$ sudo vmbuilder kvm ubuntu --suite xenial --flavour virtual --arch x86_64 -o --libvirt qemu:///system --ip 192.168.1.80 --hostname superserver48 --bridge br0

Виртуальный сервер не создаётся, команда прерывалась с сообщением об ошибке:

Errors were encountered while processing:
sudo
Extracting templates from packages: 100%
W: --force-yes is deprecated, use one of the options starting with --allow instead.
E: Sub-process /usr/bin/dpkg returned an error code (1)

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

В ближайшее время я попытаюсь описать данную ошибку, в багтрекере библиотеки https://bugs.launchpad.net/vmbuilder. Читать далее