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

Моим вторым учеником был Нурбакыт. Самый воспитанный и скромный среди прочих, он сталкивался с рядом трудностей.

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

Однажды я заставил Нурбакыта удалить весь код по пройденной теме и написать все по новой, так как понял, что тема недостаточно хорошо усвоена😫

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

Их было два, и по итогу одного из них ему предложили сделать тестовое задание:

Написать бэк на спринге, а фронт на реакте.

Наверное вспомнив, как я кошмарю людей, Нурик написал все самостоятельно, и отправил итоговый вариант в компанию.

В начале этой неделе ему сделали Job Offer 👍🤝🎉💰

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

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

PS я пишу это просто чтобы поделиться радостью, у меня нет цели рекламировать себя как наставника (по крайней мере сейчас). И чуть позже я хочу поделиться своими дальнейшими планами
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤‍🔥4👍4👏1
Hello, world!

Проект был завершен почти на половину, но работы были приостановлены. Он не мог понять, что мешает ему двинуться дальше. Задачка пустяковая, нужно просто написать пару ендпоинтов, html страничек, прикрутить авторизацию. При удачном стечении мотивации делов-то на несколько часов работы. Но что-то не давало продвинуться дальше. Словно кость вставшая поперек горла. Всеобъемлющая апатия и алгоритмический паралич не давали сдвинуться с места ни на символ.

Он прокручивал в голове этот сценарий много раз: "Сначала нужно сделать проект, затем спроектировать план курса, затем просто все отснять". Но все колом встало на этапе "сделать проект". При мыслях об html завтрак начинал стучаться обратно в глотку просясь наружу.

Так день шел за днем, пока однажды эта агония не прекратила свое существование вместе с внезапным приходом ответа на вопрос: "Да почему я не могу продолжить?". Вдруг, черепашьим голосом мастера Огвей из кунг-фу панды прозвучало: "Просто у тебя не стоит на этот проект, выбери другой".

Бинго! "Ты всем говоришь заниматься пет-проектами, которые решают проблемы бизнеса, так зачем ты делаешь этот виш-лист?"
Виш-лист, проект которых миллионы в сети. Очередной пустозвонный туториал по тому, как надо писать хэлло ворлд на спринге. Меня тошнит просто от мысли нажимать кнопки ради этого.

Удалить все. Сначала CTRL+A, а затем размашисто и жирно послать все на три буквы DEL.

Другой проект... решение для бизнеса.... Точно! Вдруг стало совершенно очевидно что нужно делать, и как...


Всем доброго утра!
Да, я разрабатываю свой курс, и да, я все еще вижу галлюцинации.

Отвечу на ряд вопросов, которые поступают в лс:
1. Когда выйдет курс - не знаю. Не ждите меня, сила у вас внутри)
2. Беру ли я новых учеников - Нет
3. Планирую ли я брать новых учеников - возможно когда-нибудь

Пока я делаю свой курс я:
1. Постараюсь радовать вас контентом, полезным, бесполезным. Мне нравится возможность порой упорото себя вести.
2. Буду пить чай с печеньками
🔥73👍3🦄2
И первая вещь, которой хочется с вами поделиться и которая совершенно никакого отношения к программированию не имеет, но произвела на меня большое впечатление. Это интервью с 4-ех кратным доктором наук, который расскажет как правильно выбрать спутника жизни, и почему долголетие напрямую зависит от того, ставите вы перед собой цели или нет.

https://www.youtube.com/watch?v=0H9TfRJz_fY&t=1s
🔥6👍4❤‍🔥1👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Объявляется конкурс «проведи аналогию с программированием»

Моя версия: «Когда джуны увидели на какие костыли способен сеньор» 😂
🤣54🙈2
Есть два стула две переменные:

int x = 3;
int y = 4;


На какой сам сядешь Необходимо поменять их значения местами, без использования третьей переменной.

Т.е. в y после нехитрых махинаций должно быть 3, а в x - 4.

Раскройте нехитрую махинацию
👍7🤔2
Всем привет!

Короче, сижу я и придумываю схему для бд, и думаю, а чего бы мне не предложить вам тоже немного развлечься?

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


☕️Представим себе маленькую кофейню-булочную, для которой нужно разработать систему лояльности с бонусной картой.

💳 На бонусную карту возвращаются 5% от суммы покупки в виде бонусов., которые можно впоследствии потратить.

☎️ Представим что бонусная карта привязана к номеру телефона.

👇Итого:
Клиент совершает заказ, называет номер телефона, оплачивает заказ и получает 5% от суммы на БК. Если у него были бонусы, он может за их счет уменьшить стоимость оплаты.

Вопрос:
Какие основные сущности вы бы выделили для такого приложения?

Какие таблицы в бд создали бы?

Может быть у вас есть какие-то идеи для реализации логики бизнес-процесса?

В общем, буду рад, если поделитесь.

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


PS если картинка вызывает кринж, значит она подобрана правильно))
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3👌1
Привет, ребят!
Порой мне лень что-то постить, потому что порой я ленивый. В такие моменты радуют ваши вопросы в чатике, которые могу потом сюда продублировать.

Дублирую😌
Выше вопрос, ниже ответ 😎

Ликвидбейз это инструмент миграции бд. Чейнджсет - это набор изменений. У него есть id, и прочие параметры. Дословно чейнджсет - это набор изменений. Эти изменения будут применены к бд. Ликвидбейз создаст служебную таблицу для себя - databasechangelog, в которую он будет записывать какие чейнджсеты были применены, а какие нет. Благодаря этому каждый чейнджсет накатывается всего лишь единожды. Также, благодаря этому, нельзя изменять те чейнджсеты, которые были накатаны на базу. В табличке записывается хэш сумма файла миграции, и при изменении этого файла (чейнджсета) хэш сумма сравнивается с той, что записана в бд, если они не совпадают, при запуске будет ошибка.

Короче ликвидбейз - это инструмент миграции бд.

Хибернейт - это реализация ORM - объектно-реляционного маппинга. Подхода, при котором объекты мира ооп сопоставляются с реляционными таблицами.
Создать таблицы при запуске приложения - это одна из функций, которая конфигурируется наличием проперти:
spring.jpa.hibernate.ddl-auto (тык). Возможные значения: auto, create, update. Каждая из них при запуске включает разное поведение хибернейта. Создать схему, обновить в соотвтетствии с ентити классами, и тд, см доки по ссылке выше.

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

Если используешь ликвидбейз, просто не ставь пропертю хибернейта, которую выше написал
9🔥3👍1
Скоро что-то будет
🔥141
Что-ж будет то скоро?

Выложить фото материализации своих мыслей на бумаге было гораздо проще, чем воплощать все это в жизни 😅.

Но как бы то ни было - понеслась.

Первое, и самое сложное из того, что должно произойти - это камбек пост. Этот самый, по буковкам которого так ловко бегают твои глазки.

Почему это сложно?

Скажем прямо, я выпал на некоторое время. И теперь, мне будто нужно обосновать свое возвращение. Конечно, куда проще было бы сразу написать пост про разрядность чисел. Будто ничего и не было. Будто я не шлялся по бабам все это время. Но я не могу делать вид, что ничего не произошло.

А кое-что все таки произошло.

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

А главное вот что.

У благочистивого безделья была причина - отсутствие мотивации. У отсутствия мотивации была причина - мне тяжело заставить себя делать то, за что я не получаю ничего взамен (народная любовь не в счет). И при этом, стараться делать это идеально.

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

Но я его нашел, точнее придумал.

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

Вдруг как в сказке скрипнула дверь, все мне ясно стало теперь.
Столько лет я спорил с судьбой ради этой встречи с тобой.


Конечно это вдруг произошло, потому что все прошедшее было не зря. Не напрасно было.

В общем, не буду тянуть кота за яйца.

Что произошло?

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

Подробности я расскажу позже.

И еще я понял, что снова начну практиковать индивидуальное наставничество. Подробности тоже расскажу позже.

Ну и последнее. Мне нравится этот блог. Мне нравится, что он кому-то приносит пользу. И я понял, что мне нужно вести его более систематически. Т.е. относиться к генерации контента не как к чему-то, что требует вдохновения, а как к чему-то, что требует немного дисциплины. Чуточку. Пол шишечки дисциплины.

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

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

Работаем
👍116🔥4❤‍🔥3
Ну и чтоб песенка не у одного меня заела в голове 😁
6😁3
Разрядность числа и как я провалил собес в Одноклассники.

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

Бывает порой так, как у меня было на собесе в ОК.

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

Как бы то было, он сказал, что начнет с элементарных вещей, и спросил:

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

Я стал прикидывать, что первый бит отвечает за знак числа, значит у нас остается 31бит. Т.е. мы можем хранить примерно 2 в 31 степени положительных и столько же отрицательных чисел

- Отлично! - сказал он
"Чувак, пожалуйста, прекрати вертеться", - подумал я, но сжав зубы и натянув улыбку повторил:
- Отлично!

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

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

В общем, вы как думаете, почему это список целых чисел будет занимать больше памяти, чем массив целых чисел?
🔥7🦄4👍2
Массив целых чисел или список, что весит больше?

Оговоримся, что мы сравниваем массив и список основанный на массиве - ArrayList.

Вообще, правильный ответ дали сразу же.

Мы не можем в списке хранить примитивы, а в массиве можем.

Примитивы весят меньше классов оберток.

А значит, массив примитивов весит меньше списка оберток 🎮

Но возник вопрос, а что если будет массив оберток?

В этом случае список все равно будет весить больше 🙃.

Список - это объект
Массив - это объект

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

Это как с матрешкой. Большая матрешка с маленькой внутри не могут весить меньше, чем отдельно маленькая матрешка 🫥

Вроде разобрались, список жирнее.

Дабы не быть голословным, вот некоторая инфа о том сколько памяти занимают разные объекты в Java:

🎮 Memory usage of some typical Java objects

