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

Пользователь

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

Что ты такое, dhclient?

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

Сетевой стек Linux не прост даже на первый взгляд: приложение — в юзерспейсе, а всё, что после сокета, — в ядре операционки. И там тысяча реализаций TCP. Любое взаимодействие с сетью — системный вызов с переключением контекста в ядре.

Чтобы лишний раз не дёргать ядро прерываниями, придумали DMA — Direct Memory Access. И это дало жизнь классу софта с режимом работы kernel bypass: например при DPDK (Intel Data Plane Development Kit). Потом был BPF. А за ним — eBPF. 

Но даже помимо хаков работы с ядром есть такие штуки, как sk_buff, в которой хранятся метаданные всех миллионов протоколов. Есть NAPI (New API), которая призвана уменьшить число прерываний. Есть 100500 вариантов разных tables.

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

Начать погружение

История блужданий по документации Haproxy, или на что стоит обратить внимание при его конфигурации

Время на прочтение8 мин
Количество просмотров35K
И снова здравствуйте!

В прошлый раз мы рассказывали о выборе инструмента в Ostrovok.ru для решения задачи проксирования большого количества запросов к внешним сервисам, никого при этом не положив. Статья закончилась выбором Haproxy. Сегодня я поделюсь нюансами, с которыми мне пришлось столкнуться при использовании этого решения.


Читать дальше →

Django Rest Framework для начинающих: создаём API для чтения данных (часть 2)

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

В прошлой части мы в общих чертах рассмотрели, как устроен REST API на DRF при работе на чтение. Едва ли не самый сложный для понимания этап — сериализация. Вооружившись исходным кодом, полностью разберем этот этап — от приема набора записей из модели до их преобразования в список словарей.


Важный момент: мы говорим о работе сериалайзера только на чтение, то есть когда он отдаёт пользователю информацию из базы данных (БД) сайта. О работе на запись, когда данные поступают извне и их надо сохранить в БД, расскажем в следующей статье.


Код учебного проекта, который используется в этой статье, доступен в репозитории на Гитхабе.


Читать дальше →

Разработка документации на VuePress

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

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

Изначальной целью VuePress, была поддержка фреймворка Vue.js и сопутствующей инфраструктуры. Для примера, можно посмотреть любую документацию по Vue: Vue.jsVue RouterVuex, где применяется единый стиль, заложенный в основе VuePress.

В ходе статьи мы разберем архитектуру VuePress, разработаем базовое приложение и выложим на GitHub Pages.

Читать далее

Управление вентиляцией: собираем, интегрируем, экономим

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

Современный дом не может существовать без вентиляции. Только система вентиляции обеспечивает нам требуемое качество воздуха, и, как следствие, здоровье, бодрость и долгие годы жизни. А умный дом не может существовать без механической системы приточно–вытяжной вентиляции, поскольку с естественной (т. е. не регулируемой) вентиляцией требуемого комфорта и энергоэффективности не добиться.

А такой системой надо умно управлять. Об этом сегодня и поговорим.

Читать далее

40 релизов в неделю при разработке государственного Amazon или почему Agile is dead

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

Что бы вы сказали, если бы вам потребовалось срезать косты вашей команды разработки в два раза? А если бы пришел босс и потребовал делать в два раза больше той же командой? Обычно интуиция нас подводит и мы в ответ на эти вопросы делаем не то, что нужно - в итоге только ухудшаем ситуацию. Самое интересное, что значительно улучшить результаты можно потратив относительно небольшие усилия - что же это за бесплатный сыр такой? Как это связано с релизами? От какого важного элемента Agile мы заодно отказываемся? Ответы на эти вопросы я попробую дать в своей статье.

Читать далее

Статическое Python приложение в образе контейнера на базе scratch

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

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

Размер итогового образа контейнера получится всего лишь от 13 мегабайт.

Читать далее

Тесты на pytest с генерацией отчетов в Allure с использованием Docker и Gitlab Pages и частично selenium

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

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


Пример отчета, получающийся в allure


Рабочий репозиторий с финальной версией рабочего кода и инфраструктуры


Ссылка на отчеты после прогона тестов


Когда я хотел добавить в gitlab автотесты в стеке python, allure, docker, то я выяснил, что толковых статей на эту тему нет. Пришлось разбираться самостоятельно и как результат проб и ошибок появилась эта статья, которая скорее является гайдом, частично затрагивающим написание тестов, но наибольший фокус именно на выстраивании инфраструктуры. Если у вас уже написаны тесты на allure, то вы сразу можете переходить к разделу настройки инфраструктуры. Отмечу, что текст НЕ затрагивает написание UI тестов, но я затрону инфраструктуру для них в отдельном блоке.

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

Три основных метода улучшения взаимодействия со стейкхолдерами

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

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

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

Читать далее

Кластер Postgres для 1С. Повествование об интеллектуальных скитаниях инженера со счастливым концом

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

Как и у многих, в нашей компании возник вопрос импортозамещения. В целом вопрос понятный, много раз обсужденный со всех точек зрения. И вот настал счастливый момент, когда слова трансформировались в конкретные задачи с конкретными сроками. И одна из них была о замене СУБД для 1С.

