🏁Александр
первое что пришло на ум
🏁Александр
@onokonem докер кстати хороший пример
🏁Александр
там вроде не кобра конечно
🏁Александр
но это оперсорс же 🙂
Alexander
А есть пошаговая инструкция, как перевести ТЕКУЩИЙ проект на go modules?
Если в папке go/src/ несколько папок с main.go, то go mod init надо запускать в каждой папке?
Aleksandr
Aleksandr
го модули работают ВНЕ GOPATH
Aleksandr
если не указано обратное через переменную окружения
Alexander
т.е. текущий проект я должен вынести из GOPАTH ?
Aleksandr
поэтому вынеси проект из GOPATH и все заработает
v.
Добрый день всем, пытаюсь проксировать Golang сервер через FastCGI (сокетом) к апачу, но пакет net/http ругается на строчку log.Fatal(http.ListenAndServe("/tmp/fcgi.sock", nil)) где я вместо порта указываю путь к Unix сокету. Пишет ошибку, что пропущен порт. Как запустить сервер именно как сокет, а не на порту?
Daniel
сделать net.Listen и потом использовать http.Serve
Alexander
Aleksandr
текст ошибки кинь
Alexander
main.go:4:2: cannot find package "api/dif" in any of:
/usr/lib/go/src/pkg/api/dif (from $GOROOT)
($GOPATH not set)
Daniel
так это
Daniel
модули не отменяют необходимости правильно указывать импорты
Aleksandr
Kirill
Alexander
это не я писал )
щас
Aleksandr
у тебя должен быть проект вне gopath,в корне проекта go.mod с содержимым module api
тогда пакет находящийся в root/api/dif (api/dif), будет работать
Aleksandr
Kirill
🤦♂
Daniel
Aleksandr
Aleksandr
в смысле если модуль называется api, то вложенный пакет api/dif
undiabler
относительные раньше работали только вне gopath
внутри - нет
Daniel
и теперь я в корне могу сделать net/http?
Aleksandr
Daniel
коллега, такую мутную хрень в go не могли завезти
Daniel
я думаю, все как раньше
Daniel
пишите полный путь
Kirill
Aleksandr
[2018-09-19T14:21:24+0300] zelenin@zelenin-desktop:[~/Documents/pac]: go mod init internet/http
go: creating new go.mod: module internet/http
Alexander
так-с, у меня проект my-api/go/src/api/main.go
в main.go import "api/dif"
dif находится my-api/go/src/api/dif
как прально импорт написать?
Aleksandr
если создаем внутри пакет dif, то он импортируется как internet/http/dif- это и есть полный путь
Aleksandr
Aleksandr
и команды ты выполняешь из этой директории
Alexander
т.е. если у меня в my-api/go/src/ 10 папок, то у меня будет 10 go.mod ?
Aleksandr
если отсюда my-api или отсюда my-api/src, то go.mod не будет найден, т.к. ищется из текущей директории ввверх
Aleksandr
Aleksandr
но ты можешь в src один завести
Daniel
v.
сделать net.Listen и потом использовать http.Serve
так, с этим разобрался, теперь при запуске в логах получаю bind: address already in use, хотя до запуска апача адрес свободен. тоесть апач занимает сокет, выделенный для моего же приложения. как так?
Daniel
не должен
Daniel
собственно сокет создает листенер
Daniel
возможно - там есть старый сокет?
Aleksandr
я думаю, все как раньше
раньше имя пакета вычислялось от корня gopath, а теперь от ближайшего go.mod, если это прояснит вопрос
Daniel
значит ли это, что можно не писать github.com/myAccount/myPackage в импортах?
Aleksandr
Нет
Aleksandr
Но у него пакет api, а не GitHub.com/.....
Kirill
Kirill
Ну или не go
Kirill
Но runtime тоже было бы весело
Aleksandr
Нет
Daniel
коллега, но это бомба тогда
Daniel
нам завезли чистый, незамутненный пиздец
Aleksandr
Но такой пакет не установить с гитхаб, если ты об этом
Daniel
(я не верю, и в доках не видал)
Kirill
Kirill
Kirill
Вроде все, что могли, захватили
Aleksandr
(я не верю, и в доках не видал)
В доках обратное не написано. Слушай, пакет может называться как удобно (без конфликтов с стдлиб конечно). Но устанавливаться без костылей будет только с полным наименованием GitHub.com и дальше. Поддерживается 8 хостингов
Daniel
короче, найдите мне пруф, пожалуйста.
про то, что теперь, глядя на импорт, я не могу понять, из стандартной либы он, или из заднего прохода молодой макаки
Daniel
goimport, кстати, тоже оповестите, пожалуйста
Aleksandr
Aleksandr
Вне gopath
Aleksandr
Доеду до работы, пруфану
Aleksandr
Kirill
Неужто действительно новых пиздецов довезли