Команда ArtCraft выпустила 7 открытых приложений для работы с картинками, видео, векторной графикой, фотографиями, PDF, анимацией и вёрсткой для замены сервисов Adobe.
Весь набор написан с нуля на Rust для Windows, macOS и Linux. Интерфейс приложений и хоткеи сделаны максимально привычными для пользователей Adobe. При этом приложения не обязательно устанавливать — можно использовать в браузере.
Приложения от ArtCraft менее требовательны к конфигурации ПК и работают даже быстрее оригинальных приложений:
Плиточки - небольшая панель быстрого запуска для Windows: сетка плиток с ярлыками, папками и вкладками, встроенный гибкий поиск и мини-проводник с консолью и избранными командами. Один портативный EXE, без установки, из зависимостей только .NET Framework 4.8. Очевидный рефернс с пуска win10 - попытался взять лучшее, добавить функционала, убрать недостатки, добавить свои недостатки, максимально шустро Tilettes repo
Как появилось Поймал себя на мысли, в очередной раз, что неудобно переключатся между проектами, а под рукой свободные халявные токены. Первые наброски за 10 минут, несколько дней доработки и сейчас здесь.
Функционал
Панель — плитки 1×1…6×6, неограниченные вкладки (несколько рядов, полный кастом), папки внутри вкладки или всплывающим окном, drag-and-drop из Проводника, настраиваемая сетка (колонки/строки/прозрачность), масштаб иконок, цветная аура иконок. Дополнительные строки позволяющие слайдить вниз основной панели, если не хватает места
Легковестность и открытый код Один портативный exe на C# ~0.5 МБ, все данные в папке, ~30 МБ памяти. Иконка извлекается из системы ровно один раз за жизнь плитки. Быстрый, индексированный поиск. Единственный сетевой запрос к github проверка обновлений, опционально. Код собирается через github actions.
Поиск По именам, именам файлов, метаданным, полным путям и пользовательским описаниям. Делает полное зеркало обычного Пуска(для поиска). Fuzzy-поиск с настраиваемой точностью и корректный поиск на неправильной раскладке (руддщ → hello). Результаты ранжируются по качеству совпадения, совпавшие символы подсвечиваются, повторные запросы получают свой раздел для поиска
Мини-проводник Для меня частый сценарий быстро зайти куда то написать команду/несколько команд поэтому на отдельное сочетание ctrl+пкм открывается мини проводник с встроенной консолью и набором избранных команд. Сочетания ctrl+пкм можно заменить на другой файловый менеджер или консоль.
Интеграция с системой
Значок в трее, автозапуск с Windows, глобальная горячая клавиша, опциональный захват клавиши Win, системные контекстные меню Проводника.
В открытом доступе появился открытый проект Visual Basic Browser Studio — классическая среда разработки (IDE) Visual Basic 6 (VB6), работающая непосредственно в браузере.
Примечательно, у разработчика этого проекта Веслава Шолтеса есть также решение SharpForge — браузерная IDE для C#, вдохновленная современной Visual Studio.
Представлен открытый проект SCSKiller, который помогает заранее компилировать шейдеры в кэш игрового драйвера на движке Unreal Engine 5, чтобы игры не подвисали, готовя очередную сцену. Проект сам находит игры из Steam, Epic, Xbox и других лаунчеров, а после обновления драйвера умеет повторять подготовку. Работает на Windows с Nvidia и AMD: поддерживает DirectX 12, а на Nvidia ещё и DirectX 11. По тестам автора на RTX 5090, число задержек в Star Wars Jedi: Survivor сократилось с 9038 до 11, в Hogwarts Legacy — с 1014 до 87, а в Final Fantasy VII Rebirth — с 19 до нуля.
Я пишу небольшую утилиту datadiff на Rust. Она разбирает два файла JSON, YAML, CSV, TOML или XML и сравнивает получившиеся деревья, поэтому переставленные ключи и переформатирование ее не волнуют. Изменения она печатает путями вроде spec.replicas: 3 → 5. Долго это была отдельная команда, про которую надо было вспомнить, так что я решил встроить ее прямо в git diff. Первой версией была строчка в README: шелл-функция, которая из семи аргументов, передаваемых git внешнему драйверу, брала второй и пятый (там лежат старая и новая версии файла). Работало, пока не попался первый кривой файл.
git diff до и после datadiff
Оказалось, git считает любой ненулевой код выхода падением драйвера. Пишет fatal: external diff died и дальше ничего не показывает, все файлы после сломавшегося просто пропадают из вывода. А datadiff как нормальный CLI возвращал 1, если нашел различия, и 2 на невалидном файле. Хуже всего, что невалидный конфиг это обычное состояние: открыл YAML, начал править, запустил git diff глянуть что наделал, и получил fatal. Теперь в режиме драйвера datadiff всегда выходит с нулем, а про файл, который не смог разобрать, печатает короткую заметку и подсказку про git diff --no-ext-diff.
Внешний драйвер git вызывает только для самого git diff. git log -p, git show и git blame его игнорируют, туда можно попасть только через textconv, это фильтр, который превращает файл в текст перед обычным построчным сравнением. Я сделал для него режим normalize, он печатает файл в каноническом виде с отсортированными ключами. Если файл не разбирается, normalize отдает его как есть, и тут я накосячил: читал его через read_to_string(...).unwrap_or_default(). Файл не в UTF-8 превращался в пустую строку с обеих сторон, git видел две одинаковые пустоты и молча выкидывал файл из git log -p. Сейчас там чтение байтов и тест на это.
Самые обидные грабли нашлись не в git, а в CSV. В статье на Хабре про самодельный формат конфигов автор объяснял, зачем ему маркер «бери как есть»: чтобы 00544 не превратилось в 544. Я пошел проверять datadiff, и он делал ровно это. CSV типов не хранит, поэтому каждая ячейка, которая разбиралась как число, становилась числом, и замена 00544 на 544 считалась отсутствием изменений. Пока чинил, вылезло еще два случая. Слова, которые f64 честно принимает за число, вроде Nan и inf: человек по имени Nan превращался в NaN, а NaN не равен сам себе, так что неизменившаяся ячейка показывалась как измененная. И целые длиннее i64: они уходили во float и теряли цифры, так что два 20-значных номера счета, отличавшиеся последней цифрой, сравнивались как равные. Правило в итоге такое: ячейка становится числом, только если при этом ничего не теряется. Ведущий ноль перед цифрой, слова вроде nan и inf и слишком длинные целые оставляют ее строкой, а 100 и 100.0 по-прежнему равны. Это вошло в релиз 0.4.1.
Еще запомнился CI. После одного коммита на Windows падал actions/checkout, даже до сборки не доходило. Виноват был файл Icon\r, в нем macOS хранит кастомную иконку папки, в конце имени у него возврат каретки, и он случайно уехал в репозиторий. Windows создать такое имя не может вообще. Тесты при этом падали через раз на всех трех ОС, потому что дочерний процесс успевал завершиться раньше, чем тест дописывал ему stdin, и unwrap ловил EPIPE. Сам проект тут: https://github.com/dimanovikov/datadiff настройка для git в README занимает три строки.
redb 4.2.0: единый контракт трассировки, коннектор AS4 и семь шаблонов проектов
Вышла 4.2.0 сразу по четырём продуктам экосистемы: хранилище redb, интеграционный фреймворк redb.Route, рантайм redb.Tsak и OpenID-сервер redb.Identity.
Коротко о главном.
Безопасность. В Identity выход из сессии теперь действует на сессию самого браузера: userId в запросе больше не выбирает, кого разлогинить. Полный выход отзывает не только сессии, но и гранты. Отозванный ключ подписи больше не предлагается никому по построению, а не по порядку регистрации. В Tsak модуль с http-входом, у которого никто не проверял учётные данные, теперь просто не стартует. В Route ssl=true у RabbitMQ honoured на всех путях подключения, включая именованные фабрики, где TLS не включался вовсе.
Ломающее. Трассировка стала единым контрактом в ядре, и ему следуют все транспорты: спаны приёма стали корневыми, сообщение без контекста открывает свой корень, имена спанов несут назначение. Форма трасс меняется на полутора десятках коннекторов, от Kafka и RabbitMQ до gRPC, SOAP, AS2 и AS4. Очереди seda: и vm: ограничены по умолчанию тысячей, как в Camel. Типизированное чтение заголовка или тела падает на непарсящемся значении вместо тихого значения по умолчанию.
Новое. Коннектор AS4 (eDelivery AS4 1.16 поверх ebMS 3.0) рядом с AS2.
Коллекция из семи шаблонов проектов redb.Templates. Входная аутентификация Basic и Bearer на http:-потребителях и Rest(...).
Открытый проект Unofficial search plugins позволяет искать торренты прямо в qBittorrent. Это каталог поисковых плагинов, которые подключают торрент-сайты к самому клиенту. Можно выбрать нужные источники и искать по нескольким местам сразу с помощью одного запроса. В списке проекта есть Rutor, Nyaa, The Pirate Bay и даже Academic Torrents с научными данными.
Представлен открытый проект proxy-scraper для выявления в сети открытых сервисов прокси, которые работают штатно и более менее безопасно.
«Большинство списков бесплатных прокси на 95% состоят из нерабочих адресов, а значительная часть оставшихся — это либо „ловушки“ (honeypots), либо прокси, внедряющие скрипты в загружаемые вами страницы. Инструмент proxy‑scraper собирает публичные прокси (HTTP, SOCKS4 и SOCKS5) из более чем 700 источников и сохраняет только те, что успешно проходят все проверки. При каждом запуске программа анализирует эффективность источников, а полученный результат может преобразовать в единый ротируемый прокси‑адрес. В цифрах: за одни сутки было проверено 3,6 миллиона бесплатных прокси — работоспособными оказались 1,1%, причём более половины из тех, что ответили на первый запрос, не прошли проверку повторным запросом», — пояснил создатель проекта.
Представлен открытый проект Terminal Velocity (tvty) — двадцать агентов ИИ, работающих в циклах (loop). В центре внимания — задачи (тикеты). Одно окно. Никаких поисков нужной вкладки.
«tvty — для тех, кто хочет вести разработку с Claude на максимальной скорости. Это нативный терминал для одновременного запуска множества агентов Claude Code: терминалы сгруппированы по проектам, а тикеты каждого проекта находятся прямо рядом с ними — агент задаёт вопрос, вы принимаете решение, работа продолжается. Почему это удобно Одно окно вместо двадцати вкладок. Видны все проекты, все агенты и то, что требует вашего внимания: принятие решения, непрочитанный ответ или тикет, блокирующий остальные задачи. Терминал каждого агента работает в реальном времени. Прямая привязка к сессии, высокая скорость, никаких лишних прослоек вроде tmux. Переключение одним нажатием клавиши или выбор из миниатюр, отображающих текущее состояние всех окон. Тикеты — рядом с терминалом. Планы, решения, эскалации, изображения: принимайте, отклоняйте или отвечайте, не отрываясь от клавиатуры», — пояснил автор решения.
Как проверить, что после обновления АТС люди слышат друг друга — без двух телефонов и тестировщика
Сделал расширение для k6, где абоненты - объекты в скрипте: звонят друг другу через АТС и проверяют АОН, переводы и слышимость. Один скрипт — и регресс в CI, и нагрузка на тысячи звонков. Под картинкой - настоящий вывод: лесенка SIP сигнализации одного звонка из trace() и метрики расширения.
была статья недавно и меня спросили, отвечаю это разные вещи, которые решают разные задачи. Прямого «один в один» аналога нет.
1. Роль Redis
redis
2. Философия
MassTransit — это message bus. Redis здесь — просто быстрый key-value store для хранения состояния саг. Основные транспорты — RabbitMQ, Azure Service Bus, SQS, Kafka, SQL и т.д. Redis не является транспортом сообщений.
redb.Route — это EIP-роутер в стиле Apache Camel. Redis становится полноценным endpoint’ом: From(Redis.XRead(...)) → .To(Redis.Set(...)) → .To(Redis.Publish(...)) Всё в одном декларативном маршруте с единым подключением, телеметрией и shutdown.
3. Ограничения MassTransit Redis
Поддерживает только корреляцию по CorrelationId (нет query-based correlation).
Нужен интерфейс ISagaVersion (поле Version для optimistic concurrency).
Optimistic (по умолчанию) и Pessimistic concurrency.
Поддерживает Valkey (форк Redis).
Нет встроенной поддержки Redis Streams, Pub/Sub или очередей на списках как транспорта.
Они почти не пересекаются по назначению. Если вам нужны саги в MassTransit . Если вам нужно активно работать с разными структурами Redis внутри маршрутов redb.Route.Redis намного богаче и удобнее.
Представлен открытый проект NextSteamGame, который помогает выдавать рекомендации по играм в Steam. В отличие от алгоритмов Valve, в этом проекте считываются не только пересечения предпочтений других игроков, а и метаданные каждого тайтла. Специальная нейросеть разбирает проект на набор механик и жанров, после чего ищет совпадения в других играх.
Бывший дизайнер Google и Apple Робби Тилтон представил бесплатный аналог Photoshop — фоторедактор Compositor. Решение имеет высокий уровень оптимизации, установщик приложения для Mac весит всего 8 МБ, и проект не нагружает систему.
Энтузиаст портировал популярный эмулятор ретро-компьютеров PCem в браузер. Неофициальный проект PCem-WebAssembly позволяет запускать 97 моделей ПК — от первых машин эпохи 8088 XT до систем на базе Socket 7. Эмуляция работает полностью на стороне клиента, обеспечивая плавный игровой процесс на среднебюджетных компьютерах.
Главным техническим достижением стал кастомный рекомпилятор WebAssembly для графики 3dfx Voodoo, благодаря которому трёхмерные игры вроде Quake выдают полную скорость прямо в окне браузера. Кроме того, порт получил умную систему работы с накопителями, лениво считывающую локальные образы дисков без их полной загрузки на сервер.
Проект PCem — WebAssembly Edition поддерживает нативную работу с геймпадами, вывод звука через WebMIDI и даже встроенный мультиплеер через WebSocket-ретранслятор, позволяющий играть по виртуальной сети с другими пользователями или между вкладками.
В команде Cloudflare представили скилл Security Audit Skill, который учить нейросети искать уязвимости. Проект запускает целый рой агентов, которые ищут разные уязвимости в проекте, а затем другие ИИ-агенты перепроверяют все находки и отбрасывают ошибочные срабатывания. В итоге получается полноценный ИБ-отчёт с обнаруженными проблемами.
redb 4.0.1: транзакции, изоляция кластеров и SQL-коннектор по канону Camel
Через неделю после мажора 4.0 вышла 4.0.1. Первые внедрения четвёртой версии принесли много обратной связи, и этот выпуск её отрабатывает: больших новых функций немного, зато заметно выросла надёжность под нагрузкой и в транзакциях. Все четыре продукта снова на одном номере, 77 пакетов.
redb.Core
Всё, что redb делает внутри общей транзакции .NET (TransactionScope), теперь фиксируется или откатывается вместе с ней, на MSSQL, PostgreSQL и SQLite.
Ленивые загрузки идут по соединению того, кто читает, без скрытых соединений.
Кэш Props держит нагрузку, а объекты по списку идентификаторов загружаются одним запросом.
Нативное расширение SQLite сверяет свою версию при старте и называет устаревший файл, если он попался.
redb.Route
Единица работы стала предсказуемой: сначала фиксируется база, потом брокеры, а повтор оборачивает транзакцию целиком. Необработанный сбой везде остаётся сбоем, обработка ошибок ведёт себя как в Apache Camel.
SQL-коннектор прошёл полное ревью: пакетная запись с откатом при первой ошибке, точки сохранения для частичной записи, строгое отображение результатов в классы, параметры в синтаксисе Camel.
Сбойный файл больше не тормозит всю пачку у файловых консюмеров, появился отложенный опрос.
LLM-агенты учитывают побочные эффекты инструментов, сохраняют рассуждения модели, считают бюджет и стоимость.
На обмене появилась личность вызывающего, общая для всех входящих транспортов.
redb.Tsak
Несколько кластеров на одной базе полностью изолированы: координация, состояние, очередь недоставленных, аудит и планировщик у каждого свои.
Модуль, который не смог стартовать, откатывается на работавшую версию, а перезагрузка одного пакета не задевает соседние модули контекста.
Дашборд снова обновляется сам и отправляет действия на узел нужного кластера.
redb.Identity
API управления больше не считает вызов доверенным только потому, что он пришёл изнутри процесса.
Одно DPoP-доказательство нельзя использовать дважды даже при одновременных запросах.
Транзакции маршрутов идут в общей транзакции, а недоступность базы больше не вызывает бесконечных повторов.
Что учесть при обновлении
Tsak: если на одной базе живут несколько кластеров, перед обновлением остановите все узлы этой базы.
Route: параметры в SQL-запросах переходят на синтаксис Camel, а единица работы и обработка ошибок стали строже. Это стоит проверить на своих маршрутах.
Pro по-прежнему бесплатен и не требует ключа. Полные списки изменений на redb.ru/releases, исходники на GitHub.
Если было полезно, ⭐ на GitHub поможет другим это найти.
Модульный фреймворк для гибкого тестирования на Go — Testo
Если у вас десятки тысяч тестов, сложные сценарии, а тестам не хватает наглядных отчетов – наше опенсорс-решение может вам помочь
Testo — это слой над testing.T внутри экосистемы Go. Мы наполнили его плагинами, чтобы гибко адаптироваться под потребности и быстро создавать тесты под любую задачу.