4971
все о Android разработке @itchannels_telegram - 🔥 лучшие it каналы @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - ml 📚 @pythonlbooks -📚books
🚀 Spring Boot: отправка email за несколько минут
В Spring Boot есть готовое решение для отправки писем - spring-boot-starter-mail.
Этот стартер уже включает всю необходимую конфигурацию и зависимости, поэтому вам не нужно вручную настраивать JavaMail или подключать десятки библиотек.
Достаточно добавить зависимость, указать SMTP-настройки в application.properties или application.yml, и можно сразу отправлять письма из приложения.
Spring Boot автоматически настроит JavaMailSender, а в коде останется лишь создать сообщение и отправить его.
Это один из самых простых способов добавить email-уведомления, подтверждения регистрации, сброс пароля или системные алерты в ваше приложение.
Читать полностью…
<!-- зависимость -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
# application.properties
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=my_email@gmail.com
spring.mail.password=my_password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
@Service
public class MailService {
@Autowired
private JavaMailSender mailSender;
public void sendEmail(String to, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);
message.setSubject(subject);
message.setText(text);
message.setFrom("your_email@gmail.com");
mailSender.send(message);
}
}
⚓️ Удобный клиент для управления вашим *arr стеком
ArrMatey — это современное мобильное приложение для управления несколькими инстансами Sonarr, Radarr и Lidarr. Оно построено на Kotlin Multiplatform с использованием Jetpack Compose для Android и SwiftUI для iOS, предлагая интуитивно понятный интерфейс и мощные функции.
🚀 Основные моменты:
- Поддержка нескольких инстансов с быстрой сменой
- Управление библиотекой с фильтрацией и сортировкой
- Интерактивный поиск и календарь предстоящих релизов
- Мониторинг загрузок в реальном времени
- Современный интерфейс с динамической темой
📌 GitHub: https://github.com/owenlejeune/ArrMatey
#kotlin
Китайцы наконец-то импортозамистили Android😂
Читать полностью…
⚡️ Spring Boot: полный контроль над HTTP-ответами через ResponseEntity
Если нужно управлять не только телом ответа, но и статусом и заголовками — используйте ResponseEntity.
Что это даёт:
- Явно задаёте HTTP-статус (200, 404, 201 и т.д.)
- Добавляете кастомные заголовки
- Возвращаете любой объект в body
- Контролируете поведение API на уровне протокола
Пример:
@GetMapping("/users/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
User user = userService.findById(id);
if (user == null) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
}
return ResponseEntity
.status(HttpStatus.OK)
.header("Custom-Header", "UserFound")
.body(user);
}
🚀 Spring Boot трюк, который спасает продакшен
Если ваш сервис обращается к внешним API — рано или поздно они начнут падать, тормозить или отдавать ошибки.
Вместо ручной логики повторов используйте @Retryable.
Что это даёт:
- Автоматические повторные запросы при ошибках
- Настраиваемое количество попыток
- Exponential backoff (увеличение задержки между попытками)
- Fallback-логика через @Recover, если всё окончательно сломалось
Когда это нужно:
- Платёжные шлюзы
- Внешние API
- Микросервисы
- Любые нестабильные сети
Главная идея:
Не падай из-за временных ошибок - попробуй ещё раз.
Такая мелочь может значительно повысить стабильность системы без сложного кода.
🚀 CLI для управления iOS и Android устройствами
agent-device — это инструмент командной строки для управления мобильными устройствами, позволяющий AI-агентам взаимодействовать с приложениями на iOS и Android. Проект находится на ранней стадии разработки и открыт для вкладов.
🚀 Основные моменты:
- Поддержка iOS (симулятор) и Android (эмулятор).
- Основные команды: открытие приложений, взаимодействие с элементами интерфейса.
- Минимальные зависимости и работа напрямую с Node.js.
- Возможность создания и управления сессиями.
📌 GitHub: https://github.com/callstackincubator/agent-device
#typescript
💡 Java-совет: WeakHashMap для кэша без утечек памяти
Если ты используешь HashMap как кэш - будь осторожен. Пока карта жива, ключи и значения не будут удалены GC, даже если они больше нигде не используются.
WeakHashMap решает эту проблему:
• Ключи хранятся через weak reference
• Если на ключ нет сильных ссылок в коде - GC может его удалить
• Запись автоматически исчезает из мапы
• Отлично подходит для кэшей, метаданных, listener-ов
Пример идеи:
• Положил объект в WeakHashMap
• Убрал на него все обычные ссылки
• GC очистил объект → запись исчезла сама
Когда использовать:
• Кэш, который не должен раздувать память
• Вспомогательные данные, завязанные на жизненный цикл объекта
• Framework-код, плагины, reflection-кэши
Когда не стоит:
• Если ключи должны жить строго контролируемо
• Если логика зависит от стабильного наличия записи
Коротко:
HashMap - контроль у тебя
WeakHashMap — контроль у GC 🧹
Полезный инструмент, если понимаешь его семантику.
💡 Java совет: избегай шаринга данных между потоками
Одна из главных причин багов в многопоточке - общий изменяемый state (shared mutable state). Чем больше потоков трогают одни и те же объекты - тем выше шанс словить race condition, deadlock или “плавающие” ошибки.
Что делать правильно:
✅ 1) Используй immutable-объекты
Если объект нельзя изменить - потокам нечего “делить”, и синхронизация почти не нужна.
В Java это удобно делать через record, final поля и неизменяемые коллекции.
✅ 2) Общайся через сообщения, а не через общую память
Вместо того чтобы менять общий объект - передавай события через очередь:
- BlockingQueue
- ConcurrentLinkedQueue
- Actor-style подход
Это снижает связанность и делает поведение системы предсказуемым.
Простой принцип:
Не “разделяй память”, а “разделяй сообщения”.
#Java #SoftwareDevelopment
🖥Awesome-Android-Reverse-Engineering
Подборка лучших материалов и инструментов для реверс-инжиниринга Android.
Что есть:
- 📚 обучение: курсы, видео, книги
- 🛠 инструменты: статический и динамический анализ
- 🔎 декомпиляторы: JADX, Apktool, dex2jar
- 🧪 CTF/CrackMe для практики
- 📘 статьи и ресурсы по безопасности
Зачем:
— всё в одном месте
— удобно для обучения и аудита безопасности
— хорошая база для практики
Полезный старт для разработчиков и security-инженеров.
📌 GitHub: https://github.com/user1342/Awesome-Android-Reverse-Engineering
Конец года, и снова заканчиваются все подписки 😱
Узнали? Согласны? Не беда — мы как раз разыгрываем промокоды на год от Облака Mail и VK Музыки!
Условия участия простые:
🔹 подпишитесь на наш канал @mobilehubvk
🔹нажмите кнопку «Участвовать»
🔹 дождитесь 30 декабря — в этом посте мы выберем случайным образом 6 победителей
Информацию об организаторе, правилах и призах ищите по ссылке.
Удачи!
❤️❤️❤️❤️❤️❤️❤️❤️
Когда гирлянды за монитором, а в терминале — Git Quest 💻
Атмосфера Нового года по-айтишному — это не только кофе и деплой под бой курантов.
Это Новогодний Git Quest от SourceCraft!
🤩 Новогодние задания для тех, кто хочет узнать больше о Git.
🤩 Пасхалки и секретные ветки.
🤩 Соревновательная часть с рейтингом.
🤩 Дополнительные очки за скорость.
С 10 по 30 декабря открываются новые задания каждые два дня — не пропусти! Загляни на сайт, попробуй тренировочное задание и добавь немного Git-магии в свой декабрь.
✔️ OpenAI создала Android-версию Sora за 28 дней.
В ноябре 2025 года OpenAI выпустила приложение Sora для Android, пройдя путь от прототипа до глобального релиза всего за 1 месяц. Над проектом работали 4 инженера и ранняя версия GPT-5.1-Codex.
Результаты эксперимента показали новый стандарт эффективности: 85% кода было сгенерировано ИИ, при этом стабильность версии держалась на уровне 99,9%.
В первые сутки Sora для Android возглавило чарты Play Store, а пользователи создали более миллиона видео. В OpenAI отмечают, что ИИ-ассистенты берут на себя рутину, однако архитектурное проектирование и контроль качества по-прежнему требуют участия людей.
openai.com
🔥 Новый курс на Stepik: Linux - апгрейд твоих скиллов до уровня инженера
Хватит быть “кликавшим по GUI”. Пора понимать систему изнутри.
Что освоишь:
• Bash, grep, sed, awk - инструменты взрослых админов
• Процессы, сеть, права, логирование и починка поломок
• SSH, firewall, systemd, cron, автозапуск сервисов
После курса: Linux перестаёт быть загадкой - ты будешь работать с ним уверенно.
30% скидка на 48 часов
👉 Начни учиться на Stepik.
Опасности в Android: уязвимости и защитные меры
Увлекательное путешествие в мир безопасности Android! Разобрали самые интересные и коварные уязвимости, такие как Path Traversal, SQL-инъекции и Tapjacking. Но основное внимание уделили WebView: неправильной валидации данных, уязвимостям в библиотеке для парсинга URL, JavaScript Interface и загрузке диплинков.
Безопасность — это не только важно, но и захватывающе! Она необходима в каждом приложении, чтобы обеспечить уверенность пользователей в безопасности их данных. Не стоит перекладывать эту ответственность на безопасников.
В докладе нет скучных терминов и монотонных объяснений. Вместо этого — захватывающая история поиска уязвимостей и их устранения, основанная на личном опыте при разработке приложений.
Будет полезно всем тем, кто интересуется безопасностью Android-приложений.
источник
#Android
🚀 Spring Boot tip: как быстро защитить REST endpoint
С Spring Boot + Spring Security можно буквально за пару строк закрыть нужные маршруты.
Допустим, у нас есть контроллер:
@RestController
public class MyController {
@GetMapping("/admin")
public String admin() {
return "Admin panel";
}
}
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin").authenticated()
.anyRequest().permitAll()
.and()
.httpBasic();
}
}
📌 Тестировать Spring Boot контроллеры можно без запуска сервера.
Аннотация @AutoConfigureMockMvc автоматически настраивает MockMvc в тестовом контексте и позволяет отправлять HTTP-запросы напрямую через Spring.
@SpringBootTest
@AutoConfigureMockMvc
class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void shouldReturnUser() throws Exception {
mockMvc.perform(get("/users/1"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(1));
}
}
@SpringBootTest поднимает полный контекст приложения @AutoConfigureMockMvc настраивает MockMvc DispatcherServlet внутри приложения
🚀 Ускоряем Spring Boot без изменения кода
Многие приложения тормозят не из-за бизнес-логики, а из-за логирования.
Каждый лог - это I/O операция. При высокой нагрузке это становится узким местом.
Решение - асинхронное логирование через Logback.
Что происходит:
- сообщения складываются в очередь
- отдельный поток обрабатывает их в фоне
- основной поток не блокируется
- меньше задержек и выше throughput
Настройка проста - добавьте logback-spring.xml в:
src/main/resources/
Пример конфигурации:
<configuration>
<!-- Async wrapper -->
<appender name="ASYNC_CONSOLE"
class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="CONSOLE"/>
<queueSize>5000</queueSize>
<discardingThreshold>0</discardingThreshold>
<includeCallerData>false</includeCallerData>
</appender>
<!-- Console appender -->
<appender name="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger - %msg%n
</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="ASYNC_CONSOLE"/>
</root>
</configuration>
💡 Spring Boot лайфхак: ускоряй интеграционные тесты
Если тебе нужно тестировать Spring MVC контроллеры, но не хочется поднимать всё приложение — используй @WebMvcTest.
Что это даёт
- Загружает только MVC-слой, без всего Application Context
- Тесты работают значительно быстрее
- Можно замокать сервисы через @MockBean
- Идеально для проверки контроллеров, статусов и ответов API
Когда использовать
- Тестируешь REST-контроллеры
- Нужно проверить HTTP-ответы
- Не нужна база, security, messaging и другие слои
Идея простая:
Вместо запуска всего приложения → поднимаем только веб-контекст.
Меньше зависимостей → быстрее тесты → стабильный CI.
Пример
@WebMvcTest(HelloController.class)
class HelloControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private HelloService helloService;
@Test
void sayHello_returnsExpectedMessage() throws Exception {
given(helloService.getMessage()).willReturn("Hello!");
mockMvc.perform(get("/api/hello"))
.andExpect(status().isOk())
.andExpect(content().string("Hello!"));
}
}
🚀 Spring Boot: когда использовать static-классы, а когда Bean
Частая ошибка в Spring - использовать static-утилиты там, где нужен управляемый компонент.
Правило простое
Используйте static-классы только если:
- они не хранят состояние
- у них нет зависимостей
- не требуется mock в тестах
- не нужен AOP (логирование, транзакции и т.д.)
Во всех остальных случаях — лучше Spring Bean.
Почему это важно
Пример с static-кэшем:
public class CacheUtils {
private static Map<String, String> cache = new HashMap<>();
}
⚡️Spring Boot: отправка email за 5 минут
Если нужно быстро добавить отправку писем в Java-приложение — используйте spring-boot-starter-mail.
Он уже содержит всю необходимую конфигурацию и зависимости, поэтому не нужно вручную настраивать SMTP-клиенты.
Что нужно сделать:
1. Добавить зависимость
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
Настроить SMTP (например, Gmail)
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=your_email@gmail.com
spring.mail.password=your_app_password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
@Autowired
private JavaMailSender mailSender;
public void sendEmail(String to, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);
message.setSubject(subject);
message.setText(text);
message.setFrom("your_email@gmail.com");
mailSender.send(message);
}
🚀 LiteRT - универсальная основа для AI прямо на устройстве
Google представил LiteRT — новый универсальный фреймворк для on-device AI, который развивается из TensorFlow Lite и становится базой для высокопроизводительного ML и генеративного AI на устройствах.
🔥 Что важно
⚡ До 1.4× быстрее GPU-ускорение
LiteRT показывает прирост производительности на GPU по сравнению с TensorFlow Lite, снижая задержку и улучшая отклик моделей.
🌐 Кроссплатформенность
Работает на Android, iOS, macOS, Windows, Linux и Web. Использует OpenCL, OpenGL, Metal и WebGPU через новый движок.
🤖 Поддержка NPU
Добавлено ускорение на нейропроцессорах с единым API, что упрощает разработку под разные чипы и повышает скорость инференса.
⚙️ Модели из PyTorch и JAX
Есть удобная конвертация моделей, что упрощает перенос современных AI-моделей на устройство.
📦 Open-source
Фреймворк открыт и подходит для продакшена — можно строить реальные on-device AI-приложения.
LiteRT позволяет запускать современные AI и GenAI модели прямо на устройстве — быстрее, с меньшей задержкой и лучшей приватностью, без постоянной зависимости от облака.
https://developers.googleblog.com/litert-the-universal-framework-for-on-device-ai/
🚀 Spring Boot: настрой graceful shutdown с таймаутом
Когда сервис перезапускается (deploy / autoscaling / rolling update), без graceful shutdown часть HTTP-запросов может:
- оборваться на полпути
- вернуть 5xx
- прервать фоновые потоки слишком рано
В Spring Boot это решается одной настройкой - задаёшь таймаут на “мягкое” завершение:
✅ сервер перестанет принимать новые запросы
✅ но даст текущим запросам и бинам закончить работу
✅ и только потом завершится
Пример:server:
shutdown: graceful
spring:
lifecycle:
timeout-per-shutdown-phase: 20s
Идеально для продакшена, особенно если у тебя:
- Kubernetes rolling update
- долгие запросы
- async обработчики / очереди
- фоновые задачи
⚡️ Docker-Android - запуск Android-эмулятора в Docker-контейнере
Минимальный и настраиваемый Docker-образ с Android-эмулятором, который запускается в контейнере как сервис.
Он особенно полезен для автоматизации, CI/CD и тестирования мобильных приложений, когда нужен работающий эмулятор в изолированной среде без физического устройства.
Это Docker-образ на базе лёгкого Linux, со встроенным Android-эмулятором, поддержкой аппаратной виртуализации (KVM) и Java Runtime. Внутри контейнер поднимает эмулятор, ADB-сервер и инструменты виртуализации. Работа происходит в headless-режиме, то есть без графического интерфейса — удобно для серверов и CI.
Основные возможности:
• минималистичный образ с Android-эмулятором и ADB
• поддержка KVM и аппаратного ускорения
• выбор версии Android и типа образа
• проброс портов для ADB
• работа без GUI
• возможность подключать инструменты удалённого управления экраном
Плюсы:
✔ изолированная, воспроизводимая среда
✔ не нужен GUI
✔ удобно для автоматизации тестов
✔ поддержка аппаратного ускорения
docker-android — это удобный способ запускать Android-эмулятор как сервис внутри контейнера. Он упрощает автоматизацию тестирования и делает окружение предсказуемым и повторяемым.
https://github.com/HQarroum/docker-android
Локализация в Jetpack Compose
Локализация относится к изменению текста приложения, форматов валют и других визуальных элементов для соответствия локали пользователя на основе его региональных предпочтений.
С введением языковых предпочтений для каждого приложения (Per-app Language Preference) в Android 13 (API уровня 33) управление языками, специфичными для приложений, стало намного проще.
https://blog.kotlin-academy.com/localization-in-jetpack-compose-71b7f7233243
#Android
🤖 Автоматизация Android с AI: Roubao
Roubao — это открытый AI помощник для автоматизации задач на Android без необходимости подключения к компьютеру. Он использует визуальные языковые модели и работает на нативном Kotlin, позволяя пользователям легко выполнять команды с помощью естественного языка.
🚀 Основные моменты:
- Полностью открытый проект без необходимости в компьютере
- Интуитивно понятный интерфейс с поддержкой нескольких языков
- Поддержка различных AI моделей и API
- Высокая безопасность с шифрованием ключей
- Возможность работы в режиме Root для расширенных функций
📌 GitHub: https://github.com/Turbo1123/roubao
#kotlin
🚀 AI Agents for Android Apps
Библиотека для автоматизации работы с нативными Android-приложениями. Идеально подходит для мобильных рабочих процессов в логистике, экономике на заказ и других отраслях, где ноутбук неуместен. Позволяет значительно ускорить выполнение задач и сократить затраты.
🚀 Основные моменты:
- Автоматизация процессов на Android-устройствах
- Снижение затрат на 95% по сравнению с традиционными методами
- Поддержка различных мобильных приложений
- Быстрая реакция — менее 1 секунды на действие
- Идеально для логистики и мобильного обслуживания
📌 GitHub: https://github.com/actionstatelabs/android-action-kernel
ColorTokensKit — мощная система цветовых маркеров
Собственная цветовая система Swift обеспечивает только базовую функциональность для представления цвета. Собственные цвета ограничены RGB и HSL, которые не обеспечивают единообразия восприятия. Это может привести к непоследовательному цветовому восприятию на разных устройствах и в разных средах. Кроме того, собственные цвета изначально не поддерживают доступные коэффициенты контрастности, темный режим или темы, что затрудняет поддержание целостной системы дизайна. ColorTokensKit устраняет эти ограничения, используя цветовую систему LCH, которая обеспечивает более интуитивный и гибкий подход к управлению цветом.
ColorTokensKit — мощная система цветовых маркеров для платформ Apple. ColorTokensKit расширяет возможности Swift, предлагая эргономичный доступ к цветовой системе LCH (Lightness, Chroma, Hue) и тысячам доступных цветов.
Фичи:
Простой в использовании API цветовых маркеров
Предопределенные цветовые палитры LCH
Встроенная поддержка доступных коэффициентов контрастности
Встроенная поддержка темного режима
Встроенная тематика для всех приложений
Легкое преобразование между пространствами RGB/HSL/LCH/LAB/XYZ
Отсутствие зависимостей
https://github.com/metasidd/ColorTokensKit-Swift
#Android
📱🤖 Умный помощник для Android на базе AutoGLM
Open-AutoGLM предлагает мобильный интеллектуальный ассистент, который понимает содержимое экрана и выполняет задачи по командам на естественном языке. Используя ADB для управления устройством, система может автоматически интерпретировать запросы и выполнять действия, такие как поиск в приложениях.
🚀Основные моменты:
- Многофункциональный ассистент для Android.
- Поддержка естественного языка для выполнения команд.
- Автоматизация действий на экране устройства.
- Возможность удаленного управления через Wi-Fi.
- Встроенные механизмы подтверждения для чувствительных операций.
📌 GitHub: https://github.com/zai-org/Open-AutoGLM
#python
📱 Orion Store: Serverless App Store for Android 🚀
Orion Store - это современный прогрессивный Android-приложение, работающее без серверной части. Полностью функционирует на GitHub и может быть скомпилировано в нативный APK с помощью Capacitor. Имеет адаптивный дизайн и поддерживает автоматическое обновление приложений.
🚀 Основные моменты:
- 🎨 Яркий дизайн с темами Light, Dusk и Dark.
- 🤖 Поддержка нативных Android-устройств.
- ☁️ Полностью серверная архитектура на базе GitHub.
- ⚡ Умное кэширование для мгновенной загрузки.
- 🔄 Автоматическая система обновлений приложений.
📌 GitHub: https://github.com/RookieEnough/Orion-Store
#typescript