Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
9.86K subscribers
1.45K photos
68 videos
52 files
4.2K links
Все самое полезное для мобильного разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
💻 Mac больше не нужен <//>

Project IDX, универсальная веб-среда Google для разработки приложений с поддержкой искусственного интеллекта, выполняет некоторые из своих ранних обещаний. В январском обновлении Project IDX получил:

– Интеграцию полноценного симулятора iOS и эмулятора Android, доступные прямо из браузера, что (особенно полезно для разработчиков Flutter);
– Новые шаблоны проектов для разных языков и фреймворков;
– Улучшения, такие как автоматическая настройка брандмауэра, инструменты командной строки;
– Поддержка Docker;
– Расширение функций ИИ в 15 странах.

С обновлением можно ознакомиться тут ℹ️
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱15👍6👏1😁1
#дайджест полезностей для мобильного разработчика

💡 Пример, как можно использовать использовать enum, чтобы определить, нужно ли показывать пользователю экран приветствия, экран входа или основной экран приложения.

Что такое односторонняя привязка (one-way binding) и как она отличается от двусторонней привязки (two-way binding) в SwiftUI. Узнать можно тут 🔗

Знаете что такое полиморфизм? А как он работает в SwiftUI? Автор показывает, как использовать полиморфизм в SwiftUI с помощью @Observable и any. 👨‍💻

🥽 Новое API SwiftUI для разработки приложений для visionOS — операционной системы для Apple Vision Pro и создание простого приложения.

🌈 Как легко поладить с анимациями? Есть довольно простой способ — анимации Lottie. Lottie позволяет импортировать анимации из After Effects в формате JSON. Можно также масштабировать и позиционировать Lottie представление по своему усмотрению.

⚙️ Настраиваем поведение «отскока» для ScrollView или List. Поведение отскока определяет, как прокручиваемое представление реагирует, когда пользователь достигает конца его содержимого. 

Анимация, похожая на «скрытые фотографии» в Telegram, выполненная на SpriteKit. Исходный код лежит тут 🔗
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
🔵 Продолжите фразу:

Сложнее всего в программировании мне даётся...
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
💸 Он вернулся <//>

Хорошая новость для всех юзеров айфона — СберБанк снова в AppStore. Старые версии приложения для iOS скоро перестанут работать. Установите свежую версию уже сейчас.

Успейте скачать 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
6🥱4👍2
👨‍💻🧩 Психология и ИТ: 17 личностных качеств, необходимых для успешной карьеры

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

Читать статью

#новость
👍31🔥1
#вопросы_с_собеседования

💻 Вопрос по Kotlin

Чем Any в Kotlin отличается от Object в Java?

Any не является полным аналогом java.lang.Object.

В Object 11 методов в классе, в Any только 3 метода: equals(), hashCode() и toString(). При импорте типов Java в Kotlin все ссылки типа java.lang.Object преобразуются в Any. Поскольку Any не зависит от платформы, он объявляет только toString(), hashCode() и equals() в качестве своих членов, поэтому, чтобы сделать другие члены java.lang.Object доступными, Kotlin использует функции расширения.

Несмотря на то, что классы Object и Any имеют сходства (корневые классы иерархии классов), они также имеют и отличия, связанные с языковыми особенностями Kotlin и Java:

Класс Any в Kotlin является не только базовым классом для пользовательских классов, но также и супертипом для всех не-nullable типов данных, включая примитивные. В то время как в Java, класс Object является базовым классом только для пользовательских классов.

Класс Any в Kotlin также имеет nullable версию Any?, которая является супертипом для всех nullable типов данных в Kotlin. В то время как в Java, класс Object не имеет nullable версии.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍171🤩1
📩 Использование Push-уведомлений с FCM и Ktor <//>

Push-уведомления — это не просто удобство, но и способ поддерживать ваших пользователей в курсе важных обновлений.

Автор объясняет необходимость push-уведомлений и роль FCM в этом процессе, создаёт настройки для push-уведомлений, включая настройку сервера, а также настройка проекта в Android Studio и подключение к Firebase.

Обо всём подробнее в видео 📺
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥1
🥽 Первые обзоры на Apple Vision Pro <//>

Много внимания сейчас приковано именно к новому продукту от Apple. Вчера вышли первые обзоры на гарнитуру. Самый детальный обзор получился у Маркеса Браунли.

Спойлер: всё не так однозначно, как может показаться.

💬 Вот что об устройстве говорят блогеры и СМИ.
📺 Обзор от Маркеса Браунли.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1🥰1
🙂 Всем привет, кто кодит. Очередной #дайджест для Android-разработчиков

Зачем использовать Flow, если в мобильной разработке есть мощный ChannelFlow? Автор показывает на примере реального сценария, где приложения обнаруживают близкие устройства по Bluetooth или LAN. 👨‍💻

Простой и гармоничный подход к архитектуре в Android-разработке на основе Clean Architecture. 🚀

Какие различия между свойствами lateinit и lazy? Разбор важного вопроса на собеседованиях по Android-разработке. ℹ️

Шесть паттернов использования корутин в Android-разработке и однин анти-паттерн, почему они работают и что за ними стоит. 🤯

Новая атака на Android-приложения — MavenGate. Как она устроена и рекомандации по защите. 🛡

Бонус: YTDLnis — бесплатный и открытый загрузчик видео/аудио с использованием yt-dlp для Android 6.0 и выше.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍611
🤷🏻‍♂️ Кто не успел, тот опоздал <//>

2 февраля 2024 года приложение «Учёт Онлайн» удалили из App Store. Это произошло спустя двое суток после публикации аналога «Сбербанк Онлайн» в магазине приложений Apple. Причина удаления та же — санкции.

В первую очередь новое приложение необходимо скачать клиентам со старыми версиями «СберБанк Онлайн»: 12.14.1, 12.15 и 13.02. Банком принято решение прекратить поддержку этих старых версий, в течение 2024 года они будут планомерно отключены.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10👍4🔥2
✂️ Сто раз отрежь и не меряй <//>

Садимся поудобнее и разбираемся, как реализовать обрезку изображений во Flutter. С небольшими знаниями математики можно реализовать логику обрезки изображения с помощью матриц преобразования. А также кастомный виджет, который позволяет перемещать, масштабировать и поворачивать изображение с помощью жестов.

Гайд тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉5😁1🤔1
⚙️ Небольшой сниппет детектора зависаний что ваш основной поток зависает


var body: some View {
         SomeRootView {
                   …
         }.task {
                let approximateGranularity = Duration.milliseconds(10)
                let threshold = Duration.milliseconds(50)

                let clock = SuspendingClock()
                var lastIteration = clock.now

                while !Task.isCancelled {
                        try? await Task.sleep(for: approximateGranularity,
                                                                    tolerance: approximateGranularity / 2,
                                                                    clock: clock)

                        let now = clock.now

                        if now — lastIteration > threshold {
                                  print(«Main thread hung for \((now — lastIteration).formatted(.units(width:    .wide, fractionalPart: .show(length: 2)))).»)
                        }

                        lastIteration = now
        }
    }
}


Вы можете настроить два параметра — approximateGranularity и threshold — в соответствии со своими предпочтениями.
😁5👍4🤔2
🆕 Релиз нового языка программирования от Apple <//>

Apple выкатила релиз языка программирования для определения конфигурации и продвигающего модель «конфигурация как код» под названием — Pkl (произносится как «Pickle»).

Pkl может применяться как для генерации статических конфигураций в разных форматах, таких как JSON, YAML и XML, так для формирования модулей для обработки заданных форматов конфигурации в приложениях на различных языках программирования.

Из особенностей:

👉 Выявление ошибок проверки перед развертыванием
👉 Масштабирование от простых до сложных сценариев
👉 Имеется плагин на IntelliJ IDE

Ссылка на блог 🔗
Please open Telegram to view this post
VIEW IN TELEGRAM
5😁31
🚀 Полёт нормальный <//>

Как Jetpack Compose оптимизирует производительность интерфейса, используя понятия стабильности и неизменяемости, которые определяются аннотациями @Stable и @Immutable.

ℹ️ Стабильные объекты — это объекты, свойства которых не меняются во время композиции, а неизменяемые объекты — это объекты, которые никогда не меняются после создания.

Узнайте, как проверить, какие функции были пропущены или перезапущены с помощью Layout Inspector и Compose Compiler Metrics, а также разнице между ImmutableCollection и PersistentCollection, которые являются специальными типами коллекций, поддерживающими неизменяемость и эффективное копирование.

Тык 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2🥱2
🫵🏻 От интерактивных 2D-объектов к 3D <//>

Если вы обладатель TG Premium, в меню подписки могли видеть 3D объект — звезда. Вроде ничего необычного, но согласитесь, выглядит красиво. Фича повышает визуальную привлекательность и даёт уникальность продукту.

Если кратко, то создаётся многослойному 2D-изображению, разделенному на слои в графическом редакторе и объединенному с использованием CATransformLayer. Затем с помощью SceneKit создаём сцены, камеры и обработку жестов для взаимодействия с 3D-моделью.

Полный гайд тут 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
21🎉1
🐽 Моя слабая сторона это...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥1
🔄 Новый модификатор доступа в Swift <//>

В Swift 5.9, который идёт с Xcode 15, Apple добавила новый уровень доступа под названием package. Это уже шестой уровень доступа в Swift.

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

За подробностями сюда ⚪️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61🥰1