Search
Write a publication
Pull to refresh
5
0
Андрей @UncleAndy

User

Send message

Аппаратный ключ шифрования за 3$ — возможно ли это?

Reading time10 min
Views71K

Итоговый результат — ключ размером с флешку

Повсеместное шифрование и, как следствие, обилие ключей заставляет задуматься об их надежном хранении. Хранение ключей на внешних устройствах, откуда они не могут быть скопированы, уже давно считается хорошей практикой. Я расскажу о том, как за 3$ и 2 часа сделать такой девайс.
Читать дальше →

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

Reading time8 min
Views15K

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



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

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

Самое новое из этих многочисленных свидетельств связано с открытием учёными нового типа электрического сигнала, проходящего по верхним уровням коры мозга человека. В лабораторных исследованиях и на моделях уже было показано, что крохотные отсеки дендритов, отростков нейронов коры мозга, сами по себе способны выполнять сложные операции из области математической логики. Однако теперь, судя по всему, оказывается, что отдельные отсеки дендритов могут также выполнять особую операцию – "исключающее ИЛИ" (XOR) – которая, как считалась ранее, недоступна для отдельных нейронов.
Читать дальше →

SQL HowTo: пишем while-цикл прямо в запросе, или «Элементарная трехходовка»

Reading time5 min
Views39K
Периодически возникает задача поиска связанных данных по набору ключей, пока не наберем нужное суммарное количество записей.

Наиболее «жизненный» пример — вывести 20 самых старых задач, числящихся на списке сотрудников (например, в рамках одного подразделения). Для различных управленческих «дашбордов» с краткими выжимками по участкам работы похожая тема требуется достаточно часто.



В статье рассмотрим реализацию на PostgreSQL «наивного» варианта решения такой задачи, «поумнее» и совсем сложный алгоритм «цикла» на SQL с условием выхода от найденных данных, который может быть полезен как для общего развития, так и для применения в других похожих случаях.
Читать дальше →

Делаем универсальный RFID-ключ для домофонов

Reading time6 min
Views224K
Приветствую всех, кого интересует тема электронных ключей-вездеходов. Сам я, по правде сказать, давно не слежу за новостями в этой области. Но свою разработку трёхлетней давности хочу опубликовать, так как она проста в повторении и может быть кому-то интересна. Суть: вместо десятка ключей с кодами-вездеходами и просто кодами, все ключи можно носить в одном небольшом устройстве.


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

И снова капча или nginx тоже умеет вышивать

Reading time9 min
Views9.3K

Введение


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


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

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

Почему нужна инструментальная поддержка пагинации на ключах

Reading time5 min
Views21K

Всем привет! Я бэкэнд-разработчик, пишу микросервисы на Java + Spring. Работаю в одной из команд разработки внутренних продуктов в компании Тинькофф.



У нас в команде часто встает вопрос оптимизации запросов в СУБД. Всегда хочется еще чуть-чуть быстрее, но не всегда можно обойтись продуманно выстроенными индексами — приходится искать какие-то обходные пути. Во время одного из таких скитаний по сети в поисках разумных оптимизаций при работе с БД я нашел бесконечно полезный блог Маркуса Винанда, автора книги SQL Performance Explained. Это тот самый редкий вид блогов, в котором можно читать все статьи подряд.


Хочу перевести для вас небольшую статью Маркуса. Ее можно назвать в какой-то степени манифестом, который стремится привлечь внимание к старой, но до сих пор актуальной проблеме производительности операции offset по стандарту SQL.

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

PubSub почти бесплатно: особенности NOTIFY в PostgreSQL

Reading time9 min
Views23K
Если ваши микросервисы уже используют общую базу PostgreSQL для хранения данных, или ей пользуются несколько экземпляров одного сервиса на разных серверах, можно относительно «дешево» получить возможность обмена сообщениями (PubSub) между ними без интеграции в архитектуру Redis, RabbitMQ-кластера или встройки в код приложения другой MQ-системы.

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

Передавать и получать данные мы станем с помощью механизма NOTIFY/LISTEN, а модельную реализацию соберем для Node.js.



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

Очереди сообщений в PostgreSQL с использованием PgQ

Reading time4 min
Views32K


Очереди сообщений используются для выполнения: отложенных операций, взаимодействия сервисов между собой, «batch processing» и т.д. Для организации подобных очередей существуют специализированные решения, такие как: RabbitMQ, ActiveMQ, ZeroMQ и тд, но часто бывает, что в них нет большой необходимости, а их установка и поддержка причинит больше боли и страданий, чем принесет пользы. Допустим, у вас есть сервис, при регистрации в котором пользователю отправляется email для подтверждения, и, если вы используете Postgres, то вам повезло — в Postgres, почти из коробки, есть расширение PgQ, которое сделает всю грязную работу за вас.

В этой статье я расскажу об организации очередей сообщений (задач) в PostgreSQL с использованием расширения PgQ. Эта статья будет полезна, если вы еще не использовали PgQ или используете самописные очереди поверх Postgres.

Зачем вообще нужен PgQ, если можно просто создать табличку и записывать туда задачи? Казалось бы, можно, но вам придется учесть паралельный доступ к задачам, возможные ошибки (что будет, если процесс обрабатывающий задачу, упадет?), а также производительность (PgQ очень быстрый, а самописные решения, как правило, нет, особенно если транзакция в базе не закрывается во время всего выполнения задачи), но самое главное, почему на мой взгляд надо использовать PgQ, это то, что PgQ уже написан и работает, а самописное решение еще надо написать (UPD: про то, почему не стоит использовать самописные очереди, можно почитать, например, тут).
(UPD: т.к. PgQ работает поверх Postgres, все прелести транзакций можно использовать и в нем)

Но у PgQ есть один огромный минус — отсутствие документации, этот недостаток я и пытаюсь компенсировать этой статьей.
Читать дальше →

Забудьте о гомоморфном шифровании: теперь у нас есть функциональное шифрование

Reading time6 min
Views12K


Слышали ли вы о функциональном шифровании (ФШ)? Возможно, вы слышали о нём, и для себя поставили его в один ряд с гомоморфным шифрованием, что не совсем неверно, но и не до конца правильно.

Давайте сегодня с вами посмотрим на то, что такое ФШ, разберём пару примеров и то, чем оно отличается от полностью гомоморфного шифрования (ПГШ).

Давайте для начала определимся, что мы имеем в виду, говоря про ФШ. Совсем недавно, в 2010 году, Дэн Боне, Амит Сахай и Брент Уотерс формализовали понятие ФШ. Примерно ФШ можно описать так: это схема шифрования с публичным ключом, где разные ключи для расшифровки позволяют пользователю узнавать об определённых функциях зашифрованных данных.
Читать дальше →

Криптографический АРМ на базе стандартов с открытым ключом для платформы Android

Reading time17 min
Views3.6K
imageПришло время продемонстрировать как криптографический АРМ на базе стандартов с открытым ключом cryptoarmpkcs работает на одной из мобильных платформ, а именно Android.

Концепция, которая закладывалась при разработке утилиты cryptoarmpkcs, состоит в том, что пользователь должен испытывать минимум неудобств при создании и проверке электронной подписи. Именно поэтому мы предлагаем в качестве ключевого носителя для личного сертификата использовать криптографические токены PKCS#11 и/или защищенные контейнеры PKCS#12. Надо сказать, что использование PKCS#12 во многих случаях оказывается чуть ли не единственно возможным, например, когда у тех же токенов PKCS#11 не оказывается поддержки для тех или иных платформах.
Читать дальше →

ИИ, пытающийся избежать проблем, научился сложному поведению

Reading time6 min
Views34K


В обучении с подкреплением (Reinforcement Learning) часто используется любопытство в качестве мотивации для ИИ. Заставляющее его искать новые ощущения и исследовать окружающий мир. Но жизнь полна неприятных сюрпризов. Можно упасть с обрыва и с точки зрения любопытства это всегда будут очень новые и интересные ощущения. Но явно не то, к чему надо стремиться.


Разработчики из Berkeley перевернули задачу для виртуального агента с ног на голову: главной мотивирующей силой сделали не любопытство, а наоборот — стремление всеми силами избегать любой новизны. Но "ничего не делать" оказалось сложнее, чем кажется. Будучи помещенным в постоянно меняющийся окружающий мир, ИИ пришлось обучиться сложному поведению, чтобы избегать новых ощущений.

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

Краткий обзор инструментов для тестирования и бенчмаркинга блокчейнов

Reading time6 min
Views3.9K


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

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

Как работают квантовые компьютеры. Собираем паззл

Reading time33 min
Views276K


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


А недавно ко мне подошли коллеги и спросили “Ты понимаешь как работает квантовый компьютер? Можешь нам рассказать?” И тут я понял, что проблема со складыванием в голове целостной картинки есть не только у меня.


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

Получилось или нет - решать, как обычно, вам.

Метод наипростейшей стенографии. Алфавит и шрифт для неё

Reading time3 min
Views136K
Многих отпугивает слово «стенография» и есть от чего, так как под этим подразумевается сложная система, которую не только длительно надо изучать, но и постоянно применять, чтобы был от этого толк. Я же предлагаю вам ознакомиться с наипростейшим методом записи русской устной речи с помощью упрощенных значков, что конечно не повысит в 2-4 раза скорость записи как в стенографии, но точно облегчит эту запись.

