Анатомия письма: почему email-дизайн — это машина времени в 1999 год

Вы когда-нибудь пробовали применить display: flex или grid в коде письма? Если да, то вы знаете чувство глубокого разочарования, когда Gmail, Outlook или Yahoo решают, что ваш современный красивый макет должен выглядеть как стена текста, набранная на печатной машинке.

Нативная поддержка gRPC в Spring

Не так давно в релиз был выкачена первая мажорная версия библиотеки Spring gRPC - для встроенной поддержки gRPC-сервисов в приложении Spring Boot. Она развивается внутри экосистемы Spring, а значит версионирование и интеграция с Boot - это теперь не вызывает проблем.

Кэширование пользовательских ролей из стороннего сервиса при Stateless-аутентификации (Spring)

Представим не столь редкую ситуацию, когда у нас есть некоторый сервис на базе Spring, к которому шлет запросы клиентское приложение. Фронтэнд взаимодействует с Keycloak (или другим сервером аутентификации, не столь важно), определяет пользователя, делающего запросы, и при обращении к нашему сервису подкладывает в заголовок "Authorization" Bearer-токен в виде JWT, на основании которого в сервисе должны происходить идентификация пользователя и определение прав доступа.

REST API: 5 паттернов формирования ответов, которые используют опытные разработчики

Возвращать необработанные JPA-сущности из REST-контроллеров — это один из тех паттернов, который кажется безобидным в начале, но затем превращается в системную проблему в production. Он не просто нарушаете принцип разделения ответственности — он создаёт три взаимосвязанных риска одновременно: утечку чувствительных данных, жёсткую связанность API со схемой БД и потерю контроля над публичным контрактом. В этой статье мы разберём пять паттернов, которые используют опытные разработчики. Каждый из них решает конкретную задачу, и вместе они формируют слой ответов, который является одновременно безопасным, производительным и удобным в сопровождении.

Поломалась оснастка порты управляемых сетей в zVirt

В какой то момент в zVirt поломалась возможность импортировать виртуальные машины из образов в формате OVA размещённых на дисках хоста с гипервизором. Но о том как это чинить, как-нибудь в другой раз, а может и в очередном обновлении починится.

Невидимые пользователи: Проектируем цифровую среду, доступную каждому

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

Как я сократил время итерации в 3 раза на проекте с микросервисами

Рано или поздно любая задача по написанию кода сводится к одному и тому же циклу: собрал проект -> запустил -> прогнал тесты -> поймал проблему -> выдвинул гипотезу -> внёс правки -> и снова по кругу, каждый раз надеясь, что в этот раз «точно всё».

HashMap в Java: 10 фактов, о которых вы, возможно, не знали

HashMap – наверное, самая используемая коллекция в Java. Мы кладём в неё элементы, достаём, редко задумываясь, что происходит под капотом. И в целом это нормально: класс работает, документация есть, сообщество стабильно советует переопределять equals и hashCode.

Go вместе изучать Go. Часть 6 (Заключительная)

Добро пожаловать в заключительную статью нашей серии о языке программирования Go. В ней мы рассмотрим три возможности языка: работу с изображениями через пакет image, обобщения (дженерики) для написания универсального кода и конкурентность — одну из главных «визитных карточек» Go.

iOS разработка: Как обнулить счетчик уведомлений в приложении

В этой заметке кратко рассмотрим, каким образом происходит обнуление иконки с числом непрочитанных уведомлений в iOS приложении. Приведем фрагмент кода, который позволяет убрать все непрочитанные уведомления при входе в приложение

Keycloak: Identity Broker и настройка realm-to-realm брокеринга

Добрый день! Сегодня я хочу поговорить о механизме Identity Brokering внутри Keycloak, а точнее о возможности использовать один realm как Identity Provider для другого. Звучит просто, но на практике нюансов хватает, поэтому давайте разберёмся по порядку.

Будущее программирования: четыре смелые идеи из 60-х, которые меняют наш цифровой мир сегодня

В 60-е и 70-е годы прошлого века, когда компьютерная наука только зарождалась, в ней не было правил. Не было стандартов, догм или «единственно верных» подходов. Были только чистые листы и смелые умы, готовые пробовать всё, что приходило в голову.

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

Мы часто думаем о дизайне как о красоте, стиле или удобстве. Но на более глубоком уровне эффективный дизайн — это тонкая и мощная форма психологического воздействия. Он не просто украшает интерфейс, он направляет наше внимание, формирует восприятие, упрощает сложное и, в конечном счете, подталкивает нас к определенным решениям — от нажатия на кнопку до совершения покупки.

Go вместе изучать Go. Часть 5

Интерфейсы — один из элегантных инструментов Go, который позволяет писать гибкий и масштабируемый код. В отличие от многих других языков программирования, Go использует имплицитную (неявную) реализацию интерфейсов, что делает их особенно удобными и гибкими. Если вы когда-нибудь сталкивались с жёсткой типизацией и сложными иерархиями наследования в других языках, интерфейсы Go принесут в вашу жизнь глоток свежего воздуха. В этой статье мы разберёмся с основами интерфейсов, узнаем, как они работают под капотом, и изучим практические примеры, которые помогут вам использовать их в своих проектах.

Swagger: как починить неработающие разнородные multipart-запросы

Swagger давно уже можно назвать своего рода стандартом среди инструментов для документирования и тестирования RESTful API. Тем не менее в каждом решении бывают свои недоработки, баги и проблемы. Одна из проблем - это обработка сложных multipart-запросов, где части тела запроса представлены разными типами. Рассмотрим, в чем суть этих проблем, как починить отправку multipart-запросов из Swagger

Стили менеджмента: классификация по PAEI

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

Задача по динамическому программированию: «Карьерный путь в Tune-IT»

