Архитектура GreenmaskGreenmask — это кроссплатформенный инструмент, разработанный на Go специально для безопасной работы с данными PostgreSQL: он помогает делать логические бэкапы, восстанавливать таблицы и при необходимости — анонимизировать чувствительную информацию. Главное преимущество Greenmask — полная совместимость с pg_dump и pg_restore. То есть, если вы уже работаете с этими инструментами, интеграция Greenmask не потребует пересмотра всей инфраструктуры.Один из ключевых сценариев испо…
В эпоху генеративного ИИ многим может показаться, что знать основы тех или иных технологий вовсе не нужно - все сделает добрая LLM, а вам надо лишь правильно дать ей задание. Вот только в этом рассуждении опускается ответ на вопрос о том, что значит это "правильно". Нейросеть может сломать код в самых неожиданных местах и не исправлять его по общему запросу "найди и исправь баги". Вам придется самостоятельно искать причину поломки и тыкать бездушную машину в ее же ошибку носом. …
В этой статье разбирается решение задачи «Гистограммы» с контеста Route 256 от Ozon.Ссылочки:Assembler в Go: техники ускорения и оптимизации / Хабр Руководство по ассемблеру Go / Хабр Часть 1. Почему Go-ассемблер и векторизация могут быть полезны: идея для ускорения / Хабр Условие задачиГистограммой является массив, каждый элемент которого указывает высоту столбика на соответствующей позиции. Две гистограммы считаются совпадающими, если при совмещении одной гистограммы с другой гистограммой, п…
Задача перевода денег в первом приближении сводится к обновлению пары строк и кажется простой — но обеспечение корректности при параллельном доступе может быть неожиданно сложным для только знакомящихся с уровнями изоляций БД.В этом посте я покажу примеры решения упрощенной задачи, сосредоточив внимание на проблеме обновления нескольких строк БД, уровнях изоляции и особенностях каждого подхода. Мы будем использовать SQL и Java фрагменты с комментариями.В решениях нет явных приемов против дедло…
Когда-то я начинал свой путь как node.js разработчик и столкнулся с необходимостью конфигурировать приложение (кто бы мог подумать). Из простых решений, которые сразу приходят на ум, можно выделить:файлы (json, .env, toml, yaml, xml, ini и прочие)переменные окруженияаргументы процессаВ моём понимании это не совсем "конфигурация", а скорее способ передачи в неё данных. Так вот чтобы это всё заставить представлять из себя полноценную конфигурацию, с которой удобно работать, понадобилось п…
В первой части статьи мы рассмотрели, как можно вручную ускорить Go-код с помощью векторизации и SIMD-инструкций, реализованных через Go-ассемблер. Написали простую, но показательно быструю реализацию sliceContains и увидели, что даже базовая векторизация может дать ускорение в 10–14 раз по сравнению со стандартной реализацией.Во второй части статьи погрузились в практическое применение SIMD в Go-ассемблере, реализовали функцию SliceContainsV1 и изучили, как с помощью VADD, VDUP и других инстру…
В очередной раз, листая озон, я наткнулся на девайс, который привлек мое внимание. Самоочищающийся лоток для котов Petkit Pura Max, вещь весьма интересная, особенно, если у тебя три кота. Пушистые бандиты у меня крупные, потребляют много калорий и соответственно часто ходят в лоток.слева-направо Максвелл, Ульмо и ЭйнштейнОдна уборка за ними — это целый квест, а если хочешь уехать из дома на день‑другой, это обязательно нужно кого‑то просить убирать за ними. Умную кормушку и фонтан для воды я ку…
Ускорить простые задачи, вроде поиска в массиве и сравнения слайсов, поможет мощь SIMD. Эти векторные инструкции, которые обрабатывают десятки байт данных за один такт процессора, отличная замена традиционным циклам. Во второй части статьи мы погружаемся глубже в практическое применение SIMD в Go-ассемблере, реализуем функцию SliceContainsV1 и изучим, как с помощью VADD, VDUP и других инструкций можно добиться 10–14-кратного ускорения простых задач.Из этой статьи вы узнаете:Как устроено сравнен…
HeroПредисловиеПриветствую тебя, дорогой Разработчик! Хочу поделиться своим опытом о том, как реализовать вход с помощью кошелька MetaMask (расширение для браузера) в твой проект. В этой статье я пропускаю весь код архитектуры приложения и покажу тебе только сервисный код (нижний уровень кода. Взгляни на DDD архитектуру, также известную как "Чистый код"). Я использую GO с распространенными библиотеками для веб-разработки, такими как Gin, jwt, sqlc и другие.Для начала давай представим, к…