AppFiles - Mobile Development
2.01K subscribers
2.6K photos
33 videos
8 files
3.49K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
10 быстрых советов по повышению качества iOS-кода: часть 2

1. Составляйте интерфейсы из компонентов
2. Переиспользуйте стилизацию с помощью модификаторов представления
3. Включите модульные тесты
4. Обрабатывайте ошибки
5. Документируйте код
6. Перечисления
7. Core Data + SwiftUI
8. Руководство по стилю
9. Инъекция зависимостей
10. Дизайн-система

Статья: https://apptractor.ru/info/articles/10-bystryh-sovetov-po-povysheniyu-kachestva-ios-koda-chast-2.html
Платформа: iOS
Kaspresso для самых маленьких

Меня зовут Элчин, я занимаюсь автоматизацией тестирования мобильных приложений в hh.ru и расскажу вам о том, как написать первый тест на Android. В разработке автотестов мы используем Kotlin и нативный фреймворк Kaspresso, о котором я напишу подробней в этой статье. Эта статья рассчитана на начинающих тестировщиков, но, возможно, и более опытные коллеги найдут для себя что-то полезное.

Статья: https://habr.com/ru/companies/hh/articles/773910/
Платформа: Android/тестирование
👍2
Media is too big
VIEW IN TELEGRAM
Twitter UI Clone - клон пользовательского интерфейса Twitter, полностью построенный с помощью Jetpack Compose, вдохновленный недавним внедрением этой технологии в приложение Twitter для Android. Задача состояла в том, чтобы воссоздать пользовательский интерфейс Twitter до мельчайших деталей, и этот проект был выполнен без использования сторонних библиотек. Внутри Jetpack Compose с эффектами, MVVM, Compose Navigation, Material 3.

Twitter UI Clone на GitHub: https://github.com/Mahfoudh-Aggoun/Twitter-UI-clone-jetpack-compose-
Платформа: Android
⭐️: 8
👍2
Защита кода приложения Android. Когда хотели как лучше, а вышло не очень

В статье просто расскажу пару случаев из практики анализа защиты приложений Android. Имена и место событий изменены. Любые совпадения — случайность.

Статья: https://habr.com/ru/articles/774426/
Платформа: Android
1
Capturable - библиотека Jetpack Compose для преобразования Composable контента в растровые изображения. В предыдущей системе с View получение изображений из View было очень простым. Но с Jetpack Compose дело обстоит иначе, поскольку он во многих аспектах отличается от предыдущей системы. Данная библиотека позволяет легко добиться тех же результатов. Она построена на основе ComposeView и использует API View для рисования Bitmap-изображения.

Capturable на GitHub: https://github.com/PatilShreyas/Capturable
Платформа: Android
⭐️: 742
👍1
Программирование на параллельных машинах: GPU, многоядерные вычисления, кластеры и многое другое

Открытый (ака бесплатный) учебник от Норма Матлоффа, профессора компьютерных наук Калифорнийского университета.

Скачать: https://heather.cs.ucdavis.edu/parprocbook
Платформа: разработка
👍1
Листаем цифровые страницы: UIPageViewController

Сегодня я хочу поделиться кратким и простым руководством о том, как просто и программно реализовать UIPageViewController.

Статья: https://habr.com/ru/articles/774108/
Платформа: iOS
👍1
AcknowList - экран "Признательности", на котором отображается список лицензий, например, от зависимостей CocoaPods и Swift Package Manager. Может сам загружать список библиотек, поддерживает сториборды, темный режим, локализован на 13 языков, варианты UIKit и SwiftUI.

AcknowList на GitHub: https://github.com/vtourraine/AcknowList
Платформа: iOS
⭐️: 646
1👍1
Умный код — это, вероятно, худший код, который вы можете написать

Умный код труднее читать и он выглядит эзотерическим.

Понятный код труднее писать и он выглядит просто.

Статья: https://apptractor.ru/info/articles/umnyy-kod-eto-veroyatno-hudshiy-kod-kotoryy-vy-mozhete-napisat.html
Платформа: разработка
👍1
Строки в Swift выглядят одинаково, но не являются таковыми?

Недавно я столкнулся с проблемой, которая вызвала у меня недоумение. Две одинаковые строки отличались друг от друга. Как такое может быть?

Рассмотрим следующий код:

print("String1: '\(string1)'")
print("String2: '\(string2)'")

print(string1 == string2)


Получаем следующий вывод:

String1: '123456'
String2: '123456'
false


Что??

Статья: https://apptractor.ru/info/articles/stroki-v-swift-vyglyadyat-odinakovo-no-ne-yavlyayutsya-takovymi.html
Платформа: iOS
Exposed - это легковесная SQL-библиотека JetBrains поверх JDBC-драйвера для языка Kotlin. Exposed имеет два варианта доступа к базам данных: типобезопасный SQL-обертка DSL и облегченный Data Access Objects (DAO). Exposed может быть использован для работы с различными движками баз данных, что позволяет создавать приложения, не зависящие от конкретной БД, и переключаться между ними с минимальными изменениями или вообще без них.

Exposed на GitHub: https://github.com/JetBrains/Exposed
Платформа: Android
⭐️: 7.6K
👍1
Курс "Генеративный ИИ для начинающих" от Microsoft

В этом курсе авторы с нуля рассматривают концепции, которые позволят создать свой собственный стартап в области генеративного искусственного интеллекта на базе Azure OpenAI Services. Благодаря этому вы получите представление о том, что нужно сделать, чтобы вывести свои идеи на публику и получить прибыль. В каждом уроке рассматривается один из ключевых аспектов принципов генеративного ИИ и разработки приложений.

Сайт: https://microsoft.github.io/generative-ai-for-beginners/
Платформа: обучение
Пишем Kotlin DSL для графов навигации в домашних условиях

Расскажу, как мы сделали свой DSL для того, чтобы строить логику навигации в наших флоу.

Статья: https://habr.com/ru/companies/tinkoff/articles/775288/
Платформа: Android
Новые API для адаптивных макетов в Jetpack Compose

Мы выпустили первую альфа-версию наших новых адаптивных макетов Material. В первую очередь мы остановились на компонентах ListDetailPaneScaffold и NavigationSuiteScaffold.

Статья: https://apptractor.ru/info/articles/novye-api-dlya-adaptivnyh-maketov-v-jetpack-compose.html
Платформа: Android
Отладка представлений SwiftUI: что вызывает изменения?

Представления SwiftUI с большим количеством триггеров перерисовки могут стать проблемой. Каждый @State, @ObservedObject или другой триггер может вызвать перерисовку представления и повлиять на динамику, например, на анимацию. В таких случаях особенно полезно знать, как отладить представление SwiftUI.

Статья: https://apptractor.ru/info/articles/otladka-predstavleniy-swiftui-chto-vyzyvaet-izmeneniya.html
Платформа: iOS
👍1
Kingfisher - одна из самых популярных и мощных Swift-библиотек для загрузки и кэширования изображений из Интернета. Она дает возможность использовать чисто свифтовский способ работы с удаленными изображениями в вашем приложении. В ней есть асинхронная загрузка изображений, процессоры и фильтры, многоуровневое кеширование, плейсхолдеры, анимации переходов и многое другое.

Kingfisher на GitHub: https://github.com/onevcat/Kingfisher
Платформа: iOS
⭐️: 21.8K
В дополнение - Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений

У самурая нет цели, есть только путь. И никакой самурай уж точно не станет изобретать велосипед, чтобы этот путь проехать. Вот и у меня нет цели дать готовый рецепт — только указать верное направление.

В статье разберемся с тем, как использовать готовые решения, не допуская распространенных ошибок, на которые часто подталкивают авторы библиотек для загрузки и отображения картинок.

Статья: https://habr.com/ru/articles/761772/
Kotlin под капотом: нюансы использования аннотаций

Kotlin очень лаконичный язык, но когда его код компилируется в Java bytecode, то изящные конструкции Kotlin распадаются на развесистые и монструозные конструкции Java. При этом применение аннотаций может сыграть с вами злую шутку.

Статья: https://habr.com/ru/articles/774872/
Платформа: Android
1
Как Spotify отслеживает размеры приложений

Наши ежедневные задачи как инженеров часто связаны с внедрением новых функциональных возможностей. Существующие пользователи получают возможность пользоваться преимуществами этих функций, для новых пользователей это причина подписаться на приложение, а мы получаем возможность писать больше кода. На первый взгляд, это идеальные симбиотические отношения - беспроигрышный сценарий, когда все довольны и ничего не может пойти не так, правильно?

Неправильно, иногда новая отличная функция приносит больше вреда, чем пользы. Причина проста - размер приложения. Любое дополнение к приложению - будь то код для новой функции, ресурс изображения для новой кнопки или даже поддержка новой локализации - приводит к увеличению размера приложения. Вы можете спросить: "Неужели это действительно проблема в нашем современном мире?". Мы утверждаем, что да.

Статья: https://apptractor.ru/info/articles/kak-spotify-otslezhivaet-razmery-prilozheniy.html
Платформа: разработка
This media is not supported in your browser
VIEW IN TELEGRAM