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

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

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

Вы кто такие, я вас не знаю, или Как мы делаем JWT-аутентификацию

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

Привет! Меня зовут Данил, я backend-разработчик в Doubletapp. Почти во всех наших проектах есть пользователи, которые могут войти в систему. А значит, нам почти всегда нужна авторизация. Мы используем авторизацию, построенную на JSON Web Token. Она отлично сочетает в себе простоту реализации и безопасность для приложений.

В интернете есть много разных материалов с объяснением, что такое JWT и как им пользоваться. Но большинство примеров ограничиваются выдачей токена для пользователя. В этой статье я хочу рассказать не только о том, что такое JWT, но и как можно реализовать работу с access и refresh токенами и решить сопутствующие проблемы. Будет немного теории и много практики. Присаживайтесь поудобнее, мы начинаем.

Путеводитель:

Что такое JSON Web Token?
Использование и реализация
Простая реализация JWT
Access и refresh tokens
Как отозвать токены
Доступ с нескольких устройств
Удаление старых данных
Резюмируем

Читать далее
Всего голосов 18: ↑16 и ↓2+17
Комментарии45

Делаем макросы в Rust

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

Привет, Хабр!

Rust имеет два основных типа макросов: декларативные и процедурные. Каждый из этих типов служит различным целям и предоставляет различные возможности манипуляции с кодом.

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

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

В этой статье мы как раз и рассмотрим то, как их пишут на Rust.

Начнем с декларативных!

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

Зачем в iPhone чип, который убивает FaceID

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

Разбирался я в низкоуровневой работе камер iPhone, и дошёл до FaceID — системы распознавания лиц, используемой Apple для разблокировки смартфона. И наткнулся внутри на интересную вещь: чип, единственное предназначение которого в том, чтобы вывести из строя FaceID. Навсегда.

О том, как в iPhone вообще работает FaceID, где там этот чип стоит, что именно он делает, зачем его сделали таким злым, и как в ремонте справляются с этой напастью — под катом!

Читать далее
Всего голосов 641: ↑640 и ↓1+758
Комментарии177

Linux Pipes – медленные

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

Я пишу программу для сверхбыстрого кодирования/декодирования азбуки Морзе и использую pipe для передачи данных. При этом pipe работает очень медленно. Давайте разберемся почему.

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

Роботы-несуны, одичавшие от безделья ЭВМ и разболтавшиеся дети: ИТ глазами советских карикатуристов из «Крокодила»

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

Привет, Хабр! На связи Андрей, редактор команды спецпроектов МТС Диджитал. Как-то раз мне на глаза попалась иллюстрация про ЭВМ из сатирического журнала «Крокодил». Сам журнал был направлен на широкую аудиторию — множество крутых иллюстраций из него мелькает до сих пор. Мне же стало интересно, как советские юмористы видели компьютеры и над чем тогда смеялись. Под катом — небольшая подборка таких карикатур.

Читать далее
Всего голосов 58: ↑55 и ↓3+67
Комментарии45

Как управлять своим устройством с помощью Tuya API и Tuya-cli

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

Всем привет! Недавно, я получил в использование робот пылесос Neatsvor x520. Через первые полчаса использования, а также еще получаса знакомства кота с новым жильцом я начал думать о том, что бы такого интересного сделать с пылесосом и решил взаимодействовать с ним с помощью своей самодельной системы умного дома (о ней сегодня мы говорить не будем).

Материалов на русском языке я об этом не нашел, поэтому я решил написать эту статью.

Для своего проекта я использовал Tuya api и консольный инструмент tuya‑cli, и в этой статье я расскажу как получить ключи и как управлять роботом пылесосом или любым другим устройством, что работает с Tuya, прямо из вашей консоли.

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

И так, первое что нам предстоит сделать — зарегистрироваться на сайте Tuya для получения доступа к Api.

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

Разработка сложных процессорных систем на примере модуля SMARC

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

Приветствую, Хабр! Долго не мог решиться, стоит ли писать статью по разработке устройств на процессорах. Материала и опыта по этой теме очень много, а если описывать все этапы проектирования, то нужно делать целый цикл статей. Но по факту это все равно не будет инструкцией к действию, так как в процессе разработки возникает множество нюансов. И каждый раз они индивидуальны.

