This media is not supported in your browser
VIEW IN TELEGRAM
Всем привет!
Расскажу что происходит в моей жизни.
Работа 😔
Очень. Много. Работы.
С одной стороны обычная пятидневка, но сил забирает больше, чем если бы у меня было три вечно недовольные жены.
В этом месяце я стал проводить технические интервью. Провел около 10.
Основная проблема у соискателей с иммутабельностью. Не многие могут определить в коде проблемы с мутабельными сущностями.
Разработал крутой модуль, который позволяет отображать на карте технику и поезда с их фактическим перемещением. Разработал его ранее, а в этом месяце перевел его на стероиды.
Запилил интеграцию с внешней системой и работал на двух тимлидов сразу. Понял, что не люблю когда меня отдают в аренду кому-то.
Боролся с выгоранием. И в этом мне помогла
Бачата.
Когда-то я писал, что хожу на нее. Теперь же уже отходил год и 3 месяца. И вот я мидл бачата танцор, лол. Занимаюсь по 6-10 часов в неделю. Рекомендую всем, действенное средство от выгорания, поднятие энергии, и, наверное, силы земли) Видос моих танцевальных потугов выше 🕺
Курс.
Когда-то в мае я запускал курс по разработке проектов на спринге. В ноябре курс подошел к концу.
Скоро я буду запускать второй поток, и подробнее расскажу о том, что там и как.
Наставничество.
Буквально сегодня у меня появился второй ученик и теперь их у меня целых 2)
Влад разрабатывает анонимный чат на микросервисах и брокерах сообщений. Кажется что проект довольно интересный, чувствую вот это вот наитие внутри и зуд в ручках. Надеюсь наша работа будет плодотворной. 📑👨💻
Борьба с самим собой.
Я выпал из ведения блога, из-за выгорания на работе и загрузки большой. Понимаю что есть множество вещей, о которых хочется рассказать, но как то сложно ворваться в активный ритм после перерыва, а начать с чего-то нужно.
В планах стараться как-то максимально лайтово вкатиться в создание интересного контента. Будем посмотреть, что из этого выйдет 🙏
Хотелось конечно подобрать иллюстраций ко всему, но привычка все записывать и фоткать еще не сформирована, так что ловите только часть танца поздравления 😅
Расскажу что происходит в моей жизни.
Работа 😔
Очень. Много. Работы.
С одной стороны обычная пятидневка, но сил забирает больше, чем если бы у меня было три вечно недовольные жены.
В этом месяце я стал проводить технические интервью. Провел около 10.
Основная проблема у соискателей с иммутабельностью. Не многие могут определить в коде проблемы с мутабельными сущностями.
Разработал крутой модуль, который позволяет отображать на карте технику и поезда с их фактическим перемещением. Разработал его ранее, а в этом месяце перевел его на стероиды.
Запилил интеграцию с внешней системой и работал на двух тимлидов сразу. Понял, что не люблю когда меня отдают в аренду кому-то.
Боролся с выгоранием. И в этом мне помогла
Бачата.
Когда-то я писал, что хожу на нее. Теперь же уже отходил год и 3 месяца. И вот я мидл бачата танцор, лол. Занимаюсь по 6-10 часов в неделю. Рекомендую всем, действенное средство от выгорания, поднятие энергии, и, наверное, силы земли) Видос моих танцевальных потугов выше 🕺
Курс.
Когда-то в мае я запускал курс по разработке проектов на спринге. В ноябре курс подошел к концу.
Скоро я буду запускать второй поток, и подробнее расскажу о том, что там и как.
Наставничество.
Буквально сегодня у меня появился второй ученик и теперь их у меня целых 2)
Влад разрабатывает анонимный чат на микросервисах и брокерах сообщений. Кажется что проект довольно интересный, чувствую вот это вот наитие внутри и зуд в ручках. Надеюсь наша работа будет плодотворной. 📑👨💻
Борьба с самим собой.
Я выпал из ведения блога, из-за выгорания на работе и загрузки большой. Понимаю что есть множество вещей, о которых хочется рассказать, но как то сложно ворваться в активный ритм после перерыва, а начать с чего-то нужно.
В планах стараться как-то максимально лайтово вкатиться в создание интересного контента. Будем посмотреть, что из этого выйдет 🙏
Хотелось конечно подобрать иллюстраций ко всему, но привычка все записывать и фоткать еще не сформирована, так что ловите только часть танца поздравления 😅
🔥13❤6👍1
Когда работа аналитиком в команде с разрабами, которые прям задрали со своими уточнениями по тз достала, и ты пошла в стюардессы, но проф-деформацию еще не проработала 🗿
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6🤣2
Всем привет!
Вчера писал, что на технических интервью многие соискатели испытывают проблемы с mutable/immutable сущностями.
Один из вопросов который мы задаем такой:
🤔 Как сделать объект immutable?
Большинство ребят отвечают примерно так:
1. Сделать класс final
2. Все поля - final, задавать их через конструктор
3. Убрать сеттеры
С этим я согласен, но мало кто вспоминает про еще один пункт:
4. Для ссылочных типов в геттерах необходимо возвращать копии объектов.
Если спросить зачем нам нужны immutable классы, часто можно услышать, что такие классы более безопасны.
Но чувствуется, что большинству недостает понимания потенциальной опасности использования mutable структур.
Рассмотрим такой пример. Как вы думаете, что не так с этим классом?🤔
Проблемы могут быть не так очевидны, в связке с ломбоком, однако они есть.
Попробуйте определить их самостоятельно, прежде чем читать сокрытый текст.
1. В конструкторе передается ссылка на объект списка и присваевается полю names.
А это значит, что если список, который передали в конструктор класса будет модифицирован, он изменится и в объекте demo.
2. В геттере возвращается ссылка на объект списка names.
А это значит, что данный список, могут модифицировать извне.
Это можно увидеть в коде ниже:
Такое может привести к ошибкам в программе⚠️
И это один из примеров того, почему immutable классы более безопасны.
Есть еще одна вещь, но она в большей степени на слуху.
У immutable объектов не изменится hashCode3️⃣ 6️⃣ 0️⃣ 8️⃣ 8️⃣ 7️⃣ 1️⃣
Что делает их более предпочтительными для использования в Hash-коллекциях
Но в основном, у большинства возникают сложности с обнаружением проблем в рабочем коде.
Будьте внимательны при работе с mutable классами, они таят в себе скрытую угрозу🔫
Вчера писал, что на технических интервью многие соискатели испытывают проблемы с mutable/immutable сущностями.
Один из вопросов который мы задаем такой:
Большинство ребят отвечают примерно так:
1. Сделать класс final
2. Все поля - final, задавать их через конструктор
3. Убрать сеттеры
С этим я согласен, но мало кто вспоминает про еще один пункт:
4. Для ссылочных типов в геттерах необходимо возвращать копии объектов.
Если спросить зачем нам нужны immutable классы, часто можно услышать, что такие классы более безопасны.
Но чувствуется, что большинству недостает понимания потенциальной опасности использования mutable структур.
Рассмотрим такой пример. Как вы думаете, что не так с этим классом?
@AllArgsConstructor
@Getter
class Demo {
private List<String> names;
}
Проблемы могут быть не так очевидны, в связке с ломбоком, однако они есть.
Попробуйте определить их самостоятельно, прежде чем читать сокрытый текст.
1. В конструкторе передается ссылка на объект списка и присваевается полю names.
А это значит, что если список, который передали в конструктор класса будет модифицирован, он изменится и в объекте demo.
2. В геттере возвращается ссылка на объект списка names.
А это значит, что данный список, могут модифицировать извне.
Это можно увидеть в коде ниже:
public static void main(String[] args) {
final var names = new ArrayList<>(List.of("e1", "e2"));
final var demo = new Demo(names);
names.add("e3");
// [e1, e2, e3]
System.out.println(demo.getNames());
final var newNames = demo.getNames();
newNames.add("e4");
// [e1, e2, e3, e4]
System.out.println(demo.getNames());
}Такое может привести к ошибкам в программе
И это один из примеров того, почему immutable классы более безопасны.
Есть еще одна вещь, но она в большей степени на слуху.
У immutable объектов не изменится hashCode
Что делает их более предпочтительными для использования в Hash-коллекциях
Но в основном, у большинства возникают сложности с обнаружением проблем в рабочем коде.
Будьте внимательны при работе с mutable классами, они таят в себе скрытую угрозу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤5👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Кажется, чем старше становится человек, тем осознаннее его любовь к мемасам)
🤣8🔥6😁4
5 пет-проектов, которые реально помогли стать Java разработчиками
Если все время учить Java Core и ООП, и не браться за создание пет-проекта, то можно стать очень похожим на человека, который знает 100 техник соблазнения, но остается девственником 🫣.
Сегодня вы узнаете, с помощью каких проектов мои ученики удовлетворили влажные фантазии горячих HR специалистов и сказали своей карьерной невинности прощай⚡
Погнали🔜
1️⃣ Хранилище скриптов продаж.
Представьте себе страницу на которой можно делать всего две вещи:
1. Создавать и редактировать скрипты продаж
2. Скопировать скрипт продаж в буфер обмена
Добавьте сюда авторизацию, и получите пет-проект, который принес первое трудоустройство
2️⃣ Система заказа питания для школьников.
Приложение с веб-интерфейсом, через который учителя формируют заказ продуктов питания для школьников с отправкой заказов на кухню по email.
Проект, который реально внедрили в школу и который принес трудоустройство #2
3️⃣ Абонементы в качалку.
Система с веб-интерфейсом и ТГ-ботом для управления абонементами в качалке.
Вжух, и еще одна компания закрыла острую потребность в молодом и перспективном специалисте
4️⃣ Система для управления бронированием записей к барберу
Видели барберов, к которым можно записаться через ТГ бот?
Я тоже не видел, проект не вышел в прод)
Но это и не важно.
А знаете что важно?
Правильно - еще одна взбалмошная представительница касты HR осталась удовлетворена проделанной работой и закрытой дырой в кадровом ресурсе 😏
Когда твоя мечта сходу попасть в сбер, то выход один:
5️⃣ Система, которая рассчитывает премию для кредитных специалистов в банке.
По сути система, которая заменила бы excel файл, по которому производится расчет премии для банковских сотрудников.
Почему заменила бы? Потому что ребята продолжают использовать excel. Но это и не важно. Почему? Правильно, потому что это трудоустройство #5, прямо в сбер.
Так что если ты все еще учишь Java core, то:
1. Найди кого-то, кому нужно что-то
2. Сделай это что-то на Java за банку соленых огурцов
3. Теперь ты фрилансер
4. Найди ближайшую HR и скажи то, что видишь на картинке к посту
5. Профит, твоя жизнь никогда не будет прежней
PS В январе я запускаю второй поток своего курса по созданию пет-проекта на Spring, ставь 🔥если интересно узнать, какой проект мы будем делать
Если все время учить Java Core и ООП, и не браться за создание пет-проекта, то можно стать очень похожим на человека, который знает 100 техник соблазнения, но остается девственником 🫣.
Сегодня вы узнаете, с помощью каких проектов мои ученики удовлетворили влажные фантазии горячих HR специалистов и сказали своей карьерной невинности прощай
Погнали
Представьте себе страницу на которой можно делать всего две вещи:
1. Создавать и редактировать скрипты продаж
2. Скопировать скрипт продаж в буфер обмена
Добавьте сюда авторизацию, и получите пет-проект, который принес первое трудоустройство
Приложение с веб-интерфейсом, через который учителя формируют заказ продуктов питания для школьников с отправкой заказов на кухню по email.
Проект, который реально внедрили в школу и который принес трудоустройство #2
Система с веб-интерфейсом и ТГ-ботом для управления абонементами в качалке.
Вжух, и еще одна компания закрыла острую потребность в молодом и перспективном специалисте
Видели барберов, к которым можно записаться через ТГ бот?
Я тоже не видел, проект не вышел в прод)
Но это и не важно.
А знаете что важно?
Правильно - еще одна взбалмошная представительница касты HR осталась удовлетворена проделанной работой и закрытой дырой в кадровом ресурсе 😏
Когда твоя мечта сходу попасть в сбер, то выход один:
По сути система, которая заменила бы excel файл, по которому производится расчет премии для банковских сотрудников.
Почему заменила бы? Потому что ребята продолжают использовать excel. Но это и не важно. Почему? Правильно, потому что это трудоустройство #5, прямо в сбер.
Так что если ты все еще учишь Java core, то:
1. Найди кого-то, кому нужно что-то
2. Сделай это что-то на Java за банку соленых огурцов
3. Теперь ты фрилансер
4. Найди ближайшую HR и скажи то, что видишь на картинке к посту
5. Профит, твоя жизнь никогда не будет прежней
PS В январе я запускаю второй поток своего курса по созданию пет-проекта на Spring, ставь 🔥если интересно узнать, какой проект мы будем делать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤4👍4
Затестил ИИ от сбера, прикольно и немного наивно)
Как бы то ни было, типы ссылок в Java.
В Java есть 4 типа ссылок.
1. Сильная ссылка (Strong Reference)
Это стандартная ссылка, которую вы используете каждый день.
Объект, на который ссылается хотя бы 1 сильная ссылка не будет удален сборщиком мусора.
📌 Пример:
🔥 Когда использовать: Всегда, если объект должен быть в памяти.
2. Мягкая ссылка (Soft Reference)
Если на объект ссылаются только мягкие ссылки, такой объект может быть удален сборщиком мусора в случае нехватки памяти.
📌 Пример:
🔥 Когда использовать: Для кэшей, которые можно восстановить.
3. Слабая ссылка (Weak Reference)
Если объект не имеет сильных или мягких ссылок, сборщик мусора безжалостно удалит его из памяти.
📌 Пример:
🔥 Когда использовать: Например, для ключей в WeakHashMap.
4. Фантомная ссылка (Phantom Reference)
Используется для отслеживания объектов перед их удалением из памяти, что, в свою очередь, позволяет приложению получать уведомления о том, что объект готов к финализации. То есть, мы имеем возможность выполнить определенные действия перед его окончательным удалением.
Это самый слабый тип ссылок в Java. Когда объект становится доступным только через фантомную ссылку, это означает, что он уже помечен для удаления и это является неизбежным. Мы не можем получить доступ к самому объекту и его данным, а лишь сигнал о том, что объект будет удален.
📌 Пример:
🔥 Когда использовать: Для работы с системными ресурсами.
Честно скажу, с вероятностью 94.5% эта инфа вам не понадобится в работе 🤷♂️
Но на собесе может оказаться крайне полезной🤓
Как бы то ни было, типы ссылок в Java.
В Java есть 4 типа ссылок.
1. Сильная ссылка (Strong Reference)
Это стандартная ссылка, которую вы используете каждый день.
Объект, на который ссылается хотя бы 1 сильная ссылка не будет удален сборщиком мусора.
📌 Пример:
String strongRef = "Hello";
🔥 Когда использовать: Всегда, если объект должен быть в памяти.
2. Мягкая ссылка (Soft Reference)
Если на объект ссылаются только мягкие ссылки, такой объект может быть удален сборщиком мусора в случае нехватки памяти.
📌 Пример:
SoftReference<String> softRef = new SoftReference<>(new String("Soft"));
String value = softRef.get();🔥 Когда использовать: Для кэшей, которые можно восстановить.
3. Слабая ссылка (Weak Reference)
Если объект не имеет сильных или мягких ссылок, сборщик мусора безжалостно удалит его из памяти.
📌 Пример:
WeakReference<String> weakRef = new WeakReference<>(new String("Weak"));
String value = weakRef.get();🔥 Когда использовать: Например, для ключей в WeakHashMap.
4. Фантомная ссылка (Phantom Reference)
Используется для отслеживания объектов перед их удалением из памяти, что, в свою очередь, позволяет приложению получать уведомления о том, что объект готов к финализации. То есть, мы имеем возможность выполнить определенные действия перед его окончательным удалением.
Это самый слабый тип ссылок в Java. Когда объект становится доступным только через фантомную ссылку, это означает, что он уже помечен для удаления и это является неизбежным. Мы не можем получить доступ к самому объекту и его данным, а лишь сигнал о том, что объект будет удален.
📌 Пример:
ReferenceQueue<String> queue = new ReferenceQueue<>();
PhantomReference<String> phantomRef = new PhantomReference<>(new String("Phantom"), queue);
🔥 Когда использовать: Для работы с системными ресурсами.
Честно скажу, с вероятностью 94.5% эта инфа вам не понадобится в работе 🤷♂️
Но на собесе может оказаться крайне полезной🤓
👍8🔥7
🔥 Проблемы изоляции транзакций: как это выглядит в жизни и коде 🚀
Обещал рассказать про сложности, с которыми я столкнулся на работе.
Долго думал, как описать это интересно, понятно и без нарушения NDA. Вот что получилось! 😊
🧠 Представим кофейню:
Клиент делает заказ. Он участник программы лояльности, у него есть баллы.
☕️ Кассир спрашивает:
"Молодой человек, что делаем с баллами? Списываем или копим?"
👤 Клиент отвечает:
"Списываем!"
Кассир нажимает кнопки и говорит:
"Подтвердите списание!"
Клиент достаёт телефон, заходит в Телеграм и видит сообщение от бота:
💬 "Вы уверены, что хотите списать 324 балла?"
Кнопки: 🔘 Да | 🔘 Нет
Клиент нажимает Да, касса печатает чек.
Как это работает на сервере? 🖥
На сервере процесс списания баллов требует подтверждения. Всё начинается с запроса:
1️⃣ В таблице client_ask фиксируется вопрос клиенту и ожидается его ответ.
2️⃣ На основании ID созданной записи отправляется сообщение клиенту в ТГ.
3️⃣ Сервер ждёт, когда в записи появится ответ в колонке response.
Код выглядит примерно так: 👇
🤯 Где начинаются проблемы?
Метод
Метод
🚨 Ошибка!
Данные, созданные транзакцией
Причина: уровень изоляции транзакций по умолчанию —
Транзакция видит только закоммиченные изменения.
🔧 Как мы решили проблему?
Мы выбрали простой, но спорный метод:
👉
Да, это костыль, но он работает. 😅
🛠 Какие ещё есть варианты?
1️⃣ Событийно-ориентированная архитектура:
Можно отправлять события вместо прямого обновления БД.
2️⃣ Выделить создание записи в отдельный сервис:
Это откроет новую транзакцию, которая завершится, и данные станут видимыми.
3️⃣ Изменить уровень изоляции:
Попробовать
А как бы вы решили такую задачу? Делитесь мыслями в комментариях! ✍️
Обещал рассказать про сложности, с которыми я столкнулся на работе.
Долго думал, как описать это интересно, понятно и без нарушения NDA. Вот что получилось! 😊
🧠 Представим кофейню:
Клиент делает заказ. Он участник программы лояльности, у него есть баллы.
☕️ Кассир спрашивает:
"Молодой человек, что делаем с баллами? Списываем или копим?"
👤 Клиент отвечает:
"Списываем!"
Кассир нажимает кнопки и говорит:
"Подтвердите списание!"
Клиент достаёт телефон, заходит в Телеграм и видит сообщение от бота:
💬 "Вы уверены, что хотите списать 324 балла?"
Кнопки: 🔘 Да | 🔘 Нет
Клиент нажимает Да, касса печатает чек.
Как это работает на сервере? 🖥
На сервере процесс списания баллов требует подтверждения. Всё начинается с запроса:
1️⃣ В таблице client_ask фиксируется вопрос клиенту и ожидается его ответ.
2️⃣ На основании ID созданной записи отправляется сообщение клиенту в ТГ.
3️⃣ Сервер ждёт, когда в записи появится ответ в колонке response.
Код выглядит примерно так: 👇
@Service
public class MyService {
@Autowired
private ClientAskRepository clientAskRepository;
@Autowired
private TgMessageService messageService;
@Transactional
public void askClient() {
ClientAsk clientAsk = new ClientAsk(1L, null);
clientAskRepository.save(clientAsk);
// Отправка запроса на подтверждение
messageService.sendClientAsk(clientAsk);
while (clientAsk.getResponse() == null) {
// Ждём ответа
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
clientAsk = clientAskRepository.findById(clientAsk.getId()).orElse(null);
}
}
@Transactional
public void saveClientResponse(Long id, String response) {
clientAskRepository.findById(id).ifPresent(clientAsk -> {
clientAsk.setResponse(response);
clientAskRepository.save(clientAsk);
});
}
}
🤯 Где начинаются проблемы?
Метод
askClient создаёт запись и отправляет запрос в ТГ бот. Он ждёт, пока response обновится.Метод
saveClientResponse должен записывать ответ, но...🚨 Ошибка!
Данные, созданные транзакцией
askClient, недоступны для других транзакций, пока они не закоммичены.Причина: уровень изоляции транзакций по умолчанию —
READ_COMMITTED.Транзакция видит только закоммиченные изменения.
🔧 Как мы решили проблему?
Мы выбрали простой, но спорный метод:
👉
saveClientResponse создаёт новую запись, а askClient ждёт появления новой записи вместо обновления существующей.Да, это костыль, но он работает. 😅
🛠 Какие ещё есть варианты?
1️⃣ Событийно-ориентированная архитектура:
Можно отправлять события вместо прямого обновления БД.
2️⃣ Выделить создание записи в отдельный сервис:
Это откроет новую транзакцию, которая завершится, и данные станут видимыми.
3️⃣ Изменить уровень изоляции:
Попробовать
READ_UNCOMMITTED. Но, увы, в нашем случае это не помогло.А как бы вы решили такую задачу? Делитесь мыслями в комментариях! ✍️
👍7❤3⚡2🔥1
Короче написал полотно текста, выдал всю боль, натер мазоли на пальцах и в мозгу, попросил чат gpt расставить смайлики для поста в телегу, он взял и тупо перехерачил весь текст, оставив от моих интеллектуальных потугов процентов 20…
Вышло вроде хорошо, но как то бездушно, искусственно.
Но я че, я лентяй, и так сойдет. Не самому же эти смайлики расставлять 😅
PS речь про предыдущий пост
Вышло вроде хорошо, но как то бездушно, искусственно.
Но я че, я лентяй, и так сойдет. Не самому же эти смайлики расставлять 😅
PS речь про предыдущий пост
🔥7😁4👾1
Всем привет!
Позавчера еще все было так логично, а вчера закончились праздники...🎄
Но как-бы то ни было новый год наступил, поэтому всех с прошедшими праздниками, и давайте вливаться в работу💻
Постараюсь в новом году радовать вас большим количеством полезного и не очень контента😎
А начну с маленького подарка всем виндоводам и любителям халявы.
Наткнулся тут недавно на скриптик, который сбрасывает триалку в IDEA Ultimate 🤩
Все что делает этот скрипт - удаляет папки с конфигами идеи из пользовательской папки
У меня триалка сбросилась, ровно как и вся конфигурация идеи, то бишь слетели любимые темы, масштаб, хоткеи... В общем все кастомные настройки❌
Но зато триальный период сбросился и месяц можно спокойно юзать. Гипотетически процедуру можно повторять сколь угодно много раз.🫰
Используйте на свое усмотрения, все плюсы и минусы я перечислил)
Всем добра и сил сделать оливье еще один раз)
🔽 🔽 🔽 Скрипт в комментах ⬇️ ⬇️ ⬇️
Позавчера еще все было так логично, а вчера закончились праздники...
Но как-бы то ни было новый год наступил, поэтому всех с прошедшими праздниками, и давайте вливаться в работу
Постараюсь в новом году радовать вас большим количеством полезного и не очень контента
А начну с маленького подарка всем виндоводам и любителям халявы.
Наткнулся тут недавно на скриптик, который сбрасывает триалку в IDEA Ultimate 🤩
Все что делает этот скрипт - удаляет папки с конфигами идеи из пользовательской папки
У меня триалка сбросилась, ровно как и вся конфигурация идеи, то бишь слетели любимые темы, масштаб, хоткеи... В общем все кастомные настройки
Но зато триальный период сбросился и месяц можно спокойно юзать. Гипотетически процедуру можно повторять сколь угодно много раз.
Используйте на свое усмотрения, все плюсы и минусы я перечислил)
Всем добра и сил сделать оливье еще один раз)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍5🔥2
🔥 Итоги месяца работы с учеником 🔥
Месяц назад я начал работать с Владом, начинающим Java-разработчиком. За этот месяц мы проделали большой путь, и его прогресс просто впечатляет! 👇
Еще до работы со мной Влад самостоятельно написал телеграм-бот "Анонимка" — бот для анонимного общения с рандомными собеседниками.
💻 Кодовая база включает:
3 микросервиса, 2 библиотеки и интеграцию с Kafka.
Для начинающего разработчика это действительно крутой результат!👏 Поэтому Press F to pay respects 🫡
✅ Что мы сделали за месяц:
▫️Провели 4 мок-собеседования по Java Core, Spring, SQL и многопоточности. Влад уверенно отвечает на вопросы, и прогресс заметен с каждым разом.
▫️Внедрили Liquibase для миграций БД
▫️Настроили Nexus и Docker для публикации библиотек и сборки docker-образов, т.е. провели докеризацию его проекта.
▫️Развернули приложение на реальном сервере — теперь всё готово к использованию! 🚀
🧪 Как вы можете помочь?
Я приглашаю вас потестировать "Анонимку". Это отличный шанс проверить его в реальном использовании и оставить свои отзывы.
Ссылка на бот 👉🏻 https://news.1rj.ru/str/anonimka_ru_chatbot.
📈 Что дальше?
Влад планирует развивать своего бота, добавляя такие функции, как выбор пола и возраста собеседника, а также готовится к активному поиску работы в IT-компаниях. 💼
Давайте поддержим Влада на его пути в IT! 💪
Месяц назад я начал работать с Владом, начинающим Java-разработчиком. За этот месяц мы проделали большой путь, и его прогресс просто впечатляет! 👇
Еще до работы со мной Влад самостоятельно написал телеграм-бот "Анонимка" — бот для анонимного общения с рандомными собеседниками.
💻 Кодовая база включает:
3 микросервиса, 2 библиотеки и интеграцию с Kafka.
Для начинающего разработчика это действительно крутой результат!
✅ Что мы сделали за месяц:
▫️Провели 4 мок-собеседования по Java Core, Spring, SQL и многопоточности. Влад уверенно отвечает на вопросы, и прогресс заметен с каждым разом.
▫️Внедрили Liquibase для миграций БД
▫️Настроили Nexus и Docker для публикации библиотек и сборки docker-образов, т.е. провели докеризацию его проекта.
▫️Развернули приложение на реальном сервере — теперь всё готово к использованию! 🚀
🧪 Как вы можете помочь?
Я приглашаю вас потестировать "Анонимку". Это отличный шанс проверить его в реальном использовании и оставить свои отзывы.
Ссылка на бот 👉🏻 https://news.1rj.ru/str/anonimka_ru_chatbot.
📈 Что дальше?
Влад планирует развивать своего бота, добавляя такие функции, как выбор пола и возраста собеседника, а также готовится к активному поиску работы в IT-компаниях. 💼
Давайте поддержим Влада на его пути в IT! 💪
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤6👍2
💡 Как поднять свой VPN
Обещал рассказать, как настроить свой VPN. 🔧
Раньше не задумывался всерьёз о том, чтобы поднять свой VPN, потому что казалось, что это слишком сложно. 🤯
А оказалось всё довольно просто! 🤦♂️
👉 Делал по этому гайду:
📜 Как сделать свой VPN: установка и настройка Amnezia
Работает везде:
💻 PC
📱 Android
🍏 iOS
Процедура состоит из 3 шагов:
1️⃣ Аренда VPS
Арендовал сервер на pq.hosting. Оплатить можно любым способом! 💳
2️⃣ Установка Amnezia VPN
Приложение автоматически устанавливает нужное ПО на сервер. Просто вводите логин и пароль от SSH 🔑
3️⃣ Подключение мобильных устройств
С ПК делитесь подключением через QR-код 📷
На телефоне сканируете этот код – и готово! ✅
Единственный гемор 🚩
Приложения Amnezia VPN нет в российском AppStore. Поэтому пришлось создавать зарубежный Apple ID 🌍
🤔 В чем плюсы?
Работает быстрее и стабильнее, чем платные VPN 🚀
Полный контроль над подключением🛡
В отличие от платного VPN - свой не отвалится 🔒👌
Если заинтересовало, читайте гайд! 🔗
Обещал рассказать, как настроить свой VPN. 🔧
Раньше не задумывался всерьёз о том, чтобы поднять свой VPN, потому что казалось, что это слишком сложно. 🤯
А оказалось всё довольно просто! 🤦♂️
👉 Делал по этому гайду:
📜 Как сделать свой VPN: установка и настройка Amnezia
Работает везде:
💻 PC
📱 Android
🍏 iOS
Процедура состоит из 3 шагов:
1️⃣ Аренда VPS
Арендовал сервер на pq.hosting. Оплатить можно любым способом! 💳
2️⃣ Установка Amnezia VPN
Приложение автоматически устанавливает нужное ПО на сервер. Просто вводите логин и пароль от SSH 🔑
3️⃣ Подключение мобильных устройств
С ПК делитесь подключением через QR-код 📷
На телефоне сканируете этот код – и готово! ✅
Единственный гемор 🚩
Приложения Amnezia VPN нет в российском AppStore. Поэтому пришлось создавать зарубежный Apple ID 🌍
🤔 В чем плюсы?
Работает быстрее и стабильнее, чем платные VPN 🚀
Полный контроль над подключением
В отличие от платного VPN - свой не отвалится 🔒👌
Если заинтересовало, читайте гайд! 🔗
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤3👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣11🏆5
🤔 Что сложнее, пройти собес или в попасть на собес?
Мне вот кажется, пройти собес гораздо проще, чем стабильно получать приглашения💼
Для прохождения собеседования нужно изучить теорию. Да, ее много. Но тут все хотя бы понятно. Есть объем работы X и за время Y можно все перелопатить 🤓🦾📚
А с приглашением на собесы все сложнее. Есть резюме X и оно дает в среднем 0 приглашений на собесы в месяц. И что с этим делать?.. 😵💫🤯😩
Яйцо или курица? 🤔
Что поднимает привлекательность резюме в глазах работодателей? Опыт работы. Где его взять? На работе. Как на нее попасть? Нужен опыт работы. 🫨
Как выйти из этого порочного круга?
Пет-проекты 🚀
Не устану повторять, что хороший пет-проект закрывает эти вопросы 😌
А бонусом дает
🦸♂️ Развитие практических скиллов
🦸♂️ Навык проектирования кода
🦸♂️ Изучения актуальных библиотек
🦸♂️ И, наверное, силу земли 🥒
Если вы придумаете проект, который решает какую-то бизнес задачу, и сделаете его для друга за банан - формально вы фрилансер💲 .
Поэтому в своей работе наставником я и делаю упор именно на создание пет-проектов 😎.
И поэтому в курсе, который я запускал в прошлом году, ребята разрабатывали проект для условной кофейни с системой лояльности☕️ .
Это самый универсальный вариант проекта. Замените кофейню на салон красоты или шиномонтажку, кодовая база останется прежней🔝 .
В феврале стартует второй поток курса по разработке пет-проектов на Spring Boot 🚀
Формат:
🔣 Длительность: 3 месяца.
🔣 Уроки: раз в неделю.
🔣 Онлайн созвоны: раз в две недели.
Что получите на выходе?
Каждый участник создаст приложение для кофейни:
⭐ Веб-интерфейс для сотрудников.
⭐ Telegram-бот для клиентов.
⭐ Деплой на реальном сервере
Кодовая база универсальна – её можно адаптировать под любой бизнес: салон красоты, шиномонтаж, цветочный магазин.
Бонусы:
Бонусом каждый участник получит
❤️ Набор теории по Java Core, Spring и Hibernate для подготовки к собесам.
❤️ Доступ в закрытый чат с моими выпускниками, где большинство уже трудоустроены
Хочешь участвовать?
Чуть позже расскажу больше о формате и стеке технологий.
А пока ставь "+" в комментах и я расскажу как попасть на курс
Мне вот кажется, пройти собес гораздо проще, чем стабильно получать приглашения
Для прохождения собеседования нужно изучить теорию. Да, ее много. Но тут все хотя бы понятно. Есть объем работы X и за время Y можно все перелопатить 🤓🦾📚
А с приглашением на собесы все сложнее. Есть резюме X и оно дает в среднем 0 приглашений на собесы в месяц. И что с этим делать?.. 😵💫🤯😩
Яйцо или курица? 🤔
Что поднимает привлекательность резюме в глазах работодателей? Опыт работы. Где его взять? На работе. Как на нее попасть? Нужен опыт работы. 🫨
Как выйти из этого порочного круга?
Пет-проекты 🚀
Не устану повторять, что хороший пет-проект закрывает эти вопросы 😌
А бонусом дает
Если вы придумаете проект, который решает какую-то бизнес задачу, и сделаете его для друга за банан - формально вы фрилансер
Поэтому в своей работе наставником я и делаю упор именно на создание пет-проектов 😎.
И поэтому в курсе, который я запускал в прошлом году, ребята разрабатывали проект для условной кофейни с системой лояльности
Это самый универсальный вариант проекта. Замените кофейню на салон красоты или шиномонтажку, кодовая база останется прежней
В феврале стартует второй поток курса по разработке пет-проектов на Spring Boot 🚀
Формат:
Что получите на выходе?
Каждый участник создаст приложение для кофейни:
Кодовая база универсальна – её можно адаптировать под любой бизнес: салон красоты, шиномонтаж, цветочный магазин.
Бонусы:
Бонусом каждый участник получит
Хочешь участвовать?
Чуть позже расскажу больше о формате и стеке технологий.
А пока ставь "+" в комментах и я расскажу как попасть на курс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍6❤3
Скрытая фича Spring Boot: Автогенерация Banner
Привет, народ!
Попробую порадовать вас серией постов со скрытыми (и не очень) фичами Spring-Boot.
И начнем мы с фичи, внедрив которую, именно ты станешь самым стильным разрабом на районе и больше никто не вспомнит про сына маминой подруги 😎
Погнали 💨
Надоела скучная надпись SPRING-BOOT при старте приложения?
А знал ли ты, что баннер - это место для твоей рекламы? 😏
Как изменить баннер?
Просто добавь файл
Автоматическая генерация баннера
Если не хочешь писать ASCII-арт вручную, используй генератор: Spring Boot Banner Generator.
Поддержка переменных
В
Эти переменные берутся из
Некоторые полезные переменные:
●
●
●
●
Куда выводятся переменные?
Все переменные, указанные в
Альтернативные форматы
Можно использовать изображения (banner.jpg, banner.png) или даже файлы .gif, а Spring Boot сам преобразует их в ASCII.
Вариант с картинками у меня не заработал🗿 .
Но в инете пишут, что такое точно можно провернуть 😅.
Если у тебя получится, закинь решение в комментах и можешь выкидывать на помойку гайды по пикапу, потому-что отныне все телочки будут...так всё, посты моя мама читает, (мама привет), поэтому немного сбавим пыл 😂
Привет, народ!
Попробую порадовать вас серией постов со скрытыми (и не очень) фичами 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
🔥10❤4😁3👍2
Что выведет код выше?
Anonymous Poll
18%
true
58%
false
22%
Ошибка компиляции
1%
Исключение в runtime
Всем привет!
На этот год у меня весьма амбициозные планы по развитию своей наставнической деятельности.
Будет больше видосов на YouTube. А в канале больше кружопелей, подксатов, вопросов-ответов, и полезных постов.
Все это в амбициозных планах, которые разбиваются о мою ленивую жопу 🍑
Можно было бы списать все на большую загруженность, сбитый режим, нехватку времени, магнитные бури и на Венеру не в том доме, но... есть подозрение, что виновник торжества где-то внутри, а не снаружи🗿 .
Поэтому, пока что, вместо сочного видоса или моего бородатого лица в кружопеле, я подготовил для вас маленькую статейку на тему того,
Почему 0.1 + 0.2 != 0.3 в Java?
Судя по распределению голосов выше -победил Трамп почитать ее было бы полезно всем, кто тыкнул не в false 😅
На этот год у меня весьма амбициозные планы по развитию своей наставнической деятельности.
Будет больше видосов на YouTube. А в канале больше кружопелей, подксатов, вопросов-ответов, и полезных постов.
Все это в амбициозных планах, которые разбиваются о мою ленивую жопу 🍑
Можно было бы списать все на большую загруженность, сбитый режим, нехватку времени, магнитные бури и на Венеру не в том доме, но... есть подозрение, что виновник торжества где-то внутри, а не снаружи
Поэтому, пока что, вместо сочного видоса или моего бородатого лица в кружопеле, я подготовил для вас маленькую статейку на тему того,
Почему 0.1 + 0.2 != 0.3 в Java?
Судя по распределению голосов выше -
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍6🔥4🤣2👎1