Обновить
1024K+

Python *

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

659,51
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Генератор больших графов транзакций с паттернами преступной деятельности

Время на прочтение5 мин
Охват и читатели5.8K

Доброго времени суток.


Network

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

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

Читать дальше →

Расширение mypy с помощью плагинов

Время на прочтение5 мин
Охват и читатели14K
Добрый день, друзья. А мы продолжаем наращивать интенсивность запуска новых курсов и уже сейчас рады сообщить о том, что в конце апреля стартуют занятия по курсу «Web-разработчик на Python». В связи с этим традиционно делимся переводом полезного материала. Начнём.

Известно, что Python – язык с динамической типизацией. Очень просто писать DSL-подобные фреймворки, которые трудно разобрать инструментами статичной проверки типа. Несмотря на это, с помощью последних функциональных новшеств mypy, таких как protocols и literal types, а также с базовой поддержкой метаклассов и поддержкой дескриптора, мы можем чаще получать точные типы, однако по прежнему трудно избежать ложных срабатываний и других негативных факторов. Чтобы решить эту проблему и избежать необходимости кастомизировать систему типов для каждого фреймворка, mypy поддерживает систему плагинов. Плагины — это модули в Python, которые обеспечивают обратные вызовы (plugin hooks), которые mypy вызовет при проверке типов классов и функций, взаимодействующих с библиотекой или фреймворком. Таким образом можно точнее выделить тип возвращаемой функции, который в противном случае выразить крайне трудно, либо автоматически сгенерировать некоторые методы класса, чтобы отразить эффекты декоратора. Чтобы узнать больше об архитектуре системы плагинов и увидеть полный список возможностей, ознакомьтесь с документацией.

Читать дальше →

Процессим биткоин. Как устроена страница оплаты в B2BinPay

Время на прочтение6 мин
Охват и читатели4.4K
B2BinPay — криптовалютная платежная система с множеством связанных бэкэндов приложений, аналитики, нод, очередей, но лишь одной UI-страницей, которую видит конечный пользователь. К ней предъявляются высокие требования относительно удобства в использовании. Несмотря на кажущуюся простоту страницы, команде разработчиков было бы интересно поделиться тем, как она устроена изнутри.

Для понимания бизнес-процессов потребуется погрузиться в предметную область. Для читателей, которые ещё не знают, что такое криптовалюта, блокчейн и адрес, мы составили короткие и понятные определения под катом.


Читать дальше →

Прорабатываем навык использования группировки и визуализации данных в Python

Время на прочтение5 мин
Охват и читатели20K
image

Привет, Хабр!

Сегодня будем прорабатывать навык использования средств группирования и визуализации данных в Python. В предоставленном датасете на Github проанализируем несколько характеристик и построим набор визуализаций.

По традиции, в начале, определим цели:

  • Сгруппировать данные по полу и году и визуализировать общую динамику рождаемости обоих полов;
  • Найти самые популярные имена за всю историю;
  • Разбить весь временной промежуток в данных на 10 частей и для каждой найти самое популярное имя каждого пола. Для каждого найденного имени визуализировать его динамику за все время;
  • Для каждого года рассчитать сколько имен покрывает 50% людей и визуализировать (мы увидим разнообразие имен за каждый год);
  • Выбрать 4 года из всего промежутка и отобразить для каждого года распределение по первой букве в имени и по последней букве в имени;
  • Составить список из нескольких известных людей (президенты, певцы, актеры, киногерои) и оценить их влияние на динамику имен. Построить наглядную визуализацию.

Меньше слов, больше кода!

И, поехали.
Читать дальше →

Подборка @pythonetc, март 2019

Время на прочтение3 мин
Охват и читатели6.9K

Это десятая подборка советов про Python и программирование из моего авторского канала @pythonetc.

Предыдущие подборки.

0_0


0_0 — полностью корректное выражение на Python.
Читать дальше →

Unittest и абстрактные тесты

Время на прочтение3 мин
Охват и читатели8.9K

Вместо вступления


Unittest — наверное самый известный фреймворк для написания тестов в Python. Он очень прост в освоении и его легко начать использовать в вашем проекте. Но ничто не бывает идеальным. В этом посте я хочу рассказать об одной возможности, которой лично мне (думаю, не одному) не хватает в unittest.
Читать дальше →

Для чего и как мы скрываем госномера автомобилей в объявлениях Авито

Время на прочтение7 мин
Охват и читатели95K
Привет. В конце прошлого года мы стали автоматически скрывать номера автомобилей на фотографиях в карточках объявлений на Авито. О том, зачем мы это сделали, и какие есть способы решения таких задач, читайте в статье.

Hide my plate!
Hide my plate!

Использование Python для формирования отчетов в отдельно взятой компании

Время на прочтение5 мин
Охват и читатели17K
Эта история случилась в реальной компании, несмотря на то, что некоторые имена и события вымышлены.

Слава был рядовым разработчиком в небольшой фирме в городе N. Фирма занималась предоставлением услуг образовательным организациям. В наличии было несколько приложений, которые необходимо поддерживать, дорабатывая помаленьку, понемногу. Вот только начальство Славы не верило в его усилия и то, что он ест свой хлеб не просто так. Кроме того, начальство в информационных технологиях не так чтобы очень, но хотело понимать, что делают сотрудники и какая продуктивность у отдела продаж (который надо сказать состоял из одного с половиной человека).
Читать дальше →

Python для Веба: что нужно знать джуниору, чтобы работать и развиваться

Время на прочтение7 мин
Охват и читатели163K
Мы сделали сокращенную расшифровку с главными мыслями из Python Junior Podcast: в нем мы обсудили, с чего начинать и куда податься начинающему разработчику на Python. В последнее время у нас много контента для миддлов и сеньоров, но этот выпуск — точно для джунов.


Аудио- и видеоверсия в конце

Моделируем алгоритм MUSIC для задач определения направления прихода электромагнитной волны

Время на прочтение9 мин
Охват и читатели24K

aaspcats


Предисловие


Начну своё вступление издалека. Давным-давно, в далеких 2016-2017 годах вашему покорному слуге удалось съездить на полугодовое обучение в далекий город Ильменау (Германия), где он успешно (в общем и целом) закончил магистерскую программу Communications and Signal processing. Программа оказалась не из простых, однако сейчас о ней вспоминать даже приятно. Иногда...

Читать дальше →

Сетевые настройки из FreeRadius через DHCP

Время на прочтение11 мин
Охват и читатели19K

Прилетела задача наладить выдачу IP адресов абонентам. Условия задачи:

  • Отдельного сервера под авторизации не дадим — обойдетесь ;)
  • Абоненты должны получать сетевые настройки по DHCP
  • Сеть разнородная. Это и PON оборудование, и обычные свичи с настроенной Опцией 82 и WiFi базы с точками
  • Если ни под одно из условий выдачи IP данные не попадают — необходимо выдать IP из «гостевой» сети

Из хорошего: есть таки сервер на FreeBSD, который может «поработать», но он «за тридевять земель» ;),  не «прям в этой сети».
Читать дальше →

Практическое использование D-Wave 2000Q: крутая кривая обучения квантовым вычислениям

Время на прочтение7 мин
Охват и читатели5.3K

Переосмыслить концепцию задачи тяжело, но результат стоит того




Примечание автора: я знаю, что неправильно вычислил перенос Брэгга как в классическом, так и в квантовом случае; однако, это достаточно близко к правде для того, чтобы понять разницу между программированием классического и квантового компьютера.

Время: где-то в 2018 году. Место: тухлый канал в Слаке.

«Ты знаешь Python?»

Вопросы Джона Тиммера, научного директора Ars Technica, иногда могут застать врасплох. Если бы в Слаке можно было пропитывать буквы осторожностью, то мой ответ «Да» просто сочился бы ею.

Оказывается, что D-Wave решила дать всему миру доступ к своему квантовому оптимизатору через API. Ars пригласили его опробовать, но нужно было знать Python. Я был готов на это.
Читать дальше →

Экзотические структуры данных: Modified Merkle Patricia Trie

Время на прочтение21 мин
Охват и читатели15K

"Какого дьявола я должен помнить наизусть все эти чёртовы алгоритмы и структуры данных?".


Примерно к этому сводятся комментарии большинства статей про прохождение технических интервью. Основной тезис, как правило, заключается в том, что всё так или иначе используемое уже реализовано по десять раз и с наибольшей долей вероятности заниматься этим рядовому программисту вряд ли придётся. Что ж, в какой-то мере это верно. Но, как оказалось, реализовано не всё, и мне, к сожалению (или к счастью?) создавать Структуру Данных всё-таки пришлось.


Загадочное Modified Merkle Patricia Trie.


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


КДПВ

Читать дальше →

Ближайшие события

Анализ статистики по рекламным кампаниям — создаем в DataFrame новую метрику (python)

Время на прочтение1 мин
Охват и читатели5.8K
Для маленьких клиентов (а также для клиентов, у которых сложная для анализа многоканальность) я слежу за чистым CPC (клики, CTR, цена клика, отказы).

Задача: понять какая рк работает эффективней и, исходя из этого, отредактировать ставки.

Для этого я в аналитике использую стоимость полезного клика (CUC — Cost per Useful Click). Данный показатель учитывает стоимость клика, и показатель отказов.

Формула: Cost/Clicks*((100-BounseRate)/100)
Объясню простым языком:
Мы получили 200 кликов за 2000₽, процент отказов 20%. Значит действительно полезных кликов мы купили 80шт,
2000₽/80 = 25₽

