Pull to refresh

Technotext

Делаем собственный анализатор C++ кода в виде плагина для Clang

Level of difficultyMedium
Reading time11 min
Views4.8K


Есть много проектов, целью которых является превратить С++ более "безопасный" язык программирования. Но внесение изменений в синтаксис языка обычно нарушает обратную совместимость со старым кодом, который был написан до этого.


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


Но данная статья не о библиотеке, а об особенностях разработки анализатора программы на С++ в виде плагина для Clang.


Можно считать, что это подведение итогов по результатам сравнения нескольких разных способов создания плагина для компилятора С++, а так же очередной Хабрахак для хранения результатов экспериментов и публикации итоговых выводов, которые я решил сохранить не только для себя, но и в виде статьи на Хабре, что бы результатами моего труда могли воспользоваться и другие хорошие люди :-), которым так же может потребоваться погрузиться в дебри парсинга исходного текста программ.

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

Причесываем VSCode до неприличной Yocto IDE или история одной кнопки

Level of difficultyMedium
Reading time44 min
Views9.9K

Идея написания этой статьи вдруг возникла у меня в начале 2025 года, когда я проснулся 2 января с тяжелой головой и вдруг понял что нужно сделать что то хорошее, что то хорошее для вас, как говорит моя дочь Маргарита «для тех кто в Интернете». Как минимум мне нужен компьютерный класс на Raspberry Pi4, ну или хотя бы ферма docker(ов).

Я обожаю Visual Studio Code, но мне всегда не хватает времени чтобы более детально разобраться в его огромной функциональности, в различных конфигурациях, тасках и launch(ах) описанных в формате json и я решил это обойти. Статья из серии DockerFace.

Краткое содержание статьи:

Выбор и настройка плагина для VSCode

Запись Yocto образа на SD карту памяти

Сборка Yocto образа в Docker(е)

Прием Барона Мюнхгаузена для документирования bash

Запуск Yocto образа RPi под виртуальной машиной Qemu

Развертывание DemoMinimal образа из Yocto коробки

Выписываем Buster Slim(а) для крутой разборке в Докере

Настройка DHCP, TFTP и NFS сервера

Загрузка core-image-minimal (wic) образа на rpi4 по сети

Сетевая загрузка Raspbian для платы Raspberry Pi4

Побочный эффект сборки, загрузка ISO дистрибутива Ubuntu по сети

Автоматический анализ Yocto логов с помощью Deepseek

самая красивая кнопка для друзей Элвиса

встраиваем кнопки в VSCode паровозиком

Читать далее

Методы оптимизации в машинном и глубоком обучении. От простого к сложному

Level of difficultyHard
Reading time29 min
Views23K

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

Читать далее

Защита схемы от переполюсовки, что может быть проще?

Level of difficultyMedium
Reading time15 min
Views48K
image
«Я не такая», «со мной этого точно не может случиться» — говорили они, но упорно продолжали пихать батарейки в пульт для телевизора не той стороной…

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

Содержание:



Всех неравнодушных к электронике прошу под кат!
Читать дальше →

В стиле ретро: меньше слов — больше action items

Level of difficultyEasy
Reading time8 min
Views1.6K

Как сделать ретроспективу полезной и интересной

Привет! Меня зовут Настя, я работаю проектным менеджером и скрам-мастером в онлайн-кинотеатре Okko. За последний год я провела более 100 ретроспектив в разных командах. Не все из них были удачными.

Читать далее

Модернизация настольных электромеханических часов

Level of difficultyHard
Reading time33 min
Views8.7K

У меня есть старые электромеханические часы «Янтарь», которым почти 50 лет. По паспорту их продали в 1976 году. Эти часы дороги мне как память, потому что достались от бабушки с дедушкой.

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

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

Погружаемся в схемотехнику, механику и код

Идеальная структура сервиса

Level of difficultyMedium
Reading time12 min
Views2.3K

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

Читать далее

Настройка self-hosted K8s кластера с помощью RKE2 (Rancher)

Level of difficultyMedium
Reading time12 min
Views8.4K

Имея за плечами опыт работы с Kubernetes в различных облачных провайдерах вроде AWS и Yandex Cloud я столкнулся с необходимостью развертывания кластера вне облака на виртуальных машинах. 

В статье расскажу про то, как подготовить high-availability кластер, используя инструмент под названием RKE2 - Rancher Kubernetes Engine.

Читать далее

Создаём эмулятор легендарной игры «Ну, Погоди» на базе Raspberry Pi Pico

Level of difficultyMedium
Reading time22 min
Views18K


Многие из тех, кому сейчас за 30, и рождённых в СССР или на постсоветском пространстве, помнят электронную игру «Ну, погоди!». Во времена, когда не было ни интернета, ни ноутбуков, ни мобильных телефонов, а из общедоступных электронных развлечений были только аттракционы в парках культуры и видеосалоны, обладание бытовым компьютером, электронными наручными часами Montana или электронной игрой «Ну, погоди!» было мечтой многих детей.

Были ещё и другие электронные игры, но именно «Ну, погоди!» считается классикой.


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


Лет 10 назад и я купил её в идеальном состоянии, поигрался, вспомнил детство и положил в ящик. Но несколько месяцев назад с разочарованием увидел, что «потекла» нижняя часть экрана.


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


Я не был одинок в своём желании воссоздать игру, этой теме посвящено также немало статей, но в них обычно создавали симуляторы, а не эмуляторы игры. Симулятор у меня ассоциируется с фразой: «Я художник, я так вижу», эмулятор — это более точное воспроизведение устройства.


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


