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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
🔎💼🗺️ Как программисту искать (и найти) работу за границей в 2023 году

Разбираемся: где искать работу за рубежом, как и где откликаться на вакансии, плюс несколько лайфхаков по составлению резюме.

Читать статью

#поискработы
👍7🔥31
😎 Очередной #дайджест по мобильной разработке

🔺 Вечная битва за производительность приложений на iOS — чек-лист, на что обратить внимание и к каким инструментам присмотреться

🔺 CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter — тест на внимательность, ну и дока интересная

🔺 Java 21 — вышла общедоступная версия Java 21 — около 2500 закрытых задач и 15 JEP'ов

🔺 Swift 5.9 — появилась система макросов, пакеты параметров, if/switch в качестве выражений и многое другое

🔺 ArchUnit vs. Konsist. Зачем нам понадобился еще один линтер Kotlin? — почему ArchUnit не идеален для Kotlin и в чем заключается польза Konsist
👍284
🎙️📺 Собеседование на позицию Mobile Developer

В видосе спикер проведет собес с обсуждением знаний, которые пригодятся в повседневной разработке. В процессе общения будет проектироваться мультиплатформенное приложение (проектирование и общение по KMP), задача по корутинам, и в завершение — Compose и важные оптимизации.

Смотреть видео

#обучение
👍93
🤔🤔 Чего ждать от Kotlin K2

Новый K2 компилятор и прежде чем пытаться понять изменения в компиляторе, нужно выяснить мотивы, стоящие за этими изменениями:

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

Подробнее

#обзор
👍72
This media is not supported in your browser
VIEW IN TELEGRAM
Tiling — это реализация пагинации на основе состояния, которая представляет выгружаемый набор данных в виде простого списка. Он обеспечивает постоянный доступ к элементам по индексам в режиме реального времени и возможность самоанализа элементов, просматриваемых по страницам.

Tiller доступен в mavenCentral:

implementation com.tunjid.tiler:tiler:version

Читать статью

#гайд
🤩13👍83🔥1
🚢 Сертифицированная версия ViPNet OSSL с поддержкой ОС Аврора

ViPNet OSSL — ПО на базе библиотеки OpenSSL, которое позволяет использовать российские криптографические алгоритмы ГОСТ в прикладных системах. ViPNet OSSL 5.4 является законченным встраиваемым средством криптографической защиты информации (СКЗИ) и может быть использован разработчиками в приложениях и прикладных системах, с помощью которых можно подписывать документы и осуществлять проверку электронной подписи, устанавливать защищенные соединения по протоколам TLS 1.2 и 1.3, создавать крипто-защищенные сообщения в формате CMS и работать с различными форматами электронной подписи. Теперь эти возможности доступны и для приложений под управлением ОС Аврора.

Программный комплекс ViPNet OSSL версии 5.4 соответствует всем требованиям ФСБ России к СКЗИ и требованиям к средствам электронной подписи.

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

#новости
👍83
🧑‍✈️🥷 Jailbreak checker — как обезопасить свое iOS-приложение

Из-за получения полного доступа к системе появляется и доступ к незащищенному keychain. После взлома у пользователя появляется доступ к альтернативным сторам, из которых можно скачать приложения, не проходившие ревью в App Store. Одним из таких является Cydia, который чаще всего сразу же устанавливается в момент взлома устройства.

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

Чем же это может быть опасно для приложения?

🔴 Если оно работает с персональными данными либо с денежными средствами — нужно предупредить пользователя о плохом развитии событий.
🔴 Это небезопасно, если приложение используется в качестве двухфакторной аутентификации.
🔴 Так как устройство не получает необходимые обновления безопасности, это упрощает для мошенников получение доступа к данным.

Подробнее тут

#гайд
👍72😁1
Подготовили вам #дайджест инструментов для новичков, ускоряющих разработку

🔻 Appery.io. Облачная платформа для кроссплатформенной разработки с возможностью перетаскивать элементы мышкой.

🔻 Appian Quick Apps. Вводите ключевые данные, после чего инструмент начинает сбор информации, создание форм и автоматизацию процессов. На выходе получаем приложение, с функциями, которые могут понадобиться пользователям.

🔻 Kony Visualizer. Инструмент для разработки wearables-приложений.

🔻 Perfecto Mobile. Бесплатная облачная, автоматизированная среда для тестирования с удобным UI, которая поможет выпустить приложение без ошибок.

🔻 Como. Поможет создать приложение, повышающие эффективность программ лояльности. Подойдет для владельцев бизнеса, которые хотят самостоятельно сделать и запустить приложение.
👍53🔥1
🧠🧠 Советы по управлению памятью во Flutter

Почему важно управление памятью?

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

Советы:

🟡 Используйте сборку мусора Dart.
🟡 Используйте конструкторы const для виджетов, чтобы предотвратить ненужное создание экземпляров объектов, экономя память.
🟡 Выбирайте виджеты без сохранения состояния, поскольку они занимают меньше памяти.
🟡 Оптимизируйте большие файлы и их загрузку.
🟡 Утилизируйте контроллеры и потоки, например с помощью метода dispose().
🟡 Аккуратно используйте кеш во избежание раздувания памяти. Устанавливайте ограничения.
🟡 Избегайте ненужного использования ресурсов с высоким разрешением.
🟡 Контролируйте длительность хранения синглотонами больших объемов данных.
🟡 Используйте виджеты, которые автоматически освобождают ресурсы.
🟡 Применяйте слабые ссылки, например, dart:ffi.
🟡 Остерегайтесь прямой загрузки больших изображений — Image.memory и Image.network. Применяйте кеширование.

