Size: a a a

2020 May 08

AS

Alexandr Sokolov in Go-go!
Pavel Vorontsov
всем привет!
подскажите, как победить https://goplay.space/#9w03M5pIz5E
хочу чтобы кавычки отображались как кавычки
Или пакет text/template, если вы не собираетесь добавлять разметку
источник

D

Darina in Go-go!
Добрый день. Есть такой-то способ получить данные из хэндлера после выполнения запроса в миддлваре?
источник

DP

Daniel Podolsky in Go-go!
вопрос не ясен
источник

D

Darina in Go-go!
nextHandler.ServeHTTP(w,r) // обрабатываем запрос
а после нужно получить статус код, чтобы выводить его в метриках
источник

DS

Dmitry Soloma in Go-go!
Darina
Добрый день. Есть такой-то способ получить данные из хэндлера после выполнения запроса в миддлваре?
r = r.WithContext(context.WithValue(r.Context(), SomeCustomKey, someCustomInfo))  
next.ServeHTTP(w, r)
источник

D

Darina in Go-go!
Dmitry Soloma
r = r.WithContext(context.WithValue(r.Context(), SomeCustomKey, someCustomInfo))  
next.ServeHTTP(w, r)
о как, спасибо.
источник

а

а кто это in Go-go!
Darina
nextHandler.ServeHTTP(w,r) // обрабатываем запрос
а после нужно получить статус код, чтобы выводить его в метриках
можно врапнуть ResponeWriter — это интерфейс
источник

а

а кто это in Go-go!
и на WriteHeader(), если таковой вызывается, сохранить код
источник

DS

Dmitry Soloma in Go-go!
Darina
о как, спасибо.
и в самом хендлере

value := r.Context().Value(SomeCustomKey)
someCustomInfo, ok = value.(SomeCustomInfoType)
источник

VM

Vladislav Milenin in Go-go!
@onokonem есть понимание почему так много?
goroutine profile: total 1797
687 @ 0x43122f 0x440cb8 0x7118a3 0x45e7f1
# 1x7118a2 net/http.(*persistConn).writeLoop+0x112 /usr/local/go/src/net/http/transport.go:1978

657 @ 0x43122f 0x440cb8 0x71059a 0x45e7f1
# 2x710599 net/http.(*persistConn).readLoop+0x959 /usr/local/go/src/net/http/transport.go:1800
источник

Д

Дмитрий in Go-go!
Подскажите, каким паттерном воспользоваться если нужны таски и пайпы в приложении, и желательно чтобы не обмазываться интерфейсами (динамический тип)?

Например есть таска:
- Сделать HTTP GET запрос
- Найти на странице текст
- Если нет - стриггерить другую таску

Или другая:
- Сделать HTTP GET запрос
- Проверить статус
- Стригерить другую таску
источник

Д

Дмитрий in Go-go!
чёто вроде ансибла, но под себя (пишу демона)
источник

O

Oriflame Holding AG in Go-go!
Всем привет! Не понимаю причину по которой компилятор не хочет компилировать мой кроссплатформенный проект.

Структура проекта:

\file_search
- file_search.go
- file_search_unix.go
- file_search_windows.go
main.go

В каждом файле определенная функция
lookupUserprofilePath
(упрощенная версия без package и прочего)

file_search_unix.go
// +build linux freebsd netbsd openbsd
func lookupUserprofilePath(path string) string {
   return filepath.Join("~", path)
}

file_search_windows.go
// +build windows
func lookupUserprofilePath(path string) string {
   return filepath.Join("%userprofile%", path)
}

file_search.go
func LookupUserprofilePath(path string) string {
   return lookupUserprofilePath(path)
}

main.go
func main() {
   fmt.Println(file_search.LookupUserprofilePath("hello")
}

Получаю ошибку:
file_search\file_search_windows.go:6:6: lookupUserprofilePath redeclared in this block
       previous declaration at file_search\file_search_unix.go:6:41
источник

Д

Дмитрий in Go-go!
Oriflame Holding AG
Всем привет! Не понимаю причину по которой компилятор не хочет компилировать мой кроссплатформенный проект.

Структура проекта:

\file_search
- file_search.go
- file_search_unix.go
- file_search_windows.go
main.go

В каждом файле определенная функция
lookupUserprofilePath
(упрощенная версия без package и прочего)

file_search_unix.go
// +build linux freebsd netbsd openbsd
func lookupUserprofilePath(path string) string {
   return filepath.Join("~", path)
}

file_search_windows.go
// +build windows
func lookupUserprofilePath(path string) string {
   return filepath.Join("%userprofile%", path)
}

file_search.go
func LookupUserprofilePath(path string) string {
   return lookupUserprofilePath(path)
}

main.go
func main() {
   fmt.Println(file_search.LookupUserprofilePath("hello")
}

Получаю ошибку:
file_search\file_search_windows.go:6:6: lookupUserprofilePath redeclared in this block
       previous declaration at file_search\file_search_unix.go:6:41
// +build windows где указан?
источник

Д

Дмитрий in Go-go!
нужно до имени пакета, и чтобы была пустая линия после декларация билд констрейнта
источник

OJ

O . J in Go-go!
Дмитрий
Подскажите, каким паттерном воспользоваться если нужны таски и пайпы в приложении, и желательно чтобы не обмазываться интерфейсами (динамический тип)?

Например есть таска:
- Сделать HTTP GET запрос
- Найти на странице текст
- Если нет - стриггерить другую таску

Или другая:
- Сделать HTTP GET запрос
- Проверить статус
- Стригерить другую таску
а паттерн pipeline вам не подходит?
источник

ВС

Владимир Столяров... in Go-go!
И после // не должно быть пробела
источник

Д

Дмитрий in Go-go!
O . J
а паттерн pipeline вам не подходит?
А есть ссылка на него? Если это асинхронный паттерн - то он не особо мне подходит.
источник

OJ

O . J in Go-go!
источник

OJ

O . J in Go-go!
есть так же в блоге голанг pipelines and cancellation, или как-то так называется.
но этот вариант более упрощен
источник