Golang
Статистикаadmin - @haarrp https://t.me/golangl - golang чат https://t.me/golangtests go тесты https://t.me/ai_machinelearning_big_data машинное обучение @itchannels_telegram РКН: clck.ru/3Fmx3s #VRHSZ
- Последний пост
- 13 авг.
- Последнее чтение
- 14 авг.
- Постов за неделю
- 3
- Всего постов
- 122
- Тип
- открытый
- Язык
- русский
- Категория
- Образование
- В каталоге с
- 12 авг.
- 1/24сутки в ленте
- 3 386
- 1/48двое суток
- 3 880
- 1/72трое суток
- 4 185
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
👣 `os.ReadFile()` действительно читает весь файл в память. Но RSS может показать почти ноль - и вот почему Есть интересный эксперимент: читаем файл на 500 МБ через os.ReadFile(), ставим программу на паузу и смотрим RSS процесса. b, err := os.ReadFile("bigfile.txt") if err != nil { panic(err) } fmt.Println(len(b)) fmt.Scanln() Ожидаем около 500 МБ RSS. А видим условные 3 МБ. На первый взгляд кажется, что os.ReadFile() ничего не загрузил. Но причина совсем другая. []byte - это только descriptor: slice ├─ ptr ───────────┐ ├─ len │ └─ cap │ ▼ +-------------------+ | 500 MB byte array | +-------------------+ Сам slice header на 64-битной системе занимает всего несколько машинных слов. Основные 500 МБ находятся в backing array на heap. Ключевой момент - liveness analysis. После: fmt.Println(len(b)) fmt.Scanln() переменная b больше не используется. Для Go это означает, что объект может перестать считаться live ещё до выхода main(). GC получает право освободить backing array, пока программа всё ещё ждёт Enter. Добавим обращение после паузы: fmt.Scanln() fmt.Println(b[0]) И RSS внезапно становится примерно равен размеру файла. Это хороший пример того, почему: scope переменной != время жизни объекта для GC. Чтобы явно сохранить объект живым до определённой точки, в низкоуровневом коде существует: runtime.KeepAlive(b) Но использовать KeepAlive просто ради красивого RSS обычно не нужно - он важен прежде всего при работе с finalizer, unsafe, syscall и foreign memory. Ещё одна ловушка - go run. go run main.go bigfile.txt сначала компилирует временный binary, а затем запускает его отдельным процессом. Поэтому смотреть память нужно у процесса вида: /tmp/go-build.../exe/main а не у самого go run. Практический вывод для production: data, _ := os.ReadFile(path) подходит для небольших файлов, но большой файл означает большую аллокацию, давление на heap и GC. Для потоковой обработки лучше: f, err := os.Open(path) if err != nil { return err } defer f.Close() r := bufio.NewReaderSize(f, 256<<10) или вообще: _, err = io.Copy(dst, f) Тогда объём рабочей памяти зависит от размера буфера, а не от размера файла. Главный урок: RSS показывает состояние процесса в конкретный момент, а не полную историю его аллокаций. И если профилируете память Go-приложения, одного ps мало - смотрите ещё heap profile, runtime.MemStats и GODEBUG=gctrace=1.
Вам доклады по Go или Java? VK приглашает на митап с двойной начинкой 26 августа VK собирает Go- и Java-инженеров, чтобы прокачать знания. В программе два трека — Go и Java, по три доклада в каждом. Трек Go: • «Компиляция Go в динамическую либу, или как мы ускорили выкатку фичи в два раза, но нам не понравилось», Михаил Кичигин, бэкенд-разработчик, Avito Tech • «Go-платформа VK: как мы построили единую основу для создания Go-сервисов», Александр Апанасенко, руководитель команды SDK Backend, VK • «Почтальон от Kubernetes до Palo Alto. Как осуществляется доставка информации об адресах», Дарья Кулькина, бэкенд-разработчик, Точка Банк Трек Java: • «Перформанс-трюки в поисковой платформе Ozon», Пётр Портнов, ведущий разработчик среднего поиска, Ozon • «Архитектура современного движка платёжной системы и переход к новой архитектуре», Игорь Крикунов, технический лидер разработки DBC, Альфа-Банк • «Переход от федерации S3-кластеров в пользу коммунального и мультитенантного кластера», Кирилл Боблак, ведущий разработчик One-cloud, VK А ещё будет мастер-класс по прокачке навыка, который сделает вас звездой любого вечера, и афтепати, чтобы обсудить доклады в неформальной обстановке. Встречаемся в 17:00, начало в 18:00. Участие бесплатное, регистрация обязательна.
👣 Google внезапно объяснила, почему Go может стать главным языком эпохи AI-кодинга Код теперь пишется слишком быстро. Агент за несколько секунд может выдать сотни строк, переписать пакет или собрать целый сервис. Проблема сместилась туда, где автоматизация пока не спасает: всё это нужно прочитать, проверить и потом годами поддерживать. Именно на этом Google строит свежий аргумент в пользу Go. Go изначально проектировали для больших команд и долгоживущих кодовых баз. Поэтому здесь почти невозможно устроить соревнование по синтаксическим фокусам. gofmt приводит код к одному виду, стандартная библиотека закрывает огромный пласт задач, а компилятор быстро ловит выдуманные методы, неправильные типы и другие типичные ошибки LLM. Сгенерировал код, запустил компилятор и тесты, получил ошибку, исправил, повторил. Рядом уже лежат fuzzing, govulncheck, gopls, go fix, профилирование и tracing. Агенту не приходится каждый раз собирать собственный зоопарк инструментов. Есть и менее очевидный бонус. Go-код в разных проектах обычно выглядит похоже. Меньше вариантов выразить одну и ту же конструкцию, меньше сюрпризов при ревью, проще заметить галлюцинацию модели или странную зависимость. Для мира, где код начинают генерировать в огромных объёмах, такая предсказуемость становится очень дорогим преимуществом. Получается забавно: Go долго критиковали за синтаксис, жёсткие правила и отсутствие лишней магии. А теперь именно эти качества неожиданно делают его одним из самых удобных языков для работы с coding agents. https://developers.googleblog.com/why-go-is-an-ideal-language-for-ai-assisted-software-engineering/ #Golang #Go #AI #Programming #AIAgents @Golang_google
🚀 Go 1.27: что нового в следующем большом обновлении Go Go продолжает развивать не синтаксис ради синтаксиса, а то, что реально влияет на production-сервисы. Главные изменения: 🧬 Generic methods Методы смогут иметь собственные type parameters: type Box[T any] struct { Value T } func (b Box[T]) Map[R any](fn func(T) R) Box[R] { return Box[R]{fn(b.Value)} } Это открывает новые возможности для обобщённых библиотек. ⚡ Улучшения работы с памятью Компилятор получил оптимизации для маленьких аллокаций. Результат: - меньше overhead при создании объектов; - быстрее работа с большим количеством мелких структур; - улучшения для allocation-heavy приложений. 📦 Новый encoding/json/v2 Появляется экспериментальная новая версия JSON-пакета: import "encoding/json/v2" Цель - решить старые ограничения encoding/json и сделать работу с JSON более современной. 🔍 Улучшения runtime Изменения затронули: - профилирование goroutine; - trace; - таймеры; - внутренние оптимизации runtime. Go 1.27 показывает привычный подход команды Go: меньше магии - больше предсказуемости и производительности в production. Не революция, а очередная шлифовка языка, который уже лежит в основе Kubernetes, облаков и высоконагруженных систем. Подробнее: https://victoriametrics.com/blog/go-1-27/
Google выпустила open-source сканер уязвимостей для зависимостей OSV-Scanner — инструмент на Go, который проверяет зависимости проекта по базе уязвимостей OSV.dev. Запуск: osv-scanner scan source -r . И он рекурсивно найдёт go.mod, package.json, pom.xml, lock-файлы и другие поддерживаемые форматы, после чего покажет известные уязвимости. Поддерживаются: - Go, Python, Rust, Java, JavaScript, C/C++ и другие экосистемы; - npm, pip, Maven, Cargo, Go Modules, NuGet и другие менеджеры; - Linux-пакеты; - container images; - offline-сканирование; - анализ вызовов, чтобы уменьшать число ложных срабатываний; - рекомендации по обновлению уязвимых зависимостей. Под капотом используется OSV-Scalibr, а данные приходят из открытой OSV-базы, которая агрегирует GitHub Security Advisories, RustSec, Ubuntu Security Notices и другие источники. Установка из исходников: go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest Полезный инструмент для CI/CD и контроля software supply chain без тяжёлых коммерческих платформ. Источник: https://github.com/google/osv-scanner #Golang #CyberSecurity #DevOps #OpenSource
видео или голосовое, без подписи
видео или голосовое, без подписи
+2
Go-приём: как не получить 99% после округления При независимом округлении процентов итоговая сумма может перестать быть равной 100. 33.3 → 33 33.3 → 33 33.4 → 33 Итого: 99% Для простого интерфейса можно округлить первые значения, а последнему передать остаток: package main import "math" func balancePercentages(values []float64) []int { if len(values) == 0 { return nil } result := make([]int, len(values)) used := 0 for i := 0; i < len(values)-1; i++ { result[i] = int(math.Round(values[i])) used += result[i] } result[len(values)-1] = 100 - used return result } Результат: []int{33, 33, 34} Сумма останется равной 100. Но это быстрый приём, а не универсальный алгоритм: - значения должны быть заранее нормализованы; - вся погрешность достаётся последнему элементу; - результат зависит от порядка; - при некорректных данных последнее значение может стать отрицательным. Для справедливого распределения лучше использовать метод наибольших остатков: округлить всё вниз, а недостающие единицы отдать значениям с крупнейшей дробной частью. Код актуален для современной Go 1.26 и работает без изменений. Функция math.Round доступна начиная с Go 1.10.
Лето, ИТ-Пикник и музыка известных артистов уже через несколько дней! 8 августа в Коломенском пройдет ИТ-Пикник. В программе — выступления проекта LAB Антона Беляева, IOWA, Cream Soda, Pompeya, мартина и Совы. А днем — научпоп-лекции, дискуссии об ИИ и больших языковых моделях, мастер-классы и интерактивы. Полезные знакомства и развлечения тоже будут. Зарегистрироваться и узнать подробности можно на сайте мероприятия. В билет входит +1 — можно позвать близких и друзей. До встречи в месте притяжения ИТ.
⚡️ UpSnap - self-hosted панель для удалённого включения компьютеров Сервер, домашний ПК или NAS не всегда должны работать круглосуточно. Но каждый раз подходить к устройству и включать его вручную тоже неудобно. UpSnap решает это через Wake-on-LAN: открываете веб-панель и запускаете нужное устройство одним нажатием. Проект написан на SvelteKit, Go и PocketBase. Что умеет UpSnap: - включать устройства через Wake-on-LAN; - проверять доступность нужного порта; - находить устройства в сети через nmap; - запускать включение по расписанию через cron; - выполнять пользовательские команды выключения; - разграничивать доступ пользователей к устройствам; - работать в Docker на amd64, arm64, arm/v7 и arm/v6. Быстрый запуск: docker run \ --network=host \ seriousm4x/upsnap:latest GitHub: https://github.com/seriousm4x/UpSnap
🐹 `go func()` без контроля - один из самых простых способов сломать Go-сервис Fire-and-forget удобно выглядит в обработчике: запустили горутину, вернули ответ и забыли. Но под нагрузкой появляются проблемы: - число горутин ничем не ограничено; - request.Context() отменяется после завершения handler; - panic в фоновой задаче может уронить процесс; - при shutdown незавершённая работа теряется. Практичнее отправлять фоновые задачи в небольшой worker pool: - фиксированные воркеры ограничивают параллелизм; - буфер создаёт backpressure; - recover изолирует panic; - каждая задача получает собственный timeout; - graceful shutdown завершает принятую работу. Важно сначала остановить HTTP-сервер, а затем закрывать пул - иначе новые запросы продолжат добавлять задачи. Но такой пул хранится в памяти. Если нужны повторы и гарантированная доставка, используйте устойчивую очередь задач. Никогда не запускайте горутину, пока не понимаете, кто и как её остановит. https://rednafi.com/go/supervised-fire-and-forget/ #Go #Golang #Concurrency #Backend
видео или голосовое, без подписи
+1
🌟 MiniMax открыла веса видеомодели H3 Как и было обещано на релизе в пятницу, китайская компания опубликовала модель H3, которая делает короткие ролики со звуком по текстовому описанию, картинкам, видео и аудио на входе. Модель на 33 миллиарда параметров генерирует клипы длиной от 4 до 15 секунд, 24 кадра в секунду, со стереозвуком 32 килогерца, в пропорциях от широких 21:9 до вертикальных 9:16. Реплики персонажей поддерживаются на 11 языках, включая русский. Полный конвейер H3 состоит из трёх частей: 🟠H3-Context-IR разбирает запрос пользователя со всем инпутом (картинки, видео, аудио) и переводит его во внутренний формат, с которым дальше работает модель. 🟢H3-Base по этому формату генерирует видео в разрешении 768p. 🟠H3-Regenerate-2K затем пересобирает сгенерированный ролик в 2K. Но открыли не всю систему - только модуль, который отвечает непосредственно за генерацию. Закрытыми остались H3-Context-IR и H3-Regenerate-2K. 🟡H3-Base опубликована в 2-х вариантах H3-Base-FL2VA работает с первым и последним кадром. Без картинок на входе это генерация по тексту, с одной или двумя - достройка ролика от заданного кадра или между двумя кадрами. H3-Base-Ref2VA принимает смешанный ввод - до 9 изображений, до 3 видео и до 3 аудиодорожек, но суммарно не больше 12 файлов. Звук без картинки или видео система не примет. По рейтингу Artificial Analysis, H3 занимает 1 место в редактировании видео, второе в генерации видео по тексту и третье - по изображению. СomfyUI подготовили детальную инструкцию по использованию в своей среде и опубликовали базовые воркфлоу для генерации по тексту и референсу. Помимо СomfyUI есть кукбуки под SGLang, vLLM и diffusers, а так же промпт-гайды под базу и фулл-реф мод. Лицензия разрешает дообучать модель на своих видео, персонажах или визуальном стиле. Официального кода для трейна пока нет. ⚠️ Коммерческое использование допускается только для компаний с выручкой ниже 20 миллионов долларов. 📌Лицензирование: MiniMax H3 Community License 🟡Модель @ai_machinelearning_big_data #AI #ML #Video #H3 #Minimax
🔴 Тестовое собеседование с Go Senior с опытом работы в Яндексе, EPAM и Uzum в этот четверг 6 августа(в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Go-разработчика. Как это будет: 📂 Маруф Караев, Senior в европйской компании, ex-Uzum, ex-Яндекс, ex-EPAM будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Маруф будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Маруфу Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_go_bot Реклама. О рекламодателе.
🔥 `git push`, после которого не приходится краснеть за PR no-mistakes добавляет перед GitHub локальный шлюз качества. Вместо origin разработчик отправляет ветку в специальный remote, после чего инструмент: — создаёт изолированный worktree; — запускает ИИ-ревью, тесты, линтер и проверку документации; — автоматически исправляет безопасные механические ошибки; — передаёт спорные изменения человеку; — пушит ветку и открывает PR только после прохождения всех проверок. Поддерживаются Claude Code, Codex, Copilot, Cursor, OpenCode и другие агенты. Рабочая директория при этом остаётся нетронутой. GitHub: github.com/kunchenguid/no-mistakes #Git #GoLang #GitHub #DevOps
Управляй реальными устройствами с помощью кода. Попробуй себя в треке по программированию роботов на True Tech Champ 2026 и поборись за 7 500 000 руб. Начать проще, чем кажется: зарегистрируйся, собери команду или объединись с другими участниками на платформе и пройди квалификационный этап до 13 сентября. В онлайн-симуляторе тебе предстоит запрограммировать робособаку и робота-манипулятора для доставки груза через полосу препятствий. Количество попыток не ограничено, а еще тебя будет ждать серия обучающих вебинаров. Лучшие команды пройдут в финал и будут программировать реальных роботов на офлайн-полигоне 22 октября на большой сцене. Масштабный финал объединит борьбу за призовой фонд в 7 500 000 руб., выступления хедлайнеров, доклады спикеров и активности для всех гостей мероприятия. Успей зарегистрироваться и пройти квалификацию до 13 сентября. Реклама. ООО "МВС", ИНН 7707767501, Erid:2VSb5z2NqwG
IRIS - open-source автодополнение на Go, которое рисует меню подсказок прямо внутри TTY. Инструмент индексирует историю команд и aliases, после чего предлагает подходящие команды в реальном времени. Работает на Linux и macOS, включая SSH, Tmux и обычные виртуальные терминалы. Внутри - один нативный Go-бинарник: https://github.com/versenilvis/iris
🔥 Grafana Beyla - observability для приложений без SDK и правок в коде Beyla использует eBPF, чтобы автоматически находить сервисы и собирать телеметрию прямо на уровне процессов и сетевого стека Linux. На выходе получаем: • OpenTelemetry-трейсы • RED-метрики: запросы, ошибки и длительность • экспорт в OpenTelemetry и Prometheus • поддержку HTTP/HTTPS, gRPC, SQL, Redis, Kafka и MongoDB • работу с Go, Java, .NET, Node.js, Python, Ruby, Rust и другими языками Достаточно указать порт, PID или имя исполняемого файла - встраивать агент в приложение и пересобирать сервис не требуется. Особенно удобно для legacy-сервисов и Kubernetes, где полноценную инструментализацию долго или рискованно добавлять вручную. Grafana передала проект в экосистему OpenTelemetry под названием OpenTelemetry eBPF Instrumentation — OBI. Основная разработка постепенно переезжает в upstream-репозиторий. Лицензия Apache 2.0. 🔗 https://github.com/grafana/beyla
🔥 pkg.go.dev теперь можно нормально использовать прямо из терминала У Go появился официальный pkg.go.dev API, и поверх него уже начали собирать интересные инструменты. Alex Pliutau сделал TUI-браузер пакетов на Bubble Tea. Из терминала можно: • искать Go-пакеты • смотреть версии модулей • изучать экспортируемые symbols • получать зависимости и reverse dependencies • подтягивать данные об уязвимостях Раньше для подобных инструментов приходилось парсить pkg.go.dev. Теперь есть официальный read-only REST API и OpenAPI-спека, поэтому клиент можно сгенерировать через oapi-codegen. Сам TUI получился довольно чистым: Bubble Tea отвечает за state/update/render, а API-вызовы вынесены отдельно. Особенно удобно для тех, кто живёт в Neovim и не хочет постоянно прыгать между терминалом и браузером. А дальше сюда легко добавить fuzzy search, dependency tree, кеширование и просмотр документации. Хороший небольшой проект, чтобы заодно разобраться с Bubble Tea + OpenAPI + Go API clients. https://packagemain.tech/p/building-a-pkggodev-tui-explorer
Каждый год в середине лета мы с друзьями собираемся на E-CODE. Ещё относительно молодая конфа Ozon Tech стала уже своего рода легендой. Не удивительно: хардовость официальной части здесь не уступает громкости афтерпати. На E-CODE 2026 нас по части бэкэнда ждут: • Runtime Async с его + и – • трассировка с eBPF • ускорение на SIMD • построение кастомной real-time системы видеоаналитики • сравнительный анализ алгоритмов сборки мусора Фишка этого года — брейнринг разработчиков и ИИ. Эксперты разберут сложные кейсы и сравнят свои подходы с тем, что предложит машина. Победителя выберет зал. Регистрируйтесь сейчас, чтобы услышать это всё вживую: https://ecode.ozon.tech/ 12 и 13 сентября, Москва. До встречи на E-CODE!