Задача по динамическому программированию: «Карьерный путь в Tune-IT» Условия задачи В компании Tune-IT программист строит карьеру, зарабатывая славу, деньги и влияние в зависимости от выбранного пути.

Go вместе изучать Go. Часть 4

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

Apache NiFi: заметки по ведению логов потоков данных

В этот позднедекабрьский день мы снова возвращаемся к Apache NiFi, чтобы в простой и компактной форме поделиться своим опытом и некоторыми практиками, связанными с организацией потока обработки данных.

Как проектировать интерфейс, если ты не дизайнер. Базовые правила хорошего дизайна.

В мире стартапов и быстрой разработки часто возникает ситуация: продукт должен быть создан вчера, бюджет ограничен, а в команде нет профессионального дизайнера. Разработчики, менеджеры продуктов, даже основатели вынуждены брать на себя роль дизайнера.
RSS (Opens New Window)(Opens New Window)
thumbnail Maxim Kalabukhov
Posts: 3
Date: 4/7/26
thumbnail Никита Рогаленко
Posts: 23
Date: 4/6/26
thumbnail Romo Fedoroff
Posts: 54
Date: 4/1/26
thumbnail Andrei Maksimov
Posts: 20
Date: 3/30/26
thumbnail Polina Napolskaya
Posts: 4
Date: 3/4/26
thumbnail Vadim Mikhu
Posts: 4
Date: 1/20/26
thumbnail Александра Пирс
Posts: 31
Date: 10/7/25
thumbnail Dmitry Afanasiev
Posts: 64
Date: 8/7/25
thumbnail Тимофей Перцев
Posts: 37
Date: 7/29/25
thumbnail Arseny Antonovich Konovalov
Posts: 1
Date: 6/25/25
thumbnail Daria Zuban
Posts: 12
Date: 3/7/25
thumbnail Marina Pashnina
Posts: 35
Date: 3/3/25
thumbnail Алексей Егошин
Posts: 17
Date: 1/13/25
thumbnail Дмитрий Сазонов
Posts: 61
Date: 12/6/24
thumbnail Nikolay Emchenko
Posts: 19
Date: 11/27/24
thumbnail Jonathan F. Keker
Posts: 6
Date: 11/7/24
thumbnail Andrey Karabanov
Posts: 2
Date: 10/31/24
thumbnail Evgenij Tsopa
Posts: 52
Date: 10/2/24
thumbnail Dmitry Sheshukov
Posts: 17
Date: 9/26/24
thumbnail Sviatoslav Osipov
Posts: 4
Date: 8/4/24
thumbnail Danil Khanalainen
Posts: 3
Date: 5/8/24
thumbnail Alexey Weiss
Posts: 17
Date: 5/7/24
thumbnail Денис Серянкин
Posts: 2
Date: 12/18/23
thumbnail Anna Ershova
Posts: 2
Date: 10/30/23
thumbnail Erik Karapetyan
Posts: 12
Date: 9/9/23
thumbnail Pavel Danilov
Posts: 12
Date: 9/9/23
thumbnail Maxim Zhukov
Posts: 152
Date: 6/20/23
thumbnail Vladislav Sivirin
Posts: 1
Date: 5/22/23
thumbnail Vadim Kholoshnia
Posts: 1
Date: 4/17/23
thumbnail И Горь
Posts: 27
Date: 2/20/23
thumbnail Dmitry Komarov
Posts: 2
Date: 6/2/22
thumbnail Semyon Gruzdev
Posts: 1
Date: 11/17/21
thumbnail Victor Scherbakov
Posts: 3
Date: 9/3/21
thumbnail Ivan Kayukov
Posts: 10
Date: 8/17/21
thumbnail Alexander Zhermal
Posts: 8
Date: 4/16/21
thumbnail Alexander Yarkeev
Posts: 42
Date: 12/23/20
thumbnail Alexey Pismak
Posts: 2
Date: 12/9/20
thumbnail Александр Исаев
Posts: 5
Date: 9/15/20
thumbnail Александр Пашнин
Posts: 25
Date: 9/10/20
thumbnail Danil Sinitskiy
Posts: 3
Date: 9/2/20
thumbnail Valeriy Urrievich Kireev
Posts: 26
Date: 1/15/20
thumbnail Vladimir Nikolaev
Posts: 14
Date: 12/30/19
thumbnail Ivan Uskov
Posts: 23
Date: 12/16/19
thumbnail Андрей Дьяков
Posts: 25
Date: 6/27/19
thumbnail Sergey Zhmylove
Posts: 45
Date: 3/14/18
thumbnail Lev Koznov
Posts: 18
Date: 7/14/17
thumbnail DEADBEEF
Posts: 1
Date: 1/16/17
thumbnail Никита Патрахин
Posts: 2
Date: 8/15/16
thumbnail Vladimir Berlev
Posts: 3
Date: 11/26/15
thumbnail Sergey Klyaus
Posts: 58
Date: 6/21/15
thumbnail Pakhom Golynga
Posts: 20
Date: 3/3/14
thumbnail Vladislav Sovinskiy
Posts: 11
Date: 1/10/14
thumbnail Konstantin Borzov
Posts: 7
Date: 6/20/13
thumbnail Anthony Dmitriev
Posts: 4
Date: 2/19/13
thumbnail Nicolay Smirnov
Posts: 6
Date: 5/2/12
thumbnail Alexander Deiter
Posts: 16
Date: 9/8/11
thumbnail Serge Klimenkov
Posts: 8
Date: 7/26/11
thumbnail Roman Ambrosenko
Posts: 3
Date: 1/18/11
thumbnail Sergey Shilin
Posts: 9
Date: 11/5/10
thumbnail Ruslan F. Isbarov
Posts: 1
Date: 3/31/10