version – Согласование версии протокола в 9P

Данной статьей мы продолжаем серию переводов секции 5 страниц man из Inferno OS. В этой статье мы расскажем про самый первый тип сообщения Styx – сообщение version. Именно с этого сообщения начинается вся работа с сервером или клиентом, и с него начинается то, что называется транзакция (в современных терминах, это бы называлось сессией). Далее, мы дадим перевод информации из справочного руководства Inferno и покажем простой пример реализации этого типа сообщения в D.

Читать далее

0intro – Введение в файловый протокол 9P в Inferno OS

Данной статьей мы начинаем серию переводов секции 5 страниц man из Inferno OS. Эта секция посвящена целиком описанию протокола 9P, который в Inferno ранее назывался Styx, и содержит описание разных типов сообщений протокола. К D серия переводов почти не имеет отношения, но мы решили опубликовать этот материал, так как он полезен для работы с нашей библиотекой styx2000. Также, как нам кажется, описания из man’ов Inferno поможет взглянуть иными глазами на описанное ранее в статьях по Styx.

Читать далее

Использование TCP-соединения для получения среднего времени ответа сервера

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

Читать далее

Самый бесполезный шаблон

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

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

Читать далее

Реализация функции получения среднего времени ответа сервера с помощью команды ping

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

Читать далее

Новый год – новый порт. Портируем самый “крошечный” эмулятор RV32IMA в BetterC

В этой статье мы расскажем вам немного про порт самого “крошечного” в мире эмулятора архитектуры RV32IMA, оригинальный исходный код которого написан на C99. Расскажем, это конечно, сильно сказано, поскольку мы затронем лишь некоторые моменты, которые касаются портирования в BetterC и почему все-таки это не так просто, как описано во многих восторженных статьях.

Читать далее

Итоги 2022 года

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

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

В этом году нам удалось реализовать несколько необычных проектов, которые были сложны для нас но и интересны – это и библиотека для работы с протоколом Styx, и порт библиотеки для работы с форматом QOI, а также удачно законченный порт утилиты redo с C в BetterC, и конечно, одна из самых мощных – статья по криптографии на эллиптических кривых. Конечно, это еще не все, из сделанного нами в этом году, а лишь самое важное на наш взгляд. Увы или ура, год заканчивается. Всё, что мы запланировали, но не успели, скорее всего будет реализовано в будущем году, и больше всего нас радует, что проектов много, есть о чем писать, есть что реализовывать.

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

В 2023 году желаем вам, уважаемые читатели, хорошего кода и минимум ошибок компиляции, и, в целом, чтобы следующий год стал лучше уходящего! Всем мира и добра! С наступающим Новым годом!

С наилучшими пожеланиями, команда LightHouse Software.

Акварелизация изображения с помощью dlib

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

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

Читать далее

Программирование алгоритма цифровой подписи на основе эллиптических кривых

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

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

Читать далее

Генерируем случайное “очень большое число” (big integer) в промежутке от 0 до n

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

Читать далее