Всем привет!
И вторая цель на неделю выполнена! Целый день над этим просидела правда))) Но, в итоге всё получилось. H2 база данных подключена, можно отправлять запросы, они добавляются в базу данных, она хранится в файле.
Надо будет написать тесты для нее, но уже не сегодня. Завтра открывается новый спринт, новая теория начнется. Так что ура)
И вторая цель на неделю выполнена! Целый день над этим просидела правда))) Но, в итоге всё получилось. H2 база данных подключена, можно отправлять запросы, они добавляются в базу данных, она хранится в файле.
Надо будет написать тесты для нее, но уже не сегодня. Завтра открывается новый спринт, новая теория начнется. Так что ура)
🔥2👍1
С праздником всех!
Решила поделиться последними новостями из моей учебной жизни. В пятницу откликнулась на hh.ru на стажировку, мне пришло приглашение пройти тест через телеграм-бот.
Условия стажировки были относительно странные - сначала этап обучения, где два раза в неделю проходят лекции, потом примерно 3 месяца работы стажером без оплаты на полный рабочий день.
Я все же захотела попробовать, согласилась пройти бот-тест. Он был также относительно странный, 1 минута на размышление, вопросы бот кидал сразу по два (после 3-го вопроса так началось) и результаты выдал раньше, чем я ответила на последний вопрос. Возможно была ошибка в подсчетах, но могу, естественно, ошибаться. В любом случае, проходной балл я не набрала и на стажировку не прошла.
Вспомнилась фраза из книжки Coding career, что бесплатно выполнять задание можно максимум до 2х дней, если больше - труд должен быть оплачен. 3 месяца труда совсем без оплаты звучит, мягко говоря, странно.
Но, со 2го числа начинаются экзамены на стажировку в Тинькофф и я собираюсь попробовать свои силы. Там также будут вопросы с лимитом на время, но и будут алгоритмические задачи. Напишу потом, какие будут результаты. Всем бобра, как говорится 🤗
Решила поделиться последними новостями из моей учебной жизни. В пятницу откликнулась на hh.ru на стажировку, мне пришло приглашение пройти тест через телеграм-бот.
Условия стажировки были относительно странные - сначала этап обучения, где два раза в неделю проходят лекции, потом примерно 3 месяца работы стажером без оплаты на полный рабочий день.
Я все же захотела попробовать, согласилась пройти бот-тест. Он был также относительно странный, 1 минута на размышление, вопросы бот кидал сразу по два (после 3-го вопроса так началось) и результаты выдал раньше, чем я ответила на последний вопрос. Возможно была ошибка в подсчетах, но могу, естественно, ошибаться. В любом случае, проходной балл я не набрала и на стажировку не прошла.
Вспомнилась фраза из книжки Coding career, что бесплатно выполнять задание можно максимум до 2х дней, если больше - труд должен быть оплачен. 3 месяца труда совсем без оплаты звучит, мягко говоря, странно.
Но, со 2го числа начинаются экзамены на стажировку в Тинькофф и я собираюсь попробовать свои силы. Там также будут вопросы с лимитом на время, но и будут алгоритмические задачи. Напишу потом, какие будут результаты. Всем бобра, как говорится 🤗
👍3
Всем привет! С праздником!
Эта неделя прошла не очень продуктивно у меня, но всё же очередной проект сдан. До пятницы у меня будут каникулы.
В этот раз мы добавили возможность ставить лайки фильмам, чтобы сортировать их по популярности, также пользователи теперь могут добавлять друг друга в друзья.
В следующем спринте будет подключена база данных, PostgreSQL. А через спринт у нас будет опыт работы в команде - каждому нужно будет реализовать свой функционал. Так что наше приложение скоро совсем разрастется.
Эта неделя прошла не очень продуктивно у меня, но всё же очередной проект сдан. До пятницы у меня будут каникулы.
В этот раз мы добавили возможность ставить лайки фильмам, чтобы сортировать их по популярности, также пользователи теперь могут добавлять друг друга в друзья.
В следующем спринте будет подключена база данных, PostgreSQL. А через спринт у нас будет опыт работы в команде - каждому нужно будет реализовать свой функционал. Так что наше приложение скоро совсем разрастется.
👍3
Всем привет!
Оказалось, что наш 11й спринт будет длиться не 2 недели, а целый месяц. Потом неделя каникул и групповая работа. Эта новость меня сначала огорчила, потому что подозреваю, что много времени останется свободного после ТЗ в конце теории. Но, с другой стороны, будет время позаниматься больше своими проектами.
У меня появилось пару идей, что я хочу сделать. Во-первых, хочу сделать игру «Быки и коровы» с компьютером. Потом на очереди надо будет сделать «Улей» по одной настольной игре. Она, в принципе, не сложная, но требует простейшей графики. На java я пока графики совсем не касалась.
Во-вторых, сын просит доделать игру с рыбками. Точнее, он хочет, чтобы я сделала совсем другую уже игру, потому что часто придумывает новые игры. Но чтобы сделать ту игру, которую он придумал, надо подучиться. Не хочется иметь кучу недоделанных проектов, поэтому думаю, рыбки должны уйти в свет (т. е. в планшет :) ) . Тем более, идея его новой игры слегка похожа по жанру.
Кстати, этот спринт с упором на SQL, мне очень пригодились знания со stepik по нему. Увидела, что разница между mySQL и PostgreSQL в синтаксисе небольшая. Вчера болела, но был интерес поучиться и поэтому смотрела вебинар по PostgreSQL. Начался он с установки PostgreSQL, DBeaver и подключения плагина в идею для работы с базами данных. Создали таблицы, писали разные интересные к ним запросы. Один вебинар на час проходила 5 часов в общей сложности 😁 То-ли самочувствие повлияло, то-ли из-за того, что сначала запросы писала сама, а потом уже смотрела, как делает лектор. Но впечатления остались отличные)
Оказалось, что наш 11й спринт будет длиться не 2 недели, а целый месяц. Потом неделя каникул и групповая работа. Эта новость меня сначала огорчила, потому что подозреваю, что много времени останется свободного после ТЗ в конце теории. Но, с другой стороны, будет время позаниматься больше своими проектами.
У меня появилось пару идей, что я хочу сделать. Во-первых, хочу сделать игру «Быки и коровы» с компьютером. Потом на очереди надо будет сделать «Улей» по одной настольной игре. Она, в принципе, не сложная, но требует простейшей графики. На java я пока графики совсем не касалась.
Во-вторых, сын просит доделать игру с рыбками. Точнее, он хочет, чтобы я сделала совсем другую уже игру, потому что часто придумывает новые игры. Но чтобы сделать ту игру, которую он придумал, надо подучиться. Не хочется иметь кучу недоделанных проектов, поэтому думаю, рыбки должны уйти в свет (т. е. в планшет :) ) . Тем более, идея его новой игры слегка похожа по жанру.
Кстати, этот спринт с упором на SQL, мне очень пригодились знания со stepik по нему. Увидела, что разница между mySQL и PostgreSQL в синтаксисе небольшая. Вчера болела, но был интерес поучиться и поэтому смотрела вебинар по PostgreSQL. Начался он с установки PostgreSQL, DBeaver и подключения плагина в идею для работы с базами данных. Создали таблицы, писали разные интересные к ним запросы. Один вебинар на час проходила 5 часов в общей сложности 😁 То-ли самочувствие повлияло, то-ли из-за того, что сначала запросы писала сама, а потом уже смотрела, как делает лектор. Но впечатления остались отличные)
👍2🔥2
Всем привет!
Читаю тут потихоньку The Coding Career Handbook с советами для начинающих программистов. Заинтересовал сегодняшний совет - teach what you learn - говорить о том, что учишь "на работе, на встречах, с семьей, с вашей собакой, с собой на своем YouTube канале".
Рассмешило дальше - а что если это будет звучать плохо? "Не волнуйся, так и будет!" И дальше призыв сделать 10 таких плохих речей/выступлений подряд и не улучшиться в этом. Звучит как план для меня 😁
Может быть попробую что-нибудь такое сделать в текстовом виде в этом блоге. У меня кстати был не очень давно опыт объяснения для коллег-одногруппников удаление узлов в двусвязном списке. Даже нарисовала схему с пояснениями и один из этих пары человек сказал, что только с помощью этой схемы понял, что же происходит с узлами и связями в момент удаления его из списка.
Читаю тут потихоньку The Coding Career Handbook с советами для начинающих программистов. Заинтересовал сегодняшний совет - teach what you learn - говорить о том, что учишь "на работе, на встречах, с семьей, с вашей собакой, с собой на своем YouTube канале".
Рассмешило дальше - а что если это будет звучать плохо? "Не волнуйся, так и будет!" И дальше призыв сделать 10 таких плохих речей/выступлений подряд и не улучшиться в этом. Звучит как план для меня 😁
Может быть попробую что-нибудь такое сделать в текстовом виде в этом блоге. У меня кстати был не очень давно опыт объяснения для коллег-одногруппников удаление узлов в двусвязном списке. Даже нарисовала схему с пояснениями и один из этих пары человек сказал, что только с помощью этой схемы понял, что же происходит с узлами и связями в момент удаления его из списка.
👍4🔥1
Всем привет!
На прошлой неделе думала, что примерно сегодня буду писать о том, что у меня начались досрочные каникулы, что я всё сдала. Но пока я еще на финальном проекте этого спринта. Еще в процессе его написания сейчас. Вот так бывает, что думаешь, что проект такой-то по объему, но потом всплывают детали и понимаешь, что все не так просто.
Подключила базу данных с 7 таблицами, половина из них связаны друг с другом логически по внешним ключам. Вносить данные нужно по заданию через jdbcTemplate, что является более сложным путем, чем работать с аннотациями JPA, как мне кажется. Но по многим видео слышала мнение, что для новичков наоборот jdbc легче для понимания. Голый jdbc включает большое количество повторения кода, а jdbcTemplate упрощает многие вещи по взаимодействию с базой данных.
Нам дали 3 примера и статью и сказали, вперед к практике! Понедельник-вторник практически не писала код, читала, смотрела про jdbc, rowMapper, что и как нужно делать. Сейчас уже больше половины функционала (по проверочным тестам postman) проходят успешно. Сегодня было в планах доработать недостающий функционал, исправить ошибки, чтобы возможно стали проходить все тесты, которых ~ 300 штук. Если все будет успешно сегодня, то завтра займусь написанием интеграционных тестов и если все будет ок, отправлю на проверку.
Потом займусь своими проектами. Вот такие планы и такие дела :)
На прошлой неделе думала, что примерно сегодня буду писать о том, что у меня начались досрочные каникулы, что я всё сдала. Но пока я еще на финальном проекте этого спринта. Еще в процессе его написания сейчас. Вот так бывает, что думаешь, что проект такой-то по объему, но потом всплывают детали и понимаешь, что все не так просто.
Подключила базу данных с 7 таблицами, половина из них связаны друг с другом логически по внешним ключам. Вносить данные нужно по заданию через jdbcTemplate, что является более сложным путем, чем работать с аннотациями JPA, как мне кажется. Но по многим видео слышала мнение, что для новичков наоборот jdbc легче для понимания. Голый jdbc включает большое количество повторения кода, а jdbcTemplate упрощает многие вещи по взаимодействию с базой данных.
Нам дали 3 примера и статью и сказали, вперед к практике! Понедельник-вторник практически не писала код, читала, смотрела про jdbc, rowMapper, что и как нужно делать. Сейчас уже больше половины функционала (по проверочным тестам postman) проходят успешно. Сегодня было в планах доработать недостающий функционал, исправить ошибки, чтобы возможно стали проходить все тесты, которых ~ 300 штук. Если все будет успешно сегодня, то завтра займусь написанием интеграционных тестов и если все будет ок, отправлю на проверку.
Потом займусь своими проектами. Вот такие планы и такие дела :)
👍3🔥2
Всем привет!
В выходные отправила свой проект на проверку. Вчера ревьюер попросил внести изменения. Сегодня отправила и теперь в ожидании. Совсем переключаться на свои проекты пока не очень хочется, поэтому "Коровы и быки" пока откладываются на несколько дней. Но пока жду проверки, нашла себе забавное развлечение.
Сначала сделала SudokuSolver - разгадывает судоку и красиво пишет результат. Потом вспомнила, что сегодня мне попалась ссылка на гитхаб с тестовыми заданиями от разных IT компаний.
Форкнула его себе, склонировала, выбрала первую задачку для выполнения - сделать SQL парсер. Это в принципе недалеко от темы ТЗ, который сейчас на проверке. Поэтому не сильно переключусь на другую тему. Решила выполнять такие задания, добавлять их в свой репозиторий с кратким описанием (либо ссылкой даже на само задание). Думаю будет здорово.
В выходные отправила свой проект на проверку. Вчера ревьюер попросил внести изменения. Сегодня отправила и теперь в ожидании. Совсем переключаться на свои проекты пока не очень хочется, поэтому "Коровы и быки" пока откладываются на несколько дней. Но пока жду проверки, нашла себе забавное развлечение.
Сначала сделала SudokuSolver - разгадывает судоку и красиво пишет результат. Потом вспомнила, что сегодня мне попалась ссылка на гитхаб с тестовыми заданиями от разных IT компаний.
Форкнула его себе, склонировала, выбрала первую задачку для выполнения - сделать SQL парсер. Это в принципе недалеко от темы ТЗ, который сейчас на проверке. Поэтому не сильно переключусь на другую тему. Решила выполнять такие задания, добавлять их в свой репозиторий с кратким описанием (либо ссылкой даже на само задание). Думаю будет здорово.
👍2🔥2👏1
С началом лета! :)
Мне во вторник вечером зачли проект. Так что начались каникулы до 19 июня, возможно откроется спринт на пару дней раньше. Теперь мне показывают, что я прошла от курса 77%!
Но своими проектами пока не получилось позаниматься - началась активная подготовка к первому классу в школе, а сегодня еще и второй день отключают днем свет) Но делала задачки со stepik, у меня ещё остался не пройден курс по mySQL. Там осталось меньше половины.
Вчера начала тренировать вопросы по java, которые могут пригодиться на собеседовании, через телеграм бота в игровом стиле. Сегодня в игре у меня уже 3й уровень и новая работа💪😁
Надеюсь и реальная работа не заставит себя долго ждать:)
Мне во вторник вечером зачли проект. Так что начались каникулы до 19 июня, возможно откроется спринт на пару дней раньше. Теперь мне показывают, что я прошла от курса 77%!
Но своими проектами пока не получилось позаниматься - началась активная подготовка к первому классу в школе, а сегодня еще и второй день отключают днем свет) Но делала задачки со stepik, у меня ещё остался не пройден курс по mySQL. Там осталось меньше половины.
Вчера начала тренировать вопросы по java, которые могут пригодиться на собеседовании, через телеграм бота в игровом стиле. Сегодня в игре у меня уже 3й уровень и новая работа💪😁
Надеюсь и реальная работа не заставит себя долго ждать:)
🔥2👍1👏1
Всем привет!
Тренировка вопросов по java с чат-ботом мне очень понравилась, многие вопросы меня подлавливают, изредка попадаются вопросы про многопоточность. Ее я еще не изучала - в Практикуме тема многопоточности начнется, возможно, через спринт-другой.
В общем, в субботу открываю браузер, а там вкладка открыта на курс на степике "Java c нуля до Junior + Подготовка к собеседованию". Смотрю содержание, а там обсуждение тонкостей разных коллекций, многопоточность и другие темы. Отзывы все положительные, решила начать и залипла! Сегодня дошла уже до 8й темы из 11, как раз подробнее о многопоточности. До этого написали небольшую программку, которая одновременно угадывала число и считала секунды.
Интересный курс, не сказала бы, что подходит для людей с нуля, потому что сходу писать свои реализации двусвязных списков и хеш-сет дело не простое. Но кастомный двусвязный список мы в Практикуме писали еще на 5 ТЗ, тогда я достаточно много на эту тему читала и очень долго разбиралась, мне бы не хватило той информации, что была в этом курсе. Но сейчас повторить теорию пока каникулы, углубиться в тонкости, потренировать вопросы с собеседований (там регулярно есть такие видео-занятия) - просто супер. Но думаю, что я его быстро закончу, потому что бОльшую часть я знаю и знаю больше способов реализовать какие-то задачи, предлагаемые в курсе. Это хорошо поднимает настроение и самооценку)
А потом есть еще много планов, в первую очередь написать SQL Parser из того тестового задания с гитхаба, а потом думала попробовать написать теоретическую заметку об Optional, что это такое, для чего используется. Как рассказывала до этого, такой челлендж мне дали в книжке Coding Career. Планов, конечно, у меня еще миллион, но всё за 2 недели не успеешь :)
Тренировка вопросов по java с чат-ботом мне очень понравилась, многие вопросы меня подлавливают, изредка попадаются вопросы про многопоточность. Ее я еще не изучала - в Практикуме тема многопоточности начнется, возможно, через спринт-другой.
В общем, в субботу открываю браузер, а там вкладка открыта на курс на степике "Java c нуля до Junior + Подготовка к собеседованию". Смотрю содержание, а там обсуждение тонкостей разных коллекций, многопоточность и другие темы. Отзывы все положительные, решила начать и залипла! Сегодня дошла уже до 8й темы из 11, как раз подробнее о многопоточности. До этого написали небольшую программку, которая одновременно угадывала число и считала секунды.
Интересный курс, не сказала бы, что подходит для людей с нуля, потому что сходу писать свои реализации двусвязных списков и хеш-сет дело не простое. Но кастомный двусвязный список мы в Практикуме писали еще на 5 ТЗ, тогда я достаточно много на эту тему читала и очень долго разбиралась, мне бы не хватило той информации, что была в этом курсе. Но сейчас повторить теорию пока каникулы, углубиться в тонкости, потренировать вопросы с собеседований (там регулярно есть такие видео-занятия) - просто супер. Но думаю, что я его быстро закончу, потому что бОльшую часть я знаю и знаю больше способов реализовать какие-то задачи, предлагаемые в курсе. Это хорошо поднимает настроение и самооценку)
А потом есть еще много планов, в первую очередь написать SQL Parser из того тестового задания с гитхаба, а потом думала попробовать написать теоретическую заметку об Optional, что это такое, для чего используется. Как рассказывала до этого, такой челлендж мне дали в книжке Coding Career. Планов, конечно, у меня еще миллион, но всё за 2 недели не успеешь :)
👏3👍2🔥2
Всем привет!
Пост хвастовства) Закончила курс, начатый в выходные. Повторила тему коллекций, стримов, чтения и записи в файл, узнала про многопоточность. До этого знания были о ней очень поверхностные.
Классные вопросы с собеседований обсуждались, я практически на все уже знала ответ, некоторые вещи пометила себе, чтобы запомнить. Курс в целом классный, но не для людей с нуля.
В бот-игре я уже 10 уровня программист, которого недавно повысили до Middle. Эх, если бы в жизни всё также было легко)))
Пост хвастовства) Закончила курс, начатый в выходные. Повторила тему коллекций, стримов, чтения и записи в файл, узнала про многопоточность. До этого знания были о ней очень поверхностные.
Классные вопросы с собеседований обсуждались, я практически на все уже знала ответ, некоторые вещи пометила себе, чтобы запомнить. Курс в целом классный, но не для людей с нуля.
В бот-игре я уже 10 уровня программист, которого недавно повысили до Middle. Эх, если бы в жизни всё также было легко)))
🔥3👍2👏2
Сегодняшний пост будет началом цикла кратких теоретических заметок. Это больше моя тренировка говорить на эти темы, чем попытка кого-то чему-то научить. Статей и книжек на разные теоретические темы написано очень много и, конечно, лучше учиться по ним, а мои короткие заметки ни на что не претендуют.
Что такое Optional?
Это своего рода контейнер, в котором может лежать значение, а может и не лежать. Если в нем лежит значение — это означает, что оно присутствует в контейнере. По-английски это переводится present. Если значения в контейнере нет — контейнер пуст, или empty. Поэтому проверяя, есть ли значение в optional, мы пишем ifPresent (если присутствует) или isPresent (присутствует) и делаем какие-то действия. Если значение есть, мы можем его из Optional получить через метод get().
Казалось бы, какая выгода с этого класса? Если у нас есть какой-либо объект, который может иметь значение null, мы также добавляем проверки в коде (if sth != null). Зачем вводить такой специальный контейнер? Одно из многих преимуществ — мы можем устанавливать значения по умолчанию с помощью метода orElse(). Например, получить значение по умолчанию какого-нибудь среднестатического только родившегося хомяка — optionalHamster.orElse(new Hamster(“Хома”, 0));
Когда мы видим Optional в коде, мы понимаем, что здесь значения может и не быть, и чтобы избежать ошибок, мы уже будем знать, что нам нужно обработать ситуации, когда значения в контейнере нет — выбросить ошибку (orElseThrow()) или получить значение по умолчанию (есть два метода orElse() и orElseGet(), первый создает объект, при отсутствии значения, который нам может быть и не нужен, а второй принимает функциональный интерфейс и возвращает результат его метода).
Хорошая статья об Optional — https://www.baeldung.com/java-optional. В следующей «серии» буду писать о валидации в Spring c помощью аннотаций.
Что такое Optional?
Это своего рода контейнер, в котором может лежать значение, а может и не лежать. Если в нем лежит значение — это означает, что оно присутствует в контейнере. По-английски это переводится present. Если значения в контейнере нет — контейнер пуст, или empty. Поэтому проверяя, есть ли значение в optional, мы пишем ifPresent (если присутствует) или isPresent (присутствует) и делаем какие-то действия. Если значение есть, мы можем его из Optional получить через метод get().
Казалось бы, какая выгода с этого класса? Если у нас есть какой-либо объект, который может иметь значение null, мы также добавляем проверки в коде (if sth != null). Зачем вводить такой специальный контейнер? Одно из многих преимуществ — мы можем устанавливать значения по умолчанию с помощью метода orElse(). Например, получить значение по умолчанию какого-нибудь среднестатического только родившегося хомяка — optionalHamster.orElse(new Hamster(“Хома”, 0));
Когда мы видим Optional в коде, мы понимаем, что здесь значения может и не быть, и чтобы избежать ошибок, мы уже будем знать, что нам нужно обработать ситуации, когда значения в контейнере нет — выбросить ошибку (orElseThrow()) или получить значение по умолчанию (есть два метода orElse() и orElseGet(), первый создает объект, при отсутствии значения, который нам может быть и не нужен, а второй принимает функциональный интерфейс и возвращает результат его метода).
Хорошая статья об Optional — https://www.baeldung.com/java-optional. В следующей «серии» буду писать о валидации в Spring c помощью аннотаций.
Baeldung on Kotlin
Guide To Java Optional | Baeldung
Quick and practical guide to the Java Optional class
👍2🔥2
Всем привет!
Пишу сегодня рассказать о своем прогрессе по курсу по mySQL. Осталось 30 баллов до сертификата (40 для сертификата с отличием). Казалось бы сделать 10 задач в день и можно до конца недели закончить этот курс, но вот пару запросов примеров какие задачки пошли под конец курса. Мозг взрывается, особенно большой запрос со скрина, долго я его составляла)))
Вот к такому селект запросу написать SQL Parser на Java выглядит как непосильная для меня задачка) Но я попробую сделать это на этой неделе.
Пишу сегодня рассказать о своем прогрессе по курсу по mySQL. Осталось 30 баллов до сертификата (40 для сертификата с отличием). Казалось бы сделать 10 задач в день и можно до конца недели закончить этот курс, но вот пару запросов примеров какие задачки пошли под конец курса. Мозг взрывается, особенно большой запрос со скрина, долго я его составляла)))
Вот к такому селект запросу написать SQL Parser на Java выглядит как непосильная для меня задачка) Но я попробую сделать это на этой неделе.
👍2👏2🔥1
Всем привет!
Курс по mySQL дожала) Так что результат за каникулы - два сертификата Stepik: по курсу Java и mySQL.
Но никаких других проектов не поделала, кроме короткого решателя Судоку.
В понедельник начинается групповой проект, мы с командой пока не определили тимлида. Расскажу потом впечатления и т.п.
Курс по mySQL дожала) Так что результат за каникулы - два сертификата Stepik: по курсу Java и mySQL.
Но никаких других проектов не поделала, кроме короткого решателя Судоку.
В понедельник начинается групповой проект, мы с командой пока не определили тимлида. Расскажу потом впечатления и т.п.
🔥6
Всем привет!
Давно не делилась новостями здесь, потому что в понедельник стала тимлидом на групповом проекте. Было много разных дел. Каждый день делаем созвоны, я отвечаю за главную ветку, которую отправим на ревью, мержу все изменения со всех веток, у каждого по фичи было. Мне досталось три фичи, потому что они были очень мелкие, а у остальных ребят потруднее.
Ждем еще двоих, как они закончат работу над своими ветками, надеюсь отправим скоро на первое ревью.
Вчера был интересный опыт разрешения (28?) конфликтов при мерже ветки одного человека, который не добавлял в свою ветку изменения из общей ветки.
А еще от-rollback-нула случайно свои изменения в своей ветке, ладно хоть мне нужно было всего два метода изменить, немного потеряла и быстро восстановила. Коммитов и stash изменений в ней не сделала и на будущее теперь буду осторожнее:) Такие дела)
Давно не делилась новостями здесь, потому что в понедельник стала тимлидом на групповом проекте. Было много разных дел. Каждый день делаем созвоны, я отвечаю за главную ветку, которую отправим на ревью, мержу все изменения со всех веток, у каждого по фичи было. Мне досталось три фичи, потому что они были очень мелкие, а у остальных ребят потруднее.
Ждем еще двоих, как они закончат работу над своими ветками, надеюсь отправим скоро на первое ревью.
Вчера был интересный опыт разрешения (28?) конфликтов при мерже ветки одного человека, который не добавлял в свою ветку изменения из общей ветки.
А еще от-rollback-нула случайно свои изменения в своей ветке, ладно хоть мне нужно было всего два метода изменить, немного потеряла и быстро восстановила. Коммитов и stash изменений в ней не сделала и на будущее теперь буду осторожнее:) Такие дела)
🔥2👏2👍1
Всем привет!
Сегодня торжественное открытие новой рубрики - Совместное решение задач!
Пишу условие задачи в посте, а чуть позже в комментариях к нему оставлю решение с объяснением.
Итак, первая задача, взята с LeetCode:
Называется с английского - "Взбираемся по лестнице"
Есть лестница с n-ступенями. Каждый раз мы можем пройти либо 1 либо 2 ступени.
Сколько есть различных способов забраться наверх?
Пример 1:
Ступеней 2. Ответ: 2. Объяснение - есть два способа забраться наверх:
1. 1 шаг + 1 шаг
2. 2 шага
Пример 2:
Дано: n = 3
Вывод: 3.
Объяснение: есть три способа забраться наверх:
1. 1 + 1 +1
2. 1 шаг + 2 шага
3. 2 шага + 1 шаг.
1 <= n <= 45 (n не может быть меньше 1 и больше 45)
Чуть позже скину решение с объяснением в комментарии 🤓
Сегодня торжественное открытие новой рубрики - Совместное решение задач!
Пишу условие задачи в посте, а чуть позже в комментариях к нему оставлю решение с объяснением.
Итак, первая задача, взята с LeetCode:
Называется с английского - "Взбираемся по лестнице"
Есть лестница с n-ступенями. Каждый раз мы можем пройти либо 1 либо 2 ступени.
Сколько есть различных способов забраться наверх?
Пример 1:
Ступеней 2. Ответ: 2. Объяснение - есть два способа забраться наверх:
1. 1 шаг + 1 шаг
2. 2 шага
Пример 2:
Дано: n = 3
Вывод: 3.
Объяснение: есть три способа забраться наверх:
1. 1 + 1 +1
2. 1 шаг + 2 шага
3. 2 шага + 1 шаг.
1 <= n <= 45 (n не может быть меньше 1 и больше 45)
Чуть позже скину решение с объяснением в комментарии 🤓
👍2🔥1
Всем привет!
Наша команда получила зачет, поэтому буду спамить тут новыми постами, пока свободное время до нового спринта)
Вчера был день задач. Верхнюю задачу сначала решила, потом занялась задачами на числа Фибоначчи, решила еще легкую задачку с leetcode. Потом думаю, дай отдохну от задач - пошла читать/смотреть про Docker. Пока не скажу, что разобралась, но появилось первое впечатление.
Стала перебирать открытые вкладки в браузере - нашла открытую на какой-то контест от яндекс на 2 часа. Начала, а там хоп, а джавы-то и нет в выбираемых языках. Сначала думала на питоне решить, но писать на нем я не умею, как оказалось) Думаю это надо будет исправить, среди моих больших планов на будущее есть план получше узнать питон. Пока я его только "читаю" и могу перевести некоторые вещи на джаву.
В итоге, вспомнила, что идея переводит джаву на Котлин и решила задачки на джаве и перевела с помощью идеи на Котлин. Так я вчера увидела первый раз как выглядит котлин. В целом, любопытная возможность.
Сегодняшний день начала с чистки папки с разными мелкими проектами/задачами, перенесла большую часть в облако, открыла свой трекер и думаю, что сегодня займусь им. Добавила юзеров, надо будет добавить таблицу юзеров, познакомиться со Spring MVC, получше организовать JPA Hibernate, чтобы четко работало, возможно поменяю Н2 базу на PostgreSQL или mySQL.
Еще двое из команды проявили желание сделать задачу со звездочкой, которую можно было начать выполнять только после сдачи проекта - задача перевести лайки в оценки фильма от 1 до 10.
Наша команда получила зачет, поэтому буду спамить тут новыми постами, пока свободное время до нового спринта)
Вчера был день задач. Верхнюю задачу сначала решила, потом занялась задачами на числа Фибоначчи, решила еще легкую задачку с leetcode. Потом думаю, дай отдохну от задач - пошла читать/смотреть про Docker. Пока не скажу, что разобралась, но появилось первое впечатление.
Стала перебирать открытые вкладки в браузере - нашла открытую на какой-то контест от яндекс на 2 часа. Начала, а там хоп, а джавы-то и нет в выбираемых языках. Сначала думала на питоне решить, но писать на нем я не умею, как оказалось) Думаю это надо будет исправить, среди моих больших планов на будущее есть план получше узнать питон. Пока я его только "читаю" и могу перевести некоторые вещи на джаву.
В итоге, вспомнила, что идея переводит джаву на Котлин и решила задачки на джаве и перевела с помощью идеи на Котлин. Так я вчера увидела первый раз как выглядит котлин. В целом, любопытная возможность.
Сегодняшний день начала с чистки папки с разными мелкими проектами/задачами, перенесла большую часть в облако, открыла свой трекер и думаю, что сегодня займусь им. Добавила юзеров, надо будет добавить таблицу юзеров, познакомиться со Spring MVC, получше организовать JPA Hibernate, чтобы четко работало, возможно поменяю Н2 базу на PostgreSQL или mySQL.
Еще двое из команды проявили желание сделать задачу со звездочкой, которую можно было начать выполнять только после сдачи проекта - задача перевести лайки в оценки фильма от 1 до 10.
🔥3👏3👍1
Всем привет!
На этой неделе интересовалась Spring MVC, что это такое и чем отличается от Spring Boot. Во-первых, потому что часто встречала требование в вакансиях знать Spring MVC, а во-вторых, потому что узнала, что мы не будем подробно этим заниматься в Практикуме. Начала смотреть курс по нему на youtube, прочитала короткую статью об основных принципах на хабре. Почитала другие статьи на английском. Итак, что могу сказать пока после короткого знакомства со Spring MVC:
MVC – описывает паттерн Model (сущности), View (отображение/ фронт-энд) и Controller (контроллеры). То есть, на первый взгляд, всё как мы и делаем в наших приложениях на Spring Boot, за исключением того, что мы не делаем фронт-энд.
Когда стала смотреть курс на ютюбе, увидела, что view оказывается здесь играет ключевую роль. Например, когда мы пишем REST API в Spring Boot, мы можем вернуть созданный объект в теле ответа, либо просто статус ОК. Здесь же, каждый метод контроллера возвращает String – название html страницы, которую нужно отобразить пользователю. Для каждого эндпоинта, по которому мы будем создавать какой-либо объект, в mvc существует и GetMapping и PostMapping. То есть мы сначала получаем страницу, на которой будем что-то создавать, а потом только можем это создать.
Стала смотреть еще на разницу между Spring Boot и Spring MVC, оказалось что есть отличия и в настройках — в mvc нужно прописывать настройки (configuration) вручную, в boot этого не требуется. Есть еще отличия, связанные с тем, что я пока еще не делала (например, deployment – развертывание и запуск веб-приложения на сервере), поэтому пока не буду о них писать.
Также, в этом курсе подтвердили слова нашего наставника с вебинара, что действительно не делают 1 класс для одной сущности и перегружают ее всякими аннотациями. Например, один класс User для обозначения полей, какие у него будут, и связывания с базой данных. А другой класс, UserDto (dto - data transfer object, или объект передачи данных), где можно добавить аннотации по валидации или дополнительные поля, которые в связи с безопасностью не нужно раздавать при любом запросе. И иметь два маппера, один из которых будет собирать более общий объект userDto, а другой обычного юзера. Наставник также говорил, что может быть и третий класс, который будет дополнительно иметь какую-нибудь логику.
На этой неделе интересовалась Spring MVC, что это такое и чем отличается от Spring Boot. Во-первых, потому что часто встречала требование в вакансиях знать Spring MVC, а во-вторых, потому что узнала, что мы не будем подробно этим заниматься в Практикуме. Начала смотреть курс по нему на youtube, прочитала короткую статью об основных принципах на хабре. Почитала другие статьи на английском. Итак, что могу сказать пока после короткого знакомства со Spring MVC:
MVC – описывает паттерн Model (сущности), View (отображение/ фронт-энд) и Controller (контроллеры). То есть, на первый взгляд, всё как мы и делаем в наших приложениях на Spring Boot, за исключением того, что мы не делаем фронт-энд.
Когда стала смотреть курс на ютюбе, увидела, что view оказывается здесь играет ключевую роль. Например, когда мы пишем REST API в Spring Boot, мы можем вернуть созданный объект в теле ответа, либо просто статус ОК. Здесь же, каждый метод контроллера возвращает String – название html страницы, которую нужно отобразить пользователю. Для каждого эндпоинта, по которому мы будем создавать какой-либо объект, в mvc существует и GetMapping и PostMapping. То есть мы сначала получаем страницу, на которой будем что-то создавать, а потом только можем это создать.
Стала смотреть еще на разницу между Spring Boot и Spring MVC, оказалось что есть отличия и в настройках — в mvc нужно прописывать настройки (configuration) вручную, в boot этого не требуется. Есть еще отличия, связанные с тем, что я пока еще не делала (например, deployment – развертывание и запуск веб-приложения на сервере), поэтому пока не буду о них писать.
Также, в этом курсе подтвердили слова нашего наставника с вебинара, что действительно не делают 1 класс для одной сущности и перегружают ее всякими аннотациями. Например, один класс User для обозначения полей, какие у него будут, и связывания с базой данных. А другой класс, UserDto (dto - data transfer object, или объект передачи данных), где можно добавить аннотации по валидации или дополнительные поля, которые в связи с безопасностью не нужно раздавать при любом запросе. И иметь два маппера, один из которых будет собирать более общий объект userDto, а другой обычного юзера. Наставник также говорил, что может быть и третий класс, который будет дополнительно иметь какую-нибудь логику.
Хабр
Spring MVC — основные принципы
Фреймворк Spring MVC обеспечивает архитектуру паттерна Model — View — Controller (Модель — Отображение (далее — Вид) — Контроллер) при помощи слабо связанных готовых компонентов. Паттерн MVC разделяет...
👍6🔥1
Всем привет!
Вчера проходила мок-собеседование. Впечатления очень хорошие, увидела темы, в которых нужно укрепить знания, приятно было отвечать правильно. Это приободрило.
Обсуждали ООП, HTTP, SOLID, алгоритмы и сложности, циклы разработки, монолит против микросервисной архитектуры, тесты, а также, рассказывала о проектах, которые писала (учебные и свой пет-проект).
Из забавного — забыла, что такое логарифм)) Когда «раскладывала» сложности по О-большое в порядке возрастания.
Вспомнила только два принципа SOLID, поэтому сейчас их здесь пропишу, чтобы лучше запомнить:
S – Single Responsibility – Принцип единственной ответственности. Каждый класс должен иметь только одну зону ответственности. Из жизни — курьер только доставляет, а не чинит нам технику.
O – Open / Closed — Принцип открытости-закрытости. Классы должны быть открыты для расширения, но закрыты для изменения. Например, хотим мы класс, отправляющий оповещения по электронной почте, научить отправлять оповещения по смс. Если мы изменим его метод sendNotification – это будет противоречить принципу закрытости для изменения. Как тогда лучше это сделать? Например, создать интерфейс с методом sendNotification, в этом случае класс, который будет оповещать по смс, просто переопределит этот метод, реализуя этот интерфейс. А класс, оповещающий по электронной почте, не потерял свой функционал.
L – Liskov Substitution — Принцип подстановки Барбары Лисков. Можно пояснить так, если класс A является подтипом класса B (наследуется от него), мы должны иметь возможность заменить B на A, не нарушая поведения нашей программы. Другими словами наследники должны уметь делать все то же, что и родители. Пример на машинах — есть класс Car, в котором прописаны методы завестись (turnOnEngine()) и ускориться (accelerate()). Подтип машин, электромашины. Он сможет также заводиться и ускоряться.
I – Interface Segregation — Принцип разделения интерфейсов. Большие интерфейсы должны быть разделены на более мелкие. Таким образом, классы будут реализовывать только те интерфейсы, которые имеют к ним отношение. Другими словами, нельзя заставлять класс переопределять все методы интерфейсов, которые они не используют.
D – Dependecy Inversion — Принцип инверсии зависимостей. Он относится к разделению программных модулей. Модули верхнего уровня не должны зависеть от модулей нижнего уровня. И те, и другие должны зависеть от абстракции. Звучит сложно, но по сути это классический полиморфизм, когда мы одинаково можем работать с классами, реализующими один интерфейс. То есть, вместо того, чтобы прописать конкретную реализацию (условный userServiceImpl), мы прописываем интерфейс, который этот класс реализует (userService).
Вчера проходила мок-собеседование. Впечатления очень хорошие, увидела темы, в которых нужно укрепить знания, приятно было отвечать правильно. Это приободрило.
Обсуждали ООП, HTTP, SOLID, алгоритмы и сложности, циклы разработки, монолит против микросервисной архитектуры, тесты, а также, рассказывала о проектах, которые писала (учебные и свой пет-проект).
Из забавного — забыла, что такое логарифм)) Когда «раскладывала» сложности по О-большое в порядке возрастания.
Вспомнила только два принципа SOLID, поэтому сейчас их здесь пропишу, чтобы лучше запомнить:
S – Single Responsibility – Принцип единственной ответственности. Каждый класс должен иметь только одну зону ответственности. Из жизни — курьер только доставляет, а не чинит нам технику.
O – Open / Closed — Принцип открытости-закрытости. Классы должны быть открыты для расширения, но закрыты для изменения. Например, хотим мы класс, отправляющий оповещения по электронной почте, научить отправлять оповещения по смс. Если мы изменим его метод sendNotification – это будет противоречить принципу закрытости для изменения. Как тогда лучше это сделать? Например, создать интерфейс с методом sendNotification, в этом случае класс, который будет оповещать по смс, просто переопределит этот метод, реализуя этот интерфейс. А класс, оповещающий по электронной почте, не потерял свой функционал.
L – Liskov Substitution — Принцип подстановки Барбары Лисков. Можно пояснить так, если класс A является подтипом класса B (наследуется от него), мы должны иметь возможность заменить B на A, не нарушая поведения нашей программы. Другими словами наследники должны уметь делать все то же, что и родители. Пример на машинах — есть класс Car, в котором прописаны методы завестись (turnOnEngine()) и ускориться (accelerate()). Подтип машин, электромашины. Он сможет также заводиться и ускоряться.
I – Interface Segregation — Принцип разделения интерфейсов. Большие интерфейсы должны быть разделены на более мелкие. Таким образом, классы будут реализовывать только те интерфейсы, которые имеют к ним отношение. Другими словами, нельзя заставлять класс переопределять все методы интерфейсов, которые они не используют.
D – Dependecy Inversion — Принцип инверсии зависимостей. Он относится к разделению программных модулей. Модули верхнего уровня не должны зависеть от модулей нижнего уровня. И те, и другие должны зависеть от абстракции. Звучит сложно, но по сути это классический полиморфизм, когда мы одинаково можем работать с классами, реализующими один интерфейс. То есть, вместо того, чтобы прописать конкретную реализацию (условный userServiceImpl), мы прописываем интерфейс, который этот класс реализует (userService).
🔥6👍1
Всем привет!
Небольшой пятничный апдейт. С понедельника у нас начался новый модуль, начали углубляться в то, как работает Spring Boot под капотом. Начали новый проект, в этом спринте в основном задание было сделать каркас-подготовку, в следующем спринте будем подключать базу данных с помощью JPA. Мне задание уже зачли, поэтому я пока буду отдыхать до открытия следующей теории, до среды.
Вчера порекомендовали одного преподавателя/ментора по Java, у него есть свой YouTube канал — dmdev. Заинтересовали его видео по сервлетам. После теории этого спринта, захотелось углубиться в эту тему, потому что представление о том, как они работают пока очень поверхностное. Возможно после этих видео, сделаю короткий пост о том, что это такое. Присмотрела, что у него есть и по docker и по spring видео, думаю начать смотреть его канал.
Также, думаю доделать подключение пользователей через Spring Security у себя в пет-проекте. Я пока security подробно не касалась, но зато пригодятся знания, полученные в результате работы над ТЗ. Теперь есть лучше представление, как организовать работу с DTO объектами и где хранить пароль юзера, хотя на счет пароля еще есть сомнения с точки зрения безопасности. Скорее всего изучение Spring Security подскажет точно как это нужно правильно сделать.
Небольшой пятничный апдейт. С понедельника у нас начался новый модуль, начали углубляться в то, как работает Spring Boot под капотом. Начали новый проект, в этом спринте в основном задание было сделать каркас-подготовку, в следующем спринте будем подключать базу данных с помощью JPA. Мне задание уже зачли, поэтому я пока буду отдыхать до открытия следующей теории, до среды.
Вчера порекомендовали одного преподавателя/ментора по Java, у него есть свой YouTube канал — dmdev. Заинтересовали его видео по сервлетам. После теории этого спринта, захотелось углубиться в эту тему, потому что представление о том, как они работают пока очень поверхностное. Возможно после этих видео, сделаю короткий пост о том, что это такое. Присмотрела, что у него есть и по docker и по spring видео, думаю начать смотреть его канал.
Также, думаю доделать подключение пользователей через Spring Security у себя в пет-проекте. Я пока security подробно не касалась, но зато пригодятся знания, полученные в результате работы над ТЗ. Теперь есть лучше представление, как организовать работу с DTO объектами и где хранить пароль юзера, хотя на счет пароля еще есть сомнения с точки зрения безопасности. Скорее всего изучение Spring Security подскажет точно как это нужно правильно сделать.
👍4❤1🔥1