Описание кейса 80-кратного улучшения производительности кэширования в Go за счёт отказа от JSON в пользу gob.
https://www.ksred.com/80x-caching-improvement-in-go/
https://www.ksred.com/80x-caching-improvement-in-go/
Дженерики в Go с примерами кода (Generics in Golang)
Несколько лет назад для Go были предложены дженерики, и в начале этого года они наконец были приняты в язык.
Как дженерики действительно повлияют на Go? Изменит ли это то, как мы кодируем?
Чтобы действительно ответить на эти вопросы, нам нужно взглянуть на то, как работают дженерики.
👉 @golang_lib
Несколько лет назад для Go были предложены дженерики, и в начале этого года они наконец были приняты в язык.
Как дженерики действительно повлияют на Go? Изменит ли это то, как мы кодируем?
Чтобы действительно ответить на эти вопросы, нам нужно взглянуть на то, как работают дженерики.
👉 @golang_lib
Пример криптографии (классический шифр)на GO
Ниже приведен очень простой пример: мы создали простой шифр для шифрования и дешифрования открытого текста в зашифрованный текст и наоборот. Алгоритм cipherAlgorithm() одинаково хорош и просто для шифрования и дешифрования. Мы использовали ключи 01, 10 и 15 для шифрования и дешифрования сообщения. Результат шифрования каждый раз разный, когда используется другой ключ. Этот шифр сдвигает букву на основе значения ключа, ключ играет важную роль в данном примере.
Encrypt Key(01) abcd => bcde
Decrypt Key(01) bcde => abcd
Encrypt Key(10) abcd => klmn
Decrypt Key(10) klmn => abcd
Encrypt Key(15) abcd => pqrs
Decrypt Key(15) pqrs => abcd
👉 @golang_lib
Ниже приведен очень простой пример: мы создали простой шифр для шифрования и дешифрования открытого текста в зашифрованный текст и наоборот. Алгоритм cipherAlgorithm() одинаково хорош и просто для шифрования и дешифрования. Мы использовали ключи 01, 10 и 15 для шифрования и дешифрования сообщения. Результат шифрования каждый раз разный, когда используется другой ключ. Этот шифр сдвигает букву на основе значения ключа, ключ играет важную роль в данном примере.
package main
import (
"fmt"
"unicode"
)
// Cipher encrypts and decrypts a string.
type Cipher interface {
Encryption(string) string
Decryption(string) string
}
// Cipher holds the key used to encrypts and decrypts messages.
type cipher []int
// cipherAlgorithm encodes a letter based on some function.
func (c cipher) cipherAlgorithm(letters string, shift func(int, int) int) string {
shiftedText := ""
for _, letter := range letters {
if !unicode.IsLetter(letter) {
continue
}
shiftDist := c[len(shiftedText)%len(c)]
s := shift(int(unicode.ToLower(letter)), shiftDist)
switch {
case s < 'a':
s += 'z' - 'a' + 1
case 'z' < s:
s -= 'z' - 'a' + 1
}
shiftedText += string(s)
}
return shiftedText
}
// Encryption encrypts a message.
func (c *cipher) Encryption(plainText string) string {
return c.cipherAlgorithm(plainText, func(a, b int) int { return a + b })
}
// Decryption decrypts a message.
func (c *cipher) Decryption(cipherText string) string {
return c.cipherAlgorithm(cipherText, func(a, b int) int { return a - b })
}
// NewCaesar creates a new Caesar shift cipher.
func NewCaesar(key int) Cipher {
return NewShift(key)
}
// NewShift creates a new Shift cipher.
func NewShift(shift int) Cipher {
if shift < -25 || 25 < shift || shift == 0 {
return nil
}
c := cipher([]int{shift})
return &c
}
func main() {
c := NewCaesar(1)
fmt.Println("Encrypt Key(01) abcd =>", c.Encryption("abcd"))
fmt.Println("Decrypt Key(01) bcde =>", c.Decryption("bcde"))
fmt.Println()
c = NewCaesar(10)
fmt.Println("Encrypt Key(10) abcd =>", c.Encryption("abcd"))
fmt.Println("Decrypt Key(10) klmn =>", c.Decryption("klmn"))
fmt.Println()
c = NewCaesar(15)
fmt.Println("Encrypt Key(15) abcd =>", c.Encryption("abcd"))
fmt.Println("Decrypt Key(15) pqrs =>", c.Decryption("pqrs"))
}
вывод программы:Encrypt Key(01) abcd => bcde
Decrypt Key(01) bcde => abcd
Encrypt Key(10) abcd => klmn
Decrypt Key(10) klmn => abcd
Encrypt Key(15) abcd => pqrs
Decrypt Key(15) pqrs => abcd
👉 @golang_lib
Интерфейсы в Go — как красиво выстрелить себе в ногу
С этой статьи начинается серия небольших рассказов о необычных подводных камнях, которые можно встретить в начале разработки на Go. В статьях будут примеры кода, будьте с ними аккуратнее - не все из них будут компилироваться и работать, читайте внимательно комментарии, везде будет указано, на какой строке происходит ошибка. Также в блоках кода везде табуляция заменена на пробелы - это сделано намеренно, чтобы статьи выглядели у всех одинаково.
👉 @golang_lib
С этой статьи начинается серия небольших рассказов о необычных подводных камнях, которые можно встретить в начале разработки на Go. В статьях будут примеры кода, будьте с ними аккуратнее - не все из них будут компилироваться и работать, читайте внимательно комментарии, везде будет указано, на какой строке происходит ошибка. Также в блоках кода везде табуляция заменена на пробелы - это сделано намеренно, чтобы статьи выглядели у всех одинаково.
👉 @golang_lib
Пишем простой контроллер допуска в Kubernetes на Go и разворачиваем его в кластере.
https://bshayr29.medium.com/build-your-own-admission-controllers-in-kubernetes-using-go-bef8ba38d595
👉 @golang_lib
https://bshayr29.medium.com/build-your-own-admission-controllers-in-kubernetes-using-go-bef8ba38d595
👉 @golang_lib
Medium
Build Your Own Admission Controllers in Kubernetes Using Go
Admission Control vs RBAC
Event-Driven Distributed Systems: построение и реализация на Go + gRPC + NATS JetStream + CockroachDB.
https://shijuvar.medium.com/building-event-driven-distributed-systems-in-go-with-grpc-nats-jetstream-and-cockroachdb-c4b899c8636d
👉 @golang_lib
https://shijuvar.medium.com/building-event-driven-distributed-systems-in-go-with-grpc-nats-jetstream-and-cockroachdb-c4b899c8636d
👉 @golang_lib
🔥1
Работа со строками в Golang
После изучения данной статьи вы сможете:
Получить доступ к отдельным буквам, а также манипулировать ими;
Зашифровать и расшифровать сообщение;
Написать программу для людей, что говорят на разных языках.
👉 @golang_lib
После изучения данной статьи вы сможете:
Получить доступ к отдельным буквам, а также манипулировать ими;
Зашифровать и расшифровать сообщение;
Написать программу для людей, что говорят на разных языках.
👉 @golang_lib
Golang
Манипуляция строками в Golang - Тип string в Go
Типы строк в Golang. Кодирование и декодирование с помощью шифра Цезаря и ROT13 в Golang. Работа со строками на русском языке Golang.
GoBotApiGenerator - Элегантная и современная библиотека BotAPI для GoLang.
Этот фреймворк представляет чистую реализацию на Go без каких-либо внешних библиотек.
https://github.com/Squirrel-Network/GoBotApiGenerator
👉 @golang_lib
Этот фреймворк представляет чистую реализацию на Go без каких-либо внешних библиотек.
https://github.com/Squirrel-Network/GoBotApiGenerator
👉 @golang_lib
👍2
Ускоряем hugo на 20% простым изменением в пакете reflect
Найти значительное узкое место в производительности стандартной библиотеки или зрелого приложения — это редкость.
Я был удивлён, когда в top10 списке CPU-профиля hugo при сборке digitalgov. gov на первой позиции находился метод reflect.Type.MethodByName().
В этой статье я расскажу вам о том, как так вышло и что с этим можно было бы сделать.
👉 @golang_lib
Найти значительное узкое место в производительности стандартной библиотеки или зрелого приложения — это редкость.
Я был удивлён, когда в top10 списке CPU-профиля hugo при сборке digitalgov. gov на первой позиции находился метод reflect.Type.MethodByName().
В этой статье я расскажу вам о том, как так вышло и что с этим можно было бы сделать.
👉 @golang_lib
Хабр
Ускоряем hugo на 20% простым изменением в пакете reflect
Найти значительное узкое место в производительности стандартной библиотеки или зрелого приложения — это редкость. Я был удивлён, когда в top10 списке CPU-профиля hugo при сборке digitalgov.gov на...
👍1
Веб-приложение на Golang для чтения и записи данных в JSON файл
Golang предлагает мощные инструменты для создания веб-серверов.В Golang вы можете создавать веб-серверы, с разными адресами, разными типами запросов и разными типами контента. Для веб-разработки основными пакетами стандартной библиотеки являются net/http и html/template. Используя эти два пакета, вы можете создавать полнофункциональные веб-приложения.
👉 @golang_lib
Golang предлагает мощные инструменты для создания веб-серверов.В Golang вы можете создавать веб-серверы, с разными адресами, разными типами запросов и разными типами контента. Для веб-разработки основными пакетами стандартной библиотеки являются net/http и html/template. Используя эти два пакета, вы можете создавать полнофункциональные веб-приложения.
👉 @golang_lib
Telegraph
Веб-приложение на Golang для чтения и записи данных в JSON файл
Golang предлагает мощные инструменты для создания веб-серверов.В Golang вы можете создавать веб-серверы, с разными адресами, разными типами запросов и разными типами контента. Для веб-разработки основными пакетами стандартной библиотеки являются net/http…
👍1
Задача «Маски» - разбираем решения задач для Go-разработчиков
Никита собирается открывать свой пункт выдачи заказов (ПВЗ). Для обеспечения безопасности посетителей Никита решил обеспечить ПВЗ одноразовыми медицинскими масками, которые будут поставляться каждый месяц в количестве $N$ штук. Местные поставщики продают маски по цене 0,55 рублей за одну штуку, но можно сэкономить, купив упаковку из 24 масок за 11 рублей или коробку из 16 упаковок за 160 рублей. Помогите Никите, определив, сколько коробок, упаковок и отдельных масок он должен купить, чтобы заплатить как можно меньше денег. Далее
👉 @golang_lib
Никита собирается открывать свой пункт выдачи заказов (ПВЗ). Для обеспечения безопасности посетителей Никита решил обеспечить ПВЗ одноразовыми медицинскими масками, которые будут поставляться каждый месяц в количестве $N$ штук. Местные поставщики продают маски по цене 0,55 рублей за одну штуку, но можно сэкономить, купив упаковку из 24 масок за 11 рублей или коробку из 16 упаковок за 160 рублей. Помогите Никите, определив, сколько коробок, упаковок и отдельных масок он должен купить, чтобы заплатить как можно меньше денег. Далее
👉 @golang_lib
👍1
Полезные советы по написанию Dockerfile для проектов на Go.
https://faun.pub/the-martial-arts-of-writing-go-dockerfile-9dcffd010619
👉 @golang_lib
https://faun.pub/the-martial-arts-of-writing-go-dockerfile-9dcffd010619
👉 @golang_lib
👍2
Как я создал систему контроля версий ( VCS), используя чистый Go 🚀
https://levelup.gitconnected.com/how-was-i-build-a-version-control-system-vcs-using-pure-go-83ec8ec5d4f4
👉 @golang_lib
https://levelup.gitconnected.com/how-was-i-build-a-version-control-system-vcs-using-pure-go-83ec8ec5d4f4
👉 @golang_lib
Medium
How I built a version control system (VCS) using pure Go 🚀
Every single artifact related to the creation of your software should be under version control. [1]
👍1
Структурированное логирование JSON в приложениях на Golang
Что такое «структурированное логирование»?
Ведение журнала, или логирование — очень важная часть программного обеспечения. Логи нужны для отслеживания того, что происходит в системах, и по мере роста последних важность логов только увеличивается.
Есть много отличных инструментов для парсинга логов. Мне, например, очень нравится ElasticSearch. Но большинство из них рассчитано на структурированные логи, а не на двоичные большие объекты с обычным текстом (и не факт, что эти объекты записаны в нужном формате). Далее
👉 @golang_lib
Что такое «структурированное логирование»?
Ведение журнала, или логирование — очень важная часть программного обеспечения. Логи нужны для отслеживания того, что происходит в системах, и по мере роста последних важность логов только увеличивается.
Есть много отличных инструментов для парсинга логов. Мне, например, очень нравится ElasticSearch. Но большинство из них рассчитано на структурированные логи, а не на двоичные большие объекты с обычным текстом (и не факт, что эти объекты записаны в нужном формате). Далее
👉 @golang_lib
👍2