Ну и конечно же, первым делом был поднят вопрос о кластеризации этой истории. Никто подвоха особого не ожидал, ибо у нас есть уже зарекомендовавшее себя решение в виде связки pg_auto_failover версии 1.6 от Citus (далее PGAF для краткости) и keepalived. Это решение нас целиком и полностью устраивает, поэтому выбор наш был очевиден.

Но когда мы начали настраивать выяснился очень неприятный момент - обычная сборка PGAF просто не работает с версией СУБД от PostgresPro - все ломается из-за жестко прописанных зависимостей. Тут то и началось "веселье".

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

Читать далее

Как избежать 10 частых ошибок в настройке NGINX

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


Помогая пользователям NGINX с разрешением проблемных ситуаций, мы поняли, что большинство из них часто совершает одни и те же ошибки конфигурации. Более того, подобные ситуации вполне могут возникнуть даже у самих инженеров NGINX! В этой статье рассмотрим 10 наиболее распространенных ошибок и объясним как их исправить.


  1. Недостаточное количество файловых дескрипторов;
  2. Директива error_log off;
  3. Отсутствие keepalive-соединения с вышестоящими серверами;
  4. Упущение механизмов наследования директив;
  5. Директива proxy_buffering;
  6. Неправильное использование директивы if;
  7. Чрезмерные проверки работоспособности;
  8. Незащищенный доступ к метрикам;
  9. Использование ip_hash, когда весь трафик поступает из одного и того же блока /24 CIDR;
  10. Игнорирование преимуществ вышестоящих групп.
Читать дальше →

Kubernetes NodePort vs LoadBalancer vs Ingress? Когда и что использовать?

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


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


Примечание: рекомендации рассчитаны на Google Kubernetes Engine. Если вы работаете в другом облаке, на собственном сервере, на миникубе или чем-то еще, будут отличия. Я не углубляюсь в технические детали. Если хотите подробностей, обратитесь к официальной документации.

Читать дальше →

Работа руководителя с людьми начинается задолго до найма и не заканчивается с уходом людей из команды

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

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

Меня зовут Виталий Шароватов, я работал в mail.ru, badoo, raiffeisen, qlean, rocketbank, сейчас работаю в Qase. 13 лет писал на JavaScript, а сейчас занимаюсь просветительской работой, менторю тимлидов и читаю лекции. Так что, мне есть чем с вами поделиться.

Читать далее

Nemesida WAF: защита сайта и API от атак и паразитного трафика

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

Сталкиваясь с атаками на веб-ресурсы, администраторы пытаются перекрыть вредоносный трафик настройками веб-сервера, установкой Rate Limit, созданием правил блокировок или ограничением доступа по IP из списка стран. Эти действия требуют навыков и не всегда приводят к ожидаемым последствиям.

В статье расскажу, как обеспечить быструю и качественную защиту веб-приложений и API от большей части угроз OWASP Top-10 с использованием бесплатной версии Nemesida WAF Free.

Читать далее

5 типичных ошибок при разработке стратегии и способы борьбы с ними

Время на прочтение14 мин
Количество просмотров10K
Привет, уважаемые хабровчане!

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

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

Эволюция продуктовых команд

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

Про то, почему и как в разных компаниях приходят к продуктовым командам. Мыслями поделился автор telegram-канала для продактов alexcouncil Алексей Арефьев.

Читать далее

GitOps с GitLab: CI/CD Tunnel

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

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

Здесь мы посмотрим, как получить доступ к кластеру Kubernetes с помощью GitLab CI/CD и зачем это нужно, если вы взяли курс на GitOps.

Читать далее

Как мы устранили страшное легаси незаметно для пользователей

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

Мы разрабатываем ati.su, это площадка где грузоотправитель находит грузоперевозчика. Между собой они общаются заявками. Заявка — это карточка с множеством полей. Так мы её и зовём — «Карточка груза». Поиск таких заявок по сложным фильтрам — то, зачем к нам приходят сотни тысяч пользователей.

Эта статья о том, как мы с нуля переписали карточку груза и этого почти никто не заметил. И это хорошо, так и было задумано.

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

Читать далее

Как улучшить межсерверное взаимодействие и сэкономить время разработчика

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

Привет! Я Алексей, Java-разработчик. В статье поделился опытом внедрения подхода Contract-First в backend. 

Под катом подробности:

— что такое Code-First и зачем переходить на Contract-First,

— как перестать писать API-объекты руками и сэкономить 12 человеко-недель в спринт,

— как поддерживать однотипный код и API, если у вас 100+ микросервисов и 60 бэкендеров.

Читать о внедрении Contract-First

Практические рекомендации по работе с Docker для Python-разработчиков

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

Прим. Wunder Fund: в этой длииинной статье вы найдете ряд полезных советов по работе с Docker, как общего характера, так и Python-специфичных. Хоть мы и давно используем Docker в работе, про некоторые советы мы подумали "а что, так можно было?". Советуем вначале пролистать статью, и отметить штуки, которые покажутся актуальными для вашей текущей ситуации.

Читать далее
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность