Блог Калини Сергія

Працюйте в той час, у який всі сплять. Вчіться в той час, коли всі розважаються. Бережіть той час, який всі витрачають. Живіть так, як всі тільки мріють.

Встановлення nvm на mirohost VPS

Встановлення nvm на mirohost VPS

Cамостійно встановити nvm, використовуючи інструкцію: Від ssh користувача клієнта для потрібного сайту потрібно зробити наступне: 1. Скачати NVM curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash 2. Створюємо конфігураційний файл для ssh користувача nano ~/.bash_profile і закидаємо туди текст, та зберігаємо файл: export
1 min read
Smtp Google як сервер вихідної пошти

Smtp Google як сервер вихідної пошти

1. Ввімкнути подвійну авторизацію у вкладці "Безпека". 2. Натиснути на вкладку "Двохетапна перевірка" та проскролити в самий низ до блоку "Паролі додатків" та створити пароль додатку. 3. Додати конфіг наступні налаштування. Приклад для Yii2 Mailer 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@common/mail', 'useFileTransport' => false, 'transport' => [ 'class' => 'Swift_SmtpTransport',
1 min read
Встановлення Rabbit MQ та панелі керування за 5 хвилин
rabbit mq

Встановлення Rabbit MQ та панелі керування за 5 хвилин

Процес завантаження та встановлення RabbitMQ на Ubuntu та Debian буде подібним до CentOS через наше бажання мати новішу версію. Почнемо з оновлення стандартного набору програмних засобів нашої системи: apt-get update apt-get -y upgrade Увімкнути репозиторій додатків RabbitMQ: echo "deb http://www.rabbitmq.com/debian/ testing main" >> /etc/apt/sources.list
2 min read
Як використовувати ключ SSH замість HTTPS у GitLab
Servers

Як використовувати ключ SSH замість HTTPS у GitLab

Ключ SSH пропонує можливість витягувати та надсилати без необхідності щоразу вводити ім’я користувача та пароль. Отже, це дійсно питання економії часу та комфорту. Налаштувати профіль у GitLab Перейти до налаштувань профілю: Та обрати у меню SSH keys: Згенерувати public key та private key Для Windows: Всі комнди команди запускати
2 min read
Як налаштувати https на OpenServer
OpenServer

Як налаштувати https на OpenServer

Створити SSL Серитфікат Створити (у будь-якому місці та з будь-яким ім'ям) файлик generate-cert.bat зі змістом: Уважно перевірте всі шляхи, у вас вони напевно відрізнятимуться! Запускати з під консолі OpenServer! @echo OFF rem ВКАЖІТЬ ПРАВИЛЬНІ РОЗМІЩЕННЯ ФАЙЛІВ set OPENSSL_CONF=D:\OpenServer\modules\http\Apache_2.4-PHP_7.2-7.4\
2 min read
D - Dependency Inversion (Принцип інверсії залежностей)
Принципи SOLID

D - Dependency Inversion (Принцип інверсії залежностей)

Модулі верхнього рівня повинні залежати від модулів нижнього рівня. І ті, й інші мають залежати від абстракцій. Абстракції не повинні залежати від деталей. Деталі мають залежати від абстракцій. Модулі (або класи) верхнього рівня - класи, які виконують операцію за допомогою інструмента. Модулі (або класи) нижнього рівня - інструменти, які потрібні
1 min read
I - Interface Segregation (Принцип поділу інтерфейсів)
Принципи SOLID

I - Interface Segregation (Принцип поділу інтерфейсів)

Не слід ставити клієнт у залежність від методів, які не використовує. Коли класу доводиться робити дії, які не несуть ніякої реальної користі, це виливається в марну витрату ресурсу, а у разі, якщо клас виконувати ці дії не здатний, веде до виникнення багів. Клас повинен проводити лише ті операції, які необхідні
1 min read
L - Liskov Substitution (Принцип підстановки Барбари Лісков)
Принципи SOLID

L - Liskov Substitution (Принцип підстановки Барбари Лісков)

Якщо П є підтипом Т, будь-які об'єкти типу Т, присутні у програмі, можуть замінюватися об'єктами типу П без негативних наслідків для функціональності програми. У випадках, коли клас-нащадок не здатний виконувати ті ж дії, що і клас-батько, виникає ризик появи помилок. Якщо у вас є клас і ви створюєте на його
1 min read
O - Open-Closed (Принцип відкритості-закритості)
Принципи SOLID

O - Open-Closed (Принцип відкритості-закритості)

Класи повинні бути відкриті для розширення, але закриті для модифікації. Коли ви змінюєте поточне поведінку класу, ці зміни сказываются на всіх системах, що працюють з даними класом. Якщо хочете, щоб клас виконував більше операцій, то ідеальний варіант – не замінювати старі на нові, а додавати нові до вже існуючих. Призначення Принцип
S – Single Responsibility (Принцип єдиної відповідальності)
Принципи SOLID

S – Single Responsibility (Принцип єдиної відповідальності)

Кожен клас повинен відповідати тільки за одну операцію. Якщо клас відповідає за кілька операцій відразу, ймовірність виникнення багов зростає – внесені зміни, що виконуються з однієї операції, ви, самі того не підозреваєте, можете затронути та інші. Призначення Принцип служить для виділення типів поведень, завдяки яким помилки, викликані модифікаціями в одному поведенні,
Поведінкові шаблони проектування

Шаблонний метод

Аналогія Допустимо, ви зібралися будувати будинки. Етапи будуть такими: * Підготовка фундаменту. * Зведення стін. * Настил даху. * Настил перекриттів. Порядок етапів ніколи не змінюється. Ви не настеліть дах до зведення стін - і т. д. Але кожен етап модифікується: стіни, наприклад, можна звести з дерева, цегли або газобетону. Коротко "Шаблонний метод" визначає
1 min read
Поведінкові шаблони проектування

Стан

Аналогія Припустимо, у графічному редакторі ви вибрали інструмент «Пензель». Вона змінює свою поведінку залежно від налаштування кольору: тобто малює лінію вибраного кольору. Коротко Шаблон дозволяє змінювати поведінку класу за зміни стану. Вікіпедія Шаблон "Стан" реалізує машину станів об'єктно орієнтованим способом. Це досягається за допомогою: реалізації кожного стану у вигляді похідного
1 min read
Поведінкові шаблони проектування

Стратегія (Strategy)

Аналогія Візьмемо приклад із пухирцевим сортуванням. Ми її реалізували, але зі зростанням обсягів даних сортування почало виконуватися дуже повільно. Тоді ми зробили швидке сортування (Quick sort). Алгоритм працює швидше на великих обсягах, але на маленьких він дуже повільний. Тоді ми реалізували стратегію, за якої для невеликих обсягів даних використовується бульбашкове
1 min read
Поведінкові шаблони проектування

Відвідувач

Аналогія Туристи зібралися до Дубаї. Спочатку їм потрібен спосіб потрапити туди (віза). Після прибуття вони відвідуватимуть будь-яку частину міста, не питаючи дозволу, ходити де заманеться. Просто скажіть їм про якесь місце — і туристи можуть там побувати. Шаблон відвідувачів допомагає додавати місця для відвідування. Стисло Шаблон «Відвідувач» дозволяє додавати майбутні операції
1 min read
Поведінкові шаблони проектування

Спостерігач (Behavior)

Аналогія Хороший приклад: люди, які шукають роботу, підписуються на публікації на сайтах вакансій та отримують повідомлення, коли з'являються вакансії, які підходять за параметрами. Стисло Шаблон визначає залежність між об'єктами, щоб за зміни стану одного з них його «підлеглі» дізнавалися про це. Вікіпедія У шаблоні «Спостерігач» є об'єкт («суб'єкт»), що веде
1 min read
Поведінкові шаблони проектування

Хранитель

Аналогія Як приклад можна навести калькулятор ("творець"), у якого будь-яка остання виконана операція зберігається в пам'яті ("хранитель"), щоб ви могли знову викликати її за допомогою якихось кнопок ("опікун"). Стисло Шаблон «Зберігач» фіксує та зберігає поточний стан об'єкта, щоб він легко відновлювався. Вікіпедія Шаблон "Зберігач" дозволяє відновлювати об'єкт у його попередньому
1 min read
Поведінкові шаблони проектування

Посередник

Аналогія Коли ви розмовляєте з кимось по мобільному, то між вами та співрозмовником знаходиться мобільний оператор. Тобто сигнал передається через нього, а не безпосередньо. У цьому прикладі оператор — посередник. Стисло Шаблон «Посередник» має на увазі додавання стороннього об'єкта («посередника») для керування взаємодією між двома об'єктами («колегами»). Шаблон допомагає зменшити пов'язаність
1 min read
Поведінкові шаблони проектування

Ітератор

Аналогія Гарний приклад – радіоприймач. Ви починаєте з якоїсь радіостанції, а потім переміщаєтеся станціями вперед/назад. Тобто пристрій надає інтерфейс для ітерування каналами. Стисло Шаблон - це спосіб доступу до елементів об'єкта без розкриття базового представлення. Вікіпедія У цьому шаблоні ітератор використовується для переміщення контейнера та забезпечення доступу до елементів контейнера.
1 min read
Поведінкові шаблони проектування

Команда

Аналогія Ви прийшли до ресторану. Ви (Client) просите офіціанта (Invoker) принести блюда (Command). Офіціант перенаправляє запит шеф-кухареві (Receiver), який знає, що і як готувати. Інший приклад: ви (Client) включаєте (Command) телевізор (Receiver) за допомогою пульта (Invoker). Стисло Шаблон "Команда" дозволяє інкапсулювати дії в об'єкти. Ключова ідея – надати кошти відділення клієнта
1 min read
Поведінкові шаблони проектування

Ланцюжок відповідальності

Аналогія Допустимо, для вашого банківського рахунку є три способи оплати (A, B і C). Кожен має на увазі різні доступні суми грошей: A - 100 доларів, B - 300, C - 1000. Пріоритетність способів при оплаті: А, потім В, потім С. Ви намагаєтеся купити щось за 210 доларів. На підставі
1 min read
Структурні шаблони проектування

Заступник

Аналогія Відкрити двері з електронним замком можна за допомогою картки доступу (access card) або кнопки обходу системи безпеки. Тобто основна функціональність дверей – відкритися, а поверх неї може бути ще якась функціональність – «заступник». Стисло За допомогою шаблону "Заступник" клас представляє функціональність іншого класу. Вікіпедія У найбільш загальної формі «Заступник» - це
1 min read
Структурні шаблони проектування

Пристосуванець

Аналогія Зазвичай у закладах громадського харчування заварюють чай не окремо для кожного клієнта, а відразу в якійсь великій ємності. Це дозволяє економити ресурси: газ/електрику, час і т. д. Шаблон «Пристосуванець» присвячений загальному використанню (sharing). Стисло Шаблон застосовується для мінімізації використання пам'яті чи обчислювальної вартості рахунок загального використання якомога більшої
1 min read
Структурні шаблони проектування

Фасад

Аналогія Як увімкнути комп'ютер? Ви скажете: "Натиснути кнопку увімкнення". Це тому, що ви використовуєте простий інтерфейс, наданий комп'ютером назовні. А в ньому відбувається дуже багато процесів. Простий інтерфейс для складної підсистеми – це фасад. Стисло Шаблон Фасад надає спрощений інтерфейс для складної підсистеми. Вікіпедія «Фасад» — це об'єкт, що надає спрощений інтерфейс
1 min read
Структурні шаблони проектування

Декоратор

Аналогія Допустимо, у вас свій автосервіс, що надає різні послуги. Як виставляти клієнтам рахунок? Додавати послідовно послуги та їх вартість - і врешті-решт вийде підсумкова сума до оплати. Тут кожен тип послуги це «декоратор». Стисло Шаблон «Декоратор» дозволяє динамічно змінювати поведінку об'єкта під час виконання, обгортаючи його в об'єкт класу
1 min read