Выпуск 332

(27.04.2020 - 03.05.2020)

pythondigest.ru: Выпуск 332

Статьи

      Пять этапов принятия неизбежного, или Рекомендательная система для кросс-продаж

В реалиях современного мира, когда ведется повсеместная цифровизация и накопление данных обо всем и о каждом, возникает резонный вопрос, а как этими данными воспользоваться? Многие, наверняка, уже слышали о рекомендательных системах в сферах развлечения и продаж. Инвестиционные компании не стоят в стороне от современных тенденций в области Data Science и рекомендательных систем в частности. Так давайте рассмотрим, в чем особенности и какие этапы пришлось пройти одной крупной инвестиционной компании для того, чтобы разработать собственную рекомендательную систему для повышения эффективности кросс-продаж и что в итоге получилось.

      Управлять правами на уровне объектов

Рано или поздно, разработчик на Django встречается с проблемой: как сделать так, чтобы пользователи не могли изменять или удалять, а то и вовсе не видели разных объектов одного и того же типа.

 

Допустим, ваш проект касается хранения информации о проектах. Разные пользователи входят в разные проекты и не должны видеть информацию о другом проекте. Один и тот же пользователь может входить в несколько проектов и иметь разный статус в разных проектах — где-то он может только просматривать информацию, а в других — править данные. В каком-то проекте пользователь зарегистрирован как персонал проекта, а в другом — только как потребитель его услуг. Уровень доступа соответственно, должен быть совершенно разным.

Этими вопросами занимаются несколько пакетов, мы рассмотрим один из них — Django-Access. Все, кому это интересно, приглашаются под кат.

      Геокодирование. Как привязать 250 тысяч адресов к координатам за 10 минут?

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

Речь идет не о сложных алгоритмах оптимизации, а об использовании сервиса пакетного геокодирования, который принимает на вход список адресов и возвращает файл с результатами. Тем самым можно сократить время обработки с нескольких часов до минут.

      Практическое руководство по разработке бэкенд-сервиса на Python

Привет, меня зовут Александр Васин, я бэкенд-разработчик в Едадиле. Идея этого материала началась с того, что я хотел разобрать вступительное задание (Я.Диск) в Школу бэкенд-разработки Яндекса. Я начал описывать все тонкости выбора тех или иных технологий, методику тестирования… Получался совсем не разбор, а очень подробный гайд по тому, как писать бэкенды на Python. От первоначальной идеи остались только требования к сервису, на примере которых удобно разбирать инструменты и технологии. В итоге я очнулся на сотне тысяч символов. Ровно столько потребовалось, чтобы рассмотреть всё в мельчайших подробностях. Итак, программа на следующие 100 килобайт: как строить бэкенд сервиса, начиная от выбора инструментов и заканчивая деплоем.

      Подбор экипировки игровому персу при помощи генетики/эволюции на Python

Как подобрать лучшую экипировку в любимой игре? Конечно, можно банально перебрать все её возможные сочетания (например, для разбойника из World of Warcraft) и найти наилучшее. Без всякой магии и машинного обучения. Но можно ли добиться этого результата не «в лоб», а при помощи генетических алгоритмов, не примеряя каждую комбинацию? Интересно узнать, как размножаются и эволюционируют разбойники? Поехали.

      Чистый код: причины и следствия

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

Первый звоночек, который нам сообщает, что код перестает быть чистым — это рост времени разработки новой функциональности и увеличение регрессионного скоупа при малейшем изменении в системе. Это следствие того, что технический долг накапливается, компоненты в системе очень тесно связаны, автотесты отсутствуют.

      Сводка новостей от pythonz.net 26.04.2020 — 03.05.2020

А теперь о том, что происходило в последнее время на других ресурсах.

      Pylint: детальная проверка работы анализатора кода

Когда Люк работал с Flake8 и одновременно присматривался к Pylint, у него сложилось впечатление, что 95% ошибок, выдаваемых Pylint, были ложными. У других разработчиков был иной опыт взаимодействия с этими анализаторами, поэтому Люк решил детально разобраться в ситуации и изучить его работу на 11 тыс. строк своего кода. Кроме того, он оценил пользу от Pylint, рассматривая его как дополнение к Flake8.

      PEP 257 на русском. (Соглашение о Docstrings)

