artalog – Telegram
artalog
4.21K subscribers
533 photos
40 videos
39 files
897 links
Развернутые ответы на вопросы в чатах, мысли от рабочих процессов.
Вопросы - @artalar.
Download Telegram
Live stream finished (27 minutes)
Forwarded from undefined
Анализ Core Web Vitals по 9,3 миллионам веб-сайтов по состоянию на 6 февраля 2023 года показывает, что Core Web Vitals как для React, так и для Next.js показывает, что оба они работают хуже, чем совокупность всех других сайтов в архиве как для мобильных устройств, так и для настольных компьютеров. - https://www.zachleat.com/web/react-criticism/
😁10😱2💩2👍1🌚1
Live stream started
AMA
👍18🔥1
Live stream finished (4 minutes)
Записал видосик про атомизацию - паттерн удобного и производительного управления иммутабельными списками.

Это может быть интересным не только тем кто вовлечень в реатом, рассматривается частная реализация “ref-pattern”. Общий пример из будущего: https://twitter.com/sebastienlorber/status/1620385689853661185

P.S. предыдущий видос Имя компонента в логах useAtom тоже залил на ютуб.
👍9
Пока в твиттере вирусятся сигналы, наружу всплывают более фундаментальные вопросы реактивности. Самая главная практическая проблема, которая следует из отсутствия стандартов, отсутствие единых очередей.

В вебе же есть нативные очереди, скажите вы?
1. Очереди две, а у нас есть доступ только к одной - микротасков (Promise.resolve().then). Нельзя запланировать таск, setTimeout(cb, 0) в некоторых условиях может подменять “0” на “4”.
2. Даже двух очередей не достаточно, браузеры абьюзят нативный доступ к очередям и разные таски вставляют в одни и те же очереди в разные позиции (сортируют по приоритету).

А точно оно надо? Хороший пример, очереди в реакте: рендеринг, рефы, эффекты, лаяут эффекты. И даже этого не достаточно, недавно добавили insertion эффект. Который “should be limited to css-in-js library authors”, но используется для useEvent / useCallbackRef.

В реатоме мне тоже пришлось переизобрести кучку очередей, получилась довольно интересная схема, вот подробный гайд: https://www.reatom.dev/guides/lifecycle
🤡5🌭3👍1🔥1🤔1
Ищу джуна. Делать веб-интерфейсы на реактике. Кода уочень много, он интересный.

Удаленка, не РФ, ~5 usd в час, свободный график, fulltime, Intermediate<= English.

Обязателен какой-то бекграунд: прод опыт с любым ЯП или ВУЗ по теме.

Буду менторить жестко, закидывая знаниями, зато активно. Пишите в личку (@artalar) с резюме.

The project is a platform for managing advertisement campaigns (adtech) along with ads banner system and traffic analytics. We use BigData and Data Science to improve the quality of our ads.
👍37🤡7👎3💩3
Складываем раз, два и получаем:

https://github.com/oven-sh/bun/issues/2255
😁7🌭3
А вы знали что к логам в консоле девтулзов можно применять CSS? Для этого достаточно в начало лога вставить %c и вторым аргументом передать строку стилей.

пример логов реатома

исходники

Из того что я узнал недавно:

- заголовок группы тоже можно красить - это очень удобно!

- вы не можете растянуть контейнер лога на всю ширину экрана через width и менять display, но можно использовать проценты в padding. Вот так я центрирую текст:

padding-left: calc(50% - `${text.length / 2}`em)
👍27🔥5
Кто-то пишет на xstate? Покидайте каких-то best practices примеров. Только без логики в jsx, желательно, хочу попереписывать на разные стеки какие-то процессы - асинхронные логические цепочки.
👍4
Live stream started
Попробуем сделать автоматически перезапускаемые сайд-эффекты
Live stream finished (54 minutes)
Всякие интересные и не очевидные штуки 😃
А зочем в node_modules загружать README.md??

Я тут задумался над сокращением размера пакета (не бандла). Реатом сейчас загружает в NPM минимум: бандлы, типы, сурсмапы и ридми как лендос для пакета. Все вместе занимает 100-200кб. Много? MobX и react-dom занимают по 4 мегабайта! Кстати, выхлоп реатома планирую еще немного сократить, сейчас паблишится четыре разных сборки, возможно сократить до трех.

Если у вас много проектов и вы загружаете много раз один и тот же реакт - это лишняя нагрузка на сеть и fs. Современные менеджеры пакетов умеют с этим справляться кешированием. NPM и Yarn копируют из кеша и не ходят в сеть, а pnpm делает симлинки - это это очень быстро.

Но! Если вы часто обновляете пакеты (что хорошо), но делаете это только на свежих проектах (что логично), а старые трогаете редко - кеш будет копиться и занимать лишнее место, его нужно как-то обслуживать… Да и само обновление тоже скачать и установить нужно. А шарится ли кеш у вас в CI между запусками? А есть ли у вас удаленный (его кто-то удалил?) remote cache? Легко его поддерживать? Какая там самая большая проблема в программировании?

Самое больное для меня, не много маленьких проектов, а один большой - когда пакетов много, начинаешь понимать проблему их размера (и бандлсайза и пакаджсайза). Нужна как минимум общая культура минимизации размера бандла и всего пакета. Как максимум - нужен нормальный тулинг, сейчас нельзя тянуть ресурсы из пакета лениво. Те я бы хотел для локальной разработки подгружать дев билды и не подгружать несколько прод билдов под разные браузеры, а на CI не подгружать дев билды. Но, кажется, это мечты еще на долго.

По умолчанию в NPM при паблише льется все из текущей дериктории, те исходники, тесты, инфраструктура - все что не нужно потребителю пакета. В package.json автор пакета может указать массив files и перечислить глобы по которым будут браться нужные файлы и папки, и ничего лишнего. В пакетах реатома это ["/build", "/package.json”]. Наверрное, можно оставить только build, потому что package.json и README.md грузяться в NPM автоматически, просто потому что первый необходим для работы регистра, а ридмишка выступает лицом страницы пакета на npmjs.com. Но проблема, на которую я только сейчас обратил внимание - README.md загружается в node_modules и его нельзя вырезать! Я, как автор пакета, не могу не паблишить этот файл, за меня это делает NPM, а пакетные менеджеры зачем-то тоже его тащат. Надеюсь, скоро это исправят. А я подумываю над подменой контента в ридми при паблише, что бы не гонять лишний трафик. И не говорите что оно того не стоит, без стремления к лучшему, не получится хорошего.

P.S. для просмотра веса билда библиотеки раньше использовался bundlephobia.com, сейчас есть более фичастая альтернатива - bundlejs.com (очень рекомендую), а если вам нужно посмотреть размер пакета в NPM - packagephobia.com
👍8🤡8😁3
Я читаю ридми в node_modules
Anonymous Poll
31%
Да
69%
Нет
😁4🤯4
CleanShot 2023-03-10 at 08.43.40-converted.mp4
48.5 MB
Работа с Copilot
🥱21🔥6