Привет. В этой статье я расскажу какие бывают паттерны отказоустойчивости. Всего их 6, но я расскажу про 4 вида: Retry, Deadline, Rate Limiter, Circuit Breaker. Начнем по порядку.RetryСначала скажу, что сеть максимальна не стабильна и полагаться на успешные операции не вариант. При выполнении какого либо запроса, может быть сетевая ошибка, обрыв, дроп пакета, недоступность ресурса. Чаще всего такие проблемы можно решить обычным повтором запроса.Но повторять нельзя вслепую. Если операция не идем…
Недавно я был на хардкорной конференции про облачные технологии и ИИ. Но не в качестве спикера или гостя, а в качестве технического интервьюера: проводил короткие собеседования с Go-разработчиками для наших команд.Мы наивно рассчитывали, что к нам выстроится очередь, но к рекрутерам за весь день подошли всего два Go-шника. Конечно, приятно думать, что доклады были настолько интересными, что никто не хотел их пропускать. Но вообще я задумался: почему так получилось?Отсюда вопрос к вам, Go-разраб…
Привет, Хабр.Мне нужно было открыть страницу и увидеть, что происходит на удалённых серверах: нагрузка, процессы, диски, логи. Всё, что я находил, делилось на два лагеря. В первом система, под которую поднимаешь несколько сервисов и потом живёшь с их конфигами. Во втором простая штука, которая выглядит как из прошлого десятилетия и под себя почти не настраивается. Красивого, простого и гибкого одновременно я не нашёл. Мне это надоело, и я написал своё.Получился Pulse: мониторинг Linux- и Window…
«П‑с‑с‑с, хочешь, чтобы функция очистки массива была на 49% быстрее? Сдвинь массив на 4 байта».Рассмотрим следующий код на Go:const words = 1 << 19 type block struct { n uint32 data [words]uint32 } func (b *block) reset() { b.data = [words]uint32{} } Что, если я скажу вам, что всего лишь добавив 4 байта заполнения (padding) между n и data, вы ускорите функцию reset на 49% (по крайней мере, на машинах с Intel)? Звучит безумно?Давайте проведём бенчмарк. Даже попробуем разные заполни…
Всем привет!Сделал для себя небольшой инструмент, который позволяет добавлять сессии клода в избранное. Решил поделиться, может кому‑нибудь тоже пригодится.У меня бывают сессии, которые нужно продолжить через какое‑то время, например:изучение инструмента или новой для меня темызадача, завершение которой откладывается по каким‑то причинам. Чтобы потом не запускать новую сессию, удобнее вернуться в ту же, где контекст уже есть.Команда /resume мне не очень подходит, потому что она показывает все с…
19 октября в официальном CLI OVHcloud полтора часа раздавался стилер. Первым это заметил клиент OVH, у которого в CI был жёстко прописан SHA-256 одного архива. Сама OVH узнала о подмене из его отчёта: через час после подмены сборка у клиента упала, и он завёл issue #300.Про этот случай уже написали французские СМИ и OpenSourceMalware. Я прошёл по их следам сам: GitHub API, репозитории взломанного аккаунта, блокчейн Solana. Нашлось кое-что, чего в пересказах нет.Что произошлоovhcloud — Go-утилит…
Когда односторонняя плата нужна сегодня, а не через две недели заводского цикла, и под рукой есть фрезерный станок, её можно изготовить за один вечер. Я отладил старый станок так, чтобы он делал платы с дорожками шириной 0,2 мм, зазорами 0,2 мм и отверстиями. Сразу обозначу ограничения: метод рассчитан на один слой меди, не поддерживает переходные отверстия.Плата после станка: дорожки, отверстия, V-канавки по краюСтанокСтанок находится не у меня. Доступ к нему я получаю по договорённости с ЦМР,…
👉 GitHub: github.com/piqab/nkt📚 Документация: piqab.github.io/nkt
Xray, sing‑box, WireGuard и DNS‑туннель в одном процессе: как устроен YPtun изнутриПроект начинался как Olcbox, маленький конфигуратор для одного экспериментального транспорта. Следы того времени до сих пор живут в коде: версия передаётся в Gradle флагом -Polcbox.version, пакеты называются org.olcbox.app, а главный сервис называется OlcboxVpnService. Переименовывать всё это ни у кого не поднимается рука, и ниже будет понятно почему: одно только переименование applicationId заняло два релиза.Сей…