SkiSport

Программный комплекс SkiSport

Комплекс SkiSport — от заявки до протокола

Этот сайт — не отдельная витрина с таблицами. Он работает в составе комплекса SkiSport, где заявка, стартовый протокол, хронометраж на склоне, табло, результаты и рейтинг — части одной системы, а не пять программ, между которыми судья носит флешку.

Программа секретаря

Настольная программа, в которой живёт соревнование: заявки, группы, жеребьёвка, стартовые протоколы, результаты, разряды, грамоты. Работает без интернета — потому что на склоне его нет, — и синхронизируется с сайтом, когда связь появляется.

  • Первый запуск спрашивает, как вы работаете: без сайта, забрать заявки с сайта, выгружать на него или держать всё синхронно — и дальше ведёт по шагам до состояния «можно стартовать». Галочка на шаге ставится по проверке, а не по факту, что окно открывали
  • Подключение к сайту — кодом, а не паролем: шестизначный код набирают на сайте один раз на компьютер, дальше соревнование выбирается в самой программе, из списка своих гонок
  • Двое судей за двумя ноутбуками видят одно и то же
  • Каждая правка времени остаётся в журнале с автором, а последнее действие отменяется — включая удалённую по ошибке строку
  • Видно, сохранено ли соревнование и доходят ли результаты до сайта: не в логах, а строкой внизу окна. Там же по огоньку на каждый мессенджер — молчащий бот виден до того, как его хватятся
  • Протоколы по форме ФГССР — на A4, в Word и таблицей для федерации
  • Протесты с решением жюри и сроком подачи по правилам
  • Проверка готовности трижды за день: перед стартом, перед второй попыткой и после финиша
  • Разряды считаются по ЕВСК: рядом с настройкой видно таблицу — сколько разрядников в группе, какой процент от лидера даёт какой разряд и во сколько секунд это выходит сегодня
  • Файл соревнования шифруется: там фамилии и даты рождения детей
  • Заявка открывается файлом — csv или xlsx, как прислали, вместе с чужой кодировкой и чужим разделителем
  • Второй день заводится из первого: состав переносится, результаты остаются вчера
  • История сохранений: полсотни состояний рядом с файлом, и вернуться к любому можно копией, не трогая сегодняшнее
  • Принятое время слышно: короткий сигнал на приём и другой — на номер, которого нет в заявке
  • Экран финиша для судьи: последний приехавший крупно, и сход отмечается там же
  • Судья на финише вводит вручную: номер, время, Enter — и следующий. Кто это, видно до нажатия, фамилией и группой, а не после, когда время уже ушло в чужой результат; последнее записанное отменяется кнопкой. Нужно это в тот день, когда прибор отказал и всё идёт по секундомеру
  • Музыка между заездами — из своей папки, без интернета — и она сама уходит вниз, когда объявляют результат, а под сигналы «принято» и «не принято» замолкает совсем: их различают на слух, и различает их судья, который смотрит на трассу, а не в экран
  • Финиши объявляются вслух: номер, фамилия, время и скорость на выкате — голосом самой системы, без интернета. Место не называется: пока группа едет, объявленное третье через минуту окажется пятым
  • Объявлять можно тремя способами — от «номер и время» до «на старте такой-то, на трассе такой-то из такого-то клуба, результат такого-то»: на детской прикидке подробный звучит болтовнёй, а на этапе со зрителями голос заменяет комментатора
  • Файл проверяется до открытия: цел ли он и ваш ли это ключ

Хронометраж на склоне

Своё железо: стартовая калитка, фотостворы на финише, радиосвязь на километр, табло у старта и в зоне финиша. Стартовые часы с обратным отсчётом по правилам FIS. Проводной режим для соревнований, где решают сотые, — и беспроводной для тренировок, где не решают.

  • Время старта идёт по проводу: радио не задерживает то, что мерят
  • Каждое время помечено, чем измерено — проводом или радио
  • Тренировка пишется без ноутбука вовсе: коробка и повербанк
  • В конце тренировки коробка раздаёт времена сама: спортсмен подключается к ней телефоном, вводит свой номер и уезжает со своими спусками, не дожидаясь сети
  • Летом — те же старты на роликах по горнолыжным правилам

Сайт, который вы открыли

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

  • Заявка приходит прямо в программу секретаря
  • Результаты появляются по ходу соревнования, а не вечером
  • Официальный подписанный протокол лежит рядом с таблицей
  • Медали появляются, когда группа доехала, а не у первого финишировавшего при живой группе
  • Экран для зрителей умеет объявлять приехавшего вслух — голосом того устройства, на котором открыт
  • Страница ставится на телефон значком, как приложение: ничего не устанавливается в систему и никаких прав не спрашивается
  • У каждого на тренировках своя страница разбора: дни, отставание, разброс попыток, скорость по дням и выводы словами
  • На экране видно ход дня полосой, последние пять финишей и двоих ближайших на старте — «я отошёл, кто уже проехал» и «мой сейчас поедет или ещё не скоро» больше не спрашивают у судьи
  • Группа из сорока человек не обрезается: экран листает её страницами и подсвечивает приехавшего на той, где он есть
  • Голос может называть готовящихся к старту — три ближайших номера, чтобы «мой через двоих» было слышно, а не подсчитывалось
  • Ошибку в протоколе есть куда сообщить: раздел обратной связи открыт всем, без учётной записи — родителю, увидевшему чужую фамилию рядом с номером своего ребёнка, не нужно заводить пароль ради одного письма
  • Бот в мессенджере отвечает на то, что спрашивают на склоне: как идёт старт, кто в калитке и на трассе. А главное — «/follow 14», и время четырнадцатого придёт вам само, как только он приедет: родитель перестаёт обновлять страницу пальцем вместо того, чтобы смотреть спуск
  • Организатору бот пишет, если результаты перестали приходить, пока на трассе ещё кого-то ждут: со стороны сайта обрыв связи выглядит ровно как «сейчас никто не финиширует», и заметить его может только сайт
  • Состав, унесённый ошибочной выгрузкой, возвращается кнопкой: перед каждой заменой сайт сохраняет то, что было. Двадцать последних копий с датами — на случай «открыл вчерашний файл и подтвердил замену»
  • У серии есть общий зачёт: четыре старта за два выходных складываются в одну таблицу по группам. Складываются очки, а не время — дисциплины разные, — и в зачёт идут все этапы: пропущенный это ноль, а не «не считаем»
  • «Заявленные участники» показывают то, что знает точнее: пока состав не прислали — заявки с сайта, а как только прислали — его, с номерами

Как это связано

Слева — то, что стоит на горе; в середине — ноутбук секретаря, через который проходит всё; справа — четыре ветки, по которым время расходится дальше. Стрелка в обе стороны означает разговор, а не выдачу.

От стартовой калитки до сайта Калитка и финишный створ передают время базовой станции, она — программе секретаря. От программы расходятся четыре ветки: телефоны судей, экраны на склоне, мессенджеры и сайт. Судьи и сайт разговаривают с программой в обе стороны. НА ГОРЕ Стартовая калитка импульс старта Финишный створ фотоэлемент, скорость Метка на спортсмене кто это проехал Базовая станция провод или радио, журнал тренировки Программа секретаря протокол, места, разряды работает без интернета КУДА РАСХОДИТСЯ Телефоны судей ввод времён и статусов, очередь старта, привязка меток Экраны на склоне телевизор в кафе, табло калитки, комментатору, титры в эфир Мессенджеры результаты в канал, решения по заявкам, «следить за номером» Сайт заявки до старта, результаты по ходу, протокол, рейтинг сезона, экраны и боты для зрителей тренировка: коробка выгружает спуски на сайт сама, без ноутбука

Что остаётся, когда интернета нет

Что работает без интернета Хронометраж, программа, судейские телефоны и все экраны на склоне работают по местной сети. Через интернет ходят только сайт и мессенджеры; неотправленное уходит, когда связь возвращается. МЕСТНАЯ СЕТЬ — РАБОТАЕТ ВСЕГДА Хронометраж · программа · телефоны судей экран склона · табло калитки · комментатор · титры Точка доступа на подоконнике — этого достаточно: сервер поднимает сам ноутбук, и наружу ничего не ходит. Протокол печатается и подписывается здесь же. когда появится связь ЧЕРЕЗ ИНТЕРНЕТ Сайт и мессенджеры Неотправленное не теряется: программа повторяет посылку, а счётчик недоставленного виден в строке состояния.

Как это выглядит в движении

Снимок показывает, как выглядит окно; он не показывает, как приходит время. Ниже — три показа того, что происходит само, без нажатий.

Финиш приезжает на экранидёт сейчас
калитка створ финиша программа экран и сайт
#СпортсменЗаезд 1Заезд 2Сумма
1Орлова М.52.5451.981:44.52
2Зимина Д.53.12 52.30 1:45.42
3Петрова А.53.3852.611:45.99

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

Организатор включает экранидёт сейчас
Показывать экран зрителям
Первенство области — слалом-гигант 13 февраля · ГЛЦ «Северный склон» · слалом-гигант (GS) Live

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

Мастер находит то, о чём вспоминают на стартеидёт сейчас
  • Соревнование
  • Группы и трассы
  • Участники
  • Хронометраж
! У двоих совпадают номера: 14 Подготовка старта →

Проверка не просто говорит «непорядок»: у каждого шага есть кнопка, открывающая то окно, где это чинится. Путь словами — работа, которую программа перекладывала на судью.

Один старт, девять экранов

От объявления до рейтинга. Данные на всех снимках выдуманные: настоящим фамилиям детей на рекламной странице делать нечего.

  1. 1. Старт объявлен

    Организатор публикует соревнование, и оно появляется в общем графике: дата, место, дисциплина, группы и приём заявок. Тренеру не нужно звонить и спрашивать, когда и где.

    Страница соревнования на сайте: дата, место, дисциплина, кнопка «Подать заявку» и таблица групп
  2. 2. Расписание — по дням

    Соревнование на выходные — это чаще всего не два соревнования, а одно, где младшие едут в субботу, а старшие в воскресенье. Зачёт, заявка и положение при этом общие; разъезжается только расписание, и тренер видит на странице старта, кого и когда везти.

    Страница двухдневного старта: группы разбиты по дням — суббота и воскресенье, у каждой таблица с полом, годами рождения и числом заездов
  3. 3. Несколько стартов — одна заявка

    Гигант в субботу и слалом в воскресенье — два заезда, и зачёт их обязан разделять: у каждого свой протокол, своё место и свои очки в рейтинге. Общие у них заявка, срок и документы — тренер отмечает, кто на какой этап едет, и отправляет один раз, а не заполняет тот же список дважды.

    Страница серии на сайте: два этапа за выходные, общий срок приёма заявок и одна кнопка «Заявиться на этапы»
  4. 4. Заявки собраны

    Тренер заявляет команду из своего кабинета, организатор решает спорное. Заявленные участники видны всем — по ним сверяются накануне, а не утром в день старта.

    Список заявленных участников на сайте, разбитый по группам
  5. 5. Заявки приехали в программу

    Секретарь открывает соревнование на ноутбуке — и участники уже там, с клубами, разрядами и годами рождения. Вместе с ними приезжает и расписание: у какой группы сколько заездов и в какой день она едет. Никто не перебивает список руками, и поэтому в нём нет опечаток, которых не было на сайте.

    Окно программы секретаря, вкладка «Участники»: фамилии, разряды, группы, клубы и номера
  6. 6. Результаты приходят со склона

    Два заезда, места считаются на ходу. У каждого времени записано, чем оно измерено: «Провод» — калитка и створ, «Вручную» — правил человек. Разница видна в таблице, а не в чьей-то памяти.

    Окно программы секретаря, вкладка «Результаты»: два заезда, итог, места и колонка «Хронометраж»
  7. 7. Протокол по форме

    Официальный протокол по форме ФГССР: жюри, постановщики, открывающие, условия отдельно на каждый заезд, расчёт констант, разряды, решения жюри и место под три подписи. Каждая группа — со своей страницы: это отдельный подписанный документ, а не раздел общего. Тем же движением печатается итоговый протокол в Word — если в нём нужно дописать строку, — командный зачёт и таблица для федерации, которую там открывают, а не перебивают руками с распечатки.

    Столбцы настраиваются и запоминаются: на внутреннем старте прячут страну — она у всех одна — и код FIS, которого у детей нет, а отставание от победителя, наоборот, показывают. Год рождения вместо полной даты стоит по умолчанию: допускают по году и награждают по году, а полная дата ребёнка на листе, который вешают на стену, — лишнее.

    Официальный протокол результатов по форме ФГССР: жюри, условия по заездам, таблица результатов с отставанием, расчёт констант и подписи
  8. 8. Результаты на сайте

    По ходу соревнования, а не вечером. Лучшее время в группе — зелёным, отставание от него — под каждым временем, медали у первой тройки. Ничего не нужно устанавливать и нигде регистрироваться.

    Под таблицей каждой группы — скорость на выкате: кто быстрее всех, средняя, разброс и полосы по всем, кого замерили. Это единственное, что сравнимо между группами: трассы у них разные, а выкат один. Быстрейший при этом редко совпадает с победителем — время выигрывают наверху, и на странице это видно рядом, а не вместо. Скорость меряет финишный створ своего комплекта: с чужим хронометражом её не будет, и тогда страница выглядит ровно как прежде.

    Таблица результатов на сайте: медали у призёров, лучшие времена зелёным, отставание под каждым временем, а под таблицей — скорость на выкате: быстрейший, средняя, разброс и полосы по каждому
  9. 9. Сезон складывается в рейтинг

    Каждый старт добавляет очки, и к весне видно не один удачный день, а сезон целиком. А в кармане у родителя — тот же сайт, открытый с телефона прямо на склоне.

    Таблица рейтинга сезона на сайте Тот же сайт на телефоне: график соревнований сезона

Проверка вместо «вроде всё готово»

Ошибку в стартовом протоколе видно на старте, ошибку в настройках отправки — через час после финиша, когда результатов на сайте так и нет. Поэтому программа проверяет день трижды, и каждый раз проверяет разное: перед стартом — можно ли ехать и туда ли всё настроено; перед второй попыткой — цела ли первая и переключён ли заезд; после финиша — можно ли это подписывать и публиковать.

  1. Мастер, а не список из тридцати строк

    Шаг отвечает на один вопрос дня — «готовы ли участники», «настроена ли отправка», — и у каждого шага есть кнопка, открывающая то самое окно, где это чинится. Не подсказка «Соревнование → Настройки», а сама настройка: путь словами — это работа, переложенная на судью.

    Красное — ехать нельзя, жёлтое — посмотрите. Ключи ботов проверяются тем же способом, что и всё остальное, но на экран не попадают никогда: проверка говорит «ключ на месте», а не показывает его.

    Мастер проверки перед стартом: шаги слева, ответы шага справа
  2. Разряды — по таблице, а не на глаз

    Разряд считается по ЕВСК: процент от времени лидера, приложение N 3 к приказу Минспорта от 14.12.2022 N 1216. Условие у каждого разряда своё и зависит от того, кто вышел на старт, — поэтому в одном окне с группой видно и правила, и таблицу: сколько разрядников в группе, какой процент даёт какой разряд и во сколько секунд это выходит сегодня.

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

    Присвоение разрядов: группа, правила по ЕВСК и таблица расчёта со временем

Свой сервер на склоне

Интернет на горе — две палочки в лучшем случае, а чаще ничего. Поэтому программа секретаря поднимает собственный сервер прямо на ноутбуке: всё ниже работает по местной сети — от точки доступа за 2000 рублей, — и наружу не ходит вовсе.

  1. Экран склона — для телевизора в кафе

    Приехавший на финиш появляется на экране крупно и сразу: номер, фамилия, время, место и отставание. Рядом — кого ждут на трассе и какое время ему надо побить, лучшее время в каждой группе, перепад и число ворот трассы, погода и температура на старте и финише. Внизу бежит строка с быстрейшей скоростью дня, командным зачётом и самым юным участником.

    Экран сам поворачивается по группам и сам переключается на группу того, кто только что приехал: смотреть на него будут с чашкой в руке и с пяти метров, а листать его некому.

    В углу — код: зритель наводит телефон и уносит ту же таблицу с собой. Спрашивать адрес у судей больше не нужно.

    Экран склона: последний приехавший крупно, очередь на трассе, лидеры групп и цифры дня
  2. Экраны для зрителей

    Телевизор в кафе, монитор у подъёмника, ноутбук на столе судей — любой браузер в этой сети открывает живые результаты и видит их такими же, как секретарь. Столбцы и порядок настраиваются под экран отдельно от бумажного протокола: зритель у подъёмника ищет фамилию, а не код FIS, и смотрит на экран пять секунд, проходя мимо.

    Живые результаты на экране в локальной сети: группы, времена двух заездов, места
  3. Табло у калитки

    Крупная цифра — чей номер сейчас стартует, ниже фамилия, группа и кто идёт следом. Экран у старта нужен не только зрителям: по нему сверяются тренер, подводящий ребёнка к калитке, и сам судья — тот ли номер принят.

    Табло у стартовой калитки: крупный номер стартующего, фамилия, группа и следующие номера
  4. Очередь на старте и телефоны судей

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

    Второй судья вводит времена с телефона на финише. Его страница переживает пропадание сети: результаты копятся в очереди прямо в телефоне и уходят сами, когда вайфай возвращается. Вход — по учётной записи судьи, отдельной от секретарской, и при желании по HTTPS.

    Комментатору — своя страница: кто на трассе, лидер группы, разброс, постановщики, открывающие и время старта заездов.

    Страница комментатора: кто сейчас в калитке, статистика группы и таблица заезда
  5. Одна страница, с которой начинают

    Адрес ноутбука открывает оглавление: все страницы сервера с подписью, кому они и нужен ли вход, и QR к каждой. Судья наводит телефон и попадает на свою страницу — набирать в варежках «192.168.1.42:8090/judge/start» не приходится никому.

    Этот же лист печатают и вешают у судейского домика: одного кода хватает, дальше каждый доходит до своей страницы сам.

    Оглавление внутреннего сервера: карточки страниц с описанием и QR-кодами

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

Все страницы внутреннего сервера

СтраницаКомуЧто показываетВход
/screenЗрителям Экран склона: последние финиши, кого ждём, лидеры групп, ход дня открыта
/wallЗрителям, издалека Стена на большой экран: сцены сменяются сами, время едущего идёт на глазах, финиш перебивает всё. Свёрстана под сто дюймов и взгляд с десяти метров открыта
/Всем Таблица результатов, обновляется сама; столбцы — те, что в программе открыта
/startВсем Стартовый протокол: кто, под каким номером и в каком порядке открыта
/gateЗрителям и стартёру Табло старта: номер, который сейчас в калитке, во весь экран открыта
/pressКомментатору Кто на трассе и что о нём сказать — с заметкой секретаря открыта
/altВсем Тот же протокол другой вёрсткой — для второго монитора открыта
/subtitlesВидеорежиссёру Титры: плашка на прозрачном фоне, источник для видеомикшера открыта
/judgeСудьям Ввод времён и статусов с телефона; работает и без сети — накопленное уходит, когда связь вернётся вход судьи
/judge/startСудье на старте Очередь: кто в калитке, кто на трассе; отсюда же снятия вход судьи
/judge/tagsСудьям и тренерам Привязка меток — раздать команде, не возвращаясь к столу вход судьи
/judge/subtitlesВидеорежиссёру Настройка титров: кого показывать и каким видом плашки вход судьи

