Category : golang

golang
Реверс-инжиниринг  GDB для работы с Pwndbg

Функционал GDB существенно сужается, когда приходится иметь дело с файлами, из которых убраны отладочные символы (получаются так называемые «урезанные бинарники»). Функции и имена переменных превращаются в бессмысленные адреса. Для установки контрольных точек приходится отслеживать адреса нужных нам функций из внешнего источника. Также нужно выводить в консоль структурированные значения и после этого корпеть над дампом памяти, пытаясь вычленить, где именно пролегают границы полей.Вот почему эти…

  • воскресенье, 15 сентября 2024 г. в 00:00:10
golang
Идеальная алгоритмическая секция на Golang (ИМХО)

Привет, Хабр! А вы любите на собеседованиях проходить алгоритмические секции? А лайв-кодинг? Задачки такие «интересные», что на код-ревью такого бы умельца — тряпками и бранными словами. Минимум...., но коллега же. Поэтому просто попросим переделать.Решать задачки под присмотром пары, а то и десятка глаз, смотрящих на тебя. И в них далеко не страх, как в известной песне, а боль и разочарование. Вроде и резюме, и опыт релевантный, а задачу дали абсурдную, которую на проекте никогда решать не при…

  • суббота, 14 сентября 2024 г. в 00:00:08
golang
Как уменьшить образ Docker для работы с устройствами IoT

На устройствах интернета вещей (IoT) зачастую слишком мало ресурсов, и их не хватает, чтобы подтягивать и использовать тяжеловесные образы Docker. В этой статье будет показано, как можно уменьшить образ Docker на 36-91% при помощи инструментов patchelf и strace, не перекомпилируя при этом контейнеризованные приложения. Также рассмотрим, как создавать минимальные образы для собственных приложений, написанных на Rust, Go, C/C++.❯ Зачем уменьшать образ Docker?В зависимости от того, каков размер об…

  • пятница, 13 сентября 2024 г. в 00:00:03
golang
Три способа оптимизировать работу с памятью на Go с помощью memory pools

Привет, Хабр! Меня зовут Александр Иванов, я разрабатываю средства управления сетевыми элементами сотовой связи и пишу на языке Go в YADRO. Однажды я работал над приложением, которое испытывало пиковые нагрузки каждые 10 минут, но выполнить обработку памяти быстро мешал Garbage Collector. Чтобы решить эту проблему, я изучил несколько способов реализации memory pool и провел испытания скорости работы. В этой статье расскажу, как уменьшить влияние GC на выполнение программы и покажу бенчмарки для…

  • четверг, 12 сентября 2024 г. в 00:00:07
golang
Функциональные опции в Go

Функциональные опции в Go. Комикс required? Optional!Салют! Меня зовут Дима, я руковожу командой разработки ядра цифровой медицины в Республике Узбекистан. Сегодня я хочу поделиться своими знаниями о паттерне, который может значительно упростить работу, если ты пишешь на Go. Речь пойдет о функциональных опциях.Поначалу это может показаться немного сложным, но на самом деле идея и реализация очень просты. Поверь, как только ты разберешься, твой код станет немного гибче и проще.К сожалению в Go н…

  • четверг, 12 сентября 2024 г. в 00:00:06
golang
Jira, Golang и немного фантазии: строим конвейер для создания новых сервисов

Привет! Меня зовут Андрей, я Head of Platform в финансовом маркетплейсе Банки.ру. Со мной Борис @qbudhaЗырянов, go/php разработчик. Сегодня расскажем о том, как мы разработали и внедрили процесс создания сервисов одной кнопкой.В Банки.ру много команд, которые регулярно создают новые сервисы. До недавнего времени этот процесс регламентирован не был. Часто случалось, что о новом сервисе узнавали, когда уже случился инцидент на продакшене. Было непонятно, как с ним работать, поддерживать, монитори…

  • вторник, 10 сентября 2024 г. в 00:00:09
golang
Священная война языков программирования или опыт неудачного переезда с Python на Golang

Привет, Хабр! Валерий Линьков — эксперт Skillbox, дипломированный специалист Cisco, автор статей о машинном зрении и математической обработке изображений. Более семи лет обучает студентов по всему миру. Ведёт телеграм-канал «Кудрявый микрофон». В рамках эфира в закрытом комьюнити Skillbox Code Experts Валерий рассказал про «священную войну» языков программирования и свой опыт неудачного переезда. Итак, поехали!Битва черепах или зачем нужен GolangЕщё в школе я изучал C++, хотя изучением это можн…

  • вторник, 10 сентября 2024 г. в 00:00:07
golang
HTTP-серверы на Fiber в Golang

Привет, Хабр!Когда речь заходит о создании HTTP-серверов на Go, большинство сразу думают о привычных решениях, таких как net/http или Gin. Эти инструменты проверены временем, но что, если нужен сервер, который не просто стабилен, а работает очень быстро? Здесь помогает Fiber — лёгкий, но невероятно мощный HTTP-фреймворк, способный вывести производительность сервера на новый уровень.С синтаксисом, знакомым всем юзерам Express.js, Fiber избавляет от лишней сложности и позволяет сосредоточиться на…

  • вторник, 10 сентября 2024 г. в 00:00:07
golang
Трассировка на Go

Всем привет, этой мой первый пост на данной платформе, прошу любить и жаловать. Трассировка — это важный инструмент для мониторинга и диагностики микросервисов. Она позволяет понять, как запросы проходят через систему, где возникают узкие места, и как взаимодействуют различные компоненты приложения. В этой статье я расскажу про свой опыт, как интегрировал трассировку в сервис на Go, использующий GORM.1. Основы трассировки с OpenTelemetryOpenTelemetry — это популярная платформа для сбора, обрабо…

  • суббота, 7 сентября 2024 г. в 00:00:10