JavaRush/Java блог/Java-проекты/Пишем реальный проект для портфолио - "Java-проект от А д...
Roman Beekeeper
35 уровень

Пишем реальный проект для портфолио - "Java-проект от А до Я"

Статья из группы Java-проекты
участников
Всем привет, будущие Senior Software Engineers! Последние несколько месяцев я писал несложные статьи, в которых описывал важные части разработки. Сегодня расскажу о своей идее! Я хочу помочь вам получить свою первую работу. Что для этого нужно? Для этого нужно получить опыт. Разобраться, из чего состоят эти самые проекты, на которых работают инженеры и продвигают мир информационных технологий вперед.

Все материалы серии:

“Java-проект от А до Я”: пишем реальный проект для портфолио - 1Как это сделать? Нужно что-то написать. Поэтому в рамках этой серии материалов мы шаг за шагом напишем своего телеграм-бота (подробности ниже). А заодно — разберемся со стеком технологий, которые необходимы даже начинающему Java-разработчику.

Цель

Написать проект, который будет совмещать и работу с базами данных, и создание необходимой нам бизнес-логики, и настройку работы по развертыванию проекта, и его тестированию. Что будем писать? Если уже и писать, то писать нужно что-то действительно полезное, чтобы и интерес к работе был и результатом кто-то смог бы воспользоваться. Исходя из этих данных, писать будет телеграм-бота, который будет работать с сайтом JavaRush. Будет это полезным? Несомненно! Благодаря тому, что телеграм-боты пишутся не так уж сложно, можно получить достаточно быстро рабочий проект, который сможет быть полезным.

Сроки разработки

Статьи будут выходить раз в неделю, так что времени будет достаточно для освоения / повторения / написания вопросов, если что будет непонятно. Первые статьи будут тем теоретическим фундаментом, который будем использовать в проекте. А далее — только практика.

MVP (минимально жизнеспособный продукт)

“Java-проект от А до Я”: пишем реальный проект для портфолио - 2Что такое MVP? Термин, как водится, не наш, но можно найти сносное объяснение на вики. Цитируем: MVP — это продукт, обладающий минимальными, но достаточными для удовлетворения первых потребностей функциями. Основная задача — получение обратной связи для формирования гипотез дальнейшего развития продукта. Для нас это описание подходит максимально. Быстрое описание всего функционала: Я как пользователь Telegram хочу иметь возможность подписаться на новые статьи в группах и получать уведомления о выходе новых. Я люблю читать группу История Успеха, она меня мотивирует на то, чтобы продолжать учиться, познавать что-то новое. Я ленивый и не хочу каждый раз заходить и обновлять страницу. Поэтому Я, как программист, хочу облегчить свою жизнь и написать программу, которая присылала бы мне в Телеграме сообщение, что вышла новая статья. Дальше больше: это же не единственная группа, которую я отслеживаю. Я из Харькова, поэтому мне интересно читать статьи, которые там публикуют. Меня как разработчика этого продукта будет очень интересовать пользуется ли кто-то моей работой, поэтому добавим функциональность для админов, чтобы можно было смотреть статистику работы телеграмм-бота. Можно ли это сделать? Конечно! Как? Вот это я и покажу цикле статей.

Кодовое название

У каждого крутого проекта должно быть кодовое название. Наш не станет исключением, поэтому на данный момент будет такой: JRTB (JavaRush Telegram Bot). Здесь и далее он будет называться так.

Какие темы покроем

“Java-проект от А до Я”: пишем реальный проект для портфолио - 3

База данных

Нужно сразу понять, что держать состояние (данные и информацию) в приложении нельзя. Нужно данные хранить в базе данных. Так как информации по ней нет в обучении (насколько я помню :D), я постараюсь восполнить пробелы в знаниях, которые нам будут нужны. Я постараюсь сделать схему базы данных максимально простой, чтобы не было ступора. В эту часть будет входить:
  1. Теория работы с SQL на основе MySQL.
  2. Инструмент работы с MySQL — MySQL Workbench.
  3. Версионирование баз данных. Flyway и liquibase.
  4. Создание схемы базы данных.
  5. Создание рисунка схемы базы данных.

