Как стать автором
Обновить
34
0.5
Сергей Горностаев @sergey-gornostaev

The believer in the separation of Church and state

Отправить сообщение

Аутентификация для WebSocket и SSE: до сих пор нет стандарта?

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

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

В статье разберем особенности аутентификации применительно к протоколу WebSocket и технологии Server-Sent Events, обсудим, какие нюансы могут быть, когда клиентская часть находится в браузере, и на что еще стоит обратить внимание, чтобы избежать неочевидных проблем.

А еще заодно поговорим про уязвимость Cross-Site WebSocket Hijacking (CSWSH) и в целом посмотрим на многие вопросы через призму информационной безопасности.

Читать далее
Всего голосов 52: ↑52 и ↓0 +52
Комментарии 5

Программисты всё вымирают и вымирают

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

Да вымереть не могут.

Откуда это всё пошло? Чем так условные «программисты» не угодили? И почему именно программисты?

Читать далее
Всего голосов 397: ↑385 и ↓12 +373
Комментарии 583

Java ScopedValue: Ускоренный ThreadLocal

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

В инкубаторе JEP-429 появилась новая альтернатива ThreadLocal под названием ScopedValue (в значительной степени как поддержка и развитие Virtual Threads). ScopedValue предназначен для того, чтобы предоставить более легкую альтернативу ThreadLocal, которая хорошо работает с виртуальными потоками, а также решает многочисленные недостатки, присущие API своего аналога двадцатипятилетней давности. В этой статье мы рассмотрим основные отличия ScopedValue, и за счет чего он может работать быстрее.

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 2

CompletableFuture. Глубокое погружение

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

java.util.concurrent.CompletableFuture - класс не новый. Он предстал перед нами во всём своём величии в 2014-м году вместе с выпуском Java 8. Много лет с тех пор прошло, а проще он не стал.

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

Читать далее
Всего голосов 36: ↑36 и ↓0 +36
Комментарии 19

Есть ли будущее у архитекторов и на кого их можно заменить?

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

Последние двадцать лет привели к серьезной трансформации технологического ландшафта и работы архитекторов, которые за ним должны следить. Архитекторы работают с технологиями и людьми. Компьютерные технологии за последние десятилетия значительно изменились и продолжают это делать. Люди меняются не так быстро. Однако, для работы с людьми выделяются новые роли: продакт-менеджеры, прожект-менеджеры, тимлиды. Роль и влияние архитекторов не так велико, как раньше, они становятся прерогативой больших компаний.

В статье попробуем разобраться действительно ли роль архитектора незаменима, для чего она нужна, как возникла и работает в реальном мире?

Читать далее
Всего голосов 23: ↑13 и ↓10 +3
Комментарии 23

Гексагональная архитектура со Spring Boot

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

Гексагональная архитектура стала популярным архитектурным паттерном, помогающим отделить бизнес-логику от инфраструктуры. Такое разделение позволяет откладывать принятие решений о технологиях или легко заменять их. Кроме того, это позволяет тестировать бизнес-логику в изоляции от внешних систем.

В этой статье мы рассмотрим, как реализовать гексагональную архитектуру в Spring Boot приложении. Мы разделим бизнес-логику и инфраструктуру на отдельные модули и посмотрим, как можно изолированно реализовать и протестировать эти модули.

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

Читать далее
Всего голосов 17: ↑14 и ↓3 +11
Комментарии 4

OpenConnect: недетектируемый VPN, который вам понравится

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

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее
Всего голосов 325: ↑324 и ↓1 +323
Комментарии 340

Что такое гексагональная архитектура. Разделение бизнес-логики и инфраструктуры с помощью портов и адаптеров

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

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

Вот как сам Кокберн описывает эту архитектуру одним тезисом:

Добиться, чтобы приложение в равной степени могло управляться пользователями, программами, автоматизированными тестовыми или пакетными сценариями, а также разрабатываться и тестироваться в изоляции от устройств и баз данных, на которых оно впоследствии будет выполняться. — Алистер Кокберн, 2005 г.

В этой статье мы рассмотрим некоторые задачи, как правило, решаемые в типичных программных проектах. Затем мы поговорим о гексагональной архитектуре и о том, как она призвана решить эти задачи. Мы также рассмотрим некоторые детали реализации такой архитектуры и варианты тестирования.
Читать дальше →
Всего голосов 41: ↑39 и ↓2 +37
Комментарии 45

Слово Божие — функциональное программирование как основа Вселенной

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

В одном из своих предыдущих постов под названием "Эйлер, Чёрч и Мандельброт — этюд о красоте и математике" я немного затронул тему рассмотрения функционального программирования в качестве основы реальности. Под тем постом было оставлено множество интересных комментариев, один из которых, написанный @nickolaym, вдохновил меня на развитие мысли в данном направлении. Так появился этот пост, в котором прямо как во времена пифагорейской школы и платоновской академии философия переплелась с математикой, а математика с философией.

Читать далее
Всего голосов 64: ↑54 и ↓10 +44
Комментарии 103

Распределённые транзакции

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

На собеседованиях на позицию middle/senior разработчика часто задают вопросы по распределенным транзакциям в микросервисной архитектуре.

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

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

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

Читать далее
Всего голосов 26: ↑23 и ↓3 +20
Комментарии 1

Сага о консистентности данных

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

В книге Криса Ричардсона «Микросервисы: паттерны разработки и рефакторинга», описывается что-то около 20 паттернов, использующихся в микросервисной архитектуре. Все они делятся на 5 больших групп: decomposition patterns, integration patterns, database patterns, observability patterns и cross-cutting concern patterns. Я, узнав про паттерны, которые могут быть применимы в микросервисной архитектуре, немного изучила их и попробовала реализовать один из них. Всем привет, меня зовут Екатерина Попкова, я Java/Kotlin-разработчик в Альфа-Банке, и хочу рассказать, как можно обеспечить консистентность данных в микросервисной архитектуре с помощью применения паттерна «Сага».

Читать далее
Всего голосов 26: ↑26 и ↓0 +26
Комментарии 3

Сага распределенных транзакций

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

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

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

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

У некоторых в команде уже был опыт работы с xa-транзакциями.
Довольно удобный способ, когда у вас есть несколько ACID СУБД. Процесс состоит из двух фаз.

Читать далее
Всего голосов 27: ↑26 и ↓1 +25
Комментарии 23

Shadowsocks-туннелирование корпоративного VPN

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

Если у вашей компании имеются серверы, работающие за границей, и доступ для внутренних пользователей вы предоставляете посредством VPN-протоколов (достаточно типовая схема, особенно после Covid — 2019, когда удалённая работа стала особенно популярной), то настало время действовать на опережение. Конечно, применение административного ресурса, возможно, защитит ваши интересы от тотальных проблем в будущем, но лучше подстраховаться, чем в один прекрасный день получить 100500 сообщений от систем мониторинга о недоступности опекаемых клиентов. Статья демонстрирует, как скрыть от противодействия со стороны систем глубокого анализа трафика сервисы компании, доступ к бизнес-процессам которых обеспечивается посредством VPN, используя для этого туннели shadowsocks.
Читать дальше →
Всего голосов 54: ↑54 и ↓0 +54
Комментарии 54

Теория типов

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

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

Что можно узнать из этой статьи?
Всего голосов 75: ↑75 и ↓0 +75
Комментарии 70

Load для гиков

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

Один из самых захватывающих сюжетов в книгах или кино, это погружение главного героя в некую жуткую авантюру, из которой он пытается выпутаться на потеху зрителю. Рождение GeekLoad как раз и было такой авантюрой: с одной стороны - в сфере нагрузочного тестирования уже так тесно, что не протолкнуться, а с другой - нас преследовало навязчивое ощущение возможности "сделать лучше".

Хотя это не история в чистом виде, а скорее ход размышлений во время работы над проектом - дальнейший рассказ раскроет наши метания на пути к цели. Запасайтесь попкорном!

Смотреть бесплатно и без регистрации
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 4

Сказка о типизации

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

В некотором царстве, в некотором государстве жил был царь. Как-то раз объявил царь всему народу - "Кто решит три моих задачки, тот сам сможет царём стать". И даже контракт метода опубликовал, всё честь по чести.

Это только присказка, сказка будет впереди
Всего голосов 60: ↑57 и ↓3 +54
Комментарии 21

Как мы выбирали процессный движок: месяц мучений ради идеала

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

Хабр, привет! Меня зовут Артем Терзьян, я Java-разработчик в IBS. Именно на мои плечи пала нелегкая задача выбора идеального BPMN-движка для реализации с его помощью бизнес-процессов в рамках нашей собственной платформы. Надеюсь, приведенный обзор поможет кому-то сэкономить время при столкновении с аналогичной задачей.

Подробнее о моих экспериментах
Всего голосов 14: ↑11 и ↓3 +8
Комментарии 7

Как появился миф про визуалов, аудиалов и кинестетиков, и почему модель доминирующего стиля обучения вредна для человека

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

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

Опросник Высшей школы экономики показал: 80% преподавателей вузов верят, что студентов можно разделить на визуалов, аудиалов, вербалов и кинестетиков. Более широкое международное исследование говорит: 89,1% педагогов считают, что люди учатся лучше, когда получают информацию в «своём стиле обучения».

Читать далее
Всего голосов 30: ↑29 и ↓1 +28
Комментарии 13

Сколько получают российские разработчики: наше исследование

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


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


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


Эта статья — с цифрами для разработчиков. Как до, так и после 21 сентября. Исследование по HR, менеджерам и дизайнерам выйдет позже, если этот пост вам понравится.

Читать дальше →
Всего голосов 144: ↑140 и ↓4 +136
Комментарии 253

SSEGWSW: Server-Sent Events Gateway by Service Workers

Время на прочтение 6 мин
Количество просмотров 8.6K
Привет!

Меня зовут Саша и я работаю архитектором в Тинькофф Бизнес.

В этой статье хочу рассказать о том, как преодолеть ограничение браузеров на количество открытых долгоживущих HTTP-соединений в рамках одного домена при помощи service worker.

Если хотите — смело пропускайте предысторию, описание проблемы, поиск решения и сразу переходите к результату.

SSEGWSW
Читать дальше →
Всего голосов 29: ↑29 и ↓0 +29
Комментарии 7

Информация

В рейтинге
1 581-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность