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

Разработка

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

Программно-определяемые радиосистемы SDR Hack RF One и др — что лучше — оригинал, российское изделие или китайский клон?

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

Мир радиосистем довольно сильно изменился после появления такого понятия, как SDR - software defined radio - программно-определяемые радиосистемы (ПОР).

SDR (ПОР) - это система радиосвязи , в которой компоненты, традиционно реализованные в аналоговых аппаратных средствах (например, микшеры, фильтры, усилители, модуляторы/демодуляторы, детекторы и т.д.) вместо этого реализуются с помощью программного обеспечения на компьютере или встроенной системе. Работы над SDR велись ориентировочно с 1970х годов, существовал ряд проектов по этому направлению. Но все они были дорогими, и далеко не для всех.

И только в 200х было обнаружено, что USB адаптеры DVB-T с контроллером и тюнером Realtek RTL2832U и Rafael Micro R820T и ценой 10-20$ могут использоваться в качестве широкополосного 3 МГц SDR-приемника.

Читать далее

Новости

Российский новый университет подключился к «РосНавыку»

Время на прочтение3 мин
Количество просмотров20

9 июля для ректората Российского нового университета (РосНОУ) при поддержке Университетского консорциума исследователей больших данных прошёл семинар сервиса «РосНавык». Этот мониторинговый сервис представила Дарья Олеговна Дунаева, менеджер проекта, ведущий аналитик научно-исследовательской лаборатории прикладного анализа больших данных Томского государственного университета.

Читать далее

The Pegasus GLK-2004: крайне необычный клон NES. Обзор из первых рук в 2025 году

Время на прочтение6 мин
Количество просмотров50

Мое знакомство с игровыми консолями началось с Dendy, конечно же, в 90-х. Как сейчас помню подаренную мне Dendy Junior с логотипом слоненка в бейсболке. В комплекте шло два джойстика и световой пистолет. Консоль не была новой, ее купили с рук. И это было хорошо — целую пачку картриджей дали в подарок. Я был вне себя от радости, когда на экране пузатого телевизора GoldStar появилось меню с играми.

Лишь спустя много лет я узнал, что Dendy — это аппаратный клон приставки Famicom от Nintendo, причем продававшийся в основном в России и некоторых странах бывшего СССР. Игр для оригинальной консоли я никогда в руках не держал, в моей коллекции были исключительно пиратские сборники. Все бы ничего, но недавно мне в руки попал крайне интересный клон все той же самой игровой приставки под названием The Pegasus GLK-2004. Выполнен он в форм-факторе клавиатуры. Что ж, давайте изучим!

Читать далее

Обучение детей программированию, какой инструмент выбрать?

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

Для детей, изучающих программирование, существует несколько отличных сред, включая визуальные среды для начинающих и текстовые языки для более продвинутых. Scratch, Tynker, Swift Playgrounds подходят для начального уровня. Для детей постарше, Python является популярным выбором из-за простоты синтаксиса. 

Давайте теперь рассмотрим подробнее универсальные  среды программирования:

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

Читать далее

Need for speed: оценка ошибок измерений в футбольной аналитике. Часть 1

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

Привет! Меня зовут Артем, и я занимаюсь разработкой систем компьютерного зрения в сервисе Яндекс Спорттех. Среди основных задач нашей команды — футбольная аналитика и работа со статистическими данными.

Яндекс Спорттех обеспечил интеграцию технологических решений в РПЛ — все стадионы участников чемпионата были оборудованы камерами 6К, для клубов организована передача в режиме онлайн фитнес-данных и продвинутых данных на стыке технико-тактических действий. С помощью современных методов компьютерного зрения мы осуществляем детекцию игроков и мяча, ведём их трекинг, а также вычисляем различные ключевые спортивные метрики — пройденные дистанции, максимальные скорости, спринты и рывки, а также экстренные торможения и другие фитнес-показатели, важные как для аналитиков, так и для тренеров и поклонников игры.

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

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

Читать далее

Flare-On 11: Task 7 (2024) – Анализ и криптовзлом

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

В этом разборе подробно рассматривается решение седьмого задания, сочетающего реверс-инжиниринг и анализ .NET Native AOT-приложения, создание FLIRT-сигнатур и криптоанализ эллиптической кривой.
Порядок генераторной точки оказался составным, что позволило применить метод Полига–Хеллмана и восстановить приватные ключи. После расшифровки сетевого трафика был извлечён флаг.
Эта задача удачно объединяет технический анализ исполняемого файла с практическим применением методов криптоанализа.

Читать далее

Как мы строим антифрод в анонимных крипто-свапалках: опыт и грабли

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

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

Читать далее

Проектирование контроллера двигателей с GitHub Copilot

