🧑💻 Хотите прокачать знания Go?
Для вас — новый бесплатный курс Академии Selectel
После изучения вы сможете:
▪️запускать fuzzing-тесты,
▪️писать собственный REST API,
▪️разрабатывать gRPC-приложения,
▪️подключать Go к Apache Kafka,
▪️тестировать Kubernetes с помощью Go.
А еще получите подборку дополнительных материалов — книг, подкастов и блогов, которые позволят лучше разобраться в теме.
Начните обучение прямо сейчас: https://slc.tl/ovswp
Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqwTYVtW
Для вас — новый бесплатный курс Академии Selectel
После изучения вы сможете:
▪️запускать fuzzing-тесты,
▪️писать собственный REST API,
▪️разрабатывать gRPC-приложения,
▪️подключать Go к Apache Kafka,
▪️тестировать Kubernetes с помощью Go.
А еще получите подборку дополнительных материалов — книг, подкастов и блогов, которые позволят лучше разобраться в теме.
Начните обучение прямо сейчас: https://slc.tl/ovswp
Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqwTYVtW
🔥4
Forwarded from Golang
🧠 CasCache — CAS-безопасный кэш для Go с валидацией чтения и «bulk»-наборов
Что это
- Кэш «как CAS»: записи защищены поколениями (generation). Запись проходит только если поколение ключа не изменилось.
- Singles: никогда не вернёт «протухшее» значение; битые/чужого типа записи самовосстанавливаются (самоочистка).
- Bulk: кэширует набор ключей; при чтении каждый элемент сверяется с актуальным поколением — если хоть один устарел, весь набор отбрасывается и читается по одиночке.
- Подключаемые провайдеры значений: Ristretto / BigCache / Redis.
- Подключаемые кодеки: JSON/Msgpack/CBOR/Proto (можно навесить компрессию/шифрование).
- Distributed GenStore (опционально): хранит поколения в Redis для корректности между репликами и переживания рестартов.
Зачем это нужно
- Без «грязных» чтений при гонках читателя/писателя.
- Нулевая «write amplification» при чтении — валидация только на чтении.
- Гибкий выбор провайдера/кодека, можно начать локально и дорастить до кластера (с общим GenStore).
Быстрый старт
📌Репозиторий: github.com/unkn0wn-root/cascache
Что это
- Кэш «как 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
👍5🔥2
Топ GitHub: тысячи книг и курсов по программированию на множестве языков.
Здесь есть:
— Есть материалы по абсолютно всем темам: от ML и алгоритмов до Go, C#, баз данных и даже no-code;
— Англоязычная база, сравнимая с отдельным университетом;
— Мощный сегмент на русском языке;
— Регулярные обновления;
— Бесплатные курсы, чтобы сразу закреплять практикой.
Этот репозиторий давно стал культовым: сотни тысяч звёзд, почти 3000 контрибьюторов, поддержка некоммерческой Free Ebook Foundation.
https://github.com/EbookFoundation/free-programming-books
Здесь есть:
— Есть материалы по абсолютно всем темам: от ML и алгоритмов до Go, C#, баз данных и даже no-code;
— Англоязычная база, сравнимая с отдельным университетом;
— Мощный сегмент на русском языке;
— Регулярные обновления;
— Бесплатные курсы, чтобы сразу закреплять практикой.
Этот репозиторий давно стал культовым: сотни тысяч звёзд, почти 3000 контрибьюторов, поддержка некоммерческой Free Ebook Foundation.
https://github.com/EbookFoundation/free-programming-books
🔥6👍3🥰1
Автор: Tim Boring
Год издания: 2024
Язык: Английский
Описание:
Системы оркестрации, такие как Kubernetes, могут показаться "черным ящиком": вы размещаете их в облаке, и оно волшебным образом обрабатывает все, что вам нужно. Это может показаться идеальным решением, пока что—то не пойдет не так, и вы не будете знать, как найти и устранить свои проблемы. Создание оркестратора на Go (с нуля) раскрывает внутреннюю работу фреймворков оркестровки, помогая вам создавать свой собственный.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥9🥰1😁1
VK JT = Java + Go!
16 сентября VK приглашает Go‑ и Java‑разработчиков на VK JT Meetup в Санкт-Петербурге.
В программе:
— Максимально практические доклады от техлидов VK о трансформации ВКонтакте, переходе части сервисов на Go и об устройстве и развитии единой видеоплатформы VK
— Командные бэкенд-баттлы под менторством опытных разработчиков VK — кейсы, вдохновлённые реальной архитектурой VK
Задавайте вопросы экспертам, ищите лучшее командное решение кейса и оставайтесь на афтепати: нетворкинг, фуршет, свободное общение с коллегами.
Только офлайн, в офисе VK на Мойке.
🎟 Участие бесплатное, почитать подробнее и зарегистрироваться вы сможете на сайте
16 сентября VK приглашает Go‑ и Java‑разработчиков на VK JT Meetup в Санкт-Петербурге.
В программе:
— Максимально практические доклады от техлидов VK о трансформации ВКонтакте, переходе части сервисов на Go и об устройстве и развитии единой видеоплатформы VK
— Командные бэкенд-баттлы под менторством опытных разработчиков VK — кейсы, вдохновлённые реальной архитектурой VK
Задавайте вопросы экспертам, ищите лучшее командное решение кейса и оставайтесь на афтепати: нетворкинг, фуршет, свободное общение с коллегами.
Только офлайн, в офисе VK на Мойке.
🎟 Участие бесплатное, почитать подробнее и зарегистрироваться вы сможете на сайте
❤1
Как на Go создать Validating Admission Controller для Kubernetes.
Это веб‑hook, который проверяет, что в каждом контейнере деплоя указаны
Автор подробно проходит через архитектуру (mutating → validating), код на Go для обработки
👉 Читать
Это веб‑hook, который проверяет, что в каждом контейнере деплоя указаны
memory.requests
и memory.limits
. Если хоть одно из них отсутствует — создание ресурса блокируется.Автор подробно проходит через архитектуру (mutating → validating), код на Go для обработки
AdmissionReview
, настройку TLS, манифесты для Deployment и Webhook-а, и тестирование в кластере.👉 Читать
👍3❤1