Давным давно, ещё в далёкой галактике, на сайте old-computers.com можно было составлять свою коллекцию старых компьютеров. Отмечать чем владеешь, в какой комплектации, что предназначено на обмен. Со временем эту возможность убрали, хотя это было довольно удобно.

Сейчас сайт old-computers.com выглядит вот так:

Сайт old-computers.com в 2020 году
Сайт old-computers.com в 2020 году

Но webarchive всё помнит. Вот как выглядел раздел с коллекционерами в 2005 году:

Страница коллекционеров из 2005 года
Страница коллекционеров из 2005 года

А вот страница коллекционера. Можно отметить что у тебя есть, в какой комплектации, работает или нет.

Вот так выглядит профиль коллекционера
Вот так выглядит профиль коллекционера

Это был неплохой способ хотя бы не забыть что именно у тебя уже есть. Я, например, однажды случайно купил второй экземпляр TI-82 на барахолке именно из-за того, что забыл что покупал такой же раньше.

После этого я завёл страничку в гугл-документах, но душа просила большего. И я стал делать

Собственный сервис для учёта коллекции

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

Данные должны были быть организованы как классы и объекты в ООП-языках, когда есть абстрактное описание компьютера (класс), к которому владельцы привязывают свои экземпляры из коллекций (объекты). Причём сами абстрактые описания ещё могут быть вложены друг в друга (ZX Spectrum -> ZX Spectrum 48k -> Нафаня).

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

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

Тот самый сайт с поездами
Тот самый сайт с поездами

Немного технических деталей

Так как я не настоящий сварщик, я взял Flask, React и Bootstrap (то есть просто то, что на слуху). Самым сложным было придумать правильную структуру базы данных. Ведь если с каталогом физических вещей всё более-менее понятно (они могут быть вложены либо друг в друга, либо в категории). То что делать с "миром идей", то есть с софтом, не очень понятно до сих пор.

Программы, вроде бы, могут существовать и сами по себе (в мире идей, ага). Но могут и храниться на носителях. Причём носитель может быть записан на фабрике, и тогда это должна быть отдельная карточка в каталоге, а может быть это просто экземпляр носителя с записанными позже программами. В общем случае это скорее отношение многие-ко-многим (ведь и Windows 95 бывает на 13 дискетах).

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

Что можно делать

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

Каждый раздел содержит карточки для всех вот этих штуковин. Иногда они разбиты на какие-то дополнительные классы. Некоторые вещи входят сразу в несколько классов (например, тот же "Нафаня" это и "ZX Spectrum 48k", и "Неофициальный клон Спектрума").

Так может выглядеть карточка компьютера
Так может выглядеть карточка компьютера

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

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

Карточка объекта из коллекции
Карточка объекта из коллекции

У объекта в коллекции пользователя атрибутов поменьше. Там можно редактировать описание, внутренний идентификатор, добавлять комментарии и фотографии. Ещё показывается в каком наборе этот объект (или если это набор, то что он включает). Ну и для носителей информации отображается записанный на них софт.

Наполнение

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

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

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

Всего этого мне показалось мало, и я стал добавлять все-все игры для Радио 86РК. Ведь их не так много, будет хороший наполненный раздел. Совсем до конца я это не довёл, но большинство игр для этой платформы уже на сайте, со скриншотами и дампами для эмулятора.

Карточка игры "Клад" для Радио 86РК
Карточка игры "Клад" для Радио 86РК

Заодно, когда добавлял в каталог Апогей БК-01, оцифровал и кассету, которая шла к нему в комплекте. Забавный факт: в коробке с моим экземпляром было две одинаковые кассеты с программами на бейсике, но не было кассеты с интерпретатором бейсика. Хочешь играть - напиши сначала интерпретатор. Суровая восьмибитная реальность.

Итоги

Получился вот такой сервис:

  • Удобная возможность отмечать состав своей коллекции.

  • Не совсем википедия. Однако в карточках можно добавлять описания в формате markdown.

  • Не совсем социальная сеть. Но если у сайта появятся пользователи, то всё может измениться.

  • Совсем не ebay. Может маркетплейс когда и появится, но это дело далёкого будущего. Хотя old-computers показывает прямо в карточке, если соответствующий компьютер можно найти на ebay.

В ближайшее время я хочу добить программы для Радио 86РК и попарсить другие каталоги программ (например, для C64).

Код проекта выложен на гитхаб. Пока он более-менее заточен на компьютерные коллекции, хотя все категории и разделы не захардкожены, а тоже хранятся в БД. Поэтому при желании можно сделать код совсем универсальным или адаптировать под те же модели поездов.