Блог инженера

History is written by its contributors

Linear Regression в Go: от нуля до production

2025-04-28 время чтения 7 мин Golang Machine-Learning Ilya Brin

Привет, Go-разработчик!

📊 Думаешь, машинное обучение — это только для Python-разработчиков? Хочешь добавить предсказательную аналитику в свой Go-сервис, но боишься математики?

Пока другие импортируют sklearn, ты узнаешь, как реализовать линейную регрессию на Go с нуля и довести до production-ready решения.

Читать далее

Система уведомлений: как синхронизировать миллионы устройств без боли

Привет, архитектор! 📱

Тебе нужно построить систему уведомлений, которая работает как у больших парней? Чтобы сообщения приходили мгновенно на все устройства пользователя, а сервер не падал от нагрузки?

Разберём, как спроектировать notification service, который выдержит миллионы пользователей и синхронизирует состояние между их устройствами.

Читать далее

Natural Language Processing: основы обработки текста на Go

2025-04-27 время чтения 8 мин Golang Nlp Machine-Learning Ilya Brin

Привет, лингвист! 👋

Хочешь научить компьютер понимать человеческий язык? Анализировать отзывы клиентов, извлекать ключевые слова из документов или определять тональность комментариев?

Natural Language Processing (NLP) - это магия, которая превращает неструктурированный текст в полезные данные. И да, это можно делать на Go!

Разбираем основы NLP, практические алгоритмы и реальные примеры обработки текста на Go 🚀

Читать далее

Как избежать проблем с блокировками в Postgres

2025-04-25 время чтения 3 мин Database Postgresql Performance Optimization Ilya Brin

Блокировки (locks) в PostgreSQL - это механизм, который обеспечивает согласованность данных при параллельных операциях. Однако неправильное управление ими может привести к дедлокам (deadlocks), долгим транзакциям и простою приложений.

В этой статье разберём:

  • Какие бывают блокировки в Postgres
  • Как обнаруживать конфликты
  • Практические способы избежать проблем

Кратко и по существу! 🚀

Читать далее

Понимание команды git rebase

2025-04-24 время чтения 6 мин Git Ilya Brin

Команда git rebase в мире Git — это как волшебная палочка, которая позволяет переписывать историю вашего проекта элегантно. Выглядит как чистая магия - мощная, полезная, но, как и любое заклинание, эта магия требует осторожности. Давайте разберемся, что делает git rebase, когда она спасает код, а когда лучше оставить её в сторонке и выбрать другую команду. А также раскроем нестандартные трюки, которые поднимут ваше мастерство Git на новый уровень!

Что такое git rebase?

git rebase — это команда, которая позволяет “перебазировать” коммиты, которые уже сделаны. Представьте, что история ваших коммитов — это стопка книг. Иногда вы хотите аккуратно переложить эту стопку на другой стол (другую ветку или более актуальную версию основной ветки). git rebase делает именно это: берёт существующие коммиты, поднимает их в воздух и аккуратно (или не совсем аккуратно, если что-то пошло не так) ставит на новое место.

Читать далее

NSQ: идеальная очередь сообщений для real-time систем (когда Redis уже не справляется)

2025-04-21 время чтения 8 мин Distributed-Systems Message-Queues Nsq Ilya Brin

Привет, архитектор распределённых систем! 🚀

Замучился с настройкой RabbitMQ?
Устал от потери сообщений в Redis?
Нужно что-то, что просто работает на любом масштабе?

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

На примерах разберёмся, когда NSQ не просто полезен, а абсолютно идеален для задачи.

Читать далее

PostgreSQL VACUM: что это и зачем нужно

2025-04-21 время чтения 4 мин Postgresql Ilya Brin

Что такое VACUUM в PostgreSQL?

VACUUM — это уборка в мире PostgreSQL. Разберёмся, когда пора действовать и почему спешка только навредит.

Почему нужен VACUUM?

PostgreSQL использует MVCC (Multiversion Concurrency Control) — механизм, который позволяет читать данные, даже если их кто-то изменяет. Побочный эффект: старые версии строк не удаляются мгновенно, а остаются в таблице как “мёртвые” (dead tuples).

Когда вы удаляете или обновляете строки в таблице, PostgreSQL не сразу освобождает место. Вместо этого он помечает эти строки как “мертвые” и продолжает использовать старые версии данных. Это позволяет откатить транзакции, но со временем “мертвые” строки накапливаются, занимая место и замедляя работу базы. VACUUM очищает эти “мертвые” строки, освобождая место и улучшая производительность. Он также обновляет статистику, что помогает оптимизатору запросов выбирать лучшие планы выполнения.

Читать далее
Старые записи Новые записи