iOS Makes Me Hate
3.94K subscribers
1.16K photos
167 videos
15 files
1.33K links
Авторский канал про iOS разработку. Путь продуктовых самураев в MAANG.

Самое больше iOS сообщество практиков: https://boosty.to/lionbond/

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
Type Erasure в Swift

Одна из главных путаниц вселенной — это дженерики. Обязательная рубрика и задачи на высоких грейдах.

Когда-нибудь мы сделаем плотную рубрику с разбором на канале. А сейчас разберем популярный кейс.

Если у нас есть протокол с ассоциативным типом, то часто мы столкнемся с такой проблемой:
🔘 1. Есть протокол ObjectProtocol
🔘2. Есть парочка имплементаций этого протокола
🔘3. Есть класс, который ожидает обобщенный тип ObjectProtocol.

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

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

👆 Вкратце ознакомися на скриншотах 👆

🔜 А прочитать детальную и подробную статью можно тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
83
Forwarded from Mobile Developer (Алексей Гладков)
Mobile Developers Survey Report [EN]
https://get.embrace.io/mobile-app-developers-report/

Исследование в котором приняли участие более тысячи разработчиков

Ключевые моменты
👉 Самая угнетающее в разработке это, когда долго не можешь пофиксить баг
👉 Больше всего android разрабов волнует производительность их аппок, а iOS tooling
👉 На втором месте разрабов больше всего бесят постоянные встречи и кривые процессы
👉 и еще много интересного
Проклятие сеньор разрабов

Наконец об этом кто-то написал.

Одна из частых проблем разрабов на высоких грейдах — стагнация, изоляция и рутина.

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

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

В статье автор с 14 лет опыта рассказывает как избежать своих ошибок и проклятия. Эффективно управлять своей карьерой, не пытаться втиснуться в чужие рамки и постоянно развиваться
124
🧬 Вопросы для собеседований SwiftUI | Junior ч. 1

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

В ней мы отсеим лишнее и оставим проверенное прикладным опытом разных компаний, боевых задач топ 1 тира.

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

Вышла в релиз первая часть вопросов для собеседований по SwiftUI.

В рамках нее 20 вопросов с ответами и пару десятков статей. Задачи с кодом и проектированием решил делать отдельными сборниками.

Скоро будет статья про навигацию

🌿 Этот и другие сборники можно найти тут
🧬 Ознакомиться с другими сборниками тут
Please open Telegram to view this post
VIEW IN TELEGRAM
11
This media is not supported in your browser
VIEW IN TELEGRAM
🤬 Реакции как в телеграме*

Продолжаю рубрику "Пишем свой телеграм".

В прошлом посте мы сделали эффект спойлеров, а сейчас время реакций.
Для подписчиков бусти доступен код с комментариями и объяснениями как сделать такие реакции с кривыми анимациями, расчетом позиций и другими приколами.

Ежедневно я создаю контент для подписчиков бусти. Следующий пост в этой рубрике будет про эффект Таноса, как при удалении сообщений.

*почти

🧬 Подробнее про анимации и не только тут
Please open Telegram to view this post
VIEW IN TELEGRAM
75
💎 Паттерн проектирования: Легковес

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

Пример:
Есть текстовый редактор с документом больше 1000 символов. Многие символы имеют одинаковые атрибуты. Для них можно создать легковесный объект для хранения общих атрибутов.

Какие проблемы он решает:
🟣 Большое использование памяти: снижает потребление памяти за счет использования общих данных между несколькими объектами.
🟣 Оптимизация производительности: повышает производительность за счет повторного использования общих данных вместо их пересоздания для каждого объекта.
🟣 Управление большим количеством объектов: упрощает управление большим количеством похожих объектов за счет отделения общих данных от уникальных.

👆 Выше в картинках примеры переиспользования текста для редактора

💎 Больше паттернов здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
13
💎 SwiftUI: Навигация ч. 1

Тема навигации в SwiftUI одна из самых объемных и проблемных.

Хорошая навигация должна включать в себе множество возможностей:
🔘Сохранение стэка экранов
🔘Сброс и доступ к элементам стэка
🔘Переход по дипликам
🔘Сохранение истории
🔘Логичность и стабильность
🔘Гибкость и тестируемость

В процессе подготовки материала для нашего пет-проекта я понял, что одной частью не обойдется.

В первой части я попытался пройтись по двум решениям до iOS 16. Потому что именно версии ниже были сложными и проблемными.

В следующих статьях пройдемся по другим и плавно подойдем к решениям после iOS 16.

💎 Доступ к статье можно получить тут
Please open Telegram to view this post
VIEW IN TELEGRAM
53
🛸 Паттерны навигации: Роутер vs Координатор

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

Главное же отличие такое: Роутер отвечает за вызов из одного экрана, а координатор управляет потоком экранов.

У координатора обычно есть набор дочерних экранов, где мы можем легко изменять порядок, добавлять или удалять экраны. При использовании координатора, роутер помогает закрывать и показывать ViewController'ы. Роутер не знает какой контроллер показывать, ему об этом сообщает координатор.

Когда использовать координатор:
- Когда хотим отделить знание экранов о друг друге.
- Хотим управлять последовательностью экранов

Доп. ссылки:
- Coordinator Pattern
- Router
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
18
Обновление ноушена и комьюнити за неделю

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

Обучение — это навык. Обучаться вместе с единомышленниками и теми, кто влюблен в свою работу — в разы эффективней. Так ты определяешь свой и чужой. Так принимаемая информация лучше усваивается и ты не замечаешь объемы.

За эту неделю мы сделали:
🔘Вопросы по собесам для мидлов по памяти часть 1
🔘Вопросы по собесам для джунов по SwiftUI часть 1
🔘Выделили лучшие идеи для программистов-прагматиков
🔘Написали статьи про модификаторы и навигацию в SwiftUI
🔘Выбрали тему для очередного созвона
🔘В чате попытались перейти на темы, но откатили. А также поговорили про черные списки, как будущие коллеги собирают про нас фидбэк, про цифровые следы в интернете и о многом другом.

Полный список изменений в картинке

🌸 Вступить в сообщество и получить доступ к закрытым материалам можно тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Ритуальное ежегодное погребение иосеров или что такое цифровая услуга

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

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

Это все обычно пророчили люди, кто пользовался андроидом. Ведь как этот огрызок может конкурировать с миллионами терабайт озу, великолепным дисплеем на пару тысяч метров и колосальной свободой распространения апок. Айфоны — для лохов, кого обдурил Стив Джобс. И для тех, кто любит понтоваться.

Я с ними согласен и поэтому перехожу на андроид. Шутка. Но если серьезно такая риторика повторяется каждые пару лет и эту лодку пытаются шатать все. Одна кроссплатформа вымирает и приходит другая. PWA, BDUI и вебвью вот вот придут, но эффект как в том зацикленном меме с грузовиком, который вот вот въедет в столб. А айфоны это также для людей у кого есть понты, даже если эти люди платят зарплату и владеют бизнесом.

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

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

Поверю ли я, что мобильная разработка умрет? Никогда. А те, кто так считает, просто теряют самую платежеспособную аудиторию. А кто пытается заменить натив на гибрид просто не понимает, что юзеру понятней и доступней нативная мобильная платформа, чем инородный вебвью или мобильная версия. Потеря места на рынке равно отдать свой бизнес бесплатно конкурентам. А на это место обязательно придет кто-то новый. Но это совсем другая история.
3184
💎 Вопросы для собеседований UIKit | Junior часть 2

Начал работать над второй часть вопросов для собеседований.

В ней хочу пройтись по:
🔘Методам жизненного цикла UIView
🔘Управление жестами: UIResponder, UIGestureRecognizer
🔘Анимации
🔘Внутренности UIWindow

🌿 Этот и другие сборники можно найти тут
🧬 Ознакомиться с другими сборниками тут
Please open Telegram to view this post
VIEW IN TELEGRAM
7
Эстетический интеллект, стоимость внимания и simple life

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

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

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

