В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!

Мобильная ОС компании Apple
Привет, читатель! Сегодня я расскажу о своём опыте преподавания. Я обычный разработчиĸ, в начале этого года читал лекции по архитектуре на IT-курсах.
Если ты уже пробовал обучать, в статье сможешь сверить ощущения. А если только задумываешься стать преподавателем, найдёшь ответы о нагрузĸе и мотивации. Пробежимся по пунктам: что тебя ждёт, кроме лекций, сколько времени уйдёт, и в конце ты сможешь осознанно ответить — нужно ли тебе это.
Привет, Хабр. Меня зовут Кирилл Смирнов. Я технический лидер iOS команды в СберЗдоровье. Последний год наша команда активно занимается улучшением инструментов разработки, в том числе модуляризацией, и уже успела получить опыт, который может быть полезен другим. В предыдущем материале я рассказывал, как компании подготовиться к модуляризации iOS приложений, а в этом остановлюсь на вопросах оптимизации сборки проекта и выборе вариантов линковки артефактов компиляции.
Apple представит новые смартфоны уже в сентябре. Судя по «сливам», в этом году, как и в прошлом, в линейку iPhone войдут четыре модели: две — навороченные и дорогие, и две — попроще. Многое о них уже известно, собрали утечки от наиболее авторитетных ресурсов и инсайдеров.
Не так давно на проекте возникла необходимость настроить периодическое обновления информации со стороннего сервиса. В моем случае это был файл‑справочник в формате JSON, хранящийся в Bundle приложения, и ещё Info.plist в придачу. Отмечу, что такие файлы нельзя изменять в запущенном iOS приложении. Да и вообще, вызовы напрямую в сторонний сервис уже в рантайме меня не сильно радовали — в случае сбоя загрузки данных у приложения отваливался кусок функциональности.
Как бы вы поступили в этом случае? Вынесли бы кэширование таких файлов на ваш бэк? Таким образом мы бы решили проблему со сторонним нестабильным сервисом, но что делать с Info.plist?
Первое, что приходит в голову — написать Shell‑скрипт. Но это могло привести к проблемам с поддержкой другими iOS разработчиками. Поэтому было принято решение создать утилиту на Swift.
В сети много материала по созданию Command Line Tool на Swift, но мы разберем абстрактный пример создания такой утилиты сразу в связке с iOS проектом.
Представьте приложение, в которое вы можете загрузить любую книгу на иностранном языке. При чтении вы будете нажимать на любое незнакомое слово, а приложение будет вам выдавать не кучу переводов из словаря, а предложит перевод, который соответствует контексту. А при переводе устойчивого выражение приложение не просто переведет его, а предложит вам объяснение этой фразы, привязанное к контексту. Ниже я покажу как оно работает.
Не знаю как вы, но я часто испытываю трудности в создании увлекательного контента для своей страницы в Instagram. Я долго подбираю слова с которых хотел бы начать, собираю дополнительную информацию, чтобы насытить пост содержанием. Иногда одна только мысль о том, что надо что-то написать, вгоняет в уныние и усталость. Это я еще не говорю про то, что надо подобрать качественный и уникальный визуал. В общем, я тоже подсел на волну вау эффекта от ChatGPT и Midjourney, и решил разработать некий инструмент, который позволил бы мне создавать контент для Instagram от моего лица быстро и просто, а также желательно в одном месте и всегда под рукой. Собственно, о том что получилось дальше и пойдет речь.
GptGram — iOS приложение. Это персональный помощник в создании контента для Instagram, работающего на базе передовых технологий искусственного интеллекта: OpenAI GPT-4 для генерации текста и Midjourney V5 для создания изображений.
К сожалению, как нам пояснил Дуг Грегор (Doug Gregor) из Swift Language Workgroup, Swift 6 все-таки не успеет увидеть свет в 2023 году. Но знали ли вы, что Apple уже зарелизила некоторые части Swift 6 в версии 5.8? Да, вы не ослышались. Эти части нового Swift поставляются с Xcode 14.3, но они по умолчанию отключены. Они заработают сразу после выхода Swift 6, что может занять еще один год или даже больше.
Эти фичи вносят ряд критических изменения в Swift, в основном из-за переименования общеизвестных API, корректировки их поведения и добавления новых проверок безопасности в компилятор. Все это в какой-то момент будет активировано с целью помочь улучшить нашу кодовую базу. И нам обязательно придется обновлять наши проекты, чтобы они не поломались из-за этих изменений.
Я решил, что было бы неплохо включить все фичи в моих текущих проектах уже сейчас, чтобы увидеть, есть ли в моей кодовой базе какие-либо критические изменения, о которых мне следует позаботиться. И, конечно же, таким образом я бы смог попробовать некоторые новые фичи, такие как BareSlashRegexLiterals
, что дает нам возможность краткой инициализации регулярных выражений с помощью литерального синтаксиса (/.../
).
К счастью, в Swift 5.8 есть легкий универсальный способ активировать все эти опции: нам просто нужно передать в Swift флаг -enable-upcoming-feature
, прописав его в OTHER_SWIFT_FLAGS
настройках сборки нашего проекта в Xcode. А также нам нужно знать, какие именно фичи нам доступны, но я не смог найти хорошего комплексного обзором (по крайней мер пока). Предложение, в рамках которого был добавлен этот унифицированный способ активации, содержит такой список, но он не обновляется более новыми опциями, добавленными позже, как, например, в SE-0384. Так где же мы можем получить достоверный актуальный список всех поддерживаемых опций?
В любом мобильном приложении нужно четко понимать, как с ним взаимодействует пользователь. Для этого добавляется аналитика, по которой мы можем отслеживать различные действия пользователя внутри приложения. Меня зовут Тимур Шафигуллин, в этой статье я расскажу, как устроена мобильная аналитика вообще и в hh.ru в частности.
В предыдущей части мы разобрали преимущества работы с async/await по сравнению с GCD. В этой части мы более подробно рассмотрим ключевые слова async и await (и не только). Разберемся в том, как они работают, что означает "неблокирующее ожидание" и самое главное рассмотрим это все на примерах.
Привет! На связи KTS и наш эксперт по направлению iOS-разработки Александр.
Мобильные устройства помогают оставаться на связи с друзьями, работать, развлекаться и повышать продуктивность. iOS, несмотря на введенные санкции и сокращение продаж техники в РФ, остается популярной платформой, пользователи которой ожидают качественные и стабильные приложения для смартфонов, планшетов, умных часов и ТВ‑приставок.
Насколько востребована позиция iOS‑разработчика на рынке РФ, какие риски с выбором этого направления для старта карьеры наиболее актуальны, что именно надо изучать и где искать нужные материалы — в этой статье.
Power asserts (также известные как диаграммированные утверждения) дополняют ваши ошибки утверждений информацией о значениях, полученных во время оценки условия, и представляют ее в легко усваиваемой форме. Power asserts являются популярной функцией Spock (а позже и всего языка Groovy независимо от Spock), ScalaTest и Expecty.
Power asserts предоставляют описательные сообщения об утверждениях для ваших тестов, подобные следующим примерам:
63 часа работы в неделю, три выходных за полгода и подвешенное состояние гастарбайтера: меня зовут Мустафа Бекиров, мне 23 и я вкатываюсь в IT. Работаю дальнобойщиком 1,5 года, а в перерывах между грузами почитываю Хабр. Никогда официально не учился на программиста, но полгода назад всё-таки смог прорваться в IT, стал разработчиком под iOS, и пока полёт нормальный. Решил рассказать свою историю. Может, кому-то она будет полезной или интересной.
Когда на iOS возникает вопрос о какой-то оффлайн работе, часто разработчики обращают свой взор на CoreData — фреймворк, который управляет хранением данных в приложении. В идеальном мире использование CoreData сводилось бы к нахождению необходимых объектов, их изменению и вызову метода сохранения без головной боли.
Однако, фреймворк имеет высокий порог входа и много неочевидных моментов, которые обязательно всплывут при масштабировании приложения. Но насколько можно приблизиться к тому идеальному миру, обрисованному ранее? В этой статье я поделюсь своим опытом работы с CoreData, и предложу решение, упрощающее работу с ней практически до вызова одного универсального метода для базовых нужд изменения и сохранения данных, попутно рассказав, какие фишки CoreData рассматривались как вариант достижения этой цели.
Современные технологии – это истинное благо для любого бизнеса. Но точно так же они могут стать самым настоящим проклятьем. Только представьте. Вы захотели создать собственное мобильное приложение. Идея уже есть, спонсоры найдены, и, казалось бы, выпускай себе приложение и покоряй им мир стандартными «Efficiency, Resilience and Innovation • Trust • Human-Centered approach • Passion • Excellence». Но в действительности все оказывается куда сложнее. Вы приходите к специалистам и не понимаете, кого слушать. Одни наперебой убеждают вас, что приложение стоит сделать на технологии React Native, а другие упорно доказывают, что нет лучшего решения, чем разработка на Swift/Kotlin. Звучит знакомо? Тогда эта статья точно вам поможет.
Системный Segmented Control - это хорошо и удобно. Но когда доходит до его кастомизации, проще написать свой гибкий компонент с нуля. В этой статье история разработки своего segmented сontrol'а, переросшего в отдельную внешнюю зависимость, с ожидаемыми и не очень сложностями.