Подборка материалов · Middle

118 статей для Middle Fullstack-разработчика: большая подборка

Материалы для самостоятельной разработки продукта: типизация, клиентские фреймворки, API, транзакции, очереди, тесты, производительность, безопасность и CI/CD.

118 статей · 10 тем · материалы на русском языке

JavaScript и TypeScript

  1. Грамматика и типы

    Чтобы находить ошибки типов до запуска.

  2. Порядок выполнения и обработка ошибок

    Чтобы находить ошибки типов до запуска.

  3. Циклы и итерации

    Чтобы находить ошибки типов до запуска.

  4. Функции

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

  5. Выражения и операторы

    Чтобы находить ошибки типов до запуска.

  6. Числа и даты

    Чтобы находить ошибки типов до запуска.

  7. Упорядоченные наборы данных

    Чтобы находить ошибки типов до запуска.

  8. Продвинутый TypeScript

    Чтобы находить ошибки типов до запуска.

  9. Дженерики в TypeScript

    Чтобы находить ошибки типов до запуска.

  10. TypeScript тип any против всех

    Чтобы находить ошибки типов до запуска.

  11. Учимся писать сложные Typescript типы на примере роутинга в React

    Чтобы собирать интерфейс из переиспользуемых компонентов.

  12. TypeScript и все что тебе нужно в разработке

    Чтобы находить ошибки типов до запуска.

  13. Копаемся в TypeScript: пишем свои Utility Types. Ключевое слово infer

    Чтобы находить ошибки типов до запуска.

Клиентские фреймворки

  1. Автоматизируем переход на React Hooks

    Чтобы собирать интерфейс из переиспользуемых компонентов.

  2. Запрос к API c React Hooks, HOC или Render Prop

    Чтобы собирать интерфейс из переиспользуемых компонентов.

  3. Redux store vs React state

    Чтобы собирать интерфейс из переиспользуемых компонентов.

  4. В чем разница между useLayoutEffect, componentDidMount, useEffect

    Чтобы выбрать основу и структуру интерфейса.

  5. React: Zustand State Manager

    Чтобы собирать интерфейс из переиспользуемых компонентов.

  6. Сравнение синтаксисов Vue JS

    Чтобы выбрать основу и структуру интерфейса.

  7. Миграция с vue-class-component на vuejs/composition-api

    Чтобы выбрать основу и структуру интерфейса.

  8. Миграция на Vue 2.7

    Чтобы выбрать основу и структуру интерфейса.

  9. defineExpose() в Vue 3

    Чтобы выбрать основу и структуру интерфейса.

  10. Angular: создание кастомного элемента формы и передача в него состояния формы

    Чтобы выбрать основу и структуру интерфейса.

  11. Как управлять состоянием в Angular по мере роста приложения

    Чтобы выбрать основу и структуру интерфейса.

  12. Angular — API композиции директив

    Чтобы выбрать основу и структуру интерфейса.

  13. Прощай, Zone.js: ускоряем Angular с Signal API и Zoneless-подходом

    Чтобы выбрать основу и структуру интерфейса.

Проектирование API

  1. REST vs gRPC. Межсервисная интеграция для начинающих

    Чтобы проектировать понятные и стабильные API.

  2. От REST к gRPC и GraphQL: современный подход к API

    Чтобы проектировать понятные и стабильные API.

  3. REST API vs GraphQL: в чём между ними разница

    Чтобы проектировать понятные и стабильные API.

  4. GraphQL или REST: Какой API выбрать, чтобы не прогадать?

    Чтобы проектировать понятные и стабильные API.

  5. Документирование ASP .Net Core Web API с помощью OpenAPI/Swagger. Библиотека Swashbuckle

    Чтобы использовать возможности браузера из кода.

  6. Реализация REST API-метода с пагинацией на примере JSON-Schema и OpenAPI

    Чтобы передавать структурированные данные между системами.

  7. RESTForms — REST API для ваших классов InterSystems Caché

    Чтобы проектировать понятные и стабильные API.

  8. GraphQL-gRPC API Gateway на Java

    Чтобы проектировать понятные и стабильные API.

  9. Rest шлюз для gRPC сервисов на го — gRPC-gateway

    Чтобы проектировать понятные и стабильные API.

  10. Миграция API с REST на gRPC в WePay

    Чтобы проектировать понятные и стабильные API.

  11. Мифы про REST API. Часть 3

    Чтобы проектировать понятные и стабильные API.

  12. Разрабатываем REST API с помощью TypeScript, NestJS, Prisma, AdminJS и Swagger

    Чтобы находить ошибки типов до запуска.

  13. Как мы превратили Swagger из документации в двигатель API-автотестов

    Чтобы проектировать понятные и стабильные API.

Базы данных и транзакции

  1. Уровни изоляции транзакций: практическая механика и сравнение PostgreSQL, MySQL, Oracle, SQL Server и DB2

    Чтобы ускорять запросы и сохранять целостность данных.

  2. Топ полезных SQL-запросов для PostgreSQL

    Чтобы ускорять запросы и сохранять целостность данных.

  3. DevConf: переход Uber с PostgreSQL на MySQL

    Чтобы ускорять запросы и сохранять целостность данных.

  4. Что нового в PostgreSQL 11: INCLUDE-индексы

    Чтобы ускорять запросы и сохранять целостность данных.

  5. Оптимизация SQL запросов

    Чтобы ускорять запросы и сохранять целостность данных.

  6. Уровни изоляции транзакций в PostgreSQL, MySQL, MSQL, Oracle с примерами на Go

    Чтобы ускорять запросы и сохранять целостность данных.

  7. PostgreSQL 16. Изоляция транзакций. Часть 2

    Чтобы ускорять запросы и сохранять целостность данных.

  8. Шардированный не значит распределённый: что важно знать, когда PostgreSQL становится мало

    Чтобы ускорять запросы и сохранять целостность данных.

  9. BRIN, GIN, B‑Tree: полный гайд по индексам PostgreSQL для highload

    Чтобы ускорять запросы и сохранять целостность данных.

  10. Перекрестная репликация между PostgreSQL и MySQL

    Чтобы ускорять запросы и сохранять целостность данных.

  11. Транзакция, ACID, CAP теорема и уровни изоляций транзакций простыми словами

    Чтобы ускорять запросы и сохранять целостность данных.

  12. Сравнение транзакционных систем Oracle и PostgreSQL

    Чтобы ускорять запросы и сохранять целостность данных.

  13. Гетерогенная распределенная система как способ миграции больших и не очень баз данных с MSSQL Server на PostgreSQL

    Чтобы ускорять запросы и сохранять целостность данных.

Асинхронность, очереди и кэширование

  1. Часть 2: Как я реализовал взаимодействие микросервисов — Kafka и gRpc

    Чтобы выполнять асинхронные операции без блокировок.

  2. Изучаем Kafka — Уровень 1

    Чтобы выполнять асинхронные операции без блокировок.

  3. Асинхронность vs. многопоточность: что выживет в эпоху No GIL?

    Чтобы выполнять долгие операции без зависания.

  4. Выбор между RabbitMQ и Apache Kafka

    Чтобы выполнять асинхронные операции без блокировок.

  5. Соседняя очередь всегда движется быстрее

    Чтобы выполнять асинхронные операции без блокировок.

  6. Kafka, go и параллельные очереди

    Чтобы выполнять асинхронные операции без блокировок.

  7. Архитектура сервиса распределённых очередей сообщений в Яндекс.Облаке

    Чтобы выполнять асинхронные операции без блокировок.

  8. Как подружить Spring Boot и Redis для эффективного кэширования

    Чтобы выполнять асинхронные операции без блокировок.

  9. Кэширование и трекинг. Как YOLO экономит время и нервы

    Чтобы выполнять асинхронные операции без блокировок.

  10. Проектирование высокопроизводительных кэширующих решений с использованием Redis и Memcached

    Чтобы выполнять асинхронные операции без блокировок.

  11. Разработка высокопроизводительного кеш-слоя на основе Redis в телеграм-боте

    Чтобы выполнять асинхронные операции без блокировок.

  12. Redis больше не нужен?! Реализуем реактивный кэш на чистом PostgreSQL и Go

    Чтобы выполнять асинхронные операции без блокировок.

  13. Мифы и легенды о производительности Python

    Чтобы выполнять асинхронные операции без блокировок.