Git

Статьи по этой теме уже есть. Разумеется, ничего не получится без системы контроля версий. Для начала работы над JRTB нужно разобраться с гитом. Можно самостоятельно, а можно почитать мои статьи на эту тему:Если будет желание, можно еще почитать о стратегиях ветвления, но здесь это не критично и можно пропустить.

Maven

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

Docker

Для того, чтобы наша жизнь была проще и легче, а процесс развертывания был максимально простым, будем использовать докер. Для этого поговорим о том, что такое докер, какие есть полезные команды. Сразу хочу сказать, что я пользуюсь докером на уровне пользователя и могу чего-то не знать не уметь)) Так что если кто-то предложит, как сделать работу с докером лучше/проще, я буду только рад этому. В эту часть будет входить:
  1. Теория и практика по Docker’у.
  2. Создание резервной копии / восстановление данных через докер.
  3. Настройка нашего проекта, чтобы он крутился в докере.

Bash скрипты

Для автоматизации работы, иногда полезно написать один/два скрипта. Bash скрипты — это скрипты, которые понимают все разработчики в том или иной степени, потому что по сути это работа с командной строкой в линуксе, просто сохраненная в отдельном файле.

Создание приложения

Здесь будет весь драйв. На основе предыдущих знаний построим Spring Boot приложение, которое будет содержать объект телеграм-бота. Что здесь будем делать?
  1. Создание полного описания функциональности, которая должна быть.
  2. Краткое описание того, что такое телеграм-бот.
  3. Создание Spring Boot приложения.
  4. Описание работы с Lombok.
  5. Описание работы с UniRest.
  6. Внедрение паттерна Command (команда) + работа с созданием собственной аннотации для команд администратора.
  7. Создание клиента для работы с JavaRush запросами (такие как список групп, список статей в группе), используя UniRest.
  8. Тестирование. Напишем все возможные тесты, чтобы покрыть наш функционал.
  9. Настройка системы для проверки качества кода и автоматической сборки на GitHub.
  10. Подключение базы данных вместе с версионированием базы данных.
Все эти этапы будут сделаны пошагово, для того, чтобы лучше понять что зачем идет.

Будущие итоги

В итоге получим реальный проект, который сможет реализовать каждый, кто будет читать статьи. Прелесть телеграм-бота в том, что можно будет привязать к любому боту этот проект, чтобы не быть зависимым от бота, который будет в статьях. Скажу больше: это только начало JRTB. В будущем можно будет обсуждать/добавлять новую функциональность. Сделать этого бота таким, чтобы он был полезен всем студентам проекта JavaRush. А ощущение того, что твоим творением пользуются другие люди и им нравится, дорогого стоит! А вы, как читатели это серии статей, сможете получить реальный опыт работы на реальном проекте. Традиционно предлагаю подписаться на мой аккаунт на гитхабе, в котором я выкладываю решения и проекты. Вся работа по JRTB будет идти через GitHub, так что советую зарегистрироваться, если еще этого не сделали. Всем спасибо за прочтение, скоро увидимся :)“Java-проект от А до Я”: пишем реальный проект для портфолио - 5
Комментарии (81)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Evgeny
Уровень 1
4 февраля 2023, 04:00
Спасибо автору за проделанную работу! Бота пока делать не стал, т.к. ещё на ранней стадии изучения Java, но шаблон алгоритма разработки очень понравился. Чуть подстроил под себя и получил шаблон для создания MVP проектов на будущее)
フシギダネ справедливый в орех
13 июня 2022, 14:55
Не рекомендую этот устаревший цикл статей. Сам я, промучавшись 7 дней , и столкнувшись впервые с Maven/MySQL/SpringBoot. Ничего толкового в этой статье нет. все приходится гуглить. Но все равно вы скачаете репозиторий телеграм бота и не будет ничего работать, весь код будет красным в IDEA.
Oleg Raytsev
Уровень 35
7 июля 2022, 21:42
А разве не в гуглении сила понимания того, что ты должен должен сделать? Тебе в последующей работе никто не будет разжевывать темы в которых ты должен разобраться. Тебе скажут разберись со Spring'ом и все, остальное будет только в твоих руках.
フシギダネ справедливый в орех
14 июля 2022, 05:58
Выздоравливай, друг !
Aleksei Software Engineer в Cisco Expert
15 июля 2022, 11:34
Проблема не в цикле статей (тут как раз самые современные технологии используются), а в тебе. Ты прыгнул выше своего уровня (сам пишешь, что впервые столкнулся с Maven/MySQL/SpringBoot), тебе рано еще такие боты писать.
Roman Beekeeper тг-канал по java разработ в t.me/romankh3
15 июля 2022, 18:33
Не могу пройти мимо, не оставив ответа. Цикл статей этот писал я 9 месяцев. Чтобы вдумчиво пройти все по списку нужно явно больше 7 дней. Одна статья по работе с докером тянет на неделю, чтобы осознать и сделать похожее для своих нужд. Код работает и работает до сих пор, так как бот запущен и сейчас. Значит красный код у тебя по какой-то другой причине. Явно не зависящей от проекта. Maven, MySQL и SpringBoot - это столпы веб разработки на джава, как ты думал, что поймешь их за 7 дней я не представляю. Гуглить приходится? Да, а как иначе? Ничего особо не поменяется, когда найдешь работу. К тому же цикл статей рассчитан на то, чтобы показать ВЕСЬ процесс разработки от идеи до реализации и развертывания. Это главная цель. И она достигнута. Я знаю как минимум человек 10, которые прошли весь курс и оставили осознанные отзывы о нем. В общем и целом, цикл статей написал я по своему желанию и каждый сам решает, читать их или нет. Вместе с тем не рекомендовать по тем доводам, которые ты привел я бы не стал. Я бы вначале в зеркало посмотрел. Ну а так конечно желаю тебе найти работу, получить опыт и написать свой цикл, который будет лучше и современней =)
Рогов Игорь
Уровень 17
10 января 2023, 05:28
60% работы программиста в гуглении. Остальные 30% в анализе и лишь 10 % в написании кода. Так что все норм. Может это просто не ваше ?
Oleg #2857544 System Engineer
26 мая 2022, 07:10
Однозначно в закладки!
Serhio Gonsales
Уровень 35
3 ноября 2021, 11:55
Roman Beekeeper тг-канал по java разработ в t.me/romankh3
18 июня 2021, 12:27
UPDATE: идея реализована. За 9 месяцев мы это сделали. Бот работает, я им пользуюсь
Igor Java/Kotlin Developer
15 июня 2021, 12:44
Ну что поехали...
S_ S_ Backend Developer
14 марта 2021, 11:20
ну что, приступим!)
Roman Beekeeper тг-канал по java разработ в t.me/romankh3
11 марта 2021, 20:52
⚡️UPDATE⚡️ Друзья, создал телеграм-канал 🤓, в котором освещаю свою писательскую деятельность и свою open-source разработку в целом. Не хотите пропустить новые статьи? Присоединяйтесь ✌️
Vlad Yarets
Уровень 15
10 марта 2021, 15:29
Ахах.. "...хочу облегчить свою жизнь и написать программу..." А теперь прочитай еще раз. МЕДЛЕННО.)) (Шутка)
Roman Beekeeper тг-канал по java разработ в t.me/romankh3
10 марта 2021, 16:46
😂👍
Джуня
Уровень 21
19 августа 2022, 22:18
Смешная)
Vesa Backend Developer
18 января 2021, 19:29
> Если будет желание, можно еще почитать о стратегиях ветвления Что порекомендуешь почитать о стратегиях ветвления?
Roman Beekeeper тг-канал по java разработ в t.me/romankh3
18 января 2021, 20:42
да вот же она https://javarush.com/groups/posts/2693-komandnaja-rabota-bez-putanicih-razbiraem-strategii-vetvlenija-v-gite
Vesa Backend Developer
19 января 2021, 20:12
Спасибо!