Тип Option в D

Иногда, находишь нечто довольно удобное, даже в том, что тебе кардинально не нравится. Так было и со мной, поскольку работая над некоторым проектом, я осознал, что мне нужно нечто такое чего нет в D, но встроено в Rust. Он мне по некоторым причинам не нравится, в частности, тем что из-за его прихода был уничтожен проект на D, но тем не менее в Rust есть здравые идеи.

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

В этой статье мы реализуем свой вариант типа Option и я немного расскажу о том, чем это может быть полезно вам.

Читать далее

По следам примера использования генетических алгоритмов от eax.me

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

Автор оригинального кода довольно известен и для его блога eax.me, мы как-то делали гостевую статью про FPGA, и именно его идею мы и хотели воспроизвести в D.

Эксперимент, а именно так можно это назвать, который будет описываться здесь связан с генетическими алгоритмами…

Читать далее

Шум Перлина в D

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

Читать далее

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

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

Читать далее

Реализуем дизеринг в dlib

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

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

Читать далее

Запускаем свой Gopher-сервер

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

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

Читать далее

Реализация поточной системы шифрования Salsa20

В этом скромном рецепте мы вам покажем, как реализовать систему поточного шифрования Salsa20 от уже знакомого нам Даниэля Бернштейна (того самого, кто придумал redo) в D. Сразу скажем, что наша реализация – это голый порт с C99 с некоторыми улучшениями, но нам показалось, что неплохо бы было поделиться с читателями этим незначительным портом.

Читать далее

Реализация хэш-функции SipHash на D

В этой статье мы покажем вам, как реализуется криптографическая хэш-функция SipHash, которая дает небольшой по размеру хэш и обладает очень высокой производительностью. Реализация данной функции есть на многих языках: C, C#, Rust и даже Haskell, но нет версии на D – и наша команда решила исправить это недоразумение…

Читать далее

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

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

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

Читать далее