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

Публікації

Функції в Python

Функція визначається за допомогою ключового слова def . Після імені функції вказуються круглі дужки та двокрапка. def greet(): print("Hello!") greet() Функція може приймати параметри. def greet(name): print("Hello,", name) greet("Anna") greet("Petro") Функція може повертати результат за допомогою return . def add(a, b): return a + b result = add(10, 20) print(result) Після виконання return функція завершується, а вказане значення повертається тому коду, який викликав функцію. Параметри та аргументи функцій Під час оголошення функції задаються параметри, а під час її виклику передаються аргументи. def multiply(a, b): return a * b result = multiply(5, 4) Python також підтримує аргументи, передані за іменем. def create_user(name, age): print(name, age) create_user(name="Anna", age=25) Для параметрів можна задавати значення за замовчуванням. def greet(name="Guest"):...

Основи Python

Синтаксис Python визначає правила, за якими записується програма. Однією з головних особливостей Python є простий і компактний синтаксис, у якому значну роль відіграють відступи. На відміну від мов, де блоки коду позначаються фігурними дужками, у Python вони визначаються структурою відступів. Виведення інформації Для виведення інформації на екран використовується функція print() . print("Hello, Python!") print(10) print("Результат:", 10 + 5) У функцію print() можна передавати декілька значень. За замовчуванням вони розділяються пробілом. name = "Pavlo" age = 30 print("Ім'я:", name, "Вік:", age) Коментарі Коментарі використовуються для пояснення коду і не виконуються інтерпретатором. Однорядковий коментар починається символом # . # Це коментар print("Hello") print("Python") # Коментар після інструкції Коментар може займати цілий рядок або розташовуватися після програмної інструкції. ...

Запуск застосунку Spring Boot як системного сервісу Ubuntu

Для більш стабільної роботи web-застосунки краще запускати на сервері як системні сервіси. Для цього спершу потрібно створити власний системний сервіс: sudo nano /etc/systemd/system/myapp.service У цей файл потрібно додати код: [Unit] Description=Spring Boot Application After=network.target [Service] Type=simple User=ubuntu Group=ubuntu WorkingDirectory=/opt/myapp ExecStart=/usr/bin/mvn spring-boot:run -Dspring-boot.run.profiles=prod Restart=on-failure RestartSec=10 SuccessExitStatus=143 [Install] WantedBy=multi-user.target User та Group - це дані користувача, WorkingDirectory - шлях до застосунку, ExecStart - команда для запуску (в даному випадку запускається з сирцевого коду, але краще скомпілювати і запускати jar-файл). Далі потрібно зберегти файл та виконати команду: sudo systemctl daemon-reload Перевірити статус сервісу: sudo systemctl status myapp.service Запустити сервіс: sudo systemctl start myapp.service Щоб сервіс запускався автоматично після переза...

Запуск Java-застосунків без root-доступу на портах 443, 80

За замовчуванням на Linux користувачі з без прав доступу root не мають права запускати Java-застосунки на портах менших за 1024. Зокрема, при запуску Spring Boot можна отримати помилку java.net.BindException: Permission denied . Розберемо варіанти, як це можна виправити. Запуск через sudo Перед командою запуску можна додати sudo , якщо користувач має право його використовувати. Більше про запуск проєктів на Spring Boot . Надати користувачу відповідні права Власне, користувачу можна надати відповідні права адміністратора. Більше про права користувачів у Linux . Запуск на іншому порту Якщо на машині є Apache, nginx або інший сервер або його можна встановити, то можна запустити Java-застосунок на іншому порті: 8080, 8443 тощо і зробити відповідні налаштування переадресації. Надати додаткові дозволи для JDK Спочатку потрібно дізнати адресу поточного jdk : readlink -f "$(which java)" Наприклад, відповідь може бути типу /usr/lib/jvm/java-17-openjdk-amd64/bin/java . Після...

Cron в Linux

cron — це механізм Linux для автоматичного виконання команд і скриптів за розкладом. Він використовується для регулярних завдань: резервного копіювання, очищення тимчасових файлів, запуску скриптів, перевірки сервісів тощо. Фоновий процес, який виконує заплановані завдання, називається cron daemon . У сучасних Linux-системах його часто реалізовано через cronie або сумісний cron-сервіс. Crontab Розклад завдань зберігається у crontab — таблиці cron-завдань. Переглянути завдання поточного користувача: crontab -l Відредагувати їх: crontab -e Для редагування системного crontab потрібні права адміністратора: sudo crontab -e Важливо: crontab -e і sudo crontab -e працюють з різними таблицями. Перша належить поточному користувачу, друга — користувачу root . Формат cron-запису Звичайний запис crontab має п'ять полів часу та команду: * * * * * команда Поля означають: * хвилина (0–59) * година (0–23) * день місяця (1–31) * місяць (1–12) * день тижня (0–7)...

Монтування в Linux

У Linux файлова система не прив'язується до окремої літери диска, як це відбувається у Windows. Замість цього вона підключається до певного каталогу в єдиному дереві файлової системи. Така операція називається монтуванням (mounting) . Наприклад, фізичний диск або його розділ може містити файлову систему ext4. Щоб отримати доступ до її файлів, її можна змонтувати в каталог /mnt/data . Після цього вміст файлової системи буде доступний за шляхом /mnt/data . Важливо розрізняти пристрій , файлову систему та точку монтування . Наприклад: /dev/sdb1 → пристрій (розділ) /dev/sdb1 → файлова система ext4 /mnt/data → точка монтування Після монтування: /dev/sdb1 /mnt/data /mnt/data/file.txt /mnt/data/photos/ ... Точки монтування Точка монтування (mount point) — це звичайний каталог, у який підключається файлова система. Наприклад, створимо каталог: sudo mkdir /mnt/data Після цього можна змонтувати розділ: sudo mount /dev/sdb1 /mnt/data Тепер вміст /dev/sdb1 досту...

Робота з датами та часом в Elixir

Elixir має вбудовані типи та модулі для роботи з датами, часом і часовими інтервалами. Основними модулями є Date , Time , NaiveDateTime , DateTime та Calendar . Важливо розуміти різницю між ними. Date описує календарну дату, Time — час доби, NaiveDateTime — дату й час без інформації про часовий пояс, а DateTime — дату й час разом із часовим поясом. У порівнянні з Java це приблизно відповідає класам LocalDate , LocalTime , LocalDateTime та ZonedDateTime з пакета java.time . Дата за допомогою Date Для представлення календарної дати використовується структура Date : date = ~D[2026-08-21] date.year # 2026 date.month # 8 date.day # 21 Літерал ~D є sigil, спеціальним синтаксисом Elixir для створення дати. Дата також може бути створена за допомогою функції Date.new/3 : {:ok, date} = Date.new(2026, 8, 21) date # ~D[2026-08-21] Якщо передати некоректну дату, функція поверне помилку: Date.new(2026, 2, 30) # {:error, :invalid_date} Поточна дата Поточну дату можна о...

TCP/IP

TCP/IP — це набір мережевих протоколів, на основі якого працює сучасний Інтернет. Коли браузер відкриває сайт, Java-застосунок звертається до REST API, сервер встановлює з'єднання з базою даних або один мікросервіс викликає інший — у більшості випадків десь під капотом працюють протоколи TCP/IP. Назва TCP/IP походить від двох найвідоміших протоколів цього стеку: TCP (Transmission Control Protocol) — забезпечує надійну передачу потоку даних між двома кінцевими точками; IP (Internet Protocol) — відповідає за адресацію вузлів та доставку IP-пакетів між мережами. При цьому TCP та IP — лише частина великого набору протоколів. Наприклад, DNS використовується для перетворення доменних імен на IP-адреси, HTTP — для передачі веб-запитів, TLS — для шифрування, UDP — для швидкої передачі дейтаграм без гарантії доставки. Щоб зрозуміти, як усе це працює разом, потрібно розібратися з мережевою моделлю та рівнями TCP/IP. Що таке мережевий протокол Мережевий протокол — це набір ...

Права доступу до файлів і папок у Linux

Однією з ключових особливостей Linux є гнучка система керування правами доступу. Вона дозволяє визначити, хто може переглядати, змінювати або запускати файли й каталоги. Завдяки цьому можна підвищити безпеку системи та уникнути випадкового пошкодження важливих даних. Основні типи прав Для кожного файлу або каталогу існують три базові права: r (read) — читання файлу або перегляд вмісту каталогу. w (write) — зміна файлу або створення й видалення елементів у каталозі. x (execute) — запуск виконуваного файлу або можливість перейти до каталогу. Ці права задаються окремо для трьох категорій користувачів: u (user) — власник файлу. g (group) — група користувачів. o (others) — усі інші користувачі. Перегляд прав доступу Переглянути права можна за допомогою команди ls -l : ls -l Приклад результату: -rwxr-xr-- 1 user developers 2048 Jul 31 12:00 script.sh Перший символ показує тип об'єкта ( - — файл, d — каталог), а наступні д...

Робота Spring-застосунку через Tor

Якщо потрібно виконувати HTTP-запити через мережу Tor із Java-застосунку, найкраще використовувати окремий системний сервіс Tor, а не Tor Browser. Системний Tor працює у фоновому режимі, підтримує SOCKS-проксі, ControlPort та дозволяє програмно змінювати IP-адресу за допомогою команди SIGNAL NEWNYM . У цій інструкції розглянемо встановлення Tor на Ubuntu, налаштування SOCKS-проксі та інтеграцію зі Spring Boot через RestTemplate . Встановлення Tor Оновіть список пакетів та встановіть Tor: sudo apt update sudo apt install tor Переконайтеся, що сервіс працює: systemctl status tor Якщо сервіс не запущений: sudo systemctl start tor sudo systemctl enable tor Налаштування Tor Основний файл конфігурації знаходиться за адресою: /etc/tor/torrc Додайте до нього наступні параметри: # SOCKS-проксі SocksPort 9052 # Порт керування ControlPort 9051 # Використовуємо пароль CookieAuthentication 0 HashedControlPassword 16:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX У...