🎮 Sizes of primitive types

🎮 How to calculate the memory usage of a Java array

Список весит больше массива. Вроде бы все просто, но есть одно маленькое но.

Допустима ситуация, при которой список будет весить меньше массива.

Сможете ли вы описать такой кейс?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Всем привет!
Надо иногда и себя показывать. В общем и целом мне надо к парикмахеру, но пока я не хочу, подробности в видосе.
Всем добра!
10❤‍🔥4👍4🔥2
Что самое важное в изучении Java?

Пет-проекты. По нескольким причинам.

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

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

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

Это не голые умозаключения. Это инфа проверенная на опыте.

У меня было 5 учеников. Мы тратили минимум 80% времени на создание проектов, а остальные 20 раскидали на подготовку к собесам и консультации по тестовым заданиям. Каждый из 5 нашел работу.

С каждым из них мы делали индивидуальный проект. Логика в проектах была разной, где-то даже интерфейс был на иврите 😅.

Но по большей части набор технологий был схож, как и структура.

Теперь у меня есть маленькая мечта. Преподнести эту информацию не кому-то персонально, а группе людей. Поэтому в мае я стартую первую итерацию своего курса по созданию пет-проектов на Spring Boot.

Что будет?

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

Это самая универсальная идея для дальнейшей кастомизации. Каждый сможет потом сделать практически идентичное приложение, но не для кофейни, а для салона красоты, пекарни, автомойки и тд.

Мы напишем приложение на Spring Boot с авторизацией, блэк-джеком и хостингом.

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

И как я сказал - это моя первая итерация и первый курс. Неизбежны какие-то шероховатости.

Поэтому сейчас я буду предлагать его на порядок дешевле, чем в будущем, когда я оптимизирую подачу материала и автоматизирую сам процесс обучения.
И поэтому в этой итерации я всегда буду на связи и буду саппортить аки самый ответственный инженер технической поддержки 👨‍🔧.

Но есть и плюшки.

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

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

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

До 28 апреля действуют самые вкусные условия
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6🤩2
🔓 Принцип KISS в программировании

Принцип KISS (Keep It Simple, Stupid) гласит: "Делай проще, глупыш(ка)". Это означает, что программы лучше работают, когда они просты в понимании, создании и использовании.

🔍 Как придерживаться принципа KISS при разработке на Java:

1. Разбивайте код на маленькие части: Пишите небольшие кусочки кода, которые легко читать и понимать. Это поможет другим разработчикам легко разбираться в вашем коде.
2. Давайте понятные имена: Используйте имена переменных и функций, которые описывают, что они делают. Это сделает ваш код понятнее для всех.
3. Избегайте многоуровневой вложенности: Не создавайте несколько уровней вложенности, таких как вложенные циклы или ветвления. Это может усложнить ваш код и сделать его трудным для понимания.
4. Тестируйте свой код: Напишите тесты, чтобы убедиться, что ваш код работает правильно. Это поможет избежать ошибок.
5. Не усложняйте зависимости: Используйте только те библиотеки, которые вам действительно нужны. Это сделает ваше приложение проще и быстрее.
6. Документируйте свой код: Пишите комментарии к коду, чтобы другие разработчики могли быстрее разобраться в нем.
7. Разрабатывайте постепенно: Начните с простой версии вашего приложения и добавляйте новые функции постепенно.


Надеюсь эти простые рекомендации помогут вам делать все проще и создавать более понятные программы на Java!
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍5🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
🤔3
Java Mentor pinned «Что самое важное в изучении Java? Пет-проекты. По нескольким причинам. 🏜 В пет-проекте ты учишься делать цельное приложение. Тебе приходится решать комплекс взаимосвязанных друг с другом задач, а не решать задачки в отрыве от реальности 🏜 В отличии от…»
Короче, что не так с ООП?

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

Контент, который вызывает эмоции - крутой контент. 🔥

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

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

Это все круто, но с ООП то что не так?

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

А во вторых, в ООП количество ссылок на объекты распределенных по всей системе растет такими же темпами, как количество разрывающихся от негодования пуканчиков в постах из примера выше.

По просту говоря - взрывными темпами.

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

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

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

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

Второй опыт был эталонным примером обращения внимания на эту проблему 🛡.

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

Какая у всего этого мораль?

Одной из самых сложных для меня тем на собесах (когда собесят меня) является потребление памяти.

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

Затушите огонь благого гнева изучением Java Memory Model, почитайте про различные сборщики мусора и алгоритмы их работы и получите +100 к привлекательности на собесах 📿🧣❤️‍🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍6👌1
Напомню, что запускаю курс по созданию пет-проекта на Spring-Boot 👍

Сегодня и завтра еще действуют очень привлекательные условия для входа 👉

В рамках курса мы создадим приложение для кофейни с веб-интерфейсом для работников и телеграмм ботом для клиентов ⭐️

Ребята, которые залетели на курс уже получили первые задания 🌡

Хочешь прокачаться с нами? Ставь + в комментах или пришли мне + в лс 🤕
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍31