Видео и подкасты за неделю:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
С вас традиционный 👍 и поделиться подборкой с коллегами!
•
(iOS Ru)
Custom Segmented Control•
(iOS En)
Building Complex Scroll Animations With New iOS 17 APIs•
(iOS En)
SwiftUI Widgets | App Groups | Charts | Expense Tracker App•
(iOS En)
How To Create A Submission Form In Xcode 15•
(iOS En)
This is the CRAZIEST Swift code you'll ever see•
(iOS En)
SwiftData CloudKit•
(iOS En)
SwiftUI Animated Toasts•
(And Ru)
Как устроен Gradle Config Cache. Лучшие Практики. Интервью с инженером команды Gradle•
(And Ru)
Android System Design: делаем библиотеку Firebase•
(And En)
(W)rap - Android Developers Backstage•
(And En)
Introducing Gemini, Google at NeurIPS 2023, and more dev news!•
(And En)
Performance Optimization with @Stable and @Immutable in Jetpack Compose•
(And En)
Demystifying Pixel Shaders (AGSL)•
(Crs Ru)
Мультиплатформенная разработка на чистой Java•
(Crs En)
A novel architecture for Multiplatform applications with Pavel Lahoda•
(Dev Ru)
Что такое observability мобильного приложения•
(Dev Ru)
Разработка Авто.ру и роль руководителя в команде•
(Dev Ru)
Мобильные релизы в Авито•
(Dev Ru)
Силиконовая Долина глазами российского разработчика•
(Dev Ru)
Релокация на Кипр•
(Dev En)
Do You Have to Learn Clean Architecture as a Beginner?С вас традиционный 👍 и поделиться подборкой с коллегами!
AppTractor
Custom Segmented Control
Когда надоела дота, почему бы не раскликаться в Xcode и заодно заработать плюсик в карму.
Enchanted - это элегантное мобильное приложение для iOS/iPad с открытым исходным кодом для общения с приватными языковыми моделями Ollama, такими как Llama 2, Mistral, Vicuna, Starling и другими. По сути, это пользовательский интерфейс приложения ChatGPT, который подключается к вашим собственным моделям Ollama. Для использования приложения вам конечно потребуется запустить собственный сервер Ollama.
Enchanted на GitHub: https://github.com/AugustDev/enchanted
Платформа: iOS
⭐️: 87
Enchanted на GitHub: https://github.com/AugustDev/enchanted
Платформа: iOS
⭐️: 87
Рефакторинг кода, и как его не бояться
Уже около четырех лет моя профессиональная деятельность тесно связана с энтерпрайз разработкой мобильных приложений на Flutter в компании TAGES. Сегодня мне бы хотелось поделиться некоторыми мыслями и практическими советами на тему, которая является актуальной и важной для всех разработчиков — рефакторинг кода.
Статья: https://habr.com/ru/articles/781538/
Платформа: разработка
🏗 Еще про рефакторинг:
• Руководство для инженеров по рефакторингу кода
• Podlodka #37: Рефакторинг
• Рефакторинг кодовой базы в Slack: Стабилизация, Модуляризация и Модернизация
• Осознанная архитектура: рефакторинг Headspace для масштабирования
Уже около четырех лет моя профессиональная деятельность тесно связана с энтерпрайз разработкой мобильных приложений на Flutter в компании TAGES. Сегодня мне бы хотелось поделиться некоторыми мыслями и практическими советами на тему, которая является актуальной и важной для всех разработчиков — рефакторинг кода.
Статья: https://habr.com/ru/articles/781538/
Платформа: разработка
🏗 Еще про рефакторинг:
• Руководство для инженеров по рефакторингу кода
• Podlodka #37: Рефакторинг
• Рефакторинг кодовой базы в Slack: Стабилизация, Модуляризация и Модернизация
• Осознанная архитектура: рефакторинг Headspace для масштабирования
Вопросы с собеседований: ключевое слово Object в Kotlin
В Kotlin ключевое слово Object используется для создания объекта-одиночки (singleton). Объект-одиночка представляет собой класс, у которого может быть только один экземпляр, и этот экземпляр предоставляет глобальную точку доступа к нему. Объект-одиночка полезен, когда требуется иметь единственный экземпляр класса, который обеспечивает доступ к каким-то ресурсам, например, базе данных, конфигурационным параметрам или службам.
Статья: https://apptractor.ru/info/techhype/kotlin-object.html
Платформа: Kotlin
Другие вопросы с собеседований: тут
В Kotlin ключевое слово Object используется для создания объекта-одиночки (singleton). Объект-одиночка представляет собой класс, у которого может быть только один экземпляр, и этот экземпляр предоставляет глобальную точку доступа к нему. Объект-одиночка полезен, когда требуется иметь единственный экземпляр класса, который обеспечивает доступ к каким-то ресурсам, например, базе данных, конфигурационным параметрам или службам.
Статья: https://apptractor.ru/info/techhype/kotlin-object.html
Платформа: Kotlin
Другие вопросы с собеседований: тут
Мастерство работы в SwiftUI
SwiftUI постепенно набирает силу и становится предпочтительным выбором для создания приложений. В этом посте мы рассмотрим важные моменты, которые помогут вам повысить производительность и эффективность разработки приложений.
• Redux или MVVM?
• Используйте StateObject и ObservableObject
• Создавайте Published переменные с осторожностью
• Разбивайте содержимое body на более мелкие части для минимизации времени компиляции
• Предпочтите State для анимации вместо Published
• Объявляйте объекты Observable в определенном месте, чтобы избежать ненужного обновления UI
• Найдите, какое изменение данных вызывает обновление представления SwiftUI
• Используйте LazyHStack и LazyVStack, если у вас длинный список
• Есть ли что-нибудь похожее на viewDidLoad()?
• Используйте UIKit компоненты непосредственно в SwiftUI
• Модификатор с условиями
• Избегайте совместного использования .padding и .frame
• Используйте GeometryReader с умом
• Эпизодическое использование AnyView
• Обязательное используйте ID в Foreach и List
• Предпочитайте использовать текст, а не метку
• Используйте Group для возврата нескольких экземпляров представления
• Используйте .fixedSize(), чтобы указать, что фрейм не изменяется
Статья: https://apptractor.ru/info/articles/masterstvo-raboty-v-swiftui.html
Платформа: iOS
SwiftUI постепенно набирает силу и становится предпочтительным выбором для создания приложений. В этом посте мы рассмотрим важные моменты, которые помогут вам повысить производительность и эффективность разработки приложений.
• Redux или MVVM?
• Используйте StateObject и ObservableObject
• Создавайте Published переменные с осторожностью
• Разбивайте содержимое body на более мелкие части для минимизации времени компиляции
• Предпочтите State для анимации вместо Published
• Объявляйте объекты Observable в определенном месте, чтобы избежать ненужного обновления UI
• Найдите, какое изменение данных вызывает обновление представления SwiftUI
• Используйте LazyHStack и LazyVStack, если у вас длинный список
• Есть ли что-нибудь похожее на viewDidLoad()?
• Используйте UIKit компоненты непосредственно в SwiftUI
• Модификатор с условиями
• Избегайте совместного использования .padding и .frame
• Используйте GeometryReader с умом
• Эпизодическое использование AnyView
• Обязательное используйте ID в Foreach и List
• Предпочитайте использовать текст, а не метку
• Используйте Group для возврата нескольких экземпляров представления
• Используйте .fixedSize(), чтобы указать, что фрейм не изменяется
Статья: https://apptractor.ru/info/articles/masterstvo-raboty-v-swiftui.html
Платформа: iOS
🔥1
Bluetooth LE Spam - этот проект направлен на использование встроенной функциональности Bluetooth Low Energy (BLE) смартфонов на Android для создания фантомных объявлений для Bluetooth-устройств, аналогичных тем, что использует, например, в случае Flipper Zero. Хотя существуют и другие приложения, обеспечивающие подобную функциональность, целью данного приложения является повышение удобства пользователя в процессе работы. Приложение может спуфить Google Fast Pair, Microsoft Swift Pair, Easy Setup, Apple Device Popups, Apple Action Modals, в отдельных случаях вызывать перезагрузку Apple iOS 17, выключать Lovespouse.
Bluetooth LE Spam на GitHub: https://github.com/simondankelmann/Bluetooth-LE-Spam
Платформа: Android
⭐️: 2.4K
Bluetooth LE Spam на GitHub: https://github.com/simondankelmann/Bluetooth-LE-Spam
Платформа: Android
⭐️: 2.4K
GitHub
GitHub - simondankelmann/Bluetooth-LE-Spam
Contribute to simondankelmann/Bluetooth-LE-Spam development by creating an account on GitHub.
Прививка от созависимости. Зачем нужен DI и как он работает в iOS-приложениях hh.ru
В статье мы рассмотрим основы DI, поговорим о том, какую проблему решает этот принцип, окинем общим взглядом возможные варианты реализации: паттерны и популярные библиотеки. Подробно рассмотрим схему, по которой работает DI в многомодульном iOS проекте hh.ru. В конце статьи будет разобран пример простого приложения с аналогичным подходом к инъекции.
Статья: https://habr.com/ru/companies/hh/articles/783002/
Платформа: iOS
В статье мы рассмотрим основы DI, поговорим о том, какую проблему решает этот принцип, окинем общим взглядом возможные варианты реализации: паттерны и популярные библиотеки. Подробно рассмотрим схему, по которой работает DI в многомодульном iOS проекте hh.ru. В конце статьи будет разобран пример простого приложения с аналогичным подходом к инъекции.
Статья: https://habr.com/ru/companies/hh/articles/783002/
Платформа: iOS
CodeEdit - это редактор кода, созданный сообществом для сообщества, написанный для сециально macOS. Среди возможностей - подсветка синтаксиса, завершение кода, поиск и замена по всему проекту, сниппеты, терминал, запуск задач, отладка, интеграция с git, code review, расширения и многое другое.
Цель авторов - сохранить легковесный интерфейс, похожий на TextEdit, но при этом иметь возможность при необходимости масштабировать функциональность до редактора, сравнимого с Xcode.
CodeEdit на GitHub: https://github.com/CodeEditApp/CodeEdit
Платформа: Swift/macOS
⭐️: 19.5K
Цель авторов - сохранить легковесный интерфейс, похожий на TextEdit, но при этом иметь возможность при необходимости масштабировать функциональность до редактора, сравнимого с Xcode.
CodeEdit на GitHub: https://github.com/CodeEditApp/CodeEdit
Платформа: Swift/macOS
⭐️: 19.5K
🔥3💩1
ATHYLPS: пет-проект, приносящий радость от экспериментов с технологиями
Мое новое интервью с Сергеем Опиваловым, Senior Software инженером в Gradle. Обсуждаем его пет-проект — приложение ATHYLPS, тренажер для математических навыков в покере.
Интервью: https://apptractor.ru/info/interview/athylps.html
Платформа: кроссплатформа
Мое новое интервью с Сергеем Опиваловым, Senior Software инженером в Gradle. Обсуждаем его пет-проект — приложение ATHYLPS, тренажер для математических навыков в покере.
Интервью: https://apptractor.ru/info/interview/athylps.html
Платформа: кроссплатформа
❤1
Compose Drag And Drop - это библиотека, которая позволяет легко добавить функциональность перетаскивания в ваши проекты Jetpack Compose или Compose Multiplatform.
Compose Drag And Drop на GitHub: https://github.com/MohamedRejeb/compose-dnd
Платформа: Android
⭐️: 63
Compose Drag And Drop на GitHub: https://github.com/MohamedRejeb/compose-dnd
Платформа: Android
⭐️: 63
Видео и подкасты за неделю:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
В комментариях поделитесь интересным видео, который вы посмотрели!
•
(iOS Ru)
SwiftData: новый persistence framework от Apple•
(iOS En)
Simple, Clean Empty States in SwiftUI - ContentUnavailableView•
(iOS En)
SwiftUI Parallax Scroll Effect•
(iOS En)
SwiftUI Pie & Donut Charts•
(iOS En)
SwiftData Storing Images and Bug Fixes•
(iOS En)
SwiftUI App Theme Switcher - Dark Mode Switch•
(And Ru)
Android Auto: как Organic Maps переносили в машину•
(And Ru)
Сколько памяти нужно для сборки: Android-разработчикам о JVM•
(And Ru)
Добавь немного сахара в Espresso или как писать UI тесты под Android•
(And En)
I've Built an Android App With Google's New AI Gemini•
(And En)
Top 3 Hacks to Remove LazyColumn Lag in Jetpack Compose•
(Crs En)
Best Practices for Developing Amazing Kotlin Multiplatform Apps with Pamela Hill•
(Dev Ru)
Как работает видеостриминг в мобильных приложениях•
(Dev Ru)
Sber ML Meetup: AutoML, трейдинг и мультимодальность•
(Dev Ru)
Как мы ВКонтакте ускоряем получение результатов тестов•
(Dev Ru)
Тестируем с широко закрытыми глазами•
(Dev En)
Microsoft Azure Fundamentals Certification CourseВ комментариях поделитесь интересным видео, который вы посмотрели!
AppTractor
SwiftData: новый persistence framework от Apple
Выделим плюсы, минусы и сделаем вывод — хотим ли затаскивать SwiftData в свои проекты.
This media is not supported in your browser
VIEW IN TELEGRAM
AnimatedBottomBarCompose - это библиотека Jetpack Compose, которая упрощает создание стильных нижних навигационных панелей с настраиваемыми анимациями. Она позволяет легко интегрировать привлекательные навигационные панели в ваше приложение для Android, улучшая пользовательский опыт. Библиотека позволяет выбрать один из предопределенных стилей или создать собственный, сделать анимацию, настроить цвета, иконки и анимацию для соответствия стилю вашего приложения.
AnimatedBottomBarCompose на GitHub: https://github.com/canopas/compose-animated-navigationbar
Платформа: Android
⭐️: 57
AnimatedBottomBarCompose на GitHub: https://github.com/canopas/compose-animated-navigationbar
Платформа: Android
⭐️: 57
А вы знаете, что новые каталоги строк в Xcode позволяют вам варьировать переводы в зависимости от устройства?
Платформа: iOS
Платформа: iOS
Зачем и как в Альфе была написана библиотека для скриншот тестов под Android
В статье рассказывают о проблемах и неочевидных моментах скриншот тестов в контексте Android, и погружают нас в то, как это может работать (и как это сделали в Альфе).
Статья: https://habr.com/ru/companies/alfa/articles/783602/
Платформа: Android
В статье рассказывают о проблемах и неочевидных моментах скриншот тестов в контексте Android, и погружают нас в то, как это может работать (и как это сделали в Альфе).
Статья: https://habr.com/ru/companies/alfa/articles/783602/
Платформа: Android
SwiftEasyPop - это легкая и простая в использовании библиотека SwiftUI для отображения оповещений и тостов в приложениях. Из особенностей - простой и интуитивно понятный API для отображения оповещений и тостов, высокая настраиваемость, поддержка пользовательских иконок, цветов и сообщений, совместимость с iOS 14.0+, поддерживает светлый и темный режим.
SwiftEasyPop на GitHub: https://github.com/tunahancelik/SwiftEasyPop
Платформа: iOS
⭐️: 7
SwiftEasyPop на GitHub: https://github.com/tunahancelik/SwiftEasyPop
Платформа: iOS
⭐️: 7
Принципы функционального программирования — Обучающий курс Университета Карнеги-Меллона
Пройдя этот курс, вы поймете, как функциональное программирование помогает улучшить нашу способность общаться как программистов - с помощью описательного, модульного и сопровождаемого кода.
Описание: https://apptractor.ru/learn/printsipy-funktsionalnogo-programmirovaniya-obuchayuschiy-kurs-universiteta-karnegi-mellona.html
Платформа: программирование/обучение
Пройдя этот курс, вы поймете, как функциональное программирование помогает улучшить нашу способность общаться как программистов - с помощью описательного, модульного и сопровождаемого кода.
Описание: https://apptractor.ru/learn/printsipy-funktsionalnogo-programmirovaniya-obuchayuschiy-kurs-universiteta-karnegi-mellona.html
Платформа: программирование/обучение
Влияние AnyView на производительность SwiftUI
AnyView — это представление без типа (type-erased), которое может пригодиться в контейнерах SwiftUI, состоящих из разнородных представлений. В таких случаях вам не нужно указывать конкретный тип всех представлений, которые могут находиться в иерархии. При таком подходе можно избежать использования дженериков, что упрощает код. Однако его использование может сопровождаться снижением производительности. Как известно, SwiftUI полагается на тип представлений для вычисления разниц (диффинга). Если это AnyView (который, по сути, является оберткой), SwiftUI будет сложно определить идентичность представления и его структуру, и он просто всегда будет перерисовывать всё представление, что не очень эффективно.
В этой статье на примере Stream SDK отслеживаем производительность ленты (заминки анимации и FPS) - без AnyView и с ним.
Статья: https://apptractor.ru/info/articles/anyview.html
Платформа: iOS
AnyView — это представление без типа (type-erased), которое может пригодиться в контейнерах SwiftUI, состоящих из разнородных представлений. В таких случаях вам не нужно указывать конкретный тип всех представлений, которые могут находиться в иерархии. При таком подходе можно избежать использования дженериков, что упрощает код. Однако его использование может сопровождаться снижением производительности. Как известно, SwiftUI полагается на тип представлений для вычисления разниц (диффинга). Если это AnyView (который, по сути, является оберткой), SwiftUI будет сложно определить идентичность представления и его структуру, и он просто всегда будет перерисовывать всё представление, что не очень эффективно.
В этой статье на примере Stream SDK отслеживаем производительность ленты (заминки анимации и FPS) - без AnyView и с ним.
Статья: https://apptractor.ru/info/articles/anyview.html
Платформа: iOS
Что такое Функциональное программирование
Функциональное программирование — это парадигма программирования, в которой программы строятся из функций. Функции — это блоки кода, которые принимают входные данные и возвращают выходные данные. В функциональном программировании функции не изменяют состояние программы, а просто вычисляют значения.
Проще говоря, функциональное программирование — это способ написания программ, который похож на математические уравнения. В математике мы можем решать задачи, используя уравнения, которые описывают отношения между переменными. В функциональном программировании мы можем решать задачи, используя функции, которые описывают отношения между данными.
Статья: https://apptractor.ru/info/articles/chto-takoe-funktsionalnoe-programmirovanie.html
Платформа: программирование
Поставьте 👍, если хотите почитать больше о функциональном программировании.
Функциональное программирование — это парадигма программирования, в которой программы строятся из функций. Функции — это блоки кода, которые принимают входные данные и возвращают выходные данные. В функциональном программировании функции не изменяют состояние программы, а просто вычисляют значения.
Проще говоря, функциональное программирование — это способ написания программ, который похож на математические уравнения. В математике мы можем решать задачи, используя уравнения, которые описывают отношения между переменными. В функциональном программировании мы можем решать задачи, используя функции, которые описывают отношения между данными.
Статья: https://apptractor.ru/info/articles/chto-takoe-funktsionalnoe-programmirovanie.html
Платформа: программирование
Поставьте 👍, если хотите почитать больше о функциональном программировании.
👍4🤮1
Compose Stacked Snackbar - мультиплатформенная библиотека (Android, iOS и десктопы) для отображения уведомлений (снеков) внизу экранов. Имеет встроенные типы (ошибка, предупреждение, информация, успех), поддерживает кастомные уведомления, сами они свайпятся вправо или влево для закрытия или можно привязать действия, есть анимация, автоматическое удаление.
Compose Stacked Snackbar на GitHub: https://github.com/rizmaulana/compose-stacked-snackbar
Платформа: Android/кроссплатформа
⭐️: 16
Compose Stacked Snackbar на GitHub: https://github.com/rizmaulana/compose-stacked-snackbar
Платформа: Android/кроссплатформа
⭐️: 16
Perception - инструменты наблюдения для платформ, которые официально не поддерживают Observation. Библиотека предоставляет инструменты, которые имитируют @Observable и withObservationTracking в Swift 5.9, но при этом они бэкпортированы для работы на iOS 13, macOS 10.15, tvOS 13 и watchOS 6. Это означает, что вы можете начать использовать преимущества инструментов наблюдения Swift 5.9 уже сегодня, даже если вы не можете отказаться от поддержки старых платформ Apple. Использование инструментов этой библиотеки работает почти так же, как и использование официальных инструментов.
Perception на GitHub: https://github.com/pointfreeco/swift-perception
Платформа: iOS
⭐️: 191
Perception на GitHub: https://github.com/pointfreeco/swift-perception
Платформа: iOS
⭐️: 191