Pull to refresh
6
0
Send message

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

Level of difficultyHard
Reading time20 min
Views33K

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

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

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

Почему B-деревья быстрые?

Level of difficultyEasy
Reading time7 min
Views50K

B-дерево — это структура, помогающая выполнять поиск в больших объёмах данных. Она была изобретена более сорока лет назад, однако по-прежнему используется в большинстве современных баз данных. Хотя существуют и более новые структуры индексов, например, LSM-деревья, B-дерево пока никто не победил в обработке большинства запросов баз данных.

После прочтения этого поста вы будете знать, как B-дерево упорядочивает данные и выполняет поисковые запросы.

Читать далее
Total votes 151: ↑150 and ↓1+183
Comments13

Оценка тестового покрытия интеграционных тестов с помощью JaCoCo. Инструкция к применению

Level of difficultyEasy
Reading time8 min
Views3.1K

Всем привет! Меня зовут Александр и в hh.ru я занимаюсь решением инфраструктурных (и не только) задач, касающихся автотестирования. В статье я опишу один из подобных кейсов.

Читать далее
Total votes 12: ↑10 and ↓2+8
Comments2

Garbage Collection и JVM

Level of difficultyEasy
Reading time17 min
Views32K

Привет, Хабровчане!

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

Знание того, как работает GC и JVM, необходимо каждому Java-разработчику. Правильное управление ресурсами напрямую влияет на производительность и стабильность приложений.

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

Лучшая фантастика последних трех лет по версии Goodreads

Reading time5 min
Views147K

GoodrGoodreads — пожалуй, главный книжный сайт англоязычного интернета. Недавно он составил список самых популярных фантастических книг за 2020-2023 годы, опираясь на мнение пользователей. К сожалению, на русский язык переведено далеко не все, однако даже те книги, которые уже можно прочитать в переводе, составляют внушительный список. Вот он.

Читать далее
Total votes 50: ↑46 and ↓4+54
Comments186

Все о String.intern()

Reading time4 min
Views121K
Думаю, что многие Java-разработчики знают или хотя бы слышали о методе String.intern(). Но далеко не каждый использует его в своих приложениях или представляет в каких случаях он полезен и полезен ли вообще. Так было и со мной до тех пор пока я не столкнулся с этим методом в одном из проектов. В тот момент я захотел узнать смысл и особенности его использования и набрел на одну весьма интересную статью ведущего разработчика Yahoo! по имени Ethan Nicholas, переводом которой теперь хочу поделиться с той частью Хабра-сообщества, которая не безразлична к языку Java.

Тем, кто знает об этом методе лишь понаслышке, добро пожаловать под кат.
Читать дальше →
Total votes 56: ↑49 and ↓7+42
Comments33

Poetry: from zero to hero

Level of difficultyEasy
Reading time13 min
Views39K

Привет, Хабр! Меня зовут Тимур, я тружусь ML-инженером в одной сибирской IT-компании.

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

В качестве бонусов - готовая GitLab CI джоба для сборки и публикации пакетов, а также шаблон Dockerfile для multi-stage сборки образов в проектах с использованием Poetry.

Добро пожаловать под кат!

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

Как бесплатно запустить DAST на базе OWASP ZAP Automation Framework на своем проекте

Level of difficultyMedium
Reading time5 min
Views3K

Привет, меня зовут Олег Рыбченко, я работаю QA инженером в hh.ru. Количество атак на IT-инфраструктуру сегодня растет в геометрической прогрессии — об этом свидетельствуют многочисленные упоминания во всевозможных СМИ, так что не будем в очередной раз приводить графики и статистику. Разумеется, в таких условиях все больше компаний хотят позаботиться о безопасности своих сайтов и начинают проявлять интерес к современным автоматизированным инструментам по обнаружению уязвимостей.

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

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

Принцип подстановки Барбары Лисков

Level of difficultyMedium
Reading time13 min
Views20K

Принципы проектирования SOLID были представлены Робертом Мартином в его книге “Design Principles and Design Patterns” в 2000 году. Эти принципы помогают нам создавать более гибкое программное обеспечение, которое легко понимать и обслуживать. 

В этой статье мы обсудим “Принцип подстановки Барбары Лискофф”, который соответствует букве L в акрониме SOLID.

Читать далее
Total votes 9: ↑7 and ↓2+6
Comments11

Kafka за 20 минут. Ментальная модель и как с ней работать

Level of difficultyMedium
Reading time19 min
Views117K

Привет! Меня зовут Глеб Гончаров, и я руковожу подгруппой ИТ-инфраструктуры в СберМаркете. В работе мы широко используем Kafka как шину данных для микросервисов и не раз убедились на практике, что к инструменту важно подобрать правильный подход. Об этом сегодня и поговорим в двух частях — сначала обсудим основы, а в конце статьи будет ссылка на практические задания.

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

Как работает E2E-тестирование в hh.ru

Reading time6 min
Views2.9K

Всем привет! Меня зовут Алексей, в hh.ru я занимаюсь автотестами и их инфраструктурой. 

hh.ru — довольно большой продукт: 150+ микросервисов и 50 команд разработки. Большинство команд пишут E2E-тесты, и на текущий момент написано уже около 1800 тестовых классов, в которых примерно 8000 аннотаций @Test. Как со всем этим жить и как вообще устроено E2E-тестирование в hh.ru разберемся в сегодняшней статье. Поехали! 

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

Миф о комбинаторике в тестировании

Reading time8 min
Views7.8K

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

Развенчать!
Total votes 14: ↑14 and ↓0+14
Comments2

Как реализовать end-to-end-тестирование telegram-бота

Level of difficultyMedium
Reading time11 min
Views23K

Каждый, кто когда-либо писал telegram-ботов, задавался вопросом: «Как их тестировать?» Сложно найти однозначный ответ. Например, при написании тестов для веб-приложений и API можно воспользоваться тестовым клиентом DRF или FastAPI: просто пишешь запрос и делаешь assert на полученный ответ. Мне захотелось получить подобный функционал и для тестирования telegram-бота.

Привет, Хабр. Я Михаил Выборный, python-разработчик, backend-developer в облачном провайдере beeline cloud. В этой статье хочу поделиться опытом написания автоматизированных end-to-end-тестов без эмуляции Telegram Bot API, но с использованием тестовых аккаунтов. Мы зайдем в изолированное тестовое пространство Telegram, создадим тестового бота, подготовим фикстуру для запуска нашего приложения и напишем авторизацию для тестовых клиентов. Я буду пользоваться Python Telegram Bot, Pytest, Anyio и другими инструментами, подробности под катом.

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

Чат-бот для mattermost

Reading time12 min
Views13K

Привет! В этой статье расскажем, как мы в hh.ru сделали удобное общение с корпоративной wiki в привычном формате коммуникации — написали чат-бота для поиска по внутренней базе знаний. Для нас тема оказалась довольно актуальной, может вам тоже пригодится.

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

«Скачал плагин и опингвинился». Полезные инструменты для работы с IDE

Reading time4 min
Views13K

Эффективность разработки зависит не только от скиллов программиста, но и от рабочего окружения. Так, чтобы оптимизировать процесс, можно использовать специальные плагины или расширения IDE. В тексте собрали самые полезные, по мнению специалистов Selectel, инструменты. Сохраняйте подборку в закладки и делитесь своими вариантами в комментариях.
Читать дальше →
Total votes 42: ↑39 and ↓3+44
Comments6

Браузерные инструменты: как и зачем их приручать

Reading time15 min
Views18K

Сложно найти тестировщика, который не знал бы о DevTools, но еще сложнее найти человека, который знает о них всё. Помимо знакомой всем базовой функциональности, есть много полезных и удобных фич. А если не ограничиваться Хромом, то их количество запросто можно удвоить.

Осенью на нашей конференции по тестированию Heisenbug Татьяна Дроздова рассказала о возможностях DevTools в Chrome, Firefox и Safari, и доклад очень понравился участникам. Сейчас мы готовим следующий Heisenbug, где Татьяна выступит с новым докладом о браузерных расширениях — а в ожидании этой конференции сделали для Хабра текстовую версию доклада с предыдущей. Далее текст идёт от лица Татьяны.

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

Граф стека вызовов — новая функция для GitHub, GitLab, JetBrains IDE

Level of difficultyEasy
Reading time2 min
Views4.9K

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

Читать далее
Total votes 4: ↑3 and ↓1+2
Comments8

Java для сисадминов

Reading time17 min
Views14K

Эта статья написана в основном для системных администраторов Java-приложений (DevOps-инженеров, SRE и других производных специализаций). Вероятнее всего, Java-разработчики уже все это прекрасно знают. Хотя Junior Java-разработчикам эта информация может помочь систематизировать знания.

Статья не претендует на полноту или полную непогрешимость. Во-первых, нельзя объять необъятное. Во-вторых, все меняется и проверенные истины могут перестать быть истинами в новых версиях. В сети существует множество статей об  устройствах Java, однако в этой статье в блоге ЛАНИТ я стремился сделать выжимку основных моментов, необходимых для администраторов Java-приложений. Для более глубокого погружения в тот или иной вопрос потребуется обратиться к другим источникам.

Читать далее
Total votes 99: ↑98 and ↓1+120
Comments10

Information

Rating
4,205-th
Registered
Activity