iOS Broadcast
3.4K subscribers
1.74K photos
85 videos
991 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
Octoverse: Ежегодный отчет Github по трендам в разработке
Очень много инсайтов в отчете:
🟢ИИ выводит Python на первое место по мере роста числа разработчиков по всему миру
🟢Растет интерес к ИИ и компактным моделям.
🟢Число разработчиков на GitHub быстро растет, особенно в Африке, Латинской Америке и Азии.
🟢Индия может обогнать США по количеству разработчиков на GitHub к 2028 году.
🟢В Латинской Америке наблюдается быстрый рост в сфере открытых банковских услуг и ИИ.
🟢В Азиатско-Тихоокеанском регионе число разработчиков растет быстрыми темпами.
🟢Открытый исходный код играет важную роль в ранних экспериментах и внедрении ИИ.
🟢GitHub Copilot помогает разработчикам быстрее учиться и создавать программное обеспечение.
🟢34% участников топ-10 проектов внесли первый вклад после регистрации на GitHub Copilot.
🟢GitHub Copilot используется более миллионами разработчиков и студентов
🟢В 2024 году обнаружено более 39 миллионов утечек "секретов"
🟢Shell обогнал C в 2024 году
🟢TypeScript обогнал Java и вошел в тройку лучших языков на GitHub
🟢Rust набирает популярность благодаря безопасности и производительности
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🍎 Apple покупает Pixelmator
Новость не про разработку, а про разработчиков. Сам я так и не решился купить Pixelmator, но слышал множество хвалебных отзывов от преданных фанатов. И вчера команда разработки объявила что их покупет Apple. Они пишут в блоге:
С самого первого дня мы вдохновлялись Apple и при разработке наших продуктов уделяли особое внимание дизайну, простоте использования и производительности. Оглядываясь назад, я поражаюсь тому, чего за эти годы смогла достичь небольшая группа преданных своему делу людей из Вильнюса. Теперь у нас будет возможность охватить еще более широкую аудиторию и оказать еще большее влияние на жизнь творческих людей по всему миру.

Это только подтверждает что небольшая группа энтузиастов-профессионалов вполне может выдерживать конкуренцию с такими гигантами как Adobe на протяжении 17 лет и быть признанными теми, кем вдохновлялись
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22
🐥 Делаем некорректные состояния невозможными

Не так часто мне откликается какая-то статья по Type-Driven подходам в Swift, но эта хороша. В чем суть? За счет системы типов можно избавиться от возможности привести программу в некорректное состояние и заставить себя и коллег четко обрабатывать все исключения, вместо бесконечных assert в каждом непредвиденном случае. Суть идеи:
🟢В ветвлениях if-else лучше не оставлять неожиданных else в которые мы не должны прийти
🟢В перечислениях лучше не оставлять case none или unknown а перечислить только то что может быть корректно обработано
🟢"Нулевой" элемент это место для потенциальной проблемы, пустой массив, пустая строка, можно ограничить тип для обеспечения наличия значения, при необходимости
🟢Серилизация данных самый частый пример появления некорректных состояний и лучше обрабатывать все эти случаи в едином месте и не распространять вверх по иерархии
🟢Передача данных между Obj-C типами и Swift так же источник опасности, который можно изолировать

Исключение возможности появления некорректных состояний - очень эффективный подход к моделированию данных, он уже давно стал популярным в сообществах функционального программирования, включая Swift. Но нужно понимать что такой подход может значительно усложнить работу с кодом и компиляцию, так что используйте элементы функционального программирования в Swift с умом!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
9
📱 Llama 3.2 на мобильных устройствах

Разработчики адаптировали модель Llama 3.2 для мобильных устройств, облегчив её запуск на iOS и Android. Благодаря сжатию данных объём модели уменьшился, что обеспечило высокую скорость работы на мобильных процессорах. Теперь вы можете использовать мощную модель Llama на своих телефонах без потери производительности, так как она оптимизирована для ARM-процессоров.

👉 Технические детали

#iOS #Android
🔥1
🈸 Expedite an app review. Как ускорить проверку приложения в App Store
К моему удивлению, не все знают что в AppStore есть возможность несколько раз в год "пройти вне очереди" и запросить ускоренное ревью. Это возможно в случае:
🔵Возникновения ошибок в приложении, чтобы минимизировать последствия для пользователей и предотвратить падение рейтинга.
🔵Ускоренная проверка приложения может помочь ускорить процесс проверки и выпустить приложение быстрее.
🔵Для запроса ускоренной проверки необходимо перейти на портал разработчиков Apple и войти в свой аккаунт.
🔵Необходимо предоставить информацию о типе запроса, имени лица, запрашивающего проверку, адресе электронной почты, организации и названии приложения.
🔵Ускоренные проверки следует использовать только в исключительных случаях, таких как исправление критических ошибок или выпуск приложения в связи с событием.
🔵Не соблюдение руководства и чрезмерное ускорение запросов на проверку могут привести к игнорированию будущих запросов со стороны Apple

Это может оказаться вам актуальным в предверии самого загруженного сезона в App Store. В период с 22 по 27 декабря рассмотрение занимает сильно больше времени
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🔨 В iOS 18 Apple добавила необязательный параметр IsEnabled ко многим accessibility модификаторам
Apple добавила параметр isEnabled в .accessibilityLabel, .accessibilityInputLabels, .accessibilityValue, .accessibilityHint и другим модификаторам доступности. В результате модификатор применяется только в том случае, если параметр IsEnabled имеет значение true.
Это может оказаться полезным в ситуациях, когда вам нужно условно переопределить режим доступности по-умолчанию.
Небольшое, но полезное улучшение для работы с доступностью
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🔨 Миграция с Combine на AsyncAlgorithms
Очень необычная и глубокая статья. Автор статьи демонстрирует, как перенести реактивный Combine код на AsyncAlgorithms. Что приятно, автор разбирается в реактивном программировании и любит Combine, от этого статья раскрывается с интересной стороны. В самом начале автор знакомит нас с демо-проектом, написанным на Combine с классическими задачами, легко решаемыми Combine: инкремент бейджа из разных источников, отображение прогресса, работа с сетью. После чего начинает шаг за шагом внедрять Асинхронные алгоритмы:
🔘AsyncSequence предоставляет асинхронную версию протокола Iterator
🔘Использование combineLatest для объединения потоков
🔘Итерация по асинхронной последовательности с помощью for-await-in
🔘Преобразование объединенного потока в асинхронный поток с продолжением
🔘Использование AsyncStream для управления точкой приостановки
🔘Замена оператора .throttle() на эквивалент AsyncAlgorithms
🔘Использование performDownload() и @MainActor для потокобезопасности
🔘Перенос CurrentValueSubject в AsyncChannel
🔘Использование AsyncChannel для буферизации значений
🔘Изменение названия функции subscribeToUser на handleUserValues
🔘Использование AsyncChannel вместо CurrentValueSubject
🔘Применение операции compactMap для фильтрации нулевых значений

Проблемы с AsyncChannel
🔴AsyncChannel ведет себя как PassthroughSubject, а не как CurrentValueSubject
🔴AsyncIterator внутри AsyncSequence не поддерживает броадкаст и мультиплексирование

Преимущества AsyncAlgorithms
🟢Код проще для чтения и легче сочетается с остальной частью Swift Concurrency
🟢Снижается нагрузка на обслуживание кода в будущем

Я не могу согласиться с выводами автора. Действительно, он смог показать альтернативу Combine, для разработчиков, знакомых с Swift Concurrency, но:
🔵Combine это не какой-то забытый фреймворк, это известный всем ReactiveX, но в реализации Reactive Streams. Код Combine сможет читать любой инженер, знакомый с "реактивщиной"
🔵Swift Concurrency это часть Swift, как и Combine часть экосистемы Apple и SwiftUI (хоть и уже в меньшей степени)
🔵AsyncAlgorithms как раз внешняя зависимость, имеющая в этом свои преимущества, но не являющаяся частью экосистемы из коробки

После изучения статьи я смог найти кейсы использования AsyncAlgorithms в своих повседневных задачах, но мигрировать на него с Combine не вижу смысла, а вы?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
🍎 🔪 🐥 Apple убивает Swift.
Хочется в эту пятницу немного с вами похолливарить на тему развития Swift как языка, для этого нашел стаью, которая неплохо описывает развитие Swift как языка и его текущие эволюционные проблемы.

