Python мануфактураJavaDesign Patterns для автоматизаторів

Терміни, нюанси та джерела

Нюанс · 1:23

Shortcuts залежать від keymap

Комбінації клавіш у відео показані на macOS і частково налаштовані автором. Знаходьте дію за назвою в меню або Settings → Keymap і перевіряйте локальну комбінацію та конфлікти.

Майструємо IDE під себе →

Python мануфактура · Сесії: AMA та PMP · 14:10–15:08

Доступ і межі демонстрації

Наприкінці показано account flow Diduny через email і one-time password та згадано тимчасовий розширений доступ для учасників курсу. Також наголошено на правильному виборі microphone і transcription mode в settings. Усі продемонстровані продукти на той момент перебували в активній розробці: частина функцій, pricing і platform support могла змінитися після запису.

Корисні застосунки та їхнє призначення →

Java: архівні доповнення · 0:00–2:10

GitHub-акаунт і авторизація в JetBrains IDE

Спочатку потрібно створити та підтвердити GitHub-акаунт. У settings JetBrains IDE знаходиться розділ GitHub, де можна увійти через browser authorization. У відео також згадується personal access token як альтернатива. Ця авторизація дає IDE можливість створювати, клонувати та оновлювати repositories.

Публікація Java-проєкту на GitHub →

Python мануфактура · Програма курсу · 1:50–3:18

JetBrains Toolbox і PyCharm

PyCharm зручно встановлювати через JetBrains Toolbox: він керує версіями IDE та її оновленнями. Обліковий запис JetBrains дає змогу синхронізувати тему, шрифти, гарячі клавіші, плагіни й інші налаштування між комп’ютерами. PyCharm — основне середовище розробки для Python у цьому курсі. Вбудоване навчання можна пройти окремо, але необхідні для курсу дії автор показуватиме безпосередньо під час занять.

1. Налаштування PyCharm, JetBrains Toolbox, створення проєкту та структура проектів →

Python мануфактура · Програма курсу · 3:00–6:00

Генерація ключа, passphrase і 2FA

Показано генерацію ключа командою `ssh-keygen` з email-коментарем, вибір шляху збереження та введення passphrase. Символи passphrase в терміналі не відображаються — це нормальна поведінка. Публічну частину додають у GitHub Settings → SSH and GPG keys. Приватну частину не копіюють у GitHub, чати або репозиторій. Додатково рекомендується ввімкнути двофакторну автентифікацію. Після зміни налаштувань автентифікації IDE може знадобитися перезапуск.

2. Git Workflow у PyCharm/IntelliJ →

Python мануфактура · Програма курсу · 7:07–13:05

Власні postfix templates для Playwright

`Postfix Completion` налаштовується через Settings (`⌘,` на macOS). Postfix template застосовується до виразу ліворуч від крапки. Спеціальна змінна `$EXPR$` означає цей вираз, а `$END$` визначає, де залишиться курсор після розгортання. Створено кілька Python-шаблонів: - `"selector".locator` перетворює селектор на `page.locator("selector")`; - вираз із postfix `expect` обгортається в `expect(...)`; - скорочений варіант на кшталт `expvis` одразу створює `expect(...).to_be_visible()`. Під час першого налаштування `locator` вираз помилково був додатково взятий у лапки, через що PyCharm формував неправильний код. Після виправлення `$EXPR$` підставляється як готовий вираз. Це важливе правило: шаблон має додавати лише відсутню структуру, а не повторно форматувати вже валідний фрагмент. Такий ланцюжок скорочує типовий шлях до перевірки: знайти селектор, вставити його як рядок, застосувати `.locator`, а потім `.expvis`. Результат детермінований і не потребує повторної перевірки припущень генеративної моделі.

Майструємо IDE під себе →

Python мануфактура · Програма курсу · 8:05–8:44

Вигляд IDE й доступність

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

1. Налаштування PyCharm, JetBrains Toolbox, створення проєкту та структура проектів →

Python мануфактура · Сесії: AMA та PMP · 15:35–18:42

Чому перевірки лише status code недостатньо

Тест, який перевіряє тільки `200 OK`, пропустить відсутнє поле, `null`, порожній рядок або неправильний mapping. Навіть перевірка переліку полів не гарантує правильного типу чи змісту. Deserialization і schema validation дають дешевий базовий захист: response приводиться до строгої моделі, тому тест одразу виявляє відсутнє поле або неправильний тип. Для цього згадуються інструменти на кшталт Zod у TypeScript і Pydantic у Python. Окремо треба врахувати serializer settings: backend може зовсім вилучати з JSON поля зі значенням `null`.

Міграція бази даних і тестування даних →

Python мануфактура · Програма курсу · 18:14–21:24

Власні скорочення для створення файлів

Створення Page Object постійно починається з нового Python-файлу. У Project view командою `⌘N` відкривається меню `New`, яке можна фільтрувати простим набором `Python` і вибрати `Python File` або `Python Package` без мишки. Щоб скоротити шлях ще більше, у `Settings → Keymap` знайдено відповідні дії й призначено власні комбінації: одну для Python-файлу, іншу для Python-пакета. Конкретні клавіші не є універсальним стандартом — їх слід обирати під власну ОС і перевіряти на конфлікти в keymap. У меню створення також видно вбудовані шаблони на кшталт Python unit test. Вони демонструють наступний рівень автоматизації: IDE може створювати не порожній файл, а одразу потрібну початкову структуру.

Майструємо IDE під себе →

Python мануфактура · Програма курсу · 21:24–27:20

File template для Page Object

Page Object і Page Component мають повторювану основу: імпорти Playwright, клас, `__init__`, збереження `page`, базову перевірку завантаження та часто `return self`. Замість копіювання цієї «шапки» створено власний шаблон у `Settings → Editor → File and Code Templates`. У file template змінна `${NAME}` підставляє назву, яку вводять під час створення файлу. Після збереження в меню `New` з’являється окремий тип `Page Object`; вибір цього пункту створює клас з підготовленими імпортами й методами. Під час live coding шаблон кілька разів виправляється: додаються пропущені `self`, закривається дужка, коригуються відступи. Це нормальний цикл налаштування: створити пробний файл, дочекатися синтаксичних та інспекційних підказок IDE, виправити шаблон і повторити генерацію. Перевіряти потрібно саме згенерований файл, а не лише текст у вікні налаштувань. Оскільки поточні Page Object і Page Component мають однакову основу, одного file template достатньо. Окремі шаблони варто додавати лише тоді, коли їхня структура реально розійдеться.

Майструємо IDE під себе →

Python мануфактура · Програма курсу · 32:20–38:42

Live templates для методів і повторюваних блоків

На відміну від postfix template, `Live Template` розгортається в місці курсора з короткої абревіатури. У Settings створюється окрема група шаблонів для проєкту або Playwright, а контекст обмежується Python-файлами. Це не дає шаблону випадково з’являтися в нерелевантних типах файлів. У шаблоні методу використовуються змінні для назви функції, аргументів або локатора та `$END$` для фінальної позиції курсора. Після розгортання `Tab` переходить між редагованими полями. Якщо автоматичне перетворення назви в `snake_case` не працює передбачувано, простіше залишити явне введення назви, ніж ускладнювати шаблон. На основі реального сценарію створено заготовку методу, який приймає дані, знаходить елемент через `self.page.locator(...)`, виконує дію й повертає `self`. Потім метод перейменовується рефакторингом IDE, щоб назва оновилась і в оголошенні, і у виклику.

Майструємо IDE під себе →
Запитати в чаті про «settings» →