Skip to content

Readme improve #207

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 46 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
fbec6db
Add description
JavaWebinar Nov 5, 2016
81a0a1a
Add HW0 comments
JavaWebinar Nov 10, 2016
4f29fe7
Update README.md
JavaOPs Nov 30, 2016
fab7022
Update README.md
JavaOPs Dec 1, 2016
ce1caba
Update README.md
JavaOPs Dec 1, 2016
c01186b
Prepare to HW0
meirakhmetov Dec 4, 2016
25dc217
1_1_HW0
meirakhmetov Dec 21, 2016
f7860da
1_2_HW0_cycle
meirakhmetov Dec 21, 2016
f48e28a
1_3_switch_to_war
meirakhmetov Dec 21, 2016
1d4c218
1_4_add_servlet_api
meirakhmetov Dec 21, 2016
502dd4a
1_4_add_servlet_api2
meirakhmetov Dec 21, 2016
0f5921b
1_5_forward_to_redirect
meirakhmetov Dec 22, 2016
f0250cb
1_6_logging
meirakhmetov Dec 22, 2016
6b461d9
1_6_remote_jmx
meirakhmetov Dec 22, 2016
24b92d1
HW1
meirakhmetov Dec 23, 2016
274b8ef
HW1_CRUD
meirakhmetov Jan 16, 2017
d18ae8d
2_3_app_layers
meirakhmetov Jan 16, 2017
b7c1ab2
2_4_add_spring_context
meirakhmetov Jan 17, 2017
fc99f7b
2_5_add_dependency_injection
meirakhmetov Jan 17, 2017
9f611f4
2_5_add_dependency_injection
meirakhmetov Jan 17, 2017
14ffad3
2_6_add_annotation_processing
meirakhmetov Jan 17, 2017
2aa144c
3_0_fix_validate
meirakhmetov Jan 17, 2017
951c7d1
3_01_HW2_repository
meirakhmetov Jan 17, 2017
564049b
3_01_HW2_repository
meirakhmetov Jan 17, 2017
379c502
3_02_HW2_meal_layers
meirakhmetov Jan 17, 2017
07a9a74
3_03_HW2_optional_MealServlet
meirakhmetov Jan 17, 2017
6ed96bf
3_4_HW2_optional_filter
meirakhmetov Jan 17, 2017
bb68b77
3_5_HW2_optional_select_user
meirakhmetov Jan 17, 2017
1106ce7
3_06_bean_life_cycle
meirakhmetov Jan 17, 2017
0eed750
3_07_add_junit
meirakhmetov Jan 17, 2017
e1f7370
3_08_add_spring_test
meirakhmetov Jan 17, 2017
f2e869e
3_09_add_postgresql
meirakhmetov Jan 17, 2017
cd1216f
3_10_populate_and_init_db
meirakhmetov Jan 18, 2017
f7a4702
3_11_impl_JdbcUserRepository
meirakhmetov Jan 18, 2017
970bbd3
3_12_test_UserService
meirakhmetov Jan 18, 2017
3330e80
3_13_test_logging
meirakhmetov Jan 18, 2017
710f0b2
3_14_fix_servlet
meirakhmetov Jan 18, 2017
0b9d329
4_0_fix
meirakhmetov Jan 19, 2017
f0c9bcb
4_1_HW3
meirakhmetov Jan 19, 2017
071a6d5
4_2_HW3_optional
meirakhmetov Jan 19, 2017
da0852d
4_3_improve_code
meirakhmetov Jan 19, 2017
74a7205
4_4_init_and_populate_db
meirakhmetov Jan 19, 2017
577298e
4_5_create_mock_test_ctx
meirakhmetov Jan 19, 2017
21a38c3
Update README.md
meirakhmetov Nov 25, 2024
59b9c05
Update Main.java
meirakhmetov Nov 25, 2024
ade580e
added var test to Main.java
meirakhmetov Nov 25, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,4 @@ out
target
*.iml
log



*.patch
13 changes: 13 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# https://docs.travis-ci.com/user/languages/java/
language: java
jdk: oraclejdk8

