java-master.com
268 subscribers
1 photo
34 links
Телеграм канал сайта java-master.com.
Download Telegram
#пятничное_чтиво
Если Ваша ошибка не гуглится, если Вы вот прям уверены, что код должен работать, но он не работает: скорее всего дело в банальной невнимательности. Это может быть синтаксическая ошибка. Или Вы ошиблись, когда писали урл для контроллера. Бывает, что ошибаешься, когда набираешь значения для подключения к базе. Именно поэтому я рекомендую копирование вместо набора.

Отловить “ошибки невнимательности” очень трудно. Если найти баг не получается - делайте побольше перерывов. Спрашивайте себя: что не так с этим кодом? Он выглядит ок, я все делаю правильно. Тогда почему он не работает?

Конечно, легко давать советы. 😁Забавное то, что я сам периодически попадаюсь на эту удочку. Хотя уже намного реже. Все-таки опыт вещь очень ценная.

Решил я написать эту заметку по той причине, что сам пару дней назад пострадал из-за невнимательности.

У меня была простая задача: добавить папку при создании докер контейнера. Все очень просто. Приложение крутится на гугл клауд в докер контейнере, которым управляет кубернетес. Изменил я значит докер файл, коллеги апрувнули это дело, замерджил и задеплоил. И ничего. Папки нет. Начал разбираться… Чтобы понять почему не создается папка при билде докера, у меня ушло почти 5 часов.

В мою защиту выступает конечно тот факт, что проект достался от других коллег совсем недавно. Вникнуть в него полностью еще не получилось. Но вот почему не создается папка это не объясняет.

Я что только не перепробовал. И местами команды менял, и запускал у себя локально. Локально работает, команда правильная, а когда деплою - в клауд контейнере папки нет. После часов напряженных поисков я таки сумел найти проблему. Я редактировал не тот докер файл😂 Тут сейчас должна быть картинка “directed by robert b weide”.

Это реально не шутка. В корне проекта был файл с названием Dockerfile. Кто в курсе докера, тот знает, что это и есть файл с описанием докер инструкций для сборки контейнера. Кто же знал, что в корне этого самого проекта есть еще один файл, который тоже содержит инструкции к сборке, и именно этот файл используется при деплое. А вот Dockerfile уже не используется.😅

Бывает, что делаешь пример по статье или видео. У автора код работает, а у тебя не запускается. Если после долгих поисков не получается найти ошибку - присмотритесь к коду. Скорее всего ошибка синтаксическая или как у меня в примере: просто не тот файл запускается.

Приведу еще одну историю “из жизни”. Когда-то у моего студента никак не получалось запустить код. Я ему один пример сбросил, видео еще прислал. Он мне говорит, что не работает и все! Попробовал я подключиться по тимвьюверу. Поклацал, запускал - все равно не работает. Код выглядит хорошо. На первый взгляд, все с ним в порядке. Тем более, что это было что-то очень простое и типичное. Я сказал, что посмотрю у себя на компе. Может быть что-то смогу увидеть.

И увидел. Он когда называл переменную, одну букву сделал кириллицей.🤣 Как это возможно? Ума не приложу. Точно уже не вспомню, но там было что-то вроде переменной private Boolean canRead, которая мапилась с полем базы данных; и вот в переменной canRead первая буква была написана с использованием русской раскладки. Если бы мне intellij idea не подсветила ворнинг - я бы никогда не нашел этой ошибки.

Совет “не попадайтесь на ошибки невнимательности” будет примерно звучать как “чтобы вода стала теплой, ее нужно подогреть” (спасибо нашим политикам за крутые цитаты). Попадать на эти ошибки Вы все равно будете, особенно первое время.

Просто нужно помнить о такого рода “ошибках”, вовремя распознавать их и устранять.
Немного о ДТО.
Тема очень наболевшая. Причем с точки зрения использования то понятно. А вот зачем это нужно не всегда очевидно.

Сейчас я постараюсь объяснить на простом примере.

Допустим мы пишем функционал по регистрации пользователя.

ДТО будет прилетать на вход контроллера. Классы кстати не обязательно называть с приставкой DTO. У нас например может быть RegistrationRequest класс. Это и будет дто. Там будут поля, геттеры, сеттеры. Например логин пароль, емейл и что там еще нужно для регистрации. Но там не будет поля роли. Мы же не даем юзерам право выбирать их роль).

Когда мы будем обрабатывать запрос на регистрацию в сервис слое то должны создать класс User или как там он у нас, чтобы сохранить его в базу. И тогда мы проставляем поле роль=ЮЗЕР. Ведь мы регистрируем юзера. О том какую роль мы ему присвоили, конечному пользователю знать не обязательно. Вы ведь тоже когда фейсбук скролите не видите свою роль. А ведь в этой системе есть и админы и модераторы и еще куча ролей о которых только можно догадываться.

Тоже самое и с ответом. Вот например если в юзера будет свой личный кабинет и он захочет видеть инфу о себе (емейл, адрес, логин и тд.) нам нужен будет метод получитьЮзераПоАйди. Или что то в этом роде. Из базы нам достанет юзера с паролем, ролью и еще кучей служебных полей, которые нужны для корректной работы приложения. А нужно ли нам возвращать юзеру его роль и пароль? Конечно же нет. Пароль ему нужен чтобы авторизироваться, а роль это вообще служебное поле для нас. Конечному пользователю оно никак не нужно. Именно поэтому оперировать нужно ДТО вместо классов сущностей.
Создание функционала по регистрации и авторизации пользователей с помощью Spring MVC и Thymeleaf. Данный подход можно внедрить практически в любой проект. Технологии: Java11, Spring Boot, Spring MVC, Spring Data JPA, Thymeleaf, HTML, CSS.
Приятного просмотра!
https://youtu.be/x_nfnVU0wAI
Сегодня я хочу поделиться с Вами одним очень полезным принципом, или назовем это подходом к решению задач, который я случайно услышал на занятиях в универе и который я использую и по сей день.

Когда то в университете, у меня был предмет название которого не представляется возможным вспомнить.

Вел его очень пожилой профессор, который снисходительно относился к прогулам. Но однажды, я все таки забежал на занятие и услышал довольно интересную теорию или теорему, название которой я так и не смог найти в Интернете.

Я почему то думал что это принцип Парето. Когда я решил написать эту заметку, то первым делом загуглил чтобы освежить в памяти теорию. Оказалось, что я ошибался. Теорема, которую я услышал на лекции не является достоянием великого математика.

Принцип этого подхода заключается в разбиении проблемы на более мелкие. Когда есть задача, которая Вам не под силу, ее нужно делить на подзадачи пока они не станут выполнимы.

Звучит одновременно бредово и банально. Попытаюсь показать практичность этой теории на практике.

Допустим есть задача - написать чат на джава. Я помню, когда пытался понять как это делать использовал описываемый мною принцип.

Задача есть, но она совсем не понятна. Тоесть вот так сходу сделать ее не предоставляется возможным.

Разбиваем ее на те составляющие, которые нам известны и которые мы можем выполнить. Для чата нужна база данных. Мы знаем как сделать конекшин Java с базой данных? Если нет - учим как это сделать. Открыли Интернет, погуглили. Поняли что выучить как конектить джаву и базу сразу не выйдет. Задача то к стати не тривиальная. Разбиваем на подзадачи. Учим как установить на комп Mysql. Дальше учим как создать таблицу и делать простейшие SQL запросы.

Переходим к подключению джавы и базы данных. JDBC, JPA, Hibernate, Persistence, Spring Data. Куча непонятных терминов. Разбиваем все на части. Гуглим один за другим по очереди а потом и в связке JDBC vs JPA, JPA vs Hibernate. Постепенно выучили это все, научились подключать базу, создали таблицу для юзеров, сообщений. Возможно после месяца упорной работы - сможете приступить к написанию контроллера. Не знаете что это такое? Ну тогда разбиваем и гуглим))

Вот таким образом можно выполнить казалось бы нерешаемую задачу. Не всегда это может быть быстро и просто. Но это точно быстрее чем НИКОГДА.
Я очень часто использую этот принцип разбиения в повседневной работе и жизни.
З.Ы. Если кто-то вспомнит название этого принципа (или теоремы) пишите в коментарии.
Если вы хотите развиваться в IT сфере и регулярно получать прибавки к зарплате, бонусы, повышение тайтлов - вам просто необходимо постоянно учиться.

Получение первой работы в IT компании - это на самом деле уже очень круто. Но это только начало. Можно конечно “просидеть” на одном месте, получать повышение зарплаты “за выслугой лет” и радоваться жизни. Я знаю таких людей. Их все устраивает и они вполне довольны прибавкой 100$ к ЗП через 1 год. Если вы из таких типов людей - дальше можете не читать.

