Java Mentor – Telegram
Java Mentor
298 subscribers
177 photos
51 videos
1 file
86 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
Представь что ты - разработчик языка программирования

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
🔥1
Открываю набор в наставничество.

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

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

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

Требования 📌

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

Для кого это?

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

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

Условия 💼

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

Если откликается — оставь + в комментариях, я свяжусь лично 👇
5🔥3👍2🤩1