Привет, Хабр! Я Владимир, архитектор департамента больших данных в РСХБ. В команде РСХБ.Цифра руковожу проектом по внедрению решения для CDC-репликации данных на базе отечественного программного продукта Датафлот Репликация. Наступила эпоха импортозамещения, и в последние годы большинство компаний столкнулось с необходимостью отказаться от привычных классических инструментов и архитектурных решений. Для нас, Россельхозбанка, 100% которого принадлежат государству, по очевидным причинам проблема импортозамещения особенно актуальна.
Нашей целью было обеспечить бесшовное переключение систем с замещаемых СУБД, миграция их данных, замена cdc-инструментов поставки данных в ХД в рамках задачи импортозамещения иностранного ПО в банке. В этой статье расскажу про наш подход к этому вопросу с практической точки зрения. Про и контра — с точки зрения не маркетинговых фраз, а сугубо практического «вам шашечки или ехать?». Возможно, не все согласятся с приведёнными критериями и аргументами, что повлечёт холивары в комментах, но… тем лучше. Будет больше осознанности при выборе правильного решения.
Читать далееЧувак, уже есть Pinia, Pinia Colada, TanStack Query для Vue, зачем ещё один способ управлять состоянием во Vue?
Меня просто задолбало писать везде флаги отслеживания состояния для действий и делать store через фабричную функцию, как это делали наши праотцы в начале 2000-х. Запоминать зоопарк из разных composable-функций и хуков. Изучать какую-то другую систему реактивности, типа MobX, тоже не хочу. Это какой-то зашквар.
Я хочу использовать то, что есть: реактивность Vue везде, классы, методы. Хочу использовать классические шаблоны: SOLID, DDD и т.п. Хочу, чтобы Действие или запрос сами отслеживали и сообщали своё состояние. Хочу сконцентрироваться на бизнес-логике и писать меньше шаблонного кода.
И это возможно, покажу, как это работает на примере.
Погнали, если интересно14 марта не стало философа и социолога Юргена Хабермаса. Ему было 96 лет. Он прожил насыщенную жизнь и оставил многотомное наследие, его труды проходят в вузах по всему миру.
Смерть Хабермаса заставляет не только вспомнить про масштаб его фигуры, но и заново оценить, как глубоко идеи этого немецкого философа проникли в сферы, далекие от академической философии и социологии. Для мира IT и медиа его смерть — это потеря мыслителя, который задолго до появления социальных сетей, алгоритмических лент и чат-ботов описал главную проблему нашей цифровой эпохи: проблему искаженной коммуникации. Не он один, разумеется. Но в своих исследованиях он пошел дальше.
Читать далееКанбан — это прекрасное изобретение. Большинство жизненных ситуаций не предполагают сложного процессного подхода и доска с карточками просто идеально помогает упорядочить реальность, сделать ее понятной и избавиться от лишнего. Цветные карточки и механика понятны даже детям.
Да Канбан не поддерживает сложных зависимостей и ветвления логики. Но реально... в 90% случаев — накладываешь этот метод на рабочую ситуацию и жизнь очевидно налаживается!
И проблема не в том, что Канбан имеет недостатки. Проблема в том, что за неимением нужных инструментов или в связи с незнанием, Канбан начинают применять там, где он не предназначен для использования. У людей загорается творческий огонек в глазах, берутся в руки палки, изолента и происходит победное натяжение совы на глобус. А потом такие художники еще и хвастаются на конференциях о том, как они внедрили CRM для управления производственными потоками...
Давайте пройдем по шагам, чтобы разобраться где, что и как происходит.
Начинается все с того, что у нас есть повторяющийся процесс со схожими операциями. К примеру, мы производим стандартную модель шкафа и каждый раз сборщики действуют по привычному сценарию. Вернее нам хотелось бы, чтобы они действовали в строгом соответствии с нужным алгоритмом и тогда качество производимых шкафов не будет плавать.
Читать далееДобро пожаловать в чистилище препроцессора — место, где здравый смысл уступает место макросам. Сегодня мы заставим C++ притвориться Haskell-ем и внедрим do-нотацию, за которую любой адепт «чистого языка» предаст нас анафеме.
Программисты на C++ делятся на два типа: те, кто боится препроцессора, и те, кто познал сие древнее чудо с сишных времён.
Сегодня мы перейдем черту. Функциональное программирование манит своими абстракциями, но когда дело доходит до цепочек вычислений в монадах, C++ встречает нас бесконечными лямбдами и вложенностью, от которой рябит в глазах. В Haskell эта проблема решена элегантным do-синтаксисом. А что, если я скажу, что мы можем получить то же самое в C++, используя лишь тёмную магию макросов, простые шаблоны и полное пренебрежение здравым смыслом?
Приготовьтесь: мы будем дорабатывать парсер и превращать ваш код в нечто, что заставит коллег вызвать экзорциста. Это история о том, как затащить чистую красоту монад в суровый мир C++.
Запустить конвейер безумияДа, «Критика чистого разума“ Канта — книга, которую стоит читать сегодня. Не из почтения к классике, а потому, что она помогает понять, почему современная наука упирается в те же эпистемологические пределы, которые Кант обозначил два с половиной века назад. Если вы когда‑нибудь задавались вопросом, почему квантовая механика «странная», почему математика так эффективно описывает реальность или где проходит граница между тем, что мы можем познать, и тем, что остаётся за горизонтом, — Кант говорит именно об этом же.
Читать далееВо многих компаниях до сих пор существует убеждение: чем подробнее техническое задание, тем успешнее будет проект. Поэтому перед стартом разработки команды месяцами пишут документы, пытаясь предусмотреть все сценарии и описать каждую кнопку.
На практике такой подход часто приводит к противоположному результату. Чем больше времени тратится на детальное ТЗ, тем выше вероятность, что проект станет дорогим, долгим и не очень полезным для пользователей.
Разберем реальный кейс, где попытка сделать «идеальное» техническое задание привела к увеличению сроков проекта почти в два раза.
Читать далееOpen source инструменты удобны для разработчика: настраиваешь их под себя и не зависишь от чужих правил, ценников и внезапных ограничений. Плюс вокруг них обычно есть живая документация и комьюнити — проблемы и решения редко остаются «в вакууме».
Собрали с командой R&D список инструментов, которыми сами пользуемся ежедневно. В подборке — опенсорсные инструменты для разных ситуаций: от работы с Kubernetes и контейнерными реестрами до тестирования API, проверки чужих репозиториев и runtime‑наблюдения за безопасностью контейнеров.
Читать далееОчередная история из тяжкой жизни пользователей BSD или что делать, когда нужная программа ненавидит вашу операционную систему.
В помощь начинающему, продолжающему и заканчивающему автору.
Читать далееПривет, Хабр. Этой статьей я открываю сезон, который многие называют «зимняя романтика и гололед», а я теперь буду называть сезоном «внезапной наледи в тени леса».
В прошедшие выходные мой хороший друг решил прокатиться за город. Скорость была абсолютно штатная, даже чуть ниже разрешенной – около 80 км/ч. Асфальт сухой, солнце слепит глаза, в машине играет приятный подкаст. И тут – въезд в тень лесополосы. Обычно он знает, что там может быть сыро, но в этот раз природа подготовила сюрприз в виде наледи.
Машина клюнула носом, корму мгновенно поставило в занос, а через секунду мир совершил кульбит, и мой друг повис на ремне безопасности, глядя в перевернутое небо.
Хорошо, что все живы, отделались ушибами и испугом. Но когда мы сидели у него на кухне и разбирали произошедшее (а он, как любой айтишник, начал с вопроса «почему?»), меня посетила мысль: Почему, черт возьми, современный автомобиль, напичканный электроникой, не предупредил его об этой ловушке?
Ведь информационные технологии давно уже должны были сделать такие сюрпризы невозможными. Давайте разберем по полочкам, какие именно IT-решения могли бы предотвратить этот переворот, если бы они были не просто в машине, а работали в едином контексте.
Читать далееВокруг Physical AI сейчас много шума, но если отбросить красивые слова, у большинства разработчиков до сих пор нет главного — воспроизводимого конвейера на реальном роботе, который можно поднять своими руками, покрутить, записать данные, обучить policy и вернуть её обратно в железо. Обычно всё рассыпается на отдельные куски: где-то есть teleop, где-то есть датасеты, где-то крутится ML-модель, но цельного ROS2-native пути от демонстрации до исполнения почти не видно. В статье вы получите решение, как собрать такой манипулятор самостояетельно и запустить все необходимые программные компоненты из open-source ROS2 пакетов.
Читать далееКорабль тороидальной формы — один из самых распространённых вариантов обитаемой космической станции на 10 000 жителей и больше. Такие станции есть в «Стартреке» и других произведениях НФ. Форма тора идеально подходит для создания искусственной гравитации 1G и комфортной жизни большого города.
Первым такую конструкцию предложил Константин Циолковский в 1895 году, но описал её достаточно условно. В начале 20 века конструкция была тщательно доработана немецкими инженерами, а сейчас есть уже несколько почти официальных проектов, созданных при участии НАСА.
Читать далееPure.DI — это генератор кода для внедрения зависимостей (Dependency Injection), который работает на этапе компиляции. Pure.DI развивает идею «чистого DI»: вместо контейнера и рефлексии вы получаете обычный C#‑код, который создаёт композиции объектов. В этой статье — новые возможности, которые упрощают настройку композиций, делают корни гибче, а диагностику — понятнее.
Читать далееWAL — один из ключевых компонентов внутреннего устройства Postgres. Файлы WAL для истории бэкапов ужимаются в несколько раз, что говорит об избыточности. Изменяя физические параметры кластера, можно существенно повысить и эффективность локальной записи, и пропускную способность репликации, а можно создать неприятные инциденты.
Привет, Хабр! Я — Андрей Бородин, работаю над Postgres и Apache Cloudberry для Yandex Cloud и вообще. Поддерживаю WAL-G, SPQR, Odyssey и всякое такое. В этой статье на основе доклада для конференции Saint HighLoad++ я расскажу о причинах избыточности, о действиях сообщества, а также о своей работе в рамках подсистемы WAL. Понимание работы WAL поможет вам проектировать ваши сервисы с учетом специфики этой подсистемы.
Читать далееЯ не участвую в разработке Jami и не являюсь профессиональным разработчиком этого проекта. Однако я провёл несколько недель, изучая архитектуру Jami, тестируя его в российских сетях и разбираясь в документации.
В процессе стало очевидно две вещи:
· У Jami огромный технический потенциал.
· В реальных сетевых условиях (особенно в мобильных сетях России) он работает значительно хуже, чем мог бы.
Эта статья — попытка разобрать проблему с инженерной точки зрения и предложить возможные направления развития.
Если вы разработчик, знакомый с C++, сетевыми протоколами, ICE или распределёнными системами — возможно, этот разбор будет вам интересен.
Читать далееЧто такое продуктовое обещание
Вы продаете не «курс по Excel», а чувство профессиональной неуязвимости.
Вы продаете не «услуги клининга», а ощущение легкости и порядка в доме.
Вы продаете не «финансовую консультацию», а спокойный сон.
Эти формулировки вы уже знаете. Это продающие смыслы. Они отвечают на вопрос «Что на самом деле получает клиент?».
Но между смыслом и деньгами стоит еще одно звено. То, что превращает красивую фразу в решение заплатить.
Читать далееJava называют языком программирования. С формальной точки зрения это может быть и так. На практике картина более широкая: я считаю, что Java нужно рассматривать как целую программную систему для гибкой (Agile) разработки. В ней можно выделить четыре ключевых подсистемы, которые вместе образуют Java платформу:
1. Система ведения онтологии и моделирования бизнеса
2. Система верификации типов с правилами подстановки
3. Система среды исполнения динамического кода
4. Система модульной эволюции кодовой базы
Пост утверждает, что настоящей гибкости, требуемой для реально модульных программ, поддающихся эволюции, так нужной энтерпрайзам, в Java практически нет; вместо неё царит хаос и тотальное смешение понятий на поле боя, где онтология, проектировка, реализация, рантайм да и сам разработчик ведут борьбу каждый за свои собственные принципы, в то время как главной жертвой является модульность.
Для доказательства возьму конкретную тему совместимостей библиотек. Этот вопрос с технической стороны хорошо изучен, и разделяют три вида совместимостей: исходную, бинарную и поведенческую. Но будет полезным привести примеры еще раз, разбив не просто по этим трём категориям, а по зонам ответственности, для того, чтобы понять, какие трения возникают между самими подсистемы Явы.
После обширного анализа будет представлено видение направления развития Явы как платформы, получившей новую среду скриптовых языков GraalVM. Основным тезисом служит заявление, что Агиль методология требует строгой трактовки, дисциплины и продуманных инструментов, чтобы свобода разработчика не превратилась в её свободный полёт в пучину хаоса.
Читать далееПривет, Хабр!
В этой статье мы расскажем о заочной борьбе с разработчиками объектного хранилища Hitachi Content Platform. Сначала мы столкнулись с критическим заполнением файловых систем индексов, а в процессе лечения обнаружили вторую, гораздо более глубокую проблему — одна из нод кластера фактически выпала из схемы хранения данных, оставаясь при этом «зелёной» в консоли. Материал будет полезен инженерам, работающим с HCP и другими объектными СХД, а также всем, кто любит истории о нетривиальных расследованиях в недрах корпоративного ПО.
Читать далееПривет! Это Маша из AppSec Альфа-Банка. В прошлом году мы провели наш первый Alfa CTF Surfing Edition — соревнование в сфере кибербезопасности. Их делают для того, чтобы лучше искать уязвимости, атаковать чужую инфраструктуру или защищать свою.
Сегодня мы разберем пару тасок из нашего CTF: «Запреты Роскамбалы» и «Звуки ностальгии». Задачи пропитаны work-life blend, послевкусием летнего отпуска и волн.
Приступим.
Из новостей: 3 млн копий Slay the Spire 2, в WB Games Montreal прошли сокращения, закрылась студия Ballistic Moon, NVIDIA выпустила форк Godot с RTX, EA увольняет сотрудников из всех студий, занимающихся разработкой Battlefield 6.
Из интересностей: как озвучивают космос в кино и играх, большое интервью Джеффа Каплана, физически корректный рендеринг с нуля.
Читать далее