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.
👍10❤4👌3😁2🎉2🙏2⚡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
👍11❤6👏4🎉4💯4🔥3👻3👀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 и перепроверяйте у себя.
#инструменты
❤6🤔6👍3👌3💊2⚡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
❤12🔥5👍3👏3😁2🕊1💯1🤝1
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 #ии
👍16❤7💯5💊5🤷♂3🔥3👏3😁3✍1🎄1👾1
WeatherNext 3 выпускает прогнозы каждый час
Google выпустила третью версию погодной ИИ-модели WeatherNext. Теперь она принимает спутниковые данные вместе с переанализом, который объединяет метеонаблюдения в согласованный глобальный снимок атмосферы.
Такие снимки обычно формируют раз в шесть часов. Сырые данные со спутников сокращают задержку между текущей погодой и новым расчётом, поэтому WeatherNext 3 может строить прогноз ежечасно. Пространственное разрешение тоже выросло, хотя сама модель стала крупнее.
Google также обучила отдельную модель на спутниковых оценках осадков, поэтому система выдаёт несколько вариантов прогноза осадков. В разборе Ars Technica: какие изменения процесса ограничили рост вычислительной нагрузки и зачем модели несколько прогнозов осадков.
Google выпустила третью версию погодной ИИ-модели WeatherNext. Теперь она принимает спутниковые данные вместе с переанализом, который объединяет метеонаблюдения в согласованный глобальный снимок атмосферы.
Такие снимки обычно формируют раз в шесть часов. Сырые данные со спутников сокращают задержку между текущей погодой и новым расчётом, поэтому WeatherNext 3 может строить прогноз ежечасно. Пространственное разрешение тоже выросло, хотя сама модель стала крупнее.
Google также обучила отдельную модель на спутниковых оценках осадков, поэтому система выдаёт несколько вариантов прогноза осадков. В разборе Ars Technica: какие изменения процесса ограничили рост вычислительной нагрузки и зачем модели несколько прогнозов осадков.
🎉14❤9👍7❤🔥3🔥3😁2😱1💯1👀1🙈1🎄1
Forwarded from Инструменты программиста
hexyl: цветной просмотр байтов в терминале
hexyl показывает содержимое файла в шестнадцатеричном виде и окрашивает разные категории байтов. Отдельные цвета получают нулевые байты, печатные ASCII-символы, пробелы и переносы строк, прочие ASCII-символы и байты вне ASCII. Так категории можно различать прямо в выводе терминала.
В Ubuntu и Debian утилита ставится командой
Цвета категорий и смещения настраиваются переменными окружения: можно выбрать стандартные цвета терминала, их яркие варианты или значение RGB. Команды для других систем и список настроек собраны в репозитории hexyl на GitHub.
hexyl показывает содержимое файла в шестнадцатеричном виде и окрашивает разные категории байтов. Отдельные цвета получают нулевые байты, печатные ASCII-символы, пробелы и переносы строк, прочие ASCII-символы и байты вне ASCII. Так категории можно различать прямо в выводе терминала.
В Ubuntu и Debian утилита ставится командой
sudo apt install hexyl, в Fedora через sudo dnf install hexyl, а в macOS через brew install hexyl. Сборка из исходников доступна через Cargo при Rust 1.56 или новее.Цвета категорий и смещения настраиваются переменными окружения: можно выбрать стандартные цвета терминала, их яркие варианты или значение RGB. Команды для других систем и список настроек собраны в репозитории hexyl на GitHub.
👍12❤5🤣5🔥4👏2🎉2🌭2❤🔥1😁1🦄1🤷1
This media is not supported in your browser
VIEW IN TELEGRAM
В программе пять треков: AI, Data, Security и Hybrid Infrastructure & DevOps, и углублённый трек DeepTech, который пройдёт только онлайн.
Что будет:
Зарегистрироваться и посмотреть полную программу можно на сайте. Участие бесплатное!
Это #партнёрский пост
Please open Telegram to view this post
VIEW IN TELEGRAM
💊17👏9❤3👌2💯2👨💻2🤷♂1🙏1🎃1😇1🙊1
GitHub принимает 2,9 млрд коммитов в месяц и уже не справляется
Ваши ревью и сборки стоят в очереди не только из-за вашей команды. За четыре месяца месячный объём коммитов на GitHub удвоился: 1,4 млрд в апреле, 2,9 млрд в августе. 17 августа платформа лежала 7 часов 47 минут: компонент инфраструктуры в дата-центре Central US не выдержал трафик. В ответ GitHub добирает больше 3 млн процессорных ядер и 120 петабайт хранилища и ускоряет переезд в Azure, куда уже ушло 58% нагрузки.
Мощности на приём кода выросли, мощности на проверку остались прежними. Каждый из 2,9 млрд коммитов несёт обещание, что изменение работает, и почти ничто между генерацией и попаданием кода в основную ветку не сверяет его с запущенной системой.
Узкое место переезжает из редактора в прогон тестов и статический анализ: закладывайте под них машинное время заранее. Цифры собрал The New Stack.
#аналитика
Ваши ревью и сборки стоят в очереди не только из-за вашей команды. За четыре месяца месячный объём коммитов на GitHub удвоился: 1,4 млрд в апреле, 2,9 млрд в августе. 17 августа платформа лежала 7 часов 47 минут: компонент инфраструктуры в дата-центре Central US не выдержал трафик. В ответ GitHub добирает больше 3 млн процессорных ядер и 120 петабайт хранилища и ускоряет переезд в Azure, куда уже ушло 58% нагрузки.
Мощности на приём кода выросли, мощности на проверку остались прежними. Каждый из 2,9 млрд коммитов несёт обещание, что изменение работает, и почти ничто между генерацией и попаданием кода в основную ветку не сверяет его с запущенной системой.
Узкое место переезжает из редактора в прогон тестов и статический анализ: закладывайте под них машинное время заранее. Цифры собрал The New Stack.
#аналитика
🔥12🙉9💔8😁3🤔3⚡2💯2🤝2✍1👀1😘1
Delta делает вывод Git, diff и grep удобнее для чтения
Delta — настраиваемая программа для просмотра вывода в терминале. Она подсвечивает синтаксис и изменения внутри строк, показывает версии рядом, добавляет номера строк и позволяет переходить между файлами клавишами
Для Git установите пакет
В репозитории Delta есть начальная конфигурация и полное руководство. Попробуйте инструмент, если в больших diff сложно быстро найти нужный файл и изменённую строку.
Delta — настраиваемая программа для просмотра вывода в терминале. Она подсвечивает синтаксис и изменения внутри строк, показывает версии рядом, добавляет номера строк и позволяет переходить между файлами клавишами
n и N. Работает с Git, diff, grep и ripgrep.Для Git установите пакет
git-delta и настройте delta как программу просмотра. Delta определяет светлый или тёмный фон; темы подсветки берёт из набора bat. Можно улучшить отображение конфликтов слияния и превратить хеши коммитов в ссылки на GitHub, GitLab, SourceHut или Codeberg.В репозитории Delta есть начальная конфигурация и полное руководство. Попробуйте инструмент, если в больших diff сложно быстро найти нужный файл и изменённую строку.
❤13👍9🤔5🎉4😁3😎3🦄2😱1🫡1🆒1🤷1
Как инженер радиосвязи перенёс опыт в тестирование
Инженер Алексей десять лет работал с радиосетями: ездил по городу с измерительным комплексом, строил карты покрытия, проектировал связь на стадионах и после монтажа возвращался с рюкзаком телефонов, чтобы сравнить расчёты с реальной сетью.
Когда он стал тестировщиком телеком-оборудования, рабочий цикл сохранился: собрать данные, проверить качество, найти причину сбоя и повторить тест после исправления. Добавились Python, тест-планы и спецификации связи. Сейчас Алексей тестирует базовую станцию YADRO, которую компания разрабатывала с нуля.
В статье на Tproger Алексей рассказывает про этот переход и советует искать следующую роль на пересечении прежней специализации с разработкой. Если думаете о переходе в IT, разложите прежнюю работу на конкретные навыки и найдите задачи, где они уже нужны.
Инженер Алексей десять лет работал с радиосетями: ездил по городу с измерительным комплексом, строил карты покрытия, проектировал связь на стадионах и после монтажа возвращался с рюкзаком телефонов, чтобы сравнить расчёты с реальной сетью.
Когда он стал тестировщиком телеком-оборудования, рабочий цикл сохранился: собрать данные, проверить качество, найти причину сбоя и повторить тест после исправления. Добавились Python, тест-планы и спецификации связи. Сейчас Алексей тестирует базовую станцию YADRO, которую компания разрабатывала с нуля.
В статье на Tproger Алексей рассказывает про этот переход и советует искать следующую роль на пересечении прежней специализации с разработкой. Если думаете о переходе в IT, разложите прежнюю работу на конкретные навыки и найдите задачи, где они уже нужны.
1❤9👍9💊5👌4🌚4💯4🔥3🤷♂1👎1🌭1😭1
Космический хакатон. Санкт-Петербург, Красноярск или онлайн из любой точки страны.
Старт 18 сентября.
Для разных городов разные задачи, а за выходные участники должны представить рабочие решения.
Санкт-Петербург. К 2035 году над Землёй должен работать топливный узел, у которого заправляются корабли, и откуда он будет получать топливо — с Земли, с Луны или из резерва — пока не решил никто. Команде предстоит собрать схему поставок, посчитать резервы и решить, во что вкладываться сразу. Призовой фонд 1,2 млн ₽.
Красноярск. Спутник видит горящий лес раньше любого наземного поста, но вместе с пожаром ловит нагретые крыши, факелы на месторождениях и блики на воде. Команде предстоит научить сервис отличать настоящий очаг от шума, обвести гарь и выдать площадь в гектарах. Призовой фонд 600 тыс. ₽.
Лучшие забирают приз на площадке и билет в финал в Москве, 25–27 сентября, где разыграют ещё 2,4 млн рублей.
Команда 3–5 человек, недостающих можно найти на платформе.
Регистрация по ссылке — космохакатон.рф
Старт 18 сентября.
Для разных городов разные задачи, а за выходные участники должны представить рабочие решения.
Санкт-Петербург. К 2035 году над Землёй должен работать топливный узел, у которого заправляются корабли, и откуда он будет получать топливо — с Земли, с Луны или из резерва — пока не решил никто. Команде предстоит собрать схему поставок, посчитать резервы и решить, во что вкладываться сразу. Призовой фонд 1,2 млн ₽.
Красноярск. Спутник видит горящий лес раньше любого наземного поста, но вместе с пожаром ловит нагретые крыши, факелы на месторождениях и блики на воде. Команде предстоит научить сервис отличать настоящий очаг от шума, обвести гарь и выдать площадь в гектарах. Призовой фонд 600 тыс. ₽.
Лучшие забирают приз на площадке и билет в финал в Москве, 25–27 сентября, где разыграют ещё 2,4 млн рублей.
Команда 3–5 человек, недостающих можно найти на платформе.
Регистрация по ссылке — космохакатон.рф
1❤7🎉6🤔5💯5🔥4🤣2🍌1🤨1👀1🎄1🤪1
Forwarded from Сохранёнки программиста
Как конечные автоматы индексируют миллиарды строк
Обстоятельный разбор Эндрю Галланта показывает, как конечные автоматы хранят упорядоченные множества и словари. Строка становится последовательностью переходов, а общие состояния используются повторно. Проверка ключа требует не больше шагов, чем в нём символов, независимо от размера набора.
Далее библиотека
В лонгриде Эндрю Галланта разобраны границы: нужен быстрый доступ к произвольному участку файла, а структура не универсальна. Читать разработчикам поиска и словарей, чтобы оценить вариант индекса.
Обстоятельный разбор Эндрю Галланта показывает, как конечные автоматы хранят упорядоченные множества и словари. Строка становится последовательностью переходов, а общие состояния используются повторно. Проверка ключа требует не больше шагов, чем в нём символов, независимо от размера набора.
Далее библиотека
fst на Rust и опыты. Индекс 16 млн заголовков Wikipedia объёмом 384 МБ построился за 18,3 секунды и занял 157 МБ. Поиск по регулярному выражению занял 0,023 секунды, нечёткий поиск с двумя правками: 0,094 секунды. Финал: более 1,6 млрд URL из Common Crawl объёмом 134 ГБ.В лонгриде Эндрю Галланта разобраны границы: нужен быстрый доступ к произвольному участку файла, а структура не универсальна. Читать разработчикам поиска и словарей, чтобы оценить вариант индекса.
burntsushi.net
Index 1,600,000,000 Keys with Automata and Rust - Andrew Gallant's Blog
1❤7🤔5💯5🦄4🌭3🤷♂2🤓2🎄2👻1🎃1🤷1
Что происходит с облаками и инфраструктурой? Давайте посмотрим в новой подборке: так ли сейчас любят облака, как работать с S3 и где можно взять мощностей для LLM.
Почему компании возвращают нагрузки из публичного облака в 2026 году
Гибридное облако: что оставить у себя, а что вынести в публичный контур
Облако или свои серверы: почему бизнес выбирает гибридную инфраструктуру
Кто отвечает за работу облачной инфраструктуры: бизнес или провайдер
VPS или облачный IaaS в 2026: когда дешёвый сервер перестаёт справляться
Где арендовать GPU в 2026
GPU-серверы для LLM-инференса
S3 в инфраструктуре: где объектное хранилище помогает, а где не заменит файловую систему
Как хранить бэкапы в S3, чтобы их не удалил сбой или вирус
Почему компании возвращают нагрузки из публичного облака в 2026 году
Гибридное облако: что оставить у себя, а что вынести в публичный контур
Облако или свои серверы: почему бизнес выбирает гибридную инфраструктуру
Кто отвечает за работу облачной инфраструктуры: бизнес или провайдер
VPS или облачный IaaS в 2026: когда дешёвый сервер перестаёт справляться
Где арендовать GPU в 2026
GPU-серверы для LLM-инференса
S3 в инфраструктуре: где объектное хранилище помогает, а где не заменит файловую систему
Как хранить бэкапы в S3, чтобы их не удалил сбой или вирус
1❤10💯5🔥4👏4😁3🫡3🥰2🤓2🤪2😍1🍌1
От исходного кода до процессора: разберись, как работает программа 💻
Стартует практический курс YADRO «Системное программирование с использованием языка С» для тех, кто уже знаком с синтаксисом C и хочет разобраться, как программа работает изнутри.
Формат: курс пройдет онлайн с октября 2026 по май 2027 года. Занятия — раз в неделю, где 80% времени будет посвящено практике.
Этот курс для тебя, если ты:
🔵 учишься в вузе;
🔵 уверенно владеешь базовыми конструкциями C;
🔵 понимаешь, как работают указатели, структуры данных и динамическая память;
🔵 знаешь основные алгоритмы и структуры данных.
*️⃣ Будет плюсом опыт разработки под Linux.
Материалы для подготовки и форму регистрации можно найти — по ссылке 🔗
Стартует практический курс YADRO «Системное программирование с использованием языка С» для тех, кто уже знаком с синтаксисом C и хочет разобраться, как программа работает изнутри.
Формат: курс пройдет онлайн с октября 2026 по май 2027 года. Занятия — раз в неделю, где 80% времени будет посвящено практике.
Этот курс для тебя, если ты:
🔵 учишься в вузе;
🔵 уверенно владеешь базовыми конструкциями C;
🔵 понимаешь, как работают указатели, структуры данных и динамическая память;
🔵 знаешь основные алгоритмы и структуры данных.
*️⃣ Будет плюсом опыт разработки под Linux.
Материалы для подготовки и форму регистрации можно найти — по ссылке 🔗
18 сентября — приходи на онлайн-трансляцию, где мы расскажем подробнее о практических курсах и ответим на все вопросы. После вебинара пройдет обзорная лекция про системное программирование и роль языка С. Регистрация — здесь.
1❤10👍9👎3😭3🥰2👌2💯2👀2🤣1🤗1🗿1
Как Cloudflare освободила 100 ТБ памяти в DNS-кеше 1.1.1.1
Big Pineapple за сервисом 1.1.1.1 хранит больше 250 млрд записей кеша. В таком масштабе лишний байт обходится серверам более чем в 250 ГБ памяти. Пять изменений сократили запись больше чем вдвое и освободили около 100 ТБ. Пропускная способность вставки выросла на 43%, задержка поиска снизилась на 19%.
DNS-ответ в кеше уже не меняется, но
В разборе Cloudflare есть остальные шаги. Одних тестов мало: память процесса зависит от трафика, заполнения кеша и состояния распределителя памяти, поэтому её сверяли при внедрении.
Big Pineapple за сервисом 1.1.1.1 хранит больше 250 млрд записей кеша. В таком масштабе лишний байт обходится серверам более чем в 250 ГБ памяти. Пять изменений сократили запись больше чем вдвое и освободили около 100 ТБ. Пропускная способность вставки выросла на 43%, задержка поиска снизилась на 19%.
DNS-ответ в кеше уже не меняется, но
Vec хранит ёмкость для роста. Замена восьми векторов и строк на контейнеры фиксированного размера сэкономила 64 байта на запись. Ещё 28 байт убрали, объединив три раздела ответа в один список со смещениями.В разборе Cloudflare есть остальные шаги. Одних тестов мало: память процесса зависит от трафика, заполнения кеша и состояния распределителя памяти, поэтому её сверяли при внедрении.
1🔥25🤨7💔4👌3🤩2👀2😴1👻1🤝1💘1😘1
Forwarded from DevOps для ДевоПсов
В Суздаль за DevOps
Недавно мы съездили на «Без предела: Исходный код ритейла» от MAGNIT TECH в Суздаль. Разговор о технологиях начинался с купеческих рядов, продолжился на Demo Day на ГЭС на Нерли, а затем перешёл к самовару. Мы кайфанули от формата.
У Владимира Дроздецкого, например, зацепил заход через первый рабочий день инженера. По мере знакомства с инфраструктурой за привычными сборками и выкладками обнаруживается хозяйство на тысячи ядер. Через такую историю масштаб ощущается лучше, чем через цифры сами по себе: можно примерить на себя работу человека, которому всё это поддерживать. Ради этого взгляда изнутри советуем открыть презентацию. И наставление от Владимира не забудьте:
Недавно мы съездили на «Без предела: Исходный код ритейла» от MAGNIT TECH в Суздаль. Разговор о технологиях начинался с купеческих рядов, продолжился на Demo Day на ГЭС на Нерли, а затем перешёл к самовару. Мы кайфанули от формата.
У Владимира Дроздецкого, например, зацепил заход через первый рабочий день инженера. По мере знакомства с инфраструктурой за привычными сборками и выкладками обнаруживается хозяйство на тысячи ядер. Через такую историю масштаб ощущается лучше, чем через цифры сами по себе: можно примерить на себя работу человека, которому всё это поддерживать. Ради этого взгляда изнутри советуем открыть презентацию. И наставление от Владимира не забудьте:
Не важно, сколько раз ты упал – важно, сколько раз ты поднялся. Главное — поднимайся с правильным IP-адресом
1❤7🔥7🎉4🌭4😁3💯3👀3😨3🥰2👨💻2🤷2
Почему тип указателя не гарантирует безопасность памяти
Указатель сохраняет тип, даже когда байты по его адресу уже означают другое. В примере на Zig структура с меткой сначала хранит срез байтов. Код берёт указатель на это поле, записывает в ту же структуру 128-битное число, а затем разыменовывает старый указатель. Адрес и тип указателя прежние, но внутри уже число: возникает путаница типов.
Автор называет этот случай самым трудным контрпримером для безопасности памяти. Он не зависит от кучи и деструкторов; похожий сценарий ломает и Ada. Практическую опасность автор не преувеличивает: насколько такой баг пригоден для эксплуатации, неясно. Куда более распространённое переполнение буфера компилятор может закрыть проверкой границ.
В разборе Memory Safety’s Hardest Problem есть код, вывод программы и аргумент, почему встроенные границы массивов в C могли предотвратить немало проблем.
Указатель сохраняет тип, даже когда байты по его адресу уже означают другое. В примере на Zig структура с меткой сначала хранит срез байтов. Код берёт указатель на это поле, записывает в ту же структуру 128-битное число, а затем разыменовывает старый указатель. Адрес и тип указателя прежние, но внутри уже число: возникает путаница типов.
Автор называет этот случай самым трудным контрпримером для безопасности памяти. Он не зависит от кучи и деструкторов; похожий сценарий ломает и Ada. Практическую опасность автор не преувеличивает: насколько такой баг пригоден для эксплуатации, неясно. Куда более распространённое переполнение буфера компилятор может закрыть проверкой границ.
В разборе Memory Safety’s Hardest Problem есть код, вывод программы и аргумент, почему встроенные границы массивов в C могли предотвратить немало проблем.
matklad.github.io
Memory Safety's Hardest Problem
Uplifting a lobsters comment for easier reference.
1🎉5👌4🤩2🌚2🎃2🤝2👍1😢1🙏1🎄1🦄1
Вопрос на разогрев: что из этого появилось раньше — ICQ, MySpace или Nokia 3310?
Если задумались хотя бы на секунду, анкета к 25-летию SpaceWeb вам понравится. Там внутри вся хронология рунета, а заодно вопросы про любимый спорт, лучшего друга и обои на рабочий стол.
Если задумались хотя бы на секунду, анкета к 25-летию SpaceWeb вам понравится. Там внутри вся хронология рунета, а заодно вопросы про любимый спорт, лучшего друга и обои на рабочий стол.
2😁5🎄5👏4👍3🤯2🤣2🦄2❤🔥1🗿1😘1💊1
Forwarded from Data Analysis / Big Data
Мы вернулись из Суздаля с новым взглядом на магазин у дома
Были на tech-туре MAGNIT TECH «Без предела: Исходный код ритейла» и нам понравилось, как сошлись место и тема. Сначала купеческие ряды Суздаля, затем разговор о технологиях современной торговли на ГЭС на Нерли. В программе были и воздушный шар, и общение с инженерами у самовара. Получилась поездка, в которой было время и Суздалем полюбоваться, и познакомиться с людьми, стоящими за проектами.
Из выступлений особенно запомнился доклад Максима Покусенко о прогнозировании спроса. 17 млрд прогнозов ежедневно впечатляют, когда понимаешь связь с совершенно обыденной, казалось бы, вещью: приходишь в магазин, а нужный товар лежит на полке. Доклад помог увидеть, сколько расчётов стоит за этим привычным удобством.
Презентацию советуем посмотреть и тем, кто не работает с ритейлом. На одном понятном примере здесь можно проследить, как результат ML-модели становится решением о поставке.
Были на tech-туре MAGNIT TECH «Без предела: Исходный код ритейла» и нам понравилось, как сошлись место и тема. Сначала купеческие ряды Суздаля, затем разговор о технологиях современной торговли на ГЭС на Нерли. В программе были и воздушный шар, и общение с инженерами у самовара. Получилась поездка, в которой было время и Суздалем полюбоваться, и познакомиться с людьми, стоящими за проектами.
Из выступлений особенно запомнился доклад Максима Покусенко о прогнозировании спроса. 17 млрд прогнозов ежедневно впечатляют, когда понимаешь связь с совершенно обыденной, казалось бы, вещью: приходишь в магазин, а нужный товар лежит на полке. Доклад помог увидеть, сколько расчётов стоит за этим привычным удобством.
Презентацию советуем посмотреть и тем, кто не работает с ритейлом. На одном понятном примере здесь можно проследить, как результат ML-модели становится решением о поставке.
🔥4😢2💯2💘2🤷♀1👏1😁1🎉1🕊1🫡1🎅1
Как повторное использование ReverseProxy ускорило прокси на Go в 3,8 раза
Автор нагрузил свой обратный прокси и обнаружил хвост медленных запросов. Причина оказалась в обработчике: тот создавал новый
Вместе с прокси заново создавался
В тесте пропускная способность выросла с 1710 до 6541 запроса в секунду, а средняя задержка упала примерно с 58 до 7,6 мс. Если строите сервис на
Автор нагрузил свой обратный прокси и обнаружил хвост медленных запросов. Причина оказалась в обработчике: тот создавал новый
httputil.ReverseProxy для каждого запроса.Вместе с прокси заново создавался
http.Transport. Соединения с целевым сервером не переиспользовались, поэтому каждый запрос платил за новое подключение. Исправление: хранить по одному ReverseProxy на каждый целевой сервер в sync.Map.В тесте пропускная способность выросла с 1710 до 6541 запроса в секунду, а средняя задержка упала примерно с 58 до 7,6 мс. Если строите сервис на
ReverseProxy, http.Client или http.Transport, создавайте объект один раз для каждого адреса и не пересобирайте его внутри обработчика.👍4👀4🏆2🔥1👏1👌1🙉1👾1