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

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

Наконец, дочитала 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
Всем привет!

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

В одном курсе не понравился формат, что совсем нет никаких текстовых материалов. В пятницу была встреча с преподавателем и менеджером второго курса.

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

На втором курсе очень плотное расписание и я пока решила не идти на него тоже. Решила пройти курсы, которые у меня есть с udemy, старый курс от Алишева ещё есть, и сейчас идёт классная серия видео у канала Уголок сельского джависта.

Там и реактивное программирование, и Aouth2 security, и подключение kubernetes. В принципе из-за этих тем и хотела идти на сеньорский курс, пока не увидела в программе, что из безопасности они могут предложить только базовую авторизацию и с помощью jwt.
👍6💯2
Всем привет!

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

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

Другой человек сказал мне, что смысл ещё в том, что если мы пообещаем сделать что-то только перед самими собой, это очень легко нарушить. Ведь одно дело, ты обещаешь это перед многомиллионной публикой из 5 человек (именно столько у меня было подписчиков первые несколько месяцев), а другое дело только одному человеку - себе.

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

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

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

А сегодня я начала бесплатный интенсив. Там сразу первое задание применить аспекты, подключить кафку и базу данных. Но хотя бы не к понедельнику 😁
👍7👏4😁4
Всем привет!

В последнее время у меня появилось 2 активности "за компанию") 1 - это интенсив, а 2 - отбор на летнюю школу в Яндекс.

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

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

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

Фишка в том, что на моем домашнем компьютере установлен плагин GigaCode, я его ещё до этого не тестировала, подумала заодно проверю, что это такое. Это проект от Сбера, они же делают gigaChat (похож на chatGPT).

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

Отправила на leetcode, решение прошло. Эксперимента ради открыла задачу, которую совсем не знала, как решать, также скопировала условие в java doc, тут гигакод не сразу мне всё точно дал, но когда дала ему нужный объект на возврат из метода, он тут же предложил решение и оно тоже прошло!

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

Надо будет в следующий раз отключать для тренировки решения задач с leetcode, а потом включать, если совсем застряну и буду в тупике)
🔥11👍3👏2