Как стать автором
Обновить
34
0
Руслан @build_your_web

Инженер-программист

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

Как я портирую код с помощью Hebron

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

В своей предыдущей статье я упомянул Hebron - утилиту для портирования кода с C на C# или на Rust.

В этой статье хотелось бы подробно расписать - как я с ней работаю.

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

Итак, портирование осуществляется в 4 шага:

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

RabbitMQ Streams для сбора и обработки телеметрии умного дома

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

Традиционно для сценариев поточной обработки с использованием Map-Reduce рассматриваются такие решения как Hadoop/Spark, либо используются конвейерные системы (например Kafka), для которых есть возможность реализовать концепцию потоков (streams) с помощью дополнительных инструментов (в случае с Kafka это Kafka Connect (для подключения к источникам и получателям потока) и Kafka Streams для реализации Map-Reduce на потоке сообщений.

Начиная с версии 3.9 RabbitMQ анонсировал поддержку нового типа очереди, оптимизированного для поточной обработки. В этой статье мы посмотрим на основные отличия очередей RabbitMQ от классического режима очереди сообщений, а также возможные сценарии использования (с примерами кода на Go).

Читать далее
Всего голосов 14: ↑13 и ↓1+12
Комментарии1

«Я больше не могу»: 5 причин эмоционального выгорания программиста и что с этим делать

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

 
Андрей Н. начал кодить 8 лет назад, и готов был работать сутками напролет, набирая «шабашки» на выходные, а в свободное от работы время изучая новые фреймворки. Работа приносила удовольствие, он наконец-то нашел себя! Спустя 8 лет Андрей с трудом заставляет себя встать с кровати утром, работа не приносит радости, как не приносит ее ничто другое: все виды развлечений, которые развеивали ранее, больше не интересны. У Андрея эмоциональное выгорание, которое предшествует депрессии.

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

Как справиться с выгоранием: читать далее
Всего голосов 49: ↑37 и ↓12+25
Комментарии111

Настоящее суммирование интернет-каналов — OpenMPTCPRouter

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


Можно ли объединить несколько интернет-каналов в один? Вокруг этой темы куча заблуждений и мифов, даже сетевые инженеры с опытом часто не знают о том, что это возможно. В большинстве случаев, объединением каналов ошибочно называют балансировку на уровне NAT или failover. Но настоящее суммирование позволяет пустить одно единственное TCP-подключение одновременно по всем интернет-каналам, например видеотрансляцию так, чтобы при обрыве любого из интернет-каналов вещание не прерывалось.

Существуют дорогие коммерческие решения для видеотрансляций, но такие устройства стоят много килобаксов. В статье описывается настройка бесплатного, открытого пакета OpenMPTCPRouter, разбираются популярные мифы о суммировании каналов.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии24

В моём офисном фургоне шесть каналов в интернет, а скоро будет семь

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


Если работаешь на удалёнке, то нужен чертовски хороший интернет. Тем более когда твой офис в фургоне, который колесит по всей Австралии. Но лично в своём фургоне я настроил самую надёжную связь на континенте. Даже в городских офисах ни у кого нет такой избыточности каналов.
Много фотографий
Всего голосов 36: ↑35 и ↓1+34
Комментарии48

Teensy 4.1 через MCUXpresso. Часть 2. Осваиваем GPIO и UART

Время на прочтение6 мин
Количество просмотров3.4K
В прошлой статье мы начали работать с платой Teensy 4.1 не через сцепку из её «родных» среды разработки и библиотек (совместимых с Arduino), а через среду разработки и SDK, «родные» для установленного на ней микроконтроллера фирмы NXP. Мы убедились, что примеры от совершенно другой макетной платы, в принципе, могут быть запущены и на Teensy. После проделанных опытов нас уже есть USB-устройство, работающее по стандарту CDC, то есть виртуальный COM-порт.



Но пока что мы просто учились пользоваться всем готовым. Внесённая правка была чисто символической. Сегодня мы научимся работать с UART (это очень важно, так как других средств отладки у платы Teensy 4.1 нет), поиграем с GPIO, разгоним работу с ним в десятки раз, просто подвигав «мышкой», а на закуску – уберём некоторые особенности примера виртуального COM-порта, о которых я говорил в конце прошлой статьи. Приступаем.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии6

Управляем контактами GPIO из C# .NET 5 в Linux на одноплатном компьютере Banana Pi M64 (ARM64) и Cubietruck (ARM32)

Время на прочтение27 мин
Количество просмотров18K
dotnet libgpiod

Когда заходит речь про программирование на C# .NET для одноплатных компьютеров, то разговоры крутятся только в основном вокруг Raspberry Pi на Windows IoT. А как же Banana/Orange/Rock/Nano Pi, Odroid, Pine64 и другие китайские одноплатные компьютеры работающие на Linux? Так давайте это исправим, установим .NET 5 на Banana Pi BPI-M64 (ARM64) и Cubietruck (ARM32), и будем управлять контактами GPIO из C# в Linux. В первой части серии постов, подключим светодиод и кнопку для отработки прерываний и рассмотрим библиотеку Libgpiod (спойлер, библиотеку так же можно использовать в C++, Python) для доступа к контактам GPIO.
Всего голосов 37: ↑35 и ↓2+33
Комментарии10

Использование asyncio для создания асинхронных драйверов устройств на MicroPython v.1.12

Время на прочтение43 мин
Количество просмотров13K
Изученая возможности MicroPython для своих целей натолкнулся на одну из реализаций библиотеки asyncio и, после недолгой переписки с Piter Hinch — автором библиотеки, понял, что мне необходимо глубже разобраться с принципами, базовыми понятиями и типичными ошибками использования методов асинхронного программирования. Тем более, что раздел для начинающих — как раз для меня.

Летом 2020 года вышло обновление этой библиотеки, описанное в asyncio v3, при наличии времени и заинтересованности непременно дополню перевод обновленного Руководства.


Это руководство предназначено для пользователей, имеющих разный уровень опыта работы с asyncio, в том числе содержит специальный раздел для начинающих.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Rust Embedded. Разработка под процессоры Cortex-M3 на примере отладочной платы STM32F103C8T6 (Black Pill)

Время на прочтение7 мин
Количество просмотров29K
Привет! Хочу познакомить вас с проектом Rust Embedded. Он позволяет нам использовать язык программирования Rust для разработки под встроенные платформы (Embedded Linux / RTOS / Bare Metal).


В этой статье, мы рассмотрим компоненты, которые необходимы для начала разработки под микропроцессоры Cortex-M3. После этого напишем простой пример — моргание встроенным светодиодом.
Читать дальше →
Всего голосов 48: ↑47 и ↓1+46
Комментарии40

Отображение разработчикам статуса контроля качества исходного кода в SonarQube

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

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


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


Есть два способа решения:


  • Запускать скрипт проверки статуса контроля качества исходного кода в SonarQube. Если контроль качества исходного кода в SonarQube не проходит, то фейлить сборку.
  • Показывать на главной странице проекта статус контроля качества исходного кода.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии12

Как в одиночку запустить продукт, если вы разработчик: советы от создателя Laravel Тейлора Отвела. Часть 2: Поиск идеи

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


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

Откуда брать идеи для своего продукта?
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии3

От идеи к производству — Разработка IoT проекта

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

Сегодня мы пошагово разберем взлеты и падения разработки IoT. Только примеры из настоящей жизни, никаких теоретических "наверное" и много опыта. А еще ссылки на связанные статьи как бонус.

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

О столе для работы стоя, здоровье позвоночника и личной эффективности

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

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



Сначала, о том, почему стол для работы стоя — не панацея...

Читать дальше →
Всего голосов 102: ↑95 и ↓7+88
Комментарии282

Нейросеть в стекле. Не требует электропитания, распознаёт цифры

Время на прочтение2 мин
Количество просмотров39K
image

Все мы знакомы с такой способностью нейронных сетей, как распознавание рукописного текста. Основы этой технологии существуют уже много лет, но, лишь относительно недавно, скачок в области компьютерных мощностей и параллельной обработки данных позволили сделать из этой технологии очень практичное решение. Тем не менее, это практичное решение, в основе своей, будет представлено в виде цифрового компьютера многократно изменяющего биты, точно так же, как и при выполнении любой другой программы. Но в случае с нейронной сетью, разработанной исследователями из университетов Wisconsin, MIT, и Columbia, дело обстоит по-другому. Они создали стеклянную панель, не требующую собственного электропитания, но при этом способную распознавать рукописные цифры.
Читать дальше →
Всего голосов 121: ↑119 и ↓2+117
Комментарии99

Точечная маршрутизация на роутере с OpenWrt. WireGuard и DNSCrypt

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров125K
Данный материал не является призывом к действию и публикуется исключительно в образовательных целях.

UPD 14.10.2023
Эта статья немного устарела. Здесь можно узнать, как использовать готовые списки IP-адресов, что не совсем актуально. Актуальная статья с маршрутизацией по доменам: https://habr.com/ru/articles/767464/


UPD 16.10.2022


  • Исправлены конфиги для Openwrt 22
  • Добавлен community список
  • В скрипт добавлена проверка загрузки файлов. Которая решает проблему, если при старте устройства не удалось сразу загрузить списки
  • DNSCrypt изменён на DNSCrypt v2

UPD 15.03.2023


  • Добавлена логика для работы с доменами, используются список доменов из community
  • Изменена проверка загрузки файлов в скрипте
  • В Ansible playbook теперь можно выбрать определённые списки

UPD 20.04.2023
Если у вас роутер получает IPv6 адрес, то роутинг будет работать криво. Пока нет инструкции для IPv6, поэтому нужно будет его выключить на роутере.


Часть 2: Поиск и исправление ошибок


Чем отличается от подобных материалов?


  • Реализация на чистом OpenWrt
  • Использование WireGuard
  • Конфигурация роутера организуется с помощью конфигов OpenWrt, а не кучей в одном скрипте
  • Предусмотрены ситуации при рестарте сети и перезагрузке
  • Потребляет мало ресурсов роутера: подсети содержатся в ipset, а не в таблицах маршрутизации. Что позволяет развернуть это дело даже на слабых устройствах
  • Автоматизация конфигурации с помощью Ansible (не требуется python на роутере)
Читать дальше →
Всего голосов 62: ↑61 и ↓1+60
Комментарии106

WireGuard — прекрасный VPN будущего?

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

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


Проблема текущих VPN решений в том, что их тяжело правильно настроить, дорого обслуживать, а так же в них полно legacy кода сомнительного качества.


Несколько лет назад канадский специалист по информационной безопасности Jason A. Donenfeld решил, что хватит это терпеть, и начал работу над WireGuard. Сейчас WireGuard готовится к включению в состав ядра Linux, он даже получил похвалы от Линуса Торвальдса и в американском сенате.


Заявленные преимущества WireGuard над другими VPN решениями:


  • Простой в использовании.
  • Использует современную криптографию: Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF и т.д.
  • Компактный читаемый код, проще исследовать на уязвимости.
  • Высокая производительность.
  • Четкая и проработанная спецификация.

Неужели найдена серебрянная пуля? OpenVPN и IPSec пора закапывать? Я решил с этим разобраться, а заодно сделал скрипт для автоматической установки личного VPN сервера.

Читать дальше →
Всего голосов 35: ↑33 и ↓2+31
Комментарии106

Похоже, я не предприниматель

Время на прочтение7 мин
Количество просмотров46K
Для того, чтобы это понять, мне потребовалось четыре миллиона рублей (половина из которых — мои) и четыре года.

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

В этой статье я хотел бы

— поделиться сделанными выводами
— порекомендовать проект, если вы хотите присоединиться к нему в качестве разработчика/инвестора
— выложить техническую документацию, если вы захотите сделать форк

image
Всего голосов 167: ↑164 и ↓3+161
Комментарии168

Беспроводная отладка STM32

Время на прочтение3 мин
Количество просмотров11K
Хочу рассказать о необычном использовании ESP8266 в качестве посредника между STM32 и openOCD. У этого способа довольно много недостатков и его применение может быть вызвано только невозможностью использования обычного (проводного) средства отладки.

Плюс у этого способа один и он очевиден, поэтому перейду сразу к недостаткам:

  1. Требуется патчить openOCD
  2. Необходимо изменить прошивку в ESP8266
  3. Низкая скорость работы
Если все еще интересно
Всего голосов 25: ↑24 и ↓1+23
Комментарии5

Как мы попробовали DDD, CQRS и Event Sourcing и какие выводы сделали

Время на прочтение9 мин
Количество просмотров75K
Вот уже около трех лет я использую в работе принципы Spec By Example, Domain Driven Design и CQRS. За это время накопился опыт практического применения этих практик на платформе .NET. В статье я хочу поделиться нашим опытом и выводами, которые могут быть полезными командам, желающим использовать эти подходы в разработке.

Факты, цифры, код
Всего голосов 39: ↑39 и ↓0+39
Комментарии45

Домашняя автоматизация

Время на прочтение6 мин
Количество просмотров32K
Накопил немного информации с инета по схемотехнике, контроллерам, различным примерам. Как подтверждение моему небольшому развивающемуся проекту, решил написать сею статью…

Итак имеем:
Роутер dir-320( с dd-wrt, процесс установки описан на нашем личном блоге, если нужно статью дополню ссылками на блог), контроллер ATmega8535, небольшая схема управления на оптодрайвере, обьект управления ( настольная лампа, усилитель звуковой, домашний водонагреватель ), немного проводов, паяльник, свободное время.
Что хотелось бы получить: программное управление питанием обьектов, питающихся от сети ~220 В.

На Хабре был целый цикл статей про «как включать настольную лампу от LPT» и прочее… НО! Здесь предлагается более-менее продвинутая, безопасная и автономная система по управлению.

Для небезлимитов — под катом картинки.
Читать дальше →
Всего голосов 78: ↑76 и ↓2+74
Комментарии78

Информация

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