Pull to refresh
@resetmeread⁠-⁠only

Скромный пастух нулей и единиц…

Send message

Перепрограммируем заводской датчик CO2 Zigbee от компании Tuya

Level of difficultyEasy
Reading time3 min
Views16K

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

Читать далее

Алгоритмы манипуляций с битами

Level of difficultyMedium
Reading time13 min
Views16K

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

Читать далее

Три причины не выбрасывать старый айфон: руководство по сбору артефактов после сброса устройства

Reading time13 min
Views37K

Привет, Хабр! Меня зовут Виталий, в Positive Technologies занимаюсь расследованиями инцидентов, произошедших с мобильными устройствами. Всего мобильной криминалистикой занимаюсь уже больше шести лет. За это время я исследовал много разных телефонов: от самых простых вариантов — без запароленного доступа к содержимому, до телефонов с разбитым экраном, поврежденным интерфейсным разъемом, утопленных, заблокированных и сброшенных. Много среди них было и айфонов.

Недавно, перебирая вещи в квартире, я наткнулся на старый айфон, который долгое время пылился на полке. Включив устройство, я увидел не слишком обнадеживающее сообщение: «iPhone отключен. Подключитесь к iTunes». Оно чаще всего говорит о том, что доступ к данным безвозвратно утерян. Однако кое-что исследователю всё же доступно. О том, что мне удалось откопать — рассказываю под катом.

Погрузиться

Простыми словами о методе максимального правдоподобия и информации Фишера

Level of difficultyMedium
Reading time17 min
Views14K

Всем привет👋🏻

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

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

Присаживайтесь поудобнее, заварите кофейку и запаситесь печеньки, нам предстоит интересный путь🍪

Go little rockstar⭐

Оптимизация JOIN в PostgreSQL

Level of difficultyEasy
Reading time7 min
Views14K

Хотите ускорить работу сложных SQL-запросов в PostgreSQL? 🚀В этой статье мы разберем, как правильно использовать JOIN, какие методы соединения выбирает PostgreSQL и как их оптимизировать. Узнайте, как индексы, статистика и параметры конфигурации влияют на производительность! 🔥

Читать далее

Отладка приложения, которое не хочет, чтобы его отлаживали

Level of difficultyMedium
Reading time17 min
Views7.7K
Недавно я столкнулся с приложением, которое:

  1. Блокирует прикрепление к нему отладчиков.
  2. Выполняет преждевременный выход при попытках инъецирования кода.
  3. Приводит к вылету телефона целиком, если запустить её со включённым джейлбрейком (!).

По последнему пункту: кто вообще так делает???

Всё, что мы делаем (например, выполняем моддинг TikTok, чтобы он показывал только видео с котиками, или устраняем торможения в чужих приложениях), требует возможности исследования работы приложения.

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

Похоже, это приложение стало на удивление интересной комбинацией всего перечисленного.

Намного более сложной, чем можно было бы ожидать от обычного старого виджет-приложения.
Читать дальше →

Событийный заказ: Python и Kafka

Level of difficultyEasy
Reading time7 min
Views4.1K

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

В этой статье рассмотрим, как на примере магазина котиков — кейса, где каждый заказ превращается в событие — создать событийно‑ориентированную систему обработки заказов с использованием Python, Kafka и Django REST Framework. Создадим REST API для приёма заказов, настроим Kafka‑продюсеры, консьюмеры и реализуем компенсационные транзакции по принципу Saga.

Читать далее

Калькулятор? Да его напишет кто угодно

Level of difficultyEasy
Reading time7 min
Views50K

[Прим. пер.: на Хабре уже был перевод этой статьи, но незавершённый примерно на четверть.]

Неправда.

Калькулятор должен показывать результат введённого математического выражения. А это намно-о-ого сложнее, чем кажется.

В этом посте я расскажу величайшую историю о разработке приложения-калькулятора.

На изображении выше показан калькулятор из iOS.

Заметили что-нибудь?

Он посчитал неправильно.

(10100) + 1 − (10100) равно 1, а не 0.

Android считает правильно. А причина, по которой он это делает, абсолютно безумна.

Читать далее

Русские тексты. Работа с текстами. Предварительная обработка русских текстовых данных

Level of difficultyEasy
Reading time15 min
Views2.2K

Предварительная обработка текстовых данных: ключевые этапы и методы

Текстовые данные — один из самых сложных типов данных для анализа из-за их неструктурированной природы и высокой вариативности. Чтобы превратить "сырой" текст в информацию, пригодную для машинного обучения или лингвистического анализа, требуется предварительная обработка. Этот процесс включает стандартизацию, очистку и преобразование текста, что повышает качество моделей NLP (Natural Language Processing). Рассмотрим основные этапы и методы.

Читать далее

Разбор тестового задания по электронике в Яндекс

Level of difficultyHard
Reading time9 min
Views45K

Сегодня в очередной раз наткнулся на вакансию старшего инженера - схемотехника в Яндекс. Решил, что это знак и настало время разобрать их тестовое задание. Звучит оно следующим образом:

Читать далее

Пишем простой драйвер на Rust

Reading time9 min
Views17K

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

