Библиотека мобильного разработчика | 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
🧰 Секреты Kotlin Flow. Уверен, что знаешь как он работает?

Как работает Kotlin Flow, одна из новых функций языка Kotlin для асинхронного программирования. Автор рассказывает о разнице между последовательным и параллельным потоком, а также о том, как использовать операторы flowOn и buffer для управления потоком данных. Статья с примерами кода, которые показывают, как создавать и использовать потоки в Kotlin. Проверь и подтяни свои знания.💡

📖 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
👨‍💻 Переносим разработку под iOS и macOS на Neovim

Хотите попробовать разработку, используя только Neovim? Эта статья для вас. Автор статьи рассказывает, как установить и настроить различные плагины, чтобы обеспечить функции, такие как автодополнение кода, синтаксический анализ, форматирование, запуск тестов, отладка, создание симуляторов и многое другое. Также затрагивает тему преимущества и недостатка среды вместо Xcode.

Если готовы к приключениям, ознакомиться можно здесь 🔖
🔥3🥱2
Когда решил освоить библиотеку за день:

#memes
😁29👍2
🎓💻 Продолжаем разбирать методы работы с массивами в Swift

Ознакомиться с первой частью можно тут 🔗

Часть вторая 👇

Первый метод — .append

Метод используется для добавления нового элемента в конец массива Пример:


var a = [🔥, 💧, ☀️, ❄️, 🔥]
a.append(☀️)
print(b) // [🔥, 💧, ☀️, ❄️, 🔥, ☀️]

Второй метод — .insert

Метод для вставки нового элемента в массив на указанную позицию. Пример:

var a = [🔥, 💧, ☀️, ❄️, 🔥]
a.insert(💧, at: 2)
print(a) // [🔥, 💧, 💧, ☀️, ❄️, 🔥]

Третий метод — .removeFirst

Используется для удаления первого элемента из упорядоченной коллекции. Пример:

var a = [🔥, 💧, ☀️, ❄️, 🔥]
a.removeFirst()
print(b) // [💧, ☀️, ❄️, 🔥]

Четвертый метод — .dropFirst

Метод в отличие от removeFirst(), не изменяет исходный массив. Вместо этого он создает новый «вид» на исходную коллекцию, исключая указанное количество элементов с начала. Пример:

var a = [🔥, 💧, ☀️, ❄️, 🔥]
let b = a.dropFirst(2)
print(b) // [☀️, ❄️, 🔥]

Пятый метод — .dropLast

Метод такой же, как и предыдущий, только удаляет элементы массива с конца. Пример:

var a = [🔥, 💧, ☀️, ❄️, 🔥]
let b = a.dropLast(2)
print(b) // [🔥, 💧, ☀️]

Шестой метод — .shuffle

Метод используется для перемешивания (или перетасовки) элементов в массиве случайным образом. Пример:

var a = [🔥, 💧, ☀️, ❄️, 🔥]
let b = a.shuffle()
print(b) // [☀️, 🔥, 💧, ❄️, 🔥]

Сохраняй и пользуйся 📌
Please open Telegram to view this post
VIEW IN TELEGRAM
7🥱4
🚀 Избегаем ловушек отмены корутин в Kotlin

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

Содержание:

00:00 — Начало
00:41 — Ловушка №1
09:23 — Ловушка №2
17:03 — Ловушка №3

#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🔖 Как получить международный оффер iOS-разработчику?

Доклад Дарьи Шульгиной, основательницы сервиса по поиску работы за рубежом AgileFluent, о развитии международной карьеры. Она делится своим опытом и опытом своей команды по оказанию помощи в поиске работы в разных странах, в первую очередь в Европе. В докладе рассматриваются такие ключевые моменты, как:

– Целесообразность поиска работы за рубежом;
– Факторы, влияющие на предложение работы за рубежом;
– Планирование поиска работы;
– Трудности получения приглашений на собеседование;
– Распространённые ошибки при поиске работы.

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

🔗 Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥21
📱 Свайпы на ScrollView без жестов?

В видео автор рассказывает, как создать Swipe Actions для ScrollView с помощью новых API iOS 17. В SwiftUI вы можете добавить модификатор .swipeActions() к элементам списка. Этот модификатор позволяет добавлять кнопки, которые появляются при свайпе элемента влево или вправо.

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

🔹 Новые API в Jetpack Compose — статья о новых API для адаптивных макетов в Jetpack Compose, современном инструменте для создания нативного пользовательского интерфейса на Android.

🔹 Не все тесты одинаковы — различные типы UI-тестов для Android-приложений и их особенности.

🔹 Миграция с kapt к KSP — как перейти от использования kapt к KSP в проектах на Android. KSP — это альтернатива kapt, которая анализирует код Kotlin напрямую, что ускоряет сборку в два раза.

🔹 События как состояние — критика популярной идеи о том, что события в пользовательском интерфейсе должны быть выражены как состояния, а не как потоки объектов, которые могут быть потреблены компонентами UI.

🔹 In-App Update — как реализовать функцию обновления, которая позволяет активным пользователям обновлять приложение без перехода в Google Play.
2🔥1
Мы запускаем серию исследований — и вы можете нам в этом помочь!

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

Помогите нам выбрать интересные темы: может быть, вы давно хотели узнать, как изменилась зарплата у тех, кто релоцировался? Или гадаете, сколько лет нужно, чтобы стать миддлом?

Присылайте интересующие вас темы в комментарии — интересные мы возьмем в работу и поделимся с вами результатами 💙
👍21
⚙️ CoreML модель на сервере с Vapor

Фреймворк CoreML от Apple предназначен для машинного обучения в приложениях, работающих на платформах Apple. Однако, если мы захотим использовать эту модель и на Android? Статья о том, как развернуть нашу CoreML модель на сервере 👇

📖 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
2
👁Помогите «Библиотеке программиста» лучше узнать свою аудиторию

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

Пожалуйста, ответьте на несколько вопросов — это поможет нам делать более полезные и интересные посты!

Первая часть опроса 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#вопросы_с_собеседований

Вопрос по Swift

Что такое Семафор в Swift?

Семафор в программировании — это средство синхронизации, используемое для управления доступом к общим ресурсам несколькими потоками.

В Swift семафор представлен классом DispatchSemaphore, который входит в библиотеку Grand Central Dispatch (GCD). GCD предлагает простой и эффективный способ управления параллельностью в многозадачных приложениях. Класс DispatchSemaphore имеет два основных метода: signal() и wait(). Метод signal() увеличивает значение семафора на единицу, в то время как wait() уменьшает его на единицу. Если значение семафора меньше или равно нулю, метод wait() блокирует поток до того момента, пока значение семафора не станет больше нуля.

Сценарий использования семафора в Swift может выглядеть следующим образом:

import Foundation

let semaphore = DispatchSemaphore(value: 1)

// Поток 1
DispatchQueue.global().async {
semaphore.wait()
// Критическая секция
print(«Поток 1 внутри критической секции»)
sleep(2)
semaphore.signal()
}

// Поток 2
DispatchQueue.global().async {
semaphore.wait()
// Критическая секция
print(«Поток 2 внутри критической секции»)
semaphore.signal()
}

// Ожидание завершения всех операций
DispatchQueue.global().sync {
// ...
}
👍51
💧 Топ-10 утечек памяти в Android

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

Узнать причины утечек 🚰
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🗺 5 ошибок, которые вы допускаете при использовании Async/Await в Swift

Как правильно использовать async/await в Swift, который позволяет упростить асинхронное программирование. Что можно и что нельзя делать с async/await, как избегать распространенных ошибок и как повысить производительность и читаемость кода. Обо всём подробнее в статье 👨‍💻

📖 Читать подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🌐 Работа с сетью во Flutter

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

📌 RESTful API сервер с помощью фреймворка conduit на вашем компьютере.
📌 Использование GET, PUT, POST и DELETE запросов
📌 Работа с Future, async и await для асинхронного программирования.

Разбираемся подробно здесь 🔗
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1