@gogolang

Страница 1285 из 1630
stixlink
09.08.2018
07:35:03
Здравствуйте! слайс на 200к записей вида []struct{uint64, int} это норм, чтоб из базы выбирать столько за раз?

или лучше частями?

Daniel
09.08.2018
07:36:20
можно и разом. это же в районе двух мегабайт всего данных

Alexandr
09.08.2018
07:48:41
Коллеги, как правильно сделать нормальные логи в приложении? Если мы будем прокидывать эррор постоянно наверх, то мы при записи получим только само сообщение об ошибке и номер строки, где логгирование случилось, а не гле именно произошла ошибка.

Google
V
09.08.2018
07:49:18
залогировать ошибку перед возвратом?

Alexandr
09.08.2018
07:50:12
залогировать ошибку перед возвратом?
тогда зачем её возвращать?

V
09.08.2018
07:50:41
чтобы вызывающая функцию логика корректно отработала?

Maxim
09.08.2018
07:50:45
тогда зачем её возвращать?
Чтобы отработать логику на случай наличия ошибки

Alexandr
09.08.2018
07:51:33
чтобы вызывающая функцию логика корректно отработала?
можно тогда не писать возврат ошибки в этой функции, я имею ввиду.

Maxim
09.08.2018
07:52:01
Мы не экстрасенсы и однозначно утверждать что надо, а что не обязательно писать мы не можем

V
09.08.2018
07:54:27
A вызывает B, B генерирует ошибку errB, логирует и возвращает. A обрабатывает ошибку и, если надо, генерирует ошибку errA, логирует и возвращает. Как-то так?

Аркадий
09.08.2018
07:54:29
парни, а будет ли гонка если две горутины будут читать из одной мапы?

Никита
09.08.2018
07:55:11
Если еще и пишет кто-то в эту мапу

Аркадий
09.08.2018
07:55:55
у меня по дизайну пишет только одна горутина

Alexandr
09.08.2018
07:56:21
Про какую функцию сейчас идёт речь?
Есть исполняемая функция. в ней происходит ошибка. Функция имеет примерно такую сигнатуру: func myname1 (...) error {...} Если там срабатывает ошибка, то она получается что прокидывает её наверх в вызывающую функцию (а та, возможно, ещё выше) до того места, пока всё это не попадёт в конечную функцию (например в main) где логируется возврат ошибки самой верхней вызывающей функции. В этом случае, не понятно, откуда именно пришла ошибки, т.к. мы получаем текст ошибки и номер строки ошибки в main. Однако, если мы будем логировать ошибку в самой функции myname1 где она и происходит, то нафига нам вообще нужно эту ошибку прокидывать наверх? сделаем чтобы она не возвращала ошибку и всё.

Google
Никита
09.08.2018
07:56:23
Если есть запись, тут уже точно надо мьютекс юзать

V
09.08.2018
07:57:09
нет

Alexandr
09.08.2018
07:57:18
тогда непонял

V
09.08.2018
07:57:26
errA может быть агрегирующей для других вызовов

Nick
09.08.2018
07:58:00
логируй на уровень выше

Maxim
09.08.2018
07:58:37
Можно писать лог чуть ли не в каждом кейсе if err != nil, тут как удобнее

Alexander
09.08.2018
07:59:34
@alexsafronov а это библиотека или конечное приложение ?

Alexandr
09.08.2018
07:59:38
Всё зависит от формата логгирования. Можно писать лог в корне, а возвращать оформленную подобающим образом ошибку из недр
никакого формата пока нет, я пытаюсь пока что просто понять, как сделать правильно

логируй на уровень выше
а если несколько уровней?

Daniel
09.08.2018
08:00:24
на каждом

Nick
09.08.2018
08:00:46
все зависит от логики,если ошибка не фатальная и дальше не кидается, то логируй

а если она сразу делает return, то лучше логировать еще выше

Nick
09.08.2018
08:01:43
если ты после ошибки продолжаешь что-то делать в этой функции

Google
V
09.08.2018
08:01:46
если сервис А вызывает сервис В, который вызывает сервис С, где происходит ошибка, то сервис А не очень ожидает увидеть ошибку сервиса С

Alexander
09.08.2018
08:01:51
конечное
я бы логгировал сразу где случилось, а дальше - зависит от логики, если ошибку можно прпоустить и продолжить сценарий дальше, то выше можно игнорировать, если нет, то надо логгировать везде, где пробрасываем наверх

Daniel
09.08.2018
08:02:44
мой опыт говорит мне, что понять, откуда именно пришли негодные параметры, без логирования на каждом уровне невозможно

а негодные параметры - это примерно 70% всех ошибок

Nick
09.08.2018
08:03:42
негодяи)

James
09.08.2018
08:03:59
Как показывает практика логов много не бывает

Nick
09.08.2018
08:04:22
Как показывает практика логов много не бывает
ну если проект не большой то да

Nick
09.08.2018
08:04:33
а когда у тебя гигабайты логов в секунду?

V
09.08.2018
08:05:02
тогда получится, что сервис А завязан не только на реализацию В, но и на его зависимость в виде С, что не очень хорошо

V
09.08.2018
08:06:20
окей ?

Nick
09.08.2018
08:06:33
тогда получится, что сервис А завязан не только на реализацию В, но и на его зависимость в виде С, что не очень хорошо
эт решается просто конструированием своих ошибок в сервисе B, а не прокидыванием ошибки с сервиса С

V
09.08.2018
08:06:48
о чем я и говорил выше, спасибо

