Вал
И зп выше чем в рф.
Вал
Мож конечно там всяких акций нету и других таких плюшек но для начала помоему деньги и нужны
Emil
Делаю резюме, посоветуйте, стоит ли указывать, что я работаю в свободное время в СМИ (оппозиционном)фотокорреспондентом и программистом(ботов делаю для обратной связи, взаимодействия с базой фото и контактов)? Для галочки Или отпугнёт людей? Или просто нет смысла?
Alexander
Ну можно не писать где конкретно, если боишься
Alexander
Про фотокорреспондента тут двояко: один хочет чтобы ничего лишнего, другой хочет чтобы раз джун тот вот где-то же человек работать должен был, ну не бездельник же
Alexander
Я бы написал, что делал ботов на заказ с такой-то функциональностью
Emil
Неплохо, спасибо)
Alexandr🇷🇺
Ребят, всем привет. Есть вопрос по теории. Допустим из main вызываем функцию, а в функции вызываем анонимную горутину. И когда функция завершается, рутина крутится ещё или прерывается?
Alexander
крутится, если не успела завершиться, но приложение все равно завершается
Alexander
так что не крутится по факту
Alexander
sync.WaitGroup юзай
Тимофей
можете пожалуйста скинуть сообщение с приглашением на урок 22 ноября?
Herman
Anonymous
можете пожалуйста скинуть сообщение с приглашением на урок 22 ноября?
завтра нету проги. она во вторник ссылка на зум в профиле
Anonymous
Herman
завтра вроде воскресенье
Anonymous
у нас в воскресенье было занятие)
Anonymous
препод болела и решила, что надо часы отработать
Anonymous
и провела в воскр
Тимофей
а где ссылка то?
Тимофей
Anonymous
да, я пошутил...
Anonymous
я понятия не имею о чем ты....
Тимофей
Тимофей
Тимофей
Который упоминается здесь. Ну не урок, а курс
Тимофей
Точнее
Илья
Бесплатный?
Тимофей
Dmitrii
Всем привет, кто нибудь знает либу чтобы в фонтах (ttf, woff2) можно было глифы заменить?
Anonymous
такой вопрос есть клиентский стрим при конекте к серваку я обрабатываю ошибку есть ли смысл в ифе возвращать ошибку? и правильно ли это
Alexander
понятно очень мало
Anonymous
да,я сам еще не до конца понял
Anonymous
сейчас код скину
Anonymous
func (*pay) Pay(stream paypb.PayService_PayServer) error { r, err := stream.Recv() if err != nil { log.Fatalf("Unable receive payment: %v", err) return err // правильно ли это? и если да, то для чего это делать? } }
Alexander
да. не надо фаталить, а надо возвращать
Anonymous
то есть
Anonymous
лучше return err?
Alexander
ну если ты зафаталил, то ретерн не будет работать
Anonymous
кажется понял
Alexander
https://github.com/pkg/errors - а еще отсюда Wrap используй. добавляй контекст
Alexander
паники и фаталы на верхнем уровне кидай
Alexander
у тебя какой-то веб сервис?
Anonymous
верхний уровень это мейн функции?
Alexander
позже отпишусь
Anonymous
ок, спасибо
Alexander
Тебе нужно в случае ошибки что? а) завершить все приложение б) отдать 500ку в) завершить приложение корректно, обработав все запросы поступившие ранее и сделать всякое разное?
Alexander
пока ты делаешь а
Alexander
значит возвращаешь ошибку, в хэндлере выдаешь пятисотку и пишешь в тело ответа эту ошибку
Anonymous
паники и фаталы на верхнем уровне кидай
ок, а можешь поподробнее про это
Alexander
ну тут понятно вроде, в мейне это должно быть
Anonymous
из-за того, что мейн ф-ция ничего не возвращает надо через лог/фмт ошибку обрабатывать?
Alexander
если тебе прям приложение надо завершить и многопоточная штука, то горутинам передаешь какой-то канал для ошибок, а в главной горутине ждешь sigterm или что-то из этого канала, а там уже останавливаешь веб сервер или что у тебя и доделываешь всякую работу
John
ну если ты зафаталил, то ретерн не будет работать
при фатале даже defer не отрабатывает, мгновенное прекращение выполнения программы, жестче чем паника
Anonymous
все, понял, спасибо!
Alexander
все, понял, спасибо!
ну и не забывай добавлять к ошибкам контекст
Anonymous
вот про это кстати
Anonymous
я почитал и не понял к чему эта либа если честно
Anonymous
типо зачем мне добавлять контекст к ошибке?
Anonymous
для чего?
Alexander
ну типа ошибка обработки запроса: ошибка оплаты: не удалось установить связь с платежным шлюзом
Alexander
далее наслаивается
Anonymous
а, кастомная ошибка
Anonymous
ну я дурак
Anonymous
понял
Alexander
потом можно дернуть errors.Is(err, errPaymentConnect)
Anonymous
да, это круто
Alexander
если надо)
Anonymous
спасибки
John
ну типа ошибка обработки запроса: ошибка оплаты: не удалось установить связь с платежным шлюзом
обычно у меня перечень ошибок в сервисе, а на выходе я использую if errors.Is(err, model.ModelMissingError) {...} и уже на верхнем уровне обрабатываю/думаю "что делать и кто виноват"
Emil
А еррор.из проверяет, является ли искомая ошибка одной из оберток данной? Или только на конечную
John
если подумать, то нет
John
если у тебя ошибка А, потом ты её оборачиваешь, то получаешь ошибку Б, А!=Б