Стать джуном
73 subscribers
4 photos
1 video
4 links
Канал про мое обучение и становление Junior Java Dev (Backend)

А это я: @velz01
Download Telegram
12.02.2025
Начал изучать Junit (тестирование программ)

Продуктивный день, но не для программирования. Единственное что успел изучить так это Assertions. По сути они просто нужны для сравнения ожидаемого результата программы с актуальным при помощи огромного количества методов, но дмдев говорит все равно маловато как то, подключим дальше больше.
Еще странно, иногда пишут, что делали 3 проект месяц+, непонятная ситуация конечно, возможно конечно они просто с 0 знаний начали его делать🤨 ну окээй. Ну и в общем за сегодня ничего интересного.

Успел напрогаться час
🥰2💯2🤝1
13.02.2025
Junit 5

Узнал что есть аннотации которые дают возможность сделать действия перед/после каждого теста, всех тестов, ну для инициализации различных значений, или быть может что то подчистить. Еще интересная тема TDD, которая по сути говорит о том, что сначала мы пишем тесты, а потом код под них, так даже мыслим иначе при написании программы, уж в будущем думаю пригодится это. Плюс дмдев рассказал про доп. возможности для тестирования (assertJ, Hamcrest) ну из них явно удобнее пользоватся ассертJ.
Сонный денёк сегодня.🥱😴

Программировал 2-2.5 часа
🤩32🦄2
🗓15.02.2025

Junit 5

Прошел extension model сам он по себе из нескольких компонентов, в общем благодаря этой штуке, можно управлять жизненным циклом, описать действия перед\после блоков и тестов (ну описал не очень но там полезная фича), также появляется замечательная штука такая DI (внедрение зависимостей) ии можно внедрять зависимости как в методах, так и в полях, ну и остальное не так уже интересно. Посмотрел также один видос про моки, пока прям не успел уяснить все, но я так понимаю, что это замена реальных объектов (некая имитация), чтобы упростить себе жизнь при тестировании. Скоро подберусь к хиберу.

Не могу не вставить эстетик программирование вместе с дмдев.🤩

👨‍💻Программировал 2-3 часа, но что то непродуктивно снова😠
3👍3🔥2
🗓16.02.2025

Junit 5 (завершен). Начал Hibernate.

Прошел моки, спаи и даже есть то, что понял. Например моки:
    @Test
void shouldDeleteExistedUser() {
userService.add(NAME);
Mockito.when(userDao.delete(NAME.getId())).thenReturn(true);
boolean delete = userService.delete(1);
assertThat(delete).isTrue();
}

Например, здесь на 2 строке мы пользуемся фейк объектом (если я правильно понимаю) и указываем если в дао метод delete попадет id который указан как NAME.getId() то тогда дао возвратит сразу же true и никакой логики из настоящего класса не будет, это и круто т.к проверяем конкретный класс, тут это сервис (уже не зависящий от логики dao) на его работоспособность.
Также есть спаи (spy), но его отличие в том что он уже отчасти, возможно полностью работает как реальный объект, что тоже иногда нужно при тестировании.
В общем курс имба, мне понравилось. 👍
А по hibernate прошел только введение.

👨‍💻Программировал 2 часа.
👍32💔1
🗓17.02.2025 и 18.02.2025

Изучал Hibernate

Как мне подсказали, для 4 проекта будет достаточно посмотреть блок про Hibernate от Заура Трегулова. И разница действительно есть, даже в том, что dmdev я бы смотрел минимум 2 недели. Особенно учитывая, что он в сравнении с Трегуловым настолько углубляется и начинает про хибер рассказывать, что там это реально лишнее.
Смотря заура, я будто бы ощущаю себя мега профи во всем программировании, он и рассказывает по несколько раз так еще и простые вещи. Посмотрел последние видео про отношения в таблицах на 1.5-2х, нормально зашло.🔥

Так вот для тех кто не знает что такое Hibernate такой фреймворк, который на самом деле упрощает жизнь программисту, и вместо того чтобы вручную писать запросы к базам данных, он позволяет это сделать одной командой типа save, delete. Ну и главная фишка перевод данных из реляционного представления в объект (строка из базы данных -> объект в джаве)
try (SessionFactory factory = new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(Employee.class)
.buildSessionFactory();
Session session = factory.getCurrentSession()) {

session.beginTransaction();
Employee employee = session.get(Employee.class, 4);
employee.setName("Igor");
session.save(employee);

session.getTransaction().commit();
}

