Тру-Джава
137 subscribers
31 photos
79 links
блог начинающего Java-программиста

Чат: https://t.me/trujavachat
Download Telegram
Всем привет!

Поздравляю всех с Наступающим Новым Годом! 🎄🍾🎉🎊

Желаю всем, кто в поисках, найти любимую работу, кто уже работает, повышения в должности или зарплаты (или и то и то😁), также желаю вам всем крепкого здоровья и исполнения всех желаний!

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

Увидимся в Новом году! 🎊🎉🍾
19🎄2
Всем привет и еще раз всех с Новым Годом!

Есть ли учеба после устройства на работу?

Да, но она меняет свой, привычный для меня, вид. За время обучения в Я.Практикуме, я прошла много курсов со Stepik. Поэтому привычный для меня способ обучения — это начать какой-нибудь курс и идти по нему, изучая что-то новое на относительно поверхностном уровне, редко в курсе есть объяснение Spring Security, например, с приведением примера не базовой авторизации.

Второй привычный способ — это просмотр различных туториалов. Где объяснение чего-либо идет через разного рода “Hello world!” примеров. Прочитала на выходных идею, что для того, чтобы стать старше уровня джуна, нужно углубляться в разные темы, можно по очереди, можно по своим предпочтениям в какую-то конкретную тему.

Как это предлагается делать?

1. С помощью прочитывания технической литературы «от корки до корки».
2. Чтения кода какой-то библиотеки или фреймворка
3. Продолжать вести полезные пет-проекты

На эту тему есть классный пост от техлида, специализирующегося на искусственном интеллекте
👍8
Всем привет!

Как у вас прошли выходные?

У меня очень сумбурно, пока всех родственников навестили, оглянулась, а уже 6 января))

Так что мало чего успела полезного сделать. Хотела хотя бы Spring Security in Action дочитать, но тоже не вышло, осталось буквально 100 страниц (pdf). Может быть получится на этой неделе. Хочется уже дочитать ее, тем более, что самая сложная часть (OAuth2) для понимания (для меня) закончилась.

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

Нашла RustDesk, если кому-то нужно и вдруг не слышал, то это аналог TeamViewer. Есть небольшая задержка в отклике, но в целом удобно пока. Временное решение, пока не заказала себе монитор.
👍6
Всем привет!

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

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

Вот ссылка на плейлист, в нем 18 видео, поэтому возможно на какие-то паттерны он не записал видео. Но он же к классике, порекомендовал книгу Head First Design Patterns для новичков, потому что и примеры, говорит, запоминающиеся, живые, и код на джава, а в классике на С++ и Smalltalk, и в целом читается легче.
👍6🔥3
Всем привет!

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

Отбор прошла успешно, на следующей неделе уже, наверное, полностью перейду на этот проект.

Своего поделать практически ничего не успела, только немного поэкспериментировала с @Value и инжектиньем списка из application.yaml в Spring.

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

Получилось у меня это правда не за один вечер, потому что сначала делала неправильно.

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

Возможно отвлекусь на решения всяких проблем с многопоточностью, в последнее время интересно стало заниматься странными вещами. В прошлые выходные, например, делала кастомный бин и реализовывала разные BeanPostProcessor и BeanFactoryPostProcessor))
👍8🔥5
Всем привет!

На этой неделе изучаю Elasticsearch. Хочу применить в своем проекте для поиска по закладкам. Изучаю по книжке Elasticsearch in Action, свежайшей от сентября 2023 года, но читаю на английском, перевод есть для другого издания от 2019 года.

В выходные еще попробовала подергать API у GigaChat (AI от Сбера), у них есть бесплатная подписка делать запросы на ограниченное количество символов (токенов) в месяц. Попробовала пока не через код, а постман и не все получилось пока)) Буду пробовать еще, пока не получится)

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

Пока его изучаю, фоном продумываю архитектуру своего проекта, пока всё достаточно нечетко. Надо будет попробовать сделать схему-план проекта для ориентира, а то бывает открываю свой проект и не знаю с чего начать, хотя скелет-заготовку уже сделала)
🔥9
Всем привет!

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

Хотела на выходных устроить совместное решение какой-нибудь задачи с leetcode здесь, но та задача, которая понравилась (про треугольник Паскаля - там красивая картинка в описании 😁), пока осталась мне не особо понятной, захотелось разобраться в теме. Пока в процессе. Может на этих выходных получится.

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

Elasticsearch пока так и не опробовала и своим проектом пока не позанималась. Большой респект всем, кто закончил Я. П. совмещая с работой) После работы очень хочется отдыхать, но хорошо что бывают минуты днем что-то интересное поделать если нет задач (только т-с-с 😁).

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

Тут был один интересный баг, в одном маленьком символе было дело, полтора дня сидела в разных логах искала ошибку, но в конце концов нашла)
👍9🎉21🔥1
Channel photo updated
Всем привет!

Посмотрела на днях классный митап, очень понравились доклады, последний пока не дослушала, но первые три очень классные, третий рекомендую всем, он больше про установки и правильное мышление (mindset).
👍6🔥2
Всем привет!

Наконец, дочитала Spring Security in Action. 🥳 Последние главы по OAuth 2.0 шли очень медленно, после них было немного настройки Keycloak и настройки безопасности в реактивных приложениях. В общих чертах узнала, что такое реактивные приложения и чем отличаются от императивных. В последней главе было про тестирование Spring Security.

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

Также в плюс к этому, до сих пор многие не ушли с Java 11, поэтому используют Spring до 3 версии, а для него весь синтаксис из книги тоже будет актуальным. Поэтому кому интересна тема, рекомендую.
👍7🔥3
Всем привет!

Вчера смотрела интересный вебинар на тему Ethical Hacking. Там рассказывалось про то, кто такие этичные хакеры, как они работают и давались советы, как все делать правильно.

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

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

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

Запись прислали, делюсь.
🔥13
Всем привет!

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

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

Думаю, что хотела бы и дальше развиваться в этой сфере, поэтому если что обращайтесь, буду рада помочь 😉
👏9👍5🔥5
Всем привет!

С прошлого поста, так получилось, что я провела ещё один мок-собес другому коллеге с курса Яндекс.Практикума. Интересно, что это полезно в две стороны (надеюсь не в одну, не только для меня 😅).

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

Поэтому, сегодняшний вопрос звучит так, расскажите вкратце об уровнях кэша в Hibernate? (Статьи на хабре, javarush, sysout)

Всего их три.

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

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

Третий уровень кэша кэширует сам запрос, его результат. Для его настройки также требуется библиотека.
🔥11👍32👏1🆒1
Всем привет!

Всех мужчин и причастных с праздником! 🥳 Всем всего наилучшего 🤗

Я с 14 числа работаю на новом проекте в очень классной команде. У нас проходят очень жесткие код-ревью, даются интересные и местами совсем не простые задачки. Рада, что прошла отбор и думаю, что прокачаю свои навыки здесь до конца проекта.

Как-то писала здесь про динамические запросы с null параметрами и, что они не очень производительные. После этого познакомилась со способами построения динамических запросов через Specification и Criteria API (статья на хабре).

А на днях узнала про еще один интересный способ — ExampleMatcher. Интересен он своей простотой и почему-то показался мне еще и красивым. У него есть ограничения, он не поддерживает сложные условия по типу (поле1 = ? и поле2 = ?) или поле3 = ?, для String поддерживает только "начинается с" / "содержит" / "заканчивается" / regex (соответствует образцу), для остальных типов только полное соответствие. Но поддерживает игнорирование null параметров и прописывается, как стрим.

Пример из документации:

Person person = new Person();                          
person.setFirstname("Dave");

ExampleMatcher matcher = ExampleMatcher.matching()
.withIgnorePaths("lastname")
.withIncludeNullValues()
.withStringMatcher(StringMatcher.ENDING);

Example<Person> example = Example.of(person, matcher);
🔥102👏1
Всем привет!

На этой неделе занималась очень интересной и сложной задачей. К сожалению, подробности рассказать не позволяет NDA.

Скажу только, что эта задача вводила меня в глубокие раздумья, при которых один раз чуть не положила кофе в кашу😁

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

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

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

Ещё хочу поделиться, что меня пригласили на митап студентов из Я.Практикум, который пройдёт онлайн в 18-20 числах марта, где я, как и другие согласившиеся выпускники, поделюсь своим опытом обучения на курсе и поиском работы после него.
🔥13
Всем привет!

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

Поэтому хочу поделиться книжкой про паттерны в контексте Spring. Называется "Spring все паттерны проектирования", автор Динеш Раджпут.

Не знаю как дальше будет, но пока паттерны описываются достаточно кратко, но мне такой стиль больше нравится, нет воды)
👍9👏1
Всем привет!

В среду буду участвовать в митапе со студентами Яндекс.Практикума. Помню, когда мы учились нам тоже давали видео-истории выпускников о том, как они нашли работу после курсов. Также, большой ажиотаж вызывало появление студента в общем чате, который уже нашел работу, его/ее сразу расспрашивали о требованиях к джунам, сложностями, связанными с поиском первого места работы (“сколько всего откликов отправил на HeadHunter?”) и т. п.

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

Последние несколько дней серьезно задумалась пойти на курсы повышающие квалификацию. Выбираю между курсом Java Developer Advanced в Otus и курсом Senior Java developer в HeadBridge. В последнем очень привлекает реактивное программирование с security и практика с kubernetes. Там будет сначала собеседование, определяющее уровень подготовки, которое возможно пройдет на следующей неделе. Тоже поделюсь впечатлениями после него.

Сегодня открыла свои архивы скачанных курсов с udemy, нашла много интересных. Начала сегодня смотреть тоже на тему реактивного программирования с использованием Spring WebFlux. Единственное, что формат мне не очень нравится — несколько десятков коротких видео по 5-10 минут без текстовых материалов. Но решила пока окончательно не выбрала курс, просмотрю имеющиеся из архива у себя.

P.S. Всем новым подписчикам добро пожаловать 🤗
🔥19👍2
Всем привет!

Вчера прошел классный митап со студентами и выпускниками Яндекс.Практикум🔥

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

Спасибо всем, у кого была возможность прийти на митап за поддержку и крутые вопросы!

Моя история в комиксах❤️
🔥24