Четыре адреса отдают не страницы, а данные — их открывают не глазами, а другой программой: /api/results (гонка целиком), /api/screen, /api/press и /api/gate. По ним делают своё табло, свою заставку для трансляции или выгрузку в чужую систему, ничего не спрашивая у нас.

Всё это раздаётся с ноутбука секретаря по локальной сети и не требует интернета вовсе. Страницы за входом судьи умеют работать по HTTPS — судейская сеть на склоне обычно открыта, и пароль в ней ходить открытым не должен.

Тот же экран — с сайта

Ноутбук секретаря стоит в судейском домике, а телевизор — в кафе внизу, и между ними бывает не кабель, а полгоры. Если интернет на объекте есть, тот же экран отдаёт сайт: на любой телевизор, на любой монитор в холле, на телефон родителя, который сегодня остался дома.

  1. Включает организатор

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

    Как только он включён, ярлычок Live появляется рядом с дисциплиной — и в расписании, и на странице соревнования. Красная точка на нём горит, только когда времена приходят прямо сейчас.

    Страница соревнования с ярлычком Live рядом с дисциплиной
  2. Телевизор в кафе

    Последний финиш крупно, лидеры каждой группы, ход дня. Экран сам поворачивается по группам и сам переключается на группу того, кто только что приехал. Зимой лёд, летом трава — сезон берётся из даты старта.

    Экран для зрителей на сайте: последний финиш, таблица группы, лидеры групп
  3. И он же в телефоне

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

    Тот же экран в телефоне: карточка последнего финиша, лидеры, таблица группы
  4. Экран тренировки

    У тренировок такой же: лучшее время каждого, отставание от быстрейшего, лента последних попыток. Открывается по ключу тренера — тому же, которым команда смотрит свои времена, — и висит на том же телевизоре в перерыве между заездами.

    Экран тренировки: лучшее время каждого, отставание, последние попытки
  5. А потом — разбор за месяц и за сезон

    Тренировки складываются по дням: две выгрузки одного занятия — это один день, а не две тренировки. Дальше выбирается период — последняя, неделя, месяц, сезон, всё время — и дисциплина, если их было несколько.

    Секунды разных дней страница не сравнивает: трасса переставлена, снег другой, и «стал ехать на секунду быстрее» может означать только то, что склон подмёрз. Сравнивается отставание от лучшего времени того же дня — в процентах. По нему считаются лидеры, динамика каждого и выводы словами: кто прибавил, у кого отставание выросло, кто ездит чаще всех, в какой дисциплине команда едет ровнее.

    Отдельно — скорость на выкате: лучшая у каждого за период, полосами и цифрами. Ей постановка трассы не мешает, поэтому её сравнивать можно и через месяц. Считается она и по спускам, не пошедшим в зачёт: ворота пропущены, а выкат был настоящий.

    Разбор тренировок: периоды, лидеры по отставанию, выводы, дни

Два документа, которые можно унести с собой

Всё, что описано выше, собрано в два файла. Оба собираются из самой программы — меню, окна и проверки в них описаны той же командой, которая их строит, поэтому инструкция не отстаёт от программы на версию.

Брошюра — 12 страниц

Обзор для тех, кто выбирает: из чего состоит комплекс, что делает программа, чем меряется время, что видно зрителю и что остаётся у вас. Со схемами и снимками.

Скачать брошюру (PDF)

Руководство — 24 страницы

Для тех, кто работает: каждое меню с сочетаниями клавиш, каждое окно, порядок дня, разряды по ЕВСК, протоколы, протесты, мастера, свой сервер, сайт, оборудование и таблица «симптом — причина — что делать».

Скачать руководство (PDF)

Работает с профессиональным хронометражом — и со своим

Ваш прибор уже подходит

Комплекс SkiSport говорит на языке профессиональных систем: понимает построчный вывод ALGE Timy и совместимых приборов TAG Heuer — те самые строки с каналом, временем суток и номером. Подключение — кабелем в COM-порт или по сети, если прибор стоит за преобразователем.

Ничего менять не нужно: у вас уже есть хронометраж — сайт и программа просто начинают его слышать.

А можно взять наш

Если прибора нет — есть своё железо, собранное под горные лыжи: калитка вместо фотоэлемента на старте (палки пересекают створ раньше тела, и луч запустил бы секундомер на палке), два створа на финише со скоростью, радиосвязь без проводов через склон и табло, которые видно с тридцати метров.

Оно дешевле профессионального на порядок и честно говорит о себе: для тренировок, прикидок и детских стартов — да; для разрядных и FIS-стартов нужна гомологированная система, и комплекс SkiSport работает рядом с ней третьим информационным каналом.

Ваши данные — ваши

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

Файл соревнования зашифрован

Не паролем на архиве, а по-настоящему: тело файла закрыто ключом AES-256-GCM, а сам ключ завёрнут отдельно для каждого судьи его паролем. Пароль превращается в ключ через scrypt с параметрами, на которых перебор по украденному файлу перестаёт быть дешёвым.

Забытый в машине ноутбук — это украденный ноутбук, а не украденная заявка.

Сайт хранит меньше, чем мог бы

Год рождения вместо полной даты: для группы нужен год, а полная дата ребёнка сайту не нужна ни для чего. Кодов FIS и РУС нет вовсе — как сквозной идентификатор человека они опаснее всего остального, потому что по ним две чужие базы связываются в одну.

Фотографий спортсменов сайт не хранит.

Согласие — это акт, а не галочка

Галочка помнит, что её поставили. Она не помнит, что было написано над ней, — а это единственное, что важно, когда согласие оспаривают через год. Мы храним версию текста, его отпечаток, кто согласился, о чьих данных речь и когда согласие отозвали.

Уйти можно совсем

Удаление учётной записи работает и делает то, что обещает: страница исчезает с публичных разделов, фотография удаляется файлом. Результаты прошедших соревнований остаются — это спортивная история, а не профиль, — и это сказано прямо, а не спрятано в соглашении.

Комплекс SkiSport сделан под 152-ФЗ, но закон соблюдает организатор, а не программа. Что делает сайт и что остаётся на вас — расписано в документации, включая неудобное: судейский ноутбук это носитель персональных данных, и диск на нём должен быть зашифрован.

0,001 с разрешение хронометража в проводном режиме
300 м витой пары от калитки до финиша, без потери фронта
−20 °C рабочая температура узлов на склоне
6 ч соревновательный день на батареях, без розетки

Не только снег

Лето — не пауза. Гонки на роликовых лыжах и роллерах судятся по тем же горнолыжным правилам и тем же комплексом SkiSport: стартовая калитка, створ финиша, интервальный старт с обратным отсчётом, две попытки, те же протоколы и тот же рейтинг. Меняется покрытие, а не хронометраж.

Программа знает, какой сейчас сезон, и выглядит соответственно: летом экраны на склоне, страницы судей и сама она зеленеют, снег на табло сменяется тополиным пухом, «состояние снега» — «покрытием», а раздел «Склон» — «Трассой». По календарю это происходит само, но переключить можно руками: в мае в горах ещё катаются, а в сентябре открывают сезон на леднике.

Для клуба это значит, что комплект не лежит полгода в кладовке, а команда не теряет счёт своим секундам между сезонами.

Почему это сделано так

Хронометраж не имеет права ошибаться молча. Поэтому в комплексе SkiSport везде выбрана громкая ошибка вместо тихой: перерезанный кабель узел замечает сам и кричит, задетая калитка без старта отзывается, расхождение номера с протоколом пишется в журнал, а время, измеренное по радио, приходит в протокол с пометкой, что оно измерено по радио.

Секунды на склоне стоят мест на пьедестале, а места — разрядов. Мы считаем, что программа обязана говорить, когда сомневается.

Как это устроено — с числами