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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
🤔 Как вы считаете, стоит ли делать систему MacOS и iOS открытыми?

С обновлением iOS 17.1 появилась возможность установки IPA-файлов через AirDrop. А в В iOS 17.3 должна появиться возможность загрузки приложений на iPhone и iPad из альтернатив App Store. С одной стороны, будет прикольно иметь полноценный линукс на маке, а другой стороны зачем это на телефоне?

Что думаете на этот счёт? Напишите в комментариях 👇
👍16🥱1
⚔️ React Native vs Flutter на примере мессенджера

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

Содержание:

00:57 — Язык
01:41 — Экосистема
02:04 — Философия
02:42 — Архитектура
04:00 — Опыт разработчика
05:45 — Инструментарий
07:39 — Код
09:13 — Производительность

#видео
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Когда в пятницу залил код без тестов на прод и ушел на выходные:

#memes
😁9👍4🌚1
👨‍💻 Как создать интерактивные виджеты на iOS 17

Статья рассказывает о том, как создать интерактивные виджеты на iOS 17 с помощью нового фреймворка WidgetKit. Также в статье описаны основные концепции и компоненты виджетов, такие как Timeline, TimelineEntry, TimelineProvider, WidgetConfiguration и IntentConfiguration. В конце автор дает несколько советов по оптимизации и тестированию виджетов.

Читать
🔥31
☁️🧩 ТОП-10 бессерверных фреймворков

Существует множество различных бессерверных фреймворков, каждый из которых предназначен для определенных задач. В этой статье рассмотрим 10 наиболее популярных из них.

Читать статью
👍2🔥2
#вопросы_с_собеседований

Вопрос по Swift

Могли бы вы объяснить, как работают GCD (Grand Central Dispatch) и OperationQueue в Swift для управления многопоточностью? В чём различия между этими двумя подходами и в каких ситуациях предпочтительнее использовать тот или иной?

Grand Central Dispatch (GCD) — низкоуровневая API для многопоточности в Swift, которая позволяет выполнять асинхронные задачи в параллельных очередях. GCD удобен для выполнения простых асинхронных операций и управляет пулом потоков автоматически.

Пример использования GCD:

DispatchQueue.global().async {
// Выполнение задачи в фоновом потоке
let result = performSomeTask()

DispatchQueue.main.async {
// Обновление UI в главном потоке
updateUI(with: result)
}
}

OperationQueue — высокоуровневая абстракция над GCD, предоставляющая больше возможностей для управления задачами, таких как зависимости, приоритеты и отмена операций.

Пример использования OperationQueue:

let operationQueue = OperationQueue()
let operation = BlockOperation {
// Выполнение задачи
performSomeTask()
}
operationQueue.addOperation(operation)

Выбор между GCD и OperationQueue зависит от сложности задачи. Для простых асинхронных операций удобнее использовать GCD, а для более сложных сценариев с зависимостями между задачами — OperationQueue.
🔥12👍1👏1
🚀 Какой самый эффективный способ создания мобильных приложений?

В этом видео рассказывается о том, как использовать FlutterFlow для быстрого создания мобильных приложений для iOS и Android. FlutterFlow — это инструмент для разработки приложений на Flutter с низким уровнем кодирования, который интегрируется с Firebase и значительно ускоряет мобильную разработку.

Содержание:

00:00 — Введение: Разработка на Flutter в 10 раз быстрее
00:13 — Создание нативных приложений с помощью Flutter Flow
00:52 — Виджеты Flutter, действия, представление кода
01:46 — Управление состояниями в разработке приложений
02:58 — Темы и управление пользовательским кодом
07:42 — Запуск приложения в браузере или локально
08:14 — Outro: Flutter Flow упрощает разработку приложений

#видео
🔥42🌚1
🤔 #дайджест полезностей для мобильного разработчика

🔖 Чтение и запись в User Defaults Swift — статья о том, как использовать User Defaults в Swift для хранения и изменения настроек приложения, которые сохраняются между запусками.

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

🔖 Фреймворк UI Flutter — как работает UI-фреймворк Flutter, который позволяет создавать кросс-платформенные приложения с высокой производительностью и качеством.

🔖 Мелкие и глубокие копии в Kotlin — реализация поверхностного и глубокого копирования объектов в Kotlin.

🔖 DebouncedClosure в Swift — создание класса Debouncer, который принимает замыкание и задержку в миллисекундах, и использование его для оптимизации сетевых запросов, поиска или обработки событий пользовательского интерфейса.
👍3
📱 Бесплатный Android-эмулятор для macOS

Основные преимущества этой утилиты заключаются в простоте загрузки любимых приложений и игр из Google Play Store, а также возможность легко тестировать ваш веб-сайт или приложение непосредственно в эмуляторе Android.

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

Минимальные требования: Apple Silicon/Intel Mac на macOS 11, macOS 12, macOS 13, или macOS 14

Скачать можно тут.

#полезное
🔥3
👨‍💻 Как я стал iOS разработчиком

Статья о том, как автор стал iOS разработчиком в 32 года без профильного образования, курсов, английского языка и знакомых в IT. Он рассказывает о своем пути обучения, проблемах, с которыми столкнулся, и советах для начинающих.

Читать
👍7🥱3
🤔 MacBook Pro 2015 для учебы в 2023-м?

