Pull to refresh
17
-0.2
Егор @Tujh

C & C++ Developer

Send message

Радиоуправляемая машинка на Arduino для преодоления мини-бездорожья

Reading time10 min
Views37K

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

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

Читать далее

Pytest-фикстуры на человеческом

Level of difficultyMedium
Reading time9 min
Views33K

Привет, сообщество.

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

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

Читать далее

Используем функционал Podman вместо docker-compose на примере Gitea

Reading time6 min
Views29K

В своем порыве использовать только технологии компании Red Hat, я решила освоить их first-party контейнерный стек. В основе стека лежит podman- движок для контейнеров, работающий без демон-процесса и без root привилегий по умолчанию. podmanинтегрируется в экосистему Red Hat - запуск контейнеров производится посредством systemd ; контейнеры интегрируются с SELinux. Конечно, самая главная причина использовать podmanвместо Docker - его включение по умолчанию в дистрибутив Red Hat Enterprise Linux и подобные.

Читать далее

Тактовая кнопка, как подключить правильно к "+" или "-"

Reading time5 min
Views27K

Вы ни когда не задумывались, почему в схемах иногда кнопки подтягивают к "+" питания, а иногда к общему проводу? Если прямо сейчас набрать в поиске: "тактовая кнопка ардуино" - то на большинстве картинок мы увидим именно прямое подключение, когда резистор подключен на землю. Но, если посмотреть схемы без участия ардуино, то ситуация меняется в корне, чаще можно будет встретить инвертированное включение. Так как же будет подключать кнопку правильнее? Давайте вместе попробуем разобраться в этом вопросе!

Читать далее

Разработка драйвера сетевого адаптера для Linux. Часть 1

Reading time25 min
Views29K

В этой статье мы рассмотрим как устроен драйвер сетевого адаптера для Linux.

Cтатью разделим на две части.

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

Хотя при разработке драйверов необходимо использовать стандартные ядерные фреймворки, такие как clock, reset, libphy и пр., поначалу мы будем работать с адаптером напрямую через регистры состояния и управления. Это позволит нам детально разобраться с аппаратной частью.

Во второй части статьи приведем драйвер к нормальному виду, с использованием стандартных фреймворков и описанием того, что надо указать в Device Tree, и рассмотрим как передавать сетевые пакеты.

Нам нужна макетная плата с сетевым адаптером, на которую можно поставить Linux. Возьмем Orange Pi Zero на платформе Allwinner H2+. В состав платформы входят четыре процессорных ядра Cortex-A7, поддерживается ОЗУ стандартов LPDDR2, LPDDR3, DDR3, широкий спектр соединений и интерфейсов, в том числе сетевой адаптер, для которого мы будем разрабатывать драйвер. Подробное описание платформы тут, документация на платформу Allwinner H3 Datasheet.

Читать далее

Как протащить верблюда сквозь игольное ушко, или обновление компилятора С++ на проекте старше 10 лет

Reading time12 min
Views22K

Привет! Меня зовут Колосов Денис, я являюсь разработчиком клиентской части проекта «Allods Online» в студии IT Territory. Сегодня я расскажу о том, как мы решились обновить среду разработки и заодно компилятор на нашем проекте с Visual C++ 2010 на 2019. 

О чем пойдет речь?

1. Как мы докатились до такой жизни и отважились на этот шаг;
2. О сборке вендерских библиотек и всего окружения, которое у нас есть;
3. С какими кастомными проблемами мы столкнулись;
4. К чему это все привело.

Читать далее

Осваиваем кросс-компиляцию с помощью Clang и LLVM

Reading time21 min
Views28K

Каждый, кто когда-либо пробовал собрать программу на C/C++ через кросс-компиляцию знает, насколько болезненным может быть этот процесс. Главными причинами столь печального положения вещей являются недружелюбность систем сборки при конфигурации кросс-компиляции, а также запутанность процесса настройки набора утилит (тулчейна).


Одним из основных виновников этих проблем, по моему опыту, является тулчейн GNU — древний мамонт, на котором много десятилетий строится весь мир POSIX. Подобно многим компиляторам былых времён, семейство GCC и binutils никогда не ориентировалось на поддержку множества различных целей сборки в одной установке, и единственным способом хоть как-то добиться желаемого была настройка полной кросс-билд-системы для каждой целевой платформы на каждом хосте.

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

PlantUML — инструмент продуктового разработчика

Reading time10 min
Views44K

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

С одной стороны, решение работающее. С другой, буквально через неделю-две я уже начинал сомневаться, достаточно точно ли я «перевел» с кода на русский язык? И тогда вспомнил про UML-диаграммы. И вместо того, чтобы записывать текст, стал визуализировать его и исписал неимоверное количество тетрадей. 

Но в какой-то момент подумал, что хорошо бы перевести все это в электронный вид, чтобы какой-то инкремент оставался. Не фоткать же, например, для документации, свою тетрадь с каракулями. Так я нашел инструмент PlantUML — opensource-решение, которое использует графическую библиотеку graphviz, превращающее код в наглядные схемы.

Давайте вспомним, что такое Unified Modeling Language. Чаще всего в университете UML используется для описания диаграммы классов.

Читать далее

Автоматизация разработки для Android с помощью GitHub Actions

Reading time7 min
Views3.2K

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

Если вы когда-нибудь разрабатывали приложение для Android, то знаете, насколько утомительными могут быть некоторые задачи:

Читать далее

Esp32-машинка с камерой. Проект для быстрой сборки

Reading time21 min
Views41K


Среди проектов небольших управляемых машинок, оснащенных камерой, особое место занимают те, которые позволяют быстро, с минимумом деталей собрать нечто управляемое по wi-fi. Но, как правило, сложности здесь возникают даже на этапе подборки компонентов, определения их совместимости. В данном проекте мы попробуем в бою esp32-cam и драйвер двигателя — tb6612fng.

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

Проект рассчитан на начинающих, а также немного продолжающих.
Читать дальше →

Ускорение процесса разработки под Embedded Linux

Reading time11 min
Views13K

Любой программист, решивший заняться разработкой под Embedded Linux, придя буть-то из высокоуровневых языков программирования, либо из программирования микроконтроллеров на С/С++, неизбежно оказывается удивлен крайней недружелюбностью embedded linux. Текстовый блокнот и консольные утилиты вместо столь привычных IDE, и отладка по логам вместо отладки программатором сильно замедляют процесс разработки. В статье описывается, как мне удалось снизить время доставки изменений до целевого железа при кросс-компиляции в 10 раз.

Читать далее

Альтернативы CDN: наша система доставки контента напрямую из стора в игру

Reading time13 min
Views5.1K

War Robots всегда была игрой, насыщенной контентом, а потому места в памяти девайсов занимала немало. Раньше эти цифры колебались в районе 800 МБ, но масштабная переработка графики в ремастере игры, как бы ни хотелось, не смогла бы оставаться в тех же пределах и наверняка бы привела к увеличению размера приложения в несколько раз. Что и случилось в нашем случае: вес клиента достиг 2,3 ГБ — в три раза больше «ванильной» версии. В то же время мы понимали, что HD-пресет потянет далеко не каждый мобильный телефон, а значит — нет смысла заставлять игроков качать ненужные гигабайты и тем самым ломать себе воронку конверсий.

Выход? Базовое качество скачивать по умолчанию и выбирать при первом запуске, а HD-пресет предлагать пользователю позже — и только если устройство его поддерживает. 

Все это подстегнуло нас на активное внедрение такой технологии в нашу игру.

Читать далее

Распространение консольных приложений macOS до конечных пользователей

Reading time10 min
Views9.1K

Начиная с macOS 10.15 Catalina разработчикам требуется заверять свои приложения и утилиты командной строки. Если с приложениями, распространяемыми через App Store все прозрачно, то распространение консольных утилит может вызвать сложности. В данной статье я покажу, как можно доставлять такие утилиты до конечных пользователей (будем проделывать все необходимые операции в терминале, а также автоматизируем эти действия двумя вариантами - через bash-скрипт и с помощью SPM executable).

Читать далее

Разработка стековой виртуальной машины и компилятора под неё (итог)

Reading time16 min
Views11K

Для завершения реализации компилятора потребовалось около месяца времени (вечерами), чтобы на практике познакомиться с такими темами как BNF (Backus Naur Form), Abstract Syntax Tree (AST), Symbol Table, способами генерации кода, разработки самого компилятора (front-end, back-end), а также модификации виртуальной машины CVM. Ранее с этими темами был не знаком, но благодаря комментаторам погрузился. Хоть затрагиваемых тем много, постараюсь рассказать очень лаконично. Но обо всём по порядку.

Читать далее

Музыка для игр: где брать треки инди-разработчикам

Reading time3 min
Views16K

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

Сегодня мы расскажем о трех ресурсах, где можно найти royalty free треки для своих игровых экспериментов — IndieGameMusic, Unminus Music и cchound.

Читать далее

Стандарт C++20: обзор новых возможностей C++. Часть 6 «Другие фичи ядра и стандартной библиотеки. Заключение»

Reading time13 min
Views23K


25 февраля автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов рассказал о новом этапе языка C++ — Стандарте C++20. В лекции сделан обзор всех основных нововведений Стандарта, рассказывается, как их применять уже сейчас и чем они могут быть полезны.

При подготовке вебинара стояла цель сделать обзор всех ключевых возможностей C++20. Поэтому вебинар получился насыщенным. Он растянулся на почти 2,5 часа. Для вашего удобства текст мы разбили на шесть частей:

  1. Модули и краткая история C++.
  2. Операция «космический корабль».
  3. Концепты.
  4. Ranges.
  5. Корутины.
  6. Другие фичи ядра и стандартной библиотеки. Заключение.

Это шестая, заключительная часть. Она рассказывает о других нововведениях ядра и стандартной библиотеки, добавленных Стандартом C++20.

Другие фичи ядра


Я рассказал о самых значительных нововведениях Стандарта, но это только капля в море C++20. Перейдём к менее глобальным, но не менее интересным вещам. Подробно останавливаться на каждой не буду, потому что цель обзора — рассказать пусть не всё, но обо всём.
Читать дальше →

Лаги, джиттер и потеря пакетов: откуда берутся проблемы с неткодом и как их решать

Reading time11 min
Views81K

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

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

Читать далее

Гексагональные тайловые миры

Level of difficultyHard
Reading time32 min
Views39K

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

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

Читать далее

Разработка ММО РПГ – практическое руководство. Эпизод 1

Reading time8 min
Views54K
image
  • Вам интересно, сколько стоит разработка онлайн-игры?
  • Вы хотите узнать, как организовать разработку ММО от идеи до релиза?
  • Задумывались ли вы о технических трудностях создания онлайн-игр?


        В цикле статей «Разработка ММО РПГ – практическое руководство» вы получите ответы на эти и многие другие вопросы. Все цифры реальны. Все схемы, таблицы, исходный код, диаграммы БД и прочее взяты из реально существующего и успешно работающего проекта.
        В тексте будет много отсылок к геймплею и внешнему виду нашей игры «Звездные Призраки». Я постараюсь излагать материал так, чтобы вам не было нужды вникать (и играть) в наш продукт, но для лучшего понимания материала желательно потратить пару минут и посмотреть, как это все выглядит.
        Готовы? Тогда в путь!
Подробности

10 сайтов для поиска работы в Европе

Reading time2 min
Views329K
Поиск работы – задача не из простых, особенно в текущих неблагоприятных экономических условиях. Европейский ресурс Tech.eu в честь запуска своего сервиса по поиску работы подготовил список из десяти сайтов, которые помогут вам подыскать себе место под европейским солнцем, если вы, по какой-либо причине, желаете уехать на заработки в ЕС.
Завожу трактор

Information

Rating
Does not participate
Location
Eindhoven, Noord-Brabant, Нидерланды
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer, Scrum Master
Lead
C++
C
Embedded system
Embedded Linux
Cmake
Bash
Docker
CI/CD
Git
Python