Pull to refresh
4
0
Send message

Полнотекстовый поиск в java приложениях с помощью Elasticsearch

Level of difficultyEasy
Reading time41 min
Views2.2K

Рассмотрим, как использовать Elasticsearch в качестве поискового движка в приложениях на Spring Boot. Поговорим о стратегии реализации полнотекстового поиска, эффективной индексации сущностей JPA и их связей. Уделим внимание использованию аннотаций полей, настройке релевантности с помощью весовых коэффициентов и реализации нечёткого поиска для обработки вариаций запросов. Также обсудим методы настройки синонимических связей, многоуровневых фильтров и ранжирования результатов по релевантности для повышения качества поиска.

Читать далее
Total votes 14: ↑13 and ↓1+14
Comments0

Кластеры и мир: хроника высокодоступного Pub/Sub в Redis

Level of difficultyEasy
Reading time22 min
Views2.3K

В статье рассматриваются основные принципы и особенности использования Redis в режиме Pub/Sub для масштабируемых и высоконагруженных приложений. Описаны два подхода к обеспечению высокой доступности — Redis Sentinel и Redis Cluster, их преимущества, ограничения и примеры настройки. Приведены примеры использования Pub/Sub в реальных системах, а также практические конфигурации и код для настройки отказоустойчивого кластера Redis. Статья предназначена для разработчиков, которые ищут решения для создания надежных систем обмена сообщениями с высокой производительностью и отказоустойчивостью.

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

10 логических задач, которые помогут вам пройти собеседование на инженера по тестированию

Reading time8 min
Views39K

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

Привет, Хабр! Меня зовут Кристина. Я ревьюер на курсе «Инженер по тестированию» в Яндекс Практикуме. Делюсь подборкой логических задач, с которыми я встречалась на собеседованиях на должность инженера по тестированию. Попробуйте решить их самостоятельно, прежде чем читать решение.

Читать далее
Total votes 21: ↑11 and ↓10+5
Comments71

Принципы SOLID на примерах из жизни и разработки

Level of difficultyEasy
Reading time8 min
Views14K

Задача этой статьи только одна - попробовать уложить принципы SOLID на понятных «бытовых» примерах, а уже потом посмотреть, как оно может работать на практике - в коде.

Итак, SOLID - это 5 принципов, которые используются при разработке приложений. На каждый принцип по букве:

1. S — Single Responsibility Principle (Принцип единственной ответственности)

Определение: Каждый класс должен выполнять только одну задачу.

Пример из жизни:

Например, мы купили шкаф для одежды. 

Читать далее
Total votes 23: ↑17 and ↓6+15
Comments27

Что такое гамма кривая и зачем композерам работать в линейной гамма-кривой?

Level of difficultyEasy
Reading time4 min
Views4K

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

Простое объяснение наболевшей темы.

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

Подробно про JWT

Level of difficultyMedium
Reading time6 min
Views17K

О чем эта статья: мы разберемся, что такое JSON Web Token, как он устроен и для чего используется, рассмотрим такие приемы, как «black-list токенов» и «контроль версий» токенов. Для наглядности, в конце будут блок-схемы клиент-серверных запросов с пояснениями.

Для кого эта статья: для тех, кто хочет детально понять что такое JWT, а так же для тех, кто просто ищет схему реализации.

Читать далее
Total votes 22: ↑20 and ↓2+20
Comments19

REDIS: такой простой и такой сложный

Level of difficultyMedium
Reading time10 min
Views23K

Меня зовут Андрей Комягин, я СТО компании STM Labs. Мы занимаемся разработкой очень больших распределённых высоконагруженных систем для различных отраслей и в своей работе широко используем open-source решения, в том числе СУБД Redis. Недавно я подробно рассказывал об этой системе на конференции Saint HighLoad++, а теперь с удовольствием поделюсь основной информацией с читателями Хабра. Итак, поехали.

Читать далее
Total votes 50: ↑49 and ↓1+60
Comments28

Введение в Istio для Kubernetes: основы и начальная настройка

Level of difficultyMedium
Reading time14 min
Views8.2K

Работая DevOps-инженером, я часто сталкиваюсь с необходимостью глубоко погружаться в механизмы работы контейнерных оркестраторов. Важность хорошего знания архитектуры и оптимизации управления контейнерами трудно переоценить, особенно когда речь идёт о Kubernetes. Эта технология стала неотъемлемой частью моего инструментария благодаря её возможностям в автоматизации развёртывания, масштабирования и управления контейнерными приложениями.

Однако управлять микросервисной архитектурой в Kubernetes бывает весьма сложно. И здесь на помощь приходит Istio — мощная платформа, обеспечивающая сетевое взаимодействие, безопасность и наблюдаемость в кластере Kubernetes. В этой статье мы рассмотрим основы Istio и её начальную настройку.

Читать далее
Total votes 17: ↑15 and ↓2+20
Comments1

YRGB 2024 — конкурс по созданию игр для ZX Spectrum

Reading time6 min
Views5.2K

Жизнь отечественных геймеров в конце 80-х — начале 90-х годов была очень непростой. Из советских электронных развлечений были разве что клоны Pong вроде «Видеоспорта», карманные электронные игры типа «Ну, погоди!» (тоже клоны, но уже серии Game & Watch от Nintendo), несколько десятков советских компьютеров с довольно ограниченным набором софта да несколько сотен (!) клонов британского компьютера ZX Spectrum.

И сегодня я хочу рассказать вам о YRGB — международном конкурсе по разработке ретро‑игр, который Яндекс проводит с 2019 года. Участникам необходимо разработать самостоятельную игру, свободную от авторских прав, для платформ ZX Spectrum 48K/128K. Так что если вы когда‑нибудь делали игры или хотите попробовать, но опасаетесь масштаба современных платформ, этот пост для вас.

> START
Total votes 38: ↑38 and ↓0+54
Comments52

Распределенные транзакции для самых маленьких

Level of difficultyEasy
Reading time8 min
Views14K

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

Читать далее
Total votes 18: ↑14 and ↓4+15
Comments10

Kotlin Coroutines. От А до Я

Level of difficultyEasy
Reading time28 min
Views21K

Полный разбор корутинного мира с нуля, который может послужить отличной шпаргалкой на собеседовании!
Разберем разницу между многопоточностью и асинхронностью; раскроем все основные понятия корутин, параллельно ссылаясь на исходники kotlinx.coroutines; посмотрим их применение на практике и в конце напишем свой собственный CoroutineScope.

Let's go
Total votes 25: ↑25 and ↓0+29
Comments12

10 типов проблемных разработчиков и методы эффективного взаимодействия с ними

Reading time20 min
Views8.1K

Некоторых разработчиков иногда сравнивают со снежинками — они уникальные, выдающиеся, и, естественно, самоуверенные. Работать с «обычными» сотрудниками легко. Гораздо труднее справляться с проблемными типажами. Одинокий волк, всезнайка, перфекционист — в каждой команде есть человек, с которым сложно и руководству, и коллегам. Автор статьи, программист и сооснователь digital-агенства Mindnow, Вадим Кравченко рассказывает, как не усугубить ситуацию с трудными сотрудниками, превратить сложности в возможности для роста и продолжить успешную командную работу. Особенно, если проблемный коллега талантлив и приносит пользу компании.

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

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Total votes 22: ↑15 and ↓7+11
Comments4

Не используйте Lombok с JPA, пока не прочтете эту статью

Level of difficultyEasy
Reading time8 min
Views11K

Lombok — действительно отличный инструмент. Одна строчка кода, и все ваши JPA сущности перестают корректно работать ;) Но это только в том случае, если вы не знаете, какие фичи Lombok можно использовать вместе с JPA, а какие лучше не стоит. 

В этой статье я расскажу про большинство подводных камней, с которыми можно столкнуться, используя Lombok вместе с JPA, и про то, как их обойти используя Amplicode.

Читать далее
Total votes 18: ↑15 and ↓3+15
Comments24

Простой способ развернуть локальный LLM

Level of difficultyEasy
Reading time4 min
Views13K

Большие языковые модели (LLM, Large Language Models) стали незаменимыми инструментами для разработчиков и исследователей. С их помощью можно решать разнообразные задачи.. Однако использование таких моделей часто связано с зависимостью от внешних сервисов, что накладывает определённые ограничения. Локальное развертывание LLM позволяет сохранить контроль над данными и гибко настроить модель под конкретные нужды, используя при этом преимущества локальной инфраструктуры.

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

Читать далее
Total votes 13: ↑12 and ↓1+16
Comments11

Реквием по SCRUM: всё равно уже хайп прошёл

Level of difficultyMedium
Reading time11 min
Views17K

В мире победившего эджайла, SCRUM, как один из наиболее популярных фреймворков, казалось, имеет все шансы стать отраслевым стандартом. Однако в результате врождённых недостатков он стал чем-то средним между религией для занятых проектным управлением и воздухом для продажи эджайл-коучами. Более того, сегодня строгая приверженность принципам SCRUM нередко становится маркером профнепригодности для людей, которые имели неосторожность переродиться из полноценных проектных методологов и руководителей в фанатично зацикленных на ритуалах scrum-мастеров (речь не обо всех, но о об очень многих). В посте попытался обобщить все проблемы SCRUM, как "фреймворка" для проектного управления и создания продуктов.

Читать далее
Total votes 48: ↑43 and ↓5+54
Comments108

JPA Entity. Загрузи меня не полностью

Level of difficultyEasy
Reading time16 min
Views8.1K

JPA часто подвергается критике за невозможность загружать сущности частично, что на самом деле является большим заблуждением. Spring Data JPA и Hibernate включают в себя множество инструментов по частичной загрузке сущностей. 

Команда Spring АйО подготовила статью, в которой рассмотрела имеющиеся в Spring Data JPA инструменты для частичной загрузки сущностей, а также разобрала их особенности и corner-кейсы.

Читать далее
Total votes 20: ↑19 and ↓1+18
Comments14

Как настроить веб-приложение под высокие нагрузки

Level of difficultyMedium
Reading time8 min
Views7.1K

Привет, меня зовут Александр Ададуров. Я — руководитель проектов ФГБУ «Центр информационно-технического обеспечения». В этой статье я опишу опыт настройки сайта с образовательным контентом под нагрузку в пиках до 15 000 запросов в секунду или до нескольких миллионов пользователей в день. 

Образовательный контент сайта представлял собой иллюстрированные HTML-страницы, видеоуроки и различные интерактивные задания, преимущественно на JavaScript, которые проверяли правильность выполнения заданий запросами к бэкенду. Сайт жил спокойной жизнью и вяло развивался до введения локдаунов в связи с распространением COVID-19. Первые месяцы карантина существенно изменили код приложения, его архитектуру и даже серверную инфраструктуру, на которой оно располагалось. 

Читать далее
Total votes 14: ↑13 and ↓1+15
Comments8

А что если вместо банковского вклада использовать облигации после резкого повышения ставки Банком России?

Level of difficultyMedium
Reading time5 min
Views22K

Процентные ставки по вкладам сейчас очень высокие - Банк России публикует информацию о 17,11%, но что если вместо традиционных банковских депозитов использовать облигации для сбережения и получения дополнительного пассивного дохода от этого актива?

Какие у облигаций есть особенности?

📍 Покупать облигации всегда выгоднее, когда ключевая ставка высокая (сейчас 18%). В таких случаях рыночная цена облигаций будет ниже, а доходность к погашению - больше.

📍 При покупке облигаций доходность фиксирует на всё время владения облигациями до их погашения.

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

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

За эти годы скрипт регулярно менялся. Сейчас представляю его обновленную версию.

Ищём куда пристроить рубли‭💸
Total votes 26: ↑21 and ↓5+20
Comments161

Как избежать проблем с производительностью S3 в своём приложении

Level of difficultyEasy
Reading time12 min
Views4.3K

За время работы с объектными хранилищами я встречал немало «подводных рифов» на пути к быстрому и эффективному хранению.

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

Читать далее
Total votes 12: ↑11 and ↓1+11
Comments2

Кэш второго уровня Hibernate для чайников

Level of difficultyEasy
Reading time6 min
Views7.8K

Будучи студентом или стажером, вы наверняка столкнетесь с подобной задачей — включить кэширование сущностей, чтобы сэкономить на обращениях к базе данных. Эта статья ставит перед собой цель упростить эту задачу и подробно показать, как настроить базовый кэш в Hibernate 6.

Читать далее
Total votes 11: ↑10 and ↓1+14
Comments9

Information

Rating
4,900-th
Registered
Activity

Specialization

Backend Developer
Java
Kotlin
Python