Search
Write a publication
Pull to refresh
14
-0.4

Инженегр АСУТП

Send message

Обработка аудио на ESP32

Level of difficultyMedium
Reading time15 min
Views12K

В этой статье я хочу поделиться своим опытом портирования проекта распознавания музыкальных жанров аудиозаписей на ESP32-C3. Исходный проект взят из репозитория книги TinyML-Cookbook_2E.
При анализе речи или других звуков важно выделить такие характеристики, которые отражают строение сигнала, но при этом не зависят от конкретных слов, громкости и других мешающих факторов. Для этого используют cepstrum, mel-cepstrum и MFCC - это шаги преобразования, которые переводят звук в удобную для анализа форму.

Читать далее

Обзор языка Crystal

Level of difficultyEasy
Reading time7 min
Views5.3K

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

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

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

Читать далее

Golang Top 15 ошибок

Level of difficultyEasy
Reading time9 min
Views6.7K

Golang Top 15 ошибок

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

Читать далее

RE: Как Microsoft задушил Delphi, создав .NET: история одного программиста и одного чемодана

Level of difficultyMedium
Reading time7 min
Views9.4K

Тема зацепила. Я сам учился на Delphi и писал на нём ПО для внутренней автоматизации, последний раз в 21

Успех и долголетие языка определяется не столько техническим превосходством, а сочетанием экосистемы, адаптации к трендам и способности формировать критическую массу разработчиков. И часто, наличием "за спиной" у среды разработка корпорации достаточно мощной, что бы её поддержка обеспечила и разработку продукта и поддержку экосистемы и популяризацию.

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

Читать далее

Ошибки в Go: Обработка, Обертки и Лучшие Практики

Level of difficultyMedium
Reading time8 min
Views6.1K

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

Читать далее

Миграция с Bevy на Unity

Level of difficultyEasy
Reading time6 min
Views2.8K


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


Я прочитал статью Migrating away from Rust и хочу поделиться с вами своими мыслями, заодно переведя оригинал. Я буду вести повествование от своего лица, поскольку это скорее реакция и размышления, а не традиционный перевод.


Для меня тема весьма актуальна, так как я сам нахожусь в этом странном лагере разработки игр на нишевых движках. Я использую не Rust+Bevy, а Go+Ebitengine, но многие плюсы и минусы этих комбинаций интересно рассматривать как дополняющие друг друга.


Когда-нибудь, я обязательно напишу статью о своём опыте серьёзной разработки игр на Go, но пока я слишком сильно завертелся в рабочем процессе, чтобы успеть доделать демку своей игры до Steam Next Fest. Будет ли эта статья положительная, или это будет миграция на Godot? Кто знает!


Ну а пока, погнали разбирать статью.

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

Миграция моей игры с Rust

Level of difficultyEasy
Reading time8 min
Views16K

Когда я начал работу над Architect of Ruin в декабре 2023 года, то решил делать её в игровом движке Bevy. Мой выбор был мотивирован собственным интересом к Rust — языку, от работы с которым я получаю много удовольствия. Ещё больше меня привлекла в этом движке модель ECS, с которой мне тоже нравится работать, а также сообщество Bevy, которое мне очень симпатично.

Поэтому стало неожиданностью то, что в январе 2025 года мы выполнили миграцию нашей игры с Rust и Bevy. Я потратил примерно шесть недель, чтобы полностью переписать игру на C#, и последние три месяца мы работаем в Unity.

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

Но мы решились на это, и в посте я объясню, почему.

Читать далее

Объяснительная инженера КИПиА

Level of difficultyEasy
Reading time3 min
Views35K

Небольшое предисловие:

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

И так - объяснительная

Классификация парадигм программирования

Level of difficultyEasy
Reading time6 min
Views5.1K

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

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

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

Аспекты классификации

История C#: эволюция версий, .NET, Unity, Blazor, MAUI

Level of difficultyMedium
Reading time19 min
Views6.9K

C# — один из самых популярных языков программирования, используемый для разработки приложений, веб-сервисов и игр. В этой статье мы заглянем в его историю: рассмотрим ключевые изменения от версии к версии и различные инструменты, без которых C# трудно представить.

Читать далее

Весь китайский автопром от A(vatr) до Z(eekr)

Reading time19 min
Views59K

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

Читать далее

Как Microsoft задушил Delphi, создав .NET: история одного программиста и одного чемодана

Level of difficultyEasy
Reading time4 min
Views34K

Личный взгляд программиста с стажем на то, как Microsoft переманил Хейлсберга, создал .NET и вытеснил Delphi с технологической сцены. История предательства, перехода эпох и чемодана, который до сих пор скрипит в углу.

Как Microsoft задушил Delphi читать далее

Обзор CUDA: сюрпризы с производительностью

Reading time6 min
Views10K

