Привет, на связи Андрей Шведов, руководитель проектов ГРАН Груп.Мы производим печатные платы — основу для сложной электроники метрополитена. На базе изготовленных нами плат работают системы управления, контроллеры для стрелок и переводов, датчики безопасности и телемеханика.Вот и я сегодня добирался до работы на метро.Турникет на входе мгновенно считал проездной с моего смартфона. На табло высветилось точное время прибытия следующего поезда — 1 минута 40 секунд. Прибывающий состав плавно заторм…
Многие организации с богатой историей всё ещё завязаны на устаревшие внутренние системы, которые работают исключительно в Internet Explorer (IE). Проблема касается не только внешнего вида, но и самой логики работы: раньше вычисления и ключевые процессы часто реализовывались через отдельный бинарный модуль (чаще всего ActiveX), написанный на компилируемом языке. Этот модуль загружался с сайта на компьютер пользователя и выполнялся внутри процесса браузера.Шли годы, технологии развивались, компан…
Привет! Я Михаил Абраш — старший Go-разработчик, работаю в команде Evolution AI Factory в Cloud.ru. Недавно мы начали активно внедрять новые сервисы, переходя с Python на Go, и заметили, что нагрузка между репликами распределяется неравномерно. У нас в команде не было единого подхода к тому, как правильно делать балансировку, поэтому решили провести небольшое R&D-исследование. Что из этого вышло, к чему мы в итоге пришли и как работает балансировка gRPC в целом, рассказал в статье. Почему н…
Программисты на Go уже давно и долго жалуются на слишком многословную обработку ошибок. Все мы близко (а иногда и болезненно) знакомы со следующим шаблоном кода:x, err := call() if err != nil { // обработка err }Проверка if err != nil встречается настолько часто, что может становиться объёмнее остального кода. Обычно это происходит в программах, выполняющих много вызовов API, в которых обработка ошибок рудиментарна и они просто возвращаются. Некоторые программы в итоге выглядят примерно…
Каждый Go-разработчик знаком с этим паттерном — создание обёрток для ошибок с дублированием метаданных: func (*SomeObject).SomeMethod(val any) error { if err := otherMethod(val); err != nil { return fmt.Errorf("otherMethod %w with val %v", err, val) } return nil } Проблемы такого подхода: Дублирование названий методов в сообщениях об ошибках Ручное добавление метаданных (аргументы, переменные) в каждое место Сложность отслеживания места возникновения ошибки при нескольких то…
Что такое Wails?Wails - это легковесный фреймворк, предназначенный для создания кросс-платформенных GUI приложений рабочего стола на golang и стандартных веб технологиях (Svelte, React, Preact, Vue, Lit, Vanilla JS). Ближайшие аналоги это естественно Electron (JS), Tauri (Rust), хочется добавить Qt (С++), но это уже другой уровень. Сразу скажу, что Wails не идеален, имеет множество ограничений и в целом не подойдёт для чего-то крупного, Tauri к примеру более зрелый проект, больше функций, быстр…
Привет!Меня зовут Алексей Фоменко.Я разработчик из Нижнего Новгорода.Последние 5 лет я бесплатно работаю волонтёрю в экологическом центре "Дронт", где занимаюсь проектом "42 - я имею право!". Мы освещаем экологические проблемы Нижегородской области и рассказываем о том, как их решать.Что делать, если во дворе появился строительный забор? Или уже начали вырубать деревья?Рано или поздно с подобным вопросом сталкивается каждый житель крупного российского города. На практике ответ н…
Даже самые зелёные новички в вебе знаю, что скрипты JS, нужно располагать в самом низу страницы перед закрывающим тегом script и всё знаю что это повышает скорость загрузки страницы. Но Вы когда-нибудь задумывалась, почему оно так?JavaScript по своей природе однопоточный язык, но мало того, он делит этот единственный поток сразу с HTML и CSS. Это приводит к тому, что встречая тег script, браузер начинает, исполнять его код, при этом останавливая дальнейшую обработку HTML и CSS и в результате по…
Компания Qualcomm выпустила исправления для трех уязвимостей нулевого дня. Разработчики предупредили, что эти проблемы уже использовались в ограниченных целевых атаках.