YeaHub Tech
476 subscribers
168 photos
15 videos
2 files
200 links
Новые технологии, советы и обучающие материалы

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#AI

💡 Video Ocean — создавайте потрясающие видео из фото и текста с ИИ

Video Ocean — новый бесплатный ИИ-сервис на базе Open Sora, который превращает ваши изображения и идеи в профессиональные видеоролики за считанные минуты.

• Работает с любыми персонажами — просто загрузите свои фотографии
• Выбор стиля: реалистичное 3D, классическая 2D-анимация или аниме
• Кинематографическое качество на уровне голливудских спецэффектов
• Встроенные инструменты для улучшения видео прямо в интерфейсе
• Полностью бесплатный доступ ко всем функциям



📎 Ссылка

🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#DatabaseOptimization

📝 Синхронизируем MongoDB и Elasticsearch в реальном времени на Golang

Ваше приложение хранит гигабайты данных в MongoDB, но запросы тормозят из-за ограничений полнотекстового поиска?

Мы разработали решение: высокопроизводительную службу синхронизации на Golang, объединяющую надежность MongoDB с молниеносным поиском Elasticsearch.

В этой технической статье вы узнаете:
- Как настроить отслеживание изменений через MongoDB Change Streams
- Как эффективно синхронизировать данные через Elasticsearch Bulk API
- Практические примеры кода на Go для производственной среды


📎 Статья

🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Сyberecurity

📎 CSP: Ваш щит от XSS-атак

Content Security Policy (CSP) — это стандарт безопасности, который контролирует, какие ресурсы может загружать ваша веб-страница.


1. Основная задача

Защита от XSS-атак (межсайтового скриптинга), когда злоумышленники внедряют вредоносный код на ваш сайт.


2. Ключевые директивы
- default-src — источники по умолчанию
- script-src — откуда загружать JavaScript
- style-src — источники CSS
- img-src — источники изображений



Примеры использования

Базовая защита:

Content-Security-Policy: default-src 'self';


Разрешить доверенные CDN:

Content-Security-Policy: script-src 'self' https://trustedcdn.com;



3. Методы авторизации контента

Nonce — уникальный токен для каждой загрузки:

<script nonce="abc123">console.log('Разрешено');</script>


Hash — проверка по контрольной сумме:

Content-Security-Policy: script-src 'sha256-abc123...';



💫 Строгий режим
Максимальная защита с явным "белым списком" всех ресурсов и запретом на unsafe-inline и unsafe-eval.

Тестирование
Используйте режим Content-Security-Policy-Report-Only для мониторинга нарушений без блокировки контента.


📎 Статья

🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#DevOps

📖 Стратегии деплоя 2025: выбираем правильный подход

Правильная стратегия деплоя — это разница между спокойными релизами и ночными авралами. Разбираем современные подходы с их преимуществами и подводными камнями.


1️⃣ Blue-Green Deployment

Две идентичные среды (синяя и зеленая). Деплой на неактивную, затем мгновенное переключение. Идеально для критических сервисов с требованием нулевого времени простоя, но требует двойных ресурсов и сложен для баз данных.

# Docker Compose пример
services:
app-blue:
image: myapp:v1.0
ports: ["8080:80"]
app-green:
image: myapp:v2.0
ports: ["8081:80"]



2️⃣ Canary Deployment

Постепенное перенаправление трафика на новую версию (5% → 25% → 50% → 100%). Минимальный риск и реальная обратная связь, но медленный процесс и сложность мониторинга разных версий одновременно.

# Nginx конфиг для canary
upstream backend {
server app-v1:8080 weight=90;
server app-v2:8080 weight=10; # 10% трафика
}



3️⃣ Rolling Deployment

Поэтапная замена экземпляров приложения один за другим. Экономит ресурсы и встроен в Kubernetes, но создает смешанные версии в кластере и усложняет отладку.

# Kubernetes стратегия
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%



4️⃣ Feature Flags Deployment

Новый код деплоится, но активируется через переключатели. Мгновенное включение/выключение и безопасные эксперименты, но накапливает технический долг и усложняет кодовую базу.

const showNewFeature = await ldClient.variation('new-checkout-flow', user, false);
if (showNewFeature) return <NewCheckout />;



📝 Выбор стратегии

Стартапы: Rolling + Feature Flags — быстро, дешево, гибко

Средний бизнес: Canary + Blue-Green для критических сервисов — баланс риска и ресурсов

Enterprise: Immutable + Feature Flags + Canary — максимальная надежность

Высоконагруженные: Blue-Green + Canary — нулевое время простоя


Практические советы

Всегда делайте backward compatible миграции БД, настраивайте автоматические откаты, используйте GitOps подходы с Argo CD для декларативного управления деплоями.


🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Git

📎 Шпаргалка по полезным командам командам в Git

🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Frontend

💻 CSS наконец-то становится языком программирования!

В Chrome 137 появилась долгожданная функция if() в CSS — теперь можно писать условную логику прямо в стилях!


Как это работает:
div {
color: var(--color);
background-color: if(
style(--color: white): black;
else: pink
);
}

.dark { --color: black; }
.light { --color: white; }



Что это даёт:

Условные стили без JavaScript
Адаптивный дизайн на новом уровне
Динамические темы через CSS-переменные
• Работа с HTML-атрибутами для стилизации



🔖Пример с атрибутами:
.card {
border-color: if(
style(--status: error): red;
style(--status: success): green;
else: gray
);
}


<div class="card" style="--status: error">Ошибка</div>
<div class="card" style="--status: success">Успех</div>



💡 Пока что:

- Только Chrome 137+
- Другие браузеры в разработке
- Можно тестировать в Chrome Canary с флагом


📎 Статья

🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Api

🔖Hoppscotch — веб-клиент для тестирования API

Что это? Open-source альтернатива Postman, которая работает прямо в браузере.

🔹 Сверхбыстрый — в 15-20 раз легче Postman/Insomnia
🔹 Без установки — работает на hoppscotch.io
🔹 Минималистичный — чистый интерфейс без лишнего
🔹 Командная работа — real-time коллаборация
🔹 Self-hosting — можно развернуть у себя


Что умеет:

- REST, GraphQL, WebSocket
- Все виды аутентификации
- Переменные окружения
- Коллекции запросов
- Встраивание в сайты
- Тесты и скрипты

✔️ Никакой регистрации
✔️Поддержка 30+ языков
✔️500k+ запросов в неделю



📎 Ссылка

🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#WebDev

🔥4 надежных веб-сайта на страже времени разработчика

Разработка проектов может занимать много времени, но правильные инструменты помогают значительно оптимизировать рабочий процесс.

1️⃣Hidden Tools
Многофункциональный набор инструментов для разработчиков

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


2️⃣Can I Use
Проверка совместимости с браузерами

Незаменимый сайт для выявления совместимости функциональностей с различными браузерами. Позволяет быстро узнать, поддерживается ли конкретная CSS-функция, JavaScript API или HTML-элемент в разных версиях браузеров.


3️⃣Dev Hints
Шпаргалки и справочники

Веб-сайт со шпаргалками по различным концепциям, функциям и коду. Содержит краткие и понятные справочники по популярным технологиям, что позволяет быстро найти нужную информацию без долгого поиска в документации.


4️⃣Bundle Phobia
Анализ размера npm-пакетов

Специализированный веб-сайт для выбора более легких и производительных пакетов npm. Показывает реальный размер пакетов, время загрузки и влияние на производительность приложения, помогая принимать обоснованные решения при выборе зависимостей.


🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#Backend

📂 DrawDB — это онлайн-редактор диаграмм баз данных и генератор SQL-скриптов, который работает бесплатно

Что умеет:
- Создание ER-диаграмм в браузере
- Автогенерация SQL из диаграмм
- Экспорт в различные форматы
- Настраиваемый интерфейс



📎 Ссылка

🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#VScode

SonarLint для VS Code: Надежный помощник для чистого кода



🔍Что это?

Бесплатное расширение для VS Code, которое ищет баги и уязвимости прямо во время написания. Работает с JavaScript, TypeScript, Python, Java, C++ и другими языками.


Зачем нужно?

- Находит ошибки в реальном времени (например, утечки памяти, SQL-инъекции).
- Подсказывает лучшие практики (стиль, производительность, безопасность).
- Интегрируется с SonarQube/SonarCloud для синхронизации правил.


📎 Ссылка

🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Frontend

🔖Мета-фреймворки JavaScript: что это и зачем нужны

Представьте: вы хотите создать веб-приложение, но вместо сборки мозаики из десятков инструментов просто берете готовое решение и начинаете писать код. Именно это предлагают мета-фреймворки.


▪️Что такое мета-фреймворки

Это "фреймворки поверх фреймворков". Если React/Vue дают кирпичики для UI, то мета-фреймворки строят из них готовый дом со всеми коммуникациями: маршрутизацией, SSR, оптимизацией, API и прочим.


▪️Почему они появились

Раньше фронтенд-разработчики тратили больше времени на настройку инструментов, чем на само приложение. Нужна маршрутизация? Добавляй React Router. SSR? Настраивай отдельно. Состояние? Еще один инструмент.

Мета-фреймворки решили эту "усталость от инструментов", предложив готовые решения с разумными настройками по умолчанию.


▪️Основные игроки

Next.js - для React, пионер гибридных приложений
Nuxt.js - аналог для Vue
Remix - фокус на web-first подходе
SvelteKit - для любителей компилируемого Svelte
RedwoodJS - полностековое решение с GraphQL


▪️Главные преимущества

- Быстрый старт проекта за минуты
- Единая структура кода в команде
- Автоматическая оптимизация производительности
- Меньше времени на конфигурацию, больше на разработку


▪️Потенциальные проблемы

- Ограниченная гибкость из-за жестких соглашений
- Сложность обновлений зависимостей
- Может быть избыточно для простых проектов
- Высокий порог входа для новичков


Мета-фреймворки - это эволюция веб-разработки в сторону большей продуктивности и меньшего количества головной боли. Они позволяют сосредоточиться на создании ценности для пользователей, а не на борьбе с инструментами.



🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21
#Backend

💌 BFF - Backend For Frontend: персональный бэкенд для каждого клиента

Представьте: у вас мобильное приложение, веб-версия и умные устройства. Каждый клиент нуждается в разных данных, но все обращаются к одному API. Получается каша из избыточных запросов и костылей. BFF решает эту проблему элегантно.

©️Что такое BFF

Backend For Frontend - это отдельный бэкенд для каждого типа клиента. Мобилке нужны сжатые данные? Есть мобильный BFF. Веб-приложению требуется детальная информация? Отдельный веб-BFF. Каждый получает ровно то, что нужно.


©️Как работает

• Клиент отправляет запрос в свой BFF
• BFF собирает данные из микросервисов
• Преобразует их в нужный формат
• Возвращает оптимизированный ответ


©️Традиционный подход vs BFF

Раньше: один API-шлюз для всех клиентов. Результат - over-fetching (слишком много данных) или under-fetching (слишком мало, нужны дополнительные запросы).

С BFF: каждый клиент получает персонализированный API, заточенный под его потребности.


©️Главные преимущества

Оптимизация под клиента - мобилка получает легкие данные, десктоп - полные
Лучшая производительность - меньше лишних запросов и данных
Независимая разработка - команды не мешают друг другу
Упрощение клиентской логики - вся оркестрация на стороне BFF
Безопасность - контроль доступа на уровне BFF


©️Когда использовать

- Мультиплатформенные приложения (веб + мобайл + IoT)
- Микросервисная архитектура с множеством сервисов
- Миграция с legacy-систем
- Разные требования к производительности у клиентов


©️Подводные камни

- Больше сервисов = больше сложности в поддержке
- Риск дублирования логики между BFF
- Потенциальные узкие места производительности
- Проблемы с консистентностью данных


©️Успешные примеры

Netflix - разные BFF для мобильных и десктопных клиентов. Мобилка получает упрощенные данные, десктоп - детальную информацию.

Spotify - оптимизированные данные для телефонов, планшетов и умных колонок обеспечивают быстрое воспроизведение.

Лучшие практики

• Минимум бизнес-логики в BFF - только оркестрация
• Активное кеширование для мобильных клиентов
• Централизованная обработка ошибок
• Строгая безопасность на уровне BFF


BFF - это не просто модная архитектура, а решение реальной проблемы. Когда у вас несколько типов клиентов с разными потребностями, BFF обеспечивает каждому персональный сервис вместо универсального "одного размера для всех".


🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#Backend

💬 Как сэкономить 100 часов в месяц ?

Устали бороться с дублями в данных? Тратите часы на группировку по датам? Мучаетесь с обновлением таблиц в ETL?

Опытный дата-инженер за 8 лет работы собрал 6 малоизвестных техник SQL, которые решают эти проблемы одним запросом.

1️⃣Находить и удалять дубли
2️⃣Получать свежие данные
3️⃣Группировать по периодам
4️⃣Создавать кастомные категории
5️⃣Сравнивать данные между датами
6️⃣Обновлять таблицы без боли


📎 Статья

🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Frontend

🔖Pull-to-refresh в Compose Material 3: что изменилось и как использовать

Google кардинально обновил API для реализации pull-to-refresh в Compose Material 3 версии 1.2.0+, и большинство туториалов в интернете теперь устарели.


Что такое pull-to-refresh?

Это популярный жест в мобильных приложениях — пользователь тянет экран вниз, чтобы обновить данные. Вы наверняка видели это в Instagram, Twitter или Facebook.


Новый подход

Вместо старого PullToRefreshContainer теперь используется PullToRefreshBox — готовый контейнер, который оборачивает ваш прокручиваемый контент (например, LazyColumn).


Ключевые параметры:

• isRefreshing — показывает состояние загрузки
• onRefresh — функция, которая вызывается при жесте пользователя
• content — ваш прокручиваемый контент


Что нужно сделать в коде:

1. Добавить свойство isRefreshing в состояние экрана
2. Создать функцию обновления данных во ViewModel
3. Обернуть LazyColumn в PullToRefreshBox


Дополнительные возможности:

Если нужен больший контроль (например, включение/выключение жеста), можно использовать модификатор .pullToRefresh напрямую. Также можно кастомизировать анимацию индикатора через PullToRefreshState.


❗️Важно
Старые API помечены как deprecated в версии 1.3.0, поэтому обновление критически важно для поддержания актуальности приложения.
Новый API проще в использовании и предоставляет больше возможностей для кастомизации, делая реализацию pull-to-refresh более интуитивной для разработчиков.


🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Frontend

📎 Как использовать дизайн-токены в React — опыт команды Bit

Дизайн-токены — это стандартизированные значения (цвета, шрифты, отступы), которые помогают создавать единый интерфейс. Они синхронизируют работу дизайнеров и разработчиков, обеспечивая визуальную согласованность.

Интеграция в Bit и React
В Bit дизайн-токены структурированы по типам (цвета, состояния и др.) и работают как часть системы компонентов. Они самодокументируются и легко адаптируются под разные платформы, что ускоряет разработку.

Кросс-платформенные преимущества
Токены позволяют создавать универсальные решения для всех платформ. Разработчики быстро вносят изменения, а дизайнеры контролируют их корректное применение.

Управление в Bit
Токены отделены от тем и передаются компонентам через провайдер. Это позволяет глобально обновлять стили, меняя всего одно значение.

Дизайн-токены в Bit — это мощный инструмент для масштабируемых и согласованных дизайн-систем. Больше можно прочитать в статье ⬇️


📎 Статья

🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#BigData

📝 Как обрабатывать большие данные в Pandas, если они не помещаются в память

Представьте: у вас есть файл с 260 миллионами транзакций, но на компьютере всего 8 ГБ оперативной памяти. Если попробовать загрузить всё сразу — Python просто «упадёт». Что делать?


🔹Решение: обрабатываем данные по частям

Вместо того чтобы грузить весь файл разом, будем читать его порциями, например по 1 млн строк за раз. В Pandas это делается так:
import pandas as pd

# Загружаем данные по кускам
chunk_size = 1_000_000 # По 1 млн строк за раз
total_transactions = 0

for chunk in pd.read_csv('transactions.csv', chunksize=chunk_size):
# Обрабатываем каждую порцию данных
total_transactions += len(chunk)

print(f"Всего транзакций: {total_transactions:,}")



🔹Какие задачи можно решать?

1. Сколько всего транзакций? → Считаем строки в каждом куске и суммируем.

2. Сколько потратили за каждый год? → В каждом куске группируем по году и суммируем, потом складываем результаты.

3. Средние траты на развлечения по месяцам? → Фильтруем данные за 2020 год, оставляем только категорию «Развлечения», группируем по месяцам и считаем среднее.


🔹Почему это работает?

- Не нагружает оперативную память — обрабатывается только небольшая часть данных за раз.

- Можно делать сложные расчёты — главное аккуратно собирать промежуточные результаты.


🔹Как ускорить?

- Использовать `dtypes` — указать типы данных для экономии памяти.

- Фильтровать данные сразу при чтении — если нужен только 2020 год, не загружайте остальное.

- Параллельная обработка — если компьютер многопроцессорный.


🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#DevOps

🔖Почему ваш Docker-образ не готов к продакшену

Многие разработчики пишешь Dockerfile по принципу "лишь бы работало". Образ собирается, контейнер запускается, приложение отвечает — всё отлично! Но проходит время, и начинаются проблемы: в CI/CD сборка падает, на другом сервере приложение ведёт себя странно, а размер образа превышает несколько гигабайт.


Основные проблемы, которые убивают стабильность:

▪️Нестабильные зависимости — когда вы указываете FROM python:latest или FROM node:latest, вы полагаетесь на удачу. Сегодня latest указывает на одну версию, завтра — на другую. В результате код, который работал вчера, сегодня может не собираться из-за изменений в базовом образе или несовместимости библиотек.

▪️Раздутый размер образа — использование "толстых" базовых образов типа ubuntu:latest или python:3.12 без суффикса приводит к образам весом в гигабайты. Это замедляет развёртывание, увеличивает потребление дискового пространства и создаёт больше точек уязвимости. Альтернативы вроде python:3.12-slim содержат только необходимые компоненты и весят в разы меньше.

▪️Неэффективное кеширование — неправильная структура слоёв убивает эффективность кеширования Docker. Если сначала копировать весь код, а потом устанавливать зависимости, то при любом изменении в коде придётся заново устанавливать все библиотеки. Правильный порядок: сначала файлы зависимостей, их установка, и только потом копирование кода приложения.

▪️Проблемы безопасности — запуск приложения от пользователя root создаёт ненужные риски. Если злоумышленник получит доступ к контейнеру, он автоматически получит максимальные привилегии. Создание отдельного пользователя — простая мера, которая значительно снижает потенциальный ущерб.

▪️Мусор в образе — отсутствие файла .dockerignore приводит к попаданию в образ ненужных файлов: .git директории, кеша IDE, логов, переменных окружения. Это увеличивает размер образа и может случайно включить конфиденциальную информацию.


Готовый к продакшену Docker-образ должен быть предсказуемым, компактным и безопасным. Он собирается одинаково в любой среде, не зависит от внешних изменений и минимизирует поверхность атак. Потратив время на правильную настройку сборки один раз, вы избежите множества проблем в будущем и сэкономите время всей команде.


🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
#Tech

🔖Эволюция за $1000: как менялись игровые ПК за 30 лет

Помните то чувство, когда копили на "компьютер мечты", а накопив — обнаруживали, что за те же деньги можно взять что-то в разы мощнее? В мире железа нет идеального момента для покупки.

Но что, если взглянуть на эту гонку под другим углом? Представьте: у вас есть $1000 в каждой эпохе. Что можно было собрать в 1995-м, когда DOS правил миром? Какой монстр получился бы в 2005-м с первыми двухъядерными процессорами? И насколько далеко мы ушли в 2025-м с ИИ-апскейлингом?

Отправляемся в путешествие от мегагерцовых Pentium с 8 МБ оперативки до современных чудовищ с трассировкой лучей. Узнаем, как одна и та же сумма превращалась в игровую мощь в разные десятилетия.


📎 Статья

🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1