Пример реализации стека и очереди

Стек — это упорядоченная коллекция элементов, добавление нового или удаление существующего элемента которой всегда происходит только с одного из её концов. Элемент, добавленный последним, будет удалён в первую очередь, а элемент, добавленный первым, в последнюю. Такой принцип организации называется «последним вошел — первым вышел» (Last-In-First-Out или LIFO).

Очередь очень похожа на стек, но, в отличие от него, элементы кладутся и забираются с разных концов. Этот принцип называется «первым вошел — первым вышел» (First-In-First-Out или FIFO). Это работает как реальная очередь или конвейер, то есть, элемент, попавший в очередь первым, первым же её и покинет.

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

Подробнее

Обработка файлов журналов с помощью D (часть II)

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

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

Подробнее

Простая реализация алгоритма шифрования BlowFish

Эта реализация была написана ради эксперимента в области реализации криптографических алгоритмов, просто для того, чтобы попробовать кое-что новое. В мою реализацию BlowFish, созданную на основе описания из книги Брюса Шнайера «Прикладная криптография» включено шифрование и дешифрование массивов байтов, строк, а также показаны простые процедуры шифрования файлов.

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

Подробнее

Обработка файлов журналов с помощью D (часть I)

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

Подробнее

Вычисление CRC32 от строки

Иногда для самых разных целей требуется вычислить контрольную сумму строки. Одним из алгоритмов её вычисления является Cyclic redundancy check (CRC) или Циклический избыточный код. CRC является практическим приложением помехоустойчивого кодирования, основанном на определённых математических свойствах циклического кода. Мы не будем останавливаться на математических подробностях, а просто напишем на D алгоритм CRC32. Читать далее →

Подробнее

Автоматическое добавление сеттеров и геттеров

Очень часто программисту необходимо добавить в класс сеттеры и/или геттеры. Иногда их бывает много, поэтому добавлять их вручную крайне лень! Поэтому, мы будем делать это автоматически с помощью «шаблонной магии». При этом, следует учесть, что поля класса/структуры должны быть строго типизированы, иначе ничего не получится, ну да это и к лучшему. Читать далее →

Подробнее

VBA и DLL на D

Для правильной работы проверьте путь до M2DLL.DLL в Declare VBA Excel!

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

А почему бы не написать DLL, подумал я, ведь раньше я уже пытался писать DLL для VBA на C++. DLL это быстро, это интересно и позволяет отвлечься от каждодневной рутины. Но, так как я давно уже всё делаю на D, то и DLL решил писать на D. В качестве путеводителя по дебрям VBA я использовал замечательную книгу Брюса Мак-Кинни «Крепкий орешек 4 visual basic» 1996 года выпуска. Книга исключительно интересная и занимательная и ни сколько не потеряла своей актуальности. Читать далее →

Подробнее

«Мир проводов» в D

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

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

Подробнее