Для подписчиковТы наверняка уже задался вопросом: а что это? Это несложное устройство, которое перехватывает управление курсором мыши и периодически его перемещает. Зачем? Да просто по фану или чтобы потрепать нервы пользователю во время подготовки, скажем, годового отчета. Заодно ты узнаешь, что такое BAD-USB, поскольку наша поделка также попадает под это определение.
Разработчики Apple выпустили обновления для iOS, iPadOS и macOS, устранив уязвимость нулевого дня CVE-2026-86950. Причем этот баг в CoreGraphics уже мог использоваться в «чрезвычайно сложных» целевых атаках, направленных на отдельных пользователей iPhone.
ч1: Обзор. Полгода после утечки через tun0. Кто из VPN-клиентов закрыл дыру, а кто закрыл issue.ч2: Разбор. Как мы закрывали утечку через tun0 в AmneziaVPN.TL;DRПриложение, которое вы исключили из VPN на Android, может привязать сокет к tun0, пройти через ваш туннель и узнать адрес сервера. Мы закрыли это внутри клиента: когда пакет выходит из туннельного интерфейса, фильтр спрашивает у Android, чьё это соединение, и чужие не пропускает.Главная ловушка в том, как Android отвечает на этот вопрос…
Чтобы дать LLM доступ к своему коду, пишут инструменты (tools). Инструмент — это функция и всё, что модели нужно знать, чтобы её вызвать: имя, описание и схема аргументов.Потом те же инструменты приходится писать ещё раз. Первая версия сделана на tool() из AI SDK. В проекте появляется MCP-сервер, и инструменты переписывают под registerTool. Соседняя команда использует Genkit, и те же инструменты пишут в третий раз, через defineTool. Функции остаются прежними, меняется только обёртка.К тому же к…
Помните Million Dollar Homepage? В 2005 году студент продал миллион пикселей по доллару за штуку и заработал миллион. Никакой пользы в этих пикселях не было, но люди платили за участие в мемчике и за место, которое видят другие.Мне захотелось сделать что‑то похожее для разработчиков, только вместо денег — валюта, которую у нас и так все копят: звёзды на GitHub.Так появился Star Throne — репозиторий‑игра. Ставишь звезду на репо, и через минуту‑две GitHub Actions считает, сколько звёзд у тебя сам…
👋 Привет! Меня зовут Александр, я работаю фронтенд-разработчиком в компании «МегаФон». Сегодня хочу поговорить о статическом анализе TypeScript-проектов за пределами привычной связки tsc и ESLint.tsc прежде всего отвечает за корректность типов, а ESLint находит широкий круг ошибок и нарушений принятых в проекте правил. Вместе они закрывают большинство повседневных задач, но не все проблемы удобно выражать через типы и правила линтера. Например, в проекте может потребоваться запретить зависимост…
Давно не виделись хабровчане. Сегодня мы поговорим на избитую и всем уже изрядно надоевшую тему, но слегка под другим углом. Если вы уже работали с микрофронтендами в вебе, сама загрузка отдельной сборки внутри Capacitor вряд ли удивит. WebView исполняет JavaScript, а уже он загружает сборку через Module Federation и монтирует её как компонент.Сложности начинаются, когда этому микрофронту нужен, например, доступ к камере или геолокация. Сразу возникает несколько вопросов:Кто регистрирует плагин…
Всем привет! Меня зовут Даниил Николаев и я frontend-разработчик в компании "Исходный Код"На kickoff снова всплывает один и тот же спор. Один тянет Tailwind. Второй - CSS Modules. Третий тащит привычный CSS-in-JS. Кто-то молча открывает .scss и выходит из разговора. Разбор ниже - в контексте React, для middle и middle+.Способов писать стили слишком много. У каждого есть громкие адепты и не менее громкие хейтеры. Обычно команда выбирает то, что уже умеет, а не то, что дешевле живет в бра…
TL;DR. Собрал одно и то же CRUD-приложение на восьми стейт-менеджерах (effector, zustand, mobx, react-query, rxjs, reatom, xstate, jotai) и увидел: дело не в выборе библиотеки, а в архитектуре. Три правила, которые реально решают:не тяните одну независимую фичу напрямую в другую — связывайте их через компоненты и хуки, а не импортом модели в модель;один стор — одна сущность, без общего “божественного” стора на всё приложение;создавайте и удаляйте модели вместе с компонентом — не превращайте их …