Тестирование и качество

  1. Реализация функции обнаружения

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

  2. Эффективное тестирование верстки

    Чтобы находить ошибки до выпуска продукта.

  3. Тестирование с Ava.js

    Чтобы находить ошибки до выпуска продукта.

  4. Анализируем виды тестов для Frontend

    Чтобы находить ошибки до выпуска продукта.

  5. Тестирование Frontend

    Чтобы находить ошибки до выпуска продукта.

  6. Playwright: веб-тестирование без драмы

    Чтобы находить ошибки до выпуска продукта.

  7. Тестирование Node.js-проектов. Часть 1. Анатомия тестов и типы тестов

    Чтобы находить ошибки до выпуска продукта.

  8. Контрактные тесты с Pact: гарантия стабильности микросервисов

    Чтобы находить ошибки до выпуска продукта.

  9. Автоматизация тестирования микросервисов: плюсы и минусы тестов на Go

    Чтобы находить ошибки до выпуска продукта.

  10. Мобильное тестирование, автоматизация и тестирование API: С чем нужно уметь работать тестировщику в 2021 году

    Чтобы находить ошибки до выпуска продукта.

  11. Еще раз про интеграционное тестирование ASP.NET Core c testserver и testcontainers

    Чтобы находить ошибки до выпуска продукта.

  12. [обновлено] Как нагрузочное тестирование процессинга обошлось нам в €157 000 и почему никого не уволили

    Чтобы находить ошибки до выпуска продукта.

  13. Контрактное тестирование без единой строки кода: наш инструмент, наши грабли и честный разбор альтернатив

    Чтобы находить ошибки до выпуска продукта.

Сборка и производительность

  1. Webpack 5 — Asset Modules

    Чтобы находить узкие места и ускорять систему.

  2. TypeScript для конфигурации WebPack (FE and BE)

    Чтобы находить ошибки типов до запуска.

  3. Миграция с Webpack и react-scripts на Vite: Путь к Быстрому и Легковесному React

    Чтобы собирать интерфейс из переиспользуемых компонентов.

  4. Переход с Vue-CLI и Webpack на Vite: ускоряем разработку Vue 3

    Чтобы находить узкие места и ускорять систему.

  5. Пишем свой плагин для Webpack

    Чтобы находить узкие места и ускорять систему.

  6. Сборщики Frontend и когда их применять

    Чтобы находить узкие места и ускорять систему.

  7. Не спешите выкидывать Webpack: разбор альтернатив и реальных сценариев миграции

    Чтобы находить узкие места и ускорять систему.

  8. Улучшаем производительность: виртуальный рендеринг для больших объемов данных

    Чтобы находить узкие места и ускорять систему.

  9. Улучшаем производительность сайта с помощью CSS

    Чтобы находить узкие места и ускорять систему.

  10. Как на практике работать над перфомансом веб-приложения: опыт Авто.ру

    Чтобы находить узкие места и ускорять систему.

  11. Не JavaScript’ом единым: как фронтенд-разработчику затащить на собесе

    Чтобы находить узкие места и ускорять систему.

  12. Коллекции

    Чтобы находить узкие места и ускорять систему.

  13. Работа с объектами

    Чтобы находить узкие места и ускорять систему.

Безопасность и управление доступом

  1. Вайбкод и безопасность: как не задеплоить уязвимости вместе с фичами

    Чтобы ограничивать доступ и защищать учётные записи.

  2. Разработчики всё ещё путают JWT, JWKS, OAuth2 и OpenID Connect — разбираем на примерах. Часть 2

    Чтобы ограничивать доступ и защищать учётные записи.

  3. Локальное хранилище или куки? Безопасное хранение JWT на клиенте

    Чтобы ограничивать доступ и защищать учётные записи.

  4. OAuth 2.0 -> OAuth 2.1. Что дальше?

    Чтобы ограничивать доступ и защищать учётные записи.

  5. RBACX — универсальный RBAC/ABAC-движок авторизации для Python

    Чтобы ограничивать доступ и защищать учётные записи.

  6. Токены доступа и API Gateway: как обеспечить безопасность запросов

    Чтобы ограничивать доступ и защищать учётные записи.

  7. OAuth 2.0

    Чтобы ограничивать доступ и защищать учётные записи.

  8. Реализация сервиса сканирования на основе OWASP ZAP

    Чтобы ограничивать доступ и защищать учётные записи.

  9. «РБПО для бедных»: сказ о том, как стартап безопасность прикручивал

    Чтобы ограничивать доступ и защищать учётные записи.

  10. Безопасность приложений на Typescript от А до Я: гайд по защите от очевидных и не очень уязвимостей

    Чтобы находить ошибки типов до запуска.

  11. Шпаргалки по безопасности: JWT

    Чтобы ограничивать доступ и защищать учётные записи.

  12. CI/CD Kubernetes платформа Gitorion. Реестр Docker-образов Harbor c аутентификацией в Keycloak и доступом по ролям RBAC

    Чтобы одинаково запускать приложение в любой среде.

  13. OWASP API Security Top 10 RC

    Чтобы ограничивать доступ и защищать учётные записи.

CI/CD и наблюдаемость

  1. Как я уменьшил Docker-образ Go-приложения с 1.92 GB до 9 MB

    Чтобы одинаково запускать приложение в любой среде.

  2. Как запустить контейнер Docker внутри конвейера GitLab CI

    Чтобы одинаково запускать приложение в любой среде.

  3. Настройка GitLab CI/CD: понимаем принципы работы и запускаем первый pipeline

    Чтобы быстро находить причины сбоев.

  4. Запуск werf в GitLab CI/CD без Docker-сервера

    Чтобы одинаково запускать приложение в любой среде.

  5. Сборка и деплой однотипных микросервисов с werf и GitLab CI

    Чтобы быстро находить причины сбоев.

  6. Почему ваш Docker-контейнер взломают завтра (и как этого избежать)

    Чтобы одинаково запускать приложение в любой среде.

  7. «База» по метрикам в Prometheus

    Чтобы быстро находить причины сбоев.

  8. Мониторинг и логирование DWH, часть 2: Prometheus, Grafana, Zabbix, ELK, OpenSearch, Loki — как выбрать рабочий стек

    Чтобы быстро находить причины сбоев.

  9. Как мы наблюдаем за метриками в дата-центре и развиваем наш мониторинг

    Чтобы быстро находить причины сбоев.

  10. Как внедрить наблюдаемость в микросервисное приложение с помощью OpenTelemetry, Jaeger и Prometheus

    Чтобы быстро находить причины сбоев.

  11. Наблюдаемость SRE: пространства имен и структура метрик

    Чтобы быстро находить причины сбоев.

  12. Распределенное логирование и трассировка для микросервисов

    Чтобы быстро находить причины сбоев.

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

    Чтобы быстро находить причины сбоев.

Планирование разработки

  1. Планирование проекта

    Чтобы выбрать приоритеты и согласовать действия.

Все подборки для Fullstack-разработчика →