37.1K subscribers
1.46K photos
34 videos
5 files
1.62K links
加入频道
👣 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
Легкий способ получать свежие обновлении и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:

Data Science: t.me/data_analysis_ml
Go: t.me/GolangJobsit
Java: t.me/javatg
Базы данных: t.me/sqlhub
Машинное обучение: t.me/ai_machinelearning_big_data
C/C++/ t.me/cpluspluc
C#: t.me/csharp_ci
Хакинг: t.me/linuxkalii
Мобильная разработка: t.me/mobdevelop
Docker: t.me/+0WdB4uvOwCY0Mjdi
Python: t.me/pythonl
Rust: t.me/rust_code
Javascript: t.me/javascriptv
React: t.me/react_tg
PHP: t.me/phpshka
Android: t.me/android_its
Linux: t.me/+A8jY79rcyKJlYWY6
Big Data: t.me/bigdatai
Devops: t.me/devOPSitsec
Тестирование:https://yangx.top/+F9jPLmMFqq1kNTMy
Собеседования: https://yangx.top/machinelearning_interview

💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://yangx.top/addlist/2Ls-snqEeytkMDgy

😆ИТ-Мемы: t.me/memes_prog

🇬🇧Английский: t.me/english_forprogrammers

ИИ: t.me/machinelearning_ru

📕Ит-книги бесплатно: https://yangx.top/addlist/BkskQciUW_FhNjEy
👣 Wumpus

Это ванильная реализация на Go классической текстовой компьютерной игры 1973 года, впервые разработанной Грегори Йоб Хантом (Gregory Yob Hunt The Wumpus).

Она включает в себя все уровни из Wumpus II, механизмы из Wumpus III и Super Wumpus, а также расширенный режим.

Github

#golang #gamedev

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
📖 Логирование в Go: 8 лучших библиотек

С вероятностью 99% можно сказать, что если вы ведете логи в Go, то используете сторонний фреймворк, поскольку встроенный пакет не обладает даже самыми базовыми возможностями, необходимыми для ведения журнала на производстве.

Ситуация изменилась с выходом Go 1.21, в котором одним из главных достоинств стал новый пакет log/slog для структурированного, уровневого и контекстно-зависимого логирования.

Поскольку экосистема Go уже породила множество комплексных решений для ведения логов, вы можете задаться вопросом, является ли пакет Slog предвестником устаревания его предшественников или просто еще одним инструментом в вашем арсенале для работы.

В данной статье рассматриваются восемь библиотек для логирования, обсуждаются их достоинства и недостатки с учетом следующих факторов: производительность, гибкость, функциональность, простота использования и поддержка сообщества.

1. Zerolog

2. Zap

3. Slog

4. Logrus

5. Log15

6. Logf

7. Apex/log

8. Logr

📌 Статья

@Golang_google
This media is not supported in your browser
VIEW IN TELEGRAM
👣 EvalGPT - это фреймворк, интерпретатора кода, написанный на Go, использующий возможности таких крупных языковых моделей, как GPT-4, CodeLlama и Claude 2.

Этот мощный инструмент позволяет писать промпты, а EvalGPT помогает сгенерировать код, выполнить его и выдать результаты.

go install github.com/index-labs/evalgpt@latest

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
👣 GoReleaser: Deliver Go binaries as fast and easily as possible.

Обновлен GoReleaser, проект, который позволяет легко и быстро создавать deb пакеты.

Github
Документация

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

LolDriverScan - это golang-инструмент, позволяющий пользователям обнаруживать уязвимые драйверы в вашей системе. Этот инструмент получает список loldrivers.io из их API и сканирует систему на наличие уязвимостей.

Этот проект реализован на языке Go и не требует повышенных привилегий для запуска.

• Сканирует систему на наличие уязвимых драйверов
• Обеспечивает вывод подробной информации в режиме verbose
• Поддерживает вывод в формате JSON для упрощения интеграции с другими инструментами
• Не требует специальных привилегий


git clone https://github.com/FourCoreLabs/LolDriverScan.git
cd LolDriverScan
go build


Github

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

Amovane/reX: Реверс-инжиниринг API Twitter: После того, как twitter dev удалила API для доступа к подписчткам пользователей, разработчикам стало сложно получать эти данные.

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира : Golang за неделю

