8058
Полезные материалы по всему, что может быть интересно мобильному разработчику. Обратная связь: @proglibrary_feedback_bot Конференции и митапы: @event_listener_bot По вопросам рекламы: http://ad.proglib.io/?utm_source=mobileproglib или @proglib_adv
📘 Новый взгляд на код-стайл в Swift
В мире Swift существуют разные соглашения по код-стайлу, и многие из нас привыкли к стандартам вроде AirBnb’s Swift Code Convention. Вы наверняка сталкивались с правилами использования PascalCase для типов и lowerCamelCase для всего остального, или же указания именовать булевы переменные с приставками вроде is или has.
Однако придерживаться нескольких соглашений может быть не очень удобно. Автор uwaisalqadri/write-swift-like-apple-4c4331cf140c">статьи рассказывает, как пришёл к выводу, что для проектов на Swift наиболее эффективно следовать код-стайлу Apple.
👉 uwaisalqadri/write-swift-like-apple-4c4331cf140c">Читать статью
#Swift #iOS
🍏 Малоизвестные фичи SwiftUI
SwiftUI предоставляет массу полезных инструментов, однако некоторые возможности остаются в тени.
Специально для вас нашли статью с неочевидными, но интересными фичами, которые упростят разработку и добавят гибкости интерфейсу.
👉 Читать статью
#iOS #Swift
📌 Async, await и deferred в Kotlin
В Kotlin три ключевых инструмента для асинхронной работы: async, await и Deferred.
🔹 async запускает задачу в фоновом потоке и возвращает Deferred, объект с результатом. Полезно, когда нужно выполнить несколько операций одновременно.
🔹 await возвращает результат из Deferred, приостанавливая выполнение, пока задача не завершится. Если использовать await сразу после async, задача выполнится синхронно, поэтому лучше запускать задачи параллельно и вызывать await после всех.
🔹 Deferred — это «обещание» результата, который будет позже. Через него можно узнать статус, отменить задачу или дождаться её завершения.
Итак, async запускает, await возвращает результат, а Deferred — сам результат, доступный позже.
#Kotlin
Создавай ИИ-приложения как профи: 17 опенсорсных инструментов
Полный набор инструментов для создания ИИ-приложений: генеративные модели, фреймворки для работы с ИИ-агентами и многое другое.
Читать статью
Пятничный #дайджест для мобильщиков
🍏 iOS 18 для разработчиков
Статья-обзор ключевых изменений в UIKit
🤖 Гайд для новичков в Android разработке
Статья про написание Android-приложения, которое не будет стыдно положить в портфолио.
⚙️ Flutter-приложения на Авроре
Статья про создание Flutter-приложения на Авроре
🍏 Objective-C не кусается
Статья про то, как перестать бояться Legacy и стать настоящим iOS-ниндзя
🤖 Опыт использования Dynamic Feature Delivery
Статья про динамические модули в приложениях на Android
Бу!
Сегодня мы в костюме шестидневной рабочей недели! 😅
А вы как справляетесь с нагрузкой?
Делитесь своими лайфхаками и мемами — поддержим друг друга! 🧑💻
#интерактив
🚀 GitHub Copilot в Xcode!
Нейросетевой помощник GitHub Copilot расширяет свои возможности, теперь он доступен для Xcode (Public Preview)!
Что может Copilot в Xcode?
• Предлагать варианты завершения кода в режиме реального времени
• Поддерживать языки Swift и Objective-C
• Автоматически подбирать целые блоки кода, а не только отдельные строки
• Помогать избежать уязвимостей и некачественного кода
Чтобы подключить Copilot в Xcode, нужно установить расширение из официальной инструкции.
👉 GitHub Docs
В комментариях под этим постом вы можете сбросить напряжение и послать туда всё, что накопилось за неделю, месяц и даже за год.
Читать полностью…
🕐 Делаем кастомный Date and Time picker как в Telegram на Kotlin Jetpack Compose
Вдохновившись колесиками для выбора времени и даты напоминаний Telegram, автор решил сделать на одном из своих пет‑проектов что‑то подобное. Первой мыслью было — найти этот код в исходниках Telegram, но т.к. скорее всего, у них это написано на Java, решил не тратить время на раскопки в Java‑коде, и сделал это на Jetpack Compose.
📖 Как сделать элемент с аналогичной функциональностью и внешне чем-то похожий на телеграмовский
Решение проблемы race condition в Kotlin корутинах
Синхронизация корутин в Android имеет огромное значение для обеспечения безопасности и эффективности многопоточности. Коррутины упрощают управление асинхронными задачами, но без должной синхронизации могут возникнуть проблемы, такие как race condition, что приведет к неправильному поведению приложения.
📖 Существует 6 способов решения проблемы состояния гонки.
🔒 Пример взлома покупок в Android-приложении и защита от этого
Встроенные покупки являются основой современных приложений, позволяя пользователям разблокировать премиум-функции или подключать подписку. Однако, когда разработчики не обеспечивают должной безопасности процесса выставления счетов, могут возникнуть уязвимости, позволяющие обойти проверку платежей.
📖 В этой статье автор рассказывает о том, как Frida, может обойти механизмы биллинга в приложениях для Android. Также показывает, как можно взломать небезопасные процессы покупок и что могут сделать разработчики.
Встречаем yx_scope: DI-фреймворк для работы со скоупами в открытом доступе
Для больших проектов не всегда хватает одного модуля: иногда надо пошарить какие‑нибудь классы или UI‑элементы. Так со временем проект дробится на много мелких модулей, которые так или иначе связаны разного рода зависимостями. И если за этим не следить, то рано или поздно структура проекта может стать запутанной.
Сложности подтолкнули Яндекс к поиску собственного решения, которое удовлетворяло бы всем требованиям. И теперь они готовы поделиться им с комьюнити: решение — это группа библиотек yx_scope.
Читать статью
Ссылка на GitHub
Экономьте время, копируя готовый код в свой проект
Представьте, что вы могли бы скопировать код страницы и вставить его в свой новый или существующий проект. С FlutterLibrary это возможно. На странице можно найти виджеты, готовые шаблоны и отдельные страницы, которые помогут вам создавать приложения еще быстрее.
Всё просто! Выбираете любой элемент, и наведении курсора на любой из экранов вы увидите кнопку «Скопировать код». Нажмите на него, и все готово — вставьте код в свой проект.
Ссылка на проект 👈
💾 TinyStorage — простая и легкая замена UserDefaults для постоянного хранения данных
TinyStorage — простая и легкая замена UserDefaults (не обертка, а именно замена, лишенная некоторых недостатков нативного фреймворка) с более надежным доступом и встроенной поддержкой типов Codable.
Как и UserDefaults, TinyStorage предназначен для использования с относительно небольшими значениями. Не храните в TinyStorage массивные базы данных, так как он не оптимизирован для этого, но он достаточно быстр для извлечения сохраненных типов Codable. В качестве ориентира, размер хранилища не должен превышать 1 МБ.
Ссылка на GitHub 😺
⚡️Разыгрываем флагманский смартфон
«Библиотека программиста» разыгрывает один из трех смартфонов на выбор:
🔹Samsung Galaxy S24 Ultra на 1 ТБ
🔹Xiaomi 14 Ultra на 512 ГБ
🔹iPhone 16 Pro Max на 512 ГБ
🔥 А еще 99 участников розыгрыша получат скидку 50% на наш курс Базовые модели ML и приложения!
Промокод будет действителен до 20 ноября.
Условия просты:
→ подписаться на Библиотека нейротекста
→ подписаться на Библиотека нейрозвука
→ подписаться на Библиотека нейрокартинок
→ нажать на кнопку «Участвовать» под этим постом
Итоги появятся 30 октября в 20:00 по московскому времени в нашем канале Библиотека программиста. Затем мы свяжемся с победителем, который сам выберет смартфон. Тем, кто получит промокод, мы вышлем его в течение недели после окончания розыгрыша.
⚠️ Убедитесь, что вам можно написать в личные сообщения или следите за результатами — если мы не сможем с вами связаться, то не сможем и отправить приз. Доставить мы можем только в города России и Беларуси.
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
📱Инклюзивный дизайн мобильных приложений
Задумывались ли вы, почему перила у лестницы находятся по правую руку, цифры в лифте идут снизу вверх по возрастанию, а бутылку с газировкой делают такой формы, чтобы рука могла комфортно обхватить её?
Такие детали очень важны для определённых категорий людей. К примеру, в статье описаны реальные истории о пользе инклюзивного дизайна.
А если хотите сами создавать инклюзивный и доступный дизайн рекомендуем статью.
🔑 Шифруем файлы в Android
Мобильные приложения уже давно перестали быть тонкими клиентами, и вопрос защиты локальных данных становится всё актуальнее.
Однако мир криптографии не такой страшный, как кажется на первый взгляд.
А поможет вам в ней разобраться крутейший доклад.
Автор расскажет про опыт внедрения шифрования локальных файлов в приложении VK Teams, в том числе про подводные камни и неочевидные моменты, с которыми пришлось столкнуться.
👀 Смотреть доклад
#mobius#android
Хотите аналог Postman для МП?
Inspektify — KMP библиотека для Android и iOS с возможность отслеживания сетевых операций в реальном времени на основе Ktor
👉GitHub
#iOS#Android#Kotlin
💻🤔 Код сожаления: 10 ошибок, о которых жалеют даже опытные программисты
В программировании полно разных путей и нет единственно правильного способа достичь вершины мастерства. Но есть общие ловушки.
✔️Читать статью
📌 Flutter в Telegram Mini Apps!
Telegram Mini Apps — это одно из самых популярных и быстроразвивающихся направлений в Telegram. Благодаря мини-приложениям, Telegram стал не только мессенджером, но и мощной платформой для различных сервисов, доступных прямо внутри чатов.
А Flutter, в свою очередь, стремительно завоёвывает сердца разработчиков благодаря кросс-платформенности и гибкости.
Но насколько сложно совместить эти две технологии? 🤔
Ответ вы найдёте в статье, где автор рассказывает про практическое применение Flutter при разработке Telegram Mini App и делится результатом!
📖 Читать статью
#Flutter
weak vs strong ссылки в Swift. 🚀
При работе с объектами важно правильно управлять памятью, и вот здесь на помощь приходят — weak и strong ссылки!
🔹 Strong ссылки — это те, что «держат» объект в памяти. Если на объект есть хотя бы одна strong ссылка, он останется в памяти. Это удобно, но есть риск создания циклических ссылок, что может привести к утечкам памяти!
🔹 Weak ссылки, напротив, не удерживают объект в памяти. Если на объект остаются только weak ссылки, он будет удалён из памяти. Это полезно для избежания циклов, например, когда объекты ссылаются друг на друга.
💡Используйте strong ссылки, когда нужно гарантировать, что объект будет жить, и weak ссылки, чтобы избежать утечек памяти!
#Swift #iOS
#дайджест для Android-разработчиков 👋
🔹 ByteWeaver в Open Source: инструментирование байт-кода Java во имя великого блага.
🔹 Разработка дизайна на SDUI с Jetpack Compose and Firebase.
🔹 Официальный релиз Koin 4.0.
🔹 Использование Kotlin 2.0 для разработки.
🔹 Размер имеет значение: как измерить и уменьшить вес Android-приложения
🔹 Стань лучше с помощью Compiler Explorer.
🔹 Декларативный подход в организации gradle зависимостей в Android-проектах.
🔹 Как легко рисовать на GoogleMaps с помощью Compose?
Создание анимаций между view в SwiftUI
Переходы между экранами улучшают пользовательский опыт, делая взаимодействие более плавным и приятным. При смене интерфейса визуально подчеркивается связь между различными элементами пользовательского интерфейса.
Где используются такие анимации:
– Навигация между экранами.
– Добавление (или удаление) элементов из списка.
– Показ модальных вьюх.
📖 Как создаются такие эффекты (и их комбинация) — узнать можно в этой статье.
#вопросы_с_собеседований
Kotlin
Вопрос: Как создать «статический» метод для перечисления в Kotiln?
В классе enum можно определить объект класса:
enum class CircleType {FIRST,SECOND,THIRD;companion object {fun random(): CircleType = FIRST}}
iOS 18 для разработчиков: Ключевые изменения в UIKit
Подробное изучение всех нововведений новой версии iOS, чтобы понять, какие новые возможности она предлагает разработчикам.
В этой статье автор делится и показывает самые интересные обновления в UIKit — новый TabBar, анимации, совместимость UIKit/SwiftUI и многое другое.
💪 Обновление Apple TestFlight: переработанный дизайн и критерии тестирования
Дизайн приложения теперь похож на AppStore. Пользователи могут видеть подробную информацию о приложении, скриншоты и другие сведения о разработчике и его проекте. Раньше вместо этого на страницу приложения выводилась только короткая заметка со списком последних изменений.
Также добавили опцию Tester Criteria. С её помощью разработчики могут указать список устройств, для которых нужно провести тестирование. Можно выбрать определённую модель iPhone и указать версию iOS. Критерии применяются как к публичным ссылкам на тестирование, так и к частным приглашениям.
Помимо этого появилась статистика. Разработчики теперь могут видеть, сколько пользователей просматривали приложение в TestFlight и сколько из них решили установить бета-версию. Также в отдельном пункте показывается, сколько тестировщиков не соответствует установленным критериям тестирования.
🤖 Вышла бета-версия 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.
Objective-C не кусается: как перестать бояться Legacy и стать настоящим iOS-ниндзя
📖 Поговорим про тему, которая волнует многих разработчиков: использование старых технологий в iOS-разработке, таких как Objective-C. Тут возникает очень насущный вопрос, является ли он легаси?
Легаси — это не просто старый код, написанный на устаревших языках или с использованием старых технологий, это любой код, который сложно поддерживать и развивать. Это может быть и относительно новый код, если он плохо структурирован, недостаточно документирован или содержит множество технического долга.
😭💰⬆️ Shut up and give my money: как просить повышения зарплаты
Рассказываем, когда и как правильно поднимать вопрос о повышении зарплаты. Проверенные тактики, аргументы и советы.
Углубляемся в вопрос и рассказываем, на основании чего просить повышения и какие аргументы использовать, а главное — какие доводы точно не подойдут.
📖 Читать статью
📖 Зеркало