diff --git a/README.md b/README.md index bca057919ef7..72ec4c70d6ec 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [Java Enterprise Online Project](https://javaops.ru/view/topjava) =============================== -Разработка полнофункционального 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. +Разработка полнофункционального Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей с использованием наиболее популярных инструментов и технологий Java: Maven, Spring MVC, Security, JPA(Hibernate), REST(Jackson), Bootstrap (css,js), DataTables, jQuery + plugins, Stream and Time API и хранением в базах данных Postgresql и HSQLDB.  @@ -14,7 +14,7 @@ ## Описание и план проекта ### Демо разрабатываемого приложения ### [Изменения проекта (Release Notes)](ReleaseNotes.md) -### Требования к участникам, Wiki +### Требования к участникам, Wiki ### Составление резюме, подготовка к интервью, поиск работы Обновленное вводное занятие (обязательно смотреть все видео) @@ -38,8 +38,11 @@ ##  5. [Системы управления версиями. Git](doc/video5-vcs-git.md) ##  6. Работа с проектом (выполнять инструкции) -- **ВНИМАНИЕ: выбирайте для проекта простой пусть без пробелов и русских букв, например, `c:\projects\topjava\` (Windows). Иначе впоследствии будут проблемы** +- **ВНИМАНИЕ: выбирайте для проекта простой путь без пробелов и русских букв, например, `c:\projects\topjava\` (Windows). Иначе впоследствии будут проблемы** - **Плагин Git Intergation уже не требуется, а вкладку `Version control` в IDEA переименовали в `Git`** +- **Установка IDEA** + - Скачать IDEA и установливать плагины [можно по инструкции](https://github.com/JavaOPs/topjava/wiki/IDEA#download) + - После Trial 30 дней [способы продлить использование](https://github.com/JavaOPs/topjava/wiki/IDEA#licence) Для переключения режима отображения изменений из вкладки `Commit` в `Git: Local Changes` нужно переключить `Settings/Preferences | Version Control | Commit | Use non-modal commit interface` или в контекстном меню вкладки `Commit`: @@ -64,11 +67,11 @@ - Сделать локальный репозиторий проекта:
git clone https://github.com/[Ваш аккаунт]/topjava.git-> Вместо Fork можно сделать [клонирование проекта](https://github.com/JavaOPs/topjava/wiki/Git#user-content-Клонирование-проекта): он не будет привязан к исходному https://github.com/JavaOPs/topjava и у него не будет истории. +> Вместо Fork можно сделать [клонирование проекта](https://github.com/JavaOPs/topjava//Git#user-content-Клонирование-проекта): он не будет привязан к исходному https://github.com/JavaOPs/topjava и у него не будет истории. - Открыть и настроить проект в IDEA - Выставить кодировку UTF-8 в консоли - - Поставить кодировку UTF-8 + - Поставить кодировку UTF-8 - Опционально: поменять шрифт по умолчанию на DejaVu или на **новый [JetBrains Mono](https://habr.com/ru/company/jugru/news/t/484134/)** - По ходу видео сделать `Apply Patch...` скачанного патча `Prepare_to_HW0.patch` - Закоммитить и запушить изменения (`commit` + `push`) @@ -118,9 +121,9 @@ #### ВНИМАНИЕ: варианты Optional делайте в одной ветке в разных методах `UserMealsUtil`. Проще делать, проще проверять -### Optional (Java 8 Stream API) +### Optional (Stream API) ``` -Реализовать метод `UserMealsUtil.filteredByStreams` через Java 8 Stream API. +Реализовать метод `UserMealsUtil.filteredByStreams` через Stream API. ``` - Видео: Доступно о Java 8 Lambda - Java 8: Lambda выражения @@ -144,7 +147,7 @@ - без циклов по другим коллекциям/массивам (к ним также относим методы коллекций `addAll()/removeAll()`) - через Stream API за 1 проход по исходному списку `meals.stream()` - нельзя использовать внешние коллекции, не являющиеся частью коллектора - - возможно дополнительные проходы по частям списка, при этом превышение должно считаться один раз для всего подсписка. Те например нельзя разбить список на на 2 подсписка с четными и нечетными датами и затем их объединить, с подсчетом превышения для каждого элемента. + - возможно дополнительные проходы по частям списка, при этом превышение должно считаться один раз для всего подсписка. Те например нельзя разбить список на 2 подсписка с четными и нечетными датами и затем их объединить, с подсчетом превышения для каждого элемента. Временная сложность реализации должна быть O(N) (обратите внимание на п. 13 замечаний) Решение должно быть рабочим в общем случае (должно работать в приложении с многими пользователями, не только при запуске `main`) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index f7d46f6540a2..40fef33ddfb3 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,12 +1,12 @@ # TopJava Release Notes ### TopJava 26 -- починили шаблоны запросов на создание в Swagger хчз [ApiModelProperty](https://www.baeldung.com/spring-swagger-hide-field) +- починили шаблоны запросов на создание в Swagger через [ApiModelProperty](https://www.baeldung.com/spring-swagger-hide-field) - в новой версии Data JPA `getById`->`getReferenceById` - мелкие правки ### TopJava 25 -- поправил `NoHtmlValidator`: `Jsoup.clean().equals -> `Jsoup.isValid` +- поправил `NoHtmlValidator`: `Jsoup.clean().equals` -> `Jsoup.isValid` - починил `role VARCHAR NOT NULL` - добавил нового тестового пользователя `guest` diff --git a/cv.md b/cv.md index e2176bfe9006..2f01659fea12 100644 --- a/cv.md +++ b/cv.md @@ -119,7 +119,7 @@ - Готовься к стендапам/летучкам. Задавай на них вменяемые вопросы. Выказывай заинтересованность - Выдели самое главное путем опроса босса и важных коллег. Не распыляйся на мелочи. - [**5 вещей, которые разработчик должен сделать прежде чем попросить о помощи**](https://techrocks.ru/2018/07/16/5-things-a-developer-should-do-before-asking-for-help/) -- [**Советы новичкам**](http://blog.csssr.ru/2016/09/19/how-to-be-a-beginner-developer) +- [**Советы новичкам**](https://blog.csssr.com/ru/article/how-to-be-a-beginner-developer) - [ТОП-13 ошибок начинающего программиста](https://proglib.io/p/beginners-fails/) - [25 ошибок начинающего программиста](https://habr.com/ru/post/413129/) - [Путеводитель по синдрому самозванца](https://vc.ru/hr/167443-eshche-odin-putevoditel-po-sindromu-samozvanca-korni-prichiny-simptomy-i-posledstviya-chast-1) diff --git a/doc/video1.md b/doc/video1.md index 3c62fc31b3f6..d1d9b16482e5 100644 --- a/doc/video1.md +++ b/doc/video1.md @@ -65,7 +65,7 @@ Помимо известного всем Hibernate, можно столкнуться с использованием JOOQ или чистого JDBC. Зачастую на проектах используются готовые решения -для хеширования данных (Redis), поисковые движки (ElasticSearch), +для кэширования данных (Redis), поисковые движки (ElasticSearch), различные брокеры сообщений (RabbitMQ, ActiveMQ, Kafka). Инфраструктура проектов также может быть довольно сложной. diff --git a/graduation.md b/graduation.md index 7488e41f0ea8..a2192f1845c8 100644 --- a/graduation.md +++ b/graduation.md @@ -31,7 +31,8 @@ P.P.S.: Assume that your API will be used by a frontend developer to build front - **Не изобретай велосипедов!** Грубая ошибка - пытаться сделать стандартные вещи по-своему, чаще всего криво. На проекте все должно быть единообразно! Ваш проект TopJava - сделай все МАКСИМАЛЬНО в этом стиле. Если тебе кажется, что есть лучшее решение, чем в TopJava - пишите мне в личку, я всегда открыт для улучшений. -- **Рекомендую писать проект на востребованном на рынке стеке**: Spring Boot + Spring Data JPA (работа с БД) + Swagger/OpenAPI 3.0 (REST документация). **Оптимально подойдет код миграции TopJava на Spring Boot в конце стажировки**. +- **Рекомендую писать проект на востребованном на рынке стеке**: Spring Boot + Spring Data JPA (работа с БД) + Swagger/OpenAPI 3.0 (REST документация). +- **Оптимально подойдет код миграции TopJava на Spring Boot в конце стажировки или [курса BootJava](https://javaops.ru/view/bootjava)** *Представьте себе, что ПМ (лид, архитектор) дал вам ТЗ и некоторое время недоступен. У вас, конечно, есть много мыслей, для чего нужно приложение, как исправить ТЗ, дополнить его и сделать правильно. НО НЕ НАДО ИХ РЕАЛИЗОВЫВАТЬ В КОДЕ. Нужно сделать все строго по ТЗ, максимально просто, удобно для доработок и для использования со стороны клиента.* @@ -86,7 +87,7 @@ _Антуан де Сент-Экзюпери_ ### 5: Архитектура / pom - 5.1: Можно: - или подключить DATA-REST (см.курс [Spring Boot 2.x + HATEOAS](https://javaops.ru/view/bootjava)). Контроллеры генерируются автоматически по репозиториям, требуется настройка ресурсов в кастомных контроллерах - - или делать на основе миграции TopJava / кода [TopJava-2](https://github.com/JavaOPs/topjava2) + - **РЕКОМЕНДУЕТСЯ** делать на основе миграции TopJava / кода [курса BootJava](https://javaops.ru/view/bootjava) Нельзя смешивать эти подходы вместе! Я рекомендую 2-й вариант, без data-rest. Обязательно посмотрите в Swagger, какие контроллеры получились в результате. - 5.2: Не размещайте бизнес-логику приложения и преобразования в TO в слое доступа к DB diff --git a/pom.xml b/pom.xml index 0b1c2896da5b..cf231320e25d 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@