supadupa
26 subscribers
12 photos
2 videos
1 file
89 links
a place for intelligent monkeys
Download Telegram
спасибо нашим читателям!!

шикарная подборка по комьюнити локалферст
https://localfirstweb.dev/
5🔥11
Knip - это отличный инструмент, позволяющий найти любой кусок кода, который вы больше не используете в своем приложении. Сюда входят файлы, которые не импортируются, экспорт, который не используется, старые зависимости, которые вы никогда не удаляли, переходные зависимости, которые вы используете через другую зависимость, и многое другое. Это очень полезно для поддержания чистоты вашей кодовой базы и сокращения времени сборки приложения (поскольку сборка становится больше по мере роста приложения)

----------------
https://knip.dev/
----------------

https://sergiodxa.com/tutorials/find-and-remove-unused-code-with-knip
https://effectivetypescript.com/2023/07/29/knip/
🔥73👍1
Channel photo updated
Forwarded from Denis Chernov
вкусно? ВКУСНО
4🤮3👍1
turbopack 🤩
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍11
Forwarded from artalog (artalar)
Reatom@1000

Друзья, вариантов больше нет, вопрос стейт менеджмента закрыт раз и навсегда, я серьезно!

Приглашаю всех к тестированию новой альфа версии реатома ❤️


npm i @reatom/core@alpha @reatom/react@alpha


Это стейт менеджер для всех! Просто начать! Надежно и безопасно развивать код до небывалых масштабов. Все быстро, продумано, типобезопасно, LLM френдли и так далее и так далее🤠



02:50 смотрим новое апи
06:40 реалистичный пример
09:50 wrap из tc39/proposal-async-context и проблема SSR
18:28 проблемы императивного кода
23:44 экосистема и .extend

- попробовать пример в репле
- код примера
- документаия (сайт в разработке)
- быстрый старт для LLM
- дока для react пакета
- почему ТЫСЯЧА

Лайк, шер, репост!
Media is too big
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍1
Forwarded from Work & Beer Balance
Все обсуждают свежее исследование влияния AI на скорость закрытия задач.
- тестировали на мейнтейнерах крупных опенсорс репозиториев
- на реальных задачах
- анализировали записи экрана вместо того чтобы полагаться на ощущения разработчиков
- один инструмент у всех - cursor.

В кратце выводы - в общем замедление на 20%, из-за накладных расходов - время генерации, время написания промптов, время на ревью кода написанного агентом.

Интерпретация через призму моего опыта (roo code, claude code, zed):
- применение AI ко всем задачам подряд действительно даст замедление. Ускорение есть только на задачах подходящих для AI. Попытки заставить его делать любые задачи отнимают больше времени чем экономят.

Да, первое время это может быть даже весело и увлекательно, но в сухом остатке - пул задач где AI эффективна весьма ограничен.

Попробую его обозначить:

Написание чистых утилитарных функций

Администрирование Linux:
- анализ системы и определение источника проблема
- разрешение конфликтов пакетов
- доустановка необходимых пакетов
- исправление проблем с драйверами
- создание cron / systemd задач
- генерация сложных cli команд

Работа с небольшими приложениями , библиотеками, прототипами:
Тут самый важный критерий - можете и ли вы точно и коротко сформулировать какие именно изменения надо внести в код. Если нет - то и оценить предложенные изменения агентом будет сложно.

Шансы на успех увеличиваться если:
- язык со строгой типизацией
- стек стандартный для индустрии
- все связи в коде явные
- в коде досрочно комментариев а сущности удачно названы
- много тестов / сначала был написан тест

В итоге я очень активно используют AI "в быту" для решения своих насущных проблем - что то править, сделать утилиту, лениво покодить esp32.

Но в рабочих задачах в большом монорепе, где весь болиерплейт написан а код дедуплицирован я 70% времени анализирую проблему и ищу правильное решение, а сам код я пишу в весьма скромных количествах.
Те несколько сотен строк что мне останется написать дольше просить чем написать самому, особенно когда AI автокомплит мне помогает
👍5🔥11
Forwarded from mefody.dev
Что сегодня умеет PWA

Нашёл интересное приложение, которое использует различные полезные API для PWA с примерами кода. Причём это приложение само по себе PWA. Здесь есть использование нативного шаринга, записи звуков, захвата экрана, работа с NFC, AR/VR, синтез голоса и так далее. К сожалению, некоторые примеры у меня ломаются на устройстве, но можно завести ишью на GitHub, автор проект поддерживает.

Ну и напоминаю, что у меня тоже есть полезное приложение: https://mefody.github.io/fugu-detector/. На страничке — список различных Fugu API, причём можно посмотреть, работает это API в вашем браузере или нет. Недавно Томас Штайнер помог синхронизировать эту страничку с его обновляемым списком Fugu API.

https://whatpwacando.today/
🔥3👍11
Forwarded from Веб-стандарты (Vadim Makeev)
Теория мёртвых фреймворков. Пол Кинлан о мире, где React перестаёт быть просто библиотекой и становится самой платформой — не по решению разработчиков, а по воле языковых моделей, обученных на нём. Новые фреймворки и идеи тонут в данных, не успевая попасть в следующий цикл обучения, а сеть всё больше заполняется кодом, созданным LLM по одним и тем же шаблонам. #react #ai

https://aifoc.us/dead-framework-theory/
3🔥1
Forwarded from 8BitJS
​​Что пошло не так в React Server Components и чему из этого стоит научиться

Последние пару дней во всех фронтенд-пабликах пролетела новость: в React нашли критическую уязвимость с оценкой CVSS 10.0. Она позволяет получить удаленное выполнение кода на сервере. В списках пострадавших оказались все кто используют и/или поддерживают React Server Components (RSC).

Но мне захотелось разобраться с инженерной точки зрения, что же именно оказалось сломано внутри React и почему это вообще стало возможно. А главное, понять, чему мы можем научиться из этого кейса как разработчики, даже если не используем RSC.

Небольшое отступление.

В рамках PR с закрытием уязвимости было решено сделать рефакторинг. И справедливо было подмечено

With this combined commit, people now have to go through a >1500 line patch to try to understand the security relevant changes.

Что за уязвимость

CVE-2025-55182 - критическая уязвимость в React Server Components, которая позволяет, отправив специально сформированный запрос, добиться удаленного выполнения кода на сервере.

В коде было обнаружены три основные причины уязвимости:

1. Несимметричность в плане защиты между кодом клиентской и серверной реализацией
2. Небезопасная десериализация данных Flight-протокола на сервере
3. Незащищенное разрешение модулей и экспортов

Немного контекста

React Server Components

Основная идея состоит в том, что сервер может сам рендерить дерево компонентов, может делать запросы в БД и API. Клиент же получает поток (stream) данных о дереве, а не готовый HTML. React на стороне клиента постепенно собирает готовый результат из данных от сервера и клиентских компонентов.

Flight-протокол

Внутренний протокол React для передачи данных в RSC между клиентом и сервером. Простыми словами, сервер кодирует состояние дерева, ссылки на компоненты, промисы в поток байтов. Со стороны клиента поток читает декодер ReactFlightClient и восстанавливает исходные данные. Аналогично со стороны сервера есть декодер ReactFlightReplyServer, который обрабатывает обратные данные от пользователя.

Разберемся в коде

Рассмотрим на практике два ключевых участка, которые стали причиной уязвимости.

Prototype pollution в ReactFlightReplyServer

Внутри серверного декодера есть функция reviveModel в связке с getOutlineModel, которые рекурсивно обходят данные и "оживляет" их в обычные JS структуры.

Упростим:

function reviveModel(...) {
...
if (typeof value === 'object' && value !== null) {
...
for (const key in value) {
// hasOwnProperty проверка для защиты от вызова унаследованных ключей
if (hasOwnProperty.call(value, key)) {
...
// добавили проверку на __proto__
if (newValue !== undefined || key === '__proto__') {
value[key] = newValue;
}
}
}
}


requireModule и доверие к экспорту

В RSC есть функция requireModule(metadata) для бандлеров, которая по metadata.id находит модуль и по metadata.name выбирает нужный экспорт.

export function requireModule<T>(metadata: ClientReference<T>): T {
const moduleExports = parcelRequire(metadata[ID]);
return moduleExports[metadata[NAME]];
}


Сервер слишком доверяет экспортируемому модулю, поэтому могут сработать запросы вида:

{
"id": "foo",
"name": "__proto__"
}


Из-за чего можно было использовать имя экспорта, которого нет в модуле, но существующего в цепочке прототипов.

Для закрытия уязвимости для экспорта добавили проверку

if (hasOwnProperty.call(moduleExports, metadata[NAME])) {
return moduleExports[metadata[NAME]];
}


Итого

Как мы смогли увидеть, в уязвимости нет каких-то хитростей React, а используется довольно распространенная проблема доверия к данных при десериализации.

Что важного мы можем вынести для себя:

Никогда не доверяйте структуре данных от пользователя. Для защиты фильтруем все опасные ключи из прототипирования (__proto__, constructor, prototype) и/или добавляем подход allowlist для ключей. Для конструкции for...in используем hasOwnProperty.

#8BitJS #React #CVE #security #RSC
Forwarded from Reatom новости (artalar)
v1000 в проде, альфа закончена 🥳🥳🥳

Библиотека теперь в несколько раз проще и намного богаче на фичи!

Огромное спасибо всему комьюнити за участие в разработке и тестировании, за время альфы количество скачиваний в NPM увеличилось вдвое до 7к в неделю! Ко мне приходят в личку с восторженными фидбеками о простоте и функциональности библиотеки, все получилось как и планировали!

Отдельная благодарность @Xelson за его разработку форм менеджера - титаническая работа! Начать смотреть отсюда (там еще много гайдов в сайдбаре можете найти): https://v1000.reatom.dev/handbook/forms/introduction/

Напомню, у нас так же появилась мощная (лучшая кмк) система роутинга: https://v1000.reatom.dev/handbook/routing/

Помимо core пакета (с формами, роутингом и кучей всего) стабильными версиями опубликованы пакеты для React и собственного JSX рендера.

Уже на подходе пакеты для: solid, lit, preact, zod! Требуется помощь с пакетами для Vue и Svelte (делать по примеру solid и preact).

Про миграцию с v3: https://v1000.reatom.dev/handbook/history/#migration-from-v3

Очень много анонсов и статей, демок будет на этой неделе. НО самое важное - это фидбек от вас! Пробуйте, отписывайтесь сюда или в https://github.com/reatom/reatom/issues/1093

Лайк, шер!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2