Недавно мне сказали, что начали читать мой ноушен чаще, чем хабр. Это сильная мотивация придумывать больше идей, которые будут полезны мне и вам. А также потенциальная точка масштабирования.
Что вы можете получить за подписку?
Предложение ограниченное (для старых подписчиков тоже действует скидка)
Please open Telegram to view this post
VIEW IN TELEGRAM
SwiftUI: советы по оптимизации
Нативная разработка — это чаще лучший пользовательский и технический опыт. Приложения на нативе в 9 из 10 случаев смотрятся плавнее и красивее, но все зависит от рук разработчика. Любое приложение можно сделать медленным и забагованным, если у тебя руки рака.
Хорошего инженера от плохо отличает, что хороший хочет делать работу хорошо. И у этой оценки всегда растущие требования. Одно из них — оптимизация.
Мы знаем много советов по оптимизации UIKit, но со SwiftUI все не так очевидно.
Автор статьи собрала десяток советов, которые не всегда были бы очевидные:
🟣 Для моделей используйте структуры вместо классов
🟣 Избегайте AnyView
🟣 Чаще используйте Lazy элементы
🟣 Используйте @Stateи @Binding вместо @ObservedObject или @EnvironmentObject
🟣 Используйте ForEach с явным id
И многие другие.
Нативная разработка — это чаще лучший пользовательский и технический опыт. Приложения на нативе в 9 из 10 случаев смотрятся плавнее и красивее, но все зависит от рук разработчика. Любое приложение можно сделать медленным и забагованным, если у тебя руки рака.
Хорошего инженера от плохо отличает, что хороший хочет делать работу хорошо. И у этой оценки всегда растущие требования. Одно из них — оптимизация.
Мы знаем много советов по оптимизации UIKit, но со SwiftUI все не так очевидно.
Автор статьи собрала десяток советов, которые не всегда были бы очевидные:
И многие другие.
Please open Telegram to view this post
VIEW IN TELEGRAM
Canopas blogs
SwiftUI Performance Tuning: Tips and Tricks
SwiftUI Performance Tuning: Tips and Tricks to boost your app’s performance.
Что такое mobile system design?
Большинство форматов собесов себя изживают. Пока мы зубрили доку по iOS рынок придумал еще 2-3 секции, чтобы снизить наши зарплатные ожидания и детальнее оценить кандидатов.
Задачи по знанию iOS часто скатываются в банальный опросник теории, которая на практике встречается редко. Алгоритмы также для многих спорные и требуют очень много времени для подготовки и хорошего навыка программирования.
Альтернативой этому приходит новый компромиссный формат собеседований. Многие подписчики и знакомые все чаще с ним сталкиваются в реальности даже не для сеньорных грейдов.
Мобильное проектирование приложений, или секция архитектуры, не требует сделать идеального решения. Но сильно помогает оценить опыт, харды и софты кандидата. Как он работает в условиях неопределенности и какие решения может предложить не имея ничего. Почти как в реальной жизни. Джуна от сеньора отличает то, что сеньор может работать в максимальной свободе и не ждет пока ему кто-то поможет.
У всех компаний эта секция проходит по-разному: в одних просят нарисовать только схему и поотвечать на вопросы. В других же могут попросить и покодить.
Автор статьи бегло пробегается по частому формату в фаанга. Какие вопросы задают и что могут спросить
Большинство форматов собесов себя изживают. Пока мы зубрили доку по iOS рынок придумал еще 2-3 секции, чтобы снизить наши зарплатные ожидания и детальнее оценить кандидатов.
Задачи по знанию iOS часто скатываются в банальный опросник теории, которая на практике встречается редко. Алгоритмы также для многих спорные и требуют очень много времени для подготовки и хорошего навыка программирования.
Альтернативой этому приходит новый компромиссный формат собеседований. Многие подписчики и знакомые все чаще с ним сталкиваются в реальности даже не для сеньорных грейдов.
Мобильное проектирование приложений, или секция архитектуры, не требует сделать идеального решения. Но сильно помогает оценить опыт, харды и софты кандидата. Как он работает в условиях неопределенности и какие решения может предложить не имея ничего. Почти как в реальной жизни. Джуна от сеньора отличает то, что сеньор может работать в максимальной свободе и не ждет пока ему кто-то поможет.
У всех компаний эта секция проходит по-разному: в одних просят нарисовать только схему и поотвечать на вопросы. В других же могут попросить и покодить.
Автор статьи бегло пробегается по частому формату в фаанга. Какие вопросы задают и что могут спросить
Чаты — это отдельный вид приложений. В нем нужно учитывать многие детали:
Вы наверное сами замечали, что тот же телеграм, при первой своей простоте, скрывает много интересных деталей. Ну или читали статьи про проектирование чата. Статья скорее рекомендация и не является универсальным ответом.
В ноушене я попробовал набросать частую задачу из собеседований и жизни. Когда-нибудь в будущем выложу в гитхаб.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как пройти архитектурную секцию собеседования
Цепная реакция запущена. Цикл замкнулся и начался новый. Рынок изменится навсегда. Компании копируют друг друга и если одна начала убивать теорию и спускать систем дизайн и рефакторинг, то и другие, чтобы не отставать и адаптироваться к трендам, тоже начнут. Удивительно, что тинек, который без апок в сторе, задает тренды и живее всех живых в мобильной разработке. Что мертво умереть не может?
Теперь намного проще отличить джуна от лида. Не помогут узкие редкие знания, с минимальным прикладным импактом. Перестали оценивать эрудицию, начали практику. Вышло новое обновление и поменяло метовую сборку. Кто-то упадет в грейдах, кто-то наоборот поднимается. Чьи-то знания сожрет инфляция и они обесценятся, чьи-то же вырастут в цене.
Мне нравится этот тренд. Мобильная разработка растет вширь, в ней начинают циркулировать новые идеи. Сейчас смотрю и изучаю много материала для нового раздела в ноушене. Пока один из лучших докладов — это у Кирилла Розова. Обязательно советую
Цепная реакция запущена. Цикл замкнулся и начался новый. Рынок изменится навсегда. Компании копируют друг друга и если одна начала убивать теорию и спускать систем дизайн и рефакторинг, то и другие, чтобы не отставать и адаптироваться к трендам, тоже начнут. Удивительно, что тинек, который без апок в сторе, задает тренды и живее всех живых в мобильной разработке. Что мертво умереть не может?
Теперь намного проще отличить джуна от лида. Не помогут узкие редкие знания, с минимальным прикладным импактом. Перестали оценивать эрудицию, начали практику. Вышло новое обновление и поменяло метовую сборку. Кто-то упадет в грейдах, кто-то наоборот поднимается. Чьи-то знания сожрет инфляция и они обесценятся, чьи-то же вырастут в цене.
Мне нравится этот тренд. Мобильная разработка растет вширь, в ней начинают циркулировать новые идеи. Сейчас смотрю и изучаю много материала для нового раздела в ноушене. Пока один из лучших докладов — это у Кирилла Розова. Обязательно советую
YouTube
Кирилл Розов — Как пройти архитектурную секцию собеседования
Ближайшая конференция: Mobius 2024 Spring, 23 мая (online), 31 мая – 1 июня (offline, Москва)
Подробности и билеты: https://jrg.su/EH5c9Q
— —
За свою карьеру Кирилл провел много собеседований: редко какой кандидат может грамотно реализовать архитектуру Android…
Подробности и билеты: https://jrg.su/EH5c9Q
— —
За свою карьеру Кирилл провел много собеседований: редко какой кандидат может грамотно реализовать архитектуру Android…
Forwarded from Polymorphic Blueprint (Aѕtɛmiɾ)
Media is too big
VIEW IN TELEGRAM
#metal #advancedui
Metal in Action: Audio Player. Round V
Ультимативна версия визуализатора для аудиоплеера. Такая, что пришлось дунгрейднуть количество циклов volumetric rendering'a. Процедурное здесь все, кроме UI.
Дюна... одно из самых любимых произведений. Я старался объединить ключевые концепции этой вселенной: Арракис — можно увидеть на фоне с процедурными песчаными бурями, меланж — окутывает Арракис, блестит, развевается по волнам дюн и светится голубым при активных битах. Пустыня и приближение Шай-Хулуда видны в постоянном дрожании песков, синхронизированном под ритм музыки.
Буквы отрендерены через Signed Distance Function и поворачиваются по мере прогресса трека. Благо, это лишь одна функция и поворот на 90 градусов clockwise🐭
Поверхность Арракиса, точнее песчаная буря, зависит от битов трека, на основе которых происходит вычисление хеш функции для Fractal Brownian Motion и создает уникальный паттерн для движения бурь; Настраивается практически все, а все что нельзя настроить - можно всегда переписать😂
🏛 Polymorphic Blueprint
🎶 Смотреть со звуком
Metal in Action: Audio Player. Round V
Ультимативна версия визуализатора для аудиоплеера. Такая, что пришлось дунгрейднуть количество циклов volumetric rendering'a. Процедурное здесь все, кроме UI.
Дюна... одно из самых любимых произведений. Я старался объединить ключевые концепции этой вселенной: Арракис — можно увидеть на фоне с процедурными песчаными бурями, меланж — окутывает Арракис, блестит, развевается по волнам дюн и светится голубым при активных битах. Пустыня и приближение Шай-Хулуда видны в постоянном дрожании песков, синхронизированном под ритм музыки.
Буквы отрендерены через Signed Distance Function и поворачиваются по мере прогресса трека. Благо, это лишь одна функция и поворот на 90 градусов clockwise
Поверхность Арракиса, точнее песчаная буря, зависит от битов трека, на основе которых происходит вычисление хеш функции для Fractal Brownian Motion и создает уникальный паттерн для движения бурь; Настраивается практически все, а все что нельзя настроить - можно всегда переписать
Please open Telegram to view this post
VIEW IN TELEGRAM
SOLID принципы в Swift
Понимание солидов и умение применять их на практике, одно из самых частых, что выделяют экспертные разрабы как признак опытности.
Красиво красить кнопку и эффективно управлять памятью это лишь начальный этап. Дальше нужно задумываться о поддержке кодовой базе и эффективности архитектурных решений. Ведь чем сложнее и больше проект, тем дольше времени нужно для внесение изменений.
В ноушене собираю новый раздел по рефакторингу, который будет направлен на применимость сотен книг по архитектурам в iOS, а пока познакомимся с основой.
SOLID — это самое популярное в работе с поддержкой кода. Но даже тут возникает кучу вопросов.
Понимание солидов и умение применять их на практике, одно из самых частых, что выделяют экспертные разрабы как признак опытности.
Красиво красить кнопку и эффективно управлять памятью это лишь начальный этап. Дальше нужно задумываться о поддержке кодовой базе и эффективности архитектурных решений. Ведь чем сложнее и больше проект, тем дольше времени нужно для внесение изменений.
В ноушене собираю новый раздел по рефакторингу, который будет направлен на применимость сотен книг по архитектурам в iOS, а пока познакомимся с основой.
SOLID — это самое популярное в работе с поддержкой кода. Но даже тут возникает кучу вопросов.
Linkedin
iOS Swift S.O.L.I.D. Principles
Background: The SOLID principles were introduced by Robert C. Martin(a.
Быстрая скорость работы билда — главная цель крупных проектов. Будь это пайплайны CI/CD или сборка рабочего проекта все это имеет десятки или даже сотни рабочих часов.
Вы почти не увидите сейчас в сеньорных вакансиях, где бы не спрашивали о системах сборки. Это становится также важно, а может и важнее, чем хорошие архитектуры.
Я начал писать серию статей про системы сборок. В первой затронул:
Please open Telegram to view this post
VIEW IN TELEGRAM
AI для расчета сложности алгоритмов
Вам больше не нужно знать сложность алгоритмов. За вас это оценит нейросеть
Очень удобная вещь сразу на практике изучать какой сложности вы написали код. Забудьте все остальные материалы
Вам больше не нужно знать сложность алгоритмов. За вас это оценит нейросеть
Очень удобная вещь сразу на практике изучать какой сложности вы написали код. Забудьте все остальные материалы
TimeComplexity.ai
Use AI to analyze your code's Big O runtime time complexity.
Добавил в открытый доступ первую статью по кастомному Notification Centr'у. Я уже писал о нем ранее, а сейчас решил выложить полную статью в гитхаб.
Создание своего Notification Center встречается в крупные компании Окко, МТС, ВК. Данный пример не эталонный и скорее показывает одно из сотен решений. Он не гарантирует прохождение собеса, а лишь помогает ознакомиться с вариантами решений.
Поставленная задача такая:
В статье будет 3 примера, которые иттеративно улучшаются в зависимости от поставленых требований: от худшего к лучшему
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
ios-mobile-system-design/iOS/NotificationCenter.md at master · levabond/ios-mobile-system-design
A simple framework for mobile system design interviews for iOS - levabond/ios-mobile-system-design
Практические решения проблем с Swift Concurrency
Нет ничего идеального. Новый инструмент решит одни проблемы, но принесет новые.
Эйфория уходит и остается здравый смысл. Вот и комьюнити начинает решать проблемы новой системы многопоточности.
Еще один гитхаб репозиторий, который объединяет комьюнити для борьбы сдраконами багами и улучшением пользовательского опыта.
Еще раз убеждаюсь, что лучшие продукты можно сделать только имея лояльную аудиторию и собирая фидбэки, а соло авторы, часто, изобретают велосипеды или живут в своих фантазиях
Нет ничего идеального. Новый инструмент решит одни проблемы, но принесет новые.
Эйфория уходит и остается здравый смысл. Вот и комьюнити начинает решать проблемы новой системы многопоточности.
Еще один гитхаб репозиторий, который объединяет комьюнити для борьбы с
Еще раз убеждаюсь, что лучшие продукты можно сделать только имея лояльную аудиторию и собирая фидбэки, а соло авторы, часто, изобретают велосипеды или живут в своих фантазиях
GitHub
GitHub - mattmassicotte/ConcurrencyRecipes: Practical solutions to problems with Swift Concurrency
Practical solutions to problems with Swift Concurrency - mattmassicotte/ConcurrencyRecipes
Forwarded from Polymorphic Blueprint (Aѕtɛmiɾ)
This media is not supported in your browser
VIEW IN TELEGRAM
#wwdc24 #swift
🔗 Consume noncopyable types in Swift
Одна из лучших сессий в этом году. К ней будут возвратятся снова и снова, а важность представленных изменений (во многом реализованных в Swift 5.9) довольно велика. Заложенные принципы и концепции фундаментальны и основополагающи для новых семантик, охватывающие эффектом домино все что есть (ибо те, кто поглядывает в текущие снепшоты Swift видят изменения даже базовых вещей).
При проектировании нового типа у вас уже есть контроль над тем, может ли кто-то глубоко копировать (deep copy) его значения. То, чего у вас нет контроля, это может ли Swift автоматически копировать его. Copyable — это новый протокол, который описывает способность типа быть автоматически скопированным. Как и Sendable, он не имеет требований к членам - или же является протоколом-маркером (marker protocol).
• По умолчанию, каждый тип инфериться как Copyable
• Каждый тип пытается автоматически конформить Copyable
• Каждый дженерик параметр автоматически требует, чтобы тип, который вы используете в качестве плейхолдер-типа, был Copyable
• Каждый протокол и ассоциированный тип автоматически требуют, чтобы конкретный тип конформил Copyable
• Каждый boxed тип протокола автоматически композится из Copyable
Но не все типы должны и могут быть копируемыми по умолчанию. Я уже писал несколько раз про некомируемые типы или ~Copyable протокол. Важность этого изменения сложно переоценить, а прочитать Ownership Manifesto будет полезно всем; Возможность копировать или некопировать тесно связана с концепцией владения (ownership). Разработчики Swift не сильно об этом задумывались, а многие до сих не знают, что у value types появился в Swift 5.9 c вводом некопируемых типов появился деинициализатор (SE-0390 Noncopyable structs and enums).
С вводом некопируемости value types и концепцией владения, мы получаем возможность не просто копировать, но и трансферить владение (ownership tranfer) таким типом, поглощать (consume) или одалживать (borrow). Это новые семантики управления владением.
🏛 Polymorphic Blueprint
🔗 Consume noncopyable types in Swift
Одна из лучших сессий в этом году. К ней будут возвратятся снова и снова, а важность представленных изменений (во многом реализованных в Swift 5.9) довольно велика. Заложенные принципы и концепции фундаментальны и основополагающи для новых семантик, охватывающие эффектом домино все что есть (ибо те, кто поглядывает в текущие снепшоты Swift видят изменения даже базовых вещей).
При проектировании нового типа у вас уже есть контроль над тем, может ли кто-то глубоко копировать (deep copy) его значения. То, чего у вас нет контроля, это может ли Swift автоматически копировать его. Copyable — это новый протокол, который описывает способность типа быть автоматически скопированным. Как и Sendable, он не имеет требований к членам - или же является протоколом-маркером (marker protocol).
• По умолчанию, каждый тип инфериться как Copyable
• Каждый тип пытается автоматически конформить Copyable
• Каждый дженерик параметр автоматически требует, чтобы тип, который вы используете в качестве плейхолдер-типа, был Copyable
• Каждый протокол и ассоциированный тип автоматически требуют, чтобы конкретный тип конформил Copyable
• Каждый boxed тип протокола автоматически композится из Copyable
Но не все типы должны и могут быть копируемыми по умолчанию. Я уже писал несколько раз про некомируемые типы или ~Copyable протокол. Важность этого изменения сложно переоценить, а прочитать Ownership Manifesto будет полезно всем; Возможность копировать или некопировать тесно связана с концепцией владения (ownership). Разработчики Swift не сильно об этом задумывались, а многие до сих не знают, что у value types появился в Swift 5.9 c вводом некопируемых типов появился деинициализатор (SE-0390 Noncopyable structs and enums).
С вводом некопируемости value types и концепцией владения, мы получаем возможность не просто копировать, но и трансферить владение (ownership tranfer) таким типом, поглощать (consume) или одалживать (borrow). Это новые семантики управления владением.
Please open Telegram to view this post
VIEW IN TELEGRAM
Я продолжаю собирать вопросы для проведения или прохождения собесов. На очереди частый блок, который я задавал, когда хотел по лучше покопать в сторону архитектур.
Управление зависимостями, наверное, самый важный блок. Как и кем будут передаваться данные сильно влияет не только на простоту работы с кодом и модулями, но и на скорость сборки.
В этой подборке вы найдете ответы на вопросы:
Please open Telegram to view this post
VIEW IN TELEGRAM
Марафон по проектированию
Я давно потерял интерес к менторству. Есть много тем, где я сам хочу вырасти. Заранее извиняюсь всем тем, кто писал мне, но я отказывал. Но у вас есть шанс поучаствовать в более лучшем формате, чем скучное индивидуальное менторство со мной.
Я давно хочу сделать что-то вроде конфы или интенсивна по той теме, в которой хочу прокачаться. Собрать заинтересованных людей, кто дойдет со мной до конца, а потом тепло вспоминать этот путь вместе. Как облегчение после крутого путешествия, наполненного сложностью и вызовами. Тогда это казалось сложным и амбициозным, но сейчас очередным этапом нашего роста.
Как во время хакатонов или телеграм конкурсов. Я до сих пор не могу найти тот заменитель того чувства, когда мы с пацанами по 12 часов сидели и делали задачи, иногда даже не спав. Я как ветеран боевых действий, воспитанный в военное время. Который вернулся на гражданку, и хочет вернуться назад, не находя себя в спокойной жизни.
Поэтому я следую правилу лидерства и говорю, что если я не смогу найти, то возглавлю.
Такую тему я нашел. Это проектирование интерфейсов.
В рамках этого марафона мы будем в течении недели/две каждый день собираться на созвоны и проектировать приложения:
🟣 разбирать частые кейсы на работе
🟣 строить схемы и задумываться о корнер кейсах
🟣 находить нюансы нашей платформы
🟣 разбирать известные библиотеки и инструменты
🟣 делать домашние задания и разбирать их
🟣 памятные призы и призы за лучшие работы
Марафон будет доступен не для всех. Зеваки и проезжающие мимо не будут приглашены. Тут нет времени следить за каждым, кто захотел отвалиться или пришел потроллить. Ударная группа должна быть более собранная. Уровень подготовки любой.
Если тебе интересно или хочешь помочь с идеями, то ставь + в комменты или пиши в лс @lvbond. Формат и дата еще будут модифицироваться
Ну, а если желающих не наберется, то будет новый контент в ноушене
12 часов в день мы не будем заниматься, но еще подумаем
Я давно потерял интерес к менторству. Есть много тем, где я сам хочу вырасти. Заранее извиняюсь всем тем, кто писал мне, но я отказывал. Но у вас есть шанс поучаствовать в более лучшем формате, чем скучное индивидуальное менторство со мной.
Я давно хочу сделать что-то вроде конфы или интенсивна по той теме, в которой хочу прокачаться. Собрать заинтересованных людей, кто дойдет со мной до конца, а потом тепло вспоминать этот путь вместе. Как облегчение после крутого путешествия, наполненного сложностью и вызовами. Тогда это казалось сложным и амбициозным, но сейчас очередным этапом нашего роста.
Как во время хакатонов или телеграм конкурсов. Я до сих пор не могу найти тот заменитель того чувства, когда мы с пацанами по 12 часов сидели и делали задачи, иногда даже не спав. Я как ветеран боевых действий, воспитанный в военное время. Который вернулся на гражданку, и хочет вернуться назад, не находя себя в спокойной жизни.
Поэтому я следую правилу лидерства и говорю, что если я не смогу найти, то возглавлю.
Такую тему я нашел. Это проектирование интерфейсов.
В рамках этого марафона мы будем в течении недели/две каждый день собираться на созвоны и проектировать приложения:
Марафон будет доступен не для всех. Зеваки и проезжающие мимо не будут приглашены. Тут нет времени следить за каждым, кто захотел отвалиться или пришел потроллить. Ударная группа должна быть более собранная. Уровень подготовки любой.
Если тебе интересно или хочешь помочь с идеями, то ставь + в комменты или пиши в лс @lvbond. Формат и дата еще будут модифицироваться
Ну, а если желающих не наберется, то будет новый контент в ноушене
12 часов в день мы не будем заниматься, но еще подумаем
Please open Telegram to view this post
VIEW IN TELEGRAM
REST vs. GraphQL vs. gRPC vs. WebSocket
На последнем собесе меня спросили интересный вопрос: "какие инструменты кроме сокетов ты знаешь для real time общения?". Это очень клевый вопрос, который уходит за границы знания иос, но гораздо практичней вопросов про диспетчирезацию или экзистенциальные контейнеры.
Мне в разы больше нравятся собесы, где тебе задают вопросы, которые пусть и легко загуглить, но они более прикладные и оставят тебе знаний больше, чем те, о которых ты будешь спорить только в чатах. Сейчас у иосеров спрашивают даже чем head запрос отличается от get. А также какие разницы есть у http 1/2/3
Нашел статью по стандартам и протоколам, которые помогут нам запроектировать наши приложения лучше.
На последнем собесе меня спросили интересный вопрос: "какие инструменты кроме сокетов ты знаешь для real time общения?". Это очень клевый вопрос, который уходит за границы знания иос, но гораздо практичней вопросов про диспетчирезацию или экзистенциальные контейнеры.
Мне в разы больше нравятся собесы, где тебе задают вопросы, которые пусть и легко загуглить, но они более прикладные и оставят тебе знаний больше, чем те, о которых ты будешь спорить только в чатах. Сейчас у иосеров спрашивают даже чем head запрос отличается от get. А также какие разницы есть у http 1/2/3
Нашел статью по стандартам и протоколам, которые помогут нам запроектировать наши приложения лучше.
Resolutesoftware
REST vs. GraphQL vs. gRPC vs. WebSocket
In this article, we will discuss the most popular modern standards, frameworks, and protocols and the different trade-offs between each of them.