Type Erasure в Swift
Одна из главных путаниц вселенной — это дженерики. Обязательная рубрика и задачи на высоких грейдах.
Когда-нибудь мы сделаем плотную рубрику с разбором на канале. А сейчас разберем популярный кейс.
Если у нас есть протокол с ассоциативным типом, то часто мы столкнемся с такой проблемой:
🔘 1. Есть протокол ObjectProtocol
🔘 2. Есть парочка имплементаций этого протокола
🔘 3. Есть класс, который ожидает обобщенный тип ObjectProtocol.
Здесь проблема, что комплилятор не сможет понять какие именно параметры будут в ассоциативных типа и выведет ошибку.
В новых версиях языка отчасти проблему можно решить с помощью any, но в старых мы делали древнюю технологию под названием Type Erasure. Это обертка, которая помогает реализовать этот протокол. В стандартной либе свифт есть много таких оберток, но мы напишем свою.
👆 Вкратце ознакомися на скриншотах 👆
🔜 А прочитать детальную и подробную статью можно тут
Одна из главных путаниц вселенной — это дженерики. Обязательная рубрика и задачи на высоких грейдах.
Когда-нибудь мы сделаем плотную рубрику с разбором на канале. А сейчас разберем популярный кейс.
Если у нас есть протокол с ассоциативным типом, то часто мы столкнемся с такой проблемой:
Здесь проблема, что комплилятор не сможет понять какие именно параметры будут в ассоциативных типа и выведет ошибку.
В новых версиях языка отчасти проблему можно решить с помощью any, но в старых мы делали древнюю технологию под названием Type Erasure. Это обертка, которая помогает реализовать этот протокол. В стандартной либе свифт есть много таких оберток, но мы напишем свою.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Mobile Developer (Алексей Гладков)
Mobile Developers Survey Report [EN]
https://get.embrace.io/mobile-app-developers-report/
Исследование в котором приняли участие более тысячи разработчиков
Ключевые моменты
👉 Самая угнетающее в разработке это, когда долго не можешь пофиксить баг
👉 Больше всего android разрабов волнует производительность их аппок, а iOS tooling
👉 На втором месте разрабов больше всего бесят постоянные встречи и кривые процессы
👉 и еще много интересного
https://get.embrace.io/mobile-app-developers-report/
Исследование в котором приняли участие более тысячи разработчиков
Ключевые моменты
👉 Самая угнетающее в разработке это, когда долго не можешь пофиксить баг
👉 Больше всего android разрабов волнует производительность их аппок, а iOS tooling
👉 На втором месте разрабов больше всего бесят постоянные встречи и кривые процессы
👉 и еще много интересного
get.embrace.io
2024 Mobile App Builders Report
Learn about the priorities and pain points of mobile engineers, how these factors affect app building, and how you can leverage this data to improve your mobile app.
Проклятие сеньор разрабов
Наконец об этом кто-то написал.
Одна из частых проблем разрабов на высоких грейдах — стагнация, изоляция и рутина.
Дойдя до сеньорного грейда на своей работе, многие начинают закрываться в своем мирке и думать, что раз в одной компании достигли вершины, то очень легко сменят другую. Это мышление опасно и приводит к разочарованиям при попытке сменить работу.
Повышение в одной компании не дают за рыночные навыки, а чаще за локальные победы, которые далеко не всегда связаны с твоими инженерными навыками или требованиями рынка.
В статье автор с 14 лет опыта рассказывает как избежать своих ошибок и проклятия. Эффективно управлять своей карьерой, не пытаться втиснуться в чужие рамки и постоянно развиваться
Наконец об этом кто-то написал.
Одна из частых проблем разрабов на высоких грейдах — стагнация, изоляция и рутина.
Дойдя до сеньорного грейда на своей работе, многие начинают закрываться в своем мирке и думать, что раз в одной компании достигли вершины, то очень легко сменят другую. Это мышление опасно и приводит к разочарованиям при попытке сменить работу.
Повышение в одной компании не дают за рыночные навыки, а чаще за локальные победы, которые далеко не всегда связаны с твоими инженерными навыками или требованиями рынка.
В статье автор с 14 лет опыта рассказывает как избежать своих ошибок и проклятия. Эффективно управлять своей карьерой, не пытаться втиснуться в чужие рамки и постоянно развиваться
yield code();
The Curse of the Senior Software Engineer - Dmitry Kudryavtsev
While looking for a job recently, I stumbled upon an interesting phenomen that I consider to be a curse for senior software engineers.
Небольшое прилюдие. Я продолжаю собирать задачи, вопросы и знания, которые заапрувлены высококлассными инженерами, собрать такую среду — мой главный акцент.
В ней мы отсеим лишнее и оставим проверенное прикладным опытом разных компаний, боевых задач топ 1 тира.
На мой взгляд, наш чат и комьюнити уже наполнилось самыми проверенными и сильными инженерами, которые легко помогают мне наполнять базу знаний и каждый день наполняют список для обучения. Здесь много и матерых инежнеров, и талантливой свежей крови. Каждый учит друг друга.
Вышла в релиз первая часть вопросов для собеседований по SwiftUI.
В рамках нее 20 вопросов с ответами и пару десятков статей. Задачи с кодом и проектированием решил делать отдельными сборниками.
Скоро будет статья про навигацию
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Продолжаю рубрику "Пишем свой телеграм".
В прошлом посте мы сделали эффект спойлеров, а сейчас время реакций.
Для подписчиков бусти доступен код с комментариями и объяснениями как сделать такие реакции с кривыми анимациями, расчетом позиций и другими приколами.
Ежедневно я создаю контент для подписчиков бусти. Следующий пост в этой рубрике будет про эффект Таноса, как при удалении сообщений.
*почти
Please open Telegram to view this post
VIEW IN TELEGRAM
Мощный паттерн, который помогает экономить данные при переиспользовании. Обычно он полезен там, где требуется оптимизировать память.
Пример:
Есть текстовый редактор с документом больше 1000 символов. Многие символы имеют одинаковые атрибуты. Для них можно создать легковесный объект для хранения общих атрибутов.
Какие проблемы он решает:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Тема навигации в SwiftUI одна из самых объемных и проблемных.
Хорошая навигация должна включать в себе множество возможностей:
В процессе подготовки материала для нашего пет-проекта я понял, что одной частью не обойдется.
В первой части я попытался пройтись по двум решениям до iOS 16. Потому что именно версии ниже были сложными и проблемными.
В следующих статьях пройдемся по другим и плавно подойдем к решениям после iOS 16.
Please open Telegram to view this post
VIEW IN TELEGRAM
Один из главных вопросов по навигации чем же отличается роутер от координатора. В своей функции они очень похожи — оба отвечаю за навигацию.
Главное же отличие такое: Роутер отвечает за вызов из одного экрана, а координатор управляет потоком экранов.
У координатора обычно есть набор дочерних экранов, где мы можем легко изменять порядок, добавлять или удалять экраны. При использовании координатора, роутер помогает закрывать и показывать ViewController'ы. Роутер не знает какой контроллер показывать, ему об этом сообщает координатор.
Когда использовать координатор:
- Когда хотим отделить знание экранов о друг друге.
- Хотим управлять последовательностью экранов
Доп. ссылки:
- Coordinator Pattern
- Router
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Обновление ноушена и комьюнити за неделю
Развитие — это беспрерывное движение. В нашей индустрии стоять на месте значит умирать. Каждый день я создаю контент для подписчиков ноушена, который частями перекатывается в этот канал. Так я развиваюсь сам и делюсь опытом с другими. Знания и подходы формулируются, прогресс становится быстрее и лучше.
Обучение — это навык. Обучаться вместе с единомышленниками и теми, кто влюблен в свою работу — в разы эффективней. Так ты определяешь свой и чужой. Так принимаемая информация лучше усваивается и ты не замечаешь объемы.
За эту неделю мы сделали:
🔘 Вопросы по собесам для мидлов по памяти часть 1
🔘 Вопросы по собесам для джунов по SwiftUI часть 1
🔘 Выделили лучшие идеи для программистов-прагматиков
🔘 Написали статьи про модификаторы и навигацию в SwiftUI
🔘 Выбрали тему для очередного созвона
🔘 В чате попытались перейти на темы, но откатили. А также поговорили про черные списки, как будущие коллеги собирают про нас фидбэк, про цифровые следы в интернете и о многом другом.
Полный список изменений в картинке
🌸 Вступить в сообщество и получить доступ к закрытым материалам можно тут.
Развитие — это беспрерывное движение. В нашей индустрии стоять на месте значит умирать. Каждый день я создаю контент для подписчиков ноушена, который частями перекатывается в этот канал. Так я развиваюсь сам и делюсь опытом с другими. Знания и подходы формулируются, прогресс становится быстрее и лучше.
Обучение — это навык. Обучаться вместе с единомышленниками и теми, кто влюблен в свою работу — в разы эффективней. Так ты определяешь свой и чужой. Так принимаемая информация лучше усваивается и ты не замечаешь объемы.
За эту неделю мы сделали:
Полный список изменений в картинке
Please open Telegram to view this post
VIEW IN TELEGRAM
Ритуальное ежегодное погребение иосеров или что такое цифровая услуга
Недавно мне сказали, что будущее за вебом и наши айфоны и мобилки никому не нужны. Банки переходят на веб, некоторые отделы расформировываются, а спрос на устройства падает.
Восемь лет назад, когда я был еще фуллстэк разрабом и хотел перейти в мобилку, мне кричали что она умрет. Есть перспективная технология React Native, которая похоронит всех мобильщиков и фронты будут писать для мобилки на джаваскрипте. Есть PWA приложения, которые работают не хуже, Есть офигенный вебвью, который ведь даже чем-то лучше.
Это все обычно пророчили люди, кто пользовался андроидом. Ведь как этот огрызок может конкурировать с миллионами терабайт озу, великолепным дисплеем на пару тысяч метров и колосальной свободой распространения апок. Айфоны — для лохов, кого обдурил Стив Джобс. И для тех, кто любит понтоваться.
Я с ними согласен и поэтому перехожу на андроид. Шутка. Но если серьезно такая риторика повторяется каждые пару лет и эту лодку пытаются шатать все. Одна кроссплатформа вымирает и приходит другая. PWA, BDUI и вебвью вот вот придут, но эффект как в том зацикленном меме с грузовиком, который вот вот въедет в столб. А айфоны это также для людей у кого есть понты, даже если эти люди платят зарплату и владеют бизнесом.
Подводя итоги что же такое айфон за те годы сопротивления. Айфон — это новый вид устройства, который изменил рынок цифровой экономики. Он сделал моду на мобильные приложения, он сделал удобным потребления контента и приковал внимания разработчиков, которые стали подражать.
Новый вид цифровых услуг, где ты экономишь свое время и деньги. Новый вид развлечений, где дизайн диктуется флагманской платформой. Новый вид бизнеса, где сфера услуг стала цифровой и ит-трансформация создала миллионы миллионеров.
Поверю ли я, что мобильная разработка умрет? Никогда. А те, кто так считает, просто теряют самую платежеспособную аудиторию. А кто пытается заменить натив на гибрид просто не понимает, что юзеру понятней и доступней нативная мобильная платформа, чем инородный вебвью или мобильная версия. Потеря места на рынке равно отдать свой бизнес бесплатно конкурентам. А на это место обязательно придет кто-то новый. Но это совсем другая история.
Недавно мне сказали, что будущее за вебом и наши айфоны и мобилки никому не нужны. Банки переходят на веб, некоторые отделы расформировываются, а спрос на устройства падает.
Восемь лет назад, когда я был еще фуллстэк разрабом и хотел перейти в мобилку, мне кричали что она умрет. Есть перспективная технология React Native, которая похоронит всех мобильщиков и фронты будут писать для мобилки на джаваскрипте. Есть PWA приложения, которые работают не хуже, Есть офигенный вебвью, который ведь даже чем-то лучше.
Это все обычно пророчили люди, кто пользовался андроидом. Ведь как этот огрызок может конкурировать с миллионами терабайт озу, великолепным дисплеем на пару тысяч метров и колосальной свободой распространения апок. Айфоны — для лохов, кого обдурил Стив Джобс. И для тех, кто любит понтоваться.
Я с ними согласен и поэтому перехожу на андроид. Шутка. Но если серьезно такая риторика повторяется каждые пару лет и эту лодку пытаются шатать все. Одна кроссплатформа вымирает и приходит другая. PWA, BDUI и вебвью вот вот придут, но эффект как в том зацикленном меме с грузовиком, который вот вот въедет в столб. А айфоны это также для людей у кого есть понты, даже если эти люди платят зарплату и владеют бизнесом.
Подводя итоги что же такое айфон за те годы сопротивления. Айфон — это новый вид устройства, который изменил рынок цифровой экономики. Он сделал моду на мобильные приложения, он сделал удобным потребления контента и приковал внимания разработчиков, которые стали подражать.
Новый вид цифровых услуг, где ты экономишь свое время и деньги. Новый вид развлечений, где дизайн диктуется флагманской платформой. Новый вид бизнеса, где сфера услуг стала цифровой и ит-трансформация создала миллионы миллионеров.
Поверю ли я, что мобильная разработка умрет? Никогда. А те, кто так считает, просто теряют самую платежеспособную аудиторию. А кто пытается заменить натив на гибрид просто не понимает, что юзеру понятней и доступней нативная мобильная платформа, чем инородный вебвью или мобильная версия. Потеря места на рынке равно отдать свой бизнес бесплатно конкурентам. А на это место обязательно придет кто-то новый. Но это совсем другая история.
Начал работать над второй часть вопросов для собеседований.
В ней хочу пройтись по:
Please open Telegram to view this post
VIEW IN TELEGRAM
Эстетический интеллект, стоимость внимания и simple life
Пока собирал материал для нашего следующего созвона про бабки, то случайно начал формулировать свою философию. О том, на что их нужно тратить и сколько стоит наша жизнь.
Богатый человек для нас определяется не колличеством ресурсов, а их правильным распределением. Слишком много золота в зубах не делает тебя привлекательным. Слишком сильная одержимость на бабках делает в своих и чужих глазах бедным и несчастным.
Я сформулировал несколько правил жизни из разных источников, которые помогают мне вести канал, жить и развиваться. А также на которых буду делать акцент в будущем:
🔘 Прокачивать эстетический интеллект. Об этом есть отличная книга, которую я упонял раньше. Мы работаем с премиум девайсами, а чаще какой-нибудь бюджетный айфон SE выглядят желанней, чем какой-нибудь ксяоми с ценой х2.
Даже ведя канал очень много для меня значит дизайн. Он не должен быть избыточно кричащим. Хороший и дорогой дизайн — сдержан и малословен.
🔘 Ценить свое внимание. Наблюдая за некоторыми меркантильными сообществами я вижу главную проблему. Они хотят денег, но не знают что купят на них. Поэтому их формат и философия, за много лет существования, не обрела форму. Они вечно наполняют себя разными темами для бесед, отвлекаются на разные сходки и говорят обо всем, но ни о чем. Спам и флуд засоряют эфир, а сотни чатов уводят от акцентов.
Хороший дизайн не пытается запутать избыточностью и перегрузкой, чтобы обмануть или отвлечь. Настоящий премиум дизайн хочет лаконично обнажиться.
Здесь я очень близок с философией Олега Торбосова, владельца премиум агенства, где у него была важная фраза "Самая главная валюта — это наше внимание". В своей философии хочется опять же придерживать емкости и фокуса. Где ты четко понимаешь для чего нужны тебе ресурсы, а не чтобы купить любую безделушку в свою песочницу. Часто, многие вещи не заслуживают наше внимание.
🔘 Стратегия Simple life. Все три принципа очень похожи и кажется, что говорят про одно: сдержанности, емкости и простоте. О каком месте в этой жизни ты можешь говорить, если вечно меняешь его? Прям как наши любимые айфоны. Но стратегия простой жизни не говорит о лени, она говорит о приоритетах. Как не нужно переполнять себя ненужными делами и отдавать себя немногим, но важным делам. Это отлично формулирует книга "Эссенциализм: путь к простоте"
Вся эта подводка для анонса небольшого редизайна канала и ноушена, который будет отражать мои принципы. А вы можете поделиться крутыми дизайнерами.
Пока собирал материал для нашего следующего созвона про бабки, то случайно начал формулировать свою философию. О том, на что их нужно тратить и сколько стоит наша жизнь.
Богатый человек для нас определяется не колличеством ресурсов, а их правильным распределением. Слишком много золота в зубах не делает тебя привлекательным. Слишком сильная одержимость на бабках делает в своих и чужих глазах бедным и несчастным.
Я сформулировал несколько правил жизни из разных источников, которые помогают мне вести канал, жить и развиваться. А также на которых буду делать акцент в будущем:
Даже ведя канал очень много для меня значит дизайн. Он не должен быть избыточно кричащим. Хороший и дорогой дизайн — сдержан и малословен.
Хороший дизайн не пытается запутать избыточностью и перегрузкой, чтобы обмануть или отвлечь. Настоящий премиум дизайн хочет лаконично обнажиться.
Здесь я очень близок с философией Олега Торбосова, владельца премиум агенства, где у него была важная фраза "Самая главная валюта — это наше внимание". В своей философии хочется опять же придерживать емкости и фокуса. Где ты четко понимаешь для чего нужны тебе ресурсы, а не чтобы купить любую безделушку в свою песочницу. Часто, многие вещи не заслуживают наше внимание.
Вся эта подводка для анонса небольшого редизайна канала и ноушена, который будет отражать мои принципы. А вы можете поделиться крутыми дизайнерами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Мок-собес сеньора из бигтеха по System Design
Недавно меня спрашивали какие задачи могут встретиться на собесах по архитектуре. Это очень странно, ведь я писал про них в разделе system design. Потом я понял, что многие думают, что system design — это что-то про бэкенд. Хотя это большое заблуждение.
Если упрощать, то архитектуры, проектирование и system design — это одно и то же, но под разными углами. Выбор архитектурного паттерна лишь часть задачи из общей кучи.
Прикладываю отличный мок-собес, где за час пытаются запроектировать ленту новостей Фейсбука* (запрещен). Тут, при необходимости, можно детализировать и архитектуры, паттерны, бэк, хранилище, многопоточку и многое другое.
Основные критерии:
🔘 Разработка должна быть иттеративной
🔘 Бесконечная лента
🔘 Откуда приходят данные (сервер или кэш)?
🔘 Какой тип данных бывает: текст, изображения, видео и тп?
Это отличная частая задача, которая встречается как в обычной жизни, так и на собесах. Думаю в будущем разобрать отдельно в больших статья как проектировать ленту, чат и другие модули.
🌺 Больше задач по проектированию писал в ноушене
Недавно меня спрашивали какие задачи могут встретиться на собесах по архитектуре. Это очень странно, ведь я писал про них в разделе system design. Потом я понял, что многие думают, что system design — это что-то про бэкенд. Хотя это большое заблуждение.
Если упрощать, то архитектуры, проектирование и system design — это одно и то же, но под разными углами. Выбор архитектурного паттерна лишь часть задачи из общей кучи.
Прикладываю отличный мок-собес, где за час пытаются запроектировать ленту новостей Фейсбука* (запрещен). Тут, при необходимости, можно детализировать и архитектуры, паттерны, бэк, хранилище, многопоточку и многое другое.
Основные критерии:
Это отличная частая задача, которая встречается как в обычной жизни, так и на собесах. Думаю в будущем разобрать отдельно в больших статья как проектировать ленту, чат и другие модули.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Big-tech senior iOS dev system design interview prep: Design the Facebook feed | Live Dev Mentoring
One of our students in the iOS Lead Essentials program recently received job offers from Meta and Apple. Want to see one of the steps in his preparation? 👇
So watch this mentoring session now to help you prepare for the big day.
We highly recommend watching…
So watch this mentoring session now to help you prepare for the big day.
We highly recommend watching…
Forwarded from КиберТопор
This media is not supported in your browser
VIEW IN TELEGRAM
Vision Pro может полностью поменять сферу образования.
Так выглядит визуализация изучения работы сердца в очках от Apple.
Приложение называется Insight Heart.
🕹КиберТопор
Так выглядит визуализация изучения работы сердца в очках от Apple.
🕹КиберТопор
Хорошее приложение должно иметь хорошую навигацию. Поэтому до iOS 16 многие приложения на SwiftUI не назовешь хорошими.
Работа с навигацией в SwiftUI боль:
- Нельзя управлять стэком вызовов
- Почти невозможно сделать диплинки
- Нельзя вынести логику навигации из вью
Начиная же с iOS 16 разрабы сжалились и дали работягам NavigationStack, который упрощает работу. В этом WWDC разрабы попытались показать все плюсы нового API. Насколько оно реальное в больших проектах — решайте сами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Apple Developer
The SwiftUI cookbook for navigation - WWDC22 - Videos - Apple Developer
The recipe for a great app begins with a clear and robust navigation structure. Join the SwiftUI team in our proverbial coding kitchen...
В ноушене вышла новая статья про навигацию с помощью NavigationStack, который вышел вместе с iOS 16
В ней попытался разобрать:
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Код Воробья для iOS разработчиков
Please open Telegram to view this post
VIEW IN TELEGRAM