iOS Dev
7.72K subscribers
1.01K photos
85 videos
1 file
1.17K links
🍏Канал об iOS-разработке, необычных подходах и решениях.
👨‍💻Автор: Виктор Грушевский (@Viktorianec)
Темы:
⭐️ Подготовка к собеседованиям.
⭐️ Архитектуры и алгоритмы.
⭐️ Код. Много кода.

⚒️База знаний: https://boosty.to/ios_dev

#ios #mobile #swift
Download Telegram
Работа с таймером в AlarmKit

Одним из фреймворков, представленных на WWDC, стал AlarmKit.

Для интеграции необходимо выполнить всего пару простых шагов (и добавить ключ NSAlarmKitUsageDescription).

📖 В этом туториале можно посмотреть на пример настройки проекта вместе с Live Activity (для локскрина и Dynamic Island) и познакомиться с возможностям конфигурации.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
513👍7🔥7❤‍🔥21💯1
Сколько iOS-разработчиков в вашей команде?
Anonymous Poll
24%
1
15%
2
11%
3
18%
4-5
13%
6-10
7%
11-20
3%
21-30
10%
> 30
🔥1411❤‍🔥432💯22👍1
Кто такой senior-разработчик

Тот, кто проработал больше 5 (10) лет? Тот, кто лучше всех знает, как устроен компилятор? Человек, который лучше всех пишет код?

А что вообще значит «лучше»?

Моя позиция, что совершенно необязательно человек должен знать всё обо всём, чтобы считаться таковым. В целом, все эти лычки/звания относительны и меняются от одной компании к другой (а иногда и от отдела к отделу). Более того, даже на стадии собесов проверяющие могут сделать вывод, кардинально отличающийся от другого набора собеседующих в той же компании.

На мой взгляд, ни количество кода, ни тем более количество задач (которые некоторые менеджеры считают объективным показателем), не отражают уровень владения инструментами.

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

То, что называют системным дизайном (или проектированием, терминология не так важна) вполне может проецироваться не только на глобальный уровень при создании приложения, но и на его компоненты. Масштабирование, способность реагирования на ошибки (или отказы) и вместе с тем сохранение производительности — важные вехи при реализации.

Мне импонирует сравнение на счёт количества строк в коде (что джун добавляет 50 строчек, миддл 1000, а сеньор удаляет 5), это не так далеко от правды. Премировать за количество строк кода — нонсенс, но я слышал и такие истории. Конечно, в случае если вы Маяковский - это можно оправдать, но в остальных ситуациях это просто за гранью разумного.

Способность писать понятный другим код (и вам, если вернетесь к нему через три года) — навык, который вырабатывается итерационно, иногда годами. В этом плюс ревью в команде (залетайте в тред, возможно вам будет что добавить).

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

И хотя это может показаться очевидным, на самом деле дистанция от «решил» до «решил понятно» может быть гигантской.

А умение формулировать свои мысли — важно не только в разработке, но и в жизни.

А кто в вашем понимании сениор-разработчик? Поделитесь мнением.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
830👍16❤‍🔥11🔥62👏1
Типобезопасная и удобная обработка ошибок в Swift 6

Swift 6 привнес в язык новую интересную возможность: typed throws. С помощью этого изменения можно определить, какие типы ошибок может выбрасывать функция.

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

📖 В этом посте можно посмотреть на пример кастомного протокола ошибок и на два кейса использования в Swift 6.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥19👍1183
Reaper — фреймворк для обнаружения неиспользуемого кода в рантайме

В качестве примера разработчики приводят историю уменьшения кодовой базы Duolingo на целый процент (или 10 000 строк кода).

Он поддерживает все классы, написанные на Objective-C, большинство non-generic классов Swift и некоторые structs/enums Swift.

Инструмент от Emerge tools (теперь он опенсорс как и FaultOrdering) определяет набор используемых классов, а каталог Scripts в этом репозитории содержит программу для определения набора всех возможных типов, которые может обнаружить reaper. Разница между этими наборами - неиспользуемые типы.