Я решил описать некий шаблон (скорее один из), который, возможно, кому-то поможет в проектировании многослойных плат. Если мы говорим конкретно о разработке, то она включает в себя несколько этапов. Я буду писать об одном цикле — от получения технического задания, до передачи герберов на производство печатных плат. Затрону подготовку задания на согласование импедансов, так как это важно с самого начала трассировки. Сознательно не буду говорить о выборе компонентов, выгрузке конструкторской документации, поиске и исправлении ошибок после сборки плат и т. д.

Статья получилась большая, но, как говорится, из песни слова не выкинешь. Если вам все еще не страшно — добро пожаловать под кат!
Читать дальше →
Всего голосов 72: ↑72 и ↓0+91
Комментарии40

Каждая капля на счету или как я счетчик умным делал

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


Привет, Хабр!

В предыдущей статье я уже описывал бюджетное решение для интеграции электросчетчика в системы умного дома, где всё было реализовано на базе своего DIY устройства. Но не только из электросчетчика состоит «домашний» учет энергоресурсов, поэтому в данной статье хочу поделиться личным опытом разработки аппаратного устройства для интеграции бытовых счетчиков воды в системы домашней автоматизации. Присоединяйтесь, будет интересно!
Читать дальше →
Всего голосов 36: ↑36 и ↓0+46
Комментарии58

Моделирование ракеты для достижения максимальной высоты

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

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

Подумывая, какой бы новый проект реализовать, и обладая тягой к 3D-печати, CAD моделированию и физике, я решил спроектировать ракету для подъема на максимальную высоту в силу возможностей двигателя D-класса. Целью этого проекта было оценить практическую эффективность 3D-печати в ракетомоделировании по сравнению с существующими техниками изготовления моделей.
Читать дальше →
Всего голосов 28: ↑26 и ↓2+40
Комментарии17

Рыбачим в эфире: данные с метеостанции, номер борта, соседский звонок и другие интересные находки

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

Широкополосный радиоприемник – штука полезная. Можно получить информацию с соседского уличного термометра или авто на частоте 433 МГц, либо определить бортовой номер пролетающего самолета.

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

В статье мы расскажем о подключении «USB-свистка» RTL-SDR к контроллеру Wiren Board. С помощью софта мы переведем полученную информацию в удобные топики MQTT, затем обработаем данные.

Интересно? Ныряйте под кат

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

SimulIDE: открытый симулятор цифровых схем и микроконтроллеров

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

В этой заметке я решил рассказать о SimulIDE. Это относительно новое программное средство с открытым исходном кодом, предназначенное для моделирования 8-битных микроконтроллеров семейств AVR и PIC, а также прочих электронных схем. По интерфейсу SimulIDE напоминает Proteus. SimulIDE кроссплатформенный и работает под Linux, Windows и Mac. Далее будут рассмотрены основные возможности этого симулятора и рассказано о моих личных впечатлениях от работы с данной программой.

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

Калибровка магнитометра с помощью обобщённого фильтра Калмана

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


В настоящее время широко доступны датчики на основе магнитометров. Они позволяют легко получить направление на магнитный север (или истинный, если, конечно, вы учтёте магнитное склонение в вашей местности). Это может быть полезно для определения ориентации оси рысканья/курса беспилотных аппаратов. Одна из проблем магнитометров связана с их калибровкой, поскольку на магнитометр влияют находящиеся рядом с ним магнитотвёрдые (имеют собственное магнитное поле) и магнитомягкие (легко намагничиваются от внешнего магнитного поля, в том числе от поля Земли) материалы. Ниже я расскажу, как избавиться от влияния этих материалов и откалибровать магнитометр.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+16
Комментарии20

Миниатюрный шаговый двигатель SM1007

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

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

Что было дальше?
Всего голосов 27: ↑18 и ↓9+16
Комментарии16

Собираем балансирующий куб

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

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

Первоначальная идея этого устройства взята у исследователей Швейцарской высшей технической школы Цюриха, продемонстрировавших в этом видео свой Cubli. За последующие годы дизайн в определённых аспектах был усовершенствован. В частности, Bobrow et al (Университет Сан-Паулу) предложили улучшенную концепцию управления, уменьшающую количество IMU (блоков инерциальных датчиков) с шести до всего одного.

Я решил собрать такое устройство. Хотя идея и не нова, все предыдущие работы по этой теме в основном имели закрытые исходники. Я планирую изменить ситуацию. Это значит, что мне придётся выполнить реверс-инжиниринг и начертить всё с нуля. Результат моей работы, полностью опенсорсный (GitHub), показан в видео.
Читать дальше →
Всего голосов 121: ↑121 и ↓0+144
Комментарии42

Самодельная газонокосилка как коммерческий проект?

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров19K
Картинка youtube-канал «Machinery Nation»

Разгар лета диктует иной раз любопытные идеи, которые могут помочь прокачаться в куче технических направлений сразу: помочь закрыть гештальт на тему самореализации в качестве робототехника (ведь одно дело — участвовать в конкурсах по робототехнике, со схемами на базе breadboard-ов, и совсем другое — разработать нечто действительно полезное). А в качестве вишенки на торте это может стать интересным и с коммерческой точки зрения — разработка своей собственной роботизированной газонокосилки.
Читать дальше →
Всего голосов 33: ↑32 и ↓1+46
Комментарии35

Деплой .NET приложений для самых маленьких. Часть 2. Github Actions

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

В прошлой статье мы рассмотрели чрезвычайно популярный инструмент для выкатки приложений Jenkins. Мы подружили его через плагины с SSH, с GitHub, построили простой пайплайн с помощью Groovy. И вроде все здорово, все работает как должно, но все равно есть ощущение, что можно сделать лучше. И действительно, наш процесс можно улучшить, перестав проводить сборку на VPS.

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

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

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

Как поделить торт и не поссориться: математические протоколы справедливого деления

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

В контексте экономики и теории игр отсутствие зависти является критерием справедливого раздела, при котором каждый человек считает, что при разделе какого-либо ресурса его доля по крайней мере так же хороша, как доля любого другого человека — таким образом, он не испытывает зависти. Для n = 2 человек протокол состоит из так называемой процедуры "разделяй и выбирай":

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

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

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

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

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

На фото – Arthur Lee Samuel, пионер машинного обучения, демонстрирует возможности искусственного интеллекта и играет в шашки с собственной программой Checkers-Playing, одной из первых самообучающихся программ в мире. 1962 год.

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

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

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

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

Эмиттерный повторитель — ключ к пониманию работы транзисторных каскадов

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


Привет, эту публикацию я хочу посвятить людям, кто, как и я, любил в детстве читать журнал «Радио» и книги по электронике, но не смог сам разобраться в принципах работы усилителей на биполярных транзисторах. Тема полупроводников непроста и требует понимания многих чуждых для нашей повседневной интуиции физических процессов. Я помню момент озарения, когда я понял принцип схемотехнического решения эмиттерного повторителя, и именно с него пошло постепенное понимание, как функционируют и другие типы транзисторных каскадов. И я предполагаю, что эта тема может стать точкой входа в аналоговую электронику не только для меня.
Читать и смотреть схемы
Всего голосов 149: ↑147 и ↓2+187
Комментарии117

Шоссейное велопутешествие из Москвы в Санкт-Петербург

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

Клим Легчаков, Александр Литвинов

С развитием дорожной инфраструктуры в России всё большую популярность завоевывает внутренний туризм. Но отсутствие опробованных и подробно описанных в СМИ многодневных велосипедных маршрутов не позволяет многим людям даже начать мыслить в этом направлении. Если вы любите активный отдых и хотите испытать себя в путешествии, которое предполагает спортивный подход и хороший баланс комфорта и лишений, вам не чужда эстетика движения на алюминиевом/карбоновом коне, с удовольствием делимся проверенным семидневным шоссейным веломаршрутом, который мы проехали вдвоем из Москвы в Санкт‑Петербург в июне 2024 года.

Изучить веломаршрут
Всего голосов 28: ↑23 и ↓5+29
Комментарии42
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Backend Developer, DevOps
Lead
От 400 ₽
Linux
OOP
Git
C++
Multiple thread
C++ Boost
Python
SQL