Pulse Boson PHP #1

Обзор развития проекта Boson PHP — платформы для создания десктопных приложений на веб-технологиях. Новый сайт, обновленная документация, веб-компоненты (главная фишка проекта), и технические особенности разных ОС.
Обзор развития проекта Boson PHP — платформы для создания десктопных приложений на веб-технологиях. Новый сайт, обновленная документация, веб-компоненты (главная фишка проекта), и технические особенности разных ОС.
Мы знаем, как это бывает: проект на Java 8 живёт уже десятый год, релизить страшно, тестов мало, миграция пугает, а система критичная. И вот бизнес хочет «ускорить и не трогать».
Несмотря на высокий интерес компаний к генеративному ИИ и его потенциал для роста выручки, подавляющее большинство корпоративных проектов терпит неудачу. Новый отчёт MIT указывает, что только 5% пилотных внедрений приносят ощутимый финансовый эффект. В переводе от команды Spring АйО рассмотрим основные причины, которые кроются не в самих моделях, а в ошибочной интеграции, неправильных приоритетах и нехватке адаптации под бизнес-процессы.
Я часто работаю с Apache Kafka, но внезапно поймал себя на мысли, что совсем не понимаю как она устроена. Тогда я решил поднять кафку локально и поиграться с ней, а чтобы точно понимать что я делаю - написал эту статью.
HistoryHelper - плагин для DBeaver
Зачем и почему?
Работая с БД часто приходится вручную писать SQL для создания history-таблиц, которые хранят "историю" о каждой записи из таблицы. То есть, если запись создана/изменена/удалена, для неё создается новая запись в таблице с окончанием "_hist" или "_history".
Задача знакомая, но крайне рутинная: для каждой таблицы нужно вручную писать SQL, проверять, чтобы все колонки были учтены, тип колонок был корректным, и не было опечаток.
Поэтому, я решил сделать небольшой плагин для DBeaver, который предоставляет удобное меню выбора колонок и событий.
После нескольких выходных дней получилась минимальная реализация, которой хочу с вами поделиться.
В данный момент реализован самый простой функционал.
Привет, мир! Меня зовут Павел, я IT инженер и руководитель службы технической поддержки.
Эта статья - вторая часть инструкции по внедрению коннектора WhatsApp и Telegram для Открытых линий CRM Bitrix24. С логикой подключения к Битрикс вы можете ознакомиться в первой части, а в этой статье мы рассмотрим логику обмена сообщениями через WhatsApp.
Ранее мы с вами развернули кластер Kafka. Что дальше?
В этой статье, как всегда, переходим от теории к практике: разработаем собственные продюсер и консьюмер на Python. Это будет не просто демонстрация кода — мы погрузимся в детали работы с Kafka.
Подробно разберем структуру сообщений Kafka,
Углубимся в основы проектирования: от топиков до настройки клиентов,
На практике изучим ключевые процессы: сериализацию, партиционирование, батчинг и сжатие данных.
Привет, Хабр!
Много лет можно наблюдать один и тот же ритуал: человек берёт фиксированный seed, торжественно записывает его в три места, запускает обучение и искренне ожидает, что всё будет повторяться до бита. А потом accuracy скачет на третьем знаке, лосс уплывает и приходит вопрос: «Почему не детерминируется?» А потому что детерминизм в ML это не один флажок. Это сумма десятка мелких факторов, от выбора алгоритма в cuDNN до порядка файлов в каталоге.
Я начинаю серию статей о Visual SLAM. Я давно хотел разобраться в этой непростой теме и решил что будет полезно параллельно делиться информацией с коммюнити робототехников.
В этой серии статей я буду рассказывать об основных механизмах работы VSLAM без глубокого погружения в низкоуровневые детали. Для любопытных читателей я буду давать ссылки на полезные материалы где можно ознакомиться с темой более детально. Моей целью является дать читателю общее понимание работы визуального SLAM. Также я буду рассматривать популярные алгоритмы VSLAM и расскажу какие пакеты для VSLAM доступны в платформе для разработки робототехники ROS 2.
В первой статье мы познакомимся с визуальным SLAM в общих чертах с точки зрения его применения в робототехнике. Робот должен выполнять некоторые специфические задачи, например доставку грузов, чистку тротуаров, дезинфекцию воздуха (в больнице). В большинстве случаев для выполнения таких задач роботу требуется понимать текущее положение в пространстве и быстро перемещаться в целевую точку. Чаще всего окружающее пространство в котором оперирует робот представляет собой довольно сложную среду со множеством объектов (часть из которых постоянно перемещаются). Для эффективного перемещения по такой среде роботу нужно иметь карту пространства в некотором удобном формате.
Для построения и локализации на такой карте используется SLAM. Суть SLAM заключается в том что робот перемещается в пространстве и параллельно строит карту местности.
Существует несколько разных типов SLAM которые классифицируются в зависимости от типа сенсоров, которые используются для получения данных об окружающей среде. [ Например, для получения сенсорных данных используются ]
Мы будем рассматривать только визуальный SLAM. Это такой вид SLAM, где в качестве источника сенсорных данных используется камера (монокулярная, стерео или RGB‑D).
Существует несколько видов Визуального SLAM. [ написать какие видв Visual SLAM (monocular, visual + IMU etc) ]
Что ж, да, вы не ослышались — прямо сейчас мы с вами напишем свой движок для поддержания такого бэкенда, как у CoinMarketCup (кмк). И писать будем на моем любимом Rust. Использовать под капотом будем мою либу TitanRt, которую я лениво и скомкано презентовал в предыдущем посте. Постараюсь быть полезным и последовательным.
Осторожно: много кода (с комментариями)...
PostgreSQL позволяет создавать хранимые функции и процедуры. И если при их вызове с простыми данными проблем не возникает, то сложные иерархические структуры могут вызвать трудности.
В статье мы разберёмся, как передавать и получать вложенные объекты в процедурах и функциях PostgreSQL с помощью JDBC.
Конструкции типа while(true)
или for(;;)
довольно опасные. Когда люди их пишут, то всегда надеются на то, что сработает условие выхода из цикла. Однако, на самом деле, как бы мы ни были уверены, такие конструкции лучше избегать.
В любом программном продукте есть баги, и те инварианты, на которые идёт расчёт, могут просто не сработать. Решение? Читайте в переводе от команды Spring АйО, где автор указывает примеры того, как с этими конструкциями поступили в Jooq и как с ними работает один из департаментов University of California.
В рамках одного из проектов нам потребовалось организовать стабильный и масштабируемый обмен сообщениями между различными информационными системами. Для решения этой задачи мы выбрали RabbitMQ — популярный брокер сообщений, реализующий концепции асинхронного взаимодействия.
В этой статье я расскажу, как устроен RabbitMQ, какие сущности в нем используются, как мы организовали маршрутизацию сообщений и как интегрировали его с платформой 1С, используя внешнюю компоненту PinkRabbitMQ. Все примеры взяты из промышленного проекта Таипит.
Python продолжает меняться, но не всегда так, как ждёт сообщество. Новый синтаксический сахар отклоняют, прирост производительности оказывается скромнее обещанного, а очередные депрекации в setuptools ломают проекты. При этом экосистема получает долгожданный стандартный lock-файл и поддержку uv в Dependabot. В статье разбираем, что это значит на практике и почему начинающим Python-разработчикам важно следить за этими изменениями.
Всем привет! Я Артём Седых, ведущий разработчик и тимлид проекта банковского сопровождения. Наш сервис — 8-летний монолит на PHP с командой из 39 человек. В цикле статей рассказываю об опыте разработки и внедрения альтернативы pinba: гибкого инструмента мониторинга, который позволяет увидеть живую систему как на ладони и понять, из‑за чего именно проседают определенные экшены. Сегодня, в продолжение первой статьи, закрываем архитектурную часть — поговорим об отправке и хранении метрик. А главное, перейдём к самому интересному: получившимся дашбордам Grafana. На конкретных примерах покажу, какие проблемы удалось обнаружить и какие рекомендации по оптимизации можно извлечь из каждого элемента.
Команда Go for Devs подготовила перевод статьи о том, как превратить SQL в полноценный API прямо в Go. Автор показывает, как можно безопасно принимать WHERE
-условия в виде SQL-подзапросов, валидировать их и использовать для запросов к базе. Просто, элегантно и почти без лишнего кода.
Команда AI for Devs подготовила перевод статьи о метрике Percentage of Code Written (PCW) от Windsurf. Эта метрика показывает, какой процент кода в проекте реально пришёл от ИИ. Авторы утверждают: PCW надёжнее привычных показателей вроде acceptance rate и отражает, насколько продукт действительно помогает разработчикам. А как вы думаете — можно ли измерить ценность ИИ в цифрах?
Привет, Хабр!
За время своего развития, люди научились передавать информацию различными способами. Сначала это могла быть устная речь, далее были письменные источники, а в современном мире многообразие способов обучения действительно поражает: это и множество видеокурсов, интерактивных платформ, блогов и так далее. Однако на фоне всего этого особняком стоят книги. Нередко изучение книги может быть долгим и может казаться не таким эффективным, поскольку похожие знания можно получить быстрее, используя более динамичные и наглядные инструменты. Плюс, сами знания имеют свойство устаревать, и описанные истины могут не поспевать за техническим прогрессом. Однако, на мой взгляд, книга имеет и свои преимущества — при помощи нее можно исчерпывающе описывать те или иные темы, не срезая углы, подробно и конкретно описывая идеи, которые могло быть сложно выразить как то иначе.
В большинстве материалов по SQL обсуждаются знакомые всем конструкции — SELECT
, JOIN
, WHERE
, группировки, простые индексы. Но когда вы обрабатываете сложные данные, оптимизируете производительность или строите аналитические отчёты, ограничиваться только базовыми операторами — значит добровольно усложнять себе жизнь. В SQL есть мощные, но редко упоминаемые функции, которые помогают решить задачи элегантно и эффективно.
В этой статье, основанной на личных экспериментах и наблюдениях, мы рассмотрим три таких инструмента: PIVOT
/UNPIVOT
, CROSS APPLY
/LATERAL
и частичные (filtered) индексы.
Команда Python for Devs подготовила перевод статьи о генераторах множеств в Python. С их помощью можно создавать, преобразовывать и фильтровать множества одной строкой кода. Разбираем примеры, практические приёмы и ошибки, которых стоит избегать.