Бывают моменты, когда тебе хочется максимально погрузиться в язык и понять все его тонкости. В случае Python один из лучших способов это сделать — читать на официальном сайте документацию и PEP-ы. В своё время я этого не делал, поскольку не мог понять многих «технических» моментов, а вариантов русского перевода не было. Сейчас же я решил сам перевести PEP-257, где рассказывается о правильном документировании кода, ведь наверняка это поможет новичкам лучше понять истинный «пайтоновский» подход к написанию кода. Я переводил примеры кода на русский язык, но только для того, чтобы лучше донести смысл. В реальном программировании старайтесь писать документационные строки на английском. Также говорю сразу, что как синоним термина «docstring» я использовал слова: «документация» и «документационные строки». Что же, перейдём к самому переводу.

      PEP 572 (Выражения присваивания в python 3.8)

В этот раз мы рассмотрим PEP 572, который рассказывает про выражения присваивания. Если Вы до сих пор скептически относитесь к оператору ":=" или не до конца понимаете правила его использования, то эта статья для Вас. Здесь вы найдёте множество примеров и ответов на вопрос: «Почему именно так?». Эта статья получилась максимально полной и если у Вас мало времени, то просмотрите раздел, написанный мной. В его начале собраны основные «тезисы» для комфортной работы с выражениями присваивания. Заранее простите, если найдёте ошибки (пишите про них мне, я исправлю).

      Пишем клон neofetch на python

Думаю, что каждому пользователю UNIX-подобных систем знакома утилита neofetch. Эта маленькая программа позволяет вывести информацию о системе и аппаратной части компьютера в удобном формате. Так давайте же напишем свою версию на python!

      Django. Переопределение модели пользователя

Заметка о переопределение пользовательской модели в Django, а также описание некоторых нюансов, которые нужно учитывать при разработке третьесторонних библиотек для Django, которые используют пользовательскую модель.

      Django. Как изменить queryset и возможность редактирования в ModelAdmin в зависимости от пользователя

Небольшая заметка о том, как поправить queryset форме администрирования admin.ModelAdmin или UserAdmin . Собственно разницы никакой, поскольку форма UserAdmin наследована от admin.ModelAdmin . Но тем не менее покажу на примере UserAdmin

      Использование метода Монте-Карло для создания портфеля

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

В этом посте будет рассмотрено то, как оптимизировать портфель при помощи Python и симуляции Монте Карло.

      Большой тюьториал по обработке спортивных данных на python

Последние пару лет в свободное время занимаюсь триатлоном. Этот вид спорта очень популярен во многих странах мира, в особенности в США, Австралии и Европе. В настоящее время набирает стремительную популярность в России и странах СНГ. Речь идет о вовлечении любителей, не профессионалов. В отличие от просто плавания в бассейне, катания на велосипеде и пробежек по утрам, триатлон подразумевает участие в соревнованиях и системной подготовке к ним, даже не будучи профессионалом. Наверняка среди ваших знакомых уже есть по крайней мере один “железный человек” или тот, кто планирует им стать.

      Как работает атака TCP Reset

Атака TCP reset выполняется при помощи одного пакета данных размером не более нескольких байт. Подменённый спуфингом TCP-сегмент, созданный и переданный атакующим, хитростью заставляет двух жертв завершить TCP-соединение, прервав между ними связь, которая могла быть критически важной.
 

Видео

      КБМПи №1 Как имитировать ответ внешней системы в pytest?

Из цикла «Как бы мне?… в Питоне»

      КБМПи №2 Как прочитать или создать торрент в Питоне?

Из цикла «Как бы мне?… в Питоне»





Разместим вашу рекламу

Пиши: mail@pythondigest.ru

Нашли опечатку?

Выделите фрагмент и отправьте нажатием Ctrl+Enter.

Система Orphus