Эволюция серверной архитектуры: n-слойная, DDD, шестиугольная, луковичная, чистая

Хотите стать архитектором? А лучшим разработчиком? Для этого не нужно изучать все архитектуры и работать с каждой. Чтобы выделяться на фоне других разработчиков, достаточно знать историю и особенности применения хотя…

Три фактора сдерживания прогресса ИИ

“Человечество накопило большой опыт в области инноваций”,  —  пишут Аджун Рамани и Чжэндун Ванг в эссе о том, почему трансформирующий искусственный интеллект трудно реализовать. Рамани, корреспондент The Economist, освещающий проблемы…

Как создать простой агент с Guidance и локальной моделью LLM

Когда я попытался создать агент ReAct с помощью Langchain, то понял, насколько сложно обеспечивать его корректную работу на постоянной основе. Модель часто сбивается и не выполняет надлежащие инструкции. Чаще всего…

Отчего «паникует» даже камнеукладчик: инцидент с удалением строк

Один из самых странных сбоев в истории нашей компании  —  пресловутая паника «Недостаточно значений в базе данных»  —  случился из-за бага сериализации. Подробно рассмотрим реализацию только SQL-оператора ORDER BY ...…

Pandas: взгляд изнутри

Введение Pandas позволяет разработчикам выбирать между различными типами массивов для представления данных датафрейма. Традиционно большинство датафреймов поддерживаются массивами NumPy. Pandas 2.0 предоставила возможность использовать массивы PyArrow в качестве формата хранения…

Микросервисы gRPC в NestJS: пошаговое руководство

В процессе иллюстрации возможностей gRPC создадим два микросервиса: службу заказа (order-service) и службу пользователя (user-service). В службу заказов (order-service) внедрим API MyOrders, возвращающий фиктивные заказы пользователя. Прежде чем вернуть заказ,…

Как повысить эффективность кода Python с помощью кэширования

Как Python-разработчику, вам наверняка хочется сделать код быстрее, эффективнее и идеальнее во всех отношениях. Я познакомлю вас с волшебным трюком под названием “кэширование”. Что такое кэширование? Кэширование  —  это что-то…

Что возвращать в Go: структуры или интерфейсы?

Введение На Go часто обнаруживается проблема выбора различных подходов. Какие значения возвращать из функций: структуры или интерфейсы  —  решение немаловажное. Мы будто на перекрестке двух путей с их преимуществами и…

Событийно-ориентированная архитектура

Что такое «событийно-ориентированная архитектура»? Событийно-ориентированная архитектура  —  это шаблон проектирования с применением событий для запуска и передачи изменений между компонентами системы. Службы здесь взаимодействуют, обмениваясь событиями, то есть сообщениями о…

Создание собственной версии UseCase в 2023 году: гибкий и функциональный подход

Зачем создавать собственную версию UseCase? Причина очевидна: у каждого из нас уникальный опыт и свои подходы к решению проблем. Делясь собственной версией UseCase, я не опровергаю идеи других разработчиков. Просто…

Вы пропустили

Эволюция серверной архитектуры: n-слойная, DDD, шестиугольная, луковичная, чистая

Три фактора сдерживания прогресса ИИ

Как создать простой агент с Guidance и локальной моделью LLM