Date | Title | Description |
03.10.2024 | Строим ETL-конвейер для машинного обучения с помощью Kafka, Clickhouse и Go | В этой статье я поделюсь с вами своим опытом использования Golang, Kafka и Clickhouse на примере простого ETL-конвейера для параллельной передачи JSON-данных в базу данных с последующим прогнозированием температуры на основе машинного обуче... |
30.09.2024 | Как подружить Gorm и PostGIS, решение промышленного уровня | GORM Фантастическая ORM для Golang.
PostGIS расширяет возможности реляционной базы данных PostgreSQL , добавляя поддержку хранения, индексирования и запросов геопространственных данных.
В этой статье поделимся своим опытом интеграции GORM и... |
14.09.2024 | Реверс-инжиниринг GDB для работы с Pwndbg | Функционал GDB существенно сужается, когда приходится иметь дело с файлами, из которых убраны отладочные символы (получаются так называемые «урезанные бинарники»). Функции и имена переменных превращаются в бессмысленные адреса. Для установк... |
01.09.2024 | The Rise of New Programming Languages: A Shift from C++ | In the vast landscape of programming languages, C++ has long been a titan. Born in 1985, it has powered countless applications and systems. Yet, as the digital world evolves, whispers of change grow louder. New contenders are emerging, vyin... |
29.08.2024 | Релиз Bubble Tea 1.0 — Go-фреймворка на основе архитектуры Elm для быстрого создания консольных приложений | В конце августа 2024 года состоялся первый стабильный релиз Bubble Tea. Это весёлый и функциональный, согласно замыслу авторов проекта, фреймворк на основе архитектуры Elm для быстрого создания консольных приложений (простых и сложных, встр... |
27.08.2024 | Языки программирования, которые могут заменить C++ — Rust, Go, Swift, Carbon | Язык программирования C++, на котором написано 95% существующего программного обеспечения, был создан Бьерном Страуструпом, датским инженером со странноватой прической, в далеком 1985 году — очень давно!
Нет, все эти годы язык не стагнирова... |
21.08.2024 | The Art of Functional Testing in Go: A Practical Guide | Functional testing is the backbone of software quality assurance. It ensures that applications perform as expected under various conditions. In the world of Go, a language known for its simplicity and efficiency, functional testing can be b... |
21.08.2024 | «Бобер выдыхай»: Go, WinAPI и ассемблер | Что первым приходит в голову разработчика при слове «Go»? Google и микросервисы? Я тоже так думал, но реальность оказалась значительно интересней.
Gopher — маскот Golang на самом деле никакой не бобер а целый отдельный вид, у нас такие не ж... |
17.08.2024 | Reflection в Go | Привет, Хабр!
Сегодня мы рассмотрим в одну из интересных особенностей Golang — reflection. Мы рассмотрим, что такое reflection, как он работает, и когда его стоит использовать. Reflection позволяет программам инспектировать свои структуры и... |
17.08.2024 | Написание функционального тестирования в Go | Не все знают, как писать функциональные тесты. В этой статье будут библиотеки, фишки про функциональные тесты, а самое главное - попрактикуемся их писать на примере Rest APIФункциональное тестирование
Функциональное тестирование - это такой... |
15.08.2024 | NIST's Quantum Leap: New Standards for Post-Quantum Cryptography | On August 13, 2024, the National Institute of Standards and Technology (NIST) unveiled a trio of groundbreaking standards aimed at fortifying digital security against the looming threat of quantum computing. This announcement marks a pivota... |
14.08.2024 | Вышел Go 1.23 | 13 августа 2024 года cостоялся релиз языка программирования Go 1.23. Этот проект развивает компания Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скрип... |
06.08.2024 | Go: жарим общие данные. Атомно, быстро и без мьютексов | Как правило, в Go для безопасного доступа к общим данным используются мьютексы. Да, каналы тоже можно приспособить для изменения общих данных, так как они потокобезопасны, но это усложняет и замедляет логику.
Но в этой статье мы поговорим о... |
04.08.2024 | The Evolution of Testing: Rethinking Size and Structure in Software Quality Assurance | In the world of software development, testing is the backbone. It’s the safety net that catches bugs before they hit the user. But how do we measure the effectiveness of our tests? The concept of "test size" has emerged as a criti... |
03.08.2024 | Ещё раз о том, какого размера должны быть тесты | Программистам требуется судить о том, насколько дорого обходится тестирование конкретной системы, будь то модульное, интеграционное или функциональное тестирование. Каждый последующий из этих этапов в некотором смысле «дороже», чем предыдущ... |
17.07.2024 | Google перенесёт разработку приложений Android Studio в веб через Project IDX | Google объявила, что переносит разработку приложений Android Studio в Интернет при помощи Project IDX. Это фирменная веб-среда разработки.
В компании отметили, что намерены сделать «создание приложений для Android столь же общедоступным, ка... |
11.07.2024 | Golang: пакет bytes изнутри | Приветствую, в прошлой статье мы разбирали определение bytes.Buffer изнутри. Теперь хочется обратить внимание на сам пакет bytes. Что за ним скрывается? Каждому разработчику приходилось использовать его будь то в production или локальной ра... |
28.06.2024 | От RFC до RCE, или как неожиданная особенность библиотечного метода стала причиной уязвимости | Дисклеймер 1. На момент публикации статьи уязвимость устранена. От заказчика получено разрешение на обезличенное раскрытие уязвимости. Описанное окружение носит иллюстративный характер - задействованные сервисы являются модельными, характер... |
28.06.2024 | Go gamedev: низкоуровневое API рисования в Ebitengine | Я уже несколько лет использую игровой движок Ebitengine, но ранее у меня получалось обходиться лишь высокоуровневым способом отрисовки объектов — DrawImage.
Функция DrawTriangles казалась не очень понятной человеку, который привык к концепц... |
28.06.2024 | Как упаковать бэкенд-код на Go для аналитики на базе Spark | Всем привет! Меня зовут Ваня Ахлестин, я занимаюсь поддержкой и развитием аналитической платформы кластера Search&Recommendations на базе Spark и Hadoop.
Большинство сервисов в хайлоаде, работу которых мы логируем и исследуем, давно пер... |
26.06.2024 | Управление сервером со смартфона | Из любого SSH-клиента можно установить канал с сервером и управлять им стандартными командами в консоли. Есть такие клиенты и для смартфона. Многие знают и используют консоль Termux под Android, которая запускает с телефона стандартный Open... |
25.06.2024 | Нейросети и компьютерное зрение (CV). Основы теории. Практика. Система распознавания на одноплатном компьютере Repka Pi... | Одно из интересных и полезных применений нейросетей — обнаружение объектов на изображении, таких как машины, люди или человеческие лица.
Вы давно хотели начать погружение в глубокий и захватывающий Мир ИИ и распознавания? А может быть хотит... |
21.06.2024 | Go развивается в неверном направлении | Язык программирования Go известен своей простотой в использовании. Благодаря продуманному синтаксису, возможностям и инструментарию, Go позволяет писать легко читаемые и поддерживаемые программы произвольной сложности (см. этот список на Gi... |
19.06.2024 | Как бороться с ReDoS | Проверка кода (Code Scanning) автоматически обнаруживает ReDoS-уязвимости, но исправить их бывает не всегда просто. В этой статье описана 4-х этапная стратегия исправления багов ReDoS.
Это правда, что некоторые ReDoS-уязвимости могут быть о... |
11.06.2024 | Кот меняющий строки | Вне всякого сомнения самое сложное в программировании это именование переменных и что-то там про кеш. Самое сложное в написании статьи это написать введение. Попытка бросить в читателя кусок случайного кода не работает, такую статью никто н... |
01.06.2024 | Go + Minio: как написать простой сервер для взаимодействия с файлами | Добрейшего! Недавно мой друг решил хранить картинки продуктов на сервере, в отдельной папочке, выдав ей публичный доступ. Что ж, эту статью я пишу чтобы рассказать другу плюсы и минусы, а так же показать как можно делать иначе.
Если вы толь... |
27.05.2024 | Рецепт приготовления непрерывного профайлера в 2к24 | Всем привет! Меня зовут Газимагомед, я занимаюсь разработкой внутреннего распределённого профайлера Vision в Ozon. В этой статье я раскрою понятие профиля, расскажу о том, что такое распределённый профайлинг, чем отличается автоматический с... |
26.05.2024 | Thunderbird Auto Config Server (TACS) | На хабре уже были статьи по настройке почтового клиента Thunderbird, с подробным разбором его возможностей и деталей настроек, а поиск по сети выдаёт множество блогов с продублированной информацией о его базовых возможностях.
Каждый из авто... |
25.05.2024 | Generic Concurrency в Go | Привет, гоферы!
В этой статье я хочу поделиться мыслями и идеями, которые у меня накопились за время работы с дженериками в Go, и в частности о том, как шаблоны многозадачности могут стать более удобными и переиспользуемыми с помощью дженер... |
22.05.2024 | Проблема «Грохочущего стада» | Ещё одна история о распределённых системах
Давайте перенесёмся в апрель 2018 года. Тогда я работал на стартапе, который собирался выпустить очень востребованную новую функцию. Мы уже сформировали лист ожидания, но о дате запуска не распрост... |
09.05.2024 | Динамическая функция для генерации excel файла на Golang | Привет! Я Сино, бэкенд разрабочик на языке Golang. Работаю 1,5 года в банковской сфере.
Так как я работаю в команде B2B, из-за этого часто приходится работать с отчётностью, платежами и файлами.
В связи с тем, что часто приходится генериров... |
08.05.2024 | Спецификация уникальных идентификаторов UUIDv7 для ключей баз данных и распределенных систем по новому стандарту RFC9562... | Долгожданный стандарт RFC9562 "Universally Unique IDentifiers (UUID)" с тремя новыми версиями идентификаторов UUID (6, 7 и 8) вместо малопригодного RFC4122 наконец-то вступил в силу. Я участвовал в разработке нового стандарта. Обз... |
07.05.2024 | database/sql: плохой, хороший, злой | Многие Golang-разработчики пробовали работать с БД в Go, и у каждого — свои боли. В этой статье поисследуем библиотеку database/sql для работы с абстрактной СУБД и нашу имплементацию database/sql драйвера под СУБД YDB. Рассмотрим трудности ... |
29.04.2024 | Обработка ошибок в web apps не должна быть такой сложной | Зачем?
В процессе работы с Go я столкнулся с ещё одной проблемой — обработкой ошибок в хендлерах. Как можно сделать этот процесс удобным и эффективным для 150+ обработчиков? Как обеспечить консистентность и поддержку при обработке ошибок?
Р... |
27.04.2024 | Остаться в живых (keepalive) feat. HTTP/2, Go & gRPC-Go | Привет, Хабр! :-) Меня зовут Ильяс. В этой статье мы разберём известную идею — keepalive в межсервисном взаимодействии, которая спасла уже не одну компанию в трудное время :). Но чтобы добавить интереса, мы разберём, какие проблемы в keepal... |
21.04.2024 | Использование миграций баз данных в Go | Недавно мы столкнулись с необходимостью найти библиотеку для удобной работы с базами данных. В нашем проекте команда решила не использовать ORM (Object-Relational Mapping), а вместо этого применить миграции. Так как я работал только с ORM, ... |
05.04.2024 | Beego в Golang для начинающих | Привет, Хабр!
Beego – это фреймворк для разработки веб-приложений на языке Go, ориентированный на быстрое развертывание и простоту использования. В его основе лежит идея создания полнофункциональных приложений с минимум усилиям на настройку... |
05.04.2024 | Разбираемся в новом роутинге в Go 1.22 | В начале февраля 2024 года вышел Go 1.22. Вот, что нового и интересного принёс новый релиз: сделали более безопасное поведение переменных в циклах, добавили функции-итераторы в качестве rangefunc-эксперимента и улучшили шаблоны роутинга. В ... |
29.03.2024 | Проектируем микросервисы с Reactive Manifesto: 4 принципа распределенных систем | Работаете с распределенными системами или только пытаетесь к ним подобраться? Проектировать их с нуля бывает сложно и страшно: чтобы учесть все нюансы, нужен определенный багаж знаний.
На помощь приходит Reactive Manifesto — документ, котор... |
28.03.2024 | А в чем проблема работать с файлами? | Приветствую.
Год назад меня сильно увлекла тема отказоустойчивости приложений. Я начал изучать различные аспекты ее реализации в программах и больше всего меня заинтересовал процесс работы с диском. Ресурсов для изучения много, но они все р... |
19.03.2024 | Monkey patching в Go, или грабли от Apple | Модель - Stable Diffusion v1-5
Все началось с того, что я в очередной раз немного поменял структуры БД, и в некоторых SQL-запросах добавилась новая колонка. Нормальная ситуация - взять и легким движением руки сломать половину unit test’ов, ... |
17.03.2024 | Простой CRUD на chi. Часть 1 | Введение
Согласно официальному сайту, chi — это легковесный, идиоматический и композируемый маршрутизатор для создания HTTP-сервисов на Go. Он на 100% совместим с net/http и довольно легок в обращении, однако его документация предназначена ... |
14.03.2024 | Укрощение примитивов синхронизации: сравниваем решения задачи с построением пула потоков на С и Go | Эта статья основана на истории об одном личном челлендже. Нужно было помочь с реализацией взаимодействия компонентов в программном комплексе заказчика. Иными словами, понадобилось Inter-Process Communication, или межпроцессное взаимодействи... |
11.03.2024 | Делаем RPG на Go: часть 0.5 | В предыдущей статье мы начали знакомство с Ebitengine.
В этой части структура игры будет доработана и переведена на сцены.
Часть 0.5?
Это вторая pre-1 часть, в которой разрабатывается отдельный демо-проект.
Начинать делать RPG с нулевой баз... |
05.03.2024 | Структурированное логирование в Go с помощью Slog | Более 10 лет разработчики на Go жаловались на отсутствие структурированного логирования в ядре Golang. Участники сообщества Golang даже создали несколько собственных пакетов, таких как Logrus, Zap и Zerolog. В 2023 году, команда разработчик... |
25.02.2024 | Прокси-сервер для Android на Go | Реализация простого HTTP CONNECT прокси-сервера на Go, квест с маркировкой сетевых пакетов и запуск программы в Android.Интро
После долгих лет работы разработчиком софта я хочу быть... всё тем же разработчиком. Мне это так же интересно, как... |
24.02.2024 | Как я пишу HTTP-сервисы спустя 13 лет работы с Go | Примерно шесть лет назад я написал пост о том, как пишу HTTP-сервисы на Go, и сегодня я снова хочу рассказать, как пишу HTTP-сервисы.
Тот пост оказался довольно популярным и вызвал обсуждения, повлиявшие на то, как я делаю это сегодня. И сп... |
10.02.2024 | Шаблонизатор GO text template | Введение
Шаблоны - это инструмент программирования, который позволяет создавать структурированный и повторно используемый контент или код. Они имеют много применений в различных областях, включая веб-разработку, генерацию отчетов, форматиро... |
07.02.2024 | Вышел Go 1.22 | Состоялся релиз языка программирования Go 1.22. Этот проект развивает компания Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёг... |
05.02.2024 | Делим монорепозиторий библиотеки Go на отдельные модули и адаптируем их для локальной разработки | Привет! Меня зовут Илья Сергунин, я Senior Software Engineer из продуктовой команды Авито. Наша библиотека Go состоит из абстракций для работы с транзакциями в Go и нескольких драйверов для баз данных. Сначала там было всего четыре имплемен... |
03.02.2024 | Делаем RPG на Go: часть 0 | Один из самых частых вопросов в нашем сообществе разработке игр на Go — это с чего начать.
В этой серии статей мы будем изучать движок Ebitengine и создадим RPG в процессе.
Вступление
Что от вас ожидается:
Вам интересна разработка игр на Go... |
16.01.2024 | Go — 100 вопросов/заданий с собеседований | Приветствую тебя, хаброжитель!
В этой статье разберём 100 вопросов, они покрывают львиную долю того, что могут спросить на собеседовании джуниор Go-разработчика с практически любой специализацией. Конечно же, в реальной работе на Go требуют... |
14.01.2024 | Высокопроизводительное кэширование с помощью Redis и Go | Go – отличный язык для создания высокопроизводительных веб-приложений, а высокопроизводительные веб-приложения часто требуют централизованного кэширования.
Использование Redis в Golang позволяет улучшить производительность приложения за сче... |
07.01.2024 | Простой production-ready генератор студийных фото продуктов | В данной статье мы рассмотрим простой пример готового к запуску в продакшн приложения с генеративным пайплайном.
Ссылка на проект на Github для особо нетерпеливых
Пример сгенерированного контентаВведение
Буквально в последние пару лет модел... |
20.12.2023 | Just DUIT — первый взгляд на server-driven UI фреймворк для Flutter | Итак, здравствуйте! Меня зовут Никита Синявин, я разработчик мобильных приложений в компании BetBoom. Сейчас наша команда использует Flutter для разработки некоторых своих приложений, на который мы в свою очередь успешно переехали с React N... |
14.12.2023 | Observability. Часть 1, про логи | "Пираты журнального моря"
Автор — Игорь Овсянников, декабрь 2023 г. DevOps инженер в GFN.AM, преподаватель курса DevOps в OTUS.
Каждый раз, решая инцидент или аварию в инфраструктуре, я задумывался: а можно ли было это предусмотре... |
08.12.2023 | Как настроить gRPC на примере микросервисов на Ruby и Go | В этой статье мы хотим поделиться личным опытом, как у нас получилось организовать взаимодействие микросервисов на Ruby и Go на основе gRPC. Мы расскажем:
о преимуществах gRPC;
об особенностях работы с протоколом;
о трудностях, с которыми м... |
24.11.2023 | Сервисы дружитес. Как платформа упрощает создание интеграций без ошибок | Всем привет! Кратко обо мне: меня зовут Никита и я уже третий год работаю над тем, чтобы платформа СберМаркета становилась лучше день ото дня. Мой основной язык программирования — Go, но, учитывая специфику платформенной разработки, еще и b... |
21.11.2023 | Многопоточный Python на примерах: токены отмены | В этой статье мы обсудим паттерн "Cancellation Token" (или по-русски - "токен отмены"), популярный в некоторых других языках, но почему-то обойденный вниманием в Python-сообществе. Он о том, как безопасно и красиво завер... |
15.11.2023 | Здоровая конкуренция в GO. Главное не перехитрить самого себя
Пока работают другие, я не буду сидеть сложа руки
Я люблю работу. Люблю смотреть как она копится
Загрузим один процессор до ушей
Заклю... | Несколько лет назад я прочитал статью о параллелизации в GO и ничего не понял – я тогда только начинал программировать на этом языке. Но размышления автора мне очень понравились – они подкреплялись бэнчмарками, что было довольно убедительно... |
03.11.2023 | Реализация Graceful Shutdown в Go | Изящное завершение работы (Graceful Shutdown) важно для любого длительного процесса, особенно для того, который обрабатывает состояние. Например, что если вы хотите завершить работу базы данных, поддерживающей ваше приложение, а процесс db ... |
17.10.2023 | Улучшенная маршрутизация HTTP-серверов в Go 1.22 | В Go 1.22 ожидается появление интересного предложения - расширение возможностей по поиску шаблонов (pattern-matching) в мультиплексоре, используемом по умолчанию для обслуживания HTTP в пакете net/http.
Существующий мультиплексор (http.Serv... |
12.10.2023 | Самый быстрый поиск пути на Go без аллокаций и СМС | Алгоритмы важны. Но реализовать их можно очень по-разному.
При одном и том же алгоритме, оптимизированная библиотека будет в тысячу раз быстрее наивной.
Любите оптимизации, специализированные структуры данных и трюки с битами? Тогда скорее ... |
10.10.2023 | Profile-guided optimization в Go 1.21 | В Go 1.20 была выпущена предварительная версия profile-guided optimization (PGO), которую пользователи могли протестировать. После устранения известных ограничений в предварительной версии и дополнительных доработок благодаря отзывам и вкла... |
07.10.2023 | Масштабирование приёмочных тестов | Эта глава является продолжением главы "Введение в приёмочные тесты". Готовый код этой главы можно найти на GitHub.
Приёмочные тесты очень важны, они напрямую влияют на вашу способность уверенно развивать систему с течением времени... |
06.10.2023 | Введение в приёмочные тесты | В компании $WORK мы столкнулись с необходимостью "плавного завершения работы" наших сервисов. Грациозное завершение работы позволяет убедиться в том, что система правильно финиширует перед завершением. В качестве аналогии можно пр... |
05.10.2023 | Golang. Паттерн Adapter | Вернувшись в очередной раз к Golang-программированию в свободное от жизни время, решил потратить его с пользой и написать серию статей по паттернам программирования на примере этого языка. Вдохновила меня на это другая работа - Шпаргалка по... |
05.10.2023 | Поднимаем собственный узел в анонимной сети Hidden Lake | Введение
Хоть анонимные сети и являются определённого рода остатком, придатком куда большего множества всеразличных коммуникаций, тем не менее их можно рассматривать как некого рода островки приватности, абстрагированные от всего остального... |
15.09.2023 | Prometheus Alert Hints | "Если вы видите перед собой чашку с кофе - это хороший знак"
Привет! Меня зовут Александр Голиков, я работаю в компании Bercut. Наша компания разрабатывает и развивает IT-решения для операторов цифровых услуг и мобильных сервисов.... |
09.08.2023 | Вышел Go 1.21 | Состоялся релиз языка программирования Go 1.21. Этот проект развивает компания Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёг... |
02.08.2023 | OpenSSH против SSH | Рис. 1. Разные реализации SSH, источник: Shodan
Формально протокол SSH определён в ряде стандартов RFC (список ниже). В то же время есть много реализаций этого протокола. OpenSSH — самая популярная из них, хотя не единственная. Например, во... |
31.07.2023 | Самый быстрый и безопасный PNG декодер в мире | TL;DR: декодер изображений PNG из стандартной библиотеки языка программирования Wuffs работает в 1.22–2.75 раза быстрее, чем libpng (широко используемая реализация PNG декодера на C с открытым исходным кодом), C-библиотеки libspng, lodepng ... |
31.07.2023 | В Go 1.21 существенно расширяется стандартная библиотека | // теперь в Go так можно! slices.Contains(s, v)
Год назад в блоге Каруны мы писали про дженерики в Go, и там упоминалось, что гошное сообщество разделилось на две части. Не всем это нововведение было нужно, особенно в простом продуктовом ко... |
27.07.2023 | Сравниваем скорость и оверхеды библиотек Deep Copy для Go | Все мы знаем эту историю, когда нужно скопировать какую-нибудь большую структуру, внутри которой множество указателей на другие структуры. Руками это делать лень, поэтому берём какую-нибудь библиотеку и быстро делаем копию. А потом в свобод... |
24.07.2023 | Добавляем Starlark в приложение на Go | Жаворонок, картинка утащена с ВикипедииЧто за птица?
Starlark (ранее известный как Skylark) - питоноподобный язык, изначально разработанный для системы сборки Bazel, со временем выбравшийся за её пределы через интерпретаторы для Go и Rust.
... |
20.07.2023 | Как построить систему, способную выдерживать нагрузку в 5 млн rps | Всем привет!
Меня зовут Владимир Олохтонов, я руковожу командой разработки в отделе Message Bus, который является частью платформы Ozon. Мы занимаемся разработкой самых разных систем вокруг Kafka, etcd и Vault. В этой статье я расскажу о то... |
13.07.2023 | Учимся разрабатывать REST API на Go на примере сокращателя ссылок | В этой статье мы напишем полноценный REST API сервис — URL Shortener — и задеплоим его на виртуальный сервер с помощью GitHub Actions.
Говоря «полноценный», я имею в виду, что это будет не игрушечный проект, а готовый к использованию:
мы вы... |
13.07.2023 | Простые правила, которые помогают мне писать на Go без побочных эффектов | Владислав Белогрудов, старший разработчик
Успел поработать с роботами, телекомом, поисковиками. В YADRO разрабатываю драйверы для OpenStack и систем хранения данных, модули для Ansible и еще много-много всего.
Роб Пайк сказал, что простое л... |
12.07.2023 | database/sql биндинги для YDB в Go | YQL — это SQL‑диалект, специфичный для базы данных YDB. YQL требует заранее объявлять имена и типы параметров запроса. Это обеспечивает высокую производительность и корректное поведение. В синтаксисе YQL параметры необходимо перечислять явн... |
07.07.2023 | Время «рок-звёзд»: когда разработка ПО основывалась на талантах и креативности | Впервые за 5 лет в отпуске на Гватемале. Заканчиваю эту статью
В качестве саундтрека для этого поста я выбрал песню Torn Натали Имбрульи.
Какие статьи у нас выходили после «Куда подевались все хакеры?» Самое масштабное из того, что помню – ... |
05.07.2023 | Наблюдаемость сетевой инфраструктуры Kubernetes. Часть первая | В этой статье будут рассмотрены инструменты наблюдения за сетевой инфраструктурой Kubernetes и основные составляющие Observability/Наблюдаемости – мониторинг, журналы событий, метрики, распределенная трассировка и оповещения. Обсудим, как э... |
30.06.2023 | Атомики в Go: особенности внутренней реализации | Атомики в Go - это один из методов синхронизации горутин. Они находятся в пакете стандартной библиотеки sync/atomic. Некоторые статьи сравнивают atomics с mutex, так как это примитивы синхронизации низкого уровня. Они предоставляют бенчмарк... |
16.06.2023 | Как искать уязвимости в проекте на Go: обзор популярных анализаторов кода и их возможностей | Привет! Меня зовут Николай Никитас, я бэкенд-разработчик в Авито. В команде я занимаю роль securtity-чемпиона, то есть отвечаю за безопасность проекта.
Чтобы узнать, есть ли в программе уязвимости, мы используем статические анализаторы кода... |
10.06.2023 | Пишем gRPC автотесты на Go с Allure отчетом | Вступление
В данной статье разберем, как писать gRPC автотесты с использованием языка Go, также сделаем Allure отчет
Перед тем как читать статью, нужно базово понимать некоторые термины:
Что такое RPC?
Что такое gRPC?
Что такое protobuf? Сю... |
07.06.2023 | Как мы сделали grpc-wiremock: сервис, создающий мок-сервер для ваших контрактов в одну команду | Всем привет, меня зовут Никита, уже пару лет я зарабатываю на жизнь развитием платформы-как-сервис в СберМаркет. В основном я отвечаю за инструменты локальной разработки и являюсь одним из создателей cli, которая позволяет развернуть сервис... |
30.05.2023 | Алерты Grafana в виде кода: Начните работу с Terraform и Grafana Alerting | Инфраструктура алертинга часто бывает сложной, в ней множество фрагментов пайплайна, которые то и дело находятся в разных местах. Масштабирование такой инфраструктуры для многих команд и организаций является особенно трудной задачей.
По мер... |
23.05.2023 | Для чего нужен тип http.ResponseController? | Одно из моих самых любимых нововведений в недавнем релизе Go 1.20 — это тип http.ResponseController, который может похвастаться тремя очень приятными полезностями:
Теперь вы можете переопределять ваши общесерверные таймауты/дедлайны чтения ... |
12.05.2023 | [По полочкам] Кэширование | Всем привет! Меня зовут Илья Денисов, я занимаюсь backend разработкой уже более пяти лет и сейчас пишу на языке go. Сегодня я предлагаю вам поговорить о кэшировании. Постараюсь рассказать о базовых концепциях, а также затронуть ряд особенно... |
11.05.2023 | Создаём репозиторий в Go через менеджер транзакций | Всем привет! Я Илья Сергунин, веб-разработчик из продуктовой команды Авито. Мы пишем на Go сервис для выкупа мобильных телефонов, про MLP которого уже писали в блоге. В качестве примеров я буду использовать всем знакомый интернет-магазин, ч... |
10.05.2023 | Облегчаем жизнь разработчиков на Go: полезные советы и лайфхаки для начинающих | В #CloudMTS мы активно используем Go. Например, Go основной язык в балансировщике нагрузки (GSLB), в сервисах создания и управления кластерами PostgreSQL и Redis.
Благодаря производительности, скорости, встроенной поддержке параллелизма, уп... |
01.05.2023 | Оживляем веб-камеру 1999 года | Покупая девайс, мы, в принципе, понимаем, что вечно он не прослужит: разъёмы износятся и/или сам прибор выйдет из моды. Но лично меня наиболее удручает ещё одна причина избавляться от техники: для неё просто перестают делать драйвера.
Успех... |
22.04.2023 | Разработка игр на Go: шейдеры | Давненько я не писал никаких статей на хабре.
Я планировал вести серию заметок о разработке игр на Go и начал я с рендеринга текста, но меня не хватило даже на второй текст. Что же, настало время возвращаться, ведь с того момента я успел со... |
20.04.2023 | Пишем на Go как в Google. Лучшие практики — часть первая
Рекомендации по стилю для проектов Google с открытым исходным кодом... | Рекомендации по стилю для проектов Google с открытым исходным кодом
Лучшие практики Go
Этот документ — часть документации по стилю Go в Google. Он не является ни нормативным, ни каноничным, это дополнение к «Руководству по стилю». Подробнос... |
06.04.2023 | Битва за удобный для IDE stack trace в Go (с Bazel и без) | Разработка программного обеспечения связана не только с написанием кода, но и с его отладкой. И отладка должна быть по возможности комфортной.
С некоторыми ошибками мы пишем в лог стек вызовов. Используемая нами IDE (Idea, GoLand) позволяет... |
01.04.2023 | Алгоритм Diffie-Hellman: Ключ к безопасному общению | Всем привет!
Давно хотел опубликовать статью тут, но никак не находил повода для хорошей темы. Однако я уже давно веду телеграм канал по Backend разработке, в котором публикую разную информацию о Backend, рассказываю про технологии и делюсь... |
20.03.2023 | Переходим на Go: 16 материалов для самостоятельного изучения языка | Привет! Меня зовут Владислав Попов, я автор курса «Go-разработчик» Яндекс Практикума.
Когда-то я сам был студентом — хотел учиться Go, но такого курса в Практикуме не было, поступил на Python. Прошёл вводную часть — и тут стартовал желанный... |
17.03.2023 | Go. О покрытии кода интеграционными тестами и флаге -cover
Работа с файлами данных покрытия
Итоги | Инструменты покрытия кода помогают понять, какая часть кодовой базы выполняется (или, как еще говорят, покрывается) при выполнении данного набора тестов. Какое-то время Go поддерживал измерение покрытия кода на уровне пакета, введенное в Go... |
13.03.2023 | Что не так с твоим покрытием тестов в Go? | Бюрократия семимильными шагами внедряется в процесс разработки. Людей в пиджаках интересуют лишь цифры, и это же относится к test coverage сервисов. Однако, покрытие зачастую (в том числе, благодаря создателям языка) не отображает полной ка... |
09.03.2023 | Bazel, stamping, remote cache | Что такое stamping?
В Bazel есть любопытная фича, позволяющая добавить данные, которые не инвалидируют кэш сборки.
Например, это бывает полезно, чтобы добавить в исполняемый файл информацию о том, когда он был собран и из какой ревизии. Есл... |
27.02.2023 | Брифинг по дженерикам Go 1.18 | Добавление дженериков (generics) в Go (ранее Golang) — самое значительное изменение, которое он претерпел, с момента его релиза. Сообщество Go просило добавить дженерики с самых первых дней языка, и мы, наконец, дождались.
Реализация дженер... |