
Slava
05.08.2018
21:15:38
они тут прямым текстом говорят количество ядер, которые будут занятые одновременно выполнением кода
а так как вы не можете выполнять один тред на двух разных cpu одновременно - то это равно количеству тредов одновременно выполняющих код вашего приложения
само количество тредов может быть и больше, какие-то заблокированы на сисколах, какие-то отрабатывают с++ код, какие-то сборщик мусора

Roman
05.08.2018
21:18:04

Google

Никита
05.08.2018
21:18:59
Окей, понятно
Спасибо большое за ответы @pragus @m0sth8

Slava
05.08.2018
21:44:45
всегда рады помочь

Stannis
05.08.2018
22:37:06
Парни, есть net.Dial
Как правильно сделать, переустановку TCP сессии в случае её обрыва?

Roman
05.08.2018
22:50:51

Dmitriy
05.08.2018
22:52:15
Видимо, в способе понять, что произошел обрыв.

Stannis
05.08.2018
22:52:31
А в чем сложность?
Ну например в этом
func Open(addr string) (*bufio.ReadWriter, error) {
log.Println("Dial " + addr)
conn, err := net.Dial("tcp", addr)
if err != nil {
return nil, errors.Wrap(err, "Dialing "+addr+" failed")
}
return bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)), nil
}
Если TCP сессия рухнула как переустановить сессию?
Гуглил, но так и не нашёл ответа
Может как-то через каналы

Dmitriy
05.08.2018
22:53:19
У меня была такая же проблема. Вроде бы советуют прочитать срез []byte нулевого размера, если вернулась ошибка – значит обрыв

Stannis
05.08.2018
22:53:30

Dmitriy
05.08.2018
22:53:55
Я переустанавливал новое соединение

Stannis
05.08.2018
22:54:08
Эм...

Google

Stannis
05.08.2018
22:54:18
А стары объект дропался?

Dmitriy
05.08.2018
22:54:25
Да
Можно написать обертку
В которой бы была проверка, что соединение живое
Либо, в асинхронном потоке проверять соединение периодически, раз в 10 секунд, например
И устанавливать новое, если оно мертвое

Stannis
05.08.2018
22:55:56
Keepalive не спасёт?

Roman
05.08.2018
22:58:23
Keepalive не спасёт?
Он предназначен для проверки что соединение живо. И с дефолтными настройками ты об этом узнаешь где-то через 2ч, 11минут и 15 секунд

Stannis
05.08.2018
23:00:28
крутые дефолтные значения

Roman
05.08.2018
23:01:51

Stannis
06.08.2018
02:52:14
Вдруг кому пригодится
func ToProd(ch <-chan string) {
var c net.Conn
var err error
connect := func() {
// Establish connection with remote host
for {
c, err = net.Dial("tcp", "snmp:80")
if err == nil {
break
}
// report about incidnet and sleep a bit
log.Printf("Error: %v\n", err)
time.Sleep(time.Second)
}
}
connect()
log.Println("Session with PROD established")
writer := bufio.NewReadWriter(bufio.NewReader(c), bufio.NewWriter(c))
// wait for messages from channel
for {
msg := <-ch
success, err := writer.WriteString(msg)
if err != nil {
c.Close()
log.Printf("Can not send data to prod, %v", err)
connect()
}
err = writer.Flush()
if err == nil {
log.Printf("Successfully wrote %v messages to prod server\n", success)
}
}
}

Sliva
06.08.2018
05:54:21
Посоветуйте статьи/литературу по устройству веба и т.п?

Olzhas
06.08.2018
05:55:45
Лучший язык программирования ever
Одноклассники, вк, фейсбук, badoo, pornhub

Аркадий
06.08.2018
05:56:57

Daniel
06.08.2018
06:51:42

Olzhas
06.08.2018
06:52:42

Kirill
06.08.2018
07:01:43

Google

Lena
06.08.2018
07:01:43
Привет! Хочу анонсировать конференцию GoWayFest 2.0 28 сентября в Минске. Это хороший шанс для гоферов приехать в Беларусь. GoWayFest 2.0 https://goway.io первое подобное мероприятие в Восточной Европе, полностью посвященное Go. Это будет интересно как для начинающих, так и для продвинутых гоферов.
GoWayFest 2.0 – однодневная конференция с двумя потоками докладов, организованная SPACE Production https://eventspace.by/ вместе с местными сообществами GoWayMinsk и GoWay Meetup.
Всем будем очень рады!

Olzhas
06.08.2018
07:02:44
Это хороший шанс для гоферов приехать в Беларусь. хуясе
я бы не упустил такой шанс
но я уже в Казахстане

Vadim
06.08.2018
07:09:13

Olzhas
06.08.2018
07:10:21
badoo - знатные пыхеры
элитные даже

Vadim
06.08.2018
07:15:06
https://habr.com/post/349050/ https://habr.com/post/259929/ https://habr.com/post/328062/ https://habr.com/post/282606/ https://habr.com/post/310352/
Дальше задолбался)

The
06.08.2018
07:23:46
подскажите, cancel() из context делает cancel для всех вложенных контекстов и вверх по цепочке, или только для того уровня, на котором был создан, и для детей?
а то чет смотрю у меня deadline истекает, и программа прерывается, и не могу понять, либо родительский контект прерывается дочерним вызовом cancel(), или просто программа ждет этот дедлайн и так совпадает.

Vadim
06.08.2018
07:25:38

The
06.08.2018
07:26:22
ну т.е. есть parentCtx, и есть childCtx, cancel := context.WithCancel(parentCtx), и если я вызову cancel() то parentCtx тоже закроется?
я вижу propogateCancel, где только в одну сторону, от родителей к детям идет cancel, но не наоборот

Vadim
06.08.2018
07:29:15
Система как граф.

The
06.08.2018
07:33:01
окей, спасибо)

Аркадий
06.08.2018
10:55:34
Господа
Подскажите, на базе какого образа вы свои контейнеры с go приложением делаете?

Google

Аркадий
06.08.2018
10:56:25
я взял за базу ubuntu, нормальная практика или можно что-то полегче?

Виктор
06.08.2018
10:56:59
alpine вроде один из самых легковесных образов

Daniel
06.08.2018
10:57:06
альпайн, да
но, вообще-то, обычно приложению go не нужно ничего, кроме libc
иногда - ca certs

Аркадий
06.08.2018
10:58:12
вот тоже думал альпина, но почему то у меня все время одна и та же ошибка standard_init_linux.go:190: exec user process caused "no such file or directory"

Admin
ERROR: S client not available

Евгений
06.08.2018
10:58:13
Если совсем упарываться, то scratch - вообще ничего лишнего. Но на практике чсто возникает задача куда-то сходить курлом проверить почему не работает. Поэтому alpine

Daniel
06.08.2018
10:59:24

Аркадий
06.08.2018
11:00:44
я уже скомпиленый бинарник в образ кладу, мб в этом дело? типо он скомпилился в другой среде

Daniel
06.08.2018
11:01:09
нет

Евгений
06.08.2018
11:01:13
другой системе?

Аркадий
06.08.2018
11:01:26
ну я на хост машине локальной скомпилил
у меня есть бинарь
я его кладу в образ и эта ошибка

Daniel
06.08.2018
11:01:43
libc он себе найдет на любом линуксе, если он есть (в alpine есть)

Евгений
06.08.2018
11:01:46
он слинкован статически

Denis
06.08.2018
11:01:55
возможно у тебя косячный энтрипоинт
это ошибка докера

Виктор
06.08.2018
11:02:58

Google

Aleksandr
06.08.2018
11:03:23

Аркадий
06.08.2018
11:03:38

Aleksandr
06.08.2018
11:03:49

Vadim
06.08.2018
11:04:34

Daniel
06.08.2018
11:06:03

Andrey
06.08.2018
11:06:29
есть же multistage docker

Aleksandr
06.08.2018
11:06:40
а?!
типичная ошибка же. musl/glibc

Daniel
06.08.2018
11:07:10
вот мне интересно - как я на маке на своем собираю под линукс бинарники?

Aleksandr
06.08.2018
11:07:25
речь про alpine

Denis
06.08.2018
11:07:31
да бред)
указываешь верную платформу и пофиг на чем собираешь
я на винде под лин собираю

Виктор
06.08.2018
11:07:51

Denis
06.08.2018
11:08:07
ваще никаких проблем

Aleksandr
06.08.2018
11:08:18

Denis
06.08.2018
11:10:20
ошибка выше с этим никак не связана

Aleksandr
06.08.2018
11:10:41

Аркадий
06.08.2018
11:10:53