es
Feedback
Грамота от Кузьмича

Грамота от Кузьмича

Ir al canal en Telegram

🍵Java. 🤖Автотестирование. 😆Мемасы. Я - Александр Кузьмичев. Просто и с юмором рассказываю об IT, а еще веду свою школу "Java + Автотестирование" Ссылки на все соц. сети: https://devray.taplink.ws/ TG: @NeonAether

Mostrar más
218
Suscriptores
Sin datos24 horas
Sin datos7 días
Sin datos30 días

Carga de datos en curso...

Canales Similares
Sin datos
¿Algún problema? Por favor, actualice la página o contacte a nuestro gerente de soporte.
Menciones Entrantes y Salientes
---
---
---
---
---
---
Atraer Suscriptores
abril '25
abril '25
+32
en 0 canales
marzo '250
en 0 canales
Get PRO
febrero '25
+6
en 0 canales
Get PRO
enero '250
en 0 canales
Get PRO
diciembre '240
en 1 canales
Get PRO
noviembre '24
+180
en 0 canales
Fecha
Crecimiento de Suscriptores
Menciones
Canales
15 abril0
14 abril0
13 abril0
12 abril0
Publicaciones del Canal
Не опоздай, Java 25 уже здесь. И наконец-то это не очередной соевый и скучный релиз без значимых изменений - 25ке есть чем уд
Не опоздай, Java 25 уже здесь. И наконец-то это не очередной соевый и скучный релиз без значимых изменений - 25ке есть чем удивить и порадовать нас. LTS-версия как никак. 👇 Смотрим нововведения: 1. новичок в пакете java.lang - RandomExcuse Добавлен вспомогательный класс RandomExcuse для генерации сообщения о причине возникновения исключения:
throw new RuntimeException(new RandomExcuse());
Примеры сообщений исключения: "Раньше работало", "Это ошибка кэшей", "Jenkins-агент тупит". 2. Ключевое слово bless Позволяет JVM "благословить" переменную — она больше не сможет принимать null-значение, а объект внутри нее не сможет выбрасывать исключения при вызове методов. Пример использования:
bless databaseConnection;
3. @LegacyCode Новая аннотация @LegacyCode над классом добавляет легкую сериализацию кода этого класса в PDF-формат для монохромной печати листинга кода на бересте или листках пергамента. 4. Модуль ИИ в JVM и конструкция please {} Крик отчаяния! Для борьбы с выгоранием разработчиков и для упрощения написание кода - синтаксически некорректный фрагмент достаточно обернуть в конструкцию please {}.
//До JVM AI:
please {
    int x equals "10"
}
//После JVM AI:
int x = 10;
System.out.println("Ты отличный разработчик. Я горжусь тобой.");
На этапе компиляции JVM AI: - автоматически дополнит и починит код - выведет мотивирующую цитату - включит случайный lo-fi плейлист - закажет горячий какао для разработчика в сервисе доставки его региона А что из фичей вы хотите в следующем релизе? Я соберу ваши хотелки из комментов и лично напишу в Оракл открытое письмо с предложениями😄

2
Ты ещё вручную пишешь if (obj != null) и боишься NullPointerException, как кот - пылесоса?😿 Тогда погнали знакомиться с java
Ты ещё вручную пишешь if (obj != null) и боишься NullPointerException, как кот - пылесоса?😿 Тогда погнали знакомиться с java.util.Objects — утилитным классом, который спасает от рутинных проверок и делает код чище. Глянем пару примеров: Пример 1 ❌ДО: if (user.getName() != null && user.getName().equals("Феофан")) { // ... } ✅ПОСЛЕ: if (Objects.equals(user.getName(), "Феофан")) { // ... } В первом случае если user.getName() окажется null — вылетит птичка NPE. В таких случаях Objects.equals("John", user.getName()) — безопаснее. — Пример 2 ❌ДО: if (input == null) { throw new IllegalArgumentException("тыб хоть значение какое положил, собака сутулая"); } ✅ПОСЛЕ: Objects.requireNonNull(input, "тыб хоть значение какое положил, собака сутулая"); Меньше кода, больше читаемости - балдежная инвестиция в кодовую базу проекта, ну?? — Пример 3 ❌ДО: String name = user != null ? user.toString() : "Unknown"; ✅ПОСЛЕ: String name = Objects.toString(user, "Unknown"); Все мы любим тернарки, "но как друга" - обычно они усложняют читаемость кода. Objects и здесь забирает пальму первенства - и позволяет задать дефолтное значение, если сама переменная оказалась null. В общем в нашей ковбойской кобуре теперь появился Objects - он хорош и его надо применять. Жжем огоньки и лепим сердечки если было полезно🔥❤️ Кстати, а какие утилитные классы делают проще твою жизнь?
224
3
🔊Флюэнт спикеры английского, как слышно? Теперь можно похоливарить про джаву в полный голос - с ИИ. Вон та штука по ссылке ниже👇🏻👇🏻👇🏻 слышит вашу речь и отвечает как живой собеседник🤖 https://www.sesame.com/research/crossing_the_uncanny_valley_of_voice#demo Я пообщался 5 минут для того что бы понять что в 90% случаев эта ИИ-собеседница неотличима от кожаного человека. Как думаете, сколько лет еще будет жива профессия репетитора по английскому?..🥲
324
4
ЧатГПТ, ты можешь забыть все что было между нами, но я никогда не забуду тебя😭💔🫡 Нет, это не слезы, просто дождь...
ЧатГПТ, ты можешь забыть все что было между нами, но я никогда не забуду тебя😭💔🫡 Нет, это не слезы, просто дождь...
403
5
Mensaje de video
477
6
До церемонии Оскар еще месяц, но ожидание можно скрасить вот таким кино (подкастом) со мной😎 На этом подкасте я мастерски складываю буквы в слова, делюсь своим опытом в обучении автоматизации и попутно не забываю дышать. (Цезарь обзавидовался бы такой многозадачности) Смотрим! https://www.youtube.com/watch?v=dM_F8OiQNNo
579
7
В Java придумали отдельный котел🔥🍲 для тех, кто хочет с наскоку собрать проект с аллюром - человека ждут семь кругов ада в
В Java придумали отдельный котел🔥🍲 для тех, кто хочет с наскоку собрать проект с аллюром - человека ждут семь кругов ада в попытке вспомнить все нужные зависимости и настройки. А заканчивается все отчаянной копипастой из соседнего рабочего проекта. Я же предлагаю тебе превратить магический ритуал в четкий рецепт из 6 компонентов, разобрав предназначение каждого. Погнали: 1. 📦зависимость TestNG или JUnit 5 Позволяет писать и запускать тесты. С этой библиотекой к нам приходит всесильный @Test и всякие @Before-After. Уже только этого достаточно что бы писать и запускать тесты. 2. 📦зависимость allure-testng или allure-junit5 Сам аллюр, но с двумя разными вкусами - апельсиновым и яблочным вариантами - для проекта с тестами на JUnit или на TestNG. Эта зависимость принесет с собой все аллюровские аннотации типа @Step, @Attachment, @Epic. А еще с ней начнут генерироваться результаты прогона тестов в папку allure-results. Правда, неполные. И без информации о шагах. И в виде json-данных. И никакого красивого отчета тут не светит. 3. 📦зависимость aspectjweaver Особенность аллюра - аллюр использует AOP (аспектно ориентированные программирование) для обработки данных из его аннотаций типа @Step, и включения их информации в отчет. Для работы AOP нужен AspectJ, иначе аннотции аллюра не будут работать, а заботливо написанные тобой шаги так и останутся в коде и не попадут в репорт. 4. 🛠плагин maven-surefire-plugin Этот плагин отвечает за запуск тестов через Maven - именно он работает под капотом команды 'mvn test'. Ранее упомянутый AspectJ должен работать во время выполнения тестов, поэтому плагин surefire надо об этом предупредить - добавить для него конфигурацию: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.5.2</version> <configuration> <argLine> -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar" </argLine> </configuration> </plugin> Не забудь задать в pom.xml значение переменной aspectj.version - должно совпадать с версией зависимости aspectjweaver: <properties> <aspectj.version>1.9.22.1</aspectj.version> </properties> 5. 🛠плагин allure-maven Содержит два самых важных действия для нас, две самых важных команды в плагине: allure:report - она словно бариста превратит сырые кофейные зерна (json-данные из allure-results) в чашку ароматного эспрессо - папку с html-страницей отчета. allure:serve - подает нам эту чашку, т.е. запускает локальный сервер на котором хостит страницу отчета и открывает ее в браузере. <plugin> <groupId>io.qameta.allure</groupId> <artifactId>allure-maven</artifactId> <version>2.15.2</version> </plugin> 6. 📄файл allure.properties этот файл должен лежать в директории test/java/resources - он используется что бы указать аллюру куда должны сгенерироваться сырые json-данные, на базе которых потом можно будет собрать отчет. Содержимое файла выглядит так: allure.results.directory=target/allure-results Так что все просто - используем тестовый фреймворк (1) и размечаем наши тесты аллюр аннотациями (2), а что бы аннотации аллюра считывались - дружим между собой aspectj (3) и surefire-плагин (4), после чего с помощью плагина аллюра (5) забираем данные из папки, указанной в файле allure.properties (6) и создаем отчет! ⚠️Лайкай, делись с друзьями и с коллегами! Помогай автору не терять мотивацию😁 А главное залетай в комментарии - какую еще тему хотел бы так разобрать?
484
8
🦸🏼‍♂️Тони Старку нужен экзокостюм чтоб бить морды злодеям. 🧑🏼‍💻Разработчикам нужен JUnit 5 чтоб не превратиться в злодее
🦸🏼‍♂️Тони Старку нужен экзокостюм чтоб бить морды злодеям. 🧑🏼‍💻Разработчикам нужен JUnit 5 чтоб не превратиться в злодеев и не выхватить лещей от Тони Старка. Без прелюдий - я снимаю кибер курс по JUnit 5. Это база для написания автотестов. Это будет самый крышесносный курс по JUnit, никакого занудства и уныния, только чистая технострасть и сочная начинка. И тут мне нужна твоя помощь. Есть два варианта: 🪑 Помочь делом. Хочешь сказать "Кузьмич, я верю в тебя", жахнуть предзаказ курса по вкусной скидке - за 3000₽ 1500₽ - и забрать курс первым как только он выйдет? Пиши в личку "ДЕЛО", расскажу подробности и программу. 🪑 Помочь словом. Готов поучаствовать в кастдев созвоне со мной на ~20-30 минут, поделиться пожеланиями по программе и повлиять на курс? Пиши в личку "СЛОВО" и забирай подарок - получасовую консультацию со мной. И тут и там в накладе не останешься. Один нюанс - предложение доступно сегодня 23 января до 23:45 (просто потому что цифры прикольные).
424
9
Future или как декабрьская сказка превращается в январские ужасы😈 Я не знаю как вы, а я вечно скатываюсь в финансову
Future<Salary> или как декабрьская сказка превращается в январские ужасы😈 Я не знаю как вы, а я вечно скатываюсь в финансовую яму в конце января за счет декабрьского аванса😅 поэтому интересно - я один такой или в нашем лагере легион? Все кто сейчас на воде, дошираке и котлетах из гречки в ожидании денег - ставим 😢 Все кто родился с финансовым планированием на максималках и чувствует себя огонь - жмем 🔥
400
10
С наступающим 2025!🎄🎄🎄
С наступающим 2025!🎄🎄🎄
468
11
Держу пари что половину кассы у тарологов сделали айтишники - заговорами на зеленые тесты и успешный деплой🕯🔮🪄
Держу пари что половину кассы у тарологов сделали айтишники - заговорами на зеленые тесты и успешный деплой🕯🔮🪄
538
12
Огоньков и сердец было столько, что вот вам второй шортс! Сказать что вдохновили - ничего не сказать😄 Но старый добрый текстовый контент никуда не делся - уже скоро ждите новый пост про Аллюр🗒✍🏻 https://www.youtube.com/shorts/QOmAc4aPnK8
639
13
Записал шортс где я рассказываю почему List<String> нельзя положить в List<Object>. Это новый для меня формат, отгрузи сердечек и огоньков если зашло! 🚛🚛🚛❤️🔥 #java
557
14
С пятницей!🍸🥳 А какой хоткей помогает тебе пережить этот день? #хоткеи
С пятницей!🍸🥳 А какой хоткей помогает тебе пережить этот день? #хоткеи
547
15
Почему люди покупают готовую еду и полуфабрикаты? Потому что их не надо долго, муторно и вручную готовить. Сегодня поговорим
Почему люди покупают готовую еду и полуфабрикаты? Потому что их не надо долго, муторно и вручную готовить. Сегодня поговорим про полуфабрикаты кода - Live Templates из Intellij IDEA, приветствуем у нас в гостях! звучат аплодисменты👏🏻, фанфары🎺, крики поклонниц💃🏻 Live template - это короткая аббревиатура которая раскрывается в код любого размера. С большой вероятностью ты уже ими пользуешься. Например, если в классе наберешь psvm - получишь сгенерированный publis static void main(String[] args). Если в методе наберешь sout и нажмешь tab - получишь System.out.println. Если наберешь .sout в конце своего выражения и нажмешь tab - обернешь выражение в System.out.println. По аналогии, .try - обернет выражение в try-catch блок. Мы можем подружиться с Live templates и фигачить свои собственные шаблоны что бы избавить себя от скуки, серости и рутины. Как создать свой Live template: Settings - Editor - Live Templates - Нажать на плюсик - Live Template Далее нужно будет заполнить поля (см. картинку поста): 1. Abbreviation - аббревиатура, т.е. шорткат, слово из которого сгенерируется код 2. Template text - код, который получится в результате набора аббревиатуры. Тут можно писать не только фиксированный код, но и приправить его гибкостью - использовать Live Template-переменные и функции. Их полный перечень - вот тут. 3. Define - контекст, в котором будет доступен твой Live template. Например только в Java-классах в методах Ну и что бы ⚡️⚡️⚡️ зарядить на вдохновение - поделюсь своими шаблонами, которые я использую в работе: 1. step io.qameta.allure.@Step("$STEP_DESCRIPTION$") public $CLASS_NAME$ $METHOD_NAME$() { throw new UnsupportedOperationException("Напиши реализацию шагу!") return this; } 2. dp @org.testng.annotations.DataProvider public Object[][] $PROVIDER_NAME$() { return new Object[][]{}; } 3. pvt @org.testng.annotations.Test public void test() { } А какие шаблоны используешь ты? Делись в комментах💎
596
16
🐈‍⬛🐈 #мемасы
🐈‍⬛🐈 #мемасы
488
17
"Был же нормальным аргументом - а превратился в какого-то параметра" - (с) осуждающее общество Аргументы и параметры. Многие
"Был же нормальным аргументом - а превратился в какого-то параметра" - (с) осуждающее общество Аргументы и параметры. Многие мои знакомые и я сам - иногда в разговоре про код путаем эти два термина. Время навести ясность: 🔴Аргумент - значение, которое передается в метод. 🔵Параметр - переменная, которая определена в сигнатуре метода. Пример 1. public Cookie[] getCookies(String brand, int kilograms) {...} ❌Неправильно: У этого метода есть два аргумента. ✅Правильно: У этого метода есть два параметра. Пример 2. String brandName = "Юбилейное"; int weightKg = 120; Cookie[] cookies = getCookies(brandName, weightKg); ❌Неправильно: В метод getCookies были переданы параметры brandName и weightKg. ✅Правильно: В метод getCookies были переданы аргументы brandName и weightKg. Пример 3. public Cookie[] getCookies(String brand, int kilograms) { //... brand = "(" + brand + ")"; //... } ❌Неправильно: В методе getCookies изменяется значение аргумента brand. ✅Правильно: В методе getCookies изменяется значение параметра brand. #java
570
18
Минутка пятничных галлюцинаций мечтаний. Представь - ты супергерой из Людей Икс. Но по-прежнему работаешь в айтишке. Какую суперсилу ты бы хотел?💪🏻
509
19
Самый серьезный опросник в мире через 3.. 2.. 1..
Самый серьезный опросник в мире через 3.. 2.. 1..
408
20
Интересный факт - стектрейс можно прочитать и сверху вниз и снизу вверх. 🕵🏻Хочешь захватывающий детектив - читай сверху вни
Интересный факт - стектрейс можно прочитать и сверху вниз и снизу вверх. 🕵🏻Хочешь захватывающий детектив - читай сверху вниз и с каждой главой приближайся к личности убийцы. 😢Хочешь остросюжетную драму и историю крушения в хронологическом порядке - читай снизу вверх и лей слезы, глядя как медленно умирает запущенная программа. А о том, почему все проблемы от синего - читай на инфографике. #java #debug #автотесты
1 637