Как стать автором
Обновить

Представлен проект по визуализации всех книг мира в ISBN-Space

Время на прочтение2 мин
Количество просмотров11K

Представлен открытый проект ISBN Visualization по визуализации более 97 млн книг со всего мира в пространстве ISBN. Код решения написан на TypeScript и Rust и опубликован на GitHub под лицензией GNU Affero General Public License. Международный стандартный книжный номер (International Standard Book Number, ISBN) — уникальный номер книжного издания, необходимый для распространения книги в торговых сетях и автоматизации работы с изданием.

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

Именно этим занимаются теневые библиотеки — собирают и делятся как можно большим количеством книг. Одна теневая библиотека, Anna's Archive (на которую я не буду давать здесь прямую ссылку из‑за проблем с авторскими правами), недавно задалась вопросом: как мы можем эффективно визуализировать 100 000 000 книг или больше одновременно?

Существует множество данных для просмотра: названия, авторы, страны, из которых поступают книги, какие издатели, сколько им лет, в скольких библиотеках они хранятся, доступны ли они в цифровом формате и т. д. Международные стандартные номера книг (ISBN) — это 13-значные номера, которые присваиваются почти всем опубликованным книгам.

Поскольку первые три цифры фиксированы (в настоящее время только 978- и ​​979-), а последняя цифра является контрольной суммой, это означает, что общее пространство ISBN13-Space имеет только два миллиарда слотов. Вот моя интерактивная визуализация этого пространства», — пояснил автор проекта под ником phiresky.

На данный момент в базе проекта отображаются 97 380 212 книг.

Архитектура проекта:

  • бэкенд: поскольку можно просто хранить наши плитки изображений как PNG, а наши деревья данных как JSON, не нужен никакой бэкенд. Нужен статический файловый хост, например Github Pages, чтобы выгрузить HTML, JS, CSS, PNG и JSON.

  • фронтенд: ThreeJS, React, MobX. Это очень удобная комбинация для создания реактивных декларативных 2D/3D-сцен с ускорением на GPU, с возможностью повторного использования компонентов.

  • Processing Scripts: набор скриптов обработки в основном написан на JS (непосредственно записывающих файлы JSON и PNG), но один из них написан на Rust, поскольку нужно прочитать исходный файл размером 250 ГБ, записывая вывод в SQLite.

Теги:
Хабы:
Всего голосов 13: ↑13 и ↓0+15
Комментарии11

Другие новости

Истории

Работа

Ближайшие события

19 марта – 28 апреля
Экспедиция «Рэйдикс»
Нижний НовгородЕкатеринбургНовосибирскВладивостокИжевскКазаньТюменьУфаИркутскЧелябинскСамараХабаровскКрасноярскОмск
22 апреля
VK Видео Meetup 2025
МоскваОнлайн
23 апреля
Meetup DevOps 43Tech
Санкт-ПетербургОнлайн
24 апреля
VK Go Meetup 2025
Санкт-ПетербургОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
14 мая
LinkMeetup
Москва
5 июня
Конференция TechRec AI&HR 2025
МоскваОнлайн
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область