iOS Dev
Kanalga Telegram’da o‘tish
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
Ko'proq ko'rsatish7 874
Obunachilar
-124 soatlar
Ma'lumot yo'q7 kun
-5130 kun
Postlar arxiv
7 876
Как вернуть Jump to Definition в Xcode
Если вы предпочитаете старое поведение дефолтному (и хотите сэкономить немного времени при разработке), то можно изменить поведение
Command-click.
1️⃣ Откройте Xcode Preferences.
2️⃣ Перейдите ко вкладке Navigation.
3️⃣ Измените значение с Command-click on Code на Jump to Definition.
После этого изменения вы можете открывать связанные команды с помощью command + control + click (вернуть обратно можно по этой же инструкции).
📖 Источник гифки.
@iOS Dev7 876
Вебхуки GitHub и Xcode Cloud
Если объяснять термин простыми словами, вебхук это механизм отправки уведомлений при наступлении в системе какого-то события, на которое подписано клиентское приложение.
Подписка на события вебхука не является чем-то очень сложным, для этого необходимо создать сервер, который может обрабатывать POST-запросы и передавать URL-адрес сервера веб-сайту с вебхуком.
Мне для рабочих проектов Xcode Cloud пока что не очень зашёл, так как там невозможно прокинуть доступ на внутреннюю репу на гитлабе (без доступа по внешней сети), но несмотря на это, для репозиториев с публичным адресом это вполне хорошее решение.
📖 В этой статье рассказывается, как вы можете создать функцию Swift для прослушивания вебхука GitHub
issue_comment, который запускает события каждый раз, когда пользователь добавляет комментарий к issue в репе или же пуллреквест, а также:
1️⃣ Проверяет наличие комментария в пуллреквесте.
2️⃣ Проверяет, что текст комментария соответствует строке «Upload to TestFlight».
3️⃣ Если это так, функция запускает сборку Xcode Cloud, которая загружает приложение для внутреннего тестирования в TestFlight с использованием API App Store Connect (это SDK я использую и в Starly).
@iOS Dev7 876
Сравнительный анализ GPT-4 и GPT-3.5 на базе задач Leetcode
Состоялся релиз GPT - 4 и вышел технический репорт от OpenAI.
Прежде, чем все паблики/ленты/хабр заполнит волна очередных постов, что же там изменилось, я бы хотел акцентировать внимание на одном неваловажном сравнении, а именно том, как сейчас решает GPT-4 задачи на литкоде.
😎 Для этого я изучил отчёт, который находится в публичном доступе и собрал сравнение в отдельную таблицу.
Главный вывод, GPT-4 научился решать хард-задачи. Да, пока мягко говоря не все, но несмотря на это, прогресс от 0 к 3 огромен.
Остальные сравнительные показатели вынесены в таблицу выше.
@iOS Dev — пока ещё до скайнета далеко
7 876
Как создавать настраиваемые виджеты с динамическими параметрами?
Существует ряд обстоятельств, когда нам понадобится настраиваемый виджет с динамическими параметрами.
Среди этих ситуаций можно выделить следующие:
1️⃣ Опции предоставляются удаленным сервером (API).
2️⃣ Параметры взяты из хост-приложения виджета.
3️⃣ Опции генерируются в рантайме.
📖 В этой статье пойдёт речь о первой ситуации. И хотя руководство посвящено этому сценарию, обсуждаемые принципы и методы также могут быть применены к двум другим.
@iOS Dev
7 876
Как написать свой первый Unit Test на Swift
Не все и не всегда пишут тесты, и этому периодически бывают самые разные объяснения (иногда вполне обоснованные).
🧑💻 Если вы новичок в Swift или iOS, вы обязательно зададите себе этот вопрос в какой-то момент.
На самом деле, первые шаги в тестировании сделать довольно просто.
📖 И в этой статье Винсент объясняет, что для этого необходимо сделать.
@iOS Dev
7 876
Загрузка данных в SwiftUI с помощью URLSession и async/await
Хотя загрузка данных с сервера может показаться разработчику простой, она зависит от нескольких компонентов.
Учитывая такую сложность управления, неудивительно, что
URLSession является центральным узлом, который позволяет настроить каждый аспект для группировки нескольких запросов.
📖 В этом обширном материале вы сможете узнать о следующих вещах:
1️⃣ Как с помощью URLSession управлять передачей данных.
2️⃣ Моделирование данных, получаемых через URLSession.
3️⃣ Управление асинхронным процессом обновления от download task.
4️⃣ Создание пользовательского интерфейса для управления загрузкой данных.
@iOS Dev7 876
Разбор нововведений в Swift 5.8: API с обратным развертыванием, улучшенные result builders и не только
Хотя многие важные изменения Swift в настоящее время можно узнать в Swift Evolution, Swift 5.8 сам по себе является более чистым релизом: есть не только дополнения, но также и улучшения функциональности.
📖 В этой статье Пола Хадсона можно узнать о самых важных изменениях, включающих примеры кода и пояснения.
Вам понадобится Xcode не ниже 14.3, но учтите: некоторые изменения требуют определенного флага компилятора до релиза Swift 6.
🛠 Можно заранее скачать playground, который используется в статье.
@iOS De
7 876
Генерация похожих цветов в Swift или почему RGB не всегда лучший выбор
Теоретически RGB — это группа цветовых пространств, которая позволяет указать дисплею, какое напряжение требуется каждому субпикселю.
Однако на практике теперь у нас есть телефоны с дисплеями, которые позволяют отображать более 100% красного цвета, называемым суперкрасным.
О RGB тоже трудно думать. Красный, зеленый и синий аддитивный свет ведут себя не так, как мы привыкли — вы можете видеть отдельные цвета вблизи, но по мере удаления они смешиваются вместе, и вы начинаете видеть только один цвет.
Наконец, RGB трудно манипулировать. Если вы начнете с черного, вы можете увеличить количество «красного» в палитре цветов RGB, что сделает все более красным. Все идет нормально. Затем вы начинаете увеличивать «зеленый», и вы получаете… желтый?
Но есть и другие представления цветов, которые легче поддаются изменению.
📖 В этом необычном материале автор делится своими размышлениями о генерации цветов на Swift и рассказывает о выводах, к которым пришёл.
Например, вы можете прочесть о цветовом пространстве Hue-Chroma-Luminance.
🛠 И даже немного поиграть с палитрой цветов, примеры кода: тут, тут, здесь или вот в этом gist.
@iOS Dev — в день 8 марта тема цветов выбрана неслучайно, поздравляю всех девушек с международным женским днём ❤️🔥🌹
7 876
Реализация поддержки ссылок с обработкой нажатий в UILabel на Swift
UILabel поддерживает отображение строк с атрибутами ссылки, но не позволяет нажимать на них и открывать их в браузере.
Конечно, можно реализовать это на базе UITextView, но это более тяжелый компонент и, следовательно, может быть не лучшим выбором.
🛠 Однако реализация не так проста, и для этого нам потребуется собственные NSLayoutManager, NSTextStorage и NSTextContainer.
📖 В этом материале рассказывается, как создать такие ссылки с обработкой тапов.
@iOS Dev7 876
О сложном пути и о Гунсунь Луну из царства Чжао
Пост не только о разработке, но и о том, что мне кажется важным
Если бы за последние 25 лет авиационная промышленность развивалась столь же стремительно, как вычислительная техника, то Boeing 767 можно было бы приобрести сегодня за 500 долларов и облететь на нем земной шар за 20 мин, израсходовав при этом 19 литров горючего. Цитата из журнала «В мире науки» (1983, 8 выпуск).
⏳ Когда мы видим сложную задачу или что-то, кажущееся на первый взгляд недостижимым, можно посчитать, что для достижения этой цели потребуется бесконечное количество времени или иных ресурсов. И очень часто эта возможность так и остаётся возможностью.
Это касается хардорных фич, объёмного рефакторинга, попаданию в IT в целом, или участию в каких-то контестах, в частности.
Метафорически это можно сравнить с игрой в умники и умницы, подсознательно хочется выбрать зелёную дорожку с двумя ошибками вместо красной, которая этого не прощает.
Иногда хочется быстрее прийти к финишу в одном соревновании. На мой взгляд, гораздо важнее выработать технику, которая будет с вами навсегда. Неважно, играете вы в квизы или занимаетесь спортом, стабильность важнее кратковременного успеха, а нахождение в топ-10 на протяжении сезона лучше одной случайной победы.
⚽️ В футболе такая же параллель: вчерашняя победа Ливерпуля со счётом 7-0 невероятна, но капитан Манчестер Юнайтед не должен пихать судью на 86 минуте матча. В целом, лучше проиграть один раз 7-0, чем 7 раз по 1-0.
Несмотря на то, что стремление к лучшему естественно, как известно - это враг хорошего (спасибо, Вольтер).
Гунсунь Луну сказал: «Если от палки длиной в один чи ежедневно отнимать половину, это не завершится и через 10000 поколений».
Важно знать меру. И 1 000 задач на литкоде это замечательно, но станете ли вы счастливее от этого?
@iOS Dev — так проснитесь же, мистер Фримен
7 876
О сложном пути и о Гунсунь Луну из царства Чжао
Пост не только о разработке, но и о том, что мне кажется важным
Если бы за последние 25 лет авиационная промышленность развивалась столь же стремительно, как вычислительная техника, то Boeing 767 можно было бы приобрести сегодня за 500 долларов и облететь на нем земной шар за 20 мин, израсходовав при этом 19 литров горючего. Цитата из журнала «В мире науки» (1983, 8 выпуск).
⏳ Когда мы видим сложную задачу или что-то, кажущееся на первый взгляд недостижимым, можно посчитать, что для достижения этой цели потребуется бесконечное количество времени или иных ресурсов. И очень часто эта возможность так и остаётся возможностью.
Это касается хардорных фич, объёмного рефакторинга, попаданию в IT в целом, или участию в каких-то контестах, в частности.
Метафорически это можно сравнить с игрой в умники и умницы, подсознательно хочется выбрать зелёную дорожку с двумя ошибками вместо красной, которая этого не прощает.
Иногда хочется быстрее прийти к финишу в одном соревновании. На мой взгляд, гораздо важнее выработать технику, которая будет с вами навсегда. Неважно, играете вы в квизы или занимаетесь спортом, стабильность важнее кратковременного успеха, а нахождение в топ-10 на протяжении сезона лучше одной случайной победы.
⚽️ В футболе такая же параллель: вчерашняя победа Ливерпуля со счётом 7-0 невероятна, но капитан Манчестер Юнайтед не должен пихать судью на 86 минуте матча. В целом, лучше проиграть один раз 7-0, чем 7 раз по 1-0.
Несмотря на то, что стремление к лучшему естественно, как известно - это враг хорошего (спасибо, Вольтер).
Гунсунь Луну сказал: «Если от палки длиной в один чи ежедневно отнимать половину, это не завершится и через 10000 поколений».
Важно знать меру. И 1 000 задач на литкоде это замечательно, но станете ли вы счастливее от этого?
@iOS Dev — так проснитесь же, мистер Фримен
7 876
Различные способы сортировки массива строк в Swift
В Swift есть два способа сортировки: тот, который мутирует исходный массив, и тот, который этого не делает.
У них обоих одно и то же требование: элемент в коллекции должен соответствовать протоколу Comparable.
Типы, соответствующие этому протоколу, можно сравнивать с помощью операторов
<, <=, >= и >.
📖 В этом материале рассказывается о различных способах сортировки, а также объясняется, в каких случаях localizedStandardCompare поможет справиться, например, с упорядочиванием имен формата Name2.txt, Name7.txt, и Name25.txt.
@iOS Dev7 876
Для работы в международной команде базового английского может не хватить. Держите 5 советов, которые помогут подготовиться к общению с иностранными коллегами.
Если хотите подтянуть язык для работы в IT — попробуйте Яндекс Практикум. Они запустили курсы специально для разработчиков, аналитиков и продакт-менеджеров.
В основе обучения — занятия с личным преподавателем, дополнительно вас ждёт разговорная практика с иностранными IT-специалистами. Они помогут освоить язык на примере собеседований, стендапов, ревью и других рабочих встреч. Будет проще пройти реальное англоязычное собеседование, если вы уже тренировали его на занятиях.
🌐 Записывайтесь на бесплатную консультацию к куратору. Он определит ваш уровень языка и расскажет о курсе.
@iOS Dev
7 876
Визуальное справочное руководство для документирования кода на Swift
📖 В этом огромном материале Marco Eidinger представляет полный обзор параметров для документирования.
Кроме этого, он делится советами и рекомендациями по эффективному созданию документации, а также рассматривает различия между
Xcode Quick Help по сравнению с DocC Renderer и Jazzy.
@iOS Dev7 876
Weekend offer от ВКонтакте для C++ и мобильных разработчиков
Множество ключевых команд приглашают разработчиков получить шанс попасть в одну из них за выходные: достаточно оставить отклик, и с вами свяжутся.
Уже 11–12 марта состоятся встречи с тимлидами: они расскажут про процессы и задачи, которые предстоит решать, и ответят на все вопросы. Также состоятся интервью и финальные собеседования с кандидатами. А вечером второго дня определят лучших и отправят им оффер.
Успевайте оставить отклик до 9 марта!
@iOS Dev
7 876
🔆 Обновление App Store: бенчмарки для приложений
С помощью нового показателя в App Analytics вы можете оценить производительность своего приложения, сравнив ее с аналогичными приложениями в App Store.
Выкатили сравнение по следующим показателям:
🔘Коэффициент конверсии.
🔘Коэффициент удержания на 1-й, 7-й и 28-й день.
🔘Показатель сбоев.
🔘Средний доход на одного платящего пользователя.
Приложения в одной и той же категории App Store группируются вместе.
🌐 На официальном сайте можно прочитать про каждый параметр подробнее, а также узнать про советы по улучшению показателей.
@iOS Dev
7 876
Зарплаты разработчиков во второй половине 2022
🟢 По сравнению с первой половиной 2022 года, зарплаты ощутимо выросли у стажеров — на 14%. Немного подросли зарплаты сеньоров и лидов — по 4%. Практически не изменились зарплаты мидлов и джунов.
🟢 Больше всего выросли зарплаты разработчиков Delphi — на 28%.
Медианная зарплата Objective-С разработчиков выросла на 4% — 260 000 ₽.
🤑Медианная зарплата джунов на Swift — 95 000 ₽ (+9%), процентно схожий рост у мидлов, у сеньоров +3%.
💪 Среди лидов больше всего платят Swift-разработчикам — 350 000 ₽, а меньше всего лиды получают в 1С.
@iOS Dev — о важном
7 876
Три способа передачи данных при использовании WatchConnectivity
⌚При работе с
watchOS, существуют различные методы для связи между устройствами iPhone и Apple Watch.
Основной точкой взаимодействия является класс WCSession. Этот объект используется для создания соединения между телефоном и часами.
И хотя Apple рекомендует использовать собственные возможности URLSession для запроса данных, методы из поста предназначены для передачи небольших объемов информации.
📖 В этом материале автор рассказывает о своём опыте работы с watchOS и плюсах и минусах каждого из способов связи между Apple Watch и iPhone.
@iOS Dev7 876
Создание шаблонов заголовков в Xcode для Swift Packages
Если вы используете
Swift Package, при создании нового файла возникают две неприятные проблемы:
1️⃣ Нет шаблона заголовка.
2️⃣ Нет запроса для имени файла.
📖 В этом материале есть решение для обеих проблем (вы можете использовать его и под свои рабочие процессы).
📖 А про изменение стандартных заголовков в файлах Xcode есть небольшой пост вот тут.
@iOS Dev