Обновить
552.66

Python *

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

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

Отправляем и принимаем SMS с помощью SIM868 и Repka Pi

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели8.5K

В этой статье мы продолжим рассказ об использовании модуля GSM/GPRS/GNSS Bluetooth HAT, созданного на базе SIM868, для беспроводной передачи данных в виде СМС-сообщений через Российский одноплатник Repka Pi. Такой способ даже в наше время актуален, когда нужно управлять автоматикой или другими устройствами, когда 2G/3G/4G и даже GPRS не позволяет это делать из за удалённости/помех или по иным причинам и важно обеспечить высокую надёжность управления.

Это третья статья данного цикла и из первой статьи вы узнали, как с помощью упомянутого модуля обмениваться данными между микрокомпьютером Repka Pi с JSON-сервисом, доступным в интернете, по каналу GPRS. Вторая статья рассматривает такой обмен глубже, на уровне AT-команд, передаваемых в модуль через UART.

Теперь настала очередь рассказать об отправке и приеме коротких текстовых сообщений SMS (Short Message Service). Этот канал передачи данных пригодится, например, в тех случаях, если в месте расположения вашего оборудования недоступен ни WiFi, ни GPRS.

Сообщения SMS можно передавать в текстовом режиме, а также в так называемом режиме PDU (Protocol Data Unit). В первом случае длина сообщения не может превышать 160 байт, и в нем не должно быть символов кириллицы. Пользоваться режимом PDU сложнее, но в нем нет этих недостатков.

Далее мы рассмотрим работу в обоих режимах как с помощью Python и библиотеки RoverConnect, так и через AT-команды.

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели28K

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

Эта дилемма определяет, насколько хорошо модель будет работать на реальных данных.

Переобучение и недообучение – это Сцилла и Харибда в ML, между которыми нужно лавировать. С тех давних времен появилось множество методов для решения этой проблемы. Рассмотрим их кратко.

Читать далее

Python и чистая архитектура…

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели45K

Всем привет! Сегодня я хочу поделиться своими опытом разработки на различных языках программирования и размышлениями касаемо проектирования серверных приложений. Речь пойдет про много обсуждаемую в последнее время чистую архитектуру в рамках языка python. Казалось бы, по заветам Роберта Мартина мы не должны зависеть от инструмента(зачастую под этим понимают фреймворк или библиотеку), однако это порождает множество ошибок и просто небольших неточностей в проектировании сервисов и даже выборе языка программирования.

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

Читать далее

У меня зазвонил Репка-фон. Делаем телефон на базе Repka Pi 3 с применением модуля SIM868

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели10K

Делаем программно-управляемый телефон или даже узел связи на базе одноплатного компьютера Repka Pi и модуля платы функционального расширения для GSM связи.

Просто поражают возможности одноплатных компьютеров в формфакторе Raspberry за счёт применения с использованием их 40 pin разъёма, поддерживающего все наиболее популярные промышленные интерфейсы. Становится интересным пробовать решать разные задачи такого типа со ставшими доступными уже год назад Российскими одноплатниками Repka Pi, разработанными на основе китайской элементной базы, но разработанные и производимые уже в России и имеющие хорошую поддержку, что сильно меняет и расширяет возможности применения и получения ответов на возникающие вопросы, так как работы с такими задачами часто сопряжена с возникающими техническими вопросами.

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

Это четвертая статья серии, посвященной модулю GSM/GPRS/GNSS Bluetooth HAT. В этой статье рассмотрим как добавить в ваше IoT-устройство или другое оборудование функции мобильного телефона. Ранее мы рассматривали как принимать и отправлять сообщения и многое другое и вот настало время для реализации функционала полноценной телефонной голосовой связи.

Настало время превратить модуль GSM/GPRS/GNSS Bluetooth HAT, созданный на базе SIM868, в самый настоящий телефон, способный звонить и принимать звонки. Мы расскажем о том, как это можно делать из программы, составленной на языке Python, а также опишем соответствующие AT-команды. Вы проверите их в работе с помощью терминала minicom.

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

Читать далее

Подручный для бизнеса

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

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

Читать далее

Делаем addon для Blender

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели10K

Люблю Blender. Он мощный, а в последних версиях красивый! А ещё он бесплатный. И даже становится удобнее. Но, если посмотреть на то, сколько вопросов в интернете про то, как сделать что-то вполне тривиальное, начинаешь понимать, что до реального удобства там ещё далеко. С последними версиями эти вопросы становятся менее актуальными, потому что часть этих проблем уже кто-то решил за вас, написав аддон, который и только ждет что бы его активировали!

А что делать, если руками никак, а нужного функционала нет? Написать свой аддон!

Читать далее

CI/CD в каждый дом: сборочный цех базовых docker-образов

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели19K

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

Последнее время DevOps и CI/CD де-факто стали повсеместным стандартом независимо от размера команды, в интернетах хватает статей, почему это важно, в чём собственно идея, полезных практик и других материалов. Я же решил подойти с несколько другой стороны и максимально доступным языком на практических примерах рассмотреть отдельные задачи и их решения в рамках концепции.

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

Кому, собственно, это может пригодиться? Я бы сказал, что почти кому угодно, кто хочет организовать ту компоненту CI/CD, которая отвечает за построение и релизный цикл базовых образов внутри инфраструктуры вашей компании или даже персональных проектов (зародился он именно в процессе приведения в порядок моих пет-проектов).

Какой практический пример может быть без публичного репозитория с MIT-лицензией? Если вам не интересно читать статью, то можно прямо из превью перейти по ссылке и напитаться кодом. Репозиторий же можно копировать как целиком, так и кусками, буду только рад, если он кому-нибудь пригодится. На любые вопросы — готов ответить в комментариях или issues.

Читать далее

Векторизация изображений. Как создать алгоритм поиска похожих изображений на Python

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели19K

Многочисленные исследования ученых доказывают, что около 90% информации человек воспринимает через зрение. Изображения являются одним из самых богатых источников информации, которую можно использовать для разнообразных задач, включая классификацию, детекцию объектов, ранжирование изображений, поиск по изображениям и генерацию текстовых описаний. 

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

В мире есть много вещей, которые интуитивно понятны и очевидны для нас. Например, если перед нами два похожих цветка, мы можем определить их принадлежность одному виду, даже не зная названий этих растений. Этот навык позволяет нам распознавать объекты и определять их в группы. Разумеется, подобные алгоритмы уже давно существуют в современных поисковиках Google, Яндекс и прочих. Но что, если вы проектируете обособленную систему с собственной базой изображений одной или нескольких конкретных тематик и вам необходим функционал поиска похожих изображений?

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

Читать далее

Простое внедрение аннотаций статистической значимости

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели2.9K

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

Сегодня с вами участница профессионального сообщества NTA Яруллина Ляйсян.

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

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

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

Узнать больше

Аутентификация, авторизация пользователей и единый вход (SSO) с использованием Django

Уровень сложностиПростой
Время на прочтение24 мин
Охват и читатели38K

В этой статье исследую технологию SSO. Начинаю с разбора концепций аутентификации и авторизации. Рассматриваю как они работаю в контексте Django.

После прохожу путь от описания как работает SSO простыми словами, до разбора протоколов используемых в SSO.

В итоге делаю реализацию SSO с Django, объединять Django и Keycloak.

Читать далее

Типичные задачи аналитика данных. Часть 1. Упала метрика

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели24K

В прошлой статье мы рассматривали неочевидные проблемы АБ тестирования и как можно с ними справляться [ссылка]. Но часто бывает так, что при внедрении новой функциональности АБ тестирование провести нельзя. Например, это типично для маркетинговых кампаний нацеленных на массовую аудиторию. В данной ситуации существует вероятность того, что пользователи контрольной группы, которым недоступна рекламируемая функциональность, начнут массово перерегистрироваться. Также возможен сценарий, при котором возникнет значительное количество негативных отзывов из-за воспринимаемой дискриминации. Но задача оценки таких нововведений одна из наиболее частых, которые приходится решать аналитикам. Если метрики только улучшаются, то это обычно легко объяснить хорошей работой, а если метрика ухудшилась, то сразу появляется задача на аналитика. В этой заметке мы рассмотрим первую часть задачи - а действительно ли метрика упала и если да, то имеет ли смысл разбираться дальше?

Читать далее

Как приручить нейросеть и создать новогоднего Telegram-бота, который умеет «предсказывать» будущее

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

Мне нравится создавать Telegram-ботов и экспериментировать с нейросетями, поэтому часто объединяю их в своих проектах. Коллеги заметили мое хобби и предложили разработать новогоднего гида Selectel, который будет генерировать персональные предсказания и советы на 2024 год для наших читателей.

Во время реализации спецпроекта я впервые столкнулся с ограничениями по маркетинговой части проекта. Как заставить ChatGPT придумывать разнообразные, но только положительные предсказания? Как не выйти за лимиты текстовой модели и Telegram? В этой статье делюсь ответами на вопросы и реакцией пользователей на проект.
Читать дальше →

Почему в ботах телеги желательно использовать Webhook вместо Polling

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

Привет, коллеги!

Сегодня у нас на повестке дня выбор между двумя гигантами: Polling и Webhook. И если вы когда-либо задавались вопросом, почему именно Webhook является go-to решением для большинства проектов, то это статья для вас.

Помните, как в начале 2010-х все разрабы активно юзали Polling? Это был золотой стандарт для многих мессенджер-ботов. Но технологии не стоят на месте. Webhook занял своё законное мест, предлагая свои решения.

Читать далее

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

Разметка трёхмерных моделей миокарда

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели1.3K

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

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

Читать далее

Как добыть свечи по всем акциям Мосбиржи

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели13K

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

Читать далее

Статистика на примерах с Python #1

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели28K

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

Время на прочтение7 мин
Охват и читатели9.4K
Шпаргалка для ответа на любой вопрос о проектировании систем машинного обучения на вашем следующем собеседовании.

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

Ниже приведен обзор шагов, которые необходимо предпринять, когда вы проходите собеседование на тему проектирования системы машинного обучения:

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

Forecasting Mini-Course Sales или же Прогнозирование продаж мини-курсов по нашему на Kaggle

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели1.9K

Привет читатель,эта стать является переводом решений соревнования Forecasting Mini‑Course Sales на Kaggle и дополнениями от автора данной статьи.

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

Приятного прочтения.

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

Аннотирование args и kwargs в Python

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели18K

Когда я пытаюсь обойтись без *args и **kwargs в сигнатурах функций, это не всегда можно сделать, не вредя удобству использования API. Особенно — когда надо писать функции, которые обращаются к вспомогательным функциям с одинаковыми сигнатурами.

Типизация *args и **kwargs всегда меня расстраивала, так как их нельзя было заблаговременно снабдить точными аннотациями. Например, если и позиционные, и именованные аргументы функции могут содержать лишь значения одинаковых типов, можно было поступить так:

def foo(*args: int, **kwargs: bool) -> None:
    ...

Применение такой конструкции указывает на то, что args — это кортеж, все элементы которого являются целыми числами, а kwargs — это словарь, ключи которого являются строками, а значения имеют логический тип.

Но нельзя было адекватно аннотировать *args и **kwargs в ситуации, когда значения, которые можно передавать в качестве позиционных и именованных аргументов, могут, в разных обстоятельствах, относиться к различным типам. В таких случаях приходилось прибегать к Any, что противоречило цели типизации аргументов функции.

Читать далее

Обнаружение движущихся объектов с помощью OpenCV с использованием обнаружения контуров и вычитания фона

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

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

Читать далее

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