История Swift
🔵Swift был создан Крисом Латтнером в начале 2010-х годов.
🔵В 2015 году Латтнер убедил Apple перейти на Swift с открытым исходным кодом.
🔵В 2017 году Латтнер ушел, и управление Swift перешло к Apple.

Управление языками программирования
🔵Каждый язык программирования управляется кем-то или чем-то.
🔵Управление включает выбор, разработку и внедрение изменений.
🔵Примеры успешных языков: Python, Rust, Kotlin.

Python: Доброжелательный пожизненный диктатор
🔵Python управляется руководящим советом из 5 инженеров.
🔵Изменения предлагаются через PEPs и обсуждаются сообществом.
🔵Python медленно и осторожно продвигается к новым функциям.

Rust: Управляемый сообществом продукт с открытым исходным кодом
🔵Rust управляется сообществом разработчиков через RFC.
🔵Каждое важное решение начинается с запроса комментариев.
🔵Обсуждение в сообществе — секрет качества Rust.

Kotlin: Поддержка корпорации проекта с открытым исходным кодом
🔵Kotlin управляется фондом Kotlin Foundation.
🔵Совет директоров фонда назначает ведущего разработчика.
🔵Участники сообщества могут предлагать изменения и тестировать экспериментальные API.

Стимулы в управлении языками программирования
🔵Разработчики хотят работать с приятным языком.
🔵Сообщество стремится улучшить язык, но подчиняется другим силам.
🔵Руководящая группа имеет разные стимулы в зависимости от структуры управления.

Swift: Пожизненный корпоративный диктатор
🔵Apple является диктатором Swift, назначая членов руководящей команды.
🔵Apple стремится максимизировать прибыль, что противоречит сообществу разработчиков.
🔵Swift 5.1 представил непрозрачные типы результатов и сборщики функций без участия сообщества.
🔵SwiftUI выглядит проще, но усложнил язык в целом.

Приоритеты и задержки в Swift
🔵Внедрение новой платформы пользовательского интерфейса в 2019 году было приоритетом, что задержало параллелизм в Swift до 2021 года.
🔵Крис Латтнер, несмотря на уход из Apple в 2017 году, оставался в команде Swift до 2021 года, но его уход был пессимистичным.

Философия дизайна Криса Латтнера
🔵Латтнер стремился к простым вещам, создающим композицию, и постепенному раскрытию информации.
🔵В современном Swift эти принципы нарушены, что вызывает критику.

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

Технический долг и компиляторы
🔵Латтнер говорил о технических задолженностях в компиляторе, которые накопились с момента его ухода.
🔵Современный Swift страдает от технических долгов, которые могут быть не решены.

Apple и Swift
🔵Apple поддерживает сообщество разработчиков, но продвигает свои собственные предложения.
🔵Стратегические приоритеты, такие как фреймворки пользовательского интерфейса, имеют первостепенное значение.

Надежда на будущее Swift
🔵Apple и сообщество заметили уход Латтнера, что ускорило переход к менее диктаторской модели управления.
🔵Swift заимствует идеи у Rust и других языков, что дает надежду на его будущее.
🔵Apple внедряет Swift на Windows и Arduino, а также использует его на своих серверных системах.
🔵Apple переписывает Foundation в виде пакета Swift с открытым исходным кодом.

Лично я очень люблю Swift и радуюсь его развитию и внедрению всего нового, ведь не обязательно использовать все. Но и разделяю мнение что мы все дальше уходим от концепции простого языка с понятными конструкциями. Что вы думаете по этому поводу?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👏14
📱 Предотвращение скриншотов экрана в SwiftUI

Есть множество сценариев, в которых требуется изменять содержимое экрана или реагировать на попытку сделать скриншот экрана. Если в UIKit с этим все разобрались, то про SwiftUI многие забывают. В статье разбирается SwiftUI модификатор, интегрированный с UIKit, для скрытия контента во время создания снимков экрана
🔵SwiftUI предоставляет функцию конфиденциальности для предотвращения появления конфиденциального контента на скриншотах и записях экрана
🔵Функция полезна для приложений, обрабатывающих личные пользовательские данные
🔵Модификатор hideWithScreenshot будет создан на основе UITextField с isSecureTextEntry для скрытия содержимого
🔵Конечный результат - автоматическое скрытие конфиденциального контента
🔵Гибкое решение позволяет выборочно применять модификатор к определенным View для обеспечения конфиденциальности
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6