В своей повседневной работе я по-прежнему придерживаюсь C++, так как основная её часть связана с низкоуровневым программированием систем и ядра, а из этого языка легко задействовать написанный на С Windows API и COM API.

Rust — это язык для системного программирования, то есть он может справляться с теми же задачами, что и C/C++. Основное неудобство при этом создаёт громоздкий синтаксис, необходимый для преобразования типов С в типы Rust. Но это неудобство можно преодолеть, используя подобающие обёртки и макросы.

Короче говоря, я решил попробовать написать простой и полезный драйвер WDM. Это будет Rust-версия драйвера «Booster», о котором я пишу в своей книге (Windows Kernel Programming), позволяющего изменять приоритет любого потока на любое значение.
Читать дальше →

GRUB и параметры ядра в Linux

Level of difficultyEasy
Reading time4 min
Views9.3K

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

Сегодня у нас на повестке тема GRUB в Linux. GRUB — это первый, кого видит твоя система после BIOS/UEFI. Он решает, какое ядро загружать, какие параметры передавать, и вообще, даст ли он тебе шанс на нормальный рабочий день или отправит в режим паники.

Читать далее

CSS в 2025: какие фишки теперь доступны?

Level of difficultyMedium
Reading time6 min
Views18K


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


В начале января 2025 года мне захотелось посмотреть, какие новые фишки CSS стали поддерживаться современными браузерами за прошлый год. Провести некий срез, что уже можно использовать. И тут меня посетила мысль: «А почему бы не поделиться новинками на Хабре?». Вот я и пришёл.


Сразу скажу, что эта статья — краткий обзор появившимся возможностей. Моя цель — уведомить вас. Я не буду закапываться в принцип работы и другие нюансы. По этой причине, пожалуйста, воспринимайте эту статью как список, что можно изучить в 2025 году.


Для составления списка я использовал сайт «Can I Use». Брал те новшества, которые стали «зелёными» в 2024 году. Смотрел последние версии браузеров Chrome, FireFox, Opera, Edge, Safari, iOS Safari, Samsung Internet и Android Browser.


Не буду больше тянуть. Давайте посмотрим, что я вам подготовил.

Читать дальше →

Мой первый контейнер без Docker

Level of difficultyMedium
Reading time6 min
Views42K

Технологии контейнеризации, возможно, как и у большинства из нас, плотно засели в моей голове. И казалось бы, просто пиши Dockerfile и не выпендривайся. Но всегда же хочется узнавать что‑то новое и углубляться в уже освоенные темы. По этой причине я решил разобраться в реализации контейнеров в ОС на базе ядра linux и в последствие создать свой «контейнер» через cmd.

Читать далее

Вкатиться в ИТ со страниц детского журнала — как «Мурзилка» знакомил советских детей с ЭВМ и кибернетикой

Level of difficultyEasy
Reading time8 min
Views4.4K

Привет! В этой статье погрузимся в прошлое: посмотрим, как в журнале «Мурзилка» (и других детско-подростковых советских газетах и журналах) школьников знакомили с кибернетикой. И заодно посмотрим, как эти материалы соотносились с реальным положением айтишечки в Стране Советов. Залетайте под кат, будем ностальгировать и просвещаться!

Читать далее

Опыт кастомизации LibreSDR

Level of difficultyMedium
Reading time15 min
Views7.3K

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

Узнать больше про настройку LibreSDR

Как увеличить скорость python-скриптов: C-расширения и Python/C API

Reading time19 min
Views6.7K

Во время разработки ПО мы сталкиваемся с выбором между удобством языка и его производительностью. Python завоевал популярность благодаря простоте и изящности, но когда дело доходит до низкоуровневых действий или махинаций, требующие производительность и быстроту, на помощь приходит C.

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

В этой статье я хочу рассказать о том, как интегрировать C-расширения с использованием библиотеки Python.h. Я также расскажу как создать свою python-библиотеку с C-расширениями. Также мы исследуем, как устроен Python — например, вспомним, что все является объектами. Я буду использовать poetry как менеджер рабочего окружения.

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

Не буду тянуть, начнем!

Читать далее

Разработка трёхфазного энергомонитора на базе ESP8266 с функцией автоматической проверки прибора учёта

Level of difficultyEasy
Reading time16 min
Views9.5K

Подробная инструкция по разработке трёхфазного энергомонитора на базе ESP8266 с функцией автоматической проверки прибора учёта электроэнергии.

Читать далее

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

Level of difficultyMedium
Reading time11 min
Views86K

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

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

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

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

Читать далее

Сканируем кластер Kubernetes без лишних сущностей

Reading time5 min
Views2.5K

Обеспечение безопасности инфраструктуры является неотъемлемой частью процессов DevSecOps. На сегодняшний день для работы различных приложений используются контейнеры, а для управления ими применяется Kubernetes. Когда речь заходит о безопасности контейнеров, то обычно все вспоминают о сканировании образов и поиске в них уязвимостей. Но при этом не стоит забывать и о безопасности самой среды оркестрации Kubernetes, которая управляет всеми нашими контейнерами.

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

Читать далее

Information

Rating
Does not participate
Registered
Activity