Topjava
Java Enterprise: Maven/ Spring/ Security/ JPA(Hibernate)/ REST(Jackson)/ Bootstrap(CSS)/ jQuery
Install / Use
/learn @JavaOPs/TopjavaREADME
Java Enterprise Online Project
Разработка полнофункционального Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей с использованием наиболее популярных инструментов и технологий Java: Maven, Spring MVC, Security, JPA(Hibernate), REST(Jackson), Bootstrap (css,js), DataTables, jQuery + plugins, Java 8 Stream and Time API и хранением в базах данных Postgresql и HSQLDB.

Когда вы слышите что-то, вы забываете это.
Когда вы видите что-то, вы запоминаете это.
Но только когда вы начинаете делать это,
вы начинаете понимать это
Старинная китайская поговорка
<a href="description.md">Описание и план проекта</a>
<a href="http://javaops-demo.ru/topjava" target=_blank>Демо разрабатываемого приложения</a>
Изменения проекта (Release Notes)
<a href='https://github.com/JavaOPs/topjava/wiki/Стажировка--Enterprise-Java-разработчик-(TopJava)'>Требования к участникам, Wiki</a>
<a href="cv.md">Составление резюме, подготовка к интервью, поиск работы</a>
Обновленное вводное занятие (обязательно смотреть все видео)
1. Вступление, история, команда, источники
Обзор наиболее востребованных технологий, которые будут изучаться на курсе TopJava
2.1. Часть 1: инфраструктура
2.2. Часть 2: frameworks Spring, ORM
2.3. Часть 3: тренды
2.3. Часть 4: обзор разрабатываемого приложения
3. Рекомендуемые подходы к обучению на курсе
4. Структура приложения (многоуровневая архитектура)
Демо приложения
5. Системы управления версиями. Git</a>
6. <a href="https://drive.google.com/file/d/0B9Ye2auQ_NsFZDdaaU5fZEo4X3c/view?resourcekey=0-DvpzWIlMHZ7KX_v1SMuiAw" name="project">Работа с проектом (выполнять инструкции)</a>
- ВНИМАНИЕ: выбирайте для проекта простой путь без пробелов и русских букв, например,
c:\projects\topjava\(Windows). Иначе впоследствии будут проблемы - Плагин Git Intergation уже не требуется, а вкладку
Version controlв IDEA переименовали вGit - C Ultimate IDEA сейчас сложности, надеемся что временные.
- Скачать IDEA и установливать плагины можно по инструкции
- После Trial 30 дней способы продлить использование
Для переключения режима отображения изменений из вкладки Commit в Git: Local Changes нужно переключить Settings/Preferences | Version Control | Commit | Use non-modal commit interface или в контекстном меню вкладки Commit:

Патч prepare_to_HW0.patch (скачать и положить в каталог вашего проекта)
Проект постоянно улучшается, поэтому видео иногда отличается от кода проекта. Изменения указываю после видео:
- переименовал класс
UserMealWithExceedи его полеexceedвUserMealWithExcess.excess- в
UserMeals/UserMealWithExcessполя изменились наprivate- обновил данные
UserMealsUtil.mealsи переименовал некоторые переменные, поля и методы- добавил
UserMealWithExcess.toString()и метод для выполнения Optional домашнего задания- метод фильтрации в
TimeUtilпереименовал вisBetweenHalfOpen(также изменилась логика сравнения:startTimeвключается в интервал, аendTime- не включается)
GitHub поменял политику: теперь пушить нужно через токен. IDEA предложит его сгенерировать при пуше, или можно создать токен в настройках
Инструкция по шагам (из видео):</h3>
- <a href="http://javaops.ru/view/soft">Установить ПО (Git, JDK8, IntelliJ IDEA, Maven)</a>
- Создать аккаунт на <a href="https://github.com">GitHub</a>
- Сделать Fork ЭТОГО проекта (https://github.com/JavaOPs/topjava) </a>
- Сделать локальный репозиторий проекта: <pre>git clone https://github.com/[Ваш аккаунт]/topjava.git</pre>
Вместо Fork можно сделать клонирование проекта: он не будет привязан к исходному https://github.com/JavaOPs/topjava и у него не будет истории.
- Открыть и настроить проект в IDEA
- <a href="http://stackoverflow.com/questions/29695918/intellij-idea-console-issue#33035499">Выставить кодировку UTF-8 в консоли</a>
- <a href="https://github.com/JavaOPs/topjava/wiki/IDEA#user-content-utf8-console">Поставить кодировку UTF-8</a>
- Опционально: <a href="https://github.com/JavaOPs/topjava/wiki/IDEA#%D0%9F%D0%BE%D0%BC%D0%B5%D0%BD%D1%8F%D1%82%D1%8C-%D1%84%D0%BE%D0%BD%D1%82-%D0%BF%D0%BE-%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8E-dejavu">поменять шрифт по умолчанию на DejaVu</a> или на новый JetBrains Mono
- По ходу видео сделать
Apply Patch...скачанного патчаPrepare_to_HW0.patch - Закоммитить и запушить изменения (
commit+push) - Сделать ветку домашнего задания
- Выполнить задание и залить на GitHub (
commit+push) - Переключиться в основную ветку проекта
master.
7. Maven
- Как установить Maven 3 на Ubuntu или Windows
- Руководство по Maven
- Wiki: Apache Maven
- The Central Repository
- Дополнительно:
- Мой Wiki по Maven
- Основы Maven
- JavaRush: Основы Maven
- Инструмент сборки проектов Maven
- Maven Getting Started Guide
- Видео: Maven vs Gradle vs SBT (Архипов, Борисов, Садогурский)
- Build Lifecycle
- Dependency Mechanism
8. Как правильно относиться к техзаданию (ТЗ). Полуоткрытый интервал.
Домашнее задание HW0
ВНИМАНИЕ: НЕ НАДО в репозиторий делать Pull Request со своими решениями! См. видео выше ("Работа с проектом")
Реализовать метод UserMealsUtil.filteredByCycles через циклы (forEach):
- должны возвращаться только записи между
startTimeиendTime - поле
UserMealWithExcess.excessдолжно показывать, превышает ли сумма калорий за весь день значениеcaloriesPerDay
Т. е. UserMealWithExcess - это запись одной еды, но поле excess будет одинаково для всех записей за этот день.
- Проверьте результат выполнения ДЗ (можно проверить логику в http://javaops-demo.ru/topjava, список еды)
- Оцените Time complexity алгоритма. Если она больше O(N), например O(NN) или Nlog(N), сделайте O(N).
Внимание: внимательно прочитайте про O(N). O - это любой коэффициент, 2*N это тоже O(N).
- <a href="http://www.mscharhag.com/2014/02/java-8-datetime-api.html">Java 8 Date and Time API</a>
- <a href="http://web.archive.org/web/20201128101944/https://tproger.ru/translations/algorithms-and-data-structures/">Алгоритмы и структуры данных для начинающих: сложность алгоритмов</a>
- Сложность алгоритмов и Big O Notation
- Головач: сложность алгоритмов в теме коллекций
- <a href="https://drive.google.com/file/d/0B9Ye2auQ_NsFNEJWRFJkVDA3TkU/view?usp=sharing&resourcekey=0-MPCuoLVdSLiSc7hlE2jefQ">Time complexity</a>
