Pull to refresh
4
0
Send message

Хакаем CAN шину авто. VAG диагностический бортовой компьютер

Reading time5 min
Views34K

С огромным увлечением исследую протоколы CAN шины и разрабатываю устройства взаимодействующие с автомобилем. У меня уже есть голосовое управление центральным замком, виртуальная панель приборов и даже мобильное приложение для моей Skoda Octavia A5.

Теперь я решил разработать диагностический бортовой компьютер для автомобилей группы VAG (VW, Audi, Skoda, Seat). Моими техническими требованиями было: OLED дисплей, лёгкая установка и подключение, множество диагностических параметров. В качестве компонентной базы выбрал:
Читать дальше →
Total votes 76: ↑76 and ↓0+76
Comments41

PHPUnit. Мокаем Doctrine Entity Manager

Reading time12 min
Views8K

Во многих современных приложениях для работы с базой данных используется проект Doctrine ORM.


Хорошим тоном считается выносить работу с БД в сервисы. А сервисы нужно тестировать.


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

Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments11

Простой backend на C++: это возможно?

Reading time5 min
Views49K

Была у меня мечта - писать backend на C++. А вот разбираться в unix socket'ах, TCP, многопоточной/асинхронной обработке запросов и во многом другом совсем не хотелось. Не верил я, что до сих пор нет каких-то минималистичных фреймворков. И сегодня я вам расскажу, как можно просто сделать HTTP API микросервис на C++ с помощью фреймворка Drogon.

Поехали!
Total votes 32: ↑32 and ↓0+32
Comments24

История разработки фасетного поиска средствами PHP

Reading time13 min
Views14K

Как экспериментальный Pet Project дошел до production и на что способны современные версии языка PHP. Немного о проблематике фасетного поиска в части построения агрегатов.

Если ваша первая реакция: «Почему не на Sphinx/ElasticSearch/etc?», не торопитесь с выводами. Воспринимайте изложенное как интересный исследовательский опыт в области возможностей языка и его оптимизаций.

Спойлер: пришлось даже написать порт на GoLang, чтобы лучше понять пути оптимизации кода.

Читать далее
Total votes 51: ↑50 and ↓1+57
Comments6

ARMv9: в чем преимущество?

Reading time18 min
Views29K

Что такое масштабируемые векторные расширения (Scalable Vector Extension)? Что они значат для индустрии и пользователей?

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

Мы находимся на пороге серьезных изменений в индустрии, которых не происходило уже несколько десятилетий. x86 доминирует в компьютерной индустрии уже продолжительное время, но активное развитие ARM, вероятно, станет серьезной проблемой для x86.

В этом году ARM выпустила архитектуру следующего поколения, которая задаст курс отрасли на следующее десятилетие, — ARMv9. Это важное событие, которое заслуживает пристального внимания.
Читать дальше →
Total votes 62: ↑57 and ↓5+68
Comments40

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

Reading time23 min
Views10K

Познакомьтесь с WebAssembly на примере этого простого туториала, требующего лишь самых общих знаний в веб-разработке. Весь инструментарий, который понадобится вам, чтобы составить впечатление о Wasm на основе готовых к запуску примеров кода – это редактор кода, любой современный браузер, а также контейнер Docker с наборами инструментов для C и Rust – он прилагается к статье.

На момент написания статьи WebAssembly в ходу уже три года. Она работает во всех современных браузерах, а некоторые компании уже даже решились использовать ее в продакшене  (Figma, наше почтение). За этим продуктом стоит мощная интеллектуальная поддержка: Mozilla, Microsoft, Google, Apple, Intel, Red Hat — в разработке участвовал инженерный цвет этих и других компаний. Web Assembly повсеместно считается Следующим Большим Прпорывом в веб-технологиях, но широкая аудитория фронтенд-разработчиков не спешит на нее переходить. Все мы знаем HTML, CSS и JavaScript, тех трех китов, на которых зиждется Веб, и для пересмотра такой парадигмы трех лет мало. Особенно, если краткий поиск в Google дает нечто подобное:

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments9

Как определить C и C++-программистов по коду, который они пишут

Reading time4 min
Views40K

Так уж случилось, что я пишу код для разных IoT-железок, связанных с электричеством, типа зарядных станций автомобилей. Поскольку аппаратных ресурсов, как правило, вполне достаточно, то основным фокусом является не экономия каждого байта и такта процессора, а понятный и надежный код. Поэтому в проекте разрабатывают под Embedded Linux и в качестве основного языка используют C++ в его современном варианте - C++17, активно поглядывая на фичи из стандарта 20-го года и новее.

Иногда запускаются новые проекты на той же платформе, с теми же процессами и с переиспользованием многих уже существующих компонентов, и тогда в эти проекты мы ищем программистов, с учетом вышесказанного - программистов на C++. В embedded, тем не менее, чистый C все еще очень популярен, и нередко собеседоваться на вакансию C++ Developer'а приходят именно сишники. Логика у человека простая: языки, на первый взгляд, довольно близкие, базовый синтаксис одинаков, про ООП кандидат что-то слышал, и значит, основная база уже есть и он сможет легко освоить C++ за 21 день в процессе работы, поэтому можно наплести про "с C++ тоже работал", начать писать на "Си с классами" и все получится.

Но нет, не получится.
Total votes 89: ↑65 and ↓24+62
Comments404

Самые полезные новинки C++ 20

Reading time6 min
Views13K


В сентябре прошлого года профильный комитет ISO утвердил С++ 20 в качестве текущей версии международного стандарта. Предлагаю ознакомиться с самыми полезными и долгожданными изменениями нового стандарта.

Библиотека концепций C++


Библиотека определяет фундаментальные понятия, которые могут быть использованы для диспетчеризации функций и проверки аргументов шаблона во время компиляции, на основе свойств типов. Концепции нужны для того, чтобы можно было избежать логических противоречий между свойствами типов данных внутри шаблона и таковыми входных параметров. Концепция должна определяться в пределах пространства имен и имеет следующий вид.
Читать дальше →
Total votes 36: ↑21 and ↓15+16
Comments2

Тихая революция и новый дикий запад в ComputerVision

Reading time7 min
Views33K

Казалось бы, революция с Computer Vision уже была. В 2012 году выстрелили алгоритмы основанные на сверточных нейронных сетях. Года с 2014 они дошли до продакшна, а года с 2016 заполонили все. Но, в конце 2020 года прошел новый виток. На этот раз не за 4 года, а за один. поговорим о Трансформерах в ComputerVision. В статье будет обзор новинок, которые появились в последний год.

Читать далее
Total votes 103: ↑103 and ↓0+103
Comments22

Information

Rating
Does not participate
Date of birth
Registered
Activity