Обновить
520.69

Python *

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

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

Robot Framework для автоматизации тестирования: ограничения и плюшки

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

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

Я столкнулся с Robot Framework около года назад. Перед нами стояла задача силами двух инженеров автоматизировать довольно большой объем тестов в сжатые сроки, т.к. ручная регрессия перестала влезать в разумные рамки. Сам проект связан с пожарной безопасностью. Тестировать предстояло Web-часть в трех браузерах и Mobile-часть на множестве iOS и Android телефонов и планшетов. Помимо этого, в наличии были тесты, которые взаимодействовали и с Web, и с Mobile. Конечно, это не ракету построить, но и не совсем тривиально. Честно скажу, я сопротивлялся, мы долго думали и в итоге, по совокупности внутренних и внешних факторов, выбрали Robot Framework

Читать далее

Как подключить OLED дисплей к Raspberry Pi Pico — быстрый старт

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

У Raspberry Pi Pico несколько функциональных ограничений, включая отсутствие модуля беспроводной связи. Но, в целом, это отличная плата для реализации самых разных проектов. Одно из ее достоинств — простота подключения дисплея. Она позволяет работать с Pico Display или Pico Explorer Base, но, как оказалось, есть и более недорогие альтернативы.

Под катом — инструкция по подключению OLED-экрана с диагональю всего 0,96 дюйма. Для этого нужно немного попаять и написать небольшую программу на MicroPython. Подключение экрана производится по I2C-интерфейсу. Все очень просто: с задачей справится даже ребенок. В целом, эта инструкция — для тех, кто только начинает знакомство с платой. Опытные пользователи и так знают, что делать. Если этот пост окажется востребованным, то мы будем регулярно публиковать несложные руководства подобного рода. Что же, давайте приступим.
Читать дальше →

Вводная статья по реализации целе-вероятностного кодирования переменных (Feature Target Encoding)

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

Недавно я сделал проект, в котором целевая переменная была мультиклассовой,  поэтому, я искал подходящие пути для кодирования категориальных признаков. Я нашёл множество статей, перечислявших преимущества кодирования через среднее значение целевой переменной перед другими методами, а также то, как выполнить эту задачу в двух строчках кода, используя библиотеку category_encoders . Однако, к своему удивлению, я обнаружил, что ни одна статья не продемонстрировала этого метода для мультиклассовой целевой переменной. Я просмотрел документацию category_encoders, и понял, что библиотека работает только для бинарных или вещественных переменных, посмотрел оригинальную работу  Даниэля Мисси-Баррека (Daniele Micci-Barreca), который ввел средне-целевую кодировку (mean target encoding) и так же не обнаружил ничего толкового. 

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

Формулы, объяснения, код >>

Json api сервис на aiohttp: middleware и валидация

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

В этой статье я опишу один из подходов для создания json api сервиса с валидацией данных.


Сервис будет реализован на aiohttp. Это современный, постоянно развивающийся фреймворк на языке python, использующий asyncio.


Об аннотациях:


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

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

Машина опорных векторов в 30 строчек

Время на прочтение16 мин
Охват и читатели11K
В этой статье я расскажу как написать свою очень простую машину опорных векторов без scikit-learn или других библиотек с готовой реализацией всего в 30 строчек на Python. Если вам хотелось разобраться в алгоритме SMO, но он показался слишком сложным, то эта статья может быть вам полезна.
Поехали!

Соглашение Эйнштейна и einsum

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

Удивительное дело, но в русскоязычном сегменте интернета почти нет материала, разъясняющего понятным языком соглашение Эйнштейна о суммировании. Не менее удивительно то, что материалов, позволяющих понять принцип работы функции einsum в русскоязычном интернете ещё меньше. На английском есть довольно развёрнутый ответ о работе einsum на stack overflow, а на русском только некоторое число сайтов, предоставляющих кривой перевод этого самого ответа. Хочу исправить эту проблему с недостатком материалов, и всех, кому интересно приглашаю к прочтению!

Погрузиться в einsum

Как ленивый работящему помог. Ещё один скрипт для релиза подкаста

Время на прочтение12 мин
Охват и читатели6.3K
Было время, когда у меня уже были дети, стабильная работа, камри, уроки английского и три раза в неделю бассейн. В общем такой себе состоявшийся мужчина. И я размышлял "Ну зачем мне питон? На работе совсем нет задач для автоматизации". Ни единого раза с того момента я не оказывался на столь высоком пике Даннинга-Крюгера (брата Баадера-Майнхофа, если что).

Но на курсы я тогда всё же сходил.

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

Ниже старая как кости мамонта история о появлении yet another убер-скрипта для механизации рутины. Началась она с попытки распарсить RSS, а закончилась системой полного релизного цикла подкаста.


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

Читаем telegram-каналы в виде новостной ленты (+ бонусом rss)

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

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

Одно время, когда ВК начал пихать в ленту свои рекомендации (неотключаемые вообще никак), я пользовался адблоком, альтернативными андроид-клиентами (kate mobile), но все эти полумеры напрягали.

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

Поэтому я решил написать свою ленту для телеграма, с репостом и стикерами.

Читать далее

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

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

Широкое распространение в последние годы получили программы, которые пытаются предсказать, какие объекты будут интересны пользователю, имея определенную информацию о его профиле. До 2006 года такие алгоритмы не пользовались популярностью. Но все изменилось осенью 2006 года, когда компания Netflix предложила разработчикам 1 000 000$ за лучший алгоритм предсказания. Конкурс продлился 3 года.

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

Читать далее

Python в Visual Studio Code – февральский релиз 2021

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

Мы рады сообщить, что стал доступен релиз расширения Python для Visual Studio Code от февраля 2021 года. Вы можете загрузить расширение Python из Marketplace или установить его прямо из галереи расширений в Visual Studio Code. Если у вас уже установлено расширение Python, вы также можете получить последнее обновление, перезапустив Visual Studio Code. Вы можете узнать больше о поддержке Python в Visual Studio Code в документации.

Этот выпуск включает интеграцию с TensorBoard и улучшения работы с кодом с использованием Pylance. Если вам интересно, вы можете изучить полный список улучшений в нашем журнале изменений.

Больше подробностей под катом!

Читать далее

Порт GUI фреймворка с Python на Go. Анализ граблей и плюшек

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

С Python мне пришлось работать от безнадеги — ML, нейросетки, скриптинг, то-сё сподручнее было именно на нем. Но время идет и тревога за скорость своего кода толкает к чему то быстрому и более надежному. 

Узнать почему и что вышло

Избегайте рекурсии в Python: вспомните о замыкании

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


Вот что получается, когда кандидат наук заморачивается рекурсией…

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

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

Приятного чтения!

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

Расширяющийся нейронный газ

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

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

Расширяющийся нейронный газ строит граф, пытаясь приблизить распределение данных. Не связанные подграфы этого графа — это наши искомые кластеры. Он строится по следующему алгоритму:

1)    Генерация первых двух нейронов случайным образом

2)    На каждом шаге итерационного процесса берется один элемент данных. Два ближайших к нему нейрона двигаются в его сторону

3)    Между наиболее часто перемещающемуся нейроном и его ближайшим соседом создается новый нейрон

4)    Удаляются связи, если соединенные им нейроны вместе не передвигаются, и нейроны без связей

Рассмотрим этот итерационный алгоритм на примере со следующими данными.

Читать далее

Поговорим о RFM-анализе

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

Добрый день уважаемые читатели! О данном методе сегментации клиентов по давности покупок, частоте и сумме сделок написано довольно много материалов. На просторах Интернета вы без труда найдете публикации с описанием теории и практики rfm-анализа. Он может выполняться как на платформе табличного редактора (при небольшом количестве данных), так и с помощью sql-запросов или силами тематических библиотек Python/R. Методология всех примеров одна и та же, расхождение будет только в деталях. Например, порядок присвоения номеров сегментам или принцип деления на группы. Ввиду всего вышеизложенного мне будет трудно привнести новизну в эту тему. В статье я лишь постараюсь заострить ваше внимание на некоторых моментах, которые могут помочь начинающим аналитикам данных.

Читать далее

Семейный бюджет, Google sheets и Python

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

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

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

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

Где деньги, Билли?

Опыт написания IDL для embedded

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

Я при работе с микроконтроллерами часто сталкивался с бинарными протоколами. Особенно, когда есть несколько контроллеров. Или же используется bluetooth low energy и необходимо написать код для обработки бинарных данных в характеристике. Помимо кода всегда требуется понятная документация.

Всегда возникает вопрос - а можно ли описать как-то протокол и сгенерировать на все платформы код и документацию? В этом может помочь IDL.

Читать далее

Application performance management (APM) от Broadcom для мониторинга производительности приложений (включая мобильные)

Время на прочтение8 мин
Охват и читатели7.6K
Всем привет! В этой статье расскажем о возможностях мониторинга производительности приложений одного из лидеров квадранта Gartner c APM-решениями — Broadcom.

image

Appdynamics, Dynatrace и New Relic достаточно известны на российском рынке. Broadcom чуть менее знаком, этакая серая лошадка, однако, имеет не уступающий всем троим функционал мониторинга приложений. А использование APM-решения от Broadcom в комплексе с другим их продуктом, зонтичной AIOps-системой DX Operations Intelligence, позволит создать единое окно мониторинга для разнокалиберного ПО и инфраструктуры. Под катом текст и скриншоты.
Читать дальше →

Import or from import, that is the question

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

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


Например, что лучше: import module или from module import function?


Я решил разобраться в этом чуть поглубже, ответы на StackOverflow меня не удовлетворили.


Для тех, кому лень читать: все варианты хороши.


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

Мой опыт работы с EEG гарнитурой EMOTIV EPOC+

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

Я студент третьего курса и меня всегда интересовала работа мозга. В ноябре по счастливому стечению обстоятельств появилась возможность поработать с нейрогарнитурой Emotiv Epoc+. Данную статью можно рассматривать как краткий список того, на что стоит обратить внимание при работе с ЭЭГ и Emotiv Epoc+ в частности.

Читать далее

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