Как стать автором
Обновить

Технотекст

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

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

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

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

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

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

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

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

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

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

Читать далее

Синтаксис, синглтон и смертельный ромб в С++: взгляд опытного разработчика на C

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

Давайте знакомиться: меня зовут Анатолий Семятнёв, я и моя команда разрабатываем ПО для опорных сетей 5G в YADRO. В IT-сфере работаю давно, и мой опыт в основном связан с языком С: занимался Board Support Package (BSP) и драйверами, много работал с операционной системой QNX. 

До того, как начал полноценно работать на С++, сталкивался с языком в нулевые, писал на С++98. Тем не менее все это время я краем глаза поглядывал, что происходит в С++, и хотел вернуться к программированию на этом языке. Читал книги, делал пет-проекты, смотрел записи конференций и митапов по С++. А когда пришел в YADRO, стал писать на С++.

Мне с ходу дали большую фичу для имплементации, я писал много кода, и получал комментарии от коллег. В этом материале собрал все, что изучил или вспомнил по итогам код-ревью. Что рассмотрим в статье:

• Ключевые концепции — explicit, final, default, string — и как их использовать.

• Инициализацию мемберов с помощью пустого брейс-листа.

• Синглтон Майерса в корутинах.

• «Смертельный ромб» и все, что связано с виртуальным наследованием.

Читать далее

Готовим слайсы в Go: подробно о динамических массивах, строчках и ускорении

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

Привет, Хабр! Меня зовут Владислав Белогрудов, я работаю в команде разработки и сервисов управления в YADRO. Мой текущий проект — информационная система на Go. 

В рамках проекта я подробно изучил, как работать со слайсами — одной из самых популярных структур в Go. На первый взгляд, использовать ее достаточно просто, но, когда берешься писать код, возникает много вопросов: как передавать и изменять слайсы, насколько большими их делать и другие.

Под катом рассмотрим, что такое слайсы и string (строки) изнутри, как использовать их с sync.Pool для ускорения — без «внутренностей» последнего, но с точки зрения клиента. Расскажу о полезных трюках, приведу значения измерений производительности и познакомлю с альтернативными решениями. 

Читать далее

Как стать властелином отладчика: помогут ELF, DWARF и много магии

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

Привет, Хабр! Меня зовут Константин, я работаю в команде файлового доступа в YADRO. Помимо основной работы, я пишу в open source, работаю над несколькими проектами — в том числе над дебаггером BugStalker (BS) на Rust. 

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

Если уже решили писать свой отладчик, дочитайте до конца — там будет аналитика, которая поможет не наступить на Rust-грабли.

Читать далее

Стандартное отклонение и стандартная ошибка: две статистики с похожими названиями, но разными смыслами

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

Я читаю курс статистического мышления магистрам, и одна тема вызывает у них явные затруднения — чем стандартное отклонение отличается от стандартной ошибки, и в каких случаях, применять ту или иную статистику. Думаю, будет интересно поговорить об этом в блоге ЛАНИТ.

Читать далее

Уменьшать срок или платёж, что выгоднее: наглядное сравнение способов досрочного погашения кредита

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

Большинство из нас так или иначе сталкивается с кредитами, а потом и с досрочными платежами по ним. Эта статья в блоге ЛАНИТ на Хабре посвящена подробному сравнению двух способов внесения частичных досрочных платежей по кредиту: с уменьшением срока и с уменьшением платежа.

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

Читать далее

Умный дом в панельной хрущёвке

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

Сразу признаюсь, что слово «хрущёвка» в этом тексте – скорее хук в заголовке. Правильнее было бы сказать, что я просто описываю свой опыт создания умного дома в обычной среднестатистической квартире городского жителя РФ, который я проживаю прямо сейчас.

Статья будет состоять из двух частей: первая – постановка задачи, ресерч, планы, выбор; вторая – реализация, опыт использования, ошибки и корректировки.

Читать далее

От провала до успеха один шаг: как спасти заваленный проект

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

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

Читать далее

