37.1K subscribers
1.46K photos
34 videos
5 files
1.62K links
加入频道
👣 Excelize

Вышла новая версии библиотеки 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
👣 enum

Типобезопасные перечисления для 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
👣 Что выведет код ?

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
Что выведет код ?
Anonymous Quiz
35%
true true
22%
false true
27%
false false
16%
true false
👣 Golightly brings the LightGBM ML library into the Go ecosystem

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
👣 Интересная статья - Как улучшить консистентность и производительность краулера на Go с помощью retry logics и настройки сети.

📌 Cтатья

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Lingua Go

Обновление библиотеки 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:
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
👣 Fake GitHub Contributions Generator

Забавный проект, написанный на 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