Эмулятор максимально приближен к оригиналу, если не считать экран (он не сегментный, как в оригинале) и корпус (я пока реализовал на беспаечной макетной плате).


Если вам интересно, как за несколько вечеров воссоздать у себя эмулятор «Ну, погоди!» на современном микроконтроллере или просто поностальгировать, добро пожаловать под кат.


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

HDLbits + Qwen ИИ – пожалуй, лучший способ выучить Verilog

Level of difficultyEasy
Reading time7 min
Views2.9K

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

В классическом программировании вы видите результат сразу после запуска программы. Скажем, программирование на C# - доступно каждому, кто готов сделать первый шаг. Немного текста, и по нажатию F5 вы увидите на экране классический "Hello, World!". Всё, ключ к двери в мир разработки в ваших руках... Пусть впереди вас ждут сложные концепции и океан возможностей, именно эта простота делает старт таким увлекательным и доступным.

С Verilog всё гораздо сложнее. И хотя, в мире ПЛИС аналогом "Hello, World!" может быть мигающий светодиод или простой счётчик, результат вашей работы будет виден только после загрузки кода на плату и проверки его работы.

Появление онлайн-симулятора HDLBits сделало изучение Verilog гораздо проще и увлекательнее, чем когда-либо прежде. А доступные каждому платы с ПЛИС китайской компании Gowin Semiconductor (отладочная плата с ПЛИС, на которой можно развернуть процессор RISC-V — стоит всего 2000 рублей) позволяют попрактиковаться на реальном «железе» практически бесплатно. При наличии опыта программирования, освоить Verilog будет проще, чем вы думаете. 😉

Если вам нужно закрыть этот «пробел в образовании» и познакомиться с RTL-дизайном, начинайте прямо сейчас! Но обо всём по порядку.

Читать далее про HDLbits!

Задача про счастливые билетики и ТФКП

Level of difficultyMedium
Reading time2 min
Views7.2K

Здравствуйте, друзья!

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

Читать далее

Потерянный, обретенный, обреченный. Неординарная история бомбардировщика «Kee Bird»

Reading time49 min
Views11K

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

Читать далее

Интегральные резисторы или О чем молчат в спорах про проектные нормы

Level of difficultyMedium
Reading time20 min
Views15K

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

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

Правильно, ничего! Но есть нюансы.

Почему ракета не долетела до звёзд, но зажгла мечту. Исповедь конструктора

Level of difficultyEasy
Reading time23 min
Views4.4K

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

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

Ну, полетели, чего ждать

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

Level of difficultyMedium
Reading time12 min
Views17K

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

Читать далее

React 19: что нового, что полезного, и куда мы движемся

Level of difficultyMedium
Reading time10 min
Views12K

С вами Дима, старший фронтенд разработчик в Surf, и сегодня мы разберём React 19 — новую версию одной из самых популярных библиотек для создания пользовательских интерфейсов. 

Вперёд, к подробному разбору основных фичей, оценке их плюсов и минусов и исследованию будущего React. 

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

Как я починил огромный баг (фичу) переменных Figma с помощью AI

Level of difficultyMedium
Reading time19 min
Views2K

Если вам когда-нибудь приходилось копировать переменные из одного файла в другой, то вы тоже наверняка сталкивались с тем, что Фигма НЕ сохраняет связи между переменными! То есть, если скопировать semantic/brand/primary и base/brand/500 (первый наследует значение второго) — фигма удалит их связь! И оставит связь с другой переменной, оставшейся в другом файле. Это ужаснейший флоу. И к сожалению, это фича, а не баг, и они его не планируют чинить.

Слегка поискав и не найдя подходящего плагина, я уже отчаялся, но вспомнил, что можно написать такой плагин, не штудируя api, подключив к этой задаче нейросети.

Читать

WAF или не WAF? Дайте два! Решаем вопрос защиты веб-приложений

Reading time9 min
Views4.7K

Всем привет. Меня зовут Аскар Добряков, я ведущий эксперт направления защиты бизнес-приложений. Уже больше 15 лет занимаюсь ИБ и три из них – защитой веб-приложений. За это время я часто сталкивался с неоднозначным отношением коллег к Web Application Firewall. В ИБ-сообществе мнения относительно защиты веб-приложений с помощью наложенных средств варьируются в диапазоне от «‎просто необходимы» до «нецелесообразная трата ресурсов, вполне можно обойтись встроенными средствами приложения».

Кто же прав? Чем полезен WAF, и какие у него недостатки? Давайте разберемся. Предупреждаю: тема непростая, но felix, qui potuti rerum cogoscere causas.

Читать далее

Миссия невыполнима: как «похитить» радиатор ДГУ

Level of difficultyEasy
Reading time4 min
Views9K

Привет, Хабр! На связи Фёдор Наумов, сервисный инженер К2Тех, по совместительству – руководитель описанных ниже работ. Сегодня я расскажу, как мы демонтировали радиатор дизель-генераторной установки (ДГУ) из здания, построенного практически «в облипку». Ловкость рук и никакого мошенничества – под катом!

Читать далее

Как реализовать безопасный удаленный доступ в КИИ

Reading time8 min
Views7.2K

Всем привет! Меня зовут Егор Куликов, я руковожу направлением безопасности КИИ и АСУ ТП в К2 Кибербезопасность.

В этой статье мои коллеги Марат Сафин, эксперт направления безопасности КИИ и АСУ ТП, и Анна Добрянская, системный аналитик, собрали рекомендации по организации безопасного удаленного доступа в КИИ для реальной киберзащиты и выполнения требований ИБ-регуляторов.

Читать далее