Автоматизация проверки стиля кода с помощью KtLint в Android проекте
Мне повезло участвовать в большом стартапе и начать проект самостоятельно. И в моем проекте я решил покончить с Code Review в привычном понимании.
Что мне было необходимо? Нужен был инструмент, который бы приводил код к единому стилю и избавил меня и других участников команды от необходимости проверять стиль кода. Сюда входит правила расстановки новых строк, именования методов, отступы и тд. Необходимо чтоб инструмент подсвечивал места где стиль не соблюдается и исправлял автоматически такие места.
В данной статье я рассмотрю только анализ стиля Kotlin кода и его автоматическое исправления согласно выработанным правилам в проекте.
Статья: https://habr.com/ru/articles/914250/
Платформа: Android
Мне повезло участвовать в большом стартапе и начать проект самостоятельно. И в моем проекте я решил покончить с Code Review в привычном понимании.
Что мне было необходимо? Нужен был инструмент, который бы приводил код к единому стилю и избавил меня и других участников команды от необходимости проверять стиль кода. Сюда входит правила расстановки новых строк, именования методов, отступы и тд. Необходимо чтоб инструмент подсвечивал места где стиль не соблюдается и исправлял автоматически такие места.
В данной статье я рассмотрю только анализ стиля Kotlin кода и его автоматическое исправления согласно выработанным правилам в проекте.
Статья: https://habr.com/ru/articles/914250/
Платформа: Android
🔥1
SmartCaptcha Yandex на iOS: инструкция по внедрению
Настройка Yandex SmartCaptcha на первый взгляд может показаться простой задачей, но на практике она требует внимательности, точной настройки и понимания архитектуры приложения. Я поделюсь личным опытом внедрения этого инструмента, объясню, какие нюансы стоит учесть, а также как избежать ошибок.
Материал предназначен для iOS-разработчиков, у которых уже есть базовые знания мобильной разработки, и кто хочет быстро и корректно внедрить капчу от Яндекса в свое iOS-приложение.
Статья: https://habr.com/ru/companies/simbirsoft/articles/914178/
Платформа: iOS
Настройка Yandex SmartCaptcha на первый взгляд может показаться простой задачей, но на практике она требует внимательности, точной настройки и понимания архитектуры приложения. Я поделюсь личным опытом внедрения этого инструмента, объясню, какие нюансы стоит учесть, а также как избежать ошибок.
Материал предназначен для iOS-разработчиков, у которых уже есть базовые знания мобильной разработки, и кто хочет быстро и корректно внедрить капчу от Яндекса в свое iOS-приложение.
Статья: https://habr.com/ru/companies/simbirsoft/articles/914178/
Платформа: iOS
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Марширующие муравьи - делаем кастомный модификатор для границ
Граница в виде "марширующих муравьев" — распространенный элемент пользовательского интерфейса, используемый для обозначения «выбранного» элемента, но предоставляемый Compose модификатор border() не справляется с этой задачей.
Поэтому давайте создадим свой собственный!
И по ходу дела мы многое узнаем о Paths, измерении путей, рисовании путей и эффектах!
Статья: https://apptractor.ru/info/articles/marshiruyuschie-muravi-delaem-kastomnyy-modifikator-dlya-granits.html
Платформа: Android
Граница в виде "марширующих муравьев" — распространенный элемент пользовательского интерфейса, используемый для обозначения «выбранного» элемента, но предоставляемый Compose модификатор border() не справляется с этой задачей.
Поэтому давайте создадим свой собственный!
И по ходу дела мы многое узнаем о Paths, измерении путей, рисовании путей и эффектах!
Статья: https://apptractor.ru/info/articles/marshiruyuschie-muravi-delaem-kastomnyy-modifikator-dlya-granits.html
Платформа: Android
🔥1
ChessKit - пакет Swift для эффективной реализации шахматной логики (не игры самой, а именно логики). Реализует представление доски и всех игровых фигур, проверку правильности хода, ветвление ходов и вариации, состояний игры (шах, мат, пат, ничья) и т.п.
ChessKit на GitHub: https://github.com/chesskit-app/chesskit-swift
Платформа: iOS
⭐️: 14
ChessKit на GitHub: https://github.com/chesskit-app/chesskit-swift
Платформа: iOS
⭐️: 14
👍2
Уникальные значения - удаление дубликатов из массива в Swift
Удаление дубликатов для получения уникальных значений из массива может быть распространенной задачей. В таких языках, как Ruby, есть встроенные методы, например
Существует много способов достичь того же результата, и у каждого из них есть свои плюсы и минусы. Давайте рассмотрим их и посмотрим, какие методы лучше всего подходят для вашего случая.
Статья: https://apptractor.ru/info/articles/unikalnye-znacheniya-udalenie-dublikatov-iz-massiva-v-swift.html
Платформа: iOS
Удаление дубликатов для получения уникальных значений из массива может быть распространенной задачей. В таких языках, как Ruby, есть встроенные методы, например
uniq, но в Swift нам приходится создавать такие методы самостоятельно. Стандартная библиотека не предоставляет простого способа для этого.Существует много способов достичь того же результата, и у каждого из них есть свои плюсы и минусы. Давайте рассмотрим их и посмотрим, какие методы лучше всего подходят для вашего случая.
Статья: https://apptractor.ru/info/articles/unikalnye-znacheniya-udalenie-dublikatov-iz-massiva-v-swift.html
Платформа: iOS
👍1
Live Updates в Android 16 — исследуем новые уведомления
Начиная с Android 16, у нас появился новый стиль уведомлений Notification.ProgressStyle, который мы можем использовать для создания уведомлений, ориентированных на отображение прогресса выполнения задач.
В этой статье мы узнаем, как использовать этот новый стиль для предоставления конечным пользователям оперативных обновлений.
Статья: https://apptractor.ru/info/articles/live-updates-v-android-16-issleduem-novye-uvedomleniya.html
Платформа: Android
Начиная с Android 16, у нас появился новый стиль уведомлений Notification.ProgressStyle, который мы можем использовать для создания уведомлений, ориентированных на отображение прогресса выполнения задач.
В этой статье мы узнаем, как использовать этот новый стиль для предоставления конечным пользователям оперативных обновлений.
Статья: https://apptractor.ru/info/articles/live-updates-v-android-16-issleduem-novye-uvedomleniya.html
Платформа: Android
Tomoyo — это приложение Kotlin Multiplatform. С одной стороны, это функциональная копия веб-сайта, позволяющая реализовать некоторые его функции на мобильных и десктопных платформах. С другой стороны, оно служит примером для общих функций, таких как навигация, сокеты (для чата), видео, аудио и база данных в Kotlin Multiplatform.
Tomoyo на GitHub: https://github.com/AsterCass/Tomoyo
Платформа: Android/кроссплатформа
⭐️: 65
Tomoyo на GitHub: https://github.com/AsterCass/Tomoyo
Платформа: Android/кроссплатформа
⭐️: 65
👍1
Swift в Apple: перенос службы мониторинга паролей с Java
Swift широко используется в проде для создания облачных сервисов в Apple, давая невероятные результаты. В прошлом году сервис Password Monitoring был переписан на Swift и теперь обрабатывает миллиарды запросов в день с устройств по всему миру. По сравнению с предыдущим сервисом на Java, обновленный бэкенд обеспечивает 40% увеличение производительности, а также улучшенную масштабируемость, безопасность и доступность.
Статья: https://apptractor.ru/info/articles/swift-v-apple-perenos-sluzhby-monitoringa-paroley-s-java.html
Платформа: Swift/разработка
Swift широко используется в проде для создания облачных сервисов в Apple, давая невероятные результаты. В прошлом году сервис Password Monitoring был переписан на Swift и теперь обрабатывает миллиарды запросов в день с устройств по всему миру. По сравнению с предыдущим сервисом на Java, обновленный бэкенд обеспечивает 40% увеличение производительности, а также улучшенную масштабируемость, безопасность и доступность.
Статья: https://apptractor.ru/info/articles/swift-v-apple-perenos-sluzhby-monitoringa-paroley-s-java.html
Платформа: Swift/разработка
👍1
Творческая переработка MVVM и TCA на примере iOS
За основу мы взяли архитектуру MVVM (Model—View—ViewModel), в которой View отвечает за графическое представление данных, вся бизнес логика сосредоточена внутри ViewModel. ViewModel обрабатывает запросы от View, обновляет свои данные, и View посредством data binding автоматически обновляет своё представление, что очень удобно. Model — модель для хранения и передачи данных.
Статья: https://habr.com/ru/companies/gri/articles/913610/
Платформа: iOS
За основу мы взяли архитектуру MVVM (Model—View—ViewModel), в которой View отвечает за графическое представление данных, вся бизнес логика сосредоточена внутри ViewModel. ViewModel обрабатывает запросы от View, обновляет свои данные, и View посредством data binding автоматически обновляет своё представление, что очень удобно. Model — модель для хранения и передачи данных.
Статья: https://habr.com/ru/companies/gri/articles/913610/
Платформа: iOS
👍1
Kotlin 2.4 представляет расширенные ошибки — революционное изменение в обработке ошибок
На конференции KotlinConf 2025 была представлена новая функция Kotlin 2.4 — Rich Errors, которая обещает изменить подход к обработке ошибок в языке.
Почему это важно?
1. Безопасность типов: Компилятор знает о всех возможных ошибках и требует их обработки.
2. Меньше шаблонного кода: Уменьшается необходимость в многочисленных блоках try-catch.
3. Упрощение тестирования: Тестировать функции становится проще, так как ошибки возвращаются как значения, а не выбрасываются как исключения.
Везде, где возможны предсказуемые ошибки, Rich Errors делают код более надежным и понятным.
Статья: https://xuanlocle.medium.com/kotlin-2-4-introduces-rich-errors-a-game-changer-for-error-handling-413d281e4a05
Платформа: Android
👍 если хотите русский перевод
На конференции KotlinConf 2025 была представлена новая функция Kotlin 2.4 — Rich Errors, которая обещает изменить подход к обработке ошибок в языке.
fun fetchUser(): User | AppError {
if (/* network fails */) return NetworkError(503)
if (/* user not found */) return UserNotFoundError
return User("123", "Ada")
}
fun loadUserData() {
val result = fetchUser()
when (result) {
is User -> show(result)
is NetworkError -> showError("Проблема с сетью (${result.code}). Попробуйте снова.")
is UserNotFoundError -> showError("Пользователь не найден. Проверьте данные.")
}
}Почему это важно?
1. Безопасность типов: Компилятор знает о всех возможных ошибках и требует их обработки.
2. Меньше шаблонного кода: Уменьшается необходимость в многочисленных блоках try-catch.
3. Упрощение тестирования: Тестировать функции становится проще, так как ошибки возвращаются как значения, а не выбрасываются как исключения.
Везде, где возможны предсказуемые ошибки, Rich Errors делают код более надежным и понятным.
Статья: https://xuanlocle.medium.com/kotlin-2-4-introduces-rich-errors-a-game-changer-for-error-handling-413d281e4a05
Платформа: Android
👍 если хотите русский перевод
❤3🔥3👍1
SwiftSMTP предоставляет реализацию на основе SwiftNIO для отправки электронных писем с использованием SMTP-серверов.
Существует структура
После того, как у вас есть
Имея
SwiftSMTP на GitHub: https://github.com/sersoft-gmbh/swift-smtp
Платформа: iOS
⭐️: 49
Существует структура
Configuration (и ее вложенные структуры и перечисления), которая настраивает доступ к SMTP-серверу (имя хоста, учетные данные и т.д.).После того, как у вас есть
Configuration (вместе с NIO EventLoopGroup), вы можете создать Mailer. Mailer отвечает за настройку канала NIO, который подключается к SMTP-серверу и доставляет электронную почту.Имея
Mailer в своем распоряжении, вы можете использовать его для отправки электронной почты. Поскольку SMTP прерывает соединение после каждой доставки, Mailer создает новое соединение для каждой электронной почты, которая должна быть доставлена.SwiftSMTP на GitHub: https://github.com/sersoft-gmbh/swift-smtp
Платформа: iOS
⭐️: 49
Как мы превратили iPhone в лабораторный микроскоп с AI и BLE: real-world edge-приложение
В этой статье я хочу поделиться опытом разработки iOS-приложения для роботизированного микроскопа с AI-распознаванием клеток крови — как оно устроено, какие задачи пришлось решать, на какие грабли пришлось наткнуться и как iPhone можно использовать в качестве лабораторного инструмента.
Это не очередной todo-лист с авторизацией или приложение для наложения масок на селфи — в центре внимания: видеопоток с окуляра микроскопа, нейронки, работа с железом, Bluetooth-управление перемещением стекол, и всё это — прямо на iPhone.
При этом я постарался не уходить в чрезмерные технические детали, чтобы статья оставалась доступной для большей части аудитории.
Статья: https://habr.com/ru/articles/915372/
Платформа: iOS
В этой статье я хочу поделиться опытом разработки iOS-приложения для роботизированного микроскопа с AI-распознаванием клеток крови — как оно устроено, какие задачи пришлось решать, на какие грабли пришлось наткнуться и как iPhone можно использовать в качестве лабораторного инструмента.
Это не очередной todo-лист с авторизацией или приложение для наложения масок на селфи — в центре внимания: видеопоток с окуляра микроскопа, нейронки, работа с железом, Bluetooth-управление перемещением стекол, и всё это — прямо на iPhone.
При этом я постарался не уходить в чрезмерные технические детали, чтобы статья оставалась доступной для большей части аудитории.
Статья: https://habr.com/ru/articles/915372/
Платформа: iOS
👍1
Как построить свою ферму устройств и упростить работу с устройствами и эмуляторами: делимся опытом создания DeviceHub
Меня зовут Даниил Смирнов, я руководитель команды Android Core R&D, которая развивает VK DeviceHub и другие внутренние решения. Мы вместе с Иваном Левиковым, руководителем тестирования в команде контента, решили улучшить инфраструктуру тестирования и объединили усилия, чтобы построить собственную ферму устройств. И на этом пути преодолели множество технических и организационных вызовов, о которых хотим вам рассказать.
Статья: https://habr.com/ru/companies/vk/articles/915340/
Платформа: Android
Меня зовут Даниил Смирнов, я руководитель команды Android Core R&D, которая развивает VK DeviceHub и другие внутренние решения. Мы вместе с Иваном Левиковым, руководителем тестирования в команде контента, решили улучшить инфраструктуру тестирования и объединили усилия, чтобы построить собственную ферму устройств. И на этом пути преодолели множество технических и организационных вызовов, о которых хотим вам рассказать.
Статья: https://habr.com/ru/companies/vk/articles/915340/
Платформа: Android
Как создать импульсный эффект в Jetpack Compose
В этой статье описан процесс создания захватывающего импульсного эффекта с использованием Jetpack Compose. Реализация такой анимации — отличный способ привлечь внимание пользователя.
Статья: https://nuancesprog.ru/p/24866/
Платформа: Android
В этой статье описан процесс создания захватывающего импульсного эффекта с использованием Jetpack Compose. Реализация такой анимации — отличный способ привлечь внимание пользователя.
Статья: https://nuancesprog.ru/p/24866/
Платформа: Android
❤1
Rich Errors в Kotlin 2.4 — революционное изменение в обработке ошибок
Это одно из самых интересных дополнений к Kotlin, которое я видел за последние годы. Оно способствует изменению мышления: не относитесь к ошибкам как к неожиданностям — относитесь к ним как к ожидаемым возможностям.
Я с нетерпением жду возможности попробовать это (особенно в блоках try-catch, похожих на спагетти). Если вы работаете над чем-либо на основе Kotlin, особенно над Android-приложениями, вам стоит обратить на это внимание.
Статья: https://apptractor.ru/info/articles/rich-errors.html
Платформа: Android
Это одно из самых интересных дополнений к Kotlin, которое я видел за последние годы. Оно способствует изменению мышления: не относитесь к ошибкам как к неожиданностям — относитесь к ним как к ожидаемым возможностям.
Я с нетерпением жду возможности попробовать это (особенно в блоках try-catch, похожих на спагетти). Если вы работаете над чем-либо на основе Kotlin, особенно над Android-приложениями, вам стоит обратить на это внимание.
Статья: https://apptractor.ru/info/articles/rich-errors.html
Платформа: Android
Ускорение сборки Swift-проектов с макросами: как Xcode 16.4 решает проблему SwiftSyntax
Если вы работаете с макросами в Swift и сталкивались с длительными временами сборки из-за зависимости от SwiftSyntax, то есть хорошие новости! В последнем обновлении Xcode 16.4 появилась возможность использовать предварительно скомпилированные бинарные файлы SwiftSyntax, что значительно сокращает время сборки проектов.
В тестовом приложении, использующем библиотеку Structured Queries с макросами, время сборки в режиме отладки сократилось с 37 до 15 секунд. В режиме релиза улучшение ещё более заметно: с 226 до 45 секунд. Особенно ощутимы эти улучшения при сборке небольших модулей, тестов и при использовании Xcode Previews.
Статья: https://www.pointfree.co/blog/posts/171-mitigating-swiftsyntax-build-times
Платформа: iOS
Если вы работаете с макросами в Swift и сталкивались с длительными временами сборки из-за зависимости от SwiftSyntax, то есть хорошие новости! В последнем обновлении Xcode 16.4 появилась возможность использовать предварительно скомпилированные бинарные файлы SwiftSyntax, что значительно сокращает время сборки проектов.
В тестовом приложении, использующем библиотеку Structured Queries с макросами, время сборки в режиме отладки сократилось с 37 до 15 секунд. В режиме релиза улучшение ещё более заметно: с 226 до 45 секунд. Особенно ощутимы эти улучшения при сборке небольших модулей, тестов и при использовании Xcode Previews.
Статья: https://www.pointfree.co/blog/posts/171-mitigating-swiftsyntax-build-times
Платформа: iOS
WallStreet - это приложение использует Compose Multiplatform и Kotlin Multiplatform для создания красивого и отзывчивого приложения с обоями для Android, Linux, Windows и MacOS.
WallStreet на GitHub: https://github.com/StarkDroid/WallStreet
Платформа: Android/кроссплатформа
⭐️: 23
WallStreet на GitHub: https://github.com/StarkDroid/WallStreet
Платформа: Android/кроссплатформа
⭐️: 23
❤1
•
(iOS Ru) Привязать карту: что может быть проще?•
(iOS Ru) Архитектура для кросс-функциональных команд•
(iOS En) Types of Window Scenes | SwiftUI•
(iOS En) Swift: Dead Simple Formatting (Dates, Numbers, Currency, Measurement, Time)•
(iOS En) 10 Years of Swift – A Decade in Review•
(iOS En) Better Error Messages with ErrorKit•
(iOS En) Pull To Search SwiftUI | Expandable Search Bar•
(iOS En) iOS App Testing with SwiftLens: A SwiftUI UI Testing Framework•
(And Ru) Катим в прод, не тестируя•
(And Ru) Figma + Compose. Упрощаем верстку•
(And Ru) Что хотят работодатели от Android-разработчика•
(And Ru) Топ-5 обновлений Google I/O, о которых вам нужно знать•
(And En) Now in Android: 117 – What’s new in Android development at Google I/O 2025 (part 1)•
(And En) Tech Interviews, Talks & More - My Day at KotlinConf 2025 In Copenhagen•
(And En) Testing software is awful: Here is how we can fix it•
(And En) State Hoisting: Eine Jetpack Compose Best Practice•
(Crs En) Kotlin Multiplatform (KMP) at McDonald’s•
(Dev Ru) Как избавиться от рекурсии и исправить глупую ошибку в Google•
(Dev Ru) IT-коучинг, Developer Advocate, софт-скиллы•
(Dev Ru) Эволюция карьерного роста: путь от Intern до Senior•
(Dev Ru) Вайбкодим всей командой — AI, Cursor, Claude, ChatGPT, MCP•
(Mrk Ru) Как сделать 3 миллиона загрузок на органике с ASO и попасть в Apple Best of•
(Mrk Ru) ASO в iOS. Подписки. Как сделать 100к MRR на органик прилеПрошлогодние видео:
•
(iOS Ru) Как не наломать дров с Live Activity•
(iOS Ru) Баланс между скоростью и надежностью: переиспользовать нельзя перепроверять•
(And Ru) Кодревью опенсорс проекта или как выглядят 10 лет технического долга•
(And Ru) Сколько памяти нужно для сборки? Android-разработчикам о JVM•
(And Ru) Что скрывает State в Compose•
(Crs Ru) Best practices локальной аутентификации на FlutterPlease open Telegram to view this post
VIEW IN TELEGRAM
Redroid: легковесная альтернатива стандартному эмулятору Android, работающая как Docker-контейнер
Это решение помогает разработчикам и тестировщикам глубже понимать, как их Android-приложения взаимодействуют с сетью, выявлять проблемы безопасности и оптимизировать сетевые взаимодействия без необходимости использования физических устройств или сложных настроек эмуляторов.
Статья: https://habr.com/ru/articles/915954/
Платформа: Android
Это решение помогает разработчикам и тестировщикам глубже понимать, как их Android-приложения взаимодействуют с сетью, выявлять проблемы безопасности и оптимизировать сетевые взаимодействия без необходимости использования физических устройств или сложных настроек эмуляторов.
Статья: https://habr.com/ru/articles/915954/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
MosaicGrid — это библиотека SwiftUI, которая предоставляет как горизонтальные, так и вертикальные мозаичные сетки, а также утилитарные функции для настройки размера и расположения плиток. Эти компоненты позволяют расположить несколько элементов в визуально привлекательной сетке.
MosaicGrid на GitHub: https://github.com/hainayanda/MosaicGrid
Платформа: iOS
⭐️: 26
MosaicGrid на GitHub: https://github.com/hainayanda/MosaicGrid
Платформа: iOS
⭐️: 26
Как ИИ помог создать систему видеонаблюдения на Android
Все началось с простой мысли: у многих дома лежат старые или неиспользуемые Android-смартфоны. Почему бы не превратить один из них в умного "сторожа"? Представьте: вы уходите из дома и хотите быть в курсе, если что-то изменится в комнате — откроется дверь, появится домашний питомец в запретной зоне или, не дай бог, кто-то посторонний.
Статья: https://habr.com/ru/articles/916598/
Платформа: Android
Все началось с простой мысли: у многих дома лежат старые или неиспользуемые Android-смартфоны. Почему бы не превратить один из них в умного "сторожа"? Представьте: вы уходите из дома и хотите быть в курсе, если что-то изменится в комнате — откроется дверь, появится домашний питомец в запретной зоне или, не дай бог, кто-то посторонний.
Статья: https://habr.com/ru/articles/916598/
Платформа: Android