Тип Option в D

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

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

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

Читать далее

Статусный светофор с D и ESP32

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

Наличие в плате MicroPython обязательно, ведь именно он сделает большую часть работы за нас и именно им мы будем управлять через D через последовательный порт.

Читать далее

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

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

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

Читать далее

Скрытые сокровища стандартной библиотеки [перевод]

В этот раз я решил перевести для вас достаточно скромную статью за авторством Гарри Уилоби (автор блога nomad.so и создатель TkD), которую я так давно давно хотел выложить, но все не мог найти для этого временнЫе ресурсы…

И вот время перевода пришло…

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

Читать далее

Воспроизведение звука: D + FPGA = ?

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

Если вас заинтересовало что мы придумали на этот раз, то добро пожаловать в эту статью.

Читать далее

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

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

Читать далее

D на твоем смартфоне

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

Внимание: все то, будет описано далее, было с успехом проведено на моем мобильном устройстве Xiaomi Redmi 4A (наличие доступа root не является необходимым и даже может быть опасным!), соответственно, повторяя описанное, вы и только вы сами отвечаете за получившийся результат  – все делается на ваш страх и риск!

Однако, в ходе эксперимента ни один телефон не пострадал…

Читать далее

QtE5EntryPoint

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

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

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

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

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

Читать далее