Для изучения алфавита требуется 30 минут (да, это точно и проверено на ученике 2 класса обычной школы), еще около часа желательно почитать что-то на этом алфавите, ну и само письмо придется нарабатывать на скорость в течение дня.

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


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

Анализ данных блокчейн-голосования 2019 года в Московскую Городскую Думу

Reading time8 min
Views13K

Часть 1. Анализ данных блокчейн-голосования 2019 года в Московскую Городскую Думу by alexeishch
Часть 2. Параллельный аудит в ходе Электронного голосования by CryptoTyan


Мне посчастливилось участвовать в написании доклада, посвященного блокчейн-голосованию в МГД 2019 года в составе команды Романа Юнемана, и в этой статье я подробно расскажу о части связанной с анализом данных.


Несколько слов об исходных данных. Изначально ко мне в руки попал файл выгрузки из блокчейна. Уже потом, когда я сделал первичный анализ, я вышел на контакт с командой Романа Юнемана, в моём распоряжении оказались свидетельские показания наблюдателей, которые присутствовали на "избирательном участке" и фотографировали мониторы с данными о ходе голосования.

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

Как работает прототип анонимных транзакций на блокчейне Waves

Reading time5 min
Views2.3K

image


Мы внедрили прототип анонимных транзакций на базе zkSNARK, чтобы обеспечить конфиденциальные транзакции в блокчейне Waves. В своей реализации мы используем доказательную систему Groth16 на кривой BN254 и DSL circom.
Объясняем, как это работает.

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

Планирование в Go: Часть I — Планировщик ОС

Reading time10 min
Views35K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Scheduling In Go: Part I — OS Scheduler» автора Билла Кеннеди, о том, как работает внутренний планировщик Go.

Это первый пост в серии из трех частей, который даст представление о механике и семантике, лежащей в основе планировщика в Go. Этот пост посвящен планировщику операционной системы. Начнем!

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

«Kubernetes увеличил задержку в 10 раз»: кто же в этом виноват?

Reading time8 min
Views15K
Прим. перев.: Эта статья, написанная Galo Navarro, что занимает должность Principal Software Engineer в европейской компании Adevinta, — увлекательное и поучительное «расследование» в области эксплуатации инфраструктуры. Её оригинальное название было немного дополнено в переводе по причине, которую объясняет автор в самом начале.



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

Пару недель назад моя команда занималась миграцией одного микросервиса на основную платформу, включающую CI/CD, рабочую среду на основе Kubernetes, метрики и другие полезности. Переезд носил пробный характер: мы планировали взять его за основу и перенести еще примерно 150 сервисов в ближайшие месяцы. Все они отвечают за работу некоторых из крупнейших онлайн-площадок Испании (Infojobs, Fotocasa и др.).
Читать дальше →

Паскаль играет в Go. Реализация методов и интерфейсов в любительском компиляторе

Reading time3 min
Views3.8K
If I could export one feature of Go into other languages, it would be interfaces. — Russ Cox



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

Тем не менее дебри объектно-ориентированного программирования остались совершенно нетронутыми. Так почему бы компилятору не послужить теперь полигоном для экспериментов в этой области? И почему бы нам не почерпнуть вдохновение из слов Расса Кокса, вынесенных в эпиграф? Попробуем реализовать в Паскале методы и интерфейсы в стиле Go. Затея интересна хотя бы тем, что все популярные в прошлом компиляторы Паскаля (Delphi, Free Pascal) по сути заимствовали объектную модель из C++. Любопытно посмотреть, как на той же почве приживётся совсем иной подход, позаимствованный из Go. Если вы вслед за мной готовы запастись изрядной долей иронии, отбросить вопрос «Зачем?» и воспринять происходящее как игру, добро пожаловать под кат.
Читать дальше →

Kali Linux получил режим визуальной мимикрии под Windows и другие особенности версии 2019.4

Reading time4 min
Views72K
В последнем обновлении популярный среди безопасников и хакеров дистрибутив Kali Linux получил любопытный режим «Undercover» — «под прикрытием», суть которого сводится к визуальной мимикрии под графическую оболочку Windows.


Привет, я Kali Linux!

Сами разработчики объяснили необходимость новой фичи Kali достаточно просто: «Undercover» нужен для работы в публичных местах, чтобы при этом не смущать окружающих и не вызывать подозрений. Ведь что может быть безобиднее, чем человек, который ковыряется в ноутбуке под управлением Windows?
Читать дальше →

Information

Rating
Does not participate
Location
Подгорица, Подгорица, Черногория
Date of birth
Registered
Activity

Specialization

Backend Developer, Database Developer
From 500,000 ₽
Golang
Docker
PostgreSQL
Git
Nginx
High-loaded systems
Kubernetes
Linux
MySQL
Redis