Все потоки
Поиск
Написать публикацию
Обновить
415.17

Python *

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

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

Как использовать Python для проверки протокола Signal

Время на прочтение12 мин
Количество просмотров4.8K

Galois работает над повышением удобства SAW, инструмента для верификации программ на C и Java, исходный код которого открыт. Основным способом взаимодействия пользователей с SAW является его спецификация и язык программирования сценариев. Чтобы сделать SAW как можно более доступным, в качестве языка программирования SAW теперь можно использовать Python! Для демонстрации этой новой возможности в Galois создали пример, выполнив проверку части реализации протокола Signal на языке С. В частности, как спецификация SAW определяются условия, при которых сообщение протокола Signal будет успешно аутентифицировано. К старту курса о Fullstack-разработке на Python мы перевели материал об этом примере.

Читать далее

ML глазами практикующего трейдера

Время на прочтение12 мин
Количество просмотров17K

Сразу скажу что назвать себя программистом или знатоком машинном обучении у меня язык не поворачивается, скажем так - программирую я лучше 90% трейдеров и разбираюсь в трейдинге лучше 99% программистов и datascientists. Это не к тому что я такой молодец, это скорей к вопросу какая дыра непонимания существует между областями знаний, которую я попытаюсь немножко устранить.

Я веду свой блог на трейдерском сайте, где описываю свои подходы прикрутить ML к трейдингу. При том что я сам весьма начинающий в области ML, прямо скажем я не часто встречаю релевантные отзывы, ибо 90% практикующих трейдеров о нейросетях только слышали и имеют представление о нем как о розовом пони. В равной мере когда я вижу как какой то чистый математик или програмист пробует реализовать свои знания применительно к фондовому рынку, у меня частенько начинает литься кровь из глаз.

Написать свой первый пост на хабре меня сподвигла 2 статьи на хабре на тему прогнозирования активов, одна совсем древняя, другая свежая, я даже ее откаментировал. Так часто бывает когда что то хорошее вызывает желание алаверды. А статья хороша хотя бы тем, что там совершенно верный подход к трейдингу на финансовых рынках: "выдвигаем гипотезу-тестируем на истории". Ничего лучше не придумано (хотя наверно есть гении которые могут познав суть предмета, прогнозировать его дальнейшее состояние, даже такое, которое раньше не существовало в истории). Многие трейдеры вообще этого не понимают, предпочитая торговать по книжкам гуру или избитым техиндикаторам. Можно было бы бомбить эту статью комментариями, но справедливее, помимо критики было бы написать что то полезное для всех ребят из IT ("критикуешь?! А ты предложи что то взамен!"), которые вооружившись инструментарием ML хотят попробовать реализовать свои знания на финансовых рынках. А этот интерес очевидный, так как финансовый рынок как своего рода интеллектуальное казино предоставляет возможность капитализировать свои знания, трудолюбие, талант, осталось дело за малым - создать рабочий алгоритм позволяющий выносить денюжки с рынка. На языке трейдеров называется это алготрейдингом. Но много ли вы слышали о удачном применении ML в трейдинге? Я лично нет, хотя можно самоуспокоиться тем, что удачные реализации никто светить не будет, и все на самом деле работает и пока мы тут пишем и читаем, кто то удачно вооружившись градиентным бустингом или сверточной сетью делает профиты мозолистыми пальцами, холодной головой и горячим сердцем. Но сдается мне не так все просто. Помимо того что фондовый рынок вообще нельзя прогнозировать (ога!), тут есть некоторые проблемы реализации, которые я попытаюсь, путанно, но изложить.

Читать далее

Анализ сообщений коммерческого чата на предмет игнорирования вопроса клиента на основе модели nlp

Время на прочтение8 мин
Количество просмотров3.3K

Задача – «Провести анализ сообщений коммерческого чата на предмет игнорирования вопроса клиента менеджером компании»

На входе: лог чатов с клиентом компании в csv формате.

Читать далее

Обучаем качественные модели без DensePose разметки

Время на прочтение2 мин
Количество просмотров1.9K

Возможно ли обучить качественную модель, которая предсказывает 3D координаты поверхности тела животного по фотографии, без соответствующей DensePose разметки?

В предверии CVPR2021 вспомним, что исследователи из Facebook Artificial Intelligence Research смогли предложить на конференции по машинному зрению годом ранее.

Читать далее

SQLAlchemy: а ведь раньше я презирал ORM

Время на прочтение10 мин
Количество просмотров40K

Так вышло, что на заре моей карьеры в IT меня покусал Oracle -- тогда я ещё не знал ни одной ORM, но уже шпарил SQL и знал, насколько огромны возможности БД.

Знакомство с DjangoORM ввело меня в глубокую фрустрацию. Вместо возможностей -- хрена с два, а не составной первичный ключ или оконные функции. Специфические фичи БД проще забыть. Добивало то, что по цене нулевой гибкости мне продавали падение же производительности -- сборка ORM-запроса не бесплатная. Ну и вишенка на торте -- в дополнение к синтаксису SQL надо знать ещё и синтаксис ORM, который этот SQL сгенерирует. Недостатки, которые я купил за дополнительную когнитивную нагрузку -- вот уж где достижение индустрии. Поэтому я всерьёз считал, что без ORM проще, гибче и в разы производительнее -- ведь у вас в руках все возможности БД.

Так вот, эта история с SQLAlchemy -- счастливая история о том, как я заново открыл для себя ORM. В этой статье я расскажу, как я вообще докатился до такой жизни, о некоторых подводных камнях SQLAlchemy, и под конец перейду к тому, что вызвало у меня бурный восторг, которым попытаюсь с вами поделиться.

SELECT article FROM habr

«A/B-тест» в инженерно-геологических изысканиях на языке Python

Время на прочтение7 мин
Количество просмотров6.9K

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

При данной постановке задачи можно применить методику A/B-тестирования.

Читать далее

Ptpython: улучшенный REPL для Python

Время на прочтение4 мин
Количество просмотров11K
Возникало ли у вас когда-нибудь желание быстро испытать какую-нибудь свежую идею, прибегнув к интерфейсу командной строки Python, к REPL? Вероятно, если речь идёт об эксперименте буквально с несколькими строками кода, вам просто не захочется создавать для этого новый «блокнот» Jupyter.

Но в подобной ситуации, возможно, вас не особенно порадует и перспектива использования классической консоли Python, так как она, в отличие от Jupyter Notebook, не поддерживает автодополнение ввода и не умеет работать с документационными строками. В REPL, кроме того, нельзя, после нажатия на Enter, исправлять ошибки в коде.

Что если можно было бы превратить довольно-таки скучную командную строку Python в многофункциональный инструмент, вроде того, запись работы с которым показана ниже?


Продвинутая командная строка Python

Собственно, именно на тех, у кого возникает подобное желание, и ориентирован проект ptpython.
Узнать подробности

Реферальная система в Telegram ботах

Время на прочтение4 мин
Количество просмотров61K

Всем привет! Наверняка вы видели в различных ботах ссылку типа https://t.me/<юзернейм_бота>?start=<число>. Обычно в качестве числа указывается Telegram ID реферера. В этой статье я расскажу как обрабатывать такие ссылки в своем боте.

Для разработки ботов я использую Python библиотеку pytelegrambotapi.

Для начала создадим тестового бота.

Читать далее

Упадок RNN и LSTM сетей

Время на прочтение7 мин
Количество просмотров14K

Перевод: Давыдов А.Н.

Мы полюбили RNN (рекуррентные нейронные сети), LSTM (Long-short term memory), и все их варианты. А теперь пора от них отказаться!

В 2014 году LSTM и RNN, были воскрешены. Но мы были молоды и неопытны. В течении нескольких лет они был способом решения таких задач как: последовательное обучение, перевод последовательностей (seq2seq). Так же они позволили добиться потрясающих результатов в понимании речи и переводе ее в текст. Эти сети поспособствовали восхождению таких голосовых помощников как Сири, Кортана, голосовые помощники Гугл и Алекса. Не забудем и машинный перевод, который позволил нам переводить документы на разные языки. Или нейросетевой машинный перевод, позволяющий переводить изображения в текст, текст в изображения, делать субтитры для видео и т.д.

Затем, в последующие годы (2015-16) появились ResNet и Attention («Внимание»). Тогда начало приходить понимание, что LSTM – была умной техникой обойти, а не решить задачу. Так же Attention показал, что MLP сеть (Multi-Layer Perceptron Neural Networks -многослойные персептроны) может быть заменена усредняющими сетями, управляемыми вектором контекста. (более подробно об этом дальше).

Прошло всего 2 года, и сегодня мы можем однозначно сказать:

«Завязывайте с RNN и LSTM, они не так хороши!»

Можете не принимать наши слова на веру, просто посмотрите, что сети на основе Attention используют такие компании как Гугл, Фэйсбук, Сэйлфорс и это только некоторые из них. Все эти компании заменили RNN сети и их варианты на сети основанные на Attention и это только начало. Дни RNN сочтены во всех приложениях, так как они требуют больше ресурсов для обучения и работы, чем модели основанные на Attention.

Читать далее

Искусство написания циклов на Python

Время на прочтение4 мин
Количество просмотров99K


Цикл for — самый базовый инструмент потока управления большинства языков программирования. Например, простой цикл for на C выглядит так:

int i;
for (i=0;i<N;i++)
{
  //do something
}

Не существует более изящного способа написания цикла for на C. В сложных случаях обычно приходится писать уродливые вложенные циклы или задавать множество вспомогательных переменных (например, как i в показанном выше коде).

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

Эта статья познакомит вас с самыми полезными трюками по написанию циклов на Python. Надеюсь, она поможет вам ощутить красоту этого языка.
Читать дальше →

Автоматизация тестирования на Python. Шесть способов тестировать эффективно

Время на прочтение7 мин
Количество просмотров66K

Мы уже говорили об автоматизации тестирования, теперь пришло время познакомиться с шестью лучшими инструментами автоматизации тестирования на Python.

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

Вы можете настроить нужную степень и уровень автоматизации тестирования на Python, и создавать тесты в соответствии с растущей базой кода. 

Итак, начнем.

Читать далее

Нейродайджест: главное из области машинного обучения за май 2021

Время на прочтение6 мин
Количество просмотров4.4K

Управляемые складки одежды и морщины, фотореалистичные симуляции вождения, естественное освещение объектов при смене фона, китайский аналог DALL-E  и многое другое: встречайте подборку самых интересных исследований и нейросетевых моделей, которые появились в прошедшем месяце.      

Перейти к обзору

Пишем обёртку над SQLAlchemy Сore

Время на прочтение8 мин
Количество просмотров11K

Для асинхронного Python существует мало полноценных ORM, и им далеко до таких монстров-комбайнов, как DjangoOrm и SQLAlchemy.ORM. Бедность ORM-инструментария для асинхронного программирования заставила многих программистов отказаться от зачастую непонятной им работы с ORM и перейти к более прозрачному взаимодействию с БД. Решение в лоб — написание raw SQL, но в этом случае запросы не будут защищены от инъекций, а запросы, составляемые по бизнес логике с опциональными параметрами, превратятся в конкатенацию строк. Важно найти баланс между прозрачностью выполнения кода, скоростью его написания и читаемостью.

Ниже я предлагаю реализацию такого баланса c использованием SQLAlchemy Core.

Читать далее

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

Сам себе Гутенберг. Делаем многоязычные параллельные книги

Время на прочтение14 мин
Количество просмотров8.5K

Lingtrain parallel books article cover


В прошлый раз мы с вами научились делать параллельные книги и сделали русско-английский вариант отрывка романа Харпер Ли "Убить пересмешника". Сегодня мы сделаем следующий шаг и создадим полноценную многоязычную книгу на восьми языках.


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


Семь книг


Проделаем все на примере романа Булгакова "Мастер и Маргарита", потому что он очень популярен в мире и был переведен на множество языков. Я нашел его версии на английском и немецком (германские языки); белорусском, чешском и украинском (славянские языки); а также на венгерском и китайском языках. Все семь текстов мы выровняем с русским оригиналом, получим семь книг. Затем выровняем их между собой и получим возможность выбирать любые комбинации языков для своей книги в любом порядке. Полные версии книг можно будет скачать в формате pdf в конце статьи.


Начнем с пары венгерский-русский.

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

Декораторы Python: хватит это терпеть

Время на прочтение4 мин
Количество просмотров22K

Всем привет! В этой статье я расскажу об инструменте, разработанным мной, который изменяет работу декораторов в Python и делает их более «Питоничными».

Я не буду рассказывать про области применения декораторов. Есть множество статей на эту тему.

Для начала, давайте вспомним: что же такое декораторы в Пайтон.

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

Давайте разбираться!

Избавиться от боли

Как учить протоколы без чтения RFC: как сэкономить время при разработке

Время на прочтение7 мин
Количество просмотров8.6K


Если вы разрабатывает приложение, работающее по сети, или проводите отладку работы такого приложения, доскональное знание работы сетевых протоколов сильно облегчит вашу задачу. Первоисточником подобного знания являются RFC и, к счастью, они с давних времен находятся в открытом доступе. Более того, прочитать их можно даже консольных браузером links, так как кроме текста в них ничего не содержится.

Тем не менее, скорее всего большинство читателей Хабра никогда не читали полностью текст хотя бы одного RFC, даже RFC-2616. Помимо зубодробительного стиля бюрократических документов, помехой может служить языковой барьер. К тому же чаще всего нужно понять какой-то определенный аспект архитектуры протокола: длину и тип полей, код возврата, расположение внутри заголовка. Для этого вовсе не обязательно читать все от корки до корки.

Как раз для этого случая написан Protocol, довольно простое консольное приложение, написанное на Python. Оно имеет двоякое назначение.

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

Генераторы для самых маленьких

Время на прочтение13 мин
Количество просмотров69K

Всем привет! В бытность мою, когда я самостоятельно изучал Python, я находил достаточно теоретического материала о языке и его возможностях. Однако даже после прочтения нескольких статей на разных сайтах и книг многое не укладывались у меня в голове (да, вот такой вот я тугой). Непонятные концепции приходилось зубрить «на веру» без глубокого понимания, потому что практические примеры в статьях были для меня сложны. Время шло, я становился опытнее, понимание приходило на практических задачах, и в какой-то момент я стал учить Python'у своих друзей. В рамках наставничества я обнаружил, что, кажется, наметил путь, по которому можно объяснять сложные концепции простыми словами.

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

Сегодня хочется ещё раз поговорить о генераторах. Итак, в бой!

Читать далее

Конечные автоматы и django

Время на прочтение2 мин
Количество просмотров5K

При работе над django-проектом, есть ряд must-have сторонних библиотек, если не хочется бесконечно изобретать велосипед. Средстав отладки sql запросов(debug-toolbar, silk, --print-sql из django-extensions), что-нибудь для хранения древовидных структур, переодических/отложенных задач(кстати, cron-like интерфейс есть у uswgi. EAV всё ещё бывает нужен, хотя часто его можно заменить jsonfield. И одна из таких крайне полезных вещей, но почему-то реже обсуждаемая в сети - FSM. Не так часто почему-то сталкиваюсь с ними в чужом коде.

<cut>

Практически у каждой записи в БД есть некоторое состояние. Например, для комментария это может быть - опубликован/удален/удален модератором. Для заказа в магазине - оформлен/оплачен/доставлен/возврат и т.п. Причем переход из одного состояния в другое часто бывает размазан по коду и в нем присутствует бизнес-логика, которую надо обильно покрывать тестами(всё равно придется, но можно избежать тестирования элементарных вещей, например, что заказ может перейти в состояние "возврат денег" только после того, как он побывал в состоянии "оплачен".

Вполне логично было бы описывать такие переходы более декларативно и в одном месте. Вместе с необходимой логикой и проверкой доступа.

Вот пример кода из тестов библиотеки django-fsm

Читать далее

Первые шаги в aiohttp

Время на прочтение6 мин
Количество просмотров95K

Привет, меня зовут Артём. Я работаю бэкендером в KTS и веду курсы по разработке в KTS Metaclass. Заметил, что труднее всего студентам даются темы по асинхронному программированию.

Основываясь на своём преподавательском опыте, я написал туториал, рассказывающий о создании базового aiohttp-сервиса с нуля и затрагивающий самые сложные для студентов вопросы: как сделать асинхронное python-приложение, как работать с базой данных и как разложить свой проект в интернете.

Это первая статья цикла, в ней мы напишем небольшое веб-приложение на aiohttp  — стену с отзывами, где каждый может оставить свое мнение о каком-то продукте.

Погнали!

Разбираемся, как подавить шум в речи с помощью глубокого обучения и OpenVINO

Время на прочтение10 мин
Количество просмотров18K

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

Читать далее

Вклад авторов