Обновить
466.13

Веб-разработка *

Делаем веб лучше

Сначала показывать
Порог рейтинга
Уровень сложности

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

Уровень сложностиСредний
Время на прочтение50 мин
Охват и читатели9.6K

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

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

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

Читать далее

Не нужно оверинжинирить сокращатель ссылок

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели3.7K

На Reddit я наткнулся на статью про обработку создания 100 тысяч коротких URL в секунду1. [Прим. пер.: автор статьи по ссылке создал три варианта системы; третий, наилучший, по его мнению, вариант при помощи кластера-координатора делит нагрузку на несколько ECS-воркеров, использует DynamoDB TransactWrite для пакетных условных вставок, а для устойчивости применяет кэш Redis.]

Какой же это запутанный оверинжиниренный бардак!

Не поймите меня неправильно: я люблю оверинжиниринг, но только в обучающих хобби-проектах. Как сказали многие комментаторы на Reddit, в образовательных учреждениях редко преподают распределённые системы и архитектуру ПО. Когда новички попадают в нашу отрасль, из-за подобных постов, написанных авторитетными на вид техлидами, они могут подумать, что оверинжиниринг — это единственный способ работы. Однако часто решение может быть гораздо проще.

Читать далее

Вайб-кодинг или осознанная разработка? Я выбираю второе

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

С приходом ИИ сильно вырос соблазн заниматься простым человеческим вайб-кодингом: пишешь себе промпты, копируешь готовый код, вставляешь в проект - и готово! И бизнес рад, и времени меньше уходит… В чем подвох? Пожалуй, в том, что таким образом все меньше полезной информации оседает в голове.
В этой статье я хочу поделиться своим методом, с помощью которого я внедряю новые фичи в проект, над которым работаю, при этом получая новые знания и опыт (как в старые добрые времена), затрачивая гораздо меньше времени.

Читать далее

Как ESLint помогает управлять архитектурой проекта

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели3.3K

Привет, Хабр! Я Борис Ермаченко, фронтенд-разработчик сервисов для физических лиц ПСБ. В этой статье рассмотрим, как с помощью ESLint построить архитектуру в проекте, и поговорим про несколько подходов.

Также прикладываю бонус — демо-проект, где можно экспериментировать и пробовать все подходы.

Читать далее

Продвинутые методы использования TypeScript в реальных проектах

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели5.2K



Ранее на Piccalilli Сэм Роуз поделился реальными примерами использования вспомогательных типов (utility types) TypeScript. Сегодня я хочу продолжить эту тему и поделиться несколькими продвинутыми возможностями TypeScript для работы с типами, которые, на мой взгляд, особенно полезны и применимы в реальных проектах.


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

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

Какую no-code платформу выбрать бизнесу в 2025 году

Время на прочтение53 мин
Охват и читатели9.2K

No-code платформы – мощный тренд 2025 года, позволяющий создавать приложения и автоматизировать процессы компании с минимальным привлечением программистов. 

Читать далее

n8n – от шаблонов и nodes до автоматизации AI agent и Telegram бота

Время на прочтение12 мин
Охват и читатели20K

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

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

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

Читать далее

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

Время на прочтение14 мин
Охват и читатели24K

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

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

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

Читать далее

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

Время на прочтение34 мин
Охват и читатели15K

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели3.4K

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

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

Читать далее

Как ускорить написание повторяющегося кода в 10 раз

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели5.5K

Ускорьте разработку React-компонентов! Эта статья о создании шаблонов для автоматизации рутинных задач: генерация папок, файлов, управление экспортами. Экономьте время и фокусируйтесь на главном.

Читать далее

Легко ли войти в IT через курсы по ручному тестированию

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели5.8K

Всем привет! Меня зовут Валентина, и уже чуть больше семи лет я работаю в тестировании. Наверное, каждый, кто работает в IT-сфере, сталкивался с вопросом: «А что, правда сейчас можно пройти курс и сразу стать айтишником?». Предлагаю рассмотреть это популярное мнение и разобраться, действительно ли сейчас легко «войти в IT» через тестирование. 

Мое небольшое исследование и выводы — под катом.

Читать далее

Solid.js как альтернатива (P)React+MobX на практике

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели3.2K

Как известно, у Solid довольно скудная экосистема, поэтому для сложных проектов я беру React+MobX. Однако недавно подвернулся небольшой mobile-only проект, в котором разве что маскированные инпуты и кастомные селекты, которых для Solid предостаточно. При этом требования к размеру выходных файлов и перфомансу были высокие.

Очевидным решением посчитал взять Solid, заодно и сравнить его по всем параметрам (размер, перфоманс, возможности реактивности, удобство настройки) в реальном проекте. Никаких синтетических тестов с рендерингом больших таблиц и хранением в сторе нескольких мегабайт данных не будет, зато приведу замеры из реального приложения. Бонусом — репозиторий с универсальной архитектурой для Solid+Preact+React, где замена фреймворка (набора стейт‑менеджер + рендеринг UI) производится одной строчкой кода.

Читать далее

Ближайшие события

Как сделать мобильное приложение, если у тебя лапки? Путь от PWA до TWA

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели12K

Привет, Хабр! Меня зовут Влад, и я тот самый человек, который привык использовать костыли в решении задач. По крайней мере, я считаю, что это лучший подход при подготовке MVP. Яркий пример — прототипирование простых скриптов под микроконтроллеры на MicroPy или десктопных приложений на Electron. Но, как оказалось, это не все виды ухищрений в разработке.

Если вы веб-разработчик, но руки «чешутся» написать мобильное приложение, варианты есть. В этой статье я расскажу, как создать собственное прогрессивное веб-приложение (PWA) и доработать его до TWA, чтобы потом протестировать и опубликовать в разных сторах. Никакого rocket science, просто небольшое пособие, которое основывается на моем опыте. Подробности под катом.
Читать дальше →

Как настроить баннер cookie-согласия по требованиям GDPR, Google Consent Mode и законодательства разных стран

Время на прочтение23 мин
Охват и читатели8.9K

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

В этой статье мы разберём:
· Зачем нужно согласие на cookie?
· Какие бывают типы cookie?
· Что такое Google Consent Mode?
· Как реализовать баннер согласия?
· Как управлять куки в зависимости от предпочтений пользователя?
· Как проверить, что настройки согласия работают?Зачем нужно согласие на cookie?

А также приведем примеры политик использования файлов cookie.

Читать далее

Эффективный поиск с Elasticsearch: как мы повысили конверсию на 27%

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

Хотим поделиться опытом разработки эффективного поиска для одного интересного проекта. Мы подробно рассмотрим, как сделали поиск удобным, быстрым и привлекательным для пользователей, увеличив конверсию на 27% всего лишь за счет грамотной настройки Elasticsearch.

Читать далее

Как фронтендеру сделать интерфейс дружелюбнее к пользователю. Коллекция HTML/CSS лайфхаков

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели11K
image

Привет, Хабр.


Мне всегда нравились красивые и удобные интерфейсы. Желая сделать лучше для пользователя, я потратил не один день. Так я начал коллекционировать HTML и CSS лайфхаки, которые улучшают впечатление пользователя от интерфейса. В итоге у меня получился внушительный список.


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


Давайте посмотрим, что я вам подготовил.

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

История про Arduino отработавшую 11 лет

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

Шел 2014 год, в моем поселке люди сидят на водозаборе и управляют по RDP скважинами удаленно.

Система работает круглые сутки и на мониторе уже видна "тень" красных и зеленых индикаторов.

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

Читать далее

Новый ЕМИСС 2.0 со сводными таблицами, API и погодой?

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели1.1K

Привет, Хабр! Около года назад мне пришла странная идея: а что, если сделать новую версию ЕМИСС, хранилища российской статистики, чтобы наконец-то было удобно сводить данные. А то постоянно сопоставлять несколько показателей из множества Excel файлов – сущий ад. И вот уже год прошел с момента создания и написания первой версии и сайта, и статьи (недавно был небольшой пост).

Читать далее

Меня уволили почти день в день. Ответ на пост как после испытательного срока попросить поднятие зарплаты джуну

Уровень сложностиПростой
Время на прочтение1 мин
Охват и читатели2.3K

Прошлый пост https://habr.com/ru/articles/902990/

И вот подходил испытательный срок к концу. Я в ожидание 1 on 1 с директором и hr-ом и вот захожу в гугл мит, и разговор начинается сразу:

HR: 'Привет, к сожалению у меня для тебя плохие новости.'
Я: 'Сижу в ахере так как считаю что перфоманс для джуна мастхэв'
Директор: 'Мы ожидали большей выработки, но к сожалению данных результатов не хватает'
Я: 'Да, я все понимаю. Ничего страшного, не расстроен. Просто не сошлись взглядами'
HR: 'Когда назначить дату увольнение'
Директор: '30 апреля последний день (к слову созвон 28 апреля. Даже за неделю не смогли предупредить)'
Я(в мыслях): 'Хотят меня пнуть чтобы майские не оплачивать. Работаем по ТК РФ. Я так просто не уйду и заберу небольшую котлетку:D'
Я(Вслух): 'Хорошо, перешлите мне приказ об увольнение мне надо с ним ознакомиться'
И на этом созвон закончился. HR начало поливать меня комплиментами какой я большой грин флаг, но понимаю что я очередной сотрудник, которого компания сливает чтобы сэкономить бабок.

P.S. К слову у меня 155 задач закрыто, 75 готовы к релизу.НО видимо надо больше. И это с зарплатой 67к руб на руки.

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

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

Об этом в следующем посте \o/

Читать далее

Вклад авторов