AppFiles - Mobile Development
2.01K subscribers
2.56K photos
33 videos
8 files
3.45K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Sketch - библиотека обработки изображений для Kotlin. Поддерживает поворот, ресайз, вырезание, закругление углов, добавление рамок, текста, эффектов и и т.п. Sketch не требует внешних зависимостей, таких как OpenCV или OCR. На самом деле это библиотека с нулевой зависимостью, разработанная для простоты и которая служит оберткой для Java AWT BufferedImage. Библиотека предоставляет асинхронный интерфейс для всех операций с изображениями.

Библиотека на GitHub: https://github.com/reugn/sketch
Платформа: Android
⭐️: 26
Android App Shortcuts: static, dynamic, and pinned shortcuts. Использование в реальном проекте

В наше время прогресса, когда сложные системы стараются стать проще для потребителя, операционные системы, такие как Android, пытаются следовать тем же путем, стараясь привлечь всё нового и нового потребителя своих услуг. Функционал Android App Shortcuts может упростить некоторые повседневные функции, такие как, например, отправка сообщения, загрузка в мобильной игре последней контрольной точки или, как в нашем случае, проложить маршрут к избранному адресу и просчитать стоимость поездки в приложении заказа такси нажатием одной кнопки.

Статья: https://apptractor.ru/shrtcts
Платформа: Android
⬆️: 4
Как структурировать свой Swift-код

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

Позвольте представить вам метод, который я называю Код Бургера (Burger Code).

Перевод статьи: https://apptractor.ru/brgrcd
Платформа: программирование/Swift
👋: 545
Видео Mobius 2021 Moscow

В программе 13 докладов:

Martin Mitrevski — Training dynamic ML models on iOS 15
Роман Аймалетдинов — Код, рожденный умереть
Сергей Вихляев — Архитектура, и как ее готовить
«Своя игра»: Mobius edition
Ильмир Усманов — Kotlin IR: прошлое, настоящее и будущее
Анастасия Соколан — Вдохновившись SwiftUI, создаем дизайн систему на UIKit
Никита Типун — Как заваривать декларативный чай
Александр Верещагин (Devexperts) — Как мы внедряли Kotlin Multiplatform
Андрей Чупин — Ускоряем сетевой слой ВКонтакте с HTTP/3
Вадим Петров, Александр Семашко — Как мы ускоряли создание процессов в Android
Данис Тазетдинов — SharePlay и другие способы связать пользователей iOS друг с другом
Михаил Зотьев, Евгений Сатуров — Мифы и правдивые истории про Flutter
Виталий Фридман — Разочаровавшие паттерны мобильной разработки в 2021 году — как сделать их лучше

Видео: https://apptractor.ru/info/media/video-mobius-2021-moscow.html
Платформа: iOS/Android/CrossPlatform
ColorKit - библиотека для работы с цветами в iOS. ColorKit позволяет легко найти доминирующие цвета на картинке или фотографии, возвращая цветовую палитру наиболее распространенных цветов изображения. Кроме того, ColorKit позволяет создавать цветовые палитры из набора цветов. Эта функция особенно эффективна в сочетании с вычислением доминирующего цвета. Библиотека также умеет вычислять средний цвет для изображения, цветовую разницу, разницу в контрастности, работать с Hex-кодами цветов и т.п.

Библиотека на GitHub: https://github.com/Boris-Em/ColorKit
Платформа: iOS
⭐️: 431
Жизнь за пределами кода: как быть хорошим разработчиком, не программируя 24/7

Мы, как индустрия, находимся в опасном положении, когда не просто ожидаем, но требуем от людей работы даже после работы.

Пренебрегая кандидатами на позиции, так как они не участвуют в open source проектах, выбирая для увольнения того, у кого нет «домашнего» проекта, ожидая, что работники сами по себе станут учить новые технологии, фреймворки и языки.

Статья: https://apptractor.ru/cdng247
Платформа: программирование/психология
MortyComposeKMM - пример использования Kotlin Multiplatform, демонстрирующий использование GraphQL + Jetpack Compose или SwiftUI на примере "Рика и Морти".

Проект на GitHub: https://github.com/joreilly/MortyComposeKMM
Платформа: Android/iOS
⭐️: 193
Dogtector - это приложение для определения породы собак для iOS, использующее модель YOLOv5 в сочетании с декодером объектов на основе Metal, оптимизированным для сверхбыстрого обнаружения в реальном времени на устройствах iOS. Работает все на Swift 5.5 и через XCode. 13.1, используется SwiftUI и UIKit, Combine, CoreML, Metal.

Проект на GitHub: https://github.com/bpluta/Dogtector
Платформа: iOS
⭐️: 6
Pocket AutoML - учебное пособие по созданию Android-приложений для классификации изображений с помощью глубокого обучения. Это руководство позволит создать Android-приложение, которое будет использовать deep learning модель классификации изображений, натренированную в Pocket AutoML и экспортированную в формате TensorFlow Lite. Приложение будет непрерывно классифицировать изображения с тыловой камеры устройства.

Проект на GitHub: https://github.com/OutSorcerer/pocket-automl-android-tutorial
Платформа: Android
⭐️: 7
Pixel не дал позвонить 911: разбор ошибки в Android и Microsoft Teams

Что если вам срочно нужно позвонить в экстренную службу, но ваш Pixel просто… зависает? Как ошибки в Android и Microsoft Teams привели к такой ситуации, разбирается в этой статье.

Перевод статьи: https://apptractor.ru/911
Платформа: Android
👋: 520
This media is not supported in your browser
VIEW IN TELEGRAM
Linenoise-Swift - библиотека Swift, реализующая автозамену, автодополнение и историю для ввода строк.

Библиотека на GitHub: https://github.com/andybest/linenoise-swift
Платформа: Swift
⭐️: 98
Стэнфордский университет открыл курс “Введение в робототехнику”

Цель CS223A — познакомить вас с основами моделирования, проектирования, планирования и управления роботизированными системами. По сути, материал, рассматриваемый в этом курсе, представляет собой краткий обзор необходимых знаний из геометрии, кинематики, статики, динамики и управления.

Платформа: роботы
Отступы Edge Insets для UIButton

Вы управляете тремя отступами - imageEdgeInsets, titleEdgeInsets и contentEdgeInsets. Чаще всего ваша задача сводится к выставлению симметрично-противоположных значений.

Статья: https://sparrowcode.by/edge-insets-uibuttonr
Платформа: iOS
AndroidAdManager - библиотека для работы с Admob, Mopup, Facebook-Bidding и Audience Networks. Упрощает и улучшает работу с баннерами и Interstitial рекламой.

Проект на GitHub: https://github.com/hashimTahir/AndroidAdManager
Платформа: Android
⭐️: 7
Оценка эффективности страниц в iOS в Airbnb

В Airbnb создали рейтинг Page Performance Score для предоставления инженерам и специалистам по обработке данных множества ориентированных на пользователя показателей производительности, чтобы лучше понимать и улучшать продукты. В этой статье разработчики подробнее описывают то, как определяются эти метрики и используются в iOS.

Перевод статьи: https://apptractor.ru/bnbios
Платформа: iOS
👋: 153
This media is not supported in your browser
VIEW IN TELEGRAM
Ускоряем панораму машины в приложении Авто.ру

В приложении Авто.ру есть такая фича — панорамы автомобилей. Она позволяет любому сделать 3D-фото своей машины, показать её во всей красе. Как это работает и как нашим коллегам из ML удалось уместить в смартфон то, что раньше требовало целого ангара, напичканного дорогостоящим оборудованием, уже рассказывал на Хабре. Но отснять панораму — лишь полдела. Затем её предстоит воспроизвести, причём сделать это одинаково хорошо и на топовом флагмане, и на бюджетном смартфоне.

Статья: https://apptractor.ru/yapan
Платформа: Android
⬆️: 27
Даже не знаю, зачем это может пригодиться не в играх, но вещь забавная. SwiftUIJoystick - джойстик для приложения на SwiftUI. Можно менять внешний вид поля и самой метки, координаты.

Библиотека на GitHub: https://github.com/michael94ellis/SwiftUIJoystick
Платформа: iOS
⭐️: 9
Глубокое погружение в эксплоит NSO для iMessage: удаленное выполнение кода

Google распотрошил экслоит израильской NSO и это замечательная конструкция.

Люди посылают друг другу смешные анимированные гифки. iMessage хочет, чтобы они крутились вечно. Для этого в заголовке GIF нужно поправить флажок, и чтобы не портить файл iMessage делает его копию. Казалось бы, что могло пойти не так?

По ошибке вместо копирования вызывается рендеринг картинок. А он уже на расширения файлов не смотрит. И NSO под видом гифки подсовывает PDF. А внутри PDF-ки картинка JBIG2 - это такой доисторический формат графики для ксероксов. Чтобы файлы получались маленькими, то он режет картинку на кусочки, и если куски, например буква "а" достаточно похожи между собой, то он использует один глиф для всего, как типографскую литеру.

Из-за этого случались многие беды. Кодек мог к примеру подумать что цифра 6 достаточно похожа на цифру 8, и заменить ее везде на картинках, чтобы сэконосить место. Потому в формат добавили маски - разницу между "похожим" глифом и тем, что нужно воспроизвести. И эти исправления накладываются на глиф с помощью операций AND, OR, XOR и XNOR. То есть эта штука тьюринг-полная. Любое мыслимое вычисление можно провести с помощью этих операций.

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

И из доисторического графического формата они собрали полноценный виртуальный микрокомпьютер из 70 000 вентилей (те самые маски).

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

NSO продавали эту изящную вещицу негодяям и убийцам, но то как она сделана!..

По материалам @ruheight
Google выпустил альфу Jetpack Glance, версию Compose для виджетов.

Jetpack Glance позволяет разработчикам приложений создавать виджеты с такими же декларативными API на основе Kotlin, что и Jetpack Compose. Эта первая альфа-сборка включает начальный набор компонентов Glance Composables (Box, Row, Column, Text, Button, LazyColumn, Image, Spacer), несколько предопределенных действий (actionStartActivity, actionRunCallback и т.д.) и возможность взаимодействия с существующими RemoteView.

На GitHub есть пример кода, а сам Glance совместим с последней стабильной сборкой Android Studio.

Платформа: Android