Балансировщики нагрузки: или как разделить ношу на несколько плеч
Один сервер не справляется с нагрузкой? Вместо того чтобы покупать сервер побольше, добавьте несколько поменьше и поставьте перед ними балансировщик - того парня, который будет распределять нагрузку.
➤ Round Robin - по очереди
➤ Least Connections - тому, у кого меньше подключений
➤ IP Hash - один и тот же пользователь всегда попадает на один сервер
Типы балансировщиков:
➤ L4 (Transport) - работает на уровне TCP/UDP
➤ L7 (Application) - работает на уровне HTTP, умнее
Популярные решения:
➤ nginx - простой и эффективный
➤ HAProxy - профессиональное решение
➤ Cloud Load Balancers - от облачных провайдеров
А Вы какой балансировщик используете? С какими интересными кейсами сталкивались?
🌐 @helcode
Один сервер не справляется с нагрузкой? Вместо того чтобы покупать сервер побольше, добавьте несколько поменьше и поставьте перед ними балансировщик - того парня, который будет распределять нагрузку.
➤ Round Robin - по очереди
➤ Least Connections - тому, у кого меньше подключений
➤ IP Hash - один и тот же пользователь всегда попадает на один сервер
Типы балансировщиков:
➤ L4 (Transport) - работает на уровне TCP/UDP
➤ L7 (Application) - работает на уровне HTTP, умнее
Популярные решения:
➤ nginx - простой и эффективный
➤ HAProxy - профессиональное решение
➤ Cloud Load Balancers - от облачных провайдеров
А Вы какой балансировщик используете? С какими интересными кейсами сталкивались?
Балансировщик нагрузки - это как администратор в клубе: решает, кого впустить, кому сказать "мест нет", а VIP-клиентов (по IP hash) всегда проводит к их любимому столику (серверу).
🌐 @helcode
❤2🥱1🤝1
Nginx как балансировщик: включаем многопоточность для нашего приложения
У Вас несколько экземпляров приложения и нужно распределять между ними нагрузку. Nginx может быть не только веб-сервером, но и отличным балансировщиком.
🛠 Пример (конфиг для балансировки):
➤
➤
➤
А Вы настраивали health checks в nginx? Какие стратегии балансировки используете?
🌐 @helcode
У Вас несколько экземпляров приложения и нужно распределять между ними нагрузку. Nginx может быть не только веб-сервером, но и отличным балансировщиком.
🛠 Пример (конфиг для балансировки):
upstream backend {
server backend1.example.com:8000 weight=3;
server backend2.example.com:8001;
server backend3.example.com:8002 backup;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}➤
weight=3 - в 3 раза больше запросов на этот сервер➤
backup - использовать только если остальные упали➤
proxy_set_header - передавать заголовки клиентаА Вы настраивали health checks в nginx? Какие стратегии балансировки используете?
Nginx в роли балансировщика это как шеф-повар, который не готовит сам, а раздает задания поварам-стажерам (бэкендам), следя, чтобы никто не перегрузился.
🌐 @helcode
👀3
Кеширование: или как не делать одну и ту же работу дважды
Ваше приложение каждый раз заново вычисляет тяжелые запросы, генерирует одни и те же страницы или ходит в базу за одинаковыми данными. Кеш - это память ленивого гения, который помнит результат и не любит повторяться.
➤ Client-side caching - браузер кеширует статику
➤ Server-side caching - Redis, Memcached для данных
➤ CDN caching - кеширование контента географически ближе к пользователям
➤ Database caching - кеш-запросов в самой БД
Когда использовать:
➤ Данные редко меняются
➤ Вычисления тяжелые
➤ Частые одинаковые запросы
А вы какой подход к кешированию используете? Redis, Memcached или что-то другое? Делитесь опытом!
🌐 @helcode
Ваше приложение каждый раз заново вычисляет тяжелые запросы, генерирует одни и те же страницы или ходит в базу за одинаковыми данными. Кеш - это память ленивого гения, который помнит результат и не любит повторяться.
➤ Client-side caching - браузер кеширует статику
➤ Server-side caching - Redis, Memcached для данных
➤ CDN caching - кеширование контента географически ближе к пользователям
➤ Database caching - кеш-запросов в самой БД
Когда использовать:
➤ Данные редко меняются
➤ Вычисления тяжелые
➤ Частые одинаковые запросы
А вы какой подход к кешированию используете? Redis, Memcached или что-то другое? Делитесь опытом!
Кеш - это как шпаргалка на экзамене: зачем каждый раз вычислять интеграл, если можно посмотреть в готовый ответ? Главное - вовремя обновлять шпаргалки, когда билеты меняются.
🌐 @helcode
👍4
Redis: 5 команд, которые сделают вас мастером кеширования
Redis - это не просто хранилище ключ-значение, это швейцарский нож для данных в памяти. Вот команды, которые должны быть в арсенале каждого автоматизатора.
Пример:
EX 3600 устанавливает время жизни ключа в 1 час. Автоматическое удаление устаревших данных - одна из крутейших фич Redis.
Какую самую необычную задачу вы решали с помощью Redis?
🌐 @helcode | #bash
Redis - это не просто хранилище ключ-значение, это швейцарский нож для данных в памяти. Вот команды, которые должны быть в арсенале каждого автоматизатора.
Пример:
# Положить значение
SET user:123 "John Doe" EX 3600 # EX - время жизни в секундах
# Получить значение
GET user:123
# Проверить существование ключа
EXISTS user:123
# Установить несколько значений за раз
MSET user:123 "John" user:456 "Jane"
# Увеличить счетчик
INCR page_views
EX 3600 устанавливает время жизни ключа в 1 час. Автоматическое удаление устаревших данных - одна из крутейших фич Redis.
Какую самую необычную задачу вы решали с помощью Redis?
Redis - это диктофон для ваших данных: записал, прослушал, а через час оно само стирается. Удобно!
🌐 @helcode | #bash
👍1
Кешируем результаты API-запросов в Redis
Ваш скрипт делает запросы к медленному API, которое отвечает одними и теми же данными. Давайте сохраним результат в Redis и будем использовать его вместо повторных запросов!
🛠 Пример:
А вы кешируете запросы к внешним API? Какие библиотеки или подходы используете?
P.S. Если Вам интересно, как мы настраивали кеширование в нашем боте и с чем столкнулись на практике - пишите об этом в комментариях! Спойлер:ошибок было действительно много...
🌐 @helcode | #python
Ваш скрипт делает запросы к медленному API, которое отвечает одними и теми же данными. Давайте сохраним результат в Redis и будем использовать его вместо повторных запросов!
🛠 Пример:
import redis
import requests
import json
import time
r = redis.Redis(host='localhost', port=6379, db=0)
def get_cached_data(user_id):
cache_key = f"user:{user_id}"
cached = r.get(cache_key)
if cached:
print("Данные из кеша!")
return json.loads(cached)
# Если нет в кеше - делаем запрос к API
print("Делаем запрос к API...")
response = requests.get(f"https://api.example.com/users/{user_id}")
data = response.json()
# Сохраняем в кеш на 5 минут
r.setex(cache_key, 300, json.dumps(data))
return data
# Использование
user_data = get_cached_data(123)
setex устанавливает значение с временем жизни. Через 5 минут ключ автоматически удалится.А вы кешируете запросы к внешним API? Какие библиотеки или подходы используете?
Кеширование API-запросов - это как записывать сериал на флешку: не нужно ждать загрузки каждый раз, когда хотите пересмотреть.
P.S. Если Вам интересно, как мы настраивали кеширование в нашем боте и с чем столкнулись на практике - пишите об этом в комментариях! Спойлер:
🌐 @helcode | #python
👍4
Очереди сообщений: или как разгрузить ваш основной сервис
Пользователь загрузил видео, а ваш сервер должен его обработать, отправить уведомления, сгенерировать превью... И все это мгновенно! Очереди сообщений позволяют отложить тяжелую работу и выполнять ее фоном.
Ключевые понятия:
➤ Producer - производитель (отправляет сообщения)
➤ Consumer - потребитель (обрабатывает сообщения)
➤ Queue - очередь (хранит сообщения)
➤ Broker - посредник (управляет очередями)
Популярные решения:
➤ RabbitMQ - классика, много возможностей
➤ Redis Streams - просто, если уже есть Redis
➤ Apache Kafka - для больших объемов данных
Вы используете очереди в своих проектах? Для каких задач?
🌐 @helcode
Пользователь загрузил видео, а ваш сервер должен его обработать, отправить уведомления, сгенерировать превью... И все это мгновенно! Очереди сообщений позволяют отложить тяжелую работу и выполнять ее фоном.
Ключевые понятия:
➤ Producer - производитель (отправляет сообщения)
➤ Consumer - потребитель (обрабатывает сообщения)
➤ Queue - очередь (хранит сообщения)
➤ Broker - посредник (управляет очередями)
Популярные решения:
➤ RabbitMQ - классика, много возможностей
➤ Redis Streams - просто, если уже есть Redis
➤ Apache Kafka - для больших объемов данных
Вы используете очереди в своих проектах? Для каких задач?
Очередь сообщений - это как почтовый ящик: можно бросать письма, даже когда почтальон спит. Он разберет их утром.
🌐 @helcode
❤1🔥1
RabbitMQ: управляем очередями как профессионалы
RabbitMQ - один из самых популярных брокеров сообщений. Вот основные команды для управления им из командной строки.
Пример:
Какие самые интересные паттерны с очередями Dы реализовывали? Work queues, pub/sub?
🌐 @helcode | #bash
RabbitMQ - один из самых популярных брокеров сообщений. Вот основные команды для управления им из командной строки.
Пример:
# Создать очередь
rabbitmqadmin declare queue name=video_processing durable=true
# Отправить сообщение
rabbitmqadmin publish exchange=amq.default routing_key=video_processing payload="hello"
# Посмотреть статистику
rabbitmqctl list_queues name messages_ready messages_unacknowledged
# Создать пользователя
rabbitmqctl add_user myuser mypassword
# Настроить права
rabbitmqctl set_permissions -p / myuser ".*" ".*" ".*"
durable=true делает очередь устойчивой - сообщения не потеряются при перезагрузке RabbitMQ.Какие самые интересные паттерны с очередями Dы реализовывали? Work queues, pub/sub?
Команда rabbitmqctl - это как пульт управления для Dаших очередей: можно посмотреть, кто в очереди стоит и сколько народу ждет своей очереди.
🌐 @helcode | #bash
👀5❤1
Пишем простую систему обработки задач с Redis RQ
Нужен простой способ выполнять фоновые задачи без настройки сложных брокеров? Redis RQ (Redis Queue) - минималистичное и эффективное решение для Python.
Код:
RQ использует Redis как брокер. Воркеры постоянно слушают очередь и выполняют задачи по мере их поступления.
А Вы пробовали RQ или другие простые системы очередей? Как впечатления?
🌐 @helcode | #python
Нужен простой способ выполнять фоновые задачи без настройки сложных брокеров? Redis RQ (Redis Queue) - минималистичное и эффективное решение для Python.
Код:
# worker.py
import requests
from rq import Queue
from redis import Redis
from worker import count_words
# Подключаемся к Redis
redis_conn = Redis()
q = Queue(connection=redis_conn)
# Отправляем задачу в очередь
job = q.enqueue(count_words, 'https://example.com')
print(f"Задача {job.id} добавлена в очередь!")
# Запускаем воркер в отдельном терминале:
# rq worker
# tasks.py
import requests
def count_words(url):
response = requests.get(url)
word_count = len(response.text.split())
print(f"На странице {url} слов: {word_count}")
return word_count
RQ использует Redis как брокер. Воркеры постоянно слушают очередь и выполняют задачи по мере их поступления.
А Вы пробовали RQ или другие простые системы очередей? Как впечатления?
Redis RQ - это как нанять стажера на подработку: отдаешь задачу и забываешь, а он тихо ее выполняет где-то в фоне.
🌐 @helcode | #python
👍2
Контейнеризация vs Виртуализация: битва технологий
Нужно изолировать приложения, но не знаете что выбрать - виртуальные машины или контейнеры? Давайте разберемся в разнице.
➤ Виртуализация: полная эмуляция оборудования. Каждая VM имеет свою ОС. Тяжеловесная, но полная изоляция.
➤ Контейнеризация: изоляция на уровне процессов. Все контейнеры используют ядро хостовой ОС. Легковесная, быстрый старт.
Сравнение:
Вы используете виртуализацию или контейнеризацию? В каких случаях что используете?
🌐 @helcode
Нужно изолировать приложения, но не знаете что выбрать - виртуальные машины или контейнеры? Давайте разберемся в разнице.
➤ Виртуализация: полная эмуляция оборудования. Каждая VM имеет свою ОС. Тяжеловесная, но полная изоляция.
➤ Контейнеризация: изоляция на уровне процессов. Все контейнеры используют ядро хостовой ОС. Легковесная, быстрый старт.
Сравнение:
Виртуальные машины:
✓ Полная изоляция
✓ Разные ОС на одном железе
✗ Высокие накладные расходы
Контейнеры:
✓ Быстрый запуск
✓ Низкие накладные расходы
✗ Общее ядро ОС
Вы используете виртуализацию или контейнеризацию? В каких случаях что используете?
Виртуализация - это как снять отдельную квартиру для каждого гостя. Контейнеризация - как расселить гостей по комнатам в одном большом доме. Экономичнее, но соседи ближе.
🌐 @helcode
👍3
Docker Compose: оркестрируем многокомпонентные приложения
Ваше приложение состоит из веб-сервера, базы данных и кеша. Запускать каждый контейнер вручную - мука. Docker Compose позволяет описать всю инфраструктуру в одном файле.
Пример (docker-compose.yml):
Какие самые сложные композ-файлы Вам приходилось писать?
🌐 @helcode | #yaml
Ваше приложение состоит из веб-сервера, базы данных и кеша. Запускать каждый контейнер вручную - мука. Docker Compose позволяет описать всю инфраструктуру в одном файле.
Пример (docker-compose.yml):
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
depends_on:
- db
- redis
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
volumes:
- db_data:/var/lib/postgresql/data
redis:
image: redis:alpine
volumes:
db_data:
depends_on гарантирует, что база и Redis запустятся до веб-сервера. Volumes сохраняют данные между перезапусками.Какие самые сложные композ-файлы Вам приходилось писать?
Docker Compose - это как дирижер оркестра: одним взмахом палочки запускает всю инфраструктуру в идеальной гармонии.
🌐 @helcode | #yaml
🔥2
Поднимаем локальное окружение с WordPress + MySQL за 5 минут
Нужно быстро протестировать плагин или тему WordPress? Не нужно устанавливать веб-сервер, PHP и MySQL на свою машину. Docker Compose сделает все за Вас!
Пример (docker-compose.yml):
Как использовать:
Весь WordPress и MySQL запускаются в изолированных контейнерах. После остановки данные сохраняются в volume.
🌐 @helcode | #yaml #bash
Нужно быстро протестировать плагин или тему WordPress? Не нужно устанавливать веб-сервер, PHP и MySQL на свою машину. Docker Compose сделает все за Вас!
Пример (docker-compose.yml):
version: '3.8'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: root
depends_on:
- db
volumes:
db_data:
Как использовать:
docker-compose up -d
# Открываем http://localhost:8080
Весь WordPress и MySQL запускаются в изолированных контейнерах. После остановки данные сохраняются в volume.
Локальное окружение на Docker - это как играть в симулятор жизни: можно экспериментировать, не боясь сломать что-то важное.
🌐 @helcode | #yaml #bash
👍1
Serverless: или код без серверной головной боли
Вам нужно запустить код, но не хочется думать о серверах, масштабировании и обновлениях. Serverless - это подход, где вы просто загружаете код, а провайдер делает все остальное.
Подходы к задаче:
➤ FaaS (Function as a Service) - запуск отдельных функций
➤ Платите за выполнение - только когда код работает
➤ Автоматическое масштабирование - от 0 до тысяч параллельных выполнений
Популярные платформы:
➤ AWS Lambda
➤ Google Cloud Functions
➤ Azure Functions
А также российские аналоги (таковы современные реалии...):
- Yandex Cloud Functions 🇷🇺
- VK Cloud Solutions 🇷🇺
- SberCloud Cloud Functions 🇷🇺
- Selectel Serverless 🇷🇺
Плюсы:
✓ Нет управления серверами
✓ Автоматическое масштабирование
✓ Плата только за использование
Минусы:
✗ Cold start проблемы
✗ Ограничения по времени выполнения
✗ Vendor lock-in
Вы уже пробовали serverless? Для каких задач он подошел лучше всего?
🌐 @helcode
Вам нужно запустить код, но не хочется думать о серверах, масштабировании и обновлениях. Serverless - это подход, где вы просто загружаете код, а провайдер делает все остальное.
Подходы к задаче:
➤ FaaS (Function as a Service) - запуск отдельных функций
➤ Платите за выполнение - только когда код работает
➤ Автоматическое масштабирование - от 0 до тысяч параллельных выполнений
Популярные платформы:
➤ AWS Lambda
➤ Google Cloud Functions
➤ Azure Functions
А также российские аналоги (таковы современные реалии...):
- Yandex Cloud Functions 🇷🇺
- VK Cloud Solutions 🇷🇺
- SberCloud Cloud Functions 🇷🇺
- Selectel Serverless 🇷🇺
Плюсы:
✓ Нет управления серверами
✓ Автоматическое масштабирование
✓ Плата только за использование
Минусы:
✗ Cold start проблемы
✗ Ограничения по времени выполнения
✗ Vendor lock-in
Вы уже пробовали serverless? Для каких задач он подошел лучше всего?
Serverless - это как такси: платишь только за поездку, не нужно покупать машину, заправлять ее и делать техобслуживание.
🌐 @helcode
🔥2🤯1
AWS CLI: управляем облаком из терминала
Постоянно заходить в веб-консоль AWS неудобно. AWS CLI позволяет управлять всеми сервисами прямо из терминала. Вот самые полезные команды.
Пример:
AWS CLI использует те же права доступа, что и веб-консоль. Настройте IAM-роли правильно!
Какие ваши любимые команды AWS CLI?
🌐 @helcode | #bash
Постоянно заходить в веб-консоль AWS неудобно. AWS CLI позволяет управлять всеми сервисами прямо из терминала. Вот самые полезные команды.
Пример:
# Настроить профиль
aws configure
# Посмотреть EC2 инстансы
aws ec2 describe-instances
# Создать S3 бакет
aws s3 mb s3://my-unique-bucket-name
# Загрузить файл в S3
aws s3 cp file.txt s3://my-bucket/
# Создать Lambda функцию
aws lambda create-function --function-name my-function \
--runtime python3.9 --role arn:aws:iam::123456789012:role/lambda-role \
--handler lambda_function.lambda_handler --zip-file fileb://function.zip
AWS CLI использует те же права доступа, что и веб-консоль. Настройте IAM-роли правильно!
Какие ваши любимые команды AWS CLI?
AWS CLI - это как пульт от всего облака: не нужно вставать с кресла, чтобы управлять целым ЦОДом.
🌐 @helcode | #bash
🔥3
Пишем свою первую Lambda функцию на Python
Хотите попробовать serverless, но кажется сложным? Давайте создадим простейшую Lambda функцию, которая возвращает "Hello, World!".
🛠 Пример:
Как развернуть:
Функция получает
А вы уже пробовали Lambda? Какие функции написали?
🌐 @helcode | #python
Хотите попробовать serverless, но кажется сложным? Давайте создадим простейшую Lambda функцию, которая возвращает "Hello, World!".
🛠 Пример:
import json
def lambda_handler(event, context):
# event содержит данные запроса
name = event.get('name', 'World')
return {
'statusCode': 200,
'body': json.dumps({
'message': f'Hello, {name}!'
})
}
Как развернуть:
# Упаковываем код в zip
zip function.zip lambda_function.py
# Создаем функцию в AWS
aws lambda create-function --function-name hello-world \
--runtime python3.9 --role arn:aws:iam::123456789012:role/lambda-role \
--handler lambda_function.lambda_handler --zip-file fileb://function.zip
# Тестируем
aws lambda invoke --function-name hello-world \
--payload '{"name": "Digital Automation Lab"}' output.txt
Функция получает
event (данные запроса) и context (информация о выполнении), а возвращает ответ в определенном формате.А вы уже пробовали Lambda? Какие функции написали?
Написание Lambda функции - это как отправка письма по почте: написал, отправил, а почтальон (AWS) уже знает, куда его доставить и как обработать.
🌐 @helcode | #python
👍2❤1
Infrastructure as Code: или как управлять серверами как кодом
Вы вручную настраиваете серверы, а потом не можете воспроизвести ту же конфигурацию? IaC - это подход, при котором инфраструктура описывается в коде и разворачивается автоматически.
Аспекты:
➤ Декларативный подход - описываем ЖЕЛАЕМОЕ состояние
➤ Идемпотентность - многократное применение дает один результат
➤ Версионирование - инфраструктура в Git
Популярные инструменты:
➤ Terraform - мультиоблачный, свой язык HCL
➤ CloudFormation - только AWS, YAML/JSON
➤ Pulumi - использование реальных языков программирования
Вы уже используете IaC? Какой инструмент выбрали и почему?
🌐 @helcode
Вы вручную настраиваете серверы, а потом не можете воспроизвести ту же конфигурацию? IaC - это подход, при котором инфраструктура описывается в коде и разворачивается автоматически.
Аспекты:
➤ Декларативный подход - описываем ЖЕЛАЕМОЕ состояние
➤ Идемпотентность - многократное применение дает один результат
➤ Версионирование - инфраструктура в Git
Популярные инструменты:
➤ Terraform - мультиоблачный, свой язык HCL
➤ CloudFormation - только AWS, YAML/JSON
➤ Pulumi - использование реальных языков программирования
Вы уже используете IaC? Какой инструмент выбрали и почему?
IaC - это как рецепт в кулинарии: можно воспроизвести тот же торт сто раз, и он всегда будет одинаково вкусным. Без рецепта - как угадывать ингредиенты.
🌐 @helcode
👍2
Terraform: основные команды для управления инфраструктурой
Terraform стал стандартом для IaC. Вот шпаргалка по основным командам, которые нужно знать каждому инженеру.
Код:
Всегда запускайте
Какие самые сложные вещи вы описывали в Terraform? Базы данных, Kubernetes?
🌐 @helcode | #bash
Terraform стал стандартом для IaC. Вот шпаргалка по основным командам, которые нужно знать каждому инженеру.
Код:
# Инициализация проекта
terraform init
# Просмотр плана изменений
terraform plan
# Применение изменений
terraform apply
# Уничтожение инфраструктуры
terraform destroy
# Просмотр состояния
terraform show
# Обновление состояния
terraform refresh
Всегда запускайте
terraform plan перед apply! Это покажет, что именно изменится, и спасет от неожиданностей.Какие самые сложные вещи вы описывали в Terraform? Базы данных, Kubernetes?
Команда terraform destroy - это как красная кнопка: нажимаешь, и вся тщательно построенная инфраструктура исчезает. Страшно, но иногда очень нужно.
🌐 @helcode | #bash
🤩2❤1🔥1
Мониторим изменения в файлах inotifywait
Нужно отслеживать изменения в файлах или директориях и автоматически выполнять действия (перезагружать сервис, запускать тесты и т.д.)?
🛠 Варианты использования:
- Автоперезагрузка dev-сервера
- Синхронизация файлов при изменении
- Запуск тестов при изменении кода
🌐 @helcode | #bash
Нужно отслеживать изменения в файлах или директориях и автоматически выполнять действия (перезагружать сервис, запускать тесты и т.д.)?
inotifywait - утилита для отслеживания событий файловой системы# Установка
sudo apt install inotify-tools
# Мониторим изменения в JS файлах
inotifywait -m -e modify,create,delete --format "%w%f" ./src/*.js |
while read file; do
echo "Файл $file изменен, перезагружаем сервер..."
pkill -f "node server.js"
node server.js &
done
🛠 Варианты использования:
- Автоперезагрузка dev-сервера
- Синхронизация файлов при изменении
- Запуск тестов при изменении кода
🌐 @helcode | #bash
👍2
Анализируем логи с awk
Нужно быстро проанализировать логи и получить статистику?
Преимущества:
➤ Работает с огромными файлами
➤ Гибкие условия фильтрации
➤ Можно считать суммы, средние, группировать
🌐 @helcode | #bash
Нужно быстро проанализировать логи и получить статистику?
awk для сложной обработки текста# Топ IP-адресов в access.log
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
# Статистика HTTP-статусов
awk '{print $9}' access.log | sort | uniq -c | sort -nr
# Средний размер ответа по URL
awk '{sum[$7] += $10; count[$7]++} END {for (url in sum) print url, sum[url]/count[url]}' access.log
Преимущества:
➤ Работает с огромными файлами
➤ Гибкие условия фильтрации
➤ Можно считать суммы, средние, группировать
🌐 @helcode | #bash
👍4
Работаем с CSV в командной строке
Нужно быстро обработать CSV файл без открытия Excel?
Комбинация утилит для работы с CSV
Идеально для быстрого анализа данных, подготовки данных для скриптов
🌐 @helcode | #bash
Нужно быстро обработать CSV файл без открытия Excel?
Комбинация утилит для работы с CSV
# Установка csvkit для удобной работы
pip install csvkit
# Просмотр структуры
csvstat data.csv
# Фильтрация строк
csvgrep -c "status" -m "active" data.csv
# Выбор колонок
csvcut -c "name,email,phone" data.csv
# Сортировка
csvsort -c "date" -r data.csv
# А если нет csvkit - используем awk:
awk -F',' '$3 > 1000 {print $1 "," $3}' data.csv
Идеально для быстрого анализа данных, подготовки данных для скриптов
🌐 @helcode | #bash
👍3
Шифруем файлы с GPG
Нужно безопасно передать конфиденциальные файлы или хранить пароли?
Шифрование с помощью GPG
🛠 Лучшие практики:
➤ Используйте надежные парольные фразы
➤ Храните закрытый ключ в безопасном месте
➤ Для конфигов используйте симметричное шифрование
🌐 @helcode | #bash
Нужно безопасно передать конфиденциальные файлы или хранить пароли?
Шифрование с помощью GPG
# Генерация ключевой пары
gpg --full-generate-key
# Шифрование файла для получателя
gpg --encrypt --recipient alice@company.com secret_document.txt
# Расшифровка
gpg --decrypt secret_document.txt.gpg > decrypted.txt
# Шифрование симметричным ключом (только пароль)
gpg --symmetric --cipher-algo AES256 file.txt
🛠 Лучшие практики:
➤ Используйте надежные парольные фразы
➤ Храните закрытый ключ в безопасном месте
➤ Для конфигов используйте симметричное шифрование
🌐 @helcode | #bash
👍2
Работа с API через curl
Нужно протестировать API или автоматизировать запросы?
✅ Полезные флаги:
➤
➤
➤
🌐 @helcode | #bash
Нужно протестировать API или автоматизировать запросы?
curl с правильными заголовками и аутентификацией# Базовый GET запрос
curl -X GET "https://api.example.com/users" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN"
# POST с JSON телом
curl -X POST "https://api.example.com/users" \
-H "Content-Type: application/json" \
-d '{"name": "John", "email": "john@example.com"}'
# Загрузка файла
curl -X POST "https://api.example.com/upload" \
-F "file=@document.pdf" \
-F "description=Important document"
# Сохраняем cookies для сессии
curl -c cookies.txt -X POST "https://api.example.com/login" \
-d "username=user&password=pass"
✅ Полезные флаги:
➤
-v для verbose вывода➤
--retry 3 для повторения при ошибках➤
--max-time 10 для таймаута🌐 @helcode | #bash
👍3