Головна/Часті запитання
Часті запитання
Тут зібрані питання, які вже ставили організаторам, і короткі відповіді на них. Правил це не змінює: усе спирається на ТЗ частини 1, специфікацію клієнта і календар, і в разі розбіжності чинний той документ, а не ця сторінка. Якщо відповіді тут немає, зверніться до організаторів тим самим каналом, яким подавали заявку.
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-eligible | 422 | адреси немає в списку заявок | звірити адресу з тією, що в заявці; якщо в заявці помилка - до організаторів |
invalid-repository, repository-not-root | 422 | це не адреса репозиторію або посилання всередину нього | надіслати адресу самого репозиторію: owner/repo |
registration-closed | 403 | просвіт уже минув | реєстрації більше немає |
username-unavailable | 409 | логін зайнятий | інший логін; після загубленої відповіді - спершу вхід |
jammed | 429 | адресу заглушено за перевищення ліміту ефіру | мовчати стільки секунд, скільки каже Retry-After |
rate-limited, authentication-busy | 429 | перевищено ліміт або зайнята черга перевірки паролів | повторити через Retry-After; це не порушення |
stopping | 503 | вузол мовчить або перезапускається | повторити з паузою |
pending у GET /me/repository | - | бот ще не перевірив заявку | почекати: він перечитує не рідше разу на 10 хвилин |
needs-attention у GET /me/repository | - | щось не сходиться | прочитати reason і виправити назване |