Knip - это отличный инструмент, позволяющий найти любой кусок кода, который вы больше не используете в своем приложении. Сюда входят файлы, которые не импортируются, экспорт, который не используется, старые зависимости, которые вы никогда не удаляли, переходные зависимости, которые вы используете через другую зависимость, и многое другое. Это очень полезно для поддержания чистоты вашей кодовой базы и сокращения времени сборки приложения (поскольку сборка становится больше по мере роста приложения)
----------------
https://knip.dev/
----------------
https://sergiodxa.com/tutorials/find-and-remove-unused-code-with-knip
https://effectivetypescript.com/2023/07/29/knip/
----------------
https://knip.dev/
----------------
https://sergiodxa.com/tutorials/find-and-remove-unused-code-with-knip
https://effectivetypescript.com/2023/07/29/knip/
Knip
Declutter your JavaScript & TypeScript projects
Project linter to find unused dependencies, exports and files
🔥7 3👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1 1
мастрид для курсорозависимых 🪖 🪖 🪖 🪖
https://lucianonooijen.com/blog/why-i-stopped-using-ai-code-editors/
https://lucianonooijen.com/blog/why-i-stopped-using-ai-code-editors/
Please open Telegram to view this post
VIEW IN TELEGRAM
Lucianonooijen
Why I stopped using AI code editors ·
Luciano Nooijen
Luciano Nooijen
In the past I used AI code editors for all of my programming, but I stopped using it and recommend others to consider this as well
👍2 2🔥1 1
Forwarded from artalog (artalar)
Reatom@1000
Друзья, вариантов больше нет, вопрос стейт менеджмента закрыт раз и навсегда, я серьезно!
Приглашаю всех к тестированию новой альфа версии реатома❤️
Это стейт менеджер для всех! Просто начать! Надежно и безопасно развивать код до небывалых масштабов. Все быстро, продумано, типобезопасно, LLM френдли и так далее и так далее🤠
02:50 смотрим новое апи
06:40 реалистичный пример
09:50 wrap из tc39/proposal-async-context и проблема SSR
18:28 проблемы императивного кода
23:44 экосистема и .extend
- попробовать пример в репле
- код примера
- документаия (сайт в разработке)
- быстрый старт для LLM
- дока для react пакета
- почему ТЫСЯЧА
Лайк, шер, репост!
Друзья, вариантов больше нет, вопрос стейт менеджмента закрыт раз и навсегда, я серьезно!
Приглашаю всех к тестированию новой альфа версии реатома
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
🔥2 2👍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 автокомплит мне помогает
- тестировали на мейнтейнерах крупных опенсорс репозиториев
- на реальных задачах
- анализировали записи экрана вместо того чтобы полагаться на ощущения разработчиков
- один инструмент у всех - cursor.
В кратце выводы - в общем замедление на 20%, из-за накладных расходов - время генерации, время написания промптов, время на ревью кода написанного агентом.
Интерпретация через призму моего опыта (roo code, claude code, zed):
- применение AI ко всем задачам подряд действительно даст замедление. Ускорение есть только на задачах подходящих для AI. Попытки заставить его делать любые задачи отнимают больше времени чем экономят.
Да, первое время это может быть даже весело и увлекательно, но в сухом остатке - пул задач где AI эффективна весьма ограничен.
Попробую его обозначить:
Написание чистых утилитарных функций
Администрирование Linux:
- анализ системы и определение источника проблема
- разрешение конфликтов пакетов
- доустановка необходимых пакетов
- исправление проблем с драйверами
- создание cron / systemd задач
- генерация сложных cli команд
Работа с небольшими приложениями , библиотеками, прототипами:
Тут самый важный критерий - можете и ли вы точно и коротко сформулировать какие именно изменения надо внести в код. Если нет - то и оценить предложенные изменения агентом будет сложно.
Шансы на успех увеличиваться если:
- язык со строгой типизацией
- стек стандартный для индустрии
- все связи в коде явные
- в коде досрочно комментариев а сущности удачно названы
- много тестов / сначала был написан тест
В итоге я очень активно используют AI "в быту" для решения своих насущных проблем - что то править, сделать утилиту, лениво покодить esp32.
Но в рабочих задачах в большом монорепе, где весь болиерплейт написан а код дедуплицирован я 70% времени анализирую проблему и ищу правильное решение, а сам код я пишу в весьма скромных количествах.
Те несколько сотен строк что мне останется написать дольше просить чем написать самому, особенно когда AI автокомплит мне помогает
arXiv.org
Measuring the Impact of Early-2025 AI on Experienced Open-Source...
Despite widespread adoption, the impact of AI tools on software development in the wild remains understudied. We conduct a randomized controlled trial (RCT) to understand how AI tools at the...
👍5🔥1 1
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/
Нашёл интересное приложение, которое использует различные полезные API для PWA с примерами кода. Причём это приложение само по себе PWA. Здесь есть использование нативного шаринга, записи звуков, захвата экрана, работа с NFC, AR/VR, синтез голоса и так далее. К сожалению, некоторые примеры у меня ломаются на устройстве, но можно завести ишью на GitHub, автор проект поддерживает.
Ну и напоминаю, что у меня тоже есть полезное приложение: https://mefody.github.io/fugu-detector/. На страничке — список различных Fugu API, причём можно посмотреть, работает это API в вашем браузере или нет. Недавно Томас Штайнер помог синхронизировать эту страничку с его обновляемым списком Fugu API.
https://whatpwacando.today/
whatpwacando.today
What PWA Can Do Today
A showcase of what is possible with Progressive Web Apps today.
🔥3👍1 1
Forwarded from Веб-стандарты (Vadim Makeev)
Теория мёртвых фреймворков. Пол Кинлан о мире, где React перестаёт быть просто библиотекой и становится самой платформой — не по решению разработчиков, а по воле языковых моделей, обученных на нём. Новые фреймворки и идеи тонут в данных, не успевая попасть в следующий цикл обучения, а сеть всё больше заполняется кодом, созданным LLM по одним и тем же шаблонам. #react #ai
https://aifoc.us/dead-framework-theory/
https://aifoc.us/dead-framework-theory/
Forwarded from 8BitJS
Что пошло не так в
Последние пару дней во всех фронтенд-пабликах пролетела новость: в
Но мне захотелось разобраться с инженерной точки зрения, что же именно оказалось сломано внутри React и почему это вообще стало возможно. А главное, понять, чему мы можем научиться из этого кейса как разработчики, даже если не используем
Небольшое отступление.
В рамках
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. Клиент же получает поток (
Flight-протокол
Внутренний протокол
Разберемся в коде
Рассмотрим на практике два ключевых участка, которые стали причиной уязвимости.
Внутри серверного декодера есть функция
Упростим:
requireModule и доверие к экспорту
В
Сервер слишком доверяет экспортируемому модулю, поэтому могут сработать запросы вида:
Из-за чего можно было использовать имя экспорта, которого нет в модуле, но существующего в цепочке прототипов.
Для закрытия уязвимости для экспорта добавили проверку
Итого
Как мы смогли увидеть, в уязвимости нет каких-то хитростей
Что важного мы можем вынести для себя:
Никогда не доверяйте структуре данных от пользователя. Для защиты фильтруем все опасные ключи из прототипирования (__proto__,
#8BitJS #React #CVE #security #RSC
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
Лайк, шер!
Библиотека теперь в несколько раз проще и намного богаче на фичи!
Огромное спасибо всему комьюнити за участие в разработке и тестировании, за время альфы количество скачиваний в 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