Как я собрал настоящую Hi-Fi аудиосистему за 125 тыс. рублей

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

Привет, Хабр! Меня зовут Иван. Я инженер-проектировщик и провожу много времени за компьютером, рисуя схемы. По совместительству я увлеченный меломан с многолетним стажем. Несколько лет назад я решил оборудовать свое домашнее рабочее пространство достойной аудиосистемой. Но как ее собрать, если семейный бюджет не резиновый, а в стартовый комплект входят только средней мощности ПК и полочные колонки DALI Zensor 1? Мне понадобилось 125 тысяч рублей и 12 месяцев работы, чтобы слушать мастер-записи песен австрийского продюсера Курта Хауэнштайна (Supermax) в достойном их качестве. Своим опытом поделюсь в этой статье в блоге ЛАНИТ. 

Читать далее

Идеальная удаленка: восемь простых шагов

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

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

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

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

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

Разбор самых частых проблемных ситуаций, конкретные советы без долгих размышлений — вот что вы найдете в этой статье.

Читать далее

Как я боролся с выгоранием в ИТ: лайфхаки и личный опыт

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

Из каждого утюга мы слышим «войди в ИТ за 6 месяцев», «стань аналитиком», «работай удаленно на берегу океана». Существует стереотип, что сфера информационных технологий ― это гигантские зарплаты и комфортные условия, а остальные профессии воспринимаются как тяжелый, неблагодарный труд. Не мне вам рассказывать, что это не совсем так. И в ИТ вы можете столкнуться с выгоранием, после которого больше не захотите работать на этом рынке.

Эта статья в блоге ЛАНИТ посвящена борьбе с физическим и психическим истощением. Я расскажу, что мне помогает любить свою профессию вот уже много лет.

Читать далее

Scala/Chisel против SystemVerilog: генерируем сложные цифровые схемы

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров7.2K

В наши дни общепризнанный стандарт для RTL-описаний — это язык SystemVerilog, но популярность сейчас набирает его альтернатива, Chisel. Далее я расскажу подробней об этом языке, его преимуществах, недостатках и рисках, связанных с переходом на Chisel со стандартного стека. Отдельно остановлюсь на функциональном программировании — возможности Chisel, которой нет в SystemVerilog, — и на дополнительных возможностях Chisel, улучшающих механизм переиспользования модулей. А также о том, почему код на Chisel менее подвержен ошибкам и всегда работает. Ну, почти всегда.

Читать далее

Как устроен T-RAID — RAID-массив в СХД TATLIN

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

Привет! Меня зовут Вячеслав Пачков, я ведущий инженер по разработке ПО в департаменте СХД YADRO. В этом посте я расскажу о T-RAID — технологии защиты целостности данных, которая используется в нашей гибридной СХД TATLIN.UNIFIED, а также СХД для сверхбольших объемов данных TATLIN.ARCHIVE.

Читать далее

Quake 2 на нашем RISC-V, или как мы поднимали старый Radeon на FPGA

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

Всем привет! Меня зовут Александр Разинков, я разрабатываю системный софт в компании YADRO. В этом посте я расскажу о стресс-тестировании нашего RISC-V-кластера с помощью… Quake 2! Почему «квейк»? RISC-V активно развивается как основная application-платформа в мире, и игры — это хороший способ проверить возможности ядер, драйверов GPU и экосистемы в целом. В некоторых важных аспектах игры дают значительно большую нагрузку, чем стандартные программные тесты, особенно на память и интерконнект.

В ходе проекта мы получили отличный опыт работы с видеоподсистемой и графическим стеком Linux, которым стоит поделиться. Открыли для себя новую группу бенчмарков по графике и UX. Наконец, это первый на моей памяти запуск игр именно на российских ядрах RISC-V!

Читать далее

Сканирование документов на планшетах Kvadra: как мы создавали и обучали алгоритм

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

Привет, Хабр! Меня зовут Владислав, я CV Engineer в компании YADRO. В этой статье я расскажу, как мы разрабатывали и обучали алгоритм детекции документов для нашего планшета Kvadra_T. Я подробно описал нюансы задачи и весь наш путь — от классического подхода до генерации недостающих датасетов и обучения на них нашей собственной нейросети. Постарался сделать историю интересной как для новичков в теме, так и для более опытных читателей. Режим детекции, кстати, уже доступен в kvadraOS.

Читать далее

Запускаем советский процессор из журнала «Радио» с помощью Arduino

Уровень сложностиСложный
Время на прочтение17 мин
Количество просмотров48K

Привет! Меня зовут Илья Мамай, я инженер-программист в группе разработки операционных систем YADRO. В этой статье я хочу поделиться опытом некромантии сборки советского компьютера по мотивам «Микро-80», схемы которого были опубликованы в журнале «Радио». Но собирать я буду не по этим схемам. Используя их как опору и источник вдохновения, я начну с запуска процессора КР580ВМ80А (советского клона Intel 8080), определения признаков жизни и продолжу постепенным наращиванием функционала и возможностей системы. Здесь мы займемся и радиотехникой, и DIY, и программированием как самого процессора, так и современных микроконтроллеров. Но перед этим поделюсь историей, как я, будучи студентом 4 курса, дошел до этого…

Читать далее

Рисуем рабочий процессор в Paint и запускаем на нём ОС | Ритуал по призыву демона Тьюринга

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


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

Термос этот он нашёл на улице и хотел перепрошить его маленький и беззащитный Cortex-M0+.
Человек бредил. Раз в пару минут его глаза загорались и он издавал душераздирающий крик: «Если что-то существует, то на этом можно запустить Doom!».

Но действительно ли это так? И что вообще значит «запустить»?

Почему нельзя просто вывести изображение логотипа или распиновать VGA для вывода изображения на дисплей абсолютно любого устройства?
Ведь все так и делают)


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

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

Ну а если вы всё ещё здесь — добро пожаловать под кат.
Читать дальше →

Новый этап эволюции Vue — Vapor

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

19 октября 2024 года завершился Vue Fes Japan 2024 — традиционное событие, которое собрало множество энтузиастов и экспертов в области веб-разработки, где рассказывали о будущем экосистемы вью. На этой конференции разработчик Кевин Денг подробно представил новый этап в эволюции фреймворка Vue — Vapor Vue. Ожидается, что Vapor Vue значительно повысит скорость работы фреймворка, делая его еще более эффективным и мощным инструментом для создания современных веб-приложений. Такой шаг в развитии не только обещает ускорение производительности, но и открывает новые горизонты для гибкости и адаптивности Vue в работе над сложными проектами. В данной статье мы расскажем о самом интересном в этой презентации.

Читать далее

Спидран в реальности: история робота, который быстрее всех в мире собирает кубик Рубика

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

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

Для начала определимся с исходными данными. Как у программиста, у меня был крайне разнообразный опыт (сейчас я занимаюсь инфраструктурой рантайма больших языковых моделей в Яндексе). Но в робототехнике опыт был почти нулевой (играл в LEGO MINDSTORMS).

Однажды я увидел, как робот ребят из MIT собирает кубик Рубика за 0,38 секунды. Пересмотрев ролик в замедленной съёмке, решил, что в их решении есть что оптимизировать и этот рекорд можно побить. Как раз в то же время я оказался в окружении людей, которые занимаются робототехникой, поэтому интерес к проекту в целом поддерживался, да и разнообразное оборудование было в доступе.

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

Читать далее

Как убить самоорганизацию в команде: вредные советы для лидера

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

Привет, Хабр! Меня зовут Светлана Болсуновская, я стратегический коуч-консультант в YADRO. Многие компании перешли на гибридный формат работы, где команды нуждаются в особом подходе для поддержания самоорганизации — процесса, при котором люди выполняют задачи без постоянного контроля руководителя. Я поделюсь своими наблюдениями, почему в современных условиях самоорганизация не происходит «магически» и что должен (и не должен) делать тимлид, чтобы помочь команде достичь этой цели.

Читать далее