ЗОРЯ

Головна/Часті запитання

Часті запитання

Тут зібрані питання, які вже ставили організаторам, і короткі відповіді на них. Правил це не змінює: усе спирається на ТЗ частини 1, специфікацію клієнта і календар, і в разі розбіжності чинний той документ, а не ця сторінка. Якщо відповіді тут немає, зверніться до організаторів тим самим каналом, яким подавали заявку.

опубліковано 21.09

1Просвіт і реєстрація

Де на сайті форма реєстрації?

Її немає і не буде. Сайт - це тільки тексти: завдання, легенда, оцінювання, календар. Реєструє вас ваша власна програма: вона слухає ефір, ловить просвіт і сама надсилає POST /api/v1/auth/register з логіном, паролем і адресою вашого репозиторію. Форму для цього ви робите собі самі.

Як зареєструватися на просвіт?

На просвіт не реєструються - реєструються в просвіт. Просвіт це вікно часу, коли реєстрація відкрита: воно почнеться між і і триватиме не менше ніж 10 годин. Точний момент не оголошується навмисно: спіймати його - частина завдання. За 6 годин до початку в ефір іде провісник.

Реєструватися вручну чи доручити клієнту?

Як зручніше. Зараховується будь-яка реєстрація в просвіт, зокрема через curl.

Просвіт припаде на ніч?

Він триває не менше 10 годин: досить заходити в мережу раз на 10 годин. Або клієнт слухає ефір і реєструється сам за кадром відкриття.

Чи дає щось рання реєстрація?

Ні. Номер у журналі виходу на зв'язок балів не дає й на жеребкування не впливає.

2Репозиторій і бот

Що означає "репозиторій зі списку заявок"?

Коли ви записувалися на конкурс, у заявці ви вказали адресу свого репозиторію на GitHub. Список цих адрес і є список заявок. Сервер звіряє з ним поле repositoryUrl під час реєстрації та зміни репозиторію; адреси не зі списку він не приймає (422 repository-not-eligible, вимога P1-02).

Я створив новий репозиторій. Чи прийме його сервер?

Сам по собі - ні, хоч би яким новим і порожнім він був: сервер знає тільки те, що є в списку заявок. Щоб працювати в новому репозиторії, попросіть організаторів змінити адресу у вашій заявці - тим самим каналом, яким її подавали, - і дочекайтеся підтвердження. Поки адресу не змінено, реєстрація з новим репозиторієм дасть 422 repository-not-eligible.

Кого саме запрошувати до репозиторію?

Акаунт zoria-net-bot. Його ж називає GET /api/v1/public/config, там само лежить текст умови. Бот у репозиторій нічого не пише: він приймає запрошення і читає файл .zoria.

Чи можна підготувати запрошення і .zoria до просвіту?

Так. Запрошення до репозиторію зі списку заявок бот приймає й до реєстрації; заявку буде вирішено на першому проході бота після неї. Логін у .zoria має збігатися з тим, під яким ви зареєструєтеся.

Запрошення надіслано, а стан не змінюється.

Дві найчастіші причини: запрошення GitHub протухає за сім днів, якщо його не прийнято, і файл .zoria лежить не в гілці за замовчуванням. Бот перечитує стан не рідше разу на 10 хвилин, тож раніше ніж за 10 хвилин змін чекати не варто.

Репозиторій приватний - це можна?

Так. Але врахуйте: в особистому репозиторії GitHub немає ролі "тільки читання", тому запрошений співавтор дістає право запису. Якщо вас це не влаштовує, зробіть репозиторій в організації: там вистачає ролі Read.

Чи можна змінити репозиторій?

Так: PUT /me/repository із сесії входу, тільки на репозиторій зі списку заявок. Статус скидається в pending. Якщо в самій заявці вказано не той репозиторій, це до організаторів.

Хтось зареєстрував мій репозиторій.

Заявку вирішує .zoria: підтверджується акаунт, названий у файлі, чужа заявка отримує needs-attention. Покладіть файл зі своїм логіном. Якщо запрошення вже прийнято, а статус не сходиться, - до організаторів.

Що робити у разі needs-attention?

Прочитати reason у GET /me/repository або в листі й виправити назване. Бот перегляне заявку сам.

3Стенд і протокол

Навчальний стенд не відкривався: браузер казав, що домену немає.

Так було 21.09: запису stand.zoria.net ще не існувало. Тепер адреса відповідає. Сам стенд - тренувальний вузол мережі - буде піднято до 23.09, тобто до початку просвіту; поки його немає, за цією адресою стоїть сторінка-заглушка.

Стенд відповідає 503 stopping - це помилка в моєму клієнті?

Ні. Так виглядає мовчання вузла: код stopping описаний у специфікації клієнта (розділ 5.5) і означає "повторіть із паузою", довжина паузи - у заголовку Retry-After. Той самий код ви побачите, якщо бойовий вузол перезапускають.

Як перевірити клієнт до просвіту?

На навчальному стенді: той самий протокол, коло щогодини за UTC - шум, з :20 провісник, з :30 до :50 просвіт; навчальний список репозиторіїв, база стирається раз на добу (специфікація, розділ 6).

До просвіту сервер відповідає незрозумілим - це нормально?

Так. Від публікації частини 1 сервер працює в режимі ефіру: майже всі відповіді - перешкоди, зрідка проходить справжній кадр із печаткою станції. Це не збій і не ваша помилка: режим перевіряє, чи вміє програма слухати.

4Клієнт, ліміти, листи

Чи обов'язковий React?

Так, стек конкурсу - React + TypeScript. Решту бібліотек і будову застосунку обираєте ви.

Чи можна клієнту власний бекенд?

Так. З Node до API можна звертатися без CORS. Пароль і токен до репозиторію не потрапляють.

Мене заглушили, хоча клієнт опитує рідко.

Ліміт рахується за адресою, клієнти за спільною адресою (офіс, NAT) ділять його. Вийдіть у мережу з іншої адреси або домовтеся із сусідами про частоту опитування.

Якою мовою приходять листи сервера?

Мовою акаунта: uk за замовчуванням або en. Мову задає поле lang під час реєстрації, змінює PATCH /me. Голос провісника в ефірі приходить одразу обома мовами.

5Що означає відповідь сервера

Найчастіші коди. Повний список - у специфікації клієнта, розділ 5.5.

КодСтатусЩо це означаєЩо робити
repository-not-eligible422адреси немає в списку заявокзвірити адресу з тією, що в заявці; якщо в заявці помилка - до організаторів
invalid-repository, repository-not-root422це не адреса репозиторію або посилання всередину ньогонадіслати адресу самого репозиторію: owner/repo
registration-closed403просвіт уже минувреєстрації більше немає
username-unavailable409логін зайнятийінший логін; після загубленої відповіді - спершу вхід
jammed429адресу заглушено за перевищення ліміту ефірумовчати стільки секунд, скільки каже Retry-After
rate-limited, authentication-busy429перевищено ліміт або зайнята черга перевірки паролівповторити через Retry-After; це не порушення
stopping503вузол мовчить або перезапускаєтьсяповторити з паузою
pending у GET /me/repository-бот ще не перевірив заявкупочекати: він перечитує не рідше разу на 10 хвилин
needs-attention у GET /me/repository-щось не сходитьсяпрочитати reason і виправити назване