38.6K subscribers
1.61K photos
44 videos
5 files
1.75K links
Download Telegram
🧠 CasCache — CAS-безопасный кэш для Go с валидацией чтения и «bulk»-наборов

Что это
- Кэш «как CAS»: записи защищены поколениями (generation). Запись проходит только если поколение ключа не изменилось.
- Singles: никогда не вернёт «протухшее» значение; битые/чужого типа записи самовосстанавливаются (самоочистка).
- Bulk: кэширует набор ключей; при чтении каждый элемент сверяется с актуальным поколением — если хоть один устарел, весь набор отбрасывается и читается по одиночке.
- Подключаемые провайдеры значений: Ristretto / BigCache / Redis.
- Подключаемые кодеки: JSON/Msgpack/CBOR/Proto (можно навесить компрессию/шифрование).
- Distributed GenStore (опционально): хранит поколения в Redis для корректности между репликами и переживания рестартов.

Зачем это нужно
- Без «грязных» чтений при гонках читателя/писателя.
- Нулевая «write amplification» при чтении — валидация только на чтении.
- Гибкий выбор провайдера/кодека, можно начать локально и дорастить до кластера (с общим GenStore).

Быстрый старт

import (
"context"
"time"

"github.com/unkn0wn-root/cascache"
rp "github.com/unkn0wn-root/cascache/provider/ristretto"
)

type User struct{ ID, Name string }

func buildCache() cascache.CAS[User] {
rist, _ := rp.New(rp.Config{
NumCounters: 1_000_000,
MaxCost: 64 << 20,
BufferItems: 64,
Metrics: false,
})
cc, _ := cascache.New[User](cascache.Options[User]{
Namespace: "user",
Provider: rist,
Codec: cascache.JSONCodec[User]{},
DefaultTTL: 5 * time.Minute,
BulkTTL: 5 * time.Minute,
// GenStore: nil → локально; для кластера подключите Redis GenStore.
})
return cc
}

func readUser(ctx context.Context, c cascache.CAS[User], id string) (User, bool) {
if u, ok, _ := c.Get(ctx, id); ok { return u, true }
obs := c.SnapshotGen(id) // снять поколение ДО чтения БД
u := loadFromDB(id)
_ = c.SetWithGen(ctx, id, u, obs, 0) // запись пройдёт только если поколение не изменилось
return u, true
}


📌Репозиторий: github.com/unkn0wn-root/cascache
👍108🔥5
👣 Build Your Own Coding Agent via a Step-by-Step Workshop

Workshop по Go для тех, кто хочет собрать своего собственного кодинг-агента.

Это практический гайд — шаг за шагом показывают, как из Go сделать среду для генерации кода.

По сути похоже на Roo Code, Cline, Amp, Cursor, Windsurf или OpenCode, но в этом гайде упор идет на то, чтобы понять механику изнутри.

🟢Github

@golang_google

#go #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
👍166🔥6
👣 TaskWing — менеджер задач в терминале с поддержкой AI

TaskWing — это инструмент для разработчиков, который позволяет вести список задач прямо в терминале и подключать к этому процессу искусственный интеллект (Claude Code, Cursor) через протокол MCP.

🟠Что умеет
- Подключается к AI и помогает создавать, менять и искать задачи.
- Не требует сложной настройки — всё хранится локально.
- Умеет отслеживать зависимости между задачами, чтобы не было конфликтов.
- Делает работу удобной: минимум переключений между редактором и терминалом.

Как использовать:

go install github.com/josephgoksu/taskwing.app@latest
taskwing init
taskwing add --title "Fix auth bug" --priority urgent


📌 Github
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍3🔥3😢2😁1
💻 kubectl-browse-pvc — плагин для kubectl, который позволяет пользователям удобно просматривать данные в Persistent Volume Claims (PVC) в Kubernetes!

🌟 Этот инструмент предоставляет возможность быстро монтировать PVC в поды Kubernetes и просматривать содержимое томов через файловую систему, что упрощает процесс диагностики и работы с данными в Kubernetes.

🌟 Плагин работает как расширение для kubectl, добавляя команду kubectl browse-pvc. Это позволяет пользователю быстро исследовать данные в томах Kubernetes без необходимости вручную настраивать монтирование томов или взаимодействовать с подами через командную строку. Пользователь может указать имя PVC, и плагин автоматически создает под с монтированным PVC, предоставляя удобный доступ к его содержимому для чтения и диагностики.

🔐 Лицензия: MIT

🖥 Github

@golang_google

#go #golang #Kubernetes
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍6🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 LeetSolv — инструмент для тренировки алгоритмов прямо в терминале

LeetSolv — это консольная утилита, написанная нп Go для подготовки к собеседованиям по алгоритмам и структурам данных.

Инструмент помогает повторять задачи по умному расписанию (алгоритм SM-2) и не забывать то, что уже решал.

Что умеет:
- Лёгкий CLI без лишних зависимостей (написан на Go).
- Планирует повторения задач с учётом:
- насколько хорошо ты знаешь задачу,
- насколько она важна,
- насколько сложно её понять.
- Автоматически выставляет приоритеты: что решать сначала, что можно отложить.
- Полный набор команд: добавить, удалить, редактировать задачи, откатить изменения.
- Все данные хранятся только у тебя локально.
- Два режима работы:
- интерактивный (вопрос-ответ в терминале),
- командный (`add`, list, search и т.п.).

📦 Установка:

curl -fsSL https://raw.githubusercontent.com/eannchen/leetsolv/main/install.sh | bash


📌 Github: https://github.com/eannchen/leetsolv
24👍6🤔4🔥2
🌐 kairos — проект с открытым исходным кодом, предназначенный для создания и управления операционными системами, которые могут работать в условиях облачных и распределённых инфраструктур!

🌟 Он ориентирован на разработку операционных систем для использования в средах с минимальными вычислительными ресурсами, например, для контейнеризированных приложений, IoT-устройств и встраиваемых систем.

🌟 Kairos отличается от традиционных операционных систем тем, что использует концепцию "Immutable Infrastructure" — это означает, что система не изменяется после развертывания, а любые обновления или изменения состояния происходят через повторное развертывание или обновление контейнеров, а не через обычные патчи и апдейты. Это делает её очень устойчивой к ошибкам и уязвимостям, так как в случае необходимости можно быстро восстановить систему из базового образа.

🔐 Лицензия: Apache-2.0

🖥 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75🔥3😁1