Время на прочтение8 мин
Количество просмотров227

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

Читать далее

Подключение Spring AI к локальным AI-моделям с помощью Foundry Local

Время на прочтение8 мин
Количество просмотров200

Команда Spring АйО перевела статью, которая покажет, как интегрировать Spring AI с Foundry Local — десктопным приложением от Microsoft, совместимым с OpenAI API. Вы узнаете, как настроить локальную AI-модель, подключить её к Spring Boot и создать REST-эндпоинты для чат-бота и суммаризации текста. Всё это — с акцентом на производительность, безопасность и автономность.

Читать далее

Как мы строили KidFolio — цифровую платформу для родителей и детских садов

Время на прочтение10 мин
Количество просмотров171

Массовые фото из детского сада в родительских чатах редко бывают персональными: на десятках снимков сложно найти именно своего ребенка. Выпускники онлайн-магистратуры «Науки о данных» Центра «Пуск» МФТИ предложили решение — платформу KidFolio, которая с помощью технологий компьютерного зрения и мультимодальных моделей автоматически формирует и отправляет родителям персонализированные фото- и видеоотчеты.

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

Читать далее

Шаблон ТЗ для AI

Время на прочтение1 мин
Количество просмотров277

Привет! Я Ярослав Шмулев, датасаентист, выпускник МФТИ и технический директор топ-10 интегратора ИИ R77 AI. Сделал для нас AI ТЗ потому что обычно заказчики приходят и не знают чего хотят, как это описать и какие эффекты ждут.

Читать далее

Как мы улучшили режим ночной съемки в планшетах KVADRA_T

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

Привет, Хабр! На связи Полина Лукичева, инженер команды AI ML Kit в компании YADRO. В первой статье я рассказала о проблемах режима ночной съемки и методах их решения. Сегодня перехожу к практике — проведу предметное сравнение алгоритмов, выберу наиболее подходящие и покажу, как они работают в реальных условиях на планшетах KVADRA_T.

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

Читать далее

AI-first backend: опыт реального вайб-кодинг проекта

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

В 2025 году вопрос полноценной генерации продуктового кода с помощью LLM («вайб-кодинг») становится все более актуальным, но при этом остается и достаточно дискуссионным: насколько такие подходы вообще применимы в реальных проектах, действительно ли они сокращают время и стоимость разработки, и что происходит с тестируемостью и поддержкой такого кода в долгосрочной перспективе?

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

Моя мотивация была проста: попробовать выстроить полноценный продуктовый backend для нетривиального телеграм-бота с функциями агента (планированием, напоминаниями, памятью и проактивным поведением, возможностью дальнейшей расширяемости и интеграции сторонних сервисов), при этом — не писать руками ни строчки кода. Чтобы человек участвовал только как архитектор и асессор, а все проектирование и реализация шли через промпты в специализированные IDE (Cursor, Copilot, Zed) и LLM (как доступные через API, так и в «пользовательской» продуктовой обвязке).

Читать далее

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

Эмпатичный ИИ: как трансформеры учатся распознавать эмоции в разговорах

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

В эпоху чат-ботов и голосовых помощников ИИ всё чаще становится собеседником человека. Но чтобы стать по-настоящему полезным в коммуникации, он должен не только понимать слова — но и улавливать эмоции, интонации, паузы и даже жесты. Именно это и пытается решить задача Emotion Recognition in Conversations (ERC).

В недавней работе A Transformer-Based Model With Self-Distillation for Multimodal Emotion Recognition in Conversations исследователи предложили архитектуру, которая объединяет мультимодальные сигналы (текст, аудио, видео) в единую модель, способную «читать между строк» в прямом смысле. Рассказываем, как это устроено и почему это важно.

Читать далее

Умеет ли вы продавать код?

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

В сфере IT есть сильное профессиональное искажение. Айтишникам кажется, что продукт, который они продают это код. Но в головах их клиентов мир выглядит иначе. Заказчики покупают у айтишников не репозиторий на гитхабе или докер-образ, поднятый на VPS-ке. Они покупают решение своих бизнес-задач. Причём, заметьте, что в этой покупке весь риск лежит на стороне того, кто платит за работу. Потому что гарантия айтишника, что он качественно справится со своей задачей вовсе не гарантирует клиенту, что его бюджет будет потрачен эффективно и его проблема будет решена. Решена именно как бизнес-задача, а не как какая-то другая. То есть, что на выходе от всех затеянных телодвижений будет получен ощутимый положительный финансовый результат.

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


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

Читать далее

Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 8. Запоминающий поиск пути

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

Мы ковыряли поиск пути через A* на протяжении двух глав и при этом были сосредоточены на синтаксических изысках F#. В этой главе мы отдохнём от синтаксиса и посмотрим на то, как этот алгоритм мог бы развиваться в более функциональном стиле.

Читать далее

Сбор событий Linux: есть цель – ищем путь

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

Приветствую всех, кто заглянул на огонек! Меня зовут Роман, и я занимаюсь исследованием безопасности Linux (и всякого другого, связанного с ним) в экспертном центре безопасности в Positive Technologies.

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

Читать далее

QapGen: Создаём мощные парсеры на C++

Время на прочтение35 мин
Количество просмотров423

QapDSLv2 — это язык который транслируется в обычный C++ код. Он позволяет удобно и компактно задавать грамматики/правила разбора кода программ, значительно упрощая разработку компиляторов/анализаторов/трансляторов.

QapGen — это генератор дерева_лексеров/парсеров описанных на QapDSLv2. Сама грамматика QapDSLv2 описана на QapDSLv2 на 100%. Поэтому QapGen как основной читатель этой грамматики сам генерирует часть своего кода(весь парсер QapDSLv2).

Основные фишки QapDSLv2 + QapGen — это:

1) Отсутствие этапа токенизации — дерево лексеров разбивает входной поток на лексемы и сохраняет их в строго типизированных древовидных С++ структурах пропуская этап токенизации.

2) Генерация оптимизированного кода полиморфных лексеров.

3) Полное сохранение всех лексем(даже разделители сохраняются, такие как пробелы/переходы на новую строку и комментарии) в результирующем дереве.

4) Возможность сохранить как оригинальное дерево, так и модифицированное обратно в код/текст без потери разделителей/комментариев.

5) Автоматическая генерация кода посетителей(это такой паттерн проектирования).

А теперь пример самой сочной части(рекурсивно самоописывающийся код):

structt_target_struct:i_target_item{
structt_keyword{
stringkw=any_str_from_vec(split("struct,class",","));
" "? // optional separator
};
structt_body_semicolon:i_struct_impl{";"};
structt_body_impl:i_struct_impl{
"{" // жрём скобочку
vector<TAutoPtr<i_target_item>>nested?; //рекурсия!
" "?
vector<TAutoPtr<i_struct_field>>arr?; // парсим поля
" "?
TAutoPtr<t_cpp_code>c?; // остальной С++ код
" "?
"}"
};
structt_parent{
stringa_or_c=any_str_from_vec(split("=>,:",","));
" "?
t_namename;
};
//точка входа в парсер:
TAutoPtr<t_keyword>kw?; //парсимstruct/class
t_namename; //парсим имя
" "?
TAutoPtr<t_parent>parent?;
" "?
TAutoPtr<i_struct_impl>body;
};

Читать далее

COBOL в XXI веке: почему банки и госслужбы не могут отказаться от языка 1959 года

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

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

Как старейший «серверный» язык справляется с XXI веком, где безопасность и гибкость важнее вечной стабильности?

Читать далее

Как создать свой парсер и AST-генератор на C++ с минимальными усилиями: знакомьтесь с QapDSLv2

Время на прочтение18 мин
Количество просмотров209

QapDSLv2: Новый стандарт AST-heavy парсинга

QapDSLv2 обеспечивает:

Молниеносное построение AST

Полное сохранение структуры исходного кода

Простоту интерпретации и модификации грамматик

Забудьте о любы других парсерах! С помощью QapDSLv2 можно создавать компиляторы/анализаторы/форматировщики кода за минуты/часы.

Парсеры и генерация абстрактных синтаксических деревьев (AST) — это обычно долго, сложно и требует тонны шаблонного кода. Но что если я скажу, что теперь можно описывать грамматики и структуры данных одновременно и получать готовый, оптимизированный C++ код автоматически?

QapDSLv2 — новый стандарт эффективности и удобства в парсинге. Это язык описания парсеров, который избавляет от синтаксического шума, упрощает интеграцию с C++ и позволяет создавать сложные анализаторы без боли и ошибок. Забудьте о бесконечных циклах отладки и непонятных генераторах — теперь всё просто, понятно и эффективно.

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

Готовы ускорить разработку и вывести свои проекты на новый уровень?

QapGen — мощный генератор парсеров, построенный на основе QapDSLv2, который из грамматик QapDSLv2 сразу создаёт высокопроизводительный C++ парсер с типизированным AST, описанным прямо в грамматике.

t_sep{
stringbody =any(" \t\r\n");
}
using" "ast_sep;
t_value{
TAutoPtr<i_value> body;
" "?
}
t_comma_value{
","
t_value body;
" "?
}
t_array=>i_value{
"["
" "?
t_value first?;
vector<t_comma_value> arr?;
"]"
" "?
}

Читать далее
1
23 ...