artalog
Пробуем наноизировать goober
Результат вчерашней наноизации библиотеки goober на скриншотах. Подробности в ПРе, все оптимизации разбиты на отдельные комиты.
Я говорил на стриме, там можно заметно сократить бандлсайз с помощью optional chaing и
Напомню, они выплачивают деньги за урезание байт.
Я говорил на стриме, там можно заметно сократить бандлсайз с помощью optional chaing и
||= / ??= / ??, но для этого нужно правильно подправить сетап билда. Мне этим заниматься сейчас времени нет - можете подхватить 🙂Напомню, они выплачивают деньги за урезание байт.
Introducing Signals
Преактовцы выпустили пакет, который заимствует некоторые идеи из Solid.js.
И у него есть частичная совместимость с реактом
Для 2022 там используются достаточно стандартные решения в плане реактивщины, но…
С точки зрения вью либы они сделали то чего давно не хватало во всех этих реактах - нативные реактивные биндинги!
Что это? Я уже как-то предлагал реализовать нечто подобно на Jotai (тогда это посчитали неважной утилитой). Оно позволяет вставлять в JSX реактивные юниты без использования хуков! Трюк прост - давайте вставлять компонент-обертку, который в себе просто вызывает хук и возвращает его значение. Таким образом мы избавляемся от пачки правил использования хуков в одном рендере.
Хотя уже давным давно существует github.com/grammarly/focal, который делает нечто подобное, но преактовцы сделали интеграцию максимально прозрачной и лёгкой как с точки зрения юзер кода, так и по технической реализации (ну это они так говорят).
И, наконец, получили vue.js.
И важно тут вот что, реактивный юнит в преакте можно не просто вставлять в JSX, но и передавать в атрибуты DOM элементов - и это гейм-ченджер который позволяет практически полностью убрать ререндеры.
Интересно, конечно, что там по памяти и скорости инициализации. Ждем еще независимые перфтесты.
P.S. пакет весит как третий реатом, который еще более фичастый и универсальный 😉
Преактовцы выпустили пакет, который заимствует некоторые идеи из Solid.js.
И у него есть частичная совместимость с реактом
Для 2022 там используются достаточно стандартные решения в плане реактивщины, но…
С точки зрения вью либы они сделали то чего давно не хватало во всех этих реактах - нативные реактивные биндинги!
Что это? Я уже как-то предлагал реализовать нечто подобно на Jotai (тогда это посчитали неважной утилитой). Оно позволяет вставлять в JSX реактивные юниты без использования хуков! Трюк прост - давайте вставлять компонент-обертку, который в себе просто вызывает хук и возвращает его значение. Таким образом мы избавляемся от пачки правил использования хуков в одном рендере.
Хотя уже давным давно существует github.com/grammarly/focal, который делает нечто подобное, но преактовцы сделали интеграцию максимально прозрачной и лёгкой как с точки зрения юзер кода, так и по технической реализации (ну это они так говорят).
И важно тут вот что, реактивный юнит в преакте можно не просто вставлять в JSX, но и передавать в атрибуты DOM элементов - и это гейм-ченджер который позволяет практически полностью убрать ререндеры.
Интересно, конечно, что там по памяти и скорости инициализации. Ждем еще независимые перфтесты.
P.S. пакет весит как третий реатом, который еще более фичастый и универсальный 😉
Preactjs
Introducing Signals – Preact
👍7🤯3❤1
Forwarded from UfoStation
Опубликовали доклад с Ural Digital Weekend 2022:
«Медленная веб-страница. Что делать?»
Видео: https://www.youtube.com/watch?v=ow3eE1LokQ0
Слайды: https://bit.ly/slow_webpage
«Медленная веб-страница. Что делать?»
Видео: https://www.youtube.com/watch?v=ow3eE1LokQ0
Слайды: https://bit.ly/slow_webpage
👍3❤2
Waaaat
https://twitter.com/amasad/status/1567953865622061057
Рекомендую весь тред почитать (это не первый твит).
https://twitter.com/amasad/status/1567953865622061057
Рекомендую весь тред почитать (это не первый твит).
🔥3
artalog
Introducing Signals Преактовцы выпустили пакет, который заимствует некоторые идеи из Solid.js. И у него есть частичная совместимость с реактом Для 2022 там используются достаточно стандартные решения в плане реактивщины, но… С точки зрения вью либы они…
Зарепортил им багу, пофиксили 🙂
GitHub
Fix stale value when conditionally accessing stale signal by marvinhagemeister · Pull Request #127 · preactjs/signals
This PR addresses an issue where a stale conditional value would not be refreshed. In the example below the b signal wasn't updated upon re-activation.
const a = signal(0);
const b = computed((...
const a = signal(0);
const b = computed((...
🔥4
TypedMap
Разгребал гисты и нашел типизированную версию иммутабельной мапы - это почти что 80lvl по программированию на типах.
В реальности это можно использовать для управления коллекцией брендированных типов.
ЗЫ а вот тред в ТС чатике о дебаге и создании этого кода.
Разгребал гисты и нашел типизированную версию иммутабельной мапы - это почти что 80lvl по программированию на типах.
В реальности это можно использовать для управления коллекцией брендированных типов.
ЗЫ а вот тред в ТС чатике о дебаге и создании этого кода.
👍3
Ночью поднял reatom.vercel.app/npm-react на #mono и astro.build. Тул классный, но подробнее о нем расскажу позже, как опыта побольше наберется.
А по первой ссылке дока к реакт пакету третьего реатома и в ней есть очень интересный рецепт как описать вычисления в рендере, но делать их без ререндера, зацените (там и плейграунд есть) - см скрины.
А пример миграции с RTK совсем смешно выглядит.
А по первой ссылке дока к реакт пакету третьего реатома и в ней есть очень интересный рецепт как описать вычисления в рендере, но делать их без ререндера, зацените (там и плейграунд есть) - см скрины.
А пример миграции с RTK совсем смешно выглядит.
👏2
Revolution OS (правильный перевод)
Я иногда забываю что идея открытых знаний и свободно переиспользуемого тулинга достаточно уникальна для ИТшки. Некоторые мои родственники или знакомые даже не подозревают как радикально иначе можно строить бизнес или просто делать какие-то дела. Фильм будет понятен и доступен любому “уверенному пользователю ПК”, рекомендую 🙂
Я иногда забываю что идея открытых знаний и свободно переиспользуемого тулинга достаточно уникальна для ИТшки. Некоторые мои родственники или знакомые даже не подозревают как радикально иначе можно строить бизнес или просто делать какие-то дела. Фильм будет понятен и доступен любому “уверенному пользователю ПК”, рекомендую 🙂
YouTube
Revolution OS (правильный перевод)
Фильм об истории появления идей свободного программного обеспечения, ядра Linux, ОС GNU, перехода Netscape (Mozilla, Firefox) с проприетарной на откртую модель разработки, создание Red Hat и т.д. в первом правильном переводе (потому что если хочешь, чтобы…
❤11
https://t.me/nikitonsky_pub/390
Дизайн это не киллер фича, это основа комфорта, который прибавляет или вычитает от общего впечатления.
Амазон не меняется, потому что пользователь не любит когда что-то меняется, пользователю лучше всего что-то привычное, потому что оно понятно и предсказуемо, те комфортно.
Хороший дизайн - эффективен в том что бы быстро провести пользователя по целевому процессу, который заканчивается тратой его денег.
Что бы пользователь не тупил, интерфейс должен быть привычный и понятный.
Привычным его можно сделать скопировав дизайн практики из платформы где запускается приложение (веб/десктоп/нейтив). Кстати узнать о них можно из гайдов по доступности.
А что бы интерфейс был понятный нужна прям толика дизайна для выделения ключевых элементов. Ну или скрытия второстепенных.
Все на чем дизайнер реально может оторваться - это брендинг, но нужно что бы его насыщенность не перекрывала предыдущие пункты. Так что на самом деле плохой дизайн сделать вообще-то трудно и получается он только от попыток накрутить больше чем нужно - оверинжениринг, да да, прям как у программистов.
Возвращаясь к амазону. Если у вас есть киллер фича и вы можете на ней сильно вырасти - не играйтесь с дизайном, а сделайте максимально просто и понятно. Сэкономите на настоящем и будущем.
Добавить брендинг проще чем его поменять.
Дизайн это не киллер фича, это основа комфорта, который прибавляет или вычитает от общего впечатления.
Амазон не меняется, потому что пользователь не любит когда что-то меняется, пользователю лучше всего что-то привычное, потому что оно понятно и предсказуемо, те комфортно.
Хороший дизайн - эффективен в том что бы быстро провести пользователя по целевому процессу, который заканчивается тратой его денег.
Что бы пользователь не тупил, интерфейс должен быть привычный и понятный.
Привычным его можно сделать скопировав дизайн практики из платформы где запускается приложение (веб/десктоп/нейтив). Кстати узнать о них можно из гайдов по доступности.
А что бы интерфейс был понятный нужна прям толика дизайна для выделения ключевых элементов. Ну или скрытия второстепенных.
Все на чем дизайнер реально может оторваться - это брендинг, но нужно что бы его насыщенность не перекрывала предыдущие пункты. Так что на самом деле плохой дизайн сделать вообще-то трудно и получается он только от попыток накрутить больше чем нужно - оверинжениринг, да да, прям как у программистов.
Возвращаясь к амазону. Если у вас есть киллер фича и вы можете на ней сильно вырасти - не играйтесь с дизайном, а сделайте максимально просто и понятно. Сэкономите на настоящем и будущем.
Добавить брендинг проще чем его поменять.
Telegram
Стой под стрелой
В комментариях возникло мнение, что может быть и не стоит стараться ради пользователя, вычищать скрипты, оптимизировать скорость сайта, делать хороший дизайн. Мол, пользователям и так нормально.
И знаете что? Я соглашусь. Бизнес-причин делать хорошо действительно…
И знаете что? Я соглашусь. Бизнес-причин делать хорошо действительно…
👍8👎1
На выходных разбирался с инфраструктурой в монорепе реатома и нужно было решить несколько задач: мигрировать с nx на turbo, из-за этого использовать другой кодген для нового пакета, сделать что-то для упрощения публикации новых версий пакетов.
Почему с nx на turbo? Первый был для меня не удобен во многих мелочах, особенно в расширении для vscode на которое я возлагал большие надежды. Это еще терпимо, но я ни раз сталкивался с какими-то ошибками: какие-то заводил, какие-то просто не понимал как дебажить, воспроизводить и репортить - падает ошибка при запуске билда с графом на десяток пакетов, а откуда и почему не ясно.
На турбо оказалось норм, он меньше дает, но и попроще как-то - я это ценю.
По ссылке выше ишье как раз на багу в кодгене. Меня это напрягало, но было терпимо потому что сам формат был удобный - заводишь папку с кучкой файлов в которых просто специальным синтаксисом указываешь ключевые слова для изменения. В итоге, можно самому просто копирнуть папку и глобальным реплейсом за 5 секунд персонализировать темплейт в пакет. Удобно. Но как автоматизировать это другими инструментами, после миграции на турбо, я не нашел. Все говорят про plop, но он как будто заточен на кодснипеты. У меня простая задача - скопирнуть папку и сделать глобал реплейс.
Решил не привносить доп пакеты с доп сложностью, а написать свой скрипт - вышло достаточно коротко и внятно кмк.
С публикацией пакетов такая проблема: их много и следить за тем что изменилось очень тяжело, а как паблишить автоматически из CI я ещё не разобрался и не уверен можно ли вообще - у меня юбикей для OTP. Хотелось инструмент который может просто подсказать какие пакеты не актуальны в нпм. Я уже давно использовал npmjs.com/package/@jsdevtools/npm-publish и вроде норм, хотя оказалась что он не читает publishConfig.tag из пакаджисона - можно было бы запулреквестить, но я заметил что версию пакета он получает простой командой
В общем, я доволен тем что сейчас так просто можно пилить свои небольшие скрипты и std ноды достаточно богато, а где его не хватает можно использовать простой концептуально zx.
Почему с nx на turbo? Первый был для меня не удобен во многих мелочах, особенно в расширении для vscode на которое я возлагал большие надежды. Это еще терпимо, но я ни раз сталкивался с какими-то ошибками: какие-то заводил, какие-то просто не понимал как дебажить, воспроизводить и репортить - падает ошибка при запуске билда с графом на десяток пакетов, а откуда и почему не ясно.
На турбо оказалось норм, он меньше дает, но и попроще как-то - я это ценю.
По ссылке выше ишье как раз на багу в кодгене. Меня это напрягало, но было терпимо потому что сам формат был удобный - заводишь папку с кучкой файлов в которых просто специальным синтаксисом указываешь ключевые слова для изменения. В итоге, можно самому просто копирнуть папку и глобальным реплейсом за 5 секунд персонализировать темплейт в пакет. Удобно. Но как автоматизировать это другими инструментами, после миграции на турбо, я не нашел. Все говорят про plop, но он как будто заточен на кодснипеты. У меня простая задача - скопирнуть папку и сделать глобал реплейс.
Решил не привносить доп пакеты с доп сложностью, а написать свой скрипт - вышло достаточно коротко и внятно кмк.
С публикацией пакетов такая проблема: их много и следить за тем что изменилось очень тяжело, а как паблишить автоматически из CI я ещё не разобрался и не уверен можно ли вообще - у меня юбикей для OTP. Хотелось инструмент который может просто подсказать какие пакеты не актуальны в нпм. Я уже давно использовал npmjs.com/package/@jsdevtools/npm-publish и вроде норм, хотя оказалась что он не читает publishConfig.tag из пакаджисона - можно было бы запулреквестить, но я заметил что версию пакета он получает простой командой
npm view package-name version и взяв тот же zx запили свой скрипт, избавив нодмодули от лишнего веса.В общем, я доволен тем что сейчас так просто можно пилить свои небольшие скрипты и std ноды достаточно богато, а где его не хватает можно использовать простой концептуально zx.
👍5
artalog
До круглого числа осталось 35 человек. Поделитесь ссылкой t.me/artalog/187 ;)
Уфффф. Циферка так быстро прыгнула, что 1024 проскользнула между 1019 и 1027 🤩
Спасибо всем новым подписчикам и, конечно, всем тем кто был тут в этом году! Приятно видеть реакции на посты и еще больше приятно узнавать что-то новое в комментариях к ним. 🔥
С января я начал делать посты каждый день и думал что меня хватит месяца на 2-3, но сейчас в закладках десятки тем и не хватает лишь времени их переработать в текст. Впереди еще много интересного😀
Напомню, самое интересное в закрепе: t.me/artalog/187
Конечно, невозможно не поблагодарить и посоветовать дружественные каналы, способствовавшие как росту этого канала, так и моему интелектуальному развитию:
@xanf_dev
@sergeysova
@melikhov_dev
@xufostation
@msosnovfeed
@valya_reads_issue
@bearlogin_dev
@kirjs_ru
@gorshochekvarit
@defront
Спасибо всем новым подписчикам и, конечно, всем тем кто был тут в этом году! Приятно видеть реакции на посты и еще больше приятно узнавать что-то новое в комментариях к ним. 🔥
С января я начал делать посты каждый день и думал что меня хватит месяца на 2-3, но сейчас в закладках десятки тем и не хватает лишь времени их переработать в текст. Впереди еще много интересного
Напомню, самое интересное в закрепе: t.me/artalog/187
Конечно, невозможно не поблагодарить и посоветовать дружественные каналы, способствовавшие как росту этого канала, так и моему интелектуальному развитию:
@xanf_dev
@sergeysova
@melikhov_dev
@xufostation
@msosnovfeed
@valya_reads_issue
@bearlogin_dev
@kirjs_ru
@gorshochekvarit
@defront
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22🔥8