В поисках компактного FizzBuzz на Python

Пришло время оживить преданный забвению FizzBuzz. Попробуем найти самое компактное решение FizzBuzz на Python.

Высокоуровневый язык программирования

Пришло время оживить преданный забвению FizzBuzz. Попробуем найти самое компактное решение FizzBuzz на Python.

Всем привет, я - Денис, Product Manager в банке, а до этого перезапускал вебинарную платформу VirtualRoom.
Сегодня я расскажу про свой скрипт, который отмечал меня на лекциях в аспирантуре мехмата МГУ.
Полную версию можно посмотреть на youtube.

В данной статье речь пойдёт о том, что такое инструмент MLflow и из каких компонентов он состоит. Как работает данный фреймворк, в каких случаях рекомендуется его использовать и какие проблемы он позволяет решить. Затронем основные плюсы и минусы данного инструмента.

Всем привет! Меня зовут Аникин Денис, я тимлид в команде Chat в Райффайзенбанке. А также представитель внутреннего Python-сообщества, так называемый «community lead» (об этом как-нибудь в другой раз). В этой статье я хотел поговорить про отношение к Python среди разработчиков и обсудить все основные претензии, которые очень давно следуют за языком по пятам.

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

Пошаговое руководство написания чат-бота на языке Python.
Установим Python и библиотеки на Debian, подключим PostgreSQL, получим вопросы и ответы, подключим морфологию и нормализуем слова, запустим чат-бота в Telegram.
Голая практика и полный листинг с комментариями.

Предыдущая статья на тему выборов в государственную думу: «Восстанавливаем результаты выборов 2021 с помощью машинного обучения» вызвала интерес. Вместе с тем к статье было много критических комментариев. В некоторых из этих комментариев были подняты спорные вопросы, которые требовали дополнительных исследований.
В данной работе производится симуляция выборных фальсификаций различного типа на реальных данных итогов голосования, которое прошло в сентябре 2021 года. Это позволяет оценить корректность результатов восстановления результатов голосования с помощью библиотеки scikit-learn и позволяет выявить некоторые особенности такого подхода.
framebuf — это то, что, при разработке на MicroPython, даёт нам возможности по работе с основными графическими элементами. Например — с текстовыми символами, с прямоугольниками, да и с отдельными пикселями. Это позволяет создать множество интересных изображений. Но весьма полезно оснастить MicroPython ещё и возможность рисования закрашенных треугольников, кругов и колец.

В процессе этой статьи будет разработан фильтр для изображения, который позволит показать контуры фигур на изображение.
При помощи формул, описанных в статье можно найти значение каждого пикселя опираясь на соседей этого пикселя.
Далее реализация на python с подробными пояснениями.
Итоги работы и полная версия обработанного изображения.

Частичные пароли: история о том, как задёшево вывести из себя пользователя и/или как вставить палки в колёса кейлоггерам
Что такое частичные пароли? Каковы достоинства и недостатки их использования в процессе аутентификации? В статье подробно рассматриваются математические основы, технические детали и практика применения частичных паролей. Предлагается порассуждать об их месте в современных цифровых системах. Текст содержит множество иллюстраций и пояснений, помогающих понять суть вопроса.
Приятного чтения!

Rust набирает популярность среди разработчиков. Мы, организаторы RustCon, решили опубликовать серию статей о том, по каким причинам компании начинают использовать его для своих проектов.
Первая статья в серии - интервью с Григорием Петровым, DevRel из Evrone. Применять новомодный Rust в заказной разработке - решение, на первый взгляд, неочевидное. Готовых разработчиков мало, порог входа - высокий. Давайте узнаем, в каких условиях использовать Rust все-таки полезно?
Гриша, расскажи, как вы в Evrone пришли к использованию Rust?
13 лет назад, когда Evrone только начинался, мы специализировались на full stack Ruby решениях. Но с годами мы начали расширять палитру того, что предлагаем клиентам. Вначале у нас выделилось направление фронтенд - это React, Vue.js. Затем к нам приполз Python, как альтернатива Ruby, потому что многие клиенты выбирают стек технологий под уже существующие команды и процессы.
И уже несколько лет мы используем Rust как комплементарную технологию, которая позволяет точечно ускорять наши решения на Python и Ruby в 10, а иногда и 100 раз.
Теперь, когда к нам приходит бизнес и говорит: «Ну вы же знаете, что Ruby нетороплив, наша система уже 100 000 запросов в секунду, нам надо потратить еще вагон денег и переписать ее на Java. Да?» Мы такие: «Нет! Мы выделяем вот эти три точки, которые у вас под нагрузкой, и наши ребята переписывают их на Rust. У вас всё начинает работать быстро, надежно и при этом поддерживаемо, а бизнес фичи продолжают фигачиться с той же страшной скоростью».

Я в компании отвечаю за работу команды разработчиков. Команда небольшая - всего 6 разрабов, но за последний год с небольшим мы с нуля разработали и внедрили пять проектов. Причем это были не детские проектики, а вполне промышленные проекты, которые сейчас начинают свою работу на металлургическом заводе и интегрированы со сталеплавильными установками. Много это или мало? Чаще всего, от запуска проекта до его внедрения проходит примерно год-два. А тут средняя скорость разработки получается примерно проект за два-три месяца.
Сразу скажу, что выдержать такой темп было нелегко и для достижения поставленной задачи применялась целая серия инструментов, архитектурных и организационных приемов. Но на чем бы я хотел остановиться в текущей заметке - это языки разработки.

Кадр из мультфильма «Смешарики: 132 серия (Пылесос)»
При проведении различной ad-hoc аналитики или же создания интеграций между DS решением и внешними системами очень часто приходится использовать REST API для получения данных. Ситуация, когда все помещается в один запрос — идеальна, но редка как единорог. Как правило, приходится тянуть большие объемы, тянуть по частям и в режиме многоходовок, возможно, с использованием курсоров. Внешняя система может лечь при большой нагрузке или же там включатся механизмы пропуска запросов (троттлинг). Вопросы «почему у меня не работает» и «как мне сделать, чтобы работало» возникают с завидной регулярностью.
Ниже приведен блочный разбор типового скрипта для получению данных из внешней системы через REST API. Его можно рассматривать как первое приближение решения задачи подобного класса.
Является продолжением серии предыдущих публикаций.

Кадр из мультфильма «Over the Garden Wall» (2014)
Большое количество курсов по аналитике данных и питону создает впечатление, что «два месяца курсов, пандас в руках» и ты data science специалист, готовый порвать любую прямоугольную задачу.
Однако, изначально просто счёт относился к computer science, а data science было более широким и междисциплинарным понятием. В классическом понимании data scientist — «T-shape» специалист, который оцифровывает и увязывает административные и предметные вертикали/горизонтали компаний через математические модели.
Далее немного иллюстрирующих примеров.
Является продолжением серии предыдущих публикаций.


Всем доброго времени суток! В этой статье мы подробнее остановимся на ПО терминала учета рабочего времени и контроля доступа, о разработке которого я писал в прошлой статье. Данная статья является логическим продолжением, т.к. в прошлой статье я рассматривал всё железо терминала, поэтому настоятельно рекомендую ознакомиться для дальнейшего понимания написанного.
По заказу клиентов нужно было разработать терминал учета рабочего времени (с возможностями СКУД), который бы фиксировал временные интервалы сотрудников (как рабочие, так и перерывы) по отпечатку пальца. Получаемая информация, в свою очередь, формировалась бы в отчеты и табели в аналитическом облачном сервисе TARGControl. “Железо” уже готово, осталось дело за малым - разработать ПО для нашего терминала.
Привет, Хаброжители! Когда речь идет о создании мощных и эффективных хакерских инструментов, большинство аналитиков по безопасности выбирают Python. Во втором издании бестселлера Black Hat Python вы исследуете темную сторону возможностей Python — все от написания сетевых снифферов, похищения учетных данных электронной почты и брутфорса каталогов до разработки мутационных фаззеров, анализа виртуальных машин и создания скрытых троянов. В рамках процесса кредитования физических и юридических лиц, банки запрашивают у клиентов оригиналы различных документов. Эти документы, очевидно, необходимо проверять по многим критериям. Из пунктов проверки документов достаточно большую значимость среди прочих несет проверка полноты пакета документов. В данной статье будет рассмотрена именно эта процедура.
Существует множество таких заявок на кредит, где заявитель мог подать в банк неполный комплект документов, или может случиться так, что некоторые из поданных заявителем документов сохранены в ненадлежащем формате либо нечитаемы. Может случиться и так, что файлы передадутся до места хранения (сервер) не в полном объеме. Все это – нежелательные явления, которые необходимо обнаружить в процессе работы над данной задачей.
Данные по задаче были предоставлены в большом объеме. Всего предстояло обработать более 400 000 файлов в различном формате. В основном, это скан-копии документов клиента, но есть также и таблицы, и текстовые документы. Всего в папках содержатся файлы с 23 разными форматами, но важны в рамках задачи только PDF файлы и файлы изображений.
Для обработки выбраны файлы за определенный период. Они разделены по папкам, в каждой из которых хранится около 50 000 файлов. Все эти файлы принадлежат к разным случаям подачи заявлений, и в зависимости от типа такого заявления, к нему должны быть приложены документы, из одного, нескольких или всех классов. Помимо файлов есть сводная таблица с принадлежностью файлов к заявлениям и другой важной информацией.
GIL расшифровывается как Global Interpreter Lock (Глобальная блокировка интерпретатора), и его задача состоит в том, чтобы сделать интерпретатор CPython потокобезопасным.
GIL позволяет только одному потоку ОС выполнять байт-код Python в любой момент времени. Следствием этого является невозможность ускорить выполнение кода Python с интенсивным использованием процессора путем распределения работы между несколькими потоками.
Это, однако, не единственный негативный эффект. GIL вводит накладные расходы, которые замедляют работу многопоточных программ, и это может повлиять даже на потоки, связанные с вводом-выводом.
В этом посте я хотел бы рассказать вам больше о неочевидных эффектах GIL. По пути мы обсудим, что такое GIL на самом деле, почему он существует, как он работает и как он повлияет на параллелизм в будущих реализациях Python.
Примечание: В этом посте рассматривается CPython версии 3.9.