Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
- Telegram Web
Telegram Web
🧙‍♂️ Leetcode Wizard

Сервіс на базі штучного інтелекту для вирішення задач на LeetCode з успіхом до 90%.

Здавалося б, це просто інструмент для вирішення задач, але ні — тепер можна глибше розібратися в рішеннях, зрозуміти суть алгоритмів і краще підготуватися до співбесід, які акцентуються на алгоритмічних задачах.

Посилання на ресурс - LeetCode Wizard 🚀

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
CLI Linux

Ділюся інструментом, який допомагає зрозуміти команди командного рядка Linux. Просто вводите будь-яку команду, і Explainshell розбиває її на складові, пояснюючи кожну частину. Крутий ресурс для тих, хто хоче прокачати свої знання по роботі з командним рядком.

Посилання на ресурс - Explainshell 📱

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
Швидка верстка

Для тих, хто займається версткою і любить табуляцію, є крута шпаргалка, яка допомагає писати HTML і CSS значно швидше.

Можна замінити довгі рядки коду на короткі скорочення, які автоматично розширюються. Наприклад, замість того щоб писати <div class="container">, достатньо ввести скорочення div.container і натиснути Tab.

Усі корисні скорочення за посиланням — Emmet.

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
До речі, тут не тільки канал про класні ресурси, а і про те, як я стаю DevOps за 3 місяці. Цікаво було б вам отримувати щоденні або через день апдейти про те, що я вивчив за день і який матеріал пройшов?
Anonymous Poll
65%
Так
9%
Ні
26%
це було б ПОТУЖНО
Schedulers

Cron — це утиліта для автоматизації та планування завдань у UNIX-подібних системах. В сучасних дистрибутивах часто використовують systemd timers, які інтегруються з systemd (systemd - це головний процес у Linux, який керує запуском і роботою всіх служб і процесів системи) і надають більше гнучкості.

Що краще

Cron — простий і підходить для базових задач.

Systemd timers — краще для складних сценаріїв з інтеграцією в systemd.

Приклад планування задач

Для cron

Відкрити crontab для редагування командою (Цей файл не потрібно створювати вручну, він автоматично відкриється після команди crontab -e)


crontab -e


У відкритому файлі додайте рядок (запускає скрипт кожні 5 хвилин (*/5 — інтервал у 5 хвилин).


*/5 * * * * /path/to/script.sh


Збережіть файл і вийдіть з редактора.

Для systemd timers

Створюємо сервіс /etc/systemd/system/myscript.service


[Unit]
Description=My Script Service

[Service]
ExecStart=/path/to/script.sh


Створюємо таймер /etc/systemd/system/myscript.timer


[Unit]
Description=Run my script every 5 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=5min

[Install]
WantedBy=timers.target


Активуємо таймер


sudo systemctl enable --now myscript.timer


tail

Для простих задач, як от регулярний запуск скриптів або просте планування, використовуйте cron. Якщо ж вам потрібна, інтеграція з іншими службами, точне логування або складніша автоматизація, вибирайте systemd timers.

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
Regex

Регулярні вирази — це інструмент для пошуку, заміни та перевірки тексту. Вони корисні в програмуванні, автоматизації та аналізі даних.

Хочу поділитися ресурсом, де можна створювати, тестувати та розуміти регулярні вирази. Ресурс показує, як працюють ваші вирази, пояснює їх, і підтримує різні мови програмування.

Спробуйте тут - regex101.com

Також рекомендую статтю, яка пояснює, що таке регулярні вирази і як їх використовувати - Посилання на статтю

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Booting

Що відбувається, коли ви натискаєте кнопку ввімкнення комп'ютера, розглянемо процес на прикладі Linux.

Вмикаєш комп'ютер -> BIOS/UEFI прокидається і готує комп'ютер до роботи (шукає диск або флешку, звідки завантажити систему) -> GRUB вибирає ядро Linux і починає його запускати -> systemd запускає основні процеси і налаштовує систему -> запускаються налаштування для користувача (як твої улюблені команди і програми) -> комп'ютер готовий, можна входити і працювати.

Ознайомитися з більш детальним описом цього процесу можна - тут

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
Архітектура Linux

Ядро (Kernel) - це основа Linux. Ядро керує всіма апаратними ресурсами, такими як процесор, пам'ять і пристрої введення/виведення. Ядро відповідає за управління процесами, пам'яттю та доступом до пристроїв.

Shell (Оболонка) - це інтерфейс, який дозволяє користувачу (нам) вводити команди та взаємодіяти з системою. Shell перекладає команди користувача в інструкції для ядра.
Є кілька видів оболонок - Bash (Bourne Again Shell), Zsh, Csh, та інші.

Файлова система - відповідає за зберігання даних на диску. У Linux є багато різних типів файлових систем (наприклад, ext4, XFS), і кожна має свої особливості. Важливі директорії

- /etc конфігураційні файли системи.
- /bin та /usr/bin системні бінарні файли та програми.
- /var змінні файли, наприклад, журнали і кеші.
- /dev пристрої, типу жорсткі диски і USB.
- /proc та /sys віртуальні файлові системи для доступу до системної інформації.

Системні бібліотеки - це по суті набір функцій, які програми використовують для доступу до можливостей ядра. Найпопулярніша - GNU C Library (glibc).

Демони (Daemons) - це фонові процеси, що виконують різні завдання, до прикладу мережеве обслуговування або управління принтерами. Вони завантажуються при запуску системи і працюють у фоні.

Утиліти - програми для виконання різних завдань (копіювання файлів, редагування тексту). Вони дозволяють виконувати щоденні операції у системі.
Приклади утиліт - cp mv rm ls mkdir (копіювання, переміщення, видалення, перегляд вмісту - це утиліти для роботи файлами)

Все це працює разом, і забезпечує роботу Linux.

tail
Тепер ви знаєте, що відповідати на співбесіді, якщо у вас запитають - “Розкажіть про основні компоненти архітектури Linux та їх роль у системі.”

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
SSH

SSH (Secure Shell) — це протокол для безпечного підключення до віддалених комп'ютерів. Він шифрує всі дані, що передаються між користувачем і сервером, це захищаж від атак, типу “людина посередині”. SSH зазвичай використовується для роботи з командним рядком та передачі файлів між комп'ютерами.

Use case SSH

Генерація пари ключів SSH

Команда ssh-keygen, створює пару публічного та приватного ключів


ssh-keygen -t rsa -b 4096 -C "your_email@example.com"


Це створить два файли

~/.ssh/id_rsa (приватний ключ)

~/.ssh/id_rsa.pub (публічний ключ)

Копіювання публічного ключа на сервер:

Для безпарольного доступу потрібно скопіювати публічний ключ на сервер, до якого ви хочете підключитися. Використовуйте команду ssh-copy-id


ssh-copy-id username@remote_host


або вручну скопіюйте вміст файлу id_rsa.pub до файлу ~/.ssh/authorized_keys на сервері.

Підключення до сервера за допомогою SSH

Після додавання публічного ключа ви можете підключитися до сервера без введення пароля


ssh username@remote_host


Tail
Більш детально познайомитися з протоколом можна - тут 🐱

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
TMUX

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

Основне шо потрібно знати

Вікна дозволяють тримати окремі задачі в різних вкладках одного терміналу. Наприклад, в одному вікні редактор коду, в іншому логи.

Панелі допомагають розділити екран на кілька частин. Це дає змогу одночасно бачити різні процеси — наприклад, моніторинг стану сервера та виконання команд.

Сесії зберігають робочий стан після розриву з'єднання з сервером. Відключився - процеси продовжують працювати, і можна під'єднатися знову, не втрачаючи прогресу.

Tail
Всі основні команди та можливості TMUX можна знайти - тут 🍳
p.s. - дякую за рекомендацію до посту, пропонуйте ще, будемо писати про те що цікаво, якщо є ідеї або хочете чимось поділитися, пишіть сюди - @Route53Support

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
Update

Вирішив усе ж таки робити час від часу апдейти свого шляху, бо переважна більшість проголосували за те, щоб я це робив. Тож буду ділитися своїми кроками в наступному форматі.

Що я вивчив минулого тижня в Kubernetes

🔺 Як Працювати з Pod, ReplicaSets та Deployments, створювати та управляти ресурсами через Kubernetes API.
🔺Налаштовувати конфігурації додатків через ConfigMaps та Secrets, працювати зі змінними середовища, управляти ресурсами контейнерів (CPU, пам'ять).
🔺Робити Pod з декількома контейнерами, використовувати Init Containers та спільні об'єми для обміну даними між контейнерами.
🔺Моніторити додатки та налаштовувати probes для контролю здоров'я контейнерів (liveness та readiness).
🔺Розробляти дизайн Pod із використанням labels, annotations, lifecycle hooks, щоб налаштовувати поведінку подів під різні сценарії.
🔺Розумітися на мережевих концепціях, налаштовувати сервіси типу ClusterIP, NodePort, LoadBalancer, управляти Network Policies.
🔺Працювати з Ingress для управління зовнішнім доступом до сервісів всередині кластера, налаштовувати правила маршрутизації трафіку.
🔺Працювати з PersistentVolumes, PersistentVolumeClaims для збереження стану додатків, створювати storage класси для різних типів сховищ.

До речі, Kubernetes - це супервеликий інструмент, який охоплює багато аспектів роботи з контейнерами та інфраструктурою. Я продовжую зависати в своїй лабораторії по 5-7 годин на день, вивчаючи різні його можливості та функції. Скоро планую тестувати вивчене на практиці, щоб ще глибше зрозуміти його.

Tail

Якщо у вас є рекомендації щодо формату, зауваження або побажання, пишіть у коментарях або звертайтеся в особисті повідомлення. Ваш фідбек допоможе зробити цей формат ще більш корисним.

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
DiagramGPT

Сказати, що це крутий тул - нічого не сказати.

Просто вводите текст або код, і інструмент автоматично створює відповідну діаграму. Я протестував - це дуже круто працює! Давно шукав такий інструмент, який міг би візуалізувати мою ідею або концепцію коду.

Посилання на тул — тут.

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
Dockerfile -> Container

Щоб запустити додаток в контейнері, спочатку нам потрібно описати Dockerfile. Dockerfile - це текстовий файл, який містить інструкції для створення Docker Image. Він працює як рецепт, що визначає, які компоненти необхідно встановити та які команди виконати, щоб підготувати додаток до запуску.

🔺 У Dockerfile використовується концепція шарів (лєєрів). Кожен шар додається поверх попереднього і може включати різні інструкції

FROM - вказує базовий образ (наприклад, ubuntu), з якого починається створення образу.

RUN - виконує команди, наприклад, встановлення бібліотек і пакетів.

COPY/ADD - копіює файли з хоста в образ, наприклад, додавання вихідного коду програми.

CMD/ENTRYPOINT - визначає команду або сценарій, який повинен виконуватися, коли контейнер запущений.

WORKDIR - встановлює робочий каталог для команд RUN, CMD, ENTRYPOINT, COPY та ADD.

ENV - встановлює змінні середовища, які будуть доступні під час виконання контейнера.

EXPOSE - вказує, який порт буде використовувати контейнер для взаємодії з зовнішнім світом.

VOLUME - створює точку монтування для зовнішніх томів.

Всі командами Dockerfile, можна знайти в офіційній документації Docker - Dockerfile reference.

🔺 Всі ці шари (лєєри) утворюють так звану RootFS (root file system). RootFS - це сукупність усіх шарів, яка формує файлову систему, необхідну для запуску контейнера. Вона включає все необхідне середовище, залежності і файли додатку.

🔺Концепція леєрів забезпечує дуже важливий механізм - кешування шарів (layers caching) для оптимізації процесу побудови Docker Image. Коли ви змінюєте Dockerfile і запускаєте команду docker build, Docker перевіряє, чи використовуються ті ж самі інструкції та чи були змінені шари. Якщо шари не змінювалися, Docker використовує кешовані версії цих шарів замість їх повторної побудови. Це оптимізація як і за часом та і по ресурсам.

🔺 І тепер, коли в нас є готовий Image, ми можемо запустити на його основі контейнер. Контейнер - це, простими словами, ізольований запущений процес. Docker забезпечує ізоляцію за допомогою функцій ядра операційної системи, таких як cgroups (control groups) і namespaces. Cgroups обмежують ресурси, які може використовувати контейнер (CPU, пам’ять), а namespaces створюють ізольоване середовище для кожного контейнера, так що вони не можуть взаємодіяти один з одним або з хост-системою.

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
78 днів до Junior DevOps

За 78 днів я став Junior DevOps. Ось що я пройшов за цей час

Linux розібрався з основами роботи в цій операційній системі, її налаштуваннями та командним рядком.

AWS вивчив базові сервіси та їх налаштування.

Docker зрозумів, як створювати контейнери, керувати ними та автоматизувати процеси розгортання.

GitHub Actions та GitLab CI налаштовував CI/CD пайплайни, автоматизував деплой і тестування.

AWS (другий раунд, глибше) поглиблене вивчення сервісів та проходження квестів у Cloud.

Kubernetes здобув базові знання для управління кластером та налаштування сервісів.

Terraform освоїв основи інфраструктури як коду (IaC) і автоматизації розгортання.

Що я зрозумів

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

Реальна робота - це не лише про знання технологій (хоча це теж важливо), а про готовність приймати рішення, вміння шукати інформацію, задавати питання, проявляти активність, розуміти проблеми (таcки), які вирішуєте, і, звісно, постійно вчитися.

Так, я відчуваю, що мені не вистачає знань як в Linux так і в AWS. Але це не означає, що я не можу вирішувати проблеми та бути корисним бізнесу. Це говорить про брак досвіду, про який всі говорять (надивленність, практика). Не потрібно боятися не знати чогось, це нормально, особливо в DevOps, де домен дуже широкий. Але погано не вміти знаходити рішення - це ключове.

Рухаємося далі! Тепер накопичую досвід, наступна ціль — Middle позиція.

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
Remote - SSH

Якщо ви не хочете вивчати вбудовані редактори типу nano або vim, можна підключатися до віддаленого сервера через редактор коду. Це реально дуже зручно, особливо коли вам потрібно працювати з віддаленим кодом. Це нічим не відрізняється від того, ніби він знаходиться на вашому локальному комп'ютері.

Для різних редакторів є різні розширення, які дозволяють налаштувати SSH-підключення. Я використовую VS Code.

Налаштування SSH-підключення в VS Code

Встановіть розширення Remote - SSH

Відкрийте VS Code.
Перейдіть до розділу розширень, натиснувши на іконку розширень у бічній панелі або використайте комбінацію клавіш Ctrl/Command+Shift+X.
У полі пошуку введіть Remote - SSH.
Знайдіть розширення від Microsoft і натисніть Install.

Налаштуйте SSH-конфігурацію

Відкрийте командну палітру, натиснувши Ctrl/Command+Shift+P.
Введіть Remote-SSH: Connect to Host... і виберіть цю опцію.
У списку виберіть Add New SSH Host....
Введіть SSH-команду для підключення, наприклад: ssh user@remote_host.
Виберіть файл конфігурації для збереження (зазвичай це `~/.ssh/config`).

Налаштуйте файл SSH config (це опціонально, для зручності)

Ви можете відредагувати файл ~/.ssh/config, щоб додати додаткові параметри. Проте, скоріш за все, після налаштування SSH-конфігурації ваш файл config заповниться автоматично.

Як підключитися до сервера

Знову відкрийте командну палітру (`Ctrl/Command+Shift+P`) або скористайтеся кнопкою в лівому нижньому кутку (Open a Remote Window). Вона не підписана, це кнопка в самому нижньому лівому кутку.

Введіть Remote-SSH: Connect to Host....
Виберіть ваш сервер зі списку.
VS Code відкриє нове вікно і встановить з'єднання з віддаленим сервером.

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
AWS IAM 🖼️

В будь-якій компанії важливо безпечно керувати доступами до ресурсів. AWS IAM (Identity and Access Management) допомагає створювати користувачів, групи, налаштовувати ролі та політики безпеки, щоб чітко контролювати, хто і що може робити в AWS.

Least Privilege Мінімум прав - максимум безпеки

Принцип Least Privilege означає надавати користувачам тільки ті права, які потрібні для роботи. Більше доступу = більше ризику.

Користувачі, групи, політики

Користувачі та групи - краще створювати окремих користувачів для кожного члена команди та об'єднувати їх у групи (Developers, Admins, ReadOnly). А потім додавати політики доступу до груп, замість окремих користувачів, так простіше керувати.

Політики - можна використовувати готові політики AWS або створювати власні, щоб дозволити або заборонити конкретні дії. Наприклад, дозволити "s3:ListBucket" для S3 🖼️, але заборонити "s3:DeleteBucket".

Multi-Factor Authentication (MFA)

Потрібно активувати MFA, щоб захистити облікові записи. Як працює MFA, думаю, всі знають.

У консолі IAM виберіть користувача, натисніть "Manage MFA device" і дотримуйтесь інструкцій для налаштування, там все інтуїтивно зрозуміло.

Tail

Root аккаунт не використовуйте для рутини (створили з рута користувача-адміністратора, надали йому повний доступ, увімкнули двофакторну аутентифікацію, і користуєтесь цим акаунтом для адміністрування, про root забули, він лише для екстрених випадків).

Перевіряйте доступи регулярно і видаляйте зайві.

IAM Access Analyzer допоможе виявити надлишкові дозволи.

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
Давно не ділився безкоштовними ресурсами.

Ось непогана платформа, на якій є купа безкоштовних туторіалів з веб-розробки, баз даних, DevOps, машинного навчання, управління проєктами та багато іншого.
Можна використовувати як шпаргалку - посилання на ресурс 🎁

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
Безкоштовний курс по Linux

Якщо хочеш поглибити свої знання з Linux, раджу скористатися цією можливістю.

Ось посилання на курс - PortaOne Linux 🎃

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
Топ-5 навичок, які повинен мати DevOps для роботи з Linux

1️⃣ Розуміння файлової системи

Знати, де розташовані основні системні файли та каталоги /etc для конфігурацій, /var для логів, /usr для встановлених програм і так далі.

Важливо розуміти, які файли можна змінювати, а які краще не чіпати.

2️⃣ Управління правами доступу (Permissions)

Вміти налаштовувати права доступу до файлів і директорій за допомогою команд chmod, chown, chgrp.

Розуміти, як працює система прав rwx для користувачів, груп та інших, а також використовувати спеціальні бітові режими (`sticky bit`, setuid, `setgid`).

3️⃣ Налаштування мережі

Основи конфігурації мережевих інтерфейсів, робота з файлами /etc/network/interfaces, /etc/netplan або використання команд ifconfig, ip.

Базове налаштування брандмауера (Firewall) за допомогою ufw або iptables для контролю доступу.

Моніторинг мережевих підключень через netstat, ss і перегляд відкритих портів.

Використання Wireshark для аналізу трафіку в ріал таймі.

4️⃣ Перевірка стану системи

Моніторинг процесів за допомогою ps, top, htop для відстеження споживання ресурсів, таких як пам’ять і процесорний час.

Аналіз використання дискового простору через df і du, перегляд активності жорсткого диска за допомогою iostat або iotop.

5️⃣ Розуміння концепцій потоків

Знати про потоки вводу та виводу (stdin, stdout, stderr) і вміти користуватися перенаправленням >, >>, 2>, |.

Описав приклади, шоб було розуміння, навіщо це потрібно знати - тут 🥱

Tail
На мою думку, цих знань про Linux цілком достатньо для успішної роботи DevOps-інженером.

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
Безкоштовний курс по PHP

Знайшов платформу, на якій є безкоштовний курс по PHP. Також є курси по Python, HTML, CSS, JavaScript. Непоганий ресурс для початківців, усе подано доступно і зрозуміло. Рекомендую.

Посилання на платформу - тут 🔥

Route 53 🫥
Please open Telegram to view this post
VIEW IN TELEGRAM
2024/09/24 11:23:22
Back to Top
HTML Embed Code: