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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
Forwarded from Библиотека программиста | программирование, кодинг, разработка
📨 Как работают очереди и брокеры сообщений

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

1️⃣ Пользователь загружает большой файл для обработки.
2️⃣ Веб-сервер принимает файл и создает задание.
3️⃣ Задание добавляется в очередь задач, а файл загружается в объектное хранилище.
4️⃣ Позже рабочий процесс забирает задания из очереди одно за другим и обрабатывает их, получая файл из хранилища.

Это самый простой пример. Очереди сообщений можно использовать для:

✔️ Планирования и управления фоновыми задачами.
✔️ Распределения задач между несколькими рабочими процессами.
✔️ Управления сервисами подписки и уведомлений.
✔️ Буферизации данных.
✔️ Повторных попыток обработки платежей и многого другого.

Подробнее читайте в нашем гайде 👇

🔗 Читать статью
🔗 Зеркало
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍2
Вакансии «Библиотеки программиста» — ждем вас в команде!

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

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
This media is not supported in your browser
VIEW IN TELEGRAM
📐 Избавляемся от рутинных ADB команд с помощью Shortcuts

Это не инструкция по использованию Shortcuts на Mac. Это про то, как легко можно упростить себе жизнь и создать многофункциональный инструмент без глубоких знаний программирования.

📖 Статья даст готовое решение для автоматизации работы с командами ADB, которыми автор делится в конце. Но главное — это идея, которую вы сможете адаптировать к своим ежедневным процессам.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍2😁2🔥1
😭💰⬆️ Shut up and give my money: как просить повышения зарплаты

Рассказываем, когда и как правильно поднимать вопрос о повышении зарплаты. Проверенные тактики, аргументы и советы.

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

📖 Читать статью
📖 Зеркало
4
⚡️Разыгрываем флагманский смартфон

«Библиотека программиста» разыгрывает один из трех смартфонов на выбор:
🔹Samsung Galaxy S24 Ultra на 1 ТБ
🔹Xiaomi 14 Ultra на 512 ГБ
🔹iPhone 16 Pro Max на 512 ГБ

🔥 А еще 99 участников розыгрыша получат скидку 50% на наш курс Базовые модели ML и приложения!
Промокод будет действителен до 20 ноября.

Условия просты:
→ подписаться на Библиотека нейротекста
→ подписаться на Библиотека нейрозвука
→ подписаться на Библиотека нейрокартинок
→ нажать на кнопку «Участвовать» под этим постом

Итоги появятся 30 октября в 20:00 по московскому времени в нашем канале Библиотека программиста. Затем мы свяжемся с победителем, который сам выберет смартфон. Тем, кто получит промокод, мы вышлем его в течение недели после окончания розыгрыша.

⚠️ Убедитесь, что вам можно написать в личные сообщения или следите за результатами — если мы не сможем с вами связаться, то не сможем и отправить приз. Доставить мы можем только в города России и Беларуси.
👍2
Objective-C не кусается: как перестать бояться Legacy и стать настоящим iOS-ниндзя

📖 Поговорим про тему, которая волнует многих разработчиков: использование старых технологий в iOS-разработке, таких как Objective-C. Тут возникает очень насущный вопрос, является ли он легаси?

Легаси — это не просто старый код, написанный на устаревших языках или с использованием старых технологий, это любой код, который сложно поддерживать и развивать. Это может быть и относительно новый код, если он плохо структурирован, недостаточно документирован или содержит множество технического долга.
💾 TinyStorage — простая и легкая замена UserDefaults для постоянного хранения данных

TinyStorage — простая и легкая замена UserDefaults (не обертка, а именно замена, лишенная некоторых недостатков нативного фреймворка) с более надежным доступом и встроенной поддержкой типов Codable.

Как и UserDefaults, TinyStorage предназначен для использования с относительно небольшими значениями. Не храните в TinyStorage массивные базы данных, так как он не оптимизирован для этого, но он достаточно быстр для извлечения сохраненных типов Codable. В качестве ориентира, размер хранилища не должен превышать 1 МБ.

Ссылка на GitHub 😺
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰4
🤖 Вышла бета-версия iOS 18.2 с Apple Intelligence

Сегодня компания Apple выложила первые бета-версии грядущих обновлений iOS 18.2, iPadOS 18.2 и macOS Sequoia 15.2 для тестирования разработчиками.

Apple представила новые функции Siri, инструменты для создания изображений и многое другое. Вот что нас ждёт ждёт:

Image Playground (приложение Apple для создания изображений, которое может создавать с помощью текстовых подсказок).
Image Wand (Генерация по грубому эскизу с Apple Pencil на iPad).
Genmoji (это новые кастомные emoji).
Интеграция Siri с ChatGPT (для выполнения определенных запросов, но только с разрешения пользователя).
Visual Intelligence (функция, которая позволяет получать информацию о том, что находится вокруг вас).
Инструменты для письма (Apple улучшает функцию Writing Tools, добавляя возможность вносить изменения по своему усмотрению).

Новые бета-версии включают API для разработчиков, позволяющие добавлять инструменты Writing Tools, Genmoji и Image Playground в приложения сторонних разработчиков.

На данный момент бета-версия доступна только разработчикам, у которых есть устройство с поддержкой Apple Intelligence.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Экономьте время, копируя готовый код в свой проект

Представьте, что вы могли бы скопировать код страницы и вставить его в свой новый или существующий проект. С FlutterLibrary это возможно. На странице можно найти виджеты, готовые шаблоны и отдельные страницы, которые помогут вам создавать приложения еще быстрее.

Всё просто! Выбираете любой элемент, и наведении курсора на любой из экранов вы увидите кнопку «Скопировать код». Нажмите на него, и все готово — вставьте код в свой проект.

Ссылка на проект 👈
👍2
💪 Обновление Apple TestFlight: переработанный дизайн и критерии тестирования

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

Также добавили опцию Tester Criteria. С её помощью разработчики могут указать список устройств, для которых нужно провести тестирование. Можно выбрать определённую модель iPhone и указать версию iOS. Критерии применяются как к публичным ссылкам на тестирование, так и к частным приглашениям.

Помимо этого появилась статистика. Разработчики теперь могут видеть, сколько пользователей просматривали приложение в TestFlight и сколько из них решили установить бета-версию. Также в отдельном пункте показывается, сколько тестировщиков не соответствует установленным критериям тестирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🥰1
Встречаем yx_scope: DI-фреймворк для работы со скоупами в открытом доступе

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

Сложности подтолкнули Яндекс к поиску собственного решения, которое удовлетворяло бы всем требованиям. И теперь они готовы поделиться им с комьюнити: решение — это группа библиотек yx_scope.

📖 Читать статью
😺 Ссылка на GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
iOS 18 для разработчиков: Ключевые изменения в UIKit

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

В этой статье автор делится и показывает самые интересные обновления в UIKit — новый TabBar, анимации, совместимость UIKit/SwiftUI и многое другое.
👍31
🔒 Пример взлома покупок в Android-приложении и защита от этого

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

📖 В этой статье автор рассказывает о том, как Frida, может обойти механизмы биллинга в приложениях для Android. Также показывает, как можно взломать небезопасные процессы покупок и что могут сделать разработчики.
👍2🔥1
#вопросы_с_собеседований

Kotlin

Вопрос: Как создать «статический» метод для перечисления в Kotiln?

В классе enum можно определить объект класса:

enum class CircleType {
FIRST,
SECOND,
THIRD;
companion object {
fun random(): CircleType = FIRST
}
}

Потом вы сможете вызывать эту функцию как CircleType.random().
🥱9👍32🌚1
Решение проблемы race condition в Kotlin корутинах

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

📖 Существует 6 способов решения проблемы состояния гонки.
😁2
This media is not supported in your browser
VIEW IN TELEGRAM
Создание анимаций между view в SwiftUI

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

Где используются такие анимации:

– Навигация между экранами.
– Добавление (или удаление) элементов из списка.
– Показ модальных вьюх.

📖 Как создаются такие эффекты (и их комбинация) — узнать можно в этой статье.
🔥3👏2
🕐 Делаем кастомный Date and Time picker как в Telegram на Kotlin Jetpack Compose

Вдохновившись колесиками для выбора времени и даты напоминаний Telegram, автор решил сделать на одном из своих пет‑проектов что‑то подобное. Первой мыслью было — найти этот код в исходниках Telegram, но т.к. скорее всего, у них это написано на Java, решил не тратить время на раскопки в Java‑коде, и сделал это на Jetpack Compose.

📖 Как сделать элемент с аналогичной функциональностью и внешне чем-то похожий на телеграмовский
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰5
#дайджест для Android-разработчиков 👋

🔹 ByteWeaver в Open Source: инструментирование байт-кода Java во имя великого блага.

🔹 Разработка дизайна на SDUI с Jetpack Compose and Firebase.

🔹 Официальный релиз Koin 4.0.

🔹 Использование Kotlin 2.0 для разработки.

🔹 Размер имеет значение: как измерить и уменьшить вес Android-приложения

🔹 Стань лучше с помощью Compiler Explorer.

🔹 Декларативный подход в организации gradle зависимостей в Android-проектах.

🔹 Как легко рисовать на GoogleMaps с помощью Compose?
👍1
В комментариях под этим постом вы можете сбросить напряжение и послать туда всё, что накопилось за неделю, месяц и даже за год.
👏5
weak vs strong ссылки в Swift. 🚀

При работе с объектами важно правильно управлять памятью, и вот здесь на помощь приходят — weak и strong ссылки!

🔹 Strong ссылки — это те, что «держат» объект в памяти. Если на объект есть хотя бы одна strong ссылка, он останется в памяти. Это удобно, но есть риск создания циклических ссылок, что может привести к утечкам памяти!

🔹 Weak ссылки, напротив, не удерживают объект в памяти. Если на объект остаются только weak ссылки, он будет удалён из памяти. Это полезно для избежания циклов, например, когда объекты ссылаются друг на друга.

💡Используйте strong ссылки, когда нужно гарантировать, что объект будет жить, и weak ссылки, чтобы избежать утечек памяти!

#Swift #iOS
🥱5🔥32👏1