Pull to refresh
123
0
Иван Вахрушев @IvanVakhrushev

Java Developer, Open Source Enthusiast

Send message

Внутренний мир: Java NIO

Level of difficulty Medium
Reading time 15 min
Views 6.4K

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

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

Неблокируемый ввод/вывод был реализован в пакете java.nio Java SE 1.4. К сожалению, в ежедневной практике нечасто приходится иметь дело с низкоуровневым I/O, и намного чаще при необходимости используются стримы из java.io. В этой статье будет описано содержание Java NIO, несколько примеров и принцип работы неблокируемого I/O.

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

Что нового в планировщике / оптимизаторе запросов Postgres 16

Level of difficulty Medium
Reading time 18 min
Views 6.3K

PostgreSQL 16 вносит немало улучшений в планировщик запросов и позволяет выполнять многие SQL-запросы быстрее, чем в предыдущих версиях PostgreSQL.

Если вы посмотрите на PG16 release notes, то увидите некоторые из этих улучшений. Но из-за объема изменений, вносимых в каждом выпуске PostgreSQL, невозможно предоставить достаточно подробную информацию о каждом изменении.

В этом посте вы получите глубокое представление о 10 улучшениях, внесенных в планировщик запросов PostgreSQL 16. Для каждого из улучшений будет сравнения выходных данных планировщика PG15 и PG16, а также примеры того, что изменилось, в виде автономного теста, который вы можете попробовать сами.

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

Как прогнозировать время выполнения задач

Level of difficulty Hard
Reading time 20 min
Views 30K

Привет! Меня зовут Павел Ахметчанов, я руководитель направления улучшения процессов разработки. В статье расскажу про часто используемые методики оценок задач и есть ли в них ошибки. Посмотрим, как правильно ставить вопросы при оценке. Узнаем, что собой представляет время решения задач, а это далеко не очевидная вещь. Попробуем изменить свое мышление и получим рецепт для определения времени решения задач. 

Если спросить любого начинающего исследователя этой темы «А зачем нам оценка?», он скажет, что постоянно задают вопрос «Когда вы выполните эту задачу?», на который и надо ответить с помощью этой оценки. А что, если сам вопрос задан неверно?

Читать далее
Total votes 70: ↑68 and ↓2 +66
Comments 57

Где джуну оттачивать навыки программирования: 6 бесплатных ресурсов

Reading time 3 min
Views 56K

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

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

Как работает сеть в контейнерах: Docker Bridge с нуля

Level of difficulty Medium
Reading time 21 min
Views 32K

В этой статье мы собираемся разобраться со следующими вопросами:

* Как виртуализировать сетевые ресурсы, чтобы контейнеры думали, что у них есть отдельные сетевые среды?

* Как превратить контейнеры в дружелюбных соседей и научить общаться друг с другом?

* Как выйти во внешний мир (например, в Интернет) изнутри контейнера?

* Как связаться с контейнерами, работающими на хосте Linux, из внешнего мира?

* Как реализовать публикацию портов, подобную Docker?

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

Обзор продуктивности разработчиков от McKinsey

Reading time 14 min
Views 2.8K

Не так давно компания McKinsey опубликовала статью, в которой утверждалось, что они могут измерить продуктивность разработчиков. Этот текст вызвал определённый резонанс, но я не видел, чтобы кто-то подробно комментировал содержание. Я решил, что это будет полезно сделать.

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

Читать далее
Total votes 25: ↑21 and ↓4 +17
Comments 3

Как получить гражданство в Германии?

Level of difficulty Medium
Reading time 5 min
Views 3.8K

Сейчас проходят финальные слушания по принятому закону, который позволит получить гражданство за 5 лет или в особых случаях 3 года. Раньше это было 8 лет.

Дальше в статье идет детальный разбор закона и его 4-ех основных требований с ссылками на статьи и цитаты.

Читать далее
Total votes 20: ↑14 and ↓6 +8
Comments 8

Где бесплатно учить Java в 2024 году

Level of difficulty Easy
Reading time 6 min
Views 28K

В 2024 году изучение Java остается одним из актуальных направлений для тех, кто стремится стать профессиональным разработчиком.

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

 Изучения Java в 2024 году остается актуальным по нескольким причинам:

1. Популярность: Java является одним из самых популярных языков программирования в мире и сохранит свою популярность и в 2024 году. Множество компаний и организаций используют Java для разработки приложений и веб-сервисов, поэтому знание этого языка будет востребовано.

2. Карьерные возможности: Знание Java открывает широкий спектр карьерных возможностей. Работа с Java может предоставить вам возможность работать в таких областях, как разработка мобильных приложений, веб-разработка, разработка игр, аналитика данных и многое другое.

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

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

Читать
Total votes 13: ↑10 and ↓3 +7
Comments 8

10 самых распространенных проблем при линтинге Dockerfile'ов

Level of difficulty Easy
Reading time 8 min
Views 11K

Весной 2023 года разработчики Depot добавили в свой сервис возможность проверять Dockerfile'ы при каждой сборке.

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

Читать далее
Total votes 36: ↑35 and ↓1 +34
Comments 4

Как в СУБД реализовать администратора без прав доступа к данным

Level of difficulty Medium
Reading time 9 min
Views 6.9K

В СУБД-строении есть не новая, но не теряющая актуальности задача. Сформулировать её можно примерно так: как убрать возможность суперпользователя взаимодействовать с данными, но оставить ему все возможности по управлению СУБД? Эта функция затребована не только большими компаниями с жёсткими требованиями к информационной безопасности, но и крайне нужна всем, кто попадает под различного вида государственные регуляции, вроде приказа ФСТЭК №64 или страшного GDPR.

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

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

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

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

Level of difficulty Hard
Reading time 20 min
Views 19K

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

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

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

JWT-аутентификация при помощи Spring Boot 3 и Spring Security 6

Level of difficulty Medium
Reading time 15 min
Views 28K

Переход от базовых приложений к более сложным требует использования Spring Security для обеспечения безопасности. Новая версия, Spring Security 6, изменяет некоторые базовые реализации, а русскоязычных материалов на эту тему очень мало. В этой статье мы рассмотрим JWT-аутентификацию и авторизацию с помощью Spring Boot 3 и Spring Security 6, чтобы помочь начинающем разработчикам разобраться и начать пользоваться базовым функционалом этой библиотеки. Цель данной статьи - показать, как использовать JWT-аутентификацию с API-интерфейсами.

Читать далее
Total votes 16: ↑13 and ↓3 +10
Comments 10

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

Level of difficulty Easy
Reading time 7 min
Views 46K

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

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

Читать далее
Total votes 185: ↑184 and ↓1 +183
Comments 13

Статья 214 (b) — черная метка для временных релокантов в США

Reading time 12 min
Views 9.9K

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

В сети достаточно материалов про визы H-1B, L-1, О-1, F-1, B-1, специальных программах для “технических специалистов”, однако большинство из них дают поверхностную общую информацию и мало применимы на практике. В этом посте я предлагаю обзор самой “страшной” и широко используемой статьи Акта об иммиграции и национальности — 214(b).  Такое основание признаётся юристами наиболее гибким инструментом для отказов в неиммиграционных визах (рабочих, студенческих), а за её стандартной формулировкой может скрываться широкий спектр неочевидных и “коварных” причин.  К сожалению, я не юрист, а системный аналитик, поэтому в подготовке поста мне помог Мэтью Морлей - человек и пароход, американский адвокат, работающий в Москве, доктор юридических наук (JD) в Массачусетской Школе Права, специалист, на которого ссылается Reuters, член Американской коллегии адвокатов (АВА) и Американской ассоциации иммиграционных адвокатов (AILA).

Читать далее
Total votes 15: ↑11 and ↓4 +7
Comments 20

Интеграция Keycloak в приложение Spring Boot 3 с использованием протокола OAuth2.0

Level of difficulty Medium
Reading time 27 min
Views 11K

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

В данной статье мы рассмотрим процесс интеграции Keycloak в наше приложение Spring Boot 3 в качестве сервера авторизации с использованием протокола OAuth2. Обсудим смысл OAuth2, его механизм работы и сравним его с другими протоколами. Кроме того, мы настроим Keycloak с использованием Docker Compose, воспользовавшись PostgreSQL в качестве базы данных для Keycloak. Затем мы интегрируем Keycloak с нашим приложением Spring Boot 3, используя протокол OAuth2. Также мы подключим Keycloak Admin Client и, наконец, проверим функциональность всей системы.

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

Как перестать забывать про индексы и начать проверять execution plan в тестах

Reading time 9 min
Views 12K
кдпв

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

Обычный день, обычный релиз: все задачи вдоль и поперек проверены нашим QA-инженером, поэтому со спокойствием священной коровы «закатываем» на stage. Приложение ведет себя хорошо, в логах — тишина. Принимаем решение делать switch (stage <-> prod). Переключаем, смотрим на приборы…

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

Проходит еще пару минут, первая жалоба из первой линии: у клиентов очень долго загружаются данные, приложение тормозит, долго отвечает и т.д. Начинаем беспокоиться… смотрим логи, ищем возможные причины.
Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Comments 29

Курс «PostgreSQL для начинающих»: #1 — Основы SQL

Level of difficulty Easy
Reading time 13 min
Views 42K

Этим постом я запускаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".

В программе: рассказ об основах SQL, возможностях простых и сложных SELECT, анализ производительности запросов, разбор [не]эффективного применения индексов и особенностей работы транзакций и блокировок в этой СУБД.

Курс не претендует на лавры "войти в айти", поэтому подразумевает наличие у слушателя опыта программирования или работы с другими СУБД, и, главное, желания самостоятельно изучать тему работы с PostgreSQL глубже.

Для тех, кому комфортнее смотреть и слушать, а не читать - доступна видеозапись.

Читать далее
Total votes 35: ↑34 and ↓1 +33
Comments 30

Компоновка аннотаций в Spring

Reading time 6 min
Views 8.3K

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

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

Урезание зарплат в Авито в Армении

Level of difficulty Easy
Reading time 2 min
Views 71K

1 августа компания Авито поставила оформленных в Армении сотрудников перед выбором: либо понижение зарплаты на 30-40%, либо увольнение с компенсацией за 1 месяц работы. Далее история одного из сотрудников.

Читать далее
Total votes 241: ↑171 and ↓70 +101
Comments 637

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

Level of difficulty Easy
Reading time 8 min
Views 2.2K

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

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

Information

Rating
Does not participate
Location
Yerevan, Yerevan, Армения
Works in
Date of birth
Registered
Activity

Specialization

Specialist
Lead
Java
PostgreSQL