Натив, Flutter или KMP — выбираем мобильный фреймворк для e-commerce
В 2025 году уже недостаточно просто выпустить приложение — оно должно быстро адаптироваться к изменениям рынка, удобно и эффективно интегрироваться с новыми технологиями и обеспечивать хороший пользовательский опыт. Но что лучше выбрать: нативную разработку, кроссплатформу, или Kotlin Multiplatform?
Александр Кияйкин, CTO компании по разработке мобильных приложений CleverPumpkin, разбирает эти три подхода и сравнивает плюсы и минусы каждой технологии.
Читать далее
Читать: https://habr.com/ru/companies/cleverpumpkin/articles/945268/
@a_cup_of_java | Другие наши каналы
В 2025 году уже недостаточно просто выпустить приложение — оно должно быстро адаптироваться к изменениям рынка, удобно и эффективно интегрироваться с новыми технологиями и обеспечивать хороший пользовательский опыт. Но что лучше выбрать: нативную разработку, кроссплатформу, или Kotlin Multiplatform?
Александр Кияйкин, CTO компании по разработке мобильных приложений CleverPumpkin, разбирает эти три подхода и сравнивает плюсы и минусы каждой технологии.
Читать далее
Читать: https://habr.com/ru/companies/cleverpumpkin/articles/945268/
@a_cup_of_java | Другие наши каналы
👎9👍3
Apple
Apple представила iPhone 17 Air, 17 Pro с новым дизайном и AirPods 3 с пульсометром
Apple представила iPhone 17, ультратонкий 17 Air, 17 Pro с редизайном и AirPods Pro 3 с пульсометром и ИИ-фишками iOS 26
— Читать дальше «Apple представила iPhone 17 Air, 17 Pro с новым дизайном и AirPods 3 с пульсометром»
Apple представила iPhone 17 Air, 17 Pro с новым дизайном и AirPods 3 с пульсометром
Apple представила iPhone 17, ультратонкий 17 Air, 17 Pro с редизайном и AirPods Pro 3 с пульсометром и ИИ-фишками iOS 26
— Читать дальше «Apple представила iPhone 17 Air, 17 Pro с новым дизайном и AirPods 3 с пульсометром»
zenplan: как я сделал себе карманного помощника для целей и задач
Привет, Хабр! 👋
Меня зовут Денис, я продуктовый аналитик, и как многие из нас, я постоянно разрываюсь между проектами, встречами, идеями и личными задачами. Список дел разрастается быстрее, чем успеваешь их выполнять, а заметки и цели теряются между Google Docs, Notion и стикерами на рабочем столе.
В какой-то момент я понял, что трачу больше времени на организацию задач, чем на сами задачи. И решил написать себе карманного помощника, который соберёт всё в одном месте. Так появился мой бот zen_plan_bot.
Читать далее
Читать: https://habr.com/ru/articles/945412/
@a_cup_of_java | Другие наши каналы
Привет, Хабр! 👋
Меня зовут Денис, я продуктовый аналитик, и как многие из нас, я постоянно разрываюсь между проектами, встречами, идеями и личными задачами. Список дел разрастается быстрее, чем успеваешь их выполнять, а заметки и цели теряются между Google Docs, Notion и стикерами на рабочем столе.
В какой-то момент я понял, что трачу больше времени на организацию задач, чем на сами задачи. И решил написать себе карманного помощника, который соберёт всё в одном месте. Так появился мой бот zen_plan_bot.
Читать далее
Читать: https://habr.com/ru/articles/945412/
@a_cup_of_java | Другие наши каналы
❤3
Compose + Koin + Jetpack Navigation: что мы поняли за 2 года
Привет, Хабр! Меня зовут Арсений Шпилевой, и я Android-разработчик в core-команде WB Partners, Wildberries & Russ. Сегодня поделюсь нашим опытом развития архитектуры приложения на Jetpack Compose: с какими ограничениями мы столкнулись, как укротили навигацию от Google и какими молитвами всё это подружили с Koin. Главным образом речь пойдёт про навигацию на уровне UI, без data- и domain-слоёв.
Читать далее
Читать: https://habr.com/ru/companies/wildberries/articles/939526/
@a_cup_of_java | Другие наши каналы
Привет, Хабр! Меня зовут Арсений Шпилевой, и я Android-разработчик в core-команде WB Partners, Wildberries & Russ. Сегодня поделюсь нашим опытом развития архитектуры приложения на Jetpack Compose: с какими ограничениями мы столкнулись, как укротили навигацию от Google и какими молитвами всё это подружили с Koin. Главным образом речь пойдёт про навигацию на уровне UI, без data- и domain-слоёв.
Читать далее
Читать: https://habr.com/ru/companies/wildberries/articles/939526/
@a_cup_of_java | Другие наши каналы
Как мы создали курс по разработке мобильных игр, в котором Java оживает, а наставник становится другом
В этом году мы запустили новую образовательную программу «Разработка мобильных игр» для школьников 8–9 классов — и она получилась по-настоящему особенной. Это не просто очередной курс по программированию или геймдеву: мы объединили код, персонажей, физику и истории в одно целое, сделав обучение настоящим приключением. Вместо сухих лекций, ребята начинают стажировку в виртуальной гейм-студии, где их сопровождает наставник Максим. Он не просто рассказывает про программирование, а делится эмоциями, личными историями и шутками про баги. Объясняет сложные вещи «на пальцах», вместе с учениками разбирает задачки и отвечает на вопросы в формате встреч (лонгридов) с примерами кода и иллюстрациями. Такая история «по ту сторону экрана» сильно вовлекает учеников: сторителлинг помогает им лучше усваивать материал и понимать, зачем всё это нужно.
Читать далее
Читать: https://habr.com/ru/companies/samsung/articles/946020/
@a_cup_of_java | Другие наши каналы
В этом году мы запустили новую образовательную программу «Разработка мобильных игр» для школьников 8–9 классов — и она получилась по-настоящему особенной. Это не просто очередной курс по программированию или геймдеву: мы объединили код, персонажей, физику и истории в одно целое, сделав обучение настоящим приключением. Вместо сухих лекций, ребята начинают стажировку в виртуальной гейм-студии, где их сопровождает наставник Максим. Он не просто рассказывает про программирование, а делится эмоциями, личными историями и шутками про баги. Объясняет сложные вещи «на пальцах», вместе с учениками разбирает задачки и отвечает на вопросы в формате встреч (лонгридов) с примерами кода и иллюстрациями. Такая история «по ту сторону экрана» сильно вовлекает учеников: сторителлинг помогает им лучше усваивать материал и понимать, зачем всё это нужно.
Читать далее
Читать: https://habr.com/ru/companies/samsung/articles/946020/
@a_cup_of_java | Другие наши каналы
Мессенджер
Национальный мессенджер Max: что умеет и чего от него ждать
Разбираем вместе с экспертами, как работает Max: функции, интеграции с Госуслугами, вопросы безопасности и перспективы развития сервиса.
— Читать дальше «Национальный мессенджер Max: что умеет и чего от него ждать»
Национальный мессенджер Max: что умеет и чего от него ждать
Разбираем вместе с экспертами, как работает Max: функции, интеграции с Госуслугами, вопросы безопасности и перспективы развития сервиса.
— Читать дальше «Национальный мессенджер Max: что умеет и чего от него ждать»
👎24👍2🌭2🍌1💊1
Swift Concurrency и CoreBluetooth: как построить современный BLE-сервис
На случай проблем с сетью в Ситидрайве есть оффлайн-сценарий — управление дверьми машины через Bluetooth. Недавно мы с командой обновили этот механизм и значительно улучшили интеграцию различных модулей телеметрии.
Я взял на себя часть по iOS и попробовал применить новый
Читать далее
Читать: https://habr.com/ru/companies/citydrive/articles/946328/
@a_cup_of_java | Другие наши каналы
На случай проблем с сетью в Ситидрайве есть оффлайн-сценарий — управление дверьми машины через Bluetooth. Недавно мы с командой обновили этот механизм и значительно улучшили интеграцию различных модулей телеметрии.
Я взял на себя часть по iOS и попробовал применить новый
Swift Concurrency поверх старого CoreBluetooth. В этой статье расскажу, какие подводные камни вылезли при совмещении structured concurrency и callback-ориентированного API, как их обойти и на что стоит обратить внимание, если вы тоже решите «прикрутить» современные async/await к старому API.Читать далее
Читать: https://habr.com/ru/companies/citydrive/articles/946328/
@a_cup_of_java | Другие наши каналы
👍5
Swift на Android: создаём библиотеку
Привет, хабр!
Поддержка Android в Swift 6 и swift-android-sdk от finagolfin это настоящий прорыв, который наконец-то позволил мне выпустить JNIKit, который я разрабатывал для проекта SwifDroid ещё со времён Swift 5. Теперь мы можем просто
Читать далее
Читать: https://habr.com/ru/articles/946224/
@a_cup_of_java | Другие наши каналы
Привет, хабр!
Поддержка Android в Swift 6 и swift-android-sdk от finagolfin это настоящий прорыв, который наконец-то позволил мне выпустить JNIKit, который я разрабатывал для проекта SwifDroid ещё со времён Swift 5. Теперь мы можем просто
import Android, вместо того чтобы возиться с ручным импортом NDK header'ов, а сборка конечных бинарников теперь обеспечивается не отдельным тулчейном, а минималистичной SDK, которую в скором времени сделают официальной на Swift.org.Читать далее
Читать: https://habr.com/ru/articles/946224/
@a_cup_of_java | Другие наши каналы
🤯5
Swift на Android: создаём библиотеку
Привет, хабр!
Поддержка Android в Swift 6 и swift-android-sdk от finagolfin это настоящий прорыв, который наконец-то позволил мне выпустить JNIKit, который я разрабатывал для проекта SwifDroid ещё со времён Swift 5. Теперь мы можем просто
Читать далее
Читать: https://habr.com/ru/articles/946224/
@a_cup_of_java | Другие наши каналы
Привет, хабр!
Поддержка Android в Swift 6 и swift-android-sdk от finagolfin это настоящий прорыв, который наконец-то позволил мне выпустить JNIKit, который я разрабатывал для проекта SwifDroid ещё со времён Swift 5. Теперь мы можем просто
import Android, вместо того чтобы возиться с ручным импортом NDK header'ов, а сборка конечных бинарников теперь обеспечивается не отдельным тулчейном, а минималистичной SDK, которую в скором времени сделают официальной на Swift.org.Читать далее
Читать: https://habr.com/ru/articles/946224/
@a_cup_of_java | Другие наши каналы
Как мы сократили время доставки кода в 40 раз, или Непрерывная поставка в действии
Как сократить доставку кода в 40 раз: опыт CI/CD
Читать: https://tprg.ru/Fhe4
@mobi_dev | Другие наши каналы
Как сократить доставку кода в 40 раз: опыт CI/CD
Читать: https://tprg.ru/Fhe4
@mobi_dev | Другие наши каналы
🌚4
Станислав Петров: «Ключевые отличия РЕД ОС М от Android – вовсе не в интерфейсе»
Мобильную операционную систему РЕД ОС М устанавливают на все большее количество смартфонов и планшетов, а уже в 2026 году ожидается, что на РЕД ОС М будут работать десятки тысяч производимых в Подмосковье мобильных девайсов Passion. И, разумеется, все хотят задать разработчикам самые неудобные и каверзные вопросы. О том, как развивается ОС, чем она отличается от “перекрашенного Android”, а также о перспективах российских смартфонов и сравнении с продуктами Google и других вендоров рассказывает Станислав Петров, руководитель группы разработки мобильной ОС компании РЕД СОФТ.
Узнать, в чем отличия РЕД ОС М
Читать: https://habr.com/ru/companies/redsoft/articles/946516/
@a_cup_of_java | Другие наши каналы
Мобильную операционную систему РЕД ОС М устанавливают на все большее количество смартфонов и планшетов, а уже в 2026 году ожидается, что на РЕД ОС М будут работать десятки тысяч производимых в Подмосковье мобильных девайсов Passion. И, разумеется, все хотят задать разработчикам самые неудобные и каверзные вопросы. О том, как развивается ОС, чем она отличается от “перекрашенного Android”, а также о перспективах российских смартфонов и сравнении с продуктами Google и других вендоров рассказывает Станислав Петров, руководитель группы разработки мобильной ОС компании РЕД СОФТ.
Узнать, в чем отличия РЕД ОС М
Читать: https://habr.com/ru/companies/redsoft/articles/946516/
@a_cup_of_java | Другие наши каналы
👎14👍1
Generic'и и protocol'ы в Swift
Привет, Хабр! В прошлых статьях мы говорили про ARC и управление памятью в Swift, но обошли стороной ещё одну сильную сторону языка. Речь идёт о generic'ах и протоколах - именно они делают Swift таким чистым и мощным. В этой статье мы разберёмся, как они работают и почему без них невозможно представить современный Swift.
Читать далее
Читать: https://habr.com/ru/articles/946600/
@a_cup_of_java | Другие наши каналы
Привет, Хабр! В прошлых статьях мы говорили про ARC и управление памятью в Swift, но обошли стороной ещё одну сильную сторону языка. Речь идёт о generic'ах и протоколах - именно они делают Swift таким чистым и мощным. В этой статье мы разберёмся, как они работают и почему без них невозможно представить современный Swift.
Читать далее
Читать: https://habr.com/ru/articles/946600/
@a_cup_of_java | Другие наши каналы
👍4
Не одним CRDT едины или как решать конфликты в local-first приложениях
Сегодня поговорим про реализации решения конфликтов подходов local / offline-first – это когда ваше приложение позволяет пользователям работать полностью или частично оффлайн, а когда они выходят в сеть, синхронизировать все их изменения.
Примеры таких приложений: Notion-like редакторы, Figma-like вайтборды или Linear-like таск менеджеры.
Основная идея – коллаборация, а коллаборация несет за собой конфликты, разберем очень наглядный пример:
Читать далее
Читать: https://habr.com/ru/articles/946722/
@a_cup_of_java | Другие наши каналы
Сегодня поговорим про реализации решения конфликтов подходов local / offline-first – это когда ваше приложение позволяет пользователям работать полностью или частично оффлайн, а когда они выходят в сеть, синхронизировать все их изменения.
Примеры таких приложений: Notion-like редакторы, Figma-like вайтборды или Linear-like таск менеджеры.
Основная идея – коллаборация, а коллаборация несет за собой конфликты, разберем очень наглядный пример:
Читать далее
Читать: https://habr.com/ru/articles/946722/
@a_cup_of_java | Другие наши каналы
❤3🗿1
Разработка Pipes Counting: от идеи до публикации
Pipes Counting — технический разбор (мобильная разработка + ML)
Приветствуем вас, дорогие читатели! В этой статье мы, ученики 10 класса из школы "Летово", хотим поделиться своим опытом разработки мобильного приложения PipesCounting, созданного для автоматизированного подсчета труб в пачке. За 6 месяцев мы прошли путь от идеи и до публикации приложения, в том числе сбор и расширение датасета, обучение моделей и сборки приложения. Здесь мы хотим поделиться нашим опытом и трудностями с которыми мы столкнулись, чтобы облегчить процесс для тех, кто будет заниматься чем-то похожим, рассказать о возможных подходах и предупредить о сложностях.
С приложением PipesCounting мы заняли второе место в престижном международном конкурсе AI Challenge в категории “Металлургия”, а также постели с ним международную конференцию AI Journey.
Читать далее
Читать: https://habr.com/ru/articles/946758/
@a_cup_of_java | Другие наши каналы
Pipes Counting — технический разбор (мобильная разработка + ML)
Приветствуем вас, дорогие читатели! В этой статье мы, ученики 10 класса из школы "Летово", хотим поделиться своим опытом разработки мобильного приложения PipesCounting, созданного для автоматизированного подсчета труб в пачке. За 6 месяцев мы прошли путь от идеи и до публикации приложения, в том числе сбор и расширение датасета, обучение моделей и сборки приложения. Здесь мы хотим поделиться нашим опытом и трудностями с которыми мы столкнулись, чтобы облегчить процесс для тех, кто будет заниматься чем-то похожим, рассказать о возможных подходах и предупредить о сложностях.
С приложением PipesCounting мы заняли второе место в престижном международном конкурсе AI Challenge в категории “Металлургия”, а также постели с ним международную конференцию AI Journey.
Читать далее
Читать: https://habr.com/ru/articles/946758/
@a_cup_of_java | Другие наши каналы
👎4👍1
Сделай удобно: подборка UI/UX-кейсов из цифровых и нецифровых продуктов (#21)
Продолжаю изучать различные UI/UX/CX кейсы в мобильных приложениях, веб-сайтах и в реальном мире. Дизайнерам и менеджерам по продукту, чтобы вдохновиться и добавить в заметки.
Под катом: Revolut, Intsagram, Matreshka.
Читать далее
Читать: https://habr.com/ru/articles/946798/
@a_cup_of_java | Другие наши каналы
Продолжаю изучать различные UI/UX/CX кейсы в мобильных приложениях, веб-сайтах и в реальном мире. Дизайнерам и менеджерам по продукту, чтобы вдохновиться и добавить в заметки.
Под катом: Revolut, Intsagram, Matreshka.
Читать далее
Читать: https://habr.com/ru/articles/946798/
@a_cup_of_java | Другие наши каналы
Мобильная разработка за неделю #602 (8 — 14 сентября)
В этом выпуске построение современного BLE-сервиса и повышение производительности за счет лучшего сокращения ресурсов, Swift на Android и эволюция презентационных паттернов, MAX без оболочки, эмоциональное решение проблем, трудные уроки инди-хакинга и многое другое. Заходите!
Читать далее
Читать: https://habr.com/ru/articles/946820/
@a_cup_of_java | Другие наши каналы
В этом выпуске построение современного BLE-сервиса и повышение производительности за счет лучшего сокращения ресурсов, Swift на Android и эволюция презентационных паттернов, MAX без оболочки, эмоциональное решение проблем, трудные уроки инди-хакинга и многое другое. Заходите!
Читать далее
Читать: https://habr.com/ru/articles/946820/
@a_cup_of_java | Другие наши каналы
👍1
WEAR модуль AndroidAPS, доработка и отладка связи при зависании
Используемые устройства - телефон Samsung Galaxy S8+ (SM-G955FD), часы Galaxy Watch 5 Pro (P0ED)
Я столкнулся с проблемой зависания данных на часах, что стало проблемой, особенно когда речь идет о занятии сопртом. Мне нравится велосипед и во время тренировки удобно отсматривать показатели только одной рукой и управление спортивным режимом (в этом форке он нами так же добавлен в основное приложение) желательно только на часах.
Дополнено включение и настройка спортивного режима не только в app, но и в wear, а так же была исследована проблема залипания данных (когда на часы данные о глюкозе приходят не вместе с обновлением на телефоне, а гораздо позже или переодически например всего несколько раз в час, не стабильно). При этом сейчас данные приходят как правило быстрее чем за 7 минут (на часы). Если быть точным - обновление и показ происходит не позже 7 минут.
Ниже показываю что происходит внутри программы, какие события удалось отследить в логах (некоторые логи были добавлены мной) и как диагностировал проблему.
Читать далее
Читать: https://habr.com/ru/articles/946832/
@a_cup_of_java | Другие наши каналы
Используемые устройства - телефон Samsung Galaxy S8+ (SM-G955FD), часы Galaxy Watch 5 Pro (P0ED)
Я столкнулся с проблемой зависания данных на часах, что стало проблемой, особенно когда речь идет о занятии сопртом. Мне нравится велосипед и во время тренировки удобно отсматривать показатели только одной рукой и управление спортивным режимом (в этом форке он нами так же добавлен в основное приложение) желательно только на часах.
Дополнено включение и настройка спортивного режима не только в app, но и в wear, а так же была исследована проблема залипания данных (когда на часы данные о глюкозе приходят не вместе с обновлением на телефоне, а гораздо позже или переодически например всего несколько раз в час, не стабильно). При этом сейчас данные приходят как правило быстрее чем за 7 минут (на часы). Если быть точным - обновление и показ происходит не позже 7 минут.
Ниже показываю что происходит внутри программы, какие события удалось отследить в логах (некоторые логи были добавлены мной) и как диагностировал проблему.
Читать далее
Читать: https://habr.com/ru/articles/946832/
@a_cup_of_java | Другие наши каналы
👎1
Делаем Jetpack Navigation 3 удобнее
Jetpack Navigation 3 дает полный контроль над навигацией через NavBackStack, но прямая работа с ним превращается в написание шаблонного кода и усложняет использование из ViewModel. В статье предлагается решение этих проблемы, добавляя привычный API с командами
Если вы работаете с Navigation 3 или планируете на неё переходить — эта статья поможет сделать процесс разработки приятнее.
Читать далее
Читать: https://habr.com/ru/articles/946878/
@a_cup_of_java | Другие наши каналы
Jetpack Navigation 3 дает полный контроль над навигацией через NavBackStack, но прямая работа с ним превращается в написание шаблонного кода и усложняет использование из ViewModel. В статье предлагается решение этих проблемы, добавляя привычный API с командами
push(), pop(), replace().Если вы работаете с Navigation 3 или планируете на неё переходить — эта статья поможет сделать процесс разработки приятнее.
Читать далее
Читать: https://habr.com/ru/articles/946878/
@a_cup_of_java | Другие наши каналы
Как я научил Jetpack Compose показывать рекомпозиции в реальном времени
Привет, Хабр! Меня зовут Иван Кузнецов, я Android‑разработчик в Кинопоиске. Сегодня расскажу историю разработки своего пет‑проекта, которая началась с код‑ревью очередного экрана на Jetpack Compose.
Представьте, вы открываете пул‑реквест и взгляд цепляется за знакомые паттерны: нестабильный параметр в Composable‑функции, remember без ключа, применение трансформаций на Layout‑фазе. Сразу хочется написать комментарий‑лекцию о том, почему это ударит по производительности и почему лучше так не делать.
Вот только объяснения отнимают время и не всегда наглядно доносят суть проблемы. Особенно это актуально для новичков, которым сложно сопоставить абстракции с реальным поведением UI. А ведь для сложных асинхронных штук вроде RxJava или корутин есть визуализаторы — RxMarbles и FlowMarbles, а для самой частой головной боли в Compose до сих пор нет. Вот бы вместо стены текста просто кинуть ссылку со словами: «Смотри, вот что твой код делает на самом деле».
В этой статье я расскажу о разработке собственного приложения, которое в реальном времени визуализирует рекомпозиции. Чтобы заставить его работать, пришлось залезть под капот компилятора Kotlin и подружиться с его внутренними API: FIR и IR.
Читать далее
Читать: https://habr.com/ru/companies/yandex/articles/945276/
@a_cup_of_java | Другие наши каналы
Привет, Хабр! Меня зовут Иван Кузнецов, я Android‑разработчик в Кинопоиске. Сегодня расскажу историю разработки своего пет‑проекта, которая началась с код‑ревью очередного экрана на Jetpack Compose.
Представьте, вы открываете пул‑реквест и взгляд цепляется за знакомые паттерны: нестабильный параметр в Composable‑функции, remember без ключа, применение трансформаций на Layout‑фазе. Сразу хочется написать комментарий‑лекцию о том, почему это ударит по производительности и почему лучше так не делать.
Вот только объяснения отнимают время и не всегда наглядно доносят суть проблемы. Особенно это актуально для новичков, которым сложно сопоставить абстракции с реальным поведением UI. А ведь для сложных асинхронных штук вроде RxJava или корутин есть визуализаторы — RxMarbles и FlowMarbles, а для самой частой головной боли в Compose до сих пор нет. Вот бы вместо стены текста просто кинуть ссылку со словами: «Смотри, вот что твой код делает на самом деле».
В этой статье я расскажу о разработке собственного приложения, которое в реальном времени визуализирует рекомпозиции. Чтобы заставить его работать, пришлось залезть под капот компилятора Kotlin и подружиться с его внутренними API: FIR и IR.
Читать далее
Читать: https://habr.com/ru/companies/yandex/articles/945276/
@a_cup_of_java | Другие наши каналы
🔥7👀6👍2
Как я научил Jetpack Compose показывать рекомпозиции в реальном времени
Привет, Хабр! Меня зовут Иван Кузнецов, я Android‑разработчик в Кинопоиске. Сегодня расскажу историю разработки своего пет‑проекта, которая началась с код‑ревью очередного экрана на Jetpack Compose.
Представьте, вы открываете пул‑реквест и взгляд цепляется за знакомые паттерны: нестабильный параметр в Composable‑функции, remember без ключа, применение трансформаций на Layout‑фазе. Сразу хочется написать комментарий‑лекцию о том, почему это ударит по производительности и почему лучше так не делать.
Вот только объяснения отнимают время и не всегда наглядно доносят суть проблемы. Особенно это актуально для новичков, которым сложно сопоставить абстракции с реальным поведением UI. А ведь для сложных асинхронных штук вроде RxJava или корутин есть визуализаторы — RxMarbles и FlowMarbles, а для самой частой головной боли в Compose до сих пор нет. Вот бы вместо стены текста просто кинуть ссылку со словами: «Смотри, вот что твой код делает на самом деле».
В этой статье я расскажу о разработке собственного приложения, которое в реальном времени визуализирует рекомпозиции. Чтобы заставить его работать, пришлось залезть под капот компилятора Kotlin и подружиться с его внутренними API: FIR и IR.
Читать далее
Читать: https://habr.com/ru/companies/yandex/articles/945276/
@a_cup_of_java | Другие наши каналы
Привет, Хабр! Меня зовут Иван Кузнецов, я Android‑разработчик в Кинопоиске. Сегодня расскажу историю разработки своего пет‑проекта, которая началась с код‑ревью очередного экрана на Jetpack Compose.
Представьте, вы открываете пул‑реквест и взгляд цепляется за знакомые паттерны: нестабильный параметр в Composable‑функции, remember без ключа, применение трансформаций на Layout‑фазе. Сразу хочется написать комментарий‑лекцию о том, почему это ударит по производительности и почему лучше так не делать.
Вот только объяснения отнимают время и не всегда наглядно доносят суть проблемы. Особенно это актуально для новичков, которым сложно сопоставить абстракции с реальным поведением UI. А ведь для сложных асинхронных штук вроде RxJava или корутин есть визуализаторы — RxMarbles и FlowMarbles, а для самой частой головной боли в Compose до сих пор нет. Вот бы вместо стены текста просто кинуть ссылку со словами: «Смотри, вот что твой код делает на самом деле».
В этой статье я расскажу о разработке собственного приложения, которое в реальном времени визуализирует рекомпозиции. Чтобы заставить его работать, пришлось залезть под капот компилятора Kotlin и подружиться с его внутренними API: FIR и IR.
Читать далее
Читать: https://habr.com/ru/companies/yandex/articles/945276/
@a_cup_of_java | Другие наши каналы
👍2👎1
2 причины смертельной болезни проекта: устаревшие технологии и монополия на знания. Рассказываем, как это лечить
В США до сих пор работают федеральные IT-системы возрастом 8–51 год, их поддержка обходится в $337 млн ежегодно. Бизнес тоже живёт на легаси: компании закладывают бюджет на модернизацию — в среднем это $2,7 млн в год, но 60–80% денег всё равно уходит на штопанье старого кода. При этом каждая такая система — дыра в безопасности: средний ущерб от утечки данных в 2024-м достиг $4,88 млн.
Корни таких ситуаций лежат в монополии на знания о вашей системе, когда всё держится на двух‑трёх людях. Они в голове носят знания, которых нет ни у кого. И если что-то с ними случится, то все процессы встанут.
Я — Владимир Макеев, CEO Surf. В мобильной разработке часто сталкиваюсь с аналогичными внутренними процессами у заказчиков. В статье расскажу, как «вечная» система тянет компанию ко дну, сколько бюджета тратится на старый стек и как перейти на новый без больших потерь для бизнеса.
Читать далее
Читать: https://habr.com/ru/companies/surfstudio/articles/947362/
@a_cup_of_java | Другие наши каналы
В США до сих пор работают федеральные IT-системы возрастом 8–51 год, их поддержка обходится в $337 млн ежегодно. Бизнес тоже живёт на легаси: компании закладывают бюджет на модернизацию — в среднем это $2,7 млн в год, но 60–80% денег всё равно уходит на штопанье старого кода. При этом каждая такая система — дыра в безопасности: средний ущерб от утечки данных в 2024-м достиг $4,88 млн.
Корни таких ситуаций лежат в монополии на знания о вашей системе, когда всё держится на двух‑трёх людях. Они в голове носят знания, которых нет ни у кого. И если что-то с ними случится, то все процессы встанут.
Я — Владимир Макеев, CEO Surf. В мобильной разработке часто сталкиваюсь с аналогичными внутренними процессами у заказчиков. В статье расскажу, как «вечная» система тянет компанию ко дну, сколько бюджета тратится на старый стек и как перейти на новый без больших потерь для бизнеса.
Читать далее
Читать: https://habr.com/ru/companies/surfstudio/articles/947362/
@a_cup_of_java | Другие наши каналы
❤2