Паттерн проектирования «Команда»

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

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

Подробнее

Когда Диофант встречается с генетикой

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

Подробнее

Паттерн проектирования «Фабричный метод»

В этом рецепте мы на простом примере покажем, как легко и быстро приготовить паттерн «Фабричный метод» (в английском варианте — Factory method), а чтобы не ходить вокруг и около в качестве примера возьмем уже готовую идею из книги Э.Фримен «Паттерны проектирования» и создадим свою сеть пиццерий, которые размещаются в разных регионах.

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

Подробнее

Интерполяция по Лагранжу

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

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

Подробнее

Добавляем итерируемые системы функций в dlib

Сегодня я расскажу о том, как я осуществил перенос наработок из проекта нашей библиотеки для обработки изображений Raster and Image Processor (RIP) в библиотеку «швейцарский нож для D» dlib. В статье я немного расскажу о том, как при минимуме усилий и использованной инфраструктуре проекта rip, мне удалось подарить вторую жизнь старой идее реализации Итерируемой Системы Функций (ИФС) и перенести ее со старой dgui (об этом я уже как-то писал) в новую среду.

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

Подробнее

Соляризация изображения в dlib

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

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

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

Подробнее

Скромный обзор отладочной платы BlackIce II

Однажды я немного рассказывал про iceStick Evaluation Kit — простой и недорогой отладочный комплект, содержащий в себе небольшую микросхему программируемой логики (FPGA семейства Lattice iCE40) и скромный набор периферии для начала собственных экспериментов. Несмотря на всю продуманность и необычайную легкость работы с комплектом, я все равно для себя искал нечто более совершенное, и при этом не относящееся ни к Altera, ни к Xilinx, так как появились вполне весомые причины перехода на более мощные средства.

Таких причин было несколько: небольшая логическая емкость FPGA iCE40HX1K, отсутствие нужной мне периферии и некоторые другие. Однако самой главной причиной поиска лучшего стала все-таки периферия: представьте, как мне надоело мучаться с проводами на макетке, а также каждый раз подключать отладочный комплект к ноутбуку, боясь того, что одно резкое и неловкое движение — и переходнику USB на плате окончательный и бесповоротный конец !

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

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

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

Подробнее

Простые эксперименты по процедурной генерации

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

Но, к сожалению, ничего занимательного в голову не приходило (как ни странно, фантазия быстро закончилась), и тут я вспомнил о том, что платы с программируемой логикой больше всего подходят под цифровую обработку сигналов, таких как аудио-данные или цифровые образы изображений… Эта мысль стала прародительницей идеи о процедурной генерации, и первоначально, я планировал показать две различных по своему типу реализации и сравнить их по расходам ресурсов и времени на разработку, но как всегда бывает, реальное воплощение сильно отличается от планировавшегося изначально…

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

Подробнее

Материалы по iceStick

В этом посте я выкладываю набор документов и некоторые полезные вещи по плате iceStick: найденные в сети материалы от самой Lattice Semiconductor, распиновка платы, набор модулей для Icestudio (сделанный мной по мотивам моих исследований и экспериментов).

Пользуйтесь, а мы постараемся сделать еще что-нибудь на базе этой платы в связке с языком программирования D !

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

Подробнее

Вывод всех символов ASCII из исполняемого файла

При частой работе с различными шестнадцатеричными и бинарными файлами требуется выделить некие особые последовательности символов (сигнатуры, подписи, блоки данных), которые представлены в виде ASCII символов.

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

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

Подробнее