Тут по сути получение сессии, открытие транзакции, и все, пишем запросы и закрываем транзакцию.🥱

Программировал за эти дни 4-4.5 часа
3👍3🔥2
Всем вошедшим привет👋 , хочу рассказать как я учусь вообще и может вас замотивирую учить вполне хороший язык программирования -> java

Начну с роадмапа Сергея Жукова, который реально помогает закрепить все изученное.
В нем есть 7 петпроектов, начиная с java core, ООП до Spring + важные технологии для джуна. Плюс так понимаю что там есть и для python.
https://zhukovsd.github.io/java-backend-learning-course/
Как он говорит сделав 6 проект а это у нас уже использование spring, hibernate и mysql, да и получается, что можно искать работу. В общем, имба.

Но откуда брать материалы тогда, чтобы учить технологии для петпроектов, ведь все же платно? Но уже нет, давно люди уже всё слили, и вот например тут все курсы от dmdev в самом вверху да и плюс там еще много материалов.🤩
https://t.me/nickelodeona_ch
8🔥5💩4
🗓20.02.2025

Решил наконец таки прочитать ревью на свой устрашающий проект на сервлетах. Текста и соответственно ошибок куча, много из-за того, что просто уже в конце забил и побыстрее бы закончить :) Где то пользовался оберткой над примитивами за зря, а где то уже на уровне запросов к БД наложал (почти). 😔
Записал для себя что нужно будет не забыть при написании 4 проекта.

В общем, думаю надо начать с того, что у меня есть пробелы в знаниях по solid и попробую почитать книгу "Чистый код", там должно быть то, что мне нужно знать. Еще думаю лекцию по MVC глянуть, будто бы тоже есть что я могу не знать (так и есть) Также, когда уже перейду к следующему проекту, то буду уже его рефакторить, смотреть чужой код, кто да как сделал и изучать новые для себя фичи, все как надо постараюсь сделать, буду исправляться.

👨‍💻 Почти программировал сегодня 2 часа
6👍2🔥1
🗓21.02.2025 и 22.02.2025

Всем привет 🙋.
Читал эти дни книжку чистый код. И она реально неплоха. Прочитал главу про имена, но там +- вода типа выбирайте имена не используя сленг, остроумие и все подобное. 💧

Но вот глава про функции уже оказалась полезной. Только гляньте как он капсом пишет, что должны делать функции. Мне нравится как он на примерах объясняет как можно сокращать функции, как можно оставить функцию на одном уровне абстракции, то есть например она не должна получать какую-то страницу и одновременно с этим обрабатывать данные этой страницы (обработку вынесем в отдельный метод).
Из книги:
Короче говоря, программист, пишущий чистый код, — это художник, который проводит пустой экран через серию преобразований, пока он не превратится в элегантно запрограммированную систему.

Также глянул лекцию про MVC, интересно.

👨‍💻 Времени в айти: +3.5 часа
32💘2
🗓24.02.2025

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

1) Узнал, что комментарии - зло и писать их лучше не нужно, надо акцентироваться на рефакторинге кода, чтобы комментарии казались излишними.
2) Еще например, что вызывающие функции должны находится выше вызываемых.
3) Пользоваться чаще нужно непроверяемыми исключениями т.к проверяемые нарушают принцип открытости\закрытости. Разрабы, которые хотели добавить новую фичу, отличающуюся от остальных яп 😥

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

👨‍💻 Времени в айти: +2 часа
8❤‍🔥2💔1
Всем привет. 👋
Хочу рассказать, благодаря кому я вообще вдохновился создать этот канал.😆
Это Даниял и он тоже как и я, но еще лучше, рассказывает о том, что изучает и как учится.

Каждый раз, когда я к нему обращался он всегда был готов помочь, он мега добрый человек.
Слежу за его каналом, за каждым постом, тут он даже своим конспектом по докер делится со всеми. А еще тут крутые мемчики))
Поддержите его https://t.me/+XeK18lwgW-45ZWY6 🤩
5🔥3🤡1
🗓25.02.2025

Всем привет 🙋.
По книге еще чуть чуть осталось.

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

Вроде это так.🧐

👨‍💻 Времени в айти: +1.5 часа
5👍1🤡1
🗓28.02.2025

Всем привет 🙋.
Дочитал книжку до 12 главы (Прочитал все что нужно было)

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

Начинаю потихоньку следующий проект про теннисные матчи из роадмапа.


👨‍💻 Времени в айти: +1.5 часа
6🔥2
🗓01.03.2025 и 02.03.2025

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

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

Это я на фотке, только с этими проектами.

Кому станет интересно вот что я делаю: https://zhukovsd.github.io/java-backend-learning-course/projects/tennis-scoreboard/

🧑‍💻Примерно прогал часа 4-5
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥3
Всем привет. 👋
Давненько не было постов, эти дни я старался заниматься, но не всегда получалось найти более часа времени. Поэтому думаю лучше писать посты, когда я уже что-то +- значимое сделал.

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

Из интересного: постоянно перестает работать фронт для проекта, не пойму почему, один день работает, другой уже нет.🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥1
🗓 День какой-то там.

Итак. Всем привет 👋.

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

Не знай, в итоге нормально я пишу проект или нет, потом ревью мне отправят и там жесть будет как всегда.☹️

Кто смотрит за моим каналом, напишите как и что вы изучаете? Интересно узнать👨‍💻

Скоро обязательно заработает фронт часть!
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Стать джуном pinned «Ну что ж, создал канал, где я буду писать о своем обучении, буду записывать сюда каждый день что изучил или не изучил. Как и написано везде, собираюсь стать Junior Java Developer и писать себе спокойно бэкенд на Spring. Джаву выбрал т.к только по ней приходит…»
Стать джуном pinned «Всем вошедшим привет👋 , хочу рассказать как я учусь вообще и может вас замотивирую учить вполне хороший язык программирования -> java Начну с роадмапа Сергея Жукова, который реально помогает закрепить все изученное. В нем есть 7 петпроектов, начиная с java…»
Кажется это конец, да? Ну с проектом уж точно.🥳

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

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

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

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

Вот проект.

И вот деплой на котором можно глянуть, что получилось.
Please open Telegram to view this post
VIEW IN TELEGRAM
5👏2🔥1
Ну что ж. Всем привет.👋

После проекта начал изучать Spring.👩‍💻
Так воот, что успел пока узнать по курсу Алишева, так это то, что у спринга есть Инверсия управления (IOC) которая сама создает бины (а это по сути обычные java объекты) и управляет ими. Внутри IOC есть внедрение зависимостей (DI).
Что имеем в итоге? Нам не нужно создать вручную объекты, их куда то передавать в параметры других классов. Всё это делает спринг.

Также немного посмотрел про spring MVC, благодаря нему можно в разы проще писать сервлеты контроллеры, которые уже будут принимать и обрабатывать get и post запросы (там вообще они пишутся в пару строк).🤠

В общем то осталось глянуть немного, передача данных на представление и hibernate в spring. Ну, на самом деле этот курс Алишева смотрел, но это было давно (6-7 месяцев назад), что еле что-то помнится, но все же как-то проще будто.

Дальше уже буду начинать 5 проект, хотя там еще какие то инструменты миграций нужны будут, ну думаю там недолго.😎
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥1
Всем привет. 👋
Вроде как закончил по теории для 5 проекта.

Посмотрел про hibernate в spring, там просто конфигурацию отдельным бином писать нужно, ничего такого.

Также посмотрел про сессии и куки у Алишева, это по сути хранение каких либо данных о пользователе, например в кукис (у клиента) можно хранить какие нибудь настройки приложения, в сессии (на стороне сервера) корзину, в общем что-то такое. Куки часто используются для идентификации пользователей, сверяем id из куки и id из сессии, и далее уже понимаем какая информация какому пользователю принадлежит.😼

Глянул про Spring REST, просто обращаемся к api и получаем нужные данные,например json и парсим как нам надо, более и нечего сказать.😶

Еще интересная штука о которой узнал это Liquebase - инструмент миграций. Благодаря нему можно удобно изменять бд, то есть это как git, но для бд, можно возвращаться с версии на версию. Но вот только приходится так много вручную писать, это не очень.👎

Изучал за это время мало, т.к что-то последнее время хочется отдохнуть :)😇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥21