@proGO

Страница 1634 из 1674
Combot
15.08.2018
09:34:16
Виктор Титов (0) увеличил репутацию Olzhas Akhmetkhan (5)

Vladimir
15.08.2018
09:35:30
В json заверни и Алга, сейчас кругом spa

Artem
15.08.2018
09:37:47
а на каком месте он отстой?
буквально на днях мигрировал со стандартного на Cloudy/jet потому что писать f(a, b, c) намного читабельнее, чем f a b c

Daniel
15.08.2018
09:39:48
это не аргумент, вообще-то...

Google
Artem
15.08.2018
09:42:27
всего лишь выработанная привычка миллионов людей за многие годы

Pawel
15.08.2018
09:43:44
а на каком месте он отстой?
В танцах с бубеном где идёт шаблонное наследование и передача аргументов. Язык шаблонов сам по себе дурацкий, в нём нет функции в частности.

отдайте фронтенду данные по хттп, пусть жсеры сами страдают
Очень безответсвенно. Стыдно должно быть такие глупости говорить

Sergey
15.08.2018
10:13:05
Все хвалят да и сам использую net/http. Захотелось больше стоит ли пробовать echo?

Dmitri
15.08.2018
11:10:59
заодно chi потрогайте

а beego не трогайте, не нужно оно вам

Olzhas
15.08.2018
11:11:27
какие отзывы о gin?

Dmitri
15.08.2018
11:11:46
не трогал

undiabler
15.08.2018
11:11:53
гибко, удобно

для большой нагрузки (больше 10к rps) лучше fasthttp

юзаю для несложных апишек

Google
Dmitri
15.08.2018
11:13:22
посмотрел в gin-квикстарт... Собственно, отличий от echo, пока что, не заметил

Zarif
15.08.2018
11:13:42
gin вчера релизнулся до 1.3

Olzhas
15.08.2018
11:13:55
релизнулся?

наконец-то

а то мне dep качал версию июля 2017 года

а доку я читал под нынешнюю

бомбило

Zarif
15.08.2018
11:14:54
а то мне dep качал версию июля 2017 года
ага, это предыдущая стабильная версия 1.2

Dmitri
15.08.2018
11:15:08
почитал про gin чуть дальше... до сих пор не вижу отличий от echo

итого, родился вопрос: у кого-то опыт сравнения имеется?

Zarif
15.08.2018
11:15:51
а я наоборот думаю с gin уйти на echo. мне в echo подкупила хорошая документация и судя по последним бенмаркам быстрее чуть чуть

Daniel
15.08.2018
11:18:39
коллеги, у меня тут странное, и никогда мной доселе невиданное у меня есть код: func (s *Forwarder) listenTCP(addr string) error { listener, err := net.Listen("tcp4", addr) if err != nil { return errors.Wrapf(err, "failed to listen tcp: %s", addr) } for { conn, err := listener.Accept() if err != nil { errorsMetric.WithLabelValues("Accept", "tcp").Add(1) return errors.Wrap(err, "failed to accept connection") } acceptedMetric.WithLabelValues("tcp").Add(1) go checkAndForward( conn.(*net.TCPConn), s.Target, s.Timeout, s.HeaderLen, s.ProxyHosts, ) } } и время от времени он выдает мне ошибку в строке conn, err := listener.Accept() accept tcp4 0.0.0.0:443: bad file descriptor failed to accept connection main.(*Forwarder).listenTCP forwarder.go:73 main.(*Forwarder).ListenAndServe forwarder.go:28 main.MustRunService main.go:42 runtime.goexit /usr/local/go/src/runtime/asm_amd64.s:2361 дело происходит на ubuntu 16.04 куда копать?

undiabler
15.08.2018
11:21:02
хмм, я бы посмотрел в сторону ulimit и подобному

Daniel
15.08.2018
11:25:19
может ты ассептишь соединение, которое уже закрыл
нет, там не временная ошибка. дохнет именно listen сокет

Olzhas
15.08.2018
11:25:30
а какая версия го?

Daniel
15.08.2018
11:26:12
на этот вопрос трудно ответить точно - его собрал мне CI по косвенным признакам - 1.10

Olzhas
15.08.2018
11:28:16
мб gc грешит

Dmitri
15.08.2018
11:32:28
а в этой части go checkAndForward( conn.(*net.TCPConn), s.Target, s.Timeout, s.HeaderLen, s.ProxyHosts, ) что происходит

возможно, в какой-то комбинации звезд на небе оно conn закрывает?

Google
Daniel
15.08.2018
11:34:25
у меня проблемы с listener, а не с conn

Olzhas
15.08.2018
11:34:33
Daniel
15.08.2018
11:34:41
коллеги, нет

Dmitri
15.08.2018
11:35:00
undiabler
15.08.2018
11:35:46
мне кажется закрывается fd сокета извне, другой вопрос - почему. Может быть чисто системный косяк с лимитами сокетов и т.д. надо конкретно ручками смотреть. Может быть просто соединение обрывается приходящие, такое в принципе тоже возможно.

Daniel
15.08.2018
11:37:14
приходящие соединения - это не listen

Olzhas
15.08.2018
11:38:00
https://golang.org/src/net/fd_unix.go

Sergey
15.08.2018
11:38:15
а beego не трогайте, не нужно оно вам
Ну я и не хотел, спасибо

Daniel
15.08.2018
11:38:58
https://golang.org/src/net/fd_unix.go
при чем тут юникс?

Nikolay
15.08.2018
11:52:30
поцоны, а подскажите годную статью про graceful отмену горутин? это через контекст делается обычно или уже есть что покрасивее?

m
15.08.2018
11:53:00
Daniel
15.08.2018
11:54:16
ошибка не временная, это я проверил

undiabler
15.08.2018
11:54:51
а есть возможность быстро проверить на другой машине?

Daniel
15.08.2018
11:55:12
не воспроизводится

на синтетичоском трафике, я имею в виду

m
15.08.2018
11:56:22
ошибка не временная, это я проверил
есть такое: https://golang.org/pkg/net/#OpError.Timeout

а в сорцах про bad file descriptor что пишут? Когда оно такое пишет?

если найти это место, можно понять причину ошибки.

Daniel
15.08.2018
12:01:11
по сорцам лазаю, да

Google
undiabler
15.08.2018
12:01:19
тогда конкретно тюнить os - версия kernel - cat /proc/<PID>/limits - всякие fs.file-max и nr-open проверить - net.ipv4.* там куча настроек так тоже с ходу не вспомню по мне так это входящие fd которые принимается listner-ом просто бьются или обрубаются еще до передачи приложению

Daniel
15.08.2018
12:02:15
входящие fd - это совсем другая история

m
15.08.2018
12:13:44
по сорцам лазаю, да
я тут тоже полазил. Ошибку возвращает операционка.

Nikolay
15.08.2018
12:14:33
есть /x/sync/errgroup, но вопрос наверное не об этом
да я пытаюсь сделать так, чтобы при удалении таски через API автоматом прибивались воркеры, которые ее выполняют

Crypt
15.08.2018
12:15:40
Кто подскажет https://golang.org/src/net/tcpsock.go?s=6376:6414#L246 где l.accept() описан?

m
15.08.2018
12:16:58
Кто подскажет https://golang.org/src/net/tcpsock.go?s=6376:6414#L246 где l.accept() описан?
заходишь в папку scr и там потом ищещь файлы с "func accept("

Crypt
15.08.2018
12:17:57
заходишь в папку scr и там потом ищещь файлы с "func accept("
ну во первых там это метод структуры, так что уже ничего не найдет, еще надо знать какой у этой структуры псевдоним

Nikolay
15.08.2018
12:18:50
подписывать их на канал и закрывать его при прибитии задания?
да, но тогда в каждом надо кучу пустых селектов с проверкой на этот канал. Как-то уж очень некрасиво

Daniel
15.08.2018
12:19:41
Crypt
15.08.2018
12:19:59
Ну включи фантазию или ищи просто " accept("
неплохо было бы въехать по какому принципу они так разносят методы

m
15.08.2018
12:20:07
Daniel
15.08.2018
12:23:14
отдельно только plan9

винда - она же posix

Вячеслав
15.08.2018
12:51:10
Помогите разобраться плз с локализацией. Планирую использовать go-i18n но не пойму одной вещи. Если у меня в шаблоне есть просто слова, а есть переменные, которые берутся из go и вставляются в шаблон.. Мне что, передавать словарь всех переведеных слов? и отдельно для тех значений, которые нужно вставить из бэка? В шаблоне же они выглядят одинаково (синтаксис) вообщем немного запутался - подскажите как быть

Google
Вячеслав
15.08.2018
13:00:07
ну да, как и везде переводы в шаблон как и переменные заходят в плане синтаксиса и шаблон становится немного нечитабельным
вот сейчас прочитал что для перевода слова в шаблоне нужно писать {{T "program_greeting"}} а чтобы вставить переменную просто {{ .program_greeting}}

LoadTranslationFile и еще вопрос по этой функции. Написано она принимает на вход json файл. А какую функцию использовать чтобы она принимала обычный текстовый файл с метками и переводом? MustLoadMessageFile ?

i18n.MustLoadTranslationFile("en-us.all.json") T, _ := i18n.Tfunc("en-US") t, _ := template.ParseFiles("template/index.html", "template/header.html", "template/footer.html") t.Funcs(map[string]interface{}{ "T": T,}) t.Execute(w, map[string]interface{}{"Title": "New cat"})

вот так правильно?

Вячеслав
15.08.2018
13:55:58
Title это строка которую нужно переводить?
нет, просто переменная которая передается сама по себе

ее не нужно переводить

я просто хочу в шаблоне перевести слова..

Crypt
15.08.2018
13:56:51
тогда по идее правильно

Вячеслав
15.08.2018
13:57:22
а в шаблоне писать <h1>{{T "home_button" .}}</h1> или без точки в конце?

Crypt
15.08.2018
13:57:47
я просто хочу в шаблоне перевести слова..
T, _ := i18n.Tfunc("en-US") вот тут _ - это error? попробуй проверить на ошибку

Вячеслав
15.08.2018
14:01:56
panic serving [::1]:56413: runtime error: invalid memory address or nil pointer dereference goroutine 6 [running]:

template: index.html:16: function "T" not defined

Crypt
15.08.2018
14:04:45
а в шаблоне писать <h1>{{T "home_button" .}}</h1> или без точки в конце?
по идее, если переводы с аргументами типа You have {{ .Count }} apple(s), то вместо точки надо передавать либо структуру с полем Count либо мапу с ключом "Count", типа: T "apples" map[string]interface{}{"Count": 2}

ошибка пустая...
Funcs adds the elements of the argument map to the template's function map. It must be called before the template is parsed.

перед парсингом нужно вызывать Funcs

Вячеслав
15.08.2018
14:06:59
t.Funcs(map[string]interface{}{ "T": T, }) t, err := template.ParseFiles("template/index.html", "template/header.html", "template/footer.html") но получается t not defined.. замкнутый круг)

Вячеслав
15.08.2018
14:18:49
no new variables on left side of := вот такая тепреь засада( переменная же в первый раз объявляется и испльузется http://joxi.ru/bmo97YGsxXO0jA

Страница 1634 из 1674