Перейти до основного вмісту

Чи поверне мені програма мій файл?

Importing from FET 1 хв читання

Ваш файл .fet — це робочий розклад, тому перед використанням будь-якого інструменту варто поставити одне запитання і провести двохвилинний тест, щоб отримати відповідь.

Файл .fet виглядає не дуже примітно. Кілька сотень кілобайт XML, що лежать у папці поруч із файлом минулого року.

Але ви знаєте, що в нього вкладено. Два тижні в серпні, витрачені на те, щоб науковий блок не міг приймати два практичні заняття одночасно. Компроміс із завідувачем кафедри мов, на який пішло три розмови. Одинадцять обмежень, які ви додавали одне за одним, щоразу після того, як щось ішло не так, і ви більше ніколи не хочете з цим стикатися.

Нічого з цього більше ніде не записано. Це існує як обмеження в тому файлі, і якщо його втратити, ви втрачаєте не просто документ — ви втрачаєте логіку, і дізнаєтеся про це у вересні, коли Розклад перестане мати сенс.

Тож коли веб-інструмент пропонує відкрити його, питання не в тому, чи корисний цей інструмент. Питання в іншому: чи поверне він мені мій файл?

Чому відповідь зазвичай «не зовсім»

Більшість інструментів, що зчитують .fet, роблять це очевидним способом. Хтось вивчає формат, пише код для частин, які їм потрібні — викладачі, дисципліни, аудиторії, заняття, загальні обмеження — і випускає продукт.

Це працює, але дає збої непомітно. FET має великий словник обмежень, і він зростає з кожним випуском. Усе, що автор інструменту не реалізував, просто не зчитується, і коли файл записується назад, те, що ніколи не було зчитане, не записується. Файл усе ще відкривається. Він усе ще валідний. Просто в ньому бракує трьох обмежень, які були для вас найважливішими, і ніде про це не сказано.

Це та помилка, проти якої варто проектувати, тому що вона невидима саме в той момент, коли ви хотіли б її виявити.

Що ми робимо натомість

FET Explorer не намагається зрозуміти кожне обмеження. Він намагається не мати в цьому потреби.

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

Не існує списку підтримуваних типів обмежень, тому що немає нічого, що потрібно підтримувати. Тип обмеження, введений у випуску FET, про який ми ніколи не чули, проходить крізь систему недоторканим, з тієї ж причини, з якої слово, якого ви не знаєте, зберігається при переписуванні тексту від руки.

У Розкладах, що містяться в нашому власному корпусі сьогодні, це 2 987 обмежень 20 різних типів, які проходять повний цикл без жодного з них як особливого випадку в коді експорту.

Ваги повертаються як ваги. Обмеження, встановлене на 80%, залишається 80% — не округлене, не перераховане, не підвищене до «увімкнено». Неактивне обмеження повертається неактивним. Ваші коментарі повертаються.

Файл перевіряється перед тим, як ви його отримаєте

Є одна річ, через яку ми перериваємо процес.

Файл .fet, який FET відмовляється відкривати, гірший, ніж відсутність файлу: ви дізнаєтеся про це в самому кінці, не маючи жодного уявлення, який із кількох тисяч записів є помилковим. Тому файл формується та перевіряється перед тим, як його передати вам.

Рядок завантаження з підзаголовком про перевірку під ним
Рядок завантаження з підзаголовком про перевірку під ним

Якщо бракує чогось дійсно необхідного — заняття без дисципліни, урок, що вказує на викладача, якого немає у списку викладачів — ви отримаєте повідомлення з назвами конкретних записів. Речі, які можна безпечно замінити стандартними значеннями, замінюються і ніколи не стають вашою проблемою.

Якщо файл валідний, але виглядає «порожнім», ви отримаєте попередження та кнопку Завантажити попри все. Це порада, а не заборона.

А якщо сама перевірка не запускається, завантаження просто триває. Перевірка, яка не дала результату, не є причиною ставати між вами та вашим файлом.

Не вірте нам на слово — витратьте дві хвилини

Це частина, яку варто зробити, тому що вона майже нічого не коштує і вирішує питання назавжди.

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

Вони повинні відрізнятися лише форматуванням — відступами, інтервалами між атрибутами, порядком кількох необов'язкових полів — і нічим іншим. Ті самі заняття, ті самі обмеження, ті самі ваги, ті самі коментарі.

Якщо два файли відрізняються за суттю, це помилка, і ми хочемо про неї дізнатися. Це не те, що варто обходити, і не те, що ви повинні виявити у вересні.

Один чесний виняток

Якщо ваш Розклад був створений на основі електронних таблиць, а не з файлу .fet, є нюанс, про який варто знати. Рядки CSV не містять ідентифікаторів занять FET, а обмеження щодо розміщення потребують стабільних ідентифікаторів, щоб вказувати на окремі уроки.

Замість того, щоб відмовляти, ми призначаємо ці ідентифікатори під час створення файлу — і зберігаємо їх, щоб вони не змінювалися. Друге завантаження збігається з першим. Ви можете створити Розклад з електронних таблиць і все одно отримати коректний .fet на виході.

Чим це не є

FET Explorer не генерує Розклади. Він не оптимізує, не перераховує і не покращує те, що створив FET. FET виконує складну роботу; цей інструмент зчитує, представляє, надає доступ та редагує результат.

Саме тому повний цикл (round trip) має значення. Інструмент, який лише показує вам Розклад, може дозволити собі розуміти лише половину файлу. Інструмент, у якому ви можете редагувати, повинен повернути все в цілісності.

Спробуйте зі своїм файлом →