Почитать:
Книга «Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы, 3-е изд.»
Обработка миллиона запросов с помощью Golang: Стратегии и лучшие практики
Дебажим Golang с помощью Delve
Разворачиваем приложение в кластере Kubernetes под управлением Deckhouse c помощью werf
Стоит ли идти на курсы IT преподавателем?
Практика Go — Обработка ошибок (2 часть)
Практика Go — Обработка ошибок (1 часть)
Manual instrumentation of Go applications with OpenTelemetry
Iterium - Generic Channel-based Iterators for Golang
Go: Insert a value into nested structures with a dot
Boost Your Golang Skills: Writing Large Data Files for Performance
Use Go Lambda and API Gateway to Generate DynamoDB Tables on Demand
How we made our Go microservice 24x faster
Integration Test Postgres Store with testcontainers-go
Golang Road map in 2023. From beginner to Expert
Criando um JSON Unmarshal personalizado em Go
Dependency Injection like a Pro in Golang

Посмотреть:

🌐 Уроки Golang с нуля /#28 - Встраивание типов ( 06:16)
🌐 Уроки Golang с нуля /#27 - Bufio. Чтение и запись ( 10:35)
🌐 This Will Make Everyone Understand Golang Interfaces ( 21:03)
🌐 Are Goroutines USELESS For Backend Development?? ( 09:10)
🌐 The Ultimate Programming Q&A With The One And Only ( 01:59:02)

Хорошего дня!

@Golang_google
⭐️ Cerbos

Выпущена новая версия v0.30 Cerbos, масштабируемого #opensource проекта для реализации ролей и разрешений.

Cerbos - открытый проект, написанный на Go, масштабируемое решение для авторизации, которое упрощает внедрение и управление правами пользователей и авторизацией путем написания контекстно-зависимых политик управления доступом к ресурсам приложения.

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Automaxprocs

Automatically set GOMAXPROCS to match Linux container CPU quota.

Automaxprocs позволяет выставить максимальное количество ядер для контейнеров.Хороший варинат, чтобы уменьшить тротлинг cpu.

go get -u go.uber.org/automaxprocs

Github

@Golang_google
👣 Что возвращать в Go: структуры или интерфейсы?

Возвращение структур
Рассмотрим преимущества возвращения структур из функций Go: эксплицитность, гибкость, прямой контроль над полями и методами объекта.
Изучим потенциальный недостатоксильную связанность — и выработаем стратегии эффективного ограничения его влияния.

Преимущества и особенности возвращения структур Go с учетом потенциальных проблем сильной связанности пригодятся для создания хорошо структурированного, сопровождаемого кода.

Эксплицитность
Для возвращаемой структуры характерны четкая видимость, доступ к ее полям и методам. Это как подробная схема, на которой раскрываются все нюансы объекта.

Получая прямой доступ к свойствам структуры, мы имеем четкое представление о том, что внутри нее, поэтому работа с данными, манипулирование ими упрощаются.

Рассмотрим пример:

type Person struct {
Name string
Age int
Email string
}

func NewPerson(name string, age int, email string) Person {
return Person{
Name: name,
Age: age,
Email: email,
}
}

func main() {
person := NewPerson("John Doe", 30, "[email protected]")
fmt.Println("Name:", person.Name)
fmt.Println("Age:", person.Age)
fmt.Println("Email:", person.Email)
}

В функции NewPerson возвращается структура Person с информацией о человеке. Возвращая структуру напрямую, мы получаем явный доступ к ее полям Name, Age, Email в вызывном коде.

Благодаря такой эксплицитности необходимые данные легко извлечь и использовать.

Гибкость
Возвращаемыми структурами обеспечиваются непревзойденные контроль и гибкость при определении конкретных поведений и методов. Структура проектируется с именно таким функционалом, который требуется.

Благодаря возможности адаптировать ее к конкретным требованиям, код получается чище, целенаправленнее и с точным соответствием задачам приложения.

Продемонстрируем эту гибкость, обновив пример выше:

type Person struct {
Name string
Age int
Email string
}

func (p Person) Greet() {
fmt.Println("Hello, my name is", p.Name)
}

func main() {
person := Person{
Name: "John Doe",
Age: 30,
Email: "[email protected]",
}
person.Greet()
}

