Как стать автором
Обновить
4
0
Андрей Васильев @vap1977

Спец по распределенным встраиваемым системам

Отправить сообщение

Настройка Kafka для работы в режиме подтверждения о принятии сообщения (ack/nack)

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

На новом проекте, на котором я работаю в качестве PHP Tech Lead. Команда столкнулась с вопросом наведения порядков, один из которых - унификация:

Читать далее
Всего голосов 5: ↑4 и ↓1+6
Комментарии2

Будущее Web это HTML через WebSockets

Время на прочтение12 мин
Количество просмотров13K

Будущее веб архитектуры  программного обеспечения уже обретает формы и на этот раз server-side рендеринг (опять). Но есть кое-что новое,  а именно передача HTML по WebSocket.

Подход с использованием SPA(Single Page Appllication) и JSON API привел к тому, что многие команды разработки погрязли в бесконечных спорах о структуре данных и ошибках синхронизации между этими двумя слоями. Это увеличивает стоимость разработки, замедляет релизный цикл и сокращает время, которое можно было бы потратить на инновации.

Читать далее
Всего голосов 8: ↑2 и ↓6-4
Комментарии27

7 причин, по которым мы предпочли Apache Pulsar Apache Kafka

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

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

Когда вы собираетесь создать лучшую инфраструктуру службы обмена сообщениями, первым делом необходимо выбрать правильную базовую технологию обмена сообщениями. Существует множество вариантов: от различных проектов с открытым исходным кодом, таких как RabbitMQ, ActiveMQ и NATS, до проприетарных решений, таких как IBM MQ или Red Hat AMQ. И, конечно же, есть Apache Kafka, являющийся чуть ли не синонимом потоковой передачи. Но мы выбрали не Apache Kafka, мы выбрали Apache Pulsar.

Итак, почему же мы создали нашу службу обмена сообщениями с использованием Apache Pulsar? Вот семь основных причин, по которым мы выбрали Apache Pulsar вместо Apache Kafka.

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Комментарии2

Простые антенны для раций, ISM-диапазонов и др. приложений. Максимально просто о сложном. Часть 1. Теория

Время на прочтение11 мин
Количество просмотров23K

Сегодня понятие «радиосвязь» прочно вошла в нашу жизнь. Ещё 20...30 лет назад радиосвязь, в нынешнем её понимании — была уделом профессионалов, а «магия антенной техники» и вовсе являлась чем-то, вроде, закрытым знанием небольшой группы людей, закончившими профессиональные учебные заведения и потратившими на изучение отдельных направлений антенной тематики десятки лет.

За последние годы, с бурным ростом радиотехнического направления, «радиосвязь» всё больше и больше проникает в нашу жизнь, начиная от банальной радио-няни и заканчивая стремительным развитием направлением интернет-вещей. На сегодняшний день, любые устройства беспроводного доступа и ещё миллион простых безлицензионных устройств связи имеют в своем составе скрытое или явное антенное оборудование, без которого эти устройства, можно сказать, бесполезны.

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

Теория антенн - просто о сложном
Всего голосов 33: ↑33 и ↓0+33
Комментарии17

Карманная книга по TypeScript. Часть 1. Основы

Время на прочтение7 мин
Количество просмотров68K

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



С сегодняшнего дня мы начинаем серию публикаций адаптированного и дополненного перевода "Карманной книги по TypeScript".


Каждое значение в JavaScript при выполнении над ним каких-либо операций ведет себя определенным образом. Это может звучать несколько абстрактно, но, в качестве примера, попробуем выполнить некоторые операции над переменной message:


// Получаем доступ к свойству `toLowerCase`

// и вызываем его

message.toLowerCase()

// Вызываем `message`

message()

На первой строке мы получаем доступ к свойству toLowerCase и вызываем его. На второй строке мы пытаемся вызвать message.


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


  • Является ли переменная message вызываемой?
  • Имеет ли она свойство toLowerCase?
  • Если имеет, является ли toLowerCase вызываемым?
  • Если оба этих значения являются вызываемыми, то что они возвращают?

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

Читать дальше →
Всего голосов 27: ↑22 и ↓5+25
Комментарии18

Пять причин выбрать JavaScript для IoT-проекта

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

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

