artalog
reactive-computed-bench После ананоса сигналов преакта многие ринулись писать свои аналоги. А потом начали их бенчмаркать 🌚 Но что мерить и как? Нашли тест о Cellx, который проверяет возможности строить глубоковложенные связи(!) и немного его поменяв начали…
Важное замечание: в результатах отчетливо видно положение реатома ближе к концу списка. В среднем, реатом в раза три медленее самого быстрого решения.
Как же так, спросите вы? Я тут про перформансы и оптимизации рассказываю, а сам не могу либу сделать хотя бы в половину быструю солида?
Реатом под капотом делает очень дорогую операцию - создает кучу новых долгоживущих объектов. Каждый апдейт пораждает новый иммутабельный граф.
В простом коде вашей фичи это излишне, но и оверхед не будет заметен. Зато в более сложных случаях мы получаем из коробки стабильные стактрейсы и простую возможность дебажить апдейты любой сложности: синхронные и асинхронные. Попозже раскажу об этом подробнее, сейчас может звучать не поонятно, но я уверен что это очень ценная фича.
Это еще не все 🙂
Реатомовские атомы по умолчанию стейтлесс и работают только в каком-то контексте, который пользователь (разработчик приложения) должен создавать сам. Это упрощает тестирование и множественное инстанцирование (SSR) до одной строчки кода - создание нового контекста. Стоимость этой фичи можно наглядно увидеть в разнице бенча
Из этой же фичи следует отсутствие необходимости брать отдельную либу для DI - реатома вполне достаточно для большинства задач на фронте. Пакет
Как же так, спросите вы? Я тут про перформансы и оптимизации рассказываю, а сам не могу либу сделать хотя бы в половину быструю солида?
Реатом под капотом делает очень дорогую операцию - создает кучу новых долгоживущих объектов. Каждый апдейт пораждает новый иммутабельный граф.
В простом коде вашей фичи это излишне, но и оверхед не будет заметен. Зато в более сложных случаях мы получаем из коробки стабильные стактрейсы и простую возможность дебажить апдейты любой сложности: синхронные и асинхронные. Попозже раскажу об этом подробнее, сейчас может звучать не поонятно, но я уверен что это очень ценная фича.
Это еще не все 🙂
Реатомовские атомы по умолчанию стейтлесс и работают только в каком-то контексте, который пользователь (разработчик приложения) должен создавать сам. Это упрощает тестирование и множественное инстанцирование (SSR) до одной строчки кода - создание нового контекста. Стоимость этой фичи можно наглядно увидеть в разнице бенча
effector и effector (fork).Из этой же фичи следует отсутствие необходимости брать отдельную либу для DI - реатома вполне достаточно для большинства задач на фронте. Пакет
testing и гайд к нему уже готовится.❤5👍1🤔1💩1
useEvent отменили 💁♂️Напомню, в реакте есть проблема паразитных зависимостей, которые нужны лишь по запросу, но тк прокидывать в хуки их нужно синхронно, изменяясь они ломают мемоизацию и могут пораждать большие или просто избыточные ветви ререндеров. В сообществе эта проблема давно известна и каждый решает ее как может, вот вам самое маленькое и корректное решение:
export function useEvent<T extends (...args: any[]) => any>(callback: T): T {
const ref = useRef({
stableFn: ((...args) => ref.current.callback(...args)) as T,
callback,
});
// useLayoutEffect for React <18
useInsertionEffect(() => {
ref.current.callback = callback;
});
return ref.current.stableFn;
}
👍10💩1🤣1
В 2015 заканчивалось мое обучение на специалиста по информационной безопасности.
Учился я в МФПУ Синергия на вечерке.
Полезной нагрузки там было минимум по целому ряду причин. Но весной на госах мне повезло с вопросом и я сдал их на отлично, хотя программу знал максимум на 5%.
На работе в этот момент у меня было все ещё лучше, я был руководителем направления и получал кучу актуальных знаний. В общем, я как-то заморочился с вопросом справедливости моих оценок и бросил универ, забив на диплом, потому что посчитал что такая корочка - вранье и оскорбление, а не резльутат труда, которым можно гордиться.
Учился я в МФПУ Синергия на вечерке.
Полезной нагрузки там было минимум по целому ряду причин. Но весной на госах мне повезло с вопросом и я сдал их на отлично, хотя программу знал максимум на 5%.
На работе в этот момент у меня было все ещё лучше, я был руководителем направления и получал кучу актуальных знаний. В общем, я как-то заморочился с вопросом справедливости моих оценок и бросил универ, забив на диплом, потому что посчитал что такая корочка - вранье и оскорбление, а не резльутат труда, которым можно гордиться.
❤20💔8🤔3
artalog
Архитектура веба В комментариях к этому посту Никиты Прокопова опять начался дискурс об ошибочном применении веба (точнее браузерных технологий) для написания приложений. Мол, только нативные технологии, только хардкор, только так можно контролировать перф…
Только что @Akiyamka мне напомнил об еще одной важной архитектурной составляющей веба, добавил в пост (прочитайте целиком, если еще не видели):
8. The last, but not least. Исходники веб страницы открыты и кто угодно может их инспектировать и модифицировать. Редкая фича в нативке. Профит для пользователя в этом огромный: режим для чтения, контрастная тема, блокировщик рекламы, да просто свои стили или скрипты. Конечно, с этим есть сложности, особенно в плане безопасности. Но в конечном итоге, открытые платформы более надежны: они открыты для непредвзятого аудита и хотфиксы к ним делать проще.
8. The last, but not least. Исходники веб страницы открыты и кто угодно может их инспектировать и модифицировать. Редкая фича в нативке. Профит для пользователя в этом огромный: режим для чтения, контрастная тема, блокировщик рекламы, да просто свои стили или скрипты. Конечно, с этим есть сложности, особенно в плане безопасности. Но в конечном итоге, открытые платформы более надежны: они открыты для непредвзятого аудита и хотфиксы к ним делать проще.
👍14
Не знаю каким видео сегодня с вами поделиться, поэтому давайте сделаем AMA в 18-00 (GMT+3). Полайвкодю разнообразную работу на реатомом и поотвечаю на любые вопросы.
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Явное лучше не явного.
Частенько наталкиваюсь на такие проблемы перевода валют - запятая разделяет тысячи или десятичную дробь?
Если интерфейс мультиязычный и в каком-то его поведении может быть не прямой выбор - принимать решение за пользователя плохая идея, обязательно будут те кому попало не то.
Как можно исправить пример из видео? Ну помимо того что инпут валюты должен учитывать принятый в стране валюты разделитель (для us запятая разделяет тысячи), можно сделать ввод дробей валюты более явным отдельным инпутом центов / копеек.
Но я UX репорты не делаю, высказываю свои мысли по своему опыту.
Частенько наталкиваюсь на такие проблемы перевода валют - запятая разделяет тысячи или десятичную дробь?
Если интерфейс мультиязычный и в каком-то его поведении может быть не прямой выбор - принимать решение за пользователя плохая идея, обязательно будут те кому попало не то.
Как можно исправить пример из видео? Ну помимо того что инпут валюты должен учитывать принятый в стране валюты разделитель (для us запятая разделяет тысячи), можно сделать ввод дробей валюты более явным отдельным инпутом центов / копеек.
Но я UX репорты не делаю, высказываю свои мысли по своему опыту.
👍6👎1
artalog
reactive-computed-bench После ананоса сигналов преакта многие ринулись писать свои аналоги. А потом начали их бенчмаркать 🌚 Но что мерить и как? Нашли тест о Cellx, который проверяет возможности строить глубоковложенные связи(!) и немного его поменяв начали…
Говорят что реактивность это огромный оверхед по перфу. И я с этим полностью согласен. В простых случаях.
Но чем код сложнее, тем больше реактивность (не только она, любой тулинг) помогает автоматически его оптимизировать, в этом и заключается ключевая ценность.
Решил сделать наглядный пример того как инструменты помогают оптимизировать производительность даже простейшего кода. И логика тут железобетонная - O(n) быстрее O(n!), как только сложность кода и алгоритма становится больше линейной - лучше полагаться на автоматический тулинг (если есть подходящий).
P.S. добавил ночью в доку реатома описание основных паттернов оптимизации производительности: atomization и ref pattern.
Но чем код сложнее, тем больше реактивность (не только она, любой тулинг) помогает автоматически его оптимизировать, в этом и заключается ключевая ценность.
Решил сделать наглядный пример того как инструменты помогают оптимизировать производительность даже простейшего кода. И логика тут железобетонная - O(n) быстрее O(n!), как только сложность кода и алгоритма становится больше линейной - лучше полагаться на автоматический тулинг (если есть подходящий).
P.S. добавил ночью в доку реатома описание основных паттернов оптимизации производительности: atomization и ref pattern.
👍6🤮1
Последнее время я ничего не смотрю, хотя в заметках что-то оседает, вот что за неделю набралось:
Qwik Core Developers Training (погружение в кишочки Qwik)
"Programmable Ink" by Szymon Kaliski (Strange Loop 2022) (иследование: что если программировать на планшете со стилусом?)
Qwik Core Developers Training (погружение в кишочки Qwik)
"Programmable Ink" by Szymon Kaliski (Strange Loop 2022) (иследование: что если программировать на планшете со стилусом?)
👍4
Forwarded from Hey 👋, i'm 𝖙𝖍𝖊𝖐𝖎𝖇𝖆! キバ
Блокчейн со смарт контрактами — это как большой redux store с редьюсерами и селектами.
Смарт контракт — это подобие сгруппированных редьюсеров и селекторов в одном файле.
За работу с редьюсерами взымается плата, так как они апдейтят состояние.
За работу с селекторами плата не взымается.
Смарт контракт — это подобие сгруппированных редьюсеров и селекторов в одном файле.
За работу с редьюсерами взымается плата, так как они апдейтят состояние.
За работу с селекторами плата не взымается.
🔥24🤔9👎1👏1💩1
https://t.me/pauline_dev/64
В универе нам рассказывали что есть сейсмические и акустические системы перехвата информации, которые по шуму и / или вибрации серверной стойки могут что-то там понять и даже перехватить. 10-30 лет назад такие системы, конечно, были более актуальны, нежели сейчас с виртуализациями, шифрованиями, низковольтными герцами и твердотельными накопителями. Но осадочек остался, я получил полное безразличие к ИБ, от безысходности.
Года три назад хотел возобновить интерес к этой теме (ИБ), почитал пару недель securitylab.ru, нервно посмеялся над тем что стабильно каждую неделю - месяц выходит новый zero-day и опять забил…
В универе нам рассказывали что есть сейсмические и акустические системы перехвата информации, которые по шуму и / или вибрации серверной стойки могут что-то там понять и даже перехватить. 10-30 лет назад такие системы, конечно, были более актуальны, нежели сейчас с виртуализациями, шифрованиями, низковольтными герцами и твердотельными накопителями. Но осадочек остался, я получил полное безразличие к ИБ, от безысходности.
Года три назад хотел возобновить интерес к этой теме (ИБ), почитал пару недель securitylab.ru, нервно посмеялся над тем что стабильно каждую неделю - месяц выходит новый zero-day и опять забил…
Telegram
я_бантик.jpg
фингерпринтинг при помощи аудио апи
я когда-то упоминала, что напишу про фингерпринтинг при помощи аудио апи. подробнее в статье по ссылке, а в файле ниже будет небольшое исследование про фингерпринтинг в браузере в целом.
звук — это волна, передаваемая…
я когда-то упоминала, что напишу про фингерпринтинг при помощи аудио апи. подробнее в статье по ссылке, а в файле ниже будет небольшое исследование про фингерпринтинг в браузере в целом.
звук — это волна, передаваемая…