Pull to refresh
5
0
Богдан Остапчук @Bogdan92

web developer / pm

Send message

Kincony KC868-A8: старший брат из Ханчжоу. Часть 1. ESP32 + Ethernet

Reading time7 min
Views10K


Пока мы с вами разбирались с универсальным контроллером начального уровня на ESP32 для DIY автоматизации Kincony KC868-A4 1, 2, 3 «подъехал» его старший брат Kincony KC868-A8 — значительно более серьёзное устройство с 8-ю оптоизолированными цифровыми входами, 8-ю реле на борту для управления различным оборудованием, выведенным на плату I2C разъёмом, встроенным Ethernet-интерфейсом на LAN8270A и прочими интересными возможностями.

В этой статье мы подробно разберём устройство этого контроллера, но сразу хочется отметить, что одновременное наличие и сочетание двух интерфейсов — беспроводного Wi-Fi и проводного Ethernet делает KC868-A8 очень интересным решением — контроллер может работать по Wi-Fi или Ethernet и использовать альтернативный интерфейс как резервный или работать одновременно по двум интерфейсам (проводному и беспроводному) и взаимодействовать с разными сетями и т. д.

В общем, устраивайтесь поудобнее — вас ожидает очередное увлекательное путешествие в удивительный мир микроконтроллеров и DIY автоматизации…
Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments31

Как создать работающий Impact Map

Reading time6 min
Views7.8K

Больше 8 лет я использую Impact Map для аналитики IT-продуктов. Я довольно активно делился знаниями об этом подходе: писал статьи, выступал на конференциях с докладами и мастер-классами, рассказывал студентам в университетах и интернам в компании. Слушатели и участники мастер-классов легко улавливают, как создавать и использовать Impact Map, т.е. с теорией нет проблем. Тем не менее, я вижу большие затруднения с применением этого подхода в реальной практике, когда нужно придумать и описать идеи для сложного IT-продукта.

В этой статье я сделаю попытку объснить, каким образом формулируются идеи, которые являются самой сложной и самой ценной частью Impact Map, а также поделюсь своим видением, как наиболее эффективно воспринимать каждую из частей Impact Map.

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

Настройка VSCode для отладки китайского RISC-V SoC

Reading time8 min
Views7K

Я всей душой люблю малоизвестных производителей. Зачастую их продукты имеют фичи, недоступные у их более именитых конкурентов, по очень интересной цене (однажды меня очень выручило наличие встроенной в SoC полуамперной зарядки для аккумулятора и нескольких LDO, способных запитать всю периферию). Кроме того, сроки и условия поставки какого-нибудь Nanjing Qinheng Microelectronics могут приятно удивить разработчиков, привыкших за последние два ковидных года к конскому ценнику и 52+ неделям доставки на ST, TI, Nordic и прочие привычные вещи. Логистика становится особенно приятной, если массовое производство планируется в Китае и на площадке присутствует ваша китайская команда, способная разрулить возникающие проблемы. Да и доставка из Шеньчженя в Шеньчжень проще и предсказуемей, чем со склада глобального дистрибьютора и растаможка в России.

Погрузиться в дивный мир
Total votes 20: ↑17 and ↓3+14
Comments7

Реверс-инжиниринг железа: находим UART и извлекаем прошивку при помощи UBoot

Reading time32 min
Views23K

Введение


В этом посте мы расскажем об UART, UBoot и USB, а нашей целью станет игровой автомат Arcade 1UP Marvel. Серия автоматов Arcade 1Up предоставляет возможность за приемлемую цену приобрести домашнюю аркадную машину. С момента выпуска этих автоматов появилось множество модов, демонстрирующих, как заменить внутренние компоненты автомата для запуска стандартного ПО MAME. В посте мы исследуем оборудование автомата и узнаем, как извлечь его прошивку.

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

Kincony KC868-A4: ультимативный гайд. Часть 3: управление контроллером через Telegram-бота

Reading time9 min
Views9.8K


В предыдущей статье цикла о Kincony KC868-A4 было рассмотрено «атомарное» программирование компонентов этого контроллера, в этой статье будем разбирать более продвинутый пример работы с KC868-A4 — управление вашей (IoT) системой через интернет.

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

Ну и, конечно, когда вы добавите к основной функциональности вашего контроллера ещё и удалённое управление, то возможности вашей системы выйдут на совсем другой, более высокий, уровень.
Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments11

Основы внутреннего устройства JavaScript

Reading time6 min
Views40K
image

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

Введение


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

В этом посте мы подробно разберём эти концепции и объясним, как же работает JavaScript. Благодаря знанию этих подробностей вы сможете писать более оптимальные приложения, надлежащим образом использующие API. Если вы работаете с JavaScript относительно недавно, этот пост поможет вам понять, почему JavaScript настолько «странный» по сравнению с другими языками. А если вы опытный разработчик на JavaScript, то он позволит вам по-новому взглянуть на внутреннее устройство JavaScript Runtime, с которым вы работаете каждый день.
Читать дальше →
Total votes 35: ↑32 and ↓3+29
Comments5

Kincony KC868-A4: ультимативный гайд. Часть 2. Программирование компонентов

Reading time18 min
Views8.6K


Продолжаем ультимативный гайд по контроллеру Kincony KC868-A4, начатый в предыдущей статье. Сегодня мы подробно разберём распиновку KC868-A4 и познакомимся с принципами программирования компонентов (функциональных блоков) этого контроллера. Все примеры будут сопровождаться готовым рабочим кодом, который вы можете использовать в своих проектах.

Начнём мы с распиновки центрального модуля ESP32-S и разбора того, что и как подключено к нему инженерами компании Kincony.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments11

Как писать условия в JSX

Reading time7 min
Views24K

Добрый день, меня зовут Павел Поляков, я Principal Engineer в каршеринг компании SHARE NOW, в Гамбурге в 🇩🇪 Германии. А еще я автор телеграм канала Хороший разработчик знает, где рассказываю обо всем, что обычно знает хороший разработчик.

Сегодня я хочу поговорить про React и JSX. Почти в каждом проекте мы пишем JSX шаблоны, которые рендерятся в зависимости от условий. Делаем ли мы это правильно? Это перевод оригинальной статьи.

Читать далее
Total votes 13: ↑10 and ↓3+7
Comments3

Kincony KC868-A4: ультимативный гайд. Часть 1. Обзор и железо

Reading time9 min
Views18K


Как-то длинным зимним вечером я сидел перед монитором и просматривал интернет на предмет чего-нибудь интересного вообще и чего-нибудь интересного микроконтроллерного в частности. К сожалению, интернет ничем особенным не радовал и на глаза попадались либо уже набившие оскомину стандартные отладочные платы, либо вариации на тему «коробочка с ESP8266/ESP32 c 1–4 реле».

ESP32 c 4-я реле это, конечно, хорошо, но хотелось чего-то большего и тут мне на глаза попалась плата Kincony KC868-A4. Неплохо! подумал я и надел очки, чтобы получше её рассмотреть…
Читать дальше →
Total votes 61: ↑61 and ↓0+61
Comments55

Улучшаем дизайн React приложения с помощью Compound components

Reading time9 min
Views20K

Сегодня я хочу рассказать про один не очень популярный но очень классный паттерн в написании React приложений - Compound components.

Что это вообще такое

Compound components это подход, в котором вы объединяете несколько компонентов одной общей сущностью и общим состоянием. Отдельно от этой сущности вы их использовать не можете, тк они являются единым целым. Это как в BEM нельзя использовать E - элемент, отдельно от B - блока.

Самый наглядный пример такого подхода, который знают все фронты - это select с его option в обычном HTML.

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

Латунирование, это просто

Reading time7 min
Views36K

Эта статья - простая и подробная инструкция, как можно в домашних условиях покрыть латунью металлические детали, применяя только подручную химию. cut/ В ней, подробно описанны все ньюансы и "подводные камни". После прочтения этой статьи, у вас просто не может не получиться делать такие же превращения деталей, как на картинке.

Читать далее
Total votes 133: ↑131 and ↓2+129
Comments70

30 команд Git, необходимых для освоения интерфейса командной строки Git

Reading time9 min
Views379K

Git — самая популярная в мире распределённая система контроля версий. Линус Торвальдс, разработчик ядра ОС Linux, создал этот инструмент ещё в 2005 году, а сегодня Git активно поддерживается как проект с открытым исходным кодом. Огромное количество открытых и коммерческих проектов используют Git для контроля версий.

В данной статье перечисляются самые основные команды, которые следует знать разработчику, чтобы освоить управление репозиториями GitHub на высоком уровне. Ознакомиться с ними будет полезно как новичкам, так и опытным разработчикам.
Читать дальше →
Total votes 84: ↑69 and ↓15+54
Comments63

Пакеты Flutter, которые я использую в каждом проекте

Reading time4 min
Views14K

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

Читать далее
Total votes 13: ↑11 and ↓2+9
Comments4

Как пирамида Пола Грэма помогает отделять конструктивный фидбэк от токсичных комментариев

Reading time4 min
Views19K

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

Сегодня делюсь очень полезным инструментом - пирамида аргументации от основателя YCombinator Пола Грэма, которая помогает работать с критикой, избегать бессмысленных споров и не грустить из-за существования хейтеров.

Пирамида аргументации Грэма, описанная им в эссе «Искусство возражать» — хороший инструмент, помогающий вырваться из этого порочного круга. Она четко структурирует возможные варианты критических комментариев – и связывает их с истинными намерениями оппонента. Теперь вы всегда можете идентифицировать "ступень" и понять: стоит ли критика вашего внимания — или это грязь под ногами, которую просто надо перешагнуть.

Читать далее
Total votes 25: ↑19 and ↓6+13
Comments8

По-настоящему яркий, надёжный и безопасный источник света для растений

Reading time15 min
Views29K

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

В результате длительных сессий по курению мануалов и древних форумов, экспериментов и медитаций удалось создать светильник, ровно с теми характеристиками которые мне были нужны.

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

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

React.js: размышления об управлении состоянием и повторном рендеринге

Reading time14 min
Views16K



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


В этой статье я хочу поговорить с вами об управлении состоянием и повторном рендеринге в React.js.


Что такое состояние и зачем им управлять?


Состояние/state можно определить как любые данные, которые влияют на рендеринг/rendering компонентов. Состояние хранится в реактивных переменных/reactive variables ](в терминологии RxJS).


Управление состоянием/state management — это механизм, позволяющий создавать реактивные переменные, фиксировать изменения их значений и уведомлять об этом "заинтересованные" компоненты. Как правило, такой механизм реализуется с помощью паттерна Издатель-Подписчик/Publisher-Subscriber/Pub-Sub.


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

Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments18

«Мобилизация» сайта: внедряем AMP-страницу

Reading time4 min
Views3.1K

Для удобства отражения сайта на мобильных устройствах зачастую нужно внедрить в проект страницу Accelerated Mobile Pages (AMP). Делимся примером, как можно выполнить эту задачу, если вы работаете с приложением на React.

Начнем с того, что AMP — технология ускоренных мобильных страниц от Google с открытым исходным кодом. Этот способ позволяет оперативно загрузить веб-страницу при низкой скорости подключения к сети.

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

Именно такая задача появилась в одном из наших проектов, где стек технологий включал в себя Next.js, React, Styled components и Effector, при этом не было доступа к стору на стороне клиента. Большинство инструкций и гайдов по внедрению AMP, в свою очередь, были ориентированы на обычные html-страницы.

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

Elementary: новый взгляд на архитектуру Flutter-приложений

Reading time6 min
Views12K

Elementary — это архитектурный пакет, который создали в Surf на основе опыта разработки приложений на Flutter и лучших практик современной разработки.

Решение позволяет чётко разделить слои согласно ответственностям, сделать код прозрачнее, а тестирование проще. На примере реального приложения показываем, как использовать Elementary.

Читать далее
Total votes 13: ↑12 and ↓1+11
Comments12

Отладка React для самых маленьких

Reading time3 min
Views17K

Эта статья для тех, кто только начинает свой путь в написании больших React приложений, но все еще использует только console.log для их дебага. Мы с вами рассмотрим работу с расширением для браузера "React Developer Tools" на простом примере, который в дальнейшем вы сможете применить в своих проектах. Это расширение дает возможность просмотра дерева компонентов, их props, состояния и контекста. Также достаточно просто отловить неэффективные компоненты, которые подвергаются повторному рендерингу, посмотреть сколько на это уходит времени и построить графики для визуализации эффективности компонентов. Благодаря этой информации вы не только сможете оптимизировать ваше приложение, но и более глубоко изучить React и понять все тонкости работы с ним.

Читать далее
Total votes 5: ↑4 and ↓1+3
Comments1
1
23 ...

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity