Pull to refresh
1
@tron_lineread⁠-⁠only

User

Send message

SOLID. Проблема новичка

Level of difficultyEasy
Reading time5 min
Reach and readers14K

Здравствуйте, друзья! Меня зовут Константин, я python backend developer из компании «Окенит». Сегодня я хочу рассказать свое видение проблемы новичка при ознакомлении с принципами SOLID, описанными в книге «Стерильная Архитектура» Робина Мартерта.

За свой десятилетний опыт я часто был свидетелем ситуации, когда молодые разработчики, желая сделать свой проект как можно более открытым для расширения и редактирования, превращали его в груду нечитаемого и неподдерживаемого кода при попытке использовать у себя все рекомендации Матушки Роба. Отсюда вопрос: «Почему, при следовании советам более опытного разработчика, код стал только хуже?».

Ответ на этот вопрос пришел ко мне очень быстро. Из‑за описания и без того абстрактных вещей чересчур абстрактными словами и примерами, Робин Мартерта вместо упорядочивания знаний, наводит хаос в умы читателей. Во избежание этой ситуации я решил написать данную статью, где коротко расскажу о наборе принципов SOLID, для чего они нужны и, главное, как применять эти принципы в жизни. Начнем по порядку, с буквы «S». И так, что же она значит?

Читать далее

Основы TCP/IP для будущих дилетантов

Reading time11 min
Reach and readers502K
Предположим, что вы плохо владеете сетевыми технологиями, и даже не знаете элементарных основ. Но вам поставили задачу: в быстрые сроки построить информационную сеть на небольшом предприятии. У вас нет ни времени, ни желания изучать толстые талмуды по проектированию сетей, инструкции по использованию сетевого оборудования и вникать в сетевую безопасность. И, главное, в дальнейшем у вас нет никакого желания становиться профессионалом в этой области. Тогда эта статья для вас.

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

Железные хирурги: прошлое, настоящее и будущее медицинских роботов

Reading time28 min
Reach and readers34K


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


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

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

Реализация асинхронной защищенной системы связи на основе TCP сокетов и центрального OpenVPN сервера

Reading time13 min
Reach and readers2.6K
В этой статье я хочу рассказать, о моей реализации мессенджера с двойным шифрованием сообщений на основе tcp сокетов, OpenVPN сервера, PowerDNS сервера.
Суть задачи — обеспечить обмен сообщениями через интернет минуя NAT между клиентами на различных платформах (IOS, Android, Windows, Linux). Также необходимо обеспечить безопасность передаваемых данных.
Читать дальше →

Основы компьютерных сетей. Тема №1. Основные сетевые термины и сетевые модели

Reading time14 min
Reach and readers1.8M
Всем привет. На днях возникла идея написать статьи про основы компьютерных сетей, разобрать работу самых важных протоколов и как строятся сети простым языком. Заинтересовавшихся приглашаю под кат.


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

Кроссплатформенный многопоточный TCP/IP сервер на C++

Reading time16 min
Reach and readers119K

Решил задаться целью написать простой в использовании и при этом быстрый многопоточного TCP/IP сервера на C++ и при этом кроссплатформенный — как минимум чтобы работал на платформах Windows и Linux без требования как-либо изменять код за пределами самописной библиотеки. Ранее, на чистом C++ без библиотек вроде Qt, сетевым программировнием не занимался, и предвещал себе долгое время мучений с платформо-зависимостью. Но как оказалось всё гораздо проще чем казалось на первый взгляд, ведь в основном интерфейсы сокетов обоих систем похожи как две капли воды и различаются лишь в мелких деталях.

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

Тестирование BMС: поговорим о нагрузочном тестировании

Level of difficultyMedium
Reading time7 min
Reach and readers1.6K

Хабр, привет! Мы в компании Аквариус стремимся к тому, чтобы тестирование проходило без активного участия человека. Поэтому, продолжая предыдущую нашу статью про автоматизированное тестирование BMC: Тестирование BMC: Автоматизировать! Нельзя все руками, я расскажу про универсальное решение, которое мы создаем для получения показателей производительности BMC. Зачем это нужно и как мы пытаемся применять накопленный опыт в других направлениях, например при тестировании производительности нового для компании направления — СХД (Система Хранения Данных).

Читать далее

Кроссплатформенные приложения на Python с Flet и FastAPI: Полное руководство по разработке

Reading time39 min
Reach and readers23K

Сегодня я покажу вам, что для создания полноценных кроссплатформенных приложений достаточно одного языка — Python. С помощью всего нескольких библиотек и фреймворков можно легко обойтись без JavaScript для веб-разработки, без Kotlin и Swift для мобильных приложений и даже без C++ для десктопных программ. В этой статье разберем, как, используя Flet и FastAPI, можно создавать мощные и удобные решения для любой платформы!

Читать далее

Распознавание мяча в волейболе с OpenCV и Tensorflow

Reading time4 min
Reach and readers8K
После первого опыта распознавания спортивных движений у меня зачесались руки сделать что-нибудь еще в этом направлении. Домашняя физкультура уже казалась слишком мелкой целью, так что я замахнулся на игровые виды спорта.

Применение искусственного интеллекта к спорту — недавняя тенденция, но уже есть интересные материалы:


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

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

Детектор приседаний на OpenCV и Tensorflow

Reading time5 min
Reach and readers11K
В эпоху заточения хорошо заниматься физкультурой, но вот беда — не все домашние с этим согласны, так что приходилось прикладывать некоторые усилия. Работать надзирателем однако хотелось не очень, потому как надо было собственно работать, а пущеный на самотек спортивный процесс, наблюдаемый в лучшем случае одним глазом, заимел тенденцию скатываться в халяву.

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

Начать было решено с приседаний. Фундаментальное движение, с явными состояниями, большой амплитудой, в общем, идеальный выбор.
Читать дальше →

Tutorial к автоматизации разметки изображений с использованием OpenCV Python

Reading time17 min
Reach and readers17K

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

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

Читать далее

Бот для аркады. Часть №2: подключаем OpenCV

Reading time12 min
Reach and readers42K

Введение

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

Для обработки изображений возьмем широкораспространенную библиотеку OpenCV. Она неродная (unmanaged) для .net, поэтому подключим ее через wrapper OpenCvSharp.

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


Затрагиваемые темы: выбор библиотеки для обработки изображений, выбор wrapper-а для работы с OpenCV, основные функции OpenCV, выделение движущихся объектов, цветовая модель HSV.


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

Компьютерное зрение на С++: подключаем ML-библиотеки и обрабатываем результаты поиска объектов

Reading time25 min
Reach and readers5.7K

Привет, Хабр! Меня зовут Кирилл Колодяжный, я разрабатываю системы хранения данных в YADRO и изучаю нестандартные подходы к машинному обучению: создаю ML-проекты на С++. 

Это вторая часть цикла о разработке приложения для обнаружения предметов на С++. В прошлом материале мы выяснили, как создать проект в IDE Android Studio, реализовать сессию непрерывного захвата и преобразовать изображение в матрицу OpenCV. Ссылку вы найдете в конце статьи.

В этой статье продолжим реализацию проекта и обсудим следующие шаги:

• Как подключить к проекту библиотеки машинного обучения PyTorch и NCNN.

• Как получить модели YOLOv5 и YOLOv4 для использования на мобильном устройстве.

• Как реализовать инференс моделей для обнаружения объектов.

• Как обработать результаты работы моделей YOLO, реализовав алгоритмы Non-Maximum-Suppression и Intersection-Over-Union.

В конце сравним производительность PyTorch и NCNN и решим, какой фреймворк подойдет для задачи лучше.

Читать далее

Создаём сортировщик деталей Lego Technic, распознающий объекты в реальном времени

Level of difficultyMedium
Reading time8 min
Reach and readers6.7K

Когда я проходил стажировку в Nullspace Robotics, мне повезло участвовать в проекте, нацеленном на расширение возможностей компании. Мы совместили системы обнаружения объектов и распознавания изображений для создания модели, классифицирующей детали конструктора Lego Technic в реальном времени.

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

Новая CMOS-матрица расширяет возможности съемки движущихся объектов

Reading time5 min
Reach and readers6.9K
Это перевод-адаптация статьи, опубликованной инженерами Canon в японском журнале по прикладной физике Japanese Journal of Applied Physic.

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

image

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

Сжатие и передача потокового видео по TCP с помощью OpenCV

Reading time3 min
Reach and readers17K
По работе я занимаюсь разработкой алгоритмов обработки изображений и в частности алгоритмами автоматического слежения за объектами на видео для специального применения. Недавно понадобилось сделать модель алгоритма, управляемую с удаленного компьютера для отладки логики работы в сложной системе. Раньше такая задача не стояла, т.к. все алгоритмы реализовывались в итоге на FPGA. Давно работаю с OpenCV и, потерев руки, подошел к написанию программы. Но энтузиазм быстро погас, когда столкнулся непосредственно с передачей видео по сети.

Задача заключалась в следующем:

1. Написать программу сервер, которая загружает видео из файла, сжимает в JPEG и передает по протоколу TCP программе клиенту.
2. Написать программу клиент, которая принимает видео по TCP, декодирует и отображает.
Читать дальше →

Быстрая маркировка изображений с использованием внешних контуров

Reading time9 min
Reach and readers9.1K
В статье расскажу как достаточно быстро перечислить связные объекты на бинарном растре. Этот алгоритм мы использовали для распознавания изображений и текстов; он отличается от подобных высокой скоростью обработки (на картинках до 3200x2400, с некоторыми оговорками, он отрабатывает за миллисекунды) и доступностью в понимании (при наличии некоторых знаний C++). Отмечу, что исходная картинка будет трактоваться алгоритмом как «только для чтения» (зачем портить то, с чем могут работать другие методы), и в связи с этим, алгоритму потребуется небольшое количество дополнительной памяти. Кроме того, внешние контуры являются полезным объектом для анализа и векторизации изображений.
Читать дальше →

Поиск людей на фотографиях на Android с помощью OpenCV

Reading time6 min
Reach and readers43K
Недавеча столкнулся с одной интересной задачкой для мобильного “коня” на Android’e- необходимо определить контуры людей на фотографиях (если таковы там были, естественно). После поиска в интернете, было решено использовать open source проект OpenCV, который может работать на платформе Android.

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


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

Калибровка Kinect v2 с помощью OpenCV на Python

Reading time8 min
Reach and readers28K
Не так давно мы начали пару проектов, в которых необходима оптическая система с каналом дальности, и решили для этого использовать Kinect v2. Поскольку проекты реализуются на Python, то для начала нужно было заставить работать Kinect из Python, а затем откалибровать его, так как Kinect из коробки вносит некоторые геометрические искажения в кадры и дает сантиметровые ошибки в определении глубины.

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

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

Как мы используем алгоритмы компьютерного зрения: обработка видео в мобильном браузере с помощью OpenCV.js

Reading time7 min
Reach and readers4.5K
Для идентификации личности онлайн уже есть все возможности, но пока их применяют крайне редко. Пожалуй, одними из первых мы реализовали оптимальный сценарий для пользователя – зайти на сайт со смартфона, сфотографировать свои водительские права или паспорт и отправить данные в систему.

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


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

Information

Rating
Does not participate
Registered
Activity

Specialization

Десктоп разработчик, Разработчик игр
Python
ООП
C++
Unreal Engine
Шейдеры
Разработка игр
Разработка под AR и VR