Обновить
8K+
17

Программист

13
Рейтинг
17
Подписчики
Отправить сообщение

ULBT: как искать и сортировать зашифрованные строки без полного сканирования

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели4.8K

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

В этом тексте предлагается практический подход к решению этой проблемы на базе ULBT (Unbalanced Lexicographic Bucket Tree). Предложенный подход предполагает решение следующих задач

Читать далее

Девять кнопок вместо сенсорного экрана. Как жестовый контроллер решает главную проблему умного дома

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

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

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

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

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

Читать далее

Волшебная сила макросов, или как облегчить жизнь ассемблерного программиста AVR

Время на прочтение8 мин
Охват и читатели14K

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

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

Библиотека генератора ассемблерного кода для микроконтроллеров AVR. Часть 5

Время на прочтение12 мин
Охват и читатели2.6K

← Часть 4. Программирование периферийных устройств и обработка прерываний


Библиотека генератора ассемблерного кода для микроконтроллеров AVR


Часть 5. Проектирование многопоточных приложений


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

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

Библиотека генератора ассемблерного кода для микроконтроллеров AVR. Часть 4

Время на прочтение11 мин
Охват и читатели3.9K

← Часть 3. Косвенная адресация и управление потоком исполнения
Часть 5. Проектирование многопоточных приложений. →


Библиотека генератора ассемблерного кода для микроконтроллеров AVR


Часть 4. Программирование периферийных устройств и обработка прерываний


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


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


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

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

Библиотека генератора ассемблерного кода для микроконтроллеров AVR. Часть 3

Время на прочтение10 мин
Охват и читатели4.3K

← Часть 2. Начало работы
Часть 4. Программирование периферийных устройств и обработка прерываний →


Библиотека генератора ассемблерного кода для микроконтроллеров AVR


Часть 3. Косвенная адресация и управление потоком исполнения


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

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

Библиотека генератора ассемблерного кода для микроконтроллеров AVR. Часть 2

Время на прочтение8 мин
Охват и читатели6.1K

← Часть 1. Первое знакомство


Часть 3. Косвенная адресация и управление потоком исполнения →


Библиотека генератора ассемблерного кода для микроконтроллеров AVR


Часть 2. Начало работы


Как и планировалось, в этой части рассмотрим более подробно особенности программирования с использованием библиотеки NanoRTOS. Те, кто начал чтение с этого поста, могут ознакомиться с общим описанием и возможностями библиотеки в предыдущей статье. В силу ограниченности планируемого объема публикации предполагается, что уважаемый читатель хотя бы в минимальном объеме знаком с программированием на C#, а так же имеет представление об архитектуре и программировании на языке ассемблер для контроллеров AVR серии Mega.

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

Библиотека генератора ассемблерного кода для микроконтроллеров AVR. Часть 1

Время на прочтение11 мин
Охват и читатели14K

Часть 2. Начало работы →


Библиотека генератора ассемблерного кода для микроконтроллеров AVR


Часть 1. Первое знакомство


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


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

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

Информация

В рейтинге
628-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность