Category : golang

golang
Некоторые приёмы ООП в golang

Последние несколько лет я разрабатываю веб-приложения на го и у меня накопился опыт, которым я хочу поделиться. Я автоматизирую бизнес-процессы — пишу микросервисы для интернет-магазинов, перекладываю джейсончики. В этой области го используется как более быстрый пхп или питон :-), поэтому мои идеи могут идти вразрез с некоторыми практиками эффективного го.Парадигма и инструменты языкаЯ несколько раз встречал мнение, что го не ООП-язык. И поэтому прежде всего договоримся о том, что такое ООП.ООП…

  • вторник, 13 мая 2025 г. в 00:00:11
golang
ООП не мертво. Вы просто пользуетесь им как молотком по клавиатуре

После каждой новой статьи с заголовком «ООП — это обман» хочется напомнить: ООП — это не набор шаблонов из книжек, а инженерный подход. Если проект страдает от наследования и DI, возможно, проблема не в ООП. А в том, как вы его применяете.«Никто не знает, что такое ООП»Это правда. Все трактуют по-разному. Даже сам Алан Кэй, человек, который придумал термин, не слишком рад тому, во что это всё превратилось:> “OOP to me means only messaging, local retention and protection and hiding of state-p…

  • вторник, 13 мая 2025 г. в 00:00:10
golang
Автоматизированное E2E-тестирование App.Farm: от хаоса к системе

Когда мы только начинали работу над платформой, тестирование напоминало ручное управление парусником в шторм — много усилий, но результат непредсказуем. Разработчики вручную создавали тестовые среды, QA проверяли функционал через Postman, а о стабильности релизов можно было только мечтать. Каждый новый релиз был как лотерея: либо всё работает, либо начинается долгий процесс поиска причины багов в production.Сегодня я расскажу, как мы построили систему автоматизированного тестирования на Go и Al…

  • вторник, 13 мая 2025 г. в 00:00:09
golang
Обзор Greenmask — утилиты для логического дампа PgSQL с трансформацией данных на лету

Архитектура GreenmaskGreenmask — это кроссплатформенный инструмент, разработанный на Go специально для безопасной работы с данными PostgreSQL: он помогает делать логические бэкапы, восстанавливать таблицы и при необходимости — анонимизировать чувствительную информацию. Главное преимущество Greenmask — полная совместимость с pg_dump и pg_restore. То есть, если вы уже работаете с этими инструментами, интеграция Greenmask не потребует пересмотра всей инфраструктуры.Один из ключевых сценариев испо…

  • вторник, 13 мая 2025 г. в 00:00:08
golang
Работа с базой данных для джунов и вайбкодеров. Соединения

В эпоху генеративного ИИ многим может показаться, что знать основы тех или иных технологий вовсе не нужно - все сделает добрая LLM, а вам надо лишь правильно дать ей задание. Вот только в этом рассуждении опускается ответ на вопрос о том, что значит это "правильно". Нейросеть может сломать код в самых неожиданных местах и не исправлять его по общему запросу "найди и исправь баги". Вам придется самостоятельно искать причину поломки и тыкать бездушную машину в ее же ошибку носом. …

  • понедельник, 12 мая 2025 г. в 00:00:05
golang
Решение задачи с Route 256 на goalng

В этой статье разбирается решение задачи «Гистограммы» с контеста Route 256 от Ozon.Ссылочки:Assembler в Go: техники ускорения и оптимизации / Хабр Руководство по ассемблеру Go / Хабр Часть 1. Почему Go-ассемблер и векторизация могут быть полезны: идея для ускорения / Хабр Условие задачиГистограммой является массив, каждый элемент которого указывает высоту столбика на соответствующей позиции. Две гистограммы считаются совпадающими, если при совмещении одной гистограммы с другой гистограммой, п…

  • понедельник, 12 мая 2025 г. в 00:00:04
golang
Задачи на собеседованиях. Денежные переводы в SQL. Обновление счетов и уровни изоляций

Задача перевода денег в первом приближении сводится к обновлению пары строк и кажется простой — но обеспечение корректности при параллельном доступе может быть неожиданно сложным для только знакомящихся с уровнями изоляций БД.В этом посте я покажу примеры решения упрощенной задачи, сосредоточив внимание на проблеме обновления нескольких строк БД, уровнях изоляции и особенностях каждого подхода. Мы будем использовать SQL и Java фрагменты с комментариями.В решениях нет явных приемов против дедло…

  • воскресенье, 11 мая 2025 г. в 00:00:08
golang
Про конфигурацию go приложений и при чём тут vault

Когда-то я начинал свой путь как node.js разработчик и столкнулся с необходимостью конфигурировать приложение (кто бы мог подумать). Из простых решений, которые сразу приходят на ум, можно выделить:файлы (json, .env, toml, yaml, xml, ini и прочие)переменные окруженияаргументы процессаВ моём понимании это не совсем "конфигурация", а скорее способ передачи в неё данных. Так вот чтобы это всё заставить представлять из себя полноценную конфигурацию, с которой удобно работать, понадобилось п…

  • суббота, 10 мая 2025 г. в 00:00:12
golang
Часть 3. Векторизация на Go: CGo, транзакции, компиляторы, поддержка, байтовые инструкции

В первой части статьи мы рассмотрели, как можно вручную ускорить Go-код с помощью векторизации и SIMD-инструкций, реализованных через Go-ассемблер. Написали простую, но показательно быструю реализацию sliceContains и увидели, что даже базовая векторизация может дать ускорение в 10–14 раз по сравнению со стандартной реализацией.Во второй части статьи погрузились в практическое применение SIMD в Go-ассемблере, реализовали функцию SliceContainsV1 и изучили, как с помощью VADD, VDUP и других инстру…

  • суббота, 10 мая 2025 г. в 00:00:11