![](https://habrastorage.org/files/31e/004/594/31e004594b654c76b05608374b565fd3.jpg)
Теперь онлайн-курсы «Разработка на Java 1», «Разработка на Java 2» и «Анализ безопасности веб-проектов» на платформе Stepik.org лежат в свободном доступе! Мы убрали дедлайны, чтобы вы прошли курсы в удобное время и получили сертификаты. В ближайшие десять дней мы перезапустим еще два онлайн-курса. «Постановка задач на разработку ПО» откроется 28 октября, а 3 ноября станут доступны «Web-технологии».
Stepik.org — платформа онлайн-курсов. С ее помощью можно научиться чему-либо прямо из дома — нужен только доступ в интернет. Авторы рассказывают материал на видеолекциях и предлагают выполнить практические задания. Большинство курсов открыты только в отведенное время — это стимулирует нерешительных участников записываться. Курс делится на модули, которые нужно сдавать в срок. Наличие дедлайнов повышает мотивацию студентов. Справляются не все — сертификаты получает в среднем 9% учащихся. Открытый доступ решает проблему времени, теперь нужно только желание.
Первый курс от Mail.Ru Group открылся 1 сентября 2015 года. С этого момента к нам записались 50 000 человек, которым мы выдали 4 500 сертификатов. В феврале этого года на «Web-технологии» зарегистрировалось 8 500 человек. Это в два раза больше среднего, поэтому мы хотим рассказать об этом курсе.
Мы создали «Web-технологии», чтобы познакомить начинающих программистов с миром web и бэкенд-разработкой на Python. В курсе мы знакомим со схемами работы серверов. Отдельный акцент мы делаем на разработку бэкенда с использованием фреймворка Django. Еще мы рассказываем основы фронтенд-разработки: html, css, js, а в дополнительных главах обсуждаем технологию Ajax и доставку Real-Time сообщений.
Задания курса бывают разными: в одном месте вы выбираете правильный вариант ответа, в другом — вносите его в специальное поле, в третьем — пишете программу. В последнем случае вы реализуете простейший сервер, настраиваете nginx для отдачи файлов или выполняете иную задачу с помощью виртуальной машины и web-терминала. Когда работа над заданием завершена, вы запускаете тесты. Если программа их проходит, система ставит баллы за успешное выполнение. Время на выполнение таких заданий ограничено.
Задания на программирование взаимосвязаны. На протяжении курса мы пошагово делаем сервис «Вопросов и ответов» — упрощенный Stack Overflow. В начале настраиваем nginx и gunicorn, затем развертываем Django-приложение, которое постепенно дорабатываем. Мы пишем модели, добавляем проверки авторизации и так далее. В курсе необходимо устанавливать софт, использовать git, программировать и настраивать web-серверы. Мы поможем освоить некоторые навыки, но часть тем придется изучить самостоятельно.
На курс уходит много времени, особенно у начинающих разработчиков. Не все выдерживают такой ритм работы, и к концу энтузиазм угасает. Так, первую задачу на создание echo-сервера решило 1 299 человек, а одну из последних — на обработку форм — только 217. Да и добрались до этой задачи только 3 100 человек из 8 660.
Вот пример одной из задач:
- разработать простейший TCP echo-сервер
Требования:
- запускается на IP адресе 0.0.0.0 и TCP порту 2222
- получает сообщения длинной не более 1024 байт и отправляет обратно клиенту
- закрывает соединение при получении сообщения с текстом close
При такой формулировке задача несложная: открываете сокет, делаете bind, в цикле делаете accept, читаете по 1024 байта и, если пришла строка 'close', закрываете соединение.
В следующем задании мы просим изменить сервер:
- измените ваш echo-сервер так, чтобы он мог работать одновременно с 10 клиентами
- протокол передачи такой же, как в прошлой задаче
Чтобы решить такую задачу, вам нужно параллельно обрабатывать запросы. В таком случае сложности возникают даже с тем, как правильно закрыть соединение. Мы не ограничиваем реализацию сервера, делайте fork или используйте потоки для решения — так или иначе, придется разбираться в этой теме. На практике клиентов в тысячи раз больше, и ответ сервера формируется по сложным правилам, но backend-разработчик должен уметь решать такие задачи и понимать работу с сокетами, процессами и потоками.
Первый запуск курса состоялся в феврале 2016. С тех пор на курс записались 8 660 человек, которым мы выдали 507 сертификатов, из них 353 с отличием. Надеемся, что курс «Web-технологии» поможет приобщиться к миру web. Неважно, хотите вы занять позицию junior-разработчика или лучше понять повседневную жизнь. Записывайтесь!