Что же касается тех, кто хочет расти как в профессиональном, так и финансовом плане - то мой совет один. Постоянно обучайтесь. Это не обязательно должны быть курсы или книги. Можно начать просто читать статьи по тематике. Сейчас я конечно перешел на книги, но раньше постоянно мониторил медиум, дзон, хабр в поисках интересных статей по джава или смежным технологиям.

Еще один способ изучать новое и не забывать его - вести свой блог.😎 Почему я собственно завел сайт java-master.com. Изначально, это была идея записывать “своими словами” то, что я изучил. Таким образом я всегда мог вернуться к материалу и повторить его. Да я и сейчас так бывает делаю😁

Как например меня спрашивают почему мой ютуб канал на английском. Все очень просто. Я веду его не для зрителей, а для себя😉 Этот ютуб канал изначально планировался как средство повышения разговорного английского. У меня с инглишем было вроде ок, но я замечал что говорить у меня не особо получается. Вот я и нашел свой старый канал, купил микрофон и начал тренировать разговорный английский. Потому что английский очень важный навык среди IT специалистов.

Кстати, если посмотреть на самые первые видео на канале, то они там без звука и с очень плохим качеством. Все дело в том, что делал я их все так же для себя. Чтобы не забыть тот материал что выучил, я записывал видео.

Именно поэтому на канале не появятся видео на русском, украинском и т.д. Я веду канал в первую очередь для себя. Как собственно и сайт.

Если не хочется заморачиваться с ведением сайта, просто отправьте статью в авторитетный источник. Medium, Dzone, habr, dou с радостью вас опубликуют. Можете присылать мне на почту и мы попробуем опубликовать статью от вашего имени на сайте java-master.com.😁

Блог, статьи, книги, курсы, вебинары - есть масса способов повышать свою квалификацию. Я не говорю, что нужно быть ноулайфером и все время проводить за компьютером и книгами. Достаточно обучаться на постоянной основе. На ютубе вместо интервью гордона/дудя (нужное подчеркнуть) - обучающий видеоролик от IBM или Google. Перед работой читать не фейсбук, а dzone. Или что-то в этой области. Вы будете приятно удивлены сколько есть хороших технических блогеров.

Постоянное обучение даст свои плоды. Придет умение проходить собеседования практически любой сложности. Вы сможете лучше понимать как работает тот или иной фреймворк/инструмент. И что в итоге будет отображено на зарплатных ожиданиях и тайтлах.
Список литературы для начинающих (и не только) разработчиков:

1) Адитья Бхаргава “Грюкаем алгоритмы”
2) Роберт Мартин “Чистый код”
3) Роберт Лафоре “Структуры данных и алгоритмы на Java”
4) Сьера, Бейтси “Паттерны проектирования”. Как аналог Александр Швец “Погружение в Паттерны” - мне понравилась.
5) Ричардсон Крис “Микросервисы. Паттерны разработки и рефакторинга”
6) Крейг Уоллс “Спринг в действии (Spring in Action)”

Это те книги, которые мне понравились в свое время. Бывает что я и сейчас перечитываю некоторые из них.
На сайте вышла статья ControllerAdvice — обработка ошибок в Spring.

Приводим обработку ошибок к единому стандарту по всему веб проекту😎
Не ничего лучше чем сделать большой функционал в пару строк кода.

Читаем, передираем, применяем у себя в проектах💪

https://java-master.com/controlleradvice-%d0%be%d0%b1%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d0%be%d1%88%d0%b8%d0%b1%d0%be%d0%ba-%d0%b2-spring/
​​Вот и подошел к концу 2021 год. Настало время подвести итоги и немного подумать о планах на будущее.

2021 выдался не таким продуктивным для развития java-master. Год был очень насыщенным в плане повседневной рутины. Ремонт и переезд в новую квартиру были в этот раз в приоритете и отнимали почти все свободное, а иногда и рабочее время.

Но тем не менее, определенный вклад в IT сообщество был сделан.

Итоги 2021:

8 опубликованных статей на сайте java-master.com.
Писал в основном по желанию и выбор тем не был по seo ключам. Хотя честно признаться пару статей все же пришлось набросать, чтобы немного повысить посещаемость сайта.

