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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
💡 Повышаем качество кода iOS

Задумывались ли вы, как улучшить качество кода? Предлагаем взглянуть на статью, которая содержит несколько советов для разработчиков iOS, чтобы избежать распространённых ошибок и помочь им улучшить свои приложения. Статья состоит из пяти разделов, каждый из которых посвящен определенному аспекту разработки iOS, такому как качество кода, управление зависимостями, автоматизация, интеграция Firebase и генерация кода.

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

Читать
🔥2
⚔️ Структурно-ориентированное программирование против протокольно-ориентированного программирования в Swift

Структурно-ориентированное программирование (SOP) подразумевает построение приложений с использованием структур, перечислений и примитивов. Этот подход упрощает код, делает его более предсказуемым и безопасным с точки зрения памяти благодаря избеганию общих ссылок и мутации состояния.

Протокольно-ориентированное программирование (POP) это идеология, в которой протоколы используются для определения и реализации поведения и функциональности. Протоколы в Swift позволяют создавать гибкие и модульные программные интерфейсы. Они также поддерживают расширения, что позволяет добавлять функциональность к существующим типам без наследования.

Сравним два подхода:

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

2. Изменяемость: структуры являются значимыми типами (value types) и предоставляют автоматическую безопасность потоков за счёт копирования значений при передаче, а протоколы, в свою очередь, не определяют, является ли тип значимым или ссылочным, оставляя выбор на усмотрение разработчика.

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

Подводя итоги, в Swift рекомендуется комбинировать оба подхода, используя преимущества структур для создания безопасных и эффективных типов данных, а протоколы — для определения интерфейсов и поведения.
👍1
🚀 Улучшаем производительность кода на SwiftUI с помощью Observation

Observation framework — новый компонент стандартной библиотеки Swift, который позволяет наблюдать за изменениями свойств ссылочных типов и улучшать производительность SwiftUI.

В данной статье автор рассматривает новый фреймворк, принципы его создания, способы использования и принципы работы.
🔥2
Результаты ежегодного опроса разработчиков StackOverflow: 20+ главных инсайтов 2023 года

В данной статье мы собрали 20+ главных инсайтов, которые помогут лучше понять, что происходит в ИТ-сфере в мире.

🔗 Читать статью
🔗 Зеркало
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🦾 Swift для автоматизации: как писать скрипты на любимом языке

В видео вы узнаете, как писать, компилировать и запускать скрипты на Swift в терминале. Также автор показывает, как добавить фазу сборки скрипта в проект Xcode. Это полезно для автоматизации различных задач, связанных с разработкой приложений на Swift.

Смотреть

#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🍃 Наверняка вы уже знаете, что резюме это первое, что видят работодатели, поэтому важно, чтобы оно было составлено грамотно и содержательно. Поэтому мы подготовили для вас несколько советов, которые помогут вам написать резюме, которое произведет хорошее впечатление.

Зажгите огонек в глазах рекрутера, чтобы обратили внимание именно на вас! 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤‍🔥1
📱 Не знаете как продвигать своё приложение? RuStore выкатил несколько советов

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

Подробно можно ознакомиться по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
#дайджест полезностей мобильного разработчика

🍏 Swift Charts — создаем график для отображения данных о весе.

🍏 SwiftUI Keyframe Animations — переписать старые анимации с помощью нового API Keyframes, и сравнивнение преимущества и недостатки обоих подходов.

🍏 Модульная навигация SwiftUI — статья рассказывает о том, как реализовать модульную навигацию в SwiftUI.

🍏 MVI в SwiftUI — как легко реализовать архитектуру MVI (Model-View-Intent) в SwiftUI. Автор объясняет, что такое MVI и какие преимущества она имеет перед другими подходами.

🍏 User Location в SwiftUI — новый API для получения местоположения пользователя в SwiftUI. Как использовать новый класс NewLocationManager, который упрощает запрос разрешения на доступ к службам геолокации и получение обновлений местоположения.
4👍1🔥1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Подборка лучших статей «Библиотеки программиста» за октябрь: сохраняй в заметки, чтобы не пропустить #самыйсок

📊 Эффективная работа с JSON в Go
🔝 Лучшие практики Go: путь к чистому коду
📚 ТОП-8 книг по DevOps в 2023 году
💪 6 сервисов для подготовки к техническим собеседованиям
🗺️ Карьерная карта: что это, как ее составить и почему она обязательно нужна разработчику
🛡️ 8 способов защиты от манипуляций на работе
👩‍💻 Женщины в ИТ: проблемы и преимущества сложной профессии
🤖 8 лучших бесплатных курсов по ИИ и глубокому обучению
👨‍💻 9 трендов в найме айтишников в 2023 году
🤔 9 мифов об IT и найме айтишников
🤖 25 бесплатных AI-инструментов для разработчиков
☁️ ТОП-10 бессерверных фреймворков
🚩 Итог одной валютной удаленки: проработал месяц бесплатно и ушел с долгами
💻 20 лучших ноутбуков для программиста в 2023 году
🧠 Как научиться критически мыслить: 6 эффективных способов
Результаты ежегодного опроса разработчиков StackOverflow: 20+ главных инсайтов 2023 года
👍3
📱🚀 Производительность мобильного приложения

Как вы думаете, насколько важно, чтобы приложение работало быстро и не зависало? С точки зрения пользователя, производительность — это всё. Скорость является критически важным фактором для мобильных приложений по нескольким причинам: пользовательский опыт, влияние на рейтинги и отзывы, удержание пользователей, эффективность использования ресурсов и конкурентоспособность.

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

Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Я: открываю репозиторий, в ожидании увидеть понятный гайд по работе с кодом
Также файл ReadMe, лежащий в нём:

#memes
😁8
🤔 Задача A: Yandex Cup 2023 — iOS


infix operator !!


extension Optional {
public static func !!(
v: Self,
e: @escaping @autoclosure () > Error
) throws -> Wrapped {
guard let unwrapped = v else { throw e() )

}    return unwrapped




Представлен код на Swift. Выберите правильные идеи относительно того, что хотел сказать автор:

1. оператор должен быть postfix
2. @escaping в объявлении избыточен
3. @autoclosure в объявлении избыточен
4. throws в объявлении избыточен
5. тип переменной v в данном случае является типом неопционального(Wrapped) значения
6. данный код не скомпилируется
7. Wrapped в данном примере является generic типом
8. для такого объявления нужно объявить собственный тип ошибки вместо типа Error
9. без явного задания precedence group оператор будет объявлен с DefaultPrecedence

Разбор ответов:

1. Оператор должен быть postfix: Оператор !! объявлен как infix, что подразумевает использование его между двумя операндами (например, a !! b). Если бы он должен был быть postfix, то он бы использовался после операнда (например, a!!). В данном контексте, если оператор предназначен для использования с одним операндом Optional, то он должен был бы быть postfix, но по коду видно, что он принимает два аргумента, так что это утверждение неверное.

2.
@escaping в объявлении избыточен: Атрибут @escaping используется, когда замыкание может быть вызвано после того, как функция, которой оно было передано, завершит выполнение. В данном коде нет никаких признаков, что замыкание будет использоваться вне функции, так что атрибут избыточен.

3.
@autoclosure в объявлении избыточен: Атрибут @autoclosure создает замыкание из выражения автоматически, что удобно, когда функция должна быть вызвана с выражением в качестве аргумента, которое должно быть вычислено только при необходимости. В данном контексте, если функция всегда будет вызывать e() в случае ошибки, использование @autoclosure уместно для упрощения вызова функции.

4. throws в объявлении избыточен: Поскольку функция действительно выбрасывает ошибку (через оператор throw), в сигнатуре функции обязательно должно быть указание throws, указывающее, что функция может вызвать исключение.

5. Тип переменной v является типом неопционального (Wrapped) значения: Это неверно, так как в контексте Optional, Wrapped относится к типу данных, который Optional может содержать, и может быть как опциональным, так и неопциональным в зависимости от контекста.

6. Данный код не скомпилируется: Не можем быть уверены без дополнительного контекста и тестирования в компиляторе.

7. Wrapped в данном примере является generic типом: Это верно, Wrapped является обобщенным типом, который Optional «оборачивает», и может представлять любой тип.

8. Для такого объявления нужно объявить собственный тип ошибки вместо типа Error: Это неверно, так как Error - это общий протокол для типов ошибок в Swift, который может быть реализован любым пользовательским типом ошибки.

9. Без явного задания precedence group оператор будет объявлен с DefaultPrecedence: Это утверждение верно. Если группа приоритета для оператора не задана, то по умолчанию используется DefaultPrecedence, что влияет на порядок, в котором операторы будут применяться при разборе выражений.
👍63
📣 Apple анонсировала Swift Student Challenge 2024

Swift Student Challenge — это мероприятие, запущенное Apple для поддержки студентов-разработчиков в течение длительного времени, которые учатся и создают приложения на языке программирования Swift.

Приём заявок от студентов со всего мира начнётся в феврале следующего года.

Из 350 победителей Swift Student Challenge 2024 будут отобраны 50 выдающихся участников, которые получат возможность посетить штаб-квартиру Apple в Купертино, штат Калифорния, чтобы пообщаться с другими победителями и командой Apple.

Все победители Swift Student Challenge 2024 получат памятные призы от Apple, годовое членство в программе Apple Developer Program и бесплатный ваучер на сдачу сертификационного экзамена по разработке приложений с помощью Swift.

📖Ознакомиться
👍2🔥2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🤔Почему новость о выходе релиза Kotlin 1.9.20 относится не только к мобильным разработчикам? Дело в том, что команда Kotlin представила стабильный выпуск Kotlin Multiplatform (KMP), который готов к использованию в продакшене. Да и Kotlin сам по себе среди прочего компилируется в Wasm, что значительно расширяет его возможности.

🤩Технология KMP призвана упростить разработку кроссплатформенных проектов. Это сокращает время, затрачиваемое на написание и поддержку одного и того же кода для разных платформ, сохраняя при этом гибкость и преимущества нативной разработки.

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

#новости
🎉71👍1