James
09.08.2018
08:06:55
а когда у тебя гигабайты логов в секунду?
Разумный подход тоже никто не отменял. лично я делаю обычно несколько логов в приложении, если нужно. И отдельно дебажный лог. который включается отдельной настройкой. лучше всего на лету, мониторингом конфига. Вот туда вся помойка и валится.

когда все устаканивается то он обычно не нужен

Alexandr
09.08.2018
08:07:42
о чем я и говорил выше, спасибо
я видимо на тот момент это не понял, потому что даже сейчас мне это кажется каким-то гемором.

Andrew
09.08.2018
08:07:57
#вакансия Привет, мы в компанию Mad Devs(https://maddevs.io) ищем много гоферов Требования - Опыт работы бекенд программистом 5+ лет - Уметь и любить писать тесты - Понимание юнит, интеграционных, е2е тестов - Знание как пользоваться pprof, tracer, как можно оптимизировать код на максимальный перформанс - Опыт разработки распределенных систем (3+ лет), распределенные системы должны быть в крови - Уметь CI/CD (Jenkins, TeamCity, GoCD, Concourse…) - Уметь Docker - Дружить с конкурентным/асинхронным/параллельным программированием - Знание SQL на очень хорошем уровне - Опыт с Postgresql 2+ лет - Опыт в виртуализации/контейнеризации - Опыт на С будет огромным плюсом ЗП: $20-35 в час Резюме отправлять на rock@maddevs.io

Google
V
09.08.2018
08:08:23
начните с тестов на функцию, прежде чем писать ее реализацию, тогда вы поймете какие ошибки хотите ждать от функции

V
09.08.2018
08:09:48
поэтому вам и кажутся «гемором» ошибки для конкретной функции

Alexandr
09.08.2018
08:10:23
поэтому вам и кажутся «гемором» ошибки для конкретной функции
мой вопрос про логику логгирования, а не про тестирование.

V
09.08.2018
08:11:49
логируется каждая ошибка, т.к. ошибки разные, то получается что на каждом уровне логируется своя ошибка, чтобы понять для чего разные ошибки на разных уровнях нужно начать писать тесты и разделять зависимости

Alexandr
09.08.2018
08:12:37
Не понял фразу "понять для чего разные ошибки на разных уровнях"

Twelfth
09.08.2018
08:38:13
Здравствуйте. Пытаюсь собрать provisioner для Kubernetes. Версия Go - 1.10. По каким-то причинам provisioner не собирается. Лог компиляции: https://pastebin.com/JPeFitLS

Admin
ERROR: S client not available

Twelfth
09.08.2018
08:39:54
Сам provisioner: https://github.com/kubernetes-incubator/external-storage/tree/master/local-volume/provisioner

Сборку запускаю через make

Сборка в makefile запускается командой CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' -o local-volume-provisioner ./cmd

Аркадий
09.08.2018
10:50:28
Ребята, могу сюда вбросить свой пет проект? Хотелось бы узнать проблемные места в коде и ошибки архитектуры(если такое имеется)

Илья
09.08.2018
10:57:33
мой вопрос про логику логгирования, а не про тестирование.
https://godoc.org/go.uber.org/multierr я бы смотрел сюда, или в pkg/errors, там и трейсы могут быть и агрегация

Аркадий
09.08.2018
11:51:27
можешь
https://github.com/arkadybag/go-hub - тут описание проекта в кратце https://github.com/arkadybag/go-phantomjs-node - это масштабируемая нода(из описания у хаба будет понятно)

https://github.com/arkadybag/go-hub - тут описание проекта в кратце https://github.com/arkadybag/go-phantomjs-node - это масштабируемая нода(из описания у хаба будет понятно)
большая просьба, если кто-то будет смотреть - давайте обратную связь п ожалуйста, это первый проект на GO, который я начал делать

Никита
09.08.2018
11:53:08
Ребят, кто может подсказать Есть адрес для апи example.com на порте 80 Если не указывать порт, то нет доступа, если указать, работает Почему так?

Аркадий
09.08.2018
11:53:58
80
покажи код

Google
Никита
09.08.2018
11:54:14
А код тут при чем?

Аркадий
09.08.2018
11:54:29
откуда нам знать, про что ты говоришь

Никита
09.08.2018
11:54:33
У сервера указываю Addr: ':80'

И все

Аркадий
09.08.2018
11:54:39
понятно

И все
2018/08/09 14:56:17 ListenAndServe: listen tcp: address 127.0.0.1: missing port in address

нет там порта поумолчанию, без него откуда функции знать, какой порт у тебя дефолтный?!

Никита
09.08.2018
11:57:59
Я пожалуй подожду ответ человека, разбирающегося в этом вопросе

Аркадий
09.08.2018
11:58:42
тогда сформулируй нормально вопрос

у тебя IP или доменное имя?

Никита
09.08.2018
12:01:36
Есть адрес -, допустим example.com за которым стоит сервак, который крутится на порте 80 Если указывать порт, example.com:80, есть доступ к серверу, если не указывать - нет доступа, не коннектится в принципе

Никита
09.08.2018
12:02:23
Прочитай то что я написал еще раз, если ты плохо понял

Виктор
09.08.2018
12:02:56
как грубо

Никита
09.08.2018
12:02:58
example.com:80 - вот, порт указан

Lesha
09.08.2018
12:03:06
С браузера, боже
и как можно было догодатсья об этом????

Никита
09.08.2018
12:03:17

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