Что выбрать
Содержание:
- День Из Жизни Фронтенд Разработчика
- Какая Зарплата у Веб-Разработчика?
- Вердикт
- API
- Как стать backend-разработчиком с нуля
- Взаимодействие с платежным шлюзом
- Frontend
- Уведомления по Email, SMS и Webhooks
- Командная работа
- Сторонние API, фреймворки и пакеты
- Пора заканчивать
- Как стать back end разработчиком? Что нужно знать и уметь?
- Backend-разработка
- Java
- Подписка и тарифные планы
- Выбираем направление
- PHP
- Программы для версионизации
- Работа с Open Source
- Content Security Policy
День Из Жизни Фронтенд Разработчика
Существует ли лучший способ определить, какая специализация вам подходит лучше, чем прожить день в качестве фронтенд или бэкенд разработчика? Скорее всего нет.
Эта компания имеет команды UI/UX дизайнеров, фронтенд и бэкенд разработчиков, а также системных администраторов.
Если бы вы были на месте фронтенд разработчика, то ваш день начинался бы примерно в 9 утра (если повезёт). Вы придёте на работу, возьмёте чашку кофе и пойдёте обсуждать с веб-дизайнерами новую идею об улучшении внешнего вида сайта компании.
Если идея будет принята, то вам придётся переделать 60% фронтенд сайта. Так как эта идея имеет новый дизайн, то с этого момент начнётся ваша работа.
Новый дизайн полностью адаптивный (сейчас без этого почти никуда), выглядит лучше, чем то, что вы когда-либо видели. Он полон анимаций, параллакса и многого другого. Реализация всего этого будет непростой задачей.
Конечно, скорее всего вы будете не в восторге, так как предыдущая версия сайта работала идеально, а новый дизайн займёт у вас месяцы работы. Программисты и веб-разработчики не любят выполнять необязательную работу.
Какая Зарплата у Веб-Разработчика?
Несмотря на то, что фронтенд и бэкенд разработчики получаются довольно неплохую зарплату в сравнении со средней по своей стране, ваш выбор может отличаться в зависимости от этого аспекты.
Давайте взглянем на цифры и подведём некий итог в споре “front end vs back end”, что позволит вам принять взвешенное решение. Эти данные будут представлены в качестве сравнения.
Зарплата Фронтенд
По данным glassdoor.com средняя зарплата фронтенд разработчика в городе Нью Йорк равна $111,728, что на 20% выше чем национальный уровень по стране. Это может быть объяснено тем, что крупные города имеют высокие расходы на проживания и более развитую экосистему бизнеса.
В Лондоне, Великобритания, средняя годовая зарплата для фронтенд разработчика составляет около $52,000, что 22% выше национального среднего уровня, по данным glassdoor.com. Как вы заметили, зарплата серьёзно отличается, но общий уровень относительно других зарплат в стране остаётся практически таким же.
В Индии среднегодовая зарплата для фронтенд разработчика составляет порядка $5,000. Это может показаться очень низким уровнем по сравнению с другими данными, но вы должны учитывать общий уровень жизни и зарплат в стране!
Зарплата Бэкенд
В Нью Йорке средняя зарплата бэкенд разработчика будет равна $133,182, что на 17% выше национального среднего уровня зарплат. Как вы наверное заметили, то разнится с другими странами и города также высока.
В Лондоне средняя зарплата бэкенд разработчика является уже более высокой и равна $74,000, на 32% выше средней. В Индии фронтенд и бэкенд разработчики получают одинаковую заработную плату.
Вердикт
Если дело касается зарплаты, то front end и back end разработчики не сильно разнятся, но бэкенд специалист может рассчитывать на большее.
Почему?
Так как бэкенд подразумевает больше обязанностей и ответственности. Ошибка бэкенд разработчика может стоить компании больше, чем ошибка фронтенд разработчика в стилях.
Если в бэкенде сайта есть уязвимость, то он может быть взломан и компания понесёт серьёзные убытки. Если фронтенд будет иметь ошибку, то последствия будут менее плачевными.
Преимущества
- Простой в использовании
- Предлагает качественный контент
- Очень открытый в своих ценах
Особенности
- Бесплатные сертификаты об окончании
- Фокус на навыки науки о данных
- Гибкое расписание занятий
Посмотреть На Все Купоны Лучших Платформ Для Онлайн Обучения Преимущества
- Огромное разнообразие курсов
- Простая навигация
- Нет технических проблем
Особенности
- Огромное разнообразие курсов
- Политика 30-дневного возврата средств
- Бесплатные сертификаты об окончании
Посмотреть На Все Купоны Лучших Платформ Для Онлайн Обучения
Заключение
Надеемся, что теперь у вас есть более ясное представление о фронтенд и бэкенд разработке.
Если вы более заинтересованы во внешнем виде, чем сложных алгоритмах и плавной работе, то вы должны выбрать фронтенд разработку.
Это не означает, что эта специальность гораздо легче. Чтобы стать мастером своего дела вам нужно освоить множество библиотек и фреймворков. Вам нужно будет много времени для того, чтобы вы смогли внести свою лепту в более сложные проекты.
С другой стороны бэкенд разработчик может быть немного более сложным, так как требует более специализированных знаний, вместо стандартных HTML, CSS и JavaScript.
Фронтенд и Бэкенд. Выбор за вами?
API
Интерфейс доступа к функциям на сервере существовал и в нашем начальном приложении, но для потребителя выглядел хаотично. При разделении фронтенда и бэкенда нужно было больше определённости.
Цели для нового API сформировались из ежедневных трудностей в реализации новых продуктовых и дизайнерских идей. Нам были нужны:
- Слабая связанность компонентов системы, чтобы бэкенд и фронтенд можно было развивать параллельно.
- Высокая масштабируемость, чтобы новый API не мешал наращивать функциональность.
- Стабильность и согласованность.
Поиск решения для API начали не с бэкенда, как это обычно принято, а, наоборот — подумали, что нужно пользователям.
Наиболее распространены разного рода REST API. В последние годы к ним добавляют описательные модели через инструменты типа swagger, но нужно понимать, что это тот же REST. И, по сути, его главный плюс и в то же время минус — это правила, которые носят исключительно описательный характер. То есть никто не запрещает создателю такого API отклоняться от постулатов REST при реализации отдельных частей.
Другим распространённым решением является GraphQL. Он тоже не идеален, но в отличие от REST, GraphQL API — это не просто описательная модель, а настоящие правила.
Выше я говорил про систему, которая должна была согласовывать работу фронтенда и бэкенда. Прослойка (interlayer) — это именно тот промежуточный уровень. Рассмотрев возможные варианты работы с сервером, мы остановились на GraphQL в качестве API для фронтенда. Но, так как бэкенд написан на C++, то реализация GraphQL-сервера оказалась нетривиальной задачей. Не буду здесь описывать все возникшие сложности и ухищрения, на которые мы шли, чтобы их преодолеть, реального результата это не принесло. Посмотрели на проблему с другой стороны и решили, что простота — залог успеха. Поэтому остановились на проверенных решениях: отдельный Node.js сервер с Express.js и Apollo Server.
Далее нужно было решить, как обращаться к API бэкенда. Сначала смотрели в сторону поднятия REST API, потом пробовали использовать аддоны на C++ для Node.js. В итоге поняли, что это всё нам не подходит, и после подробного анализа для бэкенда выбрали API на базе gRPC-сервисов.
Собрав воедино полученный опыт использования C++, TypeScript, GraphQL и gRPC, мы получили архитектуру приложения, позволяющую гибко развивать бэкенд и фронтенд, продолжая при этом создавать единый программный продукт.
Получилась схема, где фронтенд общается с промежуточным сервером с помощью GraphQL-запросов (знает, что спросить и что получит в ответ). GraphQL-сервер в резолверах вызывает API функции gRPC-сервера, при этом для связи они используют Protobuf-схемы. API-сервер на базе gRPC знает, у какого микросервиса взять данные, или кому передать полученный запрос. Сами микросервисы при этом тоже построены на gRPC, что обеспечивает скорость обработки запросов, типизацию данных и возможность использования различных языков программирования для их разработки.
Общая схема работы после изменения архитектуры
Есть у этого подхода и ряд минусов, основным из них является дополнительная работа по настройке и согласованию схем, а также написанию вспомогательных функций. Но эти затраты окупятся, когда пользователей API станет больше.
Как стать backend-разработчиком с нуля
Большинство backend-разработчиков – это бывшие фронтенд-специалисты. Они уже знают часть нюансов работы и примерно понимают, что их ждет. Чтобы сделать первые шаги в должности backend-developer, надо знать любой язык программирования и уметь правильно писать коды.
Другие инструменты изучить тоже придется, но какие именно – зависит от проекта. Их можно осваивать по ходу работы.
Если новичок хочет освоить профессию и у него совсем нет опыта работы в данной сфере, ему придется проштудировать много статей и книг по backend-разработке, смотреть бесплатные обучающие видео и практиковаться.
Большим плюсом станут глубокие математические познания и высшее образование, связанное с IT-сферой.
Портфолио играет большую роль для работодателей. Собрать примеры выполненных работ можно после выполнения небольших заданий. Помощь в этом могут оказать биржи фриланса или курсы по backend-разработке.
Где учиться
Освоить все самому с нуля, да еще и влиться в компанию веб-разработчиков в качестве бэкенд-программиста, сложно. Поэтому для тех, кто понятия не имеет, что такое язык серверного программирования или фреймворки, лучшим вариантом будет записаться на курсы.
Вы изучите теорию и попробуете работу на практике, чтобы до конца разобраться, ваша эта деятельность или нет
Реальный опыт других специалистов покажет вам подводные камни профессии и детали, на которые стоит обратить внимание
Вы получите не фрагментарную информацию, как при самообучении, а целостный и полный набор знаний и навыков.
Кроме того, создатели курсов часто оказывают помощь в трудоустройстве.
Курсы для новичков и для тех, кто хочет знать больше:
- Профессия Java-разработчик
- Профессия PHP-разработчик
- Профессия 1С-разработчик
- Профессия Python-разработчик
- Python-разработчик с нуля
- Программирование
- Веб-разработчик с нуля
- Fullstack-разработчик на PHP
- Профессия PHP-разработчик
Решайте, что выбрать: изучение деятельности только бэкенд-специалиста или еще и фронтенд-разработчика. И остановитесь на обучающей платформе, подходящей лично для вас.
Где искать работу
Backend-разработчик нужен во всех сферах, где есть сайты или приложения, например, в IT-компаниях по созданию веб-сервисов или web-студиях.
Работа может быть как офисной, так и на дому. Второй вариант подойдет специалистам из регионов. Так те разработчики, кто не проживает в столице, могут искать вакансию в крупных фирмах, которых нет в глубинке.
А у бэкенд-программистов с опытом работы есть возможность попытать удачу на зарубежной арене. В международных проектах предлагают зарплату больше.
При этом обязательно надо знать английский, чтобы вести переговоры с иностранными заказчиками. Если вы не изучали этот язык – предлагаю вам ознакомиться с перечнем курсов английского языка на нашем блоге.
Взаимодействие с платежным шлюзом
Во время транзакции нужно:
- убедиться, что информация о кредитной карте не сохраняется, не передается в другие части приложения и безопасно отправляется на платежный шлюз для обработки;
- принять оплату, если транзакция прошла успешно, и отправить уведомление о том, что оплата удалась; иначе — отправить уведомление о неудаче и предложить пользователю попробовать оплатить в другой раз.
Вы также можете использовать сторонние сервисы, такие, как Paypal, которые позволяют интегрировать их интерфейс в виде формы (или кнопки) в ваше приложение, и тогда транзакции будут частично управляться этим сервисом.
Не забывайте про счета — людям нужны документы о транзакциях для уплаты налогов и т. д.:
- создайте раздел со счетами, который является частью профиля пользователя;
- сделайте удобную сортировку и экспорт данных по транзакциям в виде счет-фактур в формате PDF;
- убедитесь, что пользователи могут отправлять эти счета себе на электронную почту.
Как работает платежный шлюз:
- Ваши кассовые формы отправляют детали покупки на платежный шлюз для обработки.
- Платежный шлюз передает данные транзакции банку продавца.
- Банк продавца передает эту информацию о транзакции банку, который выпустил карту покупателя, для авторизации транзакции.
- Банк, который выпустил карту покупателя, либо одобряет, либо отклоняет транзакцию и отправляет информацию банку продавца.
- Если транзакция одобрена, то банк переводит средства на ваш счет.
- После одобрения сторонний платежный шлюз отправляет детали транзакции и ответ вашему приложению.
- И, наконец, вы отправляете уведомление покупателю, сообщая, одобрена ли транзакция.
Если остались вопросы, посмотрите это видео:
— YouTube
youtu.be
Frontend
В QIWI я с конца 2014 года, начинал работать как разработчик iOS–приложений, и, в принципе, пару лет занимался разработкой QIWI-кошелька. При этом не могу сказать, что было скучно – задачи были довольно разные и в рамках одного приложения: мы занимались интеграцией кошелька с другими нашими сервисами, чинили баги, подтягивали анимацию. Кроме этого, был занятный опыт по созданию приложения для Apple Watch. Потом немного расширил фокус и поработал еще и над iOS-приложением для «Совести».
И вот примерно тогда я начал потихоньку переходить в бэк. В плане гибкой методологии это даже удобно – я переключался, в первом спринте мог делать какие-то задачки по бэкенду, а во втором проводить интеграцию API, которое я же и написал.
Но в бэкенде на то время было слишком мало разработчиков и слишком здоровенный бэклог, так что в итоге я все же переключился на бэкенд полностью. То, что я делаю сейчас, это классические задачи бэкендера – пишу код в наших микросервисах, чиню баги, занимаюсь рефакторингом, постигаю Kotlin. Есть возможность работать и над свежим продуктом компании – QIWI Инвестор.
Кстати, не могу сказать, что за эти два года получилось как-то закостенеть во фронте, я отчетливо осознавал, что там тоже есть, куда развиваться. К примеру, я вижу, что сейчас происходит в команде мобильной разработки, и понимаю, что, останься я там, продолжил бы расти дальше вместе с ребятами.
Так что тут сложилась win-win ситуация – я хотел помочь команде и продукту (перевес в разработке был сильно не в сторону бэкендеров) и набраться новых знаний. Тимлиды все поняли и отпустили меня без каких-то претензий, продакт тоже.
Кроме этого, знания хотелось именно диверсифицировать, чтобы не привязываться к одной платформе (Android мне немного не по душе, но и Apple все же сдает позиции). Ну и было желание в случае чего уметь взять и сделать себе приложение самому (и фронт, и бэк), если вдруг появится какая-то клевая идея. Пока вот не пригодилось, правда.
Уведомления по Email, SMS и Webhooks
Когда пользователь совершает в вашем приложении важное действие, например, подписывается на обновления, создает новый аккаунт или проект, он должен знать, удалось это действие или нет. Уведомления — это способ сообщить вашему пользователю о статусе выполнения действия и помочь ему организовать рабочий процесс в вашем приложении
Уведомления — это способ сообщить вашему пользователю о статусе выполнения действия и помочь ему организовать рабочий процесс в вашем приложении.
Для разных случаев вы можете использовать разные уведомления:
- оповещения на экране приложения;
- электронные письма (верификация почты или подтверждение покупки);
- SMS (авторизация или завершение транзакции);
- webhook-уведомления в реальном времени для обратившихся к вашему приложению чат-ботов на разных платформах, например, Facebook, Telegram или Slack;
- регулярные письма со счетами за покупки и информацией об оплате подписки.
Командная работа
Про soft skills написано множество постов и, скорее всего, несколько книг, поэтому я не будут сильно вдаваться в их важность и необходимость — вы всё это уже читали много раз. На мой взгляд, главное — уметь работать в команде
Это не значит, что условный интроверт не справится, никто не требует от вас быть душой компании и зажигать на тимбилдингах. В этом пункте речь о способности задавать вопросы. Вы не представляете, сколько проблем в проектах бывает связано с тем, что человек просто вовремя не спросил, не уточнил, не сообщил коллегам, что заметил потенциальный баг
На мой взгляд, главное — уметь работать в команде. Это не значит, что условный интроверт не справится, никто не требует от вас быть душой компании и зажигать на тимбилдингах. В этом пункте речь о способности задавать вопросы. Вы не представляете, сколько проблем в проектах бывает связано с тем, что человек просто вовремя не спросил, не уточнил, не сообщил коллегам, что заметил потенциальный баг.
Разговаривайте, спрашивайте, уточняйте. Это нормально. Так же нормально, как пойти и усердно погуглить что-то, если не получается.
Говоря об отношениях в команде, стоит упомянуть дедлайны
Их важно соблюдать, особенно если они командные. Ситуации, в которых кто-то один просто забыл что-то сделать или не успел (и не сказал об этом), часто заканчиваются тем, что у всей команды съезжает график
Как это отражается на отношении к человеку, регулярно срывающему сроки, вы и без меня знаете.
Ещё несколько советов. Спокойно реагируйте на критику и замечания, прокачивайте уровень самоорганизованности, давайте коллегам обратную связь, не бойтесь ошибаться в работе и исправлять ошибки. И учитесь — возможностей для этого сейчас множество.
Сторонние API, фреймворки и пакеты
Ruby, Elixir, PHP и JavaScript уже имеют тысячи пакетов, которые могут быть настроены и применены к вашему приложению. Их легко встроить с помощью команды в одну строку в терминале:
Если вы не будете включать сторонний код в вашу экосистему, то вам придется разбираться с такими низкоуровневыми проблемами, как создание сессий, хэширование и защита от атак CSRF и тому подобное вместо того, чтобы фокусироваться на высокоуровневых задачах, которые делают ваше приложение уникальным.
Чаще всего фреймворки составлены из отдельных пакетов, которые при желании можно заменять на более подходящие под ваши задачи. Вы можете оценить качество исходного кода пакета по следующим пунктам:
- бейджи репозитория;
- дата последнего обновления;
- пройденные тесты;
- популярность, например, по оценке пользователей в звездах;
- количество решенных проблем и открытых пулл реквестов.
Пора заканчивать
Все ограничения, которые накладывает браузер, — результат десятилетий изучения атак на веб-приложения. Поэтому фронтенд-разработчику обязательно нужно понимать, как они работают. При проектировании приложения, основываясь на архитектуре и специфике данных, нужно сформировать у себя некоторые правила «гигиены» информационной защиты, придерживаться их и постоянно обновлять чтением литературы.
В завершение приведу слова своего преподавателя по защите информации: «Невозможно создать 100%-защиту. Наша задача — сделать так, чтобы взлом информации обходился дороже, чем сама информация».
Как стать back end разработчиком? Что нужно знать и уметь?
Несмотря на то, что backend предполагает работу только с серверной частью, начать путь в профессию лучше с изучения основ HTML и CSS. Далее – осваивать серверные языки программирования, работу с базами данных.
Посмотрите интересное видео на тему, чем отличается backend разработчик от frontend и какие знания необходимы для работы в этой сфере:
Список того, что нужно знать и уметь бэканд разработчику, может включать:
-
Языки программирования, например, PHP, Ruby, Python, Java, JavaScript / Node.js. PHP – самый популярный язык серверного программирования.
-
Технологию AJAX, позволяющую обновлять данные в браузере без перезагрузки страницы.
-
Базы данных MySQL, PostgreSQL, MongoDB и другие.
-
Принципы работы UNIX-систем.
-
Принципы ООП (объектно-ориентированное программирование).
-
Фреймворки – наборы скриптов, ускоряющих разработку веб-сайтов.
-
Работу с системами контроля версий Git.
Backend-разработка
Считается, что backend-разработка сложнее фронтенда, поскольку программист обходится без видимых элементов интерфейса, ведь он работает над логикой сайта. Пользователь не видит эту сферу, потому что все действия осуществляются вне его браузера и даже компьютера. Как только поступает запрос (например, когда вы нажали Enter при запросе в поисковике), сигнал сразу же отправляется на сервер, где и обрабатывается для дальнейшего вывода информации на экран. Это и есть логика сайта, заключающаяся в трех простых шагах:
-
отправка информации от пользователя,
-
ее обработка на сервере,
-
получение информации и форматирование кода в читаемый вид.
Используемые языки программирования в бэкенде
Если в случае с фронтендом нет никакой вариативности, так как разработчики всегда используют описанные языки программирования для достижения желаемого результата, то вот с backend все обстоит немного иначе. Выбор языка и инструментов зависит от сервера. Зачастую ограничений нет, и разработчик выбирает практически любой универсальный ЯП. К таким относятся:
-
Java;
-
PHP;
-
Python;
-
Ruby и другие.
В большинстве случаев бэкенд-разработчику понадобятся знания по управлению базами данных, которых тоже существует немало. Популярнее всего MySQL, но есть еще и PostgreSQL, SQLite, MongoDB. От выбранной системы управления базами данных меняются и обязанности разработчика, поскольку действия выполняются разными путями.
Приведенное выше описание дает ответ на вопрос «что такое backend».
Java
Java is one of the most powerful backend technologies, which has the second rank, according to TIOBE Index 2021. James Gosling originally developed this programming technology in 1991, but it was published in 1995 by Sun Microsystems.
Developers prefer to make feature-rich and adaptable web applications with Java for years. Howbeit, you can use Java for mobile devices, severe, and microcontroller software development as well.
Java Features
Simple & Highly Scalable: Java EE is highly scalable because it permits numerous instances to server requests. Instant availability of Java components and unambiguous syntax technology also makes it simple for developers to use this backend language.
Multi-Threading: Java allows to handle all requests in independent threads due to a multi-threaded web server. With this multi-threading feature, Java functions very well for CPU-intensive applications.
Open-Source Libraries: A variety of open-source libraries such JSON parsing, messaging, PDF, unit testing and excel libraries available for Java. Java developers can use these resources to expedite their server-side tasks.
Security: Java offers terrific features to overcome security risks. Likewise, Java Virtual Machines examine java bytecodes to detect and reduce the risk of viruses. Similarly, the security model of Java and testing of reusable codes help developers in avoiding security threats.
Java Limitations
- This server-side programming consumes more time and memory.
- Java doesn’t offer command over garbage collection, and low-level programming support is also missing in Java.
- Due to high hardware cost, it may be expensive to use Java.
- Swing toolkit, which Java is using GUI applications is different as compared to trendy ones.
Подписка и тарифные планы
Продумывание тарифов только кажется маловажным, но на деле часто является необходимым. Вам придется научиться создавать многоуровневые тарифные планы и присваивать определенные роли, разрешения и привилегии пользователям, подписавшимся на конкретный план. Также хорошая идея научиться предоставлять динамическое ценообразование, основанное на свойствах, формирующих каждый тарифный план. Например, покупка нового сервера на AWS или DigitalOcean дает пользователям право выбирать память, процессор и т.д.
по проектированию тарифных планов:
- выделяйте рекомендуемый вариант;
- разрешите пользователям выбирать валюту (€/$/₽) и период оплаты (месяц/год);
- предоставьте первый месяц бесплатно для успешного вовлечения пользователей;
- особо выделите отзывы;
- продавайте преимущества вместо характеристик;
- дайте пользователям понять, что они могут отказаться в любой момент;
- разрешите пользователям выбирать интересующие характеристики и конфигурировать тарифные планы.
Выбираем направление
Если вам интересно заниматься именно внешним видом, то продолжайте идти в направлении Frontend. Даже HTML требует времени, чтобы полностью им овладеть. Не говоря уже о CSS, в котором понадобится овладеть позиционированием, наследованием, адаптивной вёрсткой и многим другим.
Ну, а если уже всё это освоили, но хотите работать ещё и с серверной частью, то учите PHP — он достаточно простой, поэтому подойдёт новичкам, и в то же время очень мощный. Он помогает реализовать практически всё.
Изучать PHP достаточно долго, потому что он предоставляет огромные возможности:
- работа с базами данных;
- создание сессий;
- редактирование файлов;
- обработка запросов;
- создание динамических страниц;
- выполнение сложных математических вычислений;
- работа с переменными и массивами;
- объектно-ориентированное программирование и так далее.
Дальше обратите внимание на любой язык запросов — MySQL, PostgreSQL, MSSQL и им подобные. Они созданы, чтобы получать и вносить информацию в базу данных
Это оптимизирует работу сайта, особенно если на нём хранится большое количество статей, карточек товаров, учётных записей и так далее.
Писать для веба можно на многих языках, поэтому не зацикливайтесь на одном, если он вас не цепляет. Но основы PHP лучше изучить и frontend-разработчикам, чтобы разбираться в нём и понимать, какой код и куда нужно вставить.
PHP
PHP используют около 78% всех сайтов. Язык появился в 1995 году, когда было не так много возможностей для создания динамических веб-страниц. PHP динамически типизирован, и один и тот же фрагмент кода может вести себя по-разному в зависимости от контекста, что делает программы на PHP сложными для масштабирования и иногда медленными.
PHP — отличный язык для начинающих по ряду причин:
- он прощает ошибки: вы можете запустить программу, и она будет выполняться, пока не достигнет участка с проблемным кодом;
- у языка большое сообщество, а для новичков доступно много обучающих материалов. Язык постоянно обновляется, поэтому убедитесь, что изучаете последнюю версию;
- установить и настроить PHP достаточно легко по сравнению, например, с Ruby on Rails. Вы можете скачать MAMP (для Mac) или WAMP (для Windows), и всё будет готово к работе через 5 минут.
Что можно делать на PHP
Согласно официальному сайту PHP, вы можете:
- собирать данные форм (ввод логина/пароля и прочее);
- создавать динамический контент на страницах;
- отправлять и получать куки;
- писать скрипты в командной строке;
- выполнять сценарии на стороне сервера;
- разрабатывать настольные приложения.
Программы для версионизации
Чтобы не сталкиваться с проблемой случайного удаления кусков кода, программисты используют версионизаторы. А ещё они помогают команде без проблем работать над одним функционалом совместно.
Часто выбирают систему контроля версий Git без графической реализации. Однако работать через командную строку неудобно и муторно, здесь слишком много нюансов и проблем. Например, возникающие при слиянии файлов конфликты гораздо лучше решать в графическом интерфейсе, чем в консоли.
1. GitKraken — платная программа. Предназначена для Ubuntu и macOS.
2. Tortoise — вариант для Windows, правая рука backend-разработчика.
3. Ещё одно решение кроссплатформенного версионизатора — программа от Atlassian.
Компания предлагает нескольких передовых и надёжных продуктов для разработки, поддержки, управления кодом и рабочими задачами — не только техническими. Конкретно для работы с Git есть бесплатный клиент Sourcetree. Его выбирают, если по каким-либо причинам GitKraken и Tortoise не подходят.
Работа с Open Source
Вы столкнетесь с тем, что уже существующие пакеты не выполняют необходимые задачи или делают это некорректно. Тем не менее, всегда есть возможность подстроить под себя их функционал, поэтому учитесь работать с чужим исходным кодом. Полезные советы:
- читайте документацию и ищите ответы в ней, прежде чем задавать вопросы;
- посетите официальную страницу пакета на GitHub или Bitbucket, просмотрите открытые и решенные проблемы, и, возможно, вы найдете пулл реквест, в котором будет необходимая функциональность;
- также вы можете сами реализовать необходимую функциональность и отправить ее авторам, внеся свой вклад в развитие Open Source. Если ваш код не приняли, просто используйте свою версию вместо исходного пакета;
- если вы все-таки вынуждены писать свои функции с нуля, то убедитесь, что вы создаете их для универсального применения, чтобы другие тоже могли их использовать.
Content Security Policy
Ещё один заголовок, о котором стоит рассказать отдельно, — Content Security Policy. Это очень мощный инструмент, который соединил в себе другие заголовки безопасности, такие как x-xss-protection или x-frame-options. С его помощью можно «попросить» браузер ограничить список ресурсов, допущенных к общению с вашим фронтенд-приложением. Каждый вид ресурсов настраивается отдельно: картинки, JS-скрипты, CSS, шрифты, XHR-запросы и др. Вы можете сказать браузеру, что XHR-запросы можно слать только на конкретные домены, картинки брать только с определённых ресурсов и т.д.
CSP можно прописать в заголовках ответа веб-сервера:
Примечание: этот заголовок прописывается на веб-сервере, который отдает статику фронтенда, а не на сервере с API.
Либо в тэге мета-заголовке HTML-страницы:
Кроме того, CSP может запретить изменение и добавление inline-стилей и скриптов. Даже если XSS пролезла на сайт, браузер не позволит ей обмениваться данными со злоумышленником и выполнять зловредные операции.