Автор объясняет, почему он решил купить MacBook Pro 2015 в 2023 году, и как он нашел хорошее предложение. Сравнивает с другими моделями, делится опытом использования и делает вывод.

Читать
🥱92😁1
#вопросы_с_собеседований

Вопрос по Kotlin

Что такое Layouts, какие виды вы знаете и как их применять?

Layouts в Android — это структуры, которые определяют расположение элементов интерфейса на экране. Некоторые из основных типов layouts и их особенности:

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

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

3. FrameLayout: Разработан для замещения одного элемента другим. Дочерние элементы накладываются друг на друга, что делает его подходящим для ситуаций, когда нужно перекрывать один виджет другим.

4. ConstraintLayout: относительно новый и более гибкий тип layout, позволяющий создавать сложные интерфейсы с множеством ограничений без необходимости вложенности и с минимальной производительной нагрузкой.

5. GridLayout: выстраивает элементы в двумерной сетке. Подходит для создания компактных, табличных макетов.

6. TableLayout: группирует элементы в ряды и колонны, подобно таблицам в HTML. Подходит для простых табличных макетов без сложной стилизации.

Применение каждого из этих layouts зависит от конкретных задач, которые вы хотите решить в вашем приложении.
🤔10👍6🔥3
👨‍💻 Изучаем чистую архитектуру Flutter на практике

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

Если говорить про Flutter, хорошая архитектура позволяет держать отдельно логику приложения от того, что связано с телефонами и компьютерами, например, от экранов и кнопок. Это также делает тестирование кода проще, потому что можно проверять каждую часть по отдельности.

Содержание:

00:00 Введение
03:44 Добавление пакетов и создание структуры папок
06:33 Определение классов сущностей
09:05 Создание классов и моделей репозитория
11:27 Создание запросов к API с помощью Retrofit
14:40 Варианты использования
17:54 Создание блока
21:16 Инъекция зависимостей
24:32 Отображение новостей
29:20 Локальная база данных
33:39 Добавление методов базы данных в слои
36:45 Сохранение и удаление статьи из базы данных

#полезное
👍4
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🔸 Собеседование iOS разработчика в Yandex

Пробовали пройти собеседование в Яндекс? Уверен, вам будет интересно увидеть, как процесс происходит с перспективы участника, с комментариями с той стороны! Вы получите представление о том, на что акцентирует внимание интервьюер, как подходить к решению задач и что необходимо для того, чтобы стать частью команды Яндекса.

Смотреть
👍42
#дайджест полезностей для мобильного разработчика

✳️ Распространение версий Android — как изменилась доля разных версий операционной системы Android.

✳️ Kotlin перешёл в stable — руководитель мобильной разработки в компании KTS, делится своим опытом использования KMP в проектах и объясняет, почему он считает KMP перспективным и удобным инструментом.

✳️ Passkey — удобство, безопасность и совместимость технологии.

✳️ Эмулятор iPhone OS — проект touchHLE, который является высокоуровневым эмулятором приложений для iPhone OS.

✳️ Оптимизация приложений для Android — автор оптимизировал память своего Android-приложения, которое использует много изображений.
🔥3
👨‍💻 Друзья, вечерний пост «напоговорить»

Как вы пришли в IT-сферу и почему выбрали мобильную разработку? Что вас особенно привлекает в мобильной разработке? Рассматривали ли вы смену направления? Если да, то на какое.

Пишите в комментариях свою историю 👇
👍1
💡 Повышаем качество кода iOS

Задумывались ли вы, как улучшить качество кода? Предлагаем взглянуть на статью, которая содержит несколько советов для разработчиков iOS, чтобы избежать распространённых ошибок и помочь им улучшить свои приложения. Статья состоит из пяти разделов, каждый из которых посвящен определенному аспекту разработки iOS, такому как качество кода, управление зависимостями, автоматизация, интеграция Firebase и генерация кода.

Например, он рекомендует использовать SwiftLint для проверки качества кода и соблюдения стиля, CocoaPods для управления зависимостями и интеграции сторонних библиотек, Fastlane для автоматизации сборки, тестирования и развертывания приложений.

Читать
🔥2
⚔️ Структурно-ориентированное программирование против протокольно-ориентированного программирования в Swift

Структурно-ориентированное программирование (SOP) подразумевает построение приложений с использованием структур, перечислений и примитивов. Этот подход упрощает код, делает его более предсказуемым и безопасным с точки зрения памяти благодаря избеганию общих ссылок и мутации состояния.

Протокольно-ориентированное программирование (POP) это идеология, в которой протоколы используются для определения и реализации поведения и функциональности. Протоколы в Swift позволяют создавать гибкие и модульные программные интерфейсы. Они также поддерживают расширения, что позволяет добавлять функциональность к существующим типам без наследования.

Сравним два подхода:

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

2. Изменяемость: структуры являются значимыми типами (value types) и предоставляют автоматическую безопасность потоков за счёт копирования значений при передаче, а протоколы, в свою очередь, не определяют, является ли тип значимым или ссылочным, оставляя выбор на усмотрение разработчика.

3. Повторное использование кода: у SOP это может быть ограничено, поскольку структуры не могут наследоваться, что иногда приводит к дублированию кода, а POP, в свою очередь, улучшает повторное использование кода и уменьшает связанность, поскольку различные типы могут совместно использовать один и тот же протокол.

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