Pull to refresh
-4
Эдуард Зиганшин @e-zigread⁠-⁠only

Разработка электроники

Send message

Делают всё роботы, а не человек! Как работать меньше, но продуктивнее? Обзор шести нейросервисов

Level of difficultyEasy
Reading time13 min
Views25K

Нейросети — настоящая суперсила в современном мире: мгновенный анализ огромных объёмов данных, оптимизация процессов и автоматизация рутины. Это уже не просто инструменты — это высвобождение времени и конкурентное преимущество. Рекомендации по выбору и использованию классных нейросервисов! Будьте осторожны, это довольно объёмный обзор.

Читать далее

Готовим Gitea со вкусом werf CI/CD и Dex-авторизации в кластере Deckhouse Kubernetes Platform. Часть 1

Level of difficultyMedium
Reading time13 min
Views5.8K

Клиенты «Фланта» иногда ищут альтернативу GitLab или GitHub с удобным CI/CD и on-premise-размещением. Один из возможных вариантов — Open Source-решение Gitea. 

В сравнении с GitLab сервис Gitea прост и потребляет в два раза меньше ресурсов. При этом его функциональности достаточно, чтобы построить экосистему управления кодом и его развёртывания в Kubernetes. Эта статья — детальная инструкция по установке и настройке сервера Gitea, а также организации с его помощью авторизации через Dex в кластере Deckhouse Kubernetes Platform. 

В следующих частях серии настроим Gitea act_runner и подготовим Gitea Actions-пайплайн, в котором развернём приложение в кластере с помощью werf.

Читать далее

Разработка служб для Windows на C++

Level of difficultyHard
Reading time48 min
Views13K

В данной статье описан пошаговый процесс разработки служб для операционной системы Windows с использованием языка программирования C++.

В статье будет представлена теоретическая база по работе служб в Windows, рассмотрено их общее устройство и будет реализовано приложение, с помощью которого можно будет устанавливать свою службу, запускать её, останавливать и удалять (деинсталлировать).

Читать далее

Грязные трюки C++ из userver и Boost

Level of difficultyMedium
Reading time15 min
Views18K

Привет, я Антон Полухин из Техплатформы Екома и Райдтеха Яндекса. Моя команда разрабатывает userver — современный опенсорсный асинхронный фреймворк с богатым набором абстракций для быстрого и комфортного создания микросервисов, сервисов и утилит на C++.

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

А именно:

— Посмотрим, как работают исключения на платформе Linux x86, и сделаем с ними что‑то интересное.

— Залезем ещё глубже под капот исключений и сделаем их ещё быстрее.

— Сделаем висячую ссылку на невалидный объект, и всё будет хорошо.

— А под конец то, что все любим, — погрузимся в шаблонное метапрограммирование.

Читать далее

Конечный Aвтомат Аппаратного I2C-Трансивера

Level of difficultyEasy
Reading time9 min
Views5.1K

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

Меня удивляет, что в оригинальном коде от вендоров микроконтроллеров программисты прошли мимо конечных автоматов при написании I2C кода внутри своих официальных uHAL. Непорядок...

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

Читать далее

Address Sanitizer, или Что делать, если не работает valgrind

Reading time5 min
Views46K
Случилась непростая ситуация. Есть код, написанный на С, который активно используется через cgo в проекте, написанном на Go. В какой-то момент программа начала падать с ошибками от malloc: то segfault, то memory corruption.

Логичная мысль: нужен valgrind с его memcheck, чтобы проверить, кто лезет поперёк батьки в пекло в невалидную память. Однако, попытка скормить валгринду бинарник, полученный от go build, приведёт только к разочарованию — даже на простом Hello World валгринд разразится сотнями ошибок и отправит разработчика на известные координаты (спойлер: "Go fix your program!").

Это происходит из-за того, что go runtime довольно специфичен и значительно отличается от такового в С. (Подробности можно спокойно найти по запросу «golang valgrind»).

Так как же нам разобраться, что происходит?
Читать дальше →

Добавление пользовательских иконок для типов MIME в Linux

Level of difficultyEasy
Reading time2 min
Views2.2K

Привет! Меня зовут Станислав Ермохин, я руководитель группы методического обеспечения в команде КОМПАС-3D. По ходу подготовки версии КОМПАС-3D для Linux мы встречаемся с «очевидными и невероятными» ситуациями. Решением одной из них решили поделиться. Тем более, что в Рунете не удалось найти достаточно полного описания, как назначать пользовательские иконки для файлов. Вся информация разрозненная, отрывочная или устаревшая. 

Читать далее

Логическая организация кэш-памяти процессора

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

Кэш память процессора используется для уменьшения времени простоя процессора при обращении к RAM.

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

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



Так вот суть кэширования состоит в разбиении RAM на кэш-линии и отображении их на кэш-линии кэш-памяти. Возможно несколько вариантов такого отображения.
Читать дальше →

Когда private, но очень хочется public

Level of difficultyMedium
Reading time8 min
Views21K

В 2016 году меня пригласили помочь с разработкой экшн-очков "ORBI", это такие водонепроницаемые очки с несколькими камерами, которые могут стримить 360видео сразу на смартфон, ну а если с ними поплавать, тоже ничего сломаться не должно. (https://www.indiegogo.com/projects/orbi-prime-the-first-360-video-recording-eyewear#/). Собственно моей задачей было написать алгоритм склейки видео потока с четырех камер в одно большое 360* видео, на тот момент задача не очень сложная, но требующая немного специфичных знаний opencv и окружения. Но статья не об этом, потому что теперь это все оберегаемое IP, а про то как мы легальными и не очень средствами языка С++ писали тестовое окружение для используемых классов и соответственно алгоритмов. Да вы скажете, что там такого - сделал гетеры да тестируй себе на здоровье. А если гетера нет или переменная класса спрятана в private секцию и возможность изменить хедер отсутствует. Или вендор либы забыл положить хедеры, и прислал только скан исходников (китайские друзья они такие), а тестировать это надо? Помножив желание написать тесты на утренний кофф и приплюсовав дикий энтузиазм, можно получить очень много ошибок компиляции интересного опыта. Как говорил один мой знакомый лид: "Нет такого кода, который мы не сможем порефакторить, особенно за утренним кофф".

private not public?

Скачиваем и смотрим YouTube на своём хостинге

Level of difficultyMedium
Reading time6 min
Views54K

У пользователей в РФ возникли затруднения с доступом к YouTube. Причины известны, как и варианты решения. Однако это битва кота и мыши: ТСПУ эволюционируют, и популярные инструменты часто перестают работать.

Чуть надёжнее использовать свою инфраструктуру в зарубежном дата-центре. Так можно скачать контент с YouTube на свой сервер, а оттуда раздать трафик внутри РФ любым удобным способом без всяких «замедлений».

Получается что-то вроде зарубежного прокси для YouTube. И это совершенно легально (пока).

Читать далее

Turbo-Pascal 5.5 (и другие) в браузере — с загрузкой программ по ссылке

Level of difficultyEasy
Reading time8 min
Views2.5K

"Эх вот в школе я такую программулину написал, на Паскале" - бывают такие мысли, особенно у тех кто учился, скажем, в 90е. И даже находятся порой эти старые программы на старом диске. Но если запустить их ещё в DosBox у себя на машине можно - то как показать-похвастаться другим, в интернете?

Возьмём эмулятор js-dos (им старые игры в браузере запускают) - и поколдуем над ним, чтобы можно было своими паскальными-бейсиковыми программулинами делиться всем на радость.

Пользоваться этой поделкой вы сможете не вникая в подробности! Там есть страничка для подготовки "ссылок с программами" - хоть сразу делитесь в комментариях :) А для тех кому захочется по аналогии и другие компиляторы-интерпретаторы подключить - будет немножко пояснений что и как там сделано - чтобы форкнув код на гитхабе вы могли быстро внести нужные изменения.

Вспомним молодость :)

Трансформация или чемодан без ручки (часть 7) Конфликты и компромиссы…

Level of difficultyMedium
Reading time5 min
Views422

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

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

Читать далее

SOLID на котиках

Reading time7 min
Views52K


Каждый программист хоть раз слышал о принципах SOLID. На собеседованиях и экзаменах в вузах многие из нас пытались вспомнить, о чем же был тот самый принцип Лисков. Однако вряд ли цель преподавателей и интервьюеров — заставить нас заучивать строчки из учебников. SOLID действительно помогает писать качественный код, когда во всем разберешься! Если вы этого еще не сделали, добро пожаловать под кат. Еще раз взглянем на то, как устроены всем известные принципы. Обещаю — без духоты, все рассмотрим на примерах с котиками.
Читать дальше →

Взгляд в игольное ушко: какие дефекты открывает рентген на печатных узлах QFN, SON, DFN и QFP

Reading time7 min
Views6.4K

