Anonymous
Адекватный подход, позволяет кастомизировать логирование в модулях, подменять логгер для тестов и т.п.
в примере ссылка на конкретную структуру логгера, какой смысл в тестах менять 1 объект логгера на другой такой же?
Valentin
Я считаю тестировать логгирование это уже перебор
Anonymous
Я считаю тестировать логгирование это уже перебор
не обеспечишь 100% покрытие иначе, если у кого-то есть такая цель
Valentin
100% это уже близко к TDD-фашизму))
Ilya
Я считаю тестировать логгирование это уже перебор
Я не предлагал тестировать логирование. Можно банально настраивать его по разному для разных модулей, в том числе в рамках тестов.
Michael
&someInt
ага ага
Pawel
не очен понял в чем идея и вопрос? все ошибки рано или поздно должны быть видны на уровне, который чем-то управляет, у него наверное есть логгер, причем желательно логгер-интерфейс чтобы подпихнуть туда мок и протестить что в лог действительно что-то попадает.
у меня были некоторые сомнения на счёт того стоит ли переносить обработку ошибок вот таким вот образом с логгером на уровень пакета с типом DB, или анализировать ошибки CRUD операций в вызывающем коде, что мне не нравится
Ivahaev
@ruzzke_mir я так понимаю, что это у тебя сервис, который предоставляет услуги СУБД. В таком случае, зачем ему логировать ошибки? Что-то пошло не так — описал что именно и вернул наверх.
Ivahaev
И уж, тем более, паниковать не стоит.
Pawel
@ivahaev может ты и прав, я хз. Но только в этом случае нужно проверять ошибки от всех CRUD операций в вызывающем коде, что муторно. И я пока не вижу разумного сценария реакции на ошибку БД кроме паники.
Nikita
Подскажите плз. Решил притормозить обучение и сделать на готовых сдк простейший скрипт который заходит по апи твича и чекает есть ли такой стрим или нет. Так как я пока не понимаю как работать с json, http и все такое в go, я решил юзать сдк. Нашел готовый сдк, без доки, но вроде все понятно.
Nikita
Nikita
cannot use stream (type twitch.GetStreamByChannelInputType) as type *twitch.GetStreamByChannelInputType in argument to twitchSession.GetStreamByChannel
Nikita
редактор подсказывает, что я в функцию должен передать структуру GetStreamByChannelInputType
Nikita
но когда передаю, выпадает такая ошибка.
Nikita
https://github.com/knspriggs/go-twitch/blob/master/streams.go#L76-L83 в сорцах тоже написано, что функция ждет такую структуру
Nikita
так че он жалуется, то?
Sergey
может указатель надо передать на структуру?
Sergey
*stream
Nikita
а разве метод автоматом не должен это делать?
Sergey
я спросил, попробуй просто
hamper 𓅝
Как сложно в телеге не промахиваться чатами...
Sergey
Да, только не *stream, а &stream
точно я ещё их путаю как юзать
Nikita
Да, только не *stream, а &stream
да зашло, я опять забыл, что если функция ждет указатель, то обязательно надо его передавать
Мерль
Context isn't for cancellation. https://dave.cheney.net/2017/08/20/context-isnt-for-cancellation #golang
Nikita
Как лучше обработать такую строчку?
Nikita
https://static-cdn.jtvnw.net/previews-ttv/live_user_igromania-{width}x{height}.jpg
Nikita
хочу вместо width и height подставить значения
Oleksii
как подставлять значения?
Nikita
апишка твича присылает такую строчку, я хочу написать функцию, которая принимает 2 инта и вставляет их вместо {width} и {height}
Nikita
и возвращает строчку уже с значениями
Constantine️
strreplace не гуглится?))
Constantine️
или что?
Oleksii
strings.Replace(string, old, new, num_of_replacements)
Nikita
я знаю, что есть пакет strings в котором есть replace, но тот replace простой. А мне нужно за раз изменить 2 строчки и подставить нужное
Vladimir
Как лучше обработать такую строчку?
до тех пор пока у тебя не надо обрабатывать тысячи таких строк в сенкунду - strings.Replace
Oleksii
два раза вызвать можно :)
Nikita
че серьезно? И это норм?
Vladimir
че серьезно? И это норм?
а чем это не норм?
Vladimir
вопрос же в ожидаемой нагрузке
Vladimir
пока это не тысячи раз в секунду - ок
Nikita
кстать, я не заметил, в go есть regexp?
Vasily
да
Vladimir
когда это место вылезет в профайлере, сделаешь свою функцию
Vladimir
которая будет уметь как надо
Vasily
но он не такой быстрый как PCRE
Vladimir
но он не такой быстрый как PCRE
в Гошечке RE2 же. Оно довольно медленное на обычные выражения
Vasily
а я что сказал ?
Vladimir
а я что сказал ?
есть кейсы когда он значительно быстрее )
Vladimir
но все это можно почитать в сравнениях RE2 vs PCRE
Vasily
он асимптотически стабильнее чем PCRE
Vasily
его специально туда вкрутили потому что он более предсказуем по слодности
Vasily
сложности
Vladimir
ну да
Oleksii
кстать, я не заметил, в go есть regexp?
https://gobyexample.com/regular-expressions
Nikita
NewReplacer заюзал
Nikita
хм, описал такую структуру. А язык не видит метода, что я сделал не так? https://play.golang.org/p/kH9IY9dqjt
Nikita
не, это есть, кусок вставил
Oleksii
если описал в другом пакете
Nikita
вот полный файл https://play.golang.org/p/OPUkqCwmD-
Oleksii
то надо экспортировать метод
Nikita
аа
Nikita
блин...
Oleksii
с большой буквы пиши
Nikita
неявный экспорт такой
Nikita
спс
Nikita
вообще это удивительно, впервые в жизни я захожу в чужой код и понимаю, что править и что добавлять
Nikita
ну я какую-ту левую библиотеку нашел для работы с твич апи, потому, что пока не знаю как работает json, http и вообще такие вещи в go
Nikita
нашел багу, что старый хедер для апи юзается и нашел, что можно улучшить структуру.
Nikita
Все эти баги нашел за пару минут и за минут 10-20 добавил фичу и исправил баг
Nikita
уже сделал. Автор принял.