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

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

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

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

🔖 Тайна игнорируемых Spring-аннотаций

Удивительно, как работают аннотации Spring вроде @Transactional, @Cacheable, @Async. Но что происходит, когда они внезапно «отказываются» работать?


Проблема кэширования

При создании службы уведомлений по email мы решили кэшировать дорогостоящую генерацию шаблонов с помощью @Cacheable. Но в тестах обнаружилось: кэширование не работает! Метод выполнялся заново при каждом вызове, словно аннотация невидима для Spring.


Секрет прокси

Изучив документацию Spring, мы узнали главное: функционал аннотаций поддерживается через прокси — специальные объекты-обертки, перехватывающие вызовы методов. Но есть важный нюанс: прокси не перехватывают внутренние вызовы.

Когда метод с @Cacheable вызывается напрямую из другого метода того же класса, он выполняется в обход прокси. Отсюда и проблема с кэшированием.


Решение через разделение

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


Два типа прокси

В Spring используются два вида прокси:

Динамические прокси JDK реализуют тот же интерфейс и делегируют вызовы. Применяются по умолчанию для классов с интерфейсами.

Прокси CGLIB создают подкласс целевого класса и переопределяют методы. Используются для конкретных классов без интерфейсов.

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


Главное — помнить: Spring-аннотации работают только через прокси. Избегайте внутренних вызовов, выносите функционал в отдельные компоненты, используйте только публичные методы.


Понимание механизма прокси Spring сэкономит часы отладки при работе с транзакциями, кэшированием и асинхронными операциями.


📎 Статья

🎙 Новости

📝 База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🔖 19 инструментов с открытым кодом

В мире технологий каждый день появляются новые инструменты разработки с открытым исходным кодом. Они популярны благодаря гибкости, производительности и поддержке сообщества.

🔹Стриминг и очереди
AutoMQ — альтернатива Apache Kafka с 10-кратной экономией затрат через S3 и автомасштабирование. 100% совместим с Kafka. *3k+ звезд*

🔹Разработка и CI/CD
PR-Agent — ИИ-инструмент для автоматического code review. Используйте @CodiumAI-Agent в PR-комментариях. *5k звезд*

🔹Платежи и финтех
Hyperswitch — глобальный платежный коммутатор для Stripe, PayPal, Adyen и других систем через единую платформу. *11k+ звезд*

🔹Аутентификация и безопасность
Logto — современное IAM-решение с социальным входом и аутентификацией без пароля. *8k звезд*

Passbolt — менеджер паролей для команд со сквозным шифрованием. *4.5k+ звезд*

🔹Аналитика
PostHog — аналитика продуктов с отслеживанием пользователей и флагами функций. *20k звезд*

Aptabase — альтернатива Firebase Analytics, ориентированная на приватность. *800+ звезд*

🔹Backend-as-a-Service
Supabase — альтернатива Firebase с PostgreSQL, аутентификацией и хранилищем. *70k+ звезд*

Appwrite — BaaS-платформа с базой данных, auth и бессерверными функциями. *5k звезд*

🔹Дизайн и прототипирование
Penpot — платформа для UI/UX дизайна с коллаборацией в реальном времени. *29k звезд*

🔹API и разработка
Hoppscotch — экосистема для тестирования API и создания документации. *63k+ звезд*

🔹Микросервисы и оркестрация
Temporal — платформа оркестрации микросервисов с управлением состоянием. *10.9k+ звезд*

Traefik — обратный прокси и балансировщик с автоконфигурацией для Docker/Kubernetes. *49.5k звезд*

OpenFaaS — бессерверная платформа для функций в любой инфраструктуре. *24.8k+ звезд*

🔹Коммуникации
Rocket.Chat — платформа командного общения с видеоконференциями. *39.7k звезд*

🔹Управление проектами
Focalboard — альтернатива Trello/Notion с досками и карточками. *21k+ звезд*

Cachet — система страниц статуса для информирования о простоях. *13.9k+ звезд*

🔹Управление знаниями
Dendron — инструмент заметок для разработчиков с интеграцией в VS Code. *6.6k+ звезд*

🔹Аналитика данных
Litlyx — ИИ-инструмент для создания интерактивных визуализаций, поддерживает 15+ платформ.

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


📎 Статья

🎙 Новости

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

🔖 3 способа ускорить code review на GitHub

GitHub скрывает возможности, которые экономят часы при просмотре pull request'ов. Большинство разработчиков их не использует, теряя время на рутине.

📎 Split View для больших изменений

По умолчанию GitHub показывает diff в одной колонке - неудобно для крупных правок.

Решение: нажмите шестеренку → "Split". Старый и новый код отображаются рядом, как в IDE. Идеально для рефакторинга и переименований.

📎 Фильтр "Changes since last review"

После исправлений автора GitHub показывает все изменения, включая уже просмотренные. Информационный шум.

Решение: в меню "Files changed" выберите "Changes since last review". Видны только свежие правки с желтыми маркерами на измененных файлах.

📎 Suggested Changes вместо текстовых комментариев

Вместо "добавь проверку на null" предлагайте готовый код.

Как использовать:
• Наведите курсор на строку → синий плюс
• В комментарии нажмите иконку файла
• Отредактируйте код между ```suggestion
• Автор применит одним кликом "Commit suggestion"

Эффективно для опечаток, мелких оптимизаций и недостающих проверок.

📎 Результат

Split view ускоряет анализ, фильтр экономит время на повторных проверках, suggested changes устраняют лишние коммиты. GitHub превращается из хранилища в инструмент качественного ревью.


📎 Статья

🎙 Новости

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

🔖 Rust: Первые впечатления

Что привело к Rust?
• Неудача с поиском Go-библиотеки для медицинских снимков
• Проблемы с GC в высоконагруженных системах
• Желание изучить что-то новое

📎 Особенности языка:
Производительность — скорость C без сборщика мусора
Безопасность — система владения предотвращает 70-80% багов
Современность — выразительный синтаксис + функциональные возможности
Универсальность — 84 целевые платформы (от встроенных систем до WebAssembly)

Сильные стороны:
✅ Максимальная производительность
✅ Встроенная безопасность памяти
✅ Отличная документация
✅ Мощная система пакетов Cargo

Слабые стороны:
❌ Длинная кривая обучения
❌ Сложность чтения кода
❌ Медленная компиляция
❌ Требует глубоких знаний архитектуры

Вывод:
Rust не заменит Go, но отлично дополняет его. Go — для быстрых проектов с частыми изменениями. Rust — для критичных систем, где важна каждая наносекунда.


📎 Статья

🎙 Новости

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

🔖Находка дня: как "увидеть" теорию вероятности

Знаете, что самое сложное в изучении теории вероятности? Представить, как работают все эти формулы и теоремы в реальности.

Держите невероятный ресурс — Seeing Theory от Университета Брауна. Это интерактивный учебник, где можно буквально "поиграть" с теорией вероятности:

✨ Подбрасываете монетку и наблюдаете, как формируется нормальное распределение
✨ Двигаете ползунки и видите, как меняется корреляция между переменными
✨ Экспериментируете с центральной предельной теоремой в реальном времени

Вместо скучных формул — живые графики. Вместо абстрактных концепций — наглядные эксперименты.

Идеально для всех, кто хочет понять теорию вероятности интуитивно, а не просто заучить формулы ⬇️


📎 Сайт

🎙 Новости

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

🔖Теория игр: как математика объясняет наши решения

Теория игр — область математики, изучающая принятие решений среди соревнующихся игроков. Создана в 1940-х годах математиком Джоном фон Нейманом и экономистом Оскаром Моргенштерном. Применяется в психологии, биологии, политике, экономике и бизнесе.

Основные элементы:
• Игрок — лицо, принимающее решения
• Стратегия — правила конкретной игры
• Исход — результат решения
• Равновесие — точка, когда игроки приняли решения

🔸Некооперативная теория игр

Классический пример — дилемма заключенного. Двое арестованных в разных камерах выбирают: обвинить партнера или сознаться.

Возможные исходы:
• Оба обвиняют друг друга — по 2 года каждому
• Один обвиняет, другой сознается — 0 лет и 3 года
• Оба сознаются — по 1 году каждому

Рациональный выбор — обвинить партнера, независимо от его действий. Это доминирующая стратегия и равновесие Нэша. Парадокс: взаимное признание выгоднее, но нерационально с точки зрения личной выгоды.

🔸Кооперативная теория игр

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

Принципы распределения:
• Маржевой вклад каждого игрока
• Равная ценность взаимозаменяемых игроков
• Нулевая ценность фиктивного игрока
• Пропорциональное распределение по частям

Пример: Вы производите 10 напитков в час, друг — 20. Вместе — 40. Ваш маржевой вклад: 40-20=20, друга: 40-10=30. По вектору Шепли: вам (10+20)/2=15 рублей, другу (20+30)/2=25 рублей.

Вывод: В индивидуальной конкуренции нужна смекалка для личной выгоды, в групповой работе приоритет — честность.


📎 Статья

🎙 Новости

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

🔖Почему Java-разработчики не хотят изучать новые базы данных?

Потому что каждая новая СУБД — это месяцы изучения специфичных API, отказ от привычных инструментов и переписывание существующего кода.

А что если новая база данных будет работать с вашими текущими инструментами? Hibernate, Spring Data, jOOQ, Liquibase — все то, что вы уже знаете и любите.

За 2024 год команда YDB проделала путь от базового нативного клиента до полной интеграции с Java-экосистемой. Теперь переход на распределенную СУБД не требует изучения новых технологий — только замена строки подключения.

Что вы получаете:
• Ваш существующий Hibernate-код работает без изменений
• DataGrip и DBeaver подключаются как к обычной БД
• Liquibase/Flyway мигрируют схемы штатными средствами
• jOOQ генерирует типобезопасный код из YQL-схем

Это история о том, как сделать мощную технологию доступной разработчикам, не заставляя их начинать с нуля ⬇️

📎 Статья

🎙 Новости

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

Почему SOLID принципы — это ваш спасательный круг в мире Go разработки?

Представьте: вы пишете платежную систему, а через месяц нужно добавить новый способ оплаты. В плохо спроектированном коде вас ждут часы переписывания и риск сломать существующий функционал. С SOLID принципами — просто добавляете новый тип, и всё работает!

5 принципов, которые изменят ваш код:

1️⃣ Single Responsibility (Единственная ответственность)
Один класс — одна задача. Вместо Invoice, который считает, печатает И сохраняет в БД, делаем отдельные InvoicePrinter и InvoiceRepository.

2️⃣ Open/Closed (Открытость/Закрытость)
Код открыт для расширения, закрыт для изменения. Новый способ оплаты? Просто добавляем новый тип, реализующий Payment интерфейс!

type Payment interface {
Process() string
}


3️⃣ Liskov Substitution (Подстановка Лисков)
Любой подтип должен заменять базовый тип без поломки логики. ValidatedPayment работает везде, где ожидается Payment.

4️⃣ Interface Segregation (Разделение интерфейса)
Много маленьких интерфейсов лучше одного большого. PaymentProcessor, Refundable, Reportable — каждый класс реализует только нужное.

5️⃣ Dependency Inversion (Инверсия зависимостей)
Зависьте от абстракций, а не от конкретики. PaymentService работает с интерфейсом PaymentProcessor, а не конкретным процессором.

💡 Результат: чистый, тестируемый, расширяемый код, который легко поддерживать и развивать.

SOLID — это не просто теория, это практические инструменты для создания качественного ПО на Go! 🚀


📎 Статья

🎙 Новости

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

🔖10 команд терминала для продвинутых

🔸cd - — возврат в предыдущую папку
🔸!! — повторить последнюю команду
🔸ctrl + R — поиск по истории команд
🔸^опечатка^правильно — быстрое исправление

$ gti status
> Command 'gti' not found
$ ^gti^git
> git status


🔸Работа с файлами:
# Переместить несколько файлов сразу
$ mv file{1..5}.png backup/
$ mv hello.{js,html} static/


🔸Навигация по строке:
- ctrl + A — в начало
- ctrl + E — в конец
- ctrl + W — удалить слово


Какие команды используете вы? 🤔

🎙 Новости

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

🔖RxJS + Angular Signals: Идеальная команда для современных приложений

Долгое время RxJS был главным инструментом реактивности в Angular, но с появлением Signals всё изменилось. Теперь у нас есть мощная синергия, которая решает старые проблемы!


🔸Главное правило: Никаких Observable в шаблонах!

До свиданья, async pipe! Теперь мы используем toSignal() для преобразования потоков в сигналы:

readonly copied = toSignal(
fromEvent(button, 'click').pipe(
exhaustMap(() =>
timer(2000).pipe(
map(() => false),
startWith(true)
)
)
),
{ initialValue: false }
);



🔸Зачем это нужно?

Signals идеальны для управления состоянием — они всегда знают своё текущее значение и отлично интегрируются с системой обнаружения изменений Angular.

RxJS остается незаменимым для событийно-управляемой логики — обработки кликов, навигации, API браузера.


🔸Крутые возможности:

- Привязка к хост-элементу: '[class.active]': 'isActive()'
- Реактивные входы: toObservable(this.duration)
- Простые выходы: outputFromObservable(stream$)

Теперь мы получили лучшее из двух миров: стабильность сигналов + мощь RxJS операторов!


📎 Статья

🎙 Новости

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

🔖 Бинарный поиск: как найти иголку в стоге сена за 3 шага

Представьте: вы ищете номер телефона в огромном справочнике на 1000 страниц. Будете листать с первой страницы?

Есть способ лучше! Откройте справочник посередине. Если нужная буква идет после той, что видите — выбросьте левую половину. Если раньше — правую. Повторите с оставшейся частью.

Поздравляю, вы только что изучили бинарный поиск!


🔸Как это работает?
Ищем число 89 в отсортированном массиве:
[12, 25, 38, 47, 56, 89, 97, 108, 234]


Шаг 1: Средний элемент = 56. 56 < 89 → отбрасываем левую половину
Шаг 2: Средний элемент = 97. 97 > 89 → отбрасываем правую половину
Шаг 3: Средний элемент = 89. Найдено! ✅


🔸Эффективность впечатляет:
- Линейный поиск: до 1000 шагов для 1000 элементов
- Бинарный поиск: максимум 10 шагов!

Секрет в том, что каждый шаг вдвое сокращает область поиска.


🔸Важное условие:
Массив обязательно должен быть отсортирован! Иначе алгоритм не работает.


🔸Где применяется:
- Поиск в базах данных
- Автодополнение в поисковиках
- Системы рекомендаций
- Игры (угадайте число!)



📎 Статья

🎙 Новости

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

🔖 C++ вложенные If-Else: от хаоса к порядку

Знакомая картина? Код превратился в лестницу из условий, и вы уже потерялись на третьем уровне вложенности?

if (user.isActive()) {
if (user.hasPermission()) {
if (data.isValid()) {
if (connection.isAlive()) {
// Наконец-то делаем что-то полезное!
}
}
}
}


❌Антипаттерн "Стрелка"

Это классический код-спагетти! Каждый новый уровень делает код менее читаемым и более подверженным ошибкам.


✅ Решения:

1. Ранний return:
if (!user.isActive()) return false;
if (!user.hasPermission()) return false;
if (!data.isValid()) return false;
// Чистый код без вложенности!


2. Разбивка на функции:
bool validateUser(const User& user) {
return user.isActive() && user.hasPermission();
}

bool processRequest() {
if (!validateUser(user)) return false;
// Логика стала понятнее!
}


3. Switch вместо if-else цепочек:
switch (userRole) {
case ADMIN: return processAdminRequest();
case USER: return processUserRequest();
default: return handleUnknownRole();
}


Практические применения:

- Валидация данных - проверка форм по шагам
- Игровая логика - разветвленные сценарии
- Обработка ошибок - каскадные проверки


Золотое правило:
Если вложенность больше 3-х уровней — пора рефакторить! Ваш код должен читаться как книга, а не как ребус.


📎 Статья

🎙 Новости

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

🔖 Linux Mint 22.2: стабильность без экспериментов

Вышел новый релиз любимого многими дистрибутива! И знаете что? Никаких радикальных изменений интерфейса — только стабильность и комфорт.


✔️ Что нового:

▫️Биометрия стала проще
Новое приложение Fingwit — сканируй отпечаток и входи без пароля! Работает для входа в систему, разблокировки экрана и sudo-команд.

▫️Свежий дизайн
- Темы с легкой синевой вместо серого
- Эффект размытия на экране входа
- Акцентные цвета автоматически подстраиваются под тему

▫️Улучшенные приложения
- Sticky (заметки) теперь работает на Wayland
- Hypnotix (IPTV) получил "театральный" режим просмотра
- Warpinator теперь доступен на iOS


📎 Под капотом:

- Ядро 6.14 — поддержка Wi-Fi 7, новых процессоров и GPU
- LTS до 2029 года — установил и забыл на 4 года!
- Но для старых ПК лучше оставить ядро 6.8


Философия Mint:

Пока GNOME экспериментирует с минимализмом, Mint остается классическим:
- Привычная панель задач
- Понятное меню
- Никаких сюрпризов в интерфейсе


📎 Статья

🎙 Новости

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

🔖ChatGPT теперь подключается к внешним сервисам!

OpenAI сделала революционный шаг — ChatGPT научился работать с внешними MCP-серверами. Это больше не просто чат-бот!


🔸Что это означает?

До: ChatGPT генерировал только текст
Сейчас: Выполняет действия в ваших приложениях!


🔸Реальные возможности:

Работа с корпоративными системами — ChatGPT может обращаться к вашей CRM, базам данных, внутренним инструментам

Автоматизация процессов — создание задач в Jira, отправка писем, обновление документов

Персонализированные AI-агенты — настройка под специфику вашей компании


🔸Как активировать:

1. Подписка Pro/Plus
2. Developer mode в настройках
3. Раздел *Connectors* → включить MCP


🔸Главное изменение:

ChatGPT превращается из генератора текста в рабочую платформу. Теперь он может:
- Читать ваши документы
- Обновлять данные в реальном времени
- Интегрироваться с любыми сервисами
- Выполнять сложные бизнес-процессы


🎙 Новости

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

🔖 12 инструментов, которые изменят вашу разработку

Топ-инструменты для разработчиков, которые реально экономят время и упрощают жизнь


🔥 Мои фавориты:

🔹RunJS — JS-песочница с мгновенным выводом
Пишешь код → сразу видишь результат. Поддержка NPM, TypeScript, ИИ-помощник!

🔹LocalCan — делитесь localhost с командой
Покажите проект коллегам одной ссылкой. Тестируйте веб-хуки на лету!

🔹VisBug — дизайн прямо в браузере
WYSIWYG-редактор для отладки CSS. Направляющие, выравнивание, live-правки!

🔹JSON Crack — визуализация JSON
Превращает JSON в понятные диаграммы. Интерактивное редактирование!


🔸Для оптимизации:

- CompressX — сжатие до 90% без потери качества
- Antimetal — экономия на AWS автопилотом
- Lightspeed — анализ производительности сайтов


🔸Для продуктивности:

- DevToys — "швейцарский нож" разработчика (кодировщики, форматеры, генераторы)
- TiinyHost — быстрый хостинг статики
- File.Rocks — безопасный обмен файлами


🔸Документация:

- Docz — красивая документация на MDX
- ScreenshotOne — скриншоты сайтов через API


Вывод:
Правильные инструменты = больше времени на код, меньше на рутину

Сохраняйте пост — пригодится!



📎 Статья

🎙 Новости

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

🔖 Вайб-кодинг глазами разработчика с 20-летним стажем

Опытный разработчик провел эксперимент: за 4 часа создал полноценное веб-приложение с интеграцией Bitrix24, не написав ни строчки кода вручную — только через диалог с ИИ.

В статье он честно рассказывает о граблях, на которые наступил, сравнивает GPT-4.1, Claude Sonnet 3.7 и Grok на реальных задачах, объясняет когда нужна экспертиза разработчика, а когда справится и новичок, и делится опасениями о влиянии вайб-кодинга на профессиональные навыки программистов ⬇️


📎 Статья

🎙 Новости

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

🔖 Big O: почему ваш код тормозит в продакшене

Код работает мгновенно на тестах, но ползёт как черепаха на реальных данных? Дело в Big O — нотации, которая предсказывает поведение алгоритма при росте нагрузки. O(1) работает всегда быстро, O(n) растёт линейно, а O(n²) превращается в кошмар на больших объёмах.

В отличие от замеров времени, Big O показывает закономерности роста сложности. Понимание четырёх основных категорий — константной, логарифмической, линейной и квадратичной — помогает писать код, который выдержит любую нагрузку.

Разберём на примерах: как превратить O(n²) в O(1), почему indexOf в цикле убивает производительность, и как бинарный поиск находит число среди миллиарда за 31 попытку. Готовы понять, что творится под капотом?⬇️


📎 Статья

🎙 Новости

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

🔖lightweight-charts: мощные финансовые графики для веба

Библиотека от TradingView для создания интерактивных финансовых графиков в веб-приложениях. Одна из самых маленьких и быстрых HTML5 финансовых библиотек.


🔸Что умеет:

- Свечные графики — классические японские свечи
- Линейные и площадные графики — для трендов
- Гистограммы — анализ объемов и метрик
- Кастомные плагины — расширяемая функциональность


🔸Преимущества:

✅Высокая производительность — размер близок к статическим изображениям
✅Без зависимостей — standalone версия "из коробки"
✅HTML5 Canvas — нативная отрисовка без DOM
✅Простое API — 3 строки кода для первого графика
✅Интерактивность — замена статических изображений


🔸Установка:
npm install lightweight-charts

Или через CDN: unpkg.com


🔸Идеально для:
- Финансовых приложений и дашбордов
- Замены статических графиков интерактивными
- Страниц с множественными диаграммами
- Высоконагруженных приложений


📎 Ссылка

🎙 Новости

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

🔖GraphSAGE: как масштабировать графовые нейросети до миллиардов связей

Знали ли вы, что рекомендации в UberEats и Pinterest работают на графовых нейросетях с миллиардами узлов? Разбираем GraphSAGE — архитектуру, которая решает проблему масштабирования GNN.


🔹Масштабы впечатляют:

- Pinterest (PinSAGE): 3 млрд узлов, 18 млрд связей
- UberEats: 600K ресторанов, 66 млн пользователей


🔹 Главная проблема GNN:

Обычные графовые сети не могут работать с большими данными — нужно обрабатывать ВСЕ соседние узлы, что становится катастрофически медленно.


🔹 Решение GraphSAGE:

1. Выборка соседей
- Берем только фиксированное количество случайных соседей
- Создаем мини-батчи из подграфов
- Избегаем "популярных" узлов-хабов

2. Быстрая агрегация
- Агрегатор средних значений (самый простой)
- LSTM-агрегатор (лучшая точность)
- Max-pooling агрегатор


🔹 Результаты теста:

На датасете PubMed (20K узлов):
- GCN: 78.4% точность за 52.6 сек
- GAT: 77.1% точность за 18 мин
- GraphSAGE: 77.2% точность за 12.4 сек

GraphSAGE в 88 раз быстрее GAT при почти той же точности!


🔹Компромисс:

- ❌ Теряем информацию из-за обрезки графа
- ✅ Можем обрабатывать графы любого размера
- ✅ Масштабируемость важнее идеальной точности


🔹Применение:

- Рекомендательные системы
- Социальные сети
- Анализ знаний
- Биоинформатика


GraphSAGE доказывает: иногда "достаточно хорошо, но быстро" лучше чем "идеально, но медленно".


📎 Статья

🎙 Новости

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

🔖Векторные базы данных: как LLM понимает мир

Знаете, как ChatGPT сочиняет сказки про единорогов за секунды? Секрет в векторных базах данных — технологии, которая превращает слова в числа и находит смысл в хаосе данных.


🔸Как это работает:

1. Эмбеддинг
Слова → векторы (списки чисел)
"единорог" = [0.2, -0.8, 1.3, ...]

2. Кодирование
Векторы проходят через нейросеть (линейное преобразование + ReLU)

3. Объединение
Усреднение по столбцам → один вектор предложения

4. Индексирование
Сжатие размерности для быстрого поиска

5. Поиск по сходству
Скалярное произведение находит "похожие" векторы


🔸Проблема масштаба:
- Миллиарды предложений в базе
- Тысячи измерений в каждом векторе
- Десятки тысяч токенов

Решение: Векторные БД хранят готовые эмбеддинги вместо их генерации на лету.


🔸Применение:
- RAG-системы (поиск + генерация)
- Рекомендательные системы
- Семантический поиск
- Чат-боты и ассистенты


🔸Алгоритмы поиска:
- Линейное сканирование — точно, но медленно
- HNSW — приблизительно, но быстро для миллиардов векторов


✔️Итог:
Векторные БД превращают "понимание" ИИ в математическую задачу. Похожие концепции получают близкие векторы в многомерном пространстве.


📎 Статья

🎙 Новости

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

🔖CSS-магия: создаем супергеройский комикс-макет

Забудьте про скучные прямоугольные макеты! Показываю, как CSS Grid + clip-path превращают обычную страницу в панели комикса Marvel.

🔸Что получаем:
- Нестандартные формы панелей (треугольники, многоугольники, эллипсы)
- Перекрывающиеся слои с реалистичной глубиной
- Кастомные "рамки" вокруг изображений
- Адаптивная сетка с поворотом всего макета


🔸Технический состав:

CSS Grid Foundation:
.panels {
display: grid;
grid-template-columns: 3fr repeat(4, 1fr) 2fr;
transform: rotate(-20deg) translateY(100px);
}


Clip-path Magic:
.panel-3 {
clip-path: polygon(0 18%, 20% 20%,
78% 71%, 63% 100%, 5% 80%);
}



🔸Секреты реализации:

1. Границы панелей
Обычные CSS-границы не работают с clip-path, поэтому:
- Белый фон для контейнера
- Уменьшенное изображение внутри (scale 0.95)
- Тот же clip-path для изображения

2. Инструменты разработки
Firefox Shape Path Editor — интерактивное создание polygons прямо в браузере!

3. Совместимость
IE11 не поддерживает clip-path, но современные браузеры работают отлично.


🔸Вдохновение из реальных комиксов:
- Marvel's Generations: Phoenix & Jean Grey
- Detective Comics 876
- Flash Comics series


🔸Возможности безграничны:
- Макеты журналов
- Креативные портфолио
- Интерактивные лендинги
- Игровые интерфейсы

Кто сказал, что веб должен быть прямоугольным?


📎 Статья

🎙 Новости

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