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

Программирование *

Искусство создания компьютерных программ

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

Если не хватает памяти для процессинга модели SSAS: варианты решения проблемы

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

Всем привет! Меня зовут Николай, я DBA-разработчик SimbirSoft. Если вам приходилось иметь дело с табличной моделью данных SQL Server Analysis Services (SSAS), то вы наверняка знаете, что на сервере она работает только в режиме In-Memory и использует под свои процессы выделенную часть оперативной памяти. А когда памяти недостаточно для нормальной работы, то возникает системное сообщение о ее нехватке.

В этой статье я кратко рассмотрел причины и общие стратегии по решению данной проблемы, а также рассказал о своем опыте на примере табличной модели объемом около 100 ГБ на MS SQL Server 2019 Ent.  

Погрузиться в чертоги

Универсальная С++ фабрика объектов: для Qt и не только

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

Привет, Хабр! Меня зовут Михаил Полукаров, я занимаюсь разработкой Desktop-версии корпоративного супераппа для совместной работы VK Teams.

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

В этой статье я покажу, как сделать универсальную фабрику объектов, покрывающую большую часть потребностей, следующую принципам DRY (Don’t Repeat Yourself), а также как можно использовать некоторые «фишки» новых стандартов С++. 

Читать далее

Steroids UI Kit — разделение бизнес-логики и отображения React-компонентов

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

Это вторая статья из цикла про наш фреймворк Steroids, в которой мы расскажем об архитектурном подходе к построению UI-компонентов. Если вы ещё не читали первую статью — начните с неё. В ней мы объясняем, что такое Steroids и какие задачи он решает.

Читать далее

Основы успешного агентного кодинга (LLMDD)

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

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

Рассмотрим их в этой короткой статье

На защите GameDev'a: статический анализ и Unity

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

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

Читать далее

Уже завтра! OpenIDE — профессиональные инструменты без ограничений

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

Уже завтра, 31 июля состоится публичный запуск OpenIDE — новой мультиязычной среды разработки, построенной на базе IntelliJ IDEA Platform.

Мероприятие пройдет онлайн на YouTubeVK и RUTUBE каналах Spring АйО. Участие абсолютно бесплатное.

Главное — зарегистрироваться, чтобы получить на почту ссылки на трансляцию и файл .ics для добавления события в календарь.

Читать далее

Гайд по timeout, watch и at: управление временем выполнения команд в Linux

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

Как часто вы запускали какую-нибудь штуку в терминале — и она зависала навсегда? Или наоборот: вам нужно было увидеть, как что-то меняется каждую секунду, а вы упорно жали стрелку вверх и Enter? А может вы хотели запланировать задачу через 5 минут, но cron — это уже overkill?

Для всех этих сценариев в Linux есть три проверенных утилиты: timeout, watch, at. И, да, можно было бы обойтись скриптами и велосипедами, но... мы же не зря используем Unix-подход, где всё уже давно придумано.

Сегодня мы рассмотрим: как управлять временем выполнения команд в Linux с помощью timeout, watch и at.

Читать далее

AsmX G3: Архитектура кодировщика ZGEN. Как hwm генерирует машинный код amd64

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

Большинство компиляторов — это монолитные черные ящики, унаследованные из прошлого. Мы отвергли этот путь. Мы разбираем архитектуру x86_64 до "первых принципов", чтобы понять, как на самом деле работает кремний. В этой статье мы вскрываем капот нашего компилятора ZGEN и его "фабрики машинного кода" — hwm. Никакой магии. Только чистая, детерминированная инженерия, которая превращает ассемблер в исполняемые биты.

Перейти к полному техническому разбору

Как наиболее эффективно защитить права на ПО

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

Статья рассматривает способы защиты прав на программное обеспечение (ПО) в России, включая авторское право и патентование. Авторское право охраняет код программы, но не её идеи, тогда как патентование возможно для технических решений, реализуемых ПО. Приводятся примеры успешного патентования способов. Рекомендуется комбинировать оба метода для максимальной защиты IT-продуктов.

Читать далее

JEP 519: Компактные заголовки объектов — теперь официально

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

Команда Spring АйО представляет одну немаловажную фичу Java 25: компактные заголовки объектов (Compact Object Headers). Это позволит JVM экономить память и ускоряться без вмешательства в код.

Читать далее

Введение в Jimmer ORM

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

Совсем недавно статью про ORM-фреймворк Jimmer Михаила Поливахи, эксперта сообщества Spring АйО, опубликовал Baeldung.

Перед вами переработанная и дополненная версия, подготовленная специально для сообщества Spring АйО. В ней Михаил раскрывает ключевые особенности Jimmer: отсутствие JPA-наследия,  декларативные DTO и гибкий DSL и потенциальную интеграцию со Spring.

Читать далее

Гайд по использованию Spring GraphQL. Часть 1

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

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

Меня зовут Дмитрий, и я бэкенд-разработчик в SENSE с 10-летним опытом. За это время я успел поработать с финтех-проектами, автоматизировал обработку заказов для интернет-магазинов, но GraphQL долгое время оставался для меня загадочной технологией — я просто не сталкивался с ним в работе. А когда он мне понадобился, то обнаружил, что толковых материалов по Spring-реализации GraphQL очень мало. Поэтому, я решил не только разобраться самостоятельно в теме, но и написать гайд для тех, кто, как и я, только начинает погружаться в эту тему. 

Разбираться будем постепенно: в первой статье покажу, как создать проект с GraphQL с нуля. Поехали!

Читать далее

Как изменения в Python сделали старую оптимизацию бесполезной

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

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

Читать далее

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

Оптимизация Redis для высоких нагрузок: полное руководство

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

Привет, Хабр! На связи Александр Горьев, ведущий разработчик в Selectel. Сегодня в фокусе нашего внимания Redis — высокопроизводительное хранилище «ключ-значение», работающее в оперативной памяти. Скорость, простота и богатый набор структур сделали Redis очень популярным.

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

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

Читать далее

Валидация Delegate-регистраций в DI-контейнере

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

Использование DI-контейнеров часто приводит к появлению неприятных ошибок в рантайме. В таких случаях хочется, чтобы контейнер умел находить проблемы и уведомлять о них в момент сборки. 

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

В статье на примере Autofac посмотрим, как устроены регистрации-делегаты, и научимся находить в них ошибки до того, как контейнер начнет использоваться приложением. По ходу дела вспомним, как работают замыкания в C# и как размещаются в памяти анонимные делегаты, а также рассмотрим способ анализа MSIL-инструкций в процессе выполнения программы.

Читать далее

Docker, compose и Testcontainers в процессе разработки

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

Вы все еще разрабатываете и тестируете в общем окружении, пересылаете в мессенджерах файлы конфигов для запуска приложения на рабочей машине, провели половину спринта в ожидании ресурсов для новой: бд, очереди, etc.? Знайте - вы не одиноки. Но бывает по-другому.

Если вы еще здесь, полагаю, что все же хочется “по-другому”. На самом деле это вовсе не значит, что сейчас плохо. Просто жизнь такая.

Так о чем это мы тут? О рабочем и тестовом окружении, интеграционном (здесь будем называть интеграцией любое внешнее по отношению к процессу приложения взаимодействие – потому что так хочется) тестировании и немного о процессе разработки по.

Читать далее

70+ докладов для фронтенд-разработчика на все случаи жизни

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

Привет, Хабр! Меня зовут Данил. Я фронтенд-разработчик, и мне очень нравится смотреть в записи или посещать митапы и конференции, на которых профессионалы делятся своим опытом в формате докладов.

Я постоянно добавлял записи докладов, которые показались мне интересными в закладки, и их собралось достаточное количество, чтобы можно было поделиться этим списком с вами. Суммарная продолжительность докладов составляет более 48 часов, поэтому уверен - вам точно будет, что посмотреть.

Читать далее

Асинхрон внутри синхрона

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

Привет, Хабр! Я Борис Шляга, программист в отделе разработки кредитных продуктов для физических лиц. Мы занимаемся продуктом «Кубышка» — это небольшой заем до зарплаты на непредвиденные расходы.

С появлением новых правил регулирования кредитов и займов возникла необходимость в проверке долговой нагрузки клиентов при выдаче продукта. Теперь Кубышка не может быть одобрена клиентам с высоким ПДН.

Сервис расчета ПДН давно работал внутри компании — нам оставалось только реализовать интеграцию с ним. Расскажу, как мы это сделали, как решили проблемы «по дороге» и что в итоге получилось.

Читать далее

Как создать MCP-сервер и научить ИИ работать с любым кодом и инструментами через LangGraph

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

В этой статье разбираемся с MCP-серверами от А до Я: что это такое, зачем нужны и как создать свой. Научимся писать инструменты для ИИ-агентов, подключать готовые MCP-серверы через LangGraph, и создадим полноценный математический сервер с нуля. В конце задеплоим его в облако и подключим к нейросети. Много практики, рабочий код и никакой воды — только то, что действительно работает.

Читать далее

Автоматизация ответов на часто задаваемые вопросы (Эмбеддинги и косинусная близость)

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

Кейсовая задача — предоставить клиентам возможность составлять вопрос на естественном языке, а не искать вопрос в списке FAQ‑раздела сайта. При этом система должна выдавать ответ из существующей базы знаний «Вопрос‑Ответ» существующего FAQ‑раздела.

Задача реализована с помощью определения контекстной близости вопросов.

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

Читать далее

Вклад авторов