Первую жертву новой дыры в Magento взломали на самой свежей сборке от Adobe
Sansec выпустила предупреждение досрочно: магазины ломают прямо сейчас. Атаки идут с 4 сентября, дыру назвали StyleSmuggler, она даёт выполнение кода на сервере без логина и ставит постоянный бэкдор.
Цепочку воспроизвели на чистых Magento Open Source 2.4.7, 2.4.8 и 2.4.9. Первая жертва работала на 2.4.6-p15 с июльским и августовским патчами: выше для этой линейки Adobe ничего не выпускала. На 6 сентября у Adobe нет ни CVE, ни фикса, ни обходного пути.
Совет Sansec на время: отключить GraphQL. Хостер Disrex, чинивший два взломанных магазина, уточняет, что классическим витринам и Hyvä он не нужен, а headless и PWA без него не работают. Плановый релиз Adobe сегодня, 8 сентября, будет ли там фикс, неизвестно.
Я бы на месте владельца headless-витрины уже читал логи: детали в разборе The Hacker News.
#безопасность
Sansec выпустила предупреждение досрочно: магазины ломают прямо сейчас. Атаки идут с 4 сентября, дыру назвали StyleSmuggler, она даёт выполнение кода на сервере без логина и ставит постоянный бэкдор.
Цепочку воспроизвели на чистых Magento Open Source 2.4.7, 2.4.8 и 2.4.9. Первая жертва работала на 2.4.6-p15 с июльским и августовским патчами: выше для этой линейки Adobe ничего не выпускала. На 6 сентября у Adobe нет ни CVE, ни фикса, ни обходного пути.
Совет Sansec на время: отключить GraphQL. Хостер Disrex, чинивший два взломанных магазина, уточняет, что классическим витринам и Hyvä он не нужен, а headless и PWA без него не работают. Плановый релиз Adobe сегодня, 8 сентября, будет ли там фикс, неизвестно.
Я бы на месте владельца headless-витрины уже читал логи: детали в разборе The Hacker News.
#безопасность
👍5❤3🔥3👏3😁2👌2☃1😍1🎄1🆒1
Треть патча Linux 7.3-rc1 заняли заголовки регистров AMD
Когда пишут «огромный релиз-кандидат ядра», полезно посмотреть, из чего складывается этот объём. В 7.3-rc1 около трети всего диффа занял дамп заголовков AMD DCN6: аппаратные определения нового поколения графики, выгруженные обычными #define, плюс код под это поколение.
Линус сам говорит: замаскируйте этот кусок, и merge window выглядит рядовым, хотя по числу коммитов rc1 один из крупнейших. Судить о вложенной работе по строкам диффа бессмысленно, заметную часть «роста» дают сгенерированные константы под новое железо.
Ценно, что в том же письме он признался в собственном факапе: посреди merge window затеял обновление системы, словил из-за этого проблему и сам себя назвал балбесом. Письмо и список изменений на Phoronix: там же поддержка AMD Zen 6, ускорение Btrfs и Steam Controller 2026.
#новости
Когда пишут «огромный релиз-кандидат ядра», полезно посмотреть, из чего складывается этот объём. В 7.3-rc1 около трети всего диффа занял дамп заголовков AMD DCN6: аппаратные определения нового поколения графики, выгруженные обычными #define, плюс код под это поколение.
Линус сам говорит: замаскируйте этот кусок, и merge window выглядит рядовым, хотя по числу коммитов rc1 один из крупнейших. Судить о вложенной работе по строкам диффа бессмысленно, заметную часть «роста» дают сгенерированные константы под новое железо.
Ценно, что в том же письме он признался в собственном факапе: посреди merge window затеял обновление системы, словил из-за этого проблему и сам себя назвал балбесом. Письмо и список изменений на Phoronix: там же поддержка AMD Zen 6, ускорение Btrfs и Steam Controller 2026.
#новости
Phoronix
Linux 7.3-rc1 With AMD Zen 6 Additions, Better Btrfs Performance & 2026 Steam Controller
Like clockwork, the Linux 7.3 merge window has concluded after two weeks and the Linux 7.3-rc1 kernel now available for testing.
👍5😁4❤3🎉2🤷♂1🤷♀1💔1👨💻1😇1🤝1🗿1
Одна функция «забыл пароль» оставляет вору живую сессию
Сброс обычно пишут одним вызовом: отправить письмо, поменять хеш, вернуть 200. В разборе на dev.to предлагают считать письмо сообщением очереди, а не событием интерфейса, и разложить сброс на три перехода с записью в аудит.
Заявка создаёт запись с коротким сроком жизни: хеш токена, время истечения, статус pending. Подтверждение в одной транзакции сверяет хеш и срок и переводит запись в consumed ровно один раз. И только потом меняется пароль и запускается отзыв старых сессий. Без третьего шага укравший куку переживает смену пароля.
Ответ на заявку одинаковый для существующего и несуществующего адреса, иначе форма работает как проверялка почты.
Дальше в статье развилка: своя машина состояний на Go или managed-провайдер. Мне ценнее оказались сами инварианты: приложите их к своей реализации и увидите, какого перехода не хватает.
Сброс обычно пишут одним вызовом: отправить письмо, поменять хеш, вернуть 200. В разборе на dev.to предлагают считать письмо сообщением очереди, а не событием интерфейса, и разложить сброс на три перехода с записью в аудит.
Заявка создаёт запись с коротким сроком жизни: хеш токена, время истечения, статус pending. Подтверждение в одной транзакции сверяет хеш и срок и переводит запись в consumed ровно один раз. И только потом меняется пароль и запускается отзыв старых сессий. Без третьего шага укравший куку переживает смену пароля.
Ответ на заявку одинаковый для существующего и несуществующего адреса, иначе форма работает как проверялка почты.
Дальше в статье развилка: своя машина состояний на Go или managed-провайдер. Мне ценнее оказались сами инварианты: приложите их к своей реализации и увидите, какого перехода не хватает.
👍11❤10🥰2😁2🙏2🍌2🤓2🎉1👌1😇1🫡1
Интерпретатор Python уместился в 1024 байта кода на C
Остин Хенли пишет такой код по выходным и ставит жёсткие условия: никаких макро-трюков и подключённых библиотек, а на выходе должен работать fizzbuzz с def, двоеточиями и отступами. Стартовый лимит был 512 байт.
Не влезло. Первая версия дожила до x = 1 + 2 * 3 и if x > y: z = 3, лимит кончился, а получился калькулятор. Потолок поднялся до 1024, а порядок работы поменялся: сначала заставить работать, потом ужимать.
Внутри ничего похожего на CPython: ни токенизации, ни синтаксического дерева, ни байткода. Всё состояние держат несколько глобальных переменных: массив на 999 символов под исходник без пробелов и int vars[256] под таблицу имён, где переменные и функции лежат вперемешку.
Разбор с полным кодом.
#python
Остин Хенли пишет такой код по выходным и ставит жёсткие условия: никаких макро-трюков и подключённых библиотек, а на выходе должен работать fizzbuzz с def, двоеточиями и отступами. Стартовый лимит был 512 байт.
Не влезло. Первая версия дожила до x = 1 + 2 * 3 и if x > y: z = 3, лимит кончился, а получился калькулятор. Потолок поднялся до 1024, а порядок работы поменялся: сначала заставить работать, потом ужимать.
Внутри ничего похожего на CPython: ни токенизации, ни синтаксического дерева, ни байткода. Всё состояние держат несколько глобальных переменных: массив на 999 символов под исходник без пробелов и int vars[256] под таблицу имён, где переменные и функции лежат вперемешку.
Разбор с полным кодом.
#python
👍36❤5🤔5🙉5👏4💊4🔥3🥰3😁3👀2🤷♀1
Forwarded from Точка входа в программирование
Карта из 14 шагов: что нужно знать новичку, кроме синтаксиса
Частая ловушка старта — взять популярный язык и пойти по случайным урокам. Синтаксис вроде даётся, но остаётся чувство, что вокруг куча всего, о чём никто не предупредил: терминал, редактор, история изменений кода, устройство интернета.
Роадмап на freeCodeCamp закрывает как раз это: 14 тем, с которыми разработчики имеют дело каждый день — от устройства компьютера и данных до Git, который хранит историю правок в коде. Задача не выучить всё сразу, а узнать, что эти вещи вообще существуют.
Пройдитесь по списку и отметьте пункты, о которых не слышали. Возьмите один и потратьте вечер: посмотрите, что это и зачем нужно. Следующий курс ляжет уже на понятное место.
#основы
Частая ловушка старта — взять популярный язык и пойти по случайным урокам. Синтаксис вроде даётся, но остаётся чувство, что вокруг куча всего, о чём никто не предупредил: терминал, редактор, история изменений кода, устройство интернета.
Роадмап на freeCodeCamp закрывает как раз это: 14 тем, с которыми разработчики имеют дело каждый день — от устройства компьютера и данных до Git, который хранит историю правок в коде. Задача не выучить всё сразу, а узнать, что эти вещи вообще существуют.
Пройдитесь по списку и отметьте пункты, о которых не слышали. Возьмите один и потратьте вечер: посмотрите, что это и зачем нужно. Следующий курс ляжет уже на понятное место.
#основы
😁6❤5🔥3😨2☃1🏆1🍓1🎃1💘1🙉1😘1
This media is not supported in your browser
VIEW IN TELEGRAM
400+ нейросетей в едином интерфейсе
Знакомьтесь, Polza.ai российская платформа, где собраны сотни ИИ-моделей, которые можно использовать через единый API. Есть все топовые модели для работы: GPT, Claude, Gemini, Qwen, DeepSeek и многие другие, а для бизнеса доступны провайдеры с размещением данных на серверах в РФ.
Не нужно держать несколько аккаунтов в разных сервисах, всё собрано в одном месте.
Для разработчиков есть единый API, а для обычных пользователей Нейростудия, где можно работать с текстами, кодом, изображениями, видео, аудио и музыкой. Если появляются вопросы, есть поддержка и коммьюнити. Для бизнес-клиентов доступно сопровождение, помощь с документами и персональный менеджер.
В личном кабинет подробно указано сколько запросов отправлено, какие модели использовались, сколько стоил каждый запрос и как меняются общие расходы. Плюс можно сравнить цены у разных провайдеров одной модели и выбрать наиболее выгодный вариант.
Вся оплата в рублях с единого баланса, есть автопополнение, история платежей, а для команд можно добавить сотрудников, распределить роли и контролировать общий бюджет.
Polza.ai это сервис, который закрывает практически все задачи, связанные с ИИ, без десятков отдельных кабинетов и оплат. Переходите и пробуйте, если давно искали удобный агрегатор нейросетей.
Знакомьтесь, Polza.ai российская платформа, где собраны сотни ИИ-моделей, которые можно использовать через единый API. Есть все топовые модели для работы: GPT, Claude, Gemini, Qwen, DeepSeek и многие другие, а для бизнеса доступны провайдеры с размещением данных на серверах в РФ.
Не нужно держать несколько аккаунтов в разных сервисах, всё собрано в одном месте.
Для разработчиков есть единый API, а для обычных пользователей Нейростудия, где можно работать с текстами, кодом, изображениями, видео, аудио и музыкой. Если появляются вопросы, есть поддержка и коммьюнити. Для бизнес-клиентов доступно сопровождение, помощь с документами и персональный менеджер.
В личном кабинет подробно указано сколько запросов отправлено, какие модели использовались, сколько стоил каждый запрос и как меняются общие расходы. Плюс можно сравнить цены у разных провайдеров одной модели и выбрать наиболее выгодный вариант.
Вся оплата в рублях с единого баланса, есть автопополнение, история платежей, а для команд можно добавить сотрудников, распределить роли и контролировать общий бюджет.
Polza.ai это сервис, который закрывает практически все задачи, связанные с ИИ, без десятков отдельных кабинетов и оплат. Переходите и пробуйте, если давно искали удобный агрегатор нейросетей.
🤨9🔥6🌚6👏5🤣4🤔3🥰2😴2🙉2💊2🗿1
Forwarded from Сохранёнки программиста
Почему Cloudflare пересжимает кэш в zstd, а не хранит байты как есть
Диски и память за год подорожали, а объём кэша упирается в закупленное железо. Cloudflare разбирает прототип Cache Transcoding: ответ на входе в кэш кодируется zstd в прокси Pingora, лежит сжатым на диске, в таком же виде едет между дата-центрами через Tiered Cache и раскодируется перед отдачей клиенту.
Что в разборе:
— почему хранение ответа в кодировке, которую прислал сервер-источник, тратит диск впустую;
— почему zstd, а не Brotli: на прошлых тестах Cloudflare он сжимал на 42% быстрее при том же размере;
— где проходит граница по CPU и почему остановились на третьем уровне zstd.
На первых замерах подходящие ответы ужимались до ⅓ размера на диске. Но это прототип со стажировки: рост нагрузки на процессор пока оценочный.
Сохраните, если считаете стоимость хранилища или выбираете, чем сжимать холодные данные.
Диски и память за год подорожали, а объём кэша упирается в закупленное железо. Cloudflare разбирает прототип Cache Transcoding: ответ на входе в кэш кодируется zstd в прокси Pingora, лежит сжатым на диске, в таком же виде едет между дата-центрами через Tiered Cache и раскодируется перед отдачей клиенту.
Что в разборе:
— почему хранение ответа в кодировке, которую прислал сервер-источник, тратит диск впустую;
— почему zstd, а не Brotli: на прошлых тестах Cloudflare он сжимал на 42% быстрее при том же размере;
— где проходит граница по CPU и почему остановились на третьем уровне zstd.
На первых замерах подходящие ответы ужимались до ⅓ размера на диске. Но это прототип со стажировки: рост нагрузки на процессор пока оценочный.
Сохраните, если считаете стоимость хранилища или выбираете, чем сжимать холодные данные.
❤9👌5👍3🤔3💯3😱2🎉2❤🔥1🔥1🙈1🗿1
Помнишь, как выбирал скин для Winamp часами, подписывал маркером диски и смотрел на солнце через дискету? Пройди опрос и мы скажем, каким накопителем ты бы был!
🌚9😐6👍5🎉3🐳3👾3💯2🤯1🙏1🤓1😨1
Пока все спорили про новые фичи нейронок, команда разработчиков VK два года перестраивала процессы изнутри и подготовила единый технологический фундамент для всех своих продуктов.
Раньше на запуск нового сервиса уходило 20-30 дней, а теперь уходит около часа: через внутреннюю платформу разработки команда уже создала более 300 сервисов. Внутреннее облако One-cloud выдаёт вычислительные мощности за пару минут, а единая система A/B-тестирования OneAB каждый месяц прогоняет больше тысячи экспериментов сразу для нескольких продуктов.
В статье рассказываем, как устроен этот фундамент, какие принципы легли в его основу и что изменилось в работе команд. Будет интересно тем, кто хочет понять, как выглядит инженерная культура в компании такого масштаба.
Раньше на запуск нового сервиса уходило 20-30 дней, а теперь уходит около часа: через внутреннюю платформу разработки команда уже создала более 300 сервисов. Внутреннее облако One-cloud выдаёт вычислительные мощности за пару минут, а единая система A/B-тестирования OneAB каждый месяц прогоняет больше тысячи экспериментов сразу для нескольких продуктов.
В статье рассказываем, как устроен этот фундамент, какие принципы легли в его основу и что изменилось в работе команд. Будет интересно тем, кто хочет понять, как выглядит инженерная культура в компании такого масштаба.
👍22😁22👎16❤11🔥10🤪10🌚3🍌2🏆1👻1🆒1
Cloudflare лёг на 27 минут из-за одной регулярки, и ошибки в коде там не было
2 июля 2019 года edge-серверы Cloudflare упёрлись почти в 100% CPU, и сайты по всему миру перестали открываться.
Шаблон был устроен как
Ревью бессильно: регулярка компилировалась, тесты проходила, на обычном вводе работала. Это известный класс дыр, CWE-1333. Помогает выбор движка: re2, regexp в Go и regex в Rust собирают шаблон в детерминированный автомат и работают линейно, но обратные ссылки вроде \1 они не умеют.
В разборе на dev.to: как регулярка превращается в автомат и чего регуляркой не выразить.
#безопасность
2 июля 2019 года edge-серверы Cloudflare упёрлись почти в 100% CPU, и сайты по всему миру перестали открываться.
Шаблон был устроен как
(a+)+b: два вложенных квантификатора над одним классом символов. Дайте движку строку, которая почти совпадает, но в конце ломается, и он перебирает все способы разложить её между двумя плюсами. На 20 символах это полмиллиона попыток, на 40 — около 500 миллиардов, и одно ядро занято.Ревью бессильно: регулярка компилировалась, тесты проходила, на обычном вводе работала. Это известный класс дыр, CWE-1333. Помогает выбор движка: re2, regexp в Go и regex в Rust собирают шаблон в детерминированный автомат и работают линейно, но обратные ссылки вроде \1 они не умеют.
В разборе на dev.to: как регулярка превращается в автомат и чего регуляркой не выразить.
#безопасность
⚡11❤9👍4👏2🌚2👌1🐳1🍌1🙉1🦄1😘1
В Claude Code точное разрешение не перебивает общий запрет
Claude Code проверяет права в жёстком порядке: запреты (
Запрет
В разборе порядка прав есть место хуков в этой цепочке и примеры правил, на которых конфигурация ведёт себя не так, как ожидает разработчик.
@neuro_channel
Claude Code проверяет права в жёстком порядке: запреты (
deny), запрос подтверждения (ask), разрешения (allow). Срабатывает первое совпадение, а точность правила ничего не меняет. Поэтому Bash(aws *) в запретах заблокирует даже отдельно разрешённую команду Bash(aws s3 ls).Запрет
Bash вообще убирает инструмент из доступных агенту. Правило Bash(rm *) оставляет его, но блокирует подходящие команды. Отдельная проверка защищает .git, .claude, .vscode и .mcp.json ещё до обработки разрешений: автоматически разрешить запись туда может только режим bypassPermissions.В разборе порядка прав есть место хуков в этой цепочке и примеры правил, на которых конфигурация ведёт себя не так, как ожидает разработчик.
@neuro_channel
👍7🎉6💊5❤4🤪2🤷♂1🌚1🍌1💔1🎄1🙉1
С днем программиста, коллеги!
Желаем, чтобы код компилировался с первого раза, баги находились до релиза, а таски «на пять минут» действительно занимали пять минут.
И конечно, пусть в жизни будет больше приятных сюрпризов — один из них мы уже подготовили. Скорее переходите по ссылке, трясите коробку и забирайте свой подарок ко Дню программиста: https://tprg.ru/SDml
Желаем, чтобы код компилировался с первого раза, баги находились до релиза, а таски «на пять минут» действительно занимали пять минут.
И конечно, пусть в жизни будет больше приятных сюрпризов — один из них мы уже подготовили. Скорее переходите по ссылке, трясите коробку и забирайте свой подарок ко Дню программиста: https://tprg.ru/SDml
❤49🎉9🔥6💯5🍾2👏1👌1🕊1😍1🍌1🆒1
Плагин для GitHub Accessibility Scanner ловит alt-текст, который проходит обычные проверки
Проверки доступности отвечают на один вопрос: есть ли у картинки атрибут alt. Поэтому
Плагин GitHub для Accessibility Scanner добавляет пять правил, которым не нужна сама картинка: атрибут отсутствует или состоит из пробелов; вместо описания имя файла вроде hero.png; забытая заглушка TODO или tbd; одно общее слово вместо описания: image, logo, chart; один и тот же alt у соседних изображений.
Где пригодится: прогнать по своей вёрстке и увидеть места, где alt формально есть, а незрячему пользователю не даёт ничего.
#инструменты
Проверки доступности отвечают на один вопрос: есть ли у картинки атрибут alt. Поэтому
alt="IMG_2847.png" проходит, и одинаковое alt="3/5 stars" на пяти разных иконках тоже. По отчёту WebAIM Million за 2026 год alt нет у 16,2% изображений на миллионе главных страниц, а ещё у 10,8% он ничего не описывает.Плагин GitHub для Accessibility Scanner добавляет пять правил, которым не нужна сама картинка: атрибут отсутствует или состоит из пробелов; вместо описания имя файла вроде hero.png; забытая заглушка TODO или tbd; одно общее слово вместо описания: image, logo, chart; один и тот же alt у соседних изображений.
Где пригодится: прогнать по своей вёрстке и увидеть места, где alt формально есть, а незрячему пользователю не даёт ничего.
#инструменты
👍6👎6❤3⚡2👏2🆒2🤔1🙏1🐳1🤝1🤷1
Forwarded from Zen of Python
Как найти хеш пароля в 37 ГБ меньше чем за миллисекунду
Офлайн-проверка пароля по списку утечек выглядит как обычный поиск, пока Pwned Passwords не распаковывается в текстовый файл на 37 ГБ. Минимальный вариант на Python работает, но оказывается слишком медленным.
Автор профилирует код, пробует пропускать части файла, применяет двоичный поиск, строит отдельный индекс и переводит его в двоичный формат. Вполне по дзену: сначала измерить, потом усложнять. Результат: поиск занимает меньше миллисекунды.
В разборе оптимизации можно проследить, почему первые ускорения не уложились в цель, как генерируется и читается индекс и какие структуры данных автор рассматривает в финале.
Офлайн-проверка пароля по списку утечек выглядит как обычный поиск, пока Pwned Passwords не распаковывается в текстовый файл на 37 ГБ. Минимальный вариант на Python работает, но оказывается слишком медленным.
Автор профилирует код, пробует пропускать части файла, применяет двоичный поиск, строит отдельный индекс и переводит его в двоичный формат. Вполне по дзену: сначала измерить, потом усложнять. Результат: поиск занимает меньше миллисекунды.
В разборе оптимизации можно проследить, почему первые ускорения не уложились в цель, как генерируется и читается индекс и какие структуры данных автор рассматривает в финале.
death and gravity
Has your password been pwned? Or, how I almost failed to search a 37 GB text file in under 1 millisecond (in Python)
... in which we check if your password has been compromised in many inconvenient ways, in a tale of destruction, obsession, and self-discovery.
👍8❤3😁2🎉2⚡1🔥1🙏1👌1😴1👨💻1💊1
NeoMME сжимает индекс страниц в 255 раз при сохранении более 95% качества поиска
Авторы представили в блоге Hugging Face мультимодальные энкодеры NeoMME на 260 и 800 млн параметров. Один двунаправленный Transformer обрабатывает текст и фрагменты изображений без отдельной зрительной модели и генеративного декодера. Контекст обеих версий: 16 384 токена, максимум два изображения 4K.
NeoMME-Retriever ищет по снимкам страниц PDF без распознавания текста, сохраняя таблицы, диаграммы и вёрстку. Версия на 260 млн параметров кодирует около 51 страницы в секунду на NVIDIA L40S при разрешении 2048×2048 против 26 у ColModernVBERT. Пулинг токенов и квантование сокращают индекс с примерно 1,5 МБ до 6 КБ на страницу, сохраняя более 95% исходного nDCG@10.
Контрольные точки доступны в Hugging Face Transformers под Apache 2.0. Модель можно использовать как первый этап визуального RAG.
@neuro_channel
Авторы представили в блоге Hugging Face мультимодальные энкодеры NeoMME на 260 и 800 млн параметров. Один двунаправленный Transformer обрабатывает текст и фрагменты изображений без отдельной зрительной модели и генеративного декодера. Контекст обеих версий: 16 384 токена, максимум два изображения 4K.
NeoMME-Retriever ищет по снимкам страниц PDF без распознавания текста, сохраняя таблицы, диаграммы и вёрстку. Версия на 260 млн параметров кодирует около 51 страницы в секунду на NVIDIA L40S при разрешении 2048×2048 против 26 у ColModernVBERT. Пулинг токенов и квантование сокращают индекс с примерно 1,5 МБ до 6 КБ на страницу, сохраняя более 95% исходного nDCG@10.
Контрольные точки доступны в Hugging Face Transformers под Apache 2.0. Модель можно использовать как первый этап визуального RAG.
@neuro_channel
👍10❤5🎉3👻3🔥2👏2💯2👀2👎1👌1🎃1
Forwarded from Инструменты программиста
Metalterm: терминал для macOS на Rust и Metal весом 10 МБ
Metalterm — нативный эмулятор терминала для macOS: состояние сессии и разбор вывода живут в Rust, а картинку рисует собственный рендерер поверх Metal, без Electron и веб-движка. Приложение занимает около 10 МБ; в замерах автора Ghostty 1.3.1 весит 40 МиБ, а Rio 0.5.24 добирается до 41,2 МиБ.
На кадр уходит 0,22 мс работы видеокарты. На экране со 120 Гц кадр длится 8,33 мс, то есть терминал забирает 2,6% этого времени. Остаток автор тратит на плавную прокрутку и фоновые шейдеры.
Где пригодится: если вы на macOS и держите терминал открытым весь день, а вес и отзывчивость важнее кроссплатформенности. Сборка лежит на metalterm.dev.
Замеры сняты на одной машине и одной конфигурации, так что за методикой и полной таблицей идите в пост автора на dev.to и перепроверяйте у себя.
#инструменты
Metalterm — нативный эмулятор терминала для macOS: состояние сессии и разбор вывода живут в Rust, а картинку рисует собственный рендерер поверх Metal, без Electron и веб-движка. Приложение занимает около 10 МБ; в замерах автора Ghostty 1.3.1 весит 40 МиБ, а Rio 0.5.24 добирается до 41,2 МиБ.
На кадр уходит 0,22 мс работы видеокарты. На экране со 120 Гц кадр длится 8,33 мс, то есть терминал забирает 2,6% этого времени. Остаток автор тратит на плавную прокрутку и фоновые шейдеры.
Где пригодится: если вы на macOS и держите терминал открытым весь день, а вес и отзывчивость важнее кроссплатформенности. Сборка лежит на metalterm.dev.
Замеры сняты на одной машине и одной конфигурации, так что за методикой и полной таблицей идите в пост автора на dev.to и перепроверяйте у себя.
#инструменты
❤4🤔3👌3💊2⚡1👍1😐1👨💻1🤗1💅1🦄1
Одно новое значение статуса заказа переписало всю таблицу, а расплачивались за это годами
Правка в спецификации на одно слово: добавить статус partially_refunded рядом с refunded, а не в конец, потому что список читают по порядку. В MySQL члены enum хранятся по позиции, и вставка в середину перенумеровывает соседей: вместо правки метаданных база копирует таблицу целиком, с блокировкой и запасом диска в размер самой таблицы.
Дороже обходится вывод, который делают наутро: выкинуть enum и хранить tinyint с картой кодов в приложении. В базе лежит 3, и что это partially_refunded, знает только код: в консоли, в аналитике и в дампе значение читать нечем.
Антон Бриллиантов разбирает, чем на это отвечает Postgres и где ограничения уже у постгресовых enum.
#postgresql #sql
Правка в спецификации на одно слово: добавить статус partially_refunded рядом с refunded, а не в конец, потому что список читают по порядку. В MySQL члены enum хранятся по позиции, и вставка в середину перенумеровывает соседей: вместо правки метаданных база копирует таблицу целиком, с блокировкой и запасом диска в размер самой таблицы.
Дороже обходится вывод, который делают наутро: выкинуть enum и хранить tinyint с картой кодов в приложении. В базе лежит 3, и что это partially_refunded, знает только код: в консоли, в аналитике и в дампе значение читать нечем.
Антон Бриллиантов разбирает, чем на это отвечает Postgres и где ограничения уже у постгресовых enum.
#postgresql #sql
❤3😁2🔥1🕊1
Как сегодня строят рекомендательные системы — и что будет с ними завтра?
30 сентября собираем RecSys-сообщество — разработчиков, ML/DS-специалистов и всех, кто делает персонализацию и рекомендации в реальных продуктах.
В программе — доклады от экспертов Сбера. Поговорим о свежих подходах и нестандартных решениях на реальных кейсах.
А после докладов переключаемся на неформальный режим: знакомимся, спорим про RecSys, обсуждаем идеи, находим единомышленников и просто хорошо проводим вечер среди своих.
📍г. Нижний Новгород, пространство «Гараж»
Количество мест ограничено — успей забрать своё по ссылке!
30 сентября собираем RecSys-сообщество — разработчиков, ML/DS-специалистов и всех, кто делает персонализацию и рекомендации в реальных продуктах.
В программе — доклады от экспертов Сбера. Поговорим о свежих подходах и нестандартных решениях на реальных кейсах.
А после докладов переключаемся на неформальный режим: знакомимся, спорим про RecSys, обсуждаем идеи, находим единомышленников и просто хорошо проводим вечер среди своих.
📍г. Нижний Новгород, пространство «Гараж»
Количество мест ограничено — успей забрать своё по ссылке!
❤3🔥2💯2
Forwarded from Веб-страница
Bun на 2000 параллельных сборках стал есть 609 МБ вместо 6,7 ГБ
Если вы упирались в память, когда Bun собирает много всего разом, в версии 1.4.0 потолок сдвинулся: на том же бенчмарке расход упал с 6,7 ГБ до 609 МБ. Заодно порт закрыл 128 старых багов и примерно на 20% ужал бинарник на Linux и Windows.
Ядро рантайма переписали с Zig на Rust, чтобы обращения к освобождённой памяти ловил компилятор. Переписывала не команда: 64 агента в параллельных git-worktree за 11 дней перевели 535 496 строк Zig и разгребли 16 000 ошибок компиляции. API обошёлся примерно в $165 000, а Turborepo с Go на Rust переводили 3–5 инженеров 14 месяцев.
Цифры порта собраны на dev.to.
#javascript #ии
Если вы упирались в память, когда Bun собирает много всего разом, в версии 1.4.0 потолок сдвинулся: на том же бенчмарке расход упал с 6,7 ГБ до 609 МБ. Заодно порт закрыл 128 старых багов и примерно на 20% ужал бинарник на Linux и Windows.
Ядро рантайма переписали с Zig на Rust, чтобы обращения к освобождённой памяти ловил компилятор. Переписывала не команда: 64 агента в параллельных git-worktree за 11 дней перевели 535 496 строк Zig и разгребли 16 000 ошибок компиляции. API обошёлся примерно в $165 000, а Turborepo с Go на Rust переводили 3–5 инженеров 14 месяцев.
Цифры порта собраны на dev.to.
#javascript #ии
👍9❤1😁1