Pull to refresh
0
@HotSizzle read⁠-⁠only

Software engineer

Send message

Как мы попробовали DDD, CQRS и Event Sourcing и какие выводы сделали

Reading time 9 min
Views 75K
Вот уже около трех лет я использую в работе принципы Spec By Example, Domain Driven Design и CQRS. За это время накопился опыт практического применения этих практик на платформе .NET. В статье я хочу поделиться нашим опытом и выводами, которые могут быть полезными командам, желающим использовать эти подходы в разработке.

Факты, цифры, код
Total votes 39: ↑39 and ↓0 +39
Comments 45

Разработка высоконагруженного игрового WebSocket сервера на Java, Netty с поддержкой BattleRoyale/Matchmaking

Level of difficulty Hard
Reading time 18 min
Views 11K

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

Читать далее
Total votes 9: ↑9 and ↓0 +9
Comments 7

Profile-guided optimization в Go 1.21

Level of difficulty Medium
Reading time 16 min
Views 2.7K

В Go 1.20 была выпущена предварительная версия profile-guided optimization (PGO), которую пользователи могли протестировать. После устранения ограничений в предварительной версии и дополнительных доработок благодаря отзывам и вкладу сообщества, PGO в Go 1.21 готова к использованию!

Читать далее
Total votes 11: ↑10 and ↓1 +9
Comments 4

Как выучить что угодно в 7 раз быстрее и эффективнее

Reading time 4 min
Views 115K

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

Удивительно, но такое средство было найдено в 1990 году американским социологом Майклом Хоу. Он провел серию тестов среди студентов и определил, что пользователи «волшебного средства» в 7 раз лучше запоминали материал, легко вспоминали факты и легко применяли знания на практике.

Тот, кто использовал «волшебное средство» был наголову выше обычных студентов. «Обычные» хуже помнили материал и хуже его понимали, более того, даже одаренные отличники были слабее тех, кто использовал это «волшебное средство».

Это удивительное средство...

Читать далее
Total votes 165: ↑118 and ↓47 +71
Comments 124

Собеседование на Java разработчика. Разбор 1606 вопросов и ответов. Часть 2 (с 170 по 269 вопрос)

Level of difficulty Hard
Reading time 102 min
Views 16K

Всем привет! Меня зовут Владимир Баганов. Я продолжаю серию статей с простым разбором вопросов на собеседованиях на Java разработчика. Под капотом 269 разобранных вопросов из 1606 вопросов.

Читать далее
Total votes 19: ↑11 and ↓8 +3
Comments 3

Собеседование по Java. Разбор 1606 вопросов и ответов. Часть 1 (с 1 по 169 вопрос)

Level of difficulty Medium
Reading time 127 min
Views 54K

Всем привет! Меня зовут Владимир Баганов. Я хочу начать серию статей с простым разбором вопросов на собеседованиях на Java разработчика. Под капотом 169 разобранных вопросов из 1606 вопросов.

Читать далее
Total votes 19: ↑11 and ↓8 +3
Comments 14

Шпаргалка по SQL (postgres), которая выручает меня на собесах

Level of difficulty Easy
Reading time 8 min
Views 180K

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

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

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

Читать далее
Total votes 191: ↑184 and ↓7 +177
Comments 177

Сравнение производительности HTTP/3 и HTTP/2

Reading time 5 min
Views 21K


Мы в Cloudflare объявили о поддержке HTTP/3 в сентябре прошлого года, когда отмечали девятый день рождения. Наша задача всегда состояла в улучшении интернета. Сотрудничество в области стандартов — важная часть процесса, и нам повезло участвовать в разработке HTTP/3.

Хотя HTTP/3 ещё на стадии черновика, мы заметили большой интерес к новому протоколу со стороны наших пользователей (инфраструктура Cloudflare обслуживает более 10% сайтов интернета — прим. пер.). К настоящему моменту поддержку HTTP/3 активировали более 113 000 зон, и если у вас экспериментальный браузер, то теперь вы можете получить доступ к этим зонам по новому протоколу! Здорово, что его включили так много людей: работа по HTTP/3 большого количества реальных веб-сайтов означает, что можно тестировать больше разнообразных свойств со стороны браузеров.
Читать дальше →
Total votes 18: ↑17 and ↓1 +16
Comments 8

Ультимативный гайд по HTTP. HTTP/1.1 vs HTTP/2

Level of difficulty Easy
Reading time 6 min
Views 20K

Продолжаем цикл статей о протоколе HTTP: расскажем, что нового привнесла версия HTTP/1.1 и какие у нее принципиальные отличия с версией HTTP/2.

Читать далее
Total votes 11: ↑9 and ↓2 +7
Comments 10

Путь инженера: как эффективно пройти его от джуна до сеньора

Reading time 10 min
Views 6.7K

Мы все пришли в IT разными путями. Кто-то шёл по этому пути с самого детства, другие начали свой путь с выбора института и computer science в качестве основной дисциплины. Есть и те, кто свернул на эту дорогу, уже имея другую профессию и опыт работы совсем в другой сфере.

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

Читать далее
Total votes 10: ↑7 and ↓3 +4
Comments 5

Тебе не нужно классическое ООП в твоём бэкенд микросервисе

Reading time 24 min
Views 18K

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

Читать далее
Total votes 51: ↑46 and ↓5 +41
Comments 55

Основы нативной облачной архитектуры: cloud-native подход, приложения и разработка

Level of difficulty Easy
Reading time 8 min
Views 3K
image

К 2025 году, по оценкам Gartner, более 95% новых цифровых проектов будут развернуты на облачно-нативных платформах. В 2021 году таких было всего 30%.

Согласно отчету компании Tigera (создатели open source проекта Calico, который заметно расширяет стандартный набор API Kubernetes), уже 75% опрошенных компаний превращают свои продукты и услуги в нативно-облачные.

Мы подготовили перевод статьи, чтобы познакомить вас с основами cloud-native-приложений. Материал будет полезен, если вы планируете работать с нативной облачной архитектурой или использовать облачную стратегию развития ИТ-инфраструктуры.

Читать дальше →
Total votes 6: ↑5 and ↓1 +4
Comments 2

Как JVM аллоцирует объекты?

Reading time 16 min
Views 35K

Как JVM создает новые объекты? Что именно происходит, когда вы пишете new Object()?


На конференциях периодически рассказывают, что для аллокации объектов используются TLAB'ы (thread-local allocation buffer): области памяти, выделенные эксклюзивно каждому потоку, создание объектов в которых очень быстрое за счет отсутствия синхронизации.


Но как правильно подобрать размер TLAB'а? Что делать, если нужно выделить 10% от размера TLAB'а, а свободно только 9%? Может ли объект быть аллоцирован вне TLAB'а? Когда (если) обнуляется выделенная память?
Задавшись этими вопросами и не найдя всех ответов, я решил написать статью, чтобы исправить ситуацию.


Перед прочтением полезно вспомнить как работает какой-нибудь сборщик мусора (например, прочитав этот цикл статей).

Читать дальше →
Total votes 43: ↑43 and ↓0 +43
Comments 12

Project Panama: как сделать Java «ближе к железу»?

Reading time 28 min
Views 12K
В феврале в нашей новосибирской Точке кипения прошел тринадцатый митап JUGNsk, где Владимир Иванов, ведущий инженер Oracle из группы разработки виртуальной Java-машины HotSpot, рассказал, что сейчас приходит на смену JNI при взаимодействии Java-кода с native-кодом. Читайте далее о FFI (Foreign Function Interface), jextract, Memory Access API и Foreign ABI (Application Binary Interface).



Статья подготовлена по мотивам доклада, видеозапись которого с сессией вопросов-ответов можно найти тут. Это не просто расшифровка, а доработанная самим Владимиром версия исходного материала.
Читать дальше →
Total votes 38: ↑38 and ↓0 +38
Comments 1

Профайлер Бедного Человека: первое знакомство и (приятные) последствия

Reading time 9 min
Views 12K


Если вам приходилось оптимизировать работу программ, то вы могли слышать о Профайлере Бедного Человека. Этой идее даже посвящён целый сайт. ПБЧ собирает статистику времени выполнения отдельных функций программы, «подглядывая» в процесс её исполнения с помощью дебаггера. Концепт ПБЧ хорошо прижился у нас в движке баннерной крутилки — не буду в 100 500-й раз напоминать, что у Яндекса всё высоконагруженное, ресурсоёмкое и нуждающееся в профилировании. Статья будет полезна тем, кто пилит инфраструктуру, адаптирует какой-нибудь общеизвестный профайлер под себя или просто хочет больше знать про свои программы. Как мы пришли к необходимости в ПБЧ и что именно сделали? Сейчас постараюсь рассказать, местами буду закапывать глубоко в технологии (если переусердствую, пишите в комментариях). А начну со стандартного инструмента статистического профилирования в Linux — perf.
Читать дальше →
Total votes 30: ↑29 and ↓1 +28
Comments 20

Hibernate — о чем молчат туториалы

Reading time 12 min
Views 121K
Эта статья не будет затрагивать основы hibernate (как определить entity или написать criteria query). Тут я постараюсь рассказать о более интересных моментах, действительно полезных в работе. Информацию о которых я не встречал в одной месте.
image
Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Comments 7

Spring Test Containers как бины

Reading time 9 min
Views 14K

TestContainers это отличный инструмент, позволяющий тестировать свой код в prod-like окружении.

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

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

Достигнем этого при помощи кастомизации тестового контекста + всеми любимого BeanFactoryBostProcessor'а.

Читать далее
Total votes 11: ↑11 and ↓0 +11
Comments 11

Интеграционные тесты для Java с помощью TestContainers. Меньше безумия, больше порядка, и всё это автоматически

Reading time 9 min
Views 51K

На Хабре совсем нет информации про TestContainers. На момент написания этой статьи, в поисковой выдаче есть анонсы наших же конференций, и всё. Между тем, в проекте на GitHub у них уже более 700 коммитов, 54 контрибьютора и 5 лет истории. Похоже, все эти пять лет проект тщательно скрывался спецслужбами и НЛО. Настало время выйти из тени на свет.



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


Итак, здесь мы поделимся парой слов о наимоднейшей Java-библиотеке для интеграционного тестирования — TestContainers. Кроме этого, будет немного о том, почему интеграционное тестирование настолько важно для ZeroTurnaround и их требования к интеграционным тестам. И конечно, будет полнофункциональный пример интеграционного теста для Java-агента. Если кто-то никогда в глаза не видел код Java-агента, то сейчас самое время. Добро пожаловать под кат!

Total votes 27: ↑25 and ↓2 +23
Comments 18

Java Agent на службе JVM

Reading time 5 min
Views 57K

Наверное многие слышали или сталкивались с таким параметром JVM как -javaagent, увидеть этот параметр вы могли используя Jrebel или Plumbr это могло выглядеть например так JAVA_OPTS=-javaagent:[path/to/]jrebel.jar или так -javaagent:/path-to/plumbr.jar
Хотя javaagent появился еще в версии java 1.5, многие разработчики так никогда и не использовали возможности агентов и имеют смутное представление что это такое.
Что же это за агент? Зачем он может нам понадобиться и как написать свой?
Читать дальше →
Total votes 40: ↑40 and ↓0 +40
Comments 10

Историческое решение Netflix — введение карьерных уровней для инженеров-программистов

Reading time 10 min
Views 17K

Подошёл к концу 25-летний период, когда в компании Netflix придерживались подхода, в соответствии с которым все инженеры-программисты находились на одном карьерном уровне. Что можно сказать о новой системе карьерных уровней Netflix? Как их воспринимают сотрудники компании?

В апреле сего года я, в The Scoop #9, рассказал о том, как Netflix собирается ввести у себя систему карьерных уровней для инженеров-программистов:

Netflix рассматривает вопрос о введении следующей системы карьерных уровней:

— Engineer 1 (Инженер-программист 1)
— Engineer 2 (Инженер-программист 2)
— Senior (Старший инженер-программист)
— Staff (Ведущий инженер-программист)
— Principal (Главный инженер-программист)

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

Почему компания вводит систему карьерных уровней, если она весьма неплохо обходилась без них последние 25 лет? За это время количество программистов в ней дошло до 2000 человек, все они были старшими инженерами-программистами. Предполагаю, что всё дело в проблемах, которые имелись в существующей системе.

Читать далее
Total votes 14: ↑14 and ↓0 +14
Comments 7

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity