Обновить

Бэкенд

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

[Управление репликами] Лоскутное одеяло

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

Предыдущая статья: Часть 3: А при чём здесь The Thundering Herd Problem?

Thundering Herd — это о бесполезной трате CPU на пробуждение “лишних” процессов, которые не смогут выполнить работу.

Dogpile Effect — это о бесполезной нагрузке на внешний ресурс (например, БД) из-за многократного выполнения одной и той же работы.

Читать далее →

Java против Python: Призрак с LTS-подпиской стучится в AI

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

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

Читать далее

Как я подружил OpenAI, Rust и Solana: квиз, который платит токенами за правильные ответы

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

Что, если каждый правильный ответ в викторине приносил бы тебе крипту?

Я решил проверить эту идею — и собрал Solana Quiz, децентрализованное приложение, где пользователи проходят ежедневные квизы с вопросами от OpenAI и получают Solana‑токены за правильные ответы.

Да, это реально работает. И да — токен мы тоже создаём сами 😎

Читать далее

Postgresso 7-8

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

PostgreSQL 18

Всё, уже официальная версия.

Загрузить,

замечания к выпуску (release notes),

для прессы,

безопасность,

версионная политика,

контакты,

дайте денег.

Как всегда, все основные особенности обсудили ещё задолго до официальной, начав с первых бет (мы, например, говорили о некоторых статьях на эту тему ещё в номере Postgresso 3-4 за 2025, когда вышла самая 1-я бета).

Вот что подчёркивают в официальном релизе:

Читать далее

Тени секретов в etcd: удалил ≠ уничтожил

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

Привет, Хабр! Сегодня мы рассмотрим ту историю, когда удалённый секрет вдруг оказазывается вовсе не уничтоженным. Разберёмся, что происходит с вашими конфиденциальными данными внутри etcd, и почему простого удаления секрета недостаточно, чтобы навсегда вычеркнуть его из истории.

Узнать, куда исчезают секреты

Процесс регистрации/авторизации пользователя по номеру телефона через Telegram

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

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

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

По предварительным исследованиям целевая пользовательская аудитория продукта является пользователями мессенджера Telegram. Вот в эту сторону я и начал думать. “Коробочный” механизм авторизации через виджет Telegram не отдает номер телефона пользователя, а нам именно он и нужен. Городить велосипед по получению номера телефона по id пользователя идея не самая лучшая, поэтому я решил сделать своего ТГ-бота для механики авторизации. Я на паре сайтов уже видел подобные решения, быстрый поиск по примерам реализации этой механики не дал внятных результатов. При поиске “авторизация telegram” я наткнулся на сайт, который был первым в поисковой выдаче. Пошел смотреть как у них все устроено, рассмотрим по шагам:

Читать далее

Как мы нашли баг в компиляторе Go

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

Каждую секунду в дата-центры Cloudflare в 330 городах отправляется 84 миллиона HTTP-запросов. Из-за этого даже самые редкие из багов возникают достаточно часто. На самом деле, именно наши масштабы позволили нам недавно обнаружить в компиляторе Go на arm64 баг, вызывающий состояние гонки в генерируемом коде.

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

Читать далее

Как я подружил бэкенд с API AmoCRM: связь сущностей, отправка данных, защита от дублей

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

Интеграция простой формы с AmoCRM на «бумаге» выглядит просто. Кажется, что можно просто отправить контакт, создать лид, прикрепить товары к сделке — и готово». На практике всё наоборот.

Честно говоря, документация AmoCRM сначала меня запутала. Я полез гуглить по моей ситуации (связка формы с CRM) почти ничего. Посмотрел ролик на YouTube про библиотеку. Понял основы, но всё равно оставалось куча вопросов.

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

После множества экспериментов, я все таки смог подружить небольшой бэкенд и API AmoCRM.

Читать далее

Локальный ИИ в OpenIDE: Mellum + Continue + Ollama

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

ИИ в разработке уже не новость, а обыденность. На этом фоне набирает обороты другая тенденция — запускать модели локально. Причины понятны: приватность кода, работа без интернета, предсказуемая задержка и никакого вендор-лок. Вы контролируете, какая модель у вас крутится, какие данные она видит и что именно отправляется «наружу» (спойлер: ничего).

Обратная сторона тоже есть. Большие модели прожорливы: им нужны CPU/GPU, память.. Настройка окружения, версии — всё это ложится на вас. Но хорошая новость в том, что для задач автокомплишена не всегда нужен «монстр» на десятки миллиардов параметров. В связи с этим появились легковесные модели, которые шустро работают на обычном рабочем ноутбуке и при этом прекрасно справляются с рутиной в IDE.

В этом гайде от команды Spring АйО вы узнаете, как настроить локальную LLM для вашей IDE, будь то IntelliJ IDEA или OpenIDE. Я буду использовать последнюю.

Читать далее

Изучаем Python: модуль re для начинающих с практическим домашним заданием

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

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

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

Читать далее

6 Docker-фич для продвинутого использования

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

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

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

Погрузиться

Культура кода девяностых: как писали программы до Git, Jira и бесконечных Pull Request’ов

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

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

Читать далее

Книга «Программирование бэкенда на Python. Практическое руководство»

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

Приветствуем, коллеги. На связи Олег Сивченко @OlegSivchenko.

Уместен и закономерен ваш интерес, как мы обзаводимся правами на перевод зарубежных книг и где берём новинки. Такой вопрос задал нам читатель @PopovGP. Действительно, книгоиздательская отрасль не один год приспосабливалась к современным реалиям, но один интересный новый тренд действительно стоит раскрыть подробнее: мы стали активнее искать и рассматривать небольшие издательства, настроенные на сотрудничество. Так, уважаемый коллега @Holmogorov завершил длительный поиск базовой книги по Jetpack Compose, найдя в небольшом американском издательстве «Payload Publishing» отличный труд Нила Смита «Основы JetPack Compose: Разработка приложений для Android с помощью Jetpack Compose, Android Studio и Kotlin». Эта книга вышла в августе.

О другой очень похожей находке я хочу рассказать вам сегодня. Это совсем свежая новинка «Программирование бэкенда на Python. Практическое руководство» под авторством Тима Питерса. Обнаружили мы её в каталоге маленького индийского издательства «GitForGits».

Читать далее

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

Поймите указатели в Go меньше чем за 800 слов или вернём деньги

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

Оригинал: Understand Go pointers in less than 800 words or your money back
Автор: Дэйв Чейни
Дата: 26 апреля 2017 г.

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

Давайте разберемся.

Читать далее

Сборщик мусора в Go. Часть 3: Управление скоростью GC

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

Команда Go for Devs подготовила перевод статьи о том, как в Go устроено управление скоростью работы сборщика мусора. TL;DR: даже при тысячах горутин GC подстраивается под нагрузку, выбирая между меньшим числом долгих пауз и большим числом коротких. Итог — разработчику почти не нужно вручную «крутить» настройки, рантайм сам находит оптимальный ритм.

Читать далее

Python шпильки: как заменить многоэтажные if-else на изящный словарь функций

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

Блог Михаила | Python | Разработка | Best Practices

"Всем привет! Меня зовут Михаил, я веду Telegram-канал «Python Шпильки», где делюсь изящными приемами программирования. Сегодня хочу показать один из самых полезных паттернов..."

Читать далее

Телеграмм бот на Python aiogram 3. Часть 3

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

В этом уроке мы сделали общение с ботом значительно более выразительным и профессиональным. Вы освоили два ключевых навыка: форматирование текста с помощью HTML и MarkdownV2 через параметр parse_mode, и отправку медиафайлов с локального диска, используя класс FSInputFile. Теперь ваш бот способен не только обмениваться информацией, но и представлять её в наглядном, структурированном и визуально привлекательном виде.

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

Читать далее

Структуры данных. Часть 1

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

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

Читать далее

Использование чистых функций в грязном мире: как писать долговечный код (почти) без багов

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

Привет, Хабр! Меня зовут Артём Корсаков. Я руководитель группы серверной разработки в компании "Криптонит". Пишу на Scala и веду проект scalabook.ru. В этой статье мы разберём основы функционального программирования (ФП) на примерах и с поправкой на суровую действительность.

Многие слышали о преимуществах ФП, но пока не понимают, как применить эти концепции на практике. Теория монад и функторов и вовсе отпугивает, кажется чем-то заумным и непонятно где применимым. Поэтому мы отбросим сложную теорию и сосредоточимся на основных моментах, которые вы сразу сможете начать использовать в своём коде.

Читать далее

Автоматический парсинг чеков с LlamaIndex и Pydantic

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

Команда Python for Devs подготовила перевод статьи о том, как с помощью LlamaIndex и Pydantic можно превратить сканы чеков в структурированные данные. Минимум кода — и у вас готовый CSV для анализа.

Читать далее