Библиотека мобильного разработчика | 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
👾 Кодогенерация: кому нужна и как настроить

Кодогенерация — замечательный инструмент, но его нужно использовать обдуманно. Злоупотребление кодогенерацией может ограничить возможности кастомизации, однако это, в свою очередь, заставляет команды работать эффективнее.

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

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

#новость
3
👾 Свойства, методы get и set

Свойства класса — это переменные, которые хранят состояние объекта класса. Как и любая переменная, свойство может иметь тип, имя и значение.

В классе можно объявить свойства с помощью ключевого слова var или val. Свойства, объявленные с var, могут быть изменены после их инициализации, а свойства, объявленные с val, только для чтения.

class Person {
var name: String = «»
val age: Int = 0
}


При создании своего класса мы хотим сами управлять его свойствами, контролируя то, какие данные могут быть предоставлены или перезаписаны. С этой целью создаются get и set методы (геттеры и сеттеры). Цель get-метода — вернуть значение, а set-метода — записать полученное значение в свойство класса.

var name: String = «»
get() = field.toUpperCase()set(value) {
field = «Name: $value»
}


В данном примере свойство name имеет тип String и начальное значение пустой строки. Геттер возвращает значение свойства, преобразованное к верхнему регистру. Сеттер устанавливает значение свойства с добавлением префикса «Name: " перед переданным значением. Слово field используется для обращения к текущему значению свойства.

Если get и set методы не были созданы вручную, то для таких свойств Kotlin незаметно сам их генерирует. При этом для свойства, объявленного с val, генерируется get-метод, а для свойства, объявленного с varи get, и set методы.

#kotlin
2👍1
⚙️ Корутины в Kotlin: как сделать «Optimised Out» переменные видимыми

Отладка корутинов в Kotlin иногда может напоминать распутывание паутины невидимых нитей — в буквальном смысле. Одна из распространенных ошибок, с которой сталкиваются разработчики — появление страшного сообщения «optimised out» при проверке переменных в приостановленной корутине.

В этой статье автор расскажет, как динамически включать удобные для отладки настройки с помощью свойства idea.active, что позволит вам проверять переменные корутин в IntelliJ IDEA и Android Studio без ущерба для производительности.

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

#новость #android #kotlin
2😁1
🔧 Строим архитектуру для SwiftUI

SwiftUI фундаментально отличается от UIKit, поэтому он требует своего подхода к архитектуре. Известные паттерны, такие как MVP, MVVM и другие, в чистом виде не адаптированы под особенности SwiftUI.

В статье автор рассказывает о создании собственной архитектуры для разработки на SwiftUI.

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

#новость #ios #swift
😁41🥱1
👨‍💻 Blueprint — декларативный UI-конструктор

Blueprint предоставляет архитектуру, которая позволяет декларативно определять иерархию пользовательского интерфейса с помощью значений (структур и перечислений Swift), отображать эту иерархию в приложении, обновлять её при изменении состояния приложения (включая анимированные переходы).

Blueprint появился раньше SwiftUI и работает немного по-другому. Вы можете разместить BlueprintView в SwiftUI, чтобы встроить Blueprint в SwiftUI, а также использовать предоставленный ElementView для создания предварительных просмотров Blueprint в Xcode.

⚙️ Blueprint на GitHub

#новость #ios
4
💬 ТОП-8 фраз, которые испортят впечатление о вас на собеседовании

Представьте, вы попали на собеседование мечты. Всё идёт гладко, но пара неудачных фраз могут свести на нет все ваши старания. Например, если вы слишком скромны или, наоборот, перегибаете с самоуверенностью, это может вызвать недоверие. Или фраза, которая должна показать вашу гибкость, внезапно делает акцент на недостатке опыта. Знакомо?

Есть проверенные подходы, которые помогут избежать таких ситуаций, выстроить грамотное общение и оставить положительное впечатление. Готовы узнать больше? 🌟

🔗 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
1
✍️ Открытая редакция: ищем авторов для рубрики DevLife

Друзья, нас часто спрашивают про публикацию материалов о личном опыте и знаниях в IT. Пора это систематизировать!

Пишите нам, если у вас есть история о том, как вы:
• выросли в профессии
• освоили новые технологии
• сделали крутой карьерный скачок
• эпично лажанулись
• создали интересные проекты

Требования к статье простые:
• Реальный опыт
• Конкретные шаги
• От 5000 знаков
• Ссылка на Google Docs

Лучшие истории опубликуем на сайте и в наших соцсетях с общим охватом 1 млн+ человек.

Присылайте свои статьи на почту [email protected] с темой «DevLife»
😁2
Вакансии «Библиотеки программиста» — ждем вас в команде!

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

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
🚙 Переезжаем с фрагментов на (De)compose

В процессе перевода проекта на Jetpack Compose рано или поздно появляются вопросы: зачем нужны фрагменты, активити и вьюмодели, ведь можно реализовать навигацию прямо между Composable-функциями.

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

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

👀 Смотреть доклад

#новость #android
😁3🥰2
🍏 typealias в Swift

Typealias, как следует из названия, является псевдонимом для существующего типа данных.

Вы можете создать его следующим образом:

typealias Weight = Float


Теперь вы можете использовать Weight вместо Float:

let mass1: Weight = 150.0
let mass2: Weight = 220.0
let total: Weight = mass1 + mass2


#swift
🥱53
📦 MMKV — эффективное key-valu хранилище от Tencent

MMKV — это эффективный, небольшой и простой в использовании мобильный фреймворк для хранения ключевых значений (key-value), используемый Tencent в приложении WeChat. В настоящее время он доступен для Android, iOS/macOS, Windows, POSIX и HarmonyOS NEXT.

Фичи:

🔹 эффективность — MMKV использует mmap для синхронизации памяти с файлами и protobuf для кодирования/декодирования значений, максимально используя возможности Android для достижения наилучшей производительности;

🔹 многопроцессный параллелизм — MMKV поддерживает одновременный доступ процессов к чтению-чтению и чтению-записи;

🔹 простота — можно использовать MMKV по мере необходимости, все изменения сохраняются немедленно;

🔹 небольшой — 50K в бинарнике.

⚙️ MMKV на GitHub

#новость #android
1🥰1
📱 YPay & YPay Inventory для Flutter — приложений

В этой статье автор делится опытом работы над YPay и YPay inventory для Flutter, рассказывает про возможности библиотек и как их использовать, а также о проблемах, с которыми столкнулся. В полезных ссылках указано всё необходимое для желающих подробнее узнать о Яндекс Пэй.

Может, после прочтения появится желание интегрировать библиотеки в своё мобильное приложение 📚

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

#новость #flutter
2
🌵🕵️‍♂ Git-квест: 10 испытаний для повелителя репозиториев

От простого push до таинственного cherry-pick — пройдите все уровни нашего Git-квеста и докажите, что достойны звания Git-мастера.

Пройти тест
😁10
📝 Вызов защищённого API из iOS-приложения на Swift

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

В этой статье автор показывает, как настроить Auth0 для получения токена доступа OAuth 2.0, который позволит вам безопасно, надёжно и от имени пользователя вызывать защищённый API из вашего приложения.

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

#новость #ios #swift
🔥2
👾 Kotlinx.serialization и работа с JSON

Наверное, все мы хотя бы раз сталкивались с задачей сериализации данных, будь то обмен данными с сервером, сохранение состояния объекта в файл или передача данных между различными приложениями. В Kotlin для этих целей удобно использовать библиотеку Kotlinx.serialization, которая позволяет работать с данными, сериализуя и десериализуя их в различные форматы, такие как JSON, CBOR, и Protocol Buffers.

В статье автор рассказывает, как настроить и использовать kotlinx.serialization в своём проекте, а также показывает примеры эффективной работы с JSON.

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

#новость #kotlin #android
🥰4👍1
🛠️ Кастомизация лейаутов на Compose

В этом докладе — полноценный обзор средств для кастомизации лейаутов на Compose.

Автор разбирает механизм работы layout-фазы в Compose. Рассказывает, как работают стандартные лейауты, а также какие возможности существуют для написания кастомных. Рассматривает нюансы и хаки, о которых не написано в документации.

👀 Смотреть доклад

#новость #android #kotlin
4👍1
🌐 Такие разные Slivers: обзор и применение во Flutter

Многие из вас наверняка уже знакомы с Slivers, ведь это мощный инструмент для создания динамичных и адаптивных прокручиваемых областей в приложениях Flutter.

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

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

#новость #flutter
2
👾 Преимущества Data-классов в Kotlin

Data-класс предназначен исключительно для хранения каких-либо данных.

Основное преимущество: для параметров, переданных в основном конструкторе, автоматически будут переопределены методы toString(), equals(), hashCode(), copy().

Также для каждой переменной, объявленной в основном конструкторе, автоматически генерируются функции componentN(), где N — номер позиции переменной в конструкторе.

Благодаря этому внутри data-класса мы исключаем написание шаблонного кода.

#kotlin
3
🌗 Темы в современных iOS-приложениях с UITraitCollection

Совсем недавно (с iOS 17) Apple представила удобный способ обработки смены тем в приложениях для iOS. Раньше это было довольно сложно, но с появлением UITraitAppearance стало проще.

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

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

#новость #ios #swift
🥰3
🎨 Как использовать смешивание цветов в SwiftUI

В последнем обновлении SwiftUI Apple представила новую функцию под названием «смешивание цветов». Эта функция открывает новые творческие возможности для разработчиков, позволяя выполнять различные задачи с цветами.

Автор статьи рассматривает смешивание цветов в SwiftUI и его потенциальное применение.

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

#новость #ios #swift
🤩2