Тридцать лет назад, в 1995 году, мы провели первую в России и бывшем СССР demo party (или, говоря более понятным языком, компьютерный фестиваль) - ENLiGHT. С тех пор мы делали это почти ежегодно, с 1999 года по нынешнее время - под именем "Chaos Constructions". В этой статье я хочу немного рассказать о Chaos Constructions'2025, прошедшем 23 и 24 августа этого года в Санкт-Петербурге.Как уже стало традиционным, всё происходившее в эти два дня можно условно разделить на:Ретро выставку…
Когда отлаживаешь программу, речь идет про использование отладчика в студии или другой IDE, то почти всегда имеешь дело с точками останова (breakpoint, бряками) — механизмом, когда выполнение программы приостанавливается, чтобы можно было заглянуть внутрь и понять, что происходит. Точек останова есть всего два основных типа, программные и аппаратные, а остальные все сделаны на их основе. Эти два базовых типа могут вести себя похоже, но устроены по-разному. Программные точки останова — это то, …
Салют, Хабр! Я думаю, каждый из вас знаком или, по крайней мере, слышал о такой прекрасной утилите как 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 с необходимой фичей и пустой зависимостью, а затем - начинаете тестировать.И вот незадача: модальное окно открывается на миллисекунду и моментально закрывается.При этом: логи в порядке, стейты меняются …