JavaRush /Курси /Claude Code SELF /Які дані і звідки

Які дані і звідки

Claude Code SELF
Рівень 7 , Лекція 1
Відкрита

1. Як перетворити хотілку на технічне завдання

— «Радар землетрусів усього світу… Масштабно!», — видає Льоха. — А що саме він показує? Просто точку на мапі?

Тьома відкрив рота. Закрив. Точку. Ну… де струсонуло. Вголос це прозвучало б зовсім кволо, тож він промовчав.

— Ось саме, — продовжує Льоха. — «Ну десь» і «ну якось». Це, брате, не завдання. Це настрій.

Тьома хмикнув. Настрій у нього був — хоч зараз у бій. А от що саме робити руками — суцільний туман.

— Дивись. Є хотілка, а є завдання. «Хочу радар, який показує землетруси наживо» — це хотілка. Гарно, але Сашкові з цим робити нічого. А завдання звучить інакше: потрібні ось такі дані про кожен поштовх, брати їх ось там, а якщо даних немає — поводитися ось так. Відчуваєш різницю? Перше — фантазії. Друге — те, з чим уже можна працювати.

— Тобто поки мої слова — це «іди туди, не знаю куди, принеси те, не знаю що»?

— Саме так. І щоб нарешті стало зрозуміло — уяви, що ви, припустімо, замовляєте їжу. Ви ж курʼєру не пишете «привезіть чогось поїсти»?

— Ну, так. Напишеш так — приїде якийсь холодний суп, який я й до рота не візьму.

— І самі винні. Нормальне замовлення — це три речі: що саме ви хочете, де брати і, про всяк випадок, що робити, якщо щось піде не так — кухня закрита, страва закінчилася. Хоча це я вже забігаю наперед.

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

2. Що таке поля даних і як їх вибирати

— Продовжимо, — Льоха заводить поруч із проєктом коротку нотатку і дає їй імʼя: DATA_REQUEST. — Це бланк замовлення: що ми хочемо отримати і навіщо. Щоб не тримати все в голові.

І все. Далі мовчить. Тьома втупився в порожній бланк. З чого взагалі почати — незрозуміло.

— А що сюди писати? З чого починати?

— З полів. І поруч із кожним — навіщо воно вам потрібне та що дасть на екрані.

Цього вистачило. Тьома зрозумів, куди думати, і підсунув клавіатуру.

Поле, — пише Льоха, — це одна окрема штука про одну подію. Не «всі дані про землетрус, звалені докупи», а по клітинках. Сила поштовху — окремо. Місце — окремо. Час — окремо. Як в анкеті: прізвище в одній клітинці, дата народження — в іншій.

— Ага. Майже зрозуміло. І що нам брати?

Беріть тільки те, що справді зʼявиться на екрані. Якщо поле нікуди на екран не потрапить — зараз воно вам не потрібне. Не тягніть усе підряд про всяк випадок.

Тьома почав перебирати в голові: ось стався поштовх — що я про нього хочу показати? Силу поштовху. Де і коли. Щоб поставити точку — координати. І ще, мабуть, глибину. Кожне поле він подумки роняв на мапу: потрапить — беру, не потрапить — минаю. Пʼять штук лягли красиво.

# DATA_REQUEST
ДЖЕРЕЛО: публічний сервіс землетрусів
ПОЛЯ:     магнітуда, місце, координати, час, глибина

— А тепер обґрунтуй, — пише Льоха. — Навіщо вам кожне?

Тьома тицьнув у рядок і пішов зверху вниз:

  • магнітуда — сила поштовху, число на кшталт 4.2. Чим сильніший поштовх, тим більша точка.
  • місце — де сталося, словами: «120 км на південний захід від Акарі, Перу». Підпис, щоб було по-людськи.
  • координати — точка на глобусі в цифрах. Без них незрозуміло, куди ставити позначку.
  • час — коли трусонуло. За ним зрозуміємо, скільки хвилин минуло, тобто наскільки дані свіжі.
  • глибина — наскільки глибоко залягає осередок. Дрібниця, але хай буде.

— О, — відгукується Льоха. — Чуєш, як це звучить? Не «дай чогось справжнього», а пʼять конкретних полів, і під кожним — навіщо. Оце вже не хотілка.

Тьома знизав плечима — але усмішку стримати не зміг. Навіть трохи знітився: пʼять хвилин тому ніс повну маячню, а тут раптом говорить як людина, яка розуміє, що робить.

— Бланк каже, ЩО ми замовили, — продовжує Льоха. — Тепер друга половина: КУДИ кожне поле ляже на екрані. Інакше дані так і залишаться просто числами, які незрозуміло куди подіти.

У чат прилітає друга незнайома назва — DATA_SCHEMA-lite.

— Це про те, як воно виглядатиме. Далі самі. Думайте!

Ну гаразд — знову самому. Магнітуда — це що на екрані? Розмір. Свіжість — яскравість. Координати — куди поставити. Тьома набирає три рядки:

# DATA_SCHEMA-lite
· магнітуда → розмір точки
· свіжість (хвилин тому) → яскравість
· координати → позиція на мапі

Перечитав. Читається як меню: сильний поштовх — велика точка, свіжий — яскрава, старий — тьмяна, а місце задають координати. Поки набирав «магнітуда → розмір точки» — просто побачив картину в голові. І не рядок, а саму точку: велику, яскраву, на темній мапі. А «час → яскравість» — і ті самі точки гаснуть на очах: оця свіженька, ця вже старенька.

Точки різного розміру й яскравості вже стояли в нього перед очима.

— Гарно, — сказав він уголос.

— Гарно, — погоджується Льоха.

3. Закладаємо поведінку під час збою джерела

— А тепер скажи, — продовжує Льоха. — Що радар покаже, якщо сервіс із даними раптом не відповість? Завис, ліг під навантаженням, інтернет моргнув — хто зна.

Тьома відкрив рота з готовим «ну…» і завис.

— Нічого не покаже?

— Ось тут обережно, — пише Льоха. — Тиша буває двох видів, і їх легко сплутати. Перша: у світі зараз просто немає нових поштовхів. Тихо, спокійно, все чесно. Друга: сервіс не відповів — звʼязок обірвався, сервер ліг. Це зовсім інше. Не відрізните їх — радар або збреше «все спокійно», коли насправді не додзвонився, або почне панікувати на рівному місці.

— Тобто порожній білий екран — це взагалі не варіант?

— Не варіант. На цей випадок дописуємо в замовлення ще один рядок — план Б.

Тьома додав його в бланк:

FALLBACK: сервіс мовчить → тримаємо останній знімок + плашка «чекаю нові дані»

— Або показуємо останню картину, що встигла прийти, — каже Льоха, — або чесно пишемо «чекаю нові дані». Але не білий екран. І не брешемо, ніби дані є завжди.

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

— Це, виходить, треба одразу все це враховувати? — каже він. — Не потім?

— Одразу. Потім буде запізно.

— До речі, — додає Льоха, ніби між іншим. — Місце, де ми братимемо дані, — це не «інтернет загалом», а конкретний сервіс, який уміє відповідати на конкретні запити. Називається API. Поки просто запамʼятайте це слово, пізніше ми до цього ще повернемося.

Тьома подумки перевісив ярлик. Раніше в голові було розмите «десь у мережі». Тепер — «є конкретний сервіс API, який знає про землетруси». Поки просто запамʼятаймо.

— І ще, — Льоха на секунду серйознішає. — Полізете до справжніх сервісів — зʼявляться штуки, які агенту в чат кидати не можна. Без страшилок, просто зарубіть на майбутнє: скоро будуть ключі й паролі, і поводитися з ними треба дуже обережно, не так, як зі звичайним текстом.

— Ключі. Зрозумів: не кидати.

— Угу.

Тьома ще раз глянув на обидва бланки. Пів години тому він не міг вигадати нічого, крім «дані там якісь». А тепер на екрані — пʼять полів, схема того, як вони стануть точками, і рядок про те, що робити, якщо сервіс затупить. Earthquake Radar перестав бути просто красивою назвою: його вже можна віддати Сашкові в роботу. Майже.

Залишалося одне питання, і воно стирчало скалкою: як мій код узагалі добереться до цього сервісу?

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