Паттерн Декоратор — специальный способ организации модулей в программе, который позволяет подставить какую-то новую функцию прямо в середину цепочки вызовов, тем самым чуть-чуть подкорректировав поведение.
Например, в реальном мире очки для чтения это декоратор. Вы ставите их между вашими глазами и текстом. Глобально взаимодействие ваших глаз и текста не меняется: отражённые световые лучи от страницы книги попадают в ваши зрачки, что с очками, что без них. Но очки располагаются посередине: они принимают лучи на вход и преломляют их, передавая дальше вам в глаза уже изменёнными.
Важной особенностью является тот факт, что очки можно снять. Они не требуют ни модификации вашего тела, ни модификации книги. Вообще никакие условия не нужны, кроме наличия самих очков. А если вы в линзах, то внешний наблюдатель может даже этого не знать.
Класс-декоратор должен быть спроектирован так, чтобы не требовать никаких изменений в объектах, с которыми он работает. Его можно отключить, чаще всего буквально закомментировав одну строку.
В примере ниже программа выведет текст "Привет, мир, в натуре.", и вот это дополнение в конце как раз дописано декоратором. Можно убрать или закомментировать подчёркнутую строчку, не трогая остальной код, для всех внешних вызовов сигнатуры останутся теми же самыми, но выводиться будет уже просто "Привет, мир".
В декораторы можно прятать логику, которую буквально навешивают поверх основной функции программы. Например, проверку прав на выполнение операции. Перевод на другой язык, логирование, поддержку обратной совместимости при обновлении и так далее.
#dev
На канале есть рубрика про #рефы. В неё иногда залетают примеры с физикой элементов, и тогда звучит вопрос: «Окей, а как это сделать?». Если на вебе всё просто — есть движки вроде Matter.js или PhysicsJS, а вот что делать на мобиле?
Недавно мой dev-бро как раз для своей рабочей задачи нашёл кастомизируемый движок с управляемой физикой в SwiftUI — Kinetics🧑💻
Штука удобная и мощная по возможностям:
🎯 Ретаргетинг
Меняет цели анимации на лету при взаимодействии, идеально для интерактивных элементов
🚀 Импульс
Естественная имитация импульса, которая ещё и отзывчивая
🦾 Тянучесть
Сопротивление объекта, дающее гладкое, естественное ощущение натяжения
🧲 Магнетизм
Умные привязки к значимым позициям. Например для циферблатов, ползунков и вообще любых интерфейсов, где важны дискретные значения
🏀 Упругость
Реалистичное поведение при столкновениях с настраиваемой потерей энергии
Короче, пробуйте тоже. Мир интерфейсов двигается вперёд за счёт тех, кто не боится экспериментировать. И да — храни Бог этих упоротых энтузиастов, которые пишут опенсорс-библиотеки и движки вместо того, чтобы просто жить спокойной жизнью 😎
#dev#frontend
👅Тэкс, назрел вопроспро локализацию
Я ярый амбассадор сервисов локализаций и вообще этого флоу. Мои любимчики это Lokalise и POEditor, но для своих стартапов они не подходят т.к. хотят не малые бабосы или встречают жёсткими ограничениями. Даже Framer ебанулся с горы и за одну локаль хочет $40/m. Поэтому мы с dev-бро делаем небольшою и удобную автоматизацию для нашего side-проекта, которую хотим опубликовать для всех желающих. Скажу больше, у нас получилось элегантное и дешёвое решение, с которым приятно будет работать всем членам продуктовой команды.
Сейчас хочу понять процентовку людей, которые работают с мультиязычным контентом в своих проектах. Для своей банды как всегда сделаю подгоны.
#опросы#проТекст#dev
Пока каналы сосали контент про очко эппл Apple Vision Pro, упустили новость для нас, для работяг из IT!
🍏TipKit — нативная замена сторонних решений для тултипов, ондордингов. Новый фреймворк даст возможность использовать разные обучающие шаблоны для приложений, с возможностью кастомизации их внешнего вида. Также настроить можно свои правила для их отображения где и когда угодно. Кайф.
TipKit работает на iOS, iPadOS, macOS, watchOS и tvOS ебать его в сраку (про visionOS ни слова кстати). Для ушлых продАктов захотевших использовать тултилы как инструмент маркетинговой активности и горе-дизайнеров есть примеры использования фреймворка.
Выглядит красиво, функционально, спасибо Эппл, но главное чтобы мои dev-бро тоже были довольны работой с этим китом.
📚Overview
#OS#apple#dev#полезное
📷Секретный файлтолько для iPhoneиiPad
Функция быстрого просмотра файлов у яблочников, теперь умеет показывать 3D и AR объекты, но только на iOS и iPadOS. Файлы формата *.reality можно встраивать не только в приложения, но и добавлять на сайты. Имеется даже поддержка аудио, ахуеть.
🔗AR Quick Look
#dev#apple#AR#3D