Мы продолжаем изучать дефекты, которые можно встретить при рентген-контроле качества печатных узлов. В первой части статьи Александр Патутинский, технолог по подготовке и запуску печатных плат в производство, систематизировал дефекты BGA-корпусов. Кроме них, рентген-снимки могут показать дефекты таких корпусов, как QFN (Quad Flat No-lead), SON (Small Outline No-lead), DFN (Dual Flat No-lead) и QFP (Quad Flat Package), в том числе с термопадами. Под катом Александр разберет эти случаи, как стандартные, так и более редкие, чтобы никакие результаты рентген-исследования не смогли ввести вас в заблуждение.

Читать далее

Отладочная плата с жирной ПЛИС за 500р или что делать со старым антмайнером — как я делаю собственную платформу

Level of difficultyMedium
Reading time3 min
Views20K

С незапамятных времён, когда ещё существовали браузеры под ДОС, я взял себе ник Astra.

Поэтому и назвал проект превращения запчасти от майнера с мусорки в годную "отладку", с которым вожусь несколько месяцев, --Аstra_S9_SoC(+FPGA)-- или "платформа Astra9" Собственно, сама плата уже давно запроектирована и наштампована конторой Битмаин невероятно большим тиражом- порядка нескольких сотен тысяч (а то и миллиона) экземпляров. Сотни тысяч этих плат УЖЕ находятся у нас в стране, их не надо тащить с Али. Плата предназначена чисто для управления майнингом на хешплатах и не имеет никакой либо документации. Однако, "сердцем" платы является SoC+FPGA микросхема американской корпорации Xilinx -- ZYNQ 7010 xc7z010-clg400, что позволяет использовать её как FPGA девборд и как одноплатник

Я взял на себя труд разработать рабочую документацию на эту плату. https://dzen.ru/a/ZtTuMNBQ3gFhmskj

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

0. Никакой возни, раздобыл плату, микро-СД-флешку - и через полчаса всё заработало https://dzen.ru/a/ZtumRpI4dV3u1R7v

1. Привет, народ или Как помигать светодиодом

2. Запустить Убунту

Читать далее

Во что компилятор C++ превращает код, или ускоряем код безопасно

Level of difficultyMedium
Reading time13 min
Views10K

Привет, Хабр! Меня зовут Алексей Салтыков, я инженер-программист в команде КОМПАС-3D. Решил поделиться соображениями насчет оптимизаций в С++ глазами обычного разработчика. Хочется сразу предупредить, что статья никого ни к чему не призывает. Цель – наглядно показать, как незначительные трансформации кода могут помочь компилятору лучше оптимизировать код и насколько это вообще эффективно.

Читать далее

Запускаем Embedded Linux на Hard- и Soft-CPU Xilinx Zynq: сборка операционной системы

Level of difficultyHard
Reading time25 min
Views5.2K

И снова здравствуй, Хабр! Мы добрались до второй части повествования о параллельном запуске двух ОС на FPGA с процессорной подсистемой. 

В этой статье мы сначала определим минимально необходимые компоненты для запуска Embedded Linux. Затем осуществим сборку под ARM стандартными инструментами производителя и под Soft-CPU «вручную». И наконец, подготовим загрузочный носитель, чтобы подойти во всеоружии к запуску и верификации проекта, которые ожидают нас в заключительной части цикла.

Читать далее

Комбинационная логика на SystemVerilog

Level of difficultyEasy
Reading time24 min
Views3.3K

Данная статья посвящена разработке аппаратуры на SystemVerilog со стороны человека, который сам только начинает углубленно в этом разбираться. Рассчитана она на то, чтобы другим новичкам было проще сориентироваться в незнакомой среде, поэтому некоторые аспекты здесь будет рассмотрены довольно поверхностно и упрощенно...

Читать далее

JavaScript: структуры данных и алгоритмы. Часть 1

Level of difficultyMedium
Reading time33 min
Views30K


Привет, друзья!


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



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


Код, представленный в этой и других статьях серии, можно найти в этом репозитории.


Интересно? Тогда прошу под кат.

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

Логирование FreeRTOS через Virtual Com Port

Level of difficultyMedium
Reading time10 min
Views3.3K

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

Тестирование stm32 в Qemu в Docker

Information

Rating
Does not participate
Location
Мытищи, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

System Software Engineer, Hardware Engineer
Senior
From 225,000 ₽
C++
Qt
Verilog HDL
VHDL
C
Git
Linux