#https://dzone.com/articles/travis-ci-tutorial-java-projects
cache:
directories:
- $HOME/.m2

# https://docs.travis-ci.com/user/database-setup/#PostgreSQL
before_script:
- psql -c 'create database topjava' -U postgres
- psql -c 'create user "user"; grant all privileges on database topjava to "user"' -U postgres
145 changes: 145 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
TEST
Java Enterprise Online Project
===============================
Наиболее востребованные технологии /инструменты / фреймворки Java Enterprise:
Maven/ Spring/ Security/ JPA(Hibernate)/ REST(Jackson)/ Bootstrap(CSS)/ jQuery + plugins.

Когда вы слышите что-то, вы забываете это.
Когда вы видите что-то, вы запоминаете это.
Но только когда вы начинаете делать это,
вы начинаете понимать это

Старинная китайская поговорка

## <a href="description.md">Описание и план проекта</a>
### <a href="http://topjava.herokuapp.com/" target=_blank>Демо разрабатываемого приложения</a>
### <a href="https://github.com/JavaOPs/topjava/wiki">Требования к участникам, Wiki</a>
### <a href="cv.md">Составление резюме, подготовка к интервью, поиск работы</a>

Вводное занятие
===============
## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) <a href="https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s">Системы управления версиями. Git.
- **<a href="https://github.com/JavaOPs/topjava/wiki/Git">Wiki по ведению проекта в Git</a>**
- <a href="http://ru.wikipedia.org/wiki/Система_управления_версиями">Система управления версиями</a>. <a
href="http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F%D0%BC%D0%B8#.D0.A0.D0.B0.D1.81.D0.BF.D1.80.D0.B5.D0.B4.D0.B5.D0.BB.D1.91.D0.BD.D0.BD.D1.8B.D0.B5_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B_.D1.83.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F_.D0.B2.D0.B5.D1.80.D1.81.D0.B8.D1.8F.D0.BC.D0.B8">VCS/DVSC</a>.
- Ресурсы:
- <a href="https://try.github.io/levels/1/challenges/1">Интерактивная Git обучалка</a>
- <a href="http://learngitbranching.js.org/">Еще одна интерактивная обучалка, по русски</a>
- <a href="https://git-scm.com/book/ru/v2">Книга Git</a>
- <a href="https://illustrated-git.readthedocs.org/en/latest/#working-with-remote-repositories">Working with remote repositories</a>
- <a href="https://www.youtube.com/playlist?list=PLIU76b8Cjem5B3sufBJ_KFTpKkMEvaTQR">Видео по обучению Git</a>
- <a href="https://blog.interlinked.org/tutorials/git.html">Git Overview</a>
- <a href="http://geekbrains.ru/gitstart">Видеокурс по Git</a>

## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) <a href="https://drive.google.com/open?id=0B9Ye2auQ_NsFZDdaaU5fZEo4X3c">Работа с проектом (выполнять инструкции)</a>
- **<a href="https://drive.google.com/open?id=0B9Ye2auQ_NsFRXM4WVdTTGN3Q28">Prepare_ to_ HW0.patch (скачать и положить в каталог вашего проекта)</a>**
- <a href="http://www.youtube.com/watch?v=_PDIVhEs6TM">Доступно о Java 8 Lambda</a>

## Инструкция по шагам (из видео):</h3>
- <a href="http://javawebinar.ru/#/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>
- Открыть и настроить проект в 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#%D0%9F%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D1%83-utf-8">Поставить кодировку 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>
- По ходу видео сделать Apply Patch... скаченного патча Prepare_ to_ HW0.patch
- Закоммитить и запушить изменения (commit + push)
- Сделать ветку домашнего задания
- Выполнить задание и залить на GitHub (commit + push)
- Переключиться в основную ветку проекта master.

## ![hw](https://cloud.githubusercontent.com/assets/13649199/13672719/09593080-e6e7-11e5-81d1-5cb629c438ca.png) Домашнее задание HW0

- <a href="http://www.mscharhag.com/2014/02/java-8-datetime-api.html">Java 8 Date and Time API</a>
- <a href="https://tproger.ru/translations/algorithms-and-data-structures">Алгоритмы и структуры данных для начинающих: сложность алгоритмов</a>
- <a href="https://drive.google.com/file/d/0B9Ye2auQ_NsFNEJWRFJkVDA3TkU/view">Time complexity</a>
- <a href="https://ru.wikipedia.org/wiki/Временная_сложность_алгоритма">Временная сложность алгоритма</a>
- <a href="https://ru.wikipedia.org/wiki/Вычислительная_сложность">Вычислительная сложность</a>
```
Реализовать метод UserMealsUtil.getFilteredWithExceeded:
- должны возвращаться только записи между startTime и endTime
- поле UserMealWithExceed.exceed должно показывать,
превышает ли сумма калорий за весь день параметра метода caloriesPerDay

Т.е UserMealWithExceed - это запись одной еды, но поле exceeded будет одинаково для всех записей за этот день.

- Проверте результат выполнения ДЗ (можно проверить логику в http://topjava.herokuapp.com , список еды)
- Оцените Time complexity вашего алгоритма, если он O(N*N)- попробуйте сделать O(N).
```
Optional

- <a href="http://devcolibri.com/4137#t2">Java 8: Lambda выражения</a>
- <a href="http://devcolibri.com/4274#t7">Java 8: Потоки</a>
- <a href="http://prologistic.com.ua/polnoe-rukovodstvo-po-java-8-stream.html">Pуководство по Java 8 Stream</a>
- <a href="http://habrahabr.ru/post/224593/">Лямбда-выражения в Java 8</a>
- <a href="https://github.com/winterbe/java8-tutorial">A Guide to Java 8</a>
- <a href="http://habrahabr.ru/company/luxoft/blog/270383/">Шпаргалка Java Stream API</a>
- <a href="https://www.youtube.com/watch?v=hEyCK4ueBlc">Алексея Владыкин: Элементы функционального программирования в Java</a>
- <a href="http://stackoverflow.com/questions/28319064/java-8-best-way-to-transform-a-list-map-or-foreach">stream.map vs forEach</a>

```
Сделать реализация через Java 8 Stream API. Заменяйте forEach оператором stream.map(..)
```

## ![error](https://cloud.githubusercontent.com/assets/13649199/13672935/ef09ec1e-e6e7-11e5-9f79-d1641c05cbe6.png) Замечания к HW0
- Код проекта менять можно! Одна из распространенных ошибок как в тестовых заданиях на собеседовании, так и при работе на проекте, что ничего нельзя менять. Конечно при правках в рабочем проекте обязятельно нужно проконсультироваться/проревьюится у авторов кода (находится по истории VCS)
- Наследовать `UserMealWithExceed` от `UserMeal` я не буду, т.к. это разные сущности: Transfer Object и Entity. Мы будет их проходить на 2м уроке.
- Правильная реализация должна быть простой и красивой, можно сделать 2-мя способами: через стримы и через циклы. Сложность должна быть O(N), т.е. без вложенных стримов и циклов.
- При реализации через `Stream` заменяйте `forEach` оператором `stream.map(..)`
- Объявляйте переменные непосредственно перед использованием
- Пользуйтесь форматированием кода в IDEA: `Alt+Ctrl+L`

-----

### Полезные ресурсы
> ВНИМАНИЕ: основы JavaSсript необходимы для понимания проекта, начиная с 8-го занятия!

Все остальное - опционально.

#### HTML, JavaScript, CSS
- <a href="http://www.w3schools.com/default.asp">HTML, CSS, JAVASCRIPT, SQL, JQUERY, BOOTSTRAP</a>
- <a href="https://www.youtube.com/watch?v=j0ycGQKqMT4">Введение в программирование на JavaScript</a>
- <a href="http://www.intuit.ru/studies/courses/1102/134/info">Основы работы с HTML/CSS/JavaScript</a>
- <a href="http://itchief.ru/lessons/javascript/94-javascript-introduction">JavaScript - Основы</a>
- <a href="http://itchief.ru/lessons/bootstrap-3/19-introduction-to-twitter-bootstrap-3">Bootstrap 3 - Основы</a>
- <a href="http://anton.shevchuk.name/jquery/">jQuery для начинающих</a>

#### Java (базовые вещи)
- <a href="http://www.intuit.ru/studies/courses/16/16/info">Интуит. Программирование на Java</a>
- <a href="http://ggenikus.github.io/blog/2014/05/04/gc/">Основы Java garbage collection</a>
- <a href="https://habrahabr.ru/post/134102/">Размер Java объектов</a>
- <a href="http://www.javaspecialist.ru/p/blog-page.html">Блог о памяти, сборщике мусора, многопоточности и производительности в JAVA</a>
- <a href="http://www.quizful.net/post/java-reflection-api">Введение в Java Reflection API</a>
- <a href="https://habrahabr.ru/users/tarzan82/topics/">Структуры данных в картинках</a>
- <a href="https://habrahabr.ru/company/luxoft/blog/157273/">Обзор java.util.concurrent.*</a>
- <a href="http://www.skipy.ru/technics/synchronization.html">Синхронизация потоков</a>
- <a href="http://java67.blogspot.ru/2014/08/difference-between-string-literal-and-new-String-object-Java.html">String literal pool</a>
- <a href="https://habrahabr.ru/post/132241/">Маленькие хитрости Java</a>
- <a href="https://github.com/winterbe/java8-tutorial">A Guide to Java 8</a>

#### Сервлеты
- <a href="http://devcolibri.com/4284">Как создать Servlet? Полное руководство.</a>
- <a href="https://danielniko.wordpress.com/2012/04/17/simple-crud-using-jsp-servlet-and-mysql/">Простое CRUD приложение на JSP и сервлетах</a>

#### JDBC, SQL
- <a href="https://habrahabr.ru/post/123636/">Основы SQL на примере задачи</a>
- <a href="https://www.youtube.com/playlist?list=PLIU76b8Cjem5qdMQLXiIwGLTLyUHkTqi2">Уроки по JDBC</a>
- <a href="https://www.codecademy.com/learn/learn-sql">Learn SQL</a>
- <a href="http://www.intuit.ru/studies/courses/5/5/info">Интуит. Основы SQL</a>
- <a href="http://campus.codeschool.com/courses/try-sql/contents">Try SQL</a>
- <a href="https://stepic.org/course/Введение-в-базы-данных-551">Курс "Введение в базы данных"</a>

#### Разное
- <a href="http://jeeconf.com/materials/intellij-idea/">Эффективная работа с кодом в IntelliJ IDEA</a>
- <a href="http://www.quizful.net/test">Quizful- тесты онлайн</a>
- <a href="https://stepic.org/course/Введение-в-Linux-73">Введение в Linux</a>

#### Книги
- <a href="http://www.ozon.ru/context/detail/id/24828676/">Джошуа Блох: Java. Эффективное программирование. Второе издание</a>
- <a href="http://www.labirint.ru/books/87603/">Гамма, Хелм, Джонсон: Приемы объектно-ориентированного проектирования. Паттерны проектирования</a>
- <a href="http://www.bookvoed.ru/book?id=639284">Редмонд Э.: Семь баз данных за семь недель. Введение в современные базы данных и идеологию NoSQL</a>
- <a href="http://www.ozon.ru/context/detail/id/3174887/">Brian Goetz: Java Concurrency in Practice</a>
- <a href="http://bookvoed.ru/book?id=2593572">G.L. McDowell: Cracking the Coding Interview</a>
4 changes: 4 additions & 0 deletions config/setenv.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
rem run tomcat with JMX ability
rem Run Tomcat as admin
rem for remote connection add -Djava.rmi.server.hostname=TomcatServer_IP
set CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
4 changes: 4 additions & 0 deletions config/setenv.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# run tomcat with JMX ability as admin
# for remote connection add -Djava.rmi.server.hostname=TomcatServer_IP
export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
Loading