From ec2f630a838ca8d40516e6ebf44e2e8471359e06 Mon Sep 17 00:00:00 2001 From: JavaOPs Date: Fri, 26 Nov 2021 12:02:23 +0300 Subject: [PATCH 1/7] Fix HW04 (lesson05) --- test/ru/javawebinar/basejava/storage/AbstractStorageTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/ru/javawebinar/basejava/storage/AbstractStorageTest.java b/test/ru/javawebinar/basejava/storage/AbstractStorageTest.java index 895afad1..9eefcc7f 100644 --- a/test/ru/javawebinar/basejava/storage/AbstractStorageTest.java +++ b/test/ru/javawebinar/basejava/storage/AbstractStorageTest.java @@ -58,7 +58,7 @@ public void update() throws Exception { @Test(expected = NotExistStorageException.class) public void updateNotExist() throws Exception { - storage.get("dummy"); + storage.update(new Resume("dummy")); } @Test From 73310ca754322e1056c94a42f4632a3fa3c884c3 Mon Sep 17 00:00:00 2001 From: JavaOPs Date: Mon, 7 Feb 2022 23:37:19 +0300 Subject: [PATCH 2/7] Add new design --- .../basejava/model/ContactType.java | 9 +- .../basejava/web/ResumeServlet.java | 19 +- web/WEB-INF/jsp/edit.jsp | 159 ++++++++-------- web/WEB-INF/jsp/fragments/footer.jsp | 8 +- web/WEB-INF/jsp/fragments/header.jsp | 12 +- web/WEB-INF/jsp/list.jsp | 81 +++++--- web/WEB-INF/jsp/view.jsp | 111 +++++------ web/css/edit-resume-styles.css | 173 ++++++++++++++++++ web/css/resume-list-styles.css | 108 +++++++++++ web/css/style.css | 71 ------- web/css/styles.css | 148 +++++++++++++++ web/css/theme/dark.css | 27 +++ web/css/theme/light.css | 27 +++ web/css/theme/purple.css | 27 +++ web/css/view-resume-styles.css | 100 ++++++++++ web/img/add.png | Bin 698 -> 0 bytes web/img/dark/add-person.svg | 4 + web/img/dark/edit.svg | 10 + web/img/dark/remove.svg | 4 + web/img/delete.png | Bin 695 -> 0 bytes web/img/email.png | Bin 530 -> 0 bytes web/img/gh.png | Bin 687 -> 0 bytes web/img/left_arrow.svg | 4 + web/img/light/add-person.svg | 11 ++ web/img/light/edit.svg | 10 + web/img/light/remove.svg | 11 ++ web/img/lin.png | Bin 639 -> 0 bytes web/img/pencil.png | Bin 474 -> 0 bytes web/img/purple/add-person.svg | 4 + web/img/purple/edit.svg | 10 + web/img/purple/remove.svg | 4 + web/img/s.gif | Bin 43 -> 0 bytes web/img/skype.png | Bin 791 -> 0 bytes web/img/so.png | Bin 459 -> 0 bytes 34 files changed, 921 insertions(+), 231 deletions(-) create mode 100644 web/css/edit-resume-styles.css create mode 100644 web/css/resume-list-styles.css delete mode 100644 web/css/style.css create mode 100644 web/css/styles.css create mode 100644 web/css/theme/dark.css create mode 100644 web/css/theme/light.css create mode 100644 web/css/theme/purple.css create mode 100644 web/css/view-resume-styles.css delete mode 100644 web/img/add.png create mode 100644 web/img/dark/add-person.svg create mode 100644 web/img/dark/edit.svg create mode 100644 web/img/dark/remove.svg delete mode 100644 web/img/delete.png delete mode 100644 web/img/email.png delete mode 100644 web/img/gh.png create mode 100644 web/img/left_arrow.svg create mode 100644 web/img/light/add-person.svg create mode 100644 web/img/light/edit.svg create mode 100644 web/img/light/remove.svg delete mode 100644 web/img/lin.png delete mode 100644 web/img/pencil.png create mode 100644 web/img/purple/add-person.svg create mode 100644 web/img/purple/edit.svg create mode 100644 web/img/purple/remove.svg delete mode 100644 web/img/s.gif delete mode 100644 web/img/skype.png delete mode 100644 web/img/so.png diff --git a/src/ru/javawebinar/basejava/model/ContactType.java b/src/ru/javawebinar/basejava/model/ContactType.java index 12651afe..989fa64e 100644 --- a/src/ru/javawebinar/basejava/model/ContactType.java +++ b/src/ru/javawebinar/basejava/model/ContactType.java @@ -13,7 +13,12 @@ public String toHtml0(String value) { MAIL("Почта") { @Override public String toHtml0(String value) { - return getTitle() + ": " + toLink("mailto:" + value, value); + return getTitle() + ": " + toLink(value); + } + + @Override + public String toLink(String value) { + return (value == null) ? "" : toLink("mailto:" + value, value); } }, LINKEDIN("Профиль LinkedIn") { @@ -64,6 +69,6 @@ public String toLink(String href) { } public static String toLink(String href, String title) { - return "" + title + ""; + return "" + title + ""; } } diff --git a/src/ru/javawebinar/basejava/web/ResumeServlet.java b/src/ru/javawebinar/basejava/web/ResumeServlet.java index 7587c78c..fdf4164f 100644 --- a/src/ru/javawebinar/basejava/web/ResumeServlet.java +++ b/src/ru/javawebinar/basejava/web/ResumeServlet.java @@ -13,16 +13,26 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; public class ResumeServlet extends HttpServlet { + private enum THEME { + dark, light, purple + } + private Storage storage; // = Config.get().getStorage(); + private final Set themes = new HashSet<>(); // https://stackoverflow.com/a/4936895/548473 @Override public void init(ServletConfig config) throws ServletException { super.init(config); storage = Config.get().getStorage(); + for (THEME t : THEME.values()) { + themes.add(t.name()); + } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException { @@ -93,12 +103,14 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) } else { storage.update(r); } - response.sendRedirect("resume"); + response.sendRedirect("resume?theme=" + getTheme(request)); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException { String uuid = request.getParameter("uuid"); String action = request.getParameter("action"); + request.setAttribute("theme", getTheme(request)); + if (action == null) { request.setAttribute("resumes", storage.getAllSorted()); request.getRequestDispatcher("/WEB-INF/jsp/list.jsp").forward(request, response); @@ -160,4 +172,9 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t ("view".equals(action) ? "/WEB-INF/jsp/view.jsp" : "/WEB-INF/jsp/edit.jsp") ).forward(request, response); } + + private String getTheme(HttpServletRequest request) { + String theme = request.getParameter("theme"); + return themes.contains(theme) ? theme : THEME.light.name(); + } } diff --git a/web/WEB-INF/jsp/edit.jsp b/web/WEB-INF/jsp/edit.jsp index 88a98e3f..ddc55367 100644 --- a/web/WEB-INF/jsp/edit.jsp +++ b/web/WEB-INF/jsp/edit.jsp @@ -8,91 +8,96 @@ - + + + Резюме ${resume.fullName} -
-
- -

Имя:

-
- -
-

Контакты:

- -
-
${type.title}
-
-
-
-
- - - -

${type.title}

- - - - - - - - - - - - -
-
Название учереждения:
-
-
-
-
Сайт учереждения:
-
- -
-
-
+ + + +
+
+
ФИО
+ + +
Контакты
+ + + + + +
+ +
Секции
+ + + + +
${type.title}
+ + + + + + + + + + + + + +
+
+
+ +<%-- --%> + + + + +<%-- --%> + -
-
Начальная дата:
-
- -
-
-
-
Конечная дата:
-
- -
-
-
Должность:
-
-
-
-
Описание:
-
-
+ +
+ + +
+ + + +
-
- - - - - - - -
+ + + + + +
+ +
+ + +
+ + + + diff --git a/web/WEB-INF/jsp/fragments/footer.jsp b/web/WEB-INF/jsp/fragments/footer.jsp index ba7048e4..bcfbdb4e 100644 --- a/web/WEB-INF/jsp/fragments/footer.jsp +++ b/web/WEB-INF/jsp/fragments/footer.jsp @@ -1,4 +1,6 @@ <%@page contentType="text/html" pageEncoding="UTF-8" %> - + diff --git a/web/WEB-INF/jsp/fragments/header.jsp b/web/WEB-INF/jsp/fragments/header.jsp index 93803363..22ba67be 100644 --- a/web/WEB-INF/jsp/fragments/header.jsp +++ b/web/WEB-INF/jsp/fragments/header.jsp @@ -1,3 +1,11 @@ <%@page contentType="text/html" pageEncoding="UTF-8" %> -
Управление резюме
-
+ diff --git a/web/WEB-INF/jsp/list.jsp b/web/WEB-INF/jsp/list.jsp index 1cf7b524..a6854c55 100644 --- a/web/WEB-INF/jsp/list.jsp +++ b/web/WEB-INF/jsp/list.jsp @@ -5,32 +5,69 @@ - + + + Список всех резюме +
+
Тема
+
+
+ +
+
+
-
- -
- - - - - - - - - - - - - - - - -
ИмяEmail
${resume.fullName}<%=ContactType.MAIL.toHtml(resume.getContact(ContactType.MAIL))%>
-
+
+
+ +
+ + + + + + + + + + + + + + + + +
ИмяКонтактыРедактироватьУдалить
+ ${resume.fullName} + + <%=ContactType.MAIL.toLink(resume.getContact(ContactType.MAIL))%> + + + + + + + + +
+
+
+
diff --git a/web/WEB-INF/jsp/view.jsp b/web/WEB-INF/jsp/view.jsp index 62ef44f3..19c051d7 100644 --- a/web/WEB-INF/jsp/view.jsp +++ b/web/WEB-INF/jsp/view.jsp @@ -7,88 +7,93 @@ - + + + Резюме ${resume.fullName} -
-

${resume.fullName} 

-

- - - <%=contactEntry.getKey().toHtml(contactEntry.getValue())%>
-
-

-


- + +
+
+
${resume.fullName} + + + +
+
+ + + +
<%=contactEntry.getKey().toHtml(contactEntry.getValue())%> +
+
+
+ +
+ -
- - +
${type.title}
- - - +
<%=((TextSection) section).getContent()%> +
- - - +
<%=((TextSection) section).getContent()%> +
- - - +
    + +
  • ${item}
  • +
    +
- - - - - - - - - - + + -

${type.title}

-

<%=((TextSection) section).getContent()%>

-
- <%=((TextSection) section).getContent()%> -
-
    - -
  • ${item}
  • -
    -
-
+
+ + +
${org.homePage.name}
+
+ + + +
+ + +
+
<%=HtmlUtil.formatDates(position)%> +
+
${position.title}
+
- -

${org.homePage.name}

+ -

${org.homePage.name}

+
${position.description}
-
<%=HtmlUtil.formatDates(position)%> - ${position.title}
${position.description}
-
- -
+ + + + diff --git a/web/css/edit-resume-styles.css b/web/css/edit-resume-styles.css new file mode 100644 index 00000000..cd4f817a --- /dev/null +++ b/web/css/edit-resume-styles.css @@ -0,0 +1,173 @@ +input, textarea { + height: 60px; + width: 100%; + + background: var(--input-field-background); + border: 0; + border-radius: 10px; + box-shadow: 0 0 50px 0 var(--input-field-shadow) inset; + padding: 0 25px 0 25px; + margin: 20px 0 0 0; +} + +input:focus, input:focus-visible, +textarea:focus, textarea:focus-visible { + outline: none !important; + border-color: var(--input-field-background); + box-shadow: 0 0 10px var(--input-field-shadow); +} + +input::placeholder, textarea::placeholder { + font-weight: normal; + font-size: 14px; + line-height: 19px; + + color: var(--text-color); + opacity: 0.5; +} + +textarea { + height: 40px; + padding-top: 20px; +} + +button { + font-family: Open Sans, serif; + font-style: normal; + font-weight: 600; + font-size: 14px; + line-height: 19px; + + align-items: center; + + height: 60px; + margin: 20px 0 10px 0; + + box-sizing: border-box; + border-radius: 10px; +} + +.form-wrapper { + font-family: Open Sans, serif; + font-style: normal; + font-weight: 600; + color: var(--text-color); + + height: 100%; + min-width: 610px; + width: 50%; + margin: 0 0 0 25%; + display: block; +} + +.section { + font-size: 32px; + line-height: 44px; + + margin: 50px 0 0 0; +} + +.field { + min-height: 60px; + color: var(--text-color); +} + +.field-label { + font-size: 24px; + line-height: 33px; + + margin: 40px 0 0 0; +} + +.spacer { + width: 100%; + min-width: 100%; + height: 2px; + margin: 40px 0 10px 0; + + background: var(--spacer-background); + border-radius: 10px; +} + +.date-section { + display: block; +} + +.date { + width: 250px; +} + +.date-margin { + margin-left: 10px; +} + +.green-button { + width: 295px; + margin: 20px 0 10px 0; + + color: var(--submit-button-color); + + border: 2px solid var(--submit-button-color); + background: var(--submit-button-background); +} + +.green-button:hover { + opacity: 0.8; + box-shadow: 0 0 10px var(--submit-button-color); +} + +.small-green-button { + height: 50px; + width: 200px; + margin: 20px 0 0 0; + + color: var(--submit-button-color); + + border: 2px solid var(--submit-button-color); + background: var(--submit-button-background); +} + +.green-button:hover, .small-green-button:hover { + opacity: 0.8; + box-shadow: 0 0 10px var(--submit-button-color); +} + +.button-section { + width: 100%; + margin: 40px 0 90px 0; + display: inline-flex; +} + +.red-cancel-button { + width: 100%; + margin-right: 10px; + + color: var(--button-text-color); + + border: 2px solid var(--cancel-button-color); + background: var(--cancel-button-color); +} + +.red-cancel-button:hover { + color: var(--cancel-button-color); + opacity: 0.8; + box-shadow: 0 0 10px var(--cancel-button-color); + background: var(--button-text-color); +} + +.green-submit-button { + width: 100%; + margin-left: 10px; + + color: var(--button-text-color); + + border: 2px solid var(--save-button-background); + background: var(--save-button-background); +} + +.green-submit-button:hover { + color: var(--save-button-background); + opacity: 0.8; + box-shadow: 0 0 10px var(--save-button-background); + background: var(--button-text-color); +} \ No newline at end of file diff --git a/web/css/resume-list-styles.css b/web/css/resume-list-styles.css new file mode 100644 index 00000000..87ec92ad --- /dev/null +++ b/web/css/resume-list-styles.css @@ -0,0 +1,108 @@ +table { + width: 100%; + border-spacing: 0; + text-align: center; + box-shadow: 0 0 50px var(--table-shadow-color); +} + +.table-wrapper { + height: 100%; + min-width: 610px; + width: 50%; + margin: 0 0 0 25%; + display: block; +} + +.add-resume { + height: 100px; + width: 100%; + display: inline-flex; + align-items: center; + justify-content: end; +} + +.add-resume-title { + font-family: Roboto, serif; + font-style: normal; + font-weight: bold; + font-size: 15px; + + width: 70px; + margin-left: 13px; + display: block; + + color: var(--add-resume-text-color); +} + +.resumes-list { + width: 100%; +} + +.resumes-list img { + height: 20px; +} + +.t-header, tr { + font-family: Roboto, serif; + font-style: normal; + font-weight: bold; + font-size: 16px; + line-height: 19px; + + height: 70px; + + color: var(--table-header-text-color); + background: var(--table-header-background); +} + +.t-body, tr { + font-family: Open Sans, serif; + font-style: normal; + font-weight: normal; + font-size: 14px; + line-height: 19px; + + color: var(--table-text-color); +} + +.t-body, tr:nth-child(odd) { + height: 70px; + background: var(--table-odd-row-background); +} + +.t-body, tr:nth-child(even) { + height: 90px; + background: var(--table-even-row-background); +} + +.resumes-list th:first-of-type { + border-top-left-radius: 10px; +} + +.resumes-list th:last-of-type { + border-top-right-radius: 10px; +} + +.resumes-list tr:last-of-type td:first-of-type { + border-bottom-left-radius: 10px; +} + +.resumes-list tr:last-of-type td:last-of-type { + border-bottom-right-radius: 10px; +} + +.name-column { + text-align: start; + padding: 0 0 0 38px; +} + +.info-column { + text-align: start; + width: 230px !important; + min-width: 180px !important; +} + +.img-column { + width: 110px !important; + min-width: 110px !important; +} \ No newline at end of file diff --git a/web/css/style.css b/web/css/style.css deleted file mode 100644 index 90b58df8..00000000 --- a/web/css/style.css +++ /dev/null @@ -1,71 +0,0 @@ -section { - width: 900px; - margin: auto; -} - -header { - background: none repeat scroll 0 0 #A6C9E2; - color: #2E6E9E; - font-size: 20px; - padding: 5px 20px; - text-align: center; -} - -footer { - background: none repeat scroll 0 0 #A6C9E2; - color: #2E6E9E; - font-size: 20px; - padding: 5px 20px; - margin: 20px 0; - text-align: center; -} - -dl { - background: none repeat scroll 0 0 #FAFAFA; - margin: 8px 0; - padding: 0; -} - -dt { - display: inline-block; - width: 170px; -} - -dd { - display: inline-block; - margin-left: 8px; - vertical-align: top; -} - -h2, h3 { - margin: 15px 0 5px; -} - -li { - margin: 15px 0; -} - -a[href^="skype:"] { - padding-left: 20px !important; - background: url(../img/skype.png) no-repeat center left; -} - -a[href^="mailto:"] { - padding-left: 20px !important; - background: url(../img/email.png) no-repeat center left; -} - -a[href^="https://stackoverflow.com"] { - padding-left: 20px !important; - background: url(../img/so.png) no-repeat center left; -} - -a[href^="https://www.linkedin.com"] { - padding-left: 20px !important; - background: url(../img/lin.png) no-repeat center left; -} - -a[href*="github."] { - padding-left: 20px !important; - background: url(../img/gh.png) no-repeat center left; -} \ No newline at end of file diff --git a/web/css/styles.css b/web/css/styles.css new file mode 100644 index 00000000..fc9b712d --- /dev/null +++ b/web/css/styles.css @@ -0,0 +1,148 @@ +body { + margin: 0; + padding: 0; + overflow: hidden; + background: var(--body-background); +} + +.header { + height: 100px; + width: 100%; + + background: var(--header-background); +} + +.header .arrow:hover { + color: transparent; + text-decoration: none; +} + +.header .resumes-control-title { + margin-left: 16px; + + font-family: Open Sans, serif; + font-style: normal; + font-weight: 600; + font-size: 20px; + + color: var(--header-text-color); +} + +.header .arrow-dot { + height: 30px; + width: 30px; + border-radius: 50%; + margin: 35px 0 0 25%; + background: var(--header-arrow-background); + display: inline-block; + text-align: center; +} + +.header .arrow-dot img { + width: 12px; + margin-top: 9px; + margin-left: -2px; +} + +.footer { + height: 100px; + width: 100%; + + position:absolute; + bottom:0; + + font-family: Open Sans, serif; + font-style: normal; + font-weight: normal; + font-size: 14px; + line-height: 19px; + + display: table; + + color: var(--footer-text-color); + background: var(--header-background); +} + +.footer a { + display:table-cell; + vertical-align:middle; +} + +.footer div { + width: 100%; + text-align: center; +} + +.scrollable-panel { + height: calc(100vh - 200px); + width: 100%; + margin: 0; + overflow: auto; +} + +.text-anchor { + text-decoration: none; +} + +.text-anchor:hover { + opacity: 0.8; + color: var(--anchor-color); + text-decoration: underline; +} + +.no-underline-anchor { + text-decoration: none; +} + +.no-underline-anchor:hover { + opacity: 0.8; +} + +.footer-text-anchor { + color: var(--footer-anchor-color); + text-decoration: none; +} + +.footer-text-anchor:hover { + opacity: 0.8; + text-decoration: underline; +} + +.themes { + font-family: Roboto, serif; + font-style: normal; + font-weight: bold; + font-size: 16px; + line-height: 19px; + + float: right; + display: flex; + margin: 40px 24px 0 0; + + color: var(--theme-text-color); +} + +.theme-title { + width: 45px; +} + +.theme-selector option { + color: var(--table-header-background); + background: var(--table-header-text-color); +} + +.theme-selector select { + color: var(--table-header-text-color); + background: var(--table-header-background); + border: none; +} + +.contact-link { + color: var(--contact-link-color); + text-decoration: none; +} + +.contact-link:hover { + text-decoration: underline; + opacity: 0.8; +} diff --git a/web/css/theme/dark.css b/web/css/theme/dark.css new file mode 100644 index 00000000..9c11d973 --- /dev/null +++ b/web/css/theme/dark.css @@ -0,0 +1,27 @@ +:root { + --header-background: #2A343D; + --header-text-color: #F8F9FA; + --header-arrow-background: #FFFFFF; + --footer-text-color: #F8F9FA; + --footer-anchor-color: #F8F9FA; + --anchor-color: #F8F9FA; + --text-color: #ECEEF2; + --add-resume-text-color: #3F9752; + --body-background: #1A2026; + --table-header-text-color: #F8F9FA; + --table-header-background: #0A0C0F; + --table-text-color: #F8F9FA; + --table-odd-row-background: #12161A; + --table-even-row-background: #1A2026; + --table-shadow-color: rgba(0, 0, 0, 0.5); + --input-field-background: #2A343D; + --input-field-shadow: rgba(0, 0, 0, 0.3); + --spacer-background: #E0E4EA; + --submit-button-color: #3F9752; + --submit-button-background: #1A2026; + --save-button-background: #3F9752; + --cancel-button-color: #F38064; + --button-text-color: #F8F9FA; + --theme-text-color: #ECEEF2; + --contact-link-color: #169FE1; +} \ No newline at end of file diff --git a/web/css/theme/light.css b/web/css/theme/light.css new file mode 100644 index 00000000..33660a3d --- /dev/null +++ b/web/css/theme/light.css @@ -0,0 +1,27 @@ +:root { + --header-background: #EDEFF2; + --header-text-color: #4A586E; + --header-arrow-background: #FFFFFF; + --footer-text-color: #4A586E; + --footer-anchor-color: #4A586E; + --anchor-color: #4A586E; + --text-color: #4A586E; + --add-resume-text-color: #4A586E; + --body-background: #FFFFFF; + --table-header-text-color: #4A586E; + --table-header-background: #E0E4EA; + --table-text-color: #F8F9FA; + --table-odd-row-background: #ECEEF2; + --table-even-row-background: #F8F9FA; + --table-shadow-color: none; + --input-field-background: #F8F9FA; + --input-field-shadow: #E0E4EA; + --spacer-background: #E0E4EA; + --submit-button-color: #319848; + --submit-button-background: #FFFFFF; + --save-button-background: #319848; + --cancel-button-color: #B7616A; + --button-text-color: #F8F9FA; + --theme-text-color: #4A586E; + --contact-link-color: #169FE1; +} \ No newline at end of file diff --git a/web/css/theme/purple.css b/web/css/theme/purple.css new file mode 100644 index 00000000..b3af212c --- /dev/null +++ b/web/css/theme/purple.css @@ -0,0 +1,27 @@ +:root { + --header-background: #7339D4; + --header-text-color: #ECEEF2; + --header-arrow-background: #FFFFFF; + --footer-text-color: #F8F9FA; + --footer-anchor-color: #F8F9FA; + --anchor-color: #F8F9FA; + --text-color: #ECEEF2; + --add-resume-text-color: #F8F9FA; + --body-background: #6129BD; + --table-header-text-color: #F8F9FA; + --table-header-background: #5A10D3; + --table-text-color: #F8F9FA; + --table-odd-row-background: #6212E5; + --table-even-row-background: #6C1DEE; + --table-shadow-color: 0 0 50px rgba(67, 12, 156, 0.5); + --input-field-background: #8A59DB; + --input-field-shadow: #8A59DB; + --spacer-background: #E0E4EA; + --submit-button-color: #ECEEF2; + --submit-button-background: #6129BD; + --save-button-background: #319848; + --cancel-button-color: #AE515A; + --button-text-color: #F8F9FA; + --theme-text-color: #ECEEF2; + --contact-link-color: #169FE1; +} \ No newline at end of file diff --git a/web/css/view-resume-styles.css b/web/css/view-resume-styles.css new file mode 100644 index 00000000..d82beeb1 --- /dev/null +++ b/web/css/view-resume-styles.css @@ -0,0 +1,100 @@ +.form-wrapper { + font-family: Open Sans, serif; + font-style: normal; + font-weight: 600; + color: var(--text-color); + + height: 100%; + min-width: 610px; + width: 50%; + margin: 0 0 0 25%; + display: block; +} + +.full-name { + font-size: 32px; + line-height: 44px; + margin-top: 40px; +} + +.contacts { + font-weight: 300; + font-size: 18px; + line-height: 30px; + margin-top: 21px; +} + +.section-wrapper { + margin-bottom: 83px; +} + +.spacer { + width: 100%; + min-width: calc(100% + 50px); + height: 2px; + margin: 43px 0 77px 0; + + background: var(--spacer-background); + border-radius: 10px; +} + +.section { + font-weight: 600; + font-size: 24px; + line-height: 33px; + margin: 40px 0 24px 0; +} + +.position { + font-weight: 600; + font-size: 18px; + line-height: 25px; +} + +.qualities { + font-weight: 300; + font-size: 18px; + line-height: 25px; +} + +.list { + font-weight: 300; + font-size: 18px; + line-height: 25px; +} + +.job-name { + font-weight: bold; + font-size: 22px; + line-height: 30px; + margin-left: 207px; +} + +.period-position { + display: flex; + margin-top: 10px; +} + +.period { + font-weight: 300; + font-size: 18px; + line-height: 25px; + min-width: 207px; +} + +.position { + font-weight: bold; + font-size: 18px; + line-height: 25px; +} + +.description { + font-weight: 300; + font-size: 18px; + line-height: 25px; + margin: 35px 0 0 207px; +} + +.footer-spacer { + height: 10px; +} \ No newline at end of file diff --git a/web/img/add.png b/web/img/add.png deleted file mode 100644 index 0ea124a744763ffe056b84a56b6100c45303068a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 698 zcmV;r0!96aP)CkTpyMMUf(3l}b2gjyF`6&DIhc6Ox{+>|cFg@&|{O2tC7 zAdLz6G)>ax`#zm{`4v-e;e~nJcjwMIGjrw&!!Yna%fcTaMC0Jn42DzTT{&|D$NC3RR&&_ON0G>EAhaGrFuaO#MVp(S z!sQkK3V!D~*f;U)njb5Xw^&~Hqoi_nfR*x8ItH*)bYU^Hf$uyT+2_3l$ZQ#zw~R?awQu z3Nb1e(3@?6#zy}}TLpGy6TNQoYnWl5tlc?xq~|cg$&V&;nIcMh6M*+cDu+w5D`hwp zv%6;-DsZADZHwyc#Lba(i&WmzO{rfl3saT4`m!n`kl9H0FDvj@pFqLSh-dG8MW(4)oG4Zq#0^#T{7)3X1R;rWC+RGNHrJB`nNlX#((`&os&^9v6tF4a6zNEWb8L%K7_v#KHSMrrP2$@sK(H5->{^ gAb%707*qoM6N<$f(m;$tN;K2 diff --git a/web/img/dark/add-person.svg b/web/img/dark/add-person.svg new file mode 100644 index 00000000..1f780704 --- /dev/null +++ b/web/img/dark/add-person.svg @@ -0,0 +1,4 @@ + + + + diff --git a/web/img/dark/edit.svg b/web/img/dark/edit.svg new file mode 100644 index 00000000..45f5d190 --- /dev/null +++ b/web/img/dark/edit.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/web/img/dark/remove.svg b/web/img/dark/remove.svg new file mode 100644 index 00000000..a504d5ca --- /dev/null +++ b/web/img/dark/remove.svg @@ -0,0 +1,4 @@ + + + + diff --git a/web/img/delete.png b/web/img/delete.png deleted file mode 100644 index ace289edd9f926ac7efbb4fdec05a31bebff5c50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695 zcmV;o0!aOdP)QxDlb83q-g)V>(Fk^6xXjEs=gr)Cm*Fo<^mL4I$34wC5BNF8n89S}#-XQ~^YvJP z0rP`oZ*;)1tns$P{b=pl2d$+AUX=r8v50)?1wKtaf~=~8v8iq7@iUs@V!3vC9|bnoZDKlrp!MjH|$pBKJ@cq?f{ zCVHcD`}cGp5YXv%Ya$H|FfqRb!>HoL)()ikK8 z3Pm`bUM%udCmi94x3Wgy;_K{9I_=cV)$Lo`5e|pMWd*@_tw+Z&FrWK^cOU1F`1W(y z$NMAr)+~I-tpmF*Y*Lkz;vzI~AHmE;%f37G?9C++ycJ$*c#U-y5x&t|@v6DP3x3=6 d&-s@C0{~E>2o(vq?o0px002ovPDHLkV1inyM1%kU diff --git a/web/img/email.png b/web/img/email.png deleted file mode 100644 index 832787392dd9531a54636bfe34a830757faad107..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 530 zcmV+t0`2{YP)gjnO$$OSu5+~ z?GnX?h=lA4Aw)tUQAmVFq0y*l{09woYO#CvJPuUx9E=pyT_#!F+yaE_A#~L~0z7#IZ8fe)ldA+)52({5L z7I&}FQv-y8c`#;(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;HAzH4RCwB~lf6qLQ5400GmbNU#Kd5w7@G_Pf`W*MkV_Ajv7 zLP3zQ1Oi*wSQ!W@w3$}4lcaGJ3=xrlh4UdZqq$q`Og8Ldv%42wbMJeHbI&9gZ6&@ZQ5D|hP zAc`V(cXz2)tIW;K@%s8&jCBGLA)n7%Q&Us2zrQcn*VnSXzAn11i(wf3Qz#Uq-EK>* zR+CgJCHZ{b5|O?O3$E+3y1I&paCUY^E|>eIw4!ixbHm-;9gB;L^m;uKhmsW#5k^Nx z@qHiP_fZsu!I`e>bUGb|hld#&8tTsyfGfi=xV^n4lgVJ3CQnaKBo29=M-)Y@tgP_( z_?U=$H3(p3G8vAJj) + + + diff --git a/web/img/light/add-person.svg b/web/img/light/add-person.svg new file mode 100644 index 00000000..fed04df9 --- /dev/null +++ b/web/img/light/add-person.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/web/img/light/edit.svg b/web/img/light/edit.svg new file mode 100644 index 00000000..bcec11ae --- /dev/null +++ b/web/img/light/edit.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/web/img/light/remove.svg b/web/img/light/remove.svg new file mode 100644 index 00000000..0e96f987 --- /dev/null +++ b/web/img/light/remove.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/web/img/lin.png b/web/img/lin.png deleted file mode 100644 index 4867866213194c310ba674c4b492e7d901781d2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 639 zcmV-_0)YLAP) z5GOhVv}ZX000J{fL_t(|oMlo?OI2YIerDeD9=*rn`mw0A(h%B2VN^mzq-z&0BHC1o zcD5}D`UP!*XwjlSP)Un6fs0HuTSS57q9{|+!i4MBO}p1~&ilSki=z-Y%wh&+hUa5s zbf$85M0|+=@|AQXt|2Njet-A;LhOIo#6GT$-4vWX_k9_*Q>6GB1!FMg=WE1SAAl zujS_-zPWgB?8T?wf$VBa&=`4AcU0aE0Hlb>VzoYBO{HX~7yqb;HCl+PyG^BR+h9}( zL`DISEG{WY0D*KqI3Gx`sKfS)gh1zmFW>@dR6sUF8W}Aou?S1nL`GW^Ti{FL?Y4L_ z<9e?EVk6^nKQX)VYHn45T0MXLtunc=9w2cf)mlC}vpo4@ZBJt5`m?Fw>7}iDj?_T} ziG>SD9aK=V5JBdUc^DPJP+zx@y!Q0tlMg?Wrq~l{?v1K7LLzk@KxEV!$#Q?Rt!aGd Z>_4XnCQ>dLJB0uM002ovPDHLkV1g=L8hii% diff --git a/web/img/pencil.png b/web/img/pencil.png deleted file mode 100644 index d5ba3d5962359f1d6e4c7965e89850570307fe0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 474 zcmV<00VV#4P)RCwBy(#=Z(K^O+`$FQyiC3%oK zWOa$6@}mDhhloB7-Re|ARQC|1AW$jjuq6bB5Z;3bx=2b%Mui{grMgHUMQfs^;@8?V zyJTS6G7ap)%`si2O~Czmj&i09A<0Y66>`{b))W1-3P{8e zYgvHnmSAu|3-6T|+@?)Odk|2_;u$r-zX2(FWnK|!Tg72WfgQ_+j=mBQo2Zb-Ns3cI z_MNU4;0kLnzZaD7pSw_xKWL!>4kGYPb+{(rQU)8ji-uSnO7Z4f z(-Fgz>bqfSW-J9HjweaSupW4H14$Z?%hCT5n6Oj=DOPAqCraJ3KvAGyE;3^&;N-p? zr=BM$OL;(JfFsnyjHMD{d + + + diff --git a/web/img/purple/edit.svg b/web/img/purple/edit.svg new file mode 100644 index 00000000..b6fe15cc --- /dev/null +++ b/web/img/purple/edit.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/web/img/purple/remove.svg b/web/img/purple/remove.svg new file mode 100644 index 00000000..d11f6c57 --- /dev/null +++ b/web/img/purple/remove.svg @@ -0,0 +1,4 @@ + + + + diff --git a/web/img/s.gif b/web/img/s.gif deleted file mode 100644 index 1d11fa9ada9e93505b3d736acb204083f45d5fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 scmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEhy3To@Uw0n;G|I{*Lx diff --git a/web/img/skype.png b/web/img/skype.png deleted file mode 100644 index 4708c21cf05d632505138699446c7a92ed22195f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 791 zcmV+y1L*vTP)>d~#_O}3oo;$G5_XM*TV~kRH zv51FVba1ndG7iI#qO&IsLWI7glM0AfPpcoA6 zvPG0+$uKF&vMhvtGBgYr=#H2X)cOL`0a_>6x9YjL`PD?!WEj^ijOYwLhhTf3lEj8= z8CCfXG=0(06f*vTZ~&Pg&`(Kj5!5oU$}8dOQYQpqs?`s4UiVSQu7HeBF{|K3P^m{v ziVl@A^HtPBh78EW`Pi~l@!d!Qhe?N?@g!Cf=$R5H&cD}iq{vCU*x59=i08LYTp7?Y zM*>`uNP|dOWv+zHei7HhCYnE+IM=5^O8|;#@iDp50KCzx{7yC2QRc=Q>Li|ID4i#v z+%HcXS^Kbwdg`Ez&aMp*Qmt3u8W07jGQp@M;Gk-uB2UI>oMHVV6$g5Lp<~Ff0jdKI z_#J$tEG1S@spN6{njytB8bg9JgW%Ts+~mZE^4>-husfc#`7Xg0xoe3FRZo9EppZ+n zPriq5yi_c#$P&>K((TahLI>*BWMI!Cr>#pcY@m>Ch*Jm4Jp!MhGpzx)0<@03+quA< zQyY*FBZ`K_C}&D3iAKYza$lS&qVicBjC4pV6~TW0*3Oo($HST{=Twn|ja~ssI!F)* z?Uw!KxAA@HS8ZO2|NS4U(a_t7wx~`k&iIxhIKkQn<4jR>+wX));ae0x*?c^;$}_Ei zJkQ>dZHMwvTpGZpn#&}FbCOO1y&b1<>0mPf#01Q4yofJN@jrTTWkTdJ-oYOM1^{@D VFeM3zPc8re002ovPDHLkV1fXCY##ss diff --git a/web/img/so.png b/web/img/so.png deleted file mode 100644 index dae5738a65f7581f38d6f5c21b1ecc5e469a05ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459 zcmV;+0W|)JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf0bof)K~y+TWB5-Z z_|$3r|Ih1ta9s?9^#8uN;{UJxt#D;uW`zF#d1^WF2K;+}|No~vhX4QG-T`a+ad5`} z@7ueGHvpva_oWs8zf>`THT}A{<^ShCSHcF|UlsrV-pV+*!tV=x{(qnA0_J}xlOk-u zpKtH~U!P+2|8yzC|1S@ZgEf3@6!`z^)b#(K`aK9608{b#&ffp03K{<2n(zDn&+{w) z|Gm1767E=IVNHS9|ASKk{@**k=>O-pPrw=;u1@-YcX=d6q~VOl=T~?Bzqr2U|JFu> z|63aj{-0Z0jWxzm3T&+e*Y&I`u(5ZkoQ3=EwfHkzBf&{$)vl$ Date: Wed, 16 Feb 2022 00:59:58 +0300 Subject: [PATCH 3/7] immutable uuids --- .gitignore | 4 +--- src/ru/javawebinar/basejava/Config.java | 15 +++++++++++++++ .../javawebinar/basejava/web/ResumeServlet.java | 4 +++- web/WEB-INF/jsp/edit.jsp | 7 +++++-- web/WEB-INF/jsp/list.jsp | 9 ++++++--- 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index a64f0357..50d27906 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,4 @@ out log lib - - - +storage \ No newline at end of file diff --git a/src/ru/javawebinar/basejava/Config.java b/src/ru/javawebinar/basejava/Config.java index 5111b689..e007b2ab 100644 --- a/src/ru/javawebinar/basejava/Config.java +++ b/src/ru/javawebinar/basejava/Config.java @@ -6,7 +6,9 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.HashSet; import java.util.Properties; +import java.util.Set; public class Config { private static final String PROPS = "/resumes.properties"; @@ -14,6 +16,10 @@ public class Config { private final File storageDir; private final Storage storage; + private Set immutableUuids = new HashSet() {{ // for JDK 9+: Set.of("111", "222"); + add("11111111-1111-1111-1111-111111111111"); + add("22222222-2222-2222-2222-222222222222"); + }}; public static Config get() { return INSTANCE; @@ -37,4 +43,13 @@ public File getStorageDir() { public Storage getStorage() { return storage; } + + public boolean isImmutable(String uuids) { + return immutableUuids.contains(uuids); + } + + public void checkImmutable(String uuids) { + if (immutableUuids.contains(uuids)) + throw new RuntimeException("Зарезервированные резюме нельзя менять"); + } } \ No newline at end of file diff --git a/src/ru/javawebinar/basejava/web/ResumeServlet.java b/src/ru/javawebinar/basejava/web/ResumeServlet.java index fdf4164f..909b0b1c 100644 --- a/src/ru/javawebinar/basejava/web/ResumeServlet.java +++ b/src/ru/javawebinar/basejava/web/ResumeServlet.java @@ -35,7 +35,7 @@ public void init(ServletConfig config) throws ServletException { } } - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException { + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { request.setCharacterEncoding("UTF-8"); String uuid = request.getParameter("uuid"); String fullName = request.getParameter("fullName"); @@ -45,6 +45,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) if (isCreate) { r = new Resume(fullName); } else { + Config.get().checkImmutable(uuid); r = storage.get(uuid); r.setFullName(fullName); } @@ -119,6 +120,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t Resume r; switch (action) { case "delete": + Config.get().checkImmutable(uuid); storage.delete(uuid); response.sendRedirect("resume"); return; diff --git a/web/WEB-INF/jsp/edit.jsp b/web/WEB-INF/jsp/edit.jsp index ddc55367..9242aa01 100644 --- a/web/WEB-INF/jsp/edit.jsp +++ b/web/WEB-INF/jsp/edit.jsp @@ -3,6 +3,7 @@ <%@ page import="ru.javawebinar.basejava.model.OrganizationSection" %> <%@ page import="ru.javawebinar.basejava.model.SectionType" %> <%@ page import="ru.javawebinar.basejava.util.DateUtil" %> +<%@ page import="ru.javawebinar.basejava.Config" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> @@ -91,8 +92,10 @@
- - + + + +
diff --git a/web/WEB-INF/jsp/list.jsp b/web/WEB-INF/jsp/list.jsp index a6854c55..aa8f620b 100644 --- a/web/WEB-INF/jsp/list.jsp +++ b/web/WEB-INF/jsp/list.jsp @@ -1,4 +1,5 @@ <%@ page import="ru.javawebinar.basejava.model.ContactType" %> +<%@ page import="ru.javawebinar.basejava.Config" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> @@ -58,9 +59,11 @@ - - - + + + + + From a77e8c4dd48d24f1e9f02a985d955fbf96d04c6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Wed, 22 Mar 2023 22:39:35 +0300 Subject: [PATCH 4/7] Create rules.md --- rules.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 rules.md diff --git a/rules.md b/rules.md new file mode 100644 index 00000000..ae3e93cf --- /dev/null +++ b/rules.md @@ -0,0 +1,32 @@ +## Правила на курсе BaseJava при проверке ДЗ наставником + +1. Все друг с другом общаются на Ты +1. Взаимодействие с наставником проходит по следующей схеме: + - вы смотрите видеолекции (ссылки на них находятся рядом с иконками логотипа ютуба), изучаете дополнительный материал, выполняете ДЗ + - по мере готовности сообщаете наставнику, что его нужно проверить + - он проверяет и пишет, что требуется исправить + - вы исправляете, он снова проверяет. И так повторяется до тех пор, пока ваше решение не будет соответствовать условию ДЗ и представлению наставника о том, как его нужно выполнить + - если на вашем последнем сообщении наставник ставит 📌, то он его прочитал. Если стоит 🧐, то в данный момент ваше ДЗ на проверке. Если стоит ✔️- ДЗ проверено + - если все верно, то наставник напишет, чтобы вы переходили к следующему уроку +1. Ссылку на свой репозиторий наставнику достаточно скинуть один раз +1. Комментарии к вашему коду будут даваться наставником в краткой форме. Если вам требуется пояснение по какому-то пункту, то задавайте ему дополнительные вопросы для получения более развернутого ответа +1. Переходить к следующему уроку можно после того, как вам об этом сообщит наставник. Не делайте это самостоятельно +1. Для минимизации "простоев" допускается изучение материалов следующего урока, но без просмотра видео Григория, чтобы не раскрывались вопросы реализации ДЗ +1. Максимальное время проверки ДЗ до суток, но как правило раньше +1. Если наставник не проверил ДЗ за указанный срок, то напомните ему о себе (он вас мог случайно пропустить) +1. Доступ к материалам курса у вас остается навсегда +1. Проверка в выходные дни наставников не гарантируется, но возможна +1. Проверка ДЗ действует 4.5 месяца с момента оплаты +1. Если у вас закончился срок проверок ДЗ, то его можно продлить в личном кабинете (ссылка на него есть в конце любого нашего письма) [на сайте](https://javaops.ru/) + +### Расписание проверок ДЗ + +[Igor Mentor](https://basejava-w.slack.com/team/U05000W0FTK) +- выходные дни вторник и четверг +- время проверки с 12:00 по 14:00 и с 18:00 по 20:00 +- проверка ДЗ со 2го по 8й урок + +[Yevhen Mentor](https://basejava-w.slack.com/team/U04UUS4CXB8) +- выходные дни пятница и суббота +- время проверки с 7:30 по 9:00 и c 20:00 по 21:30 +- проверка ДЗ с 9го по 17й урок From 7be8506fa7075af0c1e76fdc1a2dc50e534558b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 12 May 2023 10:39:59 +0300 Subject: [PATCH 5/7] change heroku to startup open lesson --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2f658a34..93062afb 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ - в реляционной базе [PostgreSQL](https://ru.wikipedia.org/wiki/PostgreSQL) - **Установку (деплой) web-приложения:** - в контейнер сервлетов [Tomcat](https://ru.wikipedia.org/wiki/Apache_Tomcat) - - в облачный сервис [Heroku](https://ru.wikipedia.org/wiki/Heroku) + - на [собственный выделенный сервер](https://github.com/JavaOps/startup) > Любое знание стоит воспринимать как подобие семантического дерева: убедитесь в том, что понимаете фундаментальные принципы, то есть ствол и крупные ветки, прежде чем лезть в мелкие листья-детали. Иначе последним не на чем будет держаться From 2a52fe9883e2b2cf3ac1b97760050649d895029f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D0=B0=D0=B6=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Java=20Enterprise?= Date: Fri, 12 May 2023 11:03:21 +0300 Subject: [PATCH 6/7] replace heroku to vds --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 93062afb..3047ee38 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ #### [Занятие 17](https://github.com/JavaWebinar/basejava/blob/lesson/lesson/lesson17.md) - Разбор домашнего задания - - Деплой приложения в облачный сервис Heroku + - Деплой приложения на [собственный выделенный сервер](https://github.com/JavaOps/startup) - Загрузка классов в Java. Classloader - Домашнее задание From 9defc826f0253dce203812ce9e3e0933a7098a71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A7=D0=B8=D0=BC=D0=B0=D0=B5=D0=B2=20=D0=9C=D0=B0=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC?= Date: Mon, 24 Nov 2025 10:34:53 +0300 Subject: [PATCH 7/7] Update rules.md --- rules.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/rules.md b/rules.md index ae3e93cf..924965da 100644 --- a/rules.md +++ b/rules.md @@ -1,6 +1,8 @@ ## Правила на курсе BaseJava при проверке ДЗ наставником +1. Проверка ДЗ проводится в Telegram 1. Все друг с другом общаются на Ты +1. Проверка ДЗ действует 4.5 месяца с момента нажатия вами в личном кабинете кнопки `Принять участие` 1. Взаимодействие с наставником проходит по следующей схеме: - вы смотрите видеолекции (ссылки на них находятся рядом с иконками логотипа ютуба), изучаете дополнительный материал, выполняете ДЗ - по мере готовности сообщаете наставнику, что его нужно проверить @@ -15,18 +17,17 @@ 1. Максимальное время проверки ДЗ до суток, но как правило раньше 1. Если наставник не проверил ДЗ за указанный срок, то напомните ему о себе (он вас мог случайно пропустить) 1. Доступ к материалам курса у вас остается навсегда -1. Проверка в выходные дни наставников не гарантируется, но возможна -1. Проверка ДЗ действует 4.5 месяца с момента оплаты +1. Проверка в выходные дни наставника не гарантируется, но возможна 1. Если у вас закончился срок проверок ДЗ, то его можно продлить в личном кабинете (ссылка на него есть в конце любого нашего письма) [на сайте](https://javaops.ru/) -### Расписание проверок ДЗ +#### Общие рекомендации +- Учитесь грамотно формулировать свой вопрос: "у меня не работает" может иметь тысячи причин. Пишите больше подробностей, что вы сделали, что конкретно не работает, какие появляются ошибки. Присылайте в чат скрины с этими ошибками +- Учитесь гуглить с первых уроков - это важный навык, который нужно качать +- Перед тем как задать вопрос наставнику сначала погуглите; если в течении 2-3 часов вы не найдете ответ, то опишите подробно свою проблему наставнику -[Igor Mentor](https://basejava-w.slack.com/team/U05000W0FTK) -- выходные дни вторник и четверг -- время проверки с 12:00 по 14:00 и с 18:00 по 20:00 -- проверка ДЗ со 2го по 8й урок +#### Расписание проверок ДЗ -[Yevhen Mentor](https://basejava-w.slack.com/team/U04UUS4CXB8) -- выходные дни пятница и суббота -- время проверки с 7:30 по 9:00 и c 20:00 по 21:30 -- проверка ДЗ с 9го по 17й урок +[Максим Чимаев](https://t.me/ch1max) +- выходные дни вторник и четверг +- время проверки с 11:00 по 13:00 и с 17:30 по 19:30 (но не позднее 21:00 по мск. времени) +- проверка в выходные дни не гарантируется, но возможна