➡️ О влиянии фреймворка на перфоманс можно почитать здесь, а к бинарнику это добавит <20 килобайт.

📖 Статья с примерами и разбором для iOS (и Android) доступна вот тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
818🔥12👍84❤‍🔥31🏆1
GM Shaders — подборка материалов по изучению шейдеров от новичков до профессионалов

Я люблю изучать сложные темы (алгоритмы, анимации и неочевидные подходы к непростым темам) и часто делюсь в канале примерами.

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

От математики и примеров функций до решения частых ошибок при работе с шейдерами (и как их избежать).

Также статьи разбиты на три блока: для новичков, любителей и про.

Напомню, что в iOS IQ можно посмотреть на большую подборку необычных анимаций (и узнать несколько советов).

🔗 Warp-эффект на metal-шейдере
🔗 Beauty infinite loop
🔗 Огненный шейдер

Код всех реализаций есть 💰 тут и ⭐️ тут.


😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥1613❤‍🔥84👍2💯1
This media is not supported in your browser
VIEW IN TELEGRAM
История настроек Mac — интерактивный сайт о Control Panel и не только

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

Так было с появлением swipe-to-unlock, размером иконок в iPhone или, например, с Core Graphics.

Знали ли вы, что есть сайт, на котором есть целая коллекция ПО (и релизов осей в целом) для Macintosh и NeXT, которые легко доступны через веб-браузер?

На этой неделе вышла объёмная и раскрывающая многие детали реализации для Control Panel статья с интерактивным способом изучения.

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

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

📖 Прочитать всю историю можно тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
715❤‍🔥77🔥51👍11
Большое обновление для iOS IQ - уже на проверке в App Store

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

В личные сообщения часто приходят приятные отзывы (спасибо за них ♥️) и даже предложения сделать его платным - но у меня такой цели нет.

На текущий момент у него несколько тысяч установок в самых разных локациях - что само по себе неплохой повод добавить как минимум топ-5 языков для локализации (но на это нужно время).

Так вот, кроме очевидных тестов там есть история, возможность побороться за лидерство в таблице и чекнуть объяснения заковыристых вопросов.

А сегодня я хочу анонсировать новую ветку в проекте.

😎 Добавлен новый режим - на проверку знаний кода, своеобразный способ почувствовать себя ревьюером.

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

Нужно составить код из представленных строк так, чтобы он решал конкретную задачу (есть несколько подводных камней - так как кода может быть больше, чем необходимо - и вам понадобится убрать всё лишнее). Можно сравнить это с ревью пулл-реквестамив, но чуть попроще, конечно.


Кроме этого, прилично обновлён раздел с многопоточкой, сюда перекочевало ещё несколько десятков вопросов из бусти (но там есть и объяснение, и разбор важных деталей).

Приложение уже на проверке, и будет доступно в тестфлайте в ближайшее время всем подписчикам.

Если вы хотите первым его попробовать, напомню, что такая возможность существует 💰 на бусти и ⭐️ прямо здесь.

А если вы хотите ускорить выход обновления в App Store - поддержите этот пост.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
1018❤‍🔥13👏7👍52🔥1🫡1🆒1
Совместимость Swift и C++ на практике

Возможность полноценного взаимодействия с C++ была представлена в Swift 5.9.

Большое количество API на C++ можно вызывать непосредственно из Swift, а некоторые свифтовые API можно использовать из C++.

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

📖 В этом посте Artur Gruchała показывает, как можно вызывать функции C++, оборачивать классы и передавать сложные типы данных.

А ещё можно познакомиться и с особенностями сборки: от карты модулей и работы с заголовками до твиков SwiftPM/Xcode и лучших опциях управления памятью и обработки ошибок.

➡️ А большой гайд со всеми деталями есть на официальном портале swift.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍14115🔥3🤯2❤‍🔥1