TGViewer
Channel Public Channel
Android разработка

Android разработка

@android_its

все о Android разработке

@itchannels_telegram - 🔥 лучшие it каналы

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - ml 📚

@pythonlbooks -📚books
Subscribers
4.88K
Photos
470
Videos
26
Links
552

Showing posts older than #769 · Back to latest

Older Posts 19 shown
Post #768 1.52K
🔍📱 Doorr: Android интерфейс для поиска с Prowlarr и Jackett

Doorr — это мобильное приложение для Android, которое упрощает поиск контента через Prowlarr и Jackett. Удобный интерфейс и функциональные возможности делают его отличным инструментом для пользователей.

🚀Основные моменты:
- Интуитивно понятный интерфейс для поиска
- Поддержка Prowlarr и Jackett
- Легкий доступ к файлам и настройкам

📌 GitHub: https://github.com/Lifailon/doorr
  • ❤ 3
  • 👍 3
Post #766 1.75K
Tencent ужал переводчик до 440 мегабайт и сделал его умнее Google Translate

Китайцы из Tencent выложили в открытый доступ модель Hy-MT1.5-1.8B-1.25bit, и это тот случай, когда длинное название скрывает по-настоящему любопытную штуку. Переводчик весит 440 мегабайт, целиком работает офлайн на телефоне, понимает 33 языка и при этом обгоняет Google Translate на стандартных бенчмарках.

Главный фокус тут в квантовании. Обычно модель такого размера в FP16 занимает около 3,3 гигабайта, что для смартфона уже многовато. Tencent сжали её до 1,25 бита на вес, и в итоге получили файл в семь с половиной раз меньше оригинала. Что особенно приятно, это не привычная история «сжали и оно начало нести чушь». Точность не просела, а по сравнению с предыдущими подходами на 1,67 бита новая версия ещё и работает примерно на десять процентов быстрее.
При своих скромных 1,8 миллиарда параметров модель умудряется тягаться с коммерческими API и даже с гигантами на 235 миллиардов.

То есть на стандартных тестах перевода она играет в одной лиге с системами, которые в сотню раз тяжелее и крутятся в дата-центрах, а не у вас в кармане.

Покрытие тоже не для галочки. 33 языка, 5 диалектов и 1056 направлений перевода, причём в список попали тибетский и монгольский. Это редкий случай, когда крупный игрок не ограничивается английским, испанским и парой ходовых европейских, а реально вкладывается в малые языки, которые обычно остаются за бортом коммерческих сервисов.
В довесок Tencent напоминают, что их переводческий стек уже тридцать раз брал первые места на международных соревнованиях по машинному переводу и стоит внутри продуктов компании.

ЭТО боевая технология, которую просто решили отдать наружу. На Hugging Face лежит сама модель, на GitHub код, и есть готовый APK для Android, чтобы потрогать всё руками без танцев со сборкой.

Если коротко, то идея «переводчик уровня Google прямо на телефоне без интернета и подписки» из разряда фантастики окончательно переехала в разряд скачал и пользуйся.

📲Demo APK (Android): https://huggingface.co/AngelSlim/Hy-MT1.5-1.8B-1.25bit-GGUF/resolve/main/Hy-MT-demo.apk
🤗Hugging Face:: https://huggingface.co/AngelSlim/Hy-MT1.5-1.8B-1.25bit
🔗GitHub: https://github.com/tencent/AngelSlim
📄Paper: https://arxiv.org/abs/2601.07892
  • 👍 10
  • ❤ 3
  • 🔥 2
Post #765 1.4K
⚡️ CORS в Spring Boot: не лечите это костылями на фронте

Если frontend и backend живут на разных доменах или портах, браузер начнет резать запросы по CORS. Это не баг Spring Boot и не проблема React. Это нормальный механизм безопасности браузера.

Правильный способ - настроить CORS на стороне backend.

В Spring Boot это можно сделать глобально через WebMvcConfigurer: указать маршруты, разрешенные origins, HTTP-методы, заголовки и работу с credentials.

Главное - не ставить бездумно * везде подряд, особенно если используете cookies, токены или allowCredentials(true). В проде лучше явно перечислять доверенные домены, например frontend-домен приложения.

Такой подход дает централизованный контроль: вы один раз задаете политику CORS и не размазываете настройки по каждому контроллеру.

Для Java backend-разработчика это базовая, но важная вещь: CORS должен быть частью архитектуры API, а не случайной правкой перед деплоем.
  • ❤ 1
  • 👍 1
Post #764 1.66K
🦀 Google затащили Rust туда, где его реально ждали - прямо в cellular baseband у Pixel 10.

Не в приложение, не в системный сервис и даже не в очередную утилиту, а в прошивку модема. Это уже совсем другой уровень.

Первым шагом заменили DNS-парсер, который раньше был написан на C и регулярно оставался источником memory-safety проблем. Теперь там Rust на базе hickory-proto: bare-metal, no_std, FFI к существующим C-аллокаторам - все по-взрослому.

И самое важное тут даже не сам DNS-парсер. Главное, что Google уже протащили Rust в build system baseband. А значит, это не разовая демонстрация, а начало нормальной поэтапной миграции.

Вот так и выглядит реальное внедрение Rust в критическую инфраструктуру: без громких лозунгов, но с максимальной пользой. Сначала один опасный компонент, потом еще один, а дальше язык постепенно заходит в самые уязвимые части системы.

Для всей индустрии это очень показательный кейс. Rust все чаще идет не в новые игрушечные проекты, а в старые и сложные куски железа, где цена ошибки слишком высокая.

security.googleblog.com/2026/04/bringing-rust-to-pixel-baseband.html

#Rust #RustLang #MemorySafety #EmbeddedSystems #Android
  • ❤ 5
  • 👍 2
  • 🔥 2
Post #763 1.5K
🔥 Одна аннотация, которая экономит тонны кода в Spring

@RestController - это не просто удобство, а скрытая магия, про которую многие забывают.

Под капотом это комбинация @Controller + @ResponseBody .

То есть тебе не нужно писать @ResponseBody в каждом методе - всё работает автоматически.

• Меньше бойлерплейта
• чище код
• меньше шансов забыть и получить неожиданный результат

Кажется мелочью, но на больших проектах это реально экономит время и нервы

Если до сих пор используешь @Controller + @ResponseBody вручную - пора упрощать
  • ❤ 2
  • 👍 1
Post #762 1.81K
Два брата запустили стартап на ИИ и делают $3 млн в день Самый быстрый путь к миллионам сейчас - ИИ.

Без команды, без офиса, почти без кода руками.

Medvi - телемед-сервис для похудения на GLP-1 препаратах. Его собрал Мэттью Галлахер прямо у себя дома в Лос-Анджелесе: $20 000 бюджета и всего 2 месяца на запуск.

Дальше - интереснее. Почти всё делают нейросети: ChatGPT, Claude и Grok пишут код, собирают сайт, крутят рекламу и даже отвечают клиентам.

Да, иногда ИИ косячит - путает цены, предлагает не то. Но экономика всё равно бьётся.

Цифры выглядят как баг в реальности: 300 клиентов в первый месяц $401 млн за первый год прогноз — $1,8 млрд в этом году

И самое безумное - в компании до сих пор всего два человека.

Похоже, “маленькая команда” больше не ограничение, а новая суперсила.

https://www.forbes.com/sites/josipamajic/2026/04/02/ai-and-20000-helped-one-man-build-a-18-billion-telehealth-startup/
  • 🔥 4
  • 👍 3
  • 🤡 3
  • ❤ 1
  • 🖕 1
Post #761 1.47K

Forwarded from Java

🖥 Маленький, но мощный трюк для продакшена в Spring Boot.

Если вы используете Hibernate, добавьте:

spring.jpa.hibernate.ddl-auto=validate

Что это даёт:

- Приложение проверяет, совпадает ли схема БД с entity
- Если есть расхождения — сервис не запустится
- Никаких случайных изменений структуры в продакшене

Идеальный сценарий - использовать вместе с Flyway или Liquibase:

spring.jpa.hibernate.ddl-auto=validate
spring.flyway.enabled=true

Что в итоге:

- Все изменения БД — только через migration-скрипты
- Fail fast, если схема и код не совпадают
- Меньше сюрпризов после деплоя

Это один из тех параметров, которые могут спасти продакшен от тихих и очень дорогих ошибок.

#SpringBoot #JavaDev
  • ❤ 1
Post #760 1.42K
  • 😁 11
  • 🖕 2
Post #759 1.7K
🚀 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);
}
}
Post #758 1.3K
🚀 Spring Boot tip: как быстро защитить REST endpoint

С Spring Boot + Spring Security можно буквально за пару строк закрыть нужные маршруты.

Допустим, у нас есть контроллер:


@RestController
public class MyController {

@GetMapping("/admin")
public String admin() {
return "Admin panel";
}
}


Теперь хотим, чтобы /admin был доступен только аутентифицированным пользователям.

Добавляем конфигурацию безопасности:



@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin").authenticated()
.anyRequest().permitAll()
.and()
.httpBasic();
}
}

Разберём, что происходит:

• authorizeRequests() - начинаем описывать правила доступа
• antMatchers("/admin").authenticated() - для /admin требуется аутентификация
• anyRequest().permitAll() - остальные маршруты публичные
• httpBasic() - включаем HTTP Basic Auth

В итоге:

• /admin защищён
• всё остальное - открыто
• минимум кода, максимум контроля

Spring Security выглядит сложно, пока не начинаешь разбирать по шагам.

А дальше можно добавлять роли, JWT, OAuth2 и более гибкие политики доступа.
Post #757 1.33K
⚓️ Удобный клиент для управления вашим *arr стеком

ArrMatey — это современное мобильное приложение для управления несколькими инстансами Sonarr, Radarr и Lidarr. Оно построено на Kotlin Multiplatform с использованием Jetpack Compose для Android и SwiftUI для iOS, предлагая интуитивно понятный интерфейс и мощные функции.

🚀 Основные моменты:
- Поддержка нескольких инстансов с быстрой сменой
- Управление библиотекой с фильтрацией и сортировкой
- Интерактивный поиск и календарь предстоящих релизов
- Мониторинг загрузок в реальном времени
- Современный интерфейс с динамической темой

📌 GitHub: https://github.com/owenlejeune/ArrMatey

#kotlin
GitHub GitHub - owenlejeune/ArrMatey Contribute to owenlejeune/ArrMatey development by creating an account on GitHub.
Post #756 1.49K

Forwarded from Just Xor

📌 Тестировать 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
- Tomcat не запускается
- Запросы проходят через DispatcherServlet внутри приложения

Результат:
- тесты работают быстрее
- нет сетевых накладных расходов
- проверяется реальный Spring pipeline

Идеальный вариант для быстрых и надёжных controller-тестов.
  • ❤ 2
Post #755 1.43K
Китайцы наконец-то импортозамистили Android😂
  • 😁 14
  • 🔥 1
Post #754 1.53K
🚀 Ускоряем 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>


Когда это особенно полезно:

• high-load сервисы
• микросервисы с большим количеством логов
• API с высокой RPS
• продакшен-окружение

⚠️ Важно: при аварийном завершении часть логов из очереди может потеряться. Для критичных логов используйте файл + async.

Маленькая настройка - большой прирост производительности.

#SpringBoot #Java #Backend #Performance
Post #753 1.5K
⚡️ 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);
}


• разные статусы для разных сценариев (404, 400, 204)

• REST API с чёткой семантикой
• добавление headers (pagination, tokens, meta)
• возврат пустого ответа без body

Совет:
Если метод просто возвращает данные - достаточно вернуть объект.
Если нужен контроль над HTTP - всегда ResponseEntity.

@javatg

#SpringBoot #Java #Backend #SoftwareEngineering
  • ❤ 2
  • 👍 1
Post #752 1.38K
💡 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!"));
}
}


Если тестируешь только контроллер — не поднимай всё приложение.
WebMvcTest экономит секунды на каждом тесте и минуты в CI.
Post #751 1.59K
🚀 Spring Boot трюк, который спасает продакшен

Если ваш сервис обращается к внешним API — рано или поздно они начнут падать, тормозить или отдавать ошибки.

Вместо ручной логики повторов используйте @Retryable.

Что это даёт:

- Автоматические повторные запросы при ошибках
- Настраиваемое количество попыток
- Exponential backoff (увеличение задержки между попытками)
- Fallback-логика через @Recover, если всё окончательно сломалось

Когда это нужно:

- Платёжные шлюзы
- Внешние API
- Микросервисы
- Любые нестабильные сети

Главная идея:

Не падай из-за временных ошибок - попробуй ещё раз.

Такая мелочь может значительно повысить стабильность системы без сложного кода.
Post #750 1.55K
🚀 Spring Boot: когда использовать static-классы, а когда Bean

Частая ошибка в Spring - использовать static-утилиты там, где нужен управляемый компонент.

Правило простое

Используйте static-классы только если:
- они не хранят состояние
- у них нет зависимостей
- не требуется mock в тестах
- не нужен AOP (логирование, транзакции и т.д.)

Во всех остальных случаях — лучше Spring Bean.

Почему это важно

Пример с static-кэшем:


public class CacheUtils {
private static Map<String, String> cache = new HashMap<>();
}


Такой кэш:
• общий для всех потоков
• может случайно изменяться
• сложно контролировать и тестировать

нет управления жизненным циклом

Правильный подход — Bean со scope:

@Component
@Scope("request")
public class CacheService {
private Map<String, String> cache = new HashMap<>();
}
Теперь:

Spring управляет жизненным циклом

можно задать scope (request, session, singleton)

легко тестировать и мокать

можно добавить AOP

Главная мысль

Static — только для чистых функций.
Состояние и логика — пусть управляет Spring.

Spring лучше всего работает, когда управляет stateful-объектами.
  • ❤ 1
  • 👍 1
  • 🔥 1
Post #749 1.62K
🚀 CLI для управления iOS и Android устройствами

agent-device — это инструмент командной строки для управления мобильными устройствами, позволяющий AI-агентам взаимодействовать с приложениями на iOS и Android. Проект находится на ранней стадии разработки и открыт для вкладов.

🚀 Основные моменты:
- Поддержка iOS (симулятор) и Android (эмулятор).
- Основные команды: открытие приложений, взаимодействие с элементами интерфейса.
- Минимальные зависимости и работа напрямую с Node.js.
- Возможность создания и управления сессиями.

📌 GitHub: https://github.com/callstackincubator/agent-device

#typescript
GitHub GitHub - callstack/agent-device: Mobile app automation and verification for AI coding agents. CLI, MCP server, and typed Node.js… Mobile app automation and verification for AI coding agents. CLI, MCP server, and typed Node.js API for iOS, Android, HarmonyOS, TV, web, macOS, and Linux. - callstack/agent-device
  • 👍 2
  • 🔥 1
Older posts →
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 →