109 статей для Junior Fullstack-разработчика: большая подборка
Материалы для первого полного веб-приложения: интерфейс, JavaScript, серверная логика, SQL, REST API, Git, тестирование, Docker и безопасность.
Как работает веб и HTTP
- Установка базового программного обеспечения
Чтобы подготовить рабочую среду разработчика.
- Работа с файлами
Чтобы правильно организовать файлы проекта.
- Веб-страницы, веб-сайты, веб серверы и поисковики
Чтобы понять связь страниц, сайтов и серверов.
- Публикация вашего веб-сайта
Чтобы разместить готовый сайт в интернете.
- Как работает Веб
Чтобы понять обмен данными браузера и сервера.
- Что выбрать новичку для домашнего веб-сервера: Nginx, Caddy или Apache
Чтобы понимать обмен данными между браузером и сервером.
- Шаблон backend сервера на Golang — часть 1 (HTTP сервер)
Чтобы понимать обмен данными между браузером и сервером.
- Мосты цифрового мира: клиент-сервер, сервер-сервер
Чтобы понимать обмен данными между браузером и сервером.
- Слабо поднять такой крошечный контейнер? Создаем контейнеризованный HTTP-сервер на 6kB
Чтобы одинаково запускать приложение в любой среде.
- Пример HTTP-сервера на PHP с использованием файберов
Чтобы понимать обмен данными между браузером и сервером.
- Трехэтажные C++ные шаблоны в реализации встраиваемого асинхронного HTTP-сервера с человеческим лицом
Чтобы выполнять долгие операции без зависания.
- HTTP/1 и HTTP/2 сервера на nodejs
Чтобы понимать обмен данными между браузером и сервером.
HTML, CSS и интерфейсы
- Основы HTML
Чтобы правильно разметить структуру страницы.
- Начало работы с HTML
Чтобы правильно разметить структуру страницы.
- Что внутри "head"? Метаданные в HTML
Чтобы настроить заголовок и данные страницы.
- Основы редактирования текста в HTML
Чтобы семантически оформить текст на странице.
- Продвинутое форматирование текста
Чтобы сделать содержание понятным браузеру.
- Структура документа и веб-сайта
Чтобы сделать содержание понятным браузеру.
- Основы CSS
Чтобы управлять внешним видом страницы.
- Как работает CSS
Чтобы управлять внешним видом страницы.
- Начало работы с CSS
Чтобы управлять внешним видом страницы.
- Селекторы CSS
Чтобы точно выбирать элементы для стилизации.
- Селекторы атрибута
Чтобы точно выбирать элементы для стилизации.
- Псевдоклассы, псевдоэлементы
Чтобы точно выбирать элементы для стилизации.
JavaScript, TypeScript и компоненты
- Основы JavaScript
Чтобы добавить странице логику и интерактивность.
- Что такое JavaScript?
Чтобы добавить странице логику и интерактивность.
- Первое погружение в JavaScript
Чтобы добавить странице логику и интерактивность.
- Переменные — место хранения необходимой информации
Чтобы хранить и изменять данные в коде.
- Базовая математика в JavaScript — числа и операторы
Чтобы выполнять вычисления в JavaScript.
- Работа с текстом — строки в JavaScript
Чтобы обрабатывать текстовые данные в коде.
- Полезные методы для строк
Чтобы обрабатывать текстовые данные в коде.
- Массивы
Чтобы хранить и обрабатывать наборы данных.
- Принятие решений в вашем коде — условные конструкции
Чтобы выполнять код по заданным условиям.
- Зацикливание кода
Чтобы повторять операции без дублирования кода.
- Основы Reactjs: отображение и передача данных
Чтобы собирать интерфейс из переиспользуемых компонентов.
- Знакомство с TypeScript: базовая типизация и ключевые возможности
Чтобы находить ошибки типов до запуска.
Языки и серверные фреймворки
- Экономика выбора: Python, Java, Go при разных RPS. Деньги или скорость?
Чтобы выбрать стек и реализовать серверную логику.
- Руководство для начинающих по серверной веб-разработке с Node.js
Чтобы выбрать стек и реализовать серверную логику.
- 9 лет в монолите на Node.JS
Чтобы выбрать стек и реализовать серверную логику.
- Как устроены память и Garbage Collector в CPython: разбор для Python backend interview
Чтобы выбрать стек и реализовать серверную логику.
- Дорожная карта Java backend-разработчика: c Junior до Middle
Чтобы выбрать стек и реализовать серверную логику.
- Апгрейд и рефакторинг PHP-проектов — теперь это просто с Rector
Чтобы выбрать стек и реализовать серверную логику.
- Практическое руководство по разработке бэкенд-сервиса на Python
Чтобы выбрать стек и реализовать серверную логику.
- 5 неочевидных возможностей FastAPI: упрощаем работу с бэкендом на Python
Чтобы выбрать стек и реализовать серверную логику.
- Фреймворк Swoole на PHP для начинающих
Чтобы выбрать стек и реализовать серверную логику.
- О Web-Backend разработке для начинающих
Чтобы выбрать стек и реализовать серверную логику.
- От C до Go. Как Golang объединил лучшие черты своих предшественников
Чтобы выбрать стек и реализовать серверную логику.
- Архитектура современных корпоративных Node.js-приложений
Чтобы выбрать стек и реализовать серверную логику.
SQL и базы данных
- Выбор индексов в базах данных для highload‑систем
Чтобы получать и изменять данные запросами.
- Погружаемся в базы данных и SQL: полезные материалы и инструменты от сотрудников Selectel
Чтобы получать и изменять данные запросами.
- Сравнение SQL- и NoSQL-баз данных
Чтобы получать и изменять данные запросами.
- «Postgres. Первое знакомство» (11-е издание) надёжный проводник в мир PostgreSQL
Чтобы получать и изменять данные запросами.
- B-Tree индекс и его производные в PostgreSQL
Чтобы получать и изменять данные запросами.
- Больше разработчиков должны знать это о базах данных
Чтобы получать и изменять данные запросами.
- Здоровье индексов в PostgreSQL глазами Java-разработчика
Чтобы получать и изменять данные запросами.
- TimescaleDB против всех: как база данных справляется с рядом сложных задач
Чтобы получать и изменять данные запросами.
- Погружение в индексы PostgreSQL
Чтобы получать и изменять данные запросами.
- Self-modifying SQL: динамическое изменение SQL-кода в процессе выполнения
Чтобы получать и изменять данные запросами.
- Виды баз данных. Большой обзор типов СУБД
Чтобы получать и изменять данные запросами.
- Распространённые ошибки изменения схемы базы данных PostgreSQL (Николай Самохвалов)
Чтобы получать и изменять данные запросами.
REST API и обмен данными
- JSON:API 一 это не JSON API
Чтобы передавать структурированные данные между системами.
- Валидация тела ответа с помощью JSON-Schema
Чтобы передавать структурированные данные между системами.
- REST API на котиках
Чтобы проектировать понятные и стабильные API.
- Принципы построения REST JSON API
Чтобы передавать структурированные данные между системами.
- Проектирование REST API: спорные вопросы с проектов и собеседований на системного аналитика (и не только)
Чтобы проектировать понятные и стабильные API.
- JSON API – работаем по спецификации
Чтобы передавать структурированные данные между системами.
- Безопасность REST API от А до ПИ
Чтобы проектировать понятные и стабильные API.
- Как проектировать качественные API
Чтобы проектировать понятные и стабильные API.
- Создание RESTful API с помощью Django и Django REST Framework
Чтобы проектировать понятные и стабильные API.
- Полный набор gRPC, RESTful JSON API, WS и Swagger из одного proto файла. От введения до нюансов и тонкостей grpc-gateway
Чтобы передавать структурированные данные между системами.
- Json api сервис на aiohttp: middleware и валидация
Чтобы передавать структурированные данные между системами.
- Как написать свою первую спецификацию на REST API. С какими ошибками может столкнуться аналитик и как их избежать?
Чтобы проектировать понятные и стабильные API.
Git, Linux и командная строка
- Git для новичков (часть 1)
Чтобы контролировать изменения и работать в команде.
- Git для новичков (часть 2)
Чтобы контролировать изменения и работать в команде.
- Git для самых маленьких. От первой команды до настройки SSH
Чтобы контролировать изменения и работать в команде.
- Git для новичков: ветки, коммиты и первый pull request
Чтобы контролировать изменения и работать в команде.
- Гайд по Git для начинающих: основные команды, работа с ветками и типичные ошибки
Чтобы контролировать изменения и работать в команде.
- 15 базовых советов по Git для эффективной работы каждый день
Чтобы контролировать изменения и работать в команде.
- Linux: Файлы, навигация и поиск
Чтобы контролировать изменения и работать в команде.
- Linux: Процессы
Чтобы контролировать изменения и работать в команде.
- Linux для начинающих: WSL — это читерство. Как Microsoft дал нам Linux без головной боли
Чтобы контролировать изменения и работать в команде.
- Bash-скрипты, часть 3: параметры и ключи командной строки
Чтобы контролировать изменения и работать в команде.
- Linux для начинающих: WSL — это читерство. Как Microsoft дал нам Linux без головной боли. Часть 2
Чтобы контролировать изменения и работать в команде.
- SSH с высоты птичьего полёта, или разгребаем кучи ключей
Чтобы контролировать изменения и работать в команде.
Тестирование и отладка
- Что пошло не так? Устранение ошибок JavaScript
Чтобы быстрее находить причины ошибок в браузере.
- Отладка JavaScript в Chrome DevTools для начинающих фронтендеров
Чтобы быстрее находить причины ошибок в браузере.
- Chrome DevTools: Хитрости при отладке
Чтобы быстрее находить причины ошибок в браузере.
- Как эффективно использовать Chrome DevTools для QA: подборка интересных возможностей
Чтобы быстрее находить причины ошибок в браузере.
- Мне этот Chrome DevTools теперь абсолютно понятен
Чтобы быстрее находить причины ошибок в браузере.
- Экипировка Бонда: полезные инструменты DevTools
Чтобы быстрее находить причины ошибок в браузере.
- Как писать юнит-тесты, если совсем не хочется
Чтобы находить ошибки до выпуска продукта.
- Как упростить себе жизнь: удобные юнит-тесты с JUnit и AssertJ
Чтобы находить ошибки до выпуска продукта.
- От Jest к Vitest на backend тестах: как мы мигрировали тестовый фреймворк для ускорения CI и повышения стабильности
Чтобы находить ошибки до выпуска продукта.
- Как провести нагрузочное тестирование правильно. Часть 1: как думать о тестировании производительности
Чтобы находить ошибки до выпуска продукта.
- Как перестать беспокоиться и начать внедрять интеграционные тесты
Чтобы находить ошибки до выпуска продукта.
- Гайд по автотестам, часть 2. Юнит-тесты
Чтобы находить ошибки до выпуска продукта.
Docker и безопасность
- Основы Docker: контейнеризация, Dockerfile и Docker Compose. Часть 2
Чтобы одинаково запускать приложение в любой среде.
- Docker изнутри: исчерпывающее руководство. Механизмы контейнеризации + примеры, эксперименты и реализация
Чтобы одинаково запускать приложение в любой среде.
- Docker Fundamentals: что внутри compose.yaml и как там всё устроено
Чтобы одинаково запускать приложение в любой среде.
- Docker Compose: Фичи, которые ускорят вашу разработку
Чтобы одинаково запускать приложение в любой среде.
- Управление временем контейнера с помощью docker-compose и faketime
Чтобы одинаково запускать приложение в любой среде.
- Пишем простой docker-compose.yml для контейнеризации приложения (React, Spring Boot, PostgreSQL, pgAdmin)
Чтобы одинаково запускать приложение в любой среде.
- Азбука безопасности в Kubernetes: аутентификация, авторизация, аудит
Чтобы одинаково запускать приложение в любой среде.
- Пишем gRPC сервис на Go — сервис авторизации
Чтобы одинаково запускать приложение в любой среде.
- Простой сервис аутентификации и авторизации по JWT на основе фильтров SpringSecurity
Чтобы одинаково запускать приложение в любой среде.
- Как правильно хешировать пароли в высоконагруженных сервисах. Опыт Яндекса
Чтобы одинаково запускать приложение в любой среде.
- SmartFlow: «В начале был пароль…» или новая аутентификация VK ID
Чтобы одинаково запускать приложение в любой среде.
- Соль и перец в безопасности паролей
Чтобы одинаково запускать приложение в любой среде.
Организация работы
- Декомпозиция целей и задач
Чтобы превращать цели в понятные задачи.