Aloha! Продолжаю говорить о том, как стать Full-Stack разработчиком. В прошлой статье я уже поведал о первом этапе. О том, как стать Front-End разработчиком. Сегодня коснусь второго этапа. Он связан с программированием логики веб-сайтов. Другими словами, в этом посте вы найдете дорожную карту, которая поможет вам стать Back-End разработчиком.
Содержание
Предварительные знания
Для начала стоит сказать, что Back-End подразумевает под собой написание программ, которые выполняются на серверной стороне. По сути, это программирование серверов для получения нужной функциональности веб-сайтов.
Раз уж речь идет о серверах, то неплохо бы изучить то, как они работают и устроены. Нужно хотя бы поверхностно представлять, как функционируют железки внутри серверной стойки.
Технологии не стоят на месте, и каждый день появляются новые аппаратные части, начиная от процессоров и заканчивая материнскими платами. Какой-то полезной и актуальной книги по этому вопросу мне найти не получилось. Но если вы знаете о такой, то, пожалуйста, сообщите о ней в комментариях.
Так что пользуйтесь поисковыми системами и постарайтесь сами разобраться, как устроены аппаратные части компьютера и как они взаимодействуют между собой. Я приведу чек-лист, который облегчит эту задачу. Таким образом, нужно понимать что это такое и как работают следующие вещи.
- Тактовая частота
- Количество ядер
- North Bridge
- Виртуализация
- Процессы
- Службы
- Видеокарта
- Звуковая карта
- Материнская карта
- HDD
- SSD
- БП
- ИБП
- Интернет и как он устроен
- Модем
- Модуляция
- Демодуляция
- ADSL
- FTTB
- WiFi
- GPRS
- 3G
- 4G
- LAN
- Торрент
- Принципы работы сети
- Сетевые протоколы
- Методы шифрования
Окей, двигаемся дальше. После ознакомления с базовыми знаниями устройства компьютеров и их сетей перейдем непосредственно к языкам программирования серверных сценариев.
PHP
Пожалуй, самый популярный язык серверного программирования – это PHP. Почти все широко распространенные CMS написаны с помощью PHP. WordPress, кстати, тоже. Любой нормальный хостинг имеет веб-сервер, на котором установлен интерпретатор PHP. Для запуска сценария не требуется никаких танцев с бубном – все работает из коробки. Достаточно загрузить скрипт на сервер и просто обратиться к нему.
Книги
- Дмитрий Котеров, Игорь Симдянов. PHP 7
- Сейед Тахагхогхи. Руководство по MySQL (книга не относится напрямую к PHP, но умение правильно работать с базами данных пригодится при изучении языка)
Фреймворки
- Laravel
- Yii
- Kohana
- Phalcon
- CodeIgniter
- Symfony
Касательно PHP, есть такая прелестная штука, как репозиторий пакетов для Composer. Это сборник библиотек, где можно найти практически любое решение для задач проекта.
CMS
- DLE
- Drupal
- Joomla
- WordPress
- vBulletin
- inVision
- Power Board
- ModX
- Open Cart
- Magento
- LiveStreet
- Social Engine
- PrestShop
- phpBB
Дополнительно
- Кэширование байт-кода
- Memcached
- Sphinx
- RabbitMQ для работы с AMQP
- Дебаггер XHProf
Задачи
- Изучить материал (теория + практика)
- Изучить популярные CMS
- Изучить фреймворки и кейсы их применения
- Изучить способы кэширования
- Научиться пользоваться XHProf
- Научиться работать с репозиторием пакетов
Python
Давно хотел начать писать сайты на Python, но все как-то руки не доходили. Это многоцелевой язык программирования, который много где используется. Начиная от сложных математических расчетов и заканчивая программированием искусственного интеллекта. В чистом виде Python мало пригоден для создания веб-сайтов. Необходимо использовать один из фреймворков. Django самый популярный.
Фреймворки
- Django
- Flask
- Web2PY
- CherryPY
Книги
- Swaroop Chitlur, Владимир Смоляр. Укус Питона
- Зед Шоу. Лёгкий способ выучить Python
Сайты
Аналогично PHP, для Python есть репозиторий пакетов – pyp.
Задачи
- Изучить материал (теория + практика)
- Изучить фреймворки и кейсы их применения
- Освоить Django и сделать на нем несколько веб-сайтов
- Научиться работать с репозиторием пакетов
JavaScript
Так, стоп. JavaScript же мы рассматривали в предыдущей статье, когда говорили о Front-End разработке. Да, это не ошибка. JavaScript можно использовать и для программирования серверов. Но с одной оговоркой. Нам понадобится программная платформа Node.js.
Если вы добрались до этой строки, я подозреваю, что тема Front-End вами уже изучена. Соответственно, с JavaScript вы успели хорошо познакомиться и владеете им на приличном уровне. Все, что нужно сделать – это заняться изучением Node.js.
Сайты
- Документация на nodejs.org
- Скринкаст NODE.JS
- Руководство для начинающих по Node.js от Felix’a
- Node.js для начинающих
- Руководства по Node.js
Дополнительно необходимо понять и изучить асинхронное программирование. Это важная тема, без которой сложно себе представить серверное программирование на JavaScript.
Фреймворки
- Express
В случае использования Node.js стоит познакомиться с СУБД MongoDB. Именно этот тип баз данных обычно используется в связке с серверным JavaScript.
Для Node.js есть пакетный менеджер NPM. Позволяет использовать библиотеки сторонних разработчиков.
Задачи
- Изучить материал (теория + практика)
- Изучить асинхронное программирование
- Изучить фреймворк Express и кейсы его применения
- Научиться работать с MongoDB
- Научиться работать с NPM
Что должен уметь Back-End разработчик
С языками закончили. Теперь перейдем к списку того, что вы должны уметь как Back-End разработчик после окончания обучения. Это самый минимум. Не важно, какой язык программирования был выбран, все приведенное ниже нужно знать и/или уметь делать.
- Работа с СУБД MySQL
- Основы синтаксиса SQL (SELECT, UPDATE, DELETE, INSERT, JOIN, GROUP BY, ORDER BY, LIMIT)
- Экспорт и импорт баз данных
- Индексы MySQL
- Синтаксис и команды серверных языков программирования, базовые функции
- Типы данных
- Принципы создания сайтов
- Создание своего блога с нуля
- Создание регистрации и авторизации на сайте
- Пользовательские профили и возможность их редактировать самому пользователю
- Создание административной панели для владельца сайта для управления ресурсом, просмотра и
- редактирования зарегистрированных пользователей, публикация информации и т.д.
- Создание пагинации
- Работа с timestamp
- Подключение кассы для приема платежей на сайте, например, Robokassa
- Работа с API Вконтакте
- Работа с cURL
- Работа с .htaccess, особенно с mod_rewrite
- AJAX
- Паттерны проектирования
- MVC и HMVC
- Понимание и работа с Memcached
- Работа с файлами
- Работа с изображениями, GD
- Файловые замки
- CRONTAB
- Cloudfare, HTTPS
- JSON
- XML
- Защита от XSS атак
- Защита от SQL-инъекций
- Защита от CSRF атак
- Защита от “дурака”
- xDebug и бэктрейсы для дебага
- Регулярные выражения
- Библиотека xCRUD
- Redis
- Работа с Composer
- Работа с ORM, например, RedBeanPHP
- Парсинг сайтов с помощью PHP Simple HTML DOM Parser
- PDO
- Работа с PHAR архивами
Если захочется получить бумажки (сертификаты), свидетельствующие о профессиональной зрелости, то сделать это можно на FreeCodeCamp. Там же получите навыки командной работы и поучаствуйте в реальных проектах как разработчик.
Заключение
На этом завершаю путеводитель, который поможет стать Full-Stack разработчиком. Опять же, если вам есть, что добавить к этой статье, то комментарии к вашим распоряжениям. Очень хочу услышать об опыте других разработчиков. Особенно тех, кто уже давно в сфере разработки сайтов.
Интересных и высокооплачиваемых проектов!