Ru
Главная → Каналы → Технологии → Типичный программист

Типичный программист

@tproger_official · Технологии

Всё самое интересное по программированию. Бот: @tproger_official_bot ВК: vk.com/tproger Размещение рекламы, вакансий и анонсов событий в Telegram: https://tproger.ru/ad/telegram/ Реклама и сотрудничество: @alexkayukov или @vshulepa

78 000подписчиков сейчас
27.0%ERR
39.0цитируемость
5постов/день
Русскийязык
Россиягео
Подписаться в Telegram
В ленте @TgTopFeedBot на канал подписано: 1
Данные обновлены 22.07.2020

Публикации всего: 260

Постов на странице: 10 30 50 Страница 1 из 26
Сжатие временных рядов в Axiom: меньше места на диске, больше работы процессору Gorilla сжимает измерения по мере поступления и требует строгого порядка по времени. У клиентов Axiom каждую секунду приходят тысячи опоздавших точек. В разборе альтернативы Gorilla команда показывает, как хранить такие данные и сколько это стоит. Новые измерения попадают в несжатый буфер, где их сортируют по времени. Заполненный буфер сжимают пакетом и переносят в сжатую часть. Время отмечают битовой картой: каждый установленный бит указывает на момент с измерением. При запросе карта помогает выбирать точки из нужного диапазона. На данных Axiom хранилище обычно занимает 30–50% от размера Gorilla. Но оптимизированная Gorilla примерно в 15 раз эффективнее по CPU, то есть затратам процессора на кеш. Память кеша чаще составляет 70–100% от Gorilla; все цифры зависят от нагрузки. #облака
❤ 4 👍 2 👏 2 · всего 16 Перейти к публикации →
Gran Turismo 4 переехала в Chrome — с гонками, звуком и сохранениями В PS2 Web Recomp старые игры запускают прямо во вкладке. Gran Turismo 4 проходит меню и гонки, играет музыку и сохраняет прогресс в браузере. По замерам автора, PAL-версия держит 50 FPS в Chrome на встроенной графике ноутбука при удвоенном разрешении PS2. Машинный код игры заранее переводят в C++, затем собирают в WebAssembly. Графику рисует WebGPU, а окружение воспроизводит нужные части системы и железа PS2. После Gran Turismo автор запустил God of War II: вторая игра помогла найти ошибки, которых первая не замечала. 📎 В репозитории проекта есть код, скрипты сборки и подробности оптимизации. Готового каталога игр здесь нет: понадобится свой образ диска, который скрипты превратят в локальную веб-страницу.
👍 8 😁 3 ❤‍🔥 1 · всего 18 Перейти к публикации →
Миллион запросов в секунду напрямую: разбор клиентской балансировки Zalando Пакетный запрос к сервису товаров Zalando разветвлялся на 100 параллельных вызовов через общий маршрутизатор Skipper. Весь пакет ждал самого медленного ответа, а причину скачков задержки было трудно отделить от проблем кода сервиса. Команда перенесла выбор адресата в вызывающее приложение. На пике со Skipper сняли свыше миллиона запросов в секунду. При этом обе схемы направляли запросы одного товара к тем же экземплярам сервиса: иначе кеши разделились бы, а нагрузка на базу выросла. В разборе миграции показано, как переключали трафик от 1% до 100%, сохраняя резервный путь через Skipper. Новым экземплярам постепенно добавляли нагрузку, прогревая кеши именно теми товарами, которые они будут обслуживать дальше. #облака
❤ 2 Перейти к публикации →
Миллион запросов в секунду мимо общего балансировщика Сто микросекунд задержки выглядят мелочью. Пока один запрос не превращается в сотню параллельных: ответ придёт, когда закончит самый медленный. У Zalando эти обращения ещё и проходили через общий Skipper. При скачках задержки было трудно понять, кто виноват: сервис или чужая инфраструктура. Команда перенесла выбор узла внутрь вызывающего процесса. Пришлось точно повторить прежнее хеш-кольцо, чтобы товары попадали в те же кеши. Переходили постепенно, сохранив обратный путь через Skipper на случай проблем. На пике напрямую пошло больше миллиона запросов в секунду. По данным команды, задержки стабилизировались, а парк Skipper для этих маршрутов сократился с 50+ копий до восьми. Сам Skipper никуда не делся: внешние запросы остались у него. Тут убрали один лишний круг внутри системы, а не переписали весь входной трафик.
👏 2 🤔 2 🎉 2 · всего 8 Перейти к публикации →
Как метрики помогли найти ошибку в ИИ-оценщике размера видео Cliparr обещал один размер видео, а после конвертации получался другой: в 16 замерах файлы оказались на 30–83% больше прогноза. ИИ написал формулу, которая уменьшала ожидаемый размер пропорционально высоте кадра, хотя при заданном битрейте расчёт должен опираться на длительность. В разборе проверки оценщика автор показывает, как метрики Sentry выявили ошибку: после каждой конвертации фиксируется отношение реального размера к прогнозу, а результаты группируются по формуле и формату видео. Так можно сравнить старый и новый расчёт и найти режимы с наибольшими отклонениями. В материале есть код сбора метрик и настройка панели. Замеры идут из публичного браузерного конвертера, сами видео, имена файлов и адреса на сервер не отправляются. #ии #веб
👏 2 🏆 2 ❤ 1 · всего 9 Перейти к публикации →
Разработчик превратил Wi-Fi роутер в программируемый радиоприёмник Автор написал собственную прошивку для радиочипа и научился получать с него сырые данные. Теперь можно открыть браузер и увидеть, что происходит в эфире на частотах 2,4, 5 и 6 ГГц. Правда, данных столько, что передавать их на компьютер приходится через Ethernet на 10 Гбит/с. На демо он показывает сразу весь диапазон 2,4 ГГц: видны передачи Wi-Fi и короткие всплески сигнала. Частоту, усиление и фильтры можно менять прямо в интерфейсе. Если захочется повторить, нужен именно Gemtek W1700K, USB-UART-адаптер и компьютер с Linux и сетевой картой на 10 Гбит/с. Учтите: установка заменяет штатную ОС роутера, а новая прошивка только принимает сигналы. 📎 Код, демо и инструкция
💊 11 👍 4 🤷‍♂ 3 · всего 23 Перейти к публикации →
Cookies удалены, а браузер всё ещё узнают Удаление cookies не обязательно делает браузер новым посетителем для сайта. Автор этой демонстрации собирает его цифровой отпечаток и выдаёт по нему прозвище. Можно обновить страницу, удалить cookies или включить VPN и сравнить, изменится ли ник. В ход идут результаты рисования через canvas и WebGL, обработки звука, язык, часовой пояс и характеристики устройства. Значения складываются в хеш. VPN меняет IP, но остальные признаки могут остаться прежними. По отдельности они встречаются у многих людей; сочетание помогает различать браузеры. 📎 Попробуйте на своём браузере и посмотрите, какие данные используются. Это упрощённое демо: изменение одного значения меняет отпечаток, а встроенная защита браузера может мешать распознаванию. Ник не доказывает, что вас однозначно узнают на всех сайтах.
❤ 8 🤔 2 💊 2 · всего 18 Перейти к публикации →
Замена Redis на MySQL в Shopify: устройство резервов и поиск дефицита соединений На время оплаты Shopify резервирует товары, чтобы два покупателя не забрали последнюю единицу. Перенос резервов в MySQL позволил списывать товар и снимать резерв одной транзакцией. Но первые попытки упирались в конкуренцию за одну строку с количеством товара. Команда завела строки для отдельных единиц, ограничив запас 1000 строк на товар и место хранения. SKIP LOCKED позволяет при резервировании пропускать заблокированные строки и выбирать свободные. Запросы ускорились, но соединений всё равно не хватало. Метки в SQL-запросах и замеры на прокси показали: другие части оформления заказа удерживали соединения слишком долго. В разборе миграции Shopify есть эта диагностика, подбор ключей и уровня изоляции, а также проверка двух систем в параллельной работе. #веб
❤ 4 👎 4 🌚 3 · всего 19 Перейти к публикации →
Хотел просто поиграть на Mac. В итоге написал новый движок Total Annihilation Тут есть те, кто в детстве играл в Total Annihilation? Разработчик решил вернуться к любимой игре детства и написал для неё собственный движок на Go. При этом игровые движки до этого он вообще не делал. Он изучал записи матчей, разбирал сетевые пакеты, ставил эксперименты в оригинальной игре. В общем, парень сильно увлёкся. Конечно же не обошлось без вайбкодинга. Claude и Codex помогали исследовать старый движок и писать новый. Автор проверял результат, сравнивал с оригиналом и исправлял ошибки. 📎 Подробности он собрал здесь. Проект называется Nanolathe, код открыт. А самое приятное, что три миссии уже сейчас можно запустить прямо в браузере. Пока это beta, баги ещё есть. Для полной игры понадобятся свои оригинальные файлы. Если играли в Total Annihilation, можно сравнить, что получилось.
🔥 12 💊 9 😁 4 · всего 38 Перейти к публикации →
Ускорение просмотра изменений в GitHub через упрощение компонентов React Одна строка кода во вкладке Files changed могла нести больше 20 обработчиков событий. На тысячах строк цена такой архитектуры росла: интерфейс тормозил, память уходила на повторяющиеся компоненты. Команда GitHub упростила дерево React и передала обработку событий общему обработчику: он определяет строку по атрибутам HTML-элемента. Состояние комментариев и меню перенесли в дочерние компоненты, которые появляются по необходимости. В разборе оптимизации есть замеры: на 10 000 изменённых строк задержка от действия до обновления экрана снизилась примерно с 450 до 100 мс. Тест проводили на MacBook Pro M1 с четырёхкратным замедлением. Для самых крупных изменений понадобилось ещё и отображать только видимые строки; этот подход тоже разобран в материале. #веб
❤ 5 👍 4 😐 2 · всего 18 Перейти к публикации →
1 2 3 … 25 26

Другие каналы категории