Обновить
43
0.1
Александр Фролов @AlexandreFrolov

Генеральный директор

Отправить сообщение

Давайте сделаем крупное приложение на Flask (язык Python)

Время на прочтение18 мин
Просмотры27K

На Хабре я часто вижу статьи о реализации тех или иных фич на Python-фреймворках. Я объединил все эти фичи в реальный проект с открытым исходным кодом, чтобы у вас сложилась целостная картина. Мы с вами создадим UX/UI на Figma, напишем фронтенд на HTML, CSS, SASS, Bootstrap и JavaScript, создадим ER-диаграмму в MySQL Workbench, напишем бекэнд на Flask, создадим регистрацию через социальные сети OAuth 2.0 в один клик, используем брокер сообщений и асинхронную очередь Celery для отправки писем на электронную почту, сделаем WYSIWYG-редактор, реализуем полнотекстовый поиск Elasticsearch, закешируем Redis, покроем тестами pytest и запустим в Docker-контейнерах, поговорим о многопроцессности для WSGI-шлюза Gunicorn.

Читать далее

Оптимизация Gunicorn для быстрых клиентов

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

Самая распространённая конфигурация из мануалов по настройке:
gunicorn --workers 3 wsgi:app

Какое количество воркеров оптимально?
Считается формулой: (Количество ядер процессора)*2+1

А также, у Sync воркеров есть Gthread класс:
gunicorn --workers 5 --threads 2 wsgi:app
Указывая параметр тредов, воркеры автоматически становятся класса Gthread.

Читать далее

Проектирование эффективной системы кэширования для высоконагруженной системы

Время на прочтение5 мин
Просмотры25K

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

Читать далее

Самостоятельно добавляем динамическую подсветку Ambilight на свой телевизор или монитор

Время на прочтение6 мин
Просмотры41K

Фоновая подсветка пространства за телевизором была придумана очень давно, но сделать ее динамической первыми додумались в компании Philips. Подсветка считывала информацию с потока данных и в режиме реального времени подбирала нужные цвета в нужных участках делая небольшую магию. Это дает сразу 2 положительных эффекта: разгружает зрение, обеспечивая мягкое фоновое освещение и сильнее погружает в происходящее на экране, добавляя изображению глубины. Покупать только из-за этого телевизор от Philips станут не многие, но функция действительно очень интересная. А что если я скажу, что аналогичную подсветку можно установить на любой телевизор или монитор? Причем стоить это будет совсем недорого, а установка и настройка займет от силы пол часа. В общем я на себе проверил насколько это рабочий вариант и теперь хочу поделиться с вами своим мнением.

Читать далее

Настройся на RAGAS и настрой RAGAS под себя

Уровень сложностиСложный
Время на прочтение12 мин
Просмотры7.6K

Не секрет, что RAG (Retrieval-Augmented Generation) сейчас является распространённой техникой использования Больших Языковых Моделей (LLM) в вопросно-ответных системах. Ну а где есть ML-модели, там есть и оценка качества. О том, как оценивать RAG-модели и автоматизировать этот процесс под свою задачу, вы прочитаете в данной статье.

Читать далее

Как работает блокчейн: объяснение от эксперта по ИТ Петра Емельянова

Уровень сложностиПростой
Время на прочтение14 мин
Просмотры12K

Блокчейну приписывают три свойства: неизменяемость, распределенность и консенсус. Разберём, что обеспечивает ему эти свойства и как работает. Объясняет эксперт по машинному обучению и AI — дотошно и подробно, заглянем под капот.

Читать далее

Секреты логических операторов в Python

Уровень сложностиСредний
Время на прочтение8 мин
Просмотры47K

Логические операции играют важную роль в программировании. Они используются для создания условных конструкций и составления сложных алгоритмов. В Python для проведения логических операций используются логические операторы:

not — логическое отрицание

and — логическое умножение

or — логическое сложение

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

Читать далее

Установка и безопасная настройка Redis

Уровень сложностиПростой
Время на прочтение5 мин
Просмотры37K

Сегодня мы поговорим о СУБД Redis, рассмотрим процесс установки и настройки. В отличие от реляционных систем управления базами данных, Redis является СУБД класса NoSQL с открытым исходным кодом, работающей  со структурами данных типа «ключ — значение».

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

Но, вернемся к СУБД Redis. Redis - это хранилище значений ключей в памяти, известное своей гибкостью, производительностью и широкой языковой поддержкой. Данная система ориентирована на достижение максимальной производительности на атомарных операциях (заявляется о приблизительно 100 тыс. SET- и GET-запросов в секунду на Linux-сервере начального уровня). Написана на Си, интерфейсы доступа созданы для большинства основных языков программирования. Далее мы поговорим о том, как установить и безопасно настроить Redis на сервере Ubuntu 22.04.

Читать далее

VGA-видеокарта на советских микросхемах

Уровень сложностиСредний
Время на прочтение3 мин
Просмотры24K

Быть или не быть VGA-видеокарте на советских микросхемах?!

Всё же быть! Представляю Вашему вниманию VGA-видеокарту!

Читать далее

Нейросети и CV — основы теории и практика — система машинного зрения на одноплатнике Repka Pi

Уровень сложностиСредний
Время на прочтение28 мин
Просмотры9.4K

— Никто не обнимет необъятного!

Козьма Прутков, 1854

Одно из интересных и полезных применений нейросетей — обнаружение объектов на изображении, таких как машины, люди или человеческие лица.

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

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

Так же рассмотрим основные понятия нейронных сетей. Разберём, как добавить функции обнаружения лиц и людей в видеопотоке от обычной веб-камеры, подключенной через USB к Repka Pi. При этом будут использованы каскады Хаара, нейросеть Yolo-FastestV2, фреймворки OpenCV и NCNN, а также репозиторий ml-repka от компании Rainbowsoft.

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

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

