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

Список каналов: https://t.me/proglibrary/9197
Учиться у нас: https://proglib.io/w/330353e8

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv
Прайс: @proglib_advertising
Download Telegram
Создаем Flutter-приложение для оплаты через СБП без натива

Автор объясняет, как использовать два пакета из pub.dev для интеграции СБП, описывает структуру API СБП, и демонстрирует шаги по созданию приложения, включая настройку и обработку диплинков, а также отслеживание состояния приложения при переходах в банковские приложения.

Ссылка на статью 🔗
Please open Telegram to view this post
VIEW IN TELEGRAM
InjectionIII — «горячая перезагрузка» для Swift, позволяет обновлять реализацию функций и любых методов классов, структур или перечислений мгновенно в симуляторе iOS без необходимости полной пересборки или перезапуска приложения. Это экономит разработчику значительное количество времени на доработку кода или итерации над дизайном.

По сути, это превращает Xcode из «редактора исходного кода» в «редактор программы», где изменения исходного кода не просто сохраняются на диск, а непосредственно отображаются в вашей работающей программе.

Ссылка на Github
Новинки SwiftUI в iOS 18

Это еще один удачный год для SwiftUI, с очередным пакетом улучшений scrollview, некоторыми полезными функциями macOS, замечательным контролем над отображением текста и многим другим — Apple есть чем гордиться.

Но есть также одно важное архитектурное изменение, о котором вам нужно знать...
#вопросы_с_собеседований

Swift

Вопрос: назовите известные проблемы с многопоточностью?

Ответ:

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

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


var sharedResource = [String]()

DispatchQueue.global().async {
for _ in 0..<1000 {
sharedResource.append("A")
}
}

DispatchQueue.global().async {
for _ in 0..<1000 {
sharedResource.append("B")
}
}
// Предполагаемый результат может быть непредсказуемым, так как оба потока работают с одним и тем же ресурсом одновременно.


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


let queue1 = DispatchQueue(label: "queue1")
let queue2 = DispatchQueue(label: "queue2")

queue1.async {
queue2.sync {
// Делаем что-то
}
}

queue2.async {
queue1.sync {
// Делаем что-то
}
}
// Здесь потоки будут ждать друг друга бесконечно, создавая взаимную блокировку.


3. Условия гонки при работе с памятью (Memory Races): Похоже на условия гонки, но здесь конфликт возникает при доступе к памяти. Это может привести к повреждению данных, когда несколько потоков пытаются одновременно читать и записывать данные в одно и то же место в памяти без должной синхронизации.

4. Голодание (Starvation): Происходит, когда поток никогда не получает доступ к ресурсу или исполнителю из-за постоянного захвата этих ресурсов другими потоками.

5. Чрезмерная синхронизация (Over-Synchronization): Происходит, когда для предотвращения проблем с многопоточностью добавляется слишком много блокировок, что в свою очередь может серьёзно снизить производительность программы, так как потоки часто ожидают возможности доступа к ресурсам.

Чтобы избежать этих и других проблем с многопоточностью, разработчики используют различные техники синхронизации, такие как блокировки, семафоры и барьеры. Однако нужно быть осторожным, чтобы не переусложнить программу и не снизить её производительность.
Побеждаем в конкурсах Telegram без смс и регистрации 💃

Мобильный разработчик из Тинькофф рассказывает про свой опыт участия в контестах от Telegram.

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

Ссылка на доклад 📺
Please open Telegram to view this post
VIEW IN TELEGRAM
#дайджест

🥲 Дайджест интересных материалов по SwiftUI:

Смешиваем цвета в SwiftUI 🖥

Как управлять различными фазами прокрутки в ScrollView ⚙️

Делаем Drag & Drop иконок Tab Bar 👮

Создаем минималистичное приложение Pomodoro Focus Timer

Использование многоступенчатой анимации в SwiftUI

Пример использования недавно выпущенный TextField Selection API 👶

Создание виджета для центра управления iOS 18 👔

Переход с эффектом зума в SwiftUI 💃
Please open Telegram to view this post
VIEW IN TELEGRAM
Полезный помощник для изучения важных тем разработки на iOS. Какие вопросы доступны прямо сейчас:

– Многопоточность
– Алгоритмы
– Память
– Архитектуры
– Код
– Компилятор

Приложение называется IQ-квиз по iOS
Android-разработчики в 2024 году

Команда Яндекс Практикума провела исследование и готова рассказать, как обстоят дела в найме начинающих Android-разработчиков: какие навыки требуются джуниорам для трудоустройства, о чём их спрашивают на собеседованиях и какого опыта достаточно, чтобы получить предложение о работе.

Читать статью 📖
Сделайте так, чтобы комментарии выглядели как история браузера Junior-разработчика 💬👇
⚙️ Удаленная конфигурация с помощью Google Sheets

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

Вы добавляете два столбца, один для «ключа», второй для «значения» и копируете ссылку для обмена! Вам даже не нужен какой-либо механизм аутентификации или что-то еще. Просто ссылка.

Как это можно сделать, читайте здесь 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 Kotlin Script: для кого, зачем и как

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

👉 Доклад поможет расширить кругозор и познакомит с новым инструментом.
Please open Telegram to view this post
VIEW IN TELEGRAM
🎮 Управление памятью в Swift

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

Она объясняет, как Swift использует автоматическое управление памятью с помощью подсчета ссылок (ARC) и как это помогает предотвратить утечки памяти. Кроме того, в статье приводятся примеры, показывающие, как неправильное управление ссылками может привести к циклическим ссылкам и утечкам памяти.

Материал интересный, если не знакомы с управлением памяти в Swift, то советуем ознакомиться.

Ссылка 🔗
Please open Telegram to view this post
VIEW IN TELEGRAM
#вопросы_с_собеседований

Kotlin

Вопрос: В чем преимущество Kotlin для разработки под Android?

Ответ:

1. Более краткий и выразительный синтаксис: Kotlin позволяет писать код более кратко и чисто по сравнению с Java, сокращая количество шаблонного кода. Это делает код легче для чтения и поддержки.

2. Null безопасность: В Kotlin встроена поддержка обработки значений `null`, что помогает избежать `NullPointerException` — одной из наиболее распространенных ошибок в Java-приложениях.

3. Расширенные функции (Extension functions): Kotlin позволяет добавлять новые функции к существующим классам без их модификации. Это упрощает работу с API Android, делая код более читабельным и лаконичным.

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

5. Полная совместимость с Java: Kotlin полностью совместим с Java, что позволяет легко использовать все существующие Java-библиотеки и фреймворки в Kotlin-проектах, а также постепенно переводить существующий Java-код на Kotlin.

6. Инструментальная поддержка: Kotlin полностью поддерживается в Android Studio, что обеспечивает удобные инструменты для разработки, такие как автодополнение, рефакторинг кода, проверка ошибок в реальном времени.

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

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

9. Официальная поддержка Google: С 2017 года Kotlin является официальным языком для разработки Android-приложений, что гарантирует его постоянное обновление и поддержку со стороны Google.
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

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

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
Топ 5 плагинов для Android Studio

1. Kotlin Fill Class — фантастический плагин, который делает разработку намного более приятной и быстрой. С его помощью вы можете заполнять классы и функции на лету.

2. ADB Idea — это дополнение к ADB, которое вы можете запустить с помощью всплывающего окна.

3. Android Drawable Preview — В каталоге drawable легко заблудиться, особенно в больших проектах. С помощью этого плагина вы больше не заблудитесь, так как в нем отображаются небольшие предварительные изображения всех значков внутри каталога.

4. Key Promotex X — поможет вам освоить основные сочетания клавиш во время работы. Когда вы нажимаете мышью на кнопку в среде IDE, Key Promoter X показывает сочетание клавиш, которое вы должны были использовать вместо этого.

5. IdeaVim — это Vim в Android Studio. Вы можете настроить его по своему вкусу с помощью файла .ideavimrc в вашем домашнем каталоге, как если бы вы использовали .vimrc.
📊 Новые структуры данных для iOS разработчика

Мобильные разработчики редко сталкиваются в работе со сложными структурами данных. Как правило, в рутинных задачах вполне достаточно уметь использовать Array, Dictionary и Set.

Наверное, вы слышали и о деревьях, графах, связанных списках Tree, Graph, Linked List, но в повседневной работе мобильного разработчика вряд ли вы с ними сталкиваетесь. Автор рассказывает о редких и недооцененных структурах данных. И самое главное, как впустить их в свою рутинную работу программиста.

Ознакомиться можно по ссылке 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
Новый способ оптимизации стабильности в Jetpack Compose

Новый strong skipping mode для управления стабильностью классов в Jetpack Compose меняет рекомпозиции в вашем приложении.

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