Pull to refresh
3
0.5

WEB-программист, сетевой администратор

Send message

Разбираем архитектуру. Часть 2. Чистая архитектура на примере FastAPI приложения

Level of difficultyMedium
Reading time50 min
Views12K

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

Функционально проект реализует систему сбора и анализа вакансий с агрегаторов вроде HeadHunter. Но гораздо важнее не то, какие задачи решает система, а то — как именно она это делает. Этот проект — прежде всего о структуре, архитектуре и принципах.

Основные используемые технологии: Python 3.13, FastAPI, Nginx, Uvicorn, PostgreSQL, Alembic, Celery, Redis, Pytest, FileBeat, LogStash, ElasticSearch, Kibana, Prometheus, Grafana, Docker, Docker Compose.

Читать далее

Почему стоит переходить на Angie

Level of difficultyEasy
Reading time7 min
Views11K

Это первая из статей, посвященных веб-серверу Angie. Мысль создать цикл статей возникла в процессе разработки курса по администрированию Nginx и Angie. Приходилось сталкиваться с темами, которые довольно слабо описаны в открытых источниках, либо не описаны вообще. В планах описать типичные области его использования с реальными примерами доступным языком. Так как большинство решений и конфигов будет совместимо с Nginx, надеюсь цикл будет полезен сообществу.

Читать далее

Превращаем школьный электронный журнал в файлообменник

Level of difficultyEasy
Reading time2 min
Views5.8K

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

На этот раз поговорим о использовании школьного электронного как файлового хранилища. Загрузим туда образы линукса, аниме и многое другое...

Читать далее

Большой лазерный гравер своими руками

Level of difficultyMedium
Reading time17 min
Views9.9K

Привет, Хабр! В этой статье речь пойдет о лазерном ЧПУ-станке, который наша студенческая команда делала на 2ом курсе в рамках университетской проектной практики. Основная цель материала - поделиться личным опытом и дать обзорное представление о том, как такие устройства можно собирать. Будет много картинок, ссылок на смежные темы и субъективного мнения.

Поехали)

Зацените BUSY Bar — устройство для продуктивности

Level of difficultyEasy
Reading time11 min
Views25K

3 года назад я рассказывал как я делаю опенсорсную табличку "Я Занят". С тех пор проект полностью перешел внутрь Flipper Devices и его разрабатывает та же команда, что и Flipper Zero.

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

Читать далее

Как я чищу диск на MacOS и какой внешний накопитель выбрал

Level of difficultyEasy
Reading time3 min
Views9.2K

Привет, Хабр! Недавно брат поинтересовался, как я решаю проблему с вечно забитым диском на MacBook, и я решил не только ему ответить, но и поделиться своим опытом со всеми. Расскажу, как бороться с нехваткой места и какой внешний накопитель выбрать, чтобы не разориться и не разочароваться.

Читать далее

Низкоуровневое программирование под 8086 для любопытных, часть 2

Level of difficultyMedium
Reading time15 min
Views10K

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

Читать далее

Оцифровка показаний стрелочного манометра в Home Assistant

Level of difficultyMedium
Reading time9 min
Views11K

Делюсь опытом реализации распознавания показаний стрелочного манометра по фотографии и отправки их в Home Assistant.

Давно мучал вопрос передачи показаний давления системы отопления со штатного манометра газового котла. Для этого несколько лет назад была приобретена камера ESP32-CAM и интегрирована в Home Assistant посредством ESPHome.

Читать далее

Фронтенд — новый легаси: Как мы проспали event-driven революцию

Reading time14 min
Views33K

Введение: Архитектурное дежавю

Вы когда-нибудь замечали, как цифровой мир движется по спирали? В 2018 году я, размахивая Dockerfile и Helm-чартами, внедрял микросервисы на C# с RabbitMQ — всё ради священной цели «низкой связанности». А через три года, переключившись на Angular, с ужасом осознал: фронтенд-компоненты общались через цепочки Input/Output, словно это 2005-й, а мы пишем WinForms.

Это как собрать космический корабль, но управлять им через телеграф. На бэкенде мы гордо декларируем event-driven architecture, а на фронтенде компоненты перешёптываются через пропсы, будто подростки на школьной дискотеке. Ирония? Чем сложнее становились наши системы, тем больше они напоминали те самые монолиты, от которых мы бежали в мире backend.

Читать далее

Нужно ли знать историю фронтенда, если просто пишешь на React? Да, и вот почему

Level of difficultyEasy
Reading time20 min
Views7.9K

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

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

Читать

От песка в глазах к панораме: как 49-дюймовый монитор заменил два 27-дюймовых и сделал жизнь и работу комфортнее

Reading time7 min
Views80K

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

А именно — новый монитор. Пару месяцев назад я перешёл на 49-дюймовый Samsung C49HG90. Скажу сразу — это не просто два экрана в одном, это качественно новый уровень комфорта, который сделал работу удовольствием. Дисплей не очень современный, хотелось оценить работу с «панорамой» занедорого, прежде, чем решиться на более значительную покупку. Вдруг не понравилось бы (спойлер — очень понравилось). В статье делюсь своим опытом: почему я не вернусь к старой связке, как настроил монитор, какие плюсы и минусы обнаружил.
Читать дальше →

Как serverless-архитектура влияет на модернизацию инфраструктуры

Level of difficultyMedium
Reading time9 min
Views6.1K

Serverless-архитектура всё увереннее набирает обороты — и неудивительно. Речь о том, что можно просто бросить код в облако, а масштабирование, обновления и даже «железо» доверить провайдеру. Вы спросите: «Никаких бессонных ночей из-за аптайма, никакого счёта за простаивающие мощности?» — платишь только за то, что реально отработало.

Всё радужно и светло, пока не задумаешься о платформах вроде AWS Lambda или Azure Functions. Они действительно решают проблемы, но логичный вопрос — можно ли полагаться на них на все 100%? А что, если резко вырастет трафик? Выдержит ли система, или проект «ляжет» в самый неудобный момент? Попробуем найти ответы и разобрать влияние serverless-архитектуры, её плюсы, недостатки и ключевые технологии. Все под кат!
Читать дальше →

Есть ли смысл применять SOLID в React?

Level of difficultyMedium
Reading time10 min
Views6.8K

Ещё несколько лет назад принципы SOLID были неотъемлемой частью собеседований для разработчиков любого уровня. Вопросы вроде «Расскажите, что означает каждая буква в SOLID» звучали так же часто, как «Что такое замыкание в JavaScript?». Это считалось своеобразной классикой, обязательной для понимания любого уважающего себя программиста.

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

Тем не менее, я убеждён, что принципы SOLID по-прежнему актуальны и полезны, даже в контексте функционального подхода. JavaScript и React не запрещают применять лучшие практики из ООП — наоборот, они предоставляют гибкость для использования различных парадигм.

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

Читать далее

FastAPI + Keycloak: Простая и безопасная авторизация в веб-приложении на примере реального проекта

Reading time34 min
Views15K

Keycloak - это мощная open-source платформа для аутентификации и авторизации, которую используют даже банки и крупные корпоративные клиенты для защиты своих приложений и данных.

В статье на реальном примере (FastAPI + Python) простым языком объясню, как Keycloak помогает упростить управление доступом и почему его принципы универсальны для любого бэкенда, независимо от выбранного языка программирования

Читать далее

Как мы упростили развертывание почтового сервиса для тестирования или сказ про Mailpit — он же сервис fakemail\mailtrap

Level of difficultyEasy
Reading time5 min
Views2.1K

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

Читать далее

Pydantic 2: Полное руководство для Python-разработчиков — от основ до продвинутых техник

Reading time26 min
Views65K

Друзья, сегодня мы погрузимся в мир Pydantic 2 – мощного инструмента для валидации данных в Python! Узнаем, почему эта библиотека стала незаменимой в 30% Python-проектов и как она упрощает работу с данными. От базовых концепций до продвинутых техник – мы охватим всё, что нужно знать современному Python-разработчику. Готовьтесь к практике – ведь только так можно по-настоящему освоить Pydantic и сделать ваш код более надёжным и эффективным.

Читать далее

Event-Driven архитектура на FastAPI: через паттерн Pub/Sub

Level of difficultyHard
Reading time13 min
Views8K

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

В данной статье мы расскажем о реализации Event-Driven архитектуры (EDA) с использованием FastAPI и паттерна Publish/Subscribe. Рассмотрим основные концепции, компоненты и практические примеры кода для создания масштабируемой системы обмена сообщениями.

Читать далее

Для архитекторов и аналитиков: шаблон описания архитектуры приложения (34 страницы пользы)

Level of difficultyEasy
Reading time3 min
Views29K

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

Читать далее

Настраиваем свой send-only почтовый сервер postfix с DKIM в docker-контейнере

Level of difficultyMedium
Reading time5 min
Views4.3K

Если вы читаете этот материал, скорее всего вы уже знаете что поднять свой почтовик это страдание и внезапно нетривиальная задача. Цель статьи - без лишней лирики дать пошаговый мануал тем, кто хочет настроить свой собственный мейлер и не платить деньги mailgun и подобным SMTP-relay сервисам.

Читать далее

Я устал возиться с кучей VPN и поставил Xray на роутер

Level of difficultyMedium
Reading time5 min
Views139K

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

Я долгое время жил в этом хаосе. Сначала я ставил VPN на телефон, потом на ноутбук, потом на телевизор... В какой-то момент их стало столько, что я уже не знал, какой включен, какой отключен, где подписка закончилась, а где опять надо искать новый сервер. Рабочий VPN переставал работать в самый неподходящий момент – например, когда я пытался оплатить что-то онлайн или посмотреть видео.

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

Читать далее

Information

Rating
3,510-th
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity