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

Публікації

Шпаргалка по Docker та Docker Compose

Docker - Робота з образами Завантаження образу docker pull nginx docker pull nginx:latest docker pull nginx:1.21 Список локальних образів docker images docker image ls Видалення образу docker rmi nginx docker rmi nginx:1.21 docker image rm nginx Видалення всіх невикористовуваних образів docker image prune docker image prune -a Побудова образу з Dockerfile docker build -t myapp:1.0 . docker build -t myapp:latest -f Dockerfile.prod . Тегування образу docker tag myapp:1.0 myapp:latest docker tag myapp:1.0 myregistry.com/myapp:1.0 Відправлення образу в registry docker push myregistry.com/myapp:1.0 Docker - Робота з контейнерами Запуск контейнера docker run nginx docker run -d nginx docker run -d --name mynginx nginx docker run -d -p 8080:80 nginx docker run -d -p 8080:80 -v /host/path:/container/path nginx docker run -d -e MY_VAR=value ...

Встановлення Visual Studio Code на Ubuntu

Visual Studio Code (VS Code) — це потужний, легкий та кросплатформний редактор коду, який став стандартом для розробників завдяки універсальності та швидкості роботи. Він підтримує Windows, Linux і macOS, запускається швидше за повноцінні IDE, але водночас може перетворюватися на повнофункціональне середовище розробки завдяки тисячам розширень. VS Code має продуману архітектуру, інтуїтивний інтерфейс, вбудований термінал та інтелектуальну систему автодоповнення на базі Language Server Protocol, що забезпечує високоякісну підтримку синтаксису для багатьох мов програмування. Серед ключових можливостей — розумне автодоповнення коду (IntelliSense), навігація між класами, символами та файлами, рефакторинг, форматування коду, інтеграція з Git, підтримка віддаленої розробки через SSH або контейнерні середовища (Dev Containers). Завдяки відлагоджувачу (debugger), який налаштовується під будь-яку мову, розробник може запускати код у контрольованому середовищі, ставити брейкпоїнти, переглядат...

Керуючі конструкції в Elixir

Elixir пропонує різноманітні керуючі конструкції для управління потоком виконання програми. На відміну від імперативних мов, всі конструкції в Elixir повертають значення, що робить код більш виразним. if та else Конструкція if перевіряє умову і виконує код відповідно до результату: # Базовий синтаксис if true do "Це буде виконано" else "Це не буде виконано" end # Однорядковий варіант if connected?, do: "Підключено", else: "Відключено" # Присвоєння результату message = if age >= 18 do "Ви повнолітній" else "Ви неповнолітній" end # Без else (повертає nil) if user_logged_in? do show_dashboard() end Примітка: В Elixir тільки false і nil вважаються хибними. Всі інші значення (включаючи 0, "", []) вважаються істинними. unless Конструкція unless — це протилежність if, виконується коли умова хибна: # ...

Pull Request на GitHub

Ця інструкція показує, як зробити pull request у приватному репозиторії GitHub у цільову гілку dev . Наведено два сценарії: коли у тебе є права write (можна пушити напряму) і коли є лише read (потрібен fork). 1. Підготовка — клонування репозиторію Якщо ще не клоновано репозиторій на локальну машину: git clone git@github.com:OWNER/REPO.git cd REPO 2. Перевірити і оновити гілку dev Переконайся, що працюєш від актуальної бази: git checkout dev git pull origin dev 3. Створити нову гілку для змін Назви гілку зрозуміло (наприклад feature/add-search або bugfix/login-fix ): git checkout -b my-feature-branch 4. Внести зміни і закомітити # Редагуєш файли в редакторі... git add . git commit -m "Опис змін: додано ... / виправлено ..." 5. Сценарій A — У тебе є права запису (write access) Якщо власник репозиторію дав тобі права write , ти можеш пушити прямо в оригінальний репозиторій: git push origin my-feature-branch Потім на GitHub:...

Зіставлення по зразку в Elixir

Зіставлення по зразку (pattern matching) — це одна з найпотужніших можливостей мови Elixir. Це не просто присвоєння значень змінним, а механізм для деструктуризації даних та перевірки їхньої структури. Основи зіставлення В Elixir оператор = — це не оператор присвоєння, а оператор зіставлення. Він намагається зробити ліву частину рівною правій. # Проста змінна x = 1 # x тепер дорівнює 1 # Зіставлення зі значенням 1 = x # Це працює, тому що x = 1 # Помилка зіставлення 2 = x # ** (MatchError) no match of right hand side value: 1 Зіставлення зі списками Зіставлення дозволяє витягувати елементи зі списків: # Зіставлення всього списку [a, b, c] = [1, 2, 3] # a = 1, b = 2, c = 3 # Виділення голови та хвоста [head | tail] = [1, 2, 3, 4] # head = 1, tail = [2, 3, 4] # Ігнорування елементів [_, second, _] = [10, 20, 30] # second = 20 Зіставлення з кортежами Кортежі часто використовуються для зістав...

Шпаргалка по командах Laravel

Ініціалізація проєкту Створити новий проєкт Laravel за допомогою глобального інсталятора. laravel new project-name Створити новий проєкт Laravel через Composer. composer create-project laravel/laravel project-name Запуск локального сервера Запустити вбудований локальний сервер Laravel. php artisan serve Міграції Створити файл міграції. php artisan make:migration create_users_table Виконати всі міграції. php artisan migrate Перестворити базу даних з нуля. php artisan migrate:fresh Відкотити останню міграцію. php artisan migrate:rollback Перевірити статус міграцій. php artisan migrate:status Сідери (Seeders) Сідери (Seeders) — використовуються для автоматичного заповнення бази даних тестовими або початковими даними. Це зручно при розробці або при розгортанні проєкту на новому сервері. Створити Seeder для заповнення бази даних. php artisan make:seeder UsersTableSeeder Запустити всі Seeder-и. php artisan db:seed Запустити конкретний Seeder. php artisan db:seed...

ООП у TypeScript

Короткий вступ TypeScript додає статичну типізацію поверх JavaScript і підтримує класичні концепти ООП: класи , успадкування , інтерфейси , інкапсуляцію , поліморфізм та абстракції . Нижче — практичні приклади та пояснення. Класи — декларація, конструктор, властивості та методи class Person { public name: string; private age: number; protected email?: string; // необов’язкове static species = 'Homo sapiens'; constructor(name: string, age: number, email?: string) { this.name = name; this.age = age; this.email = email; } public greet(): string { return `Hi, I'm ${this.name}.`; } private getBirthYear(currentYear: number): number { return currentYear - this.age; } } const p = new Person('Ivan', 30, 'ivan@example.com'); console.log(p.greet()); // console.log(p.age); // помилка: 'age' приватне console.log(Person.species); Успадкування і перевизначення (extends, super) class Employee extends Person { ...

Встановлення розміру swap на Ubuntu

Swap дозволяє економити оперативну пам'ять, викоористовуючи замість цього для деяких даних жорсткий диск. Перевірити розмір диску виділеної під swap: free -h або swapon --show Створити swap-файл (в даному випадку 2 Гб): sudo fallocate -l 2G /swapfile Встановити права доступу: sudo chmod 600 /swapfile Ініціалізація swap: sudo mkswap /swapfile Активація: sudo swapon /swapfile Для того, щоб зробити використання постійним, відкрийте файл з налаштуваннями: sudo nano /etc/fstab та додайте в кінець рядок: /swapfile none swap sw 0 0 Оптимізація використання swap: echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf sudo sysctl -p

Дамп бази даних Postgresql локально

Що потрібно встановити локально (Ubuntu) Встанови клієнтські утиліти PostgreSQL: pg_dump , psql , pg_restore . sudo apt update sudo apt install postgresql-client Кроки міграції Ідея: не зберігати дамп на серверах. Зробити дамп з віддаленого сервера на свій локальний ПК, потім передати його на новий сервер і там відновити. 1) Створення дампу з віддаленого сервера локально pg_dump -h OLD_SERVER_IP -U OLD_USER -Fc -d OLD_DB -f dump_file.dump Пояснення ключів: -h (хост), -U (користувач), -Fc (custom format), -d (БД), -f (вихідний файл локально). 1.1) Варіант з розбиттям на частини (якщо треба) pg_dump -h OLD_SERVER_IP -U OLD_USER -Fc -d OLD_DB | split -b 10G - dump_file.dump.part_ Це створить локально файли типу dump_file.dump.part_aa , dump_file.dump.part_ab тощо. 2) Передача дампу на новий сервер Один файл: scp dump_file.dump NEW_USER@NEW_SERVER_IP:/tmp/ Або частинами: scp dump_file.dump.part_* NEW_USER@NEW_SERVER_IP:/tmp/ 3) Збирання файл...

Створення проєкту на TypeScript, модулі

Крок 1. Ініціалізація проєкту Спочатку створимо нову теку та ініціалізуємо Node.js-проєкт за допомогою npm : mkdir my-typescript-app cd my-typescript-app npm init -y Крок 2. Встановлення TypeScript Додаємо TypeScript як dev-залежність: npm install --save-dev typescript ts-node @types/node - typescript — компілятор TypeScript - ts-node — дозволяє запускати TS-файли без попередньої компіляції - @types/node — типи для стандартних Node.js API Крок 3. Створення файлу tsconfig.json Ініціалізуємо конфігурацію TypeScript: npx tsc --init Приклад файлу tsconfig.json { "compilerOptions": { "target": "ES2020", // Версія JS у вихідному коді "module": "CommonJS", // Система модулів (для Node.js) "rootDir": "src", // Вхідна папка з TypeScript-кодом "outDir": "dist", // Куди компілюється код JS "str...