ImmutableData - простое управление состояниями для SwiftUI
ImmutableData - новый подход к архитектуре приложений для SwiftUI, основанный на более чем десятилетнем опыте работы с декларативными UI-фреймворками. Вдохновленная принципами Flux и Redux, архитектура использует современные возможности Swift, чтобы сделать ваш код чище, быстрее и проще для понимания. Вместо традиционного императивного и объектно-ориентированного программирования, авторы делают ставку на декларативное мышление, функциональный стиль и неизменяемые (immutable) данные. В основе всего — однонаправленный поток данных, который обеспечивает строгое разделение ответственности: действия декларируют, что произошло; слой состояния реагирует на эти действия, изменяя данные; а представления (views) — просто отображают обновлённое состояние.
Это строгое разделение позволяет избавиться от таких проблем, как двусторонняя привязка данных и "спагетти-код", вызванный изменяемыми объектами. Архитектура ImmutableData делает код надёжнее, его легче тестировать, а новичкам — проще в нём разобраться. Пакет предоставляет три основных модуля: ImmutableData для управления данными, ImmutableUI для работы с представлениями SwiftUI и AsyncSequenceTestUtils для тестирования. Чтобы начать, достаточно добавить пакет в свой проект через Swift Package Manager. Например, для простого счётчика вам нужно определить состояние, действия и редьюсер, а затем использовать @ImmutableUI.Selector и @ImmutableUI.Dispatcher, чтобы связать ваш UI с глобальным состоянием приложения. Это позволяет создавать масштабируемые и легко поддерживаемые приложения.
ImmutableData на GitHub: https://github.com/Swift-ImmutableData/ImmutableData
Платформа: iOS
⭐️: 37
ImmutableData - новый подход к архитектуре приложений для SwiftUI, основанный на более чем десятилетнем опыте работы с декларативными UI-фреймворками. Вдохновленная принципами Flux и Redux, архитектура использует современные возможности Swift, чтобы сделать ваш код чище, быстрее и проще для понимания. Вместо традиционного императивного и объектно-ориентированного программирования, авторы делают ставку на декларативное мышление, функциональный стиль и неизменяемые (immutable) данные. В основе всего — однонаправленный поток данных, который обеспечивает строгое разделение ответственности: действия декларируют, что произошло; слой состояния реагирует на эти действия, изменяя данные; а представления (views) — просто отображают обновлённое состояние.
Это строгое разделение позволяет избавиться от таких проблем, как двусторонняя привязка данных и "спагетти-код", вызванный изменяемыми объектами. Архитектура ImmutableData делает код надёжнее, его легче тестировать, а новичкам — проще в нём разобраться. Пакет предоставляет три основных модуля: ImmutableData для управления данными, ImmutableUI для работы с представлениями SwiftUI и AsyncSequenceTestUtils для тестирования. Чтобы начать, достаточно добавить пакет в свой проект через Swift Package Manager. Например, для простого счётчика вам нужно определить состояние, действия и редьюсер, а затем использовать @ImmutableUI.Selector и @ImmutableUI.Dispatcher, чтобы связать ваш UI с глобальным состоянием приложения. Это позволяет создавать масштабируемые и легко поддерживаемые приложения.
ImmutableData на GitHub: https://github.com/Swift-ImmutableData/ImmutableData
Платформа: iOS
⭐️: 37
🤔1
Андроид всё еще не готов к RAW-видео
Сегодня вам предстоит увлекательное путешествие по стыку технологий, кода и технических решений, которые и расскажут вам то, о чем адепты съемки мобильного RAW-видео предпочитают не говорить.
Я разберу лишь основные моменты, которые и убедили меня в том, что эффективная съемка RAW‑видео на Андроид на сегодняшний день невозможна без »костылей» и ухищрений. Костылей, которые нивелируют все те преимущества RAW, которые так жаждут получить на своих смартфонах видеографы. Ухищрений, которые по итогу делают менее ресурсоемкие форматы записи видео на смартфоне даже более эффективными и качественными, чем RAW.
Да, будет интересно!
Статья: https://habr.com/ru/articles/947578/
Платформа: Android
Сегодня вам предстоит увлекательное путешествие по стыку технологий, кода и технических решений, которые и расскажут вам то, о чем адепты съемки мобильного RAW-видео предпочитают не говорить.
Я разберу лишь основные моменты, которые и убедили меня в том, что эффективная съемка RAW‑видео на Андроид на сегодняшний день невозможна без »костылей» и ухищрений. Костылей, которые нивелируют все те преимущества RAW, которые так жаждут получить на своих смартфонах видеографы. Ухищрений, которые по итогу делают менее ресурсоемкие форматы записи видео на смартфоне даже более эффективными и качественными, чем RAW.
Да, будет интересно!
Статья: https://habr.com/ru/articles/947578/
Платформа: Android
To Do - ведение дел на Jetpack Compose
To Do - простое приложение для ведения дел на Jetpack Compose с настраиваемыми темами Material Design 3.
To Do на GitHub: https://github.com/Super12138/ToDo
Платформа: Android
⭐️: 41
To Do - простое приложение для ведения дел на Jetpack Compose с настраиваемыми темами Material Design 3.
To Do на GitHub: https://github.com/Super12138/ToDo
Платформа: Android
⭐️: 41
•
(iOS Ru) Пишем видеоплеер под iOS с нуля•
(iOS En) The curious case of RETROACTIVE attribute in Swift•
(iOS En) iOS 26 Custom Animated ToolBar Using SwiftUI•
(iOS En) Mastering iOS 26 Toolbars & Modal Sheets in SwiftUI •
(And Ru) Разбор кода: пиксельная погода на Kotlin•
(And En) Shadows In Compose | Jetpack Compose Tips•
(And En) Firebender - TypeAlias Show•
(Crs En) Multi-Module Architecture in KMP for Beginners (Kotlin Multiplatform)•
(Crs En) Building a macOS Screen Saver with Kotlin•
(Dev Ru) Давайте потестируем Webview•
(Dev Ru) Сколько кнопок нажимает ваш автотест?•
(Dev Ru) Язык программирования Gleam — Gleam, Erlang VM, BEAM, Elixir vs Gleam•
(Dev En) Charts, Code, and Sails: Winning a Regatta with Kotlin NotebookПрошлогодние видео:
•
(And Ru) Бессмертное приложение•
(And Ru) Укрощаем UDF state-based архитектуры. Реальные кейсы в больших приложениях•
(Dev Ru) Заработок на Open Source. Decompose. Будущее KMP. Аркадий Иванов•
(Dev Ru) Грейд в IT•
(Dev Ru) Как устроен Yandex Mobile Ads SDK•
(Dev Ru) Паттерны SDUIPlease open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
SwiftUI: Горизонтальный пикер/слайдер/линейка
Если стандартные слайдеры уже надоели, посмотрите, как создать кастомный горизонтальный Dial Picker — компонент, похожий на линейку или шкалу настройки.
В статье автор подробно разбирает создание такого элемента с нуля.
Статья: https://levelup.gitconnected.com/swiftui-horizontal-dial-picker-slider-ruler-8b3681fc9a00
Платформа: iOS
Поставь 👍, если хотите перевод на русский.
Если стандартные слайдеры уже надоели, посмотрите, как создать кастомный горизонтальный Dial Picker — компонент, похожий на линейку или шкалу настройки.
В статье автор подробно разбирает создание такого элемента с нуля.
Статья: https://levelup.gitconnected.com/swiftui-horizontal-dial-picker-slider-ruler-8b3681fc9a00
Платформа: iOS
Поставь 👍, если хотите перевод на русский.
👍4
Все, что вы хотели знать о флагах в эмодзи (но не знали, что вам это нужно)
Допустим, вы создаете аналитическое приложение и вам нужен простой способ обозначить местоположение аналитического события. Если вы, как и я, подумали: «Да, флажки эмодзи — забавный способ показать страны», то наверняка сразу же начали создавать такой словарь
Но подождите. Оказывается, есть гораздо более простой способ сделать это (ну как «простой»… с программной точки зрения).
Статья: https://apptractor.ru/info/articles/vse-chto-vy-hoteli-znat-o-flagah-v-emodzi-no-ne-znali-chto-vam-eto-nuzhno.html
Платформа: iOS
Допустим, вы создаете аналитическое приложение и вам нужен простой способ обозначить местоположение аналитического события. Если вы, как и я, подумали: «Да, флажки эмодзи — забавный способ показать страны», то наверняка сразу же начали создавать такой словарь
let emojiFlags = [
"AU": "🇦🇺",
"BE": "🇧🇪",
"BR": "🇧🇷",
"BS": "🇧🇸",
...
]
Но подождите. Оказывается, есть гораздо более простой способ сделать это (ну как «простой»… с программной точки зрения).
Статья: https://apptractor.ru/info/articles/vse-chto-vy-hoteli-znat-o-flagah-v-emodzi-no-ne-znali-chto-vam-eto-nuzhno.html
Платформа: iOS
Foqos - блокировка приложений с помощью NFC-метки или QR-кода
Foqos поможет вам одним касанием отключить самые отвлекающие приложения — с помощью NFC-меток или QR-кодов — чтобы вы могли сосредоточиться и выработать полезные цифровые привычки. Это бесплатное приложение с открытым исходным кодом, которое является альтернативой Brick, Bloom, Unpluq, Blok и другим.
Foqos на GitHub: https://github.com/awaseem/foqos
Платформа: iOS
⭐️: 172
Foqos поможет вам одним касанием отключить самые отвлекающие приложения — с помощью NFC-меток или QR-кодов — чтобы вы могли сосредоточиться и выработать полезные цифровые привычки. Это бесплатное приложение с открытым исходным кодом, которое является альтернативой Brick, Bloom, Unpluq, Blok и другим.
Foqos на GitHub: https://github.com/awaseem/foqos
Платформа: iOS
⭐️: 172
Строки в Swift
Сегодня поговорим о теме, которая вроде бы знакома каждому разработчику, но при этом часто остаётся в тени. Речь пойдёт о строках в Swift.
Каждый, кто писал или пишет приложения на этом языке, так или иначе работает со строками. Но задумывались ли вы когда-нибудь, как они устроены внутри? В этой статье я постараюсь приоткрыть завесу и рассказать, какие тайны скрывают строки в Swift.
Статья: https://habr.com/ru/articles/948870/
Платформа: iOS
Сегодня поговорим о теме, которая вроде бы знакома каждому разработчику, но при этом часто остаётся в тени. Речь пойдёт о строках в Swift.
Каждый, кто писал или пишет приложения на этом языке, так или иначе работает со строками. Но задумывались ли вы когда-нибудь, как они устроены внутри? В этой статье я постараюсь приоткрыть завесу и рассказать, какие тайны скрывают строки в Swift.
Статья: https://habr.com/ru/articles/948870/
Платформа: iOS
Расширяем возможности GitHub Copilot для IDEA или как писать unit-тесты в пару кликов
В этой статье расскажу, как мне удалось «влезть» в плагин GitHub Copilot, обойти ограничения проприетарного инструмента и научить его помогать писать unit-тесты буквально в пару кликов. Думаю это будет полезно тем, кто хочет узнать как влезать в работу сторонних плагинов, ускорить написание тестов и тем, кто ищет способы прокачать работу с ИИ-помощниками в своих проек
Статья: https://habr.com/ru/companies/cian/articles/920328/
Платформа: Android
В этой статье расскажу, как мне удалось «влезть» в плагин GitHub Copilot, обойти ограничения проприетарного инструмента и научить его помогать писать unit-тесты буквально в пару кликов. Думаю это будет полезно тем, кто хочет узнать как влезать в работу сторонних плагинов, ускорить написание тестов и тем, кто ищет способы прокачать работу с ИИ-помощниками в своих проек
Статья: https://habr.com/ru/companies/cian/articles/920328/
Платформа: Android
Хабр
Расширяем возможности GitHub Copilot для IDEA или как писать unit-тесты в пару кликов
В этой статье расскажу, как мне удалось «влезть» в плагин GitHub Copilot, обойти ограничения проприетарного инструмента и научить его помогать писать unit-тесты буквально в пару кликов. Думаю это...
Горизонтальный селектор/слайдер/линейка на SwiftUI
Вот что у нас получится - горизонтальный селектор/слайдер/линейка, или как вы его там называете. Сегментированные деления с анимацией, тактильными эффектами и опциональным отображением меток.
В интернете есть несколько решений. Однако ни одно из них не делало того, чего я хочу, и не было реализовано так, как мне нравится. И, как вы, возможно, уже знаете меня, если мне не понравится то, что есть, я просто ДЕЛАЮ ЭТО САМ.
Идея довольно проста, но есть много мелочей, на которые нужно обратить внимание, чтобы всё работало гладко, так как нам (или, по крайней мере, мне) нравится.
Давайте посмотрим.
Статья: https://apptractor.ru/info/articles/gorizontalnyy-selektor-slayder-lineyka-na-swiftui.html
Платформа: iOS
Вот что у нас получится - горизонтальный селектор/слайдер/линейка, или как вы его там называете. Сегментированные деления с анимацией, тактильными эффектами и опциональным отображением меток.
В интернете есть несколько решений. Однако ни одно из них не делало того, чего я хочу, и не было реализовано так, как мне нравится. И, как вы, возможно, уже знаете меня, если мне не понравится то, что есть, я просто ДЕЛАЮ ЭТО САМ.
Идея довольно проста, но есть много мелочей, на которые нужно обратить внимание, чтобы всё работало гладко, так как нам (или, по крайней мере, мне) нравится.
Давайте посмотрим.
Статья: https://apptractor.ru/info/articles/gorizontalnyy-selektor-slayder-lineyka-na-swiftui.html
Платформа: iOS
ADB Keep Screen On - включенный экран при работе с ADB
ADB Keep Screen On - это простая утилита для командной строки, написанная на Go, которая предотвращает переход устройства Android в спящий режим при подключении через ADB по USB.
Она идеально подходит для разработчиков, тестировщиков и докладчиков, которым необходимо, чтобы экран оставался активным во время отладки, автоматизации или демонстраций в режиме реального времени без необходимости следить за состоянием зарядки или вручную настраивать параметры устройства.
ADB Keep Screen On на GitHub: https://github.com/nisrulz/adb-keep-screen-on
Платформа: Android
⭐️: 11
ADB Keep Screen On - это простая утилита для командной строки, написанная на Go, которая предотвращает переход устройства Android в спящий режим при подключении через ADB по USB.
Она идеально подходит для разработчиков, тестировщиков и докладчиков, которым необходимо, чтобы экран оставался активным во время отладки, автоматизации или демонстраций в режиме реального времени без необходимости следить за состоянием зарядки или вручную настраивать параметры устройства.
ADB Keep Screen On на GitHub: https://github.com/nisrulz/adb-keep-screen-on
Платформа: Android
⭐️: 11
Как Shopify перевела свои крупнейшие приложения на новую архитектуру React Native
Команда JavaScript for Devs подготовила перевод кейса Shopify о миграции их крупнейших приложений на новую архитектуру React Native. Результат впечатляет: еженедельные релизы не остановились, стабильность сохранилась, а производительность выросла.
Статья: https://habr.com/ru/articles/949002/
Платформа: кроссплатформа
Команда JavaScript for Devs подготовила перевод кейса Shopify о миграции их крупнейших приложений на новую архитектуру React Native. Результат впечатляет: еженедельные релизы не остановились, стабильность сохранилась, а производительность выросла.
Статья: https://habr.com/ru/articles/949002/
Платформа: кроссплатформа
👍1
Новые подходы в Swift для тестирования: разбор технологии Swift Testing
Тестирование на Swift долгие годы держалось на трех китах: XCTest, сторонние библиотеки и собственная смекалка. Но на WWDC 24 Apple представила новый, современный фреймворк — Swift Testing, который предлагает концептуально новый подход к тестированию. Кирилл Гусев из ОК рассказывает о том, какие возможности предоставляет Swift Testing и как они в компании планируют применять их.
Статья: https://habr.com/ru/companies/vk/articles/949260/
Платформа: iOS
Тестирование на Swift долгие годы держалось на трех китах: XCTest, сторонние библиотеки и собственная смекалка. Но на WWDC 24 Apple представила новый, современный фреймворк — Swift Testing, который предлагает концептуально новый подход к тестированию. Кирилл Гусев из ОК рассказывает о том, какие возможности предоставляет Swift Testing и как они в компании планируют применять их.
Статья: https://habr.com/ru/companies/vk/articles/949260/
Платформа: iOS
👍1
Проблема при выделении текста в TextView на Android 15+
При использовании TextView с выравниванием текста по ширине (justificationMode = JUSTIFICATION_MODE_INTER_WORD) возникает следующая проблема: во время выделения текста маркеры и подсветка часто смещаются. В результате выделяется не то слово, которое должно быть, маркеры не совпадают с символами.
Статья: https://android-tools.ru/coding/problema-pri-vydelenii-teksta-v-textview-na-android-15/
Платформа: Android
При использовании TextView с выравниванием текста по ширине (justificationMode = JUSTIFICATION_MODE_INTER_WORD) возникает следующая проблема: во время выделения текста маркеры и подсветка часто смещаются. В результате выделяется не то слово, которое должно быть, маркеры не совпадают с символами.
Статья: https://android-tools.ru/coding/problema-pri-vydelenii-teksta-v-textview-na-android-15/
Платформа: Android
😱1
Я заставил мое приложение работать в офлайне - архитектурный сдвиг
Моё приложение на самом деле не было приложением. Оно было просто марионеткой, которой управлял интернет, дергая за все ниточки.
А когда я отключил ниточки, марионетка рухнула.
И я принял решение. Я переделаю своё приложение так, чтобы оно работало только в offline режиме.
Никаких оправданий. Никаких сообщений «попробуйте ещё раз позже». Только локальная архитектура.
И этот выбор изменил всё в моём подходе к разработке приложений.
Статья: https://apptractor.ru/info/articles/ya-zastavil-moe-prilozhenie-rabotat-v-oflayne-arhitekturnyy-sdvig.html
Платформа: разработка
Моё приложение на самом деле не было приложением. Оно было просто марионеткой, которой управлял интернет, дергая за все ниточки.
А когда я отключил ниточки, марионетка рухнула.
И я принял решение. Я переделаю своё приложение так, чтобы оно работало только в offline режиме.
Никаких оправданий. Никаких сообщений «попробуйте ещё раз позже». Только локальная архитектура.
И этот выбор изменил всё в моём подходе к разработке приложений.
Статья: https://apptractor.ru/info/articles/ya-zastavil-moe-prilozhenie-rabotat-v-oflayne-arhitekturnyy-sdvig.html
Платформа: разработка
❤1
Memo Notes - приложение для ведения заметок
Memo Notes — это лёгкое и интуитивно понятное приложение для создания заметок, разработанное для устройств iOS, призванное помочь пользователям записывать и организовывать свои мысли, задачи и идеи. Благодаря понятному и удобному интерфейсу Memo Notes позволяет быстро создавать, редактировать и эффективно управлять заметками. Работайте продуктивно благодаря таким функциям, как удобное редактирование, свайп для быстрого обновления и удобное использование на всех ваших устройствах.
Memo Notes на GitHub: https://github.com/KhubaibKhan4/MemoNotes
Платформа: iOS
⭐️: 16
Memo Notes — это лёгкое и интуитивно понятное приложение для создания заметок, разработанное для устройств iOS, призванное помочь пользователям записывать и организовывать свои мысли, задачи и идеи. Благодаря понятному и удобному интерфейсу Memo Notes позволяет быстро создавать, редактировать и эффективно управлять заметками. Работайте продуктивно благодаря таким функциям, как удобное редактирование, свайп для быстрого обновления и удобное использование на всех ваших устройствах.
Memo Notes на GitHub: https://github.com/KhubaibKhan4/MemoNotes
Платформа: iOS
⭐️: 16
👍1
Разбираемся с existential container в Swift
Existential container - это структура данных в рантайме, которая хранит значение типа, скрытого за протоколом. Он появляется там, где мы используем название протокола в качестве типа переменной или аргумента функции. С помощью existential container реализован динамический вызов методов протокола, а также управление жизненным циклом внутреннего значения типа.
Статья: https://habr.com/ru/articles/949268/
Платформа: iOS
Existential container - это структура данных в рантайме, которая хранит значение типа, скрытого за протоколом. Он появляется там, где мы используем название протокола в качестве типа переменной или аргумента функции. С помощью existential container реализован динамический вызов методов протокола, а также управление жизненным циклом внутреннего значения типа.
Статья: https://habr.com/ru/articles/949268/
Платформа: iOS
👍1
Погружение в JNI: проблемы и решения при взаимодействии между JVM и нативным кодом
Меня зовут Геннадий Денисов, я руковожу одной из команд разработки мобильного Яндекс Браузера для Android. Недавно в рамках одного проекта мы интегрировали С++‑код в мобильное приложение Браузера. В этой статье я поделюсь основными нюансами работы с Java Native Interface (JNI), инструментами для упрощения разработки и подробностями нашего подхода.
Статья: https://habr.com/ru/companies/yandex/articles/948570/
Платформа: Android
Меня зовут Геннадий Денисов, я руковожу одной из команд разработки мобильного Яндекс Браузера для Android. Недавно в рамках одного проекта мы интегрировали С++‑код в мобильное приложение Браузера. В этой статье я поделюсь основными нюансами работы с Java Native Interface (JNI), инструментами для упрощения разработки и подробностями нашего подхода.
Статья: https://habr.com/ru/companies/yandex/articles/948570/
Платформа: Android
👍1
Гайд по File Templates: как шарить шаблоны с однотипным кодом
Расскажу, как можно шарить
Статья: https://habr.com/ru/companies/tbank/articles/949658/
Платформа: Android
Расскажу, как можно шарить
File Templates для своей команды, чтобы облегчить жизнь другим и сэкономить немного времени. Причем коллегам ничего самостоятельно не придется настраивать: подтянутый из git-а репозиторий с кодом все сделает сам. Эта статья — бонус к трем предыдущим, в которых я рассказывал, как уменьшить написание boilerplate-кода. Статья: https://habr.com/ru/companies/tbank/articles/949658/
Платформа: Android
👍1
Apple тихо переписывает iOS, и это не Swift или Objective-C
Apple переписывает ключевые части iOS на Rust для обеспечения безопасности и производительности. Это не убивает Swift, но означает, что фундамент Swift меняется. Меньше сбоев, лучшая безопасность и, возможно, начало будущего, основанного на Rust, для разработчиков iOS.
Статья: https://apptractor.ru/info/articles/apple-tiho-perepisyvaet-ios-i-eto-ne-swift-ili-objective-c.html
Платформа: iOS
Apple переписывает ключевые части iOS на Rust для обеспечения безопасности и производительности. Это не убивает Swift, но означает, что фундамент Swift меняется. Меньше сбоев, лучшая безопасность и, возможно, начало будущего, основанного на Rust, для разработчиков iOS.
Статья: https://apptractor.ru/info/articles/apple-tiho-perepisyvaet-ios-i-eto-ne-swift-ili-objective-c.html
Платформа: iOS
🤯5👍2🔥1
Valiutchik - курсы обмена валют в Беларуси
Valiutchik - это приложение для Android, помогающее найти лучшие курсы обмена валют в Беларуси. Приложение позволяет быстро загрузить лучшие курсы обмена валют в некоторых городах Беларуси. Нажав на элемент списка, можно найти ближайшие отделения банков с лучшими курсами на карте. Длительное нажатие на карту с валютой позволяет скопировать курс обмена в буфер обмена, например, для вставки в калькулятор. Информация о курсах обмена предоставляется MyFin.
Это небольшой проект, призванный стать полигоном для самых новых и ярких разработок, полностью написан на Kotlin, использует Koin, корутины, чистую архитектуру, Room, AndroidX Benchmark и модульные тесты. Любой вклад приветствуется.
Valiutchik на GitHub: https://github.com/fobo66/valiutchik-android
Платформа: Android
⭐️: 11
Valiutchik - это приложение для Android, помогающее найти лучшие курсы обмена валют в Беларуси. Приложение позволяет быстро загрузить лучшие курсы обмена валют в некоторых городах Беларуси. Нажав на элемент списка, можно найти ближайшие отделения банков с лучшими курсами на карте. Длительное нажатие на карту с валютой позволяет скопировать курс обмена в буфер обмена, например, для вставки в калькулятор. Информация о курсах обмена предоставляется MyFin.
Это небольшой проект, призванный стать полигоном для самых новых и ярких разработок, полностью написан на Kotlin, использует Koin, корутины, чистую архитектуру, Room, AndroidX Benchmark и модульные тесты. Любой вклад приветствуется.
Valiutchik на GitHub: https://github.com/fobo66/valiutchik-android
Платформа: Android
⭐️: 11
👍1👎1