📕
💡BFS — поиск в ширину — это алгоритм обхода графа, который сначала посещает всех соседей вершины, затем соседей этих соседей, и так далее.
⚙️ Как работает BFS
1. Берём любую стартовую вершину.
2. Добавляем её в очередь.
3. Пока очередь не пуста:
- достаём вершину из очереди,
- посещаем всех её соседей,
- непосещённых соседей добавляем в очередь.
✅Релизация на python:
#algorithm #python
Алгоритм BFS (Breadth-First Search)💡BFS — поиск в ширину — это алгоритм обхода графа, который сначала посещает всех соседей вершины, затем соседей этих соседей, и так далее.
⚙️ Как работает BFS
1. Берём любую стартовую вершину.
2. Добавляем её в очередь.
3. Пока очередь не пуста:
- достаём вершину из очереди,
- посещаем всех её соседей,
- непосещённых соседей добавляем в очередь.
✅Релизация на python:
from collections import deque
def bfs(graph, start):
visited = set()
queue = deque([start])
order = [] # порядок обхода
while queue:
vertex = queue.popleft()
if vertex not in visited:
visited.add(vertex)
order.append(vertex)
for neighbor in graph[vertex]:
if neighbor not in visited:
queue.append(neighbor)
return order
graph = {
'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []
}
print(bfs(graph, 'A'))
#algorithm #python
🔹 DFS (
💡Идея:
Исследуем граф «вглубь», пока не достигнем конца пути, затем возвращаемся.
Нужно хранить посещённые вершины (visited).
🔧Применение:
Поиск пути, топологическая сортировка, компоненты связности.
⚙️Рекурсивноя реализвация:
⚙️Итеративно через стек:
✅Вывод:
#algorithm #python
Depth-First Search) — поиск в глубину в графе💡Идея:
Исследуем граф «вглубь», пока не достигнем конца пути, затем возвращаемся.
Нужно хранить посещённые вершины (visited).
🔧Применение:
Поиск пути, топологическая сортировка, компоненты связности.
⚙️Рекурсивноя реализвация:
graph = {
'A': ['B','C'], 'B': ['D','E'], 'C': ['F'],
'D': [], 'E': ['F'], 'F': []
}
def dfs(graph, start, visited=None):
if visited is None: visited = set()
visited.add(start)
print(start, end=' ')
for neighbor in graph[start]:
if neighbor not in visited:
dfs(graph, neighbor, visited)
dfs(graph, 'A')⚙️Итеративно через стек:
def dfs_iter(graph, start):
visited, stack = set(), [start]
while stack:
v = stack.pop()
if v not in visited:
print(v, end=' ')
visited.add(v)
stack.extend(reversed(graph[v]))
dfs_iter(graph, 'A')
✅Вывод:
A B D E F C
#algorithm #python
🌐
Nginx (engine-x) — один из самых популярных веб-серверов в мире.
Создан для высокой нагрузки, он легко обслуживает тысячи одновременных соединений и почти не расходует ресурсы.
🔥 Почему Nginx так любят?
⚡️ Высокая производительность — событийная модель вместо тяжелых потоков.
🧊 Идеален для статики — картинки, файлы, сайты загружаются молниеносно.
🔁 Reverse Proxy — пропускает запросы к backend'ам (Node.js, Python, Go и т.д.).
⚙️ Load Balancer — распределяет нагрузку по нескольким серверам.
🔐 Удобная работа с HTTPS — легко поднимает TLS.
🧱 Гибкая конфигурация — всё через простой nginx.conf.
📌 Где используется?
как фронт сервер для приложений
как API-gateway
в Docker/Kubernetes
на высоконагруженных сайтах, CDN, стримингах
📚Docs: https://nginx.org/en/docs/index.html
🌐GitHub: https://github.com/nginx/nginx
#web
Nginx — быстрый, лёгкий, мощныйNginx (engine-x) — один из самых популярных веб-серверов в мире.
Создан для высокой нагрузки, он легко обслуживает тысячи одновременных соединений и почти не расходует ресурсы.
🔥 Почему Nginx так любят?
⚡️ Высокая производительность — событийная модель вместо тяжелых потоков.
🧊 Идеален для статики — картинки, файлы, сайты загружаются молниеносно.
🔁 Reverse Proxy — пропускает запросы к backend'ам (Node.js, Python, Go и т.д.).
⚙️ Load Balancer — распределяет нагрузку по нескольким серверам.
🔐 Удобная работа с HTTPS — легко поднимает TLS.
🧱 Гибкая конфигурация — всё через простой nginx.conf.
📌 Где используется?
как фронт сервер для приложений
как API-gateway
в Docker/Kubernetes
на высоконагруженных сайтах, CDN, стримингах
📚Docs: https://nginx.org/en/docs/index.html
🌐GitHub: https://github.com/nginx/nginx
#web
✅ Dokploy — деплой без боли и лишней магии
⚙️Dokploy — это современная платформа для деплоя приложений, которая делает управление серверами и контейнерами простым, понятным и приятным.
🔧 Что умеет Dokploy?
✅ Деплой приложений через Docker
✅ Удобная Web-панель для управления проектами
✅ Поддержка GitHub / GitLab — деплой по push
✅ Автоматический SSL (Let’s Encrypt)
✅ Простая настройка доменных имен
✅ Управление переменными окружения
✅ Мониторинг и логи в одном месте
🎯 Кому подойдёт?
✔️ Backend и Fullstack-разработчикам
✔️ Стартапам
🌐 Официальный сайт: https://dokploy.com
#web #devops
⚙️Dokploy — это современная платформа для деплоя приложений, которая делает управление серверами и контейнерами простым, понятным и приятным.
🔧 Что умеет Dokploy?
✅ Деплой приложений через Docker
✅ Удобная Web-панель для управления проектами
✅ Поддержка GitHub / GitLab — деплой по push
✅ Автоматический SSL (Let’s Encrypt)
✅ Простая настройка доменных имен
✅ Управление переменными окружения
✅ Мониторинг и логи в одном месте
🎯 Кому подойдёт?
✔️ Backend и Fullstack-разработчикам
✔️ Стартапам
🌐 Официальный сайт: https://dokploy.com
#web #devops
👍1
✅ gRPC и Go (Golang)
📚Если REST уже стал привычным инструментом, самое время познакомиться с gRPC — быстрым и строгим способом общения сервисов между собой
Что такое gRPC?
gRPC — это RPC-фреймворк от Google, который:
* использует HTTP/2
* передаёт данные через Protocol Buffers
* отлично подходит для микросервисов
* быстрее и компактнее REST + JSON
⚙️Базовый флоу работы с gRPC в Go:
1️⃣Описываем контракт в
2️⃣ Генерируем код:
3️⃣ Реализуем server (структура + методы)
4️⃣ Поднимаем gRPC-сервер
5️⃣ Пишем client и вызываем методы как обычные функции
Пример RPC-метода:
Когда стоит выбирать
✔️ микросервисы
✔️ высокая нагрузка
✔️ строгие контракты между сервисами
✔️ внутренняя коммуникация
#web #backend #go
📚Если REST уже стал привычным инструментом, самое время познакомиться с gRPC — быстрым и строгим способом общения сервисов между собой
Что такое gRPC?
gRPC — это RPC-фреймворк от Google, который:
* использует HTTP/2
* передаёт данные через Protocol Buffers
* отлично подходит для микросервисов
* быстрее и компактнее REST + JSON
⚙️Базовый флоу работы с gRPC в Go:
1️⃣Описываем контракт в
.proto2️⃣ Генерируем код:
protoc --go_out=. --go-grpc_out=. service.proto
3️⃣ Реализуем server (структура + методы)
4️⃣ Поднимаем gRPC-сервер
5️⃣ Пишем client и вызываем методы как обычные функции
Пример RPC-метода:
service UserService {
rpc GetUser (UserRequest) returns (UserResponse);
}Когда стоит выбирать
gRPC?✔️ микросервисы
✔️ высокая нагрузка
✔️ строгие контракты между сервисами
✔️ внутренняя коммуникация
#web #backend #go
🤔1
✅Fabric — лучший старт для моддинга Minecraft
Если хочешь создавать собственные моды для Minecraft или развивать уже существующие — обрати внимание на Fabric. Это лёгкий, быстрый и гибкий инструмент, который стал стандартом для моддеров, которым важны производительность и актуальность.
✨ Почему Fabric?
⚡️ Лёгкий и быстрый — минимальная нагрузка, работает даже на слабых устройствах.
🧩 Модульность — чёткая структура, которую легко понимать и расширять.
🚀 Быстро обновляется — новые версии игры поддерживаются почти сразу после выхода.
🛠 Fabric API — удобная библиотека с готовыми инструментами для разработки.
🤝 Большое комьюнити — множество примеров, гайдов и открытого кода.
Docs: https://docs.fabricmc.net/
#gamedev
Если хочешь создавать собственные моды для Minecraft или развивать уже существующие — обрати внимание на Fabric. Это лёгкий, быстрый и гибкий инструмент, который стал стандартом для моддеров, которым важны производительность и актуальность.
✨ Почему Fabric?
⚡️ Лёгкий и быстрый — минимальная нагрузка, работает даже на слабых устройствах.
🧩 Модульность — чёткая структура, которую легко понимать и расширять.
🚀 Быстро обновляется — новые версии игры поддерживаются почти сразу после выхода.
🛠 Fabric API — удобная библиотека с готовыми инструментами для разработки.
🤝 Большое комьюнити — множество примеров, гайдов и открытого кода.
Docs: https://docs.fabricmc.net/
#gamedev
🤔1
Какие посты вы ждёте больше ?
Anonymous Poll
30%
backend
30%
frontend
20%
Computer Since
30%
DevOps
30%
Leet Code/Алгоримты и структура данных
10%
useful lib/framework
✅Двусвязный список (Doubly Linked List)
Двусвязный список — структура данных, где каждый узел хранит:
✔️значение
✔️ссылку на следующий узел (next)
✔️ссылку на предыдущий узел (prev)
1️⃣Узел списка:
2️⃣Двусвязный список:
3️⃣Вставка в начало — O(1)
4️⃣Обход списка — O(n)
#ComputerScience #algorithms
Двусвязный список — структура данных, где каждый узел хранит:
✔️значение
✔️ссылку на следующий узел (next)
✔️ссылку на предыдущий узел (prev)
1️⃣Узел списка:
class Node:
def __init__(self, data):
self.data = data
self.next = None
self.prev = None
2️⃣Двусвязный список:
class DoublyLinkedList:
def __init__(self):
self.head = None
3️⃣Вставка в начало — O(1)
def add_front(self, data):
new_node = Node(data)
if self.head:
self.head.prev = new_node
new_node.next = self.head
self.head = new_node
4️⃣Обход списка — O(n)
def print_list(self):
current = self.head
while current:
print(current.data, end=" <-> ")
current = current.next
print("None")
#ComputerScience #algorithms
🔥1
🗄 S3-хранилище — просто и практично
📚S3 (Simple Storage Service) — это объектное хранилище.
Вместо папок и файлов — бакеты и объекты.
Используется для:
✔️загрузки файлов (аватарки, документы, видео)
✔️бэкапов
✔️логов
✔️статики для сайтов
✔️микросервисов (через API)
💡Базовые понятия
✔️Bucket — контейнер (как корневая папка)
✔️Object — файл + метаданные
✔️Key — путь к объекту (images/avatar.png)
✔️S3 API — HTTP API для работы с файлами
🐳 Локальный запуск S3 хранилища через Docker (MinIO):
▶️ После запуска:
* S3 endpoint: http://localhost:9000
* UI: http://localhost:9001
* Логин: admin / admin123
Продолжение 👇
📚S3 (Simple Storage Service) — это объектное хранилище.
Вместо папок и файлов — бакеты и объекты.
Используется для:
✔️загрузки файлов (аватарки, документы, видео)
✔️бэкапов
✔️логов
✔️статики для сайтов
✔️микросервисов (через API)
💡Базовые понятия
✔️Bucket — контейнер (как корневая папка)
✔️Object — файл + метаданные
✔️Key — путь к объекту (images/avatar.png)
✔️S3 API — HTTP API для работы с файлами
🐳 Локальный запуск S3 хранилища через Docker (MinIO):
# docker-compose.yml
version: "3.9"
services:
minio:
image: minio/minio
container_name: minio
command: server /data --console-address ":9001"
ports:
- "9000:9000" # S3 API
- "9001:9001" # Web UI
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: admin123
volumes:
- minio-data:/data
volumes:
minio-data:
▶️ После запуска:
* S3 endpoint: http://localhost:9000
* UI: http://localhost:9001
* Логин: admin / admin123
Продолжение 👇
❤1
Full stack dev
🗄 S3-хранилище — просто и практично 📚S3 (Simple Storage Service) — это объектное хранилище. Вместо папок и файлов — бакеты и объекты. Используется для: ✔️загрузки файлов (аватарки, документы, видео) ✔️бэкапов ✔️логов ✔️статики для сайтов ✔️микросервисов…
После запуска S3, можно подключится к ниму, через любой язык программирования.
✅Пример кода (Python — самый короткий и читаемый)
💡 Где это реально применяют
Backend → загружает файлы → отдает ссылку
Frontend → загружает напрямую в S3 (presigned URL)
Kubernetes → хранение артефактов
#backend #devOps
✅Пример кода (Python — самый короткий и читаемый)
pip install boto3
import boto3
s3 = boto3.client(
"s3",
endpoint_url="http://localhost:9000",
aws_access_key_id="admin",
aws_secret_access_key="admin123",
region_name="us-east-1",
)
bucket = "files"
# создать бакет
s3.create_bucket(Bucket=bucket)
# загрузить файл
s3.put_object(
Bucket=bucket,
Key="hello.txt",
Body=b"Hello S3!"
)
# скачать файл
obj = s3.get_object(Bucket=bucket, Key="hello.txt")
print(obj["Body"].read().decode())
💡 Где это реально применяют
Backend → загружает файлы → отдает ссылку
Frontend → загружает напрямую в S3 (presigned URL)
Kubernetes → хранение артефактов
#backend #devOps
🤔1
Работа языко программирования №1
Многие из вас, сейчас читающих данный пост, умеют писать код на разных языках. Но немногие понимают и знают работу этих языков, то, как они реализованы, и то, что происходит, когда вы запускаете свой код. Данный пост открывает арку постов, связанных с этой темой; все последующие посты — 3–4 шт.
Многие из вас, сейчас читающих данный пост, умеют писать код на разных языках. Но немногие понимают и знают работу этих языков, то, как они реализованы, и то, что происходит, когда вы запускаете свой код. Данный пост открывает арку постов, связанных с этой темой; все последующие посты — 3–4 шт.