10 опубликованных видео на ютуб канале.
Наверное видео можно было бы сделать больше. Планам помешали смена компьютера и выход из строя петлички. Плюс ко всему на прошлой квартире было не очень удобно крепить новый микрофон к столу. А иногда это прям весомый фактор не записывать видео😁 Как подумаю, сначала все настроить, а потом разбирать…

9 заметок в телеграм канале.
Идея с заметками в телеграм вышла как по мне удачной. На подобные публикации не нужно тратить очень много времени. Да и Вам они кажутся по вкусу. Подписчики прибавляются, отписываются немногие)) Что как по мне хороший показатель.

11 студентов по программе java mentor.
Здесь ситуация стандартная. Беру на программу по мере занятости на работе. Зачастую это не больше 2-3 студентов. Многие пишут проект по 2-3 мес. Поэтому такая цифра.

Что касается планов на 2022:
Стараюсь не ставить себе “наполеоновских” планов, чтобы потом не пришлось искать оправданий. Java–master - по-прежнему просто хобби. Есть желание, снимаю видео. Пришла идея, написал заметку.

Постараюсь сделать больше ютуб видео. Возможно больше заметок (но это не точно)😅.

Подписывайтесь на канал (ютуб, телеграм), следите за анонсами. Встретимся в следующем году!

Всех с Новым годом!!!🥂
Карьерный IT тупик

В работе на IT компанию очень важно отдавать себе отчет, где ты сейчас находишься. Какая у тебя позиция на проекте, куда двигается компания и команда. Ведь бывает такое, что мы приходим в контору на перспективный тревел проект, все замечательно и здорово. Заказчик доволен, мы пилим новые фичи, внедряем новые технологии… А потом например наступает коронавирус.

И вот вся разработка превратилась в вялотекущий процесс, в котором бизнес аналитики просчитывают стоимость будущих фич, отбрасывают новые идеи и предложения; по той простой причине что у заказчика нет бюджета.

Карантин затягивается, вы замечаете что вместо разработки, большую часть времени фиксите баги, сапортите или “залипаете” на развлекательных форумах.

Очень важно вовремя уловить этот момент. Осознать и дать себе отчет в том, что проект “застопорился”.

Ждать и медлить в таких случаях не стоит. Если это большая IT компания - спросите своего менеджера о новом проекте. Зачастую в компаниях возможна ротация между разными проектами и направлениями. Объясните ситуацию честно, как вы ее видите.

Переход на более перспективный проект не будет означать, что Вы “предали” старую команду. Это совсем не будет означать, что вы испугались или решили сбежать. Таковы правила. Компания выбросит Вас без зазрения совести, если Вы ей будете не нужны. Поэтому не нужно самопожертвования.

Я встречал очень много ребят, которые “сидят” на проектах годами. Именно сидят. Они делают изо дня одно и то же, не развиваясь ни технически, ни финансово. Пришел на работу, посмотрел ютуб, полистал Reddit, посидел на митинге, сделал багфикс, посмотрел ютуб, пошел домой.

Если проводить на саппорте очень много времени, можно забыть программирование. И тогда, Вы не сможете конкурировать с теми, кто времени не терял. Развитие внутри компании и проекта не менее важно, чем самостоятельное обучение.

Зачастую приходится бросать текущую компанию, расставаться с коллегами, уходить с “насиженного” места. Но без этого в IT очень сложно расти в профессиональном и финансовом плане, особенно в финансовом.

Поэтому не бойтесь изменений, чувствуйте момент, когда нужно уходить или просить прибавку. Не стесняйтесь желать для себя лучшего. Уходить всегда тяжело. Но иногда это необходимо.
Для всех кто работает в NetBeans, создал цикл видео по написанию веб приложения в этой среде.
Первое видео уже на канале😎
https://youtu.be/nG0NA57TYQ8
На выходных на сайте вышла новая статья, которая может быть очень полезна начинающим разработчикам😊
NullPointerException ошибка которая многим джавистам не дает покоя😅
Читайте как ее можно избегать и находить.
Важность английского в IT.
Рынок IT ориентируется на запад. И поэтому английский язык в IT является де факто международным стандартом общения.
Переоценить важность английского языка в этой сфере очень сложно. Наверное 99% опубликованных IT вакансий требуют англ языка хотя бы на примитивном уровне.

Без английского добиться карьерных и финансовых высот в айти практически невозможно. Особенно это важно для новичков. Ведь опыта работы нет, знаний тоже едва наберется. Нужно что-то дать работодателю, чтобы выделиться среди толпы жаждущих получить желаемую позицию.

Именно английский язык поможет Вам это сделать. Зачастую на некоторые вакансии даже есть отдельные собеседования на знание английского.

Большинство актуальных статей и туториалов можно найти только на английском языке. Я уже писал в заметках раньше, что гуглить проблему в коде нужно только на инглише. Вероятность, что Вы найдете ответ значительно выше, чем если Вы будете гуглить на своем родном языке.

Даже если Вы уже работаете в IT сфере, важно не терять знания языка. Особенно это опасно когда попал в команду, где все общение и переписка ведутся на родном языке. Навыки общения очень быстро забываются если ими не пользоваться. Я стараюсь избегать проектов, в которых не предусмотрено общение на английском. Хорошо что таких вакансий единицы.😊

Учить и улучшать разговорный английский также важно как и развиваться в технологиях. Английский позволяет общаться напрямую с заказчиками (которые как правило иностранцы). Уверенный разговорный английский это очень весомый аргумент, когда Вы захотите перейти в позицию менеджера или архитектора. 😎

Необязательно ходить на курсы или к репетитору.

Сейчас я поделюсь своими методами изучения английского языка.

Можно пробовать смотреть фильмы и сериалы на английском. Поначалу это будет очень сложно. Но можно добавить субтитры. Желательно английские, но это зависит от Вашего знания языка. Не нужно выбирать сложные фильмы. Сериал “Друзья” отличный пример простого разговорного английского. Сериал “Клиника” тоже отличный пример, но скорее СЛОЖНОГО и медицинского английского. Посмотрев 1 серию “Клиники” в оригинале я не смог продолжить просмотр.😅

Также можно пробовать читать книги в оригинале. Особенно айти литературу.

Для тренировки разговорного английского можно устраивать с друзьями или коллегами “спикинг клаб”. Где за расслабленной атмосферой можно вести непринужденную беседу на английском.

Записывание туториалов на английском отличная тренировка как для навыков общения так и для изучения новых технологий. И совсем необязательно выкладывать эти видео если нет желания.

Я тоже создал ютуб канал в первую очередь из-за желания тренировать разговорный английский. Именно поэтому мой канал на инглише и всегда таким будет.

Надеюсь я смог донести важность английского языка для IT сферы.
See ya!
Записал видео, где наглядно показал почему нужно использовать DTO вместо классов сущностей.
Приятного просмотра!😉
https://youtu.be/yiQWw7CNB6w
​​Java-master всегда был ресурсом вне политики. Чтобы не происходило в мире, здесь и на сайте публиковались материалы только IT сферы.

Сейчас я не могу молчать. То, что творится на территории моей страны, нельзя описать словами. За последние пару дней мне пришлось пережить то, что я не пожелал бы пережить никому.

Когда единественное, что ты можешь - сидеть в подвале, когда рядом взрываются ракеты. Когда ты не знаешь, что сейчас с твоими близкими и друзьями. Такое я испытал впервые.

И ведь самое обидное то, что ты не можешь понять за что. Зачем это вообще кому-то нужно??? То, что один человек сошел с ума это понять не трудно. Сложно понять почему одни выполняют безумные приказы, а другие делают вид что ничего не происходит.

Здесь совершенно очевидно, что дед сбрендил. Недалеко от моего дома снаряд попал в высотку. Фото прикреплю в конце поста. Город, который я знал, сейчас бомбардируется каждую минуту. Гибнут мирные жители. Не верьте, что атакуют только военную инфраструктуру. Стреляют даже по детским садам((

Но мы не падаем духом! Верим в свою армию, жертвуем средства, многие записались добровольцами.

Также спасибо всем, кто выходит на митинги против войны. Ваша поддержка очень важна. Не закрывайте глаза на происходящее!

Боремося з окупантом. Слава Україні!

P.S. Не знаю правда или нет, но говорят что в РФ введена жесткая цензура. Закрывают сайты, которые пишут о войне и потерях среди солдат путина. Если что, также прикрепляю к посту пару ссылок для понимания картины. К сожалению видео и больше фото загрузить не позволяет Интернет, но здесь люди умные! Думаю сумеете найти.
https://www.facebook.com/100002305693349/videos/954475098523290/
https://www.facebook.com/100002305693349/videos/1154374488435037/