Как стать автором
Обновить
4
0

Пользователь

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

CG Charger BQ: как TP4056, только на стероидах (BQ25895)

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров14K


Сегодня на нашем операционном столе очередное гениальное изобретение компании ClimateGuard — девайс под не менее гениальным названием CG Charger BQ. Расшифровке того, что же всё-таки скрывается под этими загадочными буквами BQ (что означают буквы CG постоянные читатели моего блога уже знают) и посвящена эта статья.

Перед нами умная зарядка для аккумулятора и модуль питания для различных DIY устройств с возможностью микроконтроллерного управления по интерфейсу I2C. Это формальное определение назначения этого модуля, но после ознакомления с даташитом BQ25895 и экспериментов с самим модулем я могу сказать, что это невероятно продвинутая микросхема управления питанием, которая при соответствующем подходе сможет удовлетворить любые ваши прихоти по обеспечению питанием ваших гаджетов.

Правда для осмысленной работы с BQ25895 вам понадобятся пара высших образований в Computer Science (смайл) и… эта статья…
Читать дальше →
Всего голосов 42: ↑41 и ↓1+55
Комментарии41

Как работает JS: обзор движка, механизмов времени выполнения, стека вызовов

Время на прочтение6 мин
Количество просмотров205K
Популярность JavaScript растёт, его возможности используют на разных уровнях применяемых разработчиками стеков технологий и на множестве платформ. На JS делают фронтенд и бэкенд, пишут гибридные и встраиваемые приложения, а также многое другое.

Анализ статистики GitHub показывает, что по показателям активных репозиториев и push-запросов, JavaScript находится на первом месте, да и в других категориях он показывает довольно высокие позиции.


Статистические сведения по JavaScript с GitHub

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

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

Как ни странно, существует множество разработчиков, которые регулярно пишут на JavaScript, но не знают, что происходит в его недрах. Пришло время это исправить: этот материал посвящён обзору JS-движка на примере V8, механизмов времени выполнения, и стека вызовов.
Читать дальше →
Всего голосов 41: ↑33 и ↓8+25
Комментарии29

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

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


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

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

Проект рассчитан на начинающих, а также немного продолжающих.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии31

Прошивка esp32 — по воздуху, через wi-fi

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

Каждый, кто хоть раз занимался хобби-проектами на основе микроконтроллеров, знает, что такая идея проходит множество итераций, прежде чем займёт своё законное место на пыльной полке будет служить верой и правдой.
Читать дальше →
Всего голосов 16: ↑12 и ↓4+15
Комментарии12

Программирование устройств на основе модуля ESP32

Время на прочтение26 мин
Количество просмотров194K
Микроконтроллер — это интегральная схема, способная выполнять программы. Сегодня на рынке представлено множество таких моделей от самых разных производителей. Цены на эти устройства продолжают падать. Однокристальные чипы находят широкое применение в самых разнообразных сферах: от измерительных приборов до изделий развлечений и всевозможной домашней техники. В отличие от персональных компьютеров микроконтроллер сочетает в одном кристалле функции процессора и периферийных устройств, содержит оперативную память и постоянное запоминающее устройство в для хранения кода и данных, однако обладает значительно мешьшими вычислительными ресурсами. ESP32 — это микроконтроллер, разработанный компанией Espressif Systems. ESP32 представляет собой систему на кристалле с интегрированным Wi-Fi и Bluetooth контроллерами. В серии ESP32 используется ядро Tensilica Xtensa LX6. Платы с ESP32 обладают хорошей вычислительной способностью, развитой периферией и при этом весьма популярны ввиду низкой цены в диапазоне 7$ – 14$: Aliexpress, Amazon.

image
Читать дальше →
Всего голосов 25: ↑23 и ↓2+28
Комментарии5

5 экспериментов с WiFi на ESP32

Время на прочтение11 мин
Количество просмотров105K
Привет Хабр.

Платы ESP32 весьма популярны в виду низкой цены, неплохой вычислительной мощности (процессор 200МГц), развитого SDK с поддержкой как MicroPython так и Arduino IDE, наличием GPIO c поддержкой периферии (SPI, I2C и пр) и беспроводной связи (WiFi, Bluetooth). Сегодня мы посмотрим, что можно сделать на такой плате ценой всего лишь около 12$.



Мы рассмотрим разные варианты использования WiFi, от простого коннекта к сети до WiFi-сниффера. Для тестов понадобится любая плата с ESP32 (лучше с OLED-экраном, как на картинке) и Arduino IDE.

Для тех кому интересно как это работает, продолжение под катом.
Читать дальше →
Всего голосов 32: ↑30 и ↓2+41
Комментарии43

Осуществление разных способов связи между модулями esp32

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

Микроконтроллер esp32 примечателен многим, однако его наиболее известной характеристикой (которая, кстати, вполне себе «перевернула» рынок в своё время) является встроенная возможность осуществления связи по bluetooth и wi-fi. Эти способы коммуникации позволяют микроконтроллеру осуществлять как скоростную связь с устройствами, так и энергосберегающую. Именно об этих способах мы и поговорим в этой статье.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии18

Новогодний DIY «Я танцую прямо на столе». Делаем свою настольную дискотеку — зоотроп

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров8.1K

Существует весьма любопытное устройство, изготовление которого может дать много позитивных эмоций и занять свободное время в предстоящие новогодние выходные дни, особенно если у вас есть маленькие дети (но не обязательно, так как даже взрослым будет интересно повозиться с таким устройством). И называется оно зоотроп.
Читать дальше →
Всего голосов 63: ↑62 и ↓1+84
Комментарии13

Глубокий JS. Области тьмы или где живут переменные

Уровень сложностиСложный
Время на прочтение16 мин
Количество просмотров13K

В статье Глубокий JS. В память и типах и данных мы говорили о том, как выглядит структура переменной каждого конкретного типа в памяти движка V8. В этой статье предлагаю теперь рассмотреть, где именно эти переменные хранятся и каким образом попадают в память.

Речь пойдет об Абстрактном Синтаксическом Дереве (AST), типах переменных, областях видимости и выделении памяти в стэке и куче.

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

Пишем простой консольный мессенджер с end-to-end шифрованием поверх «Hidden Lake» сервисов

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров5.2K

Secpy-Chat — это простой консольный мессенджер со сквозным (end-to-end) шифрованием, работающий поверх сервисов анонимной сети Hidden Lake. За счёт своей простоты его можно редактировать, либо даже полностью переписывать на более любимую технологию или язык программирования. За счёт использования HL сервисов появляется возможность легко формировать децентрализованную коммуникацию в глобальной сети.

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

Сборка мусора в JavaScript

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров19K

Каждый из нас, хотя бы раз, слышал о сборке мусора. Мы знаем, что где-то там работает сборщик мусора, убирая за нами ненужные объекты и массивы. Но сколько из нас знают, как он устроен под капотом?

В этой статье мы заглянем под капот этого процесса, поймем, как работает память, и изучим алгоритм сборки мусора.

Погнали собирать мусор!

Собрать мусор
Всего голосов 15: ↑14 и ↓1+15
Комментарии5

Переменные окружения в Node.js: полное руководство

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

В этой статье мы рассмотрим переменные окружения (environment variables) в NodeJs с примерами. По сути, это пары ключ-значение набора данных, которые хранятся на уровне операционной системы. Они важны, поскольку отвечают за: разделение проблем, безопасность, переносимость, масштабируемость, совместимость, интероперабельность.

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

Кастомизируем VS Code для веб-разработки

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров30K

Visual Studio Code — это бесплатный, шустрый (что важно на больших проектах) и глубоко кастомизируемый редактор кода.

В статье расскажу, какие настройки и плагины VS Code использует наша команда фронтенда в KTS. Материал может быть полезен для JavaScript- и React-разработчиков, а ещё для тех, кто уже давно пользуется VS Code, но не знает о некоторых полезных плагинах и фичах для повседневного использования. 

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

Также я рассмотрел инструменты для оптимизации работы с Git, шаблоны директорий и другие возможные настройки.

Читать далее
Всего голосов 44: ↑40 и ↓4+38
Комментарии17

Удивительные клеточные автоматы: обратные и расширенные поколения

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.4K


👾, Хабр!
Давно не виделись.

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

В первых статьях цикла мы познакомились с поколениями, одной из базовых и простейших модификаций стандартной конфигурации клеточных автоматов. До этого дополнения наши клетки могли находиться лишь в двух логических состояниях – пустая и живая (0 и 1, соответственно). После же, с новым параметром G, мы добавили третье положение – старение, что значило, что клетка, после выхода из состояния 1, начинала отмирать, доходя до состояния G-1, и только после возвращая состояние к 0. Во время старения клетки не влияют на соседей, не проходят проверки выживания, увеличивая собственный счётчик состояния с каждым шагом, но они и не позволяют новым клеткам рождаться на их месте.

Дополнение поколений является самым популярным, среди всех модификаций стандартной модели, и даже, фактически, оно стало частью правила по умолчанию, наравне с B/S, используясь практически во всех прочих расширениях, хотя использование поколений, конечно, опционально.

Со временем участники сообщества начали предлагать дополнения и к этому варианту конфигурации. На поверхности лежали многие вариации, как ещё возможно изменить или переставить состояния клеток. Одним из них были и обратные поколения, a.k.a. snoitareneG, с которых мы и начнём.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии10

О JavaScript и WebAssembly

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров7.4K


Hello world!


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


Хорошо, если вы знаете JS/Node.js и хотя бы слышали о WASM и Rust.

Читать дальше →
Всего голосов 17: ↑13 и ↓4+12
Комментарии4

Интересные трюки HTML. Экстремальный минимализм

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров19K

Мы уже много говорили про оптимизацию сайтов до минимального размера, преимущества статичного HTML, а также упаковку сайта (и веб-сервера) в портативный формат одного исполняемого файла, который нативно исполняется под любой ОС.

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

Разработка браузерных игр с использованием Phaser3, React, Typescript

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров18K

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

Разработка игр это круто и весело! В данной статье разберем пошагово разработку демо небольшой браузерной игры.

Читать далее
Всего голосов 19: ↑18 и ↓1+22
Комментарии7

Как работает рендеринг в 3D-играх: сглаживание

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

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

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

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

Особенности кодировки строк в Base64 в JavaScript

Уровень сложностиСложный
Время на прочтение6 мин
Количество просмотров11K


Кодировка (encoding) и декодирование (decoding) в Base64 — распространенный способ преобразования двоичных данных в безопасный текст. Он часто используется в Data URL, таких как встроенные (inline) изображения.


Прим. пер.: с помощью data URL можно решить проблему (ошибку) отсутствующей фавиконки в браузере.


<link rel="icon" href="data:." />

Что происходит при кодировке и декодировании в base64 строк в JS? В этой статье мы рассмотрим некоторые особенности и ловушки, связанные с этими процессами.

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

GitLab Flow

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

Это перевод достаточно важной статьи про GitLab Flow, альтернативе Git flow и GitHub flow. Статья была написана в 2014, так что скриншоты успели устареть. Тем не менее сама статья более чем актуальна:




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


  • Не описан точным образом весь рабочий процесс,
  • Вносится ненужная сложность,
  • Нет связи с трекером задач (issue tracker).

Мы хотим представить вам GitLab flow — чётко определённый набор практик, решающий эти проблемы. Он объединяет в одну систему:



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

Информация

В рейтинге
5 360-й
Зарегистрирован
Активность