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

Публікації

Керуючі конструкції в 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...

Основи Next.js

Що таке Next.js? Next.js — це прогресивний фреймворк для розробки веб-застосунків на основі React. Він розширює можливості React, додаючи готову інфраструктуру для Server-Side Rendering (SSR), генерації статичних сторінок, маршрутизації через файлову систему, а також можливість створювати backend-ендпоінти прямо в проєкті. Чому він став популярним? Next.js швидко здобув популярність завдяки тому, що пропонує: SEO-дружні сторінки завдяки SSR / SSG; швидкий перший рендер (First Page Load); просту маршрутизацію без налаштування; розгортання в один клік через Vercel; вбудовану оптимізацію зображень та продуктивності. Чим відрізняється від класичного React У класичному React ми отримуємо лише клієнтську бібліотеку для побудови UI-компонентів. Усе інше (SSR, маршрути, API) треба налаштовувати вручну або через сторонні бібліотеки (наприклад, React Router, Redux, Express, etc.). Next.js — це уже повноцінний фреймворк. Він одразу має: серверний рендеринг...

Інструменти для роботи з Node.js

Що таке npm? npm (Node Package Manager) — це офіційний пакетний менеджер для Node.js . Він дозволяє: Встановлювати сторонні бібліотеки та фреймворки Керувати залежностями проєкту Запускати скрипти (команди) через package.json Приклад ініціалізації проєкту з npm npm init -y Файл package.json (скорочений приклад) { "name": "my-project", "version": "1.0.0", "scripts": { "start": "ts-node src/index.ts", "build": "tsc" }, "dependencies": { "express": "^4.18.0" }, "devDependencies": { "typescript": "^5.0.0", "ts-node": "^10.0.0" } } Що таке tsconfig.json? tsconfig.json — це файл конфігурації для компілятора TypeScript, який визначає, як слід компілювати код. Приклад файлу tsconfig.json { "compilerOptions": { "target": "ES2020...