Процесс тестирования в CI/CD pipeline может включать:
- Юнит-тесты – проверка отдельных модулей кода.
- Интеграционные тесты – проверка взаимодействия компонентов.
- Линтеры и статический анализ – контроль качества кода.
- Нагрузочные тесты – проверка работы под нагрузкой.
Обычно разработчики пишут тесты, QA проверяют интеграцию, а DevOps настраивают автоматическое тестирование.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Это системный механизм в Astra Linux (и некоторых других дистрибутивах на базе Debian), который убивает "долгоиграющие" процессы, потребляющие слишком много ресурсов. Он предотвращает зависания системы и защищает от неэффективного использования вычислительных мощностей.
Long Killer анализирует процессы и завершает те, которые:
Запущены от обычного пользователя (не root).
Работают слишком долго (по умолчанию >10 минут).
Потребляют много CPU (по умолчанию >90% CPU).
Используют много памяти (если система близка к OOM – Out of Memory).
Не имеют активности (зависли, например, ожидание ввода).
Он не убивает root-процессы.
Системные службы (например,
sshd
, systemd
) остаются нетронутыми. Если процесс выполняется интерактивно (например, работа в
vim
или nano
), он обычно не трогает его. Если подозреваете, что ваш процесс завершился из-за Long Killer, посмотрите логи
journalctl -u long-killer.service --no-pager | tail -n 20
Также можно проверить
dmesg
dmesg | grep "killed by Long Killer"
Файл конфигурации находится здесь
/etc/long-killer.conf
Пример настроек
MAX_CPU_USAGE=90 # Максимальная загрузка CPU (%)
MAX_EXEC_TIME=600 # Максимальное время выполнения (секунды)
EXCLUDE_USERS=root # Не убивать процессы от root
После изменения перезапустите сервис
systemctl restart long-killer.service
Чтобы полностью отключить Long Killer
systemctl stop long-killer.service
systemctl disable long-killer.service
Запуск от
root
(если это безопасно): sudo my_long_process
Снижение приоритета процесса (nice/renice)
nice -n 10 my_process
renice -n 10 -p <PID>
Использование
nohup
или screen
для фоновых задач nohup my_script.sh &
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
1. Разработчик создает feature-ветку от develop, реализует функциональность.
2. Код проходит код-ревью и тестирование (CI/CD pipeline).
3. После успешного тестирования фича вливается в develop.
4. Когда накоплено достаточно изменений, создается release-ветка.
5. Финальное тестирование, исправление багов, деплой на staging.
6. Если все в порядке, release вливается в master, и обновление выкатывается в продакшен.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Донастройка контейнера может понадобиться, если:
Нужно изменить файлы конфигурации.
Установить дополнительные пакеты.
Задать переменные среды.
Подключить тома или сети.
Варианты донастройки: через Dockerfile, docker-compose, exec, тома и Entrypoint/CMD.
Если контейнер нужно модифицировать перед запуском, создаем свой
Dockerfile
на основе существующего образа. FROM nginx:latest
COPY my-nginx.conf /etc/nginx/nginx.conf
CMD ["nginx", "-g", "daemon off;"]
Собираем новый образ
docker build -t my-nginx .
docker run -d -p 80:80 my-nginx
Можно задать окружение, тома, команды.
version: '3'
services:
db:
image: postgres:15
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
POSTGRES_DB: mydb
volumes:
- ./custom-postgres.conf:/etc/postgresql/postgresql.conf
command: postgres -c config_file=/etc/postgresql/postgresql.conf
Запуск
docker-compose up -d
Если контейнер уже работает, можно внести изменения прямо в него.
docker exec -it my-container bash
apt update && apt install -y vim
Если нужно изменять файлы без пересборки образа, подключаем тома.
docker run -d -p 80:80 -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf nginx
Можно задать скрипт донастройки, который выполнится при старте контейнера.
FROM postgres:15
COPY setup.sh /docker-entrypoint-initdb.d/setup.sh
RUN chmod +x /docker-entrypoint-initdb.d/setup.sh
В
setup.sh
: #!/bin/bash
psql -U postgres -d mydb -c "CREATE TABLE test (id SERIAL PRIMARY KEY);"
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Это может происходить из-за неправильной конфигурации виртуальных хостов в веб-сервере (Apache, Nginx). Возможные причины:
- Отсутствует или некорректно указан ServerName в конфигурации.
- Конфигурация по умолчанию (default_server) используется для всех клиентов.
- DNS-записи не настроены или кешируются неправильно.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
В Linux информация о группах пользователей хранится в файле:
/etc/group
— основной файл, содержащий список всех групп системы. Вывести содержимое файла
/etc/group
cat /etc/group
Формат строк в файле
имя_группы:x:GID:пользователи
Пример
root:x:0:
sudo:x:27:alice,bob
developers:x:1001:john,mary
Найти группу по имени
grep '^sudo:' /etc/group
Выведет
sudo:x:27:alice,bob
Узнать, в каких группах состоит пользователь
groups alice
или
id -Gn alice
Выведет
alice sudo developers
хранит пароли групп
Если у группы есть пароль (редкость), он хранится здесь.
Формат:
имя_группы:пароль:GID:админы_группы
Пример:
sudo:!:27:
developers:!:1001:john
Посмотреть содержимое
sudo cat /etc/gshadow
Если используется корпоративный домен, данные о группах могут храниться в LDAP или Active Directory.
getent group
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Можно использовать несколько механизмов:
1. healthcheck – добавить в docker-compose.yml проверку состояния контейнера:
Контейнер не будет считаться "здоровым", пока тест не пройдет успешно.
2. depends_on с condition: service_healthy (в Docker Compose v3.4+):
Гарантирует, что контейнер запустится только после успешного старта зависимого сервиса.
3. EntryPoint скрипт – добавить задержку перед стартом сервиса:
Это гарантирует, что контейнер ждет готовности БД или другого сервиса перед запуском.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3
Forwarded from easyoffer
На easyoffer 2.0 появится:
🎯 Тренажер "Проработка вопросов"
✅ Метод интервальных повторений и флеш-карточки
✅ Персональный подход изучения на основе ваших ответов
✅ Упор на самые частые вопросы
📌 Интервальные повторения по карточкам это научно доказанный метод эффективного обучения. Каждая карточка – это вопрос, который задают на собеседовании, вы можете выбрать "Не знаю", "Знаю", "Не спрашивать". После ответа вам показывается правильный ответ и возможность изучить вопрос подробнее (примеры ответов других людей). От ваших ответов зависит то, как часто карточки будут показываться на следующей тренировке. Трудные вопросы показываются чаще, простые – реже. Это позволяет бить в слабые места. Кроме того, изначальный порядок карточек зависит от частотности (вероятности встретить вопрос).
🚀 Благодаря этому тренажеру вы сможете очень быстро подготовиться к собеседованию, т.к. фокусируетесь отвечать на самые частые вопросы. Именно так готовился я сам, когда искал первую работу программистом.
Уже в течение недели я объявлю о старте краудфандинговой кампании на сбор финансирования, чтобы ускорить разработку сайта. Все кто поддержит проект до официального релиза получат самые выгодные условия пользования сервисом. А именно 1 год доступа к сайту по цене месячной подписки.
‼️ Очень важно, чтобы как можно больше людей поддержали проект в первые дни, по-этому те кто окажет поддержку первыми получат еще более выгодную стоимость на годовую подписку и существенный💎 бонус о котором я позже расскажу в этом телеграм канале. Подписывайтесь, чтобы узнать о старте проекта раньше других и воспользоваться лимитированными вознаграждениями.
🎯 Тренажер "Проработка вопросов"
✅ Метод интервальных повторений и флеш-карточки
✅ Персональный подход изучения на основе ваших ответов
✅ Упор на самые частые вопросы
📌 Интервальные повторения по карточкам это научно доказанный метод эффективного обучения. Каждая карточка – это вопрос, который задают на собеседовании, вы можете выбрать "Не знаю", "Знаю", "Не спрашивать". После ответа вам показывается правильный ответ и возможность изучить вопрос подробнее (примеры ответов других людей). От ваших ответов зависит то, как часто карточки будут показываться на следующей тренировке. Трудные вопросы показываются чаще, простые – реже. Это позволяет бить в слабые места. Кроме того, изначальный порядок карточек зависит от частотности (вероятности встретить вопрос).
🚀 Благодаря этому тренажеру вы сможете очень быстро подготовиться к собеседованию, т.к. фокусируетесь отвечать на самые частые вопросы. Именно так готовился я сам, когда искал первую работу программистом.
Уже в течение недели я объявлю о старте краудфандинговой кампании на сбор финансирования, чтобы ускорить разработку сайта. Все кто поддержит проект до официального релиза получат самые выгодные условия пользования сервисом. А именно 1 год доступа к сайту по цене месячной подписки.
‼️ Очень важно, чтобы как можно больше людей поддержали проект в первые дни, по-этому те кто окажет поддержку первыми получат еще более выгодную стоимость на годовую подписку и существенный
Please open Telegram to view this post
VIEW IN TELEGRAM
Это облачная модель, предоставляющая готовую среду для разработки, тестирования и развертывания приложений без необходимости управлять инфраструктурой (серверы, сети, ОС).
Heroku → Легкий деплой веб-приложений.
Google App Engine → Запуск приложений в облаке Google.
AWS Elastic Beanstalk → Автоматическое управление инфраструктурой.
Microsoft Azure App Services → Запуск приложений в Azure без управления серверами.
Если хотите быстро развернуть приложение без настройки серверов.
Когда важна автоматическая масштабируемость.*
Если не хотите заниматься управлением ОС и базами данных.
curl https://cli-assets.heroku.com/install.sh | sh
heroku login
git push heroku main
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Для проверки доступных узлов используют команды, зависящие от инфраструктуры:
- В Kubernetes – kubectl get nodes показывает список всех рабочих нод.
- В Docker Swarm – docker node ls выводит активные и отключенные ноды.
- В Consul – consul members показывает зарегистрированные узлы.
- В Linux – можно проверить ping, nmap или ansible, чтобы убедиться, какие ноды доступны в сети.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4🤯2
VMware ESXi — это гипервизор, который позволяет создавать, управлять и администрировать виртуальные машины (ВМ) на физических серверах.
Устанавливал ESXi на сервер (с флешки, ISO-образа).
Настраивал сеть (vSwitch, VLAN, физические адаптеры).
Создавал локальные и удаленные хранилища (VMFS, NFS, iSCSI).
vmware -vl
Разворачивал ВМ (Windows, Linux, FreeBSD).
Настраивал ресурсы (CPU, RAM, диски, сетевые адаптеры).
Настраивал снапшоты и клонирование ВМ для резервного копирования.
Управлял виртуальными машинами через vSphere Client и ESXi Web UI.
vim-cmd vmsvc/createdummyvm my-vm /vmfs/volumes/datastore1/my-vm
Запуск ВМ через SSH
vim-cmd vmsvc/power.on 1
Создавал vSwitch для управления трафиком ВМ.
Настраивал VLAN для разделения сетей ВМ.
Использовал Distributed Switch (vDS) для централизованного управления сетью.
esxcli network nic list
Создание vSwitch:
esxcli network vswitch standard add -v vSwitch1
Настраивал локальные и удаленные хранилища (подключал iSCSI и NFS).
Создавал и увеличивал виртуальные диски (VMDK).
Настраивал vSAN для распределенного хранения данных.
esxcli storage filesystem list
Подключение iSCSI-хранилища
esxcli iscsi adapter discovery sendtarget add -a 192.168.1.10:3260
Использовал vMotion для живой миграции ВМ между хостами.
Настраивал автоматическое распределение нагрузки (DRS).
Настраивал High Availability (HA) для автоматического перезапуска ВМ в случае сбоя.
vim-cmd vmsvc/migrate 1 --host target-hostname
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😁1
StickBit (t в правах доступа) предотвращает удаление файлов в директории пользователями, не являющимися их владельцами. Проверяют через команду просмотра прав на директорию, где в конце должен быть t (drwxrwxrwt). Если бит отсутствует, его можно установить, что особенно важно для общих каталогов, таких как /tmp.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
Если сервер не пингуется, это не значит, что он не работает – проблема может быть в сети, настройках брандмауэра или самом сервере.
Подойти к серверу и проверить:
Горят ли индикаторы сети (LAN) на сервере?
Реагирует ли на клавиатуру/монитор?
Не завис ли сервер? (Может помочь Hard Reboot).
Проверяем, видит ли наш компьютер MAC-адрес сервера через `arp`.
Запрос ARP
arp -a | grep 192.168.1.100
Если MAC-адрес есть → пакеты доходят до сервера, но он не отвечает.
Если MAC-адреса нет → возможны проблемы с сетью (кабель, порт, VLAN, DHCP, статика).
Дополнительно проверить соединение
ethtool eth0 # Проверить состояние сетевого адаптера
ip link show eth0 # Интерфейс должен быть UP
Если
ping
отключен (ICMP заблокирован брандмауэром), но сервер работает, попробуем другие протоколы. Пробуем зайти по SSH (если это Linux)
ssh user@192.168.1.100
Пробуем зайти по RDP (если это Windows)
rdesktop 192.168.1.100
Пробуем зайти через HTTP (если там веб-сервер)
curl -I http://192.168.1.100
Подключаемся к серверу (если возможно) и проверяем, есть ли у него сеть.
Проверяем IP-адрес сервера
ip a
или
ifconfig -a
Пробуем пропинговать шлюз с сервера
ping 192.168.1.1
Если сервер не отвечает на ICMP, его может блокировать брандмауэр.
Linux (firewalld, iptables, ufw)
iptables -L -n | grep DROP # Проверяем правила iptables
ufw status # Проверяем UFW (если используется)
firewall-cmd --list-all # Проверяем firewalld
Если ICMP запрещен → разрешаем его
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
ufw allow proto icmp
firewall-cmd --add-icmp-block=echo-reply --permanent
firewall-cmd --reload
Windows (Проверить ICMP в брандмауэре Windows)
netsh advfirewall firewall show rule name="File and Printer Sharing (Echo Request - ICMPv4-In)"
Если правило отключено → включаем
netsh advfirewall firewall add rule name="ICMP Allow" protocol=icmpv4:8,any dir=in action=allow
Если сервер и клиент находятся в разных VLAN или подсетях, проверяем маршрут.
На клиенте
traceroute 192.168.1.100 # Linux
tracert 192.168.1.100 # Windows
Проверить маршруты на сервере
ip route show
Если маршрут отсутствует → добавляем вручную
ip route add 192.168.1.0/24 via 192.168.1.1
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Статические маршруты определяют, как пакеты передаются между сетями. Если есть нарушения:
- Проверяют таблицу маршрутизации (ip route, netstat -r, route -n).
- Используют traceroute, чтобы увидеть путь пакетов и выявить проблемные узлы.
- Анализируют сетевые логи (dmesg, journalctl), где могут быть ошибки маршрутизации.
- В сетевом оборудовании (show ip route static, debug ip routing) смотрят настройки маршрутов и возможные конфликты.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
Forwarded from easyoffer
На easyoffer 2.0 появится новый раздел:
Задачи с собеседований
🟠 Задачи на Алгоритмические, Live-coding и System Design из реальных собеседований
🟠 Вероятность встретить ту или иную задачу
🟠 Возможность подготовиться к задачам конкретной компании
Есть много сайтов, на которых можно тренироваться решать задачи, но у них у всех одна проблема – сами задачи люди просто выдумывают. На easyoffer 2.0 вы сможете готовиться к live-coding и system design секциям на основе задач из реальных собеседований. Вы можете найдете самые частые задачи и сделаете упор на их решение.
Считаные дни остались до старта краудфандинговой кампании, чтобы ускорить разработку easyoffer 2.0. Все кто, поддержал проект на этом этапе смогу получить 1 год доступа к сайту по цене месячной подписки, а те кто поддержат проект раньше других ито дешевле + получат существенный бонус. Следите за стартом 👉 в этом телеграм канале.
Задачи с собеседований
Есть много сайтов, на которых можно тренироваться решать задачи, но у них у всех одна проблема – сами задачи люди просто выдумывают. На easyoffer 2.0 вы сможете готовиться к live-coding и system design секциям на основе задач из реальных собеседований. Вы можете найдете самые частые задачи и сделаете упор на их решение.
Считаные дни остались до старта краудфандинговой кампании, чтобы ускорить разработку easyoffer 2.0. Все кто, поддержал проект на этом этапе смогу получить 1 год доступа к сайту по цене месячной подписки, а те кто поддержат проект раньше других ито дешевле + получат существенный бонус. Следите за стартом 👉 в этом телеграм канале.
Please open Telegram to view this post
VIEW IN TELEGRAM
Файл
terraform.tfstate
хранит текущее состояние инфраструктуры. Он нужен, чтобы Terraform знал, какие ресурсы уже существуют, и мог правильно управлять изменениями. Terraform использует
tfstate
, чтобы сопоставлять код с реальными ресурсами. В коде создаем виртуальную машину
hcl
resource "aws_instance" "example" {
ami = "ami-123456"
instance_type = "t2.micro"
}
Запускаем
terraform apply
, создается сервер в AWS В
terraform.tfstate
записывается информация об этом ресурсе При следующем
terraform apply
Terraform сверяет tfstate
с реальными ресурсами и вносит только изменения Когда ресурсы связаны (например, сервер и security group), Terraform понимает связи через
tfstate
и удаляет ресурсы в правильном порядке Когда несколько разработчиков работают с Terraform,
tfstate
должен храниться в общем месте, например - S3 + DynamoDB (AWS)
- Terraform Cloud
- GCS + Firestore (GCP)
- Azure Storage + CosmosDB (Azure)
hcl
terraform {
backend "s3" {
bucket = "my-terraform-state"
key = "prod/terraform.tfstate"
region = "us-east-1"
encrypt = true
dynamodb_table = "terraform-lock"
}
}
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
В Linux определяют дистрибутив и версию через системные файлы (/etc/os-release), команду uname или lsb_release.
В Windows проверяют через systeminfo, ver или WMI-запросы.
Если скрипту нужно определить ОС автоматически, проверяют системные файлы, команды или переменные окружения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤯4🔥1
В DevOps используются разные инструменты для автоматизации развертывания и конфигурации серверов.
Используются для настройки ОС, пакетов, сервисов и приложений.
Ansible – прост в освоении, использует SSH, без агентов
Puppet – декларативный подход, работает по клиент-серверной модели
Chef – использует Ruby DSL, сложнее в настройке
SaltStack – быстрый, поддерживает master-minion и режим без мастера
yaml
- name: Установка Nginx
hosts: web
tasks:
- name: Установить Nginx
apt:
name: nginx
state: present
Используются для автоматического развертывания серверов и облачной инфраструктуры.
Terraform – лучший выбор для облаков (AWS, GCP, Azure)
CloudFormation – инструмент от AWS для управления ресурсами
Pulumi – позволяет писать инфраструктуру на Python, TypeScript
hcl
resource "aws_instance" "web" {
ami = "ami-123456"
instance_type = "t2.micro"
}
Используются для создания готовых образов ОС с предустановленным ПО.
Packer – создает образы для AWS AMI, Docker, VMware
Docker – контейнеризация для изолированных окружений
Vagrant – для локального тестирования инфраструктуры
json
{
"builders": [{
"type": "amazon-ebs",
"region": "us-east-1",
"source_ami": "ami-123456",
"instance_type": "t2.micro",
"ssh_username": "ubuntu"
}]
}
Используются для управления контейнерами и кластеризацией.
Docker Compose – для локального запуска нескольких контейнеров
Kubernetes – для управления контейнерами в продакшене
Nomad – альтернатива Kubernetes от HashiCorp
yaml
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Forwarded from easyoffer
На easyoffer 2.0 появится:
Тренажер "Реальное собеседование"
🟠 Сценарии вопросов из реального собеседования
🟠 Возможность подготовиться к собеседованию в конкретную компанию
🟠 Итоговая статистика (прошёл/не прошёл)
Сценарий вопросов взят из реального собеседования. То есть вы тренируетесь на тех вопросах, которые действительно задавались в компании X.
Уже в начале следующей недели стартует краудфандинг кампания, чтобы ускорить разработку easyoffer 2.0. Все кто, поддержал проект на этом этапе смогу получить 1 год доступа к сайту по цене месячной подписки. Первые 150 донатеров получать особо-выгодную цену и бонус. Следите за стартом 👉 в этом телеграм канале, в нем информация о старте будет опубликована за 6 часов до официального начала.
Тренажер "Реальное собеседование"
Сценарий вопросов взят из реального собеседования. То есть вы тренируетесь на тех вопросах, которые действительно задавались в компании X.
Уже в начале следующей недели стартует краудфандинг кампания, чтобы ускорить разработку easyoffer 2.0. Все кто, поддержал проект на этом этапе смогу получить 1 год доступа к сайту по цене месячной подписки. Первые 150 донатеров получать особо-выгодную цену и бонус. Следите за стартом 👉 в этом телеграм канале, в нем информация о старте будет опубликована за 6 часов до официального начала.
Please open Telegram to view this post
VIEW IN TELEGRAM
Протокол сетевого уровня (3-й уровень OSI), используемый для диагностики сети. Он не передает пользовательские данные, а отправляет сообщения об ошибках, например:
- ping – проверяет доступность узла.
- traceroute – отслеживает маршрут пакетов.
ICMP помогает выявлять проблемы с соединением, но может быть заблокирован фаерволами.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2