Pull to refresh
12
0
Roman Gorbatenko @Elanlum

Java developer, Git ambassador

Send message

Что нужно знать, чтобы успешно пройти System Design Interview

Reading time16 min
Views43K

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

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

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

Читать далее
Total votes 49: ↑47 and ↓2+56
Comments26

Как не про…пустить все дедлайны. Таск-трекер в деле

Level of difficultyEasy
Reading time7 min
Views8.8K

Какие подходы к управлению временем вы сейчас используете? Готовы ли вы сказать, что у вас чёткая система по управлению вашими рабочими задачами?

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

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

Олег Бартунов о премии Highload++: лидерство обязывает всё время доказывать, что ты чего-то стоишь

Reading time9 min
Views4.8K

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

Я горжусь тем, что у нас в России очень хорошее Postgres сообщество, и что сам активно участвовал в его создании. Люди это отметили и это очень приятно.

Читать далее
Total votes 23: ↑21 and ↓2+23
Comments7

Путеводитель по ID для JPA сущностей. Часть 1: ID, генерируемые на сервере

Reading time14 min
Views60K

Разработка инструментария – очень познавательное занятие, потому что заставляется задуматься над теми вещами, которые в процессе разработки иногда не замечаешь. Казалось бы, создание @Id атрибута в JPA – рутинное занятие и каждый разработчик может сделать айдишник, даже не включая мозг. Однако, когда начинаешь углубляться в эту тему и пытаться разработать инструмент, который не только помогает писать код для определения ID, но и подсказывает потенциальные проблемы, то всплывает много интересного. И наши соображения, которыми мы руководствовались при разработке JPA Buddy, вылились в этот цикл статей. 

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

Spring MVC vs Spring WebFlux. Что лучше? Объясняем на пингвинах

Reading time8 min
Views35K

Существует множество способов реализации REST-API. Большой популярностью пользуется Spring MVC на основе блокирующих вызовов, но все чаще попадаются проекты, использующие WebFlux на неблокирующих вызовах. В этой статье разберемся, какой из этих двух фреймворков работает лучше. 

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

AI Talent Hub: как мы создаем лучшую онлайн-магистратуру по искусственному интеллекту

Reading time13 min
Views14K

Привет, меня зовут Дима Ботов — я руковожу магистерской программой «Искусственный интеллект» в ИТМО, вообще же преподавательской деятельностью я занимаюсь уже более 10 лет. В этой статье я хотел обсудить наболевший для меня вопрос: почему текущая модель IT-образования работает совсем не так, как должна.

Читать далее
Total votes 40: ↑35 and ↓5+40
Comments64

Ускоряем приложение: никаких фреймворков — только математика

Level of difficultyMedium
Reading time9 min
Views16K

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

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

Читать далее
Total votes 32: ↑28 and ↓4+32
Comments11

Apache Kafka: основы технологии

Reading time9 min
Views427K

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


Статья подготовлена на основе открытого занятия из видеокурса по Apache Kafka. Авторы — Анатолий Солдатов, Lead Engineer в Авито, и Александр Миронов, Infrastructure Engineer в Stripe. Базовые темы курса доступны на Youtube.

Total votes 29: ↑29 and ↓0+29
Comments10

Оптимизация запросов. Основы EXPLAIN в PostgreSQL (часть 3)

Reading time6 min
Views90K

Подолжаю публиковать авторскую переработку Understanding EXPLAIN от Guillaume Lelarge.
Ещё раз обращу внимание, что часть информации для краткости опущено, так что настоятельно рекомендую ознакомиться с оригиналом.
Предыдущие части:

Часть 1
Часть 2
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments2

Уж+ёж: реактивные компоненты в сервлетном окружении (2/3)

Reading time17 min
Views3.7K

В предыдущей заметке было показано несколько подходов к управлению зависимостями в «гибридных» приложениях (использующих части сервлетного и реактивного стеков), а также вариант реализации универсального механизма для поддержки MDC-меток в логах. А в этой заметке речь пойдёт о том, как обеспечить доступность текущего обрабатываемого HTTP-запроса из любой точки бизнес-логики.

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

Github Actions. Простой пример для уверенного знакомства

Reading time7 min
Views48K

Здесь я буду расссказывать о моем опыте настройки CI/CD c помощью GitHub Actions.

Эта статья поможет тем, кто хочет настроить автоматический деплой для личного/учебного проекта на свой удаленный сервер, пользуясь бесплатным сервисов GitHub Actions. Причем этим сервисом можно пользоваться бесплатно даже с приватным репозиторием (на момент написания статьи).

Акцентирую на тех моментах, которые для меня оказались не самыми очевидными, читая краткое руководство от Github.

Предполагается, что вы уже знаете, как пользоваться Github. По большому счету, не важно, какой у вас язык программирования или стек: главное - понять, как работают Github Actions и уметь применить его для любого проекта.

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

Почтовые Технологии — как мы цифровизируем Почту России

Reading time6 min
Views22K
Цифровая трансформация сегодня — как Bluetooth лет десять назад: все убеждены, что с ним всё становится лучше. Даже если он по факту вообще не нужен. С трансформацией история похожая — ее пытаются внедрять все компании, чтобы не сойти с парохода современности (у других-то есть, значит, и нам надо) и немного повысить привлекательность бренда работодателя в глазах потенциальных сотрудников.

Проблема в том, что часто за такой «трансформацией» скрывается лишь базовая цифровизация пары очевидных штук и закупка цветных маркеров (это порой срабатывает как сертификат об успешном внедрении Agile в ряде компаний).

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

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

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



Внутренние процессы тоже требовали определенной доработки. Но заданный в 2014 году импульс на улучшение ситуации сработал, и технологии стали потихоньку менять Почту изнутри и снаружи.
Читать дальше →
Total votes 51: ↑45 and ↓6+39
Comments49

Пишем свой spring-boot-starter

Reading time5 min
Views65K
Большинство java-разработчиков уже познакомились с проектом Spring Boot, позволяющим быстро написать приложение, использующее различные компоненты Spring Framework (Spring MVC, Spring Data и многие другие).

Всё удобство Spring Boot основано на использовании так называемых Starter, которые позволяют получить набор сконфигурированных бинов, готовых к использованию и доступных для конфигурации через properties-файлы. Но что делать, если для нужной технологии еще не написано стартера?
Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments0

Обработка русского языка на Java

Reading time4 min
Views11K

Рассказ пойдет об одной новой, общедоступной Java/Kotlin библиотеке, для работы с русским языком. Она позволяет получить исходные формы + морфологическую информацию для большинства слов русского языка. Статья предназначена для тех, кто создает ботов, обрабатывает сообщения и занимается поиском. Для справки, ключевое отличие лемматизации от стеммизации (урезания до нормализованной формы) состоит в том, что лемма удовлятворяет правилам языка, например для слова "яблоками" леммой будет "яблоко", а не просто урезанный корень. Лемма может быть и более сложной, например для слова люди, начальная форма – человек. В этой статье мы рассмотрим способ быстрого извлечения такой информации из морфологического словаря.

Запустить процесс
Total votes 10: ↑10 and ↓0+10
Comments13

Что полезно знать Java-разработчику про вывод типов

Reading time9 min
Views21K

image


В Java 8 кардинально переработали процедуру вывода типов выражений. В спецификации появилась целая новая глава на эту тему. Это весьма сложная штука, изложенная скорее на языке алгебры, чем на языке нормальных людей. Не каждый программист готов в этом разобраться. Я, разработчик IDE, которому приходилось ковыряться в соответствующем коде, к своему стыду тоже довольно плохо разбираюсь в этой теме и понимаю процесс только по верхам. Причём сложно не только мне, но и авторам компилятора Java. После выхода Java 8 обнаружились десятки багов, когда поведение компилятора не соответствовало спецификации, либо текст спецификации был неоднозначен. В средах разработки для Java ситуация обстояла не лучше: там тоже были баги, причём другие, поэтому код мог отображаться ошибочным в вашей IDE, но успешно компилироваться. Или наоборот. С годами ситуация улучшилась, многие баги исправили, хотя всё ещё в спецификации остались тёмные углы.

Читать дальше →
Total votes 40: ↑40 and ↓0+40
Comments57

Автоматизация наполнения Changelog через CI

Reading time3 min
Views6.7K

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

Читать далее
Total votes 8: ↑6 and ↓2+5
Comments18

ElasticSearch: отказоустойчивый сервер отказал

Reading time8 min
Views14K
image
Всем привет, меня зовут Илья, я работаю в компании DINS на должности инженера отдела мониторинга. В этой статье расскажу о нашей боли при работе с ElasticSearch. Мне не удалось найти решение этой проблемы где-либо ещё, поэтому, думаю, этот туториал будет интересен всем, кто использует ElasticSearch.
Читать дальше →
Total votes 25: ↑24 and ↓1+32
Comments17

Дефицит специалистов не только в IT — он везде. Но денег не платят

Reading time17 min
Views199K

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

Читать далее
Total votes 368: ↑352 and ↓16+408
Comments1017

Ускоряем pow

Reading time7 min
Views28K

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

Сравнить точность алгоритмов можно прямо сейчас на этой странице.

В конце будет краткая памятка по тому, где и когда лучше применять какой из методов. При правильном выборе можно добиться увеличения скорости вычислений в 5 раз при погрешности ~1%, а иногда и вовсе без неё.

Ускорь мои степени!
Total votes 52: ↑52 and ↓0+52
Comments40

Шестой подвиг Геракла: как мы расчистили прод от багов

Reading time12 min
Views9.7K

Привет, Хабр. Меня зовут Макс. Я специализируюсь на реконструкции и развитии процессов. Сегодняшняя история про баги. Не баги вообще, а про вполне конкретную их категорию.

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

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

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

Information

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