В структуру Person добавили метод Greet. Возвращая структуру, мы определяем конкретное поведение прямо в ее типе. В методе Greet приветствие персонализируется полем Name структуры Person.

Благодаря такой гибкости поведения инкапсулируются в самой структуре, а код чище и проще в сопровождении.

📌Читать далее

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Crafting a Language Server in Golang: A VSCode LSP for Lama2

Lama2 - это менеджер API, ориентированный на работу с текстом и оптимизированный для совместной работы через Git.

В этой статье подробно с рассказывается о разработке функционала для VSCode с Lama2 на Go. От проблем, с которыми разработчики столкнулись во время разработки до инсайтов, которые были реализованы за год работы.


Статья
Lama2

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Failsafe-go

Failsafe-go - новая библиотека для создания отказоустойчивых приложений на Go. Она работает путем обертывания исполняемой логики одной или несколькими функциями отказоустойчивости, которые можно комбинировать и компоновать по мере необходимости. Функции включают в себя Retry, Circuit Breaker, Rate Limiter, Timeout, Bulkhead и Fallback.

Failsafe-go поможет построить гибкую, простую в использовании реализацию retry и circuit breaker, а также возможность комбинировать их с другими стратегиями отказоустойчивости, что предлагают библиотеки на других языках.

Project
Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Бесплатные курсы: DevOps и Cloud:

Бесплатный онлайн-курс DevOps
https://academiait.ru/course/devops/

Golang бесплатный курс с нуля
https://stepik.org/course/179158/promo

Youtube
https://www.youtube.com/playlist?list=PLysMDSbb9HcxpAb8lhnMaRpX890wSLz66

Linux
http://mygreatlearning.com/academy/learn-for-free/courses/linux-tutorial

Основы программирования для Linux
https://stepik.org/course/548/promo


Основы Linux
https://stepik.org/course/762/promo

Основы Linux
https://stepik.org/course/762/promo

GIT
http://simplilearn.com/learn-git-basics-skillup

DevOps
http://openclassrooms.com/courses/7853556-discover-the-devops-methodology

CI/CD
http://simplilearn.com/free-ci-cd-online-training-course-skillup

Docker
http://cognitiveclass.ai/courses/docker-essentials

Kubernetes
http://simplilearn.com/learn-kubernetes-basics-free-course-skillup

GitHub
http://mygreatlearning.com/academy/learn-for-free/courses/github-tutorial-for-beginners

Cloud Computing
http://cognitiveclass.ai/courses/introduction-to-cloud

AWS
http://openclassrooms.com/courses/7864796-discover-cloud-with-amazon-web-services

Azure
http://mygreatlearning.com/academy/learn-for-free/courses/microsoft-azure-essentials

GCP
http://simplilearn.com/learn-google-cloud-platform-fundamentals-free-course-skillup

Serverless
http://mygreatlearning.com/academy/learn-for-free/courses/serverless-computing

Jenkins
http://mygreatlearning.com/academy/learn-for-free/courses/jenkins-tutorial

Puppet
http://simplilearn.com/free-course-to-learn-puppet-basics-skillup

Chef
http://simplilearn.com/chef-in-devops-basics-free-course-skillup

Ansible
http://simplilearn.com/learn-ansible-basics-free-course-skillup

Selenium
http://mygreatlearning.com/academy/learn-for-free/courses/selenium-basics

VirtualBox & vSphere
http://openclassrooms.com/courses/7163136-set-up-virtual-machines-using-virtualbox-and-vsphere

Специализация Python Scripting for DevOps
https://www.coursera.org/specializations/python-scripting-devops

@Golang_google
👣 WASI support in Go

В Go 1.21 добавлен новый порт, ориентированный на API системных вызовов WASI preview. Этот порт основан на существующем порте WebAssembly, представленном в Go 1.1.

WebAssembly (или Wasm) — это бинарный формат, запускаемый в браузере, виртуальная машина, и результат компиляции с языка высокого уровня.

Wasm это не язык программирования, подобно тому как байт-код Java это не язык программирования, а результат компиляции и запускаемый блок кода.

Кто-то очень умный сказал, что название web assembly (то есть «ассемблер для веба») полностью неправильное, потому что это не ассемблер (не язык программирования) и он никак не связан с вебом (потому что это просто виртуальная машина).

https://go.dev/blog/wasi

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