- PVSM.RU - https://www.pvsm.ru -

Новости наших онлайн-курсов: обновлен курс «Web-технологии» и добавлен «Постановка задачи на разработку ПО»

image

Обновленный курс «Web-технологии [1]» на платформе Stepik [2] теперь поддерживает последнюю версию Django и возможность вести разработку как на Python 2, так и на Python 3. Преподаватели курса — Дмитрий Смаль и Динар Сабитов, web-программисты из игрового направления Mail.Ru Group. Второго марта мы перезапускаем «Постановку задачи на разработку ПО [3]» без дедлайнов, чтобы вы смогли пройти курсы в удобное время и получить сертификаты. Преподаватель курса — Дмитрий Безуглый, генеральный директор в компании "Системный подход", бизнес-аналитик и системный аналитик.

Stepik — платформа онлайн-курсов. Большинство из них открыты только в отведенное время — это стимулирует нерешительных участников записываться. Курс делится на модули, которые нужно сдавать в срок. Дедлайны повышают мотивацию студентов. Справляются не все — сертификаты получает в среднем 9 % учащихся. Первый курс от Mail.Ru Group открылся 1 сентября 2015 года. С этого момента к нам записались 67 600 человек, которым мы выдали 5300 сертификатов. Самый популярный курс за все время — «Web-технологии [1]». На него зарегистрировались 12 400 человек, это в два раза больше среднего. Поэтому мы стараемся совершенствовать курс и делать его еще более удобным.

О курсе «Web-технологии»

Мы создали «Web-технологии [1]», чтобы познакомить начинающих программистов с миром веба и бэкенд-разработкой на Python. В курсе мы рассказываем о схемах работы серверов. Особый акцент мы делаем на разработку бэкенда с использованием фреймворка Django. Еще мы даем основы фронтенд-разработки: HTML, CSS, JS, а в дополнительных главах обсуждаем технологию Ajax и доставку real-time сообщений.

Задания курса бывают разными: в одном месте вы выбираете правильный вариант ответа, в другом — вносите его в специальное поле, в третьем — пишете программу. Задания на программирование взаимосвязаны. На протяжении курса мы пошагово дополняем сервис «Вопросов и ответов» — упрощенный Stack Overflow. Вначале настраиваем nginx и gunicorn, затем развертываем Django-приложение, которое постепенно дорабатываем.

О деталях обновления

В «Web-технологиях» есть задания, которые необходимо выполнять на виртуальной машине. Результаты контролируются автоматическими тестами. Часто тесты делают HTTP-запросы к приложению пользователя, которое загружено на виртуальной машине. Мы анализируем ответы и понимаем, правильно ли решено задание.

Но во многих задачах этого бывает недостаточно. Например, мы тестируем модели приложения и проверяем, что у нее определены все необходимые поля и менеджеры. В этом случае мы загружаем свой скрипт на виртуальную машину, рядом с кодом, который необходимо протестировать.

До недавнего времени на виртуальной машине стояла Django 1.6, и все тесты мы запускали с Python 2.7. К нам поступало много жалоб о том, что Django слишком старая и что люди хотят использовать Python 3. Поэтому мы переписали свои скрипты так, чтобы они корректно работали с версиями Django 1.6—1.10. А для самих тестов теперь доступны два интерпретатора. Сначала тесты запускаются с Python 2, а в случае обнаружения ошибок — с Python 3.

Что нужно знать при переходе с Django 1.6 на 1.10

Для того чтобы облегчить переход на более новую версию Django, мы подготовили небольшой список проблем, с которыми вы, вероятнее всего, столкнетесь при обновлении. Ключевым изменением в Django 1.7 стала поддержка миграций базы данных. У manage.py появились команды migrate и makemigrations для работы с миграциями. Команда syncdb была удалена в Django 1.9. Подробнее о том, как работают миграции, можно почитать в документации [4].

Также в Django 1.7 был значительно изменен механизм загрузки приложений [5]. Если у вас есть standalone-скрипты, которые используют переменную окружения DJANGO_SETTINGS_MODULE, то в них необходимо явным образом инициализировать приложение, вызывая django.setup(). Это не касается скриптов, выполняемых через management commands.

В версии 1.7 появилась новая система проверки проекта [6]. Команда validate была удалена, ей на смену пришла команда check. Она помогает обнаружить проблемы и дает подсказки по их исправлению.

В версии 1.8 поле AbstractUser.last_login может принимать значения, равные null. А в Django 1.10 увеличили длину AbstractUser.username до 150 символов. Если в своем проекте вы используете AbstractUser, не забудьте написать миграцию для изменения полей. Миграция для django.contrib.auth.User [7] уже существует, вам необходимо выполнить только migrate.

Также в версии 1.10 удален метод django.conf.urls.patterns(), который использовался для создания шаблонов для urlpatterns. Теперь urlpatterns можно присваивать обычный list [8]. Более подробную информацию про несовместимые изменения можно найти в официальной документации:

Что нужно знать при переходе с Python 2 на 3

Если у вас появится желание попробовать Python 3, прочитайте про основные отличия, на которые следует обратить внимание. В новой версии языка оператор print был заменен функцией print(). Методы словарей items(), keys() и values() теперь возвращают итераторы. Старые методы iteritems(), iterkeys() и itervalues() больше не поддерживаются. Также у словарей удален метод has_key(), вместо него требуется использовать оператор in. Функция xrange() исключена, так как в новой версии range() выполняет ее задачи.

Изменились и числовые типов. Начиная с Python 3 типы long и int объединены в один — long. Его значения больше не имеют завершающего символа L, поэтому функция repr() не будет выводить его. Еще одно важное нововведение — замена целочисленного деления через оператор /. Теперь эта операция будет возвращать число типа float.

В Python 3 для хранения текста используется тип str, а для хранения бинарных данных — bytes. Стоит отметить, что эти типы нельзя сочетать, иначе возникнет ошибка TypeError. Для конвертирования одного типа в другой можно использовать функции str.encode() и bytes.decode(). Встроенный тип basestring удален.

При сравнении неупорядоченных типов теперь будет возвращаться исключение TypeError. Метод сравнения пользовательских объектов больше не поддерживается, поэтому для сортировки нужно воспользоваться функцией __lt__(), а для сравнения — __eq__() и __hash__(). Функции builtin.sorted() и list.sort() перестали принимать аргумент cmp, обеспечивающий функцию сравнения, ему на смену пришел key.

Метод raw_input() переименован в input(). Функция input() в Python 2 эквивалентна eval(input()). Убран метод execfile(). Вместо execfile(fn) можно использовать exec(open(fn).read()).

С более подробным списком различий Python 2 и 3 вы можете ознакомиться здесь [14].

Регистрация на курс

Чтобы зарегистрироваться на курс, перейдите по ссылке [15]. Напоминаем, что со 2 марта мы открываем курс «Постановка задачи на разработку ПО [16]» без дедлайнов. У нас есть и другие IT-курсы: программы по Java, C/C++, Hadoop и алгоритмам. Посмотреть полный список можно здесь [17]. Желаем удачи в изучении web-технологий!

Автор: Mail.Ru Group

Источник [18]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/razrabotka/247275

Ссылки в тексте:

[1] Web-технологии: https://stepik.org/course/Web-%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B8-154/

[2] Stepik: https://stepik.org/explore/courses

[3] Постановку задачи на разработку ПО: https://stepik.org/course/%D0%9F%D0%BE%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8-%D0%BD%D0%B0-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D1%83-%D0%9F%D0%9E-1128/

[4] документации: https://docs.djangoproject.com/en/1.10/topics/migrations/

[5] загрузки приложений: https://docs.djangoproject.com/en/1.10/ref/applications/

[6] система проверки проекта: https://docs.djangoproject.com/en/1.10/topics/checks/

[7] django.contrib.auth.User: https://docs.djangoproject.com/en/1.10/ref/contrib/auth/

[8] обычный list: https://docs.djangoproject.com/en/1.10/topics/http/urls/#example

[9] Django Deprecation Timeline: https://docs.djangoproject.com/en/1.10/internals/deprecation/#deprecation-removed-in-1-10

[10] Версия 1.7: https://docs.djangoproject.com/en/1.10/releases/1.7/#backwards-incompatible-changes-in-1-7

[11] Версия 1.8: https://docs.djangoproject.com/en/1.10/releases/1.8/#backwards-incompatible-changes-in-1-8

[12] Версия 1.9: https://docs.djangoproject.com/en/1.10/releases/1.9/#backwards-incompatible-changes-in-1-9

[13] Версия 1.10: https://docs.djangoproject.com/en/1.10/releases/1.10/#backwards-incompatible-changes-in-1-10

[14] здесь: http://stackoverflow.com/documentation/python/809/incompatibilities-between-python-2-and-python-3

[15] ссылке: https://stepik.org/154

[16] Постановка задачи на разработку ПО: https://stepik.org/1128

[17] здесь: https://stepik.org/org/mailru

[18] Источник: https://habrahabr.ru/post/323056/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best