diff --git a/lesson/lesson1.md b/lesson/lesson1.md index 3bd9043a..aa5a34c0 100644 --- a/lesson/lesson1.md +++ b/lesson/lesson1.md @@ -1,50 +1,56 @@ # Первое занятие +## [Демо разрабатываемого приложения](http://javaops-demo.ru/basejava/resume?theme=light) + ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Видеообзор курса Basejava](https://www.youtube.com/watch?v=0ydTRfKS9yY) ### Подготовка рабочего окружения -- Установите [JDK8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) (выбрать Accept License Agreement) +- Установите последнюю версию [JDK](https://www.oracle.com/java/technologies/downloads/) - Установите систему управления версиями [Git](http://git-scm.com/downloads) - Создайте аккаунт на [GitHub](https://github.com/) -- Для удобной навигации по файлам на GitHub установите расширение для браузера [Octotree](https://habrahabr.ru/post/223527/) -- Установите [IntelliJ IDEA Community](http://www.jetbrains.com/idea/download/index.html) (Ultimate-версия понадобится позже, при работе с базой данных и web) -> Для версии Ultimate дается 30 дней бесплатного использования. Но в качестве подарка, каждому участнику курса, мы выдаем единоразово купон на 6 месяцев +- Установите [боковую панель](https://topjava.ru/blog/vvedeniye-v-git-github-ustanovka-i-nastroyka#8) для удобной навигации по файлам на GitHub +- Установите [IntelliJ IDEA Community](https://www.jetbrains.com/idea/download/) (Ultimate-версия понадобится позже, при работе с базой данных и web) +- Установите плагин для [Checkstyle](https://topjava.ru/blog/nastroyka-checkstyle-v-intellij-idea) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/open?id=0B_4NpoQW1xfpVjZUTEpvVUN1TTA) -- [Мифический человеко-месяц](https://ru.wikipedia.org/wiki/Мифический_человеко-месяц) -- [Подборка книг для руководителей в сфере IT](https://habr.com/ru/company/skyeng/blog/465215/) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Разработка ПО](https://drive.google.com/file/d/0B_4NpoQW1xfpVjZUTEpvVUN1TTA/view?usp=sharing&resourcekey=0-hnn1HIBU3WIuDMVuQAxA8w) +- [Мифический человеко-месяц](https://habr.com/ru/companies/raiffeisenbank/articles/533216/) +- [Подборка книг для руководителей в сфере IT](https://habr.com/ru/companies/skyeng/articles/465215/) - [Размеры проектов в количестве строк кода](https://www.freecodecamp.org/news/the-biggest-codebases-in-history-a128bb3eea73) - [Соглашения по оформлению кода](https://topjava.ru/blog/google-java-style-guide) -- [Методологии разработки ПО](https://dou.ua/forums/topic/14015/) -- [Ещё раз про семь основных методологий разработки](https://habrahabr.ru/company/edison/blog/269789/) +- Методологии разработки ПО: [Agile, Scrum](https://youtu.be/cDvZaXzQezs), [Kanban](https://youtu.be/1_Zti9v5ugA) +- [Методологии разработки и их влияние на качество](https://youtu.be/y4B2Hv3HgpE) +- [Ещё раз про семь основных методологий разработки](https://habr.com/ru/companies/edison/articles/269789/) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M) -- [Популярность Java-технологий в 2019 году](https://topjava.ru/blog/sostoyanie-java-v-2019-godu) -- [Java Technology Report 2020](https://www.jrebel.com/blog/2020-java-technology-report) -- [The State of Developer Ecosystem 2020](https://www.jetbrains.com/lp/devecosystem-2020/java/) -- [JVM Ecosystem Report 2020](https://snyk.io/wp-content/uploads/jvm_2020.pdf) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Обзор инструментов и технологий](https://drive.google.com/file/d/0B_4NpoQW1xfpTXJYU2xZbjN2d2M/view?usp=sharing&resourcekey=0-Uw_lRGW12YNjwY7phXzVdg) +- [Java в 2025 году](https://habr.com/ru/companies/spring_aio/articles/933180/) +- [State of Developer Ecosystem Report 2025](https://devecosystem-2025.jetbrains.com/ru) +- [Java Trends Report 2025](https://www.infoq.com/articles/java-trends-report-2025/) +- [The 2025 Developer Survey](https://survey.stackoverflow.co/2025) +- Рейтинги языков программирования: [TIOBE](https://www.tiobe.com/tiobe-index/), [PYPL](https://pypl.github.io/PYPL.html), [IEEE](https://spectrum.ieee.org/tag/top-programming-languages) -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Обзор языка Java](https://drive.google.com/open?id=0B_4NpoQW1xfpTU5SSElhUjlGNnc) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Обзор языка Java](https://drive.google.com/file/d/0B_4NpoQW1xfpTU5SSElhUjlGNnc/view?usp=sharing&resourcekey=0-DOyRoGhREx2kvKwAKTOlYg) ![jvm](https://cloud.githubusercontent.com/assets/18701152/15219296/e6c67e86-186b-11e6-986f-651a87deec6c.png) -- [Java](http://ru.wikipedia.org/wiki/Java), [JVM](http://ru.wikipedia.org/wiki/Виртуальная_машина_Java), [JIT-компиляция](http://ru.wikipedia.org/wiki/JIT) +- [Java](http://ru.wikipedia.org/wiki/Java), [JIT-компиляция](http://ru.wikipedia.org/wiki/JIT) - Java [ME](http://ru.wikipedia.org/wiki/Java_Platform,_Micro_Edition), [SE](https://ru.wikipedia.org/wiki/Java_Platform,_Standard_Edition), [EE](http://ru.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition) - [Что такое JDK? Введение в средства разработки Java](https://topjava.ru/blog/what-is-the-jdk) +- [Что такое JVM? Знакомство с виртуальной машиной Java](https://topjava.ru/blog/what-is-the-jvm) - [Что такое JRE? Введение в среду выполнения Java](https://topjava.ru/blog/what-is-the-jre) - [Что такое Java? История создания](http://www.intuit.ru/studies/courses/16/16/lecture/27105) -- [Programming languages TIOBE Index](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) -- [Java Microbenchmark JMH](http://openjdk.java.net/projects/code-tools/jmh/) (используем на курсе [MasterJava](https://github.com/JavaWebinar/masterjava#Занятие-2)) - -## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s) +- [Руководство по массивам в Java](https://topjava.ru/blog/rukovodstvo-po-massivam-v-java-ch1) -![image](https://cloud.githubusercontent.com/assets/18701152/15219746/9295a2fe-186d-11e6-876b-c61cc9be71e4.png) +## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 4. [Системы управления версиями. Git](https://drive.google.com/file/d/0B9Ye2auQ_NsFSUNrdVc0bDZuX2s/edit?resourcekey=0-6scb0PBj2A3Oqf6rsU2egQ) -- [Система управления версиями (VCS)](https://ru.wikipedia.org/wiki/Система_управления_версиями) -- [Сравнение разных VCS](https://biz30.timedoctor.com/ru/cистема-контроля-версий/) +- [Введение в Git: установка и настройка](https://topjava.ru/blog/vvedeniye-v-git-github-ustanovka-i-nastroyka) +- [Введение в Git: базовые команды](https://topjava.ru/blog/vvedeniye-v-git-github-bazovyye-komandy) +- [Введение в Git: ошибки использования](https://topjava.ru/blog/vvedeniye-v-git-oshibki-ispolzovaniya-ch-9) +- [Git: от установки до основных команд](https://tproger.ru/translations/beginner-git-cheatsheet/) +- [Сравнение разных VCS](https://dzen.ru/a/Z0Z0Ry7VD0gfPV5X) - [Видео-уроки по Git](https://www.youtube.com/playlist?list=PLDyvV36pndZHkDRik6kKF6gSb0N0W995h) - Интерактивные Git-обучалки: [1](https://githowto.com/ru), [2](http://learngitbranching.js.org) - [Официальная книга по Git](https://git-scm.com/book/ru/v2) +- [GitHub for beginners](https://github.blog/tag/github-for-beginners/) ### Настройка проекта - Создайте на GitHub репозиторий с названием `basejava` @@ -58,37 +64,33 @@ - `git push -u origin master` — [устанавливаем связь](https://qna.habr.com/q/118865) между локальной и удаленной веткой master ## Домашнее задание HW1 -- Создайте в IntelliJ IDEA новый проект, выбрав каталог `basejava`, который вы скачали ранее к себе на компьютер: - -![newproject](https://user-images.githubusercontent.com/29703461/88058015-95008580-cb6b-11ea-9b7c-65843b859988.png) - -![next](https://user-images.githubusercontent.com/29703461/88057628-055ad700-cb6b-11ea-9c59-72bb538e2541.png) - -![next1](https://user-images.githubusercontent.com/29703461/88058925-d2b1de00-cb6c-11ea-9d0b-83c771899457.png) +- Откройте в IntelliJ IDEA ваш проект, выбрав каталог `basejava`, который вы скачали ранее к себе на компьютер: -![finish](https://user-images.githubusercontent.com/29703461/88059306-579cf780-cb6d-11ea-8094-bbf87474a127.png) +![Screenshot_5](https://github.com/user-attachments/assets/554c3119-85cc-41be-9ef0-087f360577f4) - Реализуйте методы `save, get, delete, clear, getAll, size` в классе `ArrayStorage`, организовав хранение резюме в массиве -- Храните все резюме в начале `storage` (без пустот в виде `null`), чтобы не перебирать каждый раз все 10_000 элементов -- При реализации метода `delete` учитывайте, что после удаления резюме между оставшимися резюме не должно быть пустых ячеек, заполненных null +- Храните все резюме в начале `storage` (без пустот в виде null), чтобы не перебирать каждый раз 10_000 элементов +- При реализации метода `delete` учитывайте: + - после удаления резюме между оставшимися резюме не должно быть пустых (null) ячеек + - резюме должны размещаться в ячейках под индексами `< size`. В противном случае обнуляйте их ``` -Схема хранения резюме в массиве storage (в элементах от 0 до size-1 отсутствуют null): +Схема хранения резюме в массиве storage (в элементах от 0 до size - 1 отсутствуют null): r1, r2, r3,..., rn, null, null,..., null <----- size -----> -<------- storage.length (10000) -------> +<------- storage.length (10_000) ------> ``` - Проверьте вашу реализацию с помощью классов `MainArray.main()` и `MainTestArrayStorage.main()` - Изучите дополнительные материалы по IntelliJ IDEA: - [Idea Wiki](https://github.com/JavaOPs/topjava/wiki/IDEA) - - [Отладка Java кода в IDEA. Основные возможности отладчика](https://youtu.be/Z1BQsf0A4xY) + - Отладка Java кода в IDEA: [1](https://youtu.be/Z1BQsf0A4xY?si=E8RtUNE1Pm3xP_w9), [2](https://youtu.be/V5iQ1FyRtBo), [3](https://blog.jetbrains.com/idea/2025/04/debugging-java-code-in-intellij-idea/) - [Эффективная работа с кодом в IntelliJ IDEA](https://www.youtube.com/watch?v=tpv5n2jWHlw) - [Эффективная работа в IDEA](https://www.youtube.com/watch?v=_rj7dx6c5R8) ### Вопросы по HW1 - > Не могу запустить программу, да и рядом с классами появился какой-то значок + > Не могу запустить программу, да и иконки рядом с классами изменились - ![badsrc](https://user-images.githubusercontent.com/29703461/38277015-9cd9155e-379f-11e8-9cd4-a9182a005e9a.png) + ![badsrc](https://github.com/user-attachments/assets/00db6e0a-59df-46d4-9ddd-abba0e52a7c9) - Проблема в том, что IDEA неправильно "воспринимает" папку `src`. Для ее решения необходимо нажать `ПКМ на папке src -> выбрать Mark Directory as -> Sources Root` ### Замечания по выполнению HW1 @@ -101,7 +103,7 @@ r1, r2, r3,..., rn, null, null,..., null 1. При реализации методов не используйте коллекции 1. Не меняйте сигнатуры методов в `ArrayStorage` 1. Не добавляйте в `Resume` новые поля -1. Resume r — давайте переменным осмысленные имена, например resume. r допустимо в коротких циклах и лямбда-выражениях +1. `Resume r` — давайте переменным осмысленные имена, например resume. r допустимо в коротких циклах и лямбда-выражениях ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 5. [Вебинар "Быть программистом: от детства к зрелости"](https://www.youtube.com/watch?v=D5Hej0TyLaU) - [Слайды вебинара](https://docs.google.com/presentation/d/1YwtCCZsaGMdl-V15kTDHiJxiS52IAl-qqheNPpiNr54/) @@ -110,4 +112,4 @@ r1, r2, r3,..., rn, null, null,..., null - Учитесь исследовать проблему. Внимательное чтение логов и умение дебажить — основные навыки разработчика. В логах необходимо читать верхнюю часть самого нижнего иксепшена. Именно там находится причина возникшей ошибки - Грамотно распределяйте время для каждой проблемы. Не впадайте в крайности: сразу бросаться за помощью или биться над ней часами. Подходите к ее решению разумно - Получайте в процессе решения обратную связь, что бы убедиться в правильности выбранного направления - - [Советы новичкам](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/) diff --git a/src/MainArray.java b/src/MainArray.java index b1cb33b7..063364db 100644 --- a/src/MainArray.java +++ b/src/MainArray.java @@ -13,7 +13,7 @@ public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); Resume r; while (true) { - System.out.print("Введите одну из команд - (list | save uuid | delete uuid | get uuid | clear | exit): "); + System.out.print("Введите одну из команд - (list | size | save uuid | delete uuid | get uuid | clear | exit): "); String[] params = reader.readLine().trim().toLowerCase().split(" "); if (params.length < 1 || params.length > 2) { System.out.println("Неверная команда."); @@ -68,4 +68,4 @@ static void printAll() { } System.out.println("----------------------------"); } -} \ No newline at end of file +}