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

Бэкенд

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

Pulse Boson PHP #1

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

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

Читать далее

Как прокачать Java-приложения без миграции: Axiom JDK Express теперь на JVM 21

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

Мы знаем, как это бывает: проект на Java 8 живёт уже десятый год, релизить страшно, тестов мало, миграция пугает, а система критичная. И вот бизнес хочет «ускорить и не трогать».

Читать далее

95% пилотных проектов в области генеративного ИИ в компаниях проваливаются

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

Несмотря на высокий интерес компаний к генеративному ИИ и его потенциал для роста выручки, подавляющее большинство корпоративных проектов терпит неудачу. Новый отчёт MIT указывает, что только 5% пилотных внедрений приносят ощутимый финансовый эффект. В переводе от команды Spring АйО рассмотрим основные причины, которые кроются не в самих моделях, а в ошибочной интеграции, неправильных приоритетах и нехватке адаптации под бизнес-процессы.

Читать далее

Туториал kafka + springboot + docker

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

Я часто работаю с Apache Kafka, но внезапно поймал себя на мысли, что совсем не понимаю как она устроена. Тогда я решил поднять кафку локально и поиграться с ней, а чтобы точно понимать что я делаю - написал эту статью.

Читать далее

HistoryHelper — плагин для DBeaver, который генерирует history-таблицы и триггеры за пару кликов

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

HistoryHelper - плагин для DBeaver

Зачем и почему?

Работая с БД часто приходится вручную писать SQL для создания history-таблиц, которые хранят "историю" о каждой записи из таблицы. То есть, если запись создана/изменена/удалена, для неё создается новая запись в таблице с окончанием "_hist" или "_history".

Задача знакомая, но крайне рутинная: для каждой таблицы нужно вручную писать SQL, проверять, чтобы все колонки были учтены, тип колонок был корректным, и не было опечаток.

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

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

В данный момент реализован самый простой функционал.

Читать далее

WhatsApp Web и Telegram коннектор для Bitrix24: наш опыт реализации и внедрения. Часть 2 — WhatsApp и Telegram коннектор

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

Привет, мир! Меня зовут Павел, я IT инженер и руководитель службы технической поддержки.

Эта статья - вторая часть инструкции по внедрению коннектора WhatsApp и Telegram для Открытых линий CRM Bitrix24. С логикой подключения к Битрикс вы можете ознакомиться в первой части, а в этой статье мы рассмотрим логику обмена сообщениями через WhatsApp.

Читать далее

Практика Kafka: проектирование топиков и обмен сообщениями

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

Ранее мы с вами развернули кластер Kafka. Что дальше?

В этой статье, как всегда, переходим от теории к практике: разработаем собственные продюсер и консьюмер на Python. Это будет не просто демонстрация кода — мы погрузимся в детали работы с Kafka.

Подробно разберем структуру сообщений Kafka,

Углубимся в основы проектирования: от топиков до настройки клиентов,

На практике изучим ключевые процессы: сериализациюпартиционированиебатчинг и сжатие данных.

Читать далее

Что такое детерминизм и как с ним бороться?

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

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

Много лет можно наблюдать один и тот же ритуал: человек берёт фиксированный seed, торжественно записывает его в три места, запускает обучение и искренне ожидает, что всё будет повторяться до бита. А потом accuracy скачет на третьем знаке, лосс уплывает и приходит вопрос: «Почему не детерминируется?» А потому что детерминизм в ML это не один флажок. Это сумма десятка мелких факторов, от выбора алгоритма в cuDNN до порядка файлов в каталоге.

Читать далее

Введение в VSLAM

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

Я начинаю серию статей о Visual SLAM. Я давно хотел разобраться в этой непростой теме и решил что будет полезно параллельно делиться информацией с коммюнити робототехников.

В этой серии статей я буду рассказывать об основных механизмах работы VSLAM без глубокого погружения в низкоуровневые детали. Для любопытных читателей я буду давать ссылки на полезные материалы где можно ознакомиться с темой более детально. Моей целью является дать читателю общее понимание работы визуального SLAM. Также я буду рассматривать популярные алгоритмы VSLAM и расскажу какие пакеты для VSLAM доступны в платформе для разработки робототехники ROS 2.

В первой статье мы познакомимся с визуальным SLAM в общих чертах с точки зрения его применения в робототехнике. Робот должен выполнять некоторые специфические задачи, например доставку грузов, чистку тротуаров, дезинфекцию воздуха (в больнице). В большинстве случаев для выполнения таких задач роботу требуется понимать текущее положение в пространстве и быстро перемещаться в целевую точку. Чаще всего окружающее пространство в котором оперирует робот представляет собой довольно сложную среду со множеством объектов (часть из которых постоянно перемещаются). Для эффективного перемещения по такой среде роботу нужно иметь карту пространства в некотором удобном формате.
Для построения и локализации на такой карте используется SLAM. Суть SLAM заключается в том что робот перемещается в пространстве и параллельно строит карту местности.

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

Мы будем рассматривать только визуальный SLAM. Это такой вид SLAM, где в качестве источника сенсорных данных используется камера (монокулярная, стерео или RGB‑D).

Существует несколько видов Визуального SLAM. [ написать какие видв Visual SLAM (monocular, visual + IMU etc) ]

Читать далее

TitanRt 0.3 — Пишем свой CoinMarketCup: часть 1

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

Что ж, да, вы не ослышались — прямо сейчас мы с вами напишем свой движок для поддержания такого бэкенда, как у CoinMarketCup (кмк). И писать будем на моем любимом Rust. Использовать под капотом будем мою либу TitanRt, которую я лениво и скомкано презентовал в предыдущем посте. Постараюсь быть полезным и последовательным.

Осторожно: много кода (с комментариями)...

Читать далее

Как мы в Java-проекте UDT для PostgreSQL поддерживали

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

PostgreSQL позволяет создавать хранимые функции и процедуры. И если при их вызове с простыми данными проблем не возникает, то сложные иерархические структуры могут вызвать трудности.

В статье мы разберёмся, как передавать и получать вложенные объекты в процедурах и функциях PostgreSQL с помощью JDBC.

Читать далее

Бесконечные циклы. Всё, что может пойти не так — пойдёт не так

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

Конструкции типа while(true) или for(;;) довольно опасные. Когда люди их пишут, то всегда надеются на то, что сработает условие выхода из цикла. Однако, на самом деле, как бы мы ни были уверены, такие конструкции лучше избегать.

В любом программном продукте есть баги, и те инварианты, на которые идёт расчёт, могут просто не сработать. Решение? Читайте в переводе от команды Spring АйО, где автор указывает примеры того, как с этими конструкциями поступили в Jooq и как с ними работает один из департаментов University of California.

Читать далее

Что такое RabbitMQ и как мы его внедрили в интеграцию с 1С

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

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

В этой статье я расскажу, как устроен RabbitMQ, какие сущности в нем используются, как мы организовали маршрутизацию сообщений и как интегрировали его с платформой 1С, используя внешнюю компоненту PinkRabbitMQ. Все примеры взяты из промышленного проекта Таипит.

Читать далее

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

Что с Python? Меньше производительности, никакого сахара и больше багов

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

Python продолжает меняться, но не всегда так, как ждёт сообщество. Новый синтаксический сахар отклоняют, прирост производительности оказывается скромнее обещанного, а очередные депрекации в setuptools ломают проекты. При этом экосистема получает долгожданный стандартный lock-файл и поддержку uv в Dependabot. В статье разбираем, что это значит на практике и почему начинающим Python-разработчикам важно следить за этими изменениями.

Читать далее

Мониторинг и анализ производительности бэкенда с помощью ClickHouse и Grafana. Часть 2

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

Всем привет! Я Артём Седых, ведущий разработчик и тимлид проекта банковского сопровождения. Наш сервис — 8-летний монолит на PHP с командой из 39 человек. В цикле статей рассказываю об опыте разработки и внедрения альтернативы pinba: гибкого инструмента мониторинга, который позволяет увидеть живую систему как на ладони и понять, из‑за чего именно проседают определенные экшены. Сегодня, в продолжение первой статьи, закрываем архитектурную часть — поговорим об отправке и хранении метрик. А главное, перейдём к самому интересному: получившимся дашбордам Grafana. На конкретных примерах покажу, какие проблемы удалось обнаружить и какие рекомендации по оптимизации можно извлечь из каждого элемента.

Читать далее

Как превратить SQL в API на Go?

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

Команда Go for Devs подготовила перевод статьи о том, как превратить SQL в полноценный API прямо в Go. Автор показывает, как можно безопасно принимать WHERE-условия в виде SQL-подзапросов, валидировать их и использовать для запросов к базе. Просто, элегантно и почти без лишнего кода.

Читать далее

PCW — новая метрика продуктивности разработчиков с ИИ

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

Команда AI for Devs подготовила перевод статьи о метрике Percentage of Code Written (PCW) от Windsurf. Эта метрика показывает, какой процент кода в проекте реально пришёл от ИИ. Авторы утверждают: PCW надёжнее привычных показателей вроде acceptance rate и отражает, насколько продукт действительно помогает разработчикам. А как вы думаете — можно ли измерить ценность ИИ в цифрах?

Читать далее

«Архитектура бэкенда», или как я написал мою первую техническую книгу

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

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

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

Читать далее

Недооценённые фичи SQL: PIVOT/UNPIVOT, CROSS APPLY/LATERAL и частичные индексы

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

В большинстве материалов по SQL обсуждаются знакомые всем конструкции — SELECT, JOIN, WHERE, группировки, простые индексы. Но когда вы обрабатываете сложные данные, оптимизируете производительность или строите аналитические отчёты, ограничиваться только базовыми операторами — значит добровольно усложнять себе жизнь. В SQL есть мощные, но редко упоминаемые функции, которые помогают решить задачи элегантно и эффективно.

В этой статье, основанной на личных экспериментах и наблюдениях, мы рассмотрим три таких инструмента: PIVOT/UNPIVOT, CROSS APPLY/LATERAL и частичные (filtered) индексы.

Читать далее

Python и множества: генераторы, которые делают код чище

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

Команда Python for Devs подготовила перевод статьи о генераторах множеств в Python. С их помощью можно создавать, преобразовывать и фильтровать множества одной строкой кода. Разбираем примеры, практические приёмы и ошибки, которых стоит избегать.

Читать далее