• regex для проверки того, содержит ли строка только заглавные буквы (картинка 1)
• проверка того, начинается ли строка с "Tre" и заканчивается "s" (картинка 2,3).
• Проверяем заканчивается ли строка на "port" (картинка 4,5).
• проверка наличия в строке подстроки "zoo" (картинка 6,7).
• проверка не содержит ли строка заданную подстроку где-либо внутри себя картинка 8,9).
• проверка наличия в строке целых чисел с помощью regex 10).
https://regex101.com/ - попрактиковаться
🔥Ставьте лайк, если интересно продолжение темы.
#golang #junior #regex
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира: Go за неделю
Почитать:
— Лучший regexp для Go. Benchmark c другими ЯП. Сравнение библиотек
— Бесконечное радио создаваемое нейронными сетями. Open-source проект
— Вышел язык программирования Go 1.21: что нового и хорошего появилось? Оцениваем изменения
— Я скачал 1400+ пакетов, чтобы улучшить 1
— Building a distributed workflow engine from scratch
— Part 4: Continuous Integration for Confidence: Running Tests in CI with GoLang RestAPI and MariaDB
— Обратная совместимость • Прямая совместимость • Feature flags • Внедрение зависимостей в GO
— Best regexp alternative for Go. Benchmarks. Plots.
— Functions in Go (Golang)
— Creating Golang CLI Tools for PDF Generation
— Pagination in Golang and MongoDB
— 14. Building the Project and User Login
— Introducing Sailhouse, the easiest way to send events ⛵️
— Circuit breakers (in Go)
— Introdução ao Step Functions e Exemplo em Golang: Processando Pagamentos de Compras
Посмотреть:
🌐 Уроки Golang с нуля /#24 - Тесты (⏱ 09:50)
🌐 Indie Golang Game Dev - Pickups And New Raiders (⏱ 01:31:10)
🌐 Indie Golang Game Dev - Tile Raiders - Player Debufs (⏱ 02:10:06)
🌐 Live Steam Game Dev With Odin And SDL2 (⏱ 01:11:43)
🌐 Indie Golang Game Dev - Player debufs (⏱ 44:15)
🌐 Indie Golang Steam Game Dev - Coding Players Special Ability (⏱ 00:00)
🌐 Indie Golang Game Dev - Weapon System Mechanics (⏱ 01:29:14)
🌐 Golang Game Dev - Collisions, Interfaces And Textures (⏱ 01:54:12)
🌐 Is This The Golang Rewrite For My Steam Game? (⏱ 02:29:11)
Хорошего дня!
@Golang_google
Почитать:
— Лучший regexp для Go. Benchmark c другими ЯП. Сравнение библиотек
— Бесконечное радио создаваемое нейронными сетями. Open-source проект
— Вышел язык программирования Go 1.21: что нового и хорошего появилось? Оцениваем изменения
— Я скачал 1400+ пакетов, чтобы улучшить 1
— Building a distributed workflow engine from scratch
— Part 4: Continuous Integration for Confidence: Running Tests in CI with GoLang RestAPI and MariaDB
— Обратная совместимость • Прямая совместимость • Feature flags • Внедрение зависимостей в GO
— Best regexp alternative for Go. Benchmarks. Plots.
— Functions in Go (Golang)
— Creating Golang CLI Tools for PDF Generation
— Pagination in Golang and MongoDB
— 14. Building the Project and User Login
— Introducing Sailhouse, the easiest way to send events ⛵️
— Circuit breakers (in Go)
— Introdução ao Step Functions e Exemplo em Golang: Processando Pagamentos de Compras
Посмотреть:
🌐 Уроки Golang с нуля /#24 - Тесты (⏱ 09:50)
🌐 Indie Golang Game Dev - Pickups And New Raiders (⏱ 01:31:10)
🌐 Indie Golang Game Dev - Tile Raiders - Player Debufs (⏱ 02:10:06)
🌐 Live Steam Game Dev With Odin And SDL2 (⏱ 01:11:43)
🌐 Indie Golang Game Dev - Player debufs (⏱ 44:15)
🌐 Indie Golang Steam Game Dev - Coding Players Special Ability (⏱ 00:00)
🌐 Indie Golang Game Dev - Weapon System Mechanics (⏱ 01:29:14)
🌐 Golang Game Dev - Collisions, Interfaces And Textures (⏱ 01:54:12)
🌐 Is This The Golang Rewrite For My Steam Game? (⏱ 02:29:11)
Хорошего дня!
@Golang_google
Интересная статья и opensource проект "Построение распределенного механизма документооборота с нуля".
Архитектура проекта:
📌Coordinator: отвечает за управление жизненным циклом задачи через ее различные состояния и за предоставление клиентам REST API.
📌Worker: отвечает за выполнение задач.
📌Broker: очередь сообщений, механизм pub/sub, используемый для маршрутизации задач.
📌Хранилище данных: хранит состояние тасков и воркеров.
📌Runtime: платформа, используемая воркеров для выполнения тасков. В настоящее время поддерживается только Docker.
▪Backend
▪Web U
▪Пост
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Автор создал довольно много 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