Абсолютный эзотерический минимум

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

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

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

Подробнее

Мое скромное «открытие»

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

И вот так я приступил к созданию своей функции перестановки элемента в массиве случайным образом…

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

Подробнее

Как выкачать свежие анонсы опубликованных статей блога «LightHouse Software»

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

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

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

Подробнее

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

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

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

Подробнее

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

Как-то давно, когда я изучал 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, разработка кода взаимодействия и в конце концов, разборка модуля до следующего раза…

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

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

Подробнее