HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Темы, рассмотренные в предыдущих уроках, уже тянут на многомесячное интенсивное обучение (как минимум), но даже они покрывают веб-разработку только частично. В этом уроке мы кратко пройдемся по некоторым другим важным аспектам, связанным как с веб-разработкой, так и программированием в целом.</p>
1 <p>Темы, рассмотренные в предыдущих уроках, уже тянут на многомесячное интенсивное обучение (как минимум), но даже они покрывают веб-разработку только частично. В этом уроке мы кратко пройдемся по некоторым другим важным аспектам, связанным как с веб-разработкой, так и программированием в целом.</p>
2 <h2>Аутентификация и авторизация</h2>
2 <h2>Аутентификация и авторизация</h2>
3 <p>Два термина, которые связаны с идентификацией и выделением прав на выполнение определенных операций. Их реализация есть в любом нетривиальном проекте. И если аутентификация почти целиком построена на<strong>сессиях</strong>http, то авторизация требует понимания принципов построения списков контроля доступа (<a>ACL</a>). В наиболее продвинутых фреймворках подобная функциональность либо встроена в сам фреймворк, либо существует в виде дополнений, которые если и не покрывают все потребности, то, по крайней мере, дают основу для построения своей системы.</p>
3 <p>Два термина, которые связаны с идентификацией и выделением прав на выполнение определенных операций. Их реализация есть в любом нетривиальном проекте. И если аутентификация почти целиком построена на<strong>сессиях</strong>http, то авторизация требует понимания принципов построения списков контроля доступа (<a>ACL</a>). В наиболее продвинутых фреймворках подобная функциональность либо встроена в сам фреймворк, либо существует в виде дополнений, которые если и не покрывают все потребности, то, по крайней мере, дают основу для построения своей системы.</p>
4 <h2>OAuth</h2>
4 <h2>OAuth</h2>
5 <p>Аутентификация с помощью социальных сетей стала почти также распространена, как и аутентификация по паролю. Чисто технически ее реализация значительно сложнее, она основана на протоколе<a>oauth2</a>, который включает в себя общение по<a>API</a>. Опять же, с нуля ничего писать не придется: для работы с OAuth написана не одна библиотека, но это не отменяет необходимости понимать, что творится под капотом.</p>
5 <p>Аутентификация с помощью социальных сетей стала почти также распространена, как и аутентификация по паролю. Чисто технически ее реализация значительно сложнее, она основана на протоколе<a>oauth2</a>, который включает в себя общение по<a>API</a>. Опять же, с нуля ничего писать не придется: для работы с OAuth написана не одна библиотека, но это не отменяет необходимости понимать, что творится под капотом.</p>
6 <h2>Валидация</h2>
6 <h2>Валидация</h2>
7 <p>Валидация - проверка данных на соответствие установленным требованиям (ограничениям). Не самая сложная, но крайне важная тема. В веб-фреймворках часто связана с ORM и слоем, работающим с формами. Относится к базовой теме. Как только на сайте появилась хоть одна форма, сразу в дело вступает валидация.</p>
7 <p>Валидация - проверка данных на соответствие установленным требованиям (ограничениям). Не самая сложная, но крайне важная тема. В веб-фреймворках часто связана с ORM и слоем, работающим с формами. Относится к базовой теме. Как только на сайте появилась хоть одна форма, сразу в дело вступает валидация.</p>
8 <h2>Jobs</h2>
8 <h2>Jobs</h2>
9 <p>Далеко не все операции можно выполнить или следует выполнять во время обращения пользователя к сайту. Некоторые задачи могут потребовать значительного времени: минуты, часы или даже дни. Пользователи столько ждать не будут, они предпочитают оповещение по выполнению. С другой стороны, просто нельзя держать такое долгое соединение с браузером, так как в определенный момент можно исчерпать лимит на входящие соединения (а здесь нужно понимать модели работы веб-серверов и особенности вашего языка и используемую модель работы с<a>IO</a>внутри него).</p>
9 <p>Далеко не все операции можно выполнить или следует выполнять во время обращения пользователя к сайту. Некоторые задачи могут потребовать значительного времени: минуты, часы или даже дни. Пользователи столько ждать не будут, они предпочитают оповещение по выполнению. С другой стороны, просто нельзя держать такое долгое соединение с браузером, так как в определенный момент можно исчерпать лимит на входящие соединения (а здесь нужно понимать модели работы веб-серверов и особенности вашего языка и используемую модель работы с<a>IO</a>внутри него).</p>
10 <p>И тут открывается ящик Пандоры. Асинхронный код, системы очередей, подписка на события, фреймворки для их обработки и многое другое. Возможно, вам кажется, что это все нужно только суперпроектам, но нет. Даже примитивная загрузка картинок с последующей обработкой уже требует использования подобных техник.</p>
10 <p>И тут открывается ящик Пандоры. Асинхронный код, системы очередей, подписка на события, фреймворки для их обработки и многое другое. Возможно, вам кажется, что это все нужно только суперпроектам, но нет. Даже примитивная загрузка картинок с последующей обработкой уже требует использования подобных техник.</p>
11 <h2>Нотификации</h2>
11 <h2>Нотификации</h2>
12 <p>Нотификации в виде писем или смс - неотъемлемая часть любого проекта. Тема не такая простая, как может показаться на первый взгляд.</p>
12 <p>Нотификации в виде писем или смс - неотъемлемая часть любого проекта. Тема не такая простая, как может показаться на первый взгляд.</p>
13 <h2>Фронтенд</h2>
13 <h2>Фронтенд</h2>
14 <p>Практически ни один современный сайт не обходится без динамического фронтенда, а значит в разработку включается немалая часть экосистемы js. Начиная с того, что надо знать сам язык (а он гораздо богаче php в плане выразительных возможностей и фич), заканчивая сборщиками (webpack) и фреймворками (react).</p>
14 <p>Практически ни один современный сайт не обходится без динамического фронтенда, а значит в разработку включается немалая часть экосистемы js. Начиная с того, что надо знать сам язык (а он гораздо богаче php в плане выразительных возможностей и фич), заканчивая сборщиками (webpack) и фреймворками (react).</p>
15 <h2>Инфраструктура</h2>
15 <h2>Инфраструктура</h2>
16 <p>Пилить фичи - только полдела. Чтобы начать разрабатывать нужно для начала настроить окружение разработчика, используя<a>Docker Compose</a>. Затем, чтобы было куда выкладываться, нужно настроить продакшен-окружение (то, где будет работать сайт) и в конце концов задеплоить (развернуть) туда сайт.</p>
16 <p>Пилить фичи - только полдела. Чтобы начать разрабатывать нужно для начала настроить окружение разработчика, используя<a>Docker Compose</a>. Затем, чтобы было куда выкладываться, нужно настроить продакшен-окружение (то, где будет работать сайт) и в конце концов задеплоить (развернуть) туда сайт.</p>
17 <p>Современная инфраструктура - тоже код, и ее нужно программировать. Вот список самых важных программ, созданных для этого:<a>Ansible</a>,<a>Terraform</a>,<a>Docker</a>.</p>
17 <p>Современная инфраструктура - тоже код, и ее нужно программировать. Вот список самых важных программ, созданных для этого:<a>Ansible</a>,<a>Terraform</a>,<a>Docker</a>.</p>
18 <h2>Эксплуатация</h2>
18 <h2>Эксплуатация</h2>
19 <p>Сайт, находящийся в работе, тоже нуждается в заботе. Проблемы могут прийти из любого места. Закончилось место на диске, произошел сетевой сбой, произошла ошибка в логике работы, проявляющаяся только при определенных входных данных. Обо всем этом нужно узнавать как можно раньше. Эксплуатация ПО включает в себя такие понятия как мониторинг, алертинг, сбор логов и другие инструменты. Рекомендуем начать с<a>DataDog</a>и<a>Rollbar</a>.</p>
19 <p>Сайт, находящийся в работе, тоже нуждается в заботе. Проблемы могут прийти из любого места. Закончилось место на диске, произошел сетевой сбой, произошла ошибка в логике работы, проявляющаяся только при определенных входных данных. Обо всем этом нужно узнавать как можно раньше. Эксплуатация ПО включает в себя такие понятия как мониторинг, алертинг, сбор логов и другие инструменты. Рекомендуем начать с<a>DataDog</a>и<a>Rollbar</a>.</p>