Все потоки
Поиск
Написать публикацию
Обновить

Бэкенд

Сначала показывать
Порог рейтинга
Уровень сложности

Как добавить GigaChat в проект за 3 шага. Гайд и опенсорс-инструмент

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.8K

Привет, Хабр!

В последнее время все больше разработчиков экспериментируют с большими языковыми моделями. GigaChat от Сбера — одна из самых доступных и мощных моделей на российском рынке. У нее есть подробное REST API, которое позволяет интегрировать нейросеть в любой продукт: от телеграм-ботов до сложных корпоративных систем.

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

Я столкнулся с этими задачами и, чтобы упростить жизнь себе и другим Go-разработчикам, написал gigago — легковесный и идиоматичный SDK. Его цель — взять на себя всю "грязную работу" и позволить вам добавить GigaChat в проект буквально за несколько минут.

Читать далее

Python в enterprise-разработке: почему популярность ЯП распространилась и на корпоративный сектор. Часть 2

Время на прочтение14 мин
Количество просмотров3.2K

Всем привет! Это Леша Жиряков. На прошлой неделе мы начали разбирать, почему Python стал настолько востребован для создания корпоративных программных решений. Сегодня продолжим тему — поговорим об управлении зависимостями, асинхронном программировании в корпоративной среде, тестировании, корпоративной безопасности и других ключевых моментах. Заодно обсудим перспективы Python в enterprise-разработке. Приступим!

Читать далее

BGGP3: Хороший тамада и конкурсы интересные

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.1K

Продолжаю рассказывать широкой аудитории о «гусарских забавах» компьютерной элиты — третий по счету Binary Golf Grand Prix.

Читать далее

Оцени меня, если сможешь. Методика точной оценки крупных задач

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров6.2K

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

Умение точно оценить объём работ спасает от переработок, напряжённой обстановки на проекте, поддерживает доверительные отношения в команде и показывает вас с хорошей стороны перед заказчиком.

Но интуитивные и ставшие традиционными способы оценки задач дают низкую точность. Пора взять на вооружение другой способ, дающий 90+% точность в оценке.

Читать далее

Приложение на Go шаг за шагом. Часть 3: форматирование и обёртывание ответов JSON

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров4K

Привет! Я Владислав Попов, автор курса «Go-разработчик с нуля» в Яндекс Практикуме. В серии статей я хочу помочь начинающим разработчикам упорядочить знания и написать приложение на Go с нуля: мы вместе пройдём каждый шаг и создадим API для получения информации о книгах и управления ими. 

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

Читать далее

Архитектурные принципы

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров11K

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

Итак, без долгих предисловий:

Читать далее

Каналы (channels) в Go

Время на прочтение15 мин
Количество просмотров6.5K

Каналы — инструмент для передачи данных между горутинами. Это фундаментальная концепция, на которой строится вся модель параллелизма в языке, и одна из ключевых особенностей, которая делает Go уникальным среди современных языков программирования. За внешней простотой синтаксиса ch <- value и <-ch скрывается сложная реализация, которая включает в себя кольцевые буферы, системы очередей, механизмы блокировки и тесную интеграцию с планировщиком горутин. В этой статье разберем их внутреннее устройство на уровне runtime и рассмотрим паттерны использования.

Читать далее

Запустили векторный поиск в YDB: рассказываем, как он работает

Время на прочтение10 мин
Количество просмотров16K

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

Новый релиз СУБД Яндекса делает векторный поиск доступным для всех. Статья под катом написана по мотивам моего доклада на конференции HighLoad++, с которым я выступил 23 июня в Питере. В ней я расскажу про векторный поиск, индекс, RAG и о том, как эти технологии применяются в Алисе.

Читать далее

Верните непрерывную интеграцию разработчикам

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров13K

Все знают аббревиатуру CI/CD. Continuous Integration and Continuous Delivery - Непрерывная интеграция и Непрерывная поставка. Но едва ли можно найти более неправильно понимаемую нашей индустрией идею, чем непрерывная интеграция. Практика, которая была придумана, чтобы её делали разработчики, почему-то превратилась в объект работы девопсов, хотя к культуре DevOps ну вообще никакого отношения, по идее, иметь не должна.

Так что вот вам статья про то, как так вышло, что сейчас под CI понимают что угодно, кроме того, чем она, на самом деле, является.

Читать далее

Как работает база данных Firebird, часть 2

Уровень сложностиСложный
Время на прочтение25 мин
Количество просмотров1.1K

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

Читать далее

Пишем простой драйвер Linux для устройства, ничего не зная о драйверах и о USB

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров17K

Пару месяцев назад я купил Nanoleaf Pegboard Desk Dock — последнее слово в технологиях USB-хабов с RGB-светодиодами и крючками для устройств. К сожалению, это чудо инженерной мысли поддерживает только гейминговые операционные системы — Windows и macOS, поэтому возникла необходимость в драйвере для Linux.

В своих постах я уже настраивал Windows VM с пробросом USB и пытался выполнить реверс-инжиниринг официальных драйверов. При этом я задумался, а нельзя ли написать производителю и попросить у него спецификации или документацию его протокола. К моему удивлению, техподдержка Nanoleaf ответила мне всего через четыре часа, предоставив полное описание протокола, используемого Desk Dock, а также полосами RGB-светодиодов. Документация по большей мере подтвердила то, что я обнаружил самостоятельно, но также я нашёл в ней пару других мелких подробностей (например, управление питанием и яркостью), которые были мне неизвестны.

Сегодня мы попробуем написать драйвер на основании протокола (который я изучил реверс-инжинирингом), параллельно сверяясь с официальной документацией. Однако здесь есть одна небольшая проблема: раньше я ни разу не писал драйверов для устройств под Linux, а с USB-устройствами взаимодействовал только как пользователь.

Читать далее

Добавляем в CRM выбор лучшего времени общения с клиентом

Время на прочтение6 мин
Количество просмотров921

Привет, Хабр. На связи Екатерина Саяпина, Product Owner платформы МТС Exolve. В этом материале я расскажу, как автоматически добавить в CRM оптимальное время для общения с клиентами. В рамках этого кейса я покажу настройку нашей платформы и получение информации из нее в Битрикс24.

Читать далее

Про настройку уведомлений о создании бэкапов в Telegram

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров738

На одном из проектов, в которых мы участвовали, отсутствовал корпоративный мессенджер. Поэтому было принято решение, что нужно получать уведомления о создании бэкапов GitLab в Telegram. 

Что нужно для этого предпринять?

В первую очередь займемся ботом с минимальными возможностями. Для этого находим специальный бот BotFather, через который и будет происходить все управление, и нажимаем на кнопку “start” и видим следующее:

I can help you create and manage Telegram bots. If you're new to the Bot API, please see the manual.

You can control me by sending these commands:

/newbot - create a new bot

/mybots - edit your bots

Edit Bots

/setname - change a bot's name

/setdescription - change bot description

/setabouttext - change bot about info

/setuserpic - change bot profile photo

/setcommands - change the list of commands

/deletebot - delete a bot

Bot Settings

/token - generate authorization token

/revoke - revoke bot access token

/setinline - toggle inline mode

/setinlinegeo - toggle inline location requests

/setinlinefeedback - change inline feedback settings

/setjoingroups - can your bot be added to groups?

/setprivacy - toggle privacy mode in groups

Web Apps

/myapps - edit your web apps

/newapp - create a new web app

/listapps - get a list of your web apps

/editapp - edit a web app

/deleteapp - delete an existing web app

Games

/mygames - edit your games

/newgame - create a new game

/listgames - get a list of your games

/editgame - edit a game

/deletegame - delete an existing game

Для создания бота выбираем опцию /newbot - create a new bot, указываем имя и username, который должен заканчиваться на bot. 

Читать далее

Ближайшие события

Телеграфируем кодом Морзе через Java Stream API (часть 1 из 2)

Уровень сложностиСредний
Время на прочтение38 мин
Количество просмотров4.9K

Азбука Морзе — один из самых старых, но не уходящих на заслуженный отдых телекоммуникационных стандартов. Почему бы не объединить ее с Java? Это статья о технологиях, отстоящих друг от друга более чем на полтора столетия. Мы познакомимся с кодом Морзе, с подкапотной частью Java Stream API, и на живом примере соберем все это в одно кроссплатформенное приложение на Java.

Вперед, в прошлое!

Оптимизация инсертов в ClickHouse через Kafka Sink-коннекторы

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров3.3K

Меня зовут Артем Москальков, я — ведущий инженер данных в Магнит OMNI. В статье я расскажу о том, как мы оптимизировали производительность кластера в ClickHouse.

Частые мелкие вставки данных через Kafka Sink-коннектор серьёзно замедляли работу ClickHouse из-за огромного числа отдельных запросов. Путём настройки параметров потребителя Kafka и включения объединения партиций удалось сгруппировать записи в крупные блоки, что резко снизило нагрузку на базу и многократно увеличило её пропускную способность.

Читать далее

Интеграция платформ через Keycloak: SSO и JWT в действии

Уровень сложностиСредний
Время на прочтение34 мин
Количество просмотров6.8K

В крупных компаниях с множеством платформ, например, интерфейсом интернет-магазина и системой обработки данных, часто требуется настроить доступ между системами через единый вход (SSO). Эта статья рассматривает задачу: обеспечить доступ из фронт-системы (reports-frontend) к API отчётов (reports-api) через Keycloak, чтобы JWT-токен содержал роль report_user. В контексте e-commerce это можно представить как интерфейс магазина, где менеджеры запрашивают отчёты о продажах, а Keycloak управляет аутентификацией.

Кому будет полезно?

Аналитики: Узнаете, как составлять заявки (например, в Jira) на настройку Keycloak, координировать с командами и проверять JWT в DevTools, чтобы избежать ошибок, таких как отсутствие роли в токене.

Разработчики: Познакомитесь с примером кода для React-фронтенда и Node.js-бэкенда, реализующим OIDC и PKCE.

Архитекторы: Поймёте, как Keycloak поддерживает SSO, масштабируемость (через PostgreSQL или Active Directory) и безопасность (PKCE, HTTPS).

Что внутри?

Теория: Объясняем SSO, OpenID Connect (OIDC), компоненты Keycloak (realms, хранилища, PKCE) и как JWT с ролью report_user обеспечивает доступ.

Практика: Показываем проект с React (reports-frontend), Node.js (reports-api) и Keycloak, запущенный через Docker Compose. Код включает realm-export.json, App.tsx, server.js, ReportPage.tsx.

Аналитика: Рассказываем, как аналитик формирует заявки на настройку Keycloak и координирует работу с админами, разработчиками и DevOps.

Практика SSO с Keycloak и JWT

Когда JOIN тянет ко дну: как одно изменение ускорило запрос в 75 раз

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров4.1K

TL;DR Иногда «убить» самый тяжёлый JOIN — проще, чем кажется. Достаточно вынести агрегат в коррелированный под-запрос и дать движку опереться на индекс.

Читать далее

Как я пришёл в open source в 2025-м (с утилитой для бекапа PostgreSQL), чуть не потеряв проект на ~$1500\мес в 2023-м

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров20K

Однажды я столкнулся с проблемой, когда почти потерял коммерчески успешный пет-проект из-за устаревших резервных копий БД (ещё до того, как он стал коммерчески неуспешным). При этом, даже после частичного восстановления, все-таки потерял ~30% прибыли от проекта, много нервов и времени.

Это подтолкнуло меня на разработку своего открытого инструмента для бекапа PostgreSQL. С разными хранилищами, уведомлениями при сбоях и health check'ом. Собственно, о том, как я потерял деньги и затем разработал проект — хочу рассказать в статье ниже.

Читать далее

Алгоритмы для работы с большими данными в Go: HyperLogLog и Count-Min Sketch

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров4.4K

Алгоритмы для работы с большими данными

Всем привет! Для начала давайте разберем что такое вообще Алгоритмы для работы с большими данными, основная суть алгоритмов для работы с большими данными  — это эффективная обработка огромных объёмов информации при минимальных вычислительных ресурсах (памяти, CPU, диске). Их суть — жертвовать точностью ради скорости и масштабируемости.

Читать далее

Laravel: электронная подпись на сервере с PDF визуализацией

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров4.5K

Сегодня я хочу поделиться с вами решением, которое позволит вам реализовать подписание PDF-документов электронной подписью и их визуализацию прямо на вашем Laravel сервере.

Читать далее