Простой ГПСЧ на базе XorShift256

В этой статье, я покажу простой рецепт для того, чтобы создать собственный генератор псевдослучайных чисел (ГПСЧ) на базе известного алгоритма XorShift256.

Данный генератор потребует минимального набора операций, а также задания нескольких констант, инициализирующих ГПСЧ (параметры называются по четырем первым буквам латинского алфавита, и хранятся в виде статического массива ulong[4]). Константы для генератора надо либо подбирать эмпирически, либо брать из известных исследований или статистических проверок, но это нисколько не усложняет данный ГПСЧ, который организуется в одну функцию.

Читать далее

Idiomatic D. Юнит-тестирование с включенной оптимизацией в dub

В этом небольшом рецепте, который является очередным переводом уже ставшей классикой серии Idiomatic D, мы покажем, как можно с помощью dub собрать программу в режиме юнит-тестирования с включенной оптимизацией.

Итак, предоставим слово автору Idiomatic D.

Читать далее

Генерирование массива псевдослучайных чисел

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

Перейдем же к заполнению массива псевдослучайными числами…

Читать далее

Паттерн проектирования “Фабричный метод”

В этом рецепте мы на простом примере покажем, как легко и быстро приготовить паттерн “Фабричный метод” (в английском варианте – Factory method), а чтобы не ходить вокруг и около в качестве примера возьмем уже готовую идею из книги Э.Фримен “Паттерны проектирования” и создадим свою сеть пиццерий, которые размещаются в разных регионах.

Читать далее

Вывод всех символов ASCII из исполняемого файла

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

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

Читать далее

Паттерн проектирования “Наблюдатель”

В этом небольшом рецепте мы покажем, как легко и просто приготовить паттерн проектирования “Наблюдатель” (или в английском варианте, паттерн “Observer”), а чтобы не городить огород из надуманных примеров, мы возьмем простой и доступный пример из книги Э.Фримен “Паттерны проектирования” и создадим свою погодную станцию.

Читать далее

Алгоритм шифрования XTEA

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

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

Читать далее

Отображение шкалы для диапазона значений в консоли

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

Читать далее

QtE5EntryPoint

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

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