Листаете ленту, открываете ролик, переходите в сообщество автора — всё внутри ВКонтакте. За этими привычными действиями стоят разные системы и команды. Каждой нужна возможность развивать свою часть продукта и выпускать обновления в собственном темпе.
В прошлом году ВКонтакте начала переход на сервисную архитектуру: пользовательские сценарии постепенно переносили в отдельные сервисы, пока продуктовые команды продолжали выпускать обновления. Для подготовки новых сервисов создали внутреннюю платформу разработки. Она автоматизирует типовые операции — теперь подготовка занимает часы вместо недель.
Трансформация затронула и веб-версию. Основные разделы перевели на SPA: браузер обновляет нужные части интерфейса без полной перезагрузки страницы. В результате страницы открываются на 25% быстрее, а переходы между разделами ускорились в 3,5 раза.
Вместе с техническим директором ВКонтакте Юрием Кочаряном разобрали, как проходили эти изменения, что помогло командам ускорить разработку и какие подходы можно применить в своём проекте.
https://tproger.ru/articles/kak-perestraivat-produkt-kotorym-ezhednevno-polzuyutsya-65-milli
В прошлом году ВКонтакте начала переход на сервисную архитектуру: пользовательские сценарии постепенно переносили в отдельные сервисы, пока продуктовые команды продолжали выпускать обновления. Для подготовки новых сервисов создали внутреннюю платформу разработки. Она автоматизирует типовые операции — теперь подготовка занимает часы вместо недель.
Трансформация затронула и веб-версию. Основные разделы перевели на SPA: браузер обновляет нужные части интерфейса без полной перезагрузки страницы. В результате страницы открываются на 25% быстрее, а переходы между разделами ускорились в 3,5 раза.
Вместе с техническим директором ВКонтакте Юрием Кочаряном разобрали, как проходили эти изменения, что помогло командам ускорить разработку и какие подходы можно применить в своём проекте.
https://tproger.ru/articles/kak-perestraivat-produkt-kotorym-ezhednevno-polzuyutsya-65-milli
👍7🤣7❤5🔥5💊4👌3👏2🤔1🕊1🎅1🦄1
Forwarded from Инструменты программиста
От чатбота к агентам: опыт Митчелла Хашимото
Для работы с кодом Хашимото перешёл от отдельного чата к агенту, который читает файлы проекта и запускает программы. После этого начал повторять собственную работу: сначала решал задачу сам, затем давал её агенту без готового решения.
Так он выяснял, какие задачи можно поручать ИИ. Дальше добавлял инструкции в AGENTS.md, файл с правилами проекта, и способы проверить изменения, включая запуск тестов.
В истории освоения ИИ в разработке Хашимото связывает выбор задач с настройкой рабочего окружения. Отдельные чаты при этом остались в его повседневной работе.
#ии #инструменты
Для работы с кодом Хашимото перешёл от отдельного чата к агенту, который читает файлы проекта и запускает программы. После этого начал повторять собственную работу: сначала решал задачу сам, затем давал её агенту без готового решения.
Так он выяснял, какие задачи можно поручать ИИ. Дальше добавлял инструкции в AGENTS.md, файл с правилами проекта, и способы проверить изменения, включая запуск тестов.
В истории освоения ИИ в разработке Хашимото связывает выбор задач с настройкой рабочего окружения. Отдельные чаты при этом остались в его повседневной работе.
#ии #инструменты
👏4🎉4❤2🤔2👌2👍1
Forwarded from Инструменты программиста
Где вы чаще всего работаете с ИИ-инструментом?
Anonymous Poll
33%
В отдельном окне чата или веб-версии
21%
Прямо в редакторе кода
26%
В терминале
2%
Через корпоративные сервисы или платформы
18%
По-разному, зависит от того, что нужно сделать
👍5🔥5🤔2❤1🎉1🍌1🍾1💋1😎1
Что можно настроить в ИИ-агенте Pi?
Армин Ронахер пользуется Pi и добавляет нужные возможности через расширения. В его описании устройства агента есть три составляющие:
— ядро читает, записывает и редактирует файлы, запускает команды;
— расширения добавляют функции и могут сохранять свои данные в сессии;
— ветки беседы позволяют отдельно отладить проблему и вернуть в основную сессию краткий пересказ.
Список задач и ревью изменений Ронахер поручил создать самому Pi. В разборе агента с примерами расширений видно, что он дописал под собственный рабочий процесс.
#ии #инструменты
Армин Ронахер пользуется Pi и добавляет нужные возможности через расширения. В его описании устройства агента есть три составляющие:
— ядро читает, записывает и редактирует файлы, запускает команды;
— расширения добавляют функции и могут сохранять свои данные в сессии;
— ветки беседы позволяют отдельно отладить проблему и вернуть в основную сессию краткий пересказ.
Список задач и ревью изменений Ронахер поручил создать самому Pi. В разборе агента с примерами расширений видно, что он дописал под собственный рабочий процесс.
#ии #инструменты
🤔5👌3🐳2🔥1🎉1🏆1🙈1🤝1🎅1🎄1🤷1
Перенос MiniJinja с Rust на Go силами Opus и Codex
Около десяти часов работы агента и примерно 45 минут активного участия автора. Так Армин Ронахер оценивает основной перенос MiniJinja с Rust на Go. MiniJinja собирает текст по шаблонам.
Он начал с Opus 4.5 внутри Pi, а оставшиеся исправления тестов передал GPT-5.2 Codex. Рабочая среда оставалась той же; Go-реализацию сверяли с сохранёнными результатами тестов Rust-версии.
По ходу работы агент отказался от проверок, в которых программа должна завершаться ошибкой: текст сообщений не совпадал дословно. Ронахер вмешался и сохранил эти тесты, изменив способ сравнения сообщений.
#ии #инструменты
Около десяти часов работы агента и примерно 45 минут активного участия автора. Так Армин Ронахер оценивает основной перенос MiniJinja с Rust на Go. MiniJinja собирает текст по шаблонам.
Он начал с Opus 4.5 внутри Pi, а оставшиеся исправления тестов передал GPT-5.2 Codex. Рабочая среда оставалась той же; Go-реализацию сверяли с сохранёнными результатами тестов Rust-версии.
По ходу работы агент отказался от проверок, в которых программа должна завершаться ошибкой: текст сообщений не совпадал дословно. Ронахер вмешался и сохранил эти тесты, изменив способ сравнения сообщений.
#ии #инструменты
👍7👏5❤2🔥2🤔2❤🔥1👻1👨💻1😨1🤗1😎1
Doom на виртуальной машине Turso: память в таблице, кадры в строках запроса
Вся память Doom помещается в одну запись таблицы: двоичное значение BLOB на 64 МиБ. Указатель в C становится смещением внутри этого значения, а чтение и запись памяти игра выполняет командами базы данных.
Команда Turso написала компилятор vdbecc: LLVM переводит исходный C-код в промежуточное представление, а vdbecc превращает его в VDBE, байткод виртуальной машины базы. Готовые кадры игра отдаёт через ResultRow, ту же инструкцию, которой SELECT возвращает строки результата.
В разборе порта есть код и браузерная демонстрация, а также объяснение, как реализовали вызовы функций и указатели на них. Повторить это в обычном SQLite нельзя: нужны расширения Turso и добавленный загрузчик программы.
#веб
Вся память Doom помещается в одну запись таблицы: двоичное значение BLOB на 64 МиБ. Указатель в C становится смещением внутри этого значения, а чтение и запись памяти игра выполняет командами базы данных.
Команда Turso написала компилятор vdbecc: LLVM переводит исходный C-код в промежуточное представление, а vdbecc превращает его в VDBE, байткод виртуальной машины базы. Готовые кадры игра отдаёт через ResultRow, ту же инструкцию, которой SELECT возвращает строки результата.
В разборе порта есть код и браузерная демонстрация, а также объяснение, как реализовали вызовы функций и указатели на них. Повторить это в обычном SQLite нельзя: нужны расширения Turso и добавленный загрузчик программы.
#веб
❤10👍6👏4🤔2🔥1😁1🤣1🍓1🙈1🤝1🫡1
Звонки Discord на Cloudflare: почему сервер поближе не всегда лучше
Сервер в Рейкьявике снизил задержку местных звонков, но пинг иностранных участников вырос в 2,7 раза. У Discord весь звонок обслуживает один сервер: если он оказался в Исландии, участники из Германии тоже отправляют пакеты туда и обратно.
Перенос трафика из Роттердама в Амстердам добавил другую проблему. У пользователей французского провайдера Orange задержка в часы пик превышала секунду: соединение между сетями на пути к Cloudflare было перегружено. Перенос пришлось откатить.
В разборе миграции голосовых звонков команда Discord показывает, как эти сбои изменили план: регионы стали переносить по одному, заранее проверяя, выдержат ли соединения с крупными интернет-провайдерами дополнительный трафик.
#облака
Сервер в Рейкьявике снизил задержку местных звонков, но пинг иностранных участников вырос в 2,7 раза. У Discord весь звонок обслуживает один сервер: если он оказался в Исландии, участники из Германии тоже отправляют пакеты туда и обратно.
Перенос трафика из Роттердама в Амстердам добавил другую проблему. У пользователей французского провайдера Orange задержка в часы пик превышала секунду: соединение между сетями на пути к Cloudflare было перегружено. Перенос пришлось откатить.
В разборе миграции голосовых звонков команда Discord показывает, как эти сбои изменили план: регионы стали переносить по одному, заранее проверяя, выдержат ли соединения с крупными интернет-провайдерами дополнительный трафик.
#облака
🔥9👍3👏3😨2🎉1🙏1💋1😈1👨💻1🙈1😇1
Модель C-интерфейса в Quint помогла найти больше десяти ошибок в SQLite
SQLite должна отклонить десериализацию базы, пока идёт транзакция чтения. Но в тесте вместо ошибки SQLITE_BUSY, означающей, что база занята, произошло падение.
Паван Намби из сообщества Turso моделировал в Quint отдельные контракты C-интерфейса SQLite: что операции должны делать по документации. Quint генерировал последовательности состояний, которые переводили в небольшие программы на C и запускали на настоящей базе. Сравнение ожиданий с поведением SQLite выявило ошибки, пропущенные прежними проверками.
В разборе Намби и команды Turso показаны шаги, приведшие к падению, и подход к проверке отдельных контрактов без моделирования всей базы данных.
#инструменты
SQLite должна отклонить десериализацию базы, пока идёт транзакция чтения. Но в тесте вместо ошибки SQLITE_BUSY, означающей, что база занята, произошло падение.
Паван Намби из сообщества Turso моделировал в Quint отдельные контракты C-интерфейса SQLite: что операции должны делать по документации. Quint генерировал последовательности состояний, которые переводили в небольшие программы на C и запускали на настоящей базе. Сравнение ожиданий с поведением SQLite выявило ошибки, пропущенные прежними проверками.
В разборе Намби и команды Turso показаны шаги, приведшие к падению, и подход к проверке отдельных контрактов без моделирования всей базы данных.
#инструменты
🔥8❤3👏3🤔2👍1🎉1🙏1😴1🙈1😘1
Каскадный сбой Discord: почему сокращение кластера сорвало звонки
Инженеры Discord увеличили ресурсы каждой копии сервиса сессий и уменьшили число копий. При остановке те не успели передать данные соседним узлам: разом оборвались 17% сессий подключённых устройств.
Переподключения перегрузили два процесса, через которые создавались HTTP-соединения для управления звонками. Через них же шло обновление регистрации сервисов в etcd, хранилище сведений о доступных узлах. Очереди росли, регистрация перестала обновляться, узлы выпадали из списка доступных. После перезапуска нагрузка снова блокировала их работу.
В разборе этой цепочки отказов команда объясняет, как ограничения запросов и расширение кластера помогли восстановить звонки и зачем создание соединений распределили между независимыми управляющими процессами.
#облака
Инженеры Discord увеличили ресурсы каждой копии сервиса сессий и уменьшили число копий. При остановке те не успели передать данные соседним узлам: разом оборвались 17% сессий подключённых устройств.
Переподключения перегрузили два процесса, через которые создавались HTTP-соединения для управления звонками. Через них же шло обновление регистрации сервисов в etcd, хранилище сведений о доступных узлах. Очереди росли, регистрация перестала обновляться, узлы выпадали из списка доступных. После перезапуска нагрузка снова блокировала их работу.
В разборе этой цепочки отказов команда объясняет, как ограничения запросов и расширение кластера помогли восстановить звонки и зачем создание соединений распределили между независимыми управляющими процессами.
#облака
🌭5❤4👍3🤔3🔥2👌1💯1🍓1😈1😴1😎1
Викторина об оптимизации Rust: проверка компилятора и испытание живой аудиторией
Деление целого числа на пять компилятор может заменить умножением и битовым сдвигом. Автор викторины для EuroRust проверял такие превращения в Compiler Explorer, сервисе для просмотра машинных инструкций, и переводил результат обратно в Rust, чтобы составить вопросы.
Затем собрал веб-приложение: ведущий переключает слайды, зрители отвечают с телефонов. Тесты с участием до 50 человек прошли успешно, но на сцене один ранний голос закрыл вопрос для остальных. При возврате на слайд игра разрешала отвечать только тогда, когда голосов ещё не было.
В разборе создания викторины соседствуют неожиданные результаты оптимизации и решения для совместной игры, чьи ограничения проявились перед сотнями зрителей.
#веб
Деление целого числа на пять компилятор может заменить умножением и битовым сдвигом. Автор викторины для EuroRust проверял такие превращения в Compiler Explorer, сервисе для просмотра машинных инструкций, и переводил результат обратно в Rust, чтобы составить вопросы.
Затем собрал веб-приложение: ведущий переключает слайды, зрители отвечают с телефонов. Тесты с участием до 50 человек прошли успешно, но на сцене один ранний голос закрыл вопрос для остальных. При возврате на слайд игра разрешала отвечать только тогда, когда голосов ещё не было.
В разборе создания викторины соседствуют неожиданные результаты оптимизации и решения для совместной игры, чьи ограничения проявились перед сотнями зрителей.
#веб
🔥6👏5❤2👍2😢2💯2🤗2🎉1🤩1🙈1🦄1
Forwarded from Библиотека ИИ для айтишников
Если приходилось уходить с одного ИИ-инструмента на другой, что стало главной причиной?
Anonymous Poll
29%
Качество ответов и кода стало не устраивать
14%
Упёрся в лимиты или не хватает функций
10%
Цены кусаются
17%
Проблемы с доступом: блокировки, нужен VPN
3%
Сложности с оплатой
3%
Стало неудобно работать
23%
Не менял инструмент — сижу на привычном
👍4❤3🔥1🤔1🐳1🗿1
Forwarded from Библиотека ИИ для айтишников
Почему разработчик планирует отдавать больше задач Claude
Винсент Шмальбах описал план перераспределить расходы на ИИ: больше работы отдавать Claude, а Codex сохранить для части задач.
К решению его подтолкнули затяжные сессии. По наблюдениям автора, агент иногда часами продолжал проверки и добавлял соседние задачи. Квота расходовалась, а момент, когда можно принять результат и двигаться дальше, было трудно предсказать.
В личном разборе Шмальбах связывает эти эпизоды с условиями подписки и затратами на собственные проекты.
#ии #инструменты
🐸 Библиотека ИИ для айтишников
Винсент Шмальбах описал план перераспределить расходы на ИИ: больше работы отдавать Claude, а Codex сохранить для части задач.
К решению его подтолкнули затяжные сессии. По наблюдениям автора, агент иногда часами продолжал проверки и добавлял соседние задачи. Квота расходовалась, а момент, когда можно принять результат и двигаться дальше, было трудно предсказать.
В личном разборе Шмальбах связывает эти эпизоды с условиями подписки и затратами на собственные проекты.
#ии #инструменты
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉8👍3❤2👏2💊2🥰1👌1🕊1🤗1🗿1😎1
Подготовка мобильных приложений Etsy к пикам нагрузки без мгновенного отката
Неудачный мобильный релиз остаётся у пользователей, пока они не установят исправление. Оно ещё должно пройти проверку магазина приложений. В разборе сезонной подготовки Etsy показано, как команда заранее ограничивает последствия сбоев.
Правила выпуска ужесточают постепенно: сначала откладывают изменения, требующие от продавцов переучиваться, затем ограничивают дополнительную нагрузку на инфраструктуру. На пике нужен допуск старшего руководителя. Заранее проверяют и удалённые флаги: сбойный участок кода должен читать их, чтобы его можно было отключить без обновления.
Срочные оповещения оставляют для ухудшения показателей сбоев. К ошибкам в Sentry добавляют тег последнего экрана пользователя: он помогает найти ответственную команду, когда одна группа ошибок затрагивает и каталог, и корзину.
#инструменты
Неудачный мобильный релиз остаётся у пользователей, пока они не установят исправление. Оно ещё должно пройти проверку магазина приложений. В разборе сезонной подготовки Etsy показано, как команда заранее ограничивает последствия сбоев.
Правила выпуска ужесточают постепенно: сначала откладывают изменения, требующие от продавцов переучиваться, затем ограничивают дополнительную нагрузку на инфраструктуру. На пике нужен допуск старшего руководителя. Заранее проверяют и удалённые флаги: сбойный участок кода должен читать их, чтобы его можно было отключить без обновления.
Срочные оповещения оставляют для ухудшения показателей сбоев. К ошибкам в Sentry добавляют тег последнего экрана пользователя: он помогает найти ответственную команду, когда одна группа ошибок затрагивает и каталог, и корзину.
#инструменты
❤3👌3🍓2🔥1🥰1😢1🙏1🍌1🤨1😨1👾1
Ускорение просмотра изменений в GitHub через упрощение компонентов React
Одна строка кода во вкладке Files changed могла нести больше 20 обработчиков событий. На тысячах строк цена такой архитектуры росла: интерфейс тормозил, память уходила на повторяющиеся компоненты.
Команда GitHub упростила дерево React и передала обработку событий общему обработчику: он определяет строку по атрибутам HTML-элемента. Состояние комментариев и меню перенесли в дочерние компоненты, которые появляются по необходимости.
В разборе оптимизации есть замеры: на 10 000 изменённых строк задержка от действия до обновления экрана снизилась примерно с 450 до 100 мс. Тест проводили на MacBook Pro M1 с четырёхкратным замедлением. Для самых крупных изменений понадобилось ещё и отображать только видимые строки; этот подход тоже разобран в материале.
#веб
Одна строка кода во вкладке Files changed могла нести больше 20 обработчиков событий. На тысячах строк цена такой архитектуры росла: интерфейс тормозил, память уходила на повторяющиеся компоненты.
Команда GitHub упростила дерево React и передала обработку событий общему обработчику: он определяет строку по атрибутам HTML-элемента. Состояние комментариев и меню перенесли в дочерние компоненты, которые появляются по необходимости.
В разборе оптимизации есть замеры: на 10 000 изменённых строк задержка от действия до обновления экрана снизилась примерно с 450 до 100 мс. Тест проводили на MacBook Pro M1 с четырёхкратным замедлением. Для самых крупных изменений понадобилось ещё и отображать только видимые строки; этот подход тоже разобран в материале.
#веб
❤7👍4😐2👏1🎉1🤣1🍌1👨💻1🎃1💘1
This media is not supported in your browser
VIEW IN TELEGRAM
Хотел просто поиграть на Mac. В итоге написал новый движок Total Annihilation
Тут есть те, кто в детстве играл в Total Annihilation? Разработчик решил вернуться к любимой игре детства и написал для неё собственный движок на Go. При этом игровые движки до этого он вообще не делал.
Он изучал записи матчей, разбирал сетевые пакеты, ставил эксперименты в оригинальной игре. В общем, парень сильно увлёкся.
Конечно же не обошлось без вайбкодинга. Claude и Codex помогали исследовать старый движок и писать новый. Автор проверял результат, сравнивал с оригиналом и исправлял ошибки.
📎 Подробности он собрал здесь.
Проект называется Nanolathe, код открыт. А самое приятное, что три миссии уже сейчас можно запустить прямо в браузере. Пока это beta, баги ещё есть. Для полной игры понадобятся свои оригинальные файлы. Если играли в Total Annihilation, можно сравнить, что получилось.
Тут есть те, кто в детстве играл в Total Annihilation? Разработчик решил вернуться к любимой игре детства и написал для неё собственный движок на Go. При этом игровые движки до этого он вообще не делал.
Он изучал записи матчей, разбирал сетевые пакеты, ставил эксперименты в оригинальной игре. В общем, парень сильно увлёкся.
Конечно же не обошлось без вайбкодинга. Claude и Codex помогали исследовать старый движок и писать новый. Автор проверял результат, сравнивал с оригиналом и исправлял ошибки.
Проект называется Nanolathe, код открыт. А самое приятное, что три миссии уже сейчас можно запустить прямо в браузере. Пока это beta, баги ещё есть. Для полной игры понадобятся свои оригинальные файлы. Если играли в Total Annihilation, можно сравнить, что получилось.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14💊9😁4👍3👏3🤔2💯1🏆1🍾1🤓1🤝1
Замена Redis на MySQL в Shopify: устройство резервов и поиск дефицита соединений
На время оплаты Shopify резервирует товары, чтобы два покупателя не забрали последнюю единицу. Перенос резервов в MySQL позволил списывать товар и снимать резерв одной транзакцией. Но первые попытки упирались в конкуренцию за одну строку с количеством товара.
Команда завела строки для отдельных единиц, ограничив запас 1000 строк на товар и место хранения. SKIP LOCKED позволяет при резервировании пропускать заблокированные строки и выбирать свободные.
Запросы ускорились, но соединений всё равно не хватало. Метки в SQL-запросах и замеры на прокси показали: другие части оформления заказа удерживали соединения слишком долго. В разборе миграции Shopify есть эта диагностика, подбор ключей и уровня изоляции, а также проверка двух систем в параллельной работе.
#веб
На время оплаты Shopify резервирует товары, чтобы два покупателя не забрали последнюю единицу. Перенос резервов в MySQL позволил списывать товар и снимать резерв одной транзакцией. Но первые попытки упирались в конкуренцию за одну строку с количеством товара.
Команда завела строки для отдельных единиц, ограничив запас 1000 строк на товар и место хранения. SKIP LOCKED позволяет при резервировании пропускать заблокированные строки и выбирать свободные.
Запросы ускорились, но соединений всё равно не хватало. Метки в SQL-запросах и замеры на прокси показали: другие части оформления заказа удерживали соединения слишком долго. В разборе миграции Shopify есть эта диагностика, подбор ключей и уровня изоляции, а также проверка двух систем в параллельной работе.
#веб
❤5👎4🌚3🔥1😁1💋1👨💻1👀1🙈1🙊1👾1
Cookies удалены, а браузер всё ещё узнают
Удаление cookies не обязательно делает браузер новым посетителем для сайта. Автор этой демонстрации собирает его цифровой отпечаток и выдаёт по нему прозвище. Можно обновить страницу, удалить cookies или включить VPN и сравнить, изменится ли ник.
В ход идут результаты рисования через canvas и WebGL, обработки звука, язык, часовой пояс и характеристики устройства. Значения складываются в хеш. VPN меняет IP, но остальные признаки могут остаться прежними. По отдельности они встречаются у многих людей; сочетание помогает различать браузеры.
📎 Попробуйте на своём браузере и посмотрите, какие данные используются. Это упрощённое демо: изменение одного значения меняет отпечаток, а встроенная защита браузера может мешать распознаванию. Ник не доказывает, что вас однозначно узнают на всех сайтах.
Удаление cookies не обязательно делает браузер новым посетителем для сайта. Автор этой демонстрации собирает его цифровой отпечаток и выдаёт по нему прозвище. Можно обновить страницу, удалить cookies или включить VPN и сравнить, изменится ли ник.
В ход идут результаты рисования через canvas и WebGL, обработки звука, язык, часовой пояс и характеристики устройства. Значения складываются в хеш. VPN меняет IP, но остальные признаки могут остаться прежними. По отдельности они встречаются у многих людей; сочетание помогает различать браузеры.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥2🤔2💊2👍1🤩1💔1🤨1🤗1
Разработчик превратил Wi-Fi роутер в программируемый радиоприёмник
Автор написал собственную прошивку для радиочипа и научился получать с него сырые данные. Теперь можно открыть браузер и увидеть, что происходит в эфире на частотах 2,4, 5 и 6 ГГц. Правда, данных столько, что передавать их на компьютер приходится через Ethernet на 10 Гбит/с.
На демо он показывает сразу весь диапазон 2,4 ГГц: видны передачи Wi-Fi и короткие всплески сигнала. Частоту, усиление и фильтры можно менять прямо в интерфейсе.
Если захочется повторить, нужен именно Gemtek W1700K, USB-UART-адаптер и компьютер с Linux и сетевой картой на 10 Гбит/с. Учтите: установка заменяет штатную ОС роутера, а новая прошивка только принимает сигналы.
📎 Код, демо и инструкция
Автор написал собственную прошивку для радиочипа и научился получать с него сырые данные. Теперь можно открыть браузер и увидеть, что происходит в эфире на частотах 2,4, 5 и 6 ГГц. Правда, данных столько, что передавать их на компьютер приходится через Ethernet на 10 Гбит/с.
На демо он показывает сразу весь диапазон 2,4 ГГц: видны передачи Wi-Fi и короткие всплески сигнала. Частоту, усиление и фильтры можно менять прямо в интерфейсе.
Если захочется повторить, нужен именно Gemtek W1700K, USB-UART-адаптер и компьютер с Linux и сетевой картой на 10 Гбит/с. Учтите: установка заменяет штатную ОС роутера, а новая прошивка только принимает сигналы.
Please open Telegram to view this post
VIEW IN TELEGRAM
💊12👍4🤷♂3❤2👏1😁1💅1
Как метрики помогли найти ошибку в ИИ-оценщике размера видео
Cliparr обещал один размер видео, а после конвертации получался другой: в 16 замерах файлы оказались на 30–83% больше прогноза. ИИ написал формулу, которая уменьшала ожидаемый размер пропорционально высоте кадра, хотя при заданном битрейте расчёт должен опираться на длительность.
В разборе проверки оценщика автор показывает, как метрики Sentry выявили ошибку: после каждой конвертации фиксируется отношение реального размера к прогнозу, а результаты группируются по формуле и формату видео. Так можно сравнить старый и новый расчёт и найти режимы с наибольшими отклонениями.
В материале есть код сбора метрик и настройка панели. Замеры идут из публичного браузерного конвертера, сами видео, имена файлов и адреса на сервер не отправляются.
#ии #веб
Cliparr обещал один размер видео, а после конвертации получался другой: в 16 замерах файлы оказались на 30–83% больше прогноза. ИИ написал формулу, которая уменьшала ожидаемый размер пропорционально высоте кадра, хотя при заданном битрейте расчёт должен опираться на длительность.
В разборе проверки оценщика автор показывает, как метрики Sentry выявили ошибку: после каждой конвертации фиксируется отношение реального размера к прогнозу, а результаты группируются по формуле и формату видео. Так можно сравнить старый и новый расчёт и найти режимы с наибольшими отклонениями.
В материале есть код сбора метрик и настройка панели. Замеры идут из публичного браузерного конвертера, сами видео, имена файлов и адреса на сервер не отправляются.
#ии #веб
👏3🏆2⚡1❤1👍1🎉1🕊1🐳1👻1
Миллион запросов в секунду мимо общего балансировщика
Сто микросекунд задержки выглядят мелочью. Пока один запрос не превращается в сотню параллельных: ответ придёт, когда закончит самый медленный. У Zalando эти обращения ещё и проходили через общий Skipper. При скачках задержки было трудно понять, кто виноват: сервис или чужая инфраструктура.
Команда перенесла выбор узла внутрь вызывающего процесса. Пришлось точно повторить прежнее хеш-кольцо, чтобы товары попадали в те же кеши. Переходили постепенно, сохранив обратный путь через Skipper на случай проблем.
На пике напрямую пошло больше миллиона запросов в секунду. По данным команды, задержки стабилизировались, а парк Skipper для этих маршрутов сократился с 50+ копий до восьми. Сам Skipper никуда не делся: внешние запросы остались у него. Тут убрали один лишний круг внутри системы, а не переписали весь входной трафик.
Сто микросекунд задержки выглядят мелочью. Пока один запрос не превращается в сотню параллельных: ответ придёт, когда закончит самый медленный. У Zalando эти обращения ещё и проходили через общий Skipper. При скачках задержки было трудно понять, кто виноват: сервис или чужая инфраструктура.
Команда перенесла выбор узла внутрь вызывающего процесса. Пришлось точно повторить прежнее хеш-кольцо, чтобы товары попадали в те же кеши. Переходили постепенно, сохранив обратный путь через Skipper на случай проблем.
На пике напрямую пошло больше миллиона запросов в секунду. По данным команды, задержки стабилизировались, а парк Skipper для этих маршрутов сократился с 50+ копий до восьми. Сам Skipper никуда не делся: внешние запросы остались у него. Тут убрали один лишний круг внутри системы, а не переписали весь входной трафик.
🤔3👏2🎉2❤1🔥1😘1