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

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

@java_ot_kuzmicha

💻IT
🍵Программирование
🤖ИИ
⚡️Электроника
📼Ретро

Мои ламповые рукописные заметки без сои, ГМО и GPT

TG: @NeonAether
Subscribers
208
Photos
59
Videos
1
Links
20
Recent Posts 16 shown
Post #93 191
Добавляю краски в музыку🟥🟨🟦🟧🟩

Пришла мне тут шальная мысль - что если каждый альбом который я слушаю - я мог бы превратить в колоритный физический артефакт? Добавить своему плейлисту в прослушивание больше души, кайфа, эмоций и ASMR? И я решил начать свой хобби проект - переносить свою самую любимую музыку на аудиокассеты.

Причем серьезно заморочиться на дизайн - брать яркие кассеты сочных цветов и делать для них собственный красочный дизайн наклеек в типографии - и получать музыку которую не только приятно слушать, но можно еще и подержать в руках и любоваться. К тому же что может быть лучше чем сочный плотоядный звук захлопывающейся крышки кассетника и тактильный "щелк" при вдавливании кнопки Play? только фирменное аналоговое шипение магнитной пленки, да.

Во всей этой идиллии правда есть подводные камни.

1. на алиэкспрессе много красивых корпусов для кассет (даже серебряные и золотые цвета), но продаются они без магнитной ленты, а значит на них ничего не запишешь. и поскольку меня не особо воодушевляет перспектива покупать мотки магнитной ленты и спец оборудование для ее намотки - я буду поступать проще - брать магнитные катушки из обычных пустых кассет для записи (C-60) и пересаживать в красивые корпуса.

2. одним красивым корпусом не обойдешься, кастом должен быть на максималках, и корпусу нужна еще красивая наклейка-этикетка. Подготовить картинку-дизайн это пол беды, но подготовить его в правильном формате для типографии, не прогадать с размерами и зоной резки (что бы в прямоугольной наклейке вырезали дырки под кассетные отверстия) - это квест который я конечно осилю, но вряд ли с первого раза😁

3. дальше надо подготовить плейлист - убедиться что он влезет на 60-минутную катушку кассеты, причем 30 минут на стороне А и 30 минут на стороне Б. Чем буду писать кассеты - мне уже приехал с авито потрепанный жизнь но не сдавшийся магнитофон panasonic rx ft 530. Поэтому возьму свой mp3-плеер, воткну в линейный вход магнитофона, запущу на плеере песни и включу запись на кассету.


В общем - говорю нет унылым цифровым релизам, яндекс музыкам, спотифаям, и возвращаю церемонию в прослушивания музла. Если хотите увидеть еще посты про первые результаты и тернии процесса - поддержите лайком-сердечком-огоньком🔥

___
ПС кстати поэскпериментировать с кассетами как с подключаемым к компьютеру ретро аналогом флешки на 500кб мне тоже интересно, но это уже чуть позже.

ППС а еще из прелестей - если я когда-нибудь наиграюсь с этой аудио-идеей то у меня все еще останется отличный комплект красивых штук для оформления интерьера
  • 🔥 20
  • ❤ 3
  • 😱 3
Post #92 555
Более жизовые итоги чем эти ваши я.музыка или спотифаи.

Кстати, че бы еще вы добавили в такую годовую статистику рабочих будней?
  • 😁 9
  • 🔥 6
  • ❤ 2
Post #91 616
уже пора?🤔
тренды все-таки
  • 😁 14
  • 🔥 6
  • 💯 1
Post #90 569
3 из 25 - это не про лото и не про биатлон.
Для тех кто пропустил релиз Java 25 - смотрим топ-3 новых синтаксических фичи:

1. короткий мейн и класс IO
// в файле Example.java
void main() {
IO.println("Привет пацаны");
}

Это буквально весь код который надо будет написать в файле Example.java для простого hello-world приложения.
Т.е.:
- не надо объявлять класс
- вместо System.out.println можно будет использовать класс IO. sout у нас никто не отнимет, обратная совместимость все-таки, но альтернатива появилась


2. гибкие конструкторы с возможностью вызова кода до super()/this()
class TestUser {
private final String login;
TestUser(String login) {
// раньше нельзя было писать код ДО явного super()/this(), как например эту проверку
if (login == null || login.isBlank()) {
throw new IllegalArgumentException("Логин не может быть пустым!");
}
super();
this.login = login;
}
}

Дергать до super()/this() можно только "безопасные" операции, т.е. те, которые не связаны как-то с родительскими полями/методами/состоянием (все-таки раз super еще не был вызван). Какая задача решается этой фичей в примере выше? Представьте что до этой фичи Java вы не могли запихнуть валидацию параметра конструктора ДО вызова всей цепочки конструкторов родительских классов. Но если параметр херня то зачем тратить силы jvm на создание всех родителей? Надо быстрее и дешевле - дать возможность отфутболить исключение сразу. В реал жизни все шире чем валидация аргументов до super(), но это один из кейсов.


3. примитивы в instanceof и switch
Object value = 42;
switch (value) {
case int i when i > 100 -> System.out.println("Огромное число: " + i);
case int i -> System.out.println("Обычное число: " + i);
case String s -> System.out.println("Это строка: " + s);
default -> System.out.println("Хрен пойми что: " + value);
}

Раньше нельзя было использовать в свиче/инстансоф примитивы, а теперь можно. Удобно что можно передать переменную (как тут value) и пощупать-узнать какая она, вне зависимости от того примитивная или ссылочная, без лишних приседаний.


🔥 - крутяк, тащу в прод
🗿 - спасибо, не впечатлен, живу дальше с родной Java 8
  • 🔥 11
  • 🗿 2
Post #89 459
в рабочую субботу законодательно запрещены посты на серьезные темы.

поэтому вот вам веселый подгон - https://neal.fun/password-game/

спорим что вы не сможете создать себе пароль на этом сайте по всем правилам? 😁
  • 😁 7
  • ❤ 1
  • 🤯 1
Post #88 591
Достал такое из почтового ящика.

Скажите, кто вызывал таких мастеров - а с деплоем в прод они тоже могут помочь если что?🤔 друг спрашивает
  • 😁 18
  • 🗿 2
  • 💯 1
Post #85 762
  • 😁 12
  • ❤ 2
  • 💯 2
  • 😱 1
Post #84 744
Не опоздай, 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 плейлист
- закажет горячий какао для разработчика в сервисе доставки его региона

А что из фичей вы хотите в следующем релизе? Я соберу ваши хотелки из комментов и лично напишу в Оракл открытое письмо с предложениями😄
  • 😁 14
  • 🔥 4
  • 🤯 2
  • ❤ 1
  • 👍 1
Post #82 533
Ты ещё вручную пишешь 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 - он хорош и его надо применять. Жжем огоньки и лепим сердечки если было полезно🔥❤️
Кстати, а какие утилитные классы делают проще твою жизнь?
  • 🔥 18
  • ❤ 6
  • 👍 3
  • 🙏 1
Post #81 544
🔊Флюэнт спикеры английского, как слышно?
Теперь можно похоливарить про джаву в полный голос - с ИИ.

Вон та штука по ссылке ниже👇🏻👇🏻👇🏻 слышит вашу речь и отвечает как живой собеседник🤖
https://www.sesame.com/research/crossing_the_uncanny_valley_of_voice#demo

Я пообщался 5 минут для того что бы понять что в 90% случаев эта ИИ-собеседница неотличима от кожаного человека.


Как думаете, сколько лет еще будет жива профессия репетитора по английскому?..🥲
Sesame Crossing the uncanny valley of conversational voice | Sesame Voice is our most intimate medium as humans. At Sesame, we are creating conversational partners that achieve voice presence—the quality that makes spoken interactions feel real, understood, and valued.
  • 😱 6
  • 🔥 5
  • ❤ 1
Post #80 574
ЧатГПТ, ты можешь забыть все что было между нами, но я никогда не забуду тебя😭💔🫡

Нет, это не слезы, просто дождь...
  • 😁 12
  • 😱 5
  • 😢 4
Post #79 656

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • 😁 14
  • 💯 3
  • ❤ 1
  • 😢 1
Post #78 794
До церемонии Оскар еще месяц, но ожидание можно скрасить вот таким кино (подкастом) со мной😎

На этом подкасте я мастерски складываю буквы в слова, делюсь своим опытом в обучении автоматизации и попутно не забываю дышать. (Цезарь обзавидовался бы такой многозадачности)

Смотрим!

https://www.youtube.com/watch?v=dM_F8OiQNNo
YouTube Мастер автотестового кунг-фу: «Учись, тестируй, повторяй» | Алиса и тестирование Новый выпуск подкаста "Tech Podcast". В гостях у Алисы - Александр Кузьмичев, эксперт по автотестированию, он раскрывает тайны образования в сфере IT. В этом выпуске Александр делится тем, как новички превращаются в профессионалов, чем рискуют преподаватели…
  • 🔥 18
  • 👍 8
  • ❤ 2
Post #77 645
В 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) и создаем отчет!

⚠️Лайкай, делись с друзьями и с коллегами! Помогай автору не терять мотивацию😁
А главное залетай в комментарии - какую еще тему хотел бы так разобрать?
  • 🔥 18
  • 👍 11
  • ❤ 6
  • 😁 1
Post #76 559
🦸🏼‍♂️Тони Старку нужен экзокостюм чтоб бить морды злодеям.
🧑🏼‍💻Разработчикам нужен JUnit 5 чтоб не превратиться в злодеев и не выхватить лещей от Тони Старка.

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

Есть два варианта:
🪑 Помочь делом. Хочешь сказать "Кузьмич, я верю в тебя", жахнуть предзаказ курса по вкусной скидке - за 3000₽ 1500₽ - и забрать курс первым как только он выйдет? Пиши в личку "ДЕЛО", расскажу подробности и программу.
🪑 Помочь словом. Готов поучаствовать в кастдев созвоне со мной на ~20-30 минут, поделиться пожеланиями по программе и повлиять на курс? Пиши в личку "СЛОВО" и забирай подарок - получасовую консультацию со мной.

И тут и там в накладе не останешься. Один нюанс - предложение доступно сегодня 23 января до 23:45 (просто потому что цифры прикольные).
  • 🔥 6
  • 👍 4
  • 😁 3
  • 🥱 1
Older posts →

About this channel

How can I read @java_ot_kuzmicha without a Telegram account?
TGViewer shows the public web preview Telegram publishes for Грамота от Кузьмича: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does Грамота от Кузьмича have?
Грамота от Кузьмича (@java_ot_kuzmicha) has 208 subscribers on Telegram, refreshed roughly every 30 minutes.
Does Грамота от Кузьмича know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →