From 2c47cd7aca8063a80fbb1806f466e46b0918fa2f Mon Sep 17 00:00:00 2001 From: Grigory Kislin Date: Wed, 26 Aug 2015 02:13:54 +0300 Subject: [PATCH 1/3] Add readme and project description --- README.md | 53 +++++++++++++++++++++++++++++++++++++++++ description.md | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 README.md create mode 100644 description.md diff --git a/README.md b/README.md new file mode 100644 index 000000000000..b45455288acd --- /dev/null +++ b/README.md @@ -0,0 +1,53 @@ +Java Enterprise Online Project +=============================== +Наиболее востребованные технологии /инструменты / фреймворки Java Enterprise: +Maven/ Spring/ Security/ JPA(Hibernate)/ REST(Jackson)/ Bootstrap(CSS)/ jQuery + plugins. + +**Старт проекта 10.09.2015** + +Вводное занятие +=============== + +## Описание проекта + +#### Демо разрабатываемого приложения + +## Системы управления версиями. Git. + +- Система управления версиями. VCS/DVSC. +- Ресурсы: + - Интерактивная Git обучалка + - Основы Git + - Working with remote repositories + - Видео по обучению Git + - Как начать работать с GitHub: быстрый старт + - Справочник в графическом виде + - Git Overview + +## Работа с проектом (выполнять инструкции) +- **Prepare_ to_ HW0.patch (скачать и положить в каталог вашего проекта)** +- Доступно о Java 8 Lambda + +## Инструкция по шагам (из видео): +- Установить ПО (git, JDK8, IntelliJ IDEA, Maven) +- Создать аккаунт на GitHub +- Сделать Fork ЭТОГО проекта (https://github.com/JavaOPs/topjava) +- Сделать локальный репозиторий проекта: +
git clone https://github.com/[Ваш аккаунт]/topjava.git
+- Открыть и настроить проект в IDEA +- По ходу видео сделать Apply Patch... скаченного патча Prepare_ to_ HW0.patch +- Закоммитить и запушить изменения (commit + push) +- Сделать ветку домашнего задания +- Выполнить задание и залить на GitHub (commit + push) +- Отослать в skype мне ссылку вашей ветки GitHub (при оплате расширенного участия) +- Переключиться в основную ветку проекта master. + +### Вы готовы к участию в проекте! + +- Ресурсы + - Java 8: Lambda выражения + - Java 8 Date and Time API + - Java 8: Потоки + - Pуководство по Java 8 Stream + - Лямбда-выражения в Java 8 diff --git a/description.md b/description.md new file mode 100644 index 000000000000..c58f903605d4 --- /dev/null +++ b/description.md @@ -0,0 +1,64 @@ +#### Разработка полнофункционального Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей используя наиболее популярные инструменты и технологии Java: Maven, Spring, Security, JPA(Hibernate), REST(Jackson), Bootstrap, jQuery + plugins +- Основное внимание будет уделяться способам решения многочисленных проблем разработки в Spring/JPA, а также структурному (красивому и надежному) java кодированию и архитектуре приложения. +- Каждая итерация проекта в закрепляется домашним заданием по реализации схожей функциональности. Следующее занятие начинается с разбора домашних заданий. +- Большое внимание уделяется тестированию кода: в проекте ~ 85 JUnit тестов. +- Несмотря на относительно небольшой размер, приложение разрабатывается с нуля как большой проект (например мы используем кэш 2-го уровня Hibernate, настраиваем Jenkins для работы с ленивой загрузкой +Hibernate, делаем конверторы для типов LocalDateTime (Java 8 time API), которые еще не поддерживаются ни JPA/Hibernate, ни Jackson/json). + Разбираются архитектурные паттерны: слои приложения и как правильно разбивать логику по слоям, когда нужно применят Data Transfer Object. + Т.е на выходе получается не учебный проект, а хорошо маштабируемый шаблон для большого проекта на всех пройденных технологиях. +- Большое внимание уделяется деталям: популяция базы, использование транзакционности, тесты сервисов и REST + контроллеров, насторойка EntityManagerFactory, + выбор реализации пула коннектов. Особое внимание уделяется работе с базой: через Spring JDBC, Spring ORM и + Spring Data Jpa. +- Используются самые востребованные на сегодняшний момент фреймворки: Maven, Spring Security 4 + вместе с Spring Security Test, наиболее удобный для работы с базой проект Spring Data Jpa, библиотека логирования logback, реализующая SLF4J, повсеместно используемый Bootstrap и jQuery. + +## Архитектура проекта. Персистентность. +- Системы управления версиями +- Java 8: Lambda, Stream API +- Обзор используемых в проекте технологий и инструментов. +- Maven, другие инструменты сборки. +- WAR. Веб-контейнер Tomcat. Сервлеты. +- Логирование. +- Обзор стандартных библиотек. Apache Commons, Guava +- Слои приложения. Создание каркаса приложения. +- Обзор Spring Framework. Spring Context. +- Тестирование через JUnit. +- Spring Test +- Базы данных. PostgreSQL. Обзор NoSQL и Java persistence solution без ORM. +- Настройка Database в IDEA. +- Скрипты инициализации базы. Spring Jdbc Template. +- Spring: инициализация и популирование DB +- ORM. Hibernate. JPA. +- Поддержка HSQLDB +- Транзакции +- Профили Maven и Spring +- Пул коннектов +- Spring Data JPA +- Spring кэш +- Кэш Hibernate + +## Разработка WEB +- Spring Web +- JPS, JSTL, i18n +- Tomcat maven plugin. JNDI +- Spring Web MVC +- Spring Internationalization +- Тестирование Spring MVC +- REST контроллеры +- Тестирование REST контроллеров. Jackson. +- jackson-datatype-hibernate. Тестирование через матчеры. +- Тестирование через SoapUi. UTF-8 +- WebJars. Dandelion bundles +- Bootstrap. Datatables. +- AJAX. jQuery. Notifications. +- Spring Security +- Spring Binding/Validation +- Работа с Datatables через Ajax. +- Spring Security Test +- Encoding password +- CSRF +- form-login. Spring Security Taglib +- Handler interceptor +- Spring Exception Handling +- Деплой в Heroku From 9c14b94aded255732286adb4a88ec8ae484b94bc Mon Sep 17 00:00:00 2001 From: Grigory Kislin Date: Sat, 17 Oct 2015 23:26:34 +0300 Subject: [PATCH 2/3] Update description --- README.md | 26 ++++++++++++++++++++++---- description.md | 3 +++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b45455288acd..77a0b927483e 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,14 @@ Java Enterprise Online Project Наиболее востребованные технологии /инструменты / фреймворки Java Enterprise: Maven/ Spring/ Security/ JPA(Hibernate)/ REST(Jackson)/ Bootstrap(CSS)/ jQuery + plugins. -**Старт проекта 10.09.2015** - Вводное занятие =============== ## Описание проекта +### Демо разрабатываемого приложения -#### Демо разрабатываемого приложения +#### Wiki +#### Форум ## Системы управления версиями. Git. @@ -24,9 +24,10 @@ Maven/ Spring/ Security/ JPA(Hibernate)/ REST(Jackson)/ Bootstrap(CSS)/ jQuery + - Как начать работать с GitHub: быстрый старт - Справочник в графическом виде - Git Overview + - Видеокурс по Git ## Работа с проектом (выполнять инструкции) -- **Prepare_ to_ HW0.patch (скачать и положить в каталог вашего проекта)** +- **Prepare_ to_ HW0.patch (скачать и положить в каталог вашего проекта)** - Доступно о Java 8 Lambda ## Инструкция по шагам (из видео): @@ -51,3 +52,20 @@ Maven/ Spring/ Security/ JPA(Hibernate)/ REST(Jackson)/ Bootstrap(CSS)/ jQuery + - Java 8: Потоки - Pуководство по Java 8 Stream - Лямбда-выражения в Java 8 + - Time complexity + +## Домашнее задание HW0 + Реализовать UserMealsUtil.getFilteredMealsWithExceeded: + - должны возвращаться только записи между startTime и endTime + - поле UserMealWithExceed.exceed должно показывать, + превышает ли сумма калорий за весь день параметра метода caloriesPerDay + + Т.е UserMealWithExceed - это запись одной еды, но поле exceeded + будет одинаково для всех записей за этот день. + + - Проверте результат выполнения ДЗ! + - Оцените Time complexity вашего алгоритма. + +Optional + + Сделать реализация через Java 8 Stream API diff --git a/description.md b/description.md index c58f903605d4..f47fdca7eb54 100644 --- a/description.md +++ b/description.md @@ -1,3 +1,6 @@ +#### Старт проекта 26.11.2015 +Присылайте заявки в skype:grigory.kislin + #### Разработка полнофункционального Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей используя наиболее популярные инструменты и технологии Java: Maven, Spring, Security, JPA(Hibernate), REST(Jackson), Bootstrap, jQuery + plugins - Основное внимание будет уделяться способам решения многочисленных проблем разработки в Spring/JPA, а также структурному (красивому и надежному) java кодированию и архитектуре приложения. - Каждая итерация проекта в закрепляется домашним заданием по реализации схожей функциональности. Следующее занятие начинается с разбора домашних заданий. From 26e094474d161cafc04a1c1ccfbebb55e26253fa Mon Sep 17 00:00:00 2001 From: Grigory Kislin Date: Sat, 17 Oct 2015 23:53:25 +0300 Subject: [PATCH 3/3] Add video icon --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 77a0b927483e..30559852fe65 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,9 @@ Maven/ Spring/ Security/ JPA(Hibernate)/ REST(Jackson)/ Bootstrap(CSS)/ jQuery + #### Wiki #### Форум -## Системы управления версиями. Git. + + +## ![video](http://s.ytimg.com/yts/img/favicon-vflz7uhzw.ico) Системы управления версиями. Git. - Система управления версиями. VCS/DVSC. @@ -26,7 +28,7 @@ Maven/ Spring/ Security/ JPA(Hibernate)/ REST(Jackson)/ Bootstrap(CSS)/ jQuery + - Git Overview - Видеокурс по Git -## Работа с проектом (выполнять инструкции) +## ![video](http://s.ytimg.com/yts/img/favicon-vflz7uhzw.ico) Работа с проектом (выполнять инструкции) - **Prepare_ to_ HW0.patch (скачать и положить в каталог вашего проекта)** - Доступно о Java 8 Lambda