Базовое понимание работы веба
Если вы занимаетесь веб-разработкой, важно понимать, как работает веб. Это включает в себя знание того, как функционирует интернет, что такое IP-адреса и как они объединяются в глобальную сеть.
DNS и его роль
Необходимо знать, что такое DNS и как он работает. Например, что происходит, когда вы вводите в браузере youtube.com. Также полезно понимать, как использовать файл hosts для изменения DNS-настроек.
Привязка домена к серверу
Важно разбираться, как запустить сайт на собственном домене второго или третьего уровня. Это включает настройку связки домена и сервера, особенно если используется Linux и веб-сервер, такой как NGINX.
HTTP и HTTPS
Необходимо понимать разницу между HTTP и HTTPS, а также уметь самостоятельно настроить SSL-сертификат для работы сайта по защищённому HTTPS-протоколу.
Основы работы HTTP
Следует знать, какие бывают HTTP-запросы, их различия и ситуации, в которых целесообразно использовать разные методы. Также полезно понимать основные HTTP-статусы, их значения и структуру HTTP-запросов. В идеале, вы должны уметь продемонстрировать их работу, например, через telnet.
Cookies и их назначение
Важно понимать, что такое Cookies, какие они бывают и как с ними работать. Это включает работу с ними в JavaScript на клиентской стороне, а также на серверной стороне.
Авторизация и аутентификация
Необходимо разбираться в принципах авторизации и аутентификации, а также знать разницу между этими процессами, особенно при работе с веб-сайтами и мобильными приложениями.
Механизм сессий
В идеале, вы должны уметь настроить механизм сессий без использования веб-фреймворков. Это поможет вам понять, что происходит под капотом у популярных решений, таких как Django. Знание этих принципов обеспечит глубокое понимание работы веба.
Эти знания составляют базу, необходимую любому веб-разработчику. Двигаемся дальше!
Базовые знания фронтенд-технологий для веб-разработчика
Каждый веб-разработчик должен знать хотя бы азы фронтенд-технологий. Эти знания необходимы для понимания того, как устроены веб-страницы и как с ними взаимодействуют пользователи.
Основы HTML и CSS
В первую очередь необходимо знать HTML (язык гипертекстовой разметки) и CSS (язык каскадных стилей), который позволяет оформлять веб-страницы. Используя эти технологии, разработчик должен уметь минимально верстать страницы и создавать базовые блоки.
Важно разбираться в таких понятиях, как семантическая разметка, настройка шрифтов, размещение блоков на странице, margins и paddings. Также нужно уметь использовать flexbox, float и таблицы для организации структуры страницы.
Дополнительно полезно изучить адаптивную вёрстку, понимать, как работают media queries и как сделать страницу удобной для разных устройств.
Основы JavaScript
Современный веб-разработчик должен знать хотя бы базовые вещи о JavaScript. Важно понимать, что в 2020 году необходимо изучать не jQuery, а нативный JavaScript и JavaScript API браузера.
Ключевые аспекты, которые нужно изучить:
- document.querySelector – выбор элементов страницы;
- Работа с CSS-стилями из JavaScript;
- Переменные, циклы, функции в JavaScript;
- Отправка AJAX-запросов – как на стороне фронтенда (JavaScript), так и на стороне бэкенда (например, на Python);
- Асинхронность JavaScript – понимание Promise и async/await;
- Основы работы с React или Vue.js (по желанию).
Знание JavaScript поможет вам более эффективно работать с веб-приложениями и улучшить взаимодействие пользователей с вашим сайтом.
Переход к бэкенду
Разобравшись с фронтендом, можно переходить к изучению серверных технологий, обеспечивающих обработку данных и взаимодействие с базами данных.
Глубокое знание Python: что необходимо изучить
Чтобы серьезно владеть Python, необходимо изучить три ключевых аспекта: его синтаксис, стандартную библиотеку и основные сторонние (third-party) библиотеки.
Знание синтаксиса Python
Базовое знание Python начинается с синтаксиса. Однако одного знания синтаксиса недостаточно. Важно понимать, как применять его на практике.
Основные темы, которые необходимо изучить:
- Определение переменных, функций, модулей и пакетов.
- Ветвления (if, elif, else) и циклы (for, while).
- Типы данных: числа, строки, последовательности (списки, кортежи, множества, словари).
- Слайсы и преобразование типов данных.
- Форматирование строк.
- Классы и объекты (ООП).
- Аргументы функций: позиционные, keyword, args и kwargs.
- Функции высшего порядка:
map()
,reduce()
,zip()
. - Лямбда-функции.
- Генераторы и декораторы.
- Обработка исключений.
Все эти конструкции должны быть освоены до автоматизма, чтобы при написании кода вы не задумывались над их использованием, а сосредоточились на логике программы.
Асинхронность в Python
Асинхронное программирование – важный аспект Python. Необходимо понимать разницу между многопоточностью, многопроцессорностью и асинхронностью. Уметь применять asyncio
в реальных проектах.
Стандартная библиотека Python
Глубокое знание стандартной библиотеки позволит эффективно решать задачи без использования сторонних решений. Важно освоить:
- Работу с файлами (текстовые файлы, CSV).
- Обработку аргументов командной строки.
- Использование
collections
для работы с расширенными структурами данных. - Регулярные выражения.
- Логирование.
- Работу с JSON и pickle.
- Работу с датами и временными зонами (модуль
datetime
, библиотекаpytz
).
Популярные сторонние библиотеки
Python богат экосистемой сторонних библиотек, которые значительно расширяют его возможности. Среди ключевых:
requests
– для работы с HTTP-запросами.aiohttp
– асинхронные HTTP-запросы и веб-сервер.- Библиотеки для работы с Excel, PDF, XML, HTML (
BeautifulSoup
). Celery
– для организации фоновых задач.Redis
– быстрая кэш-память.
Веб-фреймворки
Если планируете работать с веб-разработкой, важно изучить один из популярных фреймворков:
Django
– основной и наиболее востребованный фреймворк.Flask
– легковесный микро-фреймворк.aiohttp
– асинхронный веб-фреймворк.
Минимальный уровень знаний Django включает:
- Создание проектов и приложений.
- Работу с моделями и миграциями.
- Настройку маршрутизации и контроллеров (Views).
- Тестирование.
- Работу с ORM и шаблонизатором Django.
- Понимание правильной структуры Django-проектов.
- Работу с административной панелью.
- Настройку аутентификации и авторизации пользователей.
- Создание кастомных management-команд.
Дополнительно полезно изучить Django REST Framework (DRF), если планируете разрабатывать API.
Следование стандартам разработки
В случае Python это PEP8.
Принципы написания качественного ПО
- Нейминг
- KISS, DRY
- ООП и принципы SOLID
- Основные шаблоны проектирования
- Чистый код
Это большая тема, и хотя многие аспекты выходят за рамки уровня junior, базовые принципы нужно знать и применять с самого начала.
Тестирование
Какие бывают тесты, чем они отличаются, когда что использовать. Методологии разработки, связанные с тестированием, такие как TDD, и их преимущества.
Инструментарий
- IPython – удобный Python shell
- IDE – например, PyCharm
- PDB – инструмент для отладки
Git
- Создание репозиториев
- Работа с ветками
- Коммиты
- Слияния (merge)
Chrome Developer Tools
Работа с DOM-деревом, сетью, JS-консолью.
Терминальные утилиты Linux
- cat, less, head/tail
- grep и ripgrep
- awk, xargs
- htop и другие
Про Linux поговорим ещё ниже.