Как стать автором
Обновить
23
1.1
Дмитрий Головин @GolovinDS

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

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

Рассмотрение метода репликации в подготовке к интервью по проектированию системы: репликация без лидера

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.3K

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

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

React useReducer, зачем нужен и как использовать

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров19K

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

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

C++: чем CRTP лучше Шаблонного Метода?

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

Паттерн Шаблонный Метод (Template Method), описанный в книге по паттернам проектирования за авторством “банды четырех” (GoF), не связан с шаблонами (templates) C++ и является поведенческим шаблоном. Curiously Recurring Template Pattern (CRTP или “странно повторяющийся шаблон”) является усовершенствованием паттерна Шаблонный Метод и представляет собой идиому C++, в которой класс X наследуется от реализации шаблонного класса, используя сам X в качестве шаблонного аргумента. Название этой идиоме было дано Джимом Коплиеном (Jim Coplien), который наблюдал ее в самых первых образцах шаблонного кода C++. Эта методика позволяет достигнуть эффекта, аналогичного использованию виртуальных функций, без накладных расходов (и некоторой гибкости) динамического полиморфизма. CRTP можно использовать вместо Шаблонного Метода при условии, что вам не нужен динамический полиморфизм во время выполнения. Этот паттерн широко используется в библиотеках Windows ATL и WTL.

Читать далее
Всего голосов 8: ↑5 и ↓3+3
Комментарии9

Разведочный анализ (EDA)

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

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

Представь, что ты археолог, который обнаружил древний город. Первое, что ты делаешь, – это изучаешь артефакты, учишься понимать их значение и связи между ними, прежде чем начнешь рассказывать историю этого города. Точно так же и EDA позволяет нам раскрывать истории, заложенные в данных. Мы открываем для себя ключевые факторы, влияющие на наши переменные, выявляем паттерны поведения и взаимосвязи, которые нередко оказывают решающее влияние на стратегии и принимаемые бизнес-решения.

Читать далее
Всего голосов 12: ↑9 и ↓3+9
Комментарии2

Асинхронные микросервисы на Python

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров15K

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

Почему асинхронность так важна для наших микросервисов? Представьте себе множество людей, ожидающих в лифте – каждый из них хочет двигаться своим темпом, и никто не хочет ждать, когда лифт подойдет к нужному этажу. Так и в мире микросервисов – каждый сервис может заниматься своей задачей, не блокируя другие. Асинхронность позволяет нам этим заниматься: вместо того чтобы ждать ответа от одного сервиса, мы можем отправить запрос другому и эффективно использовать время, пока ждем ответа.

Читать далее
Всего голосов 13: ↑9 и ↓4+8
Комментарии12

Создаем конвейер машинного обучения с помощью DBT

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.9K

Создание хорошего конвейера данных, который способен на конструирование признаков (feature engineering), обучение и формирование прогнозов на основе ваших данных, может оказаться довольно сложной задачей. Может, но это совсем не обязательно. В этой статье проведу вас по этому процессу шаг за шагом.

Для обучения и прогнозирования непосредственно в нашей базе данных, будем использовать BigQuery ML. Затем я покажу вам, как мы можем использовать такой инструмент, как DBT, для создания конвейера данных, который конструирует признаки, обучает модель, делает прогнозы, и все это без необходимости извлечения данных из нашей базы данных.

Без лишних отлагательств, давайте разбираться!

Читать далее
Всего голосов 7: ↑5 и ↓2+4
Комментарии0

Протоколы канального уровня. Настраиваем Spanning Tree

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров7.4K

Прокол связующего дерева (Spanning Tree, STP) стал неотъемлемой частью практически любой сети средних размеров, не говоря уже о сетях крупных организаций. Этот прокол предназначен для борьбы с петлями в сетевой топологии. Конечно, тем кто в былые времена сдавал CCNA/CCNP/CCIE (хотя бы written) теоретическая и практическая часть представленного в статье материала должна быть хорошо знакома, причем практика знакома по оборудованию одной известной компании, которая уже нас покинула. Но тем, кто только начинает постигать сетевые технологии данная тема должна быть интересна.

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

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

Все, что вам нужно знать о Kotlin Multiplatform

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

Kotlin Multiplatform — это набор для разработки программного обеспечения, который значительно лучше других вариантов разработки кроссплатформенных приложений. В этом руководстве по Kotlin multiplatform вы подробно узнаете все об этом наборе.

Читать далее
Всего голосов 18: ↑9 и ↓9+2
Комментарии16

Неизвестный атрибут 28 — источник энтропии в междоменной маршрутизации?

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

2 июня 2023 года произошел сбой в работе междоменной маршрутизации сети интернет. Мы получили уведомление о периодических перезагрузках некоторых роутеров, отвечающих за маршрутизацию между сетями, из-за некорректных BGP-пакетов с BGP-атрибутом 28. Здесь мы начнем рассмотрение этого события с помощью RIS и представим предварительные соображения о том, что могло пойти не так.

Читать далее
Всего голосов 10: ↑7 и ↓3+5
Комментарии3

Employee Journey Map как основа HR в компании

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров5K

HR-служба – одно из самых ключевых направлений в любой IT-компании. Почему? Потому что основной ресурс здесь – люди. И люди не простые, а высококвалифицированные, талантливые. К каждому нужен свой подход. Каждый требует к себе внимания.

У HR-службы бывает 2 крайности: HR “про людей”, где в основе психологи, а система хромает, либо HR “бюрократы”, где в основе кадровики, а про людей не очень-то и пекутся.

Я не знаю, как лечить второе, но знаю, что можно сделать с первым. Хорошей основой системности в HR может стать EJM. Что это такое и как им пользоваться – приглашаю почитать.

Читать далее
Всего голосов 14: ↑10 и ↓4+8
Комментарии2

Тимлидские хитрости – как календарь может помочь в работе команды

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4K

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

Как превратить календарь в эффективный инструмент командной работы – приглашаю почитать.

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

K3s как альтернатива K8s

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров8.2K

K3s - проект, созданный Rancher Labs, который представляет собой легковесную и простую в установке версию Kubernetes. K3s предлагает решение для разработчиков, которые хотят использовать Kubernetes в своих проектах, но не хотят сталкиваться со сложностью установки и управления полной версией Kubernetes.

Читать далее
Всего голосов 16: ↑12 и ↓4+10
Комментарии3

Системы управления временными рядами

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров4.2K

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

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

Читать далее
Всего голосов 12: ↑7 и ↓5+5
Комментарии2

Сколько стратегии у СТО

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

CTO часто воспринимается, как вершина технического развития. К этой роли стремятся все инженеры (ну или явное большинство).

Во многом, это правда, CTO – главный технический эксперт. Но помимо этого, CTO – директор. Он отвечает за стратегию, за финансы. А не только за выбор стека и архитектуру.

Какие стратегические задачи решает CTO и какой объем они занимают – об этом в нашей статье.

Читать далее
Всего голосов 14: ↑7 и ↓7+1
Комментарии2

Лучшие практики для оптимизации тестов в Appium

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

Appium — это инструмент с открытым исходным кодом для автоматизации, способный взаимодействовать с тестовым скриптом, сервером Appium и эмулятором или реальным устройством, на котором выполняется скрипт. 

Чтобы использовать весь потенциал Appium, важно знать об основных «подводных камнях», с которыми придется столкнуться в начале работы с фреймворком, а также внутренние возможности Appium. В данном руководстве мы рассмотрим несколько лучших практик, которые помогут QA-специалистам оптимизировать тесты в Appium.

Читать далее
Всего голосов 14: ↑10 и ↓4+8
Комментарии0

Паттерн Saga в микросервисной архитектуре

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров38K


Автор статьи: Артем Михайлов

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

Но, разумеется, с такой архитектурой возникают и свои сложности, особенно касающиеся управления транзакциями. Когда у нас был монолит, одна транзакция могла обернуть в себя несколько операций и либо выполняться успешно, либо полностью откатываться при ошибке. В микросервисах такой простоты уже нет.
Читать дальше →
Всего голосов 20: ↑10 и ↓10+1
Комментарии17

Все что необходимо знать про key в React и даже больше

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров8.7K

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

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

Введение в Locust: open source инструмент для нагрузочного тестирования на языке Python

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

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

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

Анализ данных клиентов и прогнозирование оттока пользователей на Python

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров7K


Автор статьи: Артем Михайлов

В современном мире, где конкуренция между компаниями становится все более жесткой, понимание поведения клиентов и их удержание становятся ключевыми факторами для успешного бизнеса. Одним из важных инструментов в достижении этой цели является анализ данных клиентов и прогнозирование оттока пользователей.
Читать дальше →
Всего голосов 10: ↑7 и ↓3+6
Комментарии1

Как внедрить процесс обеспечения качества в Agile-команду

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.7K

В agile-среде тестирование является важной частью каждого жизненного цикла программного обеспечения. То, как тестирование внедряется в фазы разработки проекта, называется QA-процессом.

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

Читать далее
Всего голосов 12: ↑9 и ↓3+8
Комментарии1

Информация

В рейтинге
1 481-й
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность