
Maksim (Ellrion)
20.08.2018
14:28:53
то есть?
тоесть при именовании директории как internal, пакеты из нее могут импортить только пакеты одного с ней уровня но не выше

many-faced
20.08.2018
14:29:57

Maksim (Ellrion)
20.08.2018
14:31:03
Попробовал, ту же самую ошибку говорит.
не ну импортить надо всё равно с абсолютным путем, это просто решение именно задачи
> "пакеты, предназначенные для импорта в другие пакеты проекта, но не для импорта конечным пользователем"

many-faced
20.08.2018
14:32:38

Google

Aleksandr
20.08.2018
14:43:03
юзай gopath и не юзай относительные пути

many-faced
20.08.2018
14:46:11
Я понял ошибку - нужно было указывать имя папки и всё, ведь папке же и есть пакет.
ну да, и путь относительно gopath.

Pawel
20.08.2018
16:33:26

Vladimir
20.08.2018
16:56:11
Ок спс)

Milkiweed
20.08.2018
20:20:28
ребят, а подскажите, почему я не могу распарсить корректно жсон
type Time struct {
serverTime string `json:"serverTime"`
}
const baseEndpoint = "https://api.binance.com"
func getTime() []byte {
resp, err := http.Get(baseEndpoint + "/api/v1/time")
if err != nil {
log.Panic(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
return body
}
func main() {
t := getTime()
fmt.Println(string(t))
var time Time
if err := json.Unmarshal(t, &time); err != nil {
log.Panic(err)
}
fmt.Println(time)
}
на выходе получаю:
{"serverTime":1534796414405}
{}

Slava
20.08.2018
20:27:05
почему вы число парсите в строчку?
и вам нужно публичные поля определить

Milkiweed
20.08.2018
20:29:06

Slava
20.08.2018
20:30:24
с большой буквы поле описать

Milkiweed
20.08.2018
20:30:44
Аа, сейчас попробую

Google

Мерлин
21.08.2018
07:50:45
Господа, а кто-то сталкивался с такой офигенной ситуацией с dep?
release-1.10: Could not introduce k8s.io/kubernetes@release-1.10, as it is not allowed by constraint release-1.10 from project k8s.io/helm.

Aleksandr
21.08.2018
09:33:04
обнвился до 0.5.0?

Мерлин
21.08.2018
10:27:05

Aleksandr
21.08.2018
10:31:12
наверное багу надо завести

Антон
21.08.2018
12:50:21
Добрый день!
Помогите, пожалуйста, разобраться с проблемой:
есть 2 пакета, назовем их А и В
в пакете А объявлен тип Т и есть функция, которая принимается неопреденное кол-во аргументов типа Т следующим образом
func F(args ...T)
В пакете В я собираю массив элементов типа А.Т и передаю в функцию F следующим образом А.F(sliceT...), однако получаю ошибку
Cannot use 'sliceT' (type []A.T) as type []T
Почему такая ошибка возникает и как с ней бороться?
Готов выложить на плейграунд, но пока не понял, как там 2 пакета создать(

Daniel
21.08.2018
12:52:22
а в одном пакете нет таких проблем?

Aleksandr
21.08.2018
12:53:16
хотя не похоже)

Антон
21.08.2018
12:54:19
Я вроде, уже успел понять, пока писал в чем проблема)
прошу прощения)
проблема была в том, что я создавал и передавал нединамический срез элементов типа Т, а заранее определял его размер при инициализации

Aleksandr
21.08.2018
12:54:23
тем не менее сделай демку. выложи отдельно два файла с минимальным кодом, для воспроизведения
ок)

Daniel
21.08.2018
12:54:58

Антон
21.08.2018
12:55:00
описание ошибки сбило меня с толку и я начал думать, что дело в каком-то приведении типов)

dzmitry
21.08.2018
13:41:17
ты забыл тип указать, точнее он слился с переменнной, хотя все равно ... нужно после переменной ставить

Aleksandr
21.08.2018
13:55:43

Мерлин
21.08.2018
13:57:17

Aleksandr
21.08.2018
13:57:46

Google

Aleksandr
21.08.2018
13:58:46
https://github.com/helm/helm/blob/master/glide.yaml
может это glide так умеет, а dep нет

Roman
21.08.2018
15:44:54
Народ. Вот так создаю простой сервер слушающий 443 порт
package main
import (
"net/http"
"strings"
)
func sayHello(w http.ResponseWriter, r *http.Request) {
message := r.URL.Path
message = strings.TrimPrefix(message, "/")
message = "Hello " + message
w.Write([]byte(message))
}
func main() {
http.HandleFunc("/", sayHello)
if err := http.ListenAndServe(":443", nil); err != nil {
panic(err)
}
}
Падает с паникой
panic: listen tcp :443: bind: permission denied
Вначале думал что порт занят, но нет. Проверял так
sudo netstat -pntl | grep 443
lsof -i | grep 443

Aleksandr
21.08.2018
15:45:34
под судо надо
< 1024 порта без судо нельзя без разрешения
1443 порт сделай для проверки

Roman
21.08.2018
15:46:52
Про рейндж не знал. Спасибо0

Anton
21.08.2018
15:47:13
setcap 'cap_net_bind_service=+ep' /path/to/program
и не надо sudo

Roman
21.08.2018
15:55:39
setcap 'cap_net_bind_service=+ep' /path/to/program
и не надо sudo
А если у меня собирается во временную папку
/usr/local/go/1.10.3/bin/go build -o /tmp/___go_build_main_go
Так пробовал
sudo setcap 'cap_net_bind_service=+ep' /tmp/___go_build_main_go
Но не дает setcap сделать
Failed to set capabilities on file `/tmp/___go_build_main_go' (Invalid argument)
The value of the capability argument is not permitted for a file. Or the file is not a regular (non-symlink) file
Пробовал в другую папку, и указывать только имя папки без имени файл. Ничего не работает

Kirill
21.08.2018
15:56:44
и не симлинк!

Roman
21.08.2018
15:59:39
указывать нужно не директорию, а сам бинарь
Ну я изначально так и указал. Сам бинарь вначале, ибо папку как-то показалось нелогично там же и другие бинарники могут быть помимо необходимого. И симлинков тоже нет. Пробовал собирать прям в home свой

Kirill
21.08.2018
16:00:26
показывай ls -halF своего файла

Daniel
21.08.2018
16:00:27
и что, не собралось?

Kirill
21.08.2018
16:01:03

Roman
21.08.2018
16:01:35

Kirill
21.08.2018
16:01:53
это так, для остальных на заметку, мало ли

Roman
21.08.2018
16:02:32
-rwxr-xr-x 1 pi pi 7.3M Aug 21 18:51 /tmp/___go_build_main_go*

Kirill
21.08.2018
16:03:39
тогда должен был сделать setcap, если конечно само ядро умеет в такой cap

Aleksandr
21.08.2018
16:04:22
я думаю разрешение дается ДО создания файла или ВО время создания

Google

Aleksandr
21.08.2018
16:04:28
и ни то ни другео не срабатывает

Daniel
21.08.2018
16:04:31

Roman
21.08.2018
16:05:36
а собеорите нормальноб через go build
через build и собираю
/usr/local/go/1.10.3/bin/go build -o /home/pi/go_build_main_go -gcflags "all=-N -l" /home/pi/GoglandProjects/awesomeProject3/main.go #gosetup

Aleksandr
21.08.2018
16:07:14
он имеет в виду не через кнопочку в Goland во временную директорию
собери бинарник, дай ему cap, запусти
так будет работать
иначе:
я думаю разрешение дается ДО создания файла или ВО время создания

Admin
ERROR: S client not available

Aleksandr
21.08.2018
16:07:48
и ни то ни другео не срабатывает

Илья
21.08.2018
16:25:25
Подскажите, что почитать про jwt? Есть ли примеры на go? Хочу написать rest api. Какую лучше использовать базу данных в связке с go?

Илья
21.08.2018
16:26:27
https://auth0.com/blog/authentication-in-golang/

Kirill
21.08.2018
16:26:38
это же отдельные вопросы? :D

Илья
21.08.2018
16:28:05

Илья
21.08.2018
16:28:46
но вообще, google что такое jwt

Artem
21.08.2018
17:31:08
Чето я забыл, если в структуре 5 полей а приходит джсон с 7 полями то Парсинга упадёт, наборы полей должны совпадать?

Никита
21.08.2018
17:31:59

Artem
21.08.2018
17:32:23
Хм,
Спасибо

Zaur
21.08.2018
18:28:42
Народ, вот такой вопрос. Как грамотно назвать один отдельный урл для REST API вместе с http методом и параметрами?

Google

Zaur
21.08.2018
18:28:42
Что бы можно было сказать: в нашем API есть вот такой метод/вызов/эндпоинт
Ну вот из этих метод/вызов/эндпоинт или ещё каких-то слов, как правильно будет?
А?

Dmitriy
21.08.2018
18:43:34
товарищи, а подскажите где вакансии посмотреть можно?
не следил особо за этим моментом, но не помню чтобы здесь что-то было
увидел, пардоньте

Kirill
21.08.2018
18:47:21

Dmitriy
21.08.2018
18:47:57
премного благодарен)

Alexander
21.08.2018
19:00:25

Zaur
21.08.2018
19:01:20

bowser
21.08.2018
19:06:39
а я вот последние пару дней ковыряю микросервисные библиотеки: go-kit и go-micro (контора думает о переходе существующей микросервисной архитектуры с nodejs)
пока выходит что ни та, ни другая библиотеки не устраивают по разным причинам... есть у кого-нибудь опыт go/microservices/grpc в продакшн? че юзаете? нужны все эти балансировки, сервисдискавери, фаулт толеранс и все такое
(простые мануалы и статьи из инета просьба не предлагать ?

Michael
21.08.2018
19:09:42

bowser
21.08.2018
19:10:12
это че? не гуглится

Michael
21.08.2018
19:10:51
Gramework and consul

bowser
21.08.2018
19:11:18
почитал... ну это web

Michael
21.08.2018
19:12:12
@madgopher волшебные пендали и пулреквесты принимает по греймвёрку

Kirill
21.08.2018
19:12:42

bowser
21.08.2018
19:13:11
все больше и больше об istio (прости господи) задумываюсь

Alexey
21.08.2018
19:27:58
Привет всем! Подскажите, есть ли более удобный способ реализовать дефолтные значения параметров функции, нежеди вот такой:
func test(b ...int) int {
c := 0
if len(b) > 0 {
c = b[0]
}
return c
}

Daniel
21.08.2018
19:31:58
нет никаких дефолтных значений
и не надо делать вот этой ерунды

Alexey
21.08.2018
19:35:14
Я реализую метод апи. Апишка предполагает необязательные параметры. Как быть в данном случаи? Оставить всё на откуп клиентскому коду?