Программа проходит по строке, считает, сколько раз подряд встречается каждый символ, и формирует новую строку с парами "символ-количество".
В этом посте:
• Перебираем символы строки;
• Подсчитываем повторы подряд;
• Формируем новый результат;
Задача учит работать с базовыми циклами и даёт понимание работы примитивного сжатия текстов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍7❤4🤝1
Рендерим страницы в PNG из PDF!
Иногда нужно превратить документ в набор картинок. Java справляется с этим с библиотекой
Подключаем зависимость (
Открываем
Рендерим первую страницу с нужным
Проходим по всем страницам и сохраняем каждую в отдельный файл:
🔥 Подходит для генерации обложек, поиска по миниатюрам и веб-превью.
👉 Java Ready | #практика
Иногда нужно превратить документ в набор картинок. Java справляется с этим с библиотекой
PDFBox которая рендерит страницы в BufferedImage.Подключаем зависимость (
Gradle) для рендера PDF в изображения:implementation "org.apache.pdfbox:pdfbox:3.0.2"
Открываем
PDF и создаём рендерер для страниц:var pdf = org.apache.pdfbox.pdmodel.PDDocument.load(java.nio.file.Files.readAllBytes(
java.nio.file.Path.of("input.pdf")));
var renderer = new org.apache.pdfbox.rendering.PDFRenderer(pdf);
Рендерим первую страницу с нужным
DPI и сохраняем в PNG:float dpi = 200f;
var img = renderer.renderImageWithDPI(0, dpi);
javax.imageio.ImageIO.write(img, "png", java.nio.file.Path.of("page-1.png").toFile());
Проходим по всем страницам и сохраняем каждую в отдельный файл:
for (int i = 0; i < pdf.getNumberOfPages(); i++) {
var bi = renderer.renderImageWithDPI(i, dpi);
javax.imageio.ImageIO.write(bi, "png", java.nio.file.Path.of("page-" + (i+1) + ".png").toFile());
}
pdf.close();Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤5👍4
Когда важна подача данных, а не просто их значение, стандартные числа начинают работать против читаемости. Этот класс превращает цифры в понятные пользователю шаблоны.
Он незаменим в отчётности, логировании, интерфейсах и форматировании. Управляя маской, можно быстро адаптировать числовой вывод под требования клиента или дизайн системы.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍7❤4🤝1
Отправка email прямо из кода!
Java умеет отправлять письма через
Подключаем зависимость (
Указываем настройки SMTP-сервера:
Создаём сессию с логином и паролем:
Готовим письмо:
Отправляем:
🔥 Работает с Gmail, Яндексом, корпоративной почтой и любым
👉 Java Ready | #совет
Java умеет отправлять письма через
SMTP без сторонних сервисов с помощью библиотеки javax.mail.Подключаем зависимость (
Maven):<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>
Указываем настройки SMTP-сервера:
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
Создаём сессию с логином и паролем:
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("you@example.com", "password");
}
});Готовим письмо:
Message msg = new MimeMessage(session);
msg.setFrom("you@example.com");
msg.setRecipients(Message.RecipientType.TO, "target@example.com");
msg.setSubject("Тестовое письмо");
msg.setText("Привет! Это письмо отправлено из Java.");
Отправляем:
Transport.send(msg);
SMTP.Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍5🔥4
Проходим по папке, находим все файлы и складываем их размеры. Используем стандартный File, без рекурсии и дополнительных библиотек.
В этом посте:
• Получаем каталог;
• Перебираем все элементы;
• Проверяем, что это файл.
Это будет полезно для анализа диска проверок переполнения логов и многого другого.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤5👍4
Подсчёт количества дней между двумя датами!
Java умеет работать с датами без ручной арифметики. Можно вычислить разницу между любыми двумя датами.
Создаём две даты через LocalDate:
Считаем разницу в днях через ChronoUnit:
Можно вывести разницу в неделях и месяцах:
🔥 Такой подход даёт точные результаты, учитывая високосные годы и длину месяцев.
👉 Java Ready | #практика
Java умеет работать с датами без ручной арифметики. Можно вычислить разницу между любыми двумя датами.
Создаём две даты через LocalDate:
var start = java.time.LocalDate.of(2025, 1, 10);
var end = java.time.LocalDate.of(2025, 3, 2);
Считаем разницу в днях через ChronoUnit:
long days = java.time.temporal.ChronoUnit.DAYS.between(start, end);
System.out.println("Дней прошло: " + days);
Можно вывести разницу в неделях и месяцах:
long weeks = java.time.temporal.ChronoUnit.WEEKS.between(start, end);
long months = java.time.temporal.ChronoUnit.MONTHS.between(start, end);
System.out.println("Недель: " + weeks);
System.out.println("Месяцев: " + months);
🔥 Такой подход даёт точные результаты, учитывая високосные годы и длину месяцев.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍6🔥4
Сегодня покажу, как на чистой Java без библиотек снять скриншот всего экрана и записать его в файл.
В этом посте:
• Подключаем Robot и Toolkit для захвата экрана;
• Делаем скрин всего монитора;
• Сохраняем в PNG через ImageIO.
Удобно для логов ошибок, автотестов GUI или просто пранков.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤5👍5🤝1