Раскрутка и монетизация блога

С момента публикации последнего отчета о развитии блога прошло полтора года, за это время я написал лишь 9 новых статей (среди них два фотоотчета). Тем не менее, посещаемость блога значительно выросла – в настоящее время блог посещает более 500 уникальных … read more

Введение в логическое программирование (Prolog)

На блоге я публиковал ряд статей по логическому программированию, а также разбирал решения задач на языке Prolog. Недавно я заметил, что из всего этого могла бы получиться полноценная методичка если добавить введение. Введение написано так, чтобы после его прочтения Вы … read more

Паттерны MVC и Publish-Subscriber

Про шаблон проектирования MVC (Model-View-Controller, Модель-Представление-Контроллер) написано множество статей. Однако, периодически я все равно встречаю непонимание и вопросы: “зачем это надо и для чего все так усложнять?”. Попробую ответить на них. Кроме того, в статье описан паттерн Observer (Publish-Subscribe, наблюдатель, … read more

Поход в национальный парк Ергаки (фото)

По парку мы гуляли с 11 до 20 июля – это лучшее время для походов в Ергаки, т.к. чуть позже в горах выпадет снег и некоторые перевалы станут недоступны (как в прошлый раз). Наш маршрут можно просмотреть по карте парка … read more

SOLID принципы. Рефакторинг

Любая полезная программа постепенно изменяется, в нее вносятся новые возможности. Очевидно, что с кодом что-то не так, если для небольшого изменения приходится переписывать значительную часть системы. Под чистым кодом понимают код, который обеспечивает удобство сопровождения и безболезненность внесения изменений. Чистый … read more

Рекурсия в программировании. Анализ алгоритмов

Рекурсия – это свойство объекта подражать самому себе. Объект является рекурсивным если его части выглядят также как весь объект. Рекурсия очень широко применяется в математике и программировании: структуры данных: граф (в частности деревья и списки) можно рассматривать как совокупность отдельного … read more

Анализ сложности алгоритмов. Примеры

Алгоритм – это точное предписание, однозначно определяющее вычислительный процесс, ведущий от варьируемых начальных данных к искомому результату [1]. При разработке алгоритмов очень важно иметь возможность оценить ресурсы, необходимые для проведения вычислений, результатом оценки является функция сложности (трудоемкости). Оцениваемым ресурсом чаще … read more

Юнит-тестирование. Пример. Boost Unit Test

Разработка и поддержка программ невозможна без внесения изменений в существующий код. Однако, всякое изменение сопряжено с возможным внесением ошибок. Чем больше и сложнее проект – тем более нетривиальным образом изменения могут сказываться на работе подсистем. В связи с этим, любое … read more

Теория чистого кода. Стиль кодирования

Чистый код должен быть эффективным, простым для восприятия и сопровождения, гибким и надежным. Приведенные требования зачастую противоречат друг другу, поэтому для написания чистого кода в каждом конкретном случае надо идти на некоторый компромисс. Нередко опытные программисты пытаются сформулировать советы по … read more

Блог. Эксперименты. Монетизация

С момента публикации предыдущей статьи о блоге прошел почти год – за это время выросла посещаемость и вовлечённость пользователей. Кроме того, блог начал приносить хоть какой-то доход с рекламы (в районе 1000р в месяц), изначально я не ставил целью извлечение … read more

Паттерн Singleton. Описание. Пример использования

В статье описывается паттерн Singleton (Одиночка), рассмотрены 2 реализации и некоторые возможные модификации. Проанализированы сильные и слабые стороны шаблона. Приведен пример использования. Статья состоит из двух частей: описание шаблона, варианты реализации, проблемы. Часть должна быть понятна программистам на любых языках, … read more