Как стать автором
Обновить
18
0

Разработчик

Отправить сообщение

Работаем с PostgreSQL в Go. Опыт Авито

Время на прочтение8 мин
Количество просмотров27K

Привет! Меня зовут Дима Вагин, я бэкенд-инженер в Авито. Сегодня расскажу, как мы работаем с БД PostgreSQL из Go. Покажу, какие библиотеки и пулеры соединений мы используем для доставки в код параметров подключения и как мы их настраиваем. А ещё расскажу про проблемы, к которым приводит отмена контекста, и о том, как мы с ними справляемся.

Читать далее
Всего голосов 24: ↑22 и ↓2+25
Комментарии19

Actions: как в GitHub, но в GitLab

Время на прочтение20 мин
Количество просмотров16K

Привет! Меня зовут Артемий Окулов, я lead центра компетенций CI/CD в X5 Group.

То, чем мы с командой занимаемся, можно отнести к области под названием Developer Experience. В какой-то момент ИТ в компании достигает такой зрелости, что появляются tools team, enabling team и инициативы, направленные на повышение developer experience. Одной из таких инициатив мы и занимаемся. Если вкратце, мы хотим упростить старт новых продуктов в компании за счет предоставления шаблонов.

В X5 Group много web-сервисов, и с переходом на продуктовый подход виден рост количества команд, которые все чаще прибегают к их созданию. Конечно, каждая команда должна быть кросс-функциональной, чтобы успех реализации продукта зависел в большей степени от самой команды. Но часто мы сталкиваемся с тем, что найти инженера с ролью devops в команду — это задача нескольких месяцев. А терять столько времени на старте — непозволительная роскошь. Поэтому в компании ведутся работы по созданию “стартовых наборов”, решающих задачу минимум — быстрого старта разработки и создания dev-окружения силами самих разработчиков.

В поставку такого “стартового набора” входит и CI/CD pipeline. В этой статье, в частности, мы бы хотели поделиться подходом шаблонизации GitLab Pipelines, который мы стараемся продвигать у себя в компании, и рассказать про инструмент, который для этого разработали.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии27

Cборка динамических модулей для Nginx

Время на прочтение8 мин
Количество просмотров15K

image


Недавно мы собирали динамический модуль для Nginx, а когда всё было уже готово, то выяснилось, что наш модуль оказался не совместимым с Nginx, который уже был установлен на сервере. Готового решения возникшей проблемы нам найти не удалось и мы начали бороться с ней самостоятельно. Мы потратили много времени, но получили новый опыт и, самое главное, работающее решение. Которым и хотелось бы поделиться.


Начнём с описания процесса сборки динамического модуля на примере https://github.com/vozlt/nginx-module-vts. А затем покажем какая возникает ошибка и что с ней делать.

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии5

Балансировка трафика между Web-серверами при помощи IP CEF на сетевом оборудовании

Время на прочтение3 мин
Количество просмотров6.8K
Была поставлена задача о реализации отказоустойчивого решения для двух веб-серверов и, при возможности, реализация распределения нагрузки между веб-серверами, так как иногда одна база данных не справлялась со всеми запросами. Покупать специальное оборудование не было возможности, в связи с чем была придумана следующая схема. Возможно, идея неоригинальная, но в интернете ничего подобного не нашел. Топология у нас такая:

My Image
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии32

Трансляция h264 видео без перекодирования с камеры Logitech C920

Время на прочтение12 мин
Количество просмотров24K


Задержка составила не более 0.3 секунды, с учетом того что камера подключена к слабому BeagleBone Blue с загрузкой процессора не более 30% и передачей потока видео через wifi роутер на ноутбук.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии20

По каким правилам летит самолёт в России

Время на прочтение10 мин
Количество просмотров80K
Чаще всего самолёты летают не абы как, а по определённым, уже созданным маршрутам.


Например, наводятся на радиовышки. Это ориентиры в пространстве. Когда диспетчер говорит воздушному судну, как лететь, он называет определённую вышку, радиостанцию. Там у него поворотная точка. Пилоту так и говорят: «От этой теперь лети к следующей». В итоге самолёт летит ломаной загогулиной — от одного поворотного пункта к другому.

Сделано это для того, чтобы не было сомнений в координатах на разных самолётах с разными приборами.

Современное самолётное оборудование позволяет вместо этой сложной ломаной линии лететь напрямую. То есть диспетчер говорит: «Лети сюда, поворотная точка такая». Не у всех есть настолько современное навигационное оборудование, поэтому радиовышки будут ещё долго использоваться.

Но давайте разбираться дальше, как вообще устроено воздушное пространство, кому и куда можно.
Читать дальше →
Всего голосов 101: ↑101 и ↓0+101
Комментарии119

Угон Телеграм на волнах паники

Время на прочтение4 мин
Количество просмотров28K
Сегодня очень неоднозначно развивается ситуация вокруг совместного решения Федеральной службы безопасности Российской федерации и Роскомнадзора о блокировке мессенджера «Телеграм». Данное решение опрометчиво по целому ряду причин, и несет в себе больше проблем, чем пользы в борьбе с угрозой терроризма.

Для зрелого бизнеса который учитывал риски связанные с решениями правительства, это создало некоторое неудобство, так как пришлось использовать обходные решения с использованием VPN. Но для рядовых пользователей которые небыли готовы к такому повороту событий это принесло новые угрозы. В панике пользователи стали искать и использовать первые попавшиеся бесплатные VPN, абсолютно не задумываясь что это может обернуться для них западней в виде DNS пушапов, и прочих MITM атак.

Телеграм имеет самую большую аудиторию, и этот факт ИТ бизнес не смог обойти стороной. Компании в свою очередь инвестировали огромный капитал в разработку бизнес инструментов использующих API данного мессенджера. Даже ряд государственных проектов вкладывал деньги в разработку ботов технической поддержки, ярким примером которого является портал Госуслуги(ЕПГУ).

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

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

В состав нашего рецепта вошли следующие основные компоненты:

  • Telegram Desktop 1.2.17 (linux)
  • Docker version 17.05.0-ce
  • noVNC
Читать дальше →
Всего голосов 45: ↑32 и ↓13+19
Комментарии20

История создания домашнего облака. Часть 3. Создание персонального облака — установка и настройка Nextcloud

Время на прочтение36 мин
Количество просмотров159K
На пути создания своего облачного сервиса пока мы освоились в системе Debian и создали веб-сервер. Теперь пришла пора для финального шага — создания и настройки персонального облака на базе сервера Nextcloud.


Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии45

Cloudflare прекратил обслуживание доменных имён Sci-Hub

Время на прочтение3 мин
Количество просмотров20K
Хотя пиратским сервисом Sci-Hub пользуются тысячи учёных и исследователей по всему миру, но решение американского суда имеет необратимую силу. Правообладатели делают всё возможное, чтобы стереть сервис с лица земли или хотя бы как можно более затруднить доступ к нему.

Подчиняясь законному требованию Американского химического общества, CDN-провайдер Cloudflare был вынужден прекратить обслуживание нескольких доменных имён, принадлежащих Sci-Hub. Хотя в прошлом он оспаривал такие запросы, но теперь уступил без видимых протестов.

В мае 2017 года один из крупнейших научных издателей Elsevier добился наложения на Sci-Hub и активистку и нейробиолога Александру Элбакян штрафа в $15 млн, а в ноябре 2017 года Американское химическое общество (АХО) выиграло судебный иск на $4,6 млн (сумма рассчитана как количество скачиваний 32-х научных работ, умноженное на цену научных журналов, в которых они опубликованы).
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии52

Грузите апельсины бочках. Релизы в Golang проектах

Время на прочтение7 мин
Количество просмотров7.7K

Данная статья является продолжением инструментальной темы, затронутой в прошлой публикации. Сегодня мы постараемся разобраться со сборкой релизов Golang приложений в виде единого исполняемого файла, включающего ресурсные зависимости, и вопросом оптимизации размера итоговой сборки. Также рассмотрим процесс построения рабочего окружения отвечающего следующим требованиям:


  1. Переносимость. Окружение должно быть легко воспроизводимо на различных машинах.
  2. Изолированность. Окружение не должно влиять на версии установленных библиотек и программ на машине разработчика.
  3. Гибкость. Окружение должно позволять собирать релизы для различных версий Golang и Linux (разные версии дистрибутивов и glibc).
  4. Повторяемость. Не должно быть магии и тайных знаний, то есть все шаги сборки проекта и зависимостей должны быть описаны кодом.
Читать дальше →
Всего голосов 19: ↑14 и ↓5+9
Комментарии3

Автоматическое обновление и резервное копирование 1С при помощи powershell

Время на прочтение6 мин
Количество просмотров29K
Всем доброго дня.

Суть рассматриваемого вопроса изложена в заголовке, повествование разобьем на три части. Отдельно внизу будут приведены тексты скриптов.

1) Предисловие


Вопрос необходимости резервного копирования в автоматическом режиме не подлежит сомнению ни у корифеев, ни у новичков. В статье рассмотрим резервное копирование средствами 1С (что имеет ряд преимуществ перед копированием средствами СУБД). При этом будут применены средства пакетного запуска платформы 1С, powershell и планировщик задач Windows.

Задачи обновления информационных давно автоматизированы, но только для типовых конфигураций, либо тех, что используют библиотеку стандартных подсистем. В моем случае мы работаем со старенькой Альфа-Авто редакции 4, которая распространяется на 12 серверов. Изменения вносятся примерно два раза в неделю, поэтому выгода от автоматизации налицо.

В обоих случаях мы имеем следующие исходные данные:

  • Операционная система Windows Server (версии от 2008 до 2012);
  • Клиент-серверный вариант платформы 1С 8.3 (с обязательно установленным компонентом COM-соединение).

Разумеется, у нас есть учетные данные ОС и 1С с административными правами.
Для обновления конфигурации так же понадобится ftp-сервер.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии24

GopherCon Russia 2018: конференция пройдет 17 марта в Москве

Время на прочтение4 мин
Количество просмотров5.8K
image

Всем привет!

Радостная новость для всех, кто любит Go — в России будет свой GopherCon с докладами и докладчиками :)

17 марта в Москве выступят Brad Fitzpatrick и Дмитрий Вьюков из Google, Jessie Frazelle из Microsoft и не только. В программе уже 11 отборных выступлений, о которых мы подробно расскажем под катом, а до 20 января еще можно предложить свой доклад в CFP.

Будет два параллельных потока, синхронный перевод в обе стороны в главном зале, огненное афтепати, крутые активности от наших партнеров (привет вам от Gett, JetBrains и Google). Ждем 400 участников, присоединяйтесь и вы!

Итак, что в программе:
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии5

Новая многообещающая методология разработки, которую уже назвали «убийцей Agile»*

Время на прочтение5 мин
Количество просмотров66K
*

на правах пятницы


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


Уже тысячи и тысячи мужчин и женщин по всему миру используют этот современный подход, который гарантирует потрясающие выигрыши в производительности и эффективности по сравнению с устаревшими методиками, такими, как Scrum, Agile, Kanban.


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


Итак, встречайте — Porozhnyak!

Всего голосов 109: ↑87 и ↓22+65
Комментарии36

Пособие по Ansible

Время на прочтение29 мин
Количество просмотров687K

управление конфигурацией оркестра


Это практическое пособие познакомит вас c Ansible. Вам понадобится виртуальная или реальная машина, которая будет выступать в роли узла для Ansible. Окружение для Vagrant идет в комплекте с этим пособием.


Ansible — это программное решение для удаленного управления конфигурациями. Оно позволяет настраивать удаленные машины. Главное его отличие от других подобных систем в том, что Ansible использует существующую инфраструктуру SSH, в то время как другие (chef, puppet, и пр.) требуют установки специального PKI-окружения.


Пособие покрывает такие темы:


  1. Установка Ansible и Vagrant
  2. Файл инвенторизации
  3. Модули shell, copy, сбор фактов, переменные
  4. Запуск на группу хостов
  5. Плейбуки
  6. Пример: поднимаем кластер, устанавливаем и настраиваем Apache и балансировщик нагрузок HAproxy
  7. Обработка ошибок, откат
  8. Шаблоны конфигурации
  9. Роли

Ansible использует так называемый push mode: конфигурация «проталкивается» (push) с главной машины. Другие CM-системы обычно поступают наоборот – узлы «тянут» (pull) конфигурацию с главной машины.


Этот режим интересен потому что вам не нужно иметь публично доступную главную машину для удаленной настройки узлов; это узлы должны быть доступны (позже мы увидим, что скрытые узлы также могут получать конфигурацию).

Читать дальше →
Всего голосов 35: ↑32 и ↓3+29
Комментарии15

Исследование защищенности карты Тройка

Время на прочтение18 мин
Количество просмотров203K
Карта тройка

Карта Тройка представляет из себя универсальный пополняемый электронный кошелек, широко используемый в системах оплаты общественного транспорта Москвы с 2013 года.

Цель данного исследования — выяснить защищенность системы электронного кошелька от подделки баланса, оценить безопасность инфраструктуры, работающей с картой. Вся работа была выполнена без использования специальных технических средств. Использовался дешевый смартфон на платформе Android и персональный компьютер. Общее время, затраченное на исследование, составило 15 дней.

В ходе работы был успешно проведен реверс­-инжиниринг мобильного приложения «Мой проездной», что позволило получить доступ к памяти карты и изучить структуру хранения данных. Были найдены уязвимости, позволяющие выполнить подделку баланса, записанного на электронном кошельке карты Тройка. В результате чего стало возможным использование систем, поддерживающих карту, без оплаты.

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

Внимание! Данные материалы представлены исключительно в ознакомительных целях. Подделка проездных билетов является уголовным преступлением и преследуется по закону.

Читать дальше →
Всего голосов 380: ↑374 и ↓6+368
Комментарии348

Дешевая STM32 плата + Arduino IDE UPD 17.08.2017

Время на прочтение7 мин
Количество просмотров377K
image

Хотите прокачать ваши Arduino проекты? Заставить их работать быстрее, измерения и регулировку сделать точнее, ну и добавить баги(с новыми девайсами они неизбежны). Тогда эта статья для Вас.

Arduino тема всё больше захватывает умы человечества, но рано или поздно мы встречаемся с тем, что нам чего-то не хватает, например бюджета/размеров/пиновпортов/разрядности/производительности… Как говорил один мудрый человек — «Кто хочет, тот ищет возможности, кто не хочет — ищет причины».

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

Краткое изложение данной статьи в видео формате:


Тыц
Всего голосов 24: ↑22 и ↓2+20
Комментарии102

Запуск worker'ов сервиса с помощью systemd

Время на прочтение4 мин
Количество просмотров24K
После выхода Ubuntu 16.04 (новый LTS релиз), systemd стал реальностью всех основных дистрибутивов Linux, использующихся на серверах. Это означает, что можно закладываться на расширенные возможности systemd, не рискуя оставить часть пользователей приложения «за бортом».

Этот пост о том, как реализовать многоворкерное приложение средствами systemd.

Abstract: Использование шаблонов сервисов и target'ов для запуска нескольких инстансов сервиса (реализация «воркеров»). Зависимость PartOf. Немного про [install] секцию у unit'ов.

Вступление


Многие языки программирования с плохой или никакой многопоточностью (Python, Ruby, PHP, довольно часто C/C++) используют концепцию «воркера». Вместо того, чтобы городить сложные отношения между тредами внутри приложения, они запускают несколько однопоточных копий приложения, каждое из которых берёт на себя кусок нагрузки. Благодаря опции SO_REUSEPORT есть даже возможность «вместе» слушать на одном и том же порту, что покрывает большинство задач, в которых возникает потребность в воркерах (собственно, обычные серверные приложения, реализующие API или обслуживающие веб-сайт).

Но такой подход требует наличия «супервизора», который отвечает за запуск копий, следит за их состоянием, обрабатывает ошибки, завершает при всякого рода stop/reload и т.д. При кажущейся тривиальности — это совершенно не тривиальная задача, полная нюансов (например, если один из воркеров попал в TASK_UNINTERRUPTIBLE или получил SIGSTOP, то могут возникнуть проблемы при restart у не очень хорошо написанного родителя).

Есть вариант запуска без супервизора, но в этом случае задача reload/restart перекладывается на администратора. При модели «один процесс на ядро» перезапуск сервиса на 24-ядерном сервере становится кандидатом в автоматизацию, которая в свою очередь требует обработки всех тех же самых SIGSTOP и прочих сложных нюансов.

Одним из вариантов решения проблемы является использование шаблонов сервисов systemd вместе с зависимостью от общего target'а.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии20

Снятие показаний счетчиков воды: ESP8266 + Android

Время на прочтение4 мин
Количество просмотров89K
У многих сейчас стоят счетчики воды. И большинство сталкиваются с проблемой снятия показаний с этих счетчиков и их своевременной сдачей. Я не стал исключением. Показания у меня было снимать удобно, но вот сдавать я их постоянно забывал и вспоминал в самый неподходящий момент. Было решено автоматизировать процесс снятие показаний, чтобы можно было их просмотреть в любой момент времени. Кому интересно как получить картинку слева у себя на телефоне прошу под кат.
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии84

Самодельный электронный альтиметр-вариометр-пищалка (3.3-вольтовая версия)

Время на прочтение3 мин
Количество просмотров28K
Существенно переработал свой проект альтиметра-вариометра с подачей звуковых и световых сигналов.

image
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии32

Дешёвый хронограф для пневматики своими руками

Время на прочтение9 мин
Количество просмотров99K


В своей первой публикации я хочу рассказать вам, как я собрал хронограф за пару вечеров из дешевых и доступных всем деталей. Как вы наверное уже догадались из названия, этот девайс служит для измерения скорости пули у пневматических (и не очень) винтовок и бывает полезным для контроля её технического состояния.
Читать дальше →
Всего голосов 44: ↑44 и ↓0+44
Комментарии94
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Backend Developer, Software Architect
Lead
От 9 000 $
Git
PostgreSQL
Linux
Docker
Redis
Nginx
MongoDB
High-loaded systems
Kubernetes