Тип Option в D

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

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

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

Читать далее

Перцептивный хэш в ppmformats

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

Читать далее

Простой пример использования inline assembler в D

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

Читать далее

Пишем утилиту xd. Часть II

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

Читать далее

Взаимодействие между процессами: именованные каналы

Взаимодействие между процессами – ключевая часть многих современных приложений. Один из способов реализовать это взаимодействие – использование именованных каналов. В Windows именованные каналы представляют собой специализированный механизм IPC (Inter-Process Communication), который могут быть использованы для асинхронного или синхронного обмена данными между сервером и клиентами. В POSIX-совместимых системах аналогичная функциональность достигается через такие механизмы, как FIFO (first-in, first-out) файлы, которые предоставляют однонаправленный канал для передачи данных.

Читать далее

Использование утилиты redo со скриптами на D

Мы уже рассказывали про простую утилиту для сборки ваших проектов под названием redo. Также мы делали несколько версий данной утилиты – одна из которых написана на чистом D, а вторая – на BetterC. В этой статье покажем, как можно применять утилиту redo и писать для нее скрипты на D.

Данная статья предназначена для пользователей Linux, работа в Windows и WSL не гарантируется!

Читать далее

Пишем утилиту xd на D. Часть I.

В Plan 9, а также ее идейной наследнице Inferno OS, есть одна полезная утилита, которая называется xd. Наша команда подумала, что написание этой утилиты является довольно полезным и интересным упражнением. Давайте сделаем это на D!

Читать далее

Поточный алгоритм шифрования ChaCha

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

Читать далее

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

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

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

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

Читать далее

Бит-реверсивная перестановка в D

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

Читать далее