#туториал
25🥰15🔥13👏11👍7
🐕📈 Ходить ли на конференции джуну?

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

#видео
👍72🥰1
🐥🐥 Обнаружение утечек в тестировании UI

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

Речь пойдет о библиотеке для поиска утечек в Android — LeakCanary.

Интеграция LeakCanary в тесты

Вы можете легко интегрировать LeakCanary в UI тесты, просто включив код, который запускается по завершении теста:

LeakAssertions.assertNoLeaks()

После завершения теста, если вы используете Espresso, запустите обнаружение утечек с помощью LeakCanary в методе, обозначенном как After:

@After
fun after() {
// Launch leak detection
LeakAssertions.assertNoLeaks()
}

Подробнее читайте тут

#гайд
20👍6🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Потратить кучу денег на невероятно полезную фичу —

Источник: Denis Sexy IT
8👍2
😎 Очередной #дайджест по мобильной разработке

🔹 Разблокировка SwiftUI в Airbnb — история о переходе с Epoxy и UIKit на SwiftUI в Airbnb, а также о сопутствующих проблемах

🔹 Как часто вызывается UICollectionView layoutSubviews во время прокрутки? — очень подробный разбор этапов прорисовки экрана

🔹 Как async/await работает внутри Swift — как оно работает, почему оно работает и о каких подводных камнях нужно знать

🔹 Инфраструктура Android UI-тестов — видос про автоматизацию запуска тестов на каждый коммит в каждом пулл-реквесте 🔥🔥

🔹 Размышления о Flutter 3.13 — когда бомбануло от обновлений, в хорошем понимании слова 😂
7🔥2
🌀🌀 Анимированные границы в Jetpack Compose

Перед анимацией понадобится более округлая форма углов с рамкой — RoundedCorner(), которую можно передать в качестве параметра.

val colorBg = Color(0xFF2C3141)

Canvas(modifier = Modifier.fillMaxWidth().height(200.dp).background(colorBg)) {
drawRoundRect(
color = Color.White,
cornerRadius = CornerRadius(x = 20.dp.toPx(), y = 20.dp.toPx())
)

drawRoundRect(
color = colorBg,
topLeft = Offset(1.dp.toPx(), 1.dp.toPx()),
size = Size(
width = size.width - 2.dp.toPx(),
height = size.height - 2.dp.toPx()
),
cornerRadius = CornerRadius(
x = 19.dp.toPx(),
y = 19.dp.toPx()
)
)
}

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

Читать далее

#туториал
6🔥6
Если что-то очень и нужно сделать, то выделите на это небольшое количество времени, остальное же время проведите лучше следуя списку наших советов.

📍 Переключитесь и упорядочите мысли.

🏖️ Только не компьютерные игры и социальные сети!

🚴‍♀️ Вело-пробеги. Езда на велосипеде улучшает целостность и структуру белого вещества головного мозга, а еще, укрепляет сердце, улучшает работоспособность органов дыхания, снижает давление, позволяет похудеть, сформировать мышцы и расслабиться после напряженного дня.

🔍 Посетите антикварный аукцион или барахолку.

🍔 Составьте список вещей, которые доставляют вам удовольствие. Для многих выходные — это не отдых, это, скорее, дни, когда можно работать не так напряженно. Всех денег не заработать, все статьи не перечитать, да и надолго ли вас так хватит?...

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

📚 Почитайте что-то, не IT-шное. Происхождение, Дэна Брауна; Нейроманта, Уильяма Гибсона; Ник, Анджея Ясинского.
🥰2419🔥18👍15👏13
🍏🤖🔥 Avito iOS meetup

10 октября в 19:00 пройдёт сие #мероприятие. Спикеры из Авито, МТС и Тинькофф Страхования расскажут про подход async/await, фреймворк SwiftUI и mergeable libraries. В докладах будет теория и реальные кейсы из опыта спикеров, которые можно будет обсудить после выступлений.

Программа

Async / Await. Лучшие практики, советы и особенности
В своём докладе спикер рассмотрит structured concurrency в Swift, поговорит об async/await, actors, tasks и проведёт аналогии с уже существующими инструментами для работы с многопоточностью. Доклад будет полезен тем, кто хочет интегрировать подход async/await в свои проекты или же в прод, но всё ещё сомневается.

SwiftUI — уже пора?
SwiftUI шагает по планете уже 4 года. Пора ли уже переводить свои приложения на него или стоит подождать? Автор расскажет про свой опыт перехода на новый (старый) фреймворк, подводные камни и выводы, к которым он пришёл.

Гармония статики и динамики: погружаемся в mergeable libraries
На WWDC 2023 компания Apple представила новое решение — mergeable libraries, Оно объединяет преимущества статических и динамических фреймворков. Спикер рассмотрит их внутреннее устройство и разберёт, как можно интегрировать их в свои iOS-проекты. В ходе доклада он выполнит сравнение производительности, чтобы понять, соответствуют ли обещания Apple действительности.

Регистрируемся здесь
5👍4🔥1