Java Mentor
293 subscribers
182 photos
52 videos
1 file
88 links
Download Telegram
Как посчитать продолжительность времени?

⚠️ОСТОРОЖНО СПОЙЛЕРЫ! ⚠️
Не читай код, если ты делаешь задание и весь такой САМОСТОЯТЕЛЬНЫЙ

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

Вариант 1. Старый добрый Date. 📅

Просто берем и делаем так:


Date d1 = new Date();
waitSeconds(1);
Date d2 = new Date();
long duration = d2.getTime() - d1.getTime();


И получаем продолжительность в миллисекундах между d1 и d2.

Вариант 2. Еще топорнее 🪓

Если не хочется сталкиваться с подкопотными календарными преобразованиями метода getTime у класса Date, можно сделать практически тоже самое, но без класса Date:


long time1 = System.currentTimeMillis();
waitSeconds(1);
long time2 = System.currentTimeMillis();
long duration = time2 - time1;


Вариант 3. Для тех кто устал от Java 7. 🎱

Еще один интуитивный вариант - LocalDateTime. Делаем все тоже самое, заменяя ряд ключевых слов:


LocalDateTime ldt1 = LocalDateTime.now();
waitSeconds(1);
LocalDateTime ldt2 = LocalDateTime.now();
Duration duration = Duration.between(ldt1, ldt2);


И получаем класс Duration c богатым как швейцарский нож API 🪚.

Вариант 4. Для тех кого смущает локаль и часовые пояса 🌐

Абсолютно такой же вариант, как и 3, но локально-независимый: Instant вместо LDT:


Instant instant1 = Instant.now();
waitSeconds(1);
Instant instant2 = Instant.now();
Duration duration = Duration.between(instant1, instant2);


Остается всего 1 вопрос, комрад.

Как сложить несколько Duration () ?

Все просто, кэп, юзай метод plus:


Duration d1 = Duration.ofSeconds(1);
Duration d2 = Duration.ofSeconds(1);
Duration d3 = Duration.ofSeconds(1);
Duration total = d1.plus(d2).plus(d3);


Раздел призыва к действию

Сможешь придумать другой правильный/упоротый вариант? Накидай дичи в комментах 😏
🔥5👍2
Мой любимый блогер выпустил очередной мозгодробителтный видос 🤯

Если еще не знакомы с его творчеством- настоятельно рекомендую 🤌

https://youtu.be/v6HoOOp5fII?si=tQ3tRbUeZkrL9uux
🔥5👎1
Представь что ты - разработчик языка программирования

null — источник боли.

Код компилируется, выглядит корректно, а потом падает в рантайме с NullPointerException.

В Kotlin есть управляющие конструкции для работы с null.
Два часто обсуждаемых инструмента — это:

▫️оператор !!
▫️функция requireNotNull(...).

Оператор !!

val value: String? = getValue()
val result = value!!


Оператор !! обещает, что значение точно не будет null.
По сути он говорит компилятору:

«Бро, тут точно not null»

Если ожидание оправдывается — всё работает.
Если значение всё же окажется null — приложение падает с NullPointerException.

Альтернатива — requireNotNull(...)

val result = requireNotNull(value) { "value must not be null" }


requireNotNull работает иначе:

▫️явно проверяет значение на null
▫️если значение null, выбрасывает IllegalArgumentException
▫️позволяет задать осмысленное сообщение об ошибке

В отличие от !!, здесь:

▫️проверка не скрыта
▫️ошибка читается как нарушение контракта
▫️сразу понятно, что именно пошло не так

Рассмотрим на примере

Есть метод, который принимает строго not-null параметр:


fun sendEmail(email: String) {
// ...
}


И есть nullable-значение:


val email: String? = user.email


Вариант с !!

sendEmail(email!!)


Мы передаём nullable-значение, уверяя компилятор, что оно точно not null.
Если это окажется не так — получим NullPointerException без контекста и будем разбираться, где нарушен контракт.

Вариант с requireNotNull

sendEmail(
requireNotNull(email) { "User email must not be null" }
)


Здесь ошибка:

▫️возникает в момент передачи параметра
▫️содержит осмысленное сообщение
▫️сразу указывает на причину проблемы

Ключевая мысль

Оба варианта компилируются.
Разница проявляется только в момент ошибки — и именно там она критична.

⁉️ И главный вопрос

Если requireNotNull закрывает боль с null более правильно,
если !! считается «грязным» и потенциально опасным оператором…

Зачем тогда вообще нужен !! ?

Представь, что ты — разработчик языка.
Для каких задач ты бы сознательно оставил такой инструмент?

Это вопрос не про правильно / неправильно и это не вопрос про Kotlin.

Это вопрос про дизайн языка, компромиссы и инструменты, которые он даёт разработчику.

Интересно почитать ваши мысли 👇
5🔥4🤔2
Мой 2020

Раскопал древние скрижали со времен давно минувших дней 🥹🥲😭

Большой трогательный рассказ о том, как прошел мой 2020 год, в котором я пережил целый ряд взлетов и падений, который, оглядываясь назад, определил мой дальнейший профессиональный путь, по которому я все еще ковыляю...

Фрагменты:

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

....

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

....

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

Читать полностью
🔥64❤‍🔥1😱1
Media is too big
VIEW IN TELEGRAM
Ревью номер 1 для @AzorAhai777

По задачке вот этой

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

От меня получаешь:
5 Благодарочек
2 Дисклеймера
3 Точки роста
И бесконечный респект 👍

Всё это в видосе 😎

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

PS @AivenDemin твое ревью на подходе)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍3👌2
Media is too big
VIEW IN TELEGRAM
@AivenDemin, ревью для тебя 😎

Спасибо что потратил время и реализовал задачку 🤝

Чуть позже выложу свое решение и новое задание )

PS хотел еще в выходные выложить, но то, что видео (на некоторых андроидах) воспроизводится без звука выбило немного из колеи... 😕

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

Видос можно посмотреть в облаке: https://disk.yandex.ru/i/pgsShTBufmw2hw

И на YouTube: https://youtu.be/FlnLejkjVmg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍32🙈1
Как я стал экспертом?

Ума не приложу как я стал экспертом (а главное в чём), но путь был тернист.

Выписал все свои должности, так, как они записаны в трудовой:

04.2011 - Консультант по продажам 💵
03.2012 - Старший лаборант межкафедрального компьютерного класса 🧪
11.2013 - Стажер разработчик 🔫
04.2015 - Младший разработчик 🧸
04.2016 - Младший разработчик 🧸
01.2017 - Тестировщик программного обеспечения 🪚
06.2017 - Тестировщик программного обеспечения 🪚
12.2017 - Разработчик программного обеспечения 👨‍💻
12.2020 - Инженер по разработке программного обеспечения 👨‍🔧
06.2022 - Старший разработчик 💻
04.2025 - Ведущий эксперт 🤪


Оказывается я почти в лаборатории работал, а еще быражил кредитками 😅

А как у тебя звучит самая зашкварная должность? 👇
🔥7👏3🤓2👎1🤩1
Media is too big
VIEW IN TELEGRAM
Моя версия трекера

Ребят, всем привет, запилил свою версию трекера

Видос в облаке: https://disk.yandex.ru/i/SruF3E-Cst-GdQ

Видос на YouTube: https://youtu.be/DmcgvnUdFqc

Ссылка на репу: https://github.com/zor07/time-tracker
🔥53👍3
Карта проекта по разработке приложения для трекинга времени.

Задание 1

📄 Техническое задание

🔍 Ревью 1
🔍 Ревью 2
💻 Мое решение
👍2💘2
Java Mentor pinned a photo
This media is not supported in your browser
VIEW IN TELEGRAM
🔥2
Открываю набор в наставничество.

Есть 4 места на персональную работу до выхода на рынок труда.
Без привязки к срокам — работаем до достижения результата и выполнения критериев готовности.

Что будем делать? 🚀

— Системно прокачивать теорию и практику
— Реализуем проект для бизнеса — от идеи до деплоя
— Проведём серию мок-собеседований
— Проработаем резюме

Требования 📌

Худо-бедно владеть Java Core.
Я не обучаю с нуля, поэтому перед стартом будет короткое входное интервью.

Для кого это?

Для тех, кто не понимает:

— Что и в каком порядке учить после Java Core
— Как без опыта стать разработчиком и где этот опыт взять
— Почему на отклики приходит тишина и нужно ли «выучить ещё 100500 технологий»

Условия 💼

Оплата разовая, фиксированная, перед началом работы.
Есть возможность рассрочки.

Если откликается — оставь + в комментариях, я свяжусь лично 👇
8🔥3👍2😁1🤩1
Продолжим разработу нашего Тайм-трекера.

Привет, друзья!

В первом задании мы научились просто трекать время между start и stop.
Один таймер, одно состояние, суммарный результат.

Теперь усложняем.

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

Появляются новые требования:

🎮 хранить данные раздельно по проектам
🎮 усложнить поведение команды status
🎮 соблюсти ограничение: в системе может быть только один активный таймер

Это уже не просто секундомер, а небольшая доменная модель 🧠

🚀 Это задание прокачивает:

🎮 умение проектировать собственную структуру кода, а не просто писать работающую логику
🎮 навык моделирования домена
🎮 аккуратную агрегацию и хранение данных
🎮 разделение бизнес-логики и инфраструктуры
🎮 работу с изменяющимися требованиями

На этом этапе начинает проявляться способность самостоятельно выстраивать архитектуру решения.

🔁 Как можно вкатиться

Есть три варианта:

1️⃣ Продолжить своё решение из первой части
2️⃣ Взять за основу моё решение и реализовать часть 2
3️⃣ Написать задание 1 и 2 с нуля

Любой вариант — нормальный.

Полное ТЗ — здесь:
👉 Задание 2

Ревью получат первые 3 человека, которые выложат ссылку на git-репозиторий с решением.

Поехали 💪
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥4👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🤣9
Java Mentor pinned «Открываю набор в наставничество. Есть 4 места на персональную работу до выхода на рынок труда. Без привязки к срокам — работаем до достижения результата и выполнения критериев готовности. Что будем делать? 🚀 — Системно прокачивать теорию и практику — Реализуем…»
🤣5🗿3👍2💘2
Сегодня сил на посты про Java не хватило, но если хотите, могу поделиться рецептом салата с теплыми баклажанами 🤤
🤩8👍5💯2
Media is too big
VIEW IN TELEGRAM
Привет, друзья!

Записал интервью с моим уже бывшим учеником Мишей.

Разобрали его путь от точки «Сколько в IT зарабатывают» ?!
До точки «Уже 2 года пишу сервисы аутентификации в финтехе».

Мы начали работать в августе 24го, и уже в феврале Миша получил свой оффер.

Выложу на этой неделе, надеюсь будет интересно 🍿

Всех обнял 😎
🔥8👍51
This media is not supported in your browser
VIEW IN TELEGRAM
👍7
Не знаю что из этого выйдет, но...

Последние несколько дней, я с двумя разными ИИ-шками разрабатываю...

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

За 2 дня есть 2 рабочих прототипа:
1. Регистрация в игру через github аккаунт
2. AI ревью. Условно студент создает PR в нужный репозиторий, и тут же получает ревью от ИИ по реализованному заданию в тг боте.

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

На скрине все касательно этой работы

Хз, получится ли довести до прода такой проект, но меня эта затея поглотила целиком.

Если получится - буду искать тестеров пройти такой курс в виде игры в стажировку.

Интересно было бы пройти? )

🔥 - Да

👎 - Нет
🔥17👎1