Java Mentor – Telegram
Java Mentor
294 subscribers
173 photos
48 videos
1 file
79 links
Download Telegram
Не зря купил себе гантели со сменными блинами.

Однозначно стал сильнее подпирать столешницу 😂
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣11🏆5
🤔 Что сложнее, пройти собес или в попасть на собес?


Мне вот кажется, пройти собес гораздо проще, чем стабильно получать приглашения 💼


Для прохождения собеседования нужно изучить теорию. Да, ее много. Но тут все хотя бы понятно. Есть объем работы X и за время Y можно все перелопатить 🤓🦾📚


А с приглашением на собесы все сложнее. Есть резюме X и оно дает в среднем 0 приглашений на собесы в месяц. И что с этим делать?.. 😵‍💫🤯😩

Яйцо или курица? 🤔

Что поднимает привлекательность резюме в глазах работодателей? Опыт работы. Где его взять? На работе. Как на нее попасть? Нужен опыт работы. 🫨

Как выйти из этого порочного круга?


Пет-проекты 🚀

Не устану повторять, что хороший пет-проект закрывает эти вопросы 😌

А бонусом дает
🦸‍♂️ Развитие практических скиллов
🦸‍♂️ Навык проектирования кода
🦸‍♂️ Изучения актуальных библиотек
🦸‍♂️ И, наверное, силу земли 🥒


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

Поэтому в своей работе наставником я и делаю упор именно на создание пет-проектов 😎.

И поэтому в курсе, который я запускал в прошлом году, ребята разрабатывали проект для условной кофейни с системой лояльности ☕️.

Это самый универсальный вариант проекта. Замените кофейню на салон красоты или шиномонтажку, кодовая база останется прежней🔝.


В феврале стартует второй поток курса по разработке пет-проектов на Spring Boot 🚀

Формат:

🔣 Длительность: 3 месяца.
🔣 Уроки: раз в неделю.
🔣 Онлайн созвоны: раз в две недели.

Что получите на выходе?
Каждый участник создаст приложение для кофейни:

Веб-интерфейс для сотрудников.
Telegram-бот для клиентов.
Деплой на реальном сервере

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

Бонусы:

Бонусом каждый участник получит

❤️ Набор теории по Java Core, Spring и Hibernate для подготовки к собесам.
❤️ Доступ в закрытый чат с моими выпускниками, где большинство уже трудоустроены

Хочешь участвовать?

Чуть позже расскажу больше о формате и стеке технологий.
А пока ставь "+" в комментах и я расскажу как попасть на курс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍63
Скрытая фича Spring Boot: Автогенерация Banner

Привет, народ!
Попробую порадовать вас серией постов со скрытыми (и не очень) фичами Spring-Boot.

И начнем мы с фичи, внедрив которую, именно ты станешь самым стильным разрабом на районе и больше никто не вспомнит про сына маминой подруги 😎

Погнали 💨

Надоела скучная надпись SPRING-BOOT при старте приложения?
А знал ли ты, что баннер - это место для твоей рекламы? 😏

Как изменить баннер?

Просто добавь файл banner.txt в папку src/main/resources/ и напиши в нем любой ASCII-текст.

Автоматическая генерация баннера

Если не хочешь писать ASCII-арт вручную, используй генератор: Spring Boot Banner Generator.

Поддержка переменных

В banner.txt можно использовать переменные, которые будут подставляться при запуске приложения. Например:

Application: ${application.version}
Spring Boot: ${spring-boot.version}


Эти переменные берутся из application.properties или application.yml, а также системных свойств Spring Boot.

Некоторые полезные переменные:

${spring-boot.version} – версия Spring Boot
${application.version} – версия приложения (если указана в pom.xml или build.gradle)
${java.version} – версия Java
${user.name} – имя текущего пользователя системы

Куда выводятся переменные?

Все переменные, указанные в banner.txt, выводятся в консоль при старте приложения, перед логами Spring Boot. Это позволяет сразу увидеть информацию о версии приложения, среде выполнения и других параметрах.

Альтернативные форматы

Можно использовать изображения (banner.jpg, banner.png) или даже файлы .gif, а Spring Boot сам преобразует их в ASCII.

Вариант с картинками у меня не заработал 🗿.
Но в инете пишут, что такое точно можно провернуть 😅.
Если у тебя получится, закинь решение в комментах и можешь выкидывать на помойку гайды по пикапу, потому-что отныне все телочки будут... так всё, посты моя мама читает, (мама привет), поэтому немного сбавим пыл 😂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥104😁3👍2
Что выведется на консоль?

Потыкайте в опрос ниже 👇

Ставь лайк, если нужен разбор этой темы ☺️
👍121
Всем привет!

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

Все это в амбициозных планах, которые разбиваются о мою ленивую жопу 🍑

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

Поэтому, пока что, вместо сочного видоса или моего бородатого лица в кружопеле, я подготовил для вас маленькую статейку на тему того,

Почему 0.1 + 0.2 != 0.3 в Java?

Судя по распределению голосов выше - победил Трамп почитать ее было бы полезно всем, кто тыкнул не в false 😅
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍6🔥4🤣2👎1
Иногда мне пишут: Анзор, интеграция поломалась.

Тут несколько вариантов:
1. Интеграция просто выключена
2. Интеграция поломалась
3. Увольняться

Увы, пока что вариант 3 неприемлем, так что разбираемся с тем, включена ли интеграция или выключена.

Стоит сказать, что данная интеграция запрашивает данные из внешнего сервиса и сохраняет в нашу базу.

Запрашивает прямо селектом из внешней базы.

И как-то раз, мы всю базу внешнему сервису и положили.

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


Ну так вот, первый переключатель находится в таблице системных настроек. В нем простой true/false. Чтобы можно было включать и выключать в рантайме.

А второй - в application.yml

Тоже true/false пропертя.

Над сервисом, который отвечает за логику интеграции стоит @ConditionalOnProperty и сервис интеграции зависит от этой самой проперти.


А теперь загадка:
Как посмотреть с каким значением этой проперти сервис задеплоили на прод?

Приложуха крутится в докере, к нему есть доступ.

Актуатора нет(

Накидывайте варианты, и позже расскажу как я выучил команду docker cp ⭐️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥43😨1
Всем привет!

Пропал на какое-то время. Буду исправляться.

Сейчас в разработке обучающий видос по ACID и Transactional 🔥

Одна из любимых тем на собесах 🤌

Хочу максимально упростить освоение этой приблуды 🤓

Расскажу про уровни изоляции транзакций.

Разберем транзакции в Spring
различные варианты propagation аннотации Transactional.

Выложу ориентировочно завтра, так что до встречи на ютубе 🤝
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥174👍3
This media is not supported in your browser
VIEW IN TELEGRAM
👍96👌2
Так, ребят, всем привет!

Я короче понял, что постов про Java делать не хочу.

1. Есть дофига каналов, где это итак делается. Например вот
2. Вся эта инфа итак есть в инете в больших объемах. И как-то изгаляться, чтобы написать как-то иначе о том, что уже 1000 раз обсосали - ну такое себе.

Несмотря на это я хочу приносить пользу, поэтому:

1. У нас есть чат, где вы можете задать вообще любой около-джавный вопрос - и получить ответ (более менее адекватный)
2. Мне понравилось делать видосы на ютюб. Вот там буду рассказывать и показывать что-то полезное (возможно)

А что тут?

Здесь хочу писать о себе, делиться мыслями, страхами, успехами и неудачами. Короче обычные, человечные, эмоциональные посты.

А то, чесслово, уже устал оправдываться перед собой за то, что посты не пишу про фишки джавы и тонкости спринга. Не хочу)
🔥14👍82
Я, в общем-то, неплохой прогер. Но когда дело касается железа, я вообще нуб-нубяра.

Мне всегда было влом разбираться в железе, в том, какие видюхи топ, и что такое DDR3-4-5. А что у процов есть поколения — я вообще понял недавно.

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

Когда я закончил универ, я купил себе комп за 50к. Б/у. Он был хороший. До тех пор, пока я не решил его почистить. После моей чистки сгорело всё: материнка, видюха, проц, звуковая карта, оперативка. 🔥💀

И я заменил это всё чем-то, что влезло в корпус и в мой бюджет:

🖥 Материнка
ASUSTeK COMPUTER INC. B85M-E Rev X.0x microATX

⚙️ Проц
Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz, 4 cores

🧠 16 ГБ ОЗУ DDR3

⚡️ БП
Corsair VS 650W

🎮 Видюха
Radeon RX 570 Series

Как говорится: «Я его слепила из того, что было, ну а то, что было, то и полюбила».

Любовь эта длилась долго. Даже не любовь. Такой пресный брак, без радостей супружеской жизни. 😅

Я мог программировать — и хорошо. Ну а потом я устроился в Dins, и там мне дали ноут мечты:

💻 ThinkPad T14, i7 и 32 ГБ оперативки.

Так я и жил, пока не начал заниматься монтажом. И тут мои девайсы стали давиться объёмами возложенных на них задач. 🎬

Установка «я не могу купить себе новый комп, потому что это очень дорого» мешала наслаждаться процессом.

Я всё время искал какие-то обходные пути. Открыл для себя сервисы облачного гейминга, где можно арендовать мощное железо и работать условно через RDP.

Юзал два таких сервиса:
🎮 Warplay, Gatoga.

В принципе, если у вас быстрый и стабильный инет, то можно воспользоваться, чтобы погамать во что-нибудь.

Но я арендую квартиру, и инет тут не быстрый. Так что приходилось мириться с фризами и обрывами соединения. 📶😩

Терпелка у меня не резиновая, и в какой-то момент лопнула.

Стал смотреть варианты и грустить. Нужно было 200–300к на нормальный комп. Выше я писал, что я нубяра в железе, поэтому вообще не понимал, как собрать что-то адекватное, но подешевле.

Потом открыл Озон и увидел, что там прям топовый комп продают за 100+ 😳.

Я, конечно, не стал там ничего брать и попросил помощи у брата, который шарит за железо.

И он помог мне собрать комплектующие, суммарно на 131к.

💰 Жёну успокоил факт, что я потрачу на 170к меньше, чем мог, да и я сам остался довольным 😎.

Погамал в игрушки, монтаж летает 🚀.

Хочется в это всё впихнуть полезную мысль, которую я для себя открыл.

Часто мы думаем, что не можем что-то сделать. Если поменять угол восприятия и задаться вопросом: «А как я могу это сделать?», то, скорее всего, окажется, что невозможность рассеется, и вы увидите разные варианты обретения желаемого.

Всем пис, обретайте желаемое! И если интересно подробнее про новый комп узнать — напишите в комментах! 😃
❤‍🔥8👍8🔥7
Онлайн конференция по Spring. Бесплатно. Сейчас

Буквально только что узнал, что минуты через 3 начнется конференция по Spring на русском языке.

Если кому интересно, залетайте сюда:

https://springnow.ru
👍4🔥4
Вопрос, на который я не ответил на собесе 👩‍💻

Короче, смотрите, все знают, что нельзя удалять из списка элементы в for-each цикле 👎

А если не знают, то теперь знают.👍

Если внутри что-то удалить из списка (или добавить) будет атата: ⚠️ConcurrentModificationException

Когда мы итерируемся по коллекции через for-each , Компилятор преобразует for-each в использование Iterator, как если бы код выглядел так:

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
System.out.println(item);
}


И даже если мы возьмем итератор:

Iterator<String> iterator = list.iterator();

Добавим что-то в список:

list.add("B");


Пробежимся итератором по списку:

while (iterator.hasNext()) {
String item = iterator.next();
System.out.println(item);
}




На первой же итерации в методе next() получим ту же бяку: ⚠️ConcurrentModificationException 💩


Вопрос: как итератор понимает, что список модифицировали?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍31
В общем да, налутал вопросов с рейда на собес.
Поделюсь еще одним. 🪙

Представим себе, что у нас есть два синхронизированных метода:

class WTF { 
public synchronized void wtf1() {
System.out.print(" wtf - 1 ");
}

public synchronized void wtf2() {
System.out.print(" wtf - 2 ");
}
}


Вопрос:
Могут ли методы wtf1() и wtf2() выполняться одновременно разными потоками?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍5
Я пожалел, что не знал этого с утра 🙈

Сходил на еще 1 собес, к тем же ребятам.

Из того, на что можно было бы лучше ответить - способы блокировок в бд, а именно select for update 👩‍💻

Почитайте, будет полезно.

А лучше не просто почитайте, а представьте, что есть таблица order с полями:
id
amount
status


Статус может быть PENDING, PROCESSED.

Задача - селектнуть все записи со статусом PENDING и обновить на статус - PROCESSED

Важный момент!
Делать это необходимо в нескольких потоках.

Т.е. 1 поток - 1 обработчик записей

Вопрос

👩‍💻 Какой селект написать для каждого обработчика, для того, чтобы организовать параллельную обработку записей?

Обработчики не знают друг о друге, их может быть от одного до N (количество не важно)

Хинт в начале поста закинул. Развлекайтесь)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53👍2
Шпаргалка по Kafka.pdf
8.7 MB
🅰️🅰️🅰️🅰️🅰️


Всем привет!
Ловите шпору по кафке, надеюсь будет полезно 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥152👍1