Также данная метрика помогает анализировать статистику в небольших выборках, где по конверсиям нельзя принять решение.
Читать дальше →

Moscow Python Conf ++ через три дня: о чем расскажет Bobuk и кто в это время выступит в параллельных залах?

Время на прочтение6 мин
Охват и читатели3.4K
Эксперимент по подготовке докладов на Moscow Python Conf ++ с нуля на финишной прямой. Слайды готовы, прогоны провели, осталось только дождаться премьеры — уже в эту пятницу 5 апреля. В расписании 24 доклада про использование Python в продакшене крупных компаний. Под катом — взгляд на организацию глазами программного комитета и смешные проблемы вроде «кого ставить в параллель хедлайнеру, чтобы не было пустых залов и обиженных спикеров».
Читать дальше →

Парадокс Питона (The Python Paradox)

Время на прочтение2 мин
Охват и читатели42K

В последнем выпуске подкаста "Цинковый прод" помимо всего прочего обсуждался так называемый парадокс Питона (The Python Paradox).


Как ни странно, на Хабре нет практически ни одного упоминания об этом парадоксе. При том, что, несмотря на свою простоту, мысль очень интересная


В далеком-предалеком 2004 году, когда язык Python был чем-то необычным, немейнстримовым, вышла статья Пола Грэма, в которой он поделился своим эмпирическим наблюдением: программисты на Питоне, которых он знает, гораздо сообразительнее, чем Java-программисты.

Читать дальше →

PyTest Нео

Время на прочтение1 мин
Охват и читатели4.6K
Одним вечером, созерцая бесконечные тесты и глядя на бегущие точки, проскочила мысль — как это похоже на Матрицу! Так и родилась идея, сделать визуализацию тестов в виде Матрицы.



Под катом анимация и немного подробностей.
Читать дальше →

Как сделать триггер DAG'а в Airflow, используя Experimental API

Время на прочтение4 мин
Охват и читатели9.2K

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


Так было, например, в 2015 году и мы на программе “Специалист по большим данным” пользовались Hadoop-кластером со Spark на 35 одновременных пользователей. Как его готовить под такой юзкейс с использованием YARN, было непонятно. В итоге, разобравшись и пройдя путь самостоятельно, сделали пост на Хабре и еще выступили на Moscow Spark Meetup.


Предыстория


В этот раз речь пойдет о другой программе – Data Engineer. На ней наши участники строят два типа архитектуры: lambda и kappa. И в lamdba-архитектуре в рамках батч-обработки используется Airflow для перекладывания логов из HDFS в ClickHouse.


Все в общем-то хорошо. Пусть строят свои пайплайны. Однако, есть "но": все наши программы технологичны с точки зрения самого процесса обучения. Для проверки лаб мы используем автоматические чекеры: участнику нужно зайти в личный кабинет, нажать кнопку “Проверить”, и через какое-то время он видит какую-то расширенную обратную связь на то, что сделал. И именно в этот момент мы начинаем подходить к нашей проблеме.

Читать дальше →

Termux шаг за шагом (Часть 2)

Время на прочтение8 мин
Охват и читатели206K


В прошлой части мы с вами познакомились с базовыми командами Termux'а, настроили SSH соединение с ПК, научились создавать alias'ы и установили несколько полезных утилит. В этот раз нам предстоит шагнуть еще дальше, мы с вами:


  • узнаем про Termux:API
  • установим Python и nano, а также напишем "Hello, world!" на Python
  • узнаем про bash-скрипты, и напишем скрипт с использованием Termux:API
  • используя bash-скрипт, Termux:API и Python напишем простую программку
Читать дальше →

Монады за 15 минут

Время на прочтение6 мин
Охват и читатели70K

Вступление


На конференции YOW! 2013 один из разработчиков языка Haskell, проф. Филип Вадлер, показал, как монады позволяют чистым функциональным языкам осуществлять императивные по сути операции, такие, как ввод-вывод и обработку исключений. Неудивительно, что интерес аудитории к этой теме породил взрывной рост публикаций о монадах в Интернет. К сожалению, бо́льшая часть этих публикаций использует примеры, написанные на функциональных языках, подразумевая, что о монадах хотят узнать новички в функциональном программировании. Но монады не специфичны для Haskell или функциональных языков, и вполне могут быть проиллюстрированы примерами на императивных языках программирования. Это и является целью данного руководства.

Чем это руководство отличается от остальных? Мы попытаемся не более чем за 15 минут «открыть» монады, используя лишь интуицию и несколько элементарных примеров кода на Python. Мы поэтому не станем теоретизировать и углубляться в философию, рассуждая о буррито, космических скафандрах, письменных столах и эндофункторах.
Читать дальше →