Category : golang

golang
Как на самом деле хранятся изображения?

Этот пост — погружение в кроличью нору. Разработчик Монсеф Аббад задумался о изображениях — вероятно, после недавнего изучения им некоторых схем компрессии. Общеизвестно, что изображения бывают либо полутоновыми, либо RGB, когда новые цвета создаются на основе смешения красного, зелёного и синего. Но для хранения изображения требуется нечто большее, чем просто выравнивание трехбайтовых значений RGB. Что-то в этой идее пробудило любопытство автора, поэтому в статье он попытался удовлетворить его…

  • среда, 7 мая 2025 г. в 00:00:10
golang
Переход с Python на Go: мысли человека, которому иногда сложно

Решил перейти на Go. Причина простая — видел вакансии с зарплатой выше 100 тысяч, и почти везде Go. Я до этого писал в основном на Python. Немного Django, немного микросервисов, WordPress. Закончил онлайн-школу, работаю уже третий год. Решил, что пора прокачиваться и становиться программистом-полиглотом.Вот мой опыт и небольшие замечания по языку:Первый шок — это mainКогда я писал на Python, всё было просто: написал функцию — она работает. Хочешь — запускаешь что-то напрямую. Хочешь — импортиру…

  • среда, 7 мая 2025 г. в 00:00:09
golang
Gonkey, асинхронная коммуникация и новые мапы. Материалы с Golang Meetup

Golang — приключение не на 20 минут, а игра вдолгую. Подтвердили это, собрав в офисе спикеров Lamoda Tech, а также 2ГИС и МТС. Помимо новых докладов, разблокировали экспериментальный формат факап-разгонов, где наши друзья из ВИ.Tech, Orion soft и Cloud.ru вместе со зрителями делились историями провалов. Публикуем материалы с этой встречи.Видео и презентации докладовКак мы автоматизировали интеграционное тестирование с Gonkey и не пожалелиПаша Егорычев, Go-разработчик Lamoda TechКирилл Поляков, …

  • среда, 7 мая 2025 г. в 00:00:08
golang
Go: не используйте http.Server.Serve и http.Server.ServeTLS одновременно

Эта заметка будет очень короткой. Но надеюсь, она кому-то спасёт несколько часов жизни.У меня был код. К счастью, это было в тесте, а не в боевом коде, поэтому никто не пострадал.Код создавал http.Server, запускал две гороутинки для обслуживания входящих соединений:go func() { srvr.Serve(p) }() go func() { srvr.ServeTLS(e, "", "") }() Ну и дальше создавал клиента, делал к серверу обращения (HTTP GET) попеременно используя http и https ну и чего-т…

  • вторник, 6 мая 2025 г. в 00:00:07
golang
Карты(maps) в Go

Карты (maps) в Go — это отличный инструмент для хранения данных в виде пар «ключ — значение». Они широко используются в разработке благодаря своей гибкости и удобству. Например, карты часто применяются для кэширования данных, хранения конфигураций или обработки больших объемов информации. Однако эффективная работа с картами требует понимания их внутреннего устройства и особенностей управления памятью. Под капотом карты реализованы на основе хеш-таблиц, что обеспечивает быстрый доступ к данным, …

  • вторник, 6 мая 2025 г. в 00:00:06
golang
Ты решаешь LeetCode неправильно. Как пройти любое собеседование в BigTech?

Привет! Я ex. Разработчик из VK, сейчас принял оффер от Ozon'a, и за последний месяц я прошел собеседования в 4х бигтех компаниях: Ozon, Avito, Wildberries и T-Bank и везде дошел до финалов/офферов. Пообщавшись во многих группах, посвященных Go-разработке, я понял, что много умных ребят готовясь к собесам не имеют четкой системы подготовки, и из-за этого заваливают технические собесы в компании. Не претендуя на истину в последней инстанции, предлагаю свою методику подготовки к собесам, кото…

  • понедельник, 5 мая 2025 г. в 00:00:05
golang
Я сделал самую удобную либу для Go-конфига

Если я говорю "самая удобная", значит в сложившемся годами подходе должны быть проблемы, и я их выделил и как-то решил. Давайте разбираться.Проблемы стандартного подхода к конфигурации в GoСтандартный подход к управлению конфигурацией в Go обычно выглядит примерно одинаково, будь то популярный viper, env или менее известные решения типа confita :Создаём структуру кофигурацииДля иерархичности конфигурации вкладываем одну структуру в другуюДобавляем теги на поля наших структур, как миниму…

  • воскресенье, 4 мая 2025 г. в 00:00:07
golang
HTTP/2 / HTTP/3 и gRPC на Rust: пишем учебный Mini-Transport

Rust GO!Обновлено: пример полностью собирается на stable Rust (edition 2024) с актуальными версиями крейтов: bytes, anyhow, tokioquinn,rcgen иrustls.Что сделаемРазберёмся, как фреймируются HTTP/2 и HTTP/3 (QUIC).Напишем крошечный мини-фреймворк «Mini-Transport» (≈600 строк) на Rust:• чтение/запись HTTP/2-фреймов,• gRPC-кодек (без protobuf-codegen),• переход на QUIC.Соберём рабочий echo-пример: клиент шлёт «hello», сервер отвечает «world».1 | Базовая теорияHTTP/2 — бинарный протокол, каждый фрей…

  • пятница, 2 мая 2025 г. в 00:00:07
golang
Минус Lua, плюс перформанс: как толстый клиент на Go сделал работу с Tarantool эффективнее

Tarantool Proxy — «умный посредник», который делает работу с кластером Tarantool надежнее, быстрее и проще, беря на себя рутинные задачи вроде балансировки и безопасности. Это компонент в архитектуре шардированного Tarantool, который нужно написать самому на основе библиотеки vshard. То есть это не standalone приложение из коробки. Заметим, что изначально основная библиотека Tarantool Proxy — vshard была написана на Lua, из-за чего для получения всех профитов от работы с ним нужна была специфич…

  • четверг, 1 мая 2025 г. в 00:00:06