Сьогодні ми працюємо одразу з двома компʼютерами. Перший стоїть перед тобою. Другий — далеко, в іншому місті, і ти його ніколи не побачиш.
На уроці ти навчишся
На уроці 1 ти спробував подивитися, що лежить у теці однокласника. Сервер не пустив тебе далі й відповів відмовою.
На уроці ти навчишся
Урок 2 закінчився копією роботи на GitHub: у кого є акаунт, той заливав туди hello.sh і index.html кнопкою Commit changes. Подивимось, на що така копія відповідає, а на що ні. Акаунта немає — читай далі так само: уся сьогоднішня робота йде на сервері й акаунта не потребує.
На уроці ти навчишся
Продовження теми: тепер ти сам вимірюєш числа своєї мережі. Дивишся ім'я, MAC, IP і маску через ip a, шлях до сайту через traceroute, затримку через ping, а швидкість каналу міряєш тричі через curl -w і рахуєш середнє. У парі з однокласником перевіряєш сайт однокласника запитом curl -I.
На уроці ти навчишся
Ти розбираєш, як коливання повітря перетворюється на числа: частота дискретизації, розрядність, кількість каналів. За формулою рахуєш вагу хвилини нестисненого запису наперед, а потім звіряєш свій розрахунок із реальним файлом через ffprobe. Наприкінці робиш із WAV файл MP3 однією командою ffmpeg.
На уроці ти навчишся
З того самого source.wav ти робиш чотири файли різної якості, по одній команді на файл, і слухаєш їх у навушниках, щоб почути, де починається різниця. Свій вибір формату доводиш не словами, а числами: бітрейт і вага кожного файлу йдуть у report.csv. Аудіо лишається на твоєму комп'ютері, на сервер їде лише текст.
На уроці ти навчишся
Ти наближаєш фото до окремих квадратиків і бачиш, що зображення — це таблиця чисел, а вектор описує ті самі фігури інакше. Рахуєш, скільки сантиметрів завширшки вийде відбиток файлу на 1200 px, і вчишся обирати формат під конкретну картинку. Реальні параметри файлу читаєш командою identify, а зменшену копію робиш через magick -resize.
На уроці ти навчишся
Практична половина теми зображень. З одного source.png ти командами робиш чотири різні файли: мініатюру, JPEG низької якості, прозорий PNG і WebP, а п'ятий файл — logo.svg — пишеш руками, тег за тегом. Економію ваги рахуєш у відсотках і ставиш у таблицю на сторінці-галереї.
На уроці ти навчишся
Відео — це послідовність кадрів плюс доріжка звуку, і сьогодні ти розбираєш файл на ці складники. Справжні параметри дізнаєшся командою ffprobe, а не за назвою файлу, і розділяєш два різні поняття: кодек і контейнер. Наприкінці рахуєш вагу ролика наперед і перекодовуєш джерело в 720p30 однією командою ffmpeg.
На уроці ти навчишся
Ти збираєш ролик приблизно на 10 секунд без відеоредактора, самими командами. Вирізаєш фрагменти ключами -ss і -t, склеюєш їх через concat, накладаєш титр фільтром drawtext. Червоні рядки помилок ffmpeg читаєш і виправляєш сам, а весь монтаж описуєш текстом так, щоб той самий ролик можна було зібрати заново.
На уроці ти навчишся
Тип файлу задають перші байти всередині, а не букви після крапки — і сьогодні ти в цьому переконуєшся сам. Дивишся сигнатури десяти файлів набору, серед яких три з підміненим розширенням, і заповнюєш звіт detect.txt: ім'я, розширення, справжній MIME-тип, збіг. Заразом відкриваєш свій .docx як zip-архів і бачиш, з яких файлів він складений.
На уроці ти навчишся
Те, що минулого разу ти робив руками для десяти файлів, тепер робить скрипт — і робить однаково щоразу. detect.sh визначає тип за вмістом, convert.sh через розгалуження case обирає, у що перетворити файл, а підсумок скрипт записує в manifest.json. Окремо ти домагаєшся, щоб другий запуск нічого не зіпсував і не наплодив копій.
На уроці ти навчишся
Сьогодні готової картинки немає — є текст, за яким модель робить файл gen-1.png. Ти розбираєш, як із шуму виходить зображення, навіщо потрібен seed і з яких семи блоків складається запит. Параметри кожної генерації записуєш у prompts.json, а під картинкою підписуєш, що її зробила машина і яка саме.
На уроці ти навчишся
З одного задуму ти робиш чотири спроби поспіль, змінюючи в промпті одну річ за раз, і записуєш кожну ітерацію в prompts.json. Той самий підпис командою exiftool записує той самий підпис усередину самих файлів у поля XMP, а під галереєю ти прямо пишеш, що зробила людина, а що модель. Наприкінці — підсумковий тест по всіх семи темах модуля.
На уроці ти навчишся
На парті лежать окуляри, і кожен приміряє їх по черзі, а далі ви розбираєте намальовану кімнату на складники: точки, грані й картинку, натягнуту зверху. Ти розводиш поняття VR, AR і MR, з'ясовуєш, чому в окулярах стає зле, і чим 3DoF відрізняється від 6DoF. Наприкінці збираєш власну сцену з трьох фігур на A-Frame і кладеш її на сервер.
На уроці ти навчишся
Сцена з минулого уроку починає реагувати: об'єктів стає п'ять, один обертається сам через атрибут animation, другий рахує твої кліки і показує число написом просто в сцені. Друга робота дня — портфоліо: одна головна сторінка, з якої відкриваються всі вісім робіт модуля. Сцену ти показуєш на захисті, а адресу портфоліо можна дати будь-кому після курсу.
На уроці ти навчишся
/s/твій-логін/ · вхід на сервер: ssh твій-логін@91.219.61.4 · зміна пароля: passwd