Пишу пока пишется
Извините не могу не удержаться от мелкого троллинга
Извините не могу не удержаться от мелкого троллинга
Всем привет!
Сегодня мой ДТП отчёт, плавно перетекает в небольшую хистори, может кому поднимет мотивацию ну или на крайний случай настроение.
Делаю я значит паралельно учёбе свой проект на джаве, по плану разработки стоит создание системы регистрации и авторизации.
Ну как порядочный человек недоджун решил освоить Spring Security, думаю ага, там особо сложного ничего нет, сейчас зависимости пропишу и по быстрому начну кушать эту вкусняшку) Приколы начались буквально с первых секунд.
Значит создаю новый проект, при этом не обратил внимание что тыкнул немного не туда.
(В IntelliJ IDEA есть два блока, создать новый проект и куча разного в блоке generators)
Значится, нажал я на кнопочку Maven archetype ввёл название проекта, тыкаю на Create, и ничего, смотрю - что-то новое требует архетип выбрать.
Тут бы мне остановиться и подумать что же здесь не так, но мозг решил потыкать в список.
Думаю ладно, в списке ввёл spring, смотрю, шаблонов куча, ну выбрал какой-то ( вроде spring-webapp или нечто похожее) ай думаю фигня, платформа обновилась, по новому теперь надо проекты создавать.
Смотрю я как генерится проект и предвкушаю, сейчас покодим чё-нить.
Проект сгенерился.
Вставил зависимость в блок dependencies в файле pom.xml как по мануалу говорят. Поймал такую штуку
SDK 11 does not support source version 1.5.
Сижу и думаю, что пчёлы какие-то не правильные. Как порядочный itшник полез гуглить данный error.
На стаковерфлоу говорят не то пальто вы сударь напяливаете на себя, в смысле того, что смените-ка версию компилятора и вообще идите матчасть учите.
Ну думаю тролли бдят. Однако всё равно сунулся в настройки компилятора, как и предлагает гугл.
Поковырялся там, чёт поправил с версиями, явно указал maven какую ему версию использовать, собираю проект-ошибка, теперь вида
Error:java: error: release version 5 not supported
Ну думаю, запорол проект ладно, удалю этот - создам заново.
Данная ситуация повторилась ещё дважды. Устал, думаю всё хватит страдать фигнёй, я тут чёт не понимаю, и может нафиг эту джаву?
Сходил погулял , передохнул, но кодить хочется, аж зудит.
И вновь удаляю проект, и вновь не замечаю что выбран Maven archetype. Ладно думаю, полезу опять в гугл выяснять что это за зверь.
Почитал и понял, что исходя из выбранного типа, строится структура проекта. И тут наконец-таки в голове созрела мысль о том, что проект то я создаю как то не так!
Проект удалил и при создании обнаружил свою ошибку, 4 часа бесполезной суеты из-за невнимательности)
Итог сей повести такой - будьте внимательней братья и сестры)
Упорства вам, сил для дальнейшего обучения и хорошего дня!
Забавную ситуацию вспомнил: как-то на ревью коллега стал меня убеждать в необходимости своих правок. Обосновывал тем, что "из теста вернули с комментарием — очень долго работает запрос, не можем дождаться ответа и обрубаем". Поэтому он решил изменить способ итерации, чтобы всё ускорилось 🚀
Краткая суть: был метод, возвращавший некие данные за период (12 месяцев с отмоткой назад, endDate = 12 месяцев назад, нижняя граница). Внутри себя - он итерировался по этим месяцам, дергал другой метод для получения помесячных наборов, и агрегировал их. Конструкция была такая:
LocalDate startDate = LocalDate.of(2022, 11, 1);
LocalDate endDate = startDate.minusMonths(12);
for (LocalDate date = endDate; date.isBefore(startDate); date = date.minusMonths(1))
Подобный метод-агрегатор был не один, и на ревью первого из них я коллеге посоветовал генерировать набор дат вызовом библиотечного АПИ datesUntil с шагом в месяц, и дальше сгенерированный набор использовать. Это дело благополучно забылось, даты продолжали создаваться внутри for и кочевали с копипастой, дожив до обсуждаемого момента 🤷🏻♂️
Я сильно засомневался, что в совершенно ненагруженном вызове, при итерации по 12 элементам — иной способ итерации даст какую-то заметную разницу. Сделал иллюстративные наброски в JShell (полноценные бенчмарки лень было, да и ни к чему) для сравнения разных способов с исходным. Типа таких:
Внимательный читатель уже видит суть проблемы. 🕵🏻♂️ Самый внимательный - уверен, увидел уже на третьем абзаце!
Результаты, ожидаемо, отличались крайне незначительно:
Dates list for - i => 692
Dates in-place generated for each => 704
Dates list for - each => 708
Dates array for - i => 708
Dates list forEach => 712
Dates list while + iterator => 1060
Разумного объяснения не было 🤯 Стали закрадываться мысли - а не хлопнуть ли нам взяться ли нам за JMeter, профайлер, снять граф... Углубиться, так сказать, до дна.
Не пришлось - взглянул повнимательней и заметил разницу: date = date.minusMonths(1) vs date.plusMonths(1). Вот оно! 🥳 Банальный бесконечный цикл с отмоткой назад от нижней границы периода.
Будь я бдительней - раньше бы заметил, что при копипасте цикла между методами - поменялось назначение границ периода, а итерация осталась старой. В одном методе работало ожидаемо, в другом - 💥.
Используй коллега библиотечный вызов - получал бы единообразно нужный период. И места для ошибки меньше, и проверять проще. И протестировано всё авторами. И оптимизацию бесплатную могут завезти.
Молоко, говорят - просто полезно для здоровья. Его даже за вредность дают. Но не всем 🐱
Прошу помощи в обучении программированию. Есть основы по Java/kotlin, js, html, css. Получались программы на Spring, Vaadin. Нет систематизации знаний и нормальной практики. Если есть неравнодушные люди, готовые помочь, прошу откликнуться с систематизацией обучения и практикой. Готов бесплатно помогать, писать, всё ради получения знаний и практики.
Взято из телеграмма - Инкогнито
Есть у меня такой pre-push хук - автоматом прогоняет тесты локально, через maven. Подключается по необходимости через отдельные git конфиги для проектов.
Стащил его, судя по всему, отсюда: https://gist.github.com/arnobroekhof/9454645. Потом допиливал немного – чтобы он с многомодульными проектами работал корректно. Может, ещё что-то по мелочи причёсывал.
И он отлично работает (разве что можно через sed попробовать результаты по всем модулям агрегировать).
Но вот проблема – на текущем проекте везде gradle, а под него я что-то не могу найти похожего простого решения
Есть ли оно?
Коллеги, а не может кто-то порекомендовать библиотеку для работы с клиентским API телеграма?
Как-то гугление и чтение док не принесло быстрого ответа. То что есть либо старое 3-8 лет, либо там какие-то шаманские пляски с бубном - скачай ZIP, возьми оттуда бинарную библиотеку под линукc.
Вдруг есть что-то простое - добавил как gradle зависимость и пошел работать.
C bot API все прекрасно. А вот с клиентской библиотекой прям беда.
PS: ну или не для Ява а для NodeJS хотя бы или Питона или дотнета. Заверну тогда в микросервис ее.
UPD: По ходу нашлось, как всегда не догуглил 10 минут https://github.com/tdlight-team/tdlight-java
UPD2: Вот еще похоже вариант https://github.com/Telegram4J/Telegram4J
Представляем вам подборку очередных новостей из мира ИТ и JVM!
Новости ИТ:
Линус два месяца разрабатывал новое ядро и разработал-таки, встречайте Linux 6.4.
Яндекс научил нейросеть пересказывать содержание лонгридов. Характерно сервис называется 300, не знаем, что имелось в виду.
Теперь сториз будут доставать вас и в телеге.
Android обрёл новый логотип и лишился туловища.
Микрософт сделали аналоговый. Оптический. Компьютер.
А Ростех сделал роутеры.
Вконтакте почивает на лаврах ушедшего тиндера с отдельным приложением для знакомств.
Математики нашли новое, десятое дедекиндово число. На это потратили 32 года и один суперкомпьютер.
Почитать:
Введение в Java Process Memory Model
Глубокое погружение в Java Memory Model
Why I Don't do TDD
9 Simple Rules that will make your Java Code Better
Saga и Event Sourcing с Axon. Первое знакомство
Hibernate — проблема декартова произведения при запросах с пагинацией
Best Practice for Exception Handling In SpringBoot
Вопрос на сертификационном экзамене: применение Threads и Executors
CQRS The Why And How
Connecting Spring Boot Microservices with Kafka
Manifold vs. Lombok: Enhancing Java with Property Support
Интересные разборы аварии RUVDS: Самый длинный простой за нашу историю и Отвечаю на вопросы после аварии
Микроменеджер — горе в команде
Посмотреть:
Bootiful Spring Boot 3
Mob Programming and the Power of Flow • Woody Zuill
Как мы выбирали кеширование Java backend'а
Путь технического руководителя. Александр Ложечкин
Модель памяти Java процесса
Вторая космическая: как преодолеть притяжение внутренней платформы разработки
Послушать:
Бреслав и Ложечкин: Что является продуктом работы руководителя?
Podlodka #273: Оценки не нужны
Митап: 1 июля: Я. Субботник по Java
6 июля: DevOps Meetup
6 июля: RSHB Backend Dev Meetup
Несмотря на капризы погоды, лето неумолимо приближается. Значит, занятия в спортивном зале или домашние тренировки получится заменить на активности под открытым небом. Собрали для вас товары, которые сделают уличные воркауты интереснее, увлекательнее и полезнее.
Мегамаркет дарит пикабушникам промокод килобайт. Он дает скидку 2 000 рублей на первую покупку от 4 000 рублей и действует до 31 мая. Полные правила здесь.
В компактную поясную сумку поместятся телефон, ключи, кошелек или другие нужные мелочи. Во время тренировки все это не гремит и не мешает, но всегда находится под рукой. Материал сумки прочный и влагонепроницаемый, вещи в ней защищены от повреждений, царапин или пота.
С фитнес-резинкой можно тренировать все группы мышц: руки, ноги, кор, ягодицы. А еще она облегчает подтягивания и помогает мягко растягиваться. В сети можно найти огромное количество роликов с упражнениями разной степени сложности. Нагрузка легко дозируется: новичкам подойдет резинка с сопротивлением до 23 кг, опытным атлетам — до 57 кг. При этом оборудование максимально компактно и поместится даже в небольшую сумку.
Для тех, кому надоели обычные тренировки. Слэклайн — это стропа шириной 50 мм, с помощью которой осваивают хождение по канату. Тренажер учит сохранять баланс, прокачивает координацию и концентрацию, а еще дает отличную нагрузку на спину, руки и ноги.
Настольный теннис — простой в освоении вид спорта, который отлично помогает размяться и тренирует скорость реакции. В комплект входят две ракетки, три мяча, сетка, накладка и чехол — все, что нужно, чтобы поиграть вечером во дворе с другом или устроить небольшие соревнования. Этот недорогой набор подойдет именно для развлечения и веселья, устанавливается почти на любой стол.
Еще один вид спорта, которым можно заниматься, даже не имея серьезной подготовки — бадминтон. С набором от Wish Steeltec вы сможете потренировать силу удара, побегать и просто хорошо провести время. Детали яркие, так что их трудно потерять даже на природе. Леска натянута прочно, ресурса ракеток должно хватить не на один сезон.
Фрисби воспринимается как простое пляжное развлечение. Тем не менее перекидывание друг другу тарелки задействует все группы мышц и развивает скорость реакции. Эта тарелка летит далеко и по понятной траектории — отличный снаряд для начала. Кстати, фрисби — это еще и ряд спортивных дисциплин со своими правилами и техническими сложностями, так что игра с друзьями может перерасти в серьезное увлечение.
Стильный мяч из износостойкой резины отлично подходит для уличных тренировок. Вы сможете поиграть компанией в баскетбол или стритбол или просто отработать броски. При производстве используется технология сбалансированного сцепления: это значит, что снаряд не сбежит от вас и будет двигаться по стабильной траектории.
Футбол — один из самых популярных в России видов спорта. Играя, можно отлично побегать, потренировать меткость и отработать взаимодействие в команде. Футбольный мяч Torres Striker выполнен из качественного полиуретана и резины и выдержит не один десяток матчей, не потеряв упругости. Отличная балансировка и оптимальный размер делают его подходящим как для взрослых, так и для подростков. Он достаточно тяжелый, почти как в профессиональном спорте, так что совсем малышам не понравится.
Пляжный или обычный волейбол? А может быть, пионербол, как в детском лагере? Мяч TORRES SIMPLE COLOR подойдет для любой из этих игр. Камера отлично держит давление, поэтому вам не придется постоянно подкачивать его, а качественные материалы (полиуретан и бутил) сохраняют все характеристики даже при интенсивном использовании.
Многоскоростной велосипед с рамой 19-го размера подойдет как мужчинам, так и женщинам. Это отличный вариант для новичков: модель доступная, удобная. Поможет понять, нравится ли вам велоспорт. Конструкция велосипеда позволяет ездить по дорогам разных типов, поэтому вы сможете перемещаться по городу или отправиться в поход. Есть складной механизм — велосипед с ним легко возить в машине, на электричке и просто хранить в кладовке.
Более продвинутая модель для тех, кто уже оценил прелесть движения на двух колесах. Геометрия велосипеда предполагает вертикальную посадку. Это обеспечивает более удобное положение тела, чем на других байках. В конструкции предусмотрены детали для комфорта и безопасности: пружинная вилка с ходом 100 мм, сервисная подводка тросов и дисковые гидравлические тормоза.
Если вы не фанат велоспорта, но хотите получить свою дозу физической нагрузки, перемещаясь по городу, выбирайте самокат. В модели PLANK Magic 200 есть регулировка руля по высоте, надежные тормоза и прочная увеличенная дека из алюминия. Когда вы катаетесь на самокате, работают мышцы ног, ягодиц, спины и живота, а заодно добираетесь, куда нужно. Если вы решите сделать паузу в тренировках, самокат легко складывается для хранения.
Любая активность на свежем воздухе требует хорошей обуви, специально сделанной для занятий спортом. Яркие кроссовки Hoka RINCON 3 с облегченным весом амортизируют, снижают нагрузку на суставы. Выраженный рельеф подошвы обеспечивает сцепление с поверхностью вне зависимости от того, где проходит тренировка: на специальной площадке, асфальте или грунте.
Легкие женские кроссовки из линейки Clifton подходят для занятий на твердых покрытиях. Дышащий сетчатый верх поддерживает вентиляцию стоп, чтобы можно было тренироваться даже в жару. Подошва из легкой пены EVA гасит силу ударов. Кроссовки беговые, подходят для тренировок на длинных дистанциях.
Во время занятий на свежем воздухе важно защитить голову от перегрева. С этим отлично справится легкая и светлая бейсболка — например, от GLHF. Она удобно сидит на голове, не сваливается и не отвлекает от занятий, благодаря сетке голова меньше потеет. Козырек жесткий и не мнется.
Не забудьте защитить кожу от солнца — чтобы не было мучительно больно на следующий день после тренировки под открытым небом. В этом поможет крем против пигментных пятен с сильной защитой от ультрафиолета SPF50. Водостойкая текстура легко наносится и быстро впитывается, действует два часа — потом крем нужно обновить.
Удобные и стильные солнцезащитные очки защищают глаза благодаря фильтру UV400, который поглощает до 99.99% ультрафиолета. Они выполнены из легких материалов и плотно прилегают к голове. Ударопрочные поликарбонатные линзы с антибликовым покрытием подходят для разных видов спорта.
Используйте промокод килобайт на Мегамаркете. Он дает скидку 2 000 рублей на первую покупку от 4 000 рублей и действует до 31 мая. Полные правила здесь.
Реклама ООО «МАРКЕТПЛЕЙС» (агрегатор) (ОГРН: 1167746803180, ИНН: 9701048328), юридический адрес: 105082, г. Москва, ул. Спартаковская площадь, д. 16/15, стр. 6