Наверное, я очень опоздал с изучением CUDA. До недавнего времени даже не знал, что CUDA — это просто C++ с небольшими добавками. Если бы я знал, что изучение её пойдёт как по маслу, я бы столько не медлил. Но, если у вас есть багаж привычек C++, то код на CUDA у вас будет получаться низкокачественным. Поэтому расскажу вам о некоторых уроках, изученных на практике — возможно, мой опыт поможет вам ускорить код.

Читать далее

Рейтинг российских SCADA (СКАДА) систем

Level of difficultyMedium
Reading time6 min
Views13K

На основе 18-летнего опыта работы в сфере АСУ ТП и детального анализа рынка мы представили рейтинг отечественных решений, охватывающий: «Каскад Цифра», «Альфа Платформа», «МастерСКАДА 4D», REDKIT SCADA 2.0, «СимплСКАДА», «ИнтраСКАДА» и «РАПИД СКАДА».

В исследовании оценены функциональность, надежность, масштабируемость, совместимость с ОС (включая Astra Linux, РЕД ОС), поддержка промышленных протоколов (OPC UA, Modbus, МЭК 61850), интеграция с базами данных (PostgreSQL, InfluxDB, Oracle) и ERP-системами.

Читать далее

Умный дом. Как соединить разные технологии? Реальный опыт

Level of difficultyMedium
Reading time12 min
Views18K

Умным домом в наше время уже никого не удивишь, а если говорить об элементах умного дома, то они распространены практически повсеместно, а новые экосистемы появляются с завидной регулярностью. И тут встает вопрос, а как быть обычному рядовому пользователю? Покупать оборудование и быть привязанным к конкретной экосистеме? А если случилось так, что используются элементы нескольких разных производителей/экосистем? Куча приложений в смартфоне для управления всем этим хозяйством выглядит удручающее. Перспектива, при отключении интернета, остаться без управления или вообще неожиданно получить в своем хозяйстве неработающее устройство, которое по каким-то причинам перестали поддерживать в новой версии экосистемы, удручает еще больше. А это я еще не касаюсь вопросов безопасности.

Читать далее

Восстановление работы конвейера розлива бытовой химии

Level of difficultyEasy
Reading time5 min
Views4.1K

Постановка задачи была такой: конвейер розлива бытовой химии перестал работать по неизвестной причине. Контроллер S7-1200 Siemens встал в стоп-режим и отказывался работать. Перезапуск контроллера по питанию не помогал. Конвейер простаивал, что вело к серьезным убыткам. Владельцам срочно требовалось восстановление работоспособности линии.

Позднее удалось понять, почему старые системы на подобных ПЛК Siemens встают. Если со временем возникают дефекты питания контрольных цепей датчиков 24VDC, и они начинают «коротить» о корпуса, то контроллер воспринимает это как критическое нарушение и останавливает работу, переходя в режим «Стоп». При этом выйти из этого режима (сбросить его) возможно только при наличии исходного кода и онлайн соединения с контроллером.

Читать далее

Как правильно готовить std::span

Reading time6 min
Views5.9K

Сегодня мы поговорим про std::span и как не порезаться на острых углах C++.

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

Вообще, с учётом того, что, начиная с С++17 мы уже знакомы с понятием string_view, можно представить, что std::span — это нечто подобное, только действующее для непрерывных участков памяти, которые ещё можно и модифицировать. Но не будем забегать вперед, обо всех свойствах по-порядку.

Читать далее

Патчим OpenOCD для поддержки чипа NOR Flash

Reading time2 min
Views1.5K

Disclaimer: "чукча не писатель, чукча читатель"

UseCase 0: надоело переподключать плату с RP2040 и захотелось загружать прошивку из IDE по кнопке "Run"
UseCase 1: хочется пошаговой отладки, а не принтами.

Установил на одну из плат DebugProbe и попробовал подключиться.

Оказалось не все так просто - OpenOCD плевался на неизвестное устройство:

окунуться

Путеводитель C++ программиста по неопределённому поведению

Level of difficultyHard
Reading time3 min
Views13K

Путеводитель C\+\+\ программиста по неопределённому поведению


Вашему вниманию предлагается полный список разделов электронной книги (12 из 11 :)), посвящённой неопределённому поведению. Книга не является учебным пособием и рассчитана на тех, кто уже хорошо знаком с программированием на C++. Это своего рода путеводитель C++ программиста по неопределённому поведению, причём по самым его тайным и экзотическим местам. Автор книги — Дмитрий Свиридкин, редактор — Андрей Карпов.

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

Как в Android запрещали фоновую работу и улучшали расход батареи

Reading time15 min
Views23K

Когда-то работа в фоне была простой. Теперь в Android есть множество ограничений: работа в фоне, доступ к файловой системе, разрешения на которые надо получить одобрение модераторов Google Play и другие. Со всеми ними разработчикам приходится работать. Недавно я выступил с докладом на эту тему на конференции DUMP, а теперь написал текст на его основе для Хабра. Давайте вспомним, с чего все начиналось и как менялись требования с каждой новой версией Android.

Читать далее

Information

Rating
Does not participate
Location
Россия
Registered
Activity