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

Публікації

LaTeX

LaTeX LaTeX — це потужна мова розмітки документів, що забезпечує професійну типографіку, неперевершену підтримку математичних формул, чітку структуризацію документів, автоматичну нумерацію та перехресні посилання, ефективне керування бібліографією та широкі можливості розширення завдяки пакетам. Хоча LaTeX вимагає вивчення команд, він є ідеальним інструментом для створення високоякісних наукових, технічних та інших документів. Встановлення на Ubuntu Для встановлення LaTeX на Ubuntu можна використати такі команди: sudo apt update sudo apt install texlive-full Варто враховувати, що повна установка займе більше 6Gb і певний час. Альтернативою є встановлення базової версії з подальшим додаванням необхідних пакетів sudo apt update sudo apt install texlive-latex-base Якщо в LaTeX-документах передбачається використання програмного коду, то для його підсвітки можна використовувати minted . Підсвічування в minted працює не через сам LaTeX, а через зовнішній інструмент Pygments . Тобто ...

Параметри створення Angular-проєкту

Angular-проєкт можна створити командою : ng new project-name Основні параметри цієї команди наведені в таблиці. Аргумент Опис --directory Ця опція використовується для вказання назви директорії проєкту. За замовчуванням збігається з назвою проєкту. --force Якщо значення true , ця опція перезаписує всі наявні файли. --minimal Ця опція створює проєкт без додавання підтримки фреймворків для тестування. --package-manager Ця опція використовується для вказання менеджера пакетів, який буде використовуватися для завантаження та встановлення потрібних пакетів Angular. Якщо не вказано, буде використано NPM. Інші варіанти: yarn, pnpm, cnpm. Стандартний менеджер підходить для більшості проєктів. --prefix Ця опція додає префікс до всіх селекторів компонентів. --routing Ця опція використовується для створення модуля маршрутизації у проєкті. --skip-git Вико...

Створення нового Elixir-проєкту

Для створення новго Elixir-проєкту можна використати команду mix new first_project --sup Зрозуміло, що Elixir має бути встановлений раніше. Пояснення команди: mix — це вбудований інструмент для управління проєктами в Elixir (аналог maven у Java чи npm у JavaScript ). new — підкоманда mix, яка створює новий проєкт. first_project — назва твого нового проєкту. Папка з цією назвою буде створена у поточному каталозі. --sup — опціональний прапорець, який додає шаблон структури з Supervision Tree. Це означає, що створений проєкт одразу буде мати структуру, яка підтримує супервізор (супервізор керує життєвим циклом процесів у системі, перезапускаючи їх при падінні). Щоб створити файл з тестом, можна запустити команду із директорії проєкту mix test Приблизний вигляд структури проєкту:

Агрегати в DDD

Domain-Driven Design (DDD, предметно-орієнтоване проєктування) — це підхід до розробки програмного забезпечення, який зосереджується на моделюванні бізнес-логіки на основі реального домену (предметної області). Його запропонував Ерік Еванс у своїй книзі "Domain-Driven Design: Tackling Complexity in the Heart of Software". Основні принципи DDD Фокус на домені – головна увага приділяється предметній області, а не технічним деталям. Єдина мова (Ubiquitous Language) – розробники, бізнес-аналітики та інші учасники проєкту використовують спільну термінологію, щоб уникнути непорозумінь. Бізнес-логіка відокремлена від технічної реалізації – код моделюється так, щоб він чітко відображав реальний бізнес-процес. Основні концепції DDD Entity (Сутність) – об’єкт з унікальним ідентифікатором, що зберігається в системі (наприклад, Користувач, Замовлення). Value Object (Об’єкт-значення) – об’єкт, який не має унікального ідентифікатора та є незмінним (наприклад, Адреса або Гроші)...

Стратегії ребалансування в Kafka

Стратегії ребалансування в Kafka Ребалансування (Rebalancing) — це процес перерозподілу партицій між споживачами (сonsumer) у групі (Consumer Group). Kafka має кілька стратегій ребалансування: RangeAssignor. Ця стратегія розподіляє партиції на основі діапазонів, які створюються відповідно до сортування топіків і партицій. Наприклад, якщо є два консюмери і 6 партицій (P0–P5), перший консюмер отримає P0–P2, а другий — P3–P5. Особливості: Простий алгоритм. Може призводити до нерівномірного розподілу, якщо кількість партицій не ділиться порівну між консюмерами. RoundRobinAssignor. Ця стратегія рівномірно розподіляє партиції між консюмерами за круговим принципом. Наприклад, якщо є два консюмери і 6 партицій, перший отримає P0, P2, P4, а другий — P1, P3, P5. Особливості: Гарантує більш рівномірний розподіл партицій. Використовується в багатотопікових сценаріях. StickyAssignor. Ця стратегія намагається мінімізувати кількість змін у розподілі партицій між консюмерами при ре...

Основи Elixir

Elixir — це функційна мова програмування, яка працює на віртуальній машині Erlang (BEAM). Вона призначена для створення масштабованих і відмовостійких систем. Elixir успадкував багато переваг Erlang, таких як легкість паралельного програмування та висока доступність, але також додав сучасний синтаксис та інструменти для розробки. Основні концепції Elixir Elixir є функційною мовою, тому вона орієнтована на використання функцій та незмінних даних. Ось декілька ключових концепцій: Незмінність даних. Усі дані в Elixir є незмінними, що спрощує роботу з паралельними процесами. Функції. Функції є основним будівельним блоком програми. Вони можуть бути анонімними або іменованими. Паттерн-матчинг. Elixir використовує паттерн-матчинг для роботи з даними, що дозволяє легко розбирати структури даних. Процеси. Elixir використовує легкі процеси для паралельного виконання завдань. Ці процеси ізольовані та спілкуються через передачу повідомлень. Синтаксис Elixir Синтаксис Elixir є прос...

Основні поняття Apache Kafka

Producer - клієнт, який генерує (публікує) повідомлення в Kafka-топік. Може відправляти повідомлення в конкретну партицію (використовуючи ключ) або дозволяти Kafka автоматично вибирати партицію. Підтримує acknowledgments для підтвердження успішного запису. Consumer - клієнт, який читає повідомлення з Kafka-топіка. Консюмери об'єднуються в групи споживачів (consumer groups), щоб розподіляти навантаження. Кожна партиція обробляється лише одним консюмером у межах групи. Message - основна одиниця даних у Kafka. Складається з ключа (optional), значення (дані) та метаданих. Зберігається у партиції топіка. Topic - логічна категорія або ім'я каналу, через який Kafka передає дані. Дані в Kafka організовані в топіки. Кожен топік може мати одну або більше партицій. Споживачі (consumers) читають дані із заданих топіків. Partition - фізичний підрозділ топіка, який зберігає впорядковану послідовність повідомлень. Повідомлення у партиції мають унікальний offset (зміщення). Партиції р...

Регулярні вирази в JavaScript

Створення регулярних виразів Регулярні вирази в JavaScript можна створити одним із наступних способів: let reg1 = new RegExp("abc"); let reg2 = /abc/; Основні можливості та метод test() Метод test() дозволяє перевірити, чи відповідає наступний текст регялрному виразу. console.log(reg1.test("abcd")); //true console.log(reg2.test("abbcd")); //false Регуоярний вираз для перевірки наявності цифр в рядку: console.log(/[0-9]/.test("year 2025")); //true console.log(/[0-9]/.test("this year")); //false Часто використовуються наступні позначення: \d - будь-яка цифра \w - алфавітно-цифровий символ \s - пробільний символ (пробіл, табуляція, новий рядок) \D - не цифра \W - не алфавітно-цифровий символ \S - не пробільний символ . - будь-який символ окрім переведення рядка Для інверсії можна використати символ ^ . Наприклад: let notBinary = /[^01]/; console.log(notBinary.test("1040011210101110")); //tru...

Встановлення Elixir на Ubuntu

Мова програмування Erlang Erlang — це функційна мова програмування, створена в 1987 році шведською компанією Ericsson для розробки телекомунікаційних систем. Основною її метою є забезпечення високої надійності, масштабованості та паралельності, що робить її ідеальною для систем, які потребують обробки великої кількості одночасних запитів, наприклад, телефонні станції, месенджери або ігрові сервери. Головною особливістю Erlang є його модель акторів, яка використовується для паралельного програмування. Кожен процес в Erlang є незалежним і взаємодіє з іншими через передачу повідомлень, що забезпечує відмовостійкість та ізоляцію помилок. Це робить мову дуже ефективною для створення розподілених систем, де збої в одній частині програми не впливають на її інші компоненти. Erlang також має вбудовану підтримку гарячого оновлення коду, що дозволяє змінювати програму без зупинки її виконання, що є критично важливим для багатьох бізнесів. Мова програмування Elixir Elixir — це сучасна функ...

Структура Angular-проєкта

Структура нового проєкту: src/ - Ця директорія містить вихідний застосунку. Вона є основною робочою директорією для розробників. angular.json - Основний конфігураційний файл для Angular CLI, містить налаштування для компіляції, побудови та інших операцій. package.json - Файл, який містить інформацію про проєкт і його залежності. Використовується npm для управління пакетами. dependencies - секція, яка визначає залежності, необхідні для застосунку. devDependencies - секція, яка визначає залежності, необхідні тільки для розробки. tsconfig.json - Файл конфігурації TypeScript, який визначає налаштування компіляції TypeScript для проєкту. .editorconfig - Файл конфігурації для налаштування редактора коду. README.md - Файл з інформацією про проєкт. Зазвичай містить інструкції щодо запуску та використання застосунку. .gitignore - Файл, який визначає, які файли та директорії мають бути проігноровані системою контролю версій Git. src/ містить: app/ - Містить головний код за...