Согласно исследованию тенденций в области IoT, проведенному по инициативе корпорации Майкрософт, 85% респондентов в настоящее время активно внедряют IoT-технологии и три четверти планируют их внедрение. Примерно 88% респондентов считают, что Интернет вещей критически важен для развития их бизнеса.

Для тех, кто занимается разработкой IoT-технологий, выбрать язык программирования так же сложно, как выбрать тип датчиков или других устройств.

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

И здесь нам не обойтись без JavaScript!

Читать далее
Всего голосов 21: ↑6 и ↓15-8
Комментарии3

Теория категорий для программистов. На пальцах

Время на прочтение7 мин
Количество просмотров45K
Здравствуйте, коллеги.



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



Тем более приятно, что нам удалось обнаружить сравнительно свежий материал (январь 2020), служащий отличным и при этом максимально кратким введением в теорию категорий. Надеемся, что нам удастся заинтересовать вас этой темой
Читать дальше →
Всего голосов 18: ↑16 и ↓2+20
Комментарии131

1 CPU 1 Гб – а я хочу мониторинг, как у больших дядей

Время на прочтение14 мин
Количество просмотров56K


Я обожаю читать на хабре статьи про то, как устроены системы больших интернет-компаний. Кластеры SQL-серверов, монг и редисов. Тут у нас кластер ELK собирает трейсинг, там – сборка логов, здесь балансер выдает входящим запросам traceID и можно отслеживать, как запрос ходит по всем нашим микросервисам. Класс. Но, допустим, у вас совсем маленький проект и вы можете себе позволить лишь VPS минимальной конфигурации. Реально ли на ней сделать мониторинг не хуже, чем у больших проектов? Я решил – надо попробовать.
Читать дальше →
Всего голосов 64: ↑62 и ↓2+78
Комментарии82

Доработка китайского ST-Link v2: добавляем интерфейс вывода отладочной информации SWO и ногу Reset

Время на прочтение2 мин
Количество просмотров111K
image Привет, Geektimes!

Сегодня хочу рассказать про доработку паяльником китайского ST-Link v2. В него можно допаять вывод SWO для получения отладочной информации и ногу управления Reset’ом для микроконтроллеров STM32 (та нога Reset, что уже есть — для STM8). Возможно для многих это не открытие, но пусть будет информация для начинающих. Кому интересно, прошу под кат.
Читать дальше →
Всего голосов 43: ↑43 и ↓0+43
Комментарии26

Делаем ST-Link V2.1 из китайского ST-Link V2

Время на прочтение3 мин
Количество просмотров162K
Привет, Хабр!

В данной статье расскажу как модифицировать ST-Link V2 до ST-Link V2.1.

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

Кому интересно — прошу под кат.
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии103

Использование LoRa для интеграции кота в IoT

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

Увлекательные приключения кота Барсика в нидерландской деревне и его интеграция в интернет вещей с помощью LoRa радио и The Things Network.

Читать далее
Всего голосов 134: ↑134 и ↓0+134
Комментарии106

Разработчики встраиваемых систем не умеют программировать

Время на прочтение9 мин
Количество просмотров60K

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

Редко когда речь заходит об обратной проблеме, имеющей место в куда более узких кругах разработчиков встраиваемых систем, включая системы повышенной отказоустойчивости. Есть основания полагать, что ранний опыт использования MCS51/AVR/PIC оказывается настолько психически травмирующим, что многие страдальцы затем продолжают считать байты на протяжении всей карьеры, даже когда объективных причин для этого не осталось. Это, конечно, не относится к случаям, где жёсткие ценовые ограничения задают потолок ресурсов вычислительной платформы (микроконтроллера). Но это справедливо в случаях, где цена вычислительной платформы в серии незначительна по сравнению со стоимостью изделия в целом и стоимостью разработки и верификации его нетривиального ПО, как это бывает на транспорте и сложной промышленной автоматизации. Именно о последней категории систем этот пост.

Читать далее
Всего голосов 100: ↑81 и ↓19+92
Комментарии239

Оплата в телеграм боте — Платежи 2.0 — Сбербанк + Telegraf + Node.js

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

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



И в этом туториале мы создадим простого бота с Node.js на фреймворке Telegraf.js, который сможет принимать деньги с клиента и отправлять их на ваш счет через Сбербанк.

Читать дальше →
Всего голосов 9: ↑8 и ↓1+9
Комментарии11

FizzBuzz по-сениорски

Время на прочтение7 мин
Количество просмотров117K

- Добрый день, я на интервью на позицию старшего разработчика.

- Здравствуйте, давайте начнем с небольшого теста, пока я ваше CV смотрю. Напишите программу, которая выводила бы числа от 1 до, скажем, миллиарда, притом если число кратно трем, то вместо числа выводится Fizz, если кратно пяти, то Buzz, а если и трем, и пяти, то FizzBuzz.

Серьезно, FizzBuzz? Задачка для начальной школы, на сениорскую позицию? Ну ладно.

Читать далее
Всего голосов 295: ↑288 и ↓7+369
Комментарии306

Zynq. Передача данных между процессорным модулем и программируемой логикой

Время на прочтение19 мин
Количество просмотров20K
Как и обещал в предыдущей статье (Что такое Zynq? Краткий обзор), поговорим о передаче данных между процессорным модулем и программируемой логикой. В предыдущей статье упоминалось четыре способа передачи данных, в статье будут рассмотрены два способа, которые нашли большее применение. Подробности под катом. Осторожно, много картинок!
Читать дальше →
Всего голосов 15: ↑14 и ↓1+21
Комментарии13

Домашний DPI, или как бороться с провайдером его же методами

Время на прочтение16 мин
Количество просмотров289K

Долгое время я терпел ограничения РосКомНадзора и соответствующие действия провайдеров по различным ограничениям доступа к сайтам - но с определённого момента устал, и начал думать как бы сделать так, чтобы было и удобно, и быстро, и при этом с минимумом заморочек после настройки... Хочу оговориться, что цель анонимизации не ставилась.

Вообще, эта проблема имеет несколько решений... Но я решил бороться с провайдером их же методом.

...При помощи NGINX!
Всего голосов 179: ↑178 и ↓1+244
Комментарии187

Как подключить содержимое любых файлов для использования в коде C / C++

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

Задача состояла в подключении файлов: HTML, JS, CSS; без специальной подготовки. Так же неудобно подключать бинарные файлы (например картинки) конвертируя их в HEX. Так как не хотелось конвертировать в HEX или разделять на строки, искал способ подключения файла в адресное пространство программы.

Читать дальше →
Всего голосов 58: ↑57 и ↓1+82
Комментарии33

Bluetooth Low Energy: подробный гайд для начинающих

Время на прочтение16 мин
Количество просмотров78K

Создание кастомного сервиса и тем более клиента Bluetooth Low Energy – прогулка по граблям с завязанными глазами. По крайне мере так было для меня 4 года назад, когда я только начинал работать с BLE-устройствами. Сейчас почти каждый мой проект предусматривает использование этого протокола, поэтому в свое время пришлось в нем долго и мучительно разбираться. 

Разложить все по полкам помогла книга Мохаммада Афане "Intro to Bluetooth Low Energy" и серия постов на Novel Bits. Лично для меня эта книга стала настоящим открытием. Изначально я делал ее перевод на русский для своих коллег, не имеющим опыт работы с BLE. С согласия автора (огромное ему спасибо) решил опубликовать свою работу здесь. Надеюсь, перевод окажется полезным.

Это первая часть перевода (всего их будет 5), которая рассказывает, что такое BLE, ее возможности и отличия от Bluetooth Classic и описывает архитектуру протокола.

Читать далее
Всего голосов 29: ↑29 и ↓0+29
Комментарии19

Продвинутые функции гита, о которых вы, возможно, не знали

Время на прочтение9 мин
Количество просмотров19K

Git – очень мощный инструмент, который практически каждый разработчик должен использовать ежедневно, но для большинства из нас git сводится к нескольким командам: pull commit push. Однако, чтобы быть эффективным, продуктивным и обладать всей мощью git, необходимо знать ещё несколько команд и трюков. Итак, в этой статье мы исследуем функции git, которые просто запомнить, применять и настроить, но которые могут сделать ваше время с git гораздо более приятным.

Кладите этот пост в закладки, если хотите быстро научить новичка (или просто неосведомлённого человека) умело пользоваться git.

Приятного чтения!
Всего голосов 18: ↑13 и ↓5+10
Комментарии22

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность