This media is not supported in your browser
VIEW IN TELEGRAM
Создание анимации в стиле Siri в iOS 18
Siddhant Mehta и Meng To использовали комбинацию из Mesh Gradient (пример вы можете увидеть в моём посте выше) и ripple-эффекта.
🛠 Исходный код проекта доступен на github.
📺 Сессия с примерами анимаций вот тут.
😃 iOS Dev
Siddhant Mehta и Meng To использовали комбинацию из Mesh Gradient (пример вы можете увидеть в моём посте выше) и ripple-эффекта.
🛠 Исходный код проекта доступен на github.
📺 Сессия с примерами анимаций вот тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🔥19 13☃1👏1💯1🏆1🎄1 1
UIKit: подборка теоретических материалов и вопросы
Конечно, SwiftUI набирает обороты и после добавления последних фич (в том числе и по навигации) с ним станет приятнее работать.
Но несмотря на это, подавляющее большинство проектов используют UIKIt, а вопросы на собеседованиях до сих пор строятся вокруг него.
У меня собралось большое количество материалов и вопросов за время разработки и проведенных интервью, поэтому я решил добавить новую секцию и в iOS IQ.
В ней вы увидите не только классические вопросы по типу отличий frame от bounds или особенности Responder Chain, но и ряд нестандартных вещей, которые так или иначе используются в нашей работе.
Постарался подкрепить и примерами с кодом, и привел примеры реализации.
✅ Подписаться можно здесь и вот тут.
✅ Секретная ссылка со скидкой здесь: ссылка .
😃 iOS Dev
Конечно, SwiftUI набирает обороты и после добавления последних фич (в том числе и по навигации) с ним станет приятнее работать.
Но несмотря на это, подавляющее большинство проектов используют UIKIt, а вопросы на собеседованиях до сих пор строятся вокруг него.
У меня собралось большое количество материалов и вопросов за время разработки и проведенных интервью, поэтому я решил добавить новую секцию и в iOS IQ.
В ней вы увидите не только классические вопросы по типу отличий frame от bounds или особенности Responder Chain, но и ряд нестандартных вещей, которые так или иначе используются в нашей работе.
Постарался подкрепить и примерами с кодом, и привел примеры реализации.
🧠 Что вы получите, подписавшись сегодня:➡️ Вопросы на чтение кода➡️ Многопоточность➡️ DispatchQueue: практические вопросы➡️ Swift Concurrency➡️ Алгоритмы: терминология и примеры➡️ Память: ARC, side table, флаги, утечки✅ А также доступ в закрытый чат, ранние релизы приложения iOS IQ, тонну теории и многое другое.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16 9🔥6⚡2💯2🤝2☃1🏆1🎅1🎄1
NotPrivateAPIs — проект, который раскрывает некоторые приватные API
❗️ Конечно, их нельзя использовать в рабочих проектах и выкладывать в App Store.
Например, меню со своими элементами это вообще та ещё задача (посмотрите реакции в Messages над сообщением, или реализацию в телеграме).
📖 Morris Richman собрал в одном месте вещи, которые юзает Apple: например, как добавить кастомный хэдер в UIAlertController или как поменять иконку приложения без предупреждения пользователя.
😃 iOS Dev
Например, меню со своими элементами это вообще та ещё задача (посмотрите реакции в Messages над сообщением, или реализацию в телеграме).
📖 Morris Richman собрал в одном месте вещи, которые юзает Apple: например, как добавить кастомный хэдер в UIAlertController или как поменять иконку приложения без предупреждения пользователя.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как iOS 18 улучшает работу с градиентами
Очень часто в проектах разработчики используют дополнительный градиент, чтобы создать контраст между фоном и текстом.
*Или используют заранее заготовленный ассет в каталоге ресурсов.
Однако при таком использовании линейного градиента будут видны перепады яркости и резкий переход.
📖 В iOS 18 доступно новое API для смешивания цветов. Поэтому, используя
Пример использования под катом (разверните, чтобы посмотреть):
📖 Почитать дополнительно про смешивание цветов можно в этой статье.
😃 iOS Dev • больше разборов тут
Очень часто в проектах разработчики используют дополнительный градиент, чтобы создать контраст между фоном и текстом.
Однако при таком использовании линейного градиента будут видны перепады яркости и резкий переход.
📖 В iOS 18 доступно новое API для смешивания цветов. Поэтому, используя
UnitCurve
, можно интерполировать цвета с помощью встроенных или кастомных кривых Безье, чтобы обеспечить плавность перехода.Пример использования под катом (разверните, чтобы посмотреть):
extension Gradient {
init(from: Color, to:Color, with curve:UnitCurve, steps:Int = 10) {
let colors = stride(from: 0.0, through: 1.0, by: 1.0 / Double(steps))
.map { f in
from.mix(with: to, by: curve.value(at: f))
}
self.init(colors: colors)
}
}
📖 Почитать дополнительно про смешивание цветов можно в этой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
Realm vs SwiftData: что быстрее?
Jacob Bartlett из компании Emerge Tools провел большое исследование и сравнил производительность по трём ключевым метрикам:
1️⃣ Скорость.
2️⃣ Размер.
3️⃣ Память.
И хотя с точки зрения записи и выполнения простых запросов на чтение Realm впереди, но в некоторых моментах благодаря превосходному управлению графами объектов при работе с более сложными данными SwiftData оказалась производительнее.
При небольших объемах (≤10 000 элементов, что охватывает подавляющее большинство сценариев в мобильных приложениях) SwiftData также была намного быстрее при обновлении существующих данных.
📖 Много графиков, выводов и интересных особенностей можно узнать в этой статье.
📖 А на хабре вы возможно видели, что Realm не так хорош в этой статье от Dodo Engineering.
C моей точки зрения, всё, конечно зависит от задач. И для небольших проектов в целом можно использовать что угодно, а вот при разработке внутри компании все равно придётся все тщательно взвесить и, возможно, попробовать несколько подходов, или собрать себе собственный SQLite (привет, ВК).
😃 iOS Dev
Jacob Bartlett из компании Emerge Tools провел большое исследование и сравнил производительность по трём ключевым метрикам:
1️⃣ Скорость.
2️⃣ Размер.
3️⃣ Память.
И хотя с точки зрения записи и выполнения простых запросов на чтение Realm впереди, но в некоторых моментах благодаря превосходному управлению графами объектов при работе с более сложными данными SwiftData оказалась производительнее.
При небольших объемах (≤10 000 элементов, что охватывает подавляющее большинство сценариев в мобильных приложениях) SwiftData также была намного быстрее при обновлении существующих данных.
📖 Много графиков, выводов и интересных особенностей можно узнать в этой статье.
📖 А на хабре вы возможно видели, что Realm не так хорош в этой статье от Dodo Engineering.
C моей точки зрения, всё, конечно зависит от задач. И для небольших проектов в целом можно использовать что угодно, а вот при разработке внутри компании все равно придётся все тщательно взвесить и, возможно, попробовать несколько подходов, или собрать себе собственный SQLite (привет, ВК).
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Создание эффекта перехода App Store с использованием NavigationTransition в iOS 18
Этот эффект можно увидеть, например, в разделе «Сегодня» или на📺 .
И если создание похожего перехода в iOS 18 может занять пару строк кода, то повторение анимации с учетом всех эффектов — куда более сложная задача.
📖 В этой статье Peter Friese поэтапно рассказывает, какие моменты стоит учитывать и показывает все итерации на примерах кода.
✅ Подпишитесь, чтобы увидеть больше таких разборов и получить доступ ко всей базе знаний.
😃 iOS Dev
Этот эффект можно увидеть, например, в разделе «Сегодня» или на
И если создание похожего перехода в iOS 18 может занять пару строк кода, то повторение анимации с учетом всех эффектов — куда более сложная задача.
📖 В этой статье Peter Friese поэтапно рассказывает, какие моменты стоит учитывать и показывает все итерации на примерах кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍9 9⚡1☃1💯1🏆1🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
Создание динамических текстовых эффектов с помощью TextRenderer
👨💻 Используя метод draw протокола
Новые функции в iOS 18 дают нам доступ ко многим ранее недоступным деталям, таким как определение того, обрезан ли текст через свойство Layout's
📖 В этом материале рассмотрены не только плюсы, но и ограничения и сложности работы с анимацией в целом. А код можно посмотреть вот тут.
📖 Кстати, если хотите почитать про хардкорные вещи в TextView: работу с атрибутами, стилями, перфомансом, математикой для отрисовки и многим другим — на канале есть отличный пост.
😃 iOS Dev
TextRenderer
, мы должны выполнить рендеринг на основе информации об элементах, предоставленной Text.Layout
в рамках GraphicsContext
.Новые функции в iOS 18 дают нам доступ ко многим ранее недоступным деталям, таким как определение того, обрезан ли текст через свойство Layout's
isTruncated
, количество строк, отображаемых после рендеринга, и конкретные данные о расположении текста.📖 В этом материале рассмотрены не только плюсы, но и ограничения и сложности работы с анимацией в целом. А код можно посмотреть вот тут.
📖 Кстати, если хотите почитать про хардкорные вещи в TextView: работу с атрибутами, стилями, перфомансом, математикой для отрисовки и многим другим — на канале есть отличный пост.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥7 7💯2☃1👏1🤩1🎅1🎄1🆒1
Алгоритм Чайкина в Swift: назначение и реализация
Уже прошло приличное количество времени с того самого контеста в телеге, но я всё ещё нахожу интересные решения для сложных вещей и с радостью делюсь с вами. Помните анимацию в Wallet?
Прежде, чем посмотреть то, как реализовать этот алгоритм в Swift, посмотрите прекрасную статью про то, как воспроизвести рукописный шрифт.
🐱 Применений у этого алгоритма множество: графический дизайн, анимации, шрифты и многое другое.
📖 Здесь вы можете посмотреть пример реализации на Swift.
😃 iOS Dev
Уже прошло приличное количество времени с того самого контеста в телеге, но я всё ещё нахожу интересные решения для сложных вещей и с радостью делюсь с вами. Помните анимацию в Wallet?
Алгоритм Чайкина - это простой метод сглаживания грубой линии в красивую плавную кривую. Он работает путем многократного добавления новых точек вдоль каждого сегмента линии на расстоянии 25 и 75 % пути между исходными точками, а затем соединяет эти новые точки. С каждым разом линия становится все более и более гладкой.
Прежде, чем посмотреть то, как реализовать этот алгоритм в Swift, посмотрите прекрасную статью про то, как воспроизвести рукописный шрифт.
📖 Здесь вы можете посмотреть пример реализации на Swift.
Please open Telegram to view this post
VIEW IN TELEGRAM
Swift Testing: разбор отличий и преимуществ по сравнению с XCTest
На WWDC в этом году Apple представила Swift Testing, новый фреймворк для тестирования.
Он не заменяет XCTest, который мы используем, при этом улучшает внедрение практик написания тестов с помощью новых функций, таких как использование тегов, параметризация и многое другое.
📖 Посмотреть на примеры использования можно в этой статье.
😃 iOS Dev
На WWDC в этом году Apple представила Swift Testing, новый фреймворк для тестирования.
Он не заменяет XCTest, который мы используем, при этом улучшает внедрение практик написания тестов с помощью новых функций, таких как использование тегов, параметризация и многое другое.
Познакомиться с фреймворком можно с помощью просмотра сессии WWDC24 — в этом посте.
📖 Посмотреть на примеры использования можно в этой статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Разбор нововведений при работе со скроллом в iOS 18
На WWDC 2024 Apple в очередной раз показала ряд замечательных новых API для ScrollView в SwiftUI.
📖 В этой статье рассматриваются основные изменения, а также анализируется развитие значимых API с момента создания SwiftUI.
😃 iOS Dev
На WWDC 2024 Apple в очередной раз показала ряд замечательных новых API для ScrollView в SwiftUI.
📖 В этой статье рассматриваются основные изменения, а также анализируется развитие значимых API с момента создания SwiftUI.
Другие материалы с WWDC2024:
📖 Список лучших сессий.
📖 Swift Testing.
📖 Создание динамических текстовых эффектов с помощью TextRenderer.
Please open Telegram to view this post
VIEW IN TELEGRAM
Поддержать проект
Ваша поддержка == вклад в развитие приложения: новые вопросы, необычные форматы и многое другое
Ваша поддержка == вклад в развитие приложения: новые вопросы, необычные форматы и многое другое
❤🔥13 5😭4 4👍2💯2✍1☃1🎉1🎄1🆒1
Разбор тем, история ответов, пояснения — встречайте обновление iOS IQ!
❤️ Половина из отзывов к приложению (всем большое спасибо) была о том, что нужны правильные ответы. Конечно, это так, и новый раздел просто обязан был появиться!
Теперь есть не только правильные ответы в конце, но и пояснения, и материалы там, где это требуется. Вместе с дизайнером мы поработали над этими экранами (к текущему варианту пришли после нескольких итераций) и готовы анонсировать новую версию приложения.
👨💻 Основная цель — не останавливаться на том, что есть, а расширить приложение до полноценной платформы по подготовке (и самостоятельной проверке).
Соревновательная часть при этом останется, но в будущем больше внимания будет уделено контенту внутри.
🏆 Кстати, скоро будет анонсирован небольшой конкурс для авторов с призовым фондом.
⭐️ Скачать и оценить приложение
🏆 Поддержать проект
❤️ Подписаться на бусти (или в боте).
😃 iOS Dev
❤️ Половина из отзывов к приложению (всем большое спасибо) была о том, что нужны правильные ответы. Конечно, это так, и новый раздел просто обязан был появиться!
Теперь есть не только правильные ответы в конце, но и пояснения, и материалы там, где это требуется. Вместе с дизайнером мы поработали над этими экранами (к текущему варианту пришли после нескольких итераций) и готовы анонсировать новую версию приложения.
Соревновательная часть при этом останется, но в будущем больше внимания будет уделено контенту внутри.
А если вы представляете компанию (не только бигтехи), и хотите о ней рассказать широкой аудитории в интерактивном формате, напишите мне, возможно, я смогу вас заинтересовать.
🏆 Поддержать проект
Please open Telegram to view this post
VIEW IN TELEGRAM
🏆18🔥12👍7 3💯2🎅2❤🔥1🎉1🆒1 1
Создание многоступенчатой анимации в SwiftUI
Анимации в приложении служат визуальными индикаторами, информирующими пользователей о совершенных действиях.
Они особенно полезны при изменении интерфейса, например, при загрузке нового контента или демонстрации новых действий.
📖 В этой статье разбирается пример работы с PhaseAnimator (его особенно удобно применять, когда нам нужна анимация, которая непрерывно повторяется и реагирует на события).
📖 Кстати, в канале есть ещё один полезный материал про
😃 iOS Dev
Анимации в приложении служат визуальными индикаторами, информирующими пользователей о совершенных действиях.
Они особенно полезны при изменении интерфейса, например, при загрузке нового контента или демонстрации новых действий.
📖 В этой статье разбирается пример работы с PhaseAnimator (его особенно удобно применять, когда нам нужна анимация, которая непрерывно повторяется и реагирует на события).
📖 Кстати, в канале есть ещё один полезный материал про
PhaseAnimator
и KeyframeAnimator
.Please open Telegram to view this post
VIEW IN TELEGRAM
В поведенческих паттернах уровня класса используется наследование, чтобы определить поведение для различных классов.
В поведенческих паттернах уровня объекта используется композиция.
Важно то, как объекты получают информацию о существовании друг друга. Например, объекты-коллеги могут хранить ссылки друг на друга, но это усиливает степень связанности системы.
При высокой связанности каждому объекту пришлось бы иметь информацию обо всех остальных, и как раз некоторые из шаблонов решают эту проблему.
К поведенческим паттернам (согласно банде четырёх) относятся:
- Цепочка обязанностей.
- Команда.
- Интерпретатор.
- Итератор.
- Посредник.
- Memento (хранитель).
- Наблюдатель.
- Состояние.
- Стратегия.
- Шаблонный метод.
- Посетитель.
По каждому из них я добавил описание и примеры (в том числе с видео) в iOS IQ.
🔗 Почитать про структурные паттерны проектирования.
🔗 Узнать о порождающих паттернах проектирования.🧠 Проверить свои знания можно и в приложении.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Создание интерфейса поиска в стиле Photos из iOS 18
Если вы следили за трасляцией в канале (или в других источниках), то в курсе, что в новой оси поменяется в том числе и приложение Photos.
Новый раздел выглядит как кастомная View в SwiftUI, которую Seb Vidal попытался повторить с помощью публичного API (но без реверс-инжиниринга не обошлось). Затрагивается и самый сложный момент — плавный переход фона в стиль клавиатуры.
📖 Здесь можно прочитать про основные этапы для создания такого экрана.
🛠 А здесь посмотреть на реализацию в коде.
😃 iOS Dev
Если вы следили за трасляцией в канале (или в других источниках), то в курсе, что в новой оси поменяется в том числе и приложение Photos.
Новый раздел выглядит как кастомная View в SwiftUI, которую Seb Vidal попытался повторить с помощью публичного API (но без реверс-инжиниринга не обошлось). Затрагивается и самый сложный момент — плавный переход фона в стиль клавиатуры.
📖 Здесь можно прочитать про основные этапы для создания такого экрана.
🛠 А здесь посмотреть на реализацию в коде.
Please open Telegram to view this post
VIEW IN TELEGRAM
Управление памятью в Swift
Безусловно, управление памятью является важнейшим этапом для обеспечения максимальной производительности и предотвращения тех же утечек.
Хочу поделиться статьёй, в которой затрагиваются не только базовые вещи (стек и куча), но и ловушки, в которые можно попасть при реализации функций, абстракций и т. д.
📖 В этом материале рассмотрены и ситуации, когда структуры могут быть неэффективны в использовании по сравнению с классами, отличия статической от динамической диспетчеризации и многое другое.
😃 iOS Dev
Безусловно, управление памятью является важнейшим этапом для обеспечения максимальной производительности и предотвращения тех же утечек.
Хочу поделиться статьёй, в которой затрагиваются не только базовые вещи (стек и куча), но и ловушки, в которые можно попасть при реализации функций, абстракций и т. д.
📖 В этом материале рассмотрены и ситуации, когда структуры могут быть неэффективны в использовании по сравнению с классами, отличия статической от динамической диспетчеризации и многое другое.
🔗 Почитать больше про структуру памяти в Swift и получить несколько важных подборок.
🔗 Потренироваться на темах (side table, флаги и ARC).
🔗 Узнать, когда [weak self] может быть излишним.🧠 Проверить свои знания можно и в приложении.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Animatable и AnimatablePair: назначение и примеры
SwiftUI позволяет создавать анимацию без особых усилий, но иногда нам необходимо больше контроля над тем, как движутся и анимируются объекты.
Например, чтобы синхронизировать анимацию нескольких свойств, нам нужно использовать
📖 В этой статье рассмотрены
📖 Напомню, что в канале есть ещё одна статья про создание многоступенчатой анимации.
😃 iOS Dev
SwiftUI позволяет создавать анимацию без особых усилий, но иногда нам необходимо больше контроля над тем, как движутся и анимируются объекты.
Например, чтобы синхронизировать анимацию нескольких свойств, нам нужно использовать
AnimationPair
:
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
@frozen public struct AnimatablePair<First, Second> : VectorArithmetic where First : VectorArithmetic, Second : VectorArithmetic
Больше информации в официальной документации Apple.
📖 В этой статье рассмотрены
Animatable
и AnimatablePair
, а также есть примеры, как можно использовать API для улучшения анимаций в наших приложениях.📖 Напомню, что в канале есть ещё одна статья про создание многоступенчатой анимации.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация инвертированной прокрутки в мессенджере на SwiftUI
В отличие от большинства экранов, где контент начинается в верхней части, а затем пользователям приходится прокручивать вниз, для чатов все работает наоборот.
Те, кто разрабатывал приложения для обмена сообщениями, уверен, в курсе трюка с трансформом, если нет — то совсем кратко это выглядит так:
Для SwiftUI подобный хак можно реализовать с помощью кастомного
📖 А вот здесь Винсент приводит пример реализации (и затрагивает вопрос, почему просто реверснуть сам датасорс, например, недостаточно).
😃 iOS Dev
В отличие от большинства экранов, где контент начинается в верхней части, а затем пользователям приходится прокручивать вниз, для чатов все работает наоборот.
Те, кто разрабатывал приложения для обмена сообщениями, уверен, в курсе трюка с трансформом, если нет — то совсем кратко это выглядит так:
CGAffineTransform(scaleX: 1, y: -1) для таблицы (ну и для ячеек наоборот)
Для SwiftUI подобный хак можно реализовать с помощью кастомного
ViewModifier
.📖 А вот здесь Винсент приводит пример реализации (и затрагивает вопрос, почему просто реверснуть сам датасорс, например, недостаточно).
✅ В iOS IQ вы можете найти не только реализацию трюков для анимаций, но и разбор фундаментальных тем (архитектуры, вопросы производительности и многое другое).
Please open Telegram to view this post
VIEW IN TELEGRAM
Отладка приложений: разбор инструментов, необычные подходы и советы
Среди рутинных тасков и важнейших составляющих разработки — умение работать с дебаггером (например, знать, когда стоит использовать
Кроме этого, полезно уметь (и быть в курсе способов), например, как изменить значение переменной с помощью брейкпоинта.
🧠 В iOS IQ я добавил новый раздел, в котором поделился советами, важными понятиями и примерами, которые нам нужны каждый день.
✅ Доступ можно получить здесь или вот тут.
📖 А вот здесь можно почитать про трюки с lldb для Swift (внедрение и изменение кода)
😃 iOS Dev
Среди рутинных тасков и важнейших составляющих разработки — умение работать с дебаггером (например, знать, когда стоит использовать
po
, v
или vo
).Кроме этого, полезно уметь (и быть в курсе способов), например, как изменить значение переменной с помощью брейкпоинта.
Уже сейчас там доступно несколько блоков:
🔗 Советы по отладке или в чём разница между po, v и vo.
🔗 Как изменить значение переменной с помощью брейкпоинта?
🔗 Советы по использованию брейкпоинтов.
И ещё несколько полезных статей.
📖 А вот здесь можно почитать про трюки с lldb для Swift (внедрение и изменение кода)
Please open Telegram to view this post
VIEW IN TELEGRAM
Долгосрочная перспектива
Пожалуй, многие видели вот эту статью про курьеров и про то, что уровень их зарплат можно сравнивать с IT-сферой.
Прежде всего, я считаю, что любой труд важен, ни в коем случае не стоит свысока относиться к другим профессиям. Несмотря на это, тезисы — для чего нужно обучаться, если можно прямо сейчас выбрать физический труд или для чего нужно тратить столько ресурсов (прежде всего времени) в университетах, чтобы получать N денег, как у кого-то другого уже есть сейчас, в корне ошибочны.
Здесь вступает в силу важный фактор перспективы.
Можно получать N денег постоянно, либо инвестировать время в обучение ради планки N*M в будущем. Можно работать 6 дней в неделю по 12 часов, используя физический труд и не оставляя шансов на развитие только потому, что не будет оставаться сил.
Например, у врачей, кроме обучения в университете, есть ещё интернатура и ординатура. Впрочем, как и технические специальности могут повысить стоимость на рынке благодаря аспирантуре, например. Да, конечно, это ещё более сложная ветвь развития, которой нужно уделять не меньше времени, чем, собственно, работе. Чаши весов, на которых, с одной стороны, находится желание двигать науку вперёд, а на второй желание получать за это справедливые деньги, далеко не всегда будут в состоянии равенства.
Но важно вот что
Выбрав путь развития с потенциально высокими ожиданиями, вы не инвестируете в пустоту. Ваши знания останутся с вами, ваши навыки помогут решать проблемы, ваше умение искать ответы на сложные вопросы будет помогать в любой сфере жизни.
Например, обучение в университете это 10% лекций и 90% самостоятельной работы (в аспирантуре этот перевес ещё выше). Но благодаря прохождению этого этапа вы сможете пытаться решать те задачи, с которыми не сталкивались ранее.
В конце-концов, наша с вами задача — находить не только ответы, но и уметь задавать правильные вопросы.
😃 iOS Dev
Пожалуй, многие видели вот эту статью про курьеров и про то, что уровень их зарплат можно сравнивать с IT-сферой.
Прежде всего, я считаю, что любой труд важен, ни в коем случае не стоит свысока относиться к другим профессиям. Несмотря на это, тезисы — для чего нужно обучаться, если можно прямо сейчас выбрать физический труд или для чего нужно тратить столько ресурсов (прежде всего времени) в университетах, чтобы получать N денег, как у кого-то другого уже есть сейчас, в корне ошибочны.
Здесь вступает в силу важный фактор перспективы.
Можно получать N денег постоянно, либо инвестировать время в обучение ради планки N*M в будущем. Можно работать 6 дней в неделю по 12 часов, используя физический труд и не оставляя шансов на развитие только потому, что не будет оставаться сил.
Например, у врачей, кроме обучения в университете, есть ещё интернатура и ординатура. Впрочем, как и технические специальности могут повысить стоимость на рынке благодаря аспирантуре, например. Да, конечно, это ещё более сложная ветвь развития, которой нужно уделять не меньше времени, чем, собственно, работе. Чаши весов, на которых, с одной стороны, находится желание двигать науку вперёд, а на второй желание получать за это справедливые деньги, далеко не всегда будут в состоянии равенства.
Но важно вот что
Выбрав путь развития с потенциально высокими ожиданиями, вы не инвестируете в пустоту. Ваши знания останутся с вами, ваши навыки помогут решать проблемы, ваше умение искать ответы на сложные вопросы будет помогать в любой сфере жизни.
Например, обучение в университете это 10% лекций и 90% самостоятельной работы (в аспирантуре этот перевес ещё выше). Но благодаря прохождению этого этапа вы сможете пытаться решать те задачи, с которыми не сталкивались ранее.
В конце-концов, наша с вами задача — находить не только ответы, но и уметь задавать правильные вопросы.
А какой путь выбрать — решать только вам.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥25 10👍5💯3🔥2✍1🎉1🆒1
Разбор режимов наложения в Swift: примеры и возможные варианты
Режимы наложения (blend modes) играют важнейшую роль в дизайне. Они необходимы при работе с фото, создании эффектов освещения, и, например, используются для достижения эффекта глубины в изображениях.
💬 Как следуют из названия, при использовании такого режима происходит смешивание цвета нескольких слоев пикселей с помощью математических формул для определения степени влияния каждого пикселя на конечное изображение.
Можно комбинировать любое количество слоев, но минимально необходимо только два — базовый и сам слой наложения.
📖 В этой статье подробно рассматриваются различные режимы наложения (и математические формулы), способы реализации и примеры использования.
😃 iOS Dev
Режимы наложения (blend modes) играют важнейшую роль в дизайне. Они необходимы при работе с фото, создании эффектов освещения, и, например, используются для достижения эффекта глубины в изображениях.
Можно комбинировать любое количество слоев, но минимально необходимо только два — базовый и сам слой наложения.
📖 В этой статье подробно рассматриваются различные режимы наложения (и математические формулы), способы реализации и примеры использования.
Please open Telegram to view this post
VIEW IN TELEGRAM