Читать далее

Почему квантовая механика – это теория физики Мультивселенной

Уровень сложностиСредний
Время на прочтение32 мин
Просмотры7K

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

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

Читать далее

Скотч, кабель, Интернет: умный съемный дом

Уровень сложностиПростой
Время на прочтение9 мин
Просмотры20K

Я люблю автоматизацию, гаджеты и IoT

Поэтому, места где я живу, рано или поздно становятся автоматизированными и обвешанными интернетом вещей

Да чего там, у меня даже бойлер по расписанию работает!

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

Автоматизируй это

Масштабирование глубокого обучения с помощью Horovod и Kubernetes

Уровень сложностиСредний
Время на прочтение7 мин
Просмотры1.8K

Horovod — это фреймворк для распределенного глубокого обучения, изначально разработанный в Uber. Он позволяет масштабировать обучение моделей на сотни и тысячи GPU, сокращая время тренировки с недель до часов. Horovod поддерживает такие фреймворки, как TensorFlow, Keras, PyTorch и Apache MXNet, и легко интегрируется с существующими кодовыми базами, требуя минимум изменений.

В статье как раз и пойдет речь о том, как масштабировать модельки с помощью Horovod и Kubernetes.

Читать далее

Эмбеддинги для начинающих

Уровень сложностиПростой
Время на прочтение5 мин
Просмотры72K

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

В широком смысле, эмбеддинг - это процесс преобразования каких-либо данных (чаще всего текста, но могут быть и изображения, звуки и т.д.) в набор чисел, векторы, которые машина может не только хранить, но и с которыми она может работать. Звучит очень интересно. Казалось бы, наша речь - это так просто, все связано и понятно. Но как это объяснить машине?

В этой статье мы рассмотрим, что такое эмбеддинги и какие они бывают.

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

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

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

Читать далее

Детекция объектов. YOLO. Часть 2

Уровень сложностиСредний
Время на прочтение9 мин
Просмотры13K

Кто такой YOLO? 🤔

Когда пытаешься разобраться в работе YOLO по статьям в интернете, постоянно натыкаешься на примерно такое объяснение: «Алгоритм делит изображение сеткой SxS, где каждому элементу этой сетки соответствует N ббоксов с координатами, предсказаниями классов и тд...». Но лично мне становилось только непонятнее от такого высокоуровнего описания.. Ведь в исследованиях часто всё происходит примерно так: перебирают гипотезы, пока не получат приемлемый результат, а потом уже придумывают красивое описание. Поэтому для ясности хочется в данной статье рассказать, как вообще приходили к идеям, которые ложились в основу YOLOv1 и последующих версий.

Читать далее

Как начать моделировать бизнес-процессы в BPMN

Время на прочтение17 мин
Просмотры256K

Анна Вичугова, CBAP, написала стартовое пособие по тому, как начать моделировать бизнес-процессы в BPMN

1. Назначение BPMN.

2. Уровни моделирования.

3. Алфавит нотации: События, Логические операторы, Артефакты.

4. Правила построения диаграмм.

5. Пример построения диаграммы по тексту.

6. Рекомендуемые инструменты.

Читать далее

Как поднять почтовый сервер mailcow

Уровень сложностиПростой
Время на прочтение5 мин
Просмотры31K

Немного почтового сервера вам в ленту

Хочу поделиться своим опытом поднятия почтового сервера для личных нужд!
Бывает хочется сделать что-то эдакое, вот и получилась эта статья и личная почта.

Читать

Большая шпаргалка по Docker: как распилить монолитный проект на части

Уровень сложностиСредний
Время на прочтение19 мин
Просмотры29K

Погружение в мир контейнеризации с докером — это путь к оптимизации развёртыванию приложений, а также ключ к упрощению жизни разработчиков и системных администраторов. Меня зовут Андрей Аверков, в IT c 2008 начинал пусть с аналитика-проектировщика IT систем, 11 лет в роли разработчика и последние годы на руководящих должностях. Сейчас я тимлид команды разработки из 9 человек в группе компании Кокос. Мы занимаемся созданием и поддержкой CPA платформ (gdeslon.ru, fxpartners.ru, ads.mobisharks.com), а также проектом по генерации лендингов — lpgenerator.ru. У нас большой опыт в разделении продуктов на части, поэтому, сегодня мы собрали самое основное и необходимое для работы с Docker. В нашей шпаргалке вы найдете все необходимое для успешного старта с докером: от базовых концепций и установки до продвинутых техник работы с контейнерами.

Читать далее

Получаем спутниковые координаты GPS/ГЛОНАСС с помощью модуля SIM868 на Repka Pi

Уровень сложностиПростой
Время на прочтение25 мин
Просмотры12K

Сегодня уже трудно найти человека, который не знает, что такое навигатор и GPS-координаты. В этой статье мы расскажем о том, как встроить функции навигатора в устройство, собранное на базе микрокомпьютера Repka Pi. Для получения координат мы будем использовать модуль GSM/GPRS/GNSS Bluetooth HAT, о котором вы уже знаете из предыдущих статей нашей серии про эти модули на базе SIM868.

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

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

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

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

Модуль GSM/GPRS/GNSS Bluetooth HAT может отправлять данные, например, через GPRS или SMS, а также совершать телефонные звонки.

Читать далее

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

Уровень сложностиСредний
Время на прочтение19 мин
Просмотры6.6K

В этой статье мы продолжим рассказ об использовании модуля 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-команд.

Читать далее

Информация

В рейтинге
4 330-й
Откуда
Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность