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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
#вопросы_с_собеседований

🐦 Swift

Что такое паттерн Singleton и где он может быть полезен?

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

Пример синглтона:

class NetworkManager {
static let shared = NetworkManager()

private init() {
// Инициализация сетевых конфигураций или задач
}

func fetchData(from url: URL, completion:
@escaping (Data?, Error?) -> Void) {
URLSession.shared.dataTask(with: url) { data, response, error in
DispatchQueue.main.async {
completion(data, error)
}
}.resume()
}
}

В этом примере NetworkManager имеет статическое свойство shared, которое хранит единственный экземпляр класса.
31👍1🥱1
⚙️ Автоматизация обнаружения утечек памяти

Статья о том, как автоматизировать обнаружение утечек памяти с интеграцией CI для iOS. Автор объясняет, что не все циклы удержания являются утечками, и что утечки могут возникать, когда мы теряем ссылку на объект, который имеет цикл удержания. Как использовать инструмент Xcode Memory Graph Debugger для поиска и исправления утечека, автоматизация этого процесса с помощью Fastlane и Danger.

💡 Обо всём подробнее в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1
🍪 Управляем куками в Android

Статья Долгополова Дениса из Ozon Tech, рассказывает о том, как работают куки в Android и как их можно управлять с помощью разных классов и методов. Автор объясняет, что такое куки, зачем они нужны, какие у них свойства и как они влияют на безопасность и производительность приложений. Демонстрирует, как можно использовать WebView для отображения веб-страниц с куками и как настраивать CookieManager и CookieStore для хранения и передачи куков между приложением и сервером.

🤔 Cookie — это что?
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1🎉1
Современный мир прогрессирует, и одно из достижений это супераппы. Но в этом свои минусы — долгая компиляция, огромный код, сложность рефакторинга и огромные затраты на создание новых функций. Решили спросить у вас, что думаете об этом?

Используете ли вы супераппы? Кажутся ли они вам удобными?

#интерактив
1
Вышли первые Mobile Interview — неформальные беседы про мобильную разработку в Яндексе

Ребята из разных команд мобильной разработки Яндекса рассказывают, какие задачи решают каждый день и почему им нравится эта работа. Первые выпуски уже можно посмотреть на YouTube-канале Yandex for Mobile:

🔸 В первом выпуске обсудили инфраструктуру Такси. Как и зачем собирать команду мобильной инфраструктуры приложения и чем ребята занимаются на ежедневной основе.

🔸 Во втором выпуске разбирались в разработке Карт. Какие задачи ребята решают, как адаптируются под сложности определения геолокации, развивается ли MapKit, как уживаются приложения Карт и Навигатора.

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

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

Смотрите интервью и подписывайтесь на канал — скоро там выйдет пятый выпуск Mobile Interview.
3
🥇 Топ приложений за ноябрь в России

Аналитика магазинов приложений в России за ноябрь 2023 года. В ней рассказывается о том, какие приложения были самыми скачиваемыми и зарабатывающими в этот период.

Спойлер: Телеграм и Wildberries в топах по установкам.

Вся статистика тут 📊
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Подборка лучших статей «Библиотеки программиста» за ноябрь: сохраняй в заметки, чтобы не пропустить #самыйсок

🗺️ Дорожная карта Go-разработчика в 2023 году
🧑‍💻 6 карьерных советов программисту
⚖️ 25 курсов, книг и подкастов для развития критического мышления
🐍🎨 Генерация красивых QR-кодов с помощью Python
🔈16+ лучших нейронок для синтеза речи
FAQ по трудоустройству: разбираем самые популярные вопросы
👨‍💻 7 типов «сложных» разработчиков
Дорожная карта DevOps-инженера в 2023 году
❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье
👀 6 способов привлечь внимание работодателя
🤖📜 Искусственный интеллект: краткая история
🔤 Азбука SQL в примерах (часть 1 + часть 2)
🔢 Как научиться решать сложные задачи
🏆 Самые популярные языки программирования 2023
📰 10 признаков фейковой вакансии
🏃 Самоучитель по Go для начинающих (часть 1 + часть 2)
⚛️ 45 вопросов для подготовки к собеседованию по React
🐍 5 задач для подготовки к собеседованию по Python
🐍🤖✍️ Документирование кода и проектов на Python с помощью ChatGPT
👍1🔥1🎉1
#джайджест полезностей мобильного разработчика

🔹 SberPay в своё приложение — как добавить и какие преимущества.

🔹 FlexibleBottomSheet — расширенный нижний экран для Jetpack Compose.

🔹 Библиотека foSho — создаём безопасную и эффективную навигацию в Jetpack Compose.

🔹 Не делайте так — какие практики и действия вредят качеству кода.

🔹 Inline функции — что это такое и зачем они нужны?

🔹 Мастер в функциях — какие функции в Kotlin являются необходимыми для каждого.

🔹 Baseline Profiles — создаём профиль для ускорения приложения.
👍3
💥 Подборка на выходные, кто не знает чем заняться

🎬 «Убийцы цветочной луны» — фильм рассказывает о трагической истории несправедливости, которая произошла в Оклахоме в начале XX века, когда местные индейцы были убиты за то, что нашли нефть на своей земле. В главных ролях сыграли Леонардо ДиКаприо, Роберт Де Ниро, Лили Гладстоун.

🎙️ Подкаст «Секреты собеседований» — различные аспекты собеседований в IT-секторе, включая технические и нетехнические этапы, подготовка резюме и опыт работы с тестовыми заданиями. Гость делится своим опытом работы в разных компаниях и процессами собеседований, включая уникальные вызовы и форматы тестовых заданий.

📖 «Облегчаем путь до мидла» — iOS-разработчик в компании Точка, делится своим опытом перехода из HR в разработку и предлагает советы для ускорения профессионального роста.

📺 «Как работает операционная система» —  Кирилл Розов, руководитель группы Android-разработки в Тинькофф, рассказывает что такое операционная система, граница между ОС и встроенным софтом, как создаются и многое другое.

📱 «Dime» — рассмотрите бесплатный открытый трекер расходов для iOS. Из технических фич — простой, но красивый дизайн, синхронизация с iCloud, кастомные напоминания, биометрическая аутентификация, быстрые действия с домашнего экрана, темная тема, виджеты.
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥1🎉1
🖼️ Легко создаём ассеты для своих проектов

AssetsGen — приложения для разработчиков iOS и Android, которое позволяет легко создавать и управлять ассетами. С помощью AssetsGen вы сможете:

– Генерировать ассеты разных размеров и форматов для разных устройств и платформ;
– Экспортировать ассеты в Xcode и Android Studio.

#полезное
1
🚀 Скрытая фишка typealias

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

💡 Пример:

typealias Point = (x: Int, y: Int)

Но здесь есть но. Если мы будем использовать Double, то код не сбилдится.

typealias Point = (x: Int, y: Int)
let pointUsingInt = Point(x: 1, y: 2)
let pointUsingDouble = Point (x: 3.0, y: 4.0)

И здесь нас спасут generic`и!

typealias Point<T> = (x: T, y: T)

Теперь наш код будем принимать Int и Double.

Но мы можем улучшить код. Ограничиваем ввод только числовым типом:

typealias Point<T: Numeric> = (x: T, y: T)

В чём ещё полезность? Мы можем убрать лишний код в completionHanlder:

typealias CompletionHandler<T> = (Result<T, Error>) –> Void

func fetchData(_ completion: @escaping CompletionHandler<Data>) { }

Выглядит лучше! Осваивайте новую фишку и используйте на практике.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🥱32😁1
📥 iMessage изнутри

В статье вы узнаете внутреннее устройство iMessage, изученного автором в процессе работы над pypush — опенсорсным проектом по воссозданию реализации iMessage. Автор простым языком расссказывает о системе получения сообщений от Apple. От APNs до шифрования и аутентификации.

Ознакомиться со статьей можно тут 🔗
Github pypush ⚙️
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1🎉1
🕸🤖 Новая основа ИИ для Android

Статья рассказывает о Gemini, новой мощной модели искусственного интеллекта от Google для Android. Gemini предназначена для работы в различных системах и представлена в трёх размерах: Ultra, Pro и Nano.

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

Нас ждёт интеграция с новой системой Android AICore в Android 14, обещающая новые горизонты в использовании AI на мобильных устройствах.

📘 Читать статью полностью
Please open Telegram to view this post
VIEW IN TELEGRAM
2
👨‍💻 Функциональное программирование на Dart

Обширное видео по функциональному программированию в Dart, языке программирования, поддерживающем несколько парадигм. Как более эффективно использовать функции функционального программирования, сравнение объектно-ориентированного и функционального подхода к созданию иерархий классов и многое другое.

📖 Содержание:

00:00 — Императивное программирование против функционального
14:12 — Иерархии классов ООП
17:05 — Алгебраические типы данных
23:35 — Обработка ошибок с помощью Try-Catch
27:27 — Обработка ошибок с помощью Either

#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
2🌚1
🧠Чему вы бы хотели научиться?

Расскажите нам о ваших пожеланиях: какие навыки вы хотели бы прокачать в ближайшее время или какую профессию хотели бы приобрести?

За прохождение опроса вы получите промокод на скидку 15% на все наши курсы до конца 2024 года.

👉Опрос по ссылке👈
😁3🔥1
большой #дайджест полезностей по Kotlin и Swift

Swift
🔸 Swift Utilities — интегрируем SwiftUI в UIKit.

🔸 GPT for Apple — набор различных GPT, специализирующиеся на определенных фреймворках Apple.

🔸 Swift Macro — как скомпилировать макрос в бинарный файл и добавить его в спецификацию пода.

🔸 SFSafariViewController — открываем веб-страницы внутри приложения.

🔸 Интерактивные виджеты — Взаимодействуем с виджетами в SwiftUI.

Kotlin

🔹 Dynamic Features — как динамически загружать части функционала приложения в зависимости от потребностей пользователя или возможностей устройства.

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

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

🔹 KSP2 — как настроить и использовать в своих проектах, и какие преимущества он дает.

🔹 CountryCP — библиотека для выбора страны и телефонного кода для Jetpack Compose.
1🔥1🎉1
🗂 Имитируем наследование в структурах

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

Примеры кода, иллюстрации и сама статья по ссылке 🔗
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥1
#вопросы_с_собеседований

🤖 Kotlin

Зачем нужен класс Nothing в Kotlin?

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

Рассмотрим несколько сценариев, когда Nothing может быть использован:

1. Функции, выбрасывающие исключение:

fun throwError(): Nothing {
throw RuntimeException(«This function always throws an exception.»)
}

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

2. Бесконечные циклы:

fun infiniteLoop(): Nothing {
while (true) {
// код, который никогда не завершится
}
}

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

3. Процессы, которые не могут завершиться нормально:

fun launchRocket(): Nothing {
// код запуска ракеты, который не может завершиться нормально
}

Функции, представляющие процессы, которые не могут завершиться нормально, могут использовать Nothing в качестве типа возвращаемого значения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in the widget
VIEW IN TELEGRAM
👍3