#deepwebdev #otus
Вы знакомы с модулем collections из стандартной библиотеки? Если нет, то стоит познакомиться. Это из тех вещей, о которых нельзя додуматься. Не прочитаешь – так и будешь писать велосипеды.
Например, в этом модуле есть Counter – штука для подсчёта повторений элементов в списке. Можно скормить ему список и в ответ получить самые повторяющиеся элементы с количеством повторений. Когда такая задача встречается, Counter очень кстати.
Другая классная штука, которую предоставляет этот модуль – defaultdict. Это словарь, которому можно указать значение по-умолчанию на случай отсутствия элемента по ключу. Можно даже сделать элементом по-умолчанию список – и сэкономить несколько строк кода без урона читаемости.
Ещё в collections есть, например, namedtuple. На случай, если вы хотите явно дать названия элементам тупла вместо обращения по элементу, но не хотите тратить ресурсы на словарь, это то, что надо.
Интересно? Приходите на курс “Web-Разработчик” в Otus https://otus.ru/lessons/9/?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_content=deeppost&utm_term=26.07
У нас еще масса всяких полезностей!
Вы знакомы с модулем collections из стандартной библиотеки? Если нет, то стоит познакомиться. Это из тех вещей, о которых нельзя додуматься. Не прочитаешь – так и будешь писать велосипеды.
Например, в этом модуле есть Counter – штука для подсчёта повторений элементов в списке. Можно скормить ему список и в ответ получить самые повторяющиеся элементы с количеством повторений. Когда такая задача встречается, Counter очень кстати.
Другая классная штука, которую предоставляет этот модуль – defaultdict. Это словарь, которому можно указать значение по-умолчанию на случай отсутствия элемента по ключу. Можно даже сделать элементом по-умолчанию список – и сэкономить несколько строк кода без урона читаемости.
Ещё в collections есть, например, namedtuple. На случай, если вы хотите явно дать названия элементам тупла вместо обращения по элементу, но не хотите тратить ресурсы на словарь, это то, что надо.
Интересно? Приходите на курс “Web-Разработчик” в Otus https://otus.ru/lessons/9/?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_content=deeppost&utm_term=26.07
У нас еще масса всяких полезностей!
#deepwebdev #otus
Какой у вас стиль написания кода? Соблюдаете PEP8? Заботитесь о названиях? Написали и соблюдаете свой стайлгайд?
Обычно об этом много говорят и мало соблюдают: фичи часто приоритетнее подпапотной красоты.
Это приводит к тому, что через некоторое время проект становится сложно поддерживать, а каждый разработчик отвечает только за свой участок.
Даже если разработчик только один, такой подход приводит к тому, что через месяц становится очень сложно разобраться в том, что и как делает код.
Бывают перекосы в другую сторону: когда все соблюдают стандарт ради соблюдения стандарта. Это обычно приводит к тому, что разработка движется медленнее: приходится тратить время на ненужную полировку, которая часто только вредит коду.
На курсе по веб-разработке мы рассмотрим, как правильно относиться к стилю: не забывать про него, но и не перегибать палку. В конце концов, стиль кода – это инструмент для достижения каких-то целей: читаемости, поддерживаемости и стабильности.
Интересно? Приходите на курс “Web-Разработчик” https://otus.ru/lessons/9/?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_content=deeppost&utm_term=01.08
У нас еще масса всяких полезностей!
Какой у вас стиль написания кода? Соблюдаете PEP8? Заботитесь о названиях? Написали и соблюдаете свой стайлгайд?
Обычно об этом много говорят и мало соблюдают: фичи часто приоритетнее подпапотной красоты.
Это приводит к тому, что через некоторое время проект становится сложно поддерживать, а каждый разработчик отвечает только за свой участок.
Даже если разработчик только один, такой подход приводит к тому, что через месяц становится очень сложно разобраться в том, что и как делает код.
Бывают перекосы в другую сторону: когда все соблюдают стандарт ради соблюдения стандарта. Это обычно приводит к тому, что разработка движется медленнее: приходится тратить время на ненужную полировку, которая часто только вредит коду.
На курсе по веб-разработке мы рассмотрим, как правильно относиться к стилю: не забывать про него, но и не перегибать палку. В конце концов, стиль кода – это инструмент для достижения каких-то целей: читаемости, поддерживаемости и стабильности.
Интересно? Приходите на курс “Web-Разработчик” https://otus.ru/lessons/9/?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_content=deeppost&utm_term=01.08
У нас еще масса всяких полезностей!
Доброе утро, друзья!
Рады сообщить о продолжении набора на курс Python для web разработки!
Старт намечен на 16 сентября - вас ждет 4 месяца обучения, за это время прокачаем и подтянем самые необходимые скилы, структурируем уже полученные знания и потренируемся выполнять боевые задачи под руководством Ильи Лебедева, разработчика с более чем шестилетним стажем в области.
И, в связи с продолжением набора, ловите еще одну заметку #deeppython #deepwebdev #otus
Слышали о GraphQL? Если нет, то давайте вкратце разберем, что это такое и зачем оно нужно.
GraphQL – спецификация протокола для общения фронтенда и бекенда. Чтобы получить данные, нужно отправить запрос на сервер, указав, какие именно данные в каком формате нужны. Например, чтобы получить посты указанного пользователя, можно сделать такой запрос:
posts(user_id=42, is_draft=False) {
title,
published_at,
text,
tags {
title,
url
}
}
GraphQL обладает плюсами для всех участников.
Для фронтендеров есть много оберток вокруг этого протокола, которые существенно упрощают создание различных компонентов. Это радикально снижает количество кода, который нужно написать и упрощает время реализации интерфейса.
Для бекендеров плюс в том, что благодаря единой точке входа, можно гибко и просто управлять кешированием, удобно собирать данные из разных источников и собирать разные части данных на разным машинах.
И тем и другим удобно то, что вместо большого количества ручек API с разными параметрами, отражающими предметную область, теперь есть только одна, которая позволяет гибко указывать, какие данные нужны, а какие – нет.
Graphene – реализация этой спецификации на Python - подробности которой будем разбирать в программе курса - проходите вступительное тестирование и присоединяйтесь! https://otus.ru/lessons/9?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_term=deeppost21.08
Рады сообщить о продолжении набора на курс Python для web разработки!
Старт намечен на 16 сентября - вас ждет 4 месяца обучения, за это время прокачаем и подтянем самые необходимые скилы, структурируем уже полученные знания и потренируемся выполнять боевые задачи под руководством Ильи Лебедева, разработчика с более чем шестилетним стажем в области.
И, в связи с продолжением набора, ловите еще одну заметку #deeppython #deepwebdev #otus
Слышали о GraphQL? Если нет, то давайте вкратце разберем, что это такое и зачем оно нужно.
GraphQL – спецификация протокола для общения фронтенда и бекенда. Чтобы получить данные, нужно отправить запрос на сервер, указав, какие именно данные в каком формате нужны. Например, чтобы получить посты указанного пользователя, можно сделать такой запрос:
posts(user_id=42, is_draft=False) {
title,
published_at,
text,
tags {
title,
url
}
}
GraphQL обладает плюсами для всех участников.
Для фронтендеров есть много оберток вокруг этого протокола, которые существенно упрощают создание различных компонентов. Это радикально снижает количество кода, который нужно написать и упрощает время реализации интерфейса.
Для бекендеров плюс в том, что благодаря единой точке входа, можно гибко и просто управлять кешированием, удобно собирать данные из разных источников и собирать разные части данных на разным машинах.
И тем и другим удобно то, что вместо большого количества ручек API с разными параметрами, отражающими предметную область, теперь есть только одна, которая позволяет гибко указывать, какие данные нужны, а какие – нет.
Graphene – реализация этой спецификации на Python - подробности которой будем разбирать в программе курса - проходите вступительное тестирование и присоединяйтесь! https://otus.ru/lessons/9?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_term=deeppost21.08
#otus #deepwebdev Представьте, что вы разрабатываете модель данных для вашего приложения. Дело ответственное: скоро модель обрастёт другим кодом и для изменения модели придётся переписывать существенную часть приложения. Ошибки при проектировании модели дорогого стоят.
Рассмотрим несколько правил, которые позволят снизить количество ошибок.
Во-первых, лучше использовать названия из предметной области для моделей и полей. Так, чтобы эксперт в предметной области смог всё понять. О том, как работает приложение этому эксперту знать не нужно: до бизнес-логики дело пока не дошло.
Во-вторых, не стоит придумывать новые сущности для упрощения модели. Иногда хочется придумать промежуточную сущность, которая не имеет смысла в предметной области, но позволяет проще уложить данные в хранилище. Это почти всегда плохая идея: новый термин начинает плохо дружить с существующими сущностями, а при реализации бизнес-логики приходится добавлять всё новые и новые костыли. Не говоря уже о том, что придётся всем объяснять смысл нового термина.
В-третьих, не нужно упрощать связи. Если у поста может быть много авторов, не надо делать одного потому что в сервисе предусмотрен только один автор. Завтра это требование поменяется и жизнь существенно усложниться. А пока не поменялось, количество лишнего кода можно существенно сократить, но не на уровне модели.
Выше перечислены три самые частые ошибки при формировании модели данных. Эти же утверждения лежат в основе Domain Driven Design.
Рассмотрим несколько правил, которые позволят снизить количество ошибок.
Во-первых, лучше использовать названия из предметной области для моделей и полей. Так, чтобы эксперт в предметной области смог всё понять. О том, как работает приложение этому эксперту знать не нужно: до бизнес-логики дело пока не дошло.
Во-вторых, не стоит придумывать новые сущности для упрощения модели. Иногда хочется придумать промежуточную сущность, которая не имеет смысла в предметной области, но позволяет проще уложить данные в хранилище. Это почти всегда плохая идея: новый термин начинает плохо дружить с существующими сущностями, а при реализации бизнес-логики приходится добавлять всё новые и новые костыли. Не говоря уже о том, что придётся всем объяснять смысл нового термина.
В-третьих, не нужно упрощать связи. Если у поста может быть много авторов, не надо делать одного потому что в сервисе предусмотрен только один автор. Завтра это требование поменяется и жизнь существенно усложниться. А пока не поменялось, количество лишнего кода можно существенно сократить, но не на уровне модели.
Выше перечислены три самые частые ошибки при формировании модели данных. Эти же утверждения лежат в основе Domain Driven Design.
#otus #deepwebdev
Итак, у вас есть приложение. Оно запущено в бою, используемо, и вы хотите знать, какие части приложения за какое время работают. Не сломалось ли чего? Как себя ведут технические и бизнес-метрики. Желательно всё это смотреть в красивом интерфейсе и в реальном времени.
Рассмотрим один из возможных вариантов для реализации этой задачи.
Значения нужных параметров можно хранить в InfluxDB – хранилище данных для временных последовательностей. В него можно класть данные по http-API и получать данные, делая запросы на языке, похожем на SQL. Конечно, есть обёртка вокруг API на Python.
Что отслеживать? Во-первых, время выполнения кода основных обработчиков нашего сервиса целиком и отдельных важных его частей. Количество кода будет небольшое – достаточно написать декоратор или менеджер контекста для отправки метрик в InfluxDB. После этого можно заняться мониторингом бизнес-метрик: отдельно записывать количество регистраций, заказов услуг, прочитанных статей в справке.
Теперь нужно визуализировать эти данные так, чтобы было видно, насколько хорошо всё работает. Для этого хорошо подходит Grafana – гибкое средство для визуализации и мониторинга, которое умеет брать данные из InfluxDB. Оно же умеет сообщать о том, что какие-то параметры вышли за допустимые границы.
На курсе “Python для WEB-разработки” мы разберём, как оптимизировать эту схему для высоконагруженных систем, не превратив при этом систему мониторинга в свалку графиков,а также когда и чем это решение лучше использования Zabbix. Присоединяйтесь, будет интересно! https://otus.ru/lessons/9?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_term=deeppost31.08
Итак, у вас есть приложение. Оно запущено в бою, используемо, и вы хотите знать, какие части приложения за какое время работают. Не сломалось ли чего? Как себя ведут технические и бизнес-метрики. Желательно всё это смотреть в красивом интерфейсе и в реальном времени.
Рассмотрим один из возможных вариантов для реализации этой задачи.
Значения нужных параметров можно хранить в InfluxDB – хранилище данных для временных последовательностей. В него можно класть данные по http-API и получать данные, делая запросы на языке, похожем на SQL. Конечно, есть обёртка вокруг API на Python.
Что отслеживать? Во-первых, время выполнения кода основных обработчиков нашего сервиса целиком и отдельных важных его частей. Количество кода будет небольшое – достаточно написать декоратор или менеджер контекста для отправки метрик в InfluxDB. После этого можно заняться мониторингом бизнес-метрик: отдельно записывать количество регистраций, заказов услуг, прочитанных статей в справке.
Теперь нужно визуализировать эти данные так, чтобы было видно, насколько хорошо всё работает. Для этого хорошо подходит Grafana – гибкое средство для визуализации и мониторинга, которое умеет брать данные из InfluxDB. Оно же умеет сообщать о том, что какие-то параметры вышли за допустимые границы.
На курсе “Python для WEB-разработки” мы разберём, как оптимизировать эту схему для высоконагруженных систем, не превратив при этом систему мониторинга в свалку графиков,а также когда и чем это решение лучше использования Zabbix. Присоединяйтесь, будет интересно! https://otus.ru/lessons/9?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_term=deeppost31.08
#otus #deepwebdev
Многие знают только одну команду у pip – install. Этого часто достаточно, но у этого пакетного менеджера есть и другие классные возможности. Давайте рассмотрим некоторые из них.
pip list --outdated – покажет, какие из установленных пакетов можно обновить.
pip install --user <package> – установит пакет глобально, но в домашнюю директорию. Для этого не нужны права суперпользователя. Не работает в виртуальном окружении.
pip show <package> – показывает информацию о пакете, в т.ч. версию, автора и короткое описание.
pip search <query> – ищет на PyPI пакеты, в названии или описании которых входит поисковый запрос. Очень полезно, например, если вы забываете полное название какого-то пакета.
pip completion --bash >> ~/.profile – эта команда научит bash автодополнению команд. Мелочь, но какая приятная!
Это – только часть приятных бонусов, которые нам предоставляет pip. Если захотите больше – добро пожаловать в официальную документацию или на курс Python для Web Разработки.
Проходите тестирование и присоединяйтесь к новой группе https://otus.ru/lessons/python-dlja-web-razrabotki/?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_content=deeppost&utm_term=07.09
Многие знают только одну команду у pip – install. Этого часто достаточно, но у этого пакетного менеджера есть и другие классные возможности. Давайте рассмотрим некоторые из них.
pip list --outdated – покажет, какие из установленных пакетов можно обновить.
pip install --user <package> – установит пакет глобально, но в домашнюю директорию. Для этого не нужны права суперпользователя. Не работает в виртуальном окружении.
pip show <package> – показывает информацию о пакете, в т.ч. версию, автора и короткое описание.
pip search <query> – ищет на PyPI пакеты, в названии или описании которых входит поисковый запрос. Очень полезно, например, если вы забываете полное название какого-то пакета.
pip completion --bash >> ~/.profile – эта команда научит bash автодополнению команд. Мелочь, но какая приятная!
Это – только часть приятных бонусов, которые нам предоставляет pip. Если захотите больше – добро пожаловать в официальную документацию или на курс Python для Web Разработки.
Проходите тестирование и присоединяйтесь к новой группе https://otus.ru/lessons/python-dlja-web-razrabotki/?utm_source=telegram&utm_medium=internal&utm_campaign=webdev&utm_content=deeppost&utm_term=07.09
Завершается посадка на очередной рейс обучения в OTUS по курсу “Python для Web-Разработки”
Мы провели Дни открытых дверей, разыграли бесплатные места в группе, рассказали об интересных "фишках" в постах #deepwebdev, пригласили тех кто прошел вступительное тестирование в наше профессиональное сообщество, где можно обмениваться опытом и просто приятно и с пользой общаться.
Новая группа начинает занятия уже завтра! Это значит, что завтра утром мы закроем возможность оплаты и присоединения к группе. В группе остались последние места - еще есть совсем немного времени, чтобы успеть присоединиться! https://clck.ru/BpEj9
Преподавателем курса стал Илья Лебедев - профессионал своего дела с многолетним опытом разработки! Мы желаем очередной группе успехов в учебе, что курс им понравится!
Недавно завершился первый курс “Java-Разработчик” и успешные слушатели уже получили и приняли первые офферы от компаний партнеров, об этом мы обязательно расскажем подробнее в отдельных историях успеха наших выпускников - следите за новостями!
Также мы выкатили новый дизайн нашего сайта - он стал еще ярче и вместе с тем удобнее и функциональнее - оцените сами! https://clck.ru/BpEiv
Мы провели Дни открытых дверей, разыграли бесплатные места в группе, рассказали об интересных "фишках" в постах #deepwebdev, пригласили тех кто прошел вступительное тестирование в наше профессиональное сообщество, где можно обмениваться опытом и просто приятно и с пользой общаться.
Новая группа начинает занятия уже завтра! Это значит, что завтра утром мы закроем возможность оплаты и присоединения к группе. В группе остались последние места - еще есть совсем немного времени, чтобы успеть присоединиться! https://clck.ru/BpEj9
Преподавателем курса стал Илья Лебедев - профессионал своего дела с многолетним опытом разработки! Мы желаем очередной группе успехов в учебе, что курс им понравится!
Недавно завершился первый курс “Java-Разработчик” и успешные слушатели уже получили и приняли первые офферы от компаний партнеров, об этом мы обязательно расскажем подробнее в отдельных историях успеха наших выпускников - следите за новостями!
Также мы выкатили новый дизайн нашего сайта - он стал еще ярче и вместе с тем удобнее и функциональнее - оцените сами! https://clck.ru/BpEiv
Отус: Python для WEB разработки
Профессиональные онлайн курсы для разработчиков
Давайте рассмотрим самое полезное, что есть в составе модуля django-extensions – набора полезных дополнений к любому проекту на Django: #deepwebdev
Все слышали о Mobile-first, но не все применяют. Читаем полезную заметку для подготовки к курсу «Web-разработчик на Python»: #deepwebdev
Пользователь покинет ваш сайт, если…
P.S. Подробнее про mobile-first учим на курсе «Web-разработчик на Python», который стартует 17 апреля. Ждём вас на занятиях!
Пользователь покинет ваш сайт, если…
P.S. Подробнее про mobile-first учим на курсе «Web-разработчик на Python», который стартует 17 апреля. Ждём вас на занятиях!