Сопоставление с образцом (pattern matching) — сильный механизм языков программирования, который, к сожалению, встречается не так часто. Причём, как в коде разработчиков, так и в поддержке со стороны самого языка.
Разработчики на функциональных языках используют этот механизм довольно часто, потому что у них вообще многое определяется статически через правильный подход к системе типов. Разработчики же на императивных языках очень любят огромные многоуровневые ветвления. Есть даже такое понятие «Спагетти-код» — раньше его применяли к коду, перегруженному операторами перехода, но в современном виде это скорее об избытке операторов условия.
Pattern matching позволяет накладывать на объекты некоторый трафарет и смотреть, попадают ли они под него. Это не только выглядит лаконичнее и короче, чем дерево условий, но ещё и понятнее с точки зрения восприятия человеком: вот у нас заказ содержит более 10 элементов и при этом стоит более 1000 долларов, значит делаем на него скидку 10 центов. При этом трафарет работает как сортировщик монеток: самая маленькая проваливается в первый паз, следующая по размеру в следующий итд, применение условий идёт сверху вниз. Есть и неявный плюс: такой подход автоматически провоцирует разработчиков проводить проверку на null. Ведь null не может подходить под трафарет «содержит более 10 товаров».
К счастью, в C# этот механизм в последних версиях активно развивают и совершенствуют. И это одно из многочисленных преимуществ C# над Java.
#dev
Ben Edgington | 𝕏🧵
RT @weboftrees: 🧵Introducing EIP-7999: Unified multidimensional fee market.
Ethereum is like a supermarket with one inventory label. There are 45M eggs, 45M cheese, 45M snacks. etc, but everything scans as "1 food". To avoid empty shelves, it closes once 45M food has been sold during the day.
~
₿izFeed#⃣:#dev#ETH
Ben Edgington | 𝕏🧵
RT @parithosh_j: The data from this devnet would be a really important data point for deciding what blob values we choose for the first bumps after PeerDAS goes live in Fusaka. Its great to see the @testinprod_io and @base help make it a reality!
~
₿izFeed#⃣:#dev#ETH
Ben Edgington | 𝕏🧵
RT @testinprod_io: The largest Fusaka devnet is now being geared up!
@testinprod_io and @base, who have been putting efforts to L2 scaling by contributing PeerDAS as a part of @Optimism Collective, are now teaming up with @ethPandaOps to run the biggest devnet in the history.
~
₿izFeed#⃣:#dev#ETH
vitalik.eth | 𝕏🧵
In the medium term I want some fancy BCI thing where it shows me the thing as it's being generated and detects in real time how I feel about each part of it and adjusts accordingly.
~
₿izFeed#⃣:#dev#ETH
vitalik.eth | 𝕏🧵
These days I get much more excited about open-weights AI models with good *editing* functionality than those that are just for creating from scratch.
~
₿izFeed#⃣:#dev#ETH
vitalik.eth | 𝕏🧵
Echoing something @karpathy recently said, it does frustrate me how a lot of AI development is trying to be as "agentic" as possible, when actually creating *more* paths for human input both creates a better output (now for quite a while going forward) and is better for safety.
~
₿izFeed#⃣:#dev#ETH
Болото из MVP, 🔨 и 🪚
В этом месяце Sketch выкатил обнову со Smart Layout, но не полноценно как в Figma или даже лучше, а тупо в Beta. При всей любви к Sketch, у меня не укладывается в голове — как отстающая компания продолжает делать на пол Фёдора? Если вы каждый месяц проигрываете гонку за пользователей, то надо быть минимум на шаг впереди по новым фичам, а не огрызки показывать.
Не знаю как вы, но я всё чаще замечаю как компании злоупотребляют сырыми продуктами, которые преимущественно не доходят до нормального вида, обрастают костылями и жду своих редизайнов с переосмыслением годами. Все эти попытки выпустить MVP побыстрей, чтобы получить заветную обратную связь, чтобы потом улучшить свою идею, по факту стали мечтами и превратились в инструмент лени с плохим планированием. У MVP понятный принцип, он должен быть простым, но функциональным, чтобы пользователи могли оценить идею и её потенциал. Но в итоге мы часто видим сырое дерьмище, а не функциональное вкусняшку. Вместо того, чтобы работать над полноценным продуктом, компании создают пылесосы для денег, а план по экономии времени и ресурсов исчезает через пару месяцев.
Использование MVP должно быть осознанным решением, основанным на стратегии дальнейшего развития, например: у PO с дизайнером продукта есть финальная картина в голове, её пилят на малые части и эти части делают пиздато, первую часть релизят как MVP. Вот это лайк, вот это кайф. В современном мире, где технологии и инновации развиваются стремительными темпами, а многие стремятся создать минимально жизнеспособный продукт, кажется, залог успеха — ставить качество в приоритет.
🕳
🎞Добавил видео отображающие моё отношение к происходящему вокруг: рандомная компания год делала свой MVP с кучей компромиссов и ограничений и накопила большой технический долг. В итоге выпустила кал, который никому не нужен, но за то получили обратную связь — «Мы подтвердили гипотезу, пользователям нужны двери и стекла, а ещё им важны удобные сидения с ремнями безопасности».
#мысли#dev
💬Threads → 📸 Stories
Да-да-да, клон твиттера, но без анархии Маска и не ясно чем по итогу нужно пользоваться, но я хочу вбросить тему про Add to story.
Threads хорошо напомнил всем нам, как можно работать с Facebook SDK по публикации в Stories/Posts. Ребята заюзали свой же соседний сервис для дополнительного охвата и сделали красиво.
На моей памяти Yandex Drive в свои времена аналогично использовал SDK инсты для шэринга промокода. Сейчас они убрали кнопку перехода в Stories (наверно затрахались следить за обновлениями в SDK), добавил пример. Других ярких кейсов не могу сходу назвать, если что, пишите в комменты.
Глядя на такую хорошую реализацию Threads, в которой они поддерживают локаль + стиль темы, я в свой чек-лист по созданию проектов добавил пункт — «Возможность использования Add to story». Вариантов использования может быть много, например:
🍷 Доставка товаров/винный — карточка с рейтингом, ценой, сочной фоткой товара/бутылкой вина
💳 Финансы — карточка с курсом валюты или тариф/карта с бонусами
🎞 Стриминговый сервис — карточка с обложкой видео/трека, просмотры/прослушивания, длительность
👍 Принцип вы поняли
𐄂 𐄂 𐄂
Продукт через свою аудиторию получает дополнительный канал упоминаний и присутствия, а по тапу переход в прилож/сайт, профит.
Ⓜ️SDK for Developers
#мысли#dev
🍏Camera Control
Кажется, Эппл задал новый тренд для китайских телефонов и скоро мы увидим множество похожих на Camera Control кнопок
🥱
Я почитал спеку и там есть интересные моменты, смотрите:
✓ Данный контрол может использоваться только для приложений, которые работают с камерой (иначе будет реджект по HIG)
✓ Внутри контрола можно использовать только SF Symbols
✓ Если вы ранее использовали кнопки на превью камеры — переносите их в новое меню
🤤
🔗HIG Camera Control
Теперь вы тоже вооружены, чао!
P.s. Есть ещё прикол с камерой. 11 лет назад в iPhone 4 уже был слайдер переключения режимов как в новой iOS. Вот так камбэк :)
#apple#dev
Делай раз, делай два, Air Pods считает за тебя
Вы знали что через AirPods можно слушать музыку, аудиокниги и вообще какой-то аудиопоток? Понятно что знали, вы же не дикари. А знали что в AirPods (3-го поколения), AirPods Pro, AirPods Max и Beats Fit Pro есть датчиками движения, через которые можно:
• Считать прыжки
• Считать количество приседаний/отжиманий/других упражнений
• Использовать iPhone/iPad как микрофон и транслирует звук прямо в наушники
Для всех кто пилит свои приложки про фитнес, спорт или что-то смежное, можно использовать real-time sensor API для лучшего UX и погружения:
🍏CMHeadphoneMotionManager
🧰Code Examples на GitHub
🕹Headphone Motion Unity Plugin
Рефы:
Fitnexx, YaoYao, Posture Pal, Live-прослушивание
#apple#dev