JavaRush/Java блог/Архив info.javarush/Тестовое задание на стажировку JavaRush: Полезные ссылки ...
GuitarFactor
30 уровень

Тестовое задание на стажировку JavaRush: Полезные ссылки и хинты

Статья из группы Архив info.javarush
участников
Хочу поделиться с вами полезными ссылками, хинтами и советами, которые помогут при выполнении тестового задания на стажировку в реальный проект на JavaRush. Конечно, можно просто бездумно накопировать решение тестового задания из интернета, благо примеров хватает, но мы-то хотим разобраться, что делаем:) Этот пост для тех, кто не обнаружил среди стека технологий, требующихся по заданию, знакомых слов и хочет это исправить) Пару недель назад я добрался до 30 уровня и наконец получил доступ к тестовому заданию на стажировку. По началу я был в ступоре и просто не знал, с чего начать и что делают все эти спринги и хибернэйты. Только начав копать, я столкнулся с проблемой: очень много ресурсов и статей подразумевают, что вы уже имеете представление о предметной области. Проще говоря, они слишком заумны для новичков и вместо понимания вызывают реакцию “это слишком сложно!”. Поэтому ниже я попытаюсь на основе своего пусть и небольшого опыта поделиться удачными ссылками, которые помогли мне получить базовые представления о необходимых технологиях. Те, кто ныл во время обучения на JavaRush, что много надо изучать самому – готовьтесь, тут вас ждёт настоящий ад))

Итак, как подступиться к выполнению задания?

1. Понять, зачем нужны все эти технологии (я бы начал изучение в таком порядке, как указан ниже):

1.1. Maven

Его роль в проекте – создание структуры каталогов вашего вэб-проекта (она стандартизирована) из специального тэмплэйта, называемого “archetype” + подтягивание библиотек в ваш проект (добавление dependency в pom.xml). Кто проходил бонусную задачу про парсинг на основе jsoup – там мы сами ручками скачивали библиотеку из интернета и подцепляли её в идею. Maven же позволяет вам ничего не скачивать, а просто писать в pom.xml, какую библиотеку вы хотите подтянуть и использовать в проекте. Быстрое объяснение, что делает Maven, в картинках -> тут.

1.2. MySQL

Это ваша система управления базами данных (СУБД). Каких-то глубоких познаний в SQL и СУБД по заданию не потребуется, тут могу посоветовать для облегчения жизни установить прогу dbForge, которая очень поможет вам при создании БД и работы с ней.

1.3. Spring

Этот фрэймворк будет ядром вашего вэб-приложения. Он огромный, и его архитектура состоит из многих модулей. Хорошая новость: для выполнения задания потребуется получить представление лишь о нескольких вещах в Spring: что такое Inversion of Control (IoC) и разобраться с работой Spring MVC (какая должна быть структура каталогов вашего вэб-проекта, кто такой DispatcherServlet, как он взаимодействует с контроллером, вью и моделью и т.д.). Тут особенно не хватало материалов для новичков, где объяснялось бы на пальцах. Но, слава богу, такие материалы нашлись: Очень просто об IoC, связанности кода, DI (материал излагается в несколько фривольной манере, но зато всё понятно) –> вот тут (ниже на странице листайте к следующим статьям). Далее ищите, что такое @Autowired аннотация. Spring MVC — цикл видеоуроков (первые 11 уроков, каждый в среднем минут 7-10). Здесь вы найдёте цикл видеоуроков, вообще ОЧЕНЬ рекомендую смотреть уроки этого парня! Несмотря на забавный индусский английский, объясняет всё очень подробно и понятно, с наглядными примерами. Также у него есть уроки и по другим фрэймворкам. WorkFlow приложения на Spring MVC в картинках — см. здесь.

1.4. Hibernate

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

1.5. Html & CSS

Чтобы отобразить ваши данные на вэб-страничке, необходимо будет эту страничку создать при помощи HTML и CSS в рамках ваших jsp файлов. Существует много неплохих ресурсов для того чтобы въехать в эту тему. Лично я изучал XHTML и CSS по этому циклу видеоуроков (понравилось что парень объясняет с юмором, но при этом очень последовательно и логично) Приведённые выше ссылки дают начальное представление, в процессе ознакомления у вас наверняка появятся новые вопросы. Тут важно вовремя остановиться и:

2. Начинать делать задание

2.1. Посмотрите примеры выполнения задания, в интернете их хватает, и, я полагаю, вы без труда их найдёте. Вы уже изучили основные понятия – осталось ли что-то не ясным в том, как делать задание? Если да, то ищите ответы уже на конкретные вопросы. 2.2. Скачайте бесплатный trial Intellij Idea Ultimate (на 30 дней)! По началу я долго ломал голову, как же делать задание, случайно наткнулся на форуме, что надо скачать Ultimate Edition – без этого вам будет тяжко (community edition не поддерживает JavaEE) 2.3. Создайте шаблон проекта из архетипа Maven (например, maven-archetype-webapp) или из шаблона Spring MVC в Ultimate idea (если понадобится, потом можно будет добавить поддержку нужного фрэймворка: Add Framework Support в идее). 2.4. Попытайтесь сделать простой вывод сообщения HelloWorld в ваш браузер (передать это сообщение из контроллера на jsp страницу). 2.5. Когда справитесь, наращивайте функционал вашего приложения на основе примеров в интернете: создайте БД, модель, сервисные классы, настройте работу контроллера... И всё обязательно получится!) Надеюсь, эта статья будет кому-то полезна и сэкономит время на изучение материала. Если хотите поделиться своими полезными ссылками – буду рад увидеть их в комментариях!
Комментарии (50)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ramazan
Уровень 36
Expert
8 марта 2023, 10:58
Может кто подкинуть само задание, в Гите нашел только 4-5 летней давности..
AlexanderK
Уровень 36
5 февраля 2023, 19:31
А почему у автора уже с 30-го доступно задание на стажировку? В условиях конкретно написанно что только после 35-го уровня будет доступ. Я вот долго и нудно прохожу, есть много сложных моментов, но я бы не отказался хотябы взглянуть и попоробовать его решить. Не очень понятно как все работает и как сравнивать себя с другими обучающимися когда такие вот разные условия и колл-ва уровней в целом. (Если что я по старой программе учусь (где макс 41 уровень), которая была ещё 2 года назад).
German_lbt
Уровень 35
25 января 2019, 22:01
в целом для начало съедобно...но когда автор предлагает курсы с индусом...о божееее...мой интермедиэйт плюс не справился с эти квестом... претензия на оригинальность? ...вы реально решили доказать всем и донести мысль что: "вы никогда не станете программистом"? про яблоко и червя - тоже дичь...как вам это - команда "передвигайся"...на старте: собака, птица, яблоня..откуда я знаю чего они будут делать? - эндопендность ....короче в топку...ничего личного...добавлю...так-как пи#@еть - не мешки ворочать...мне прислали 12 сообщений...мой ответ сразу...вот https://www.youtube.com/watch?v=BmBr5diz8WA ...реальная тема...все понятно, доступно и бин дифинишис не такой страшный...
Джонни Backend Developer Expert
13 января 2019, 10:59
Петр Лукашев
Уровень 36
10 июня 2018, 10:10
Кто-нибудь моет подсказать, в чем проблема? В файле web.xml добавляю конфигурацию dispatcherservlet: <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> Но вначале у меня вот это идея отображала красным:web.servlet.DispatcherServlet, потом подключил зависимость <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.0.6.RELEASE</version> </dependency>, п после этого слово web стало синим, но вот это все равно красное, servlet.DispatcherServlet т.е. я так понял, что пакет web нашла, но класс DispatcherServlet все равно не находит(
uraplayer
Уровень 37
27 января 2018, 17:55
Сорри за тупой вопрос. Пробовал открыть чужие проекты для стажировки с github, посмотреть что да как, смог запустить только один, после танцев с бубном. В остальных на каждом шагу затык при запуске.
Может кто пояснить по пунктам, как что запускается и в какой последовательности? Какой файл запускать?

Например вот этот проект github.com/andreichernov/CrudAppTry

Использую Intellij Idea Ultimate 2017.3.1
fatfaggy
Уровень 26
27 января 2018, 21:25
попробуй почитать тут

начиная со слов «Мы уже почти готовы к тому, чтобы запустить наш проект!»
там я показывал как запустить проект используя томкат.
fatfaggy
Уровень 26
27 января 2018, 21:27
кроме того, тебе потом надо будет зайти в настройки артефакта и добавить все либы из правого окошечка в левое.
просто выбираешь все либы в правом окошке, правой кнопкой по ним и выбираешь пункт типа «добавить в WEB-INF/libs» как-то так кароч, ну там разберешься)

после чего можно будет запускать)
uraplayer
Уровень 37
29 января 2018, 18:51
Спасибо, твои статьи прочел, все получилось.
Нашел на github еще 6 проектов, все загрузились. Открывал в Idea, просто кнопкой OPEN. Главный затык, как оказалось, в том, что нужно было создать правильную базу данных (назавание базы, колонок тип) и подлючить к проекту.

Но этот проект, так и не запускается github.com/andreichernov/CrudAppTry

HTTP Status 500 – Internal Server Error
Type Exception Report
Message Servlet.init() for servlet [mvc-dispatcher] threw exception
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Заметил, что система подчеркивает красным


Где искать ошибку?
uraplayer
Уровень 37
29 января 2018, 18:58
Отвечу сам себе, заменил эту строку на

Все заработало
fatfaggy
Уровень 26
29 января 2018, 20:24
значит собралось как-то криво))
вообще, все, что в папочке resources должно было попасть в classpath
не знаю почему не попало)
но если работает — хорошо :)
uraplayer
Уровень 37
29 января 2018, 21:25
Idea предлагала создать новый файл application.properties, а создавался он в папке Java, видимо classpath у меня по умолчанию на нее затянут.
fatfaggy
Уровень 26
29 января 2018, 22:48
я глянул проект, у него там эта папочка resources не в том месте, где обычно.
она у него внутри папки webapp, а обычно в src/main. поэтому и не подтянулась автоматически.
velis
Уровень 32
9 марта 2018, 14:02
этот проект похоже не доделанный? какая у него стартовая страница? или открывать просто локалхост, то получаем стандартную страницу томката.
fatfaggy
Уровень 26
9 марта 2018, 16:57
у меня запускался норм. ну после правок)

если открывается страница томката — значит вы возможно как-то не так запускаете :)
Alena
Уровень 35
3 июня 2017, 11:15
Мне вот это описание Spring MVC понравилось
LJ_
Уровень 40
15 апреля 2017, 08:13
Вдруг кому поможет, но просто отлично описана работа мавен http://www.apache-maven.ru/
До этого читал туториалы на официальном сайте, там так много воды и нудно, и местами не понятно о чем речь.
А тут все супер кратко и сразу явно, что к чему. Еще мне помогли лекции Головача, он тоже очень хорошо объясняет этот в целом не сложный инструмент
Core
Уровень 35
11 марта 2017, 14:22
Друзья, подскажите, правильно ли я понял.
Установление связи с базой осуществляется посредством JDBC-драйвера.
Но сама база ведь находится у меня на машине, а не у проверяющего.
Но у него (проверяющего) есть база с таким же именем и паролем (test и root), то есть мой код приведёт к соединению фактически с его базой данных. Тогда правильно ли я понял, что таблицу базы нужно создать(добавить и сконфигурировать корлонки) не вне проекта, а уже в самом проекте после соединения с бд?
Haart
Уровень 30
11 марта 2017, 14:58
Верно, соединение идет с помощью драйвера.
Вам нужно создать скрипт, который создаст схему(базу), таблицу и заполнит ее, что-бы поверяющий мог оттестировать. Логин и пароль, вроде root root.
Т.е. он берет ваш проект, запускает скрипт, запускает проект и действует.
Core
Уровень 35
11 марта 2017, 16:38
Хм, то есть скрипт нужно приложить отдельно?
Значит я не так немного понял. Я понял, что скрипт по созданию базы не нужен: база уже создана на машине проверяющего.
Он запускает проект, в котором есть процесс добавления таблицы в базу и её конфигурации. Ну то есть у него (проверяющего)есть база для тестовых заданий (скрипт по ее созданию не нужен), ему пришло десять решений по заданию, и когда он их запускает, в рамках уже запущенного решения, происходит конфигурация таблицы, то есть все на одной базе, в которую добавляются разные таблицы при запуске решений от разных людей?
Я понял это исходя из слов: «Для упрощения тестирования называйте все свою базу test с логином и паролем root (нам не нужно будет для тестирования создавать кучу лишних и ненужных баз)»

Или все таки нужен отдельно от проекта файлик со скриптом по созданию базы? Вы как делали, если делали. Отдельный файлик?
Haart
Уровень 30
11 марта 2017, 16:45
Я сам не делал, только буду делать) Говорю, потому что видел как другие делают. А реализация у многих почти одинаковая, — уничтожить базу — если существует, создать базу, создать таблицу, наполнить таблицу.

И да, это отдельный файл…

imp
Уровень 31
8 марта 2017, 14:34
Workbench отличный продукт, вопрос зачем он, если можно из идеи подключить бд и там с ней работать.
Core
Уровень 35
8 марта 2017, 14:48
Ну, я так понял, чтобы удобней было создавать саму бд, чтобы получить наглядность её создания.
То есть речь не о работе с ней используя тул в перспективе, а о её создании. Но я могу неправильно понимать. Я так понял можно спроектировать бд с помощью SQL-команд, используя непосредственно инструменты MySQL, но это более кропотливо, а можно с использованием тулза с наглядным интерфейсом.

Или есть вариант спроектировать бд прямо в Idea? Я понял что из Idea можно только работать с готовой бд, но не создавать её. Растолкуйте, если я не прав: первую ночь только провёл за чтением материала по технологиям из стэка, поэтому могу пока многого не знать и не понимать
zavarnik1
Уровень 37
9 марта 2017, 01:29
БД создается с помощью SQL запроса неважно откуда, хоть из консоли.
Workbench в данном задании скорее как запасной вариант вьюшки. Посмотреть реальное положение дел в БД. Пока что мы не дошли до использования этого инструмента на полную катушку.
Haart
Уровень 30
9 марта 2017, 02:51
Вот миникурс по mysql, где и workbench, и внедрение в идею, так что можно оценить, что удобнее…

www.youtube.com/watch?v=7LwOvVPavWA
Core
Уровень 35
9 марта 2017, 13:02
Ну я так и понял. Может быть выразился несовсем точно. Понятно, что в любом случае бд создаётся через запросы. Просто выглядит по-разному. Спасибо за ответ.
Core
Уровень 35
9 марта 2017, 13:03
Спасибо, очень кстати.