Тестовое задание на стажировку 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. Когда справитесь, наращивайте функционал вашего приложения на основе примеров в интернете: создайте БД, модель, сервисные классы, настройте работу контроллера… И всё обязательно получится!)



Надеюсь, эта статья будет кому-то полезна и сэкономит время на изучение материала.
Если хотите поделиться своими полезными ссылками – буду рад увидеть их в комментариях!

35 комментариев

Kingpin
Спасибо добрый человек!
pro_moscow
А какое задание на эту стажировку? То же самое, которое можно было в beta скачать?
GuitarFactor
Пока задание на стажировку не менялось. Да и мне кажется, не поменяется (разве что список технологий). То задание, которое даётся, позволяет вникнуть в тему на минимально необходимом уровне, не погрязнув в тонкостях. Хорошее задание в общем, на месте разработчиков курса я бы его не менял)
pro_moscow
CrUD и Task Manager на выбор?
GuitarFactor
Да
maximuswork
Отличная статья. Я хоть не добрался еще до 30 уровня, но в голове уже пытаюсь структурировать информацию.
nci
  • nci
  • +4
  • Комментарий отредактирован 2017-02-27 15:33:00 пользователем nci
Вам тогда совет, от заканчивающего стажировку. Параллельно с JR смотрите SQL (MySQL, postgreSQL, Oracle вообщем любую реализацию) и JavaScript (по обоим есть хорошие обучалки).
И да ВАЖНО,
если при очередном открытии набора на стажировку у вас меньше 30 уровня, лучше не стремиться попасть на стажировку прокрутив уровни.
Стажировку вы пройдете, но:
1. Стажировка идет параллельно с курсом JR, очень мало у кого получалось совмещать
2. к задачкам JR и самому курсу навряд ли захотите возвращаться (считайте откроется новое видение куда развиваться)
GuitarFactor
Спасибо за полезные советы!
maximuswork
Спасибо большое за советы. С MySQL и Oracle успел подружиться по долгу службы и параллельному обучению до JR. А вот вот JavaScript даже не знаю откуда начать. Столько там всяких фрайморков. С чего лучше начать подскажите?
nci
С основ. JavaScript core так сказать. Больше наверное не понадобится, не фронтенд же наш хлеб.
Ресурсы: learn.javascript.ru, а лучше: www.w3schools.com/js/default.asp
maximuswork
ООО W3School — знаю, знаю. Спасибо. Будем посмотреть )))))))))
alexeyfrei
Где вы были, когда я впервые открыл тестовое задание :)
GuitarFactor
Я полагаю, что в тот момент я ещё сам не открыл тестовое задание)
ferasinka
Вкратце про IoC и DI: habrahabr.ru/post/321344/
Dimont
  • Dimont
  • +1
  • Комментарий отредактирован 2017-03-15 18:12:37 пользователем Dimont
Спасибо за ссылку. Очень наглядно и увлекательно автор объясняет! :)
bandyto
  • bandyto
  • +1
  • Комментарий отредактирован 2017-02-28 17:41:06 пользователем bandyto
Господа, нужна помощь. Понимаю что вопрос вообще нубский, но всё же.
С самим заданием вроде разобрался. Почитал, посмотрел примеры да что-то сделал.
Однако, при попытке деплоя приложения в tomcat открывается главная страница самого сервера либо же ошибка 404, то бишь не найдено.
Уже пытался по всякому, и в IDE настраивал tomcat, и war-файл кидал в папку webapps самого сервера, всё не получается посмотреть на результат. С чем может быть проблема, подскажите пожалуйста?
P.S. Пустой maven-проект открыть получалось.
Kali
много чего может быть: зависимости не подключены, в настрйках ИДЕ, не прописан путь, переменные окружения не прописаны… да мало ли
Kali
  • Kali
  • 0
эх мне бы этот пост перед моей стажировкой… сколько времени бы сэкономил )
Core
  • Core
  • 0
  • Комментарий отредактирован 2017-03-08 13:23:52 пользователем Core
Кто пробовал разные тулы для MySQL? У меня DbForge не ставится, ибо пользую XP, на которую в свою очередь не ставится NET. framework 4.5.2, являющийся требованием для DbForge. есть альтернативные тулы, но кто-нибудь может посоветовать конкретную? Я прорсто «сварщик ненастоящий» и не пробовал пока ни одну из них, а фигню ставить не хочется

Из этого кто-нибудь что-нибудь узал?
Вот Ссыл Ссылыч
GuitarFactor
Можете попробовать MySQL Workbench. Workbench я никогда не использовал, но насколько мне известно это популярный и надёжный продукт.
Core
  • Core
  • 0
  • Комментарий отредактирован 2017-03-08 14:19:56 пользователем Core
Спасибо.Сел читать про него. Кстати, DbForge имеет русскоязычный интерфейс или только басурманский?
GuitarFactor
у меня русскоязычный dForge
imp
  • imp
  • 0
Workbench отличный продукт, вопрос зачем он, если можно из идеи подключить бд и там с ней работать.
Core
  • Core
  • 0
  • Комментарий отредактирован 2017-03-08 14:48:22 пользователем Core
Ну, я так понял, чтобы удобней было создавать саму бд, чтобы получить наглядность её создания.
То есть речь не о работе с ней используя тул в перспективе, а о её создании. Но я могу неправильно понимать. Я так понял можно спроектировать бд с помощью SQL-команд, используя непосредственно инструменты MySQL, но это более кропотливо, а можно с использованием тулза с наглядным интерфейсом.

Или есть вариант спроектировать бд прямо в Idea? Я понял что из Idea можно только работать с готовой бд, но не создавать её. Растолкуйте, если я не прав: первую ночь только провёл за чтением материала по технологиям из стэка, поэтому могу пока многого не знать и не понимать
zavarnik1
БД создается с помощью SQL запроса неважно откуда, хоть из консоли.
Workbench в данном задании скорее как запасной вариант вьюшки. Посмотреть реальное положение дел в БД. Пока что мы не дошли до использования этого инструмента на полную катушку.
Core
  • Core
  • 0
  • Комментарий отредактирован 2017-03-09 13:02:26 пользователем Core
Ну я так и понял. Может быть выразился несовсем точно. Понятно, что в любом случае бд создаётся через запросы. Просто выглядит по-разному. Спасибо за ответ.
Haart
Вот миникурс по mysql, где и workbench, и внедрение в идею, так что можно оценить, что удобнее…

www.youtube.com/watch?v=7LwOvVPavWA
Core
Спасибо, очень кстати.
Core
  • Core
  • 0
  • Комментарий отредактирован 2017-03-11 14:22:12 пользователем Core
Друзья, подскажите, правильно ли я понял.
Установление связи с базой осуществляется посредством JDBC-драйвера.
Но сама база ведь находится у меня на машине, а не у проверяющего.
Но у него (проверяющего) есть база с таким же именем и паролем (test и root), то есть мой код приведёт к соединению фактически с его базой данных. Тогда правильно ли я понял, что таблицу базы нужно создать(добавить и сконфигурировать корлонки) не вне проекта, а уже в самом проекте после соединения с бд?
Haart
  • Haart
  • 0
  • Комментарий отредактирован 2017-03-11 14:58:52 пользователем Haart
Верно, соединение идет с помощью драйвера.
Вам нужно создать скрипт, который создаст схему(базу), таблицу и заполнит ее, что-бы поверяющий мог оттестировать. Логин и пароль, вроде root root.
Т.е. он берет ваш проект, запускает скрипт, запускает проект и действует.
Core
  • Core
  • 0
  • Комментарий отредактирован 2017-03-11 16:38:35 пользователем Core
Хм, то есть скрипт нужно приложить отдельно?
Значит я не так немного понял. Я понял, что скрипт по созданию базы не нужен: база уже создана на машине проверяющего.
Он запускает проект, в котором есть процесс добавления таблицы в базу и её конфигурации. Ну то есть у него (проверяющего)есть база для тестовых заданий (скрипт по ее созданию не нужен), ему пришло десять решений по заданию, и когда он их запускает, в рамках уже запущенного решения, происходит конфигурация таблицы, то есть все на одной базе, в которую добавляются разные таблицы при запуске решений от разных людей?
Я понял это исходя из слов: «Для упрощения тестирования называйте все свою базу test с логином и паролем root (нам не нужно будет для тестирования создавать кучу лишних и ненужных баз)»

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

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

LJ_
  • LJ_
  • 0
Вдруг кому поможет, но просто отлично описана работа мавен http://www.apache-maven.ru/
До этого читал туториалы на официальном сайте, там так много воды и нудно, и местами не понятно о чем речь.
А тут все супер кратко и сразу явно, что к чему. Еще мне помогли лекции Головача, он тоже очень хорошо объясняет этот в целом не сложный инструмент
Alena
Мне вот это описание Spring MVC понравилось
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.