Pull to refresh
2
0
Send message

Создание пользовательского интерфейса на дисплее Guition с ESPHome и библиотекой LVGL

Level of difficultyMedium
Reading time4 min
Views4.1K

Недавно вышла обновленная версия ESPHome 2024.8.0, в которой появилась библиотека LVGL версии 8.4 для создания графических интерфейсов TFT-экранов. У меня был в наличии такой дисплей, и я решил воспользоваться новыми возможностями для создания интерфейса по управлению умным домом. Моя задача заключалась в том, чтобы наполнить недорогой дисплей необходимой функциональностью.

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

А что, если записать звук на бумагу?

Level of difficultyMedium
Reading time9 min
Views13K
Картинка Freepik

Достаточно много времени назад мне пришла в голову такая странная мысль — а что, если звук записывать на бумагу?

Мне это показалось любопытным, и я стал исследовать этот вопрос, найдя целый ряд решений, самое старое из которых насчитывает чуть меньше века (что не делает его менее интересным). И вы можете попробовать повторить найденные решения самостоятельно, а также попробовать собственные силы в разработке своего решения вопроса, вынесенного в заголовок.
Читать дальше →
Total votes 49: ↑46 and ↓3+67
Comments53

Самопаркующийся авто за 500 строк кода

Level of difficultyMedium
Reading time21 min
Views19K



TLDR


В этой статье мы научим авто самостоятельно парковаться с помощью генетического алгоритма.


Мы создадим первое поколение авто с произвольными геномами, которое будет вести себя примерно так:





Примерно на сороковом поколении авто начнут понимать, что такое авто-парковка, и начнут приближаться к парковочному месту:




Читать дальше →
Total votes 63: ↑63 and ↓0+84
Comments27

Насколько быстр Javascript? Симулируем 20 миллионов частиц

Level of difficultyEasy
Reading time23 min
Views22K

Я бросил себе вызов: симулировать 1000000 (миллион) частиц на чистом Javascript на телефоне, используя только CPU и добившись 60 FPS.

Поехали.

Задача не особо сложна, если выполнять всю работу на GPU, но правило гласит, что нужно пользоваться только CPU, при этом работая на JS, так что никакого WASM.

Читать далее
Total votes 109: ↑108 and ↓1+133
Comments34

Изучение случайности в JavaScript

Level of difficultyEasy
Reading time6 min
Views3.4K

В моем посте о создании утилиты цветовой палитры в Alpine.js случайность играла большую роль: каждый образец генерировался как композиция случайно выбранных значений Hue (0..360), Saturation (0..100) и Lightness (0..100). Когда я создавал эту демонстрацию, я наткнулся на Web Crypto API. Обычно при генерации случайных значений я использую метод Math.random(), но в документации MDN упоминается, что Crypto.getRandomValues() более безопасен. В итоге я решил попробовать Crypto (с фоллбэком на модуль Math по мере необходимости). Но это заставило меня задуматься, действительно ли "более безопасный" означает "более случайный" для моего варианта использования.

В чем разница
Total votes 7: ↑7 and ↓0+10
Comments14

Flipper Zero — мнение пентестера после двух лет «полевой» эксплуатации

Reading time8 min
Views67K

«Дельфин-тамагочи» от Flipper Devices Inc. не нуждается в представлении, но хайп вокруг этого хакерского мультитула уже поутих. Теперь пользователи разделились на два лагеря: одни считают Flipper Zero крутым инструментом, другие не понимают, зачем его купили.

Один из наших пентестеров и социальных инженеров согласился поделиться впечатлениями от использования этого устройства. Он честно рассказал, полезен ли Flipper для проведения тестов на проникновение, какие задачи позволяет выполнять на объектах клиентов и стоит ли устройство своих денег. Рассмотрим плюсы и минусы девайса, с которыми приходится сталкиваться в «полевых» условиях. 

Читать далее
Total votes 121: ↑111 and ↓10+135
Comments79

Шрифт на кривых Безье на микроконтроллере

Level of difficultyMedium
Reading time6 min
Views14K

Идея

Идею подсмотрел в канале о программировании ESP32, один человек продемонстрировал часы на 6 дисплеях. Каждая цифра на своём дисплее типа 1.8" 128х160. Разработчик проекта показал источник своего вдохновения: проект Bézier Clock на Javascript разработчика Jack Frigaard. К сожалению, видимо, ориганальная страница демонстрационного проекта не сохранилась, но она точно вдохновила разных людей. Есть даже статья на хабре про это Часы на кривых Безье. Даже не спрашивая как именно это реализовано, я сразу решил делать свой проект на кривых Безье и быстро опробовал первую версию как это будет выглядеть на дисплее.

Читать далее
Total votes 67: ↑67 and ↓0+92
Comments43

Матричный шрифт с анимацией на микроконтроллере

Level of difficultyMedium
Reading time5 min
Views8.3K

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

Читать далее
Total votes 84: ↑84 and ↓0+104
Comments41

Демо City In A Bottle – система рейкастинга в 256 байтах

Level of difficultyMedium
Reading time8 min
Views3.6K

Привет всем любителям size coding, сегодня я расскажу о чём-то потрясающем: крошечном движке трассировки лучей (raycasting) и генераторе города, умещающихся в автономном файле HTML размером 256 байтов.

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

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

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

Читать далее
Total votes 41: ↑38 and ↓3+56
Comments7

«Физика для программистов» — как физтехи применяют её в приложениях. Бросок объекта под углом к горизонту

Level of difficultyEasy
Reading time4 min
Views7.9K

Данная статья входит в цикл, освещающий задачи на моделирование физических процессов на факультете МТФИ ВШПИ. Мы написали приложение на Flutter и сайт на React для моделирования броска, расскажем о нашем опыте в этой статье.

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

«Захватить флаги!»: решаем задачи с DiceCTF 2024 Quals

Level of difficultyEasy
Reading time9 min
Views2.4K

Привет, Хабр! В начале февраля команда DiceGang провела квалификацию DiceCTF 2024 Quals. Это был Jeopardy-турнир длительностью 48 часов. Он состоял всего из пяти направлений: crypto, misc, pwn, rev и web. Как специалисту по информационной безопасности, мне нравится участвовать в подобных мероприятиях. Под катом расскажу, как я решил несколько задач из последней категории.

Дисклеймер: данный материал не обучает хакингу и взлому и не призывает к совершению противозаконных действий. Все описанное ниже лишь демонстрирует, какие пробелы в безопасности встречаются в реальных веб-приложениях. И предупреждает, на что нужно обратить внимание при разработке программного обеспечения.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments0

Серьги из матрицы светодиодов

Reading time7 min
Views10K

Изначально я представлял LED Industrial Piercing [перевод на Хабре] как проект, специально рассчитанный на использование светодиодов 0201. В конечном итоге они оказались совершенно не нужны. Светодиоды 0201 слишком малы! Очевидно, я должен был двинуться глубже, поэтому целью нового проекта стало размещение как можно большего их количества на поверхности серёжки-гвоздика.

Читать далее
Total votes 68: ↑67 and ↓1+93
Comments21

Индастриал-пирсинг со светодиодами

Level of difficultyMedium
Reading time7 min
Views9K

Моя подруга носит украшения, называемые «индастриал-пирсингом» – по сути, такое украшение представляет собой штангу, продетую через два противоположных прокола в ухе.

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

Это один из проектов, которые я успел реализовать как раз перед закрытием London Hackspace. К этому моменту у меня уже год, как нет доступа к фрезерному станку, а без него просверливание отверстий в игле от шприца оказалось нетривиальной задачей.
Читать дальше →
Total votes 55: ↑52 and ↓3+73
Comments34

Самый простой способ редактировать PDF

Reading time3 min
Views115K


История сложилась так, что в 80-е годы именно PostScript стал стандартом для цифровых документов, а из него появился «портативный» PDF. Вероятно, нам ещё долго придётся жить с этим наследием типографской индустрии 20 века.

Быстро поставить подпись/печать на полученный PDF и отправить его адресату — самый типичный сценарий в современном документообороте. Практика показывает, что некоторые офисные сотрудники предпочитают распечатать PDF, расписаться от руки — и отсканировать распечатку с подписью, сводя к нулю логику электронного документооборота. Если бумажная копия нужно только для сканирования, то это совершенно бесполезная трата бумаги и времени.

Посмотрим, какие есть варианты для быстрого редактирования PDF с сохранением правок в цифровом виде.
Читать дальше →
Total votes 32: ↑29 and ↓3+35
Comments158

Обзор микроволнового датчика присутствия Hi-Link LD2410

Level of difficultyMedium
Reading time3 min
Views21K

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

Мой выбор пал на DIY микроволновый датчик Hi-Link LD2410, расскажу почему.

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

Ладья на XSS: как я хакнул chess.com детским эксплойтом

Level of difficultyMedium
Reading time10 min
Views31K

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

В этой статье я расскажу о том, как использовал свои знания по кибербезопасности для обнаружения XSS-уязвимости (Cross-Site Scripting, межсайтовый скриптинг) на крупнейшем шахматном сайте интернета со 100 миллионами участников – Chess.com. Но для начала небольшое вступление (в котором будет затронута немного менее серьёзная, но достаточно занятная, уязвимость OSRF (On-site Request Forgery, подделка запросов на сайте).
Читать дальше →
Total votes 78: ↑76 and ↓2+99
Comments14

История одной уязвимости в Google Chrome

Level of difficultyMedium
Reading time11 min
Views16K

Эта статья посвящена уязвимости, которую мне удалось обнаружить в браузере Google Chrome в конце прошлого года, а также рассказывает об истории её возникновения. Уязвимость существовала в течение продолжительного периода и была устранена 31 октября 2023 года. Компания Google оценила её в 16000$

Читать далее
Total votes 49: ↑48 and ↓1+56
Comments27

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Level of difficultyHard
Reading time10 min
Views37K
Приветствую всех!

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



Итак, в сегодняшней статье поговорим о том, как быть владельцам SDR, желающим запустить свою GSM-сеть. Узнаем, какой софт нужен, чтобы заставить её работать в прямом смысле слова за пять минут. Попутно запустим GPRS и ненадолго побываем в 2007 году. Традиционно будет много интересного.
Читать дальше →
Total votes 107: ↑107 and ↓0+107
Comments98

Важные аспекты Unicode, о которых должен знать каждый разработчик JavaScript

Level of difficultyMedium
Reading time22 min
Views9.2K


Должен признаться: на протяжении очень долгого времени я испытывал страх перед Unicode. Когда была необходимость в работе с Unicode, я предпочитал искать альтернативные пути решения, поскольку не совсем понимал, что делаю.


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


Приложив определенные усилия, прочитав кучу статей — я постепенно начал понимать что к чему, и это оказалось не так уж трудно. Хотя, некоторые статьи приходилось перечитывать раза по 3.


Как оказалось, Unicode — это универсальный и удобный стандарт, но работать с ним может быть непросто из-за множества абстрактных терминов.


Если у вас есть пробелы в понимании Unicode, то сейчас самое подходящее время их заполнить! Заварите себе вкусный чай или кофе ☕. И давайте погрузимся в удивительный мир абстракций, символов, астралов (astrals) и суррогатов (surrogates).


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


Вы также узнаете, как JavaScript взаимодействует с Unicode и какие трудности могут возникнуть на этом пути.


А также, каким образом новые функции из ECMAScript 2015 могут помочь в решении этих проблем.


Готовы? Давайте начнем!

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

Скрытые возможности элемента <input>

Level of difficultyMedium
Reading time8 min
Views19K

Элемент <input> в HTML самый интересный.

Большинство его собратьев вне зависимости от своих атрибутов ведут себя одинаково. При этом атрибут type элемента <input> может принимать 22 разных значения, которые не только меняют его поведение, но и влияют на внешний вид (зачастую в ущерб стилистике).

Элемент <input> отвечает за всё, начиная с текстового ввода и чекбоксов, заканчивая переключателями и кнопкой для сброса всех полей в форме. В этой статье я опишу не только различные типы <input>, но и сопутствующие атрибуты, о которых вы могли не знать, и которые делают этот элемент более удобным и применимым в различных ситуациях. Приступим!
Читать дальше →
Total votes 83: ↑82 and ↓1+101
Comments22
1
23 ...

Information

Rating
Does not participate
Registered
Activity