Представлен проект anitabi - это карта реальных мест из японских аниме. Anitabi собирает локации прямо в Google Maps: станции, улицы, магазины, школы и целые районы, где происходили сцены из сериалов и фильмов.
Можно открыть тайтл, найти точку и буквально повторить кадр из мульта в реальной жизни. Там уже тысячи локаций по всей Японии, а база пополняется комьюнити вручную. Люди буквально сидят и сравнивают кадры из аниме с реальными улицами. А ещё у проекта открытый API.
Вы когда-нибудь задумывались о том, насколько связен наш мир? Насколько сложно пересечь границу между странами? И вообще сколько их, этих граничных переходов? А насколько хорош аэропорт Вашего города - в сколько стран или направлений из него можно улететь? А есть ли паромы и периодические водные маршруты между двумя государствами? А ходят ли поезда из одной страны в другую, или ветка уже давно заброшена?
Это кажется простой задачей, пока мы находимся в Европе или, к примеру, в Северной Америке. Но начинает быть очень интересным исследованием, когда мы переместимся в Африку, Центральную Азию или, положим, в Южную Америку. А в Карибском бассейне вдруг окажется, что этим маленькие острова и не связаны настолько хорошо между собой.
А если включить в это уравнение закрытость границ, визовые и паспортные ограничение, то внезапно окажется, что задачка-то и не из лёгких.
Именно поэтому и возник проект Портулан: portolanmap.com. Чтобы показать доступность территорий для внешнего мира. Ведь хотелось бы, чтобы границы были только у нас в головах, но на деле нам приходится считаться с границами государств и территорий.
Заглавный экран карты
Аэропорты, терминалы паромов, сеть железных дорог, включая международные. Визы, посольства, базовая информация по странам. Всё вместе и в очень залипательном формате.
Под капотом - Python-pipeline для сбора и нормализации данных, Svelte/MapLibre GL на фронтенде, статическая раздача через Cloudflare без бэкенда и баз данных.
Представлен открытый проект tokenspeed (онлайн-версия), который показывает, насколько быстро на самом деле обрабатываются разные количества токенов в секунду. Все бенчмарки локальных LLM показывают пропускную способность: «47 токенов/с на M3», «180 токенов/с на 4090», «500 токенов/с на Groq». Но если вы не видели потоковую передачу токенов с такой скоростью, эти цифры трудно понять. tokenspeed — это терминальная утилита, которая передаёт фиктивные токены с любой заданной вами скоростью, так что вы можете увидеть, как эти цифры выглядят на самом деле.
Приглашаем на вебинар: Как превратить BI в единое окно управления компанией: кейс компании «Синтека» на платформе Luxms BI
Дата: 14 мая, четверг Время: 15:00
Со временем аналитика в компании расползается: разные системы, разные подходы к расчету метрик, отчеты под отдельные задачи. В итоге. чтобы понять реальную картину, приходится собирать данные по кусочкам и спорить о цифрах вместо принятия решений.
На вебинаре команда компании «Синтека», которая использует Luxms BI не только для создания аналитических решений для своих клиентов, но и как основу внутренней управленческой аналитики, расскажет, как они подошли к решению этой задачи у себя.
🔸Расскажем о том, что обычно остается за кадром: как готовятся данные, как выравнивается логика показателей и как выстраиваются связи между функциями — от маркетинга и продукта до финансов и поддержки
🔸Обсудим, как собрать данные из разных контуров в одну систему координат и договориться о едином подходе к метрикам
🔸Разберем конкретные шаги и решения, которые помогли превратить разрозненные данные в связанную систему
Вебинар будет полезен тем, кто уже сталкивается с ограничениями разрозненной аналитики и ищет способ выстроить более целостный подход к управлению на основе данных.
Удобнейшая фича таблиц в Google Sheets — возможность фильтровать данные по различным условиям. Но есть одна проблема. Если документом пользуется несколько людей, злоупотребление этой функцией приводит к хаосу. «Кто опять изменил таблицу?»
Решение: использовать режимы фильтрации.
Создать режим фильтрации можно двумя способами:
Выбрать в главном меню «Данные / Создать режим фильтрации»
Нажать на калькулятор рядом с названием таблицы и выбрать «Создать режим фильтрации»
Плюсы такого подхода:
Режим фильтрации не меняет исходную таблицу.
Его можно сохранить под удобным именем.
На сохранённый режим можно дать ссылку.
Режимы фильтрации позволяют создать несколько представлений одной таблицы и удобно переключаться между ними.
В Excel есть похожая функция, находится в меню «Вид / Представление листа».
🏆 «Круги Громова» в Топ-100 ИТ-лидеров – прошу поддержать!
Вместе с Сергеем Громовым, основателем «Кругов Громова», мы стали номинантами рейтинга Топ-100 ИТ-лидеров GlobalCIO за вклад в российскую ИТ-отрасль — выпуск крупнейших на рынке независимых обзоров российских ИТ-систем: BI, ETL, MDM, ESB, RPA, Data Quality, Self-Service, AI и других.
Для нас это ещё одно признание экспертизы в ИТ-сообществе 💙
Поддержать можно до 4 мая — голосование доступно для участников сообщества GlobalCIO со статусом ИТ-руководителя:
Разрываем шаблоны: строим график с разрывом всего на 65 строк
Иногда нужно скрыть часть графика используя линию обрыва, чтобы показать данные с сильно различающимися значениями. Например, когда один язык программирования популярнее остальных в разы.
Самые ходовые решения этой проблемы — разорванная ось (broken axis) или отдельные бины для аномалий. Проблема в том, что в Matplotlib нет готовой «кнопки» для создания гистограммы с разрывом. Но это легко* собирается руками на уровне нескольких осей.
Вот три рабочих подхода — выбирайте под свою задачу.
Официальный пример из документации Matplotlib. 🔗 Ссылка на гайд. Отлично работает, когда выбросы зашкаливают по одной оси (X или Y). В посте разбирается как раз такой случай: гистограмма с волнистой линией обрыва.
Библиотека brokenaxes делает почти всё сама. Устанавливается стандартно через pip. Вариант для тех, кто не хочет углубляться в ручную настройку.
Логарифмическая шкала (часто — самый простой выход) Если выбросы строго положительные и отличаются на порядки, иногда достаточно двух строк: plt.xscale(«log») или plt.yscale(«log»). Никаких разрывов, никакой ручной работы — при этом график остаётся чистым и читаемым.
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.path import Path
def plot_broken_axis(
labels: list[str],
values: tuple[float, ...],
ylim_low=(0, 12),
ylim_high=(20, 25),
**kwargs,
):
"""
Строит график с разрывом оси.
Валидирует входные данные и инкапсулирует логику отрисовки.
"""
if len(labels) != len(values):
raise ValueError("Длины labels и values не совпадают")
fig, (ax_high, ax_low) = plt.subplots(
nrows=2, figsize=(7, 4), gridspec_kw={"height_ratios": [1, 2]}
)
# Настройки столбцов
kwargs.setdefault("color", "skyblue")
kwargs.setdefault("edgecolor", "black")
kwargs.setdefault("alpha", 0.85)
ax_low.bar(labels, values, **kwargs)
ax_high.bar(labels, values, **kwargs)
fig.subplots_adjust(hspace=0.0)
# Настройка осей
ax_low.set_ylim(*ylim_low)
ax_high.set_ylim(*ylim_high)
ax_high.set_title("График с разрывом")
ax_low.set_ylabel("Рейтинг в %")
ax_low.set_xlabel("Языки")
ax_high.spines["bottom"].set_visible(False)
ax_low.spines["top"].set_visible(False)
ax_high.tick_params(axis="x", bottom=False, labelbottom=False)
# Рисуем разрыв оси (волна)
offset, n_points = 0.03, 33
pts = np.linspace(-offset, 1 + offset, n_points)
wave = np.array([1 + (0, offset, 0, -offset)[i % 4] for i in range(n_points)])
path = Path(list(zip(pts, wave)), [Path.MOVETO] + [Path.CURVE3] * (n_points - 1))
opts = dict(transform=ax_low.transAxes, clip_on=False, zorder=10)
ax_low.add_patch(mpatches.PathPatch(path, lw=6, **opts))
ax_low.add_patch(mpatches.PathPatch(path, lw=3, edgecolor="white", **opts))
return fig
if __name__ == "__main__":
langs = ["Python", "C", "C++", "Asm"]
pops = (21.8, 11.1, 8.6, 1.1)
# Стиль xkcd
with plt.xkcd(scale=1, length=300, randomness=30):
plt.rcParams["font.family"] = "Comic Sans MS"
# Вызов функции
fig = plot_broken_axis(langs, pops)
plt.show()
5 человек, 1 300 дашбордов, 2 200 пользователей в месяц. Как не сойти с ума
В Уралсибе self-service BI вышел на масштаб, который сложно представить: 12 000 датасетов, 200+ разработчиков в разных бизнес-блоках, 1 000 потоков данных обновляются каждый день. И всё это поддерживает команда из пяти человек.
При таком масштабе неизбежно появляются дубли, забытые дашборды, сломанные компоненты, разработчики, которые не знают о существовании друг друга, и пользователи, которые всё ещё спрашивают «а зачем BI, если есть Excel?».
Как с этим справляться? Семён Юников расскажет про систему, которую они выстроили: автоматические рассылки разработчикам с рекомендациями по их же объектам, кастомный каталог дашбордов с ИИ-поиском, геймифицированный марафон на 80 разработчиков, после которого количество сломанных компонентов сократилось вдвое. И да, заставки на корпоративных ноутбуках с надписью «Ты ещё в Excel? Переходи в FineBI» тоже часть стратегии.
В Японии представили спортивную визуальную систему Fencing Visualized, которая в с помощью ИИ в режиме реального времени отслеживает движение шпаг и спортсменов на дуэлях, рисуя их цветные шлейфы. Технология работает через компьютерное зрение без датчиков и маркеров. Дополнительно система распознаёт приёмы фехтовальщиков и показывает их на экране.
Встраивание вычислений в PostgreSQL: PL*, extensions, а теперь и WASM
В рамках выступления на PG BootCamp Russia 2026 Дмитрий Дорофеев, главный конструктор Luxms, рассказал о том, как сегодня развивается встраивание вычислений в PostgreSQL: от классических процедурных языков (PL/pgSQL, PL/Python и других) до новых возможностей с использованием WebAssembly (WASM).
В PostgreSQL исторически поддерживается несколько десятков языков программирования. Если этого недостаточно, можно воспользоваться готовым расширением из огромной экосистемы либо написать своё. Прогресс не стоит на месте, и теперь для выполнения стороннего кода в PostgreSQL можно использовать WASM.
На примере Luxms BI я расскажу, как мы автоматически генерируем Swagger-документацию прямо внутри PostgreSQL с помощью open-source технологий и WASM.
Вебинар «BI + ETL + КХД за 1,5 млн: как Modus закрывает весь стек корпоративной аналитики»
21 апреля в 12 по МСК приглашаем на вебинар, на котором эксперты ИТ-интегратора «Белый код» расскажут, как малому и среднему бизнесу внедрить BI-систему за 1,5 миллиона рублей.
Одна из задач, с которой к интегратору приходит малый и средний бизнес, — внедрение BI в рамках ограниченного бюджета. При этом есть жесткие требования, например, единая экосистема BI + ETL, без «зоопарка» инструментов, а также нативная работа с 1С как основным источником данных.
На вебинаре специалисты поделятся практикой внедрения в сегменте МСБ, а также ответят на вопросы.
Вы узнаете:
Почему BI сам по себе не решает проблему разночтений в данных
Какие организационные изменения нужны, чтобы аналитика начала работать
Modus ETL: как устроена загрузка и обработка данных
Modus BI: аналитический портал без лишней сложности
Структура проекта за 1,5 млн рублей: стоимость лицензий, этапы проекта и результат
Спикеры вебинара
Андрей Рыжик, product owner BI-направления компании «Белый код»
Наталья Лобанова, коммерческий директор компании «Белый код»
📌Дата и время: 21 апреля 12:00 МСК (онлайн)
Участие бесплатное, требуется предварительная регистрация.
Приходите на онлайн-конференцию GlowByte и FanRuan разбираться, куда делось чудо
Дашборды построены, хранилища заполнены, лицензии куплены, а решения по-прежнему принимаются «на ощущениях». Это не ваша уникальная проблема – это системный разрыв между потенциалом BI и его реальным применением.
22 апреля в 15:00 (МСК) приглашаем вас на Fine Day Online 2026 – ежегодную онлайн-конференцию от GlowByte и FanRuan, где мы разберем, как этот разрыв закрыть.
Что в программе:
● От данных к ИИ-инсайтам – как превращать сырые данные в умные решения, а не просто красивые графики (Вилл Ченг, ведущий эксперт по отраслевым решениям, руководитель направлений пресейл и внедрение CIS, FanRuan);
● Интеграция FanRuan + DataHub – реальный опыт построения связной экосистемы данных (Дмитрий Конюхов, ведущий инженер отдела управления данными, “Галамарт”);
● 1 500 дашбордов для 2 500 пользователей – как сделать BI удобным и востребованным в масштабе (Семён Юников, главный эксперт Дирекции BI, Уралсиб);
● Shadow DWH – тёмная сторона self-service аналитики и как с ней справляться (Пётр Гордиенко, Lead BI, ОТП);
● Миграция FineBI с 6.0 на 7.0 – практический опыт и подводные камни (Евгений Иванов, DevOps BI-платформы, ОТП).
Для кого:
Руководители и специалисты в области BI, Data & Analytics, CDO, продуктовые и бизнес-аналитики – все, кто хочет, чтобы данные наконец работали на результат.
Формат:
Онлайн, бесплатно, ~3 часа концентрированной пользы. Нужна только регистрация.
Часто возникает задача сгруппировать исторические данные по неделям, месяцам, кварталам или годам. Иногда для решения этой задачи создают дополнительный столбец (например, Месяц) и строят по нему сводную таблицу.
Есть более простой способ сгруппировать данные, но его нет в настройках сводной таблицы, поэтому многие пользователи даже не догадываются о нём:
1️⃣ Построить сводную таблицу по столбцу с датами.
2️⃣ Нажать на любую дату и выбрать в контекстом меню желаемый тип группировки.
Функция SORT (СОРТ) позволяет упорядочить исходную таблицу и вставить результат в другое место. По умолчанию таблица сортируется по первому столбцу в порядке возрастания:
Sheets: =SORT(A:C)
Excel: =СОРТ(A:C)
Для сортировки по другому столбцу можно передать его номер и направление сортировки: по возрастанию или по убыванию. В Google Sheets это TRUE и FALSE, в Excel — 1 и -1. Следующая формула сортирует таблицу по второму столбцу в порядке убывания:
Sheets: =SORT(A:C;2;FALSE)
Excel: =СОРТ(A:C;2;-1)
Недостаток такого подхода: при добавлении/удалении столбцов формула может сломаться, придётся вручную обновлять номер столбца. Поэтому гораздо удобнее передавать не номер, а сам столбец для сортировки. В Google Sheets для этого используется та же функция SORT, в Excel — отдельная функция СОРТПО:
Sheets: =SORT(A:C;B:B;FALSE)
Excel: =СОРТПО(A:C;B:B;-1)
Можно задавать несколько столбцов сортировки. Следующая формула сортирует таблицу по второму столбцу в порядке убывания, одинаковые значения сортируются по третьему столбцу в порядке возрастания:
Sheets: =SORT(A:C;B:B;FALSE;C:C;TRUE)
Excel: =СОРТПО(A:C;B:B;-1;C:C;1)
Наконец, лайфхак, про который не рассказывают в документации. Если нужно упорядочить данные по разнице столбцов B и C (пример: доходы минус расходы или цена минус себестоимость), то можно использовать формулу массива. В Google Sheets понадобится ARRAYFORMULA или MAP, в Excel всё работает и без них:
Если попытаться ввести в ячейку электронной таблицы номер телефона, внезапно пропадёт плюс:
+79876543210 → 79876543210
А при попытке вбить форматированный номер телефона и вовсе выскочит ошибка:
+7 987 654-32-10 → #ERROR
Дело в том, что значения с плюсом в начале распознаются как формулы. Как же тогда ввести телефонный номер в ячейку? Достаточно добавить в начале апостроф. Тогда электронная таблица не будет пытаться распознать формулу и просто воспримет значение как текст:
'+79876543210 → +79876543210
'+7 987 654-32-10 → +7 987 654-32-10
Этот способ пригодится в любых случаях, когда значение начинается с плюса, знака равно или похоже на дату (особенно частая проблема).
Успейте подать свою работу на конкурс BI-дашбордов Data Challenge
Партнер GlowByte компания FanRuan продолжает принимать заявки на первый открытый конкурс BI-дашбордов и визуальной аналитики FineGallery Insight Challenge. Срок подачи - до 31 марта.
FineGallery Insight Challenge – это конкурс для аналитиков, BI-разработчиков и команд, которые работают с данными и создают дашборды.
Цель конкурса – показать, насколько мощной и красивой может быть визуальная аналитика, и дать пользователям пространство для обмена идеями, диагностиками, методами анализа и вдохновляющими примерами решений визуализации.
Как участвовать
1. Создайте аналитическую работу в FineBI или FineReport.
2. Заполните форму подачи, включив:
дашборд,
описание работы по структуре (описана на сайте конкурса),
информацию об авторе.
3. Дождитесь подтверждения участия и ждите результатов.
Призовой фонд
Лучшая бизнес-аналитика – 100 000 руб.
Лучший UX (пользовательский опыт) и визуальный дизайн – 70 000 руб.
Приз зрительских симпатий – 30000 руб.
Все подробности, включая сроки и требования к конкурсным работам – на сайте конкурса.
Для работы с данными, будь то группировка или условная агрегация, важно, чтобы значения записывались однообразно. Как быть, если нужно сгруппировать сотрудников по отделам, а в соответствующем столбце намешаны «Продажи», «Отдел продаж», и «Sales»? В таких случаях необходимо настроить проверку вводимых значений по словарю.
1️⃣ Для хранения словаря рекомендуется создать таблицу «Отделы». Во-первых, её будет просто дополнять и редактировать. Во-вторых, таблицу можно использовать для хранения метаданных. Например, добавить информацию о руководителе отдела или о расположении в офисе.
2️⃣ Когда словарь готов, можно вернуться в таблицу «Сотрудники», открыть меню столбца «Отдел» и поменять тип на «Раскрывающийся список». Далее в поле «Критерии» указать «Раскрывающийся список (из диапазона)» и ввести табличную ссылку:
=Отделы[Название]
3️⃣ После включения проверки некорректные значения помечаются красным уголком. Искать их глазами утомительно, поэтому проще временно скрыть корректные значения. Для этого можно зайти в меню столбца, выбрать «Столбец для фильтра», «Фильтровать по условию», «Данные не проверены». Таким образом в таблице останутся только некорректные записи, которые легко исправить. И не забыть сбросить фильтр.
GitHub визуализировали в цифровой город в проекте gitcity. В рамках проекта представлен сайт, на котором можно летать по «городу», где каждое здание это аккаунт разработчиков. Высота небоскребов = количеству коммитов. Летая по городу, можно искать интересные и популярные аккаунты, либо находить что-то новое и недооцененное.