Как наличие тестов влияет на скорость разработки?
Имеется ввиду весь флоу разработки, т.е. Time to market. Это может быть примерная усреднённая оценка. Главное - основывайтесь на личном мнении и опыте.
Имеется ввиду весь флоу разработки, т.е. Time to market. Это может быть примерная усреднённая оценка. Главное - основывайтесь на личном мнении и опыте.
Anonymous Poll
18%
Точно ускоряет разработку
21%
Скорее ускоряет
5%
Не влияет на скорость
22%
Скорее замедляет
11%
Точно замедляет
23%
Не знаю / Посмотреть ответы
🚀 Mojo GoJo: Write Go with Emojis!
https://github.com/EdmondTabaku/mojo-gojo
Для поднятия настроения перед рабочим понедельником: утилита, позволяющая писать код на Go с использованием эмодзи.
Выглядит забавно, подумываю затащить это дело в продакшен на работе😄
————
Спасибо @Len4ez за ссылку
#joke #tool
https://github.com/EdmondTabaku/mojo-gojo
Для поднятия настроения перед рабочим понедельником: утилита, позволяющая писать код на Go с использованием эмодзи.
Выглядит забавно, подумываю затащить это дело в продакшен на работе
————
Спасибо @Len4ez за ссылку
#joke #tool
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁24👍5❤4🤔1
Type Inference - подробный разбор
Everything You Always Wanted to Know About Type Inference - And a Little Bit More
Подробнейшая статья про Type Inference от Robert Griesemer в официальном блоге разработчиков Go.
Type inference — это механизм, при котором компилятор автоматически определяет тип переменной на основе того значения, которое ей присваивается.
В статье разбирается: зачем это нужно, как работает и различные нюансы.
#go_official
Everything You Always Wanted to Know About Type Inference - And a Little Bit More
Подробнейшая статья про Type Inference от Robert Griesemer в официальном блоге разработчиков Go.
Type inference — это механизм, при котором компилятор автоматически определяет тип переменной на основе того значения, которое ей присваивается.
В статье разбирается: зачем это нужно, как работает и различные нюансы.
#go_official
go.dev
Everything You Always Wanted to Know About Type Inference - And a Little Bit More - The Go Programming Language
A description of how type inference for Go works. Based on the GopherCon 2023 talk with the same title.
👍10❤4
Golang Дайджест
Profile-guided optimization in Go 1.21 https://go.dev/blog/pgo Michael Pratt в статье в официальном блоге Go рассказывает про PGO - что это и как пользоваться. И самое интересное - он показывает конкретный пример оптимизации приложения. Полная документация…
Перевод этой статьи на Хабре: https://habr.com/ru/articles/766460/
Хабр
Profile-guided optimization в Go 1.21
В Go 1.20 была выпущена предварительная версия profile-guided optimization (PGO) , которую пользователи могли протестировать. После устранения известных ограничений в предварительной версии и...
🔥7👍3
Самый быстрый поиск пути на Go без аллокаций и СМС
https://habr.com/ru/articles/766882/
Искандер рассказывает про алгоритмы поиска пути: A-star и greedy BFS. Поиск пути понадобился при разработке игры Roboden - она написана на Go с использованием движка Ebitengine.
Эта статья не про алгоритмы, а про микрооптимизации, структуры данных и прочие хитрости. Мы будем ограничивать область нашей задачи, чтобы создавать лучшие решения конкретно под неё.
#article #quasilyte #gamedev
https://habr.com/ru/articles/766882/
Искандер рассказывает про алгоритмы поиска пути: A-star и greedy BFS. Поиск пути понадобился при разработке игры Roboden - она написана на Go с использованием движка Ebitengine.
Эта статья не про алгоритмы, а про микрооптимизации, структуры данных и прочие хитрости. Мы будем ограничивать область нашей задачи, чтобы создавать лучшие решения конкретно под неё.
#article #quasilyte #gamedev
Хабр
Самый быстрый поиск пути на Go без аллокаций и СМС
Алгоритмы важны. Но реализовать их можно очень по-разному. При одном и том же алгоритме, оптимизированная библиотека будет в тысячу раз быстрее наивной. Любите оптимизации, специализированные...
🔥13👍7❤2
Прокачали логгер, теперь взялись за HTTP-роутер
https://eli.thegreenplace.net/2023/better-http-server-routing-in-go-122/
- Proposal
- Документация
Пример кода:
1. В первом хэнделере мы видим явное указание HTTP-метода (GET)
2. Во втором - компонент
За ссылку спасибо @batazor
#go_updates #http #mux
https://eli.thegreenplace.net/2023/better-http-server-routing-in-go-122/
- Proposal
- Документация
Пример кода:
package main
import (
"fmt"
"net/http"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("GET /path/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "got path\n")
})
mux.HandleFunc("/task/{id}/", func(w http.ResponseWriter, r *http.Request) {
id := r.PathValue("id")
fmt.Fprintf(w, "handling task with id=%v\n", id)
})
http.ListenAndServe("localhost:8090", mux)
}
1. В первом хэнделере мы видим явное указание HTTP-метода (GET)
2. Во втором - компонент
{id}
и r.PathValue("id")
для получения значенияЗа ссылку спасибо @batazor
#go_updates #http #mux
👍18❤2🔥2
Используете ли вы глобальный логгер? Речь про рабочие проекты, серьезные пет-проекты и т.п.
И поделитесь в комментариях своим опытом - нравится ли вам такой подход? Почему?
И поделитесь в комментариях своим опытом - нравится ли вам такой подход? Почему?
Anonymous Poll
36%
Да, везде (или почти везде)
14%
Иногда
21%
Не использую
29%
Не знаю / Посмотреть ответы
👍5
Golang Дайджест
Прокачали логгер, теперь взялись за HTTP-роутер https://eli.thegreenplace.net/2023/better-http-server-routing-in-go-122/ - Proposal - Документация Пример кода: package main import ( "fmt" "net/http" ) func main() { mux := http.NewServeMux() …
Хабр
Улучшенная маршрутизация HTTP-серверов в Go 1.22
В Go 1.22 ожидается появление интересного предложения - расширение возможностей по поиску шаблонов (pattern-matching) в мультиплексоре, используемом по умолчанию для обслуживания HTTP в пакете...
🔥9👍5
Advanced gRPC Error Usage
https://jbrandhorst.com/post/grpc-errors/
Коротенькая статья о том, как с помощью пакета status добавлять произвольные метаданные к ошибкам. Это бывает очень удобно при разборе и обработке ошибок между сервисами.
Пример:
————
За ссылку спасибо @ekostogorov
#grpc #article
https://jbrandhorst.com/post/grpc-errors/
Коротенькая статья о том, как с помощью пакета status добавлять произвольные метаданные к ошибкам. Это бывает очень удобно при разборе и обработке ошибок между сервисами.
Пример:
st := status.New(codes.InvalidArgument, "invalid username")
desc := "The username must only contain alphanumeric characters"
v := &errdetails.BadRequest_FieldViolation{
Field: "username",
Description: desc,
}
br := &errdetails.BadRequest{}
br.FieldViolations = append(br.FieldViolations, v)
st, err := st.WithDetails(br)
if err != nil {
// If this errored, it will always error
// here, so better panic so we can figure
// out why than have this silently passing.
panic(fmt.Sprintf("Unexpected error attaching metadata: %v", err))
}
return st.Err()
————
За ссылку спасибо @ekostogorov
#grpc #article
Go Ahead
Advanced gRPC Error Usage
How to best handle errors in Go is a divisive issue, leading to opinion pieces by illustrious bloggers such as Dave Cheney, the commander himself Rob Pike as well as the official Go blog. I’m not going to tackle those opinions here, instead I’m going to talk…
👍9❤2
Forwarded from Selectel Team
Как дебажить concurrency-код в Go?
Сергей Петров, разработчик IAM, собрал инструменты, которые вам для этого пригодятся.
Неочевидности в Go, завязка библиотек на процессор, скедулинг горутин — обо всем этом смотрите в докладе!
Сергей Петров, разработчик IAM, собрал инструменты, которые вам для этого пригодятся.
Неочевидности в Go, завязка библиотек на процессор, скедулинг горутин — обо всем этом смотрите в докладе!
👍35
Шахматный движок на Go
https://github.com/rbw317/chess_go
На мой взгляд, в первую очередь, проект интересен как объект для изучения - движок не самый умный, но и код относительно простой.
Есть простенький консольный интерфейс и полноценный веб-фронтэнд. Демку с веб-версией можно потыкать тут.
Также проект может быть интересен тем, кто хочет потренироваться в написании интерфейсов на разных технологиях. К примеру, можете написать для него оболочку на том же Ebitengine.
#go_project
https://github.com/rbw317/chess_go
На мой взгляд, в первую очередь, проект интересен как объект для изучения - движок не самый умный, но и код относительно простой.
Есть простенький консольный интерфейс и полноценный веб-фронтэнд. Демку с веб-версией можно потыкать тут.
Также проект может быть интересен тем, кто хочет потренироваться в написании интерфейсов на разных технологиях. К примеру, можете написать для него оболочку на том же Ebitengine.
#go_project
GitHub
GitHub - rbw317/chess_go: Chess engine written in Go
Chess engine written in Go. Contribute to rbw317/chess_go development by creating an account on GitHub.
🔥8