Для подписчиковXSLT-инъекции — редкий, но крайне опасный класс уязвимостей. Найдя их, злоумышленник может использовать особенности обработки XML и XSLT, чтобы читать и записывать файлы на сервере или добиться выполнения кода. В этом разборе покажем, как такая уязвимость позволяет полностью скомпрометировать систему.
Хакеры внедрили инфостилер в популярный сканер уязвимостей Trivy, подменив почти все теги GitHub Actions и опубликовав вредоносный релиз. Малварь похищала секреты из CI/CD-пайплайнов и с машин разработчиков, шифровала данные и отправляла на управляющий сервер.
Всем привет! Сегодня я попробую вас убедить, что уникальным торговым предложением языка Go являются не горутины, скорость, минималистичность или современность, а "тоталитарность". Что?Преимуществами Go называют скорость, производительность, многопоточность, современность и удобность в микросервисах (чтобы это ни значило), и часто эти свойства выделяются как что-то уникальное.Но разве в Java нет горутин? Разве Python какой-то старый? Разве Rust не быстрее? Мои коллеги не правы, потому чт…
Иногда хочется выгрузить список треков из плейлиста Яндекс Музыки — например чтобы:сохранить треклистперенести музыку в другой сервиссделать бэкаппроанализировать плейлистЕщё одна причина — версии треков. Иногда в каталоге Яндекс Музыки встречаются отредактированные версии песен (например, с запиканной ненормативной лексикой или изменёнными строками). Поэтому бывает полезно сохранить исходный список треков из плейлиста, чтобы при необходимости найти оригинальные версии композиций в других серви…
Примерно год назад я написал статью о том, как настроить OTA-обновления в Capacitor-приложении с помощью capacitor-updater. Подход работал, но со временем код стал разрастаться в одном компоненте и превратился в ту самую "кашу", с которой обычно начинают, а потом рефакторят. В этой статье еще раз разберем механизм обновления, и как я переписал систему обновлений с нуля — с нормальной архитектурой, двумя стратегиями обновления и отдельным слоем для работы с GitHub Releases.Зачем это нужн…
Последнюю пару лет мы наблюдали существенный рост сообщества e18e и связанного с этим увеличения количества коммитов, направленных на повышение производительности. Во многом причиной этого стала инициатива по «очистке»: сообщество избавлялось от избыточных, устаревших или неподдерживаемых пакетов.В процессе такой работы одной из самых часто поднимаемых тем становится «раздувание зависимостей»: деревья зависимостей npm со временем становятся больше, и зачастую это вызвано давно уже избыточным ко…
Привет, Хабр!У Node.js исторически была проблема с отменой операций. Запустил HTTP‑запрос — жди, пока не ответит или не упадёт по таймауту. Читаешь огромный файл — читай до конца. Запустил пачку промисов — сиди, смотри, как они доедают ресурсы. Механизма сказать «стоп, хватит» в языке просто не было. Кто‑то мастерил свои костыли на флагах, кто‑то использовал библиотеки вроде p-cancelable, но единого стандарта не существовало.AbortController эту проблему решает. Пришёл он из браузерного API (там…
Agent skills for Obsidian. Teach your agent to use Markdown, Bases, JSON Canvas, and use the CLI.Agent Skills for use with Obsidian. These skills follow the Agent Skills specification so they can be used by any skills-compatible agent, including Claude Code and Codex CLI. Installation Marketplace /plugin marketplace add kepano/obsidian-skills /plugin install obsidian@obsidian-skills npx skills npx skills add git@github.com:kepano/obsidian-skills.git Manually Claude Code Add the contents of th…
Всем привет! Что будет, если задать двум LLM моделям одну тему и позволить вести диалог без участия человека? Я написал небольшую программу на Go, которая делает это автоматически. Рассказываю как она устроена и почему она может пригодиться каждому, кто работает с Ollama. Один интерфейс для двух моделейПрограмма представляет собой графическое приложение на Fyne. В верхней левой части окна настройка диалога. Выбираем две модели из списка, который программа получает командой ollama list. Можно за…