Обновления Job4j в 2024
10:31
Telegram Bot  Wizard Java API
8:31
10 ай бұрын
Пікірлер
@na.kovalev
@na.kovalev 3 күн бұрын
А зачем вообще аннотация NotNull над id, который и так генерируется хибером (GeneratedType.IDENTITY)?
@Andrew-7324
@Andrew-7324 10 күн бұрын
0:40 - после этого начал искать комара в комнате))
@ровойт
@ровойт 20 күн бұрын
скажите а data sciense наверно не самое лучшее для начинающего 42-х лет, хотя изучаю спринг
@ukr-pig
@ukr-pig 21 күн бұрын
А я наоборот слышал что у абстрактного класса не бывает полей - есть методы а вот полей быть не должно.По крайней мере это плохой тон
@usertyfoon
@usertyfoon Ай бұрын
Вроде и советы полезные,но: - движения должно быть больше, свои 10к шагов на свжем воздухе очень желательно плюс физо раз в три дня. - холод не всем подходит, но и парить яйца тоже вредно - голод - периодически,раз в неделю "садитесь" на воду, по поводу сахара нагнали кошмара)) ешьте сладкое в меру, и вообще не переедайте.
@divergenny
@divergenny Ай бұрын
Эх, спросили меня этот вопрос, забыл ответ на него. Спасибо большое.
@kirrshin
@kirrshin Ай бұрын
В текущих реалиях не вытеснить ли golang java в корпоративном сегменте? вроде как зп у гоферов пободрее сейчас?
@job4j
@job4j Ай бұрын
Интересный вопрос. Не могу на него ответить. Но в целом кто пишет на Java переходят на Kotlin, а от Go плюются. Но тут нужно статистика. Так же не вижу больших преимуществ от Go? Есть же GraalVM, который может собирать проект в нативный код для Java. Скорость будет такая же.
@kirrshin
@kirrshin Ай бұрын
@@job4j мне самому java ближе, в плане более продуманно все, но вижу какой то сильный тренд в сторону go, как по мне если хочется системного rust или c++
@winter-lb7id
@winter-lb7id Ай бұрын
Бред какой то. Обычно мидлы на собесах по 40 минут решают легкие задачи с литкода, а этим тестовое с 10 пунктами делай)))
@c0l0b0c4
@c0l0b0c4 Ай бұрын
Чет по ссылке пустая страница только.
@job4j
@job4j Ай бұрын
job4j.ru/profile попробуй так.
@kst9326
@kst9326 Ай бұрын
01:02 "В качестве движка используется GigaChat, но если он не будет вытягивать то переключим опять на GigaChat". 😁
@job4j
@job4j Ай бұрын
Тренировка вопросов для собеседований! Мы добавили мощный инструмент для подготовки к собеседованиям: 🔹 Темы и вопросы: Выбирай интересующую тему и отвечай на вопросы. 🔹 AI-проверка: Наш AI анализирует твой ответ, оценивает его по 100-балльной шкале и дает развернутое объяснение. 🔹 Отслеживание прогресса: Каждый ответ сохраняется в истории. На основе качества ответов вопросы сортируются в группы - слабые, средние, сильные. Это помогает лучше запомнить сложные темы и повторять их для усиления. 🎯 Такой подход сделает твою подготовку более эффективной! Переходи в раздел и начни тренироваться: job4j.ru/profile/inverview
@MightyMindsDev
@MightyMindsDev Ай бұрын
Я мидлом из крупной компании вылетел через три месяца Так что это не складывается с тем что вы говорите
@job4j
@job4j Ай бұрын
Как бы и рынок уже изменился с 2021 года. Крайне много обмана и сейчас уже все чаще и чаще вкатунов увольняют.
@MightyMindsDev
@MightyMindsDev Ай бұрын
@@job4j , так я не вкатыш У меня есть профильное образование
@job4j
@job4j Ай бұрын
Могу предположить, что либо ты ничего не делал эти три месяца. Либо использовал схему вкатунов: выучил ответы на собеседовании, а опыта ноль. Другого варианта нет. За что уволили то?
@MightyMindsDev
@MightyMindsDev Ай бұрын
@@job4j , закрывал все задачи до окончания спринта. На собеседование лайфкодил предметные задачи. Просто из-за того что приходилось многое изучать по ходу работы, таски выполнялись немного дольше чем ожидалось и приходилось задавать много уточняющих вопросов Как я понял у компании были выше ожидания, чем я им мог дать На счёт опыта, коммерческого, у меня было на тот момент 6 месяцев. + 4 года где я сам изучал всю предменую область по книгам и статьям. Без курсов, тк я умею искать информацию
@job4j
@job4j Ай бұрын
Уже как бы странно. а что с предыдущем местом работы за 6 месяцев? И еще вопрос. такое предметная область тут? Банковское дело изучал?
@nizat_rum
@nizat_rum Ай бұрын
Ссылку бы на git этого решения...
@job4j
@job4j Ай бұрын
Не надо плодить эти решения. Напиши свое.
@Alex-jx6bz
@Alex-jx6bz Ай бұрын
Пётр, для какого блока эти уроки? На какой уровень они рассчитаны?
@job4j
@job4j Ай бұрын
На уровне стажер будет - 5 блок. Тут он нужен, чтобы показать горизонты следующих уровней. Так если мы дадим Spring Di в конце стажера, то его сразу можно использовать в джуниоре и мидле. А это сократить время на рутинный код и даст больше времени сосредоточиться на микросервисах. Если что его можно пройти отдельно.
@job4j
@job4j 2 ай бұрын
В этом видео я рассказываю, как отправить изображение и аудио через Telegram API Java. Курс по Java - job4j.ru/ Исходный код проекта - github.com/peterarsentev/job4j_boost_mood_bot/tree/RecommendationService
@ukr-pig
@ukr-pig 2 ай бұрын
Привет.Этот телеграм бот для андроида ?И если да то как обстоят дела со спячкой телефона ?
@job4j
@job4j 2 ай бұрын
Добрый день. Нет. Это серверная сторона. А клиент может быть любое устройство.
@alexnovik6223
@alexnovik6223 2 ай бұрын
Петь, сорян, но видео полное г.но. Абсолютно бесполезное видео, т.к. джуны нефига не поймут, а мидлы и выше давно это умеют. И слова паразиты на видео бесят жутко, плюс забыл, сейчас найду и прочее - можно же все вырезать. Отсутствует структура подачи информации. Еще раз сорян, обидеть не хочу, просто говорю как это сейчас выглядит для меня лично. Но плюсик все равно поставлю.
@job4j
@job4j 2 ай бұрын
Спасибо. Учту в следующих видео.
@job4j
@job4j 2 ай бұрын
В этом видео мы рассмотрим, как создать Telegram-бота на Java с использованием Telegram API. Покажем, как настроить автоматическую рассылку уведомлений по времени с помощью планировщика задач и интеграции с ботом. Это полезный инструмент для автоматизации уведомлений, который можно легко внедрить в ваши проекты. Курсы по Java - job4j.ru/ Канал о Java и Котлин - t.me/java_kotlin_hub
@rafonvc6267
@rafonvc6267 2 ай бұрын
Это тестовое задание на джуна или выше?
@job4j
@job4j 2 ай бұрын
А они его всем дают.
@job4j
@job4j 2 ай бұрын
В этом видео я рассказываю про объекты InlineKeyboardMarkup и InlineKeyboardButton Исходники проекта - github.com/peterarsentev/job4j_boost_mood_bot/tree/Buttons%23505296 Курс по Java - job4j.ru/
@the-Maksim
@the-Maksim 2 ай бұрын
У смежного подразделения на работе используется похожий бот (оценка настроения, и мотивационная функция). Насколько знаю используют powerBi для обработки дальше. После обработки обратной связи не было еще 😂 видимо все довольны, всегда😅
@job4j
@job4j 2 ай бұрын
Исходники проекта github.com/peterarsentev/job4... - Вебинары t.me/job4j_webinar - Курс по Java: job4j.ru/ - Пробные собеседования в IT: checkdev.ru/ - Бесплатный антиспам бот для Телеграм: job4j.ru/dionea
@hedonisticway
@hedonisticway 2 ай бұрын
445 задач в стажёре?
@job4j
@job4j 2 ай бұрын
У меня отображает все уроки и старые и новые. так то в первом уровне около 300 уроков.
@hedonisticway
@hedonisticway 2 ай бұрын
​@@job4jфух...))
@divergenny
@divergenny 2 ай бұрын
Отличное обновление, спасибо большое
@divergenny
@divergenny 2 ай бұрын
Спасибо большое, хотел вас спросить этот вопрос, а вы уже ответили
@job4j
@job4j 2 ай бұрын
В этом видео я рассказываю об обновлениях на платформе job4j.ru/ 1. Добавили раздел блоки. Он описывает структуру всех блоков. 2. Добавили раздел код-ревью. Функция позволяет потренироваться в навыках код-ревью.
@Alex-jx6bz
@Alex-jx6bz 2 ай бұрын
"Сигнатура метода - это входящие и выходящие параметрыю" - какие еще выходящие параметры? В сигнатуру метода входят только имя и входящие параметры, они же аргументы!
@viktorshvidkiy6713
@viktorshvidkiy6713 2 ай бұрын
пишу первого бота. Крутое решение с интерфейсом и классами. Все красиво и понятно для новичка, плохо читающего код.
@limitless6216
@limitless6216 3 ай бұрын
public class TaskTwo { private final AtomicInteger lastThreadWorked = new AtomicInteger(0); public List<String> sequence() throws InterruptedException { var out = new CopyOnWriteArrayList<String>(); var t1 = new Thread( () -> { for (int i = 0; i < 3; i++) { add(out, "first", 1); } }); var t2 = new Thread( () -> { for (int i = 0; i < 3; i++) { add(out, "second", 2); } }); t1.start(); t2.start(); t1.join(); t2.join(); return out; } private synchronized void add(CopyOnWriteArrayList<String> list, String s, int currentThreadNum) { try { if (lastThreadWorked.get() == currentThreadNum || lastThreadWorked.get() == 0 && currentThreadNum == 2) { wait(); } } catch (InterruptedException e) { throw new RuntimeException(e); } list.add(s); lastThreadWorked.set(currentThreadNum); notify(); } public static void main(String[] args) throws InterruptedException { System.out.println(new TaskTwo().sequence()); } }
@arjanz2207
@arjanz2207 3 ай бұрын
80% учеников получают работу Java программистом в течение недели после окончания курса. Так написано у вас на сайте курса. Это так ?
@TREVOGA
@TREVOGA 3 ай бұрын
Нет не так. Сейчас на рынке полный пц творится, на одну вакансию от 100 до 700 откликов.
@job4j
@job4j 3 ай бұрын
Рынок стал требовать больше от кандидатов. Мы стали требовать таких же знаний от своих учеников. Так что все в порядке. Количество вакансий 2300, как и два года назад. Можно сказать, что стабильное дно )).
@TREVOGA
@TREVOGA 3 ай бұрын
@@job4j вы это вот этим наивным хомячкам рассказывайте. Ясное дело, что ваши курсы - это ваш бизнес, понять позицию вашу можно. Но увы, реальность для тех, кто сегодня идёт в ит другая.
@tomvenom
@tomvenom 3 ай бұрын
Привет. Как происходят платежи курса, если человек не из рф?
@job4j
@job4j 3 ай бұрын
Добрый день. Через телеграм @wallet. А откуда вы?
@tomvenom
@tomvenom 3 ай бұрын
@@job4j имеется ввиду из другой страны снг. Как я знаю переводы на рубли не работают. А через wallet это крипта?
@job4j
@job4j 3 ай бұрын
Да. Есть и другие варианты. Так что приходите учиться.
@вапвапвапвапва-ж1и
@вапвапвапвапва-ж1и 3 ай бұрын
Уволили? С чего бы?
@user-hedonist2020
@user-hedonist2020 3 ай бұрын
Что за уровень Сеньор?
@job4j
@job4j 3 ай бұрын
Kotlin, Angular, MongoDB, Redis, HazelCast, то что нельзя бы засунуть в основной курс. Эти блоки можно отдельно проходить.
@ivandevon6865
@ivandevon6865 3 ай бұрын
Все ясно, отлчно
@Sergei-di9en
@Sergei-di9en 3 ай бұрын
Добрый день! а как приобрести?
@job4j
@job4j 3 ай бұрын
На сайте job4j.ru. Начинай проходить демо, а потом уже оплатить, если понравилось.
@priVal76
@priVal76 3 ай бұрын
Хороший курс, сам недавно начал осваивать...нет лишней воды, структура курса состоит из практических заданий,а теорию подсказывют где брать...да и в Ютубе достаточно много лекций по основам👍
@Badyamovich
@Badyamovich 3 ай бұрын
Надо работу с менторами твоего курса провести, они максимально токсичные, демотивирует из за них забросил твой курс
@job4j
@job4j 3 ай бұрын
Напиши мне в телеграмм. Я посмотрю твой аккаунт и посмотрю, что там было.
@Zergalisk
@Zergalisk 3 ай бұрын
Не совсем понятно, 3000 это скидка на стажор или пред-стажор, демо?
@job4j
@job4j 3 ай бұрын
Это первый блок. Базовый синтаксис.
@Badyamovich
@Badyamovich 3 ай бұрын
Да не ничего сложного
@divergenny
@divergenny 3 ай бұрын
Являюсь учеником, лучший курс ❤❤❤
@job4j
@job4j 3 ай бұрын
Специальная Акция: Основы Программирования всего за 2990 рублей! job4j.ru/ Хотите освоить основы программирования и уверенно начать свой путь в IT? Мы предлагаем уникальную возможность! В нашем курсе вы изучите: Основы программирования: Погрузитесь в мир кодинга и научитесь писать свои первые программы. Типы данных: Узнайте о различных типах данных и научитесь правильно их использовать. Ветвления и циклы: Освойте управление потоком выполнения программ с помощью условий и циклов. Массивы: Изучите массивы и научитесь эффективно работать с коллекциями данных. IDEA: Получите навыки работы в одной из самых популярных сред разработки. Тестирование: Научитесь тестировать свои программы, чтобы избежать ошибок и повысить их качество. Git: Освойте систему контроля версий, чтобы управлять своими проектами и работать в команде. Maven: Познакомьтесь с инструментом управления проектами и сборки для Java. Всё это всего за 2990 рублей! Не упустите свой шанс! Записывайтесь прямо сейчас и начните свой путь в мир программирования с нами! Количество мест ограничено. Спешите записаться! #Программирование #Обучение #Курсы #IT #Акция #Git #Maven #IDEA
@andresmonje9613
@andresmonje9613 3 ай бұрын
Просто врать в резюме не надо и на собеседовании сразу надо говорить правду. А если уж взяли, то пахать надо по 12-14 часов, т.к. вы не только работаете, но ещё и учитесь.
@kivoradba
@kivoradba 3 ай бұрын
И где ж в Сбере такие задания дают?
@job4j
@job4j 3 ай бұрын
Это сберподстава, чтобы больше просмотров было. В сбер берут всех, только скажи что программист )).
@ЕвгенийКолесников-д3ф
@ЕвгенийКолесников-д3ф 3 ай бұрын
если четно по поводу RuntimeException во всех проектах в принципе так делаю, но в основном я делаю много разных исключениий типовых под отдельные случаи. А вот по поводу стэк трейс я бы отдавал и стек трейс и сам текст сообщения, чем больше инфы о нарушении тем лучше
@smehoboy2310
@smehoboy2310 3 ай бұрын
На самом деле контроллер не оборачивается по дефолту в транзакцию , если не поставить явно @Transactional , но когда её поставить то будет выборка по умолчанию Lazy Также многое зависит от версии JPA и Hibernate, но Spring Data это обвертка на Hibernate это тоже на до учитывать Подход с сборкой объекта в памяти плохое решение потому что данных в базе может слишком много и она знает как это сделать эффективнее чтобы не собирать все А вытаскивая все данные из памяти вы тем самы нагружаете базу Вообще в идиале в задаче на производительность не нужно было использовать JPA А если условие с JPA то тогда Join Fetch или EntityGraph Joint Fetch должен делать один запрос , если это не так значит не правильная конфигурации, особенно если указываются ленивые коллекции в Entity Кроме того Hibernate использует различные оптимизации под капотом при агрегации в частности это связано с кешем первого уровня и временными таблицами из api базы
@olegkovalenko2797
@olegkovalenko2797 3 ай бұрын
Насколько уменьшится потребность в программистах в связи с широким внедрением ИИ?
@job4j
@job4j 3 ай бұрын
Пока ни как. Многие программисты не понимают, как использовать GPT.
@awdawdawdawdaw-hs7kv
@awdawdawdawdaw-hs7kv 3 ай бұрын
package org.example; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CountDownLatch; public class Main { public static void main(String[] args) throws InterruptedException { temp temp = new temp(); CountDownLatch countDownLatch = new CountDownLatch(2938747); CountDownLatch countDownLatch2 = new CountDownLatch(1); var t1 = new Thread(() -> { synchronized (temp) { countDownLatch2.countDown(); temp.q1("first"); countDownLatch.countDown(); temp.waitqwe(temp); temp.doSomeWith1Thread("first", countDownLatch, temp); if(countDownLatch.getCount() % 2 != 0) { temp.q1("first"); countDownLatch.countDown(); temp.notify(); } } }); var t2 = new Thread(() -> { asdwaitlatch2(countDownLatch2); synchronized (temp) { temp.doSomeWith2Thread("double", countDownLatch, temp); temp.doSomeWith2Thread("double", countDownLatch, temp); if(countDownLatch.getCount() % 2 == 0) { temp.q1("double"); } } }); t1.start(); t2.start(); t1.join(); t2.join(); temp.asd.forEach(System.out::println); } static void asdwaitlatch2(CountDownLatch countDownLatch2) { try { countDownLatch2.await(); } catch (InterruptedException e) { throw new RuntimeException(e); } } } class temp { List<String> asd = new CopyOnWriteArrayList<>(); void q1(String qwe) { asd.add(qwe); } void doSomeWith1Thread(String name, CountDownLatch countDownLatch, temp temp) { if(countDownLatch.getCount() % 2 != 0) { temp.q1(name); countDownLatch.countDown(); temp.notify(); temp.waitqwe(temp); } } void doSomeWith2Thread(String name, CountDownLatch countDownLatch, temp temp) { if(countDownLatch.getCount() % 2 == 0) { temp.q1(name); countDownLatch.countDown(); temp.notify(); temp.waitqwe(temp); } } void waitqwe(temp temp) { try { temp.wait(); } catch (InterruptedException e) { throw new RuntimeException(e); } } }
@awdawdawdawdaw-hs7kv
@awdawdawdawdaw-hs7kv 3 ай бұрын
думаю даже первый летч излишний, можно просто AtomicInteger count в temp поставить
@awdawdawdawdaw-hs7kv
@awdawdawdawdaw-hs7kv 3 ай бұрын
package org.example; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicInteger; public class Main { public static void main(String[] args) throws InterruptedException { temp temp = new temp(); CountDownLatch countDownLatch2 = new CountDownLatch(1); var t1 = new Thread(() -> { synchronized (temp) { countDownLatch2.countDown(); temp.q1("first"); temp.count.incrementAndGet(); temp.waitqwe(temp); temp.doSomeWith1Thread("first", temp.count, temp); if(temp.count.get() % 2 != 0) { temp.q1("first"); temp.count.incrementAndGet(); temp.notify(); } } }); var t2 = new Thread(() -> { asdwaitlatch2(countDownLatch2); synchronized (temp) { temp.doSomeWith2Thread("double", temp.count, temp); temp.doSomeWith2Thread("double", temp.count, temp); if(temp.count.get() % 2 == 0) { temp.q1("double"); } } }); t1.start(); t2.start(); t1.join(); t2.join(); temp.asd.forEach(System.out::println); } static void asdwaitlatch2(CountDownLatch countDownLatch2) { try { countDownLatch2.await(); } catch (InterruptedException e) { throw new RuntimeException(e); } } } class temp { List<String> asd = new CopyOnWriteArrayList<>(); AtomicInteger count = new AtomicInteger(2938747); void q1(String qwe) { asd.add(qwe); } void doSomeWith1Thread(String name, AtomicInteger countDownLatch, temp temp) { if(countDownLatch.get() % 2 != 0) { temp.q1(name); countDownLatch.decrementAndGet(); temp.notify(); temp.waitqwe(temp); } } void doSomeWith2Thread(String name, AtomicInteger countDownLatch, temp temp) { if(countDownLatch.get() % 2 == 0) { temp.q1(name); countDownLatch.decrementAndGet(); temp.notify(); temp.waitqwe(temp); } } void waitqwe(temp temp) { try { temp.wait(); } catch (InterruptedException e) { throw new RuntimeException(e); } } }
@awdawdawdawdaw-hs7kv
@awdawdawdawdaw-hs7kv 3 ай бұрын
package org.example; import java.util.ArrayList; import java.util.List; import java.util.concurrent.*; public class Main { public static void main(String[] args) throws InterruptedException { List<CompletableFuture<String>> futures = new ArrayList<>(); temp temp = new temp(); for (int i = 0; i < 11; i++) { if (i % 2 == 0) { futures.add(CompletableFuture.supplyAsync(() -> "first")); } else { futures.add(CompletableFuture.supplyAsync(() -> "second")); } } futures.forEach(completableFuture -> { try { completableFuture.get(); } catch (InterruptedException e) { throw new RuntimeException(e); } catch (ExecutionException e) { throw new RuntimeException(e); } }); futures.forEach(e -> { try { temp.asd.add(e.get()); } catch (InterruptedException ex) { throw new RuntimeException(ex); } catch (ExecutionException ex) { throw new RuntimeException(ex); } }); temp.asd.forEach(System.out::println); } } class temp { List<String> asd = new CopyOnWriteArrayList<>(); } ну или вообще вот так сделать
@job4j
@job4j 3 ай бұрын
Спасибо. Попросите GPT теперь решить и сравните со своим решение.
@awdawdawdawdaw-hs7kv
@awdawdawdawdaw-hs7kv 3 ай бұрын
@@job4j зачем? он скинул костыли с Thread.sleep
@Пумпурумм
@Пумпурумм 3 ай бұрын
Очень даже понятно все с чистотой кода, здесь таблицу не указал, там колонку не указал, сям метод через одно место назвал - всё это влияет
@BigCoolDick
@BigCoolDick 4 ай бұрын
Что ваш фильтр не очень вбил "Предлагаю пассивный доход. Набираю группу. Обращаться в лс" он пишет спама нет.
@Tolyan97kartofan
@Tolyan97kartofan 4 ай бұрын
хз, мне всегда казалось, что Python код читать невозможно, если это какой-то скрипт строк на 200 хотя бы