Функции приложения, которые должны выполняться с определенной периодичностью или по расписанию, не выглядят на первый взгляд чем-то сложным. Однако при реализации можно столкнуться с рядом проблем. Грамотно подобранный инструмент позволит облегчить разработку и избежать проблем при эксплуатации приложения.
В статье на примере покажу, зачем использовать планировщик задач Quartz в Spring Boot-приложениях и с какими проблемами он поможет справиться.
Новости
Как подружить Redux и Elementary
![](https://webcf.waybackmachine.org/web/20220906062519im_/https://habrastorage.org/getpro/habr/upload_files/c11/157/81b/c1115781b8dcfba1f9e0017c158dec74.jpeg)
Поговорим об управлении глобальным состоянием с помощью Redux. Расскажу, как наиболее продуктивно связать Elementary — архитектурный пакет для Flutter — и Redux.
Jetpack Compose: реализация меню Apple Watch
Мне очень нравится меню с Apple watch: плавность анимации, поведение иконок при перемещении, расположение элементов по необычной сетке. Я захотел повторить это меню на Android. Но делать это на старом подходе с помощью ViewGroup или кастомного Layout Manager для RecyclerView не очень хотелось: слишком уж затратно для работы «в стол».
С появлением Compose эта идея стала более привлекательной и интересной для реализации. Рассказываю, как создать собственный ViewGroup на Jetpack Compose.
Навигация в Swift UI: что изменилось с появлением iOS 16
Одно из самых проблемных мест SwiftUI — работа с навигацией. Отсутствие доступа к стеку навигации, невозможность разделить UI-слой и слой навигации, сложность создания диплинков — всё это затрудняло работу многим разработчикам, использующим SwiftUI в своих проектах.
В iOS 16 появился совершенно новый API для работы с навигацией. Разбираемся, стало ли удобнее.
Создание инициализатора Flutter-проектов. Чисто и SOLIDно
Pet-проект или самописный инструмент помогают решить проблемы, которые возникают в разработке. На примере инициализатора Flutter-проектов рассказываем, как следует подходить к разработке собственной «тулзы» правильно: с SOLID и чистой архитектурой.
Accessibility в Android для чайников: адаптируем приложение для незрячих людей
В один из зимних вечеров я сидел дома, читал замечательную книжку «Android-программирование для профессионалов» и наткнулся на главу про Accessibility. Раньше я об этой теме не задумывался: клал null в поле contentDescription и жил себе спокойно. Но когда узнал, как слабовидящие люди пользуются смартфоном, у меня появилось желание погрузиться в тему доступности глубже.
Рассказываю, как адаптировать приложение для людей с ограниченными возможностями и так ли это трудозатратно, как кажется.
Ошибки начинающего проектного менеджера
В первый месяц стажировки ментор мне говорил: «В жизни каждого уважающего себя менеджера должен быть один легендарный факап». А что скажете насчёт пяти?
Пойми меня, если сможешь. Или как донести мысль заказчику (понятно и с первого раза)
Ещё один текст о том, как правильно общаться с заказчиком, чтобы он лучше вас понимал. На лавры Ильяхова не претендуем, в лёгкий язык без стоп-слов не получилось (сложна!). Постарались собрать краткий гайд «гигиенического минимума коммуникаций» для проджектов и всех, кому предстоит общение с заказчиком.
Android 13: какие изменения нас ожидают
![](https://webcf.waybackmachine.org/web/20220906062519im_/https://habrastorage.org/getpro/habr/upload_files/ae3/ea1/85c/ae3ea185cae48f8a2ccb6f382743ddbf.jpeg)
Работа с разрешениями, загадочный TARE, изменения UI. Разбираемся, какие изменения несёт грядущее обновление Android 13.
Выход из ада зависимостей: взгляд iOS-разработчика
![](https://webcf.waybackmachine.org/web/20220906062519im_/https://habrastorage.org/getpro/habr/upload_files/1da/00a/7c8/1da00a7c8dd17ac71ce51b0a0ea2b313.jpeg)
Как не попасть в ад из внешних зависимостей? Как сделать так, чтобы проект собирался с одинаковыми версиями зависимостей на машинах разных разработчиков? Рассказываем, зачем нужны менеджеры зависимостей и как ими пользоваться правильно.
Понимание общих принципов поможет не только iOS-разработчикам: у всех менеджеров зависимостей проглядывается общая схема фиксации версий, и требования к распространяемым утилитам во многом похожи.
Создай себе инструмент. Часть 1: скрипт на Dart
Можно легко упустить момент, когда работа с кодом становится рутинной. Логичный шаг — автоматизировать её. Стартуем серию статей о тулинге: расскажу, как начать и куда смотреть дальше.
Как тестировать стриминговые приложения
![](https://webcf.waybackmachine.org/web/20220906062519im_/https://habrastorage.org/getpro/habr/upload_files/424/6e5/980/4246e59809ca6a89371fd3f0433646ab.jpg)
Может показаться, что разработка проекта для видеостриминга — это просто: слепи плеер, возьми контент с сервера — и готово. Когда мы сами начали делать такой проект, мы поняли, что всё не так просто.
Забегая вперёд, скажу, что по коду никаких особенностей в тестировании нет. А вот по логике и пользовательскому опыту нюансов очень много. О них и расскажу.
Dart 2.17: Продуктивность и интеграция
![](https://webcf.waybackmachine.org/web/20220906062519im_/https://habrastorage.org/getpro/habr/upload_files/d63/cdc/5d9/d63cdc5d9b4fb35dcc5f737b16335744.png)
Языковые фичи. Инструменты, повышающие продуктивность. Более глубокая и масштабная интеграция с платформами. Представляем перевод статьи о свежей версии Dart с комментариями Евгения Сатурова, Head of Flutter в Surf.
Как подружить Elementary и BLoC
![](https://webcf.waybackmachine.org/web/20220906062519im_/https://habrastorage.org/getpro/habr/upload_files/8ba/828/aec/8ba828aeca9cad1d7e53693bed95b797.jpg)
У каждого инструмента свои границы применимости, сильные и слабые стороны. Использовать решение в подходящей ситуации, а также комбинировать различные решения — хороший способ достичь эффективной разработки. Например, наша команда Surf удачно использует Elementary в связке с BLoC или Redux для управления бизнес-состоянием.
Меня зовут Кристина Зотьева, я Flutter-разработчик. В этой статье вместе с Михаилом Зотьевым покажем один из примеров эффективного взаимодействия двух инструментов, которые могут удачно дополнить друг друга.
Flutter 3: что нового
![](https://webcf.waybackmachine.org/web/20220906062519im_/https://habrastorage.org/getpro/habr/upload_files/803/c93/475/803c93475065e14fd9287cf937c02ba8.png)
Представляем перевод статьи о свежем релизе Flutter с комментариями Евгения Сатурова, Head of Flutter в Surf.
Как нативно визуализировать голос в iOS
![](https://webcf.waybackmachine.org/web/20220906062519im_/https://habrastorage.org/getpro/habr/upload_files/feb/e45/e84/febe45e84ce1b6dfb7863972853d241b.jpeg)
Реализовать запись и проигрывание аудиофайлов в iOS несложно. Но если к этому добавляется задача визуализировать звук в момент записи с микрофона, это может вызвать сложности даже у опытного программиста, который мало работал с AVFoundation — мультимедийным фреймворком для работы с аудиовизуальными носителями.
В статье расскажу, как в iOS нативно визуализировать голос в процессе записи и проведу краткий экскурс в физику звукозаписи.
Стелем мягкую соломку на жёсткий Flutter: как подготовиться к первому проекту, чтобы не провалить его
![](https://webcf.waybackmachine.org/web/20220906062519im_/https://habrastorage.org/getpro/habr/upload_files/596/553/e27/596553e27bf3521987fe748c893e1509.jpg)
Есть мнение, будто Flutter недостаточно хорош, недостаточно развит и не готов к использованию в крупном и сложном проекте. Собрали советы, которые помогут не наступать на популярные грабли и получить максимум возможностей, которые может предоставить Flutter-фреймворк.
Sliver во Flutter, или как работает скролл
Если вы уже встречались со сливерами, то наверняка оценили всю «прелесть» работы с ними. На самом деле они совсем не так трудны и ужасны.
Чтобы просто начать их использовать, как чаще всего бывает во Flutter, разбираться особо не нужно. А вот чтобы полноценно использовать их и при этом не страдать, придётся понять, как они работают. Именно этим мы и займемся.
Один на всех, или как компания с несколькими десятками проектов сидит на одном Apple Developer-аккаунте
![](https://webcf.waybackmachine.org/web/20220906062519im_/https://habrastorage.org/getpro/habr/upload_files/649/210/80d/64921080d0b0d751d88fea67bb7c9971.jpeg)
Рассказываем, какие типы сборок и распространения есть в iOS, какие палки в колеса нашего рабочего локомотива вставляет Apple и как разработчиков может выручить утилита с парочкой команд.
Гайд по архитектуре приложений для Android. Часть 1: обзор
![](https://webcf.waybackmachine.org/web/20220906062519im_/https://habrastorage.org/getpro/habr/upload_files/9c8/abb/e5c/9c8abbe5c274db8db811b6ac81152e8d.png)
Перевод обновлённого гайда Android по архитектуре приложений. Это — первая часть из пяти: обзор рекомендаций по архитектуре.