Search
Write a publication
Pull to refresh
5
0

Специалист по БД

Send message

Интеграция платформ через Keycloak: SSO и JWT в действии

Level of difficultyMedium
Reading time34 min
Views2.6K

В крупных компаниях с множеством платформ, например, интерфейсом интернет-магазина и системой обработки данных, часто требуется настроить доступ между системами через единый вход (SSO). Эта статья рассматривает задачу: обеспечить доступ из фронт-системы (reports-frontend) к API отчётов (reports-api) через Keycloak, чтобы JWT-токен содержал роль report_user. В контексте e-commerce это можно представить как интерфейс магазина, где менеджеры запрашивают отчёты о продажах, а Keycloak управляет аутентификацией.

Кому будет полезно?

Аналитики: Узнаете, как составлять заявки (например, в Jira) на настройку Keycloak, координировать с командами и проверять JWT в DevTools, чтобы избежать ошибок, таких как отсутствие роли в токене.

Разработчики: Познакомитесь с примером кода для React-фронтенда и Node.js-бэкенда, реализующим OIDC и PKCE.

Архитекторы: Поймёте, как Keycloak поддерживает SSO, масштабируемость (через PostgreSQL или Active Directory) и безопасность (PKCE, HTTPS).

Что внутри?

Теория: Объясняем SSO, OpenID Connect (OIDC), компоненты Keycloak (realms, хранилища, PKCE) и как JWT с ролью report_user обеспечивает доступ.

Практика: Показываем проект с React (reports-frontend), Node.js (reports-api) и Keycloak, запущенный через Docker Compose. Код включает realm-export.json, App.tsx, server.js, ReportPage.tsx.

Аналитика: Рассказываем, как аналитик формирует заявки на настройку Keycloak и координирует работу с админами, разработчиками и DevOps.

Практика SSO с Keycloak и JWT

Самодельный компьютерный стол с навороченной начинкой внутри за 20 шагов

Level of difficultyEasy
Reading time8 min
Views54K

В одной небольшой инструкции и двух видео посмотрим, как собрать свой собственный компьютерный стол. Но не просто стол, а стол‑корпус для ПК.

Что это вообще такое? Идея проста: берем все комплектующие компьютера и встраиваем их прямо внутрь конструкции. Мониторов возьмем, скажем, три. Сабвуфер не забудем, конечно же. Вуаля! Системного блока теперь как бы и нет. Но что еще важнее — всё становится очень круто тюнинговать!

Осторожно! Под катом множество вдохновляющих иллюстраций.

Зарядиться идеями

Хватит «внедрять таск-трекеры». Просто попробуйте этот вариант для ленивых

Level of difficultyEasy
Reading time3 min
Views25K

Таск-трекер без бизнес-процессов ― деньги на ветер! Самая частая ошибка ― пытаться заводить задачи, не продумав сам процесс. В этом тексте показываем 6 универсальных процессов, которые можно внедрить буквально за 10 минут: от онбординга до работы с подрядчиками.

Читать далее

VHS-Decode — новый метод оцифровки видео

Level of difficultyEasy
Reading time16 min
Views18K

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

Зимой 2025 года в мои руки попало 35 кассет формата VHS и VHS-C из семейного архива, и встала задача по их оцифровке. С учетом того, что на каждой кассете было записано приблизительно по 60 минут видео, а средний ценник услуг по захвату сейчас составляет 400 рублей в час, общая стоимость конвертации составила бы около 14 тысяч рублей. Эта сумма показалась мне слишком большой, и было решено сделать все самостоятельно. В данной статье я хочу рассказать об относительно новом методе оцифровки видеокассет, на котором я остановился, и сравнить его с классическими подходами.

Читать далее

Трехканальный вольтамперметр на базе ESP32-S3 с записью данных в лог и передачей данных по WI-FI (YCHEV003)

Level of difficultyEasy
Reading time6 min
Views12K

Привет друзья, сегодня с Вами мы соберём трёхканальный вольтамперметр на базе ESP32-S3. Многие из Вас, уже долгое время ждали этот проект, поэтому при его сборке я учёл все Ваши замечания в комментариях под видео к вольтамперметру на Arduino, вольтамперметру на ESP8266 и сделал проект максимально простым, я избавился от большого количества пайки, новый вольтамперметр буквально можно спаять навесным монтажом, так как он состоит всего из 5 модулей. Так же избавился от ненужных компонентов, навроде датчика температуры, блока управления вентиляторами, так как модули, на основе которых мы будем с Вами собирать лабораторный блок питания уже имеют и датчики температуры, и могут управлять скоростями вентилятора, поэтому данные компоненты в новом вольтамперметре я упразднил.

Читать далее

Договор на разработку ПО: условия и нюансы

Level of difficultyMedium
Reading time6 min
Views2.4K

Современный мир и, в частности, бизнес сейчас активно цифровизируется, поэтому огромное количество современных компаний либо обращаются к кому-либо за разработкой приложений (программное обеспечение, далее «ПО») для себя, либо же и вовсе сами занимаются разработкой ПО на аутсорсе. По долгу своей работы я часто сталкиваюсь с такими договорами на разработку ПО и могу с полной уверенностью сказать, что часто они заключаются с огромным количеством ошибок. Это влечет претензии с обеих сторон, судебные разбирательства и штрафные санкции. Давайте разберемся, как всего это избежать и составить качественный договор на разработку ПО.

Читать далее

Грехи программиста: MVC

Level of difficultyEasy
Reading time28 min
Views7K

Использование MVC — это удобная отправная точка для небольших и средних проектов. Он прост, широко понятен и поддерживается большинством фреймворков. Однако по мере роста продукта MVC становится архитектурным тормозом: он нарушает принципы модульности, затрудняет тестирование и ведёт к плотной связанности компонентов.

Читать далее

Мой идеальный компьютер

Reading time7 min
Views35K

Я сижу под Linux, но иногда нужна винда. До недавнего времени у меня был обычный dual boot, но сейчас я реализовал свой идеальный сетап:

- основная система - Linux

- Windows - на выделенной SSD

- на нее можно загрузиться как из груба, так и из виртуалки

- с пробросом второго GPU (дисплей на отдельный физический выход)

- с качественным удаленным подключением (как RDP, но быстрое) - можно играть в игры

Ниже опишу что и как сделал.

Читать далее

Передаем документацию заказчику: Markdown, Git, CI/CD и почти полная автоматизация

Reading time5 min
Views6.4K

Представьте, что вы разработали программное обеспечение. Все идеально: код отточен, тесты пройдены, система готова к работе. Но тут встает вопрос: как отправить документацию заказчику?

Всем привет! Меня зовут Катя, я развиваю Gramax, open source-платформу для управления технической документацией. В этой статье хочу поделиться впечатлением от стандартных способов передачи документации на заказную разработку. А также рассказать о том, как этот процесс можно автоматизировать с помощью Gramax.

Рассказывай!

Minimal API: Избавляемся от устаревающих контроллеров в ASP.NET Core

Level of difficultyMedium
Reading time14 min
Views7.6K

Я, думаю, многие уже слышали о появившихся в .NET 6 Minimal API - легковесной замене контроллеров/MVC. Кто-то уже успел ознакомиться и задался вопросом: "Ваше API в 3 строчки, это, конечно, здорово, но как это будет работать в реальном проекте с сотнями эндпоинтов, кучей фильтров, аттрибутов, расширениями OpenAPI/Swagger и прочих радостях?"

В этой статье я хочу ответить на этот вопрос: пройдемся от основ, преимуществ, недостатков, и закончим нюансами работы и проблемами, которые обязательно возникнут при миграции с контроллеров на Minimal API в крупном проекте.

А забегая чуть вперед: если думаете, стоит ли переводить проект на Mini API, вот вам сразу полезная информация: они могут жить в проекте вместе, причем даже без дублирования инфраструктуры: не обязательно переводить все разом - подробнее под катом.

Бонусом, заменим SwaggerGen на реализацию OpenAPI от Microsoft.

Читать далее

Как собрать Docker-образ, который можно запускать в проде (а не только у себя на ноуте)

Level of difficultyEasy
Reading time4 min
Views30K

Если ты пишешь Dockerfile, скорее всего, он работает. Но вопрос не в том, работает ли. Вопрос в другом: будет ли он работать через неделю, на другом сервере, в CI/CD, на чужом железе — и будет ли это безопасно?

Читать далее

Огромный гайд по настройке рабочего окружения: Linux, VScode, Python

Level of difficultyEasy
Reading time29 min
Views59K

Привет всем!

Как обычно это и бывает, я накопил критическую массу мыслей, и пора их как-то систематизировать, чтобы вы, мои замечательные читатели Хабра, могли что-то извлечь из моего опыта или поделиться своим :)

Я люблю и одновременно ненавижу статьи-обзоры в стиле «10 программ для {whatever}». Ненавижу — потому что их очень легко делать, вбил в гугл «программа для X», взял первые 10 ссылок, статья готова. Я называю такие статьи «лёгкий рейтинг». А люблю я их за то, что даже если 9 пунктов — чушь полная, то десятый, как правило, годный, я узнаю что-то новое, это что-то облегчает мне жизнь и позволяет мне быть более продуктивным.

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

Статья получилась ОГРОМНАЯ, и у меня был большой соблазн разбить её на сотню статей поменьше, чтобы в каждой ставить ссылки на свой телеграм-канал и получать гонорар за каждую по отдельности. Но я не буду. Пусть знания будут сгруппированы вместе. Welcome!

Читать далее

Почему все смартфоны стали одинаковыми: история потерянного разнообразия

Reading time8 min
Views19K


Еще десять лет назад при выборе смартфона можно было по-настоящему почувствовать свободу: кто-то брал раскладушку с QWERTY-клавиатурой, кто-то — огромный лопатоподобный экран для игр, кто-то искал модель с отличным звуком или экзотическим дизайном. Сегодня же большинство аппаратов отличаются лишь логотипом на задней панели: безрамочный прямоугольник из стекла и металла, минимальная «челка» и пара камер. Почему так вышло? Давайте разберем, откуда взялось это массовое «лицо одной модели» и чем мы платим за утраченное разнообразие.
Читать дальше →

Open source Self-Hosted убийца убийц Notion. Как установить?

Level of difficultyEasy
Reading time3 min
Views15K

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

Сегодня расскажу про то что нашел для и себя и как это похостить.

Читать далее

Vue. Watch и WatchEffect на практике

Level of difficultyEasy
Reading time13 min
Views3.9K

Каждый, кто использует Vue для разработки, так или иначе встречается с необходимостью выполнить какое‑либо побочное действие при изменении значений, и сразу в голове возникает мысль о двух методах‑наблюдателях — Watch и WatchEffect.

Как работают эти 2 метода можно узнать из великолепной документации Vue, а в этой статье мы посмотрим на примеры самых часто используемых компонентов вместе с наблюдателями — по 2 компонента на каждый метод — а заодно вы сможете больше понять принцип их работы.

По ходу статьи также будут приведены некоторые полезные библиотеки Vue, которые часто используются в разработке.

Читать далее

FastAPI + Keycloak: Простая и безопасная авторизация в веб-приложении на примере реального проекта

Reading time34 min
Views15K

Keycloak - это мощная open-source платформа для аутентификации и авторизации, которую используют даже банки и крупные корпоративные клиенты для защиты своих приложений и данных.

В статье на реальном примере (FastAPI + Python) простым языком объясню, как Keycloak помогает упростить управление доступом и почему его принципы универсальны для любого бэкенда, независимо от выбранного языка программирования

Читать далее

Как фронтендеру сделать интерфейс дружелюбнее к пользователю. Коллекция HTML/CSS лайфхаков

Level of difficultyMedium
Reading time6 min
Views17K
image

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


Мне всегда нравились красивые и удобные интерфейсы. Желая сделать лучше для пользователя, я потратил не один день. Так я начал коллекционировать HTML и CSS лайфхаки, которые улучшают впечатление пользователя от интерфейса. В итоге у меня получился внушительный список.


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


Давайте посмотрим, что я вам подготовил.

Читать дальше →

Побег от WSL или Как превратить старый ноутбук в домашний сервер для хранения данных и удаленной работы

Level of difficultyMedium
Reading time10 min
Views31K

Делюсь личным опытом превращения старенького ноутбука ASUS X552CL (Intel i5-5200U, 12 ГБ RAM, SSD + HDD), выпущенный 12 лет назад, в полноценный домашний сервер под Linux Ubuntu Server 24.04.5 LTS.

Получилось что-то вроде мини-датацентра на дому — он хранит файлы на жёстком диске с бэкапом в облаке, Docker-контейнеры крутит для дата-аналитики и даже имеет легковесный интерфейс XFCE, при этом есть потенциал к росту до терминала для управления умным домом. Расскажу, почему было решено отказаться от WSL на рабочем ноутбуке Huawei, как настроить удалённый доступ через xRDP (чтобы не было чёрного экрана), запустить там Docker, сборку Superset и JupyterLab с Anaconda (с разными версиями Python), прикрутить Samba-шару для домашнего использования и организовать бэкап в облачном хранилище. В этой статье будет немного технических деталей, щепотка шуток и парочка мемов с советскими плакатами.

Читать далее

Плеер для слабовидящих на ESP32

Level of difficultyEasy
Reading time3 min
Views6.1K

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

Читать далее

Технотекст 7: шорт-листы для 499 отборных статей

Level of difficultyEasy
Reading time22 min
Views7K

Технотекст 7 получился необычным: мы провели всего одну рассылку, остальные статьи собирали органически — анонсами, упоминаниями и даже личным общением с авторами (как в личке, так и в оффлайн формате). Для такой активности результат превзошёл все ожидания: мы получили 833 заявки, приняли 763, в шорт-листы попали 499 заявок, из них 132 от частных пользователей, 367 — от компаний.

Почти все статьи оказались качественными — поэтому при скоринге материалов для шорт-листов оставались в первом туре статьи с рейтингом выше +50 и даже выше +100. Из неприятного — две «нейроночные» статьи, они были сняты с конкурса, искренне надеемся, что это был эксперимент и кто-то пробовал нас на прочность. Увы, думаю, что этот год стал последним спокойным с позиций ИИ-шного контента — в новом сезоне проверяться будет каждая статья. 

Читать далее
1
23 ...

Information

Rating
6,504-th
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Database Developer
ASP.NET Web API
PostgreSQL
Git