Diena: зумируемая хронология 4 млн событий из Википедии
Пользователь Hacker News с ником lortex опубликовал в разделе Show HN проект Diena («хронология всего»), веб-приложение с зумируемой временной шкалой, на которой отмечено 4 миллиона событий, извлечённых из Википедии и Викиданных. Значимость событий ранжируется алгоритмом PageRank: чем важнее событие, тем выше шанс увидеть его при отдалённом масштабе. По словам автора, проект начинался как побочная разработка для приложения-дневника (журнала).
Технически приложение построено на Kotlin Multiplatform и Compose Multiplatform (кроссплатформенный UI-фреймворк JetBrains), взаимодействие клиента с сервером, через Kotlinx-RPC, база данных, PostgreSQL на сервере Hetzner. Чтобы шкала оставалась отзывчивой при любом масштабе, бэкенд не отдаёт все 4 млн записей сразу, а хранит предвычисленные уровни детализации: данные разбиты на «корзины» (buckets) по времени, от одного дня до 2^34 дней, и для каждой корзины заранее посчитаны топ-10 самых значимых событий, которые начинаются или заканчиваются в этом интервале. Масштаб шкалы логарифмический, что, по отзывам комментаторов, делает навигацию по 4 миллионам записей управляемой, а не превращает её в «стену» из точек.
В обсуждении на Hacker News пользователи указали на ошибки автоматического извлечения данных: например, почтовый индекс населённого пункта Jekadefari система по ошибке показала как событие «760251 года». Автор подтвердил проблему, объяснив её тем, что часть данных извлекается автоматически из статей Википедии, из-за чего иногда возникают подобные артефакты. Также пользователи отмечали проблемы производительности: неожиданный всплеск трафика после публикации на Hacker News создал нагрузку на бэкенд, из-за чего у части посетителей приложение зависало или показывало пустой экран до 30 секунд. Ещё одно замечание касалось точности интерфейса: при сильном отдалении, когда один год занимает на экране около одного пикселя, читать отдельные даты становится сложно; в комментариях предлагали добавить фильтрацию событий по категориям. Публикация набрала 94 балла и 35 комментариев.
Ключевые факты
- Show HN-проект Diena, зумируемая временная шкала с 4 млн событий из Википедии и Викиданных, значимость событий ранжирует PageRank
- Автор lortex начинал проект как побочную разработку для приложения-дневника
- Стек: Kotlin Multiplatform, Compose Multiplatform, Kotlinx-RPC, PostgreSQL на Hetzner; данные хранятся в предвычисленных 'корзинах' по времени, от 1 дня до 2^34 дней, с топ-10 событий в каждой
- Комментаторы нашли ошибки автоматического извлечения данных (например, почтовый индекс принят за год «760251»); автор подтвердил проблему
- После публикации на Hacker News приложение испытывало нагрузку: у части пользователей, зависания и пустой экран до 30 секунд
Почему это важно
Проект интересен не как ИИ-новость, а как пример визуализации больших массивов данных: 4 миллиона исторических событий из Википедии сведены в единую зумируемую шкалу, где PageRank решает, какие события показать при разных масштабах, а логарифмический зум и предвычисленные 'корзины' данных делают навигацию по такому объёму информации практичной без задержек на каждом уровне.
Кому это важно
Разработчикам, интересующимся кроссплатформенными технологиями JetBrains (Kotlin Multiplatform, Compose Multiplatform) и архитектурой систем визуализации больших временных рядов; людям, изучающим историю и любящим просматривать хронологии; авторам инди-проектов, как пример побочной разработки, выросшей в самостоятельный продукт.
Как это применить
Приложение доступно как обычный веб-сайт без регистрации по адресу app.everything.diena.co, можно открыть и пролистать шкалу событий с любого масштаба. Разработчикам, строящим похожие системы, полезен сам архитектурный приём: не отдавать клиенту весь массив данных, а заранее агрегировать топ-события по временным интервалам разного размера и хранить их как key-value хранилище.
Можно ли доверять
Это реально работающая демонстрация (Show HN на Hacker News, 94 балла, 35 комментариев), автор lortex лично отвечал в обсуждении и подтверждал детали реализации и известные проблемы данных. Источник данных, Википедия и Викиданные, но извлечение автоматическое, и в самом обсуждении зафиксированы конкретные ошибки экстракции, что снижает точность отдельных дат на шкале.
Риски и подводные камни
Автоматическое извлечение данных из статей Википедии даёт ошибки (пример из обсуждения, почтовый индекс населённого пункта показан как год «760251»); при сильном отдалении масштаба, когда год занимает на экране около пикселя, точность отображения дат падает; сервис держится на инфраструктуре одного разработчика (Hetzner-сервер), и всплеск трафика после публикации уже приводил к зависаниям и пустому экрану до 30 секунд, устойчивость под нагрузкой не гарантирована.
«Бэкенд отдаёт данные как key-value хранилище: для каждой временной корзины, топ-10 событий, которые начинаются или заканчиваются в этом интервале.»
— lortex, автор проекта Diena, на Hacker News