
В данной статье мы рассмотрим простую реализацию связки алгоритма согласования ключей Диффи-Хеллман на элиптических кривых и алгоритма симметричного шифрования AES 256 с использованием библиотеки OpenSSL для организации защищённого соединения.
User
В данной статье мы рассмотрим простую реализацию связки алгоритма согласования ключей Диффи-Хеллман на элиптических кривых и алгоритма симметричного шифрования AES 256 с использованием библиотеки OpenSSL для организации защищённого соединения.
Я немного расскажу, как использую vim в работе full stack программиста, со своей колокольни, но для начала отвечу на некоторые вопросы, которые задают мне, когда узнают, что я использую vim при разработке проектов:
Зачем?
Хороший вопрос. Стоит для себя лично на него ответить. Зачем валандаться с vim, изучать кучу комбинаций клавиш и плагинов? Какой смысл, если есть vscode или pycharm или phpstorm? Жизнь коротка, стоит ли ее тратить на все это? Чтобы впечатлить кого-то, как на картинке в начале статьи? Да кого этим удивишь?
В этой статье я хочу поделиться несколькими нестандартными алгоритмами для быстрого возведения числа в степень, а также продемонстрировать их реализацию и сравнить их быстродействие в C++, C# и Java.
Сравнить точность алгоритмов можно прямо сейчас на этой странице.
В конце будет краткая памятка по тому, где и когда лучше применять какой из методов. При правильном выборе можно добиться увеличения скорости вычислений в 5 раз при погрешности ~1%, а иногда и вовсе без неё.
В данной работе рассматриваются шифры замены и табличного гаммирования. Читателю предлагается решить несколько задач из области защиты информации.
Допустим, что устройства читателя подвергаются атаке со стороны неизвестного хакера.
Нарушитель, хакер, злоумышленник не ограничивается выводом из строя устройств. Он их перепрограммирует с целью принудить владельца выполнять какие-то требования либо банального вымогательства у владельца устройств некоторой денежной суммы. Объявляет о требованиях, например, звонком по сотовому телефону и диктует условия (цену) за восстановление работоспособного состояния устройства. Информационная подсистема приборов защищена шифрами разной сложности. Нарушитель использует свои параметры этих разных шифров для затруднения владельцу самостоятельно восстановить работоспособность устройств.
Состояние вашего браузера — это как состояние кухни: если на столах валяются кастрюли, сковородки и грязные тарелки, то будет гораздо сложнее приготовить обед, чем в чистом и опрятном пространстве.
Исследование показало, что браузер с большим количеством вкладок — это стрессовая, убивающая продуктивность потеря времени. В одном исследовании 2014 года анализировалось, как плохо упорядоченные элементы на экранах компьютеров влияют на время реакции и продуктивность врачей в реанимационных отделениях. Выяснилось, что замусоренные экраны увеличивают время поиска медицинских записей, а также поиск необходимой информации в этих записях. Если врач уже находится в ситуации стресса, то отрицательные эффекты становятся ещё более выраженными.
Разумеется, большинство из нас не работает врачами или медсёстрами, отчаянно пытающимися просматривать электронные медицинские записи, пока ждёт пациент. Но у нас всё равно есть беспорядочный режим работы, при котором актуальность критически важна, даже если это просто отчёт, который нужно подготовить к 14 часам, а поиск среди пятидесяти вкладок нужного для завершения работы веб-сайта это, честно говоря, пустая трата времени.
Но как и ваша кухня или ваш стол, браузер не обязан быть неряшливым. Различные инструменты и методики помогут вам обеспечить порядок в браузере и избежать информационной перегрузки.
Глядя на бескрайнюю россыпь звезд в ночном небе, почти любой человек хоть раз задавался вопросом: интересно, мы одни во вселенной? Тема контакта с внеземным разумом давно стала классической для научной фантастики. Многих авторов интересует именно момент первой встречи, тревожная новизна и неизвестность. Чем именно они будут отличаться от нас? Сможем ли мы вообще понять друг друга?
За долгие годы на эту тему было сказано, снято и написано, мягко говоря, немало. Иногда кажется, что тема «первого контакта» и вовсе исчерпала себя. Но раз за разом находятся авторы, которые находят свежий подход и удивляют своими идеями. Вот несколько тому примеров — от классики до современных книг.
Если бы вы взглянули почти на любой файл данных в компьютере, просматривая символ за символом, то наверняка обратили бы внимание на множество повторяющихся элементов. LZW — это метод сжатия данных, который воспользовался этим повторением. Оригинальная версия метода была создана Лемпелем и Зивом в 1978 году (LZ78) и доработана Уэлчем в 1984 году, отсюда и аббревиатура LZW (Lempel, Ziv and Welch). Как и в любом адаптивном/динамическом методе сжатия, идея заключается в том, чтобы (1) начать с исходной модели, (2) читать данные по частям, (3) обновлять модель и кодировать данные по мере продвижения. LZW — алгоритм сжатия на основе "словаря".
Это означает, что вместо сведения в таблицу количества символов и построения деревьев (как при кодировании по Хаффману), LZW кодирует данные, обращаясь к словарю. Таким образом, чтобы закодировать подстроку, в выходной файл нужно записать только одно кодовое число, соответствующее индексу этой подстроки в словаре. Хотя LZW часто рассматривается в контексте сжатия текстовых файлов, его можно использовать для любого типа файлов. Однако, как правило, он лучше всего справляется с файлами где есть повторяющиеся подстроки, например, с текстовыми файлами.
В этом уроке мы научимся создавать миникарту, прокручивать экран по ней, и писать текст с клавиатуры на экран.
код:
изменение цвета у спрайтов, позволяет получить нам новый спрайт, а благодаря аппаратному ускорению, прозрачность создается гораздо быстрее чем в первом SDL
приступим к коду:
В прошлый раз мы представили вашему вниманию пару «полочников» и «напольников» от Arslab и Triangle, плюс — поделились экспертными обзорами данных моделей акустики. Сегодня смотрим на портативную колонку и ЦАПы.
Иногда нам нужно отрисовывать только часть текстуры, или иметь несколько изображений. В большинстве случаев подгружать одну картинку со множеством спрайтов экономически целесообразнее, чем подгружать множество изображений.
Для начала нужно обзавестись этим самым "mesh"-ем поверхности, или триангуляцией поверхности, полигональной сеткой, разбиением двумерного многообразия. В данном случае работа будет вестись именно с треугольной сеткой, но все ниже представленные формулы и код (если немного модифицировать), будет работать с сеткой состоящей из любых полигонов. Главное, чтобы они были малые, от этого зависит точность, чем меньше - тем лучше.
Этот текст предназначен для тех, кто только осваивает программирование. Я читаю лекции по C++ на первом курсе местного университета, и в качестве практикума предлагаю запрограммировать любую игру (не выношу проектов типа "софт бронирования книг в местной библиотеке"). Соответственно, чтобы помочь начинающим, я сделал некоторое количество заготовок, с которых можно стартовать свой проект. Например, заготовку олдскульного 3д шутера в 486 строк C++ я уже описывал, а вот тут можно посмотреть, что из неё сделали первокурсники.
В этот раз всё будет ещё проще, я хочу сделать заготовку под простейший платформер, вот так выглядит результат:
На данный момент проект содержит менее трёхсот строчек цпп:
ssloy@khronos:~/sdl2-demo/src$ cat *.cpp *.h | wc -l
296
Мой опыт показывает, что просто выложить код заготовки недостаточно. Нужно детально описать, как именно я пришёл к такому коду, ведь самый главный навык программиста — это суметь разбить сложную задачу на некоторое количество более простых подзадач, каждая из которых решается легко.
Итак, поехали!