
Daniel
03.10.2018
18:36:51

Dk
03.10.2018
18:36:58
Спасибо

i..
03.10.2018
18:41:59

Jack
03.10.2018
20:12:18
привет. А го файл можно же в докере scratch запустить?

Google

Jack
03.10.2018
20:13:20
standard_init_linux.go:190: exec user process caused "no such file or directory" а то у меня такое

Andrew
03.10.2018
20:13:47

Jack
03.10.2018
20:13:54
бинарник
FROM scratch
EXPOSE 8101
COPY --from=backend /go/src/app/main /
CMD ["/main"]

Andrew
03.10.2018
20:15:53

Jack
03.10.2018
20:19:42
с альпина
решил, спасибо)

Marlik
03.10.2018
20:34:12
Вроде как не рекомендуется от рута в контейнере пускать, нужно юзера создавать.

Nikolay
03.10.2018
20:34:33

Marlik
03.10.2018
20:34:53
Ну дык вот так.

Nikolay
03.10.2018
20:36:13
а какие причины?

Google

Nikolay
03.10.2018
20:36:22
никогда подобного не слышал

Marlik
03.10.2018
20:36:22
Всё равно что от рута пускать свои приложеньки в Оси.
Ну ты в Линуксе приложения от рута запускаешь?

Nikolay
03.10.2018
20:37:43

Marlik
03.10.2018
20:38:21
Контейнер та же ось, с твоим приложением.

Nikolay
03.10.2018
20:38:32
это не совсем ось, это, скорее, чрут

Marlik
03.10.2018
20:40:49
Альпина уже не ось?

Andrey
03.10.2018
21:00:23
Народ, кто-нибудь вот этим пользуется? https://concourse-ci.org/

Jack
03.10.2018
21:10:23

Nikolay
03.10.2018
21:12:01
есть же buildbot

Artem
03.10.2018
21:25:43

Dk
03.10.2018
22:03:04
А канал может передавать по два значения, например, chan (int, string) ?

Alex
03.10.2018
22:04:21
Структуру создай и передавай экземпляры этого типа.

Dk
03.10.2018
22:08:08
Ладно, сойдёт. Только много типов придётся объявлять. К примеру
type pair struct{
a int,
b string,
}
type ch chan pair
так?

Vladimir
03.10.2018
22:49:32

Dk
03.10.2018
22:51:00

Vladimir
03.10.2018
22:51:50
оба варианта фиксированные в памяти обьекты как хрен и редька

Dk
03.10.2018
22:52:07
спасибо

Google

Vladimir
03.10.2018
22:55:10

Dk
03.10.2018
22:56:31
Я просто спросил. Сделал структуру{string, string, chan bool}. Изначально канала не было, поэтому думал о массиве

Vladimir
03.10.2018
22:57:04

Dk
03.10.2018
22:59:19
Так точно, поэтому ещё вопрос: горутину в init пакета больно запускать?
Или попросить main её запустить?

Vladimir
03.10.2018
23:00:16

Dk
03.10.2018
23:00:32
Ок

Vladimir
03.10.2018
23:01:49
в init обычно кладут установку первоначальных значений, эдакая SETUP-ZONE, можно делать нестандартные ходы но если тебя не поймут колЛлеги то будет больно!

Ilya
03.10.2018
23:07:52
Вот кстати вопрос: если я в init создаю всякие подключения к бд и подобные сессионные вещи, то очищать их где? Отлавливать keyboard interrupt и там делать? Или есть другие бест праксис?

Vladimir
03.10.2018
23:11:39

Ilya
03.10.2018
23:12:38
То есть можно не париться и просто выйти, и это норм?

Vladimir
03.10.2018
23:13:27

Ilya
03.10.2018
23:14:13
Умно

Vladimir
03.10.2018
23:16:07
Умно
ну есть io ,которое может и не освободиться , зависит от момента закрытия приложения

Ilya
03.10.2018
23:17:00
Ну я подразумевал что-то вроде вебсервиса, который слушает порт, поэтому сам не закроется

Vladimir
03.10.2018
23:17:27
листенер закроется

Ilya
03.10.2018
23:17:43
Ну это понятно
Но не сам

Vladimir
03.10.2018
23:17:59
tcp-ip стеком
там исчезнет владелец(pid) и ОС закроет

Google

Roman
03.10.2018
23:19:59
С грустью сегодня узнал что штатный компилятор go не умеет dce :(

Vladimir
03.10.2018
23:20:00
листенер - это заказ приложения системе на передачу системных событий приложению

Ilya
03.10.2018
23:20:23
там исчезнет владелец(pid) и ОС закроет
Не, я про другое. Про то, что когда лисенер слушает порт, приложение работает, и все открытые сессионные вещи вроде БД висят открытыми. В этом случае приложение само не завершится, а только пользователеь его закроет извне, ну или ОС, или ошибка произойдет

Roman
03.10.2018
23:20:37

Vladimir
03.10.2018
23:21:26
?♂
другого слова не нашел ?

Ilya
03.10.2018
23:21:35
Но теперь, собственно, я получил ответ - можно забить на очистку ресурсов и закрытие сессий в при завершении приложения

Admin
ERROR: S client not available

Александр
03.10.2018
23:22:56
к темной стороне ведет это

Vladimir
03.10.2018
23:23:15

Ilya
03.10.2018
23:24:24

Vladimir
03.10.2018
23:25:10

Roman
03.10.2018
23:28:38
https://github.com/golang/go/issues/22876 - Permission Genericity
кстати интересная тема которую я почему-то совсем пропустил

Dk
03.10.2018
23:31:06
аэа
Я тут придумал архитектуру и у меня всё упёрлось в глобальные переменные. Их же нет, да?

Vladimir
03.10.2018
23:31:57

Dk
03.10.2018
23:32:06
Если я в пакете сделал var x, то этот x функция в том же пакете увидит?

Vladimir
03.10.2018
23:32:23
да

Dk
03.10.2018
23:32:29
Спасибо

Vladimir
03.10.2018
23:32:55
она и в других увилит если будет var X
ну увлекаться глобальными не стоит (МИНИМУМ с контролем гонки за доступ к переменной)

Google

Dk
03.10.2018
23:36:25
Ну, у меня идея в инит создать 3 канала, загрузить типабд там же и запустить горутину как менеджер, которая будет работать через эти каналы

Vladimir
03.10.2018
23:38:15
и при чем init не ясно?
почуствуйте разницу .... задать параметры соединения с БД и создать коннект к БД

Dk
03.10.2018
23:40:10
Ну я не стал пока бд прикручивать, сделал на json
Пока интерфейс проработаю, потом бд прикручу
поэтому "типабд"

Vladimir
03.10.2018
23:41:06
все равно функциональные вещи не нужно прятать в init
эта привычка позволит вам быстрее ориентироваться в своем приложении , когда соурс будет измеряться сотнями килобайт

Dk
03.10.2018
23:43:43
func init() {
session := make(sessions)
session.load(sessionfile)
}
у меня вес инит

Vladimir
03.10.2018
23:44:37

Dk
03.10.2018
23:59:30

Vladimir
04.10.2018
00:00:32
молодец! У программера всегда 2 цели : написать код и не запутаться в своем коде!

Dk
04.10.2018
00:03:24
А что там добавить в default?
не понял как
типа if <-tick?
sleep не будет спать, когда что-то в канал придёт разве?