Салют, Хабр! Я думаю, каждый из вас знаком или, по крайней мере, слышал о такой прекрасной утилите как NoDPI написанной на питоне (большое спасибо @Lord_of_Rings!). Сегодня я хочу представить вам (почти) свою разработку, не требующую ни питона ни прокси. Мы будем патчить прямо на диске библиотеку chrome.dll - входяющую в пакет Chrome на Windows и лежащую в директории "C:\Program Files\Google\Chrome\Application\140.0.7339.208\chrome.dll". Цифры могут меняться в зависимости от версии. Дан…
ДИСКЛЕЙМЕР: Статья написана для блога на основе интервью с управляющим производства пружин А. Петрухиным.Они открывают двери самолётов, чистят стёкла автомобилей, затягивают шнурки на куртке и поднимают сиденье КамАЗа. Без них не сработает дезодорант, не выстрелит пистолет и не поедет снегоход.Они везде — но их никто не замечает.СтатьяПружины бывают разные.— Пружина сжатияСтоит, например, в шариковой ручке, в пружинном матрасе.В сиденье камазаИ в щетке стеклоочистителя ВАЗа— Пружина растяженияУ…
TL;DR: Мы перенесли битовый синтаксис Erlang в Go, чтобы парсить бинарные протоколы без боли. Получилась библиотека funbit — декларативный парсер с поддержкой не выровненных по байтам данных.ПредысторияВ процессе разработки funterm — мультиязыкового REPL, объединяющего Python, Lua, JavaScript и Go — мы столкнулись с необходимостью эффективной работы с бинарными данными. Нужно было парсить сетевые протоколы, обрабатывать структурированные данные и работать с битовыми полями на уровне отдельных б…
Команда Go for Devs подготовила перевод статьи о том, как правильно группировать сабтесты в Go. Автор показывает, что в большинстве случаев достаточно держать тесты плоскими, а когда нужна разная инициализация и очистка — добавить лишь один уровень вложенности. В статье разбираются плюсы и минусы разных подходов: от ручных t.Run до reflection-хаков и сторонних библиотек.Go поддерживает сабтесты начиная с версии 1.7. С помощью t.Run можно вкладывать тесты друг в друга, задавать имена кейсам и пр…
Disclaimer: Материал статьи создан с использованием ИИ (с включенной опцией веб поиска). Здесь не будет рабочих кейсов по заявленной теме. Кроме этого, текст практически не редактировался, так, например, иногда ИИ применяет специальные термины на английском, не переводя их на русский язык - в статье они по большей части оставлены также без перевода. Иллюстрация к статье сгенерирована с помощью ИИ.Неоднократно встречал мнение, что Golang не слишком хорош для сложной бизнес-логики на больших прое…
Причины возникновения проблемыПочему со временем в проекте накапливается всё больше неиспользуемого JavaScript кода:Удалили старый функционал, а код, которые он использовал, не подчистили. Например, был на главной слайдер, его удалили. Но код подключения плагина слайдера остался.В CMS системе установлено куча модулей. Каждый из них подключает свой JavaScript файл. Но модули CMS систем всегда создаются с избыточным функционалом, чтобы покрыть потребности максимально широкого круга потенциальных …
модалка открывается, и сразу закрываетсяВсем привет!Давайте представим, что от бизнеса поступил запрос: "Нам надо, чтобы при входе на сайт сразу же открывалось модальное окно авторизации для сканирования клиентского QR-кода."Вы запускаете стабильно работающий проект, применяете useEffect с необходимой фичей и пустой зависимостью, а затем - начинаете тестировать.И вот незадача: модальное окно открывается на миллисекунду и моментально закрывается.При этом: логи в порядке, стейты меняются …
Команда JavaScript for Devs подготовила перевод статьи о долгом пути протокола QUIC в Node.js. Четыре года сообщество ждало, пока OpenSSL откроет нужные API — и вот, с выходом версии 3.5, это наконец случилось. Уже в Node.js 25 ожидается первая реализация QUIC — шаг, к которому проект шёл почти полдесятилетия.QUIC — это транспортный протокол, построенный на основе UDP и призванный заменить связку TCP+TLS.Хотя его относят к транспортному уровню, на практике он сильно отличается от привычных прот…
Для расширения базового функционала среды разработки DevelSCADA, система поддерживает возможность использования скриптов. Основным языком для разработки скриптов является JavaScript. Скрипты, в свою очередь поддерживают весь функционал языка JavaScript, дополняя его функциями работы с системой DevelSCADA.Система поддерживает работу с двумя видами скриптов - скрипты интерфейса и скрипты ПЛК. Оба типа скриптов имеют идентичные интерфейсы для взаимодействия с системой, но при этом имеют разное пре…