Вышла новая версии библиотеки Excelize 2.8.0. В ней появилось несколько новых функций и исправлено множество ошибок.
Excelize это библиотека, написанная на Go и предоставляющая набор функций, позволяющих работать с
XLAM / XLSM / XLSX / XLTM / XLTX
. Поддерживает чтение и запись документов электронных таблиц, сгенерированных Microsoft Excel™ 2007
и более поздними версия.go get github.com/xuri/excelize
▪Github
▪Список обновлений
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Типобезопасные перечисления для Go без генерации кода и рефлексии.
go get github.com/orsinium-labs/enum
▪Github
▪Docs
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира : Golang за неделю
Почитать:
— Как школьник с эпилеписей разбирался, или опыт участия в True Tech Hack
— Мультиплатформенность приложений в 2023
— How to build a Cambridge Dictionary API in GO
— Simplifying your Kubernetes infrastructure with cdk8s
— Difference between Godotenv vs Viper in Golang
— Building a Golang Project from Scratch - Zero to Hero - Part 1
— Rate Limiters: Why should we care about our 429s
— Advent of Code: Investigating performance improvements in Go
— DynamoDB Streams EventBridge Pipes Enrichment
— Golang 1.21 is here (Part 2)
— Interfaces and Embedding in Golang (Go)
— How to create your first Golang Lambda With Serverless Framework
Посмотреть:
🌐 Уроки Golang с нуля /#25 - Интерфейсы (⏱ 10:51)
🌐 Многопоточный парсер на Python. ООП подход (⏱ 08:24)
🌐 Collaboration Tool With Raylib And Golang Experiment (⏱ 01:43:29)
🌐 Drawing Collaboration Tool With Raylib And Golang Experiment (⏱ 00:00)
🌐 Golang Open Source Work - Distributed Systems With Hollywood (⏱ 01:48:07)
🌐 Indie Golang Game Dev - Player debufs (⏱ 44:12)
🌐 Разбираю задачу с Go собеседования | Собеседование Golang разработчика (⏱ 05:48)
Хорошего дня!
@Golang_google
Почитать:
— Как школьник с эпилеписей разбирался, или опыт участия в True Tech Hack
— Мультиплатформенность приложений в 2023
— How to build a Cambridge Dictionary API in GO
— Simplifying your Kubernetes infrastructure with cdk8s
— Difference between Godotenv vs Viper in Golang
— Building a Golang Project from Scratch - Zero to Hero - Part 1
— Rate Limiters: Why should we care about our 429s
— Advent of Code: Investigating performance improvements in Go
— DynamoDB Streams EventBridge Pipes Enrichment
— Golang 1.21 is here (Part 2)
— Interfaces and Embedding in Golang (Go)
— How to create your first Golang Lambda With Serverless Framework
Посмотреть:
🌐 Уроки Golang с нуля /#25 - Интерфейсы (⏱ 10:51)
🌐 Многопоточный парсер на Python. ООП подход (⏱ 08:24)
🌐 Collaboration Tool With Raylib And Golang Experiment (⏱ 01:43:29)
🌐 Drawing Collaboration Tool With Raylib And Golang Experiment (⏱ 00:00)
🌐 Golang Open Source Work - Distributed Systems With Hollywood (⏱ 01:48:07)
🌐 Indie Golang Game Dev - Player debufs (⏱ 44:12)
🌐 Разбираю задачу с Go собеседования | Собеседование Golang разработчика (⏱ 05:48)
Хорошего дня!
@Golang_google
package main
import "reflect"
func main() {
f := func() {}
s := []func(){f, f, f, f, f, f}
x := s[1:4]
y := s[3:6]
z := x[2:5]
println(
reflect.DeepEqual(x, y),
reflect.DeepEqual(y, z),
)
}
📌Запустить код
#junior #quiz
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Golightly новый фреймворк Go машинного обучения для решения задач: регрессии, классификации, ранжирования и т.д.
Golightly предоставляет обертку для LightGBM.
LightGBM — это фреймворк, который предоставляет реализацию деревьев принятия решений с градиентным бустингом.
LightGBM известен своей высокой скоростью обучения, хорошей точностью с параметрами по умолчанию, параллельным и GPU обучением, малым использованием памяти и возможностью обработки больших датасетов, которые не всегда помещаются в ней.
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Dockertest - это замечательная библиотека, позволяющая управлять контейнерами docker для тестов. Вместо использования docker compose или других настроек (вне тестов) мы можем создавать чистую среду docker при каждом запуске.
Простой пример работы с Dockertest
▪Github
▪Example
@Golang_google
Простой пример работы с Dockertest
▪Github
▪Example
@Golang_google
📌 Cтатья
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Обновление библиотеки Lingua Go, которая позволяет определить, на каком языке написан тот или иной текст. Это очень полезно в качестве этапа предварительной обработки лингвистических данных в приложениях обработки естественного языка, таких как классификация текстов и проверка орфографии.
Другие варианты использования, например, могут включать маршрутизацию документации/электронных писем в нужный географически расположенный отдел обслуживания клиентов на основе языка документов/писем.
В настоящее время поддерживаются 75 языков.
go get github.com/pemistahl/lingua-go
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 ScyllaDB в K8S: как справляться с интенсивными рабочими нагрузками на спотовых экземплярах без простоев
Почему не MongoDB?
Чем плоха Mongo?
• У нее открытый исходный код, поддерживается разделение данных, но совершенно иная архитектура — с единой точкой отказа. При «падении» главного узла, то есть координатора, в БД начинается отработка отказа, во время которого БД недоступна.
• Кроме того, для достижения высокой доступности каждый сегмент Mongo должен запускаться как набор реплик — больше узлов. Кольцевая архитектура Cassandra в этом смысле превосходнее. Драйвер Scylla «знает» о сегментах и добирается до конкретного узла/процессора, ответственного за запрашиваемую строку, делая распределение действительным.
• Но почему так важны отработка отказов без простоев и высокая доступность? На спотовых экземплярах — а это 1/4 стоимости вычислений — часто ежедневно случаются отработки отказов: узлы в k8s постоянно уничтожаются и воссоздаются, что чревато завершением всех запущенных в них подов/процессов, в том числе БД.
Установка Scylla
Сначала запустим локально, используя драйверы и что-нибудь на Cassandra Query Language:
Этой командой запустится одноузловой кластер Scylla. Так в режиме разработчика Scylla требуется минимум ресурсов в отличие от Cassandra, с которой у Docker Engine много работы.
Применение драйвера Scylla
Вот простой пример на Golang с использованием официального драйвера Scylla:
Здесь стоит обратить внимание вот на что:
Драйвером-клиентом TokenAware с помощью ключа раздела пробуется первый сегмент, затем методом циклического перебора — следующий, если первый недоступен. Для этого необходимо подключиться не к порту Cassandra по умолчанию 9042, а к порту Scylla с поддержкой сегментов 19042.
Попробуем простой запрос:
Переходим в облако
📌ПРОДОЛЖЕНИЕ
@Golang_google
Почему не MongoDB?
Чем плоха Mongo?
• У нее открытый исходный код, поддерживается разделение данных, но совершенно иная архитектура — с единой точкой отказа. При «падении» главного узла, то есть координатора, в БД начинается отработка отказа, во время которого БД недоступна.
• Кроме того, для достижения высокой доступности каждый сегмент Mongo должен запускаться как набор реплик — больше узлов. Кольцевая архитектура Cassandra в этом смысле превосходнее. Драйвер Scylla «знает» о сегментах и добирается до конкретного узла/процессора, ответственного за запрашиваемую строку, делая распределение действительным.
• Но почему так важны отработка отказов без простоев и высокая доступность? На спотовых экземплярах — а это 1/4 стоимости вычислений — часто ежедневно случаются отработки отказов: узлы в k8s постоянно уничтожаются и воссоздаются, что чревато завершением всех запущенных в них подов/процессов, в том числе БД.
Установка Scylla
Сначала запустим локально, используя драйверы и что-нибудь на Cassandra Query Language:
docker run -p 9042:9042 -p 7002:7000 -p 7001:7001 -p 9160:9160 -p 9180:9180 --name scylla --hostname scylla -d scylladb/scylla --smp 1 --developer-mode 1
Этой командой запустится одноузловой кластер Scylla. Так в режиме разработчика Scylla требуется минимум ресурсов в отличие от Cassandra, с которой у Docker Engine много работы.
Применение драйвера Scylla
Вот простой пример на Golang с использованием официального драйвера Scylla:
import "github.com/gocql/gocql"
func Connect(config Config) (*gocql.Session, error) {
cluster := gocql.NewCluster(config.Hosts...)
cluster.Keyspace = config.KeySpace
cluster.CQLVersion = "3.11"
cluster.RetryPolicy = &gocql.ExponentialBackoffRetryPolicy{
NumRetries: 5, Min: time.Millisecond * 5, Max: time.Second * 5}
cluster.ProtoVersion = 3
cluster.PoolConfig.HostSelectionPolicy = gocql.TokenAwareHostPolicy(
gocql.RoundRobinHostPolicy())
cluster.ConnectTimeout = time.Second * 10
cluster.Consistency = gocql.One
if config.Timeout != nil {
cluster.Timeout = *config.Timeout
}
cluster.Authenticator = gocql.PasswordAuthenticator{
Username: config.Username, //'cassandra' по умолчанию
Password: config.Password, //'cassandra' по умолчанию
}
session, err := cluster.CreateSession()
if err != nil {
return nil, err
}
return session, nil
}
Здесь стоит обратить внимание вот на что:
cluster.PoolConfig.HostSelectionPolicy = gocql.TokenAwareHostPolicy(
gocql.RoundRobinHostPolicy())
Драйвером-клиентом TokenAware с помощью ключа раздела пробуется первый сегмент, затем методом циклического перебора — следующий, если первый недоступен. Для этого необходимо подключиться не к порту Cassandra по умолчанию 9042, а к порту Scylla с поддержкой сегментов 19042.
Попробуем простой запрос:
func Ping(session *gocql.Session) error {
var str = new(string)
if err := session.Query("SELECT uuid() FROM system.local;").Scan(str); err != nil {
return err
}
if str == nil || len(*str) == 0 {
return errors.New("failed sanity check")
}
return nil
}
// альтернатива «select 1;» в SQL
Переходим в облако
📌ПРОДОЛЖЕНИЕ
@Golang_google
🔥 Backend Master Class [Golang + Postgres + Kubernetes + gRPC]
В этом курсе вы шаг за шагом узнаете, как спроектировать, разработать и развернуть веб-сервис с нуля.
Лучший способ изучения программирования - это создание реального приложения. Поэтому на протяжении всего курса вы будете учиться создавать веб-сервис для банка. В проекте предоставлены API-интерфейсы для фронтенда, позволяющие выполнять следующие действия:
▪Создавать и управлять банковскими счетами.
▪Записывать все изменения баланса на каждом из счетов.
▪Выполнять денежные переводы между двумя счетами.
67 лекций и много практики.
▪Github
▪Курс
@Golang_google
В этом курсе вы шаг за шагом узнаете, как спроектировать, разработать и развернуть веб-сервис с нуля.
Лучший способ изучения программирования - это создание реального приложения. Поэтому на протяжении всего курса вы будете учиться создавать веб-сервис для банка. В проекте предоставлены API-интерфейсы для фронтенда, позволяющие выполнять следующие действия:
▪Создавать и управлять банковскими счетами.
▪Записывать все изменения баланса на каждом из счетов.
▪Выполнять денежные переводы между двумя счетами.
67 лекций и много практики.
▪Github
▪Курс
@Golang_google
Забавный проект, написанный на Go, который генерирует фальшивые коммиты каждый день, чтобы ваш профиль GH выглядел так, будто вы обновляете свой проект каждый день.
▪ Github
$ go install github.com/navicstein/fake-contributions
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира : Golang за неделю
Почитать:
— Практика Go — Обработка ошибок
— Практика Go — Concurrency
— 9 лучших консольных файловых менеджеров Linux
— Чему вы научитесь на бесплатном курсе VK Education по Go?
— Практика Go — Основы
— Шпаргалка для собеса по GoLang
— Testing calls to Daily's REST API in Go
— Golang Web: URL Parsing
— Rust, Go, Rinha e I/O
— Error handling in Golang
— Integration Test Postgres Store (Go)
— Nuances in Go: Exploring the Tiny Details. Part-1.
— 15. World Chat System Implementation
— Hunting Broken Social Media Links with Go
— How to create and read custom tags in Golang
— Fibonacci Sequence Computation in Go Programming Language
— Wtf is Grpc? Part 1: Authentication and Authorization in Flutter and Golang.
Посмотреть:
🌐 Уроки Golang с нуля /#26 - Обработка ошибок (⏱ 08:14)
библиотеке Numpy. Полезные функции (⏱ 11:05)
🌐 Beginners Should Think Differently When Writing Golang (⏱ 11:35)
🌐 The Power Of Struct Embedding And Interfaces In Golang (⏱ 15:05)
🌐 Adding Cluster Support To Hollywood Actor Framework
🌐 Полный курс по библиотеке Numpy. Применение Numpy (⏱ 11:52)
🌐 Полный курс по библиотеке Numpy. Создание матриц из файла (⏱ 15:55)
🌐 Полный курс по библиотеке Numpy. Продвинутые методы работы с матрицами (⏱ 07:28)
Хорошего дня!
@Golang_google
Почитать:
— Практика Go — Обработка ошибок
— Практика Go — Concurrency
— 9 лучших консольных файловых менеджеров Linux
— Чему вы научитесь на бесплатном курсе VK Education по Go?
— Практика Go — Основы
— Шпаргалка для собеса по GoLang
— Testing calls to Daily's REST API in Go
— Golang Web: URL Parsing
— Rust, Go, Rinha e I/O
— Error handling in Golang
— Integration Test Postgres Store (Go)
— Nuances in Go: Exploring the Tiny Details. Part-1.
— 15. World Chat System Implementation
— Hunting Broken Social Media Links with Go
— How to create and read custom tags in Golang
— Fibonacci Sequence Computation in Go Programming Language
— Wtf is Grpc? Part 1: Authentication and Authorization in Flutter and Golang.
Посмотреть:
🌐 Уроки Golang с нуля /#26 - Обработка ошибок (⏱ 08:14)
библиотеке Numpy. Полезные функции (⏱ 11:05)
🌐 Beginners Should Think Differently When Writing Golang (⏱ 11:35)
🌐 The Power Of Struct Embedding And Interfaces In Golang (⏱ 15:05)
🌐 Adding Cluster Support To Hollywood Actor Framework
🌐 Полный курс по библиотеке Numpy. Применение Numpy (⏱ 11:52)
🌐 Полный курс по библиотеке Numpy. Создание матриц из файла (⏱ 15:55)
🌐 Полный курс по библиотеке Numpy. Продвинутые методы работы с матрицами (⏱ 07:28)
Хорошего дня!
@Golang_google