My photo
My photo

РАДЬКО ПЕТР CMTV

Возраст 22
Откуда Россия
Сфера интересов: программирование (web, android, unity), создание и развитие сетевых сообществ. Мое кредо — реальные проекты и самообразование. В этом мне помогает свободное владение английским. Люблю делиться тем, что узнал. Излагаю материал просто и наглядно в своих онлайн-учебниках. Мои проекты (на сейчас 47) описаны ниже.

Иконка

Демидович. Решения

Работает
Январь 2020

Демидович — сайт с подробными и понятными решениями задач из задачника Демидовича «Сборник задач и упражнений по математическому анализу». Цель — решить все 4462 задачи из задачника.

Зачем

Задачник Демидовича очень популярный. Он охватывает практически все темы высшей математики.

В одном только Яндексе по ключевым фразам «демидович», «демидович решения» совершается более 200 000 поисковых запросов в год.

Как видно, тема очень востребованная. Но есть одна гигантская проблема: не существует решебника на русском языке.

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

Новый дизайн

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

Первая версия Демидовича была написана за неделю. Новый дизайн же готовился полтора месяца.

Формулы на заднем фоне еле заметны и постоянно меняются. Создается красивый еле заметный эффект.

Оглавление

Проект Демидович уже не просто решебник, а удобная и продуманная электронная его версия.

В оглавлении представлены все разделы и параграфы из книжной версии задачника. Более того, в процессе решения задач внутри параграфов были выделены отдельные темы по 5 — 10 задач, которых нет в оригинальном задачнике. Внутри параграфа/темы содержатся списки задач. Причем отдельно выделяются группы задач с одинаковым условием:

Страница задачи

На разработку дизайна страницы задач ушло не меньше недели. 80% этого времени ушло на то, чтобы понять, какие элементы должны быть представлены и как представить их в наиболее удобном варианте. Перепробовали около 10 разных дизайнов. Времени ушло очень много. Но результат того стоит:

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

Кроме того, у разбора могут быть разные теги, например «решение использует предыдущие/будущие задачи», «разбор только части задачи» и так далее. С помощью тегов человек сразу может понять, стоит ли ему смотреть это решение или нет.

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

Прото-задачи

Иногда возникает ситуация, что несколько задач из задачника решаются сходным способом. Есть также полезные теормы/свойства, которые части используются в решениях. Чтобы не повторять одинаковые (часто объемные) рассуждения от задачи к задаче был создан раздел прото-задач со своим оглавлением.

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

Особенности реализации

Переписанная версия проекта базируется на той же технологии (самописный статический генератор на основе Node Js + сборка с помощью GitHub Actions), но есть и несколько крутых нововведений.

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

Для каждой задачи автоматически генерируется OpenGraph картинка с номером задачи с помощью JavaScript Canvas.

Изначальный дизайн

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

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

Если решения еще нет, выводится соответствующее сообщение:

Наконец, если введенный запрос вообще не является числом от 1 до 4462 (кол.во задач в задачнике), то выводится такое сообщение:

Страница решения разбита на блоки: условие, указание, решение и ссылки на доп. материалы:

На отдельной странице перечислены все решатели (люди, которые предложили решения):

Технология

Сайт является самописным статическим генератором. Написан на Node Js. Вместо хостинга все файлы расположены в GitHub репозитории. При любом изменении репозитория автоматически запускается процесс сборки сайта с помощью GitHub Actions.

Другими словами, нужно только добавлять текстовые файлы с решениями, а сайт будет собираться автоматически.

Наброски

Идея создать подобный проект возникла сразу после Нового Года, когда пришло время решать задачи из задачника. Первые наброски делал на бумаге. Остальные составлялись по ходу дела.

Обилие стрелок, надписей lim и прочего появлялось постепенно на протяжении 6 дней разработки. Часто приходилось останавливаться и усиленно думать (над дизайном, над структурой кода и т.д.). В эти моменты рука сама берет ручку и начинает что-то вырисовывать.