8 клас — програма модуля

Study.UA · IT Skills · Hardware & Multimedia · 16 уроків · групи 8A
Один урок на тиждень. Нижче — що саме відбувається на кожному занятті, чого ти навчишся і що в тебе залишиться після нього. Уроки йдуть по порядку: кожен спирається на попередній.

Сьогодні ми працюємо одразу з двома компʼютерами. Перший стоїть перед тобою. Другий — далеко, в іншому місті, і ти його ніколи не побачиш.

На уроці ти навчишся

  • Модуль I · IT Skills (Hardware & Multimedia) · 120 хвилин
  • Той, що стоїть просто перед тобою
  • Програма, яка запускається першою
  • Дві системи, з якими ми працюємо сьогодні
  • Одне й те саме місце, два різні записи
Залишається в тебе: У сторінці є <title> з твоїм іменем; Ти хоча б раз зайшов на сервер по SSH; Стартовий пароль замінено на власний; Усі чотири теки на місці: www, upload, data, notes
ssh passwd whoami pwd ls mkdir echo "Це cat ~/notes/pershyi.txt
Відкрити урок 01

На уроці 1 ти спробував подивитися, що лежить у теці однокласника. Сервер не пустив тебе далі й відповів відмовою.

На уроці ти навчишся

  • Повертаємось рівно туди, де зупинилися
  • Місце, де можна щось зламати без наслідків
  • Та сама відмова — тепер на твоєму власному файлі
  • Три категорії, на які сервер ділить усіх користувачів
  • Роль визначає не людина, а пара «людина + файл»
Залишається в тебе: Ти заходив на сервер по SSH на цьому уроці; Є тека ~/permission-lab; У ній лежить hello.sh, перший рядок якого #!/bin/bash; У hello.sh є право на виконання у власника
ssh mkdir printf '#!/bin/bash\\necho ls ./hello.sh chmod printf 'Це nano ~/www/access/index.html
Відкрити урок 02

Урок 2 закінчився копією роботи на GitHub: у кого є акаунт, той заливав туди hello.sh і index.html кнопкою Commit changes. Подивимось, на що така копія відповідає, а на що ні. Акаунта немає — читай далі так само: уся сьогоднішня робота йде на сервері й акаунта не потребує.

На уроці ти навчишся

  • Повертаємось туди, де закінчився урок 2
  • Знак &gt; ти писав уже багато разів. Подивись, що він робить насправді
  • Записи є в обох. Різниця в тому, коли вони з'являються
  • Не версія одного файла, а знімок усієї теки
  • Вибір теки — не дрібниця, і зараз стане зрозуміло чому
Залишається в тебе: У ~/data/hardware-passport є репозиторій: усередині лежить тека .git; У ~/www і в її підтеках немає теки .git; В історії щонайменше три коміти; Повідомлення комітів непорожні й не повторюються
ssh git mkdir cp nano README.md nano index.html
Відкрити урок 03

Продовження теми: тепер ти сам вимірюєш числа своєї мережі. Дивишся ім'я, MAC, IP і маску через ip a, шлях до сайту через traceroute, затримку через ping, а швидкість каналу міряєш тричі через curl -w і рахуєш середнє. У парі з однокласником перевіряєш сайт однокласника запитом curl -I.

На уроці ти навчишся

  • знайти командою ip a адресу свого комп'ютера в мережі
  • заміряти командою ping, за скільки мілісекунд відповідає сервер
  • побачити командою traceroute усі машини на шляху до сайту
  • заміряти швидкість каналу тричі й порахувати середнє
  • записати вивід команди у файл і не втратити його з екрана
Залишається в тебе: Заповнена таблиця стенда 5 інтерфейсів на сторінці lesson-02, файл speed.txt із трьома замірами та середнім і файл peer.txt із результатом перевірки сайту однокласника.
traceroute і стрибки маршруту curl -w і curl -I RTT, TTL, втрати пакетів Мбіт/с проти МБ/с
Відкрити урок 04

Ти розбираєш, як коливання повітря перетворюється на числа: частота дискретизації, розрядність, кількість каналів. За формулою рахуєш вагу хвилини нестисненого запису наперед, а потім звіряєш свій розрахунок із реальним файлом через ffprobe. Наприкінці робиш із WAV файл MP3 однією командою ffmpeg.

На уроці ти навчишся

  • порахувати на аркуші, скільки мегабайтів займе хвилина запису
  • дізнатися командою ffprobe, з якою частотою записано твій файл
  • знайти у виводі команди бітрейт і тривалість
  • зробити з файлу WAV файл MP3 однією командою
  • сказати, коли брати WAV, коли FLAC, а коли MP3
Залишається в тебе: Локальна тека media/lesson-03/ із source.wav і out-320.mp3; на сервері у ~/www/lesson-03/ лежать probe-source.json та index.html із власним розрахунком ваги.
ffprobe і ffmpeg частота дискретизації і теорема Найквіста розрядність 8 / 16 / 24 біти WAV, FLAC, MP3
Відкрити урок 05

З того самого source.wav ти робиш чотири файли різної якості, по одній команді на файл, і слухаєш їх у навушниках, щоб почути, де починається різниця. Свій вибір формату доводиш не словами, а числами: бітрейт і вага кожного файлу йдуть у report.csv. Аудіо лишається на твоєму комп'ютері, на сервер їде лише текст.

На уроці ти навчишся

  • зробити з одного WAV чотири файли різної якості, по одній команді на кожен
  • почути на музиці, де саме починається різниця, і назвати цей файл
  • зібрати п'ять рядків чисел у файл report.csv
  • вибрати формат для свого телефона й підкріпити вибір своїми числами
Залишається в тебе: Чотири файли в media/lesson-03/ (три MP3 різного бітрейту й out.flac) і три текстові файли на сервері: report.csv, cmd.txt та index.html із таблицею.
бітрейт і ключ -b:a стиснення з втратами і без втрат FLAC звіт report.csv
Відкрити урок 06

Ти наближаєш фото до окремих квадратиків і бачиш, що зображення — це таблиця чисел, а вектор описує ті самі фігури інакше. Рахуєш, скільки сантиметрів завширшки вийде відбиток файлу на 1200 px, і вчишся обирати формат під конкретну картинку. Реальні параметри файлу читаєш командою identify, а зменшену копію робиш через magick -resize.

На уроці ти навчишся

  • наблизити фото до окремих квадратиків і сказати, скільки їх у рядку
  • порахувати, скільки сантиметрів завширшки буде відбиток файлу 1200 px
  • вибрати формат для картинки перед тобою: JPEG, PNG, WebP, SVG чи GIF
  • виконати identify source.png і прочитати кожне число з відповіді
  • зробити зменшену копію командою magick -resize
Залишається в тебе: Локальна тека media/lesson-04/ із source.png і thumb.jpg; на сервері у ~/www/lesson-04/ лежать identify.txt, cmd.txt та index.html.
ImageMagick: identify і magick -resize растр і вектор пікселі, роздільна здатність, dpi альфа-канал
Відкрити урок 07

Практична половина теми зображень. З одного source.png ти командами робиш чотири різні файли: мініатюру, JPEG низької якості, прозорий PNG і WebP, а п'ятий файл — logo.svg — пишеш руками, тег за тегом. Економію ваги рахуєш у відсотках і ставиш у таблицю на сторінці-галереї.

На уроці ти навчишся

  • зробити з одного source.png чотири файли: мініатюру, «поганий» JPEG, прозорий PNG і WebP
  • назвати вголос, що робить кожен ключ у твоїй команді magick
  • написати logo.svg руками: viewBox, фігури, текст, кольори
  • порахувати економію ваги у відсотках і поставити її в таблицю
Залишається в тебе: Файл logo.svg до 20 КБ, sizes.csv із заголовком file,format,width,height,bytes і чотирма рядками даних, cmd.txt із виконаними командами та сторінка-галерея у ~/www/lesson-04/.
ключі -resize і -quality -strip і метадані фото WebP SVG: viewBox і фігури
Відкрити урок 08

Відео — це послідовність кадрів плюс доріжка звуку, і сьогодні ти розбираєш файл на ці складники. Справжні параметри дізнаєшся командою ffprobe, а не за назвою файлу, і розділяєш два різні поняття: кодек і контейнер. Наприкінці рахуєш вагу ролика наперед і перекодовуєш джерело в 720p30 однією командою ffmpeg.

На уроці ти навчишся

  • сказати, чому цілий файл .mp4 не відкрився на телевізорі
  • однією командою ffprobe source.mp4 дізнатися розмір кадру, fps і кодек
  • порахувати наперед, скільки мегабайтів важитиме ролик на 60 секунд
  • пояснити, чому ролик зі слайдами легший за футбол тієї самої тривалості
  • зменшити ролик до 720p30 однією командою ffmpeg
Залишається в тебе: Локальна тека media/lesson-05/ із source.mp4 і v720p30.mp4; на сервері у ~/www/lesson-05/ лежать probe.txt, cmd.txt та index.html із розрахунком ваги.
ffprobe fps і роздільна здатність бітрейт як вага секунди кодек проти контейнера (MP4, MKV, WebM)
Відкрити урок 09

Ти збираєш ролик приблизно на 10 секунд без відеоредактора, самими командами. Вирізаєш фрагменти ключами -ss і -t, склеюєш їх через concat, накладаєш титр фільтром drawtext. Червоні рядки помилок ffmpeg читаєш і виправляєш сам, а весь монтаж описуєш текстом так, щоб той самий ролик можна було зібрати заново.

На уроці ти навчишся

  • вирізати з довгого відео потрібні три секунди однією командою, без відеоредактора
  • склеїти кілька вирізаних фрагментів в один ролик і полагодити склейку, якщо вона не вийшла
  • написати поверх картинки свій підпис і поставити його в потрібний кут
  • прочитати рядок помилки і сказати, що саме виправити
  • описати монтаж текстом так, щоб той самий ролик зібрався з нуля
Залишається в тебе: Ролик final.mp4 і кадр poster.jpg лишаються на твоєму комп'ютері; на сервер їдуть чотири текстові файли: cmd.txt, probe.txt, report.csv та index.html із монтажним листом.
ключі -ss, -t, -to склейка concat фільтр drawtext згасання fade
Відкрити урок 10

Тип файлу задають перші байти всередині, а не букви після крапки — і сьогодні ти в цьому переконуєшся сам. Дивишся сигнатури десяти файлів набору, серед яких три з підміненим розширенням, і заповнюєш звіт detect.txt: ім'я, розширення, справжній MIME-тип, збіг. Заразом відкриваєш свій .docx як zip-архів і бачиш, з яких файлів він складений.

На уроці ти навчишся

  • сказати, що всередині файлу насправді, навіть коли розширення не відповідає вмісту
  • подивитися перші байти будь-якого файлу однією командою — у Git Bash або в PowerShell
  • заповнити звіт на десять файлів: ім'я, розширення, справжній тип і чи вони збіглися
  • відкрити свій .docx як архів і показати, з яких файлів він складений
  • пояснити, чому картинка з сервера інколи не показується, а завантажується
Залишається в тебе: Три текстові файли у ~/www/lesson-06/: detect.txt на десять рядків у форматі «ім'я | розширення | MIME-тип | збіг», signatures.md та index.html; сам набір лишається локально.
сигнатура файлу (magic number) xxd і шістнадцяткові байти MIME-тип у форматі тип/підтип unzip -l
Відкрити урок 11

Те, що минулого разу ти робив руками для десяти файлів, тепер робить скрипт — і робить однаково щоразу. detect.sh визначає тип за вмістом, convert.sh через розгалуження case обирає, у що перетворити файл, а підсумок скрипт записує в manifest.json. Окремо ти домагаєшся, щоб другий запуск нічого не зіпсував і не наплодив копій.

На уроці ти навчишся

  • обробити цілу теку файлів однією командою замість сотні кліків
  • написати скрипт, який сам дивиться, що всередині файлу, і залежно від цього обирає конвертацію
  • зробити скрипт ідемпотентним: другий запуск нічого не ламає
  • скласти звіт manifest.json, у якому числа не суперечать одне одному
  • знайти, на чому саме впав скрипт, і виправити це місце
Залишається в тебе: Чотири файли у ~/www/lesson-06/: detect.sh, convert.sh, manifest.json та index.html, який показує таблицю через fetch; тека out/ і сам набір лишаються на твоєму комп'ютері.
розгалуження case set -e і перевірка bash -n ідемпотентність JSON і fetch
Відкрити урок 12

Сьогодні готової картинки немає — є текст, за яким модель робить файл gen-1.png. Ти розбираєш, як із шуму виходить зображення, навіщо потрібен seed і з яких семи блоків складається запит. Параметри кожної генерації записуєш у prompts.json, а під картинкою підписуєш, що її зробила машина і яка саме.

На уроці ти навчишся

  • пояснити, звідки береться картинка, якої ніде не існувало
  • скласти запит із семи блоків і дописати список того, чого на картинці бути не повинно
  • записати seed, щоб завтра повторити вдалу картинку
  • знаходити сліди машини: зайві пальці, криві літери, неправильні тіні
  • підписати роботу так, щоб було видно: тут працював ШІ
Залишається в тебе: Файл gen-1.png лишається в локальній теці media/lesson-07/; на сервер їдуть prompts.json із записом генерації (модель, параметри, seed) та index.html із маркуванням.
дифузія і латент seed сім блоків промпта маркування згенерованого зображення
Відкрити урок 13

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

На уроці ти навчишся

  • міняти в промпті одну річ за раз і записувати, що з цього вийшло
  • однією командою прочитати текст, захований усередині .png
  • вписати своє ім'я і джерело зображення в метадані файлу
  • підписати роботу так, щоб не було питання «а це точно ти зробив?»
  • показати на картинці конкретну ваду і назвати її причину
Залишається в тебе: Три текстові файли у ~/www/lesson-07/: prompts.json на чотири записи, exif.txt і index.html із галереєю та атрибуцією; поле Description у exif.txt збігається з полем prompt у prompts.json.
exiftool метадані XMP: Creator, Credit, Description чанки tEXt та iTXt у PNG чесна атрибуція роботи людини й моделі
Відкрити урок 14

На парті лежать окуляри, і кожен приміряє їх по черзі, а далі ви розбираєте намальовану кімнату на складники: точки, грані й картинку, натягнуту зверху. Ти розводиш поняття VR, AR і MR, з'ясовуєш, чому в окулярах стає зле, і чим 3DoF відрізняється від 6DoF. Наприкінці збираєш власну сцену з трьох фігур на A-Frame і кладеш її на сервер.

На уроці ти навчишся

  • розрізняти на око, де VR, де AR, а де MR, і пояснювати чому
  • розібрати 3D-предмет на точки, грані й текстуру зверху
  • пояснити, чому в окулярах стає зле і як цього уникнути
  • перевірити, чи помічає пристрій, що ти зробив крок убік
  • зібрати свою першу сцену й покласти її на сервер
Залишається в тебе: Сцена index.html із трьох об'єктів і файл game-design.json із задумом гри у теці ~/www/lesson-08/; бібліотека aframe.min.js підключена з твоєї власної адреси, а не з чужого сайту.
A-Frame і теги a-scene, a-box полігон, меш, текстура 3DoF проти 6DoF частота кадрів і затримка
Відкрити урок 15

Сцена з минулого уроку починає реагувати: об'єктів стає п'ять, один обертається сам через атрибут animation, другий рахує твої кліки і показує число написом просто в сцені. Друга робота дня — портфоліо: одна головна сторінка, з якої відкриваються всі вісім робіт модуля. Сцену ти показуєш на захисті, а адресу портфоліо можна дати будь-кому після курсу.

На уроці ти навчишся

  • читати розмітку сцени по рядках і пояснювати кожен атрибут
  • запускати рух одним атрибутом, без жодного рядка JavaScript
  • робити предмет клікабельним і рахувати кліки написом у сцені
  • знаходити причину чорного екрана за одну хвилину, а не за урок
  • зібрати головну сторінку з восьми посилань і перевірити кожне
Залишається в тебе: Сцена з п'яти об'єктів з анімацією та лічильником кліків у ~/www/lesson-08/ і головна сторінка ~/www/index.html, де всі вісім посилань віддають код 200.
атрибут animation в A-Frame обробник кліку і тег a-text консоль браузера для пошуку помилок код відповіді 200
Відкрити урок 16
Твій сайт: /s/твій-логін/ · вхід на сервер: ssh твій-логін@91.219.61.4 · зміна пароля: passwd