Как коллекционировать старые компьютеры и не запутаться в них. Часть 2
Да простит меня автор первой части за то, что украл его название, но уж очень близка мне эта тема. Мы — музей Software & Computer Museum столкнулись с той же проблемой каталогизации и учета наших экспонатов. Изучив доступные музейные базы пришли к выводу, что все это как-то тяжело и некатомизируемо, решили писать свое. Интересно, что получилось? Добро пожаловать под кат.
Я не профессиональный разработчик, поэтому писал на том, с чем был хоть немного знаком — PHP+MySQL. На данный момент проект в разработке уже два года и мы достаточно активно им пользуемся для своих задач, но, к сожалению, он еще сыроват для открытой публикации.
После очередного рефакторинга пришло понимание, что нужно делать модульную структуру. Поэтому я вкратце расскажу про каждый модуль.
Модуль Hardware
Модуль Hardware нужен для учета железных штук и содержит 3 уровня вложенности. Верхний уровень — объект. Например, ZX Spectrum 48. Объект относится к определенной категории (компьютер), выпущен компанией Sinclair и относится к платформе ZX Spectrum (к этой же платформе относится и куча других клонов, которые массово у нас производились). Есть дата релиза, габариты и вес (помогают понять, сколько места ему нужно в экспозиции и как транспортировать). Также для объекта можно добавить произвольные теги.
Второй уровень вложенности — экспонат. Это уже конкретный физический ZX Spectrum. Он имеет те же свойства, что и его родительский объект (object_id в таблице), но также ряд уникальных свойств: инвентарный номер, внешнее состояние, работоспособность, локацию и свой собственный текстовый коментарий. Например, у нас их два:
Третий уровень вложенности — предмет экспоната. Экспонат может состоять из нескольких предметов, например, сам Спектрум, блок питания от него, инструкция, коробка и так далее. Для каждого такого предмета есть категория, состояние, работоспособность, локация и комментарий и фото, по которому легко опознать предмет.
Модуль Software
Софтом ситуация оказалась еще сложнее. Конечно, мы добавляем в каталог не весь софт, который есть у нас на винтах и флешках, а лишь тот, к которому есть какие-то оригинальные физические артефакты. Давайте разберем этот модуль на примере игры Pacman.
Верхний уровень — Software. Некое общее описание, например игра Pac-Man разработана Namco для аркадного автомата, геймплей всем понятен и известен. Да, описание на скрине не заполнено.
Но кроме аркады игра издавалась на кучу разных платформ, поэтому добавляется второй уровень вложенности — Release. Релиз связан с Software, но имеет свои особенности: платформу, на которой он был выпущен, свою обложку для этой платформы, дату выхода, носитель и описание. У нас есть Pacman для трех разных платформ, Atari 2600, Atari 5200 и Sega GameGear. При редактировании релиза можно чекбоксом отметить Primary Release и его обложка будет показываться в описании Software.
Дальше все как и в Hardware, для каждого релиза есть экспонаты и предметы. Например, картриджей с Pacman для Atari 5200 у нас целых 3 штуки, поэтому 3 экспоната, но все 3 карика голые, поэтому в каждом экспонате только 1 предмет — картридж. Достанем инструкцию или коробку, добавим эти предметы к одному из экспонатов.
Модуль Catalog
Этот модуль позволяет формировать списки по некоторым критериям. Сейчас у нас там производители железа (Vendors), платформы (Platforms) и разработчики ПО (Developers). Да, это не покрывает всех возможных ситуаций, так как что-то могли разрабатывать совместно, для каждого софта была компания-разработчик и издатель, но пока как есть. Для каждой сущности в каталоге есть название и логотип. Пример каталога производителей показан в шапке статьи. Так выглядит каталог платформ:
Для каждой платформы, производителя или разработчика можно посмотреть список экспонатов. Вот, например, ZX Spectrum. Список сортируется по алфавиту и приоритету категории. Категории железа имеют больший приоритет, чем категории софта.
Рядом с логотипом платформы есть иконка, позволяющая показать экспонаты в виде галереи картинок для более удобного поиска. Аналогичным образом работают каталоги производителей и разработчиков.
Модуль Search
Тут все просто. Это поиск, к сожалению, не полнотекстный, а обычный через MySQL LIKE. Ищет по названиям экспонатов, каталогу и тегам. Сначала показывает элементы каталога (первой строчкой платформа ZX Spectrum), затем экспонаты. Например, по фразе spec найдет следующее:
Модуль Calendar
Этот модуль позволяет нам не забыть какие-то важные события из истории ИТ и подготовить тематическую выставку в музее или хотя-бы публикацию в соцсетях. Вы просто добавляете название, дату события, описание и картинку. По этому модулю есть еще куча идей и недоделок. По умолчанию он показывает события на -10 дней назад и на +20 вперед.
Пока это все, что реализовано в текущей версии 0.23.
Планы на ближайшее будущее:
подготовить шаблоны для формирования списков по локации, категориям;
добавить поиск по описаниям;
переработать редактирование описания для объектов железа, ПО и релизов, добавить нормальную поддержку HTML разметки или Rich Textbox;
добавить редактор справочников (пока добавление или редактирование локаций, категорий и еще некоторых справочников производится прямо в MySQL-редакторе).
Планы на перспективу:
сделать установщик (я эту штуку даже на гитхаб пока выложить не могу, так как без детальной инструкции никто ее не запустит);
добавить хоть какой-то импорт. По игрушкам с той же MobyGames;
опубликовать и попробовать собрать комьюнити вокруг проекта.
На этом у меня все. Благодарю за внимание.