Библиотека мобильного разработчика | 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
Новинки SwiftUI в iOS 18

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

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

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): Происходит, когда для предотвращения проблем с многопоточностью добавляется слишком много блокировок, что в свою очередь может серьёзно снизить производительность программы, так как потоки часто ожидают возможности доступа к ресурсам.

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

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

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

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

🥲 Дайджест интересных материалов по 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
🔥5
Android-разработчики в 2024 году

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

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

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

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

Как это можно сделать, читайте здесь 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤖 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
👍3🥰2
#вопросы_с_собеседований

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.
🤔5
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

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

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

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
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 запрещена на территории РФ
1
Топ 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.
👍2
📊 Новые структуры данных для 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 или даже как стабилизировать все классы вашей доменной модели.
🥰2
👩‍💻 Вышли первые публичные беты новых ОС от Apple

Большинство багов уже пофиксили, так что можно обновляться. Кто уже протестировал?
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔3🔥1
🤖 Google выпустила финальную бета-версию Android 15. Что нового и когда релиз?

→ Новый раздел «Диагностика системы» в меню «Настройки» → «Система». Здесь можно провести тесты дисплея и сенсорного слоя, а также узнать статистику использования аккумулятора и накопителя. Также можно провести диагностику другого устройства.

→ Функция «Оптимизация зарядки» в меню «Настройки» → «Батарея». При её включении аккумулятор смартфона будет заряжаться до 80%, что позволит продлить срок его службы.

→ Из системы исчез PNG-файл шрифта, отвечающий за эмодзи. Впервые векторные изображения эмодзи появились в Android 13, но до сих пор в системе оставался старый формат эмодзи для совместимости.

→ Исправлена проблема, из-за которой устройства Pixel могли «окирпичиться» (перестать загружаться) при сбросе к заводскому состоянию вскоре после установки обновления системы.

→ Устранены другие ошибки в разных элементах операционной системы.

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

#новости
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉9
Кто хотел, но решился: как стать Android разработчиком

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

Также большим бонусом, внутри лежит roadmap — статья