
LexsZero
28.04.2017
16:49:37
да и вообще, выставлять приложения голой жопой в энторнеты без фронтенда - моветон

m
28.04.2017
16:50:16
А golang.org разве не выставлен "голой жопой"?

Aleksey
28.04.2017
16:50:44
Поняня. В конфиге nginx создать 3 conf файла, каждый будет работать со своим go бинарником?

LexsZero
28.04.2017
16:51:22
каждый будет редиректить запросы на соответствующий порт/сокет/whatnot на котором слушают разные бинарники

Google

m
28.04.2017
16:51:28
конфиг у nginx-а один. а в конфиге нужно описать три блока server{ ... }

LexsZero
28.04.2017
16:51:50
в конфиге можно делать инклюды, по-хорошему
чтоб вся херня относящаяся к одному приложению лежала в одном месте
и количество копипасты сократить можно (хотя в простейшем случае это не нужно)

Aleksey
28.04.2017
16:53:55
Ни кто не встречал в нете пример такого конфига на несколько апп?

LexsZero
28.04.2017
16:54:32
https://www.nginx.com/resources/wiki/start/topics/examples/server_blocks/ с тебя $10 за гуглеж

Aleksey
28.04.2017
16:56:27

LexsZero
28.04.2017
16:56:44
http://stackoverflow.com/a/13241047

Aleksey
28.04.2017
16:57:20
Просто думалось, что го не нужен nginx

m
28.04.2017
16:57:33

Aleksey
28.04.2017
16:59:39

Google

m
28.04.2017
16:59:43
99% его директив тебе не нужны. так что в идеале найди простой конфиг на один домен и разберись что там написано в каждой строчке. потом по подобию и для своих доменов сделаешь. Если что, обращайся.
тебе нужно прочесть про server, listen и proxy_pass .

Aleksey
28.04.2017
17:08:06

LexsZero
28.04.2017
17:09:05
я имею в виду http frontend, а не то что юзеру в браузер прилетает

Aleksey
28.04.2017
17:10:08

m
28.04.2017
17:15:03
запрос от браузера сначала приходит в nginx, а nginx его пересылает одному из твоих демонов. Ответ от твоего демона также сначала идёт в nginx, а потом nginx пересылает его браузера.

Che
28.04.2017
18:50:41

Igor
28.04.2017
18:59:45

Igor
28.04.2017
19:34:28
Народ, а почему в https://pastebin.com/WEXhR9TD слова hello и world выводятся в консоль последовательно?
Разве GOрутины не должны работать паралельно?
Параллельно работает если только добавить time.Sleep(1 * time.Millisecond) после fmt.Println

Mikhail
28.04.2017
19:36:47

Igor
28.04.2017
19:37:47

m
28.04.2017
19:39:54
Игорь, порядок выполнения горутин не определён. У вас выполяется так, на другой платформе будет иначе.

LexsZero
28.04.2017
19:42:48

Igor
28.04.2017
19:43:15

LexsZero
28.04.2017
19:43:51
оно всегда так работает, просто не всегда это можно пронаблюдать вот таким вот образом

m
28.04.2017
19:44:09
Вставьте перед fmt.Println(s) runtime.Gosched() и будет вам счастье.
это передача управления в другое горутины.

LexsZero
28.04.2017
19:44:56
race-driven architecture

Mikhail
28.04.2017
19:46:10

Igor
28.04.2017
19:46:18

Google

m
28.04.2017
19:46:23
https://play.golang.org/p/4etW2Ke732

Aleksey
28.04.2017
19:47:06
Друзья, смотрю нынче в стдлиб запилили функцию вывода println(), которая работает без пакета fmt или так было с самого начала?

LexsZero
28.04.2017
19:47:58
было с самого начала

m
28.04.2017
19:48:14
Оно может происходить, когда горутина ушла в ожидание чего-то.
её в будущем убрать могут. так что лучше fmt.Println()

Aleksey
28.04.2017
19:49:26
Понятно

LexsZero
28.04.2017
19:49:58
тлдр: кооперативный

m
28.04.2017
19:50:18
ИМХО такое поведение горутин может казаться несправедливым, но зато экономится куча процессора на ненужном переключении горутин.

LexsZero
28.04.2017
19:50:54
но если горутины попадут в разные ос-треды, тогда они будут преемптиться ядром

Daniel
28.04.2017
19:51:20
это имеет практическое значение хоть какое-то?

Igor
28.04.2017
19:51:46
тлдр: кооперативный
Те если сделать много 1kk GOрутин, то длительные горутины в начале затормозят коротки но созданные посже?

LexsZero
28.04.2017
19:52:07

Aleksey
28.04.2017
19:52:43

LexsZero
28.04.2017
19:53:03
как раз на этот случай и есть костыль runtime.Gosched() который нужно дергать руками в таком случае

Daniel
28.04.2017
19:53:52
один-единственный раз я на это напоролся. один за три года. и runtime.Gosched() меня вполне спас тогда

Igor
28.04.2017
19:56:46

m
28.04.2017
19:57:10
да

Daniel
28.04.2017
19:57:15
если горутина - или что угодно еще - читает файл - она блокируется

LexsZero
28.04.2017
19:57:18

Google

Daniel
28.04.2017
19:57:53
но на вызове операции шедулер получит управление.

m
28.04.2017
19:58:00
Игорь, с большой вероятностью Gosched() вызывать Вам не понадобится.
Просто пишите код. ?

Daniel
28.04.2017
19:58:24
а еще шедулер получит управление на вызове любой не-inline функции. поэтому так сложно на это напороться

m
28.04.2017
20:03:17
Запускаю goxc для получения дистрибутивов. И оно падает то на тестах, то на компиляции и с какими-то мутными ошибками: fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8073a pc=0x80700de]
[goxc:xc] 2017/04/28 22:33:44 'go' returned error: Wait error: exit status 2: # bytes
../../../../go1.8.1/src/bytes/bytes.go:524: internal compiler error: not lowered: v16, Load SLICE PTR32 mem
что бы это значило? Может оперативка глючит?

LexsZero
28.04.2017
20:03:47
на другой машине пробовал?
если б оперативка глючила, то у тебя бы вся система глючила

m
28.04.2017
20:04:08
нет пока ещё. Долго всё настраивать...
не факт. у меня один сервер есть с глючащей оперативкой. глючит один регион памяти. там крутятся апачи. и они иногда падают, когда им глючная память достанется. а сам сервер работает без ребута год уже наверное.

Igor
28.04.2017
20:10:41

Admin
ERROR: S client not available

m
28.04.2017
20:24:00
memtest86+ ничего не нашёл плохого с памятью.

Maxim
28.04.2017
22:23:05
В for есть возможность начать ТУ ЖЕ итерацию заново?
break досрочно останавливает итерации, continue досрочно переходит к следующей итерации, return завершает итерации возвратом результатов. А повторения текущей итерации нет?

LexsZero
28.04.2017
22:27:03
goto? махинации с переменной цикла и continue?
внутренний цикл?

Maxim
28.04.2017
22:27:37
Например есть задача убирать с начала строки все символы дефиса:
for _, tag := range tags {
if strings.HasPrefix(tag, "-") {
tag = tag[1:]
}
}
Я хочу убедиться, что дефисов в начале точно нет, если их несколько
Т.е. убирать дефисы в том же объекте пока их не будет совсем, а уже потом переходить к следующему объекту.

LexsZero
28.04.2017
22:29:41

Maxim
28.04.2017
22:30:20

Google

Dmitriy
28.04.2017
22:31:11
Мне кажется ты хочешь странного

LexsZero
28.04.2017
22:31:12
ну придумай тогда другой пример, когда "начать итерацию с начала" не выражается через еще один вложенный цикл

Maxim
28.04.2017
22:31:12
Он уберёт этот символ и перейдёт к следующему тегу. Мне нужно на нём задержаться и гарантировано убрать все дефисы.

LexsZero
28.04.2017
22:31:29

Андрей
28.04.2017
22:31:37
https://golang.org/pkg/strings/#Replace

Maxim
28.04.2017
22:32:14
Как так?

LexsZero
28.04.2017
22:32:36
Как так?
ты на сишке никогда не писал, да?

Maxim
28.04.2017
22:32:37
А, я заметил

LexsZero
28.04.2017
22:33:18
пока первый символ строки это дефис, удаляем его. профит.

Maxim
28.04.2017
22:33:33

Dmitriy
28.04.2017
22:34:30
Открыли while

Андрей
28.04.2017
22:34:31
https://play.golang.org/p/Ljecoffoh1

Maxim
28.04.2017
22:34:49

LexsZero
28.04.2017
22:35:09

Maxim
28.04.2017
22:35:28

LexsZero
28.04.2017
22:36:36
это идеоматичнее все-таки
tag := strings.TrimLeft(tag, "-")

Maxim
28.04.2017
22:37:54

Aleksey
29.04.2017
01:03:57
Как решаете вопрос с нехваткой типа Decimal ?