@gogolang

Страница 1280 из 1630
Slava
05.08.2018
21:15:38
они тут прямым текстом говорят количество ядер, которые будут занятые одновременно выполнением кода

а так как вы не можете выполнять один тред на двух разных cpu одновременно - то это равно количеству тредов одновременно выполняющих код вашего приложения

само количество тредов может быть и больше, какие-то заблокированы на сисколах, какие-то отрабатывают с++ код, какие-то сборщик мусора

Roman
05.08.2018
21:18:04
Мне просто непонятно почему эти две вещи преподносят как взаимозаменяющиеся понятия в таком случае
Да все же просто: есть динамический пул потоков, который используется для сисколлов. Есть пул потоков, в котором исполняются горутины. Вот размер этого пула задаёт gomaxprocs

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 сессии в случае её обрыва?

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
Посоветуйте статьи/литературу по устройству веба и т.п?
читай про http, https, http2, устройство вебсерверов а вообще вот тут хороший курс для бекендера: https://youtu.be/uYhQ2ot3XFg

Olzhas
06.08.2018
06:52:42
Мы уже давно не указываем их
может человек на 1.4 сидит

Kirill
06.08.2018
07:01:43
может человек на 1.4 сидит
может на кокаине

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
Одноклассники, вк, фейсбук, badoo, pornhub
То-то постоянно читаю из блога баду про то, как они пишут на го.

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(), или просто программа ждет этот дедлайн и так совпадает.

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

я вижу propogateCancel, где только в одну сторону, от родителей к детям идет cancel, но не наоборот

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:49
наоборот
вот. а надо в одном

Vadim
06.08.2018
11:04:34
я взял за базу ubuntu, нормальная практика или можно что-то полегче?
SCRATCH и туда бинарник пихаешь и certs. https://blog.codeship.com/building-minimal-docker-containers-for-go-applications/

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
да бред)

указываешь верную платформу и пофиг на чем собираешь

я на винде под лин собираю

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

Страница 1280 из 1630