🔘 Прокачивать эстетический интеллект. Об этом есть отличная книга, которую я упонял раньше. Мы работаем с премиум девайсами, а чаще какой-нибудь бюджетный айфон SE выглядят желанней, чем какой-нибудь ксяоми с ценой х2.

Даже ведя канал очень много для меня значит дизайн. Он не должен быть избыточно кричащим. Хороший и дорогой дизайн — сдержан и малословен.

🔘Ценить свое внимание. Наблюдая за некоторыми меркантильными сообществами я вижу главную проблему. Они хотят денег, но не знают что купят на них. Поэтому их формат и философия, за много лет существования, не обрела форму. Они вечно наполняют себя разными темами для бесед, отвлекаются на разные сходки и говорят обо всем, но ни о чем. Спам и флуд засоряют эфир, а сотни чатов уводят от акцентов.

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

Здесь я очень близок с философией Олега Торбосова, владельца премиум агенства, где у него была важная фраза "Самая главная валюта — это наше внимание". В своей философии хочется опять же придерживать емкости и фокуса. Где ты четко понимаешь для чего нужны тебе ресурсы, а не чтобы купить любую безделушку в свою песочницу. Часто, многие вещи не заслуживают наше внимание.

🔘Стратегия Simple life. Все три принципа очень похожи и кажется, что говорят про одно: сдержанности, емкости и простоте. О каком месте в этой жизни ты можешь говорить, если вечно меняешь его? Прям как наши любимые айфоны. Но стратегия простой жизни не говорит о лени, она говорит о приоритетах. Как не нужно переполнять себя ненужными делами и отдавать себя немногим, но важным делам. Это отлично формулирует книга "Эссенциализм: путь к простоте"

Вся эта подводка для анонса небольшого редизайна канала и ноушена, который будет отражать мои принципы. А вы можете поделиться крутыми дизайнерами.
Please open Telegram to view this post
VIEW IN TELEGRAM
153
Мок-собес сеньора из бигтеха по System Design

Недавно меня спрашивали какие задачи могут встретиться на собесах по архитектуре. Это очень странно, ведь я писал про них в разделе system design. Потом я понял, что многие думают, что system design — это что-то про бэкенд. Хотя это большое заблуждение.

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

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

Основные критерии:
🔘 Разработка должна быть иттеративной
🔘 Бесконечная лента
🔘 Откуда приходят данные (сервер или кэш)?
🔘 Какой тип данных бывает: текст, изображения, видео и тп?

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

🌺Больше задач по проектированию писал в ноушене
Please open Telegram to view this post
VIEW IN TELEGRAM
9
Forwarded from КиберТопор
This media is not supported in your browser
VIEW IN TELEGRAM
Vision Pro может полностью поменять сферу образования.

Так выглядит визуализация изучения работы сердца в очках от Apple.

Приложение называется Insight Heart.

🕹КиберТопор
195
💎 Советы навигации для SwiftUI от Apple разработчиков

Хорошее приложение должно иметь хорошую навигацию. Поэтому до iOS 16 многие приложения на SwiftUI не назовешь хорошими.

Работа с навигацией в SwiftUI боль:
- Нельзя управлять стэком вызовов
- Почти невозможно сделать диплинки
- Нельзя вынести логику навигации из вью

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

🌄 Еще больше обязательных секций WWDC тут
Please open Telegram to view this post
VIEW IN TELEGRAM
64
💎 SwiftUI: Примеры навигаций с NavigationStack

В ноушене вышла новая статья про навигацию с помощью NavigationStack, который вышел вместе с iOS 16

В ней попытался разобрать:
🔘проблемы прошлых подходов
🔘 какие проблемы решили с релизом нового API
🔘как сделать Coordinator с помощью NavigationStack

💎 Статью можно почитать на бусти
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Forwarded from Код Воробья для iOS разработчиков
📺 🛠 Apple завела канал на YouTube для разработчиков

youtube.com/@AppleDeveloper
Please open Telegram to view this post
VIEW IN TELEGRAM
13