Автор создал довольно много CLI-инструментов (например, enc и sourcemap) и допустил немало ошибок при написании кода. Каждый раз, когда он совершал ошибку, писал о ней заметку и свои мысли, как он мог бы предотвратить ее в будущем. В данном конкретном случае результатом этих заметок стала библиотека cliff и эта статья в блоге, описывающая приемы, которые автор использовал, чтобы сделать эту библиотеку безопасной для работы.
https://blog.orsinium.dev/posts/go/safe-api/
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Стань ментором по Go
Привет! Это Эйч Навыки — небольшая команда Гоферов, которые создали менторскую программу, чтобы помогать ребятам перейти с других языков на Go, а Гоферам — увеличить свой грейд или найти крутую работу.
Заявок на менторство у нас становится всё больше, поэтому мы ищем Middle и Senior Гоферов, которые хотели бы прокачать в себе скилл менторства.
Что получишь, если станешь ментором:
- Научишься растить других и давать фидбек — добавишь такую крутую строчку в резюме для работы в России или за рубежом
- Прокачаешь личный бренд — сможешь выступать с лекциями и интервью на нашем YouTube-канале, где видео собирают до 50 000 просмотров
- Сможешь обмениваться опытом в сообществе с другими менторами из Яндекса, Uber, Tinkoff и других крутых компаний
- Деньги тоже будут
Что нужно, чтобы стать ментором?
- Пройти небольшое интервью
- Готовность тратить от двух часов в неделю
Если хочешь попробовать, заполни небольшую гугл-форму, позже мы свяжемся с тобой и расскажем подробности: https://docs.google.com/forms/d/e/1FAIpQLSdS0mFXltUOkwLglMFARQ-f28N5AQv7RVsKGlAtjTmQc3DExg/viewform
Привет! Это Эйч Навыки — небольшая команда Гоферов, которые создали менторскую программу, чтобы помогать ребятам перейти с других языков на Go, а Гоферам — увеличить свой грейд или найти крутую работу.
Заявок на менторство у нас становится всё больше, поэтому мы ищем Middle и Senior Гоферов, которые хотели бы прокачать в себе скилл менторства.
Что получишь, если станешь ментором:
- Научишься растить других и давать фидбек — добавишь такую крутую строчку в резюме для работы в России или за рубежом
- Прокачаешь личный бренд — сможешь выступать с лекциями и интервью на нашем YouTube-канале, где видео собирают до 50 000 просмотров
- Сможешь обмениваться опытом в сообществе с другими менторами из Яндекса, Uber, Tinkoff и других крутых компаний
- Деньги тоже будут
Что нужно, чтобы стать ментором?
- Пройти небольшое интервью
- Готовность тратить от двух часов в неделю
Если хочешь попробовать, заполни небольшую гугл-форму, позже мы свяжемся с тобой и расскажем подробности: https://docs.google.com/forms/d/e/1FAIpQLSdS0mFXltUOkwLglMFARQ-f28N5AQv7RVsKGlAtjTmQc3DExg/viewform
ipfuscator - это быстрый, потокобезопасный, простой и не требующий выделения памяти инструмент на Go для быстрой генерации IP(v4) адресов.
go install github.com/dwisiswant0/ipfuscator@latest
▪Github
▪Документация
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Сейчас в каждом приложении лента с содержимым персонализируется в зависимости от интересов пользователя.
Например, введите что-либо в поиске YouTube, и за минуты временна́я шкала заполнится видео, релевантными вашему запросу. Создадим подобное приложение — простую реплику Twitter с временно́й шкалой для каждого пользователя. Исходя из взаимодействия с твитами, определим предпочтения пользователей, чтобы показать им еще больше твитов.
Создание простого Twitter
Сначала необходимо сделать простой Twitter, твиты будем сохранять не в БД постоянного хранения, а в экземпляре Redis:
type Redis[T models.Keyer] struct {
rdb *redis.Client
}
func NewRedis[T models.Keyer](rdb *redis.Client) Redis[T] {
r := Redis[T]{rdb: rdb}
return r
}
func (r Redis[T]) Save(ctx context.Context, k T) error {
b, _ := json.Marshal(k)
return r.rdb.Set(ctx, k.Key(), b, 0).Err()
}
func (r Redis[T]) Get(ctx context.Context, key string) (T, error) {
var t T
b, err := r.rdb.Get(ctx, key).Bytes()
if err != nil {
return t, err
}
json.Unmarshal(b, &t)
return t, nil
}
Для облегчения сериализации мы создали простую обертку Redis, которой применяются дженерики Golang, и определили новый интерфейс Keyer:
type Keyer interface {
Key() string
}
type Tweet struct {
UID string `json:"UID"`
Author string `json:"author"`
Tweet string `json:"tweet"`
}
func (t Tweet) Key() string {
return "tweet:" + t.UID
}
Применяя обыкновенный HTTP-маршрутизатор, запускаем простейшую реплику Twitter:
func main() {
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
tweetService := services.NewSaveTweet(repositories.NewRedis[models.Tweet](rdb))
e := echo.New()
e.POST("/tweet", func(c echo.Context) error {
content := c.Request().PostFormValue("tweet")
author := c.Request().PostFormValue("author")
tweet := models.Tweet{Tweet: content, Author: author}
tweet, err := tweetService.Save(c.Request().Context(), tweet)
if err != nil {
return c.String(500, err.Error())
}
return c.String(201, tweet.UID)
})
e.GET("/tweet/:uid", func(c echo.Context) error {
uid := c.Param("uid")
tweet, err := tweetService.Get(c.Request().Context(), uid)
if errors.Is(err, redis.Nil) {
return c.String(404, "tweet not found")
} else if err != nil {
return c.String(500, err.Error())
}
return c.String(200, tweet.Author+" : "+tweet.Tweet)
})
e.Logger.Fatal(e.Start(":1323"))
}
📌Читать дальше
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
📌Воспроизводимость и верификация для тулчейна Go
В заметке официального блога подробно разобрано, том, как сделать свои билды воспроизводимыми, как работала воспроизводимость в разных версия Go, и как устроена воспроизводимость в Go 1.21 .
📌Читать
@Golang_google
В заметке официального блога подробно разобрано, том, как сделать свои билды воспроизводимыми, как работала воспроизводимость в разных версия Go, и как устроена воспроизводимость в Go 1.21 .
📌Читать
@Golang_google
Вышла новая версии библиотеки 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