«Давайте просто…»: системные идеи, которые звучат хорошо, но почти никогда не работают
Всегда ли я был категоричным «противником» по всем этим вопросам? Конечно, нет. Можете ли вы выбрать эти подходы, и они заработают? Да, конечно, можете. Всегда есть какой-то контекст, в котором они могут сработать, но чаще всего они просто не нужны, и есть лучший способ.
• Давайте просто сделаем возможность подключения
• Давайте просто добавим API
• Давайте абстрагируем это еще раз
• Давайте сделаем это асинхронным
• Давайте просто добавим средства контроля доступа позже
• Давайте просто синхронизируем данные
• Давайте сделаем это кроссплатформенным
• Давайте просто сбежим в нативный код
Статья: https://apptractor.ru/info/articles/davayte-prosto-sistemnye-idei.html
Платформа: разработка
Всегда ли я был категоричным «противником» по всем этим вопросам? Конечно, нет. Можете ли вы выбрать эти подходы, и они заработают? Да, конечно, можете. Всегда есть какой-то контекст, в котором они могут сработать, но чаще всего они просто не нужны, и есть лучший способ.
• Давайте просто сделаем возможность подключения
• Давайте просто добавим API
• Давайте абстрагируем это еще раз
• Давайте сделаем это асинхронным
• Давайте просто добавим средства контроля доступа позже
• Давайте просто синхронизируем данные
• Давайте сделаем это кроссплатформенным
• Давайте просто сбежим в нативный код
Статья: https://apptractor.ru/info/articles/davayte-prosto-sistemnye-idei.html
Платформа: разработка
❤1
Scratchify - это легкий и настраиваемый SDK для скретч-карт, созданный с использованием Jetpack Compose Multiplatform (поддерживает Android и iOS). Он позволяет создавать интерактивные скретч-поверхности, на которых пользователи могут соскрести верхний слой, чтобы открыть скрытый под ней контент. Идеально подходит для поощрений, скидок, сюрпризов и элементов геймификации в вашем приложении.
Scratchify на GitHub: https://github.com/gsrathoreniks/scratchify/
Платформа: Android
⭐️: 23
Scratchify на GitHub: https://github.com/gsrathoreniks/scratchify/
Платформа: Android
⭐️: 23
❤1
Хакнуть Qt: как мы запускали Picture-in-Picture в навигаторе 2ГИС
В Android-приложение 2ГИС мы добавили новый режим PiP (Picture-in-Picture, или «картинка в картинке»). С PiP наши пользователи смогут следить за маршрутом в маленьком плавающем окне на основном экране. Например, когда нужно быстро прочитать сообщение или включить подкаст и при этом сохранять фокус на навигации. Режим PiP — это не просто «приятная мелочь», а функциональность, которая подстраивается под новые требования пользователей навигатора.
В этом посте поделюсь, как решал несколько трудностей, которые встретились при разработке этой функции.
Статья: https://habr.com/ru/companies/2gis/articles/881446/
Платформа: Android
В Android-приложение 2ГИС мы добавили новый режим PiP (Picture-in-Picture, или «картинка в картинке»). С PiP наши пользователи смогут следить за маршрутом в маленьком плавающем окне на основном экране. Например, когда нужно быстро прочитать сообщение или включить подкаст и при этом сохранять фокус на навигации. Режим PiP — это не просто «приятная мелочь», а функциональность, которая подстраивается под новые требования пользователей навигатора.
В этом посте поделюсь, как решал несколько трудностей, которые встретились при разработке этой функции.
Статья: https://habr.com/ru/companies/2gis/articles/881446/
Платформа: Android
Сценарии использования ServerSocket
Если бы оба участника обмена данными были Android‑приложениями, мы могли бы использовать стандартные механизмы IPC, такие как Intent для отправки сообщений,
Именно поэтому
Статья: https://habr.com/ru/companies/tbank/articles/893890/
Платформа: Android
Если бы оба участника обмена данными были Android‑приложениями, мы могли бы использовать стандартные механизмы IPC, такие как Intent для отправки сообщений,
ContentProvider для доступа к данным или Binder для более сложных взаимодействий. Но в нашем случае одна из сторон — браузер, в котором работает веб‑приложение. Браузер не имеет доступа к этим механизмам, так как работает в своем песочном окружении и не может напрямую взаимодействовать с компонентами Android.Именно поэтому
ServerSocket становится удобным решением, позволяя Android‑приложению создать локальный сервер, к которому браузер может подключаться как к обычному веб‑серверу. Это дает возможность гибко передавать данные между приложением и сайтом, обходя ограничения стандартных средств IPC.Статья: https://habr.com/ru/companies/tbank/articles/893890/
Платформа: Android
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
ttyd - это простой инструмент командной строки для шаринга терминала через Интернет. Поддерживает macOS, Linux, FreeBSD/OpenBSD, OpenWrt и Windows.
ttyd на GitHub: https://github.com/tsl0922/ttyd
Платформа: разработка
⭐️: 8.7K
ttyd на GitHub: https://github.com/tsl0922/ttyd
Платформа: разработка
⭐️: 8.7K
👍1
Настраиваем работу с iOS-проектами в Zed
Zed — это высокопроизводительный многопользовательский редактор кода. Сегодня я хочу поделиться тем, как я настроил Zed для своего любимого языка программирования Swift. Вместо исчерпывающего обзора самого Zed (возможно, это тема для другой статьи), эта статья посвящена практическим соображениям и практическим шагам по оптимизации вашего опыта программирования на Swift с помощью Zed. Давайте же погрузимся.
Статья: https://apptractor.ru/info/articles/zed-swift.html
Платформа: iOS
Zed — это высокопроизводительный многопользовательский редактор кода. Сегодня я хочу поделиться тем, как я настроил Zed для своего любимого языка программирования Swift. Вместо исчерпывающего обзора самого Zed (возможно, это тема для другой статьи), эта статья посвящена практическим соображениям и практическим шагам по оптимизации вашего опыта программирования на Swift с помощью Zed. Давайте же погрузимся.
Статья: https://apptractor.ru/info/articles/zed-swift.html
Платформа: iOS
👍2
Forwarded from Mobile Development by AppTractor
Как эффективно работать со SwiftUI в продакшене? Внедрение в существующие проекты, тестирование, производительность, архитектура — вопросов по-прежнему много. Как сделать так, чтобы всё работало?
Новый сезон онлайн-конференции Podlodka iOS Crew (31 марта – 4 апреля) будет посвящен SwiftUI.
Глубокие доклады, технические разборы и реальные кейсы от опытных разработчиков. Сессии идут утром и вечером, можно совмещать с работой.
💡 Где печется SwiftUI — Георгий Остроброд (JigSpace, Latook Software) объяснит, как связаны SwiftUI и Metal, и покажет магию визуальных эффектов.
🛠 Как макросы изменили навигацию — Михаил Рубанов (Dodo Engineering) покажет, как макросы упрощают код, помогают объединять SwiftUI и UIKit и создают удобную навигацию, которую легко тестировать.
🏗 Архитектурные паттерны в SwiftUI — Борис Бугор (Aiphoria.AI) сравнит MVVM, Redux и TCA, чтобы выбрать лучший подход к управлению состоянием.
🔄 Из SwiftUI в UIKit и обратно — Дмитрий Куркин (Xymatic) разберёт грамотную интеграцию этих фреймворков без хаков.
Конференция сосредоточена на практической пользе – всё, что узнаете, можно сразу применять в работе.
👉 Билеты и подробности: https://podlodka.io/ioscrew 🎟
А наш промокод apptractor15 дает скидку в 500р🥳
Новый сезон онлайн-конференции Podlodka iOS Crew (31 марта – 4 апреля) будет посвящен SwiftUI.
Глубокие доклады, технические разборы и реальные кейсы от опытных разработчиков. Сессии идут утром и вечером, можно совмещать с работой.
💡 Где печется SwiftUI — Георгий Остроброд (JigSpace, Latook Software) объяснит, как связаны SwiftUI и Metal, и покажет магию визуальных эффектов.
🛠 Как макросы изменили навигацию — Михаил Рубанов (Dodo Engineering) покажет, как макросы упрощают код, помогают объединять SwiftUI и UIKit и создают удобную навигацию, которую легко тестировать.
🏗 Архитектурные паттерны в SwiftUI — Борис Бугор (Aiphoria.AI) сравнит MVVM, Redux и TCA, чтобы выбрать лучший подход к управлению состоянием.
🔄 Из SwiftUI в UIKit и обратно — Дмитрий Куркин (Xymatic) разберёт грамотную интеграцию этих фреймворков без хаков.
Конференция сосредоточена на практической пользе – всё, что узнаете, можно сразу применять в работе.
👉 Билеты и подробности: https://podlodka.io/ioscrew 🎟
А наш промокод apptractor15 дает скидку в 500р🥳
Step By Step - это геймифицированное приложение-счетчик шагов, объединяющее фитнес с историей. Оно преобразует реальные шаги в очки энергии, которые позволяют развивать сюжет, мотивируя пользователей оставаться активными, погружаясь в интерактивные текстовые RPG-приключения.
Step By Step на GitHub: https://github.com/Great-Visions-Code/Step-by-Step
Платформа: iOS
⭐️: 7
Step By Step на GitHub: https://github.com/Great-Visions-Code/Step-by-Step
Платформа: iOS
⭐️: 7
Расследуем дело асинхронного программирования с Леонидом Каневским
Количество гайдов по Modern Concurrency в Swift все увеличивается, тема актуальна для разработчиков любого уровня. Я предлагаю вам ламповую экскурсию в историю асинхронного программирования. Можно относиться к этому как к расследованию нераскрытого дела. Эта статья не станет настольным справочником, но будет интересным обзором истоков концепции. Заваривайте чай или кофе, устраивайтесь поудобнее и давайте начнем!
Статья: https://habr.com/ru/companies/clevertec/articles/892348/
Платформа: iOS
Количество гайдов по Modern Concurrency в Swift все увеличивается, тема актуальна для разработчиков любого уровня. Я предлагаю вам ламповую экскурсию в историю асинхронного программирования. Можно относиться к этому как к расследованию нераскрытого дела. Эта статья не станет настольным справочником, но будет интересным обзором истоков концепции. Заваривайте чай или кофе, устраивайтесь поудобнее и давайте начнем!
Статья: https://habr.com/ru/companies/clevertec/articles/892348/
Платформа: iOS
Как мы следим за качеством unit-тестов
Во многих крупных компаниях написание unit‑тестов является ключевым этапом при разработке нового функционала. Тесты позволяют выявлять ошибки на ранних стадиях, служат своего рода документацией, помогая другим разработчикам быстрее понять, как должен работать тестируемый компонент системы. Также, в отдельных случаях, тесты помогают выявить и минимизировать зависимости между частями кода, что упрощает его поддержку и развитие.
Но для того чтобы получить максимальную пользу от тестов, важно писать их правильно. В этой статье мы обсудим best practices, применяемые командой СБЕРа для написания тестов, и рассмотрим подходы для повышения их эффективности.
Статья: https://habr.com/ru/companies/sberbank/articles/893914/
Платформа: Android/тестирование
Во многих крупных компаниях написание unit‑тестов является ключевым этапом при разработке нового функционала. Тесты позволяют выявлять ошибки на ранних стадиях, служат своего рода документацией, помогая другим разработчикам быстрее понять, как должен работать тестируемый компонент системы. Также, в отдельных случаях, тесты помогают выявить и минимизировать зависимости между частями кода, что упрощает его поддержку и развитие.
Но для того чтобы получить максимальную пользу от тестов, важно писать их правильно. В этой статье мы обсудим best practices, применяемые командой СБЕРа для написания тестов, и рассмотрим подходы для повышения их эффективности.
Статья: https://habr.com/ru/companies/sberbank/articles/893914/
Платформа: Android/тестирование
Как 40 строк кода ускорили End to End тесты на iOS более чем на 50%
С учетом того, что у нас в iOS около 30 тысяч юнит-тестов и почти 1 тысяча сквозных тестов (и это число растет), ускорение нашего E2E-пакета стало первоочередной задачей, поскольку на его выполнение уходит значительное количество времени. В этом посте мы расскажем о том, как мы ускорили наши тесты на 50% с помощью небольшого, целенаправленного изменения.
Статья: https://apptractor.ru/info/articles/40-end-to-end-50.html
Платформа: iOS/тестирование
С учетом того, что у нас в iOS около 30 тысяч юнит-тестов и почти 1 тысяча сквозных тестов (и это число растет), ускорение нашего E2E-пакета стало первоочередной задачей, поскольку на его выполнение уходит значительное количество времени. В этом посте мы расскажем о том, как мы ускорили наши тесты на 50% с помощью небольшого, целенаправленного изменения.
Статья: https://apptractor.ru/info/articles/40-end-to-end-50.html
Платформа: iOS/тестирование
👍2
MCP Kotlin SDK - Kotlin-реализация Model Context Protocol (MCP), предоставляющая клиентские и серверные возможности для интеграции с LLM.
Model Context Protocol дает возможность приложениям предоставлять контекст для LLM стандартизированным способом, отделяя проблемы предоставления контекста от фактического взаимодействия с LLM. Этот Kotlin SDK реализует полную спецификацию MCP, что позволяет легко:
• Создавать MCP-клиентов, которые могут подключаться к любому MCP-серверу
• Создавать MCP-серверы, предоставляющие ресурсы, промпты и инструменты.
• Использовать стандартные транспорты, такие как stdio, SSE и WebSocket
• Обрабатывать все сообщения протокола MCP и события жизненного цикла
MCP Kotlin SDK на GitHub: https://github.com/modelcontextprotocol/kotlin-sdk
Платформа: Android
⭐️: 359
Model Context Protocol дает возможность приложениям предоставлять контекст для LLM стандартизированным способом, отделяя проблемы предоставления контекста от фактического взаимодействия с LLM. Этот Kotlin SDK реализует полную спецификацию MCP, что позволяет легко:
• Создавать MCP-клиентов, которые могут подключаться к любому MCP-серверу
• Создавать MCP-серверы, предоставляющие ресурсы, промпты и инструменты.
• Использовать стандартные транспорты, такие как stdio, SSE и WebSocket
• Обрабатывать все сообщения протокола MCP и события жизненного цикла
MCP Kotlin SDK на GitHub: https://github.com/modelcontextprotocol/kotlin-sdk
Платформа: Android
⭐️: 359
🔥1
Как работать с Custom Layout в Jetpack Compose
Сегодня я расскажу про кастомные Layout в Jetpack Compose. Они пригодятся, например, если вы разрабатываете свою дизайн-систему или хотите использовать сложные лейауты, которые есть во View-системах, но ещё не появились в вашей версии Jetpack Compose.
Если вы привыкли к кастомным View, то работа с кастомными Layout в Compose может показаться немного непривычной, но на самом деле, как мы увидим далее — там больше общего, чем кажется на первый взгляд.
Статья: https://habr.com/ru/companies/avito/articles/894432/
Платформа: Android
Сегодня я расскажу про кастомные Layout в Jetpack Compose. Они пригодятся, например, если вы разрабатываете свою дизайн-систему или хотите использовать сложные лейауты, которые есть во View-системах, но ещё не появились в вашей версии Jetpack Compose.
Если вы привыкли к кастомным View, то работа с кастомными Layout в Compose может показаться немного непривычной, но на самом деле, как мы увидим далее — там больше общего, чем кажется на первый взгляд.
Статья: https://habr.com/ru/companies/avito/articles/894432/
Платформа: Android
Как я «взломал» популярное приложение и добыл корпоративный токен OpenAI
Если OpenAI-токен попадет в руки злоумышленника, это может привести к серьезным последствиям: несанкционированный доступ к платным API, утечка конфиденциальных данных, подделка запросов от имени компании и внезапные финансовые потери из-за неконтролируемого расхода средств. (цитата chatGPT).
Статья: https://habr.com/ru/articles/894412/
Платформа: разработка/безопасность
Если OpenAI-токен попадет в руки злоумышленника, это может привести к серьезным последствиям: несанкционированный доступ к платным API, утечка конфиденциальных данных, подделка запросов от имени компании и внезапные финансовые потери из-за неконтролируемого расхода средств. (цитата chatGPT).
Статья: https://habr.com/ru/articles/894412/
Платформа: разработка/безопасность
Топ-7 утечек памяти Android и как их избежать
• Статический контекст: классическая ловушка
• Внутренние классы и лямбды: молчаливые хранители
• Зомби потоки и корутины
• Забытые слушатели: фантомные наблюдатели
• Спагетти из синглтонов
• View вампиры: UI-компоненты, которые не хотят умирать
• Ошибки с растровыми изображениями и монстры состояний
+ Ваш набор инструментов для борьбы с утечками 2025
Статья: https://apptractor.ru/info/articles/top-7-utechek-pamyati-android-i-kak-ih-izbezhat.html
Платформа: Android
• Статический контекст: классическая ловушка
• Внутренние классы и лямбды: молчаливые хранители
• Зомби потоки и корутины
• Забытые слушатели: фантомные наблюдатели
• Спагетти из синглтонов
• View вампиры: UI-компоненты, которые не хотят умирать
• Ошибки с растровыми изображениями и монстры состояний
+ Ваш набор инструментов для борьбы с утечками 2025
Статья: https://apptractor.ru/info/articles/top-7-utechek-pamyati-android-i-kak-ih-izbezhat.html
Платформа: Android
Blocks - крошечный клон Minecraft на C и GLSL с использованием нового SDL3 GPU API.
Фичи:
• Процедурная генерация мира
• Параллельная загрузка чанков
• Блоки и растения
• Прозрачность (ограниченная)
• Отложенный рендеринг
• Направленные тени
• SSAO
• Затенение глубины воды
• Постоянные миры
Blocks на GitHub: https://github.com/jsoulier/blocks
Платформа: разработка
⭐️: 105
Фичи:
• Процедурная генерация мира
• Параллельная загрузка чанков
• Блоки и растения
• Прозрачность (ограниченная)
• Отложенный рендеринг
• Направленные тени
• SSAO
• Затенение глубины воды
• Постоянные миры
Blocks на GitHub: https://github.com/jsoulier/blocks
Платформа: разработка
⭐️: 105
❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Mocking Star - это мощный инструмент для имитации запросов, предназначенный для упрощения мокирования http-запросов, отладки работы с сетьюи использования UI-тестов для ваших приложений.
Ключевые особенности:
• Мокирвоание запросов: легко подделывайте запросы и тестируйте различные случаи с помощью сценариев
• Модификация запросов: модифицируйте перехваченные запросы, чтобы протестировать различные граничные случаи, что позволит вам оценить производительность приложения в различных условиях
• Поддержка отладки: используйте Mocking Star для отладки сетевых запросов на вашем mac
• Тестирование пользовательского интерфейса: интегрируйте Mocking Star в тесты пользовательского интерфейса, создавая надежную и контролируемую среду тестирования для проверки функциональности вашего мобильного приложения
• Плагины: пишите собственные плагины и расширяйте функциональность
• Клиенты для iOS и Android приложений
Mocking Star на GitHub: https://github.com/Trendyol/mockingstar
Платформа: тестирование
⭐️: 157
Ключевые особенности:
• Мокирвоание запросов: легко подделывайте запросы и тестируйте различные случаи с помощью сценариев
• Модификация запросов: модифицируйте перехваченные запросы, чтобы протестировать различные граничные случаи, что позволит вам оценить производительность приложения в различных условиях
• Поддержка отладки: используйте Mocking Star для отладки сетевых запросов на вашем mac
• Тестирование пользовательского интерфейса: интегрируйте Mocking Star в тесты пользовательского интерфейса, создавая надежную и контролируемую среду тестирования для проверки функциональности вашего мобильного приложения
• Плагины: пишите собственные плагины и расширяйте функциональность
• Клиенты для iOS и Android приложений
Mocking Star на GitHub: https://github.com/Trendyol/mockingstar
Платформа: тестирование
⭐️: 157
Видео и подкасты за неделю на @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Что было год назад:
•
•
•
•
• Осознанный подход к метрикам
•
(iOS Ru) Исследуем мир фото и видео редакторов•
(iOS Ru) Найди и исправь ошибки в коде — Задачи с собеседования•
(iOS Ru) Запускаем приложения на своем iOS-симуляторе•
(iOS Ru) Осторожно, Combine!•
(iOS Ru) Позаботимся о памяти при использовании value-типов•
(iOS Ru) Swift – больше, чем язык для iOS•
(iOS En) Videos from Swift Heroes 2024•
(iOS En) Staggered Animated View Using SwiftUI •
(iOS En) Advanced SwiftUI Animations - PhaseAnimator•
(iOS En) A case for Custom Bindings in SwiftUI: Essential Tips and Tricks•
(iOS En) VoiceMemos Waveform Audio Scrubber Using SwiftUI - Waveform Visualization•
(And Ru) Почему вам стоит включить Gradle Configuration Cache•
(And Ru) Интеграция GeckoView в Dynamic Feature•
(And Ru) Последнее слово в Android-навигации•
(And En) Introduction to the SDK Runtime•
(And En) How to Refactor Legacy Android Code With a Clear Step-By-Step Approach•
(And En) Applying the Observer Pattern in Kotlin•
(And En) Validating the chaos of RSS feeds with JetBrains’ Junie & some domain modeling sorcery•
(Crs Ru) Kotlin не для Android•
(Crs Ru) Как мы делали суперапп «Дилер онлайн», и что из этого получилось•
(Crs Ru) Совместная работа Kotlin/Native GC и ARC в iOS•
(Dev Ru) Правовой статус кодаЧто было год назад:
•
(Crs Ru) Flutter Dev Podcast #45: Собеседования на позицию Flutter-разработчика•
(Dev Ru) Пишем рекомендательную систему музыки на Java•
(Dev Ru) Задача из Моего Собеседования в Amazon•
(Dev Ru) Ада Лавлейс и программирование• Осознанный подход к метрикам
Kotlin и Jetpack Compose: портируем DOOM на смарт-часы
Я взялся за этот проект для Android Wear просто потому, что это интересно, и не так много людей видели, как на часах работает полноценная 3D‑игра. Однако я также хочу, чтобы проект был доступен и для «стандартного» Android. Таким образом, читатели, у которых нет смарт‑часов, смогут наслаждаться тем же кодом на своих смартфонах.
Статья: https://habr.com/ru/companies/otus/articles/894514/
Платформа: Android
Я взялся за этот проект для Android Wear просто потому, что это интересно, и не так много людей видели, как на часах работает полноценная 3D‑игра. Однако я также хочу, чтобы проект был доступен и для «стандартного» Android. Таким образом, читатели, у которых нет смарт‑часов, смогут наслаждаться тем же кодом на своих смартфонах.
Статья: https://habr.com/ru/companies/otus/articles/894514/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
AnimationSequence - это мощная, но интуитивно понятная библиотека Jetpack Compose (поддерживает Android, iOS, Desktop и Web), разработанная для упрощения последовательной анимации в ваших приложениях для Android. С минимальными усилиями создавайте элегантные, отзывчивые и иерархические анимации, улучшая пользовательский опыт и оживляя пользовательский интерфейс.
AnimationSequence на GitHub: https://github.com/pauloaapereira/AnimatedSequence
Платформа: Android
⭐️: 48
AnimationSequence на GitHub: https://github.com/pauloaapereira/AnimatedSequence
Платформа: Android
⭐️: 48
👍1
SwiftUI. Навигация по строке в разделяемом координаторе
Небольшие ухищрения позволяют существенно прокачать навигацию в приложении, и, что самое главное, облегчить себе жизнь. В особенности, если дизайнер отличается необузданной фантазией.
Статья: https://habr.com/ru/articles/894936/
Платформа: iOS
Небольшие ухищрения позволяют существенно прокачать навигацию в приложении, и, что самое главное, облегчить себе жизнь. В особенности, если дизайнер отличается необузданной фантазией.
Статья